SSL是如何工作的



  篇文章向大家述了Netscape公司是如何使用RSA的公用密实现因特网安全的。Netscape的安全套接实现就利用了篇文章中所讨论的技

  RSA的公用密广泛地用于算机工认证和加密方面。Netscape得到RSA数据安全公司的可可以使用公用密以及其它品,尤其是认证方面的品。

  公用密加密技使用不称的密来加密和解密,每对包含一个公和一个私,公是公,而且广泛分布的,而私从来不公,只有自己知道。

  用公加密的数据只有私才能解密,相反的,用私加密的数据只有公才能解密,正是这种称性才使得公用密有用。

使用公用密统进认证

  认证是一个验证身份的程,目的是使一个体能确信方是他所声称的体。下面的例子包括AliceBob,并且向我演示了如何使用公用密易的验证身份。下面的 key 表示something 用密 key 加密或解密。

  假Alice认证BobBob有一个密钥对,即一个公和一个私Bob透露Alice他的公(至于他是怎做的将在以后讨论)。然后Alice生一段随机的消息,然后把它发给Bob

A-->B random--message

  Bob用自己的私来加密段消息,然后把加密后的消息返回Alice

B-->A bobs--private--key

  Alice接到了段消息,然后用Bob以前发过来的公来解密。她把解密后的消息和原始的消息做比,如果匹配的,她就知道自己正在和Bob通信。一个入侵者应该不知道Bob的私,因此就不能正确的加密那段Alice检查的随机消息。

  但是,等一下,......

  除非你确切的知道你在加密什,否用你的私加密一些西,然后发给别人永不是一件好事。是因加密后的数据可能会背叛你(住,只有你能加密,因只有你才有密)。

  所以,我不加密Alice送的原始消息,取而代之的是,由Bob构造一个消息摘要,然后加密它。消息摘要是从随机消息中以某方式提取出来的,并且具有以下特点:

  摘要很,任何假冒Bob的人不能从摘要得到原始消息

  假冒者无法找到具有相同摘要的不同消息

  通使用摘要,Bob自己。他首先算出Alice发给他的随机消息的摘要并加密,然后把加密后的摘要返回AliceAlice可以算出相同的摘要,通解密Bob的消息然后比一下就可以认证Bob的身份。
近一点......

  才描述的技数字名。BobAlice生的消息名,这样做其和加密Alice生的随机消息一。因此我认证协议需要一次以上的形。部分(或者全部)的数据需要由Bob生。

A-->B hello,are you bob?
B-->A Alice,This Is bob{digest[Alice,This Is Bob]}bobs-private-key

  当Bob使用协议候,他知道自己发给Alice的是什消息,并且不介意名。他首先送没有加密的消息“Alice,This Is Bob然后送加密的摘要。Alice够轻易的判断BobBob,并且Bob没有任何他不愿意西。

  分

  Bob如何以一可信的方式分他的公呢?我设认证协议子的:

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
了解决问题准化组织发明了一个叫做证书西,一个证书包括下面的一些内容:

  证书发行者的名字
  证书发
  主的公
  一些时间

  证书是由证书发行者的私钥签名的,个人都知道证书发行者的公(即证书发行者有一个证书,等等)。证书是一把公钥绑定到名字的准方式。

  通使用证书这种个人都可以通过检查Bob证书来判断Bob是不是造的。假Bob格的控制着他的私,并且的确是Bob得到了他的证书,那一切都好。下面是补偿协议

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

  当Alice收到Bob的第一条消息,她可以检查证书,核实签名(如上,使用摘要和公加密),然后,核Bob的名字)来判断那是不是真的Bob这样她就相信公Bob的公,然后要求Bob明他的身份。Bob重新行一次上面的相同程,算消息的摘要,名之后发给AliceAlice可以用从证书得到的公钥检查Bob的消息摘要,从而判断Bob的身份。

  一个坏家伙 - 不妨叫他Mallet - 可以做下面的事情:

A-->M hello
M-->A Hi, I’m Bob, bobs-certificate
A-->M prove it
M-->A ????

  但是Mallet在最后的消息中不能AliceMallet没有Bob的私,所以他无法构造一条使Alice相信来自Bob的消息。

秘密

  一旦Alice认证Bob,她就可以做另外一件事-她能发给一条只有Bob才能解的消息:

A-->B bobs-public-key

  发现这个秘密的唯一方法就是用Bob的私来解密上面的消息,交秘密是公用密的另一种强大的用法。即使AliceBob的通信被监视,除了Bob,也没有人能得到秘密。

  这项了因特网的安全性,它把个密当作另一个密,但是这时它是称性密算法的密(如DESRC4IDEA)。Alice知道个秘密,因为这是自己在Bob之前生的。Bob知道个秘密,因Bob有私,能解密Alice的消息。因都知道个秘密,所以他就可以初始化一个称的密算法然后传输用它加密的消息。下面是正的协议

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 bobs-public-key
B-->A {some message}secret-key

  secret-key 算取决于协议的定,但是它可以化成一个 secret 的副本。



  Mallet的袋子里有很多诡计Mallet不能发现AliceBob的秘密,但是他可以干并且破坏他对话例来,如果Mallet位于AliceBob,他可以选择让大多数的消息返回以及向前继续传输没有改,但是破坏了特定位的消息(这对他来很容易,因他知道AliceBob通信的协议)。

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 bobs-public-key
M-->B ok bob, here is a secret bobs-public-key

B-->M {some message}secret-key
M-->A Garble[ {some message}secret-key ]
Mallet
一直数据没有改的通,直到AliceBob分享一个秘密。然后MalletBobAlice的消息来个方式中。这时Alice是相信Bob的,因此她就可能相信个改的消息,然后按照它来做。注意Mallet并不知道个秘密-他能做的所有事就是破坏用个秘密的密加密的数据。他可能不能利用协议制造出一条有效的消息,但是下一次,他可能幸运一点。

  了防止这种破坏,AliceBob在他协议中引入了一消息认证码MAC)。MAC是根据秘密的密传输的数据算出来的,上面描述的摘要算法的属性正好可以用于构造抵抗MalletMAC功能。

MAC := Digest[ some message, secret ]

  因Mallet不知道个秘密的密,所以他无法算出个摘要的正确数。即使Mallet随机的改消息,如果摘要数据很大的,他成功的可能性也很小。例来,通使用MD5RSA公司明的一很好的密摘要算法),AliceBob能和他的消息一起128位的MACMallet猜中个正确的MAC的几率是18,446,744,073,709,551,616 分之1-也就是从来也不会猜出来。

  下面是协议,又正了一次:

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
ok bob, here is a secret bobs-public-key
{some message,MAC}secret-key

  Mallet在有麻了,Mallet可以改任何的消息,但是MAC算将露他的欺AliceBob发现伪造的MAC并停止会Mallet就不能Bob的消息了。
posted on 2006-04-24 16:37  泾溪  阅读(510)  评论(0编辑  收藏  举报