Я использовал функцию 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 / не был написан в соответствии со стандартами кодирования криптографии , ни в PHP , ни в Python .
RNCryptor буквально нарушает правило 1 стандартов кодирования криптографии последовательно. Могут быть и другие проблемы, которые еще не были обнаружены. Если вы хотите переносимость на разных языках, используйте libsodium .
Простое решение, используйте RNCryptor, который доступен для php и многих других языков. См. Этот ReadMe для деталей реализации.
Даже если вы не используете RNCryptor, методы верны и безопасны.
Некоторые детали с сайта: