快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

永乐国际f6601cm:SSL是如何工作的



声明:因为近来对安然加密相关技巧对照感兴趣,以是翻译了这篇SSL的事情道理。这是一篇对照好的文章,深入浅出的先容了SSL -- 安然套接层的事情道理,然则因为本人的加密常识及英语水平所限,感到很多地方翻译的不好,然则我信托大年夜家照样能够看懂的。:-)照样那句老话,本文迎接非商业性转载,但请维持文章完备性并注明出处!

密钥密码系统先容

这篇文章向大年夜家阐述了Netscape公司是若何应用RSA的公用密钥密码系统来实现因特网安然的。Netscape的安然套接层的实现就使用了这篇文章中所评论争论的技巧。

RSA的公用密钥密码系统广泛地利用于谋略机工业的认证和加密方面。Netscape获得RSA数据安然公司的许可可以应用公用密钥密码系统以及其它产品,尤其是认证方面的产品。

公用密钥加密技巧应用纰谬称的密钥来加密和解密,每对密钥包孕一个公钥和一个私钥,公钥是公开,而且广泛散播的,而私钥从来不公开,只有自己知道。

用公钥永乐国际f6601cm加密的数据只有私钥才能解密,相反的,用私钥加密的数据只有公钥才能解密,恰是这种纰谬称性才使得公用密钥密码系统那么有用。

应用公用密钥密码系统进行认证

认证是一个验证身份的历程,目的是使一个实体能够确信对方是他所声称的实体。下面的例子包括Alice和Bob,并且向我们演示了若何应用公用密钥密码系统来随意马虎的验证身份。下面的 {something}key 表示something 已经用密钥 key 加密或解密。

假设Alice要认证Bob,Bob有一个密钥对,即一个公钥和一个私钥,Bob走漏给Alice他的公钥(至于他是怎么做的将在今后评论争论)。然后Alice孕育发生一段随机的消息,然后把它发给Bob。

A-->B random--message

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

B-->A {random--message}bobs--private--key

Alice接到了这段消息,然后用Bob曩昔发过来的公钥来解密。她把解密后的消息和原始的消息做对照,假如匹配的话,她就知道自己正在和Bob通信。一个入侵者应该不知道Bob的私钥,是以就不能精确的加密那段Alice要反省的随机消息。

然则,等一下,还有......

除非你确切的知道你在加密什么,否则用你的私钥加密一些器械,然后发给别人永世不是一件好事。这是由于加密后的数据可能会反水你(记着,只有你能加密,由于只有你才有密钥)。

以是,我们不加密Alice发送的原始消息,取而代之的是,由Bob构造一个消息择要,然后加密它。消息摘如果从随机消息中以某种要领提掏出来的,并且具有以下特征:

择要很难逆转,任何伪装Bob的人不能从择要获得原始消息

伪装者无法找到具有相同择要的不合消息

经由过程应用择要,Bob能够保护自己。他首先谋略出Alice发给他的随机消息的择要并加密,然后把加密后的择要返回给Alice,永乐国际f6601cmAlice可以谋略出相同的择要,经由过程解密Bob的消息然后比较一下就可以认证Bob的身份。

近一点......

刚才描述的技巧称为数字署名。Bob为Alice孕育发生的消息署名,这样做着实和加密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能够随意马虎的判断Bob是Bob,并且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则从新进行一次上面的相同历程,谋略消息的择要,署名之后发给Alice,Alice可以用从证书获得的公钥反省Bob的消息择要,从而判断Bob的身份。

一个坏家伙 - 我们不妨叫他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之前永乐国际f6601cm孕育发生的。Bob知道这个秘密,由于Bob有私钥,能够解密Alice的消息。由于他们都知道这个秘密,以是他们就可以初始化一个对称的密码算法然后开始传输用它加密的消息。下面是校勘的协议:

A-->B 永乐国际f6601cmhello

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

secret-key 的谋略取决于协议的定义,然则它可以简化成一个 secret 的副本。

你说什么?永乐国际f6601cm

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并不知道这个秘密-他能做的所有事便是破坏用这个秘密的密钥加密的数据。他可能不能使用这个协议制造出一条有效的消息,然则下一次,他可能幸运一点。

为了防止这种破坏,Alice和Bob在他们的协议中引入了一种消息认证码(MAC)。MAC是根据秘密的密钥和传输的数据谋略出来的,上面描述的择要算法的属性恰恰可以用于构造抵抗Mallet的MAC功能。

MAC := Digest[ some message, secret ]

由于Mallet不知道这个秘密的密钥,以是他无法谋略出这个择要的精确数值。纵然Mallet随机的改变消息,假如择要数据很大年夜的话,他成功的可能性也很小。举例来说,经由过程应用MD5(RSA公司发现的一种很好的密码择要算法),Alice和Bob能和他们的消息一路发送128位的MAC值。Mallet估中这个精确的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 {sec

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: