Борис Сырков - Сноуден: самый опасный человек в мире
Намеренная «лазейка» или простая оплошность?
Случайные числа играют очень важную роль в криптографии. Если взломать датчик псевдослучайных чисел, то в большинстве случаев удается целиком взломать и криптосистему, в которой этот датчик используется. Разработка качественного датчика случайных чисел – дело весьма непростое. Поэтому они являются предметом неослабного и пристального внимания исследователей-криптографов на протяжении уже многих лет.
Неудивительно, что именно датчику псевдослучайных чисел был посвящен доклад, который в августе 2007 года молодой программист из «Майкрософт» сделал на конференции по криптографии в американском городе Санта-Барбара. Это было вечернее секционное заседание, отведенное для докладов, которым не нашлось места на пленарных заседаниях. Чтобы хоть как-то отвлечь участников конференции от вина и пива, которым они более охотно отдавали свое предпочтение по вечерам, названия секционных докладов, как правило, носили подчеркнуто провокационный характер. Что-то типа «Попадут ли Алиса и Боб в тюрьму?», «Как угонять автомобили, или насколько реальна атака на Килок?[9]» и «Уникальное секционное интервью с Памелой Андерсон». Даниэль Шумоф и его коллега из «Майкрософт» Нильс Фергюсон озаглавили свое выступление «О возможном наличии «лазейки» в стандарте шифрования «НИСТ СП800-90»». Замечательная приманка для криптогиков!
Доклад сопровождался показом 9 слайдов. Из него следовало, что алгоритм генерации случайных чисел Dual_ EC_DRBG, получивший официальное одобрение со стороны американского правительства в составе стандарта шифрования «НИСТ СП800-90», имел вопиющую слабость, которая позволяла его взламывать. Более того, эта слабость обладала признаками «лазейки», которую кто-то специально встроил в алгоритм шифрования, чтобы иметь возможность читать сообщения, засекреченные с его помощью. Однако тогда реакция на доклад Шумофа и Фергюсона была довольно спокойной. Большинство подумало про себя, что, скорее всего, это была простая оплошность разработчиков.
Все изменилось в октябре 2013 года после очередной сенсационной публикации в американской газете «Нью-Йорк тайме». В этой публикации говорилось: «Секретные служебные документы АНБ, по-видимому, подтверждают, что фатальная слабость в стандарте шифрования, которую в 2007 году обнаружили два программиста из «Майкрософт», была встроена туда агентством. Оно разработало этот стандарт и энергично добивалось его одобрения, неофициально именуя образцовым».
Разоблачения «Нью-Йорк тайме» породили бурю возмущения запутанным процессом принятия американских криптографических стандартов. Национальный институт стандартов США (НИСТ), который одобрил алгоритм Dual_ EC_DRBG и стандарт «НИСТ СП800-90», был вынужден заново вынести их на публичное обсуждение. Корпорация «РСА», являвшаяся лидером американского рынка компьютерной безопасности, во всеуслышание отказалась от использования алгоритма Dual_EC_DRBG, признав, что именно этот алгоритм несколько лет по умолчанию использовался в ее комплекте криптографических программ.
Считается, что правильный выбор криптографического алгоритма по умолчанию является необходимым условием обеспечения безопасности коммуникаций. Наличие изъяна в алгоритме по умолчанию означает, что криптосистема в целом тоже ненадежна. Ведь по некоторым данным, если производитель явно устанавливал в своем продукте значение по умолчанию, то более 90 % пользователей оставляли его неизменным. А если устанавливал неявно, то, как бы ни призывали пользователей сменить неявное значение по умолчанию средства массовой информации, инструкции по эксплуатации и встроенные в продукт справочные подсистемы, то это делали не более 60 % пользователей.
С другой стороны, надо признать, что правильный выбор криптографического алгоритма, используемого по умолчанию в программном продукте, вряд ли можно признать достаточно надежным способом защиты от «лазеек», если в списке опций присутствует алгоритм с «лазейкой».
Ведь злоумышленник, подобный АНБ, может проникнуть в компьютерную систему и переназначить используемым по умолчанию именно алгоритм с «лазейкой», сделав тем самым совершенно бесполезным шифрование. Это значительно более эффективный шпионский метод, чем применение клавиатурного шпиона или другого подобного ему трояна. В последнем случае в компьютерной системе «прописывается» немалая по своему размеру программа. При ее обнаружении трудно будет сделать вид, что произошла непреднамеренная ошибка. И совсем другое дело, например, если поменять один битик в реестре операционной системы «Виндоуз», чтобы активировать «лазейку», заранее встроенную в криптографический алгоритм. Здесь заметно присутствие тайного умысла более утонченного, чем довольно прямолинейное заражение компьютера трояном.
Эксперты не были единодушны в своем мнении относительно стандарта «НИСТ СП800-90». Некоторые обратили внимание на тот факт, что обычно слабости в криптографических алгоритмах возникают из-за недостаточной грамотности разработчиков или их нежелания как следует потрудиться. Но в данном случае на создание стандарта «НИСТ СП800-90» было потрачено много усилий, и почему-то вдруг оказалось, что разработанный алгоритм является недостаточно стойким! Странно.
В то же время если признать, что выявленная слабость в стандарте «НИСТ СП800-90» на самом деле являлась «лазейкой», то ее создатели проявили предусмотрительность. Глядя на алгоритм, трудно было со всей уверенностью сказать, действительно ли это «лазейка» или просто результат недоработки его авторов. Что и требовалось от качественной «лазейки», если бы ее вдруг обнаружили бы. Тогда всю вину за нее можно было бы свалить на разработчиков.
Обвинения в адрес АНБ по поводу встраивания «лазеек» в криптографические стандарты звучали и в прошлом. В некотором смысле дебаты вокруг стандарта «НИСТ СП800-90» являлись отзвуком споров, которые велись в отношении американского стандарта шифрования данных «DES» в 1970-е годы. Тогда АНБ подозревалось в намеренном ослаблении «DES» путем манипулирования константами. Однако в 1994 году выяснилось, что АНБ выбирало константы таким образом, чтобы защитить «DES» от взлома с помощью метода, который в 1970-е годы был известен только в АНБ. Подозрения оказались безосновательными.
В 1995 году американская газета «Балтимор сан» опубликовала материал, из которого следовало, что с подачи АНБ «лазейка» была встроена в шифраторы швейцарской фирмы «Крипто АГ». А в 1999 году обнаружилось, что криптографический ключ, который использовался в операционной системе «Виндоуз НТ» корпорации «Майкрософт», содержал в своем названии аббревиатуру «АНБ». Этот факт породил спекуляции о том, что «Майкрософт» тайно предоставила АНБ возможность готовить собственные обновления криптоядра «Виндоуз НТ» и придавать им законную силу, подписывая с помощью специального ключа. «Майкрософт» свою вину отрицала, объясняя сей факт простым отражением контролирующей роли АНБ при получении разрешения на экспорт программных продуктов, в которые встраивались средства шифрования.
Все эти подозрения в адрес АНБ оказались еще не забыты в 2006 году, когда Шумоф и Фергюсон занялись анализом алгоритма Dual_EC_DRBG. В стандарт «НИСТ СП800-90», помимо Dual_EC_DRBG, входили еще три алгоритма генерации псевдослучайных чисел, которые предполагалось использовать при шифровании секретной и конфиденциальной информации.
Алгоритм Dual_EC_DRBG основывался на теории эллиптических кривых над конечными полями. По мнению АНБ, за этим алгоритмом было будущее, как за более компактным, быстродействующим и стойким. Поэтому стремление АНБ включить Dual_EC_DRBG в состав стандарта «НИСТ СП800-90» выглядело вполне оправданным.
Однако Шумоф и Фергюсон, в 2006 году начавшие изучать алгоритм Dual_EC_DRBG на предмет его реализации в составе семейства операционных систем семейства «Виндоуз», обратили внимание на своеобразные свойства этого алгоритма. Во-первых, он работал очень медленно – на два-три порядка медленнее, чем три остальных датчика псевдослучайных чисел. А во-вторых, алгоритм Dual_EC_ DRBG не обладал достаточной степенью безопасности. Иными словами, сгенерированные с его помощью числа были недостаточно случайными. Ситуация не была катастрофической, но представлялась весьма странной, учитывая, что стандарт «НИСТ СП800-90» получил официальную поддержку со стороны американского правительства.
А потом Шумоф и Фергюсон выяснили еще кое-что. Дело в том, что стандарт «НИСТ СП800-90» содержал список констант, которые использовались в алгоритме Dual_ EC_DRBG. Откуда они взялись, сказано не было. Но тот, кто рассчитал эти константы для включения в стандарт, мог одновременно рассчитать второй список констант и использовать его, чтобы абсолютно точно предсказывать псевдослучайную последовательность, генерируемую алгоритмом Dual_EC_DRBG. Шумоф и Фергюсон продемонстрировали, как это сделать, зная всего лишь первые 32 байта псевдослучайной последовательности.