我有一个在这个注册表项HKLM\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002!Functions中指定了自定义密码套件的系统。
TLS_AES_256_GCM_SHA384
TLS_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA
TLS_PSK_WITH_AES_256_GCM_SHA384
TLS_PSK_WITH_AES_128_GCM_SHA256
TLS_PSK_WITH_AES_256_CBC_SHA384
TLS_PSK_WITH_AES_128_CBC_SHA256
TLS_PSK_WITH_NULL_SHA384
TLS_PSK_WITH_NULL_SHA256
然而,我从Wireshark的跟踪中可以看到,在29个密码套件中,Windows只发送了17个密码套件。特别是,它不发送服务器接受的这两个密码套件:
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
有人能告诉我为什么会这样吗?
发布于 2021-09-20 14:58:15
您可以从以下自定义套间列表开始:
TLS_AES_256_GCM_SHA384
TLS_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA
TLS_PSK_WITH_AES_256_GCM_SHA384
TLS_PSK_WITH_AES_128_GCM_SHA256
TLS_PSK_WITH_AES_256_CBC_SHA384
TLS_PSK_WITH_AES_128_CBC_SHA256
TLS_PSK_WITH_NULL_SHA384
TLS_PSK_WITH_NULL_SHA256
在您的Wireshark捕获如下:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
这使得它们成为不受支持的:
TLS_PSK_WITH_AES_256_GCM_SHA384
TLS_PSK_WITH_AES_128_GCM_SHA256
TLS_PSK_WITH_AES_256_CBC_SHA384
TLS_PSK_WITH_AES_128_CBC_SHA256
TLS_PSK_WITH_NULL_SHA384
TLS_PSK_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA
TLS_AES_256_GCM_SHA384
TLS_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
PSK套件需要使用远程主机配置预共享密钥,因此这些密钥在此使用上下文中自动不受支持。如果您没有配置的PSK,这些套件无法工作,所以没有必要发送它们。在SChannel中,在应用程序设置连接时使用SCH_USE_PRESHAREDKEY_ONLY
标志进行配置。
空密码没有加密。几乎每一个客户都被政策所禁止。特别是在SChannel中,SCH_USE_STRONG_CRYPTO
标志禁止使用空密码,默认情况下启用此标志。
TLS_AES_256_GCM_SHA384
和TLS_AES_128_GCM_SHA256
套房是TLS1.3套房。请注意,它们只指定了密码、模式和握手MAC,并且没有提到RSA、ECDSA、DHE或ECDHE。长期的真实性提供者(例如RSA,ECDSA)和密钥交换(例如DHE,ECDHE,RSA)分别在TLS 1.3中得到认可。如果您的客户不支持TLS 1.3,则不会发送这些密码套件。Windows不支持SChannel 直到Windows 2022中用于服务器SKU的TLS1.3或桌面SKU的直到Windows 11,因此配置这些密码套件不会在以前的版本中执行任何操作。
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
和TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
套房是一个奇怪的地方。在Windows 10 v1903及以上中,SCH_USE_STRONG_CRYPTO
标志禁止使用TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
套件。我找不到任何官方文件来说明为什么会做出这种改变,或者为什么TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
逃脱了类似的命运。不过,我想我猜得不错。
DHE适用于正则Diffie-Hellman,即没有椭圆曲线的DH。DHE套件的SChannel实现使用了一个硬编码的DH密钥大小为1024位,现在被认为是弱的。当微软修补SChannel中的代码执行错误MS14-066时,它们似乎也禁用了这两个套件。根据您拥有的Windows版本,DHE套件可能可用,也可能不可用。至于为什么TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
仍然被记录为允许在SChannel中使用SCH_USE_STRONG_CRYPTO
,微软很可能考虑了1024位DH的安全级别,以及AES-128-GCM大容量密码加SHA256的安全级别,因为握手MAC可以接受地彼此接近。然而,当您跳转到AES-256-GCM和SHA384时,安全级别远没有接近1024位DH的水平,因此您得到的是一种错误的安全感。
发布于 2021-09-21 21:25:23
我只需要解决一个类似的问题,如果您在您的系统上访问HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms,并且有一个Diffie-Hellman密钥,尝试删除它(在备份密钥之后)并重新启动。该密钥的存在可以禁用DHE密钥交换,从而阻止系统支持Diffie-Hellman密码套件。
我还删除了HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers下的所有条目,因为它们都是旧密码,但我不认为这是问题所在。
https://security.stackexchange.com/questions/255387
复制相似问题