Пропустить навигацию

Лекция 9. Криптография, цифровые сертификаты, PKI.

Лекция 9. Криптография, цифровые сертификаты, PKI.

Криптография — это наука об использовании математики для шифрования и дешифрования данных. Криптография позволяет хранить важную информацию или передавать её по ненадёжным каналам связи (таким как Интернет) так, что она не может быть прочитана никем, кроме легитимного получателя.

При шифровании симметричным, ключом, один и тот же ключ используется как для шифрования, так и для дешифрования данных. Data Encryption Standart (DES) — пример симметричного алгоритма, широко применявшегося на Западе с 70-х годов в банковской и коммерческой сферах. В настоящее время его сменяет Advanced Encryption Standard (AES). Рисунок  иллюстрирует процесс симметричного шифрования.

Общая схема шифрования симметричным ключом

Рис. 1.  Общая схема шифрования симметричным ключом

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

Глобальная проблема симметричных шифров состоит в сложности управления ключами: как  доставить ключ получателю без риска, что его перехватят?

Криптография с открытым ключом

Проблема управления ключами была решена криптографией с открытым, или асимметричным, ключом, концепция которой была предложена Уитфилдом Диффи и Мартином Хеллманом в 1975 году.

Криптография с открытым ключом — это асимметричная схема, в которой применяются пары ключей: открытый (public key), который зашифровывает данные, и соответствующий ему закрытый (private key), который их расшифровывает. Открытый ключ можно распространять без ограничений, в то время как закрытый держится в тайне. Любой человек с копией вашего открытого ключа может зашифровать информацию, которую только вы сможете прочитать.

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

Общая схема шифрования с открытым ключом

Рис. 2.  Общая схема шифрования с открытым ключом

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

Примерами криптосистем с открытым ключом являются:

  • RSA (названная в честь изобретателей: Рона Ривеста, Ади Шамира и Леонарда Адлмана);
  • Diffie-Hellman (названная в честь её создателей);
  • DSA, Digital Signature Algorithm (изобретённый Дэвидом Кравицом).

Ключи

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

Несмотря на то, что ключевая пара математически связана, практически невозможно из открытого ключа вычислить закрытый ключ; в то же время, вычисление закрытого ключа всегда остаётся возможным, если располагать достаточным временем и вычислительными мощностями. Вот почему критически важно создавать ключ верной длины: достаточно крупный, чтобы был надёжным, но достаточно малый, чтобы оставался быстрым в работе.

По современным представлениям 128-битовые симметричные ключи совершенно надёжны и не подвержены взлому, по крайней мере до тех пор, пока кто-то не построит функционирующий квантовый суперкомпьютер. 256-битовые ключи по оценкам криптологов не могут быть взломаны даже теоретически и даже на гипотетическом квантовом компьютере. Именно по этой причине алгоритм AES поддерживает ключи длиной 128 и 256 бит.

Цифровые подписи

Дополнительное преимущество от использования криптосистем с открытым ключом состоит в том, что они предоставляют возможность создания электронных цифровых подписей (ЭЦП). Цифровая подпись позволяет получателю сообщения убедиться в аутентичности источника информации, а также проверить, была ли информация изменена (искажена), пока находилась в пути. Таким образом, цифровая подпись является средством аутентификации и контроля целостности данных. Кроме того, ЭЦП несёт принцип неотречения, который означает, что отправитель не может отказаться от факта своего авторства подписанной им информации. Эти возможности столь же важны для криптографии, как и секретность.

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

Простой способ генерации ЭЦП

Рис. 3.  Простой способ генерации ЭЦП

Хэш-функция

Однако описанная выше схема крайне медлительна и производит слишком большой объём данных — по меньшей мере, вдвое больше объёма исходной информации. Улучшением такой схемы становится введение в процесс преобразования нового компонента — односторонней хэш-функции. Односторонняя хэш-функция берёт ввод произвольной длины, называемый прообразом, — в данном случае, сообщение любого размера — и генерирует строго зависящий от прообраза вывод фиксированной длины, допустим, 160 бит. Хэш-функция гарантирует, что если информация будет любым образом изменена — даже на один бит, — в результате получится совершенно иное хэш-значение.

Обработка сообщения криптографически стойким односторонним хэш-алгоритмом приводит к генерации строки ограниченной длины, называемой дайджестом сообщения (message digest). (Опять же, любое изменение прообраза приведёт к абсолютно иному дайджесту.)

Затем криптосистема зашифровывает полученный дайджест закрытым ключом отправителя, создавая «электронную подпись», и прикрепляет её к прообразу. Криптосистема передаёт ЭЦП вместе с исходным сообщением. По получении сообщения, адресат при помощи криптосистемы заново вычисляет дайджест подписанных данных, расшифровывает ЭЦП открытым ключом отправителя, тем самым сверяя, соответственно, целостность данных и их источник; если вычисленный адресатом и полученный с сообщением дайджесты совпадают, значит, информация после подписания не была изменена.

Схема работ хэш-функции

Рис. 4.  Схема работ хэш-функции

Малейшее изменение в подписанном документе будет обнаружено в процессе сверки ЭЦП.

Цифровые сертификаты

Одна из главных проблем асимметричных криптосистем состоит в том, что пользователи должны постоянно следить, зашифровывают ли они сообщения истинными ключами своих корреспондентов. В среде свободного обмена открытыми ключами через общественные серверы-депозитарии атаки по принципу"человек посередине" представляют серьёзную потенциальную угрозу. В этом виде атак злоумышленник подсовывает пользователю собственный ключ, но с именем предполагаемого адресата; данные зашифровываются подставным ключом, перехватываются его владельцем-злоумышленником, попадая в итоге в чужие руки.

