SSL和TLS部署实践指南
副标题[/!--empirenews.page--]
在TLS中,所有安全性都以服务器的加密身份开始,这就需要一个强大的私钥来防止攻击者进行模拟攻击。同样重要的是拥有一个有效和强大的证书,它会授予私钥来代表一个特定的主机名。 对于大多数网站都来说,由2048位RSA密钥提供的安全性就已经足够了。 由于RSA公钥算法应用广泛,从而使得它成为安全的默认选择。对于2048位的RSA密钥来说,能够提供大约112位密钥。如果你想要更高的安全性, RSA密钥则不能很好地进行扩展。比如,要获得128位的密钥,就需要3072位的RSA密钥,这显然运行较慢。椭圆曲线数字签名算法ECDSA显示为你提供了更好的安全性和更好的性能。以ECDSA256为例,,ECDSA密钥提供了128位的密钥。 如何保护私钥 (1)要在具有足够熵的可信计算机上生成私钥。 (2)从一开始就要为密钥设置密码保护,以防止在存储到备份系统中时受到攻击。私钥密码在实际运行中不会有太大的安全保障,因为攻击者完全可以随时从进程内存中检索密钥。利用硬件设备(硬件安全模块或HSM),即使在服务器受损的情况下也可以保护私钥,但是这些设备是昂贵的,因此仅适用于对安全有严格安全性要求的机构。 (3)被攻击后,撤销旧证书并生成新密钥。 (4)每年更新证书,最好你的设备可以自动执行此过程,因此具有较短使用周期的证书在实践中更为安全。 (5)除非特殊情况,否则每当获得新证书时,就应该生成相应的新私钥。 确保证书覆盖所使用的网站 确保你的证书覆盖你所使用的网站,避免无效的证书警告。 即使你只有一个域名,你也应确保证书与www前缀有关,例如,example.com和www.example.com。安全的Web服务器的每个DNS名称都应该配置一个有效的证书。还有就是,访问私钥的人越少越好。 可靠的CA获取证书 选择CA时,请注意以下5方面: (1)所有CA的安全状态都要经过定期审核; (2)选择以CA为主业务且提供各种功能支持的机构; (3)你选择的CA应提供证书吊销列表(CRL)和在线证书状态协议(OCSP)撤销的支持; 使用强大的证书签名算法 证书安全性取决于用于签署证书的私钥的强度及签名中使用的哈希函数的强度。原来大多数证书都依赖于SHA1散列函数,不过现在已经证实这是不安全的。因此,目前的趋势是正在向SHA256转型。截止2016年底,SHA1证书将不再被网站支持。 TLS服务器的配置 使用完整的证书链 无效的证书链会让服务器证书无效并导致浏览器发出安全警告,在大多数SSL和TLS部署中,只有服务器证书需要两个或多个证书来建立完整的信任链。 使用安全协议 SSL/TLS系列中有五种协议:SSL 2,SSL 3,TLS 1.0,TLS 1.1和TLS 1.2。 SSL2和SSL3已经非常过时了,建议不要使用。从理论上来讲,TLS 1.0也不应该被使用,但在实践中经常被使用。截至目前,TLS 1.1和 1.2都还没有什么安全问题,,但只有 1.2提供了现代的加密算法。 所以TLS 1.2应该是被使用的主要协议,因为它是唯一提供现代认证加密(也称为AEAD)的版本。 选择最佳加密套件 加密套件是用于在SSL/TLS握手期间协商安全设置的算法的组合。在ClientHello和ServerHello消息交换之后,客户端发送优先级列表的密码支持套件。然后,服务器使用从列表中选择的密码套件进行响应。加密套件为以下组合: 密钥交换算法(RSA,DH,ECDH,PSK); 认证算法(RSA,DSA); 批量加密算法(AES,Camellia,ARIA); 消息认证码算法(SHA-256); 不过有几个过时的加密原语必须禁止使用: (1)匿名Diffie-Hellman(ADH)套件不提供身份验证。 (2)NULL加密套件不提供加密。 (3)导出加密套件在连接协商时不安全,但也可以针对更强大的套件(FREAK攻击)的服务器使用。 (4)弱密码(通常为40和56位)的套件使用可以轻松被攻击。 (5)RC4是不安全的。 (6)3DES运行缓慢且易被攻击。 在SSL 3及更高版本的协议版本中,客户端会先提交一系列支持的加密套件,服务器从列表中选择一个用于连接的套件。然而,并不是所有的服务器都能执行此操作,有些会固定的从客户端列表中选择第一个支持的套件,所以服务器主动选择最佳可用加密套件对于实现最佳安全性至关重要。 使用前向保密 前向安全或前向保密(英语:Forward Secrecy,缩写:FS),有时也被称为完美前向安全 [1] (英语:Perfect Forward Secrecy,缩写:PFS),是密码学中通讯协议的安全属性,指的是长期使用的主密钥泄漏不会导致过去的会话密钥泄漏。 [2] 前向安全能够保护过去进行的通讯不受密码或密钥在未来暴露的威胁。如果系统具有前向安全性,就可以保证在主密钥泄露时历史通讯的安全,即使系统遭到主动攻击也是如此。 使用强大的密钥交换算法 确保数据的传输、存储安全,通常都会对传输的数据加密后存储或传输,接收方收到数据后解密密文,还原明文。通常采用的加密算法主要有对称密钥加密算法以及非对称密钥加密算法。在安全的数据通信中,通信的双方必须分别具有加密的密钥以及解密的密钥。一旦通信的密钥被泄漏或破解,由其加密的信息就会被泄漏。因此,如何安全地交换或协商通信密钥就成为至关重要的问题,从而如何保证密钥的安全,特别是安全的密码交换就成为电子商务中安全信息交换的核心问题。 2015年,研究人员发现一个SSL加密安全漏洞LogJam,LogJam漏洞将影响任何支持DHE_EXPORT密码的服务器及所有浏览器,包括最新版的IE、Chrome、Firefox、Safari等。随后他们评估称学术派黑客可以破解768位的密钥,而国家支持的黑客更可以突破1024位的密钥。所以为了安全起见,如果部署DHE,至少要配置2048位的密钥。 正确部署前的验证 也许在按着本文的方法在进行部署时,许多软件和硬件配置都有了新的版本,建议大家先对自己的SSL / TLS做个全面评估,以确保运行的安全,推荐大家使用此链接进行测试。 实践部署过程中的注意事项 避免一味的追求过高的安全性 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |