Intereting Posts

Как правильно шифровать данные с надлежащей аутентификацией с использованием AES-256-CBC в php?

Я использовал функцию openssl для шифрования данных с AES-256-CBC в php. Я смог зашифровать его, используя уникальный IV (путем генерации с openssl_random_pseudo_bytes) для каждого нового шифрования.

Но я борюсь с идеей аутентифицированного шифрования с помощью aes cbc. Как я в основном аутентифицируюсь, когда я собираюсь расшифровать данные?

Нужно ли использовать что-то вроде PBKDF2, blowfish или hash_hmac ()?

Нужно ли мне как-то хэшировать ключ?

Любая помощь чрезвычайно ценится.

Но я борюсь с идеей аутентифицированного шифрования с помощью aes cbc. Как я в основном аутентифицируюсь, когда я собираюсь расшифровать данные?

После того, как вы зашифруете данные случайным IV, поместите оба зашифрованного текста и IV в hash_hmac() со вторым ключом.

Если вы спрашиваете, потому что вам нужно развернуть его в производство, подождите, пока не будет выпущена версия 2 из defuse / php-encryption, и вместо этого используйте это. (Это AES-256-CTR не AES-256-CBC, но режим CTR имеет меньшую поверхность атаки, чем режим CBC, т. Е. Не атакует атаки оракула, если вы побеждаете HMAC.)

Не используйте RNCryptor.

RNCryptor / не был написан в соответствии со стандартами кодирования криптографии , ни в PHP , ни в Python .

RNCryptor буквально нарушает правило 1 стандартов кодирования криптографии последовательно. Могут быть и другие проблемы, которые еще не были обнаружены. Если вы хотите переносимость на разных языках, используйте libsodium .

Простое решение, используйте RNCryptor, который доступен для php и многих других языков. См. Этот ReadMe для деталей реализации.

Даже если вы не используете RNCryptor, методы верны и безопасны.

Некоторые детали с сайта:

  • Шифрование AES-256
  • Режим CBC
  • Расширение пароля с помощью PBKDF2
  • Заправка солода
  • Случайный IV
  • Шифрование-хэш HMAC
  • Versioning