搜索SSL握手的原理,最多是网上转载的Alice和Bob的对话。用生动、形象的场景说明了一个复杂SSL握手原理。
用公钥加密的数据只有私钥才能解密,相反的,用私钥加密的数据只有公钥才能解密,正是这种不对称性才使得公用密钥密码系统那么有用。
认证
是一个验证身份的过程,目的是使一个实体能够确信对方是他所声称的实体。下面的例子包括Alice和Bob,并且向我们演示了如何使用公用密钥密码系统来轻易的验证身份。下面的 {something}key 表示something 已经用密钥 key 加密或解密。
1.简单方式
A-->B random--message
Bob用自己的私钥来加密这段消息,然后把加密后的消息返回给Alice。
B-->A {random--message}bobs--private--key //
Alice接到了这段消息,然后用Bob以前发过来的公钥来解密。她把解密后的消息和原始的消息做比较,如果匹配的话,她就知道自己正在和Bob通信。
风险:使用私钥加密的random--message后传递,数据量大,增加破解的几率.
2.增加摘要的方式
A-->B hello,are you bob?
B-->A Alice,This Is bob{digest[Alice,This Is Bob]}bobs-private-key
分发公钥
Bob如何以一种可信赖的方式分发他的公钥呢?假设认证协议是这个样子的:
1.简单方式
A-->B hello
B-->A Hi, I'm Bob, bobs-public-key
A-->B prove it
B-->A Alice, This Is bob{ digest[Alice, This Is Bob] } bobs-private-key
如果使用这个协议的话,任何人都可以是Bob。你需要的只是一个公钥和私钥,你跟Alice慌称你是Bob,接着你用自己的公钥代替Bob的公钥,然后你通过用你的私钥加密的东西来证明,这样Alice就不能分辨出你不是Bob。
所以为了解决这个问题,标准化组织发明了一个叫做证书的东西,一个证书包括下面的一些内容:
证书发行者的名字
证书发送给的团体
主题的公钥
一些时间戳
证书是由证书发行者的私钥签名的,每个人都知道证书发行者的公钥(即证书发行者有一个证书,等等)。证书是一种把公钥绑定到名字的标准方式。
2.证书方式
A-->B hello
B-->A Hi, I'm Bob, bobs-certificate
Alice可以检查证书,核实签名(如上,公钥加密解密得到摘要,对证书的某些身份信息进行摘要,比较摘要),然后核实主题(Bob的名字)来判断那是不是真的Bob。
A-->B prove it
B-->A Alice, This Is bob{ digest[Alice, This Is Bob] } bobs-private-key
一个坏家伙 - 我们不妨叫他Mallet - 可以做下面的事情:
A-->M hello
M-->A Hi, I'm Bob, bobs-certificate
A-->M prove it
M-->A
但是Mallet在最后的消息中不能满足Alice。Mallet没有Bob的私钥,所以他无法构造一条使Alice相信来自Bob的消息。
交换密钥
一旦Alice认证了Bob,她就可以做另外一件事-她能发给一条只有Bob才能解码的消息:
A-->B {secret}bobs-public-key
发现这个秘密的唯一方法就是用Bob的私钥来解密上面的消息,交换秘密是公用密钥密码系统的另一种强大的用法。即使Alice和Bob之间的通信被监视,除了Bob,也没有人能够得到秘密。
这项技术加强了因特网的安全性,它把这个密码当作另一个密钥,但是这时它是对称性密码系统算法的密钥(如DES,RC4,IDEA)。Alice知道这个秘密,因为这是自己在发送给Bob之前产生的。Bob知道这个秘密,因为Bob有私钥,能够解密Alice的消息。因为他们都知道这个秘密,所以他们就可以初始化一个对称的密码算法然后开始传输用它加密的消息。
1.简单方式
下面是订正的协议:
A-->B hello
B-->A Hi, I'm Bob, bobs-certificate
A-->B prove it
B-->A Alice, This Is bob{ digest[Alice, This Is Bob] } bobs-private-key
A-->B ok bob, here is a secret {secret} bobs-public-key
B-->A {some message}secret-key
风险:Mallet的袋子里有很多诡计。虽然Mallet不能发现Alice和Bob交换的秘密,但是他可以干预并且破坏他们的对话。举例来说,如果Mallet位于Alice和Bob,他可以选择让大多数的消息返回以及向前继续传输没有改变,但是破坏了特定位的消息(这对他来说很容易,因为他知道Alice和Bob之间通信的协议)。
A-->M hello
M-->B hello
B-->M Hi, I'm Bob, bobs-certificate
M-->A Hi, I'm Bob, bobs-certificate
A-->M prove it
M-->B prove it
B-->M Alice, This Is bob{ digest[Alice, This Is Bob] } bobs-private-key
M-->A Alice, This Is bob{ digest[Alice, This Is Bob] } bobs-private-key
A-->M ok bob, here is a secret {secret} bobs-public-key
M-->B ok bob, here is a secret {secret} bobs-public-key
B-->M {some message}secret-key
M-->A Garble[ {some message}secret-key ] //混淆
Mallet一直让数据没有改变的通过,直到Alice和Bob分享一个秘密。然后Mallet通过改变Bob发送给Alice的消息来进入这个方式中。这时候Alice是相信Bob的,因此她就可能相信这个改变的消息,然后按照它来做。注意Mallet并不知道这个秘密-他能做的所有事就是破坏用这个秘密的密钥加密的数据。他可能不能利用这个协议制造出一条有效的消息,但是下一次,他可能幸运一点。
2.增加MAC方式,防止数据篡改
MAC是根据秘密的密钥和传输的数据计算出来的,上面描述的摘要算法的属性正好可以用于构造抵抗Mallet的MAC功能。MAC := Digest[ some message, secret ]
A-->B hello
B-->A Hi, I'm Bob, bobs-certificate
A-->B prove it
B-->A {digest[Alice, This Is Bob] } bobs-private-key
A-->B ok bob, here is a secret {secret} bobs-public-key
B-->A {some message,MAC}secret-key
Mallet现在有麻烦了,Mallet可以改变任何的消息,但是MAC的计算将揭露他的欺诈行为。Alice和Bob能发现伪造的MAC值并停止会话,Mallet就不能伪造Bob的消息了。
参考资料
公开密钥加密技术 http://baike.baidu.com/view/1519114.htm
数字证书 http://baike.baidu.com/view/16501.htm
分享到:
相关推荐
ssl原理及应用 ssl原理及应用 ssl原理及应用 ssl原理及应用
SSL是Security Socket Layer的缩写,技术上称为安全套接字,可以简称为加密通讯协议。 当选择“SSL安全登录”后登录网站,用户名和密码会首先加密,然后通过SSL连接在 Internet 上传送,没有人能够读取或访问到您...
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
HTTPS(SSL)工作原理
ssl原理及应用实用.pdf
是个人在做android开发时使用SSL的一些心得及笔记。非常全面也非常易懂。
Android SSL验证原理
SSL中间人攻击原理与防范,感兴趣的自己看
SSL在tomcat中的配置,网上有很多资料,但是都配置不成功,这个是我在一个项目配置总结的文档,很好,,绝对有用
本文档详细介绍了ssl的工作通信原理以及如果通过配置web容器建立ssl安全通信
SSl双向认证学习笔记 本文档主要介绍SSL双向认证的一些知识!~
SSL是Security Socket Layer的缩写,技术上称为安全套接字,可以简称为加密通讯协议。 当选择“SSL安全登录”后登录网站,用户名和密码会首先加密,然后通过SSL连接在 Internet 上传送,没有人能够读取或访问到您...
【解决漏洞-亲测好用】SSLTLS 服务器瞬时 Diffie-Hellman 公共密钥过弱
安全套接层(Secure Sockets Layer,SSL)是网景公司(Netscape)在推出Web浏览器首版的同时,提出的协议。SSL采用公开密钥技术,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听...
NULL 博文链接:https://sharemu.iteye.com/blog/1715086
基于SSL的身份认证和访问控制实现原理.pdf
明文(plain text):发送人、接受人和任何访问消息的人都能理解的消息。密文(cipher text):明文消息经过某种编码后,得到密文消息。加密(encryption):将明文消息变成密文消息。解密(decryption):将密文...
当客户机使用SSL加密模式连接服务器并控制服务器后,在网络中传输的所有信息都是加密过的,黑客使用sniffer等工具无法抓取到可用的数据包。从而真真正正的将远程桌面的安全进行到底。远程操作界面也出现了SSL加密的...