`

[转载]SSL是如何工作的

阅读更多
声明:由于最近对安全加密相关技术比较感兴趣,所以翻译了这篇SSL的工作原理。这是一篇比较好的文章,深入浅出的介绍了SSL -- 安全套接层的工作原理,但是由于本人的加密知识及英语水平所限,感觉很多地方翻译的不好,但是我相信大家还是能够看懂的。:-)还是那句老话,本文欢迎非商业性转载,但请保持文章完整性并注明出处!

  密钥密码系统介绍

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

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

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

  用公钥加密的数据只有私钥才能解密,相反的,用私钥加密的数据只有公钥才能解密,正是这种不对称性才使得公用密钥密码系统那么有用。

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

  认证是一个验证身份的过程,目的是使一个实体能够确信对方是他所声称的实体。下面的例子包括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,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 {secret}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 {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 {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 {secret} bobs-public-key
  {some message,MAC}secret-key

  Mallet现在有麻烦了,Mallet可以改变任何的消息,但是MAC的计算将揭露他的欺诈行为。Alice和Bob能发现伪造的MAC值并停止会话,Mallet就不能伪造Bob的消息了。

  这是什么时候的事?

  最后的,但是同样重要的是要防范Mallet鹦鹉学舌。如果Mallet记录了会话的过程,他虽然可能不知道会话的内容,但是他可以重放这些会话。实际上,Mallet能在Alice和Bob之间做一些真正龌龊的事。解决的办法就是从会话的双方因如随机因素。

分享到:
评论

相关推荐

    SSL and TLS Theory and Practice(2nd) 无水印原版pdf

    SSL and TLS Theory and Practice(2nd) 英文无水印原版pdf 第2版 pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 ...

    基于ssl协议的corba

    转载的一篇很好的论文,学习安全协议网上这样的资料很好,特此分享出来

    Apache + Tomcat + SSL整合

    这是作者用了一周时间研究出来的,里面包含了Apache的安装程序,tomcat免安装...在网上找个很多关于这方面的文章,但天下文章一大抄,基本都是雷同的,很鄙视那些转载别人文章的人。我做出来传到网上,供大家一起学习!

    Implementing SSL TLS Using Cryptography and PKI 无水印原版pdf

    Implementing SSL TLS Using Cryptography and PKI 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn...

    Windows Server 域网页修改密码 IISadmpwd

    此文来自: 马开东博客 转载请注明出处 网址: http://www.makaidong.com 修改密码的功能, 可以使用该值. 2 : 关闭修改密码的功能. 4 : 关闭 “advance notification of password expiration”. 4.打开iis管理器. ...

    gloox学习笔记(转载)

    例如,`ConnectionListener`接口中的`onConnect()`和`onTLSConnect()`方法,分别用于处理连接建立成功和TLS/SSL连接验证的事件。 **连接到Jabber服务器** 连接Jabber服务器有两种方式: 1. **以Client方式建立...

    转载的简单的网络验证源码

    【网络验证】是一种确保用户身份或设备通过网络连接合法性的技术。在当今互联网环境中,网络验证扮演着...对于初学者来说,这是一个很好的起点,能够帮助他们理解网络验证的工作原理,并为今后的开发实践打下坚实基础。

    [转载] Clustering经典范文学习

    【标题】:“[转载] Clustering经典范文学习” 这篇博文主要探讨了Clustering(集群)在IT领域的应用,特别是从J2EE(Java 2 Platform, Enterprise Edition)的角度出发,深入学习集群技术的重要性和实现方式。...

    ios 推送通知(转载)

    - 开发者需要在Apple Developer Portal中创建SSL证书和Push Key,用于应用服务器与APNs之间的安全通信。 9. **推送通知优化**: - 考虑推送的频率和内容,避免过度打扰用户。 - 使用Payload定制通知内容,包括...

    openssl-1.1.1d.rar

    版权声明:本文为CSDN博主「沧海一笑-dj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/dengjin20104042056/article/details/131030516

    [转载]QQ示例源码(供学习C++网络编程参考)

    这可能涉及到加密技术,如SSL/TLS,以及防止各种网络攻击,如缓冲区溢出和中间人攻击。 9. **设计模式**:在实现大型网络应用时,设计模式如工厂模式、观察者模式和状态机模式等可以帮助构建可扩展和可维护的代码。...

    RSA浅析,部分转载自:Lotus

    - **CBC(Cipher Block Chaining)模式**:每个明文块与前一密文块异或后加密,增加了安全性,广泛应用于SSL/TLS等。 - **CFB(Cipher Feedback)模式**:类似于流加密,密文块与明文块异或后再加密,用于实时数据流...

    医疗网站的SEO优化到底该怎么做?(转载).docx

    医疗网站需要进行定期的技术审计,确保网站的结构合理、XML站点地图更新及时、404错误页面得到修复、SSL证书安装以实现HTTPS加密,这些都对提升网站在搜索引擎中的排名至关重要。 综上所述,医疗网站的SEO优化是一...

    pay5160:https的转载者

    【标题】"pay5160:https的转载者"涉及到的是一个项目,可能是某个支付系统或服务的实现,特别关注HTTPS安全通信。HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,它通过SSL/TLS协议在客户端和服务器...

    中国红客联盟官方期刊《红》第一期PDF电子书

    期刊强调所有非注明转载的文章均为中国红客联盟原创,转载需注明出处。这一规定体现了对知识产权的尊重,同时也反映了网络安全领域对于原创性和版权保护的重视。 ### 4. 内容概览 期刊的内容涵盖多个方面,包括但...

    使用open source产品组装你的web应用架构(转载)

    11. **安全**:HTTPS证书管理工具如Certbot,配合Nginx实现SSL/TLS加密,保护用户数据安全。OWASP ZAP、Burp Suite等工具用于安全测试,找出潜在的安全漏洞。 以上是构建Web应用架构的一些关键组件和开源产品。选择...

    Mobile Security Framework

    另外,对于ssl链接/简单的加密方式/硬编码的密件信息等MobSF也进行了重点地关注。 --------------------- 作者:liumiaocn 来源:CSDN 原文:https://blog.csdn.net/liumiaocn/article/details/80440977 版权...

    FTP上传小工具 方便设计师们开发网络

    需要注意的是,虽然这些工具极大地简化了文件上传流程,但设计师们仍需对网络安全有所了解,确保在使用过程中不会泄露敏感信息,且应遵循正确的版权和引用规则,如描述中提到的“转载请注明出处”。在本例中,...

    Windows 7 下配置IIS,并且局域网内可访问(转载).pdf

    - 安全(如身份验证、SSL) - 日志记录 - 万维网服务管理工具 完成上述操作后,点击“确定”按钮,等待安装过程结束。 ##### 2. 启动IIS管理器 安装完成后,可以通过以下两种方式启动IIS管理器: - **方法一*...

    AdminScripts iisadmpwd网页修改AD账号密码必备插件

    此文来自: 马开东博客 转载请注明出处 网址: http://www.makaidong.com 修改密码的功能, 可以使用该值. 2 : 关闭修改密码的功能. 4 : 关闭 “advance notification of password expiration”. 4.打开iis管理器. ...

Global site tag (gtag.js) - Google Analytics