ВЕБ ПОД ЗАМКОМ! Kirion (kkr@mailru.com) Спецвыпуск Xakep, номер #030, стр. 030-014-4 Сертификаты можно применять не только для защиты сайта, но и для защиты мыла (с помощью надстройки secure MIME), для защиты исходников (если ты программер) и, что важно, для цифровой подписи. Цифровая подпись - вещь нужная: при передаче информации по сети получатель (да и сам отправитель) должен быть уверен, что чел, от которого пришла инфа, - тот, за кого он себя выдает, и что информация не была искажена (умышленно или случайно). Первая проблема решается асимметричным шифрованием наоборот, то есть сообщение шифруется закрытым ключом. Соответственно, расшифровать его можно только открытым ключом, а он прописан в сертификате вместе с реквизитами владельца. Вторая же проблема решается тем, что шифруется не само сообщение (еще не забыл, что это трудоемкий процесс?), а хэш-функция от этого сообщения. Что такое хэш-функция? Это функция, обладающая бесконечной областью определения, но конечной областью значения и одной интересной особенностью: даже при небольшом изменении входного значения значение функции меняется радикально. Основное назначение хэш-функций в криптографии - это генерация ключей на основе коротких и запоминаемых паролей (слабо запомнить 16 шестнадцатеричных разрядов?). Применительно к цифровой подписи это означает, что если содержание сообщения изменится на пару байт, то изменится и хэш-функция от текста, причем кардинально. Сообщение уже невозможно будет расшифровать, а значит - невозможно подделать. Убедился в том, что цифровая подпись рульная вещь? Только не спеши бежать ее получать. Благодаря нашей Государственной Думе использование цифровой подписи разрешается только государственным органам и корпорациям, да и то с разрешения ФАПСИ (ну, теперь, вероятно, ФСБ). Причем выдать тебе ее должен центр, сертифицированный тоже ФАПСИ. А алгоритмы шифрования несовместимы с европейскими. И почему у нас все через задницу :(? SSL В ДЕЙСТВИИ Вернемся к самому SSL. Что же происходит, когда ты видишь символ замка в углу своего ослика? Ну, во-первых, ты коннектишься к 443 порту (стандартно) сервака, а URL принимает вид https://. Если сертификат сервера не относится к числу доверенных (а таких великое множество - доверенными являются только сертификаты от известных CA; загляни в "свойства обозревателя > содержание > сертификаты"), то браузер выдаст предупреждение и предложит установить сертификат в хранилище, чтобы в дальнейшем не беспокоить людей по мелочам. Тут, кстати, стоит отметить, что 128-разрядный ключ поддерживается только в IE для США и Канады, так как по законам США запрещен экспорт сложных криптосистем. Остальным же придется довольствоваться 40-разрядными ключами, которые вполне реально расшифровать, причем не прибегая к сильно дорогостоящей технике. Привет всем пользователям лицензионных русских виндов :). После установки соединения происходит так называемый SSL Handshaking: сервер и браузер посылают друг другу приветствия, содержащие в себе необходимую информацию для установления безопасного соединения - вроде версии протокола, идентификатора сессии, способа шифрования, метода компрессии и тому подобных вещей. Далее генерируется ключ сессии, шифруется открытым ключом и отсылается серверу. Все, безопасное соединение установлено. Кроме того, сервер может потребовать от клиента его собственный сертификат, такая модель безопасности тоже используется, но в основном в корпоративных сетях: делать на всех пользователей сертификаты - это ни времени, ни денег не напасешься. |