использует цифровой фотоаппарат, направленный на несколько стробоскопов. В других системах применяется турбулентность воздуха в дисководах или момент поступления сетевых пакетов.
Некоторые генераторы случайных чисел отслеживают случайные движения пользователя. Программа может попросить пользователя набрать на клавиатуре большую строку произвольных символов; она может задействовать последовательность символов или даже время между нажатиями клавиш для создания случайных чисел. Другая программа запросто способна потребовать у пользователя туда-сюда подвигать мышью или похрюкать в микрофон.
Некоторые генераторы случайных чисел применяют эту введенную информацию без изменений. В других она служит затравкой (начальным числом) для математических генераторов случайных чисел. Этот прием работает лучше, если системе требуется случайных чисел больше, чем их обеспечивает ввод информации.
Какого бы происхождения ни была случайность, генератор создаст ряд случайных битов. Затем их можно использовать как криптографические ключи и для всего остального, что нужно системе.
Один из простейших критериев сравнения криптографических алгоритмов – длина ключа. Пресса любит обращать на нее внимание, поскольку ее легко считать и сравнивать. Как и в большинстве случаев, когда речь идет о безопасности, реальность более сложна. Короткий ключ плох, но длинный ключ не будет хорошим автоматически. Почему это так, я расскажу в следующей главе, а сейчас лучше разъяснить понятие длины ключа и его важность.
Начнем с самого начала. Криптографический ключ – это секретное число, которое делает криптографический алгоритм уникальным для тех, кто совместно пользуется этим ключом. Если Алиса и Боб договорились об общем ключе, то при помощи алгоритма они могут тайно пообщаться. Если Ева- перехватчица не знает ключа, ей придется исследовать и ломать алгоритм.
Одна очевидная вещь, которую можно сделать, – это перепробовать все возможные ключи. Это так называемая
Все схемы таких взломов «в лоб» линейны: вдвое большее количество ключей потребует вдвое больше компьютерного времени. Но сложность такого взлома зависит от длины ключей экспоненциально: добавим один бит к длине ключа, и взлом «в лоб» станет в два раза сложнее. Добавим два бита – в четыре раза. Десять битов – в тысячу раз сложнее.
Сила атак «в лоб» в том, что они работают против любого алгоритма. Поскольку эта атака не касается внутренней математики алгоритма, ей все равно, что же там внутри. Одни алгоритмы могут быть быстрее других, и поэтому атака «в лоб» проходит быстрее, но длина ключа легко это перевешивает. Достаточно просто сравнить длины ключей различных алгоритмов, чтобы выяснить, какие из них более уязвимы для лобовой атаки.
В 1996 году группа шифровальщиков (включающая и меня) исследовала различные технологии, которые можно использовать для создания дешифрующих машин, действующих по принципу лобовой атаки, и пришла к выводу, что 90-битовый ключ сможет обеспечивать безопасность до 2016 года. Ключ Triple-DES состоит из 112 бит, а наиболее современные алгоритмы имеют по меньшей мере 128-битовые ключи. (Улучшенный стандарт шифрования (AES) правительства США поддерживает длины ключей 128,192 и 256 бит.) Даже машине, работающей в миллиард раз быстрее Deep Crack, потребовался бы миллион лет, чтобы перебрать 2^112 ключей и восстановить открытый текст; еще более, чем в тысячу раз, возрастает время при переходе к 128-битовому ключу. Он будет обеспечивать безопасность в течение тысячелетия.
К этим числам нужно относиться с некоторым скептицизмом. Я – не ясновидящий и ничего не знаю о будущих достижениях компьютерных технологий. Реальная безопасность зависит от нескольких вещей: насколько ваши данные ценны, как долго их требуется хранить в тайне и т. п. Но это означает, что должны существовать «законсервированные» числа – длины ключей для симметричных алгоритмов и MAC. Хэш-функции должны иметь длину, равную удвоенной длине ключа.
Длина ключа для симметричного алгоритма открытого ключа определяется более сложным образом. Наиболее эффективная атака против RSA, например, состоит в том, чтобы разложить на множители большое число. Наиболее действенная атака против Эль-Гамаля, алгоритма Диффи-Хеллмана, DSA и других систем – вычислить нечто, называемое дискретным логарифмом. (По существу, это – та же проблема.) Алгоритмы эллиптических кривых еще более сложны.
Для алгоритмов с открытым ключом специалисты сейчас рекомендуют 1024-битовые и более ключи. Параноики используют ключи еще длиннее. Системы, для которых не слишком важна долговременная секретность, пользуются 768-битовыми ключами. (Для алгоритмов эллиптических кривых применяют разные длины ключей.)
Трудно оценивать будущие трудности разложения на множители и вычисления дискретных логарифмов, поскольку нет никакого математического доказательства, что эти задачи имеют фиксированную степень сложности. (С другой стороны, мы знаем, насколько трудно перебирать все возможные ключи.) Итак, еще раз: отнеситесь ко всем этим рекомендациям, как к мнению квалифицированных специалистов – и не более того.
Глава 7
Криптография в контексте
Если криптография так надежна, то почему же происходят сбои в системах защиты? Почему существуют электронные кражи, мошенничество, нарушения конфиденциальности и все прочие проблемы безопасности, которые обсуждались в предыдущих главах? Почему криптография не соответствует всем без исключения требованиям безопасности? Зачем я докучаю вам такой толстой книгой?
Достаточно неожиданно, но причина этого не в плохом качестве криптографии. (Многое лежит на поверхности, но есть и проблемы, упрятанные гораздо более глубоко.) Ответ нужно искать в различии между теорией и практикой.
Криптография – это раздел математики. Математика – теоретическая наука; она логична. Хорошая математика исходит из правильной предпосылки, следует единственным путем – доказательство за доказательством – через неизведанные земли и заканчивается неопровержимым выводом. По природе своей она хорошо выглядит на бумаге.
Корни проблем безопасности следует искать в физическом мире. Материальный мир во многом нелогичен. Он неупорядочен. В нем не существует единственного пути. В нем есть теории и выводы, но для того чтобы согласиться с выводами, вам необходимо принять предпосылки, модели и взаимосвязи между теориями и реальным миром. А это непросто. Люди не играют по правилам. Они делают то, чего от них не ожидают; они не укладываются в жесткие рамки. То же самое касается технических средств: время от времени все начинает плохо работать, а то и вовсе ломается. Это же можно сказать о программном обеспечении. Оно должно быть логичным и упорядоченным, как-никак это – просто комбинация нулей и единиц, но иногда оно настолько сложно, что становится больше похожим на организм, а не на творение математики. Неважно, насколько хороша криптографическая теория: когда она используется в системе, она сталкивается с практикой.