Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Joney  
#1 Оставлено : 3 мая 2011 г. 1:39:19(UTC)
Joney

Статус: Новичок

Группы: Участники
Зарегистрирован: 03.05.2011(UTC)
Сообщений: 6
Откуда: 12

Добрый День!

Рассматриваю примеры из SDK на зашифрование / расшифрование файла.
В примерах указан размер блока. По умолчанию он равен 4096 байт.
Если размер файла меньше или равен 4096 байтам, то файл шифруется и расшифровывается корректно.
Если больше 4096 байт, то при расшифровании файла получаем несоответствие с исходным.
Несоответствия содержатся в байтах с номерами:
4097 - 4104
8193 - 8199
и так далее (номер начального байта принял за 1).
Другими словами первый блок расшифровывается полностью правильно, в каждом последующем блоке
первые 8 байт отличаются от исходных.

Пробовал менять размер блока, результат тот же. Выставляю, к примеру 10000.
Первые 10000 байт расшифровываются правильно.
Несоответствия проявляются в байтах с номерами
10001 - 10008
20001 - 20008
и так далее (номер начального байта принял за 1).

Размер блока меняю, конечно, сразу в обоих примерах (и на расшифрование и на шифрование).

Есть смутные сомнения что разгадка кроется в векторе инициализации.
В примере на расшифрование он 1 раз устанавливается с помощью функции CryptSetKeyParam().
1. Может быть его необходимо устанавливать перед каждым блоком?
2. Может у каждого блока свой вектор инициализации?

Заранее спасибо за помощь)
Offline rozhkov  
#2 Оставлено : 3 мая 2011 г. 14:11:18(UTC)
rozhkov

Статус: Активный участник

Группы: Участники
Зарегистрирован: 25.01.2011(UTC)
Сообщений: 589
Откуда: Крипто-Про

Сохранять вектор инициализации нужно ДО начала шифрования, а равно устанавливать его значение - до расшифрования.
Offline Joney  
#3 Оставлено : 3 мая 2011 г. 16:13:57(UTC)
Joney

Статус: Новичок

Группы: Участники
Зарегистрирован: 03.05.2011(UTC)
Сообщений: 6
Откуда: 12

rozhkov написал:
Сохранять вектор инициализации нужно ДО начала шифрования, а равно устанавливать его значение - до расшифрования.

Собственно так и делаю.
Ведь если первые 8 байт в файле расшифровываются нормально - значит вектор инициализации сохранен и установлен верно?
Проблема собственно в том, что неверно расшифровываться начинают первые восемь байт второго блока. Затем третьего и т.д.

Спасибо за ответ.
Offline Максим Коллегин  
#4 Оставлено : 3 мая 2011 г. 16:34:42(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,393
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
Похоже на ошибку в примере. У функций Encrypt и Decrypt есть параметр bFinal - в примерах он TRUE, а должен быть FALSE во всех блоках, кроме последнего, или перед каждым блоком необходимо сохранять IV.
Знания в базе знаний, поддержка в техподдержке
Offline Joney  
#5 Оставлено : 3 мая 2011 г. 20:40:56(UTC)
Joney

Статус: Новичок

Группы: Участники
Зарегистрирован: 03.05.2011(UTC)
Сообщений: 6
Откуда: 12

maxdm написал:
Похоже на ошибку в примере. У функций Encrypt и Decrypt есть параметр bFinal - в примерах он TRUE, а должен быть FALSE во всех блоках, кроме последнего, или перед каждым блоком необходимо сохранять IV.


Спасибо за помощь!
Вроде стало работать)))
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.