Криптография и клептография.
Генератор псевдослучайных чисел Dual EC
Standards and Technology, NIST)1 по торую проголосовало 19 стран из 24, точки заданы авторами стандарта,
генерации случайных чисел в 2004 го- не содержала генератора Dual EC. а они могли изначально выбрать чис-
ду [2] как «теоретико-числовой ге- Участники голосования высказыва- ло d, а затем вычислить точку Q как
нератор». Скорость работы генера- ли те или иные замечания к проекту dP. То есть такая ситуация в прин-
тора была достаточно низкой за счет стандарта, комментируя его отдель- ципе возможна, хотя ни доказать, ни
вычислений на эллиптических кри- ные пункты и формулировки. Со сто- опровергнуть ничего нельзя.
вых, но зато его стойкость, по утвер- роны США не последовало конкрет- Вскоре после конференции, в но-
ждению докладчика Дона Джонсо- ных замечаний – только общий ком- ябре 2007 года, вышла разгромная
на, существенно превышала альтер- ментарий «ко всему документу», в ко- статья Брюса Шнайера [9], в которой
нативные варианты, поскольку ба- тором говорилось, что текущая вер- он советовал ни при каких обстоя-
зировалась на задаче дискретного ло- сия стандарта ISO «не обладает до- тельства не использовать генератор
гарифмирования в группе точек эл- статочной глубиной»4. В качестве Dual EC, тем более, что в стандартах
липтической кривой. Тогда же алго- альтернативы предлагался американ- и NIST, и ISO есть альтернативы.
ритм Dual EC появился и в проекте ский стандарт ГПСЧ как «более тща- Другой вариант избежать воз-
стандарта ANSI X9.82 [3]2. тельно проработанный»5. В итоге можной закладки в Dual EC – это
Вскоре были опубликованы ис- США, по сути, навязали ISO свою выработка собственных точек P и Q
следования, доказывающие, что вы- версию стандарта, включающую Dual и запуск генератора с этими новыми
рабатываемые Dual EC последова- EC, которая и была принята [7]. значениями. Формально, NIST раз-
тельности чисел статистически от- Параллельно с процессом про- решил использование сгенериро-
личимы от истинно случайных [4, 5]. движения Dual EC шел процесс его ванных пользователем P и Q, но на
Уже одного этого обычно достаточ- критики со стороны независимых практике оказалось, что в этом случае
но, чтобы генератор псевдослучай- экспертов. В августе 2007 года на кон- невозможно провести сертифика-
ных чисел был признан «некаче- ференции CRYPTO-2007 сотрудни- цию продукта на соответствие FIPS-
ственным» и решительно отвергнут, ки Microsoft Дэн Шумов и Нильс 140-2 [11].
тем более в качестве претендента на Фергюсон продемонстрировали воз- После разоблачений Эдварда Сно-
криптографический стандарт. Но не можность существования лазейки удена у криптографического сообще-
в этот разѕ в Dual EC [8]. В этом алгоритме при ства не осталось сомнений, что ис-
Комитет по стандартизации про- генерации случайных чисел исполь- тория Dual EC была частью масштаб-
игнорировал работы, критикующие зуются две точки эллиптической ных программ BULLRUN и SIGINT7
Dual EC, сославшись на формальное кривой: P и Q. С помощью точки P Агентства национальной безопасно-
превышение сроков их подачи. При задается внутреннее состояние гене- сти США (АНБ) по ослаблению крип-
этом некоторые другие, менее суще- ратора, а Q применяется для вычис- тографических стандартов и встраи-
ственные замечания, поданные поз- ления псевдослучайных чисел. Если ванию лазеек в коммерческие про-
же срока, оказались все-таки учте- известна связь между точками P и Q дукты [12]. Годовой бюджет АНБ на
ны. В результате, в пакете с другими (то есть такое число d, что Q = dP), подобные мероприятия в ту пору
генераторами псевдослучайных чи- то по нескольким известным значе- составлял порядка 250 млн долл.
сел Dual EC был принят NIST в ка- ниям выхода можно вычислить те- В сентябре 2013 год NIST выпу-
честве стандарта генератора псевдо- кущее внутреннее состояние генера- стил рекомендации по отказу от ис-
случайных чисел (ГПСЧ) в июне тора, а значит, предсказать все после- пользования Dual EC [13], но при
2006 года [6]. дующие генерируемые им числа6. этом алгоритм все еще оставался
Одновременно с этим алгоритм В стандарте точки P и Q заданы. частью стандарта, и некоторые крип-
Dual EC стал частью международного Поскольку задача дискретного лога- топродукты продолжали его исполь-
стандарта ISO/IEC 18031:2005. И здесь рифмирования является вычисли- зовать. В декабре 2013 года в доку-
не обошлось без давления со стороны тельно трудной, то найти такое d, ментах, обнародованных Сноуденом,
властей США3. Дело в том, что изна- что Q = dP), на данный момент не- была обнаружена информация, что
чальная версия стандарта ISO, за ко- возможно. Но дело в том, что эти компания RSA Security получила от
1 NIST вместе с Американским национальным институтом стандартов (American National Standards Institute, ANSI) участвует в раз-
работке стандартов и спецификаций к программным решениям как используемым в государственном секторе США, так и имеющим
коммерческое применение.
2 ANSI – организация, разрабатывающая торговые и коммуникационные стандарты. ANSI является официальным представителем
США в двух основных международных организациях по стандартизации: Международной организации по стандартизации (ISO)
и Международной электротехнической комиссии (IEC).
3 ANSI участвует почти во всей технической программе ISO и IEC, управляя рядом ключевых комитетов и подгрупп. Во многих случаях
стандарты США передаются в ISO и IEC через ANSI, где они полностью или частично принимаются в качестве международных
4 «We feel that this document is lacking sufficient depth in many areas and simply is not developed enough to be an ISO standard…» [10].
5 «We do feel that ANSI X9.82 Random Bit Generation standardization work is much further developed and should be used as the basis for this
ISO standard» [10].
6 Детально принцип работы генератора DUAL_EC_DRBG и механизм лазейки будут описаны в разделе 4.
7 SIGINT – радиоэлектронная разведка (signals intelligence), включает перехват каналов связи. BULLRUN – секретная программа по
дешифрованию онлайн-коммуникаций и данных, которая осуществляется АНБ.
8 «Their eyes open wide when I talk about how hard it is to really get the information they assume they just get to attack this thing… I’ve challenged
any of them to actually generate their own parameters and show me that in real life they can recover that. No one has done it yet» [18].
4. Алгоритм DUAL_EC_DRBG
Перейдем к описанию непосред-
ственно алгоритма Dual EC. Как сле-
дует из его названия (EC – Elliptic
Curve), действие перенесено в группу
точек эллиптической кривой [20], Рис. 2. Алгоритм Dual EC [6]
где в силу аддитивной записи груп-
повой операции, степень элемента P не больше 240 для кривой P-256, 368 нератор ранее инициализирован (s –
группы превращается в его кратное для P-384 и 504 для P-521. То есть от внутреннее состояние), на вход по-
n · P или короче – nP, а задача дис- x-координаты точки siQ берутся млад- дана строка additional_input (если она
кретного логарифмирования по ос- шие outlen бит («отбрасываются», как не задана, то считаем additional_in-
нованию P принимает такой вид: для минимум, два старших байта). put = 0).
данного Q найти такое n, что nP = Q. Презентация генератора [2] об- Обозначим за TRUNC_R(a, len) –
Пусть задана эллиптическая кри- основывала необходимость усечения правые (младшие) len бит строки a,
вая в форме Вейерштрасса: тем, что иначе генератор становится а за TRUNC_L(a, len) – левые (стар-
предсказуемым в некоторых ситуа- шие) len бит строки a. Тогда алгоритм
y 2 = x3 + ax + b modp,
циях. Дело в том, что количество то- работает следующим образом:
где p > 3 – простое число; чек эллиптической кривой прибли- 1) temp = Null;
точка P = (Px, Py) – порождаю- зительно равно размерности поля: 2) s = s Å additional_input;
щий элемент циклической подгруп- по теореме Хассе, [20] порядок m абе- 3) s = (x(sP));
пы группы точек эллиптической левой группы точек эллиптической 4) r = (x(sQ));
кривой; кривой удовлетворяет неравенству 5) temp = temp||TRUNC_R(r, outlen);
r – порядок этой подгруппы; 6) Если len(temp) < requested_num-
p + 1 – 2p– m p + 1 + 2p.
–
Q = (Qx, Qy) – некоторая ненуле- ber_of_bits, то перейти к 3;
вая точка той же подгруппы, от- Из уравнения Вейерштрасса лег- 7) returned_bits = TRUNC_L(temp,
личная от P. ко понять, что если точка (x, y) ле- requested_number_of_bits).
В приложении А.1 стандарта NIST жит на эллиптической кривой, то В данном описании мы опустили
версии 2006 года [6] были опреде- и точка (x, –y) – тоже. Таким обра- некоторые шаги, связанные с пере-
лены фиксированные значения па- зом, каждой x-координате соответ- инициализацией генератора, провер-
раметров p, r, a, b, Px, Py, Qx, Qy для ствуют две точки, а значит, количе- кой корректности всех длин данных,
кривых P-256, P-384, P-521. ство различных x-координат можно дополнительной инициализацией,
Стойкость генератора базируется оценить как: связанной с additional_input. Заметим,
на сложности решения задачи дис- – кстати, что при выработке достаточ-
m/2 (p + 1)/2 + p,
кретного логарифмирования в груп- но длинной битовой строки additio-
пе точек эллиптической кривой, то откуда следует, что количество значе- nal_input используется только при
есть на нахождении такого числа d, ний x, не являющихся x-координа- получении первого блока данных.
что Q = dP. тами, оценивается как: К этому аспекту мы еще вернемся,
Общая схема работы генератора – когда будем рассматривать структуру
p – m/2 (p – 1)/2 – p.
Dual EC показана на рис. 2. лазейки в данном алгоритме.
Значения s и r задают, соответ- Мы видим, что почти половина
ственно, внутреннее состояние гене- значений x не являются координа- Модифицированная версия
ратора и вырабатываемые псевдо- тами точек эллиптической кривой, 2012 года
случайные биты. В упрощенном ва- то есть никогда не будут выработа- В обновленной версии стандарта
рианте, если дополнительная строка ны генератором без усечения, а сле- NIST 2012 года Dual EC был немного
additional_input не используется, то довательно, такой генератор выра- модифицирован [21]. В конец алго-
si = (x(si – 1P)), (1) батывает не всевозможные битовые ритма добавили еще один шаг:
строки, а только какое-то их под-
ri = (x(siQ)), (2) s = (x (sP)),
множество. По утверждению авторов
где x(•) – выбор x-координаты точки алгоритма [2], отсечение 13 старших то есть было сделано дополнитель-
эллиптической кривой, а (•) – пред- (левых) битов позволяет избавиться ное обновление внутреннего состоя-
ставление элемента поля в виде би- от этого недостатка, поскольку «ва- ния. В комментариях необходи-
товой строки (в формате «big endi- лидные» и «невалидные» значения x мость данного изменения объяснена
an» – старшие биты записываются распределены достаточно хаотично «обеспечением стойкости к раскрут-
первыми). (к сожалению, точного объяснения, ке генератора в обратную сторону».
Блок ExtractBits извлекает из при- откуда взялось число «13», нигде не Однако вероятнее выглядит версия,
шедшей на вход битовой строки пра- приводилось). что данное исправление делает ла-
вые outlen бит. При этом значение Итак, пусть необходимо вырабо- зейку в алгоритме более универсаль-
outlen должно делиться на 8 и быть тать requested_number_of_bits бит, ге- ной (об этом – чуть позже).
9 Эфемеральными (или разовыми) ключами протокола Диффи – Хеллмана называют случайные числа, участвующие в вычислениях,
производимых в рамках этого протокола. Открытыми эфемеральными ключами называют информацию, которой обмениваются
участники протокола по открытому каналу.