请稍侯

TLS 学习

25 November 2015

##目录

##相关联的协议 ###两个主要的协议

做对称加密传输的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密码套件(ciphersuite)

tls大致有三个组件构成,包括:

  1. 对称加密传输组件
  2. 认证秘钥协商组件
  3. 秘钥扩展组件

这三个组件又可以拆为5类算法,5类算法组合在一起,称为一个密码套件(ciphersuite) 5类算法包括:

  1. authentication(认证算法)
  2. encryption(加密算法)
  3. message authentication message(消息认证码算法简称MAC)
  4. key exchange(秘钥交换算法,简称kx)
  5. 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认证密钥协商对称加密传输的结构。

##record协议


##handshake协议

##参考

密码学和TLS

ssl和tls的区别

tls协议实例分析

##相关RFC

The TLS Protocol Version 1.0

本文档specify (详细说明了) 1.0版本的TLS协议。 TLS协议提供了网络上私密privacy的会话功能。 本协议允许C/S 两端基于防止窃听eavesdrop、串改tamper、伪造forgery的方式进行会话。

HTTP Over TLS

本文档描述了如何使用tls协议来保证http连接的安全性。

Transport Layer Security Protocol Compression Methods

本文档介绍了tls的几种压缩方式

The Transport Layer Security (TLS) Protocol Version 1.2

本文档介绍了1.2版本的tls