本文是关于SSL/TLS的 CipherSuite 的信息摘录,翻译。如有疑问,欢迎指出。 一,CipherSuite的概念 CipherSuite 这个名词目前没看到有好的中文翻译,个人觉得翻译成“加密算法套件”比较合适。 一个CipherSuite是4个算法的组合: 二,CipherSuite的注册管理 TLS Cipher Suite 在 iana 集中注册,每一个CipherSuite分配有 一个2字节的数字用来标识 1.服务器端: 说说openssl,openssl 实现了以上列表中的大部分( 摒弃了不安全的一些CipherSuite)。 如何指定CipherSuite 在tls中,选择CipherSuite的方法是通过cipher list 格式和用法见:https://www.openssl.org/docs/apps/ciphers.html
加密套件选择 加密套件(CipherSuite),是在 SSL 握手中需要协商的很重要的一个参数。 如果客户端支持的 CipherSuite 列表与服务端配置的 CipherSuite 列表没有交集,会导致无法完成协商,握手失败。 SSL 的 CipherSuite 协商机制具有良好的扩展性,每个 CipherSuite 都需要在 IANA 注册,并被分配两个字节的标志。 全部 CipherSuite 可以在 IANA 的 TLS Cipher Suite Registry 页面查看。 OpenSSL 库支持的全部 CipherSuite 可以通过以下命令查看: ? 0xCC,0×14 是 CipherSuite 的编号,在 SSL 握手中会用到。
}; CipherSuite TLS_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x0A }; CipherSuite TLS_RSA_WITH_AES_128 CipherSuite TLS_RSA_WITH_AES_128_CBC_SHA256 = { 0x00,0x3C }; CipherSuite TLS_RSA_WITH_AES_256_ = { 0x00,0x10 }; CipherSuite TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = { 0x00,0x13 }; CipherSuite CipherSuite TLS_DH_DSS_WITH_AES_256_CBC_SHA = { 0x00,0x36 }; CipherSuite TLS_DH_RSA_WITH_AES_256 = { 0x00,0x1B }; CipherSuite TLS_DH_anon_WITH_AES_128_CBC_SHA = { 0x00,0x34 }; CipherSuite
client对server的认证完成后,server可以要求client发送client的证书,如果这是协商出来的CipherSuite允许的。 (握手过程中的数据,整体是受Finished消息的保护的) ClientHello.cipher_suites字段,包含了客户端支持的CipherSuite的列表,按照客户端希望的优先级排序,每个CipherSuite 有2个字节,每个CipherSuite由:一个密钥交换算法,一个大量数据加密算法(需要制定key length参数),一个MAC算法,一个PRF 构成。 如果列表包含服务器不认识,不支持,或者禁用的CipherSuite,服务器必须忽略。 cipher_suite : 服务器选定的一个CipherSuite。如果是恢复的session,那就是session里的CipherSuite。
关于CipherSuite的解释,我们在后面篇章会有更详细的介绍。 Extension:server name ? 的介绍 在基本了解TLS的通信过程之后,我们再来了解一下CipherSuite的概念。 每一个CipherSuite都是4个算法类型的组合: 1个authentication (认证)算法 1个encryption(加密)算法 1个message authentication code 从我们的抓包内容中可以看到:服务端最终选择的加密套件为: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 对应到CipherSuite算法类型后: CipherSuite算法类型 协商过程:https消息内容是通过CipherSuite来指定过程中使用的算法的服务端大多数情况下,会从客户端Cipher Suites中按排列顺序从上往下进行选择,因为排列靠前意味着安全性越高算法的选择会一定程度上影响
关于CipherSuite的解释,我们在后面篇章会有更详细的介绍。 的介绍 在基本了解TLS的通信过程之后,我们再来了解一下CipherSuite的概念。 每一个CipherSuite都是4个算法类型的组合: 1个authentication (认证)算法 1个encryption(加密)算法 1个message authentication code ( 算法类型后: CipherSuite算法类型 示例中对应算法 常见算法名称 认证算法 RSA RSA(主流),DSA,ECDSA 加密算法 AES_256_GCM AES128/256 bit,加密模式 协商过程:https消息内容是通过CipherSuite来指定过程中使用的算法的服务端大多数情况下,会从客户端Cipher Suites中按排列顺序从上往下进行选择,因为排列靠前意味着安全性越高算法的选择会一定程度上影响
on Connection{h5agent.alibaba.net:80, proxy=DIRECT hostAddress=h5agent.alibaba.net/42.156.238.36:80 cipherSuite on Connection{h5agent.alibaba.net:80, proxy=DIRECT hostAddress=h5agent.alibaba.net/42.156.238.36:80 cipherSuite on Connection{h5agent.alibaba.net:80, proxy=DIRECT hostAddress=h5agent.alibaba.net/42.156.238.36:80 cipherSuite
或者 CipherSuite 规定的用于 Finished 计算的hash函数。 在TLS的之前版本中,verify_data 总是 12 字节。在TLS 1.2中,这取决于CipherSuite。 如果CipherSuite没有显式规定 verify_data_length ,就当成12字节处理。将来的CipherSuite可能会规定别的长度,但是不能小于12字节。 SessionTicket可以用于任何CipherSuite。 TLS 1.0, TLS 1.1, TLS 1.2 都适用。
ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) .tlsVersions(TlsVersion.TLS_1_2) .cipherSuites( CipherSuite.TLS_ECDHE_RSA_WITH_AES _128_GCM_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) .build(); OkHttpClient
系统比较老(比如sles11sp3),新版的filezilla client版本比较高(实际是FileZilla FTP Client里的fzputtygen.exe和fzsftp.exe版本比较高)导致CipherSuite CipherSuite密码套件不兼容,详情见filezilla官网bug说明: https://trac.filezilla-project.org/ticket/10958#no1 image.png
# 使用KEM_P521_HKDF_SHA512作为KEM算法# 使用HKDF_SHA512作为KDF算法# 使用AES256_GCM作为AEAD算法 alice_cipher_suite = CipherSuite.new hash:{hashlib.sha256(ciphertext).hexdigest()}')# 分割线print('########################')# 分割线# Bob配置相同的CipherSuite bob_cipher_suite = CipherSuite.new( kem_id = KEMId.DHKEM_P521_HKDF_SHA512 ,
客户端支持的密码算法列表( CipherSuite) :密钥套件列表,列表中包含了Client端支持的所有密钥套件。 客户端支持的压缩方法列表:客户端支持的压缩算法列表,填0表示空。 服务器从客户端建议的密码算法中挑出一套(CipherSuite)密码算法 服务器从客户端建议的压缩方法中挑出一个压缩算法 客户端Client Hello数据包 ? Server Key Exchange (可选) 根据之前在ClientHello消息中包含的CipherSuite信息,决定了密钥交换方式(例如RSA或者DH),因此在Server Key Exchange 建立起一个安全的连接,客户端发送一个Change Cipher Spec消息,并且把协商得到的CipherSuite拷贝到当前连接的状态之中。
5.4. handshake — Server Certificate 当服务器确定了CipherSuite后,根据CipherSuite里面的认证算法,如果需要发送证书给客户端,那么就发送 Server 如果一个CipherSuite指定了新的TLS密钥交换算法,也会指定证书格式和要求的密钥编码方法。 这不优雅,但是是为了把对原来的CipherSuite协商的设计的改动减到最小,而做的妥协。 并且,hash和签名算法,必须和服务器的证书里面的公钥兼容。 如果协商出来的是匿名CipherSuite,服务器不能要求客户端认证。 证书必须和协商出来的CipherSuite的密钥交换算法配套,并和任何协商的扩展配套。 尤其是: 证书必须是X.509v3 类型的。
-h Display usage information (this message) -Z ciphersuite Specify SSL/TLS cipher ] [ -x
| -attributes ] [ -Z ciphersuite -Z ciphersuite 设置SSL/TLS加密
结果分析字段
Server Software
返回的第一次成功的服务器响应的HTTP头。 2.6K20发布于 2019-07-11 来自专栏码农沉思录 教你优雅地解密HTTPS流量HTTP/2 中只能使用 TLSv1.2+,还禁用了几百种 CipherSuite(详见:TLS 1.2 Cipher Suite Black List)。 实际上,HTTP/2 允许使用的 CipherSuite 必须采用具有前向安全性的密钥交换算法,不允许使用 RSA 密钥交换。 为此,网站方需要启用使用 ECDHE 作为密钥交换的 CipherSuite,或者直接使用 ECC 证书;用户方需要弃用不支持 ECDHE 的古董操作系统及浏览器。 6.5K40发布于 2019-05-04 来自专栏Linux知识积累 使用ab命令对网站进行压力测试-m method Method name -h Display usage information (this message) -Z ciphersuite 2.5K30发布于 2019-09-16 来自专栏嘉为动态 Red Hat安全公告—2017年2月---- 安全漏洞详细信息 公告标识 CVE-2017-3733标题CVE-2017-3733描述It was found that changing the ciphersuite during 57930发布于 2018-12-21 来自专栏7DGroup 性能工具之ab压力测试工具及ab命令详解-h Display usage information (this message) -Z ciphersuite Specify SSL/TLS cipher suite 1.6K10发布于 2020-02-11 来自专栏信安之路 SSL_TLS 攻击原理解析加密过程 1、协商加密协议 2、获取公钥证书 3、验证公钥证书 4、交换会话秘钥 5、ssl连接建立完成,使用加密传输 详细叙述: 1、浏览器将自己支持的加密规则(也就是 CipherSuite )发给服务器 2、服务器端收到请求,然后从客户支持的 CipherSuite 中选出一个应答,并发送给客户端公钥证书和选用的 HASH 算法 3、客户端收到公钥之后,利用自己的信任的根证书对收到的公钥进行验证 2K00发布于 2018-08-08 |