Вы находитесь на странице: 1из 8

На сегодняшний день SSL сертификаты являются основой безопасности в сети

Интернет, защищая конфиденциальную информацию, пересылаемую по всему миру, от


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

В современном мире существует множество общих оснований для


приобретения SSL сертификата безопасности сайта.

Во-первых, данные, передаваемые по сети Интернет и даже по внутренней сети,


нуждаются в конфиденциальности. Другими словами, пользователи не хотят,
чтобы логины, пароли, адреса электронных почт, номера их кредитных карт,
данные банковских счетов и другие личные данные могли быть обнаружены в
Интернете.

Во-вторых, данные должны оставаться целостными и неприкасаемыми. То есть


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

В-третьих, уважающая себя организация просто обязана позаботиться о том,


чтобы ее клиенты и посетители сайта были уверены в достоверности данных о
компании и ее юридической чистоте.

И последнее, но не менее важное основание для использования SSL


сертификатов является выполнение национальных и международных
предписаний о защите информации. Особенно, если Вы планируете расширение
Вашего онлайн-бизнеса на международный рынок, необходимо позаботиться об
SSL защите канала связи с Вашим веб-сайтом.

Какое же практическое применение находят SSL сертификаты в современном


обществе, где свое место прочно заняли электронная коммерция, выполнение
работ онлайн и предоставление услуг в сети Интернет?

ИСПОЛЬЗОВАНИЕ SSL СЕРТИФИКАТОВ


ЦЕЛЕСООБРАЗНО В СЛЕДУЮЩИХ СЛУЧАЯХ:
 Чтобы обеспечить безопасную коммуникацию на почтовом сервере.
 Чтобы защитить транзакции по кредитным картам, проводимые онлайн. С
каждым годом возрастает число пользователей, которые оплачивают
товары и услуги в Интернете. SSL призван, чтобы защитить каждую из этих
транзакций в отдельности.
 Чтобы защитить регистрационные данные пользователей, которые им
необходимо вводить в онлайн формуляры: имя, фамилию, паспортные
данные, адреса, электронную почту и так прочее.
 Использование SSL сертификата вызывает доверие к Вашему веб-сайту,
ведь таким образом Вы можете показать посетителям своего веб-сайта,
включая будущих клиентов, насколько Вы уважаете секретность их
данных.
 Вы можете вести свой бизнес, не беспокоясь о защищенности и
конфиденциальности личной информации Ваших покупателей.
 Обеспечивая SSL безопасность сайта для проведения надежных
транзакций, Вы получаете преимущество перед конкурентами в глазах
Ваших клиентов.
 Так как SSL сертификат бизнес уровня (то есть, для получения которого
нужно произвести проверку компании) предоставляет информацию о Вас,
как о владельце данного SSL сертификата, пользователи могут доверять
Вам еще больше, что позитивно влияет на уровень продаж.

Естественно, Вам самим решать, нужен SSL сертификат безопасности на сервере


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

Цель протокола — обеспечить защищенную передачу данных. При этом для


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

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

Надёжность ключа зависит от его длины в битах. В технологии SSL используют шифры 4096
бит для корневого сертификата и 128–256 бит для клиентских. Такая длина достаточна для
безопасной передачи данных.

Протокол SSL использует асимметричное шифрование или шифрование с открытым ключом


для установки соединения. Несмотря на название, здесь используются 2 ключа: открытый и
закрытый. Оба формируются при запросе SSL-сертификата.
Открытый (публичный ключ) доступен всем. Используется для шифрования данных при
обращении браузера к серверу.

Закрытый (секретный ключ) известен только владельцу сайта. Используется для


расшифровки данных, отправленных браузером.

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

Однако асимметричный алгоритм ресурсоемок, а скорость шифрования на 2-3 порядка ниже


симметричного алгоритма. Поэтому в SSL-технологии шифрование с открытым ключом
используется только для согласования секретного симметричного ключа. С его
помощью устанавливается защищённое HTTPS-соединение – данные передаются быстро и
безопасно.

