TLS 学习
##目录
做对称加密传输的record协议;
做秘钥认证协商的handshake协议;
###三个辅助的协议
changecipher spec 协议:the change cipher spec protocol,
用来通知对端从handshake切换到record协议(有点冗余,在TLS1.3里面已经被删掉了)
alert协议:the alert protocol, 用来通知各种返回码,
application data 协议: the application data protocol,
就是把http,smtp等的数据流传入record层做处理并传输。
###五协议的关系
handshake protocol,
alert protocol,
changeCipherSpec protocol,
application data protocol都封装在record protocol的包里,
然后在tcp or udp上传输
tls大致有三个组件构成,包括:
- 对称加密传输组件
- 认证秘钥协商组件
- 秘钥扩展组件
这三个组件又可以拆为5类算法,5类算法组合在一起,称为一个密码套件(ciphersuite) 5类算法包括:
- authentication(认证算法)
- encryption(加密算法)
- message authentication message(消息认证码算法简称MAC)
- key exchange(秘钥交换算法,简称kx)
- key derivation function(秘钥衍生算法)
openssl ciphers -V | column -t
可以查看服务器支持的密码套件,本机的执行结果是:
0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
0xC0,0x2C - ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
0xC0,0x28 - ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
0xC0,0x24 - ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
0xC0,0x14 - ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
0xC0,0x0A - ECDHE-ECDSA-AES256-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
0xC0,0x22 - SRP-DSS-AES-256-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=AES(256) Mac=SHA1
0xC0,0x21 - SRP-RSA-AES-256-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=AES(256) Mac=SHA1
0x00,0xA3 - DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(256) Mac=AEAD
0x00,0x9F - DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
其中, xC0,0x2C - ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
解释为:
名称为 ECHE-ECDSA-SES256-GCM-SHA384
的密码套件(ciphersuite) 应用于tlsv1.2版本,
使用ECDH做密钥交换算法,使用ECDSA做验证算法
使用AESGCM(256)做加密算法, 使用AEAD做消息认证码算法(MAC)
使用SHA384做伪随机数算法( pseudo random function简称prf),扩展密钥为数据块,使密钥更安全
tls是用来加密传输的,所以最终的目的是实现一个对称加密的组件进行加密传输。为了生成对称加密的密钥,
需要有个认证密钥协商的过程,因此tls分为:
- 认证密钥协商的handshake协议,handshake protocol
- 对称加密传输的record协议,record protocol
这样就构成了tls认证密钥协商 和 对称加密传输的结构。
本文档specify (详细说明了) 1.0版本的TLS协议。 TLS协议提供了网络上私密privacy
的会话功能。
本协议允许C/S 两端基于防止窃听eavesdrop
、串改tamper
、伪造forgery
的方式进行会话。
本文档描述了如何使用tls协议来保证http连接的安全性。
Transport Layer Security Protocol Compression Methods
本文档介绍了tls的几种压缩方式
The Transport Layer Security (TLS) Protocol Version 1.2
本文档介绍了1.2版本的tls