модификация "xor"
Доброго времени суток. Хочу поинтересоваться насчёт обычного полиалфавитного шифра. Пусть у нас есть некоторый текст, который "ксорится" с ключом и получается шифротекст. Насколько я понял, по шифротексту он вскрывается так же как шифр Виженера. Стойкость в основном зависит от длины гаммы. Тогда получается, что если пароль из 8 символов разбить на две части(5+3) и зашифровать текст сначала одним, а затем другим, то длина гаммы сильно увеличится(почти в два раза). Может ли криптоаналитик как-то использовать информацию о последовательном применении двух ключей(кроме как при полном переборе)?
Длина гаммы не изменится. Это эквивалентно проксориванию с третьим паролем, который есть XOR ваших двух паролей (при одинаковой их длине). Проблемы те же, что и с одноразовым XOR'ом. Ломается частотным анализом и т.п.
Длина изменилась с 8 на 15, пароли не просто не одинаковой длины, а взаимнопросты. Современные шифры не интересуют, интересует именно возможность использования криптоаналитиком этого свойства гаммы.
Шифртекст = Текст ⊕ Пароль1 ⊕ Пароль 2 = Текст ⊕ (Пароль1 ⊕ Пароль2) = Текст ⊕ Пароль3, где Пароль3 = Пароль1 ⊕ Пароль2, причём имеет ту же длину, что и Пароль1 и что Пароль2. Я правильно вашу схему понял?
В чём цель? Изучение криптоанализа на простейших нестойких слабых шифрах? В институте задали задачу? Или взлом шифра какого-то Васи Пупкина?
Понимаете, есть некоторое утверждение, которое является по сути теоремой. Если вы не соблюдаете условия теоремы, вы получаете слабый небезопасный шифр, не удовлетворяющий современным критериям безопасности шифров. И в чём тогда смысл его анализировать? Ознакомьтесь с FAQ для начала:
Похоже нет. Давайте на примере. Шифруем сообщение "000000000000000000000000000000"(тридцать символов '0') паролем "12345678". Получаем "\1\2\3\4\5\6\7\8\1\2\3\4\5\6\7\8\1\2\3\4\5\6\7\8\1\2\3\4\5\6"(где \d – это символ с кодом d). Теперь разобъём тот же пароль на несколько частей, так чтобы НОК произведения длин этих частей был наибольшим, таким образом гамма увеличивается до НОК(5,3)=15. Получаем шифровку: "00022>1?<31?>3=00022>1?<31?>3=".
Дизассемблировал программу в которой трафик так шифровался двумя взаимнопростыми ключами, вот и стало интересно. Очевидно, что это усложняет описанный в википедии способ вскрытия, поэтому я попытался придумать другой, но не смог.
комментариев: 9796 документов: 488 редакций: 5664
Получается:
Шифртекст = Текст ⊕ (Пароль (длина = p / n) || Пароль (длина = q / n) ), где "||" — это конкатенация (объединение),
n = p • q – НОК.
Т.е. длина увеличивается за счёт того, что две половинки пароля ещё и частично совпадают (перекрываются)?
эм... я тут ничего не понял, из второй строки следует, что n>=p, а в первой p делится на n, т.е. длина получается не больше единицы.
Более того – только за счёт этого. Для пароля из восьми символов операция шифрования на языке си будет выглядеть так:
комментариев: 9796 документов: 488 редакций: 5664
Методом перебора по скачкам в статистике подберём значение первого периода, в котором будет сокращаться в ноль второй период по ксору:
Каждая третья пара шифртекстов будет давать вот такое:
c(1) ⊕ c(3) = p(1) ⊕ p(3) ⊕ ( k1(1) mod 5) ⊕ ( k1(3) mod 5)
И так можно проверить все статистические предположения о парах, кратных тройке, всё больше подтверждая гипотезу об одном значении периода.
Дальше можно подобрать и второй период.
И вообще, информация или догадка о каждом pn, k1(n), k2(n), mod (X), mod (Y) приближает к разгадке. А уж про наличие возможности криптоанализа с использованием известных или подобранных открытых текстов даже напоминать смешно. Не может линейная функция считаться шифром.
Шифр — всё, что превращает текст в (обратимую) абракадабру. В народе считают как-то так.
комментариев: 9796 документов: 488 редакций: 5664
Не может линейная функция считаться стойким шифром.
комментариев: 9796 документов: 488 редакций: 5664
Периоды и так известны, это же часть алгоритма шифрования. Вопрос в том как этим воспользоваться. Что толку от этой информации, если мы всё равно будем действовать как при обычном "ксоре" с паролем в 15 символов.
комментариев: 9796 документов: 488 редакций: 5664
При перексоривании символов шифртекстов можно сокращать части эти половинок ключа, т.е. будет видно, что каждый 3-ий фрагмент открытого текста будет эффективно ксориться только одним фрагментов из одной половинки пароля, а каждый 5-ый — только одним из второй половинки.
И ещё: если считать, что высокоэнтропийные данные непредсказуемы для противника, то ситуация похожа, а высокоэнтропийными они будут после архивации, сжатия и т.д. Получается, что все атаки на XOR в конечном счёте сводятся к связыванию шифртекста с открытым текстом. Конечно, для любого архиватора связь между открытым текстом и архивированным есть (а, следовательно, и между открытым и зашифрованным, по транзитивности), но, чем она сложнее, тем тяжелее анализировать/взламывать такой «шифр». Unknown, как далёк я от понимания?