Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Связки ключей





Мы видели, что идентификаторы ключей в PGP очень важны и что два идентификатора ключей включаются в любое сообщение PGP, предполагающее конфиденциальность и аутентификацию. Эти ключи необходимо хранить и организовать некоторым стандартизованным образом для эффективного применения всеми участвующими в обмене данными сторонами. Схема, используемая в PGP, предполагает создание в каждом узле пары структур данных: одну для хранения пар открытых/секретных ключей данного узла, а другую — для хранения открытых ключей других пользователей, известных данному узлу. Эти структуры данных называются соответственно связкой личных ключей и связкой открытых ключей.

Общая структура связки личных ключей показана на рис. 4. Связку можно считать таблицей, в которой каждая строка представляет одну пару открытого/личного ключей, принадлежащих данному пользователю. Каждая строка содержит следующие поля.

Метка даты-времени. Дата и время создания данной пары ключей.

Идентификатор ключа. Младшие64разряда открытого ключа данной строки.

Открытый ключ. Открытый ключ данной пары.

Личный ключ. Личный ключ данной пары;это поле шифруется.

Идентификатор пользователя. Обычно здесь размещается адресэлектронной почты пользователя (например, stallings@acm.org). Однако пользователь может указать для каждой пары ключей разные имена (например, Stallings, WStaliings, WilliamStallings и т.п.) или использовать один идентификатор пользователя несколько раз.

 

Рисунок 10.4 - Общая структура связок личных и открытых ключей

Связка личных ключей может быть индексирована либо по полю Идентификатор пользователя, либо по полю Идентификатор ключа; цель такой индексации мы выясним позже.

Хотя предполагается, что связка личных ключей должна храниться только на машине пользователя, создавшего и владеющего соответствующими парами ключей и что она должна быть доступна только этому пользователю, имеет смысл сделать значения личных ключей защищенными настолько, насколько это возможно. Соответственно, сам личный ключ в открытом виде в связке ключей не хранится, а шифруется с помощью CAST-128 (или IDEA, или 3DES). При этом используется следующая процедура.

1. Пользователь выбирает фразу-пароль, которая будет служить для шифрования личных ключей.

2. Когда система с помощью RSA генерирует новую пару открытого/личного ключей, она требует от пользователя указать такую фразу-пароль. Из нее с помощью SHA-1 генерируется 160-битовый хэш-код, а затем пароль удаляется.

3. Система шифрует личный ключ с помощью CAST-128, используя 128 битов хэш-кода в качестве ключа. Хэш-код затем удаляется, а шифрованный личный ключ сохраняется в связке личных ключей.

Впоследствии, когда пользователь обращается к связке личных ключей, чтобы извлечь личный ключ, ему придется снова указать фразу-пароль. PGP извлечет шифрованный личный ключ, вычислит хэш-код пароля и дешифрует личный ключ с помощью CAST-128 с данным хэш-кодом.

Это очень компактная и эффективная схема. Как и в любой основанной на паролях системе, защищенность всей системы зависит от защищенности пароля. Чтобы не поддаться искушению записать пароль, пользователь должен использовать такую парольную фразу, которую угадать нелегко, а запомнить — просто.

На рис. 4.4 показана и общая структура связки открытых ключей. Эта структура данных позволяет хранить открытые ключи других пользователей, известных данному. Пока что давайте проигнорируем некоторые поля, указан-ные в таблице, и опишем только часть из них.

Метка даты-времени.Дата и время создания данной записи.

Идентификатор ключа. Младшие64разряда открытого ключа даннойзаписи.

Открытый ключ. Открытый ключ данной записи.

Идентификатор пользователя. Владелец данного ключа.С однимоткрытым ключом можно связать несколько идентификаторов пользователя.

Связка открытых ключей может быть индексирована либо по полю Идентификатор пользователя, либо по полю Идентификатор ключа; цель такой индексации мы выясним позже.

Теперь мы можем показать, как эти связки ключей применяются при передаче и приеме сообщений. Для простоты в следующем примере мы проигнорируем сжатие и преобразование в формат radix-64. Сначала рассмотрим передачу сообщения (рис. 10.5) и предположим, что сообщение должно быть и подписано, и зашифровано. Посылающий сообщение объект PGP выполняет следующие шаги.

 

 

Рисунок 10.5 - Создание сообщения PGP (от А к Б, без сжатия и преобразования в формат radix-64)


 

1. Создание подписи сообщения.

• PGP извлекает личный ключ отправителя из связки личных ключей, используя введенное значение your_userid в качестве ключа поиска. Если соответствующая команда не предлагает значения your_userid, выбирается первый личный ключ в связке.

• PGP запрашивает у пользователя фразу-пароль, чтобы расшифровать личный ключ.

• Создается компонент подписи сообщения.

2. Шифрование сообщения.

• PGP генерирует сеансовый ключ и шифрует сообщение.

• PGP извлекает открытый ключ получателя из связки открытых ключей, используя значение her_userid в качестве ключа поиска.

• Создается компонент сеансового ключа сообщения.

Принимающий объект PGP выполняет следующие шаги (рис. 10.6).

1. Дешифрование сообщения.

• PGP извлекает личный ключ получателя из связки личных ключей, используя в качестве ключа поиска значение поля Идентификатор ключа компонента сеансового ключа сообщения.

• PGP запрашивает у пользователя фразу-пароль, чтобы расшифровать личный ключ.

• PGP открывает сеансовый ключ и дешифрует сообщение.

 

 


Рисунок 10.6 - Получение сообщения PGP (от А к В, без сжатия и преобразования в формат radix-64)

2. Аутентификация сообщения.

• PGP извлекает открытый ключ отправителя из связки открытых ключей, используя в качестве ключа поиска значение поля Идентификатор ключа компонента подписи сообщения.

• PGP восстанавливает полученный профиль сообщения.

• PGP вычисляет профиль сообщения для принятого сообщения и сравнивает его с профилем, пришедшим вместе с сообщением, чтобы убедиться в их идентичности.







Date: 2015-06-06; view: 698; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.014 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию