Почему XOR — идеальный шифр?
24 мая 2022 г.Если вы знакомитесь с криптографией или просто пытаетесь понять основы, вы, возможно, заметили, что операция «исключающее ИЛИ» (XOR) используется довольно часто, особенно в шифрах. XOR — это простая побитовая операция, которая позволяет криптографам создавать надежные системы шифрования и, следовательно, является фундаментальным строительным блоком практически всех современных шифров.
Давайте углубимся в детали и посмотрим, что делает XOR таким важным.
Что такое XOR (⊕)?
XOR или «исключающее или» работает с двоичными данными. Он возвращает true, если оба его входа противоположны (один false и один true), в противном случае он возвращает false.
Например, в Go код будет примерно таким:
```javascript
func exclusiveOr(a bool, b bool) bool {
вернуть а != б
Шифр XOR — идеальный шифр
Интересно отметить, что если:
- Ключ имеет тот же размер, что и сообщение
- Ключ держится в секрете и генерируется действительно случайным образом
Тогда шифр XOR определенно невозможно взломать. Это известно как одноразовый блокнот. Тем не менее, простое XOR не следует использовать в рабочей среде из-за того, что длина ключа должна быть слишком большой, чтобы быть практичной.
Пример шифрования
Например, давайте просто зашифруем слово «привет», выполнив следующие действия:
- Во-первых, конвертируйте «привет» в двоичный файл, [здесь] (https://www.rapidtables.com/convert/number/ascii-to-binary.html) — это бесплатный инструмент.
```javascript
01101000 01101001
- Затем создайте случайный секретный ключ такой же длины:
```javascript
01010010 01000101
- Затем создайте зашифрованное сообщение, объединив XOR сообщения и ключа:
```javascript
01101000 01101001 («привет») XOR 01010010 01000101 (секретный ключ)
00111010 00101100 (зашифрованное сообщение)
- Наконец, расшифруйте сообщение, снова объединив 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/).
Оригинал