Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Основы сетевой безопасности: криптографические алгоритмы и протоколы взаимодействия

Покупка
Артикул: 062018.09.99
Доступ онлайн
1 000 ₽
В корзину
Курс предполагает изучение механизмов и сервисов безопасности компьютерных сетей. Значительное внимание уделяется изучению наиболее важных сервисов и механизмов защиты информации, проблем информационной безопасности в сети интернет. В частности рассмотрены принципы распределения открытых ключей, стандарт Х.509 v3 и Инфраструктура Открытого Ключа; рассмотрен LDAP, используемый в качестве репозитория сертификатов открытого ключа и CRL; рассмотрены наиболее широко используемые протоколы и прикладные продукты сетевой безопасности: TLS/SSL, Kerberos, SSH, IPSec.
Лапонина, О. Р. Основы сетевой безопасности: криптографические алгоритмы и протоколы взаимодействия : краткий курс / О. Р. Лапонина. - Москва : ИНТУИТ, 2016. - 333 с. - ISBN 5-9556-00020-5. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2155044 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов

                                    
Протоколы безопасного сетевого взаимодействия

2-е издание, исправленное

Лапонина О.Р.

Национальный Открытый Университет “ИНТУИТ”
2016

2

УДК 32.973.202-02fl73-2
ББК 16
Л-24
Основы сетевой безопасности: криптографические алгоритмы и протоколы взаимодействия /
Лапонина О.Р. - M.: Национальный Открытый Университет “ИНТУИТ”, 2016 (Основы
информационных технологий)
ISBN 5-9556-00020-5

Курс предполагает изучение механизмов и сервисов безопасности компьютерных сетей.
Значительное внимание уделяется изучению наиболее важных сервисов и механизмов защиты
информации, проблем информационной безопасности в сети интернет. В частности рассмотрены
принципы распределения открытых ключей, стандарт Х.509 v3 и Инфраструктура Открытого Ключа;
рассмотрен LDAP, используемый в качестве репозитория сертификатов открытого ключа и CRL;
рассмотрены наиболее широко используемые протоколы и прикладные продукты сетевой
безопасности: TLS/SSL, Kerberos, SSH, IPSec.

(c) ООО “ИНТУИТ.РУ”, 2005-2016
(c) Лапонина О.Р., 2005-2016

3

Инфраструктура Открытого Ключа (часть 1)

Рассматривается стандартная нотация для определения типов и значений данных –
Abstract Syntax Notation One (ASN.1). Определены простые и структурные типы.
Введено понятие идентификатора объекта. Рассматриваются основные понятия,
связанные с инфраструктурой открытого ключа: сертификат открытого ключа,
удостоверяющий (сертификационный) центр, конечный участник, регистрационный
центр, CRL, политика сертификата, регламент сертификационной практики,
проверяющая сторона, репозиторий. Описана архитектура PKI.

ASN.1: спецификация базовой нотации

Введение

В этой лекции мы кратко рассмотрим стандартную нотацию для определения типов и
значений данных – Abstract Syntax Notation One (ASN.1). Значение данных является
экземпляром определенного типа. Стандарт ASN.1 определяет несколько базовых типов
и синтаксис соответствующих им значений, а также правила для получения составных
типов и значений.

При описании протоколов взаимодействия или систем, которые совместно используют
определенные структуры данных, требуется определить типы данных, передаваемые
этими протоколами или совместно используемые различными системами. Для того
чтобы определить эти типы данных, требуется специальная нотация. Такой нотацией
является ASN.1.

Данная нотация, с одной стороны, интуитивно понятна, а с другой стороны, может
использоваться как протоколами, так и программными системами. Неотъемлемой
частью ASN.1 являются базовые правила представления BER (Basic Encoding Rules).
BER описывает принцип представления любой величины в рамках стандарта ASN.1.
Практически все величины представляются в виде последовательности 8-битных
октетов. Восьмой бит октета считается самым старшим. BER позволяет представить
величину в виде последовательности 8-битных октетов несколькими способами.
Имеется также поднабор правил представления DER (Distinguished Encoding Rules),
который определяют однозначные способы представления величин в ASN.1 .

Ниже приведены базовые правила обозначений в ASN.1. Все нотации ASN.1 будут
печататься шрифтом Courier New.

В ASN.1 типы и значения выражаются в нотации, близкой к используемой в языках
программирования. Множественные пробелы и разрывы строк рассматриваются как
один пробел. Комментарий может располагаться как на одной строке (в этом случае он
начинается с пары символов — и заканчивается концом строки), так и на нескольких
строках (в этом случае он начинается с /* и заканчивается */ ). Идентификаторы
(имена значений и полей) и имена типов состоят из букв, цифр и пробелов.
Идентификаторы начинаются со строчной буквы, а имена типов – с прописной. В

