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

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

68
задан Boann 21 March 2019 в 20:37
поделиться

9 ответов

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

Здесь это объясняется:

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

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

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

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

Вот ссылка на википедию на шифре XOR.


68
ответ дан 24 November 2019 в 14:06
поделиться

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

26
ответ дан 24 November 2019 в 14:06
поделиться

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

6
ответ дан 24 November 2019 в 14:06
поделиться

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

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

6
ответ дан 24 November 2019 в 14:06
поделиться

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, у вас есть основа большей части криптографии.

4
ответ дан 24 November 2019 в 14:06
поделиться

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

3
ответ дан 24 November 2019 в 14:06
поделиться

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

2
ответ дан 24 November 2019 в 14:06
поделиться

Давайте рассмотрим три распространенных побитовых логических оператора

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

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

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

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

Все сказанное верно в отношении криптографических алгоритмов, а не их реализаций. Большинство реализаций криптографических алгоритмов также используют множество операторов AND, обычно для извлечения отдельных байтов из 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 И, если правильно посчитать

2
ответ дан 24 November 2019 в 14:06
поделиться

Я думаю, это просто потому, что для данного некоторого случайного набора двоичных чисел большое количество операций «ИЛИ» будет иметь тенденцию ко всем единицам, аналогично большое количество операций «И» будет иметь тенденцию к все нули. Там, где большое количество 'XOR производит случайный выбор единиц и нулей.

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

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

Во-первых, это молниеносные инструкции.

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

1
ответ дан 24 November 2019 в 14:06
поделиться