已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文档名称 SSL VPN入门之SSL协议文档密级 内部公开SSL VPN入门之SSL协议作者胡洋 5021撰写日期2007年版本V2.0最后修订2011年华为赛门铁克科技有限公司版权所有 不得复制二零一一年目 录第1章概述31.1什么是SSL VPN?31.2SSL VPN的优势31.3何时开始学习?41.4约定4第2章SSL协议42.1什么是SSL?42.2SSL的体系结构52.3SSL握手62.4实例72.5解析SSL92.6记录的加密方式102.7握手消息112.8模拟SSL的实现14结语15参考文献15第1章 概述SSL VPN设备相关知识点的总结,希望能给初接触SSL VPN领域的同事一点帮助。1.1 什么是SSL VPN? 当你异地办公需获取公司内网资源时,不用再担心公司私有数据会在公网上所泄露;当你在家进行远程办公时,不用再担心不怀好意之人的监视;当你的企业分居两地共享业务数据时,也不必再担心你的竞争对手是否会得到你的商业秘密。SSL VPN是解决远程用户访问敏感公司数据最简单最安全的技术。通过对数据的压缩和加密传输,在公用网络建立一个临时的、安全的、稳定的隧道,从而实现在公网上实现隔离私有数据、达到私有网络的安全级别。基本原理图如下所示:1.2 SSL VPN的优势 用户使用方便,不需要配置,可以立即使用; 无需客户端,直接使用内嵌的SSL协议,而且几乎所有的浏览器都支持SSL协议。 兼容性好,支持电脑、PDA、智能手机、3G手机等一系列终端设备及大量移动用户接入的应用。1.3 何时开始学习?当你下定决心准备在这个领域扎根的时候,本文作为一篇入门手册,可以让你快速踏入SSL VPN的门槛。不错,因为这是一篇入门手册,所以不须任何背景知识即可开始学习。 建议:先学习TCP/IP协议再学习本文,有事半功倍的效果。1.4 约定本文默认使用以下约定,除非特别章节有特殊说明(只在有特殊说明的章节中有效)。somethingkey表示something已经用密钥key加密。secretkey表示secret已经用密钥key解密。secret表示未解密的secret。【message】表示发送或接收内容为message的报文,该报文内容不一定是加密的。operation表示现在计算机中正进行哪些operation。另外,我们依据密码学的传统,使用下列的命名,使复杂的过程变的简单和易于理解。Alice表示客户、客户端、客户机、Client、发送者、Sender等。Bob表示服务器、服务端、ISP、服务提供商、Server、接收(受)者、Receiver等。Sam表示监听者、窃听者、间谍、监视者、Listener、侦听者、木马等。Trudy表示阴谋家、干扰者、挑拨者、攻击者、入侵者、骗子、Hacker、Cracker等。第2章 SSL协议2.1 什么是SSL?安全套接层协议(SSL,SecuritySocketLayer)是网景(Netscape)公司提出的基于WEB应用的安全协议,它包括:服务器认证、客户认证(可选)、SSL链路上的数据完整性和SSL链路上的数据保密性。旨在达到在公共网络(Internet)上安全保密地传输信息的目的,这种协议在WEB上获得了广泛的应用。之后IETF()对SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。2.2 SSL的体系结构 SSL协议是由SSL记录协议、握手协议、密钥更改协议和告警协议组成,它们共同为应用访问连接提供认证、加密和防篡改功能。SSL Handshake Protocol主要是用于服务器和客户之间的相互认证,协商加密算法和MAC(Message Authentication Code)算法,用于生成在SSL记录中发送的加密密钥。 SSL Change Cipher Spec Protocol存在加密信号变换策略.该协议表示开始用当前协商好的加密策略压缩并加密报文. 这个消息包含一个字节,它的值为1。SSL警告协议主要是用于为对等实体传递与SSL相关的告警信息,包括警告、严重和重大等三类不同级别的告警信息。SSL记录协议是为各种高层协议提供基本的安全服务,其工作机制如下:应用程序消息被分割成可管理的数据块(可以选择压缩数据),并产生一个MAC信息,加密,插入新的文件头,最后在TCP中加以传输;接收端将收到的数据解密,做身份验证、解压缩、重组数据报然后交给高层应用进行处理。2.3 SSL握手请先观察上图,这是一张使用步骤命名的握手图,在下一部分解析SSL协议时,将说明每一步骤的组成以及它们是通过何种方法生成的。ClientHello:客户端发起会话请求,并发送客户端支持的密码算法列表和一个随机数。ServerHello:从ClientHello传过来的密码算法列表中选择一套自己也支持的算法和一个随机数。ServerCertificate:服务端证书(证书将在后面的文章中讲解)。该项为可选项,因为服务端可能没有从CA申请自己的证书。证书中包含服务端信息和特定的public key。ServerKeyExchange:若服务端没有证书,将产生一个短期public key参数(不是public key,是public key参数,根据算法方案的不同,处理也不尽相同)。CertificateRequest:要求客户端发送客户证书。该项是可选的,工商银行在网上交易时,使用的U盾中存储的就是客户证书,以验证客户身份。而工商银行的站点,则不需要客户端证书。ServerHelloDone:服务端表示自己(对客户端)发言完毕,发送该报文后服务端将等待客户端发言。ClientCertificate:客户端证书。若服务端发送CertificateRequest则发送此证书,否则不发送。ClientKeyExchange:客户端使用服务端的public key来加密自己选择的pre-master secret。然后发送【pre-master secretserver-public-key,master secret,handshake messagehmac】。master secret通过以前发送的2次随机数和pre-master secret计算得出,handshake message为前一次发送的消息直到ClientHello的所有消息。 CertificateVerify:如果客户端发送了自己的证书,即进行了ClientCertificate这一步骤,则再发送一个数字签名(数字签名将在后面的文章中详细讲解)CertificateVerify信息来对证书进行校验。若客户端未发送自己的证书,则无此步骤。ChangeCipherSpec:该步骤是一个信号:使用加密策略传输。该步骤是由ChangeCipherSpec协议进行的,这个协议表示开始使用当前已协商好的加密策略进行加密和压缩报文,这个消息只有1个字节,这个字节的值是1。Finished:在ChangeCipherSpec信号发送完毕后会被立即发送,而接收端接收到这个报文后,会校验这个报文加密是否正确。因为双方都知道它的值是1,以此确定双方加解密的密钥是正确可用的。2.4 实例下面我们通过一个实例来彻底理解这个过程。一天傍晚,Alice在花园中散步,看见了一个黑影手里拿着一个亮晶晶的东西。那是一串钻石项链。家里只有一个人能够买的起钻石项链,肯定是管家Sam偷了主人Bob的钻石项链!Alice必须马上告诉Bob,但是她怎么才能通知Bob而不被Sam发现呢?如果打电话给Bob,Sam可能会在另一个分机上偷听,如果用信鸽并将消息栓到它的脚上,Bob又怎么能知道是Alice发送的信息呢?他说不定会以为是Trudy故意陷害Sam,因为Sam拒绝了她的求爱。那么,Alice必须能够发送只有Bob可以看懂的消息给Bob,这样即使别人能够看到她发送的消息也无所谓。另外,当Bob接收到消息的时候,他必须能够识别出该消息确实是Alice发送的,而且没有人能够在Alice发送消息和Bob接收消息之间篡改信息。下面我们看一下Alice和Bob之间是如何对话的。AB Bob,我想和你安全的通话,我这里的对称加密算法有DES、RC5,密钥交换算法有RSA、DH,摘要算法有MD5、SHA。 BA 我们用DESRSASHA这对组合好了。 这是我的证书,里面有我的名字和public key,你拿去验证一下我的身份把证书发给Alice 我说完了,轮到你发言了。 AB 查看证书上Bob的名字是否无误,并通过手头早已有的CA的证书验证了Bob的证书的真实性,如果其中一项有误,发出警告并断开连接,这一步保证了Bob的public key的真实性 产生一份预备主秘密(pre-master secret),这份预备主秘密处理后将称为主秘密(master secret),加密初始化向量(IV)和完整性保护密钥(HMAC key)。将这份秘密消息用Bob的public key加密,封装成称作ClientKeyExchange的消息。由于用了Bob的public key,保证了第三方无法窃听 我生成了一份预备主秘密,并用你的public key加密了,给你 把ClientKeyExchange发给Bob 注意,下面我就要用加密的办法给你发消息了! 将预备主秘密进行处理,计算出主秘密,然后通过主秘密生成加密密钥(secret key),加密初始化向量和完整性保护密钥 我说完了 BA 用自己的private key将ClientKeyExchange中的预备主秘密解密出来,然后将预备主秘密进行处理,计算出主秘密,然后通过主秘密生成加密密钥,加密初始化向量和完整性保护密钥,这时双方已经安全的协商出一套加密办法了 注意,我也要开始用加密的办法给你发消息了! 我说完了 AB 我的秘密是. BA 放心,其它人不会听到的.哈哈,大家看到这里是不是感到豁然开朗呢?呵呵,不要着急,这只是对SSL协议的一个简单理解,下一部分我们就要开始解析SSL协议,将SSL协议完整的解剖放在你面前。2.5 解析SSL在本节,我们的主要目的是解析SSL协议,暂且先忽略掉身份验证的各种细节,重点研究一下SSL的通信。如图:首先,Alice发起与Bob的连接,然后Bob把自己的证书发送给Alice。Alice校验Bob的证书之后,从中提取出Bob的public key,然后选择一个用来计算master secret的随机数S,将其用Bob的public key加密后发送给Bob。接着,双方会使用secret key对会话数据和完整性保护实施加密。这样实际上需要6个秘密值(对于连接的每个方向,要计算完整性保护密钥,secret key和IV)。消息1:Alice发起会话请求,并发送她所支持的密码算法的列表以及一个随机数RAlice,该随机数将用作计算master key的参数。消息2:Bob把自己的证书和一个随机数RBob发送给Alice,同时在密码算法列表中选择一种自己也支持的算法来响应Alice。随机数同样是用来计算master key的参数。消息3:Alice选择一个随机数S(pre-master secret),将其用Bob的public key加密,接着计算出K(master key)和握手消息(直至ClientHello的所有握手消息,但不包括本条消息)的HMAC值,一起发送给Bob。一来可以证明她知道secret key,二来可以防止Trudy对握手消息进行篡改。用于数据发送的密钥称为写密钥,用于数据接收的密钥称为读密钥。打个比方:Bob的写secret key是Alice的读secret key。在第一次消息交换中发送的秘密值S是预备主秘密(pre-master secret)。由S和两个随机数R计算后得到主秘密K(master secret),即K=f (S,RAlice,RBob)。对于每个连接,K与两个随机数R计算后,生成用于该连接(每个方向3个:secret key,完整性保护密钥和IV)的6个密钥,即每个密钥为g i = f (K,RAlice,RBob)。因本文重点是SSL而不是密码学,再向下深入,其复杂的算法真是让人目瞪口呆,估计得数学系研究生毕业,然后再学习编程并对程序设计十分了解,且有多年算法编写经验才能搞明白这些算法吧。(当时看的我脸都绿了,绝对真事,室友作证)消息4:Bob发送先前的所有握手消息的HMAC值,再用secret key加密,Bob的写完整性保护密钥进行保护。Bob通过这个消息告诉对方,他知道secret key,并确定先前的握手消息未被篡改。因为secret key是用S进行推导计算出来的,因此也就证明了他知道Bob的private key,证明了他就是真实的Bob,因为只有Bob的private key可以正确解密Bob的public key。至此,Alice完成了对Bob的认证,但是Bob并没有对Alice进行认证。在目前的应用中很少使用双向认证。从理论上讲,SSL/TLS可以进行双向认证,比如网上银行。最常见的情况是,如果服务器上的应用程序想认证客户,它通常会要求用户在secret key的保护下,把用户的用户名和口令发送过来进行认证,比如我们的SecEntry。另外,美国政府允许在出口的客户端软件在与处理金融交易的服务器通信时使用高强度加密的密码算法。但是,必须是在服务器证书中指明该服务器允许客户端与之进行高强度保密通信的情况下,客户端才能使用高强度加密算法。Netscape和Microsoft的浏览器都实现了这个概念,但Netscape称它为Step-Up,Microsoft称它为SGC。所以在使用Step-Up时,Alice开始只能提供弱密码套件,Bob选择一套,然后建立40bit的密钥g1。但是Alice发现Bob证书中的存在Step-Up扩展,于是她继续进行另一个握手,这次握手是受g1保护的。在新的握手中,Alice提议用强密码套件,Bob选择一套,然后握手结束,这次两者商定了高强度的密钥g2。然后,Alice给Bob发送ChangeCipherSpec消息,指示从弱密码套件和密钥g1变为强密码套件和密钥g2。Step-Up不需要任何特殊的代码支持。在使用SGC的情况下,除了要求服务器拥有SGC证书外,还必须有支持SGC交换的代码。Alice提供弱密码套件,Bob选择一套,并发送证书。Alice发现了证书中的SGC扩展,然后Alice会发送“ClientHello”信息,该信息包含的是强密码套件。如果服务器没有支持SGC的代码,它就会变糊涂:“干嘛又发ClientHello”?2.6 记录的加密方式哈哈,看完了上一节,大家终于对SSL有一个透彻的了解了吧?“太复杂了,我没搞清楚报文的加密”。没关系,看完下面的内容,想不清楚都难。序列号只在进行HMAC算法时使用,不会被发送。序列号用来防止会话重播,不需要被发送。若发送序列号,SSL是运行在可靠的TCP协议之上的,TCP失败或者数据报丢失、数据包重新排序及重复发送数据包等情况时,通信双方会发现序列号不一致,完整性校验就会失败,从而导致后续一连串的失败。填充字段是在使用分组算法时,需要把|记录数据|HMAC|填充为分组长度的倍数。2.7 握手消息在一条Handshake记录中,即可以只存在一条消息,比如只包含ServerHello或Certificate或CertificateRequest或ServerHelloDone。也可以存在多条消息,比如一条handshake中包含ServerHello、Certificate、CertificateRequest和ServerHelloDone。下面是握手消息的报文结构。左边一栏为字节数注释(v表示可变),右边是报文格式。ClientHello消息:1类型1 3长度2版本号32随机数(RAlice)1session_id的长度(如果不存在session_id则为0)vsession_id2密钥套件列表的长度v密钥套件列表,每个套件两个字节1压缩方法列表的长度v压缩方法列表,每种方法一个字节ServerHello消息:1类型23长度2版本号32随机数(RBob)1session_id的长度(如果不存在session_id则为0)vsession_id2所选择的密钥套件1所选择的压缩方法ServerHelloDone消息:1类型143长度0ClientKeyExchange消息:1类型163长度2长度(SSLv3中没有,TLS中有)(取决于所使用的算法,有些算法此处无用)v加密的pre-master secretCertificate消息:1类型11 3长度3长度(不必要的,冗余的)3证书列表的长度v第一个证书v多个对(若发送多个证书)ServerKeyExchange消息:1类型123长度2模数的长度v模数2指数的长度v指数2签名的长度v签名CertificateRequest消息:1类型133长度1密钥类型列表的长度v密钥类型列表(每种类型1个字节)2CA名称列表的长度2第一个CA的名称的长度v第一个CA的名称2第二个CA的名称的长度v第二个CA的名称2第三个CA的名称的长度v第三个CA的名称2.v最后一个CA的名称的长度2最后一个CA的名称CertificateVerify消息:1类型153长度2签名的长度v签名ChangeCipherSpec记录:1类型202版本号2长度(设置为1)1ChangeCipherSpec类型(设置为1)HandshakeFinished消息:1类型203长度(等于36或12)36/12摘要Alert记录:Alert记录用于通知通信中的另一方发生了某种状况。多数Alert记录是Error消息,严重程度为1警告、2严重。另外一种alert记录是终止(closure)消息,用于通知对方不再有数据发送。2.8 模拟SSL的实现好了,现在我们来看一些必备知识,以及汉语术语的叫法:1,公钥(public key)和私钥(private key)成对出现2,公开的密钥叫公钥,只有自己知道的叫私钥3,用公钥加密的数据只有对应的私钥可以解密4,用私钥加密的数据只有对应的公钥可以解密5,如果可以用公钥解密,则必然是对应的私钥加的密6,如果可以用私钥解密,则必然是对应的公钥加的密7,密钥是双方共享的私钥,密钥也叫会话密钥、加密密钥8,密钥加的密,同样可以用密钥解密9,公钥加密用私钥解密,用私钥加密用公钥解密,叫不对称算法10,密钥加密用同一个密钥解密,叫对称算法现在我们来模拟实现SSL的过程:假设Alice要认证Bob,Bob有一个密钥对,即一个公钥和一个私钥,Bob透露给Alice他的公钥。然后Alice产生一段随机的消息,然后把它发给Bob。AB random-messageBob用自己的私钥来加密这段消息,然后把加密后的消息返回给Alice。BA random-messagebob-private-keyAlice接到了这段消息,然后用Bob以前发过来的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环保科技行业环保科技创新与可持续发展实践研究报告及未来发展趋势预测
- 北京交通大学继续教育学院招聘2人笔试考试备考题库及答案解析
- 2026中国证券登记结算有限责任公司招聘笔试考试参考试题及答案解析
- 2026浙商证券秋季校园招聘笔试考试备考题库及答案解析
- 2025河南焦作温县国资运营集团有限公司招聘高级管理人员1人考试笔试备考试题及答案解析
- 2025年甘肃省公路交通建设集团有限公司社会招聘132人笔试考试参考试题及答案解析
- 2026广西河池巴马瑶族自治县人民医院人才招聘44人笔试考试备考试题及答案解析
- 2025赛马物联科技(宁夏)有限公司招聘4人笔试考试备考试题及答案解析
- 山东省青岛第九中学选聘2026年应届高校毕业生(25人)考试笔试参考题库附答案解析
- 2025河南洛阳中信重机中心幼儿园招聘3人笔试考试参考题库及答案解析
- 2026届内蒙古呼市二中化学高一第一学期期中达标测试试题含解析
- 涂布设备安全知识培训课件
- 2025-2030油田化学品非常规油气开采技术适配性与服务型制造转型研究
- 妊娠合并高脂血症的护理措施
- 2025版建筑工程施工安全生产责任险合同范本
- 不寐的中医护理
- 乳腺癌的护理案例分享
- 产品变更通知单模板PCN(4P)
- 超声科进修汇报
- 吉林省2020-2024年中考满分作文143篇
- 给教师的人工智能教育心得体会
评论
0/150
提交评论