AES - это 128-битный блочный шифр с ключами 128, 196 и 256-битного размера. AES примитивен, и для его использования требуется режим работы , чтобы стать схемой шифрования. Каждый режим работы допускает любые размеры клавиш, и режим работы не связан с размером ключа.
Для использования любого режима работы необходимо реализовать AES, а затем режим работы. Может потребоваться только шифрование или дешифрование AES в зависимости от режима работы.
Некоторые режимы работы
- ECB забывает, что это небезопасно, пингвин в Википедии. * 1010 Режим *
- CB C уязвим к атакам дополнением oracle, если используется на сервере. Режим Nonce в режиме CB C должен быть непредсказуемым .
- Режим CTR преобразует блочный шифр в потоковый шифр и не требует расшифровки AES. Достаточно только реализации шифрования. Одноразовый номер в режиме CTR должен использоваться только один раз для каждого ключа, в противном случае конфиденциальность не удастся из-за атаки перетаскивания шпаргалки.
Все вышеперечисленное является режимом archai c и они могут обеспечить конфиденциальность только при правильном использовании.
В современной криптографии мы предпочитаем режим аутентифицированного шифрования (со связанными данными), такой как AES-GCM. Эти режимы обеспечивают не только конфиденциальность, но также целостность и аутентификацию.
В режиме GCM нужно быть осторожным с генерацией IV / Nonce, поскольку GCM внутренне использует режим CTR, который наследует ту же проблему с режимом CTR, поэтому никогда не используйте один и тот же IV под одним и тем же ключом. Эту проблему можно решить с помощью счетчика / LFSR или в комбинированном режиме со случайным .
Кроме того, повторное использование IV в GCM может привести к катастрофическому c результату подделки.
Для проблемы повторного использования IV есть другой режим, который становится стандартом в ближайшем будущем. режим SIV; AES-GCM-SIV .
Java Шифр Oracle, а IBM имеет , ограниченное 128-битными размерами ключей . Вот почему вы видите 128 там. Изменено с 8u151 в 2017 году. OpenJDK или BouncyCastle не ограничены.