370
Глава 22. Хранение секретов
и, кроме того, всегда носят с собой. (В качестве альтернативы КПК можно
было бы применять мобильный телефон или наручные часы, но использова-
ние их для хранения секретов потребовало бы обновления соответствующей
инфраструктуры, что выходит за рамки наших возможностей.)
Вам, вероятно, кажется, что шифрование секретов улучшило бы их без-
опасность. Разумеется, это так, но шифрование с помощью чего? Для шифро-
вания секретов нужен главный ключ, который, в свою очередь, тоже должен
где-то храниться. Хранение его вместе с зашифрованными секретами не при-
несло бы никакой пользы. Тем не менее шифрование секретных данных —
действительно
хороший
метод сокращения их количества и размера, а по-
тому оно широко используется в сочетании с другими методами. Например,
закрытый ключ RSA может иметь несколько тысяч бит в длину. Применив
к нему симметричное шифрование, мы можем значительно сократить объем
пространства, необходимый для хранения этого ключа.
22.2
Человеческая память
Следующая идея — хранить ключ в памяти самого пользователя А. Мы
попросим его запомнить пароль, а затем зашифруем с помощью этого па-
роля все остальные ключи. Зашифрованные ключи могут быть помещены
в любое удобное место, например на жесткий диск. Кроме того, ключи мож-
но разместить на Web-сервере, чтобы пользователь А загружал их на любой
компьютер, с которым работает в данный момент.
Человечество славится своими никудышными
способностями к запомина-
нию паролей. Если мы выберем очень простые пароли, то не получим ни-
какой безопасности. Простых паролей слишком мало, чтобы они обеспечи-
вали необходимую секретность: злоумышленник может просто их перебрать.
Использование в качестве пароля, скажем, девичьей фамилии своей матери
не обеспечит должной защиты; ее фамилия, скорее всего, известна многим.
Впрочем, даже если это и не так, злоумышленнику будет достаточно пере-
брать несколько тысяч фамилий, чтобы отыскать нужную.
Хороший пароль должен быть непредсказуем. Другими словами, он дол-
жен содержать большое количество энтропии. Обычные слова не обладают
достаточной энтропией. Английский язык насчитывает около полумиллиона
слов (и это включая все длинные и непонятные слова, внесенные в полный
словарь языка), поэтому применение в качестве пароля одного слова из слова-
ря обеспечит не более 19 бит энтропии. Оценки количества энтропии на один
символ текста, написанного на английском языке, несколько отличаются, но
в среднем составляют примерно 1,5-2 бит на один символ.
22.2. Человеческая память
371
Как вы помните, в наших системах для достижения 128-битового уров-
ня безопасности использовались 256-битовые ключи. В большинстве случаев
использование 256-битовых ключей лишь немного повышает общие расходы.
Тем не менее в данной ситуации пользователь должен запомнить пароль (или
ключ), а дополнительная стоимость ключей большого размера весьма высока.
Использовать пароли с энтропией 256 бит слишком обременительно, поэтому
ограничим количество энтропии, содержащейся в паролях, до 128 бит
1
.
Исходя из оптимистической оценки в 2 бита энтропии на символ, для
получения 128 бит энтропии нужны пароли в 64 символа длиной. Это непри-
емлемо. Пользователи просто откажутся запоминать пароли такого размера.
Что, если мы пойдем на компромисс и согласимся с энтропией 64 бит? Это
уже минимально допустимый уровень безопасности. Если на каждый символ
пароля приходится по 2 бита энтропии, нужно, чтобы пароль содержал по
крайней мере 32 символа. Даже подобное послабление окажется непосильной
задачей для среднестатистического пользователя. Не забывайте — на прак-
тике длина большинства паролей составляет лишь 6-8 символов.
Для решения этой
проблемы пароли можно было бы назначать автома-
тически. Впрочем, вы когда-нибудь пытались работать с системой, которая
радостно сообщает, что ваш пароль выглядит как “7193275827429946905186”?
Или, скажем, “aoekjk3ncmakwe”? Обычный человек просто не в состоянии
запомнить подобные вещи, поэтому данный ход не пройдет. (На практике
пользователь, как правило, записывает свой пароль на бумажке, но об этом
речь идет в следующем разделе.)
Гораздо лучше использовать в качестве пароля какую-нибудь
идентифи-
кационную фразу (passphrase)
. Идентификационная фраза — это практически
то же самое, что и пароль. В действительности эти
понятия настолько схожи,
что мы предпочитаем не проводить между ними различий. По сути, разли-
чие лишь одно: идентификационная фраза намного длиннее однословного
пароля.
В качестве пароля пользователь А мог бы применять какую-нибудь фра-
зу наподобие: “Розовые занавески порхают над океанами”. Это совершенно
бессмысленная фраза, но запомнить ее нетрудно. Кроме того, данная фраза
состоит из 38 символов, поэтому содержит примерно 57-76 бит энтропии. Если
же пользователь А расширит эту фразу примерно до следующей: “Занавес-
ки в розовый горошек порхают над морями любви”, он получит 52 символа,
которые могут применяться в качестве вполне неплохого ключа с энтропией
78-104 бит. Набрать на клавиатуре такую фразу можно всего за несколько
секунд, что, разумеется, гораздо быстрее, нежели набирать строку случай-
1
Для математиков: это пароли, выбранные с помощью вероятностного распределения,
обладающего энтропией в 128 бит.