Протокол SSL (secure socket layer) был разработан фирмой Netscape, как протокол обеспечивающий защиту данных между сервисными протоколами
(такими как HTTP, NNTP, FTP и т.д.) и транспортными протоколами (TCP/IP). Не секрет, что можно без особых технических ухищрений просматривать данные,
которыми обмениваются между собой клиенты и серверы. Был даже придуман специальный термин для этого – "SNIFFER".
В связи с увеличением объема использования Интернета в коммерческих целях, неизбежно вставал вопрос о защите передаваемых данных.
Пользователи не очень были бы рады, если номер их кредитной карточки, был бы перехвачен, каким ни будь предприимчивым хакером "по дороге" к виртуальному магазину.
Появление такого протокола как SSL было вполне закономерным явлением. С одной стороны остаются все возможности сервисных протоколов
(для программ-серверов), плюс к этому все данные передаются в зашифрованном виде. Раскодировать их довольно трудно. Наличие ограничений на длину ключей предполагает
возможность взлома, но для этого и необходимы достаточно большие вычислительные мощности.
SSL не только обеспечивает защиту данных в Интернете, но так же производит "опознание" сервера и клиента ("SERVER / CLIENT AUTHENTICATION").
В данный момент протокол SSL принят W3 консорциумом (W3 Consortium) на рассмотрение, как основной защитный протокол для клиентов и серверов
(WWW browsers and servers) в сети Интернет.
Алгоритм работы SSL построен на принципе публичных ключей. Этот принцип построен на использовании пары асимметричных ключей
(публичном и приватном) для кодирования/декодирования информации. Публичный ключ раздается всем желающим, с его помощью шифруются необходимые данные,
которые можно дешифровать только с помощью приватного ключа.
Чтобы понять как эт о все работает, представьте себе что есть два человека, которые общаются через Интернет: внучка Тина и ее Дед.
Допустим Тине надо, узнать действительно она секретничает с Дедом или нет. Можно сделать так:
- Тина отправляет Деду приветственное сообщение.
- Дед шифрует его с помощью своего приватного ключа и отправляет его назад внучке Тине.
- Тина расшифровывает это сообщение с помощью публичного ключа Деда и сравнивает его с сообщением которое она послала Деду ранее.
Если сообщения совпадают - значит на связи с Тиной действительно ее Дед.
Но Тина, девочка смышленая ;) она говорит Деду:
- Дед, пришли мне 2 сообщения: одно сообщение открытым текстом а второе сообщение зашифруй своим приватным ключом.
Я расшифрую твое зашифрованное сообщение твоим публичным ключом и сравню с незашифрованным сообщением. Если совпадают - значит на связи мой Дед
* Такое сообщение называется MESSAGE DIGEST. А способ шифрования сообщения с помощью своего приватного ключа – цифровой подписью DIGITAL SIGNATURE.
Вот так все просто ! Рассмотрим ка это происходит в интернет.
- Тина - Браузер Тины говорит серверу: - Привет
- Сервер - отвечает браузеру Тины: Привет, я - твой Дед (показывает сертификат)
- Тина - А ты точно Дед?
- Сервер - Да, вот тебе два сообщения. Сравни мое открытое сообщение и сообщение подписанное моим приватным ключом
- Тина - Ура! Привет Дед. (Тина сравнила два сообщения-они совпадают).
А я твоя внучка Тина, вот тебе мое сообщение зашифрованное при помощи твоего публичного ключа. Расшифровать его сможешь только ты при помощи своего приватного ключа
- Сервер - Привет, отправляю тебе сообщение - оно зашифровано при помощи нового симметричного секретного ключа который я соорудил из твоего сообщения. Теперь этим ключом
мы можем пользоваться для обмена сообщениями. И их никто не сможет расшифровать кроме тебя и меня.
Поскольку Дед знает сообщение Тины, потому что он владеет приватным ключом и Тина знает, что было в том сообщении.
Теперь они могут использовать симметричный шифровальный алгоритм (где в качестве секретного ключа выступает сообщение Тины) и безбоязненно обмениваться шифрованными сообщениями.
Для контроля над пересылкой сообщений от случайного или преднамеренного изменения используется специальный алгоритм - Message Authentication Code (MAC),
например MD5. Обычно, и сам MAC-code так же шифруется. В связи с этим достоверность сообщений повышается в несколько раз. И внести изменения в процесс обмена практически невозможно.
|