Кто-нибудь пробовал использовать TLS 1.3 с помощью SChannel?

#ssl #tls1.3 #schannel

Вопрос:

Я работаю над клиентом TLS, который необходимо обновить, чтобы использовать TLS 1.3 в Windows. Кто-нибудь успешно реализовал TLS 1.3 с использованием API-интерфейсов SChannel?

Мне нужно понять, как обрабатывать новую структуру SCH_CREDENTIALS и правильный способ обработки SEC_I_RENEGOTIATE с сервера. Любой, у кого есть пример кода клиента/сервера, который показывает рукопожатие TLS 1.3 с SChannel, будет очень полезен.

Несколько дополнительных вопросов с Windows 2022 и TLS 1.3:

  1. Когда EncryptMessage() и send() API-интерфейсы используются с TLS 1.3; функция send() отправляет данные несколькими блоками, независимо от того, насколько мала полезная нагрузка. Пример: Буфер в 30 байт отправляется как 3 байта в первом раунде и 27 байт во второй итерации. Функция QueryContextAttributes() возвращает максимальные размеры, например 16384. Таким образом, ожидается, что любые данные размером порядка нескольких сотен байт должны быть отправлены одним выстрелом.

До TLS 1.2; SChannel отправлял все такие данные, как 30 байт и т. Д., Одним выстрелом. Ожидается ли это с TLS 1.3 ? Или это ошибка в том, как мы обрабатываем Шифрование() отправка()

  1. Я включил журналы SChannel из реестра. С помощью рукопожатия TLS 1.3; средство просмотра событий указывает несколько параметров как 0. Пример показан ниже для протоколов TLS 1.2 и TLS 1.3. Ожидается ли это?

Для рукопожатия TLS 1.3:

Рукопожатие клиента TLS успешно завершено. Согласованные криптографические параметры являются следующими.

Версия протокола: неизвестно CipherSuite: 0x1302 Сила обмена: 0 бит Дескриптор контекста: 0x1a1ccf646f0 Целевое имя: localhost

Для рукопожатия TLS 1.2:

Рукопожатие клиента TLS успешно завершено. Согласованные криптографические параметры являются следующими.

Версия протокола: TLS 1.2 CipherSuite: 0xC030 Сила обмена: 384 бита Дескриптор контекста: 0x1a1ccf201f0 Целевое имя: checkappexec.microsoft.com Имя субъекта локального сертификата:

Версия протокола отображается как «неизвестно» в журнале TLS 1.3. Сила обмена показывает 0 в журнале рукопожатий TLS 1.3.

С TLS 1.2 мы видим допустимое значение (384) и версию протокола.