TLS/SSL PKI介绍

来源:互联网 发布:电视剧网络播放量查询 编辑:程序博客网 时间:2024/05/07 20:31

Tls/ssltransport layer security /security socket layer)协议是应用比较成熟的,性能很好的安全协议,结合用户名/口令的鉴权机制可以较好的保护系统通信和应用层数据的安全。

在说明tls/ssl协议时如何保证通信安全之前,必须介绍几个概念和原理。

76年第一个公钥算法提出后,密码体制分为非对称加密体制(又名公钥体制,如RSA,DH等)和对称加密体制(AES,DES等)。非对称加密算法的加密和解密密钥是不一致的,且公钥在计算上导出私钥是不可性的。对称加密算法的加解密密钥是一致的,或很容易推导出。公钥体制能很容易解决非安全信道上的密钥协商和交换,也能实现线下的不可否认性。这些功能在对称密码体制下实现是相当复杂或不可行的。我们知道,非对称密码算法也能实现对称密码算法的加解密功能,除此之外,还能实现对称密码算法不能实现的功能。既然如此,为什么不舍弃对称密码体制呢?这是因为非对称密码算法一般比对称密码算法慢2-3个数量级(100-1000倍)。所以现实中一般使用对称加密算法实现长信息的加解密,而对称加密算法的密钥使用非对称密码体制协商。

公钥密码体制中,公钥顾名思义是公开的密钥,私钥是自己私藏的密钥,私钥的暴露意味着该该公私钥对的废止,不用。公钥在计算上推导不出私钥,这个特点决定了两方面的应用:1)用私钥加密一段文本,则因为公钥是公开的,所以任何获取到公钥的个人或组织都能解密验证,所以具有身份认证和不可否认性特点,这就是数字签名的核心原理。2)用公钥加密一段文本,发送给具有私钥的个人。因为只有私钥的人能解密,所以任何获取公钥的人都可以给持有私钥的人发送秘密信息。这就是非对称密码体制下密钥协商/密钥交换的核心原理。

在互联网上,要想通信的信息(即使是加密的信息)不被篡改,必须使用密码学的手段。密码学中的一类单向函数--安全Hash函数(又名杂凑函数)很好的解决了这个问题。Hash函数如MD5,SHA能检测出通信信息的篡改。HMAC是带密码的hash函数,是基于hash函数的扩展架构,如HMAC-MD5,HMAC-SHA.安全hash函数的应用范围很广,完整性保护只是其应用的一个方面。

让我们理一下,通信内容的机密性由对称密码算法支持,身份认证采用数字签名技术,通信内容的完整性有HMAC技术,HMAC和对称算法的密钥传输采用非对称密码体制传输。

这样整个系统没问题了吗?没有,我们还漏了一个非常重要的议题:公钥的发布。公钥的伪装是一个难题,互联网上的用户之间无法区分正确的公钥对应于正确的身份。过期的公钥或因为私钥暴露后废弃的公钥维护也是一个问题。目前广泛使用的公共目录和(Certificate Authority,证书认证)中心。公共目录和CA都是可信的第三方。公共目录部分跟本文协议无关,且不支持线下,所以这里略去。CA作为作为受信任的第3方,承担公钥体制中公钥合法性检验和颁发证书的功能。在体系中,公钥是存储在数字证书中的,数字证书由CA签名。CA的证书由自己或上级CA签名。因为CA是可信的,也即CA的证书是可信的,由CA签名的其他证书也是可信的。用户通过获取可信的CA证书获取CA的公钥来验证其他用户的证书是否是由CA签名的,若是,则信任该用户的证书,并提取出证书中的公钥。用户通过OCSP(在线证书状态协议)或定期获取CRL(证书废弃列表)来获得用户证书是否过期或作废。CA中心的引入解决了公钥发布,公钥的不可伪装和公钥状态维护等问题。这就是PKI(公钥基础)设施的核心原理。

好了,以上讲的原理包含了tls/ssl协议中用到的主要密码技术原理。对于理解tls/ssl协议已经充分了。

除了个别扩展文档规定的特殊情况外,我们一般可以这么说:Tls/Ssl(transport layer security /security socket layer)是运行在可靠传输层之上,使用公钥算法交换(传输)对称算法密钥,使用证书方式验证身份,使用对称加密算法加密应用层数据,使用HMAC验证可靠性的,最终提供通信双方秘密性、数据完整性和身份认证的协议。

Tls/ssl协议可分为2层,记录协议和握手协议,每次会话中对称加密和HMAC所需的密钥是唯一生成的,密钥的获取基于每次握手协议的秘密协商。TLS握手协议在确认的密钥基础上建立安全连接,该安全连接用于记录协议处理高层应用协议的安全通信。记录协议规定了tls/ssl包的语法和格式。

Tls/ssl协议栈模型,见下图。握手协议和告警协议在记录协议之上,这些协议总和组成tls/ssl协议。

 

1 协议栈模型

Ssl协议的版本1.02.03.03.13.23.3.   ssl 1.0的文档未公开,ssl 2.0被发现了一些安全缺陷。Ssl 3.1tls 1.0ssl 3.2tls 1.1ssl 3.3tls 1.2. tls 1.1修改了一些可能的安全问题,但这些安全问题在tls 1.0中被认为实践中不可行。Tls 1.2加入了一些新的特性。目前使用广泛的是ssl 3.0tls 1.0tls 1.1tls1.2较少支持。

原创粉丝点击