SSL/TLS 的版本历程
image.pngTLSv1.0 为什么 被认为是不安全的协议?
TLS 1.0 被认为是不安全的协议,原因如下:
-
存在漏洞:TLS 1.0 存在多个已知的漏洞,比如 POODLE 攻击,可以利用协议的弱点解密敏感信息。
-
弱密码套件:TLS 1.0 默认使用弱密码套件,这使得它容易受到攻击。这些弱密码套件无法提供强大的加密,容易被攻击者破解。
-
缺乏支持:TLS 1.0 是一个过时的协议,不支持较新的加密算法和安全特性。这使得它难以抵御现代安全威胁。
-
行业标准:由于其安全性弱点,TLS 1.0 不再符合行业标准。组织和监管机构,如支付卡行业数据安全标准(PCI DSS),已要求停用 TLS 1.0,以确保更好的安全性。
为了确保安全连接,建议使用较新版本的 TLS 协议,如 TLS 1.2 或 TLS 1.3,它们具有改进的安全特性,并解决了 TLS 1.0 存在的漏洞。
为了兼容第三方系统, nginx 必须配置 TLS 1.0 ,可以限制只使用安全的加密套件吗?
是的,你可以通过配置来限制只使用安全的加密套件,以增加 TLS 1.0 的安全性。在 Nginx 中,你可以使用 ssl_ciphers
指令来指定允许的加密套件。
以下是一个例子,展示了如何限制只使用安全的加密套件,同时启用 TLS 1.0:
server {
listen 443 ssl;
server_name example.com;
ssl_protocols TLSv1.0;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
# 其他 SSL 配置
location / {
# 其他配置
}
}
在上述示例中,我们指定了只使用安全的加密套件,如 EECDH+AESGCM
和 AES256+EECDH
。
你可以根据你的需求选择适合的加密套件。
请确保只启用安全的加密套件,以提高安全性。
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
这个配置提供了一定的安全性,但仍然不够理想。这个配置使用了一些安全的加密套件,但还是包含了一些较弱的加密套件。
具体来说,这个配置包含了以下几个加密套件:
-
EECDH+AESGCM
: 使用 ECDHE 密钥交换和 AES-GCM 加密算法。 -
EDH+AESGCM
: 使用 DHE 密钥交换和 AES-GCM 加密算法。 -
AES256+EECDH
: 使用 ECDHE 密钥交换和 AES-256 加密算法。 -
AES256+EDH
: 使用 DHE 密钥交换和 AES-256 加密算法。
尽管这些加密套件中包含了一些较强的加密算法,但也包含了一些相对较弱的密钥交换算法,如 DHE。
DHE 在一些情况下可能受到攻击,因此并不是最佳的选择。
为了提高安全性,建议优先选择 ECDHE 密钥交换和 AES-GCM 等更强大的加密套件。同时,还可以排除一些较弱的加密套件,以进一步增强安全性。
TLS 1.0支持的解密套件较为有限,而且大部分解密套件都被认为不够安全。以下是TLS 1.0支持的一些常见解密套件示例:
- RSA_WITH_AES_128_CBC_SHA
- RSA_WITH_AES_256_CBC_SHA
- RSA_WITH_3DES_EDE_CBC_SHA
然而,这些解密套件在安全性方面存在一些问题,因为它们使用较弱的加密算法(如SHA-1)和较短的密钥长度。因此,建议尽量避免使用TLS 1.0,并升级到更安全的TLS版本(如TLS 1.2或TLS 1.3),以使用更强大和安全的解密套件。
# nmap --script ssl-enum-ciphers -p 443 www.jianshu.com
Starting Nmap 7.92 ( https://nmap.org ) at 2024-01-27 19:18 CST
Nmap scan report for www.jianshu.com (39.98.74.233)
Host is up (0.032s latency).
Other addresses for www.jianshu.com (not scanned): 2408:4001:f30::221
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.0:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (ecdh_x25519) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
| compressors:
| NULL
| cipher preference: server
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
| TLSv1.1:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (ecdh_x25519) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
| compressors:
| NULL
| cipher preference: server
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (ecdh_x25519) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (ecdh_x25519) - A
| TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
| TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
| TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (ecdh_x25519) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
| compressors:
| NULL
| cipher preference: server
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
|_ least strength: C
Nmap done: 1 IP address (1 host up) scanned in 11.19 seconds
# nmap --script ssl-enum-ciphers -p 443 www.taobao.com
Starting Nmap 7.92 ( https://nmap.org ) at 2024-01-27 19:23 CST
Nmap scan report for www.taobao.com (116.211.221.194)
Host is up (0.0081s latency).
Other addresses for www.taobao.com (not scanned): 116.211.221.195 240e:95c:803:2:3::3d8 240e:95c:803:2:3::3d9
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.0:
| ciphers:
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| compressors:
| NULL
| cipher preference: server
| warnings:
| Forward Secrecy not supported by any cipher
| TLSv1.1:
| ciphers:
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| compressors:
| NULL
| cipher preference: server
| warnings:
| Forward Secrecy not supported by any cipher
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A
| TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
| TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
| TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| compressors:
| NULL
| cipher preference: server
| TLSv1.3:
| ciphers:
| TLS_AKE_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A
| TLS_AKE_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
| TLS_AKE_WITH_SM4_GCM_SM3 (ecdh_x25519) - A
| TLS_AKE_WITH_SM4_CCM_SM3 (ecdh_x25519) - A
| TLS_AKE_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A
| cipher preference: server
|_ least strength: A
Nmap done: 1 IP address (1 host up) scanned in 6.38 seconds
这些加解密套件有安全性问题么?
| ssl-enum-ciphers:
| TLSv1.0:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
| compressors:
| NULL
| cipher preference: server
这些加密套件在TLS 1.0中是被支持的,但是它们确实存在一些安全性问题。
以下是对每个加密套件的一些注意事项:
-
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA和TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:这些套件使用ECDHE密钥交换和AES-CBC加密算法。尽管ECDHE提供了前向保密性和强大的密钥交换,但是基于CBC模式的加密算法可能受到Padding Oracle攻击的风险。
-
TLS_RSA_WITH_AES_128_CBC_SHA和TLS_RSA_WITH_AES_256_CBC_SHA:这些套件使用RSA密钥交换和AES-CBC加密算法。然而,使用RSA密钥交换意味着密钥交换过程不具备前向保密性,而且使用CBC模式的加密算法存在Padding Oracle攻击的风险。
-
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA和TLS_RSA_WITH_CAMELLIA_128_CBC_SHA:这些套件使用RSA密钥交换和Camellia-CBC加密算法。Camellia是一种对称加密算法,但在TLS中使用的Camellia-CBC模式可能存在与AES-CBC类似的安全问题。
综上所述,这些加密套件在TLS 1.0中存在一些安全性问题,特别是对于CBC模式的加密算法。为了提高安全性,建议升级到更新的TLS版本(如TLS 1.2或TLS 1.3),并使用更强大和安全的加密套件。
网友评论