Почему XOR — идеальный шифр?

Почему XOR — идеальный шифр?

24 мая 2022 г.

Если вы знакомитесь с криптографией или просто пытаетесь понять основы, вы, возможно, заметили, что операция «исключающее ИЛИ» (XOR) используется довольно часто, особенно в шифрах. XOR — это простая побитовая операция, которая позволяет криптографам создавать надежные системы шифрования и, следовательно, является фундаментальным строительным блоком практически всех современных шифров.


Давайте углубимся в детали и посмотрим, что делает XOR таким важным.


Что такое XOR ()?


XOR или «исключающее или» работает с двоичными данными. Он возвращает true, если оба его входа противоположны (один false и один true), в противном случае он возвращает false.



Например, в Go код будет примерно таким:


```javascript


func exclusiveOr(a bool, b bool) bool {


вернуть а != б


Шифр ​​XOR — идеальный шифр


Интересно отметить, что если:


  1. Ключ имеет тот же размер, что и сообщение

  1. Ключ держится в секрете и генерируется действительно случайным образом

Тогда шифр XOR определенно невозможно взломать. Это известно как одноразовый блокнот. Тем не менее, простое XOR не следует использовать в рабочей среде из-за того, что длина ключа должна быть слишком большой, чтобы быть практичной.


Пример шифрования


Например, давайте просто зашифруем слово «привет», выполнив следующие действия:


  1. Во-первых, конвертируйте «привет» в двоичный файл, [здесь] (https://www.rapidtables.com/convert/number/ascii-to-binary.html) — это бесплатный инструмент.

```javascript


01101000 01101001


  1. Затем создайте случайный секретный ключ такой же длины:

```javascript


01010010 01000101


  1. Затем создайте зашифрованное сообщение, объединив XOR сообщения и ключа:

```javascript


01101000 01101001 («привет») XOR 01010010 01000101 (секретный ключ)


00111010 00101100 (зашифрованное сообщение)


  1. Наконец, расшифруйте сообщение, снова объединив XOR ключа с зашифрованным сообщением:

```javascript


00111010 00101100 (зашифрованное сообщение) XOR 01010010 01000101 (секретный ключ)


01101000 01101001 («привет»)


Как это работает?


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


𝑎 = ​​(𝑎 𝑏) 𝑏


И, как мы показали в нашем примере:


зашифровано = сообщение ключ и сообщение = зашифровано ключ


Используется ли XOR в рабочих шифрах?


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


XOR — это основная операция на этапе «добавить раундовый ключ» AES-256. Он также используется в [шифре DES] (http://page.math.tu-berlin.de/\~kant/teaching/hess/krypto-ws2006/des.htm).


Также опубликовано [здесь] (https://blog.boot.dev/cryptography/why-xor-in-cryptography/).



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