SSL/TLS 握手过程详解

在现代社会,互联网已经渗透到人们平常生活的方方面面,娱乐、经济、社会关系等都离不开互联网的帮助。在这个背景下,互联网安全就显得十分重要,没有提供足够的安全保障,人们是不会如此依赖它的。幸运的是,在大牛们的努力下,很早之前就有一套安全体系来保障互联网信息的传递。下面咱们一块儿来了解一下这套体系。算法

加密算法
首先咱们须要了解一下加密相关的知识,加密能够分为对称加密和非对称加密。二者的主要区别就是是否使用同一个秘钥,对称加密须要用同一个秘钥。非对称加密不须要用同一个秘钥,而是须要两个秘钥:公开密钥(publickey)和私有密钥(privatekey),而且加密密钥和解密密钥是成对出现的。apache

对称加密浏览器

对称加密算法的特色是算法公开、计算量小、加密速度快、加密效率高。对称加密有不少种算法,因为它效率很高,因此被普遍使用在不少加密协议的核心当中。不足之处是,交易双方都使用一样钥匙,安全性得不到保证。常见的对称加密有 DES、AES 等。安全

非对称加密服务器

非对称加密使用一对“私钥-公钥”,用私钥加密的内容只有对应公钥才能解开,反之亦然。非对称加密有如下特性:markdown

对于一个公钥,有且只有一个对应的私钥。
公钥是公开的,而且不能经过公钥反推出私钥。
经过私钥加密的密文只能经过公钥能解密,经过公钥加密的密文也只能经过私钥能解密。
非对称加密不须要共享同一份秘钥,安全性要比对称加密高,但因为算法强度比对称加密复杂,加解密的速度比对称加解密的速度要慢。常见的非对称加密有 RSA、ESA、ECC 等。网络

摘要算法
除了加密算法,摘要算法在互联网安全体系中也扮演了重要的角色。摘要算法有如下特性:socket

只要源文本不一样,计算获得的结果,必然不一样(或者说机会不多)。
没法从结果反推出源数据。
基于以上特性,咱们通常使用摘要算法来校验原始内容是否被篡改。常见的摘要算法有 MD五、SHA 等。网站

Tips: 摘要算法不能算做加密算法,加密算法须要使用秘钥加解密,但摘要算法没法根据结果反推出内容。另外 MD5 目前也不算安全了,例如彩虹表攻击。
具体例子
假设甲公司要给乙公司发送一份机密的文件,那么此次传输须要确保如下几点:加密

文件内容不能被读取(加密)
文件内容不能被篡改(数字签名)
文件不能被掉包(数字证书)
加密

对称加密须要用同一份秘钥,这一份秘钥的约定就有被中途截获的可能。所以能够采用非对称加密算法加密对称秘钥的方式来加密内容,也就是用乙的公钥加密对称秘钥,并用这个对称秘钥加密文件内容。

假设这份文件被黑客截获,可是黑客没有乙的私钥没法解出对称秘钥,也就没法解密文件内容。可是这里有个风险,虽然黑客没法解密文件内容,但他能够本身生成一份秘钥并用乙的公钥加密,再用这份秘钥加密一份伪造的文件发给乙,这种状况下乙收到的就是被篡改的文件。

数字签名

上面提到乙有可能收到被篡改的文件,这个问题能够用数字签名的方式解决,数字签名就是用摘要算法提取出源文件的摘要并用私钥进行加密后的内容。针对上面那个问题,甲在发送文件时再附带上源文件的数字签名。若是被黑客截取到加密后的文件和数字签名,黑客即便使用甲的公钥解出了文件摘要,因为摘要算法的特性黑客也没法还原出原始内容。但乙能够解密出文件内容再用一样的摘要算法提取出摘要来和数字签名里的摘要进行比对,摘要一致则说明文件没有被篡改过。

到目前为止还有一个风险就是乙没法肯定本身用的公钥就是甲提供的,若是黑客将乙手里的甲的公钥替换成本身的并用本身的私钥生成数字签名,那么乙仍是会受到被篡改的文件。

数字证书

数字证书的出现就是为了解决上述提到的问题,数字证书是一个经证书受权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。

数字证书里通常会包含公钥、公钥拥有者名称、CA 的数字签名、有效期、受权中心名称、证书序列号等信息。

数字证书如何确保列出的用户就是公钥的拥有者呢?关键点是 CA 的数字签名,CA会用本身的私钥将证书内容的摘要进行加密。由于 CA 的公钥是公开的,任何人均可以用公钥解密出 CA 的数字签名的摘要,再用一样的摘要算法提取出证书的摘要和解密 CA 数字签名后的摘要比对,一致则说明这个证书没有被篡改过,能够信任。

PKI
PKI(Public Key Infrastructure)翻译过来就是公钥基础设施,能够理解为利用公钥技术为网络应用提供加密和数字签名等密码服务以及必需的密钥和证书管理体系。它是一个提供安全服务的基础设施,PKI 技术是信息安全技术的核心,同时也是电子商务的关键和基础技术。

PKI 既不是一个协议,也不是一个软件,它是一个标准,在这个标准之下发展出的为了实现安全基础服务目的的技术统称为 PKI。
PKI是一个标准,它包括一些基本的组件,不一样的组件提供不一样的服务,主要由一下几个组件组成:

认证中心 CA(证书签发):CA 机构,又称为证书授证 (Certificate Authority) 中心,是 PKI 的”核心”,即数字证书的申请及签发机关,CA 必须具有权威性的特征,它负责管理 PKI 结构下的全部用户(包括各类应用程序)的证书,把用户的公钥和用户的其余信息捆绑在一块儿,在网上验证用户的身份,CA 还要负责用户证书的黑名单登记和黑名单发布。
X.500目录服务器(证书保存):X.500目录服务器用于”发布”用户的证书和黑名单信息,用户可经过标准的 LDAP 协议查询本身或其余人的证书和下载黑名单信息。
具备高强度密码算法(SSL)的安全 WWW 服务器(即配置了 HTTPS 的apache):Secure socket layer(SSL)协议最初由 Netscape 企业发展,现已成为网络用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通信的全球化标准。
Web(安全通讯平台):Web 有 Web Client 端和 Web Server 端两部分,分别安装在客户端和服务器端,经过具备高强度密码算法的 SSL 协议保证客户端和服务器端数据的机密性、完整性、身份验证。
自开发安全应用系统:自开发安全应用系统是指各行业自开发的各类具体应用系统,例如银行、证券的应用系统等。
总结
数字签名和数字证书是两个不一样的概念,理解的关键点是数字签名是内容提供方用本身的私钥对内容摘要(MD五、SHA)非对称加密,而数字证书的关键是 CA 用本身的私钥对证书内容的摘要非对称加密从而确保证书内的用户合法拥有证书里列出的公钥。
这里写图片描述

这里写图片描述

SSL/TLS 握手过程详解:
http://www.jianshu.com/p/7158568e4867

相关文章
相关标签/搜索