Чтение конфигурационных файлов, которые должны только быть считаны во время запуска и инкапсуляцию их в Singleton.
Проблема с шифрованием XOR заключается в том, что для длинных прогонов одного и того же символов, пароль увидеть очень легко. Такие длинные прогоны чаще всего представляют собой пробелы в текстовых файлах. Допустим, ваш пароль состоит из 8 символов, а текстовый файл содержит 16 пробелов в какой-либо строке (например, в середине таблицы ASCII-графики). Если вы просто выполните XOR со своим паролем, вы Вы увидите, что на выходе будут повторяющиеся последовательности символов. Злоумышленник просто будет искать любой такой, попытается угадать символ в исходном файле (пробел будет первым кандидатом, который нужно попробовать) и получит длину пароля из длины повторяющихся групп.
Двоичные файлы могут быть даже хуже того, так как они часто содержат повторяющиеся последовательности 0x00
байт. Очевидно, что XOR с ними не работает, поэтому ваш пароль будет виден в виде обычного текста на выходе! Примером очень распространенного двоичного формата с длинными последовательностями нулей является .doc
.
Двоичные файлы могут быть еще хуже, поскольку они часто содержат повторяющиеся последовательности размером 0x00
байтов. Очевидно, что XOR с ними не работает, поэтому ваш пароль будет виден в виде обычного текста на выходе! Примером очень распространенного двоичного формата с длинными последовательностями нулей является .doc
.
Двоичные файлы могут быть еще хуже, поскольку они часто содержат повторяющиеся последовательности размером 0x00
байтов. Очевидно, что XOR с ними не работает, поэтому ваш пароль будет виден в виде обычного текста на выходе! Примером очень распространенного двоичного формата с длинными последовательностями нулей является .doc
.
Шифрование XOR может быть достаточно надежным, если выполняются следующие условия:
* Достаточно сильное означает, что его нельзя сломать тривиальными математическими средствами, как в сообщении GeneQ. Он по-прежнему не надежнее вашего пароля.
Я просто защищаюсь от случайных зрителей
Пока это предположение остается в силе, ваша схема шифрования в порядке. Люди, которые думают, что Internet Explorer - это «Интернет», не способны взломать его.
Если нет, просто используйте какую-нибудь криптографическую библиотеку. Уже существует много хороших алгоритмов, таких как Blowfish или AES для симметричного шифрования.
Я согласен с объяснением Павла Минаева слабых сторон XOR. Для тех, кому интересно, вот общий обзор стандартного алгоритма, используемого для взлома тривиального шифрования XOR за несколько минут:
Определите длину ключа. Это выполняется путем XOR зашифрованных данных Сам с собой сдвинул различные числа мест и выясняя, сколько байты совпадают.
Если равные байты равны больше определенного процента (6% согласно Брюсу Шнайеру Прикладная криптография второй издание ), то вы переместили данные, кратные длине ключа. Найдя наименьшее количество смещение, которое приводит к большому количество равных байтов, вы найдете длина ключа.
Сдвинуть зашифрованный текст на длина ключа и XOR против самого себя. Это удаляет ключ и оставляет вас с открытым текстом XORed с открытый текст сместил длину ключ. Должно быть достаточно открытый текст для определения сообщения
Подробнее см. Вопросы шифрования, часть 1
В дополнение к уже упомянутым моментам, шифрование XOR полностью уязвимо для атак с использованием известного открытого текста:
cryptotext = plaintext XOR key
key = cryptotext XOR plaintext = plaintext XOR key XOR plaintext
где XORring открытых текстов нейтрализует друг друга, оставляя только ключ.
Нет. уязвимость для атак с использованием известного открытого текста является обязательным, но недостаточным свойством для любого «безопасного» метода шифрования, когда один и тот же ключ используется для более чем одного блока открытого текста (т. е. одноразовый блокнот все еще безопасен).
Цель хорошего шифрования - сделать его математически трудным для дешифрования без ключа.
Это включает в себя желание защитить сам ключ.
Метод XOR в основном представляет собой очень простой шифр, который легко взломать, как описано здесь.
Важно отметить, что XOR используется в криптографических алгоритмах .
Эти алгоритмы работают над созданием математических трудностей вокруг этого.
Антивирус Нортона использовал технику использования предыдущей незашифрованной буквы в качестве ключа для следующей буквы. Это заняло у меня дополнительные полчаса, чтобы понять, если я правильно помню.
Если вы просто хотите остановить случайного зрителя, этого достаточно; Раньше я прятал строки в исполняемых файлах. Однако это не выдержит и 10 минут для любого, кто действительно попытается.
Тем не менее, в наши дни доступны гораздо лучшие методы шифрования, так почему бы не воспользоваться чем-то лучшим. Если вы пытаетесь просто спрятаться от «случайного» пользователя, даже что-то вроде gzip сработает лучше.
RC4 - это, по сути, шифрование XOR! Как и многие потоковые шифры - ключ есть ключ (это не каламбур!), Вы НИКОГДА не должны повторно использовать ключ. КОГДА-ЛИБО!
То, что "> 6%", упоминаемое GeneQ, является индексом совпадения для английского телеграфного текста - 26 букв, с прописанными знаками препинания и цифрами. Фактическое значение для длинных текстов - 0,0665.
<4% - это индекс совпадения случайного текста в 26-символьном алфавите, который равен 1/26 или 0,385.
Если вы используете другой язык или другой алфавит, конкретные значения будут другими. Если вы используете набор символов ASCII, Unicode или двоичные байты, конкретные значения будут сильно отличаться. Но разница между ИС открытого текста и случайного текста обычно присутствует. (Сжатые двоичные файлы могут иметь ИС, очень близкие к таковым у случайных, и любой файл, зашифрованный с помощью любого современного компьютерного шифра, будет иметь ИС, точно такую же ИС случайного текста.)
После того, как вы XOR обработали текст против самого себя, что вы have left эквивалентно шифру с автоключом. В Википедии есть хороший пример взлома такого шифра
Я немного опаздываю с ответом, но поскольку никто еще не упомянул об этом: это называется шифром Виженера.
Википедия дает ряд атак криптоанализа для его взлома; Однако еще проще, поскольку большинство форматов файлов имеют фиксированный заголовок, было бы выполнить XOR заголовка открытого текста с зашифрованным заголовком, дав вам ключ.