Теоретически процесс стандартизации в NIST прозрачный, публичный. Однако законы США обязывают Институт пользоваться помощью АНБ — и временами, как выяснилось благодаря Эдварду Сноудену, эта «помощь» перерастает в диктат. Благодаря Эдварду мы знаем теперь, что именно так, под нажимом АНБ, NIST стандартизовал генератор псевдослучайных чисел Dual_EC_DRBG (тоже основанный на ЭК) — один из рекомендованных для использования в криптографических продуктах и реализованный в такой форме десятками вендоров. Документы Сноудена прямо указывают на то, что неслучайность, присущая Dual_EC_DRBG и давно уже подмеченная независимыми экспертами, была введена АНБ ради ослабления генератора и, соответственно, последующего более лёгкого взлома шифров. На днях, поупиравшись для виду («Мы не ослабляем стандарты намеренно!»), NIST официально посоветовал не использовать Dual_EC_DRBG и возобновил процедуру его публичного рассмотрения.
Dual_EC_DRBG используется сравнительно редко, однако скандал вокруг него дал повод усомниться вообще в стандартах эллиптического крипто, опубликованных NIST. Сыр-бор разгорелся вокруг уже упомянутых выше рекомендованных кривых: что если Институт, действуя по указке АНБ, выбрал особенные кривые — скажем, такие, основанные на которых шифры будут менее стойкими? Математического или документального доказательства этому нет. Но вот что настораживает: в ходе устроенного энтузиастами расследования выяснилось, что начальные параметры (константы) для рекомендованных кривых должны были быть сгенерированы случайным, но проверяемым образом — а вместо этого их словно бы взяли наугад, так что объяснить сейчас, как они были получены, никто не в состоянии. Логично предположить, что константы были подобраны, чтобы ослабить стойкость шифров. И каждый криптографический продукт, использующий ЭК-рекомендации NIST, оказывается беззащитным перед АНБ.
Дискуссия продолжается, и в следующие недели и месяцы мы наверняка услышим новые аргументы как за, так и против этого обвинения. Но в данный момент каждому пользователю и разработчику стоит задаться вопросом: используют ли важные лично для вас программы эллиптические кривые, рекомендованные NIST?
К счастью, для двух крупнейших свободных проектов Сети — Bitcoin и TOR — ответы на него будут отрицательными. Спасибо Сатоши Накамото: эллиптическое крипто, положенное в основу Bitcoin, опирается на кривую (sec256k1), отсутствующую в рекомендациях NIST. Равно и TOR основан на кривой, к которой NIST не имел отношения.
Но вы понимаете, что вопрос этот нужно задать для каждой программы, использующей эллиптическую криптографию. И ответ не всегда будет таким, на какой вы, возможно, надеетесь…