Сразу использовать симметричное шифрование ненадежно. В этом алгоритме один и тот же


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

Передать по почте, телефону или смской не получится – перехватят или подслушают.

Значит, нужно отправить симметричный ключ в зашифрованном сообщении. Но сначала


убедиться, что его получит правильный адресат.

1. Чтобы аутентифицировать сервер, браузер посетителя проверяет, подписан ли SSL-


сертификат сертификатом доверенного центра.
2. Чтобы договориться о симметричном ключе шифрования сервер и браузер используют
асимметричное шифрование с открытым ключом.

Рассмотрим этот процесс на примере реальных ключей:

Боб отправляет Алисе замок, ключ от которого есть только у него.

Замок здесь – публичный ключ.

Алиса закрывает замком Боба ящик с секретом и посылает обратно.

Так же браузер шифрует сообщение с помощью публичного ключа и передаёт на сервер.

Открыть ящик не сможет никто: ни сама Алиса, ни сотрудники почты.


Мошенник точно так же не может расшифровать сообщение браузера без закрытого ключа.

Боб получает ящик, открывает своим единственным ключом и узнаёт секрет.

Сервер расшифровывает сообщение закрытым ключом, который есть только у него.

Как Алиса и Боб ведут тайную переписку, так браузер и сервер устанавливают защищённое
HTTPS-соединение и обмениваются данными.

Алгоритм RSA. Теория


Криптосистема RSA, предложенная в 1977 году Ривестом (R. Rivest), Шамиром (A.
Shamir) и Адлеманом (L. Adleman), предназначена для шифрования и цифровой подписи.
В настоящее время RSA является наиболее распространенной криптосистемой -
стандартом де-факто для многих криптографических приложений. Криптосистема RSA
широко применяется в составе различных стандартов и протоколов Интернета, включая
PEM, S/MIME, PEM-MIME, S-HTTP и SSL.

Криптографическая стойкость алгоритма RSA основана на трудоемкости разложения


на множители (факторизации) больших чисел. Термин "большие" означает, что число
содержит 100~200 и более двоичных разрядов. Открытый и секретный ключи являются
функциями двух больших простых чисел. Рассмотрим на примере, как выполняется
генерация ключей алгоритма RSA, но вместо больших чисел для простоты изложения
будем использовать маленькие десятичные.

Для генерации парных ключей используются два случайных простых числа, p и q.


Вычисляется произведение этих чисел n и значение функции Эйлера от числа n
по формуле:
φ(n)=(p-1)(q-1) [1]

Далее выбирается ключ шифрования e такой, что e и значение функции Эйлера φ(n)
являются взаимно простыми числами, т.е. числами, не имеющими общих делителей,
кроме единицы (единицу еще называют тривиальным делителем). Теперь необходимо
найти значение ключа дешифрования d такое, чтобы выполнялось равенство:
ed = 1(mod φ(n)) [2]

или
d = e-1(mod φ(n)) [3]
Уравнение [2] означает, что остаток от деления произведения чисел e и d на значение
функции Эйлера φ(n) должен быть равен 1.

Условие [2] выполняется только в том случае, если e и φ(n) являются взаимно
простыми числами. Число d называется взаимно обратным к e по модулю φ(n). Уравнение
[2] эквивалентно обнаружению таких d и v, что:
ed + φ(n)v = 1 [4]

Поиск обратного значения числа по модулю выполняется при помощи алгоритма


Эвклида. Этот алгоритм позволяет найти наибольший общий делитель (НОД) двух чисел.

Рассмотрим пример. Пусть у нас имеются два простых числа: p=13 и q=17. Найдем
произведение этих чисел:
n = 13 * 17 = 221

и значение функции Эйлера от числа n=221:


φ(n)=(p-1)(q-1)=(13-1)(17-1)=192

Теперь выберем такое число e, чтобы оно было взаимно простым с φ(n). Таким числом
является, например, e=7. Далее надо найти обратное значение числа e, чтобы выполнялось
уравнение [2]. Для этого с помощью алгоритма Эвклида ищем значения d и v,
удовлетворяющие соотношению [4]. Суть алгоритма сводится к проведению
последовательности операций деления с остатком. В соответствии с алгоритмом находим
частное и остаток от деления φ(n) на e:
192 = 7 * 27 + 3

Частное равно 27, остаток - 3. Теперь последовательно делим делитель на остаток (т. е.
7 на 3 в данном случае) до тех пор, пока в остатке не получим единицу:
7 = 3 * 2 + 1

А теперь распишем процесс получения остатка в обратном порядке:


1 = 7 - 3 * 2 = 7 - (192 - 7 * 27) * 2 = 7 - (192 * 2 - 7 * 2 * 27)

Раскроем скобки:
1 = 7 + 7 * 54 - 192 * 2 = 7 * 55 - 192 * 2

В итоге получаем искомые числа d=55 и v=2. Числа d=55 и e=7 являются взаимно
обратными по модулю 192, что подтверждает равенство:
7 * 55 = 1(mod 192)

Учитывая, что e=7 - это наш ключ шифрования, то число d=55 будет ключом
дешифрования.

Теперь разберемся, как выполняются операции шифрования и дешифрования


информации по алгоритму RSA.
Для шифрования исходное сообщение необходимо представить в виде
последовательности чисел, содержащихся в интервале от 0 до n. Для примера, разобьем
аббревиатуру ABC на числа в интервале (0,221). Для этого достаточно каждый символ
записать в десятичном представлении:
A=41h=65, B=42h=66, C=43h=67

Шифрование сводится к вычислению:


Ci = Mi e(mod n)

Здесь Mi - это i-й блок сообщения, Ci - результат криптопреобразования. Выражаясь
простым языком, мы должны возвести значение Mi в степень e и найти остаток от деления
на n.

Зашифруем нашу последовательность (65,66,67), зная, что e=7 и n=221:


C1 = 657(mod 221) = 91
C2 = 667(mod 221) = 144
C3 = 677(mod 221) = 50

В зашифрованном виде наша последовательность будет выглядеть как (91,144,50).

Для дешифрования необходимо выполнить следующую операцию:


Mi = Ci d(mod n)

Дешифруем последовательность (91,144,50) при d=55 и n=221:


M1 = 9155(mod 221) = 65
M2 = 14455(mod 221) = 66
M3 = 5055(mod 221) = 67

Таким образом, исходная последовательность восстановлена.

Шифрование RSA выполняется намного эффективнее, если правильно выбрать


значение e. Чаще всего используются 3, 17 и 65537. Стандарт X.509 рекомендует 65537,
PEM - 3, PKCS#1 - 3 или 65537.

Ознакомившись с теорией, приступим к рассмотрению средств, предоставляемых


библиотекой для защиты информации по RSA алгоритму.

https://www.opennet.ru/docs/RUS/use_openssl/

Стандарт X.509 предполагает, что все структуры данных, связанные с


сертификатами описываются в формате ASN.1. ASN.1 - это архитектурно-
независимое представление данных, пригодное для хранения произвольных
иерархических структур. На практике, структура ASN.1 кодируется в двоичное
представление DER (Distinguished Encoding Rules), описанное в X.690.
Все объектов в ASN.1 имеют уникальные идентификаторы OID (Object
Identifier), для которых определены базовые типы данных (числа, строки,
коллекции и т.п). OID - это последовательность положительных целых чисел,
однозначно идентифицирующая объект. В текстовой записи OID выглядит как
десятичные числа, разделяемые точкой - 1.2.345.6.79. Структура OID описывает
дерево, корень которого расположен в начале записи. При записи в
человекочитаемой форме корневой OID заменяют на некую мнемоническую
строку, которую продолжают числовой последовательностью. Например
корневой OID ветки, описывающей объекты алгоритма RSA, выглядит так:
1.2.840.113549.1. На специализированном сайте можно выяснить, что это:
{iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)}. Российский сегмент OID
{iso(1) member-body(2) ru(643)} по соглашению с Росстандартом
обслуживает ОАО "Инфотекс Интернет Траст". Объекты, связанные с
российской криптографией, находятся в ветке 1.2.643.100 и описаны в Приказе
ФСБ РФ от 27 декабря 2011 г. N 795 "Об утверждении Требований к форме
квалифицированного сертификата ключа проверки электронной подписи".

Для обеспечения уникальности, те или иные OIDы регистрируются некими


официальными организациями при координации ISO и ITU. К таким
регистрирующим организациям относится IANA, которая выделяет OIDы,
необходимые для протоколов сети Интернет (например, LDAP и SNMP).
Частная организация может получить стартовый OID, и строить от него
поддерево для внутреннего использования. В России регистрацией частных OID
занимается ОАО "Инфотекс Интернет Траст".

Просмотр ASN.1 структуры ключа:


openssl asn1parse -in x509-key.pem
https://parallel.uran.ru/book/export/html/554

https://parallel.uran.ru/book/export/html/501

PEM – наиболее популярный формат среди сертификационных центров. PEM


сертификаты могут иметь расширение .pem, .crt, .cer, и .key (файл приватного
ключа). Она представляют собой ASCII файлы, закодированные по схеме Base64.
Когда вы открываете файл pem формата в текстовом редакторе, вы можете
увидеть, что текст кода в нем начинается с тега "----- BEGIN CERTIFICATE -----" и
заканчивая тегом "----- END CERTIFICATE -----". Apache и другие подобные серверы
используют сертификаты в PEM формате. Обратите внимание, что в одном файле
может содержатся несколько SSL сертификатов и даже приватный ключ, один
под другим. В таком случае каждый сертификат отделен от остальных ранее
указанными тегами BEGIN и END. Как правило, для установки SSL сертификата на
Apache, сертификаты и приватный ключ должны быть в разных файлах.
ФОРМАТ СЕРТИФИКАТА DER

DER формат – это бинарный тип сертификата вместо формата PEM. В PEM
формате чаще всего используется расширение файла .cer, но иногда можно
встретить и расширение файла .der. Поэтому чтобы отличить SSL сертификат в
формате PEM от формата DER, следует открыть его в текстовом редакторе и
найти теги начала и окончания сертификата (BEGIN/END). DER SSL сертификаты,
как правило, используются на платформах Java.

Сертификат Secure Socket Layer (SSL) - это протокол безопасности,


который защищает данные между двумя компьютерами с использованием
шифрования.

Проще говоря, сертификат SSL - это файл данных, который в цифровом


виде связывает криптографический ключ с сервером или доменом, а
также с названием и местонахождением организации.
Как правило, сертификаты SSL используются на веб-страницах, которые
передают и получают конфиденциальные данные конечного пользователя,
такие как номер социального страхования, данные кредитной карты,
домашний адрес или пароль. Онлайн формы оплаты являются хорошим
примером и обычно шифруют вышеупомянутую деликатную информацию с
использованием 128 или 256-битной технологии SSL.

Сертификаты SSL обеспечивают идентификацию удаленного компьютера,


чаще всего сервера, но также подтверждают идентификацию вашего
компьютера с удаленным компьютером для установления безопасного
соединения. Обеспечение безопасности в Интернете всегда было улицей с
двусторонним движением, и благодаря SSL-шифрованию сервер
«пожимает руку» вашему персональному компьютеру, и обе стороны знают,
с кем они общаются.

TLS и SSL используют асимметричное шифрование для аутентификации, симметричное


шифрование для конфиденциальности и коды аутентичности сообщений для сохранения
целостности сообщений.

Данный протокол широко используется в приложениях, работающих с сетью Интернет, таких


как веб-браузеры, работа с электронной почтой, обмен мгновенными сообщениями и IP-
телефония (VoIP)