SlideShare a Scribd company logo
A Little SSL/TLS
detailyang@gmail.com
2017/03/09
SSL 是什什么
是⼀一种安全协议, 全称 Secure Sockets Layer, ⽹网景公司
(Netscape)在1994年年推出,在 Web 上做为⼀一种安全传输协议。
TLS 是什什么
也是⼀一种安全协议, 全称是 Transport Layer Security, 1999 年年 RFC 2246 提
出,基于 SSL 3.0 ⽤用于在两个通信应⽤用程序之间提供保密性和数据完整性。
SSL 和 TLS 的区别
TLS 具有更更⾼高的安全性以及适⽤用性
TLS 的产商实现
OpenSSL、Google 的 BoringSSL、Oracle 的 JSSE、
Amazon 的 S2n、Microsoft 的 SChannel、Apple 的
Secure Transport
TLS 的具体实现
TLS 是⼀一个分层协议.每⼀一层中的信息可能包含⻓长度、描述和内容
等字段。
record layer
change_cipher_spec
record layer
alert
record layer
handshake
record layer
application_data
struct {
uint8 major, minor;
} ProtocolVersion;
enum {
change_cipher_spec(20), alert(21), handshake(22),
application_data(23), (255)
} ContentType;
struct {
ContentType type;
ProtocolVersion version;
uint16 length;
opaque fragment[TLSPlaintext.length];
} TLSPlaintext;
A little ssl
TLS 协商的具体过程
A little ssl
Client Hello
Client Hello
Cipher Suite
Server Name
Server Hello
Server Hello
Cipher Suite:
TLS_ECDHE_RSA_WITH_AES
_128_GCM_SHA256 (0xc02f)
是什什么意思
TLS 协商到底协商什什么
东⻄西?
最重要的就是协商出
cipher suite
⼀一个 cipher suite 是4类算法的组合:
1. key exchange algorithm (密钥交换)
2. authentication method (认证⽅方法)
3. bulk encryption cipher (加密算法)
4. message authentication code (消息认证码)
5. pseudorandom function (伪随机函数)
TLS_ECDHE_RSA_WITH_
AES_128_GCM_SHA256
密钥交换: ECDHE
认证⽅方法: RSA
加密算法: AES_128_GCM
MAC 算法:SHA256
cipher suite 需要在 IANA 进⾏行行注册
https://www.iana.org/assignments/tls-
parameters/tls-parameters.xhtml#tls-
parameters-4
Server Certificate
A little ssl
A little ssl
客户端信任证书
⼤大部分语⾔言使⽤用系统内置的信任证书
Chrome 使⽤用系统内置的信任证书
Firefox 使⽤用 mozilla 维护的信任证书: https://hg.mozilla.org/
mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/
certdata.txt
Linux 使⽤用 /etc/ssl/certs/ca-bundle.trust.crt 同样也来⾃自于 https://
hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/
builtins/certdata.txt
Certificate Request(可选)
要求客户端随后发送证书 (Client Certificate)
Server Key Exchange
Message
这条消息只会在 Server Certificate ⽆无法记录⾜足够的数据去交换
premaster secret时,才会被发送
A little ssl
Server Hello Done
Client Certificate(可选)
Client Key Exchange
Message
Encrypted Handshake Message
Change Cipher Spec
Protocol
通知对⽅方接下来的数据将是加密的
A little ssl
Application Data
TLS 如何查看
Application Data
重点在于算出 master
key
master_secret = PRF(pre_master_secret, "master secret",
ClientHello.random + ServerHello.random)
ClientHello.random 和 ServerHello.random 是明⽂文,只有
pre_master_secret不不知道
RSA 是密钥协商算法
客户端⽤用服务端的证书公钥加密 pre_master_secret, 服务端获
取之后,⽤用私约解密即可获得 pre_master_secret.
所以只要获得服务端证书私钥就能正确解密 TLS 流量量
RSA 作为密钥协商的
最⼤大问题
pre master key 是静态的,不不具有所谓的前向安全性(Forward
Secrecy), HTTP2 协议要求 SSL 的密钥协商算法需要具有
Perfect Forward Secrecy
DH 是密钥协商算法
不不再直接传递 pre master key, ⽽而是传递 DH 算法所需要的参数,双⽅方各
⾃自⽣生成⼀一对公钥和私钥,并把各⾃自的公钥交给对⽅方,DH 算法保证双⽅方
能在不不同的参数下⽣生成同样的 pre master key
因为不不知道各⾃自的私钥,所以中间⼈人⽆无法获取 pre master key。
浏览器器的
SSLKEYLOGFILE
浏览器器会把每次 TLS 协商的 master key 放到这个⽂文件,因此配
合 wireshark,就能看到 TLS 加密的数据
加速 TLS 协商
⼏几个维度
1. 减少传输的负荷
2. 使⽤用更更快的算法
3. 缓存协商的结果
4. TLS 协议上优化
减少传输的负荷
减少传输的证书
1. 只配置⾃自⼰己的证书和中间证书
2. 使⽤用 ECC 证书
可以选择 ECC(Elliptic Curve Cryptography,椭圆曲线密码
学)证书。256 位的 ECC Key 等同于 3072 位的 RSA Key.
ECC 证书的缺点
1. 服务商需要⽀支持⽣生成 ECC 的证书 (可以解决)
2. 兼容性较差,需要较⾼高的系统 (可以解决)
使⽤用更更快的算法
在 ARM 平台上使⽤用⾕谷歌的 ChaCha20-Poly1305 算法, 算法针对 ARM 做了了优
化,在移动设备上使⽤用速度更更快、更更省电
在 intel 平台上使⽤用优先使⽤用 AES-GCM, Intel 提供了了 AES
NI(Advanced Encryption Standard new instructions)的 x86
指令集扩展,从硬件上提供对 AES 的⽀支持
缓存协商的结果
1. 使⽤用 TLS session id 缓存结果
缺点:服务端各个节点需同步 session id
2. 使⽤用 TLS session ticket 缓存结果
缺点:需要轮转 session ticket, 避免 session ticket 前向安全
性
TLS 协议上优化
需要两个 RTT 来协商
开启 False Start (抢
跑)
开启TLS False Start需要浏览器器端和服务器器端同时满⾜足条件。
Chrome和Firefox需要⽀支持NPN/ALPN,并且服务器器端的 cipher suite ⽀支持前向安
全(Forward Secrecy);
使⽤用 OCSP Stapling
代替 OCSP 和 CRL
使⽤用 TLS 1.3
⽬目前只有 Chrome 和 Firefox 默认开启了了 TLS 1.3

