У факультета ВМК есть корпоративная почта https://webmail.cmc.msu.ru. Если вы перейдёте по этому адресу в браузере, то случится страшное! Появится сообщение «Сертификат безопасности этого веб-узла не был выпущен доверенным центром сертификации» и рекомендация покинуть страницу. Что же произошло? Попробуем разобраться на примере почтового сервиса Gmail.
Таинства безопасности
Сервис Gmail позиционируется как очень безопасный. Когда вы заходите на gmail.com, вводите логин и пароль и нажимаете «Войти», происходит перенаправление на страницу, имеющую префикс https (такой же, как в адресе почты факультета) вместо привычного http. Это означает, что данные передаются по защищённому каналу, то есть логин и пароль шифруются перед отправкой на сервер, где они будут расшифрованы и проверены на корректность.
Чтобы что-то зашифровать, нужно иметь ключ. Серверу для расшифрования логина и пароля нужно знать на каком ключе они зашифрованы! Как же передать этот ключ? Если перешлём обычным способом, злоумышленник может его узнать, значит, и сам ключ надо зашифровать. Но тогда нужно передавать и ключ шифрования ключа! Значит, его также нужно зашифровать! Эти нехитрые размышления заводят в тупик. Получается, шифрование логина и пароля абсолютно неосуществимо?
Как возможно шифрование?
Уитфилд Диффи и Мартин Хеллман в 1976 году опубликовали статью «New Directions in Cryptology», в которой предложили концепцию криптосистемы с открытым ключом. Традиционное шифрование предполагает, что у отправителя и получателя имеется общий ключ, хранящийся в секрете. Это похоже на обмен сообщениями через ящик с врезным замком. Если вы с товарищем хотите тайно обмениваться сообщениями, то покупаете такой ящик и берёте ключи от него. Ваш друг кладёт записку в ящик, закрывает его своим ключом и передаёт ящик вам. Получив ящик, вы открываете его собственным ключом.
Шифрование с помощью криптосистемы с открытым ключом можно сравнить с обменом сообщениями через ящик с амбарным замком.Представьте себе место, где каждый может (совершенно бесплатно!) хранить свой амбарный замок. Вы покупаете амбарный замок и оставляете себе ключ от него, который больше никому не передаёте. Открыв замок, вы сдаёте его в хранилище. Ваш друг, желающий отправить вам сообщение, берёт ящик, находит ваш замок в хранилище и запирает им ящик. Заметьте: ключ ему для этого совершенно не нужен. Получив ящик от друга, вы просто открываете замок своим ключом.
В криптографии ключ от амбарного замка, который хранится у вас, называется закрытым ключом, а сам амбарный замок – открытым. Защёлкивание замка – алгоритм шифрования, а открытие замка – алгоритм расшифрования. Иногда алгоритм шифрования называют дешифрованием. Но это некорректно: обычно под дешифрованием понимается взлом криптограммы злоумышленником. В нашем примере это взлом амбарного замка с помощью отмычки или процедура изъятия у вас ключа с помощью паяльника
Протокол SSL/TLS на основе амбарных замков
Вернёмся к почте Gmail. Вооружившись замками и ключами, опишем процесс взаимодействия браузера и сервера.
Сначала компания Google купила амбарный замок, открыла его и надёжно спрятала ключ. По нажатию на кнопку «Войти» браузер запрашивает у сервера Gmail амбарный замок для шифрования. Сервер отсылает его браузеру по незащищённому каналу.
Получив амбарный замок, браузер генерирует собственный ящик с врезным замком. Дело в том, что в реальности пара логин и пароль шифруется именно криптосистемой с секретным ключом (ящиком с врезным замком), а не криптосистемой с открытым ключом (ящиком с амбарным замком), ведь врезной замок намного надёжнее амбарного! Секретный ключ при этом генерируется браузером случайным образом и кладётся в другой специальный ящик, который закрывается амбарным замком и отправляется почтовому серверу. Сервер, получив посылку, достает из надёжного места ключ от амбарного замка и вынимает из ящика ключ от ящика браузера.
Теперь у браузера есть свой ящик с врезным замком, а сервер имеет копию ключа от него. Всё готово для отправки логина и пароля.
Браузер помещает логин и пароль в ящик с врезным замком, закрывает его своим ключом и отправляет серверу. Тот открывает ящик копией ключа и достаёт оттуда логин и пароль. Дальше всё просто: сервер проверяет корректность пары логин-пароль и либо открывает доступ к почте, либо сообщает, что данные неверны.
Описанная процедура обмена носит название протокол SSL/TLS. Конечно, вместо замков и ящиков в SSL/TLS используются их криптографические аналоги, для описания и построения которых применяется сложнейший математический аппарат линейной алгебры, дискретной математики, теории групп, теории конечных полей, теории чисел, теории вероятностей…
А как же сертификаты?
Снова обратимся к почте ВМК и выясним, о каком сертификате идёт речь в сообщении браузера. Как вы помните, в схеме шифрования с открытым ключом (ящик с амбарным замком) мы предположили наличие некоторого хранилища амбарных замков. Для шифрования сообщения ваш друг должен забрать замок из хранилища. Но если в этом хранилище поменяют ваш замок на замок Васи Пупкина, произойдет путаница, Вася перехватит ваш ящик и сможет прочитать переданный секрет! Избавиться от таких неприятностей помогает сертификат открытого ключа: он гарантирует, что амбарный замок принадлежит вам, а не Васе.
Если продолжать аналогию, сертификат работает так. Пусть доверенное хранилище имеет печать и бумажный конверт. Когда вы сдаёте замок, хранилище проверяет ваш паспорт, кладёт замок в бумажный конверт, подписывает его вашим именем и ставит печать. Теперь невозможно вскрыть конверт, не повредив штамп. Всё! Никто не сможет подменить ваш замок. На языке криптографии хранилище называется удостоверяющим центром, а конверт – сертификатом открытого ключа. Эти сертификаты гарантируют, что открытый ключ принадлежит именно вам.
Сообщение с предупреждением о доверии к сертификату открытого ключа появляется, в частности, если этот сертификат создан удостоверяющим центром, которому вы ещё не доверяете. Внимательно прочитайте сообщение браузера: если речь идёт именно о непроверенном издателе -- посмотрите, кем был выпущен сертификат (в разных браузерах это делается по-разному, например, в Chrome нажмите на пиктограмму перечёркнутого замка слева в строке адреса и выберите пункт «Информация сертификата»). В случае почты ВМК, в поле «Кем выдан» стоит «ca.cms.msu.ru», а в поле «Кому выдан» – «webmail.cmc.msu.ru», так что можно смело открывать главную страницу почтового сервера. В других случаях так поступать не стоит.
А лучше всё-таки назначить удостоверяющий центр «ca.cmc.msu.ru» доверенным. Как – это уже совсем другая история…
очень мелкий шрифт...и без картинок как-то сложно въехать.
ОтветитьУдалитьскопирую и дополню статью в своем блоге http://pro-club.org/index.php/site/blog
ОтветитьУдалить