В среде криптосистем с открытым ключом критически важно, чтобы вы были абсолютно уверены, что открытый ключ, которым собираетесь что-то зашифровать — не искусная имитация, а истинная собственность вашего корреспондента. Можно попросту шифровать только теми ключами, которые были переданы вам их владельцами из рук в руки на дискетах. Но предположим, что нужно связаться с человеком, живущим на другом краю света, с которым вы даже незнакомы; как вы можете быть уверены, что получили его подлинный ключ?

Цифровые сертификаты ключей упрощают задачу определения принадлежности открытых ключей предполагаемым владельцам.

Сертификат есть форма удостоверения. Иные виды удостоверений включают ваши водительские права, государственный паспорт, свидетельство о рождении, и т. п. Каждое из них несёт некоторую идентифицирующую вас информацию и определённую защищённую запись, что кто-то другой (госструктура, организация) установил вашу личность. Некоторые сертификаты, такие как паспорт — исчерпывающее подтверждение вашей личности; будет довольно скверно, если кто-то похитит его, чтобы выдать себя за вас.

Цифровой сертификат ключа — это информация, прикреплённая к открытому ключу пользователя, помогающая другим установить, является ли ключ подлинным и верным. Цифровые сертификаты нужны для того, чтобы сделать невозможной попытку выдать ключ одного человека за ключ другого.

Цифровой сертификат состоит из трёх компонентов:

  • открытого ключа, к которому он приложен;
  • данных, или записей, сертификата (сведения о личности пользователя, как то, имя, электронная почта и т. п., а также, по необходимости, дополнительные ограничительные сведения: права допуска, рабочие лимиты и прочее);
  • одной или нескольких цифровых подписей, "связывающих" ключ с сертификатом.

Цель ЭЦП на сертификате — указать, что сведения сертификата были заверены доверенным третьим лицом или организацией. В то же время цифровая подпись не подтверждает достоверность сертификата как целого; она является поручительством только того, что подписанная запись сертификата (идентифицирующая информация) связаны с данным открытым ключом.

Таким образом, сертификат — это открытый ключ с прикреплёнными к нему одной или несколькими формами ID плюс отметка подтверждения от доверенного лица, "связывающая" ID и открытый ключ.

Цифровой сертификат

Рис. 5.  Цифровой сертификат

Распространение сертификатов

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

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

Такая система может реализоваться в форме простого хранилища-депозитария, называемого сервером-депозитарием открытых ключей, или иметь более сложную и комплексную структуру, предполагающую дополнительные возможности администрирования ключей, и называемую инфраструктурой открытых ключей (Public Key Infrastructure, PKI).

Инфраструктура открытых ключей PKI (Public Key Infrastructure)

Сервер-депозитарий, (сервер сертификатов, или сервер ключей) — это сетевая база данных, позволяющая пользователям оставлять и извлекать из неё цифровые сертификаты. Сервер ключей также может иметь некоторые функции администрирования, помогающие организации поддерживать свою политику безопасности.

Инфраструктура открытых ключей (Public Key Infrastructure, PKI) – предназначена для управления сертификатами открытых ключей в целях поддержки услуг аутентификации, шифрования, целостности и неотказуемости (неотрицаемости авторства).

Подлинность открытого криптографического ключа и его связь с определенным пользователем в рамках PKI удостоверяются сертификатом открытого ключа. Более того, принадлежность сертификата открытого ключа заверяется специальным доверенным учреждением – центром сертификации.

Сертификат открытого ключа  цифровой документ, подтверждающий соответствие между открытым ключом и информацией, идентифицирующей владельца ключа. В сертификате открытого ключа содержатся также сведения об открытом ключе, его назначении и области применения, а также наименование центра сертификации, выдавшего данный сертификат. Информация, содержащаяся в сертификате открытого ключа, снабжается цифровой подписью центра сертификации. На практике наиболее часто используются сертификаты стандарта X.509 v3.

Центр сертификации (Certificate Authority - СА) – доверенная третья сторона, чья подпись под сертификатом подтверждает подлинность и целостность открытого ключа и принадлежность его соответствующему владельцу. Его называют также удостоверяющий центр (УЦ).

Список отозванных сертификатов (Certificate Revocation List – CRL) – каталог скомпрометированных сертификатов.

Простейшую модель PKI можно построить с использованием только одного CA. При этом пользователи будут применять криптографические операции с открытым ключом в своих приложениях при получении и обработке сертификатов и CRL. однако достаточно трудно при наличии только одного СА обеспечить необходимый уровень масштабируемости при выполнении всех задач, связанных с созданием и распространением сертификатов и CRL. Поэтому обычно PKI  строится из различных компонентов, каждый из которых предназначен для специализированного выполнения нескольких задач.

Схема работы удостоверяющих центров

Схема работы удостоверяющих центров

Рис. 6.  Схемы работы удостоверяющих центров

Аутентификация с использованием сертификатов открытого ключа.

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

Общий процесс подтверждения подлинности пользователя состоит из следующих стадий:

  1. получение открытого ключа СА (одноразовый процесс)
  2. получение по некоторому незащищенному каналу от этого пользователя его открытого ключа;
  3. получение идентификатора пользователя:
    • проверка даты и времени относительно срока действия (при наличии такового), указанного в сертификате, на основе локальных доверенных часов.
    • проверка действительности открытого ключа СА;
    • проверка подписи под сертификатом пользователя с помощью открытого ключа СА;
    • проверка сертификата на предмет отзыва;
  4. Если все проверки успешны, открытый ключ в сертификате считается подлинным открытым ключом заявленного пользователя;
  5. проверка на наличие у пользователя закрытого ключа, соответствующего данному сертификату, с помощью алгоритма запрос ответ.

В качестве примеров алгоритмов, работающих таким образом, можно назвать протокол SSL.