Введение в шифр AES-256

Введение в шифр AES-256

19 мая 2022 г.

Введение в шифр AES-256


AES, или «Advanced Encryption Standard», представляет собой спецификацию шифрования, в которой в качестве алгоритма шифрования с симметричным ключом используется шифр Rijndael. AES шифрует сообщение с помощью закрытого ключа, и никто, кроме владельца ключа, не может расшифровать сообщение. Отличным примером хорошего варианта использования AES-256 является шифрование всех данных на жестком диске компьютера, когда он не используется.


Симметричное шифрование против асимметричного шифрования


Симметричное шифрование использует один и тот же ключ для шифрования и расшифровки, а асимметричное шифрование использует разные ключи.


Асимметричное шифрование предпочтительнее, когда вы хотите, чтобы кто-то мог отправлять вам зашифрованные данные, но вы не хотите делиться своим закрытым ключом.


Симметричное шифрование предпочтительнее, если вы шифруете только для себя.



Секретный ключ, используемый в AES-256, должен иметь длину 256 бит. Чтобы использовать пароль или кодовую фразу в качестве ключа, алгоритм хеширования необходимо использовать для увеличения длины.


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


Обзор процесса шифрования


Давайте рассмотрим этапы процесса шифрования AES, также известного как Rijndael. -исправленный.pdf) шифр.


  1. Выберите пароль, затем получите короткий ключ из этого пароля (используя такую ​​функцию, как Scrypt или SHA-256). Затем этот короткий ключ будет расширен с помощью [расписания ключей] (https://en.wikipedia.org/wiki/Rijndael_key_schedule), чтобы получить отдельные «круглые ключи» для каждого раунда AES-256.

пароль: password12345678 → короткий ключ: aafeeba6959ebeeb96519d5dcf0bcc069f81e4bb56c246d04872db92666e6d4b → ключ первого раунда: a567fb105ffd90cb


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


  1. Выберите секретное сообщение:

Вот секрет


  1. Закодируйте ключ и сообщение первого раунда в шестнадцатеричных байтах и ​​отформатируйте их в виде таблиц 4x4 (сверху вниз, слева направо):

Ключ первого раунда:


61 66 35 39 35 62 66 30 36 31 66 63 37 30 64 62


Сообщение:


48 20 61 63 65 69 20 72 72 73 73 65 65 20 65 74


  1. Добавьте к сообщению круглый ключ (XOR). Соответствующие ячейки в таблицах сообщений и ключей складываются вместе. Выходная матрица будет использоваться на следующем шаге.

61 ⊕ 48 = 29


35 ⊕ 65 = 50


…и т.д.


29 46 54 5а 50 0б 46 42 44 42 15 06 52 10 01 16


  1. В полученной таблице используйте поле подстановки, чтобы заменить каждый двухсимвольный байт соответствующим ему байтом:


a5 5a 20 быть 53 2b 5a 2c 1b 2c 59 6f 00 7c 7c 47


  1. Сдвиг рядов. Первый ряд не сдвигается, второй ряд сдвигается влево один раз, третий ряд дважды, а последний ряд 3 раза.

a5 5a 20 be 53 2b 5a 2c → 2b 5a 2c 53 1b 2c 59 6f → 2c 59 6f 1b → 59 6f 1b 2c 00 7c 7c 47 → 7c 7c 47 00 → 7c 47 00 7c → 47 00 7c 7c


a5 5a 20 be 2b 5a 2c 53 59 6f 1b 2c 47 00 7c 7c


  1. Смешайте столбцы. Каждый столбец умножается по модулю на [Поле Галуа Райндаэля] (https://www.samiam.org/galois.html). Используемая математика выходит за рамки этой статьи, поэтому я не буду включать пример выходной матрицы.


Общая гостиная


  1. Результат умножения используется в качестве входного «сообщения» в следующем раунде AES. Каждый шаг повторяется в общей сложности 10 или более раз с одним дополнительным шагом «добавить ключ» в конце. В каждом раунде «добавить ключ» будет использоваться новый ключ раунда, но каждый новый ключ раунда по-прежнему получается из того же пароля и короткого ключа.

  • Добавить ключ

  • Заменить байты

  • Сдвиг строк

  • Умножение столбцов

Вот и все! /с


Очевидно, что шифр Rijndael, используемый в AES, довольно сложен, но я надеюсь, что смог пролить свет на общее представление о том, что происходит внутри! Спасибо за чтение.


  • Лейн Вагнер

Также опубликовано [Здесь] (https://blog.boot.dev/cryptography/aes-256-cipher/)



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE