SSL是如何工作的



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

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

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

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

使用公用密 统进 认证

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

  假 Alice 认证 Bob Bob 有一个密 钥对 ,即一个公 和一个私 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 发给 他的随机消息的摘要并加密,然后把加密后的摘要返回 Alice Alice 可以 算出相同的摘要,通 解密 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 bobs-public-key

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

   这项 了因特网的安全性,它把 个密 当作另一个密 ,但是 这时 它是 称性密 算法的密 (如 DES RC4 IDEA )。 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 不能 发现 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 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
一直 数据没有改 的通 ,直到 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 bobs-public-key
{some message,MAC}secret-key

   Mallet 在有麻 了, Mallet 可以改 任何的消息,但是 MAC 算将 露他的欺 Alice Bob 发现伪 造的 MAC 并停止会 Mallet 就不能 Bob 的消息了。

转载于:https://www.cnblogs.com/longb/archive/2006/04/24/383683.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值