Подтвердить что ты не робот

Почему XOR используется в криптографии?

Почему в криптографических алгоритмах используется только XOR, а другие логические элементы, такие как OR, AND и NOR, не используются?

4b9b3361

Ответ 1

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

Вот что объяснено:

Представьте, что у вас есть строка двоичных цифр 10101 и вы XOR строку 10111 с ней вы получите 00010

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

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

Если у вас длинная строка, вы можете повторить свой ключ до тех пор, пока он не будет достаточно длинным например, если ваша строка была 1010010011, тогда вы просто напишете свой ключ дважды, и он станет 1011110111 и XOR с новой строкой

Здесь ссылка на википедию на шифре XOR.


Ответ 2

Основная причина заключается в том, что если случайная переменная с неизвестным распределением R1 имеет XORed со случайной переменной R2 с равномерным распределением, результат представляет собой случайную переменную с равномерным распределением, поэтому вы можете легко рандомизировать смещенный вход, который невозможен с другими бинарные операторы.

Ответ 3

Я вижу две причины:

1) (Основная причина) XOR не пропускает информацию об исходном тексте.

2) (Приятная причина) XOR - инволютивная функция, т.е. Если дважды применить XOR, вы получите исходный открытый текст (т. XOR(k, XOR(k, x)) = x, где x - это твой открытый текст и k твой ключ). Внутренний XOR - это шифрование, а внешний XOR - это дешифрование, т.е. Одна и та же функция XOR может использоваться как для шифрования, так и для дешифрования.

Чтобы проиллюстрировать первый пункт, рассмотрим таблицы истинности AND, OR и XOR:

А также

0 И 0 = 0

0 И 1 = 0

1 И 0 = 0

1 И 1 = 1 (Утечка!)

Или же

0 ИЛИ 0 = 0 (Утечка!)

0 ИЛИ 1 = 1

1 ИЛИ 0 = 1

1 ИЛИ 1 = 1

XOR

0 XOR 0 = 0

0 XOR 1 = 1

1 XOR 0 = 1

1 XOR 1 = 0

Все в первом столбце является нашим вводом (т.е. Простой текст). Второй столбец - это наш ключ, а последний столбец - результат ввода, который вы "смешали" (зашифровали) с ключом, используя определенную операцию (т.е. Зашифрованный текст).

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

Допустим, оператор AND использовался для генерации этого зашифрованного байта из исходного байта открытого текста. Если было использовано AND, то мы точно знаем, что каждый раз, когда мы видим бит "1" в зашифрованном байте, вход (т.е. Первый столбец, простой текст) ДОЛЖЕН также быть "1" согласно таблице истинности А ТАКЖЕ. Если зашифрованный бит равен "0", мы не знаем, является ли ввод (т.е. Простой текст) "0" или "1". Таким образом, мы можем заключить, что исходный простой текст: 1 _ _ 1 _ 111. Таким образом, 5 битов исходного простого текста были пропущены (т.е. К нему можно было получить доступ без ключа).

Применяя ту же идею к ИЛИ, мы видим, что каждый раз, когда мы находим "0" в зашифрованном байте, мы знаем, что вход (т.е. Простой текст) также должен быть "0". Если мы находим "1", то мы не знаем, является ли ввод "0" или "1". Таким образом, мы можем сделать вывод, что введенный простой текст: _ 00 _ 0 _ _ _. На этот раз мы смогли утечь 3 бита исходного байта простого текста, ничего не зная о ключе.

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

Ответ 4

Выход XOR всегда зависит от обоих входов. Это не относится к другим операциям, которые вы упомянули.

Ответ 5

Я думаю, потому что XOR обратима. Если вы хотите создать хеш, тогда вы захотите избежать XOR.

Ответ 6

XOR является единственным затвором, который используется напрямую, потому что независимо от того, какой вход является, другой вход всегда влияет на выход.

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

Ответ 7

XOR действует как тумблер, в котором вы можете включать и выключать определенные биты. Если вы хотите "скремблировать" число (образец бит), вы XOR его с номером. Если вы возьмете этот скремблированный номер и XOR снова с тем же номером, вы вернете исходный номер.

210 XOR 145 gives you  67  <-- Your "scrambled" result
 67 XOR 145 gives you 210  <-- ...and back to your original number

Когда вы "скремблируете" число (или текст или любой образец битов) с помощью XOR, у вас есть основа для криптографии.

Ответ 8

XOR использует меньше транзисторов (4 NAND gates), чем более сложные операции (например, ADD, MUL), что делает его полезным для реализации на оборудовании когда число ворот важно. Кроме того, XOR является его собственным обратным, что делает его полезным для применения ключевого материала (тот же код может использоваться для шифрования и дешифрования). Красиво простой AddRoundKey примером этого является работа AES.

Ответ 9

Для симметричного криптографии единственные реальные операции выбора, которые смешивают биты с шифрованием и не увеличивают длину, - это операции с переносом, добавлением без переноса (XOR) и сравнением (XNOR). Любая другая операция либо теряет биты, либо расширяется, либо недоступна для ЦП.

Ответ 10

Рассмотрим три общих побитовых логических оператора

Скажем, мы можем выбрать некоторое число (назовем его маской) и объединить его с неизвестным значением

  • И о принуждении некоторых бит к нулю (те, которые установлены в ноль в маске) ​​
  • ИЛИ состоит в том, чтобы заставлять некоторые биты одному (те, которые установлены в маске) ​​

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

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

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

Обычно вы получаете такой код (это почти случайный экстракт aes_core.c)

rk[ 6] = rk[ 0] ^
 (Te2[(temp >> 16) & 0xff] & 0xff000000) ^
 (Te3[(temp >>  8) & 0xff] & 0x00ff0000) ^
 (Te0[(temp      ) & 0xff] & 0x0000ff00) ^
 (Te1[(temp >> 24)       ] & 0x000000ff) ^
 rcon[i];
rk[ 7] = rk[ 1] ^ rk[ 6];
rk[ 8] = rk[ 2] ^ rk[ 7];
rk[ 9] = rk[ 3] ^ rk[ 8];

8 XOR и 7 AND, если я правильно подсчитал

Ответ 11

Свойство XOR (a xor b) xor b = a пригодится для потоковых шифров: для шифрования данных с битовой шириной генерируется псевдослучайная последовательность из n бит с использованием крипто ключа и криптоалгоритм.

Sender:
Data:                    0100 1010 (0x4A)
pseudo random sequence:  1011 1001 (0xB9)
                        ------------------
ciphered data            1111 0011 (0xF3)
                        ------------------

Receiver:
ciphered data            1111 0011 (0xF3)
pseudo random sequence:  1011 1001 (0xB9)  (receiver has key and computes same sequence)
                        ------------------
                         0100 1010 (0x4A)  Data after decryption
                        ------------------

Ответ 12

Я думаю, что это просто потому, что данный случайный набор двоичных чисел большое количество операций "ИЛИ" будет стремиться ко всем "1", а также большое количество операций "И" будет стремиться ко всем нулям. Wheres большое количество "XOR" производит случайный выбор единиц и нулей.

Это не означает, что И и ИЛИ не полезны - просто XOR более полезен.

Распространенность OR/AND и XOR в криптографии по двум причинам: -

Один из них - это молниеносные инструкции.

Два из них трудно моделировать, используя обычные математические формулы

Ответ 13

XOR - математический расчет в криптографии. Это логическая операция. Существуют и другие логические операции: И, ИЛИ, НЕ, Функция по модулю и т.д. XOR является наиболее важным и наиболее используемым.

enter image description here

Если это то же самое, это 0.

Если это отличается, это 1.

Пример:

Сообщение: Привет

Бинарная версия Hello: 01001000 01100101 01101100 01101100 01101111

Поток ключей: 110001101010001101011010110011010010010111

Шифрование текста с использованием XOR: 10001110 11000110 00110110 10100001 01001010

Приложения: одноразовая клавиатура /Vern-am Cipher использует функцию Exclusive или функцию, в которой приемник имеет тот же ключевой поток и получает зашифрованный текст по скрытому транспортному каналу. Затем получатель передает или зашифрованный текст с помощью ключевого потока, чтобы показать открытый текст Hello. В One Time Pad поток клавиш должен быть как минимум равен длине сообщения.

Факт: One Time Pad - единственное по-настоящему неразрушимое шифрование.

Эксклюзив Или используется в структуре Фейстеля, которая используется в блочном шифре DES algo.

Примечание: при операции XOR с вероятностью 50% выдается 0 или 1.

enter image description here