Опубликован: 19.01.2010 | Доступ: свободный | Студентов: 1443 / 200 | Оценка: 4.33 / 4.00 | Длительность: 18:53:00
Лекция 6:

Безопасность на прикладном уровне: PGP и S/MIME

PGP-пакеты

Сообщение в PGP состоит из одного или более пакетов. В течение эволюции PGP формат и число типов пакета изменились. Подобно другим протоколам, известным до сих пор, PGP имеет типовой заголовок, который применяется к каждому пакету. Типовой заголовок нынешней версии имеет только два поля, как показано на рис. 6.12.

 Формат заголовка пакета

Рис. 6.12. Формат заголовка пакета
  • Метка (тег). Нынешний формат для этого поля определяет метку как флажок на 8 битов; первый бит (самый старший) - всегда 1. Второй бит - 1, если мы используем последнюю версию. Остающиеся шесть бит могут определить до 64 различных типов пакетов, как показано в табл. 6.12.
  • Длина. Поле длины определяет длину полного пакета в байтах. Размер этого поля является переменным; он может быть 1, 2 или 5 байтов.
Таблица 6.12. Некоторые обычно используемые типы пакетов
Значение Тип пакета
1 Ключ сеанса, зашифрованный открытым ключом
2 Пакет подписи
5 Пакет секретного ключа
6 Пакет открытого ключа
8 Пакет сжатых данных
9 Пакет данных, зашифрованный секретным ключом
11 Пакет литеральных (буквенных данных)
13 Пакет пользовательского ID

Приемник может определить число байтов поля длины, на основании значения байта, идущего сразу после поля метки.

  • Если значение байта после поля метки меньше, чем 192, то поле длины - только один байт. Длина текстового блока (пакет минус заголовок) вычисляется как
    длина текстового блока = первый байт
  • Если значение байта после поля метки между 192 и 223 (включая крайние значения), то поле длины - два байта. Длина текстового блока может быть вычислена как
    длина текстового блока = (первый байт - 192) << 8 + второй байт + 192
  • Если значение байта после поля метки между 224 и 254 (включая крайние значения), то поле длины - один байт. Этот тип поля длины определяет только длину части текстового блока (частичная длина текстового блока). Частичная длина текстового блока может быть вычислена как
    Длина текстового блока = второй байт <<24 | третий байт << 16| четвертый байт << 8 |пятый байт

    Обратите внимание, что формула означает 1 2 (первый байт & 0x1F). Степень - это фактически значение пяти самых правых битов. Поскольку поле - между 224 и 254 включительно значение пяти самых правых битов - между 0 и 30 включительно. Другими словами, частичная длина текстового блока может быть между единицей ( 20 ) и 1 073 741 824 ( 230 ). Когда пакет представлен несколькими частичными текстовыми блоками, применима частичная длина текстового блока. Каждая частичная длина текстового блока определяет одну часть длины. Последнее поле длины не может быть частичной длиной текстового блока созданного сообщения. Например, если пакет имеет четыре части, он может иметь три частичных поля длины и одно поле длины другого типа.

  • Если значение байта после поля метки - 255, то поле длины состоит из пяти байтов. Длина текстового блока вычисляется как

Пакет литеральных данных. Пакет буквенных данных переносит или содержит текущие данные, которые передаются или сохраняются. Этот пакет - самый элементарный тип сообщения; то есть, он не может нести никакой другой пакет. Формат пакета показан на рис. 6.13.

Пакет буквенных данных

Рис. 6.13. Пакет буквенных данных

Режим. Это однобайтовое поле определяет, как данные написаны в пакете. Значение этого поля может быть "b" для двоичных данных, "t" - для текста, или любое другое значение, определенное для собственных целей.

Длина следующего поля. Это однобайтовое поле определяет длину следующего поля (поля имени файла).

Имя файла. Это поле переменной длины определяет название файла или сообщения в виде строки ASCII.

Метка времени. Это четырехбайтовое поле определяет время создания или последней модификации сообщения. Значение может быть 0 - это означает, что пользователь выбирает опцию "не определять время".

Литеральные данные. Это поле переменной длины, переносящее фактические данные (файл или сообщение) в тексте или двоичном виде (в зависимости от значения поля режима).

Сжатый пакет данных. Этот пакет, переносящий пакеты сжатых данных. рис. 6.14 показывает формат пакет сжатых данных.

Пакет сжатых данных

Рис. 6.14. Пакет сжатых данных
  • Метка (метод сжатия). Это однобайтовое поле определяет метод сжатия, используемый для сжатия данных (следующее поле). Значения, определенные для этого поля, пока 1 (ZIP) и 2 (ZLIP). Также реализация может применять другие экспериментальные методы сжатия. Метод ZIP обсуждается в приложении М.
  • Сжатые данные. Это поле переменной длины переносит данные после сжатия. Обратите внимание, что в этом поле может быть один пакет данных или последовательное соединение двух или более пакетов. Общая ситуация - единственный пакет литеральных данных или комбинация пакета подписи, сопровождаемого пакетом литеральных данных.

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

