← Назад к списку статей

Новая функция: шифрование передачи данных (TLS)

Начиная с версии 16.10.31, Xeoma поддерживает безопасное соединение между сервером и клиентом с помощью TLS. Но что такое TLS? Как оно помогает обеспечивать безопасность? Наверное, это тяжело установить? Вопросы, связанные с информационной безопасностью, обычно достаточно сложны, и поэтому занимаются ими только квалифицированные специалисты. Однако прогресс не стоит на месте: всё постепенно упрощается и становится всё доступнее для широкого пользователя. Давайте разберёмся, что такое TLS и как её использовать.

Уже знаете всё, что нужно, о TLS? Перейдите сразу к её использованию в Xeoma

Шифрование данных защищает вас и ваш компьютерДля начала затронем историю этого вопроса. TLS – это безопасность транспортного уровня (от англ. Transport Layer Security), и она является наследницей SSL – уровня защищённых сокетов (от англ. Secure Sockets Layer). В начале 90-х годов американская компания Netscape (разработчики известного браузера Netscape Navigator — основного конкурента Internet Explorer в те времена) разработала способ защитить соединение между сервером и клиентом от перехвата и прослушивания. Автором идеи является доктор Тахер Эль-Гамаль, знаменитый египетский криптограф. Суть этой идеи в следующем: серверу и клиенту нужен уникальный способ, позволяющий проводить шифрование данных каждый раз, когда они связываются. В таком случае, даже если сессию кто-то перехватит, расшифровать данные не получится, и информация будет сохранена. Эта система зиждется на электронных сертификатах безопасности.

 

Шифрованное соединение надёжно заперто сертификатомЧто же такое сертификат безопасности (он же сертификат открытого ключа)? По сути, это ключ от двери, которая соединяет 2 комнаты. К замку подходит только один ключ, а взломать его нельзя. Сертификат обычно создаётся на сервере и отсылается клиенту в самом начале их взаимодействия. Клиент его либо принимает, либо отвергает. Весь этот процесс называется процедура подтверждения связи (а на англ. handshaking — рукопожатие). В ходе этой процедуры сервер и клиент «договариваются» от методах взаимодействия (например, о том, как генерировать одноразовые сеансовые ключи). После этого они спокойно кодируют и декодируют свои данные (проводят шифрование и расшифровку) с помощью ключа, не рискуя быть прерванными или подслушанными. Если же процедура подтверждения связи не пройдёт, то соединение не устанавливается. Это гарантирует, что никто не сможет «притвориться» клиентом или сервером, чтобы незаконно получить некие данные.

 

Шифрование данных сертифицированоНо каждому сертификату требуется подпись, без неё он недействителен. В идеале, подписывать его должна третья сторона, которой доверяют и сервер, и клиент. Обычно она называется Центр сертификации (сокращается CA от англ. Certificate Authority). Сервер может получить подпись для своего сертификата 2 способами: обратившись в Центр сертификации (таких много, но за свою работу они взимают плату) или подписав его самостоятельно (такие сертификаты называются самозаверенными). Второй вариант, естественно, более опасен для клиента, но если сами операторы машин доверяют друг другу, то никаких проблем не возникнет. Система сертификатов работает на постоянной основе в Интернете каждый раз, когда вы заходите на какой-либо сервер через браузер, хотя средний пользователь этого не замечает. Это доказывает тезис о том, что лучшая защита та, которую не видно.


Теперь мы можем разобраться, как применить всё это в Xeoma. Во-первых, нам понадобится сгенерировать сертификат на сервере. Лучше всего для этого подходит программа OpenSSL: https://www.openssl.org/source/ Однако стабильно она работает только на Linux-системах. Но сгенерированные с её помощью сертификаты действительны для любых систем, так что если вы используете Windows или Mac OS, то можно либо попросить помощи у друга с Linux, либо воспользоваться виртуальной машиной для эмуляции Linux. Сгенерировать сертификат можно с помощью большого числа команд через консоль, но особенно важно, чтобы полученные файлы назывались или PublicCertificate.pem и PrivateKey.pem, или PublicCertificate.der и PrivateKey.der. Проще всего скопировать в консоль вот эту команду:

openssl req -x509 -sha256 -new -days 3650 -newkey rsa:2048 -nodes -out PublicCertificate.pem -keyout PrivateKey.pem -subj “/C=Co/S=SN/L=Lo/O=Or/OU=OU/CN=CN”

Безопасное соединение для Xeoma почти готово

Теперь свежесгенерированные файлы лежат в папке с OpenSSL:

Сертификат, обеспечивающий безопасное шифрование

Осталось только перенести их в папку с Xeoma, а именно Xeoma → Security → Certificate:

Защищённое соединение готово для Xeoma

Оба файла PublicCertificate.pem и PrivateKey.pem нужно положить в папку Server (они заменят те файлы, что уже там лежат). Пожалуйста, обратите внимание, что файл PrivateKey.pem особенно важен, к нему не должно быть доступа ни у кого, кроме вас. В противном случае, безопасность соединения будет под угрозой. Теперь всем клиентам осталось только положить файл PublicCertificate.pem в папку Client, и безопасное шифрование обеспечено. Если нужно, чтобы один и тот же клиент подключался к нескольким серверам по разным сертификатам, то можно их все сложить в папку Client (их имена должны быть PublicCertificate1.pem, PublicCertificate2.pem и т.д. и совпадать с именами файлов на серверах).

22 ноября 2016

Также читайте:
Дешевле чем DVR? Видеонаблюдение с Raspberry Pi
Как настроить облачное хранилище с Xeoma Cloud