Как работать с солью в парольном шифровании - PullRequest
0 голосов
/ 06 октября 2011

Я учусь делать правильные криптографические реализации, и я подумал, что в качестве упражнения я создам зашифрованный текстовый редактор.

В моей первой попытке в качестве ключа использовался хэш SHA-512, предоставленный пользователем, и он работал нормально. Хотя я хранил IV в заголовке файла, незащищенный, и это беспокоило меня.

Затем я прочитал в stackoverflow, что я должен использовать SecretKeyFactory (я использую Java) для создания PBE, и теперь мне дополнительно нужно предоставить соль. Так что теперь я храню соль в заголовке, но это, похоже, разрушит всю цель иметь соль. Так как это должно работать? Когда Алиса выберет пароль для своего файла при сохранении, я должен сказать: «Вот, запомни это случайное число вместе с твоим паролем»? Я бы хотел, чтобы полученный файл можно было отправить Бобу по электронной почте, чтобы соль не могла храниться локально.

Пока мое приложение стоит, капельница и соль открыты. Я бы хотел, чтобы мой пользователь знал пароль только при отправке своего файла Бобу, оставаясь при этом криптографически защищенным, но я не могу найти примеров того, как это делается.

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 26 октября 2011

Есть много способов создать ключ и iv из ключевой фразы, но один из наиболее распространенных включает HMAC с SHA-1 в алгоритме, который учитывает некоторые соли и другие вещи, создать достаточно битовый ключ и iv.

Техническим стандартом является алгоритм PKCS # 5 v2.0 PBKDF2, в котором OpenSSL реализует интерфейс C для метода, который может это сделать, но, насколько мне известно, метода командной строки нет.

0 голосов
/ 06 октября 2011

Безопасно хранить IV вместе с данными, то есть, как используются IV. Ваш метод в порядке, выберите блочный шифр, используйте цепочку блоков шифра и IV, и вы в отъезде.

...