Криптография - это процесс преобразования между читаемым текстом, называемым открытым текстом, и нечитаемой формой,
называемой зашифрованным текстом:
Отправитель преобразует сообщение открытого текста в зашифрованный текст. Эта часть процесса называется
шифрованием (иногда шифрование).
Зашифрованный текст передается в приемник.
Приемник преобразует сообщение зашифрованного текста обратно в форму открытого текста. Эта часть процесса
называется расшифровкой (иногда дешифровкой).
Преобразование включает в себя последовательность математических операций, которые изменяют внешний вид
сообщения во время передачи, но не влияют на содержимое. Криптографические методы могут обеспечивать конфиденциальность
и защищать сообщения от несанкционированного просмотра (подслушивания), поскольку зашифрованное сообщение не понятно.
Цифровые подписи, обеспечивающие гарантию целостности сообщений, используют методы шифрования.
Криптографические методы включают в себя общий алгоритм, определенный с помощью ключей. Существует два класса алгоритма:
Те, которые требуют, чтобы обе стороны использовали один и тот же секретный ключ. Алгоритмы, которые используют общий ключ, известны как симметричные алгоритмы. На рисунке показана симметричная криптография ключей.
Те, которые используют один ключ для шифрования и другой ключ для дешифрования. Один из них должен храниться в секрете, а другой может быть открытым. Алгоритмы, использующие пары открытого и закрытого ключей, называются асимметричными алгоритмами. На рисунке показана асимметричная криптография ключей, которая также известна как криптография с открытым ключом. Используемые алгоритмы шифрования и дешифрования могут быть общедоступными, но общий секретный ключ и закрытый ключ должны храниться в секрете.
Симметричная криптография ключей
На этой диаграмме показан зашифрованный текст зашифрованного текста с помощью секретного ключа общего доступа.
Поскольку криптография симметрична, шифрованный текст дешифруется с использованием того же секретного ключа.
Асимметричная криптография ключей
Эта диаграмма показывает открытый текст, зашифрованный для шифрованного текста, с открытым ключом получателя.
Получатель расшифровывает зашифрованный текст с помощью закрытого ключа получателя. На рисунке показан открытый текст,
зашифрованный открытым ключом приемника и дешифрованный с помощью закрытого ключа получателя.
Только предназначенный приемник содержит закрытый ключ для дешифрования зашифрованного текста. Обратите внимание,
что отправитель также может шифровать сообщения с помощью закрытого ключа, который позволяет любому, кто содержит
открытый ключ отправителя, расшифровывать сообщение, с уверенностью, что сообщение должно было поступать от отправителя.
С асимметричными алгоритмами сообщения зашифровываются как открытым, так и частным ключом, но могут быть дешифрованы
только с помощью другого ключа. Только секретный ключ является секретным, открытый ключ может быть известен кем угодно.
При использовании симметричных алгоритмов общий ключ должен быть известен только двум сторонам. Это называется проблемой
распределения ключей. Асимметричные алгоритмы медленнее, но имеют то преимущество, что проблема распределения ключей отсутствует.
Терминология, связанная с криптографией:
Прочность шифрования
Сила шифрования определяется размером ключа. Асимметричные алгоритмы требуют больших ключей, например:
512 bits Низкопрочный асимметричный ключ
768 bits Низкопрочный ключ средней силы
1024 bits Асимметричный ключ средней силы
2048 bits Высокопрочный асимметричный ключ
4096 bits Высокопрочный асимметричный ключ
Алгоритм блочного шифрования
Эти алгоритмы шифруют данные по блокам. Например, алгоритм RC2 от RCA Data Security Inc.
использует блоки длиной 8 байтов. Блочные алгоритмы обычно медленнее, чем потоковые алгоритмы.
Алгоритм шифрования потока
Эти алгоритмы работают с каждым байтом данных. Потоковые алгоритмы обычно быстрее, чем блочные алгоритмы.
Рассылки сообщений
Рассылки сообщений представляют собой фиксированные размеры числовых представлений содержимого сообщений,
которые по своей сути являются переменными по размеру. Сборник сообщений вычисляется хеш-функцией, которая
представляет собой преобразование, которое отвечает двум критериям:
Хэш-функция должна быть в одну сторону. Невозможно отменить функцию, чтобы найти сообщение, соответствующее
данному дайджесту сообщений, за исключением проверки всех возможных сообщений.
Это должно быть невозможно вычислить, чтобы найти два сообщения, которые хеш для одного и того же дайджеста.
Сборник сообщений также известен как код аутентификации сообщения (MAC), поскольку он может гарантировать,
что сообщение не было изменено. Сборник сообщений отправляется с самим сообщением. Приемник может генерировать
дайджест для сообщения и сравнивать его с дайджестом отправителя. Если два дайджеста совпадают, это проверяет
целостность сообщения. Любое вмешательство в сообщение во время передачи почти наверняка приводит к другому дайджесту сообщений.
Цифровые подписи
Цифровая подпись формируется путем шифрования представления сообщения. Шифрование использует закрытый ключ
подписывающего лица, а для эффективности обычно работает над дайджестом сообщений, а не с самим сообщением.
Цифровые подписи различаются в зависимости от подписанных данных, в отличие от рукописных подписей, которые
не зависят от содержания подписанного документа. Если два разных сообщения подписываются в цифровой форме одним и
тем же объектом, две подписи отличаются друг от друга, но обе подписи могут быть проверены одним и тем же открытым ключом,
то есть открытым ключом объекта, который подписал сообщения.
Шаги процесса цифровой подписи следующие:
Отправитель вычисляет дайджест сообщения, а затем шифрует дайджест, используя закрытый ключ отправителя, формируя цифровую подпись.
Отправитель передает цифровую подпись с сообщением.
Приемник расшифровывает цифровую подпись с использованием открытого ключа отправителя, восстанавливая дайджест сообщения отправителя.
Приемник вычисляет дайджест сообщения из полученных данных сообщения и проверяет, что два дайджеста одинаковы.
Процесс цифровой подписи
Если цифровая подпись подтверждена, получатель знает, что:
Сообщение не было изменено во время передачи.
Сообщение отправлено сущностью, которая утверждает, что отправила ее.
Цифровые подписи являются частью служб целостности и аутентификации. Цифровые подписи также обеспечивают
доказательство происхождения. Только отправитель знает секретный ключ, который дает убедительные доказательства
того, что отправитель является составителем сообщения.
Примечание. Вы также можете зашифровать само сообщение, которое защищает конфиденциальность информации в сообщении.
What is in a digital certificate
Используемые цифровые сертификаты соответствуют стандарту X.509, который определяет
требуемую информацию и формат ее отправки. X.509 является частью структуры проверки подлинности стандарта X.500.
X.500 - это стандарт каталога OSI.
Открытый ключ владельца
Отличительное имя владельца
Различающееся имя ЦС, выдающего сертификат
Дата, с которой действителен сертификат
Дата истечения срока действия сертификата
Номер версии
Серийный номер
Когда вы получаете сертификат от ЦС, сертификат подписывается ЦС выдачи с цифровой подписью.
Вы проверяете эту подпись с помощью сертификата ЦС, из которого вы получаете открытый ключ для ЦС.
Вы можете использовать открытый ключ CA для проверки других сертификатов, выданных этим органом.
Получатели сертификата используют открытый ключ CA для проверки подписи.
Цифровые сертификаты не содержат ваш секретный ключ. Вы должны хранить секретный ключ в защищенном месте.
Требования к персональным сертификатам
Поддержка цифровых сертификатов, соответствующие стандарту X.509, в терминологии SSL это рассматривается
как аутентификация клиента, а это означает, что любой персональный сертификат, используемый для аутентификации
SSL, должен позволять использовать ключ аутентификации клиента. Не все сертификаты сервера имеют этот параметр,
поэтому поставщику сертификата может потребоваться включить проверку подлинности клиента в корневом ЦС для безопасного сертификата.
Органы сертификации
Центр сертификации (CA) является независимой и доверенной третьей стороной, которая выпускает цифровые сертификаты,
чтобы предоставить вам уверенность в том, что открытый ключ объекта действительно принадлежит этому объекту. Роли ЦС:
При получении запроса на получение цифрового сертификата для проверки личности запрашивающего лица перед созданием,
подписью и возвратом личного сертификата
Чтобы предоставить собственный открытый ключ CA в своем сертификате CA
Публиковать списки сертификатов, которым больше не доверяют Список отзыва сертификатов (CRL).
Для получения дополнительной информации см. Работа с списками аннулирования сертификатов и списками аннулирования полномочий
Работа со списками отзыва сертификатов и списками аннулирования полномочий
Во время установления связи SSL связывающие партнеры аутентифицируют друг друга с помощью цифровых сертификатов.
Аутентификация может включать проверку того, что полученному сертификату все равно можно доверять. Органы сертификации
(ЦС) отменяют сертификаты по различным причинам, в том числе:
Владелец переехал в другую организацию
Частный ключ больше не секрет
CA публикуют отозванные персональные сертификаты в списке отзыва сертификатов (CRL). Сертификаты CA, которые были
отозваны, публикуются в списке отзыва полномочий (ARL).
Отличные имена
Distinguished Name (DN) уникально идентифицирует объект в сертификате X.509. В DN обычно встречаются следующие типы атрибутов:
CN
Распространенное имя
O
Название организации
OU
Название подразделения
L
Название метонахождения
ST (or SP or S)
Область, штат
C
Страна
Стандарт X.509 определяет другие атрибуты, которые обычно не являются частью DN, но могут предоставлять дополнительные
расширения для цифрового сертификата. Стандарт X.509 предусматривает указание DN в строчном формате. Например:
CN=John, O=IBM, OU=Test, C=GB
Общее имя (CN) может описывать отдельного пользователя или любой другой объект, например веб-сервер.
DN может содержать несколько атрибутов OU, но допускается только один экземпляр только для каждого из других атрибутов.
Порядок записей OU значителен: в заказе указывается иерархия имен организационных единиц, сначала единица наивысшего уровня.
Как получают цифровые сертификаты
Вы получаете цифровой сертификат, отправляя информацию в ЦС. Стандарт X.509 определяет формат этой информации,
но некоторые ЦС имеют собственный формат. Запросы сертификатов обычно генерируются с помощью инструмента управления
сертификатами, используемого вашей системой, например, инструмента iKeyman в системах UNIX и RACF® на z / OS®.
Информация содержит ваше отличительное имя и сопровождается вашим открытым ключом. Когда ваш инструмент управления
сертификатами генерирует ваш запрос сертификата, он также генерирует ваш закрытый ключ, который вы должны сохранять в безопасности.
Никогда не распространяйте свой секретный ключ.
Когда CA получает ваш запрос, он проверяет вашу личность перед созданием сертификата, подписывает и возвращает его вам в
качестве личного сертификата.
Получение персональных сертификатов
Вы получаете свой личный сертификат от Центра сертификации (CA). Когда вы получаете сертификат от доверенного внешнего ЦС,
вы платите за услугу. Когда вы тестируете свою систему или вам нужно только защищать внутренние сообщения, вы можете создавать
самозаверяющие сертификаты. Они создаются и подписываются с помощью инструмента управления сертификатами, используемого
вашей системой. Самоподписанные сертификаты не могут использоваться для аутентификации сертификатов за пределами вашей организации.
На рисунке показан процесс получения цифрового сертификата от ЦС.
Как работают цепочки сертификатов
Когда вы получите сертификат для другого объекта, вам может потребоваться использовать цепочку сертификатов для
получения сертификата корневого ЦС. Цепочка сертификатов, также известная как путь сертификации, представляет собой список
сертификатов, используемых для аутентификации объекта. Цепочка или путь начинается с сертификата этого объекта, и каждый
сертификат в цепочке подписывается сущностью, идентифицированной следующим сертификатом в цепочке. Цепочка заканчивается
корневым сертификатом ЦС. Корневой сертификат CA всегда подписывается самим ЦС. Подписи всех сертификатов в цепочке
должны быть проверены до тех пор, пока не будет достигнут сертификат корневого ЦС. На рисунке показан путь сертификации
от владельца сертификата к корневому ЦС, где начинается цепочка доверия.
Когда сертификаты больше не действительны
Цифровые сертификаты выдаются на фиксированный период и недействительны по истечении срока их действия.
Сертификаты также могут стать ненадежными по различным причинам, в том числе:
Владелец переехал в другую организацию
Частный ключ больше не секрет
Орган сертификации может отменить сертификат, которому больше не доверяют, публикуя его в списке отзыва сертификатов (CRL)..
Инфраструктура открытого ключа (PKI)
Инфраструктура открытого ключа (PKI) представляет собой систему средств, политик и служб, которая поддерживает
использование криптографии с открытым ключом для аутентификации сторон, участвующих в транзакции.
Единого стандарта, который определяет компоненты инфраструктуры открытого ключа, не существует, но PKI обычно
включает в себя центры сертификации и другие органы регистрации (RA), которые предоставляют следующие услуги:
Выдача цифровых сертификатов
Проверка цифровых сертификатов
Отмена цифровых сертификатов
Распространение открытых ключей
Стандарт X.509 - это инфраструктура открытого ключа. RA проверяют информацию, предоставленную при запросе
цифровых сертификатов. Если RA проверяет эту информацию, CA может выдавать цифровой сертификат запрашивающему.
PKI может также предоставлять инструменты для управления цифровыми сертификатами и открытыми ключами.
PKI иногда описывается как иерархия доверия для управления цифровыми сертификатами, но большинство определений
включают дополнительные службы. Некоторые определения включают службы шифрования и цифровой подписи,
но они не являются существенными для работы PKI.
Концепции безопасности транспортного уровня (TLS)
Протокол TLS обеспечивает безопасность связи через Интернет и позволяет клиентским / серверным приложениям
общаться таким образом, который является конфиденциальным и надежным. Протокол имеет два уровня: протокол записи
TLS и протокол подтверждения TLS, и они накладываются над транспортным протоколом, таким как TCP / IP.
Протокол TLS основан на протоколе SSL 3.0 от Netscape. Однако, хотя подобные, TLS и SSL не совместимы.
Secure Sockets Layer (SSL) обеспечивает протокол отраслевого стандарта для безопасной передачи данных по
ненадежной сети. Протокол SSL широко используется в приложениях Internet и Intranet. SSL определяет методы аутентификации,
шифрования данных и целостности сообщений для надежного транспортного протокола, обычно TCP / IP.
SSL использует как асимметричные, так и симметричные методы криптографии.
SSL-соединение инициируется приложением-получателем, которое становится SSL-клиентом.
Приложение-ответчик становится сервером SSL. Каждый новый сеанс SSL начинается с установления связи SSL, как это определено протоколом SSL.
Шаги, связанные с SSL-квитированием, заключаются в следующем:
Клиент SSL отправляет сообщение «клиент приветствия», в котором перечислены криптографические данные,
такие как версия SSL, и в порядке предпочтений клиента CipherSuites, поддерживаемые клиентом.
Сообщение также содержит случайную байтовую строку, которая используется в последующих вычислениях.
Протокол SSL позволяет «приветствовать клиента» включать методы сжатия данных, поддерживаемые клиентом,
но текущие реализации SSL обычно не включают это положение.
Сервер SSL отвечает сообщением «сервер привет», которое содержит CipherSuite, выбранным сервером,
из списка, предоставленного клиентом SSL, идентификатора сеанса и другой случайной байтовой строки.
Сервер SSL также отправляет свой цифровой сертификат. Если серверу требуется цифровой сертификат
для аутентификации клиента, сервер отправляет «запрос сертификата клиента», который включает в себя
список типов поддерживаемых сертификатов и выдающихся имен приемлемых центров сертификации (ЦС).
Клиент SSL проверяет цифровую подпись на цифровом сертификате сервера SSL и проверяет, что CipherSuite,
выбранный сервером, является приемлемым.
Клиент SSL отправляет случайную строку байта, которая позволяет и клиенту, и серверу вычислить секретный
ключ, который будет использоваться для шифрования последующих данных сообщения. Сама строка байтового
байта зашифровывается открытым ключом сервера.
Если SSL-сервер отправил «запрос сертификата клиента», клиент SSL отправляет случайную байтовую строку,
зашифрованную с помощью закрытого ключа клиента, вместе с цифровым сертификатом клиента или
«без предупреждения о цифровом сертификате». Это предупреждение является лишь предупреждением, но с некоторыми
реализациями рукопожатие не выполняется, если аутентификация клиента является обязательной.
SSL-сервер проверяет подпись в сертификате клиента.
Клиент SSL отправляет серверу SSL «завершенное» сообщение, которое зашифровывается секретным ключом,
указывая на завершение клиентской части рукопожатия.
Сервер SSL отправляет клиенту SSL «завершенное» сообщение, которое зашифровывается секретным ключом,
указывая на завершение серверной части рукопожатия.
В течение сеанса SSL SSL-сервер и клиент SSL теперь могут обмениваться сообщениями, которые симметрично
шифруются с помощью секретного ключа общего доступа.
Обзор рукопожатия SSL
Как SSL обеспечивает аутентификацию
Во время проверки подлинности клиента и сервера есть шаг, требующий шифрования данных одним из ключей в
асимметричной паре ключей и дешифровкой с другим ключом пары.
Для аутентификации сервера клиент использует открытый ключ сервера для шифрования данных, которые
используются для вычисления секретного ключа. Сервер может генерировать секретный ключ только в том случае,
если он может дешифровать эти данные с помощью правильного закрытого ключа.
Для аутентификации клиента сервер использует открытый ключ в сертификате клиента для дешифрования данных,
отправленных клиентом во время шага 5 рукопожатия. Обмен готовых сообщений, зашифрованных секретным ключом,
подтверждает, что аутентификация завершена.
Если какой-либо из шагов аутентификации выходит из строя, рукопожатие выходит из строя и сеанс завершается.
Обмен цифровыми сертификатами во время установления связи SSL является частью процесса аутентификации.
Необходимые сертификаты заключаются в следующем: CA X выдает сертификат клиенту SSL, а CA Y выдает сертификат на сервер SSL:
Для аутентификации сервера необходим сервер SSL:
Персональный сертификат, выданный сервером CA Y
Закрытый ключ сервера
и клиенту SSL необходимо:
Сертификат CA для CA Y или персональный сертификат, выданный серверу CA Y
Если серверу SSL требуется аутентификация клиента, сервер проверяет идентификацию клиента, проверяя цифровой
сертификат клиента открытым ключом для ЦС, который выдал персональный сертификат клиенту, в этом случае CA X.
Для аутентификации на сервере и на клиенте Сервер SSL необходим:
Персональный сертификат, выданный сервером CA Y
Закрытый ключ сервера
Сертификат CA для CA X или персональный сертификат, выданный клиенту CA X
и клиенту SSL необходимо:
Персональный сертификат, выданный клиенту CA X
Закрытый ключ клиента
Сертификат CA для CA Y или персональный сертификат, выданный серверу CA Y
Для SSL-сервера и SSL-клиента могут потребоваться другие сертификаты CA для формирования цепочки сертификатов
к корневому сертификату CA.
Как SSL обеспечивает конфиденциальность
Для обеспечения конфиденциальности сообщений SSL использует комбинацию симметричного и асимметричного шифрования.
Во время установления связи SSL SSL-клиент и сервер SSL соглашаются с алгоритмом шифрования и общим секретным ключом,
который будет использоваться только для одного сеанса. Все сообщения, передаваемые между клиентом SSL и сервером SSL,
шифруются с использованием этого алгоритма и ключа, гарантируя, что сообщение остается закрытым, даже если оно перехвачено.
SSL поддерживает широкий спектр криптографических алгоритмов. Поскольку SSL использует асимметричное шифрование при
транспортировке общего секретного ключа, проблема с распространением ключей с SSL отсутствует.
Как SSL обеспечивает целостность
SSL обеспечивает целостность данных, вычисляя дайджест сообщений.
CipherSuites и CipherSpecs
CipherSuite - это набор криптографических алгоритмов, используемых SSL-соединением. Набор состоит из трех различных алгоритмов:
Алгоритм обмена ключами и аутентификации, используемый во время установления связи SSL
Алгоритм шифрования, используемый для шифрования данных
Алгоритм MAC (Message Authentication Code), используемый для генерации сообщения
Существует несколько вариантов для каждого компонента пакета, но только определенные комбинации действительны,
если они указаны для соединения SSL. Имя действительного CipherSuite определяет комбинацию используемых алгоритмов.
Например, CipherSuite SSL_RSA_WITH_RC4_128_MD5 указывает:
Алгоритм обмена ключами и аутентификации RSA
Алгоритм шифрования RC4 с использованием 128-битного ключа
Алгоритм MAC MD5
Для обмена ключами и аутентификации доступно несколько алгоритмов, но алгоритм RSA в настоящее время наиболее широко
используется. Существует большее разнообразие алгоритмов шифрования и алгоритмов MAC, которые используются.
CipherSpec идентифицирует комбинацию алгоритма шифрования и алгоритма MAC.
Оба конца SSL-соединения должны согласовывать один и тот же CipherSpec для связи.