ООП в Python
ВВЕДЕНИЕ
шифр сертификат интернет
Наверное, нет ни одного человека, не знакомого с понятием "шифрование". Каждому пользователю компьютера приходилось защищать свои файлы от "чужого глаза" и шифрование в этом помогает как нельзя лучше. Но намного чаще возникает желание передать защищенные файлы по каналам связи. Особенно актуально задача защищенной передачи данных и подтверждение их подлинности встает сейчас, после принятия Закона об ЭЦП.
Какие же проблемы могут возникнуть у вас при попытке передать какие-либо данные в зашифрованном виде? Если вы выбираете какой-либо симметричный алгоритм шифрования (например, DES или ГОСТ 28147-89), то один и тот же ключ используется и для зашифрования и расшифрования данных. Т.е. ваш оппонент должен иметь ключ, используемый для шифрования. Передать этот ключ по обычным каналам связи в открытом виде не представляется возможным - любой получивший доступ к этому ключу сможет расшифровать ваши данные. Одним из решений этой проблемы является использование фельдъегерской службы, но это очень дорого и не всегда применимо на практике.
Вторым решением, которое получило широкое распространение в коммерческих и государственных структурах, является применением криптографии с открытыми ключами (например, RSA), смысл которой заключается в следующем. Вместо одного секретного ключа используется два - закрытый (или секретный) и открытый (или публичный). Исходя из названия последнего, можно сделать вывод, что он распространяется без ограничений, и именно он используется при зашифровании информации для владельца этого ключа. Т.к. открытый и закрытый ключи связаны между собой особыми математическими преобразованиями, то расшифровать полученные данные можно только с помощью секретного ключа, входящего в пару "открытый/закрытый ключи".
На первый взгляд проблема с передачей зашифрованных сообщений решена, но… это только на первый взгляд. Как пользователь, получивший открытый ключ своего оппонента сможет удостовериться, что ключ получен именно от него, а не от злоумышленника, решившего проникнуть в чужие тайны? Вторая проблема, как владелец открытого ключа сможет убедиться в том, что он послал свой ключ своему оппоненту, а не маскирующемуся злоумышленнику?
При небольшом числе участников защищенного обмена, к тому же проживающих
в одном городе, эта проблема решается элементарно - достаточно встретиться
вместе и обменяться на дискете открытыми ключами. Но что делать, если участники
находятся в разных городах (а зачастую и странах) и таких участников слишком
много - сотни тысяч и даже миллионы? И вот тут на сцену выходит PKI (Public Key
Infrastructure).
1. ИНФРАСТРУКТУРА PKI
- инфраструктура открытых ключей - вводит два новых элемента - эмитент (CA, Certificate (CA, Certificate Authority) или "удостоверяющий центр" в терминах Закона об ЭЦП (иногда используется термин "центр сертификации") и сертификат. Именно на эмитента возложена задача выпуска сертификатов, т.е. электронных документов, которые связывает открытый ключ с конкретным субъектом, таким как компьютер или пользователь. Такие эмитенты известны во всем мире. Среди них компании VeriSign и Thawte Consulting. Кстати, последняя компания уже выдает такие сертификаты российским компаниям. Например, Internet-магазин "оЗон" или страховая компания "Ренессанс-Страхование", осуществляющая страхование через Internet, уже имеют сертификаты, выпущенные Thawte. Сертификат, который содержит информацию о владельце открытого ключа, подписан ЭЦП удостоверяющего центра. Таким образом, нет необходимости проверять подлинность каждого открытого ключа - достаточно проверить подлинность ЭЦП центра сертификации. Кстати, это очень важный момент. При отсутствии доверия к центру сертификатов вся инфраструктура PKI не имеет смысла.
С технической точки зрения удостоверяющим центром может стать абсолютно любая компания и даже конкретный пользователь, т.к. компания Microsoft и здесь явила свое присутствие, включив в состав своей операционной системы пакет Microsoft Certificate Services, позволяющий организовать небольшой центр сертификации. Существуют и другие решения, которые ориентированы на создание полномасштабных удостоверяющих центров в рамках крупной корпорации и даже страны. Например, в России известна компания Baltimore Technologies с ее семейством UniCERT.
В основе PKI лежит использование криптографической системы с открытым ключом и несколько основных принципов:
1. закрытый ключ известен только его владельцу;
2. удостоверяющий центр создает сертификат открытого ключа, таким образом удостоверяя этот ключ;
. никто не доверяет друг другу, но все доверяют удостоверяющему центру;
· Регистрационный центр (РЦ) - необязательный компонент системы, предназначенный для регистрации пользователей. Для этих целей РЦ обычно предоставляет веб-интерфейс. Удостоверяющий центр доверяет регистрационному центру проверку информации о субъекте. Регитрационный центр, проверив правильность информации, подписывает её своим ключом и передаёт удостоверяющему центру, который, проверив ключ регистрационного центра, выписывает сертификат. Один регистрационный центр может работать с несколькими удостоверяющими центрами (то есть состоять в нескольких PKI), один удостоверяющий центр может работать с несколькими регистрационными центрами. Иногда, удостоверяющий центр выполняет функции регистрационного центра.
· Репозиторий - хранилище, содержащее сертификаты и списки отозванных сертификатов (СОС) и служащее для распространения этих объектов среди пользователей. В Федеральном Законе РФ № 63 «Об электронной подписи» он называется реестр сертификатов ключей подписей.
· Архив сертификатов - хранилище всех изданных когда-либо сертификатов (включая сертификаты с закончившимся сроком действия). Архив используется для проверки подлинности электронной подписи, которой заверялись документы.
· Центр запросов - необязательный компонент системы, где конечные пользователи могут запросить или отозвать сертификат.
· Конечные пользователи - пользователи, приложения или системы, являющиеся владельцами сертификата и использующие инфраструктуру управления открытыми ключами.
· обеспечение конфиденциальности информации;
· обеспечение целостности информации;
· обеспечение аутентификации пользователей и ресурсов, к которым обращаются пользователи;
· обеспечение возможности подтверждения совершенных пользователями действий с информацией (неотказуемость, или апеллируемость - англ. non-repudiation).напрямую не реализует авторизацию, доверие, именование субъектов криптографии, защиту информации или линий связи, но может использоваться как одна из составляющих при их реализации.
Задачей PKI является определение политики выпуска цифровых сертификатов, выдача их и аннулирование, хранение информации, необходимой для последующей проверки правильности сертификатов. В число приложений, поддерживающих PKI, входят: защищённая электронная почта, протоколы платежей, электронные чеки, электронный обмен информацией, защита данных в сетях с протоколом IP, электронные формы и документы с электронной цифровой подписью (ЭП).
Деятельность инфраструктуры управления открытыми ключами осуществляется на основе регламента системы. Инфраструктура открытых ключей основывается на использовании принципов криптографической системы с открытым ключом. Инфраструктура управления открытыми ключами состоит из центра сертификации(удостоверяющего центра - УЦ), конечных пользователей и опциональных компонентов: центра регистрации и сетевого справочника.оперирует в работе сертификатами. Сертификат - это электронный документ, который содержит электронный ключ пользователя, - открытый или же ключевую пару (keypair), - информацию о пользователе, которому принадлежит сертификат, удостоверяющую подпись центра выдачи сертификатов (УЦ) и информацию о сроке действия сертификата.
Для того, чтобы клиент мог работать с удостоверяющим центром, необходимо включить центр в список доверенных. После включения в этот список, любой сертификат, выданный доверенным центром, считается достоверным, а его владелец - достойным доверия.
Удостоверяющий центр также публикует и списки отозванных сертификатов (Certificate Revocation List/CRL), которые могут использовать клиенты инфраструктуры открытого ключа, когда решают вопрос о доверии сертификату пользователя и/или компьютера.
Ключевая пара - это набор, состоящий из двух ключей: секретного ключа (private key) и открытого ключа (public key). Эти ключи создаются вместе, являются комплементарными по отношению друг к другу (то, что зашифровано с помощью открытого ключа можно расшифровать, только имея секретный ключ, а подпись, сделанную с помощью секретного ключа, можно проверить, используя открытый ключ).
Создаётся пара ключей либо центром выдачи сертификатов (удостоверяющим центром) по запросу пользователя, или же самим пользователем с помощью специального программного обеспечения.
Пользователь делает запрос на сертификат, после чего, после процедуры идентификации пользователя, центр выдаёт ему сертификат со своей подписью. Эта подпись свидетельствует о том, что данный сертификат выдан именно этим центром выдачи сертификатов и никем другим.
Секретный ключ используется для подписи данных, открытый ключ, в свою очередь, используется для шифрования данных. Открытый ключ известен всем, а секретный ключ хранится в тайне. Владелец секретного ключа всегда хранит его в защищённом хранилище и ни при каких обстоятельствах не должен допустить того, чтобы этот ключ стал известным злоумышленникам или другим пользователям. Если же секретный ключ всё-таки станет известен злоумышленникам, то он считается скомпрометированным и должен быть отозван и заменен. Только владелец секретного ключа может подписать данные, а также расшифровать данные, которые были зашифрованы открытым ключом, соответствующим секретному ключу владельца. Подпись на данных или письме гарантирует авторство полученной информации и том, что информация в процессе передачи не подверглась изменениям. Подпись двоичного кода гарантирует, что данное программное обеспечение действительно произведено указанной компанией и не содержит вредоносного кода, если компания это декларирует.
1.5 Некоторые основные моменты
Разберём подробнее следующие моменты:
• В чём заключается работа УЦ
• Как происходит выдача сертификата, обмен открытыми ключами и как понять, что открытый ключ, который мы имеем, не фальшивый
• Какие бывают PKI.
УЦ и его работа
Основная работа удостоверяющего центра заключается в идентификации пользователей и их запросов на сертификаты, в выдаче пользователям сертификатов, в проверке подлинности сертификатов, в проверке по сертификату, не выдаёт ли пользователь сертификата себя за другого, в аннулировании или отзыве сертификатов, в ведении списка отозванных сертификатов.
Для того чтобы получить сертификат, нужно найти какой-либо УЦ в интернете (альтернативным решением является использование ПО PGP или ему подобных), после чего выписать сертификат и установить его себе в систему. Обычно этот процесс происходит автоматически. После установки сертификата его можно будет увидеть у себя в хранилище личных сертификатов. Для того чтобы просмотреть его свойства, достаточно просто открыть его. (Для операционных систем семейства Windows: Пуск -> Выполнить -> certmgr.msc -> OK). В свойствах можно увидеть время действия сертификата, кем он был выдан, кому был выдан, его уникальный номер и прочие свойства. После получения сертификатов двумя или более пользователями от одного УЦ, происходит организация простейшей по архитектуре PKI. PKI - с одиночным УЦ.
Пользователи, сохранив сертификаты в файл обмениваются ими (таким образом происходит обмен открытыми ключами) и начинают защищённую переписку. Проверка подлинности полученного открытого ключа проводится по электронному отпечатку этого ключа. В простейшем случае достаточно позвонить коллеге выславшему открытый ключ и сверить с ним электронный отпечаток ключа. Если он совпал - можно смело начинать защищённую переписку, если нет - обменяться ключами ещё раз. Какие же бывают PKI по архитектуре, кроме как одиночные УЦ?
В основном выделяют 5 видов архитектур PKI, это:
1. простая PKI (одиночный УЦ)
2. иерархическая PKI
. сетевая PKI
. кросс-сертифицированные корпоративные PKI
. архитектура мостового УЦ
В основном PKI делятся на разные архитектуры по следующим признакам:
· количество УЦ (а также количество УЦ, которые доверяют друг-другу)
· сложность проверки пути сертификации
· последствия выдачи злоумышленника себя за УЦ
Рассмотрим более подробно каждую из архитектур PKI в отдельности.
Как уже говорилось выше, самая простая из архитектур, это архитектура
одиночного УЦ. В данном случае все пользователи доверяют одному УЦ и переписываются между собой. В данной архитектуре, если злоумышленник выдаст себя за УЦ, необходимо просто перевыпустить все выписанные сертификаты и продолжить нормальную работу.