TLS/SSL PKI介绍
来源:互联网 发布:电视剧网络播放量查询 编辑:程序博客网 时间:2024/05/07 20:31
Tls/ssl(transport 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.0,2.0,3.0,3.1,3.2,3.3. ssl 1.0的文档未公开,ssl 2.0被发现了一些安全缺陷。Ssl 3.1即tls 1.0,ssl 3.2即tls 1.1,ssl 3.3即tls 1.2. tls 1.1修改了一些可能的安全问题,但这些安全问题在tls 1.0中被认为实践中不可行。Tls 1.2加入了一些新的特性。目前使用广泛的是ssl 3.0和tls 1.0。tls 1.1和tls1.2较少支持。
- TLS/SSL PKI介绍
- PKI、SET、SSL介绍
- SSL/TLS 协议介绍
- SSL/TLS 协议介绍
- SSL/TLS 协议介绍
- SSL / TLS 介绍
- SSL/TLS/WTLS 简单介绍
- SSL&TLS介绍及差异
- Netty及SSL/TLS介绍
- SSL与TLS 区别 以及介绍
- Java SSL/TLS 安全通讯协议介绍
- SSL与TLS 区别 以及介绍
- SSL与TLS 区别 以及介绍
- Java SSL/TLS 安全通讯协议介绍
- SSL与TLS的区别以及介绍
- SSL与TLS的区别以及介绍
- SSL与TLS区别及介绍
- SSL与TLS 区别 以及介绍
- Scanner在异常处理中的陷阱
- [07.08]密西绿色精品软件每日更新[西空整理]
- Ubuntu安装
- Jsoncpp的使用
- 题目1024:畅通工程
- TLS/SSL PKI介绍
- Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十二)
- oracle 参量文件损坏导致一系列问题
- oracle 10G控制文件因介质失败导致全部不可用的恢复
- 【Oracle Flashback 实验】oracle 10g flashback研究及测试
- 工程师如何不被PM欺负
- Oracle索引——位图索引(详细解析)
- oracle 9I buffer cache分析
- oracle 9i 设置db_cache_advice出现的问题