Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
Автор: Андрей *  Автор: Юрий  Автор: Андрей *  Автор: Юрий  Автор: kov  Можно ли это сделать без дописывания в конец файлов дополнительных данных, таких, например, как размер подписи. Нельзя. Возможно создание различных, совершенно "валидных" "сигнатур подписи". То есть подпись кодируется с помощью ASN.1, а в ASN.1 длина блока может быть как обозначенной явно, так и обозначенной неявно. Также проблема в том, что ASN.1 "заточено" под декодирование с начала. Декодировать с конца абсолютно нет возможности. Юрий, т.е. предложенный мною выше вариант (извлечь блок 2-10 кб с конца и найти начало cms, т.к. автору нельзя хранить размер подписи и ее саму отдельно, а присоединенная подпись - "не вариант") - не рабочий? Нет, ибо в подписи может быть, например, множество очень длинных сертификатов. В этом случае размер в 10Кб может быть очень быстро преодолён. Полагаться, что подпись будет иметь строго какой-то (пусть и примерный) размер нельзя. Они же сами себе режиссеры, нет? Не вижу препятствий, раз не могут по нормальному использовать CryptoAPI, узаконить жесткие требования (только 1 сертификат, без цепочки, + примерный диапазон размера). Искать "начало CMS" только на первый взгляд кажется возможным решением. Однако никогда нельзя полагаться, что требуемая последовательность байт будет отсутствовать в самом исходном файле, причём она может встречаться именно в его конце. С таким же успехом можно поискать "начало CMS" в любом произвольном массиве данных - думаю, что такое "начало" будет найдено во многих случаях. |
С уважением, Юрий Строжевский |
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 26.08.2010(UTC) Сообщений: 259 Откуда: Moscow
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 11 раз в 10 постах
|
Да, какие интересные решения Искать нельзя, не искать нельзя, что найдем непонятно... Конечно можно - нашел 0х30 проверил а не подпись ли это... и ДАЛЕЕ ПОНИ БЕГАЕТ ПО КРУГУ... Написал же товарисч: Автор: kov  Я пытаюсь понять для себя надо ли дописывать в конец файла еще какую-нибудь информацию, например размер подписи или можно каким-нибудь образом обойтись без этого, чтобы получить detached подпись отдельно от данных, когда она записана в конец данных Да тут надо дописывать длину подписи. Я бы писал длину данных и длину подписи. В каком формате неважно. главное перед проверкой хвостик от подписи отрезать И убедиться что этот хвостик остальное "все" не порушит.
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
Нашёл тут одно изящное решение: просто полностью перевернуть подпись перед присоединением к данным. То есть первый байт будет последним, и так далее. В таком случае мы можем реально прочитав последние несколько килобайт данных узнать размер (и значение) собственно присоединённой к данным подписи - переворачиваем полученный блок данных и пытаемся его декодировать с помощью абсолютно обычных функций Crypto API (например). |
С уважением, Юрий Строжевский |
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close