Что случилось с шифрованием XOR?

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

52
задан Steven Sudit 15 July 2009 в 16:21
поделиться

10 ответов

Проблема с шифрованием XOR заключается в том, что для длинных прогонов одного и того же символов, пароль увидеть очень легко. Такие длинные прогоны чаще всего представляют собой пробелы в текстовых файлах. Допустим, ваш пароль состоит из 8 символов, а текстовый файл содержит 16 пробелов в какой-либо строке (например, в середине таблицы ASCII-графики). Если вы просто выполните XOR со своим паролем, вы Вы увидите, что на выходе будут повторяющиеся последовательности символов. Злоумышленник просто будет искать любой такой, попытается угадать символ в исходном файле (пробел будет первым кандидатом, который нужно попробовать) и получит длину пароля из длины повторяющихся групп.

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

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

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

115
ответ дан 7 November 2019 в 08:56
поделиться

Шифрование XOR может быть достаточно надежным, если выполняются следующие условия:

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

* Достаточно сильное означает, что его нельзя сломать тривиальными математическими средствами, как в сообщении GeneQ. Он по-прежнему не надежнее вашего пароля.

22
ответ дан 7 November 2019 в 08:56
поделиться

Я просто защищаюсь от случайных зрителей

Пока это предположение остается в силе, ваша схема шифрования в порядке. Люди, которые думают, что Internet Explorer - это «Интернет», не способны взломать его.

Если нет, просто используйте какую-нибудь криптографическую библиотеку. Уже существует много хороших алгоритмов, таких как Blowfish или AES для симметричного шифрования.

3
ответ дан 7 November 2019 в 08:56
поделиться

Я согласен с объяснением Павла Минаева слабых сторон XOR. Для тех, кому интересно, вот общий обзор стандартного алгоритма, используемого для взлома тривиального шифрования XOR за несколько минут:

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

  2. Если равные байты равны больше определенного процента (6% согласно Брюсу Шнайеру Прикладная криптография второй издание ), то вы переместили данные, кратные длине ключа. Найдя наименьшее количество смещение, которое приводит к большому количество равных байтов, вы найдете длина ключа.

  3. Сдвинуть зашифрованный текст на длина ключа и XOR против самого себя. Это удаляет ключ и оставляет вас с открытым текстом XORed с открытый текст сместил длину ключ. Должно быть достаточно открытый текст для определения сообщения

Подробнее см. Вопросы шифрования, часть 1

67
ответ дан 7 November 2019 в 08:56
поделиться

В дополнение к уже упомянутым моментам, шифрование XOR полностью уязвимо для атак с использованием известного открытого текста:

cryptotext = plaintext XOR key
key = cryptotext XOR plaintext = plaintext XOR key XOR plaintext

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

Нет. уязвимость для атак с использованием известного открытого текста является обязательным, но недостаточным свойством для любого «безопасного» метода шифрования, когда один и тот же ключ используется для более чем одного блока открытого текста (т. е. одноразовый блокнот все еще безопасен).

12
ответ дан 7 November 2019 в 08:56
поделиться

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

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

2
ответ дан 7 November 2019 в 08:56
поделиться

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

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

Тем не менее, в наши дни доступны гораздо лучшие методы шифрования, так почему бы не воспользоваться чем-то лучшим. Если вы пытаетесь просто спрятаться от «случайного» пользователя, даже что-то вроде gzip сработает лучше.

2
ответ дан 7 November 2019 в 08:56
поделиться

RC4 - это, по сути, шифрование XOR! Как и многие потоковые шифры - ключ есть ключ (это не каламбур!), Вы НИКОГДА не должны повторно использовать ключ. КОГДА-ЛИБО!

1
ответ дан 7 November 2019 в 08:56
поделиться

То, что "> 6%", упоминаемое GeneQ, является индексом совпадения для английского телеграфного текста - 26 букв, с прописанными знаками препинания и цифрами. Фактическое значение для длинных текстов - 0,0665.

<4% - это индекс совпадения случайного текста в 26-символьном алфавите, который равен 1/26 или 0,385.

Если вы используете другой язык или другой алфавит, конкретные значения будут другими. Если вы используете набор символов ASCII, Unicode или двоичные байты, конкретные значения будут сильно отличаться. Но разница между ИС открытого текста и случайного текста обычно присутствует. (Сжатые двоичные файлы могут иметь ИС, очень близкие к таковым у случайных, и любой файл, зашифрованный с помощью любого современного компьютерного шифра, будет иметь ИС, точно такую ​​же ИС случайного текста.)

После того, как вы XOR обработали текст против самого себя, что вы have left эквивалентно шифру с автоключом. В Википедии есть хороший пример взлома такого шифра

http://en.wikipedia.org/wiki/Autokey_cipher

1
ответ дан 7 November 2019 в 08:56
поделиться

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

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

1
ответ дан 7 November 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: