`
fantianmi
  • 浏览: 10850 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

SSL研究报告

 
阅读更多

参考博客://http://rrsongzi-gmail-com.iteye.com/blog/603895

什么是 SSL

SSL SecureSocketLayer 的缩写,即安全套接层协议。是由网景( Netscape )公司推出的一种安全通信协议,它能够对信用卡和个人信息提供较强的保护。 SSL 是对计算机之间整个会话进行加密的协议。

SSL(Secure Sockets Layer 安全套接层 ), 及其继任者传输层安全( Transport Layer Security TLS )是为网络通信提供安全及数据完整性的一种安全协议。 TLS SSL 在传输层对网络连接进行加密。

SSL 协议执行过程

第一阶段,客户端向服务器发出 SSL 连接请求,并附上一段随机产生的信息,服务器端在通讯之前会向证书颁发组织申请并获得自己的公钥、私钥以及证书。

第二阶段,服务器收到客户端的连接请求后,把收到的随机信息用私钥加密,然后连同公钥和身份信息发回给客户端。

第三阶段,客户端收到服务器端的回应后,将先用从服务器端发来的公钥解密信息,还原后与自己之前产生的随机信息比较异同,从而验证服务器端的身份。在服务器端身份得到验证后,客户端将产生一个对称密钥,用于加密真正的传输信息,并将该对称密钥用公钥加密后发给服务器端。

第四阶段,服务器端得到信息后,用自己私钥解密并获得该对称密钥,之后客户端和服务器之间就可以用这个对称密钥进行加密通讯了。


什么是 SSL 证书?如何检查网站是否部署了 SSL 证书?

什么是 SSL 证书? SSL 证书就是遵守 SSL 安全套接层协议的服务器数字证书。

如果您能使用 https:// 来访问某个网站,就表示此网站是部署了 SSL 证书。一般来讲,如果此网站部署了 SSL 证书,则在需要加密的页面会自动从 http:// 变为 https:// ,如果没有变,你认为此页面应该加密,您也可以尝试直接手动在浏览器地址栏的 http 后面加上一个英文字母“ s ”后回车,如果能正常访问并出现安全锁,则表明此网站实际上是部署了 SSL 证书,只是此页面没有做 https:// 链接;如果不能访问,则表明此网站没有部署   SSL 证书。


它是在传输通信协议 (TCP/IP) 上实现的一种安全协议,采用公开密钥技术,它为 TCP/IP 连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。

技术实现细节

Client 处理和回应 Server Hello 阶段

收到 Server Hello

server hello 阶段连续的发了多个消息,最先发出的是 server hello client 收到后将 SSL 会话 ID ,服务器端的一个随机数,协商出的 SSL 协议版本号以及密钥套件放到会话缓存中。

收到 Server Certificates

接下来收到的应该是 server 端的证书消息了,取出所有的消息,最头上的是 server 证书,最末端的 CA 根证书。在 SUN JDK JSSE 中实现的 SSL 是这样处理的:

SSLContex 中取出 trust manager ,如果用过 java SSL 编程的同学应该知道,可以自己实现 X509TrustManager X509KeyManager 两个接口来定制对证书的验证, sun jdk 中就是调用这个 trust manager 的验证方法来验证证书(在解决浏览器检测到证书是自签名的时候跳出警告框的问题就是可以自己实现这个 trust manager 来让浏览器不跳出警告框)。

JDK 当然也有默认的证书验证实现,就是验证签名有效性,验证证书是否过期等。证书签名的有效性验证是在取证书链中某证书中的公钥验证前一个证书的签名,这样第一个证书就是用第二个证书的公钥来验证,那有人可能会问最后的根 CA 的证书谁来验证?根 CA 的证书是自签名的,就是自己给自己签名,没人管的了, JDK 中某个文件中有存储一堆可信任的证书发行机构的证书列表,如果你的根 CA 在那个列表中并对比后确实是那个根 CA 的证书那就 OK ,验证通过,这个可信任的机构也可以自己实现那个 trust manager 来添加设置。

收到 Server Key Exchange 消息

RSA 方式密钥交换消息则把消息中的加密用公钥放入会话缓存中,作为客户端这边握手阶段的写密钥而不是用服务器证书中的公钥。

DH 方式的消息就把消息中的 p,g,Ys 三个参数记录下来,有这些 client 端就可以计算出 pre-master 了,只要回头再把自己这边的 Yc 参数发过去, server 端就也能计算出相同的 pre-maseter 了。

收到 server Certtificats Request 消息

将消息中的证书类型列表和可信任证书发行机构列表保存下来,可在后面发送客户端证书时候拿来筛选证书用。

收到 Server Hello Done 消息

收到这个消息后 client 端开始向 server 发消息了

发送 Client Certificates 消息

如果是 server 端要求客户端认证就会发这个消息,否则不发。客户端可能会有多个证书,在 JSSE 里头多个客户端证书存储在 keystore 里头,选哪个发过去呢?这时候要用到 server 端之前发的 cert request 消息中的支持的证书类型列表和信任的根 CA 列表,满足这个两个条件的第一个证书链就会被选中作为客户端证书。

发送 Client Key Exchange 消息

若是 RSA 方式密钥交换,则产生一个 48 位随机数作为 pre-master 并用服务器公钥加密后发出去

若是 DH 方式的密钥交换,则根据 sever g,p,Ys ,产生 Xa Yc Xa Ys 能计算出 pre-master ,把产生的 Yc 放入消息中发给 server ,这样 server 用它的 Xb Yc 也能计算出 pre-master 了。计算出预主密码后就顺便把主密码 (master secret) 给算出来了。算出主密码就把对称密钥产生出来了。

发送 Certificate verify 消息

这个消息是可选的,只有在客户端发送了自己证书到服务器端,这个消息才需要发送。发这个消息的目的是让服务器验证发消息的客户端和客户端证书的真实所有者。这个消息中要包含一个签名,签名里头内容就是从 client hello 开始到目前为止所有握手消息(不包括本消息)的摘要,主密码,若是 RSA 方式则要把这些内容分别用 MD5 SHA1 计算一遍,两种摘要算法算得的摘要拼接起来用客户端证书中公钥对应的私钥加密就获得了签名。到时候服务器端会用收到的证书中的公钥来验证签名。

发送 change cipher spec 消息

发送这个消息,然后把 session 的写密钥设置成计算得到得对称密钥,从此消息之后再发送消息就会用这个写密钥来加密消息。

发送 client Finished 消息

Client 端的 Finished 消息一般都是紧随 change cipher spec 消息发送出去,标志着本方的 SSL 协商成功结束。消息中包含两个个摘要,是分别用 MD5 SHA 算法计算当前收到所有握手消息和主密码的摘要,不包括本消息和 change cipher spec( 因为不属于握手消息 )

该消息是 SSL 握手中的最后要互传的消息,包含一个所有握手消息的摘要值,这是为了防止中间人将强度较大的 CipherSuite client hello 消息中删除,使得 server 不得不选择强度较小的 CipherSuite ,然而这非 client 所愿。问题是这个摘要不可以被中间人更改吗?想象一下这时共享对称密钥已经协商好了, ChangeCipherSpec 已经经过,所以这些消息本身是加过密的。

Server 处理和回应 cleint Finished 阶段


Server 收到 client 的证书链后验证证书,并验证 certificatie verify 中的签名,验证通过了也就确认了 client 的身份,如假包换。收到 client key exchange 消息从中拿出 Pre-master 计算出 master ,生成对称密钥。收到 client change cert spec 后将会话的读密钥设置为刚产生的对称密钥。

处理完这些 server 会发送自己的 change cipher spec 消息并把会话的写密钥设置为生成的对称密钥,最后发送 server Finished 消息, client 端收到 server 端的 change cipher spec 消息将会话的读密钥设置为生成的对称密钥。到此握手过程圆满结束,接下来的应用消息将使用设置好的读写密钥对数据加解密。

分享到:
评论

相关推荐

    SSL原理及应用

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

    4K视频传送需求研究_4K视频传送方案_4k_

    以4K为代表的视频消费逐步成为消费者刚需,视频流量增长迅速,占领家庭视频门户(电视屏、电脑屏、平板屏等),提升新业务和新流量的收益,成为大视频时代运营商的战略机会。

    SSL:智慧城市基于雾联网的智慧路灯-研究论文

    每盏路灯都会分别报告异常站立并自动报警。 实验结果表明,计划的 SSL 将提高能量效力并减少危险。 智能路灯计划支持多种通信技术,如ZigBee、LPWA、GSM等。 此外,还有几种替代通信技术,如蓝牙、UMTS/LTE、Wi-Fi ...

    nips14-ssl:NIPS 2014 论文“Semi-Supervised Learning with Deep Generative Models”结果复现代码

    使用此代码进行研究时,请引用本文。 警告:此代码远未完全注释。 对于问题和错误报告,请发送电子邮件至dpkingma[at]gmail.com 。 先决条件 确保安装了以下最新版本: Python(2.7 或更高版本) Numpy(例如...

    高校学术研讨信息管理系统(源码+部署说明+演示视频+源码介绍+lw).zip

    学术资源管理:用户可以上传、下载、分享学术论文、研究报告等资源,方便团队成员之间的学术交流。 研讨会管理:支持创建、编辑、删除研讨会活动,用户可以报名参加感兴趣的研讨会,并在活动进行时在线参与讨论。 ...

    web技术与网站规划共387页

    本课程是软件工程硕士的专业选修课。本课程的任务是使学生掌握Web技术的基础知识,并具有网站建设规划...了解加密术、SSL和证书授权机构。 (十四)侵入检测和恢复:1学时 掌握Web攻击的检测和受到攻击后的恢复方法。

    webXray:webxray是一种用于分析网页上的第三方内容并识别收集用户数据的公司的工具

    开箱即用的报告每个站点的第三方和cookie的平均数量,最常出现的第三方域和元素,传输的数据量,SSL加密的使用等报告。 灵活的数据模式允许生成自定义报告以及编写扩展以添加其他数据源。 webXray的公共版本使用...

    计算机网络安全web漏洞扫描工具

    对于Web应用黑客,防火墙,ssl及锁定服务器等方法是徒劳的。针对Web应用程序的攻击,是通过80端口,他们可以穿过防火墙,操作系统和网络级的安全 防护设备,取得您的应用程序和企业的数据。量身定制的Web安全设备...

    论文研究 - 硫代镓酸锶:一种用于UV LED的高效绿色荧光粉

    在本文中,我们报告了activated活化的硫代镓酸锶的绿色排放。 通过沉淀法制备磷光体,然后在燃烧的木炭产生的还原性气氛下加热,并使用XRD,PL和EL技术进行表征。 当被400 nm波长激发时,磷光体SrGa2S4:Eu2 +在525 ...

    对网络安全防护技术方案探讨.docx

    本文就如何规划合适安全产品方案确保企业数据安全进行探索与研究。 关键词:关键词:防火墙;新一代;网络安全 0 序言 近年来,随着互联网在全球的迅速发展和各种互联网应用的快速普及,互联网已成为人们日常工作生活中不...

    LIP-JPPNet-TensorFlow:TensorFlow中的JPPNet实施以供人解析

    这个新颖的联合人类解析和姿态估计网络在端到端框架中结合了多尺度特征连接和迭代位置细化,以研究有效的上下文建模,然后实现彼此互利的解析和姿态任务。 这个统一的框架为人类分析和姿势估计任务实现了最先进的...

Global site tag (gtag.js) - Google Analytics