4

ASN.1 используются следующие обозначения:

[] – квадратные скобки указывают на то, что терм является необязательным;

{} – фигурные скобки группируют родственные термы;

| – вертикальная черта выделяет альтернативные значения;

... – многоточие обозначает повторения;

= – знак равенства описывает терм как подтерм.

ASN.1 определяет следующие разновидности типов: простые типы, не имеющие
компонентов, структурные типы, имеющие компоненты, помеченные (тегированные –
tagged) типы, которые получаются из других типов добавлением метки (тега), а также
такие типы, как CHOICE, ANY и некоторые другие. Типам и значениям могут
присваиваться имена с помощью оператора присваивания ” ::= “. Эти имена в
дальнейшем могут использоваться для определения других типов и значений.

Определены следующие простые типы:

INTEGER – любое целое число;

BIT STRING – произвольная строка бит;

OCTET STRING – произвольная последовательность октетов;

NULL – 0 ;

OBJECT IDENTIFIER – последовательность компонентов, однозначно
идентифицирующих объект;

PrintableString – последовательность печатных символов;

IA5String – произвольная строка символов IA5 (ASCII);

UTCTime – универсальное время (по Гринвичу; GMT).

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

В ASN.1 определено четыре структурных типа:

SEQUENCE – упорядоченный набор из одного или более типов, некоторые из которых
могут быть объявлены как необязательные.

SEQUENCE OF – упорядоченный набор из нуля или более значений данного типа.

SET – неупорядоченный набор из одного или более типов, некоторые из которых могут
быть объявлены как необязательные.

5

SET OF – неупорядоченный набор из нуля или более значений данного типа.

Структурные типы могут иметь необязательные компоненты, в том числе со
значениями по умолчанию.

Типы могут быть помечены явно или неявно. Неявно помеченные типы получаются из
других типов путем изменения метки. Для неявной пометки используется ключевое
слово IMPLICIT. Явно помеченные типы получаются из других типов путем добавления
внешней метки. Для явной пометки используется ключевое слово EXPLICIT.
Помеченный явно тип – это структурный тип, состоящий из одного существующего
типа и тега. Пометка (тегирование) весьма удобна, чтобы различать типы в пределах
одного приложения.

Тегированный тип является новым типом, который изоморфен старому, но имеет
отличный от него тег.

TaggedType ::= Tag Type
             | Tag IMPLICIT Type
             | Tag EXPLICIT Type
Tag ::= [ Class ClassNumber ]
ClassNumber ::= Number | DefinedValue
Class ::= UNIVERSAL
        | APPLICATION
        | PRIVATE
        | empty

DefinedValue должно быть типом целого и иметь неотрицательное значение.

Битовые строки

Тип BIT STRING обозначает битовые последовательности произвольной длины
(включая ноль). Нотация BIT STRING имеет формат.

BIT STRING

Например, тип SubjectPublicKeyInfo имеет компонент PublicKey типа BIT STRING :

SubjectPublicKeyInfo ::= SEQUENCE {
    Algorithm AlgorithmIdentifier,
    PublicKey BIT STRING
}

Строки IA5

Тип IA5String представляет любые последовательности IA5-символов
(международный алфавит 5 – эквивалентно ASCII). Длина строки может быть любой,

6

включая нуль. Этот тип используется для адресов электронной почты и
неструктурированных имен. Нотация типа IA5String имеет простой формат.

IA5String

Целое

Тип INTEGER представляет любые целые числа (положительные, отрицательные или 0 ).
Тип INTEGER используется для номеров версий, криптографических параметров
(показателей, модулей и т.п.) и типов RSAPublicKey, RSAPrivatKey, DHParameter,

PBEParameter. Нотация типа INTEGER имеет формат:

INTEGER [{identifier1(value1)
    ... identifiern(valuen) }]

где identifier1... identifiern являются необязательными идентификаторами, а

value1... valuen целые значения. Например, Version является целым типом со
значением 0:

Version ::= INTEGER { v1988(0) }

Идентификатору v1988 поставлено в соответствие значение 0. Тип Certificate
использует идентификатор v1988 для присвоения значения по умолчанию компоненту

version:

Certificate 
version Version DEFAULT v1988,
...

NULL

Тип NULL обозначает нулевую величину и предназначен для использования в качестве
параметра алгоритмов. Нотация для типа NULL имеет формат:

NULL

Идентификаторы объектов

