Многобитовость

Сентябрьское открытие в части того, что оказывается, не все сертифицированные криптоалгоритмы полезны, проявилось только сейчас, попросили написать мнение.

Вот оригинал:

http://www.wired.com/threatlevel/2013/09/rsa-advisory-nsa-algorithm/

Вот хабр:

http://habrahabr.ru/post/200686/

Пишу мнение.

Парни, не совсем понятно паническое движение вокруг этого.

Да, сертификация криптоалгоритмов преследует цель, чтобы алгоритм мешал соседу Васе читать соседа Петю, но при этом оставался анализируем теми, кто сертифицирует. В этом суть, так было всегда и так есть в любой стране. С одной стороны — сертифицировать откровенно слабый алгоритм не получится. С другой — излишне стойкий — тоже.

Вспомните Windows 2000. В базовом варианте из алгоритмов с секретным ключом был DES, а 128ми битовое шифрование — только для США и Канады. Потом, к SP2, выпустили HEP — High Encryption Pack, который делал 128 бит (в варианте RC4, гы-гы) доступным для всех. Ура! Ура! Было 56 бит, стало 128 — это же гораздо круче!

Неужели непонятно, что любое такое публичное движение связано лишь с тем, что теперь реализация криптоалгоритма ослаблена до такой степени, что он не опаснее предыдущего варианта? Дети сравнивают в лоб биты и радуются — ух как много.

А биты ничего не решают. Любая задача криптографической защиты информации — комплексная. В ней и генерация ключевого материала, и генерация ключей, и смена ключей, и проверка целостности, и многое другое. И на каждой фазе — свои дополнительные внутренние вопросы. Возьмите простую вроде штуку — хэш-функцию. Она сама по себе вообще практически нигде не используется — зато есть множество HMAC-функций, PRF, KDF-функций, которые на базе этой хэш-функции выполняют уже более конкретные задачи. В реализации каждой из них каждый шаг — продуман и проработан, чтобы быть и надёжным, и быстрым. Стойкость самой хэш-функции — одно, стойкость её конкретной реализации — другое, стойкость использующей её схемы типа того же HMAC — третье, а стойкость всего этого в сумме — четвёртое.

Но чтобы в этом разобраться — надо думать. Нужен хороший мат.аппарат, а это ведь долго и неинтересно. Гуглануть по-бырому — оно гораздо прикольнее. Поэтому бросание обглоданной кости — «у вас был хэш на X бит, а теперь на Y, Y больше X, стало гораздо безопаснее» — оно прокатывает. Потому что криптология — она прекрасна тем, что снаружи — очень просто и прикольно, чуть внутри — совсем, совсем наоборот.

Да никто не будет ломать симметричные блочные алгоритмы в лоб. Поэтому и на общедоступных процессорах реализуют AES-256, поэтому на сетевых картах есть разгрузка ESP.

Никто не будет подбирать в лоб длинные хэши, лобовой подбор SHA-512 невозможен в силу законов физики. Только, если кто забыл, в том же TLS или IPsec для целостности используется только 96 бит. Мелочь, да, но на её фоне как-то задуматься можно о том, почему там именно так. Дебилы же, которые тратят родительские деньги на оплату электричества, перемалывая хэши, уже ушли в историю — линейный криптоанализ большинства современных алгоритмов технически невозможен.

Но магия больших чисел побеждает — вот, уже для сертификатов в некотором ПО дефолтный RSA генерит ключи по 4К — ох, как безопасно. Ведь 4К — это в два раза больше, чем 2К. Генерит на обычном компе за секунды, правда. Наверное, простые числа придумать по 2К бит (это число с около 600 десятичных знаков) — это так просто и весело. Берёшь да придумываешь, очевидно же. То, что явно берётся несколько оснований, перемножаются, и получается почти-простое-число, которое не делится на все простые до 2^16 и проходит критерий Соловея-Штрассена — ну, круто. Только атакующий не будет ломать перебором эти жуткие килобиты — он знает, что в них из 4К случайных — ну бит 70 от силы.

