2015-10-14 2 views
9

Я хочу знать, есть ли разница между этими двумя методами шифрования? Я никогда не использовал их раньше. Мой клиент попросил меня использовать шифрование AES-128, но когда я это сделаю, он покажет мне «aes-128-cbc», «aes-128-ctr», «aes-256-cbc» или «aes-256-ctr» «поэтому я хочу знать, какой из них я должен использовать, это будет похоже на AES-128?Есть ли разница между шифрованием aes-128-cbc и aes-128?

ссылка ссылка: this is where I have to send encryption method

+0

«aes-128» не задает режим, но шифры «aes-128- *» делают. Непонятно, в каком режиме «aes-128» по умолчанию, поэтому сначала вы должны это узнать. –

ответ

21

3 вещи:

  • AES: Advanced Encryption Standard. Это имя алгоритма шифрования (симметричное шифрование). Другие симметричные алгоритмы шифрования: DES, 3-DES и т. Д.
  • 128: Это, вероятно, относится к размеру ключа. Шифрование AES использует 3 ключа (128 бит, 192 бит и 256 бит). Размер блока в AES также составляет 128 бит.
  • CBC: Это режим шифрования, который вы хотите. Существует множество способов шифрования, которые зависят от того, насколько быстро вы хотите, чтобы ваш алгоритм работал, параллелизм и уровень безопасности. Несколько режимы CBC (Cipher Block Chaining), ECB (Electronic Code Book), CFB (Cipher Feed Back), CTR (счетчик) и т.д.

Теперь ваш клиент попросил вас зашифровать с помощью AES-128. Таким образом, вы должны использовать AES-шифрование с 128-битным размером ключа. Любой режим, который вы можете использовать, будет по вашему выбору. Я бы предпочел CBC.

+1

Настоятельно рекомендуем переключиться с CBC на CTR + HMAC –

+0

@ScottArciszewski, HMAC - это схема аутентификации сообщений с использованием сравнения хешей. Это всегда можно выполнить вместе с любым выполняемым шифрованием. Я думаю, что по-прежнему предпочитаю CBC + HMAC (Sha-1/2) по CTR (+ HMAC), и это тоже с некоторой солью. – vish4071

+0

Честно говоря, маржи безопасности для обоих взаимозаменяемы. Преимущество CTR заключается в том, что вы избегаете иметь дело с дополнением, поскольку он преобразует AES в потоковый шифр и xors ключевой поток с вашим открытым текстом. В библиотеке шифрования Defuse 2.0 установлено, что эффективно используется 256-битное nonce (128-битное nonce и 128-бит соль для HKDF, поэтому, даже если столкновение с nonce не будет, keypair для этого сообщения не будет) - при условии, что мой PR сливается, конечно. Это означает, что столкновение с днем ​​рождения произойдет с вероятностью 50% после 2^128 сообщений. –

3

Рассматривая ссылку, которую вы включили, в ней говорится, что она примет несколько различных режимов, включая CBC. Если у вас нет конкретной причины не использовать его, используйте AES-128-CBC. Режим CBC - хороший режим общего назначения. Вам также нужно будет понять использование отступов (используйте PKCS # 5 или PKCS # 7, независимо от того, что разрешает ваша система) и Vector Initialization, IV, чтобы режим CBC работал правильно.

Не используйте режим ECB, так как он небезопасен и содержит информацию о утечках.

+0

«Не используйте режим ECB, так как он небезопасен и содержит информацию о утечках». Цитируется для акцента. https://filippo.io/the-ecb-penguin/ –

+0

... и аутентифицировать сообщение. –

13

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

ЕЦБ:

Plain text: aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa 
      ---------------- ---------------- ---------------- 
Encrypted: bdefjakjapqeiowp bdefjakjapqeiowp bdefjakjapqeiowp 

При использовании CBC, первый блок получает XOR'd с IV (вектор инициализации) и шифруется с помощью ключа, и второй блок получает XOR'd с первым блоком и затем зашифрован ключом, третий - вторым. Получающийся в результате шифр менее уязвим для частотного анализа. CBC Encryption mode

This image is taken from Wikimedia Commons, the free media repository

Недостаток заключается в том, что вы не можете распараллелить шифрования/дешифрования, так как вам нужно результат предыдущего блока, так что это может быть медленнее. Но на практике это не имеет никакого значения.

+1

есть ошибка в названии примера? должен быть ЕЦБ, я полагаю – klappvisor

0

Здесь aes-128-cbc и aes-128. aes означает расширенную службу шифрования, 128 - это скорость передачи данных, а CBC - это способ шифрования.

Однако этот текст предназначен для использования только в форматах OPEN SSL.До открытия SSL PHP использовал mcrypt_encrypt, который не был должным образом разработан (более старые версии PHP). aes-128 также может быть присвоен как rijndael при использовании mcrypt.

Смежные вопросы