More Related Content

PPT
DOCX
Windows Password
PPTX
Lesson3 17 11-2011
DOC
Redis配置文件说明
PPTX
Fast fish Forum 15 March 2017
PDF
Estudio sobre-el-uso-de-wordpress-2016
PDF
TechTalkThursday 02.03.2017: Container-Orchestrierung mit OpenShift - Unser W...
PPT
SSL & TLS Architecture short
Windows Password
Lesson3 17 11-2011
Redis配置文件说明
Fast fish Forum 15 March 2017
Estudio sobre-el-uso-de-wordpress-2016
TechTalkThursday 02.03.2017: Container-Orchestrierung mit OpenShift - Unser W...
SSL & TLS Architecture short

Viewers also liked (18)

DOCX
Подготовительная группа 10.3.17
DOCX
Question 1 Evaluation
PDF
29 อารีรัตน์
ODP
Game of stereotypes about Spain
PDF
Stop conflictos es
PDF
Diapositives de la soirée La Société Change
PPTX
Top 5 Code Coverage Tools in DevOps
PPTX
Top 10 static code analysis tool
PDF
SSL: limitations, bad practices and how to do it right
PDF
CNIT 123: 8: Desktop and Server OS Vulnerabilites
PDF
Topsec email security 2016
PDF
ChaCha20-Poly1305 Cipher Summary - AdaLabs SPARKAda OpenSSH Ciphers
PPTX
SSL TSL;& SET
ODP
Inro to Secure Sockets Layer: SSL
PPSX
5 Cryptography Part2
PPTX
Implementing a JavaScript Engine
PPTX
Introduction to Cryptography
PPT
Email security
Подготовительная группа 10.3.17
Question 1 Evaluation
29 อารีรัตน์
Game of stereotypes about Spain
Stop conflictos es
Diapositives de la soirée La Société Change
Top 5 Code Coverage Tools in DevOps
Top 10 static code analysis tool
SSL: limitations, bad practices and how to do it right
CNIT 123: 8: Desktop and Server OS Vulnerabilites
Topsec email security 2016
ChaCha20-Poly1305 Cipher Summary - AdaLabs SPARKAda OpenSSH Ciphers
SSL TSL;& SET
Inro to Secure Sockets Layer: SSL
5 Cryptography Part2
Implementing a JavaScript Engine
Introduction to Cryptography
Email security
Ad

A little ssl