Данный материал не следует, конечно же, относить к разделу новостей, но, тем не менее, его полезность сложно переоценить. Брюс Шнейер, специалист по криптографии и компьютерной безопасности в своём материале "Key Length and Security" - показывает то, как длина ключа влияет на защищённость данных. Думаю, выжимки из этого материала в обработке автора новости покажутся интересными и полезными многим нашим читателям...
Что бы вам ни пытались сказать, длина криптографического ключа - не связана напрямую с уровнем безопасности. Короткий ключ означает плохую безопасность, но длинный ключ - вовсе не означает хорошую безопасность. У замка есть ряд штырьков, каждый из которых имеет определённое число позиций. Вставлен ключ в дверь - штырьки занимают определённые позиции, и если это и есть комбинация, предустановленная (зашифрованная) в замке - дверь отпирается. Предположим, что в обычном замке находится четыре штырька, каждый из которых может находится в одном из десяти положений. Это означает наличие 10 тысяч возможных комбинаций. Даже если у вора имеются в наличии все 10 тысяч ключей, ему потребуется пара десятков часов на перебор возможных комбинаций.
В один прекрасный день в вашу дверь стучится коммивояжёр и предлагает новый, улучшенный замок с шестью штырьками по двенадцать возможных позиций у каждого. И вам сообщается, что вор должен теперь будет перебирать ключи в течение 259 дней! Как вы думаете, вы будете чувствовать себя в большей безопасности? Скорее всего, нет... Вряд ли какой-то вор будет перебирать ключи от квартиры двадцать часов чистого времени подряд. Преступник попытается вскрыть механизм замка, или выбить дверь, или разбить окно, или же дождаться вас в кустах, отобрать ключи и ограбить квартиру. Таким образом, ваш дом не станет более безопасным, поскольку новый замок оградит вас от взлома по узко специализированному и мало правдоподобному сценарию, который стоит рассматривать в последнюю очередь. Ведь как только у замка становится достаточное число штырьков, чтобы сделать атаку по указанному вектору неоправданной - ваша голова перестаёт болеть.
То же самое справедливо для криптографических ключей. Если они достаточно длинные, не беспокойтесь о них. Правда, определить параметр "достаточно длинные" в отношении криптографических ключей - немного более сложно, это зависит от использующего их приложения и от энтропии.
Начнём с азов. Криптографический ключ - это секретное значение, изменяющее алгоритм шифрования. Если два человека обмениваются ключом, они могут безопасно конфиденциально общаться. Если некое подслушивающее третье лицо будет перехватывать пересылку, то ему предстоит взломать алгоритм шифрования - то есть, фактически попытаться вычленить ключ из бессмысленного набора символов. Если идти путём вора, перебирающего все ключи, то получаем следующую ситуацию. Пусть наш ключ - "N" бит длиной. Получаем 2 в степени N возможных вариантов. Если ключ 40-битный, то у нас получается более одного триллиона возможных комбинаций. Обычный вор, конечно же, помрёт со скуки, но компьютеры прекрасно справляются со скучными задачами. В среднем компьютеру требуется перебрать половину возможных ключей, чтобы найти верный. Слабенький компьютер, который способен перебрать один миллиард ключей в секунду, справится с поиском 40-битного ключа за 18 минут. Система вроде Deep Crack, перебиравшая в своё время 90 миллиардов комбинаций в секунду, может найти 56-битный ключ алгоритма шифрования DES за четыре с половиной дня. Различные проекты распределённых вычислений (машины энтузиастов, объединённые в сеть посредством сети Интернет) могут перебирать на прядок большее число комбинаций в секунду.
В 1996 году группа специалистов-криптографов изучала технологии аналитических машин, взламывающих код путём подбора, и предложила 90-битный ключ в качестве ключа, обеспечивающего должную безопасность от перебора комбинаций - вплоть до 2016 года. У алгоритма Triple-DES мы видим 112-битный ключ, современные алгоритмы поголовно используют как минимум 128-битные ключи. Система, в миллиард раз более быстрая, чем Deep Crack, будет перебирать все комбинации 112-битного ключа в течение времени, соответствующего 10 в 15 степени лет. Так что даже при соблюдении закона Мура о ежегодном удвоении вычислительной мощности компьютеров - данный алгоритм будет безопасен ещё очень и очень долго.
О чём же ещё беспокоиться? Ну, создадим многомиллионно-битный ключ и будем спокойны до скончания века... Однако здесь есть смысл поговорить об энтропии. Энтропия - это мера непредсказуемости. Чем более непредсказуемо что-то, тем выше энтропия. Если из популяции живых существ любое существо имеет пол мужской или женский, то переменная "пол" характеризуется одним битом энтропии. Если каждому меломану в равной степени может больше всех нравиться кто-то один из четвёрки "Биттлз", то в этом случае получаем два бита энтропии. Пол мужской спортивной команды не имеет энтропии, поскольку по определению в её состав входят только мужчины. Также, если мы перенесём ситуацию с предпочтением одного из участников группы Биттлз на членов фан-клуба Джона Леннона, то энтропия перестанет характеризоваться двумя битами - очевидно, что случайно выбранный член клуба фанатов Джона Леннона будет с большей вероятностью симпатизировать именно лидеру ливерпульской четвёрки. Чем более предсказуемо значение переменной, тем меньше энтропия.
Теперь перейдём в мир криптографии. Только потому, что алгоритм шифрования принимает 128-битные ключи, нельзя говорить о 128 битах энтропии. Грубо говоря, утверждение, что лучшим способом взлома алгоритма шифрования со 128-битными ключами является простой неоптимизированный перебор всех имеющихся вариантов - ложно. О чём беспокоиться? О качестве алгоритма шифрования. Если в нём имеются недочёты, это уменьшает энтропию в ключах. К примеру, алгоритм A5/1, использовавшийся в GSM-телефонах европейских операторов сотовой связи, имел 64-битный ключ, но в то же время мог быть взломан за промежуток времени, равный перебору вариантов для 40-битного ключа...
Из новостей: "...Скомпрометирован сильный алгоритм шифрования A5/1. В этом шифре с 64-битным ключом имеются многочисленные конструктивные дефекты, приводящие к стойкости, не превышающей стойкость шифра с 40-битным ключом (другими словами, стойкость понижена на 6 порядков или в миллион раз). Непостижимо, каким образом столь очевидный дефект мог быть упущен французскими военными разработчиками...".
Комментарий редактора: очевидно, что спецслужбы напрямую или косвенно участвуют в разработке общеиспользуемых систем защиты и компрометируют их на этапе создания - дабы впоследствии иметь возможность прослушивать переговоры, дешифровывать переписку и т.д. Пример - частые законодательные препоны, требующие сертификации создаваемых систем компьютерной защиты информации в различных государственных спецслужбах, а где контакт с государственными органами - там и возможные переговоры о сотрудничестве...
Таким образом, вы видите, что алгоритм, использующий 64-битный ключ, на самом деле имеет энтропию 40-битного ключа. Таким образом, если вам заявляют о 256-битном ключе - необходимо удостовериться, идёт ли речь о честной 256-битной энтропии? Теперь вы понимаете, почему не стоит серьёзно относится к продуктам, рекламирующим тысяче- и более битные ключи - их создатели вряд ли знают всё об энтропии.
Теперь надо поговорить об источнике ключей. Все идеальные расчёты ведутся на основе того, что у каждого ключа - энтропия идеальна, то есть каждый ключ совершенно в равной степени имеет право на существование. Но это не совсем так. Многие ключи генерируются из каких-то паролей или ключевых фраз. Система, которая принимает 10-символьные пароли в кодировке ASCII - может говорить о 80-битном представлении, но на самом-то деле характеристика энтропии не дотянет до 80-битной отметки. Ибо при генерировании ключа в основном будут использоваться какие-то реальные слова, а значит - используется не полная таблица символов ASCII, а лишь буквы в её составе. К тому же в определённом числе случаев из них составлены будут не бессмысленные комбинации, а существующие слова или имена собственные. Энтропия резко снижается, и по некоторым подсчётам для получения соответствия 128-битному ключу в случае предсказуемого пароля вам надо набрать 98-символьную фразу на английском языке (а 6-символьный пароль будет соответствовать примерно 32-битному ключу).
Именно поэтому алгоритмы взлома не перебирают ключи по принципу "с самого начала и всё подряд". Сначала пытаются подставлять наиболее примитивные из известных паролей вроде "password" или "1234", затем - перебирается языковой словарь, затем идёт попытка переборки всех известных слов с использованием заглавных букв (вроде "Password"), потом перебор слов с дополнительными цифрами (вроде "Password123") и т.д.
Именно поэтому вызывают улыбку компании, внедряющие 128-битный ключ и генерирующие его на основе какого-то введённого пользователем пароля. Да, алгоритм умеет работать со 128-битными ключами, вот только энтропия будет намного ниже честных 128 бит. Получаем факт: неважно насколько хорош алгоритм криптографии, и какова длина ключа - слабый пароль оставит лазейку в вашей системе. Хотите, чтобы у вас был пароль, сравнимый по стойкости со 128-битным ключом? Тогда вам придётся запомнить 32-символьный пароль, представленный в шестнадцатеричном виде. Сложно запомнить? Ну так хакеры приложат существенно меньше усилий для взлома пароля, который легко запоминает среднестатистический пользователь. Длинные нетривиальные пароли сложно запомнить, но именно потому, что их сложно запомнить, они и являются хорошими...
Можно сказать, что случайно генерируемые пароли хороши. Но как тут не вспомнить пример с браузером Netscape версии 1.1? Там шифрование со 128-битным ключом велось на основе случайного генерирования. Так вот, в том механизме генерирования случайных чисел имелись недочёты, что приводило к существенному снижению энтропии и получавшемуся 128-битному ключу, идентичному по энтропии 20-битному...
Выходы из ситуации есть. Несомненно, биометрические данные - неплохой пароль. Можно полагать, что отпечаток пальца сопоставим с 60-битным ключом. И в этом случае с энтропией всё в порядке - никто не скажет, что ваш отпечаток пальца - "плохой и нестойкий", как в случае используемого вами пароля "password". Различные смарткарты - тоже хороши - они запоминают ключи с хорошей энтропией, но здесь у нас возникают ограничения, связанные с привязкой к физическому устройству.
Таким образом, мораль очевидна. Сложные системы шифрования с длинными ключами - генерируют последние на основе ключевых фраз, наборов символов, которые пользователь должен помнить. Это снижает энтропию. Тот пароль, что вы хотите, чтобы человек помнил - уже небезопасен...
Эссе освещает ситуацию с симметричным шифрованием. Материал составлен по информационному выпуску Брюса Шнейера, Copyright (c) 1999 by Bruce Schneier