Пакет зашифрованных  данных

Рис. 6.15. Пакет зашифрованных данных

Пакет подписи.Пакет подписи мы уже обсуждали раньше, когда рассматривали защиту целостности данных. рис. 6.16 показывает формату пакета подписи.

Пакет подписи

Рис. 6.16. Пакет подписи
Таблица 6.13. Некоторые значения подписи
Значение Подпись
0x00 Подпись двоичного документа (сообщение или файл)
0x01 Подпись текстового документа (сообщение или файл)
0x10 Общий сертификат пользовательского ID и пакета открытого ключа. Подписывающее лицо не указывает никаких данных о владельце ключа
0x11 Персональный сертификат пользовательского ID и пакет открытого ключа. Не проводится верификация владельца ключа
0x12 Случайный сертификат пользовательского ID и пакет открытого ключа. Некоторая случайная верификация владельца ключа
0x13 Положительный сертификат пользовательского ID и пакет открытого ключа. Делается существенная верификация
0x30 Подпись аннулирования сертификата. Она удаляет более ранний сертификат (от Ox10 до Ox13)
  • Версия. Это однобайтовое поле определяет используемую версию PGP.
  • Длина. Это поле сначала было выделено для того, чтобы показать длину следующих двух полей, но теперь размер этих полей установлен, поэтому значение этого поля равно 5.
  • Тип подписи. Это однобайтовое поле определяет цель подписи. Оно документирует подпись. табл. 6.13 показывает некоторые типы подписи.
  • Метка времени. Это четырехбайтовое поле, которое определяет время, когда подпись была вычислена.
  • Ключ ID. Это восьмибайтовое поле определяет ID открытого ключа подписывающего лица. Оно указывает верификатору, какой открытый ключ подписывающего лица должен быть использован, чтобы расшифровать дайджест.
  • Алгоритм открытого ключа. Это однобайтовое поле дает код для алгоритма открытого ключа, который применялся для шифрования дайджеста. Верификатор использует тот же самый алгоритм, чтобы расшифровать дайджест.
  • Алгоритм хэширования. Это однобайтовое поле дает код для алгоритма хэширования, обычно создает дайджест.
  • Первые два байта дайджеста сообщения. Эти два байта используются как своего рода контрольная сумма. Они гарантируют, что приемник использует правильный ключ ID, чтобы расшифровать дайджест.
  • Подпись. Это поле переменной длины. Оно содержит зашифрованный дайджест, подписанный передатчиком.

Пакет ключа сеанса, зашифрованный открытым ключом.

Этот пакет используется, чтобы передать ключ сеанса, зашифрованный открытым ключом приемника. Формат пакета показан на рис. 6.17.

Пакет ключа сеанса

Рис. 6.17. Пакет ключа сеанса
  • Версия. Это однобайтовое поле определяет используемую версию PGP.
  • Ключ ID. Это восьмибайтовое поле определяет ID общедоступного ключа передатчика. Он указывает приемнику, какой общедоступный ключ передатчика должен использоваться, чтобы расшифровать ключ сеанса.
  • Алгоритм открытого ключа. Это однобайтовое поле дает код для алгоритма открытого ключа, использованного для шифрования ключа сеанса. Приемник применяет тот же самый алгоритм, чтобы расшифровать ключ сеанса.
  • Сеанс шифрования. Это область переменной длины, которая содержит зашифрованное значение ключа сеанса, созданного отправителем и посланного приемнику. Шифрование основано на следующих средствах:
    • симметричный алгоритм шифрования с одним октетом;
    • ключ сеанса;
    • контрольная сумма с двумя октетами равняется сумме октетов ключей предыдущих сеансов.

Пакет открытого ключа.Этот пакет содержит общедоступный ключ отправителя. Формат пакета показан на рис. 6.18.

 Пакет открытого ключа

Рис. 6.18. Пакет открытого ключа
  • Версия. Эта однобайтовая область определяет используемую версию PGP.
  • Метка времени. Эта четырехбайтовая область определяет время, когда был создан ключ.
  • Законность. Эта двухбайтовая область показывает число дней, в продолжении которых ключ является действительным. Если значение равно 0, это означает, что действие ключ не заканчивается.
  • Алгоритм открытого ключа. Эта однобайтовая область дает код для алгоритма общедоступного ключа.
  • Открытый ключ. Эта область переменной длины содержит общедоступный ключ. Его содержание зависит от алгоритма общедоступного ключа.

Пакет пользовательского ID.Этот пакет идентифицирует пользователя и обычно связывает пользователя и содержание с открытым ключом передатчика. рис. 6.19 показывает формат пакет пользовательского ID. Обратите внимание, что поле длины общего заголовка - только один байт.

Пакет пользовательского ID

Рис. 6.19. Пакет пользовательского ID
  • Пользовательский ID. Эта строка переменной длины определяет пользовательский ID передатчика. Это обычно имя пользователя, сопровождаемое адресом электронной почты.
Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Мария Архипова
Мария Архипова