Как функции key_derivation и key_verification реализованы в механизме шифрования 7-zip-архива?

Мне интересно, как работает восстановление пароля для файлов, защищенных паролем. And I want to know the exact flow of the 7-zip encryption mechanism.

7-zip использует алгоритм шифрования AES-256 в режиме CBC для шифрования файлов или папок. Ключ генерируется из предоставленной пользователем парольной фразы на основе хеш-функции SHA-256. SHA-256 выполняется 219 (524 288) раз, чтобы увеличить стоимость исчерпывающего поиска. Кроме того, чтобы снизить риск атак по словарю, соль добавляется к исходной парольной фразе перед генерацией хэша.

Мой первый вопрос how does key_derivation function work to generate a 256-bit key? Какое значение имеет IV для режима AES CBC и как оно генерируется?

Мой второй и most important question как проверяется ключ для расшифровки 7-ZIP архива? Я имею в виду, как работает его функция key_verification?

1 ответ

Решение

Функция получения ключа находится в источнике файла 7zAes.cpp, это называется:

void CKeyInfo::CalculateDigest()

и он создает ключ, используя собственный (довольно скучный) механизм.

Я не смог найти key_verification Способ еще, если он существует. Я дам вам знать, если найду это.

Другие вопросы по тегам