Всё это известно в компьютерном мире два десятка лет, по другому и не было. Когда в ГОСТ 28147-89 был фиксированный перечень Правильных Узлов Замены, и он был у Сбербанка один, а у Газпрома другой — было хорошо понятно, почему именно так. Когда появились эллиптические кривые — точнее, Правильный Перечень Правильных Эллиптических Кривых, из которых можно выбрать — тоже. Что удивляет-то в Правильном Подборе Оснований для DH того же? Так всегда было.

Но тут — прямо-вот открытие. Оказывается, что то, что сертифицированно в 2006 году — оно с такими же закладками, как обычно. Оказывается, этот алгоритм, как обычно, скопипиздили в openssl, и миллион полупрозрачных тайных криптоаналитиков, базируясь на том, что «раз открытое, то всё ОК, ведь все постоянно анализируют код, враг не пройдёт», сидели и ничего не делали, исповедуя единую логику — ведь огромное коммунити, оно же само молниеносно всё найдёт. И щёлкали еблом до 2013 года, а потом — вот те раз! Сноуден раскрыл Тайну! Лампочку Ильича, оказывается, придумал не Ильич, а некий Эдисон! Вот оно что! Пц.

Дорогие ребята, понимайте уровень вашей личной компетентности. Осилили скачку исходников — это не достижение, это ничто. Просрали математику на первых курсах ВУЗа на пефко, линуксовки и торговлю комплектухой на Савёловском — ну, забудьте про криптоанализ. Кушайте что дают, вы можете годы потратить, созерцая исходники криптоалгоритмов (они мелкие обычно, в криптологии любят красивые и компактные решения), и ничего по сути не понять. Факт доступности этих алгоритмов, увы, ничему не равен. Это жутко ломает ключевой миф СПО, но это правда жизни.

Работа любой криптографической системы — даже казалось бы тривиальной и широко распространённой, типа TLS — это результат взаимодействия пачки криптографических примитивов, у каждого из которых — параметры, которые влияют на результат, а у системы — ещё и синергический эффект, который может быть как позитивным, так и негативным. Рассуждения вида «много бит — лучше, чем мало бит» / «открытое — значит безопасное» — это линуксбезопасность, синоним безграмотности.

Не надо так.

Только соответствующий объём знаний — именно знаний, а не теоретической возможности скачать бесплатно без смс — поможет в ситуации, когда необходимо противостоять штукам, подобным вышеописанным. Это, замечу, вполне возможно, но никогда не может выглядеть в качестве нумерованного списка простых советов. Это всё ж не рецепт на форуме для домохозяек.

Будьте реалистами.

Это, конечно, реклама Windows 2000.

Реклама
Многобитовость

Многобитовость: 3 комментария

  1. Ммм, я отстал от жизни или в штатах всё по другому: обычно алгоритмы — стандартизируются (в виде стандарта, в котором даётся формальное описание алгоритма), а реализация в конкретных продуктах сертифицируется (выдаётся сертификат, что реализация соответствует стандарту и может ещё каким особым требованиям для данного класса продуктов)? Поэтому писать «сертифицированный криптоалгоритм» на хабре может и можно, но не здесь. )))
    Покажите мне сертификат на криптоалгоритм.

  2. Паниковать скорее надо от того, что с обнародованием этой информации уязвимость окажется в руках других заинтересованных лиц(хакера васи и кардера пети), что приведет к весьма неблагоприятным последствиям.

    1. Ни фига подобного.
      Опубликованы две точки на кривой (грубо говоря два больших числа). Одна используется для того, чтобы продвигать внутреннее состояние генератора, вторая — чтобы «хешировать» это состояние перед выводом. Вполне разумно предположить, что мы не хотим, чтобы по единственному сгенерированному нами числу — открытому ключу или подобной публичной информации — атакующий смог угадать любые последующие ключи (и открытые и закрытые) которые мы будем генерировать используя данный PRNG. Именно поэтому внутреннее состояние генератора нужно «хешировать».

      Если точки полностью независимые, то все прекрасно и никакой возможности восстановить за разумное время внутреннее состояние генератора по его выходу на данный момент не известно.

      Если же точки «правильные» — то имея «секрет», связывающий эти точки, задача становится тривиальной. Примерно как в криптографии с открытым ключом.

      Так что никакой «уязвимости» нет — есть закладка (бэкдор), представляющий собой этакий «закрытый ключ» к опубликованному набору параметров.

Обсуждение закрыто.