2010-10-18 3 views
3

Известно, что шифрование XOR довольно слабое. Но насколько слаб он, если у меня есть ключ, состоящий из нескольких клавиш разных (идеально простых) длин, которые объединены, чтобы сделать более длинный ключ. например, у меня есть текстовые клавиши длиной 5, 9 и 11. Если я просто применил первый ключ с использованием XOR-шифрования, тогда его должно быть легко сломать, поскольку байт шифрования будет повторяться каждые 5 байтов. Однако, если я накладываю 3 этих ключа, я получаю эффективную не повторяющуюся длину 5 * 9 * 11 = 495. Это звучит для меня довольно сильным. Если я использую несколько стихов стихотворения, используя каждую строку в качестве ключа, то моя повторяющаяся длина будет больше, чем большинство файлов. Насколько сильным будет это (предоставление ключа остается в секрете! :))Безопасность шифрования Exclusive-OR (XOR)

+1

Есть ли причина, по которой не использовать AES, например? – Kimvais

+1

@ Kimvais хорошо на самом деле .. (http://en.wikipedia.org/wiki/Advanced_Encryption_Standard#Known_attacks). но не серьезно xor сильно используется в потоке и блокирует шифры с поразительным успехом. OP должен читать про потоковые шифры вместо «XOR Encryption». – rook

ответ

6

Шифрование XOR точно так же сильно, как ключевой поток. Если вы XOR с «One time pad» - последовательность физически генерируемых случайных чисел, которую вы используете только один раз, то ваше шифрование теоретически не поддается разрушению. У вас есть проблема, однако, скрывать и распространять ключ.

Итак, ваш вопрос сводится к тому, «насколько безопасным/случайным является поток ключей из трех текстовых строк?» Ответ «совсем не очень безопасен». Наверное, достаточно хорошо, чтобы удержать твою сестренку, но не обязательно, если у тебя есть умная маленькая сестра, как у меня.

+0

) Я читал [этот вопрос] (http://stackoverflow.com/questions/1135186/whats-wrong-with-xor-encryption). Я вижу, что ваше высказывание о 3 строках недостаточно сильное. Но если я использую пример стихотворения для примера и в конечном итоге с эффективной длиной ключа, которая длиннее, чем файл, зашифрованный, он должен быть достаточно безопасным? –

+1

Нет, определенно нет, но потребовалось бы слишком много времени, чтобы объяснить, почему в этом посте. Это зависит от того, как вы его пишете. Если вы пишете его, чтобы узнать о безопасности, я начну с одной версии слова, а затем напишу программу, чтобы сломать ее, а затем перейдите к 2 словам, напишите программу, чтобы сломать ее и т. Д. Вы поймете, почему это небезопасно, и многому научитесь для себя. –

+1

Если вы действительно хотите использовать безопасный алгоритм, возьмите свое стихотворение, хешируйте его ключом, а затем используйте бесплатный, проверенный алгоритм, написанный кем-то другим - например, http://en.wikipedia.org/wiki/Advanced_Encryption_Standard. У вас будут преимущества сотен блестящих умов, которые его проверили, и пока не нашли ничего плохого. –

4

Как насчет атаки «известного открытого текста»? Если вы знаете зашифрованные и текстовые версии одной и той же строки, вы можете получить ключ.

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

http://en.wikipedia.org/wiki/Known-plaintext_attack

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

+0

Да, но известная атака открытого текста хороша только для определения части ключа, которая использовалась для кодирования известного открытого текста. Если ключ является неповторяющейся последовательностью, длинной или длинной, чем сообщение, эта атака не имеет значения. –

+0

Да, но вы можете вырвать это сообщение, а иногда это все, что вам нужно;) Кроме того, алгоритмы одноразового использования имеют свои проблемы, в основном, как другая сторона знает, какой ключ будет на этот раз. – Marcin

2

Если P и Q являются двумя независимыми криптографическими методами, композитный криптографическая функция P (Q (х)) не будет слабее, чем сильнее из P (x) или Q (x), но это не обязательно будет значимо сильнее. Чтобы составная криптографическая функция могла получить какую-либо силу, выполняемые ею операции должны соответствовать определенным критериям. Сочетание слабых шифров произвольно, независимо от того, сколько из них использует, вряд ли даст сильный шифр.