Эдвард Сноуден продолжает хранить молчание. Собственно говоря, после раздачи большей части вынесенных из АНБ материалов ему и не остаётся ничего, кроме как наслаждаться российскими просторами да принимать заслуженные поздравления. На днях, к примеру, его номинировали на учреждённую Европарламентом премию «За свободу мысли» имени Андрея Сахарова — весьма престижную и значительно менее политизированную награду в сравнении с «Нобелевкой». Впрочем, присутствовать на церемонии награждения лично ему всё равно не удастся, ибо, без всяких сомнений, власти того же самого ЕС его американцам и сдадут.
Но вызванное Эдвардом кипение умов продолжается, натурально превращаясь в самоподдерживающуюся реакцию. Неделей ранее в очередной порции интересностей, извлечённой журналистами из сноуденовского архива, проскользнуло упоминание класса криптоалгоритмов, которого вроде бы стоит избегать из-за опасений, что АНБ прямо повлияло на его разработку — естественно, ради ослабления. Для популярной прессы тема оказалась слишком сложна, но на айтишных форумах многих зацепила — и за прошедшие семь дней совместными усилиями десятков энтузиастов были получены весьма интересные результаты, которыми я и хочу здесь поделиться. Как обычно, не претендуя на звание эксперта по криптографии, я прошу знающих читателей поправить, если что-то в моём рассказе окажется некорректным или покажется сомнительным.
Формальным началом дискуссии стало подозрение, павшее на популярный сервис анонимизации TOR. А точнее, на используемые в нём криптографические схемы. Дело в том, что программное обеспечение TOR, по крайней мере до версии 2.4, защищает передаваемую информацию с помощью связки классических алгоритмов RSA + DH, причём длина ключей составляет 1024 бит. Так вот, хотя прямых доказательств нет, авторитетные эксперты считают разумным предполагать, что АНБ обладает достаточной вычислительной мощью для взлома такой защиты. Таким образом, незащищёнными оказываются (грубая оценка) три из четырёх пользователей TOR. Что делать? Обновиться до версии 2.4.x, где длина ключей увеличена, а кроме того, в дополнение к «классике», применена сравнительно новая так называемая эллиптическая криптография. Оно же, эллиптическое крипто (ЭК), используется, в частности, и в Bitcoin.
Упомянутые выше «классические» криптоалгоритмы были разработаны в 70-х годах и на сегодня остаются в числе самых популярных в компьютерном мире. Главная их проблема в том, что с ростом вычислительных мощностей, доступных атакующим, требуется и увеличение длины ключа, а процедура шифрования непростая, энергозатратная. Эллиптическое крипто — детище 80-х, основанное на математике эллиптических кривых, откуда и название, — в общем обладает более высокой стойкостью при той же длине ключа, но, что самое важное, в сравнении с «классикой» устойчивость к взлому с ростом длины ключа нарастает экспоненциально быстрее: так, 1024-битный ключ RSA/DH примерно соответствует 160-битному ЭК-ключу, но уже 3072 бит ключа RSA эквивалентны всего лишь 256 битам ЭК. Иначе говоря, если сегодня преимущества эллиптического крипто ещё неочевидны, то в ближайшем будущем они проявятся ярко: компьютерный мир, который подталкивается, с одной стороны, растущей вычислительной мощью, находящейся в распоряжении спецслужб и злоумышленников, а с другой — требованиями экономно, но быстро и прозрачно шифровать данные, будет вынужден перейти на ЭК.
Правовые аспекты ЭК — тема отдельная и непростая: часть фундаментальных наработок здесь защищена действующими патентами (принадлежащими компаниям в Канаде и США), часть патентов приобретена или лицензируется АНБ и т. д. Формально авторы отдельно взятого программного продукта могут реализовать ЭК самостоятельно без нарушения чьи-либо авторских прав. Фактически, по крайней мере на Западе, принята следующая схема: частные компании реализуют в своих программах работу с кривыми, рекомендованными Национальным институтом стандартов и технологий США (NIST). Оглядка на рекомендации NIST даёт два преимущества. Во-первых, это открывает продукту дорогу в госучреждения. Во-вторых, не все эллиптические кривые одинаковы: некоторые, к примеру, легче обсчитывать, и NIST как раз отобрал полтора десятка наиболее выгодных.
Теоретически процесс стандартизации в NIST прозрачный, публичный. Однако законы США обязывают Институт пользоваться помощью АНБ — и временами, как выяснилось благодаря Эдварду Сноудену, эта «помощь» перерастает в диктат. Благодаря Эдварду мы знаем теперь, что именно так, под нажимом АНБ, NIST стандартизовал генератор псевдослучайных чисел Dual_EC_DRBG (тоже основанный на ЭК) — один из рекомендованных для использования в криптографических продуктах и реализованный в такой форме десятками вендоров. Документы Сноудена прямо указывают на то, что неслучайность, присущая Dual_EC_DRBG и давно уже подмеченная независимыми экспертами, была введена АНБ ради ослабления генератора и, соответственно, последующего более лёгкого взлома шифров. На днях, поупиравшись для виду («Мы не ослабляем стандарты намеренно!»), NIST официально посоветовал не использовать Dual_EC_DRBG и возобновил процедуру его публичного рассмотрения.
Что бизнес может противопоставить узаконенному шантажу со стороны спецслужб? Один из последних интересных вариантов — остроумный метод, известный под красивым англоязычным названием dead man’s switch, что примерно переводится на русский как «аварийная кнопка». Речь об устройстве, которое начинает работу, если его оператор вдруг выбывает из строя. Именно такое, кстати, построил якобы сам Эдвард на случай своего физического устранения: если с ним что-то произойдёт, построенная им система опубликует некие особо сенсационные данные. Но в нашем случае всё проще: на видном месте (скажем, лицевая страница официального сайта) размещается регулярно обновляемое предупреждение. Что-нибудь вроде «Мы не стучим на своих клиентов правительству. 16 сентября 2013 года». Фишка в том, что, как только вас принудят к сотрудничеству, вы перестанете его обновлять, потому что иначе это будет обманом. И даже если в целях нацбезопасности вас вынудят врать, в перспективе всё равно выигрываете: впоследствии будет легче смыть с себя позор, ведь вас заставили!
Dual_EC_DRBG используется сравнительно редко, однако скандал вокруг него дал повод усомниться вообще в стандартах эллиптического крипто, опубликованных NIST. Сыр-бор разгорелся вокруг уже упомянутых выше рекомендованных кривых: что если Институт, действуя по указке АНБ, выбрал особенные кривые — скажем, такие, основанные на которых шифры будут менее стойкими? Математического или документального доказательства этому нет. Но вот что настораживает: в ходе устроенного энтузиастами расследования выяснилось, что начальные параметры (константы) для рекомендованных кривых должны были быть сгенерированы случайным, но проверяемым образом — а вместо этого их словно бы взяли наугад, так что объяснить сейчас, как они были получены, никто не в состоянии. Логично предположить, что константы были подобраны, чтобы ослабить стойкость шифров. И каждый криптографический продукт, использующий ЭК-рекомендации NIST, оказывается беззащитным перед АНБ.
Дискуссия продолжается, и в следующие недели и месяцы мы наверняка услышим новые аргументы как за, так и против этого обвинения. Но в данный момент каждому пользователю и разработчику стоит задаться вопросом: используют ли важные лично для вас программы эллиптические кривые, рекомендованные NIST?
К счастью, для двух крупнейших свободных проектов Сети — Bitcoin и TOR — ответы на него будут отрицательными. Спасибо Сатоши Накамото: эллиптическое крипто, положенное в основу Bitcoin, опирается на кривую (sec256k1), отсутствующую в рекомендациях NIST. Равно и TOR основан на кривой, к которой NIST не имел отношения.
Но вы понимаете, что вопрос этот нужно задать для каждой программы, использующей эллиптическую криптографию. И ответ не всегда будет таким, на какой вы, возможно, надеетесь…