Примечание переводчика: в последнее время все большую популярность приобретают криптоалгоритмы, основанные на эллиптических кривых. В мире криптографии не стоит изобретать велосипеды (о чем не раз писали и на нашем любимом хабре), а лучше всего следовать стандартам. Однако, не все стандарты одинаково полезны.
P.S.: перевод не блещет новизной, но, возможно, поможет узнать части аудитории что-то новое.
АНБ часто подозревается в разработке бэкдоров для алгоритмов и систем шифрования. Наиболее серьезные претензии были предъявлены АНБ в ноябре 2007, после выхода официального стандарта NIST для генераторов случайных последовательностей.
Практически все алгоритмы шифрования основаны на использовании случайных чисел для генерации зашифрованных сообщений. Современная криптография использует случайные числа для многих целей, начиная с инициализации ключей шифрования. Поэтому качество генерируемых случайных последовательностей является очень важным. Если злоумышленник может скомпрометировать генератор случайных чисел, использованный при кодировании сообщения (предсказать случайную последовательность), то он сможет и декодировать зашифрованное сообщение.
Разработка генераторов случайных последовательностей является очень сложной задачей. Многие атаки на шифры по сути своей являются атаками на эти самые генераторы. NIST разработал стандарт NIST Special Publication 800-90, описывающий различные техники получения криптостойких случайных последовательностей, рекомендуемых к применению в различных областях деятельности. Многие разработчики программного и аппаратного обеспечения берут данный стандарт за основу при реализации криптоалгоритмов (примечание переводчика: в том числе данный стандарт был освещен на хабре).
Стандарт предусматривает четыре различных техники для «истинно случайных битовых генераторов» (Deterministic Random Bit Generators — DRBG), основанные на различных криптографических примитивах:
- на основе хэш-функций;
- на основе хэш-кода аутентификации сообщений (Hash Message Authentication Code — HMAC);
- на основе блочных шифров;
- на основе эллиптических кривых.
Сомнения в данном стандарте вызвал генератор случайных чисел, основанный на эллиптических кривых – DUAL_EC_DRBG. Первые проблемы в нем были найдены в 2006 году, когда Daniel Brown и Kristian Gjosteen указали на то, что DUAL_EC_DRBG генерирует случайные числа с малым смещением. В 2007 году на конференции CRYPTO Dan Shumow и Niels Ferguson показали уязвимость данного генератора, которую они расценивали как умышленно оставленный бэкдор. Они продемонстрировали, что константы, используемые данным генератором, имеют взаимосвязь с неким секретным набором чисел, в результате чего владелец данного набора может предсказывать выдачу генератора и получить доступ к содержимому сообщений, зашифрованных с его применением.
Причем тут АНБ? АНБ сотрудничает с NIST в качестве национального эксперта в области криптографии. DUAL_EC_DRBG является самым медленным из предложенных способов получения случайных последовательностей. Многих интересовал вопрос, почему этот генератор вообще включен в стандарт. Брюс Шнайер пояснил, что инициатором и главным лоббистом включения данного генератора в стандарт являлось АНБ. Шнайер не стал делать каких-либо заключений, но предположил, что АНБ таким образом хотело получить возможность получать содержимое зашифрованных сообщений: «Я не понимаю почему АНБ так настойчиво предлагало включить в стандарт DUAL_EC_DRBG… Если вам нужен генератор случайных последовательностей, то я не рекомендую использовать Dual_EC_DRBG ни под какими предлогами. Если вы хотите следовать NIST SP 800-90, используйте CTR_DRBG или Hash_DRBG.»
Автор: bugaga0112358