В. Р. Гинзбург Перевод с английского



Pdf көрінісі
бет181/203
Дата26.09.2024
өлшемі2,74 Mb.
#145829
1   ...   177   178   179   180   181   182   183   184   ...   203
Байланысты:
практическая криптография


Глава 22. Хранение секретов
ных чисел. Мы исходим из факта, что запомнить идентификационную фразу
намного проще, чем случайные числа. Большинство мнемонических приемов
основаны на идее преобразования случайных данных в нечто похожее на на-
ши идентификационные фразы.
Некоторые пользователи не слишком любят стучать пальцами по клави-
атуре, поэтому выбирают свои пароли по-другому. Возьмем, например, по-
истине замечательное слово “Длспус,иносивсссцмбпсн?”. Оно выглядит пол-
нейшей абракадаброй, если не знать, что это первые буквы слов некоторо-
го вполне осмысленного предложения. В данном случае мы воспользовались
цитатой из шекспировского “Гамлета”: “Достойно ль смиряться под ударами
судьбы, иль надо оказать сопротивленье и в смертной схватке с целым мо-
рем бед покончить с ними?”
2
Разумеется, на практике использовать цитаты
из классической литературы не следует. Литературные тексты слишком до-
ступны злоумышленнику, а сколько подходящих фраз может содержаться
в книгах, стоящих на полке у пользователя А? Поэтому пользователю А сле-
дует придумать что-нибудь оригинальное, чего никто не мог бы разгадать.
По сравнению с полной идентификационной фразой для составления та-
кого пароля требуется предложение, состоящее из большего количества слов.
Тем не менее подобный прием позволяет обеспечить необходимый уровень
безопасности путем ввода меньшего количества символов, так как первые
буквы слов обладают большей случайностью, чем последовательные буквы
предложения. К сожалению, мы не знаем ни одной оценки количества эн-
тропии, которая приходится на каждый символ подобного слова. Возможно,
впоследствии кому-нибудь удастся провести исследования и написать статью
о различных способах выбора идентификационных фраз.
Идентификационные фразы — это, безусловно, самый лучший способ со-
хранить секрет в человеческой памяти. К сожалению, многие пользователи
все равно испытывают серьезные затруднения с их применением. Кроме того,
даже используя идентификационные фразы, весьма сложно сохранить в че-
ловеческом мозгу сразу 128 бит энтропии.
22.2.1
Солим и растягиваем
Чтобы выжать как можно больше безопасности из пароля или идентифи-
кационной фразы с ограниченным объемом энтропии, можно воспользовать-
ся двумя любопытными приемами. Их названия наводят на мысль о средне-
вековой камере пыток. Данные приемы настолько просты и очевидны, что
должны применяться в каждой системе, работающей с паролями. Исключе-
ний из этого правила не существует.
2
Перевод Б. Пастернака. —
Прим. перев.


22.2. Человеческая память
373
Первый прием состоит в том, чтобы добавить
соли (salt)
. “Соль” — это
случайное число, которое хранится вместе с данными, зашифрованными с по-
мощью пароля. Если это возможно, используйте 256-битовую соль.
Следующий шаг — это
растягивание (stretching)
пароля. По своей сути
растягивание представляет собой очень длинный процесс вычисления. Пусть
p
— это пароль, а
s
— соль. Используя любую криптографически сильную
функцию хэширования
h
, можно вычислить следующее:
x
0
:= 0
,
x
i
:=
h
(
x
i

1
k
p
k
s
)
для
i
= 1
, . . . , r,
K
:=
x
r
.
Полученное значение
K
применяется в качестве ключа для фактического
шифрования данных. Параметр
r
— это количество итераций данного алго-
ритма, которое должно быть настолько большим, насколько это практически
возможно. (Думаем, нам не нужно лишний раз подчеркивать, что значения
x
i
и
K
должны быть 256 бит длиной.)
Рассмотрим описанный процесс с точки зрения злоумышленника. Зная
соль
s
и некоторые данные, зашифрованные с помощью ключа
K
, мы пыта-
емся найти
K
, перебирая различные пароли. Для этого мы выберем некото-
рый пароль
p
, вычислим соответствующее значение
K
, расшифруем данные
и посмотрим, имеет ли смысл полученный открытый текст. Если расшифро-
ванный текст окажется бессмысленным, выбранный пароль
p
должен быть
неправильным. Чтобы проверить одно значение
p
, необходимо выполнить
r
различных операций хэширования. Чем больше значение
r
, тем больше ра-
боты придется проделать злоумышленнику.
В нормальных ситуациях растягивание пароля должно выполняться при
каждом использовании последнего. Напомним, что это происходит в тот мо-
мент, когда пользователь только что ввел пароль. Обычно ввод пароля за-
нимает несколько секунд, поэтому вполне допустимо потратить на его обра-
ботку, скажем, еще 200 мс. Вот наше правило выбора
r
: значение
r
долж-
но быть таким, чтобы вычисление
K
(
s, p
)
занимало от 200 до 1000 мс на
оборудовании пользователя. С течением времени компьютеры работают все
быстрее и быстрее, поэтому
r
должно постепенно увеличиваться. В идеале
приемлемое значение
r
следует определять экспериментальным путем, когда
пользователь впервые выбирает пароль, и хранить
r
вместе с
s
. (Обязательно
убедитесь, что значение
r
не слишком мало и не слишком велико.)
Какой выигрыш мы получили? Если
r
= 2
20
(это чуть больше милли-
она), тогда злоумышленнику для проверки каждого варианта пароля при-
дется проделать по
2
20
операции хэширования. Перебор
2
60
паролей требует
выполнения
2
80
операций хэширования, поэтому использование
r
= 2
20
экви-


374

Достарыңызбен бөлісу:
1   ...   177   178   179   180   181   182   183   184   ...   203




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет