Определение шифров schannel и сильных сторон шифров
Для обмена данными между клиентом и сервером Schannel по умолчанию согласовывает наилучшие доступные шифры на основе тех, которые включены в реестре. Приложения могут ограничивать возможности шифров и шифров, разрешенные для соединения, с помощью элементов структуры SCHANNEL_CRED следующим образом:
- Задайте для элемента palgSupportedAlgs массив ALG_ID , содержащий допустимые шифры. Дополнительные сведения см. в разделе Идентификаторы шифров.
- Задайте для членов dwMinimumCipherStrength и (или) dwMaximumCipherStrength допустимые минимальные и максимальные силы. Дополнительные сведения см. в разделе Значения силы шифра.
- Передайте структуру SCHANNEL_CRED (с помощью параметра pAuthData ) в вызове функции AcquireCredentialsHandle . Эта функция возвращает дескриптор учетных данных.
- Укажите дескриптор учетных данных в вызове клиентской функции InitializeSecurityContext (General) или функции AcceptSecurityContext (General) на стороне сервера.
Идентификаторы шифров
По умолчанию Schannel запрашивает наилучший доступный шифр на основе записей Schannel в системном реестре. Не изменяйте системный реестр; Параметры, содержащиеся в Schannel, используются глобально и влияют на другие приложения. Список допустимых констант см. в разделе ALG_ID.
Значения надежности шифра
Эта функция Schannel обычно используется для ограничения подключения внутренними или экспортными шифрами. Внутренние сильные стороны включают 56 и 128 бит, в то время как сила экспорта ограничена 56 битами. Если задать минимальное и максимальное значения равным нулю, Schannel будет использовать все доступные силы шифра.
Используя TLS или SSL 3.0, задайте члену dwMinimumCipherStrength значение -1 (отрицательное значение), чтобы включить наборы шифров Null Cipher, которые предоставляют сигнатуры, но не шифруют. Если параметр dwMaximumCipherStrength также имеет значение -1, будут включены только наборы null cipher. Этот параметр предназначен только для разработки и не должен использоваться в рабочих системах.
Запрос сведений о шифре
Чтобы получить параметры надежности шифра для учетных данных, вызовите функцию QueryCredentialsAttributes и укажите SECPKG_ATTR_CIPHER_STRENGTHS в качестве параметра ulAttribute .
Чтобы получить список поддерживаемых алгоритмов для учетных данных, вызовите QueryCredentialsAttributes с SECPKG_ATTR_SUPPORTED_ALGS в качестве параметра ulAttribute .