FreeBSD : SSL Howto

Введение

Большинство сетевых протоколов, например, IMAP, POP, SMTP, HTTP, FTP и LDAP, обеспечивают поддержку шифрования информации по протоколу SSL. Обычно шифрование используется для скрытия передаваемых по сетям общего пользования логинов и паролей доступа к различным ресурсам, например, средствам администрирования через Web-интерфейс, акаунтов для предоставления различных услуг (хостинг, электронная почта, управление мобильным телефоном и т. п.), почтовым ящикам, закрытым каталогам на FTP и Web-серверах для передачи различных конфиденциальных сообщений. При передаче аутентификационной информации в виде обычного текста она может быть перехвачена третьими лицами с использованием программ-сниферов и использована для получения несанкционированного доступа к вашим ресурсам.

Немного теории

В настоящее время протокол SSL практически незаметно для пользователя взаимодействует с остальными протоколами Интернет и обеспечивает передачу конфиденциальной информации по сетям общего пользования в зашифрованном виде. Программное обеспечение OpenSSL поддерживает протоколы SSL (Secure Sockets Layer) v2/v3 и TLS v1 (Transport Layer Security).

Утилита командной строки openssl может использоваться для выполнения следующих задач:

    * Создание и управление ключами RSA и DSA
    * Создание сертификатов формата x509, запросов на подпись сертификатов, восстановление сертификатов
    * Шифровать данные с помощью симметрического или асимметрического алгоритма шифрования
    * Работать с S/MIME
    * Производить ssl/tls тестирование серверов и клиентов

SSL использует асимметричные алгоритмы шифрования, т.н. шифрование с открытым ключом. В таком алгоритме один ключ используется для расшифровки данных, зашифрованных другим ключом. Эти два ключа (private/public) - пара ключей - создаются одновременно, с помощью математической формулы. Это единственный простой способ найти два ключа, обладающих специальной ассиметрией (при которой один из ключей может расшифровать зашифрованное вторым): вычисление одного из ключей по второму - задача невероятно сложная.

При применении шифрования с открытым ключом один ключ из пары делается свободно доступным, т.н. public key, а второй сохраняется в секрете, т.н. private key. Тот, кто хочет установить с создателем ключей безопасный контакт, может перед отправкой зашифровать свое сообщение, пользуясь открытым ключом (public key). Если адресат хранит закрытый ключ (private key) в секрете, то только он сможет расшифровать сообщение.

И наоборот, автор пары ключей может зашифровать свое сообщение закрытым ключом. Получатель может удостовериться, что сообщение действительно принадлежит автору ключей, попробовав расшифровать его с помощью открытого ключа. Если сообщение после расшифровки имеет какой то смысл, а отправитель действительно сохранил зарытый ключ в секрете, то сообщение действительно написано им. Успешная расшифровка также подтверждает, что сообщение не было изменено в процессе доставки (например, при прохождении через почтовый сервер), поскольку в противном случае не была бы получена правильная расшифровка. Так сообщение проверяется получателем.

К сожалению, шифрование больших объемов данных с помощью ассиметричных алгоритмов происходит медленно - гораздо медленнее, чем при использовании симметричных алгоритмов. Но при использовании шифрования с открытым ключом, в целях проверки подлинности (а не для сохранения конфиденциальности), совершенно не обязательно шифровать сообщение целиком. Вместо этого сообщение сначала обрабатывается вычислительно необратимой хеш-функцией

Вычислительно необратимая хеш-функция представляет собой специальный вид математических формул. Эта хеш-функция, известная также под именем криптографической контрольной суммы или дайджеста сообщения, вычисляет хеш-значение фиксированной длины на основе исходных данных произвольного объема. Суть вычислительно необратимой хеш-функции заключается в том, что каждый бит хеш-значения зависит от каждого из битов исходных данных. Если изменить единственный бит исходных данных, хеш-значение тоже изменится - очень сильно и непредсказуемо - настолько непредсказуемо, что задача обращения функции и нахождения ввода, приведшего к получению конкретного хеш-значения, является "вычислительно неосуществимой".

например с использованием алгоритма md5. Затем достаточно зашифровать только хеш-значение, которое является представлением данных. Зашифрованное хеш-значение, называемое теперь цифровой подписью, добавляется к сообщению, для которого будет производиться проверка подлинности. Получатель может проверить подлинность сообщения, расшифровав подпись и обработав сообщение копией вычислительно необратимой хеш-функции. Если полученные хеш-значения совпадают - сообщение подлинное.

Сертификат содержит публичный ключ, подписанный одним из корневых доверенных центров сертификации, данные об организации, выдавшей сертификат и в некоторых случаях зашифрованный закрытый ключ, а также отпечаток (хеш) публичного ключа.

Сертификаты имеют время действия, по окончанию которого они автоматически считаются недействительными, иерархия сертификатов обычно строится на основании сети доверия (бывают довольно длинные цепочки сертификатов, ведущие к доверенному ключу из root CA).

Таким образом, сертификат - это полный комплекс системы асимметрического шифрования, предоставляющий гораздо больше возможностей, чем сами по себе ключи (а также являющийся более защищенной системой). Одним из основных достоинств сертификата является возможность записи в него информации об организации, этот ключ выдавшей.

Сертификаты играют важную роль в коммуникационном процессе. Сертификат, подписанный доверенным СА, дает гарантию, что владелец сертификата, тот за кого он себя выдает. Без подписанного сертификата ваши данные будут зашифрованы, однако, сервер, с которым вы контактируете, может быть не тем, за кого себя выдает.

Подготовительная часть

Итак, для начала создаем директорию, где мы будем работать. Например, можно создать ее в своей домашней папке.


Вы только посетили наш сайт, КОММЕНТИРОВАНИЕ будет доступно через несколько минут.
возможно у Вас отключен javascript, если включен - просто обновите страницу