В том, что я читал в криптографических книгах, авторы относят «статаналоги» к отображениям двоичного пространства в двоичное меньшей размерности. На самом деле все гораздо более общее.
Входы, порождающие часть наблюдаемой последовательности в методе действительно считались (и должны считаться) только двоичными, а вот сама она необязательно должна быть двоичной. Сформулируем задачу статистического дешифрования в том виде, в котором она была известна автору давным-давно.
Пусть мы наблюдаем две последовательности xt и yt, t=1,…, N, где xt из GF(2n) – многомерное поле размерности n из 2-х элементов 0 и 1, а yt из поля действительных чисел R. Между этими последовательностями существует функциональная связь для любого целочисленного положительного t
yt=Fk(xt)+ξt,
где Fk(x) –функция отображения GF(2n) в R, зависящая от «ключа» k из некоторого множества К, которую для любого k мы знаем;
ξt– последовательность стационарных действительнозначных случайных величин со средним нуль и независящих от xt.
А вот какой k был в том случае, который наблюдаем, этого мы не знаем.
Также обычно предполагается, что дисперсия Σ ξt равна C0·N, где C0– некоторая константа.
Задача дешифрования – это определение при известных последовательностях xt и yt, неизвестного «ключа» k, изначально выбранного из множества K случайным и равновероятным образом.
При этом обычно xt для любого t также предполагался случайным и равновероятным вектором из GF(2n) и для любого k дисперсия ΣFk(xt) равна Ck·N и для всех k константа Ck меньше либо равна константы C.
Как определить k? Можно тотальным перебором. Берем ключ r и строим статистику S(r)=ΣFr(xt)·yt. Если r=k, то среднее этой статистики положительно и равно Σ(Fr(xt))2, т. е. является выборочной статистикой для оценки положительной величины N·E(Fr(x))2, где Eg(x) – это математическое ожидание при случайном и равновероятном векторе x действительнозначной функции g(x) отображающей GF(2n) в R.
Для k≠r получаем оценку величины N·E(Fr(x)·Fk(x)), которая может быть очень разной для разных k.
Но выше было написано: «неизвестного «ключа» k, выбранного из множества K случайным и равновероятным образом.»
Поэтому для среднего второго распределения получаем
N·E(Fr(x)·ΣkFk(x)·|K|-1), где |K| — число ключей.
Так как ΣkFk(x)·|K|-1 нам известна, то мы ее можем сделать любой. И потому обычно ее в уравнении для ytделают равной нулю.
Таким образом, мы получаем задачу различения двух простых гипотез о среднем статистики с разностью средних O(N) и дисперсиями O(N) для обеих гипотез. Каким должно быть N для хорошего различения таких гипотез в случае, когда статистика Fr(xt)·ytимеет нормальное распределение, для каждой из гипотез можно легко найти в любом учебнике по математической статистике.
Как и есть огромное число статей, в которых получены условия слабых зависимостей случайных величин xt и ξt достаточные для асимптотической нормальности суммы ΣFr(xt)·yt. Одна из них принадлежит и автору данной заметки:
Верхние оценки для семиинвариантов суммы мультииндексированных случайных величин
Но трудоемкость тотального перебора, увы, равна |K|. Как ее можно сократить? Вот тут мы и приходим к методу «статаналогов».
Предположим, что К является декартовым произведением двух множеств K1и K2. Как можно определить ключ (k1,k2), kiєKi, только тотальным перебором K1? Да по той же «логике», как и вышеизложенное. Мы должны найти функцию Gr(x), где rєK1, такую, что для ключей вида k=(r,k2) имеет место условие:
EGr(x)·Fk(x)≥δ>0,
и N достаточно большое, чтобы различить две простые гипотезы о среднем статистики с разностью средних не меньше δ·Nи дисперсиями O(N).
В государственном криптографическом анализе СССР еще считалось, что слабостью шифра является случай, когда такое возможно даже не для всех r из K1, а только для его подмножества с числом элементов z·|K1|, где 0<z<1.
И какая у нас получается трудоемкость определения ключа? Очень простая
|K1|+β·|K|,
где β – ошибка второго рода нашего критерия, а вероятность правильного определения ключа данным алгоритмом 1-α, где α – ошибка первого рода нашего критерия.
Кроме одного этапа можно сделать несколько, путем дробления K2на еще одно декартово произведение K2и K3 и построение статаналогов для новых k вида (r,k), r=(r1,r2), r1 из оставшихся «ключей» из K1 после первого этапа, а r2 из K2и сократить трудоемкость до
|K1|+β·|K1|·|K2|+ β· β1·|K|,
где β1 – ошибка второго рода нашего критерия для второго этапа алгоритма.
Потом делить можно K3и так далее.
А что самое интересное из написанного выше, без чего собственно весь вышеизложенный текст превращается в демагогию? Это вопрос: как строить функцию Gr(x)? И вот тут мы попадаем в разложение функции Fk(x) в ряд Фурье
Fk(x)=Σfk(a)(-1)<a,x>,
где a из GF(2n) и <a,x>= Σai·xi(сумма произведения координат по модулю 2).
И как построить «статаналог», зависящий только от r из K1?
А предположим, что для любого фиксированного r из K1и любого «ключа» k равного (r,k2) существует A(r) – подмножество GF(2n) такое, что для любых a из этого множества нам известна функция gr(a), принимающая значения -1, 0 и +1, для которой имеют место равенства
gr(a)=sign(fk(a)), если aєA(r) и нуль в противном случае.
Возьмем в качестве функции Gr(x) функцию Σgr(a)(-1)<a,x>. И что получим для EGr(x)·Fk(x), если k=(r,k2)? Да очень простое равенство
Σmod(fk(a))·I(aє A(r)), где mod(s) – модуль s, I — индикатор события.
Почему? Да потому что для любого a≠нулевому вектору E(-1)<a,x>=0, а для нулевого вектора это 1.
И наша задача дешифрования сведется только к анализу достаточности N наблюдений для «хороших» α и β нашего критерия на отличие последней суммы от нуля.
То, что написано выше, было известно задолго до прихода автора в 5 отдел Спецуправления. И потому все шифраторы строились так, что если последовательность векторов xtслучайна, равновероятна и независима, то на реальной длине N любого шифратора для одного ключа k α и β получались «плохими». Но в реальности для «черных ящиков» у последовательности xtотсутствовала независимость. Собственно при помощи алгоритмов, основанных на методе оценок семиинвариантов сумм слабозависимых случайных величин, автору статьи и удалось для одной такой зависимости xt, которая имела место, построить быстрые алгоритмы вычисления fk(a) для векторов a c числом единиц не больше 3-х при n больше 1000. Это для расчета всех fk(a) нет и ничего не будет быстрее «алгоритма Фурье» с трудоемкостью 2n/2. А, как показано выше, именно расчет fk(a) для подмножества GF(2n) и лежит в основе метода дешифрования «статаналог».
И, как ни парадоксально, во всех новых изобретениях публичных шифраторов и «производстве криптовалют» автор нигде не видел даже того, что написал выше про советскую криптографию: все шифраторы строились так, что если последовательность векторов xtслучайна, равновероятна и независима, то на длине Nлюбого шифратора для одного «ключа» k α и β получались «плохими».
Естественно предчувствую «возражение» против написанного: «Зачем Вы пишите про поле GF(2n), операции которого давно не используются в современных шифраторах».
Так двоичность векторов xtиз современных компьютеров никуда не делась, а функцией Fk(xt) можно точно описать любые операции в любом кольце и поле. И ряд Фурье существует для любой функции отображающей двоичные вектора размера n в поле действительных чисел. А величина (-1)<a,x>появляется просто из определения этого ряда.
И конечно самый интересный для сегодняшних дешифровальшиков вопрос: «Какую функцию Fk(xt) Вы видите в шифраторе МММ?». Увы, это та задача, которую Вы сами и должны решать, если хотите дешифровать тем методом, который в истории криптографии с 1945-го по 1990-й года был самым успешным для дешифрования, если не считать шпионаж с покупкой «ключей».
Ссылка на определение статистического аналога из учебника по криптографии
studme.org/205763/informatika/statisticheskie_analogi
smart-lab.ru/blog/1217949.php
Судя по курсу 0.55*USD+0.45*EUR с 11.09 он остался прежним: 16%.
что изменится?
Шит он и есть шит. Даже если весьма модный. Мы видим многократное повторение сказки про голого короля с применением технических средств в особо крупном размере.
Для этого понадобится горшок свежей земли, нужно прибавить туда фунт красной меди и полстакана холодной воды, затем прокипятить всё в районе получаса. Затем добавь к составу три унции оксида меди, прокипяти полчаса, полунции мышьяка и кору дуба и тщательно прокипяти в течении часа. Сунь гвоздь в раствор, если он изменился, то дело сделано. Благодаря этому составу можно получить полфута золота.
Но тот гений, кто найдет то, что написано в этом абзаце, с помощью того, что написано выше в заметке, легко сможет превращать пепел в золото, или воду в вино на своей домашней кухне со скоростью на порядки превосходящей обычную добычу золота или созревание вина.