Алексей Лукацкий - менеджер по развитию бизнеса Cisco Systems
Буквально недавно мне довелось выступать на конкурсе «Львы и гладиаторы» и рассказывать о сервисе облачной Web-безопасности Cisco ScanSafe. Помимо меня на конкурсе выступали представители еще пяти компаний, каждый из которых представлял решение своей компании. Одним из таких решений была отечественная точка беспроводного доступа на базе сертифицированной в ФСБ криптографии. И одним из доводов в пользу выбора данного продукта (а цель конкурса была убедить сидяющих в жюри руководителей служб ИБ крупных отечественных компаний купить представляемое решение) было использование криптографических ключей длиной 256 бит.
И вот тогда я и решил развенчать общепринятый миф о том, что чем длиннее криптографический ключ, тем надежнее шифр. В теории это действительно так. Правильно выбранные ключи шифрования с помощью датчиков случайных (или псевдослучайных) чисел действительно надежны и требуют любой атаки, лежащей за пределами возможностей современных технологий (даже с учетом закона Мура). Для того же ГОСТ 28147-89 или AES срок жизни защищенной с их помощью информации составляет сотни лет при современном уровне развития технологий. Но на практике не все так просто. Обратимся к понятию «энтропия», которое в области криптографии означает неопределенность. Например, полу работников любой компании соответствует один бит энтропии, т.к. на любом предприятии работают как мужчины так и женщины. Т.к. вариантов всего 2, то они полностью описываются одним битом, принимающем значение 1 или 0. В давние времена полу советского почтового отделения соответствует нулевая неопределенность – там работали одни женщины. Иными словами, чем больше неопределенность, тем больше энтропия.
В области криптографии мы думаем, что чем длиннее ключ, тем сложнее его угадать или подобрать. Т.е. у 256-тибитного ключа (а именно такова длина ключа в российском стандарте ГОСТ 28147-89 или международном стандарте де-факто AES) должны быть те же 256 бит энтропии, т.к. все эти биты в идеале должны быть случайны. А число всех возможных значений ключей будет равно 2 в 256-й степени. Это колоссальное число, которое сложно себе представить. В качестве аналогии можно указать, что число элементарных частиц во Вселенной – 2 в 222-й степени. Значит ли это, что использование 256-тибитного ключа защищает нас от проникновения в чужые тайны? Как говорится в отечественной телерекламе «нет, сынок, это фантастика», а точнее теория. На практике все гораздо прозаичнее.
Во-первых, очень важно то, как и кем разработан криптографический алгоритм. Насколько он грамотен с точки зрения математики и не имеет ли он изъянов. Если мы вспомним алгоритм, которые применяется в системах сотовой связи GSM, то ныне действующий алгоритм A5/1 использует криптографические ключи длиной 64 бита. Но из-за множества недоработок и дефектов его реальная стойкость равна алгоритму, использующему 40-битные ключи шифрования. Именно эти конструктивные особенности используется для взлома данного алгоритмы практически в режиме реального времени. Всего триллион комбинаций, перебираемые на обычной персоналке за несколько минут. Если бы A5/1 был разработан корректно, то его стойкость возросла бы в миллионы раз.
Во-вторых, вспомните уже рассмотренный ранее миф о том, что криптография – это панацея. Криптографический ключ почти никогда не генерится автоматически, без участия человека. А человек – очень предсказуемое существо; далекое от вычислительной машины. Вы когда-нибудь сами создавали случайный криптографический ключ для шифрования своих тайн? Скорее всего нет. Вы используете легко запоминаемый пароль, на основе которого и строится ключ, применяемый той или иной системой для шифрования. А легко запоминаемый пароль также легко угадыватся. Ведь он, как правило, представляет собой реальное слово или комбинацию слогов нескольких слов. Но энтропия текстового фрагмента, состоящего из случайного набора символов или представляющего слово из какого-либо языка, будут иметь совершенно разные энтропии (при одинаковой длине фрагмента). А все потому, что не все символы или комбинации символов вы используете при создании пароля. При теоретической энтропии английского текста 8 бит на символ в кодировке ASCII, реальная энтропия будет равна 1.3. В итоге, 128-тибитному надежному ключу шифрования соответствует 98-символьный пароль. Готовы ли мы вместо пароля из 8-12 символов запоминать целые предложения? Врядли.
Теперь нам становится понятным, что даже если используемая нами система шифрования использует ГОСТ 28147, AES или TripleDES с длинными ключами, то это не значит, что система надежна. Если сами ключи создаются на базе введенной вами информации, то стойкость системы равна стойкости выбранного пароля. И если выбранный пароль не превысит 6-ти символов, то итоговая энтропия будет равна 32-тиразрядному ключу шифрования (и это несмотря на то, что сам криптопродукт по-прежнему поддерживает ключи длиной 256 бит). И в этом и есть самое слабое звено, о котором почти никогда не говорят разработчики. Да даже если они и сказали бы об этом, то ждать, что пользователи начнут изучать основы теории информации и выбирать правильные пароли не приходится.
Резюмируя, можно отметить, что если короткий криптографический ключ однозначно говорит о низкой надежности шифрования, то использование длинного ключа вовсе не означает стойкой защиты ваших данных. Длинный ключ означает только одно – лобовая атака становится неоправданной с точки зрения временных затрат на нее. Но ведь лобовая атака неединственная, используемая криптоаналитиками для проникновения в чужые тайны.
Можно ли решить данную проблему? Ну, во-первых, никогда не ориентируйтесь на «самопальные» системы шифрования и держащиеся в секрете алгоритмы шифрования. Это в 99% случаев означает только одно – система никем не анализировалась и содержит большое количество уязвимостей – она ненадежна. Во-вторых, можно попробовать исключить человека из процесса генерации паролей, возложив эту задачу на какой-либо инструмент создания случайных или псевдослучайных ключевых последовательностей. Но это тоже непростая задача и мы должны будем убедиться, что созданные ключи/пароли действительно случайны. Известны примеры, когда даже именитые системы автоматической генерации криптографических ключей содержали в себе изъяны, снижающие итоговую криптостойкость в миллиарды раз.
Но допустим мы решили проблему со случайной генерацией ключей и на выходе имеем надежные и длинные криптографические ключи. Решив задачу технически, мы столкнемся с проблемой психологической – случайный ключ запомнить будет невозможно. Человеческий мозг не в состоянии запоминать длинные случайные последовательности символов. Но это уже другая проблема, решение которой мы уже рассматривали ранее, в мифе о паролях.
