А. Г.
А. Г. личный блог
23 октября 2025, 16:31

Почему я боюсь криптовалют с открытым ключом

Все-таки дошел я до написания заметки на эту тему. Собственно к криптовалютам относится только ее последний абзац. Но тот гений, кто найдет то, что  написано в этом абзаце, с помощью того, что написано выше в заметке, легко сможет генерировать эту криптовалюту на своем домашнем ПК со скоростью на порядки превосходящей обычный майнинг с кучей процессоров. А также присвоить и ту криптовалюту, которая была сгенерирована, но потерялась.

Увы, топик содержит высшую математику, по другому никак не получится. 

Метод дешифрования «статаналог»   

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

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

Пусть мы наблюдаем две последовательности xt  и yt, t=1,…, N, где xt  из GF(2n) – многомерное поле размерности из 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  для любого также предполагался случайным и равновероятным вектором из GF(2n) и для любого k дисперсия ΣFk(xt) равна Ck·N  и для всех k константа Cменьше либо равна константы C.

Как определить k? Можно тотальным перебором. Берем ключ и строим статистику S(r)=ΣFr(xt)·yt. Если r=k, то среднее этой статистики положительно и  равно Σ(Fr(xt))2, т. е. является выборочной статистикой для оценки положительной величины N·E(Fr(x))2, где Eg(x) – это математическое ожидание при случайном и равновероятном векторе действительнозначной функции g(x) отображающей GF(2n) в R.

Для kполучаем оценку величины 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)  для обеих гипотез. Каким должно быть для хорошего различения таких гипотез в случае, когда  статистика 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и дисперсиями O(N). 

В государственном криптографическом анализе СССР еще  считалось, что слабостью шифра является случай, когда такое возможно даже не для всех из 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>,

где  из GF(2n)  и  <a,x>= Σai·xi(сумма произведения координат по модулю 2).

И как построить «статаналог», зависящий только от из K1?

А предположим, что для любого фиксированного r  из K1и любого «ключа» k равного (r,k2) существует A(r) – подмножество GF(2n) такое, что для любых из этого множества нам известна функция 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.

И наша задача дешифрования сведется только к анализу достаточности наблюдений для «хороших» α и  β нашего критерия на отличие последней суммы от нуля.

То, что написано выше, было известно задолго до прихода автора в 5 отдел Спецуправления. И потому все шифраторы строились так, что если последовательность векторов  xtслучайна, равновероятна и независима, то на реальной длине любого шифратора для одного ключа k α и  β получались «плохими». Но в реальности для «черных ящиков» у последовательности xtотсутствовала независимость. Собственно при помощи алгоритмов, основанных на методе оценок семиинвариантов сумм слабозависимых случайных величин, автору статьи и удалось для одной такой зависимости  xt, которая имела место, построить быстрые алгоритмы вычисления fk(a) для векторов числом единиц не больше 3-х при больше 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

 

33 Комментария
  • ves2010
    23 октября 2025, 16:39
    ну предположим… что нашли… и даже намайнили за 5 минут оставшиеся 7% биткоинов...
    что изменится?
  • SergeyJu
    23 октября 2025, 16:47
    Собственно не имеет значения, с применением каких именно алгоритмов  производится эмиссия неких незаконных аналогов толи денег, толи ценных бумаг без какого-либо обеспечения. И неважно, какие там крипто- зашиты. 
    Шит он и есть шит. Даже если весьма модный. Мы видим многократное повторение сказки про голого короля с применением технических средств в особо крупном размере.  
  • Прикинь Илья
    23 октября 2025, 17:00
    Рецепт философского камня:

    Для этого понадобится горшок свежей земли, нужно прибавить туда фунт красной меди и полстакана холодной воды, затем прокипятить всё в районе получаса. Затем добавь к составу три унции оксида меди, прокипяти полчаса, полунции мышьяка и кору дуба и тщательно прокипяти в течении часа. Сунь гвоздь в раствор, если он изменился, то дело сделано. Благодаря этому составу можно получить полфута золота.

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

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн