Какую библиотеку шифрования и дешифрования паролей лучше всего использовать с Perl?

Я пишу perl-скрипт, который манипулирует защищенными паролем zip-файлами. Следовательно, мне нужно хранить и извлекать пароли, чтобы сделать это. У меня есть три варианта хранения пароля:

  1. Хранить в виде простого текста. Прежде чем вы прыгнете, я практически исключил этот вариант.
  2. Используйте простой генератор паролей для предотвращения случайного/случайного доступа (даже со стороны администраторов баз данных)
  3. Используйте подходящую библиотеку шифрования/дешифрования, например Blowfish или AES.

Все, что я выберу, должно работать на Perl под Windows и быть простым в использовании.

Какие-либо предложения?


person Mike Thompson    schedule 19.01.2009    source источник


Ответы (4)


Есть несколько пакетов шифрования Perl, которые работают в Windows, вы можете загрузить PPM с помощью диспетчера пакетов ActivePerl.

Вы также можете использовать версию этих модулей на чистом Perl (ищите имена, оканчивающиеся на _PP).

Я нашел эти модули на CPAN:

person Mathieu Longtin    schedule 20.01.2009

Основная проблема с подходом 3 заключается в том, где вы храните ключ к файлу, который содержит пароли? Вы можете использовать Base64 для подхода 2, но его очень легко «расшифровать».

person Keltia    schedule 19.01.2009
comment
Почему это получило какие-то отрицательные голоса? Это проблема, и вам нужно где-то хранить ключи. Но даже если эта проблема решена, как не дать злоумышленникам вставить в код предупреждение $password? - person innaM; 20.01.2009
comment
Точно. Если кто-то, кому нельзя доверять пароли, имеет доступ к машине, на которой работает ваш скрипт, любое шифрование будет тривиально побеждено. - person jrockway; 20.01.2009
comment
Спасибо за попытку помочь мне указать на корень проблемы :) - person Keltia; 20.01.2009

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

Если вы используете Windows, вы можете использовать DPAPI для шифрования ключа AES и сохранения его в реестре. В Perl есть модули для взаимодействия с библиотеками Win32.

Лучшее шифрование субъективно, однако по состоянию на январь 2009 года AES 128 достаточно надежен для шифрования ваших данных.

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

person Alan    schedule 19.01.2009

Очевидно, вы правы. №1 выбыл.

И № 2 также отсутствует, по сути, по той же причине. Это небезопасно.

Что касается № 3, могу ли я предположить, что это тоже отсутствует. Расшифровка пароля переводит его в более уязвимое состояние для сравнения. НО, если вы собираетесь это сделать, могу ли я предложить использовать Crypt::CBC WITH Crypt::Blowfish для Сцепление блоков шифрования.

[рекомендуется] № 4: вместо хранения паролей для извлечения, расшифровки и сравнения, как в № 3. Используйте Authen::Passphrase достаточно полный и гибкий модуль Perl, позволяющий сравнить введенный пароль без расшифровки/расшифровки оригинала. См. также Как можно Я шифрую и расшифровываю пароли в программе Perl CGI?

person RedSands    schedule 30.01.2014
comment
Crypt::Blowfish находится по адресу search.cpan.org/~lds. /Crypt-CBC-2.33/CBC.pm - person RedSands; 30.01.2014
comment
Эр. Crypt::CBC — это то, что должен был сказать комментарий выше. - person RedSands; 13.02.2014