Netflix опубликовал патчи с реализацией TLS для ядра FreeBSD

Компания Netflix предложила для тестирования работающую на уровне ядра FreeBSD реализацию TLS (KTLS), которая позволяет добиться существенного увеличения производительности шифрования для TCP-сокетов. Поддерживается ускорение шифрования передаваемых данных с использованием протоколов TLS 1.0 и 1.2, отправляемых в сокет при помощи функций write, aio_write и sendfile.

Обмен ключами на уровне ядра не поддерживается и соединение должно вначале быть установлено и согласовано в пространстве пользователя. Для передачи ядру полученного в процессе согласования соединения сессионного ключа для сокетов добавлена опция TCP_TXTLS_ENABLE, после активации которой все отправляемые в сокет данные будут инкапсулироваться в кадры TLS с использованием заданного ключа. Для отправки служебных сообщений, например для согласования соединения, следует использовать функцию sendmsg с типом записи TLS_SET_RECORD_TYPE.

Поддерживается два основных метода шифрования TLS-кадров: программный и ifnet (с задействованием аппаратных средств ускорения сетевых карт). Выбор метода осуществляется при помощи опции сокета TCP_TXTLS_MODE. Программный метод позволяет подключать разные бэкенды для шифрования. В качестве примера опубликован бэкенд ktls_ocf.ko с поддержкой AES-GCM, реализованный на базе фреймврока OpenCrypto. Для управления предлагается несколько sysctl в рамках ветки kern.ipc.tls.*. При сборке ядра поддержка TLS включается при помощи опции KERN_TLS.

©  OpenNet