SSL工作原理

公钥和私钥一直以来对公钥和私钥都理解得不是很透彻 , 感觉到模棱两可 。今天在网上找了半天 , 通过查看对这个密钥对的理解 , 总算弄清楚了 。公钥和私钥就是俗称的不对称加密方式 , 是从以前的对称加密(使用用户名与密码)方式的提高 。用电子邮件的方式说明一下原理 。使用公钥与私钥的目的就是实现安全的电子邮件 , 必须实现如下目的: 1. 我发送给你的内容必须加密 , 在邮件的传输过程中不能被别人看到 。2. 必须保证是我发送的邮件 , 不是别人冒充我的 。要达到这样的目标必须发送邮件的两人都有公钥和私钥 。公钥 , 就是给大家用的 , 你可以通过电子邮件发布 , 可以通过网站让别人下载 , 公钥其实是用来加密/验章用的 。私钥 , 就是自己的 , 必须非常小心保存 , 最好加上 密码 , 私钥是用来解密/签章 , 首先就Key的所有权来说 , 私钥只有个人拥有 。公钥与私钥的作用是:用公钥加密的内容只能用私钥解密 , 用私钥加密的内容只能 用公钥解密 。比如说 , 我要给你发送一个加密的邮件 。首先 , 我必须拥有你的公钥 , 你也必须拥有我的公钥 。首先 , 我用你的公钥给这个邮件加密 , 这样就保证这个邮件不被别人看到 , 而且保证这个邮件在传送过程中没有被修改 。你收到邮件后 , 用你的私钥就可以解密 , 就能看到内容 。其次我用我的私钥给这个邮件加密 , 发送到你手里后 , 你可以用我的公钥解密 。因为私钥只有我手里有 , 这样就保证了这个邮件是我发送的 。当A->B资料时 , A会使用B的公钥加密 , 这样才能确保只有B能解开 , 否则普罗大众都能解开加密的讯息 , 就是去了资料的保密性 。验证方面则是使用签 验章的机制 , A传资料给大家时 , 会以自己的私钥做签章 , 如此所有收到讯息的人都可以用A的公钥进行验章 , 便可确认讯息是由 A 发出来的了 。
 数字证书的原理数字证书采用公钥体制 , 即利用一对互相匹配的密钥进行加密、解密 。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥) , 用它进行解密和签名;同时 设定一把公共密钥(公钥)并由本人公开 , 为一组用户所共享 , 用于加密和验证签名 。当发送一份保密文件时 , 发送方使用接收方的公钥对数据加密 , 而接收方则使 用自己的私钥解密 , 这样信息就可以安全无误地到达目的地了 。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密. 在公开密钥密码体制中 , 常用的一种是RSA体制 。用户也可以采用自己的私钥对信息加以处理 , 由于密钥仅为本人所有 , 这样就产生了别人无法生成的文件 , 也就形成了数字签名 。采用数字签名 , 能够确认以下两点:(1)保证信息是由签名者自己签名发送的 , 签名者不能否认或难以否认;(2)保证信息自签发后到收到为止未曾作过任何修改 , 签发的文件是真实文件 。
SSL 是一个安全协议 , 它提供使用 TCP/IP 的通信应用程序间的隐私与完整性 。因特网的 超文本传输协议 (HTTP)使用 SSL 来实现安全的通信 。
在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的 。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的 , 此算法使用服务器的SSL数字证书中的公用密钥 。有了服务器的SSL数字证书 , 客户端也可以验证服务器的身 份 。SSL 协议的版本 1 和 2 只提供服务器认证 。版本 3 添加了客户端认证 , 此认证同时需要客户端和服务器的数字证书 。
SSL 握手/
SSL 连接总是由客户端启动的 。在SSL 会话开始时执行 SSL 握手 。此握手产生会话的密码参数 。关于如何处理 SSL 握手的简单概述 , 如下图所示 。此示例假设已在 Web 浏览器 和 Web 服务器间建立了 SSL 连接 。

SSL工作原理

文章插图
 
(1) 客户端发送列出客户端密码能力的客户端“您好”消息(以客户端首选项顺序排序) , 如 SSL 的版本、客户端支持的密码对和客户端支持的数据压缩方法 。消息也包含 28 字节的随机数 。


推荐阅读