В больших серьезных компаниях, где о безопасности информации думают более широко, чем во многих существующих компаниях, клиентские сертификаты используются для обеспечения корпоративной политики безопасности. Основной задачей клиентского сертификата является:
- аутентификация пользователя,
- авторизация пользователя,
- обеспечение блокировки пользователя при необходимости, например увольнении.
Особенностью клиентского сертификата заключается тот факт, что для одного пользователя их может быть выдано большое количество. В Microsoft Active Directory (AD) сертификаты пользователя привязываются к учетной записи. Тоесть в AD создается пользователь, после этого выдается на него сертфикат, открытая часть которого подписывается в Корпоративном Центре Сертификации (ЦС).
Подписать сертификат необходимо по той причине, чтобы любой мог удостовериться, что данный сертификат выдан именно этим ЦС. Все это возможно благодаря асинхронному шифрованию.
Асинхронное шифрование – это такое шифрование, при котором сообщение шифруется одним ключом, а расшифровать его можно только с помощью второго парного ключа.
Благодаря этому гениальному асинхронному шифрованию и появилась возможность производить 2 действия:
- подписывать сообщения, чтобы все могли удостовериться, что данное сообщение написано именно тем субъектом, за кого он себя выдает;
- обмениваться сообщениями между субъектами и быть уверенным, что прочитать его сможет только тот, кому оно предназначается.
Конечно же, вышеописанные 2 пункта действуют только при условии, что секретный ключ не был утерян или украден у настоящего владельца.
Секрет асинхронного шифрования заключается в том, что:
- есть определенная математическая функция, передав в которую исходное сообщение и определенный ключ, на выходе получим “нечитаемую последовательность символов”;
- полученную “нечитаемую последовательность симоволов” можно вернуть в исходное состояние (исходное сообщение), но не при помощи ключа, который использовался для шифрования, а при помощи другого определенного ключа. Тоесть передав в функцию “нечитаемую последовательность символов” и второй ключ на выходе мы получаем исходное сообщение.
Это действительно просто (если не вдаваться в подробности как это все происходит на уровне математики).
А теперь самое главное для понимания. В применении к области защиты информации, асинхронное шифрование содержит:
- закрытый ключ – хранится у владельца и никогда никому не показывается;
- открытый ключ – раздается всем, кому необходимо поддерживать гарантированную связь с обладателем закрытого ключа.
Таких пар ключей очень много, поэтому их хватит на всех, кому они необходимы.
Закрытый ключ – данный ключ применяется:
- Чтобы подписывать свои сообщения (распространенное применение на сегодняшний день — электронно-цифровая подпись). Это гарантирует читателю, что данное сообщение было написано именно этим суюъектом. Для проверки необходим второй ключ из пары открытый и закрытый ключ.
- Чтобы расшифровывать те сообщения, которые были зашифрованы с помощью открытого ключа. Тоесть, любой, у кого есть открытый ключ из пары открытый и закрытый ключ (а он есть у всех, кому необходим и не является в данной концепции защиты информации объектом защиты от утечки) может зашифровать свое сообщение и никто не соможет прочитать его кроме владельца второго закрытого ключа.
В следующей статье я планирую рассказать о HASH сообщения и для чего он необходим. После этого можно будет перейти непосредственно к сертификатам, поскольку без этой информации понимание работы и предназначения сертификата будет отсутствовать совсем или крайне неполным. Рекомендую вникнуть в эту информацию до того, как перейти к изучению принципа работы сертификатов.
А немного позже напишу пост о http_x_arr_clientcert – переменная, которая применяется в Microsoft IIS при настройке редиректа.