PyCrypto безопасно и надежно использовать? - PullRequest
13 голосов
/ 20 октября 2011

Я планирую использовать PyCrypto для проекта и хочу знать, насколько PyCrypto безопасен и достаточно надежен в использовании.Как я могу убедиться, что PyCrypto правильно шифрует данные в соответствии с различными алгоритмами шифрования, такими как RSA и AES?

Ответы [ 3 ]

19 голосов
/ 04 декабря 2011

Это зависит.

Некоторые части PyCrypto действительно хороши.Например, API для Crypto.Random (представленный в PyCrypto 2.1) был разработан, чтобы быть довольно надежным, а основной алгоритм, который он использует (Fortuna), был также разработан, чтобы быть довольно надежным.

Другие части - просто реализациииз низкоуровневых крипто примитивов, так что это работает, но вы должны знать, что вы делаете, чтобы использовать их правильно.Например, Crypto.PublicKey.RSA не реализует полный стандарт RSA PKCS # 1 (о чем думает большинство людей, говоря о «RSA»).Он реализует только базовый примитив RSA (m ^ e mod n и c ^ d mod n), и вам все равно нужно предоставить собственную реализацию PKCS # 1.

Лучший способ убедиться, что PyCrypto шифрует вашПравильно использовать данные (без чтения исходного кода, что я рекомендую всем) - использовать стандартный протокол и / или формат сообщений и проверить, что ваш код взаимодействует с другими реализациями.Если вы создаете свой собственный формат сообщения (что вам, вероятно, не следует делать в любом случае), то вам нужно быть очень осторожным, чтобы убедиться, что PyCrypto действительно делает все, что вы думаете.

Отказ от ответственности:Я являюсь текущим сопровождающим PyCrypto, поэтому мое мнение не следует рассматривать как независимый отзыв.

Обновление: PyCrypto v2.5 и более поздних версий теперь включает надлежащее шифрование RSA PKCS # 1 и подписьреализации.Подробности смотрите в документации API для Crypto.Cipher.PKCS1_OAEP и Crypto.Signature.PKCS1_PSS.

4 голосов
/ 21 октября 2011

Обратите внимание, что я тоже не специалист по криптографии. Тем не менее, я быстро взглянул на код PyCrypto на github и их список рассылки. Одна из вещей, которая вселяет в меня уверенность, состоит в том, что есть хороший, экспертный вклад в базу кода. Разработчики признают ненадежность и работают над их устранением.

Если у вас есть конкретный вариант использования, который необходимо реализовать безопасно, посмотрите на их код и спросите в их списке. Поскольку они, кажется, используют библиотеки C / C ++ для выполнения работы во многих случаях, вы можете проверить репутацию базовых библиотек напрямую.

2 голосов
/ 05 января 2017

Нет.PyCrypto больше не находится в активной разработке, и вместо него следует использовать библиотеку криптографии.

Источник: https://github.com/dlitz/pycrypto/issues/173

...