Компонент TLS Terminator
Компонент TLS Terminator, поставляемый в составе KasperskyOS Community Edition, обеспечивает защищенную передачу данных по сети между клиентом и сервером, используя протокол TLS (Transport Layer Security).
Компонент TLS Terminator встроен в сетевое взаимодействие между клиентом и сетевым VFS-бэкендом. Когда клиент использует сетевые функции из библиотеки libc, вызовы этих функций перенаправляются в компонент TLS Terminator. В компоненте TLS Terminator реализованы функции-обертки над стандартными вызовами сетевого VFS-бэкенда. Эти обертки обеспечивают установку TLS-соединений, шифрование исходящих данных перед их передачей в сетевой VFS-бэкенд и расшифровку входящих данных перед возвратом клиенту. Такая реализация компонента обеспечивает защиту данных при передаче по сети без необходимости изменения клиентского кода.

Принцип работы компонента TLS Terminator
- Клиент
Вызывает функции из библиотеки
libc(полный список поддерживаемых функций см. в таблице ниже), как если бы работал напрямую с сетевым VFS-бэкендом. - TLS Terminator
Перехватывает от клиента вызовы функций из библиотеки
libcи заменяет их на функции-обертки, реализующие TLS. Для управления TLS-соединениями используются библиотеки Mbed TLS и OpenSSL, которые реализуют криптографические алгоритмы и протоколы TLS.Подсистема динамических расширений (плагины) позволяет расширять функциональность компонента TLS Terminator без изменения его исходного кода с использованием разработанных пользователем динамических библиотек.
- Сетевой VFS-бэкенд
Реализует сетевой стек.
- Файловый VFS-бэкенд
Реализует файловые системы.
API библиотеки libc, поддерживаемый компонентом TLS Terminator
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функции, отмеченные в таблице знаком *, имеют стандартное POSIX-поведение. Поведение остальных функции модифицируется компонентом TLS Terminator как указано в таблице ниже.
Модификация поведения функций библиотеки libc компонентом TLS Terminator
Функция libc | POSIX-поведение функции | Поведение функции при использовании TLS Terminator |
|---|---|---|
| Принимает запрос на подключение из очереди ожидающих соединений и создает новый дескриптор сокета для взаимодействия |
|
| Закрывает сокет |
|
| Инициирует соединение на сокете |
|
| Получает параметры сокета |
|
| Получает данные от сервера |
|
| Отправляет данные серверу |
|
| Устанавливает параметры сокета |
|
| Завершает передачу данных по сокету |
|
| Создает сокет для сетевого взаимодействия |
|
| Отслеживает состояние файловых дескрипторов |
|
| Отправляет данные серверу |
|
Для функций getsockopt() и setsockopt() в компоненте TLS Terminator введено значение IPPROTO_TLS для параметра level, которое отсутствует в POSIX. Это значение определено в файле /opt/KasperskyOS-Community-Edition-<platform>-<version>/sysroot-*-kos/include/netinet/in.h из состава KasperskyOS Community Edition. Синтаксис функций:
int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_t option_len);
int getsockopt(int socket, int level, int option_name, void *restrict option_value, socklen_t *restrict option_len);
Параметр level определяет уровень на котором задано наименование параметра сокета option_name. Если при вызове функций getsockopt() и setsockopt() параметр level равен IPPROTO_TLS, то компонент TLS Terminator обрабатывает доступные для этого уровня наименования параметра сокета option_name из таблицы ниже.
Наименования параметра сокета и соответствующее им поведение функций
Наименование параметра сокета | Поведение функции setsockopt() | Поведение функции getsockopt() |
|---|---|---|
| Устанавливает имя сервера, к которому осуществляется TLS-соединение. Это имя будет использовано в расширении SNI (Server Name Indication) при выполнении TLS-рукопожатия. | Получает имя сервера, к которому осуществляется TLS-соединение. |
| Включает проверку OCSP Stapling (подтверждение актуальности сертификата) для указанного клиентского сокета. | Параметр не обрабатывается. |
| Параметр не обрабатывается. | Получает идентификатор TLS-сеанса. |
| Параметр не обрабатывается. | Возвращает результат проверки сертификата сервера в виде комбинации флагов ошибок. |
Если предоставляемая по умолчанию функциональность компонента TLS Terminator недостаточна, то ее можно расширить с помощью механизма плагинов. Подробнее см. "Расширение функциональности TLS Terminator".
Состав компонента TLS Terminator
Компонент представляет собой набор следующих файлов:
- исполняемый файл
/opt/KasperskyOS-Community-Edition-<platform>-<version>/sysroot-*-kos/bin/tls; - файл формальной спецификации
/opt/KasperskyOS-Community-Edition-<platform>-<version>/sysroot-*-kos/include/kl/TlsEntity.edlи сгенерированный из него заголовочный файл; - файл описания политики безопасности решения
/opt/KasperskyOS-Community-Edition-<platform>-<version>/sysroot-*-kos/include/kl/TlsEntity.psl.