Тип OBJECT IDENTIFIER служит для обозначения идентификаторов, которые
представляют собой последовательность целочисленных компонентов,
идентифицирующих определенные объекты, например, алгоритм или атрибут имени
каталога. Значение OBJECT IDENTIFIER может содержать любое число
неотрицательных компонент. Этот тип не относится в числу строчных. Значения

OBJECT IDENTIFIER определяются при регистрации.

7

Нотация OBJECT IDENTIFIER имеет формат:

OBJECT IDENTIFIER

Нотация значения OBJECT IDENTIFIER имеет вид:

{ [identifier] component1 ... componentn}
componenti = identifieri |
             identifieri (valuei) |
             valuei

где identifier, identifier1, … identifiern являются идентификаторами, а value1...,

valuen – целые числа.

Например, приведенные ниже величины идентификаторов объектов присвоены RSA
DATA Security, Inc.

{ iso(1) member-body(2) 840 113549 }
{ 1 2 840 113549 }

Ниже приведены некоторые идентификаторы объектов и их значения.

Таблица 13.1. Идентификаторы объектов и их значения

Величина идентификатора объекта
Назначение

{ 1 2 }
Члены ISO

{ 1 2 840 }
US (ANSI)

{ 1 2 840 113549}
RSA Data Security, Inc.

Строки октетов

Тип OCTET STRING служит для представления произвольных последовательностей
октетов. Значение OCTET STRING может иметь любую длину, включая нуль. OCTET

STRING используется для представления сообщений. Нотация типа OCTET STRING имеет
формат.

OCTET STRING [SIZE ({size |
                     size1..size2})]

где size, size1 и size2 – необязательные ограничения размера. В формате OCTET

STRING SIZE (size) строка октетов должна иметь size октетов. В формате OCTET
STRING SIZE (size1 .. size2) строка должна содержать число октетов между size1 и

size2. Например, тип PBEParameter имеет компоненту типа OCTET STRING :

PBEParameter ::= SEQUENCE {
    salt OCTET STRING SIZE (8),

8

    iterationCount INTEGER 
}

Здесь размер компоненты salt всегда равен 8 октетам.

Строки печатных символов

Тип PrintableString предназначен для описания произвольных последовательностей
печатных символов из набора:

A,B,...,Z
a,b,...,z
0,1,...,9
(пробел) ‘ () +, – . / : = ?

Этот тип используется для представления атрибутов имен. Нотация типа

PrintableString имеет вид:

PrintableString

Тип CHOICE

Этот тип служит для объединения одной или более альтернатив. Нотация типа CHOICE
имеет формат

CHOICE {
    [identifier1] Type1,
    ...,
    [identifiern] Typen
}

где identifier1, …, identifiern являются необязательными идентификаторами
альтернатив, а типы Type1, …, Typen – альтернативы. Идентификаторы нужны для
документирования и не играют какой-либо роли при представлении. Рассмотрим
пример типа ExtendedCertificateOrCertificate, который относится к типу CHOICE.

ExtendedCertificateOrCertificate ::=
    CHOICE {
        certificate Certificate, 
        extendedCertificate [0]
            IMPLICIT ExtendedCertificate
}

Здесь идентификаторами для альтернатив являются certificate и

extendedCertificate, а сами альтернативы представлены типами Certificate и [0]

9

IMPLICIT ExtendedCertificate.

Тип SEQUENCE

Тип SEQUENCE обозначает упорядоченную последовательность одного или более типов.
Нотация типа SEQUENCE имеет вид:

SEQUENCE {
    [identifier1] Type1 [{OPTIONAL |
                 DEFAULT value1}],
    ...,
    [identifiern] Typen [{OPTIONAL |
                 DEFAULT valuen}],
}

где identifier1, …, identifiern являются необязательными идентификаторами
компонентов, Type1, …, Typen – типы компонентов, а value1,…, valuen –
необязательные значения компонентов по умолчанию. Квалификатор OPTIONAL
указывает на то, что компонент является необязательным. Квалификатор DEFAULT
говорит о том, что компонент является необязательным и ему присваивается
определенное значение, если компонент отсутствует. Например, тип Validity
относится к типу SEQUENCE и имеет два компонента.

Validity ::= SEQUENCE {
    start UTCTime,
    end UTCTime
}

Здесь start и end являются идентификаторами компонентов, а типом компонентов
служит UTCTime.

Тип SEQUENCE OF

Тип SEQUENCE OF обозначает упорядоченную последовательность из нуля или более
значений компонентов данного типа. Нотация SEQUENCE OF имеет вид:

SEQUENCE OF Type

Так, например, тип RNDSequence состоит из нуля или более значений компонентов типа

RelativeDistinguishedName.

RNDSequence ::= SEQUENCE OF
    RelativeDistinguishedName

10

Доступ онлайн
1 000 ₽
В корзину