SSL VPN原理介绍
1.1 SSL基本情况
• 1994年Netscape开发了SSL(Secure Socket Layer)协议,专门用于保护Web通讯
•版本和历史
– 1.0,不成熟
– 2.0,基本上解决了Web通讯的安全问题
•同时,Microsoft公司发布了PCT(Private CommunicationTechnology),并在IE中支持
– 3.0,1996年发布,增加了一些算法,修改了一些缺陷
–TLS 1.0(Transport Layer Security, 也被称为SSL3.1),1997年IETF发布了Draft,同时,Microsoft宣布放弃PCT,与Netscape一起支持TLS 1.0
– 1999年,发布RFC 2246(The TLS Protocol v1.0)
协议的设计目标
–为两个通讯个体之间提供保密性和完整性(身份认证)
–互操作性、可扩展性、相对效率
•为上层协议提的供安全性
–保密性
–身份认证和数据完整性
SSL实现
– OpenSSL, 最新0.9.6c, 实现了SSL(2,3), TLS(1.0)
•Openssl — — a command line tool.
•ssl(3) — — the OpenSSL SSL/TLS library.
•crypto(3)—— the OpenSSL Crypto library.
• URL:
– SSLeay
• www2.psy.uq.edu.au/~ftp/Crypto/
– Microsoft Win2k SSL implementation
1.2 SSL协议体系
• SSL被设计用来使用TCP提供一个可靠的端到端安全服务。
•协议分为两层
–底层:TLS记录协议
–上层:TLS握手协议、TLS密码变化协议、TLS警告协议
SSL为两层结构,包含4种协议
SSL记录协议(Record Protocol):提供安全传输机制
SSL握手协议(Handshake Protocol):建立安全会话、交换密钥
SSL更改密码协议(Change Cipher Spec Protocol)
SSL报警协议(Alert Protocol):将报警信息传输给对方,如握手失败、MAC错、…
TLS记录协议
–建立在可靠的传输协议(如TCP)之上,为更高层提供基本安全服务。特别是HTTP,它提供了Web的client/server交互的传输服务,可以构造在SSL之上。
–它提供连接安全性,有两个特点
•保密性,使用了对称加密算法
•完整性,使用HMAC算法
–用来封装高层的协议
•SSL Handshake Protocol, SSLChange Cipher Spec Protocol, SSL Alert Protocol是SSL的高层协议,用于管理SSL交换。
TLS记录协议 ( 后面有详细讲解 )
为应用层报文的传输提供鉴别和加密服务处理过程分为5个步骤:
①分段:将应用层报文分成16K字节的块
②压缩:可选的,SSL未指定压缩算法
③计算报文鉴别码并附于数据之后(与HMAC类似:报文摘要+共享保密数值)
④加密:对数据和MAC进行加密
⑤添加SSL报头(5字节)
1.3 两个重要概念
SSL连接(connection)
–一个连接是一个提供一种合适类型服务的传输(OSI分层的定义)。
– SSL的连接是点对点的关系。
– 连接是暂时的,每一个连接和一个会话关联。
SSL会话(session)
–一个SSL会话是在客户与服务器之间的一个关联。会话由Handshake Protocol创建。会话定义了一组可供多个连接共享的加密安全参数。
–会话用以避免为每一个连接提供新的安全参数所需昂贵的谈判代价。
连接状态也包含一组参数
–Server and client random,客户和服务器为每个连接选择的字节序列
–Server write MAC secret,服务器在发送数据的时候,用于MAC运算的key
–Client write MAC secret ,客户在发送数据的时候,用于MAC运算的key
ssl协议全称–Server write key,服务器加密数据的密钥,以及客户解密数据的密钥
–Client write key,客户加密数据的密钥,以及服务器解密数据的密钥
– Initialization vectors,在CBC模式中用到的IV,最初由握手协议初始化,以后,每一个记录的最后一个密文块被用作下一个记录的IV
– Sequence numbers,每一个连接都需要维护一个序列号,当密码参数变化时,重置为0
1.4 SSL记录层协议
记录层数据封装过程
第一步,fragmentation
– 上层消息的数据被分片成214字节大小的块,或者更小
第二步,compression(可选)
– 必须是无损压缩,如果数据增加的话,则增加部分的长度不超过1024字节
第三步,计算消息认证码(MAC)
–计算公式:
HMAC_hash(MAC_write_secret,
seq_num
|| pe
|| TLSCompressed.version
|| TLSCompressed.length
|| TLSCompressed.fragment)
第四步,encryption
–采用CBC,算法由cipher spec指定
–数据长度不超过214+2048字节,包括:
•加密之后的数据内容
• HMAC
• padding, 共padding_length,每个字节的值也是padding_length • padding_length
– IV,初始协商指定,以后,前后记录连接起来
–说明:如果是流密码算法,则不需要padding
支持的加密算法
算法密钥长度
IDEA 128
RC2-40 40
DES-40 40
DES 56
3DES 168
Fortezza 80
结果如下:
struct {
ContentType type; ——8位,上层协议类型
ProtocolVersion version; —— 16位,主次版本
uint16 length; ——加密后数据的长度,
不超过214+2048字节
EncryptedData fragment; ——密文数据
} TLSCiphertext;
1.5 SSL高层协议
•握手协议(下一节集中说明)
•密码变化协议(Change Cipher Spec Protocol)
–它位于TLS记录协议之上,它用到了TLS记录协议的处理过程
–ContentType = 20
–协议只包含一条消息,一个字节1
–用途:切换状态把密码参数设置为当前状态在握手协议中,当安全参数协商一致后,发送此消息
– 这条消息使得接收方改变当前状态读参数,使得发送方改变当前状态写参数
SSL握手协议概述:
在client/server通信开始时使用
完成工作:协商加密算法、交换密钥、相互鉴别,最终建立安全会话
是SSL四种协议中最复杂的,有10种握手协议报文
握手流程分为四个阶段
第一阶段:建立安全能力
第二阶段:服务器鉴别和密钥交换
第三阶段:客户端鉴别和密钥交换
第四阶段:完成
警告协议(Alert Protocol)
–位于TLS记录协议之上,也用到了TLS记录协议的处理过程
–ContentType = 21
–协议数据包含两个字节
第一个字节为level:分别为warning(1)和fatal(2)两种情况
第二个字节为情况说明
– Fatal类型的alert消息导致连接立即终止,此时,对应该会话的其他连接可以继续,但是会话标识符无效,以免利用此失败的连接来建立新的连接
• close_notify(0),
• unexpected_message(10), • bad_record_mac(20),*
• decryption_failed(21),* • record_overflow(22), *
• decompression_failure(30),* • handshake_failure(40),* • bad_certificate(42),
• unsupported_certificate(43), • certificate_revoked(44), • certificate_expired(45), • certificate_unknown(46), • illegal_parameter(47),* • unknown_ca(48), * access_denied(49), decode_error(50),* decrypt_error(51),
export_restriction(60), * protocol_version(70), * insufficient_security(71), * internal_error(80), *
user_canceled(90), #
no_renegotiation(100), # 说明:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论