使用C_分析SSL数据包

使用C#分析SSL数据包韩海鹰(河南省郑州九中)摘要本文为了分析广泛使用在Internet和Intranet的服务器和客户端中SSLV3/TLS1.0协议,使用.Net的C#构建了分析SSL数据包的方

使用C#分析SSL数据包

韩海鹰

(河南省郑州九中)

摘要本文为了分析广泛使用在Internet和Intranet的服务器和客户端中SSLV3/TLS1.0协议,使用.Net的C#构建了分析SSL数据包的方法和实现的步骤,为研究数据安全通讯协议提供了一种途径,同时这种方法也可以检验数据安全通讯协议的可靠性。

关键词SSLC#信息安全.Net现今SSL/TLS[1]安全协议广泛地用在Internet和Intranet的服务器和客户端中,用于在传输层安全地传送数据,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证,主要用于提高应用程序之间数据的安全性,对传送的数据进行加密和隐藏,确保数据的完整性在传送中不被改变。

使用SSL/TLS进行编程现在可以使用的的方法:①使用JAVA的SSL编程接口。②使用OPENSSL编程接口。使用这些方法的好处是可以不考虑SSL/TLS具体实现的细节,简化编程,提高效率。

作者在研究使用.Net和C#实现SSL/TLS通讯过程中有一些体会,这里给大家谈一谈。结合SSL/TLS的协议数据分析给一个.Net和C#实现的SSL/TLS数据转发器的程序。该转发器位于IE浏览器和WebServer之间,转发它们之间的SSL/TLS通讯数据,在转发过程中可以将数据保存下来分析数据,替换数据,模拟客户端、服务器端。限于篇幅,只能给出转发过程的程序,具体分析数据、模拟客户端等略去。1

SSL/TLS原理

SSL[4]

(SecureSocketLayer)是netscape公司设计的主要用于web的安全传输协议,这种协议在WEB上获得了广泛的应用。SSL协议指定了一种在应用程序协议(如Http、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制。SSLv3是SSL的第三版,改进了协议的效率,灵活性和特征集。目前普遍使用的版本是SSLv3.0。

IETF(www.ietf.org)将SSL作了标准化,RFC文档是RFC2246,并将其称为TLS(TransportLayerSecurity),TLS1.0就是SSLv3.1,与SSLv3.0在大部分上是一样的,只是在其主要区别仅在于散列函数和密钥生成函数等一小部分上,主要实现过程是一样的。本文以SSLv3.0为主,TLS(即SSLv3.1)的实现,大家可以稍做修改就可以了。

TLS/SSLv3是一个介于HTTP等应用层协议与TCP之间的一个层,其位置如下:

图1协议层次示意图2体系结构图

SSL实际上是共同工作的两层协议组成,从体系结构图可以看出SSL安全协议实际是SSL握手协议、SSL修改密文协议、SSL警告协议和SSL记录协议组成的一个协议族。2

SSL/TLS数据转发器的实现

2.1程序环境

(1)客户端:Windows2000或WindowsXP,IE6.0,安装了NetFrameWork1.1。

WebServer:支持SSL通讯。

本文使用的方法是在同一台计算机上,WindowsXP+PersonalWebServer+MicroSoftVisualStudioNet2003。

(2)证书:服务器证书和客户证书的申请过程请参照相应的文档。这里因为篇幅问题不在详细说明了。

(3)服务器端配置:服务器端SSL通讯的配置在很多文档里

都有详细的描述,这里也不详细说明了。

2.2客户端配置

(1)配置IE:打开IE,“工具”下“Internet选项”的“高级”选项。IE默认是使用SSL2.0和SSL3.0,往前兼容SSL2.0。本文将SSL2.0的选项去掉,因为IE默认在发起SSL连接时候,先用SSL2.0格式的数据包。将SSL2.0的选项去掉后,强迫发起SSL连接时候,用SSL3.0格式的数据包。这一点在分析数据包时很重要。

(2)服务器的证书的根证书导入到客户的信任根证书区域。具体过程如下:从证书服务中将根证书导出到文件,然后打开客户机。在任务栏上,单击“开始”,然后单击“运行”。键入“mmc”,然后单击“确定”。在“控制台”菜单上,单击“添加/删除管理单元”。单击“添加”。选择“证书”,然后单击“添加”。选择“计算机帐户”,然后单击“下一步”。选择“本地计算机(运行这个控制台的计算机)”,然后单击“完成”。单击“关闭”,然后单击“确定”。

在MMC管理单元的左窗格中展开“证书(本地计算机)”。展开“受信任的根证书颁发机构”。右键单击“证书”,指向“所有任务”,然后单击“导入”。单击“下一步”跳过“证书导入向导”的“欢迎”对话框。输入CA的.cer文件的路径和文件名。单击“下一步”。选择“将所有的证书放入下列存储区”,然后单击“浏览”。选择“显示物理存储区”。在列表中展开“受信任的根证书颁发机构”,然后选择“本地计算机”。依次单击“确定”、“下一步”以及“完成”。单击“确定”关闭确认消息框。

在MMC管理单元中刷新“证书”文件夹的视图,确认该CA的证书已列出。关闭MMC管理单元。3

最基本的SSL通讯过程

本文谈最基本的SSL通讯过程,即IE浏览器通过HTTPS向WebServer请求默认的主页。

注意:客户端验证证书时候,证书的CN与请求的域名要一样,否则会出现安全警告:“证书的CN与请求的域名不同”,这样会干扰我们的数据转发过程,导致转发失败。所以要在目录C:\WINDOWS\system32\drivers\etc的hosts中加入一行:192.168.3.55www.mytest.com。192.168.3.55是本文服务器主机的地址,www.mytest.com是服务器主机名。客户端即(IE浏览器)发出SSL/TLS连接请求,输入地址:https://www.mytest.com。读者可以根据自己的主机输入,建议不要用LocalHost或127.0.0.1。WebServer响应请求,建立连接并返回默认主页。

我们从最基本的SSL通讯过程开始分析,所以假设服务器有可用于密钥交换的证书,服务器不向客户端要求证书。整个过程可以分为五步:

(1)客户端发起SSL连接请求(包含Client_random和支持的加密系列)。

(2)服务器回应(包含Server_random和证书和双方都支持的加密方法)。

(3)客户端验证证书,用服务器证书中的公钥加密产生的随机数Pre_master,用Client_random、Server_random和Pre_master计算出加密参数。向服务器发出改变加密的协议,并将除去改变加密协议以前所有收发的数据用加密参数处理后发出。

(4)服务器收到加密的Pre_master,用自己的私钥解密,用Client_random、Server_random和Pre_master计算出加密参数,也用与客户端相同的方法和数据用加密参数处理后与收到(转111页)

,

与设备界面之间的最短空间距离。

2.7接线端子导线安装试验

该试验目的是检验接线端子与导线连接的可靠性。从具有适当标称截面积的软导线的端部,剥去约8mm长的绝缘层,使该多股导线中的一根线悬空,然后将其余线束完全嵌入并夹紧在接线端子内。在不向后撕裂绝缘层的条件下,这根悬空的线应沿每一个可能的方向弯曲,但不要围绕隔离保护物锐弯。

2.8温升试验

在正常使用时,设备及其零部件不应产生过高的温度。一般应采用热电偶法来进行测定,而测量绕组的温度时可采用电阻法。规定的最大温升限值是基于设备工作时室内温度为25℃的假设作出的。试验期间,室内环境温度不要求保持在某一规定值上,但须记录。试验应在样品正常负载条件下进行,首先记录试验开始时的室内环境温度,然后打开电源,使样品工作在正常负载的状态,保持状态观察温度变化,当温度达到稳定时,记录此时零部件的温度以及环境温度。

2.9对地漏电流测量试验

该试验目的是检验设备电源部分对地漏电流是否符合要求。对无保护接地的II类设备,应对操作人员接触区内的导电零部件,以及对贴在可触及的非导电零部件上、面积不超过10cm×20cm的金属箔进行试验。金属箔在被试表面上应占有最大可能的面积,但不超过规定的尺寸。如果金属箔的面积小于被试表面,则应移动金属箔,以便能对被试表面的所有部分进行试验,应注意避免该金属箔影响设备的散热。

2.10异常工作和故障试验

2.10.1元器件的异常工作试验检验当部分元器件工作异常时,或者误操作后,对操作人员和维护人员的危害程度。试验时应使设备在额定电压或额定电压范围的上限电压下工作,并在设备上或模拟电路上,一次施加一个下列规定的条件进行试验。①当该机电元件正常通电时,应将其机械动作锁定在最不利的位置上;②如果某个机电元件通常是间断通电的,则应在驱动电路上模拟故障,使该机电元件连续通电。对出现故障时不易被操作人员察觉到的设备或机电元件,连续通电时间持续到建立起稳定状态或引起其他后果为止,对其他设备或机电元件,持续5min或引起其他后果为止。

2.10.2元器件故障试验本试验适用于除电动机、变压器和机电元件外的元器件和电路。首先通过检查设备、电路图和元器件(接103页)的客户发来的数据比较,如果一致说明加密参数协商成功。然后将此前除去改变加密协议以前所有收发的数据用加密参数处理后紧接发出改变加密的协议后发出。

(5)客户端也用与服务器相同的方法和数据用加密参数处理后与收到的数据比较,如果一致说明加密参数协商成功。至此,SSL/TLS参数协商成功。

(6)往下就是应用数据传输,本文请求的是一个简单网页,用了2个应用数据传输数据包。

往来的通讯数据的顺序如下图所示:

规范,以此来确定出可以合理预计到会发生的那些故障条件。如果设备有多个插座连有同一个内部电路,则只须对一个样品插座进行试验。与电源输入有关的一次电路的元器件(如电源线、设备耦合器、EMC滤波元件、开关等),它们互连一个故障条件。

2.11安全电压试验(ELV)

小于42.4V的交流电压或是小于60V的直流电压叫安全电压;安全电压电路仅指在正常工作条件下,在导体与导体之间或任一导体与地之间的交流峰值不超过42.4V或直流值不超过60V的二次电路,一般仅靠基本绝缘而没有接地,所以不允许操作人员触摸。

2.12标牌耐久性试验

可利用本试验对标牌的耐久性进行检验。

首先,用一块蘸有水的棉布用手擦拭15s,然后,再用一块蘸有汽油的棉布用手擦拭15s,试验完成后标记仍应清析,标记铭牌应不可能轻易被揭掉,而且不应该出现卷边。

2.13安全标志的检查

通过目测观察,标识的原则要求是:①设备上必须有能保持长久、清晰易辨的标志或标牌,应给出安全使用设备所必需的主要特征,如额定参数、接线方式、接地标记、危险标记等;②由于设备本身的条件所限,不能在其上标出时,必须以其他方式清楚、可靠和有效地将应注意的事项告诉使用人员(例如用操作说明书或安装说明书的形式),在此情况下,这种文件应视为设备的组成部分;③设备上应该清楚地标出制造公司、牌号或商标,如不好实现,则可印在包装箱上;④附上指示灯和按钮等颜色,在运用中所表示的含义。3

结语

本文较全面、详尽地总结了电子设备进行安全试验时的条件和要求,希望能对电子设备安全性工作的开展和提高有所帮助。

参考文献[1][2][3][4]

王键石.电子设备结构设计标准手册.中国标准出版社邱成悌.电子设备结构设计原理.东南大学出版社陆延康.特种设备安全技术.同济大学出版社

电工产品强制性安全认证用标准汇编.中国标准出版社

作者简介周焱,河南省平顶山市平顶山工学院电气系讲师,武汉大学电气工程学院硕士,现主要从事工业自动化的研究与教学工作。(收稿日期:2006・11・30)

掉记录层包头后存入文件。

(3)转发器从文件中获得数据,加上记录层包头后向WebServer发出SSL/TLS请求,WebServer的SSL/TLS接收端口使用4430,以区别转发器侦听端口。

(4)转发器将WebServer的响应去掉记录层包头后存入文件,在从文件中获得数据,加上记录层包头后向IE浏览器发出。

如此这般,转发器就记录了所有来往数据,便于分析,当然也可以模拟数据。三者关系如下图所示:

参考文献

[1]RFC2246T.Dierks,C.AllenTheTLSprotocolversion1.0,1998

[2]RFC2104KrawczykHHMAC:Keyed-hashingforMessageAuthentication(Version1.5),1997

[3]RFC2459InternetX.509PublicKeyInfrastructureCertificateandCRLProfile,1999

[4]ssl-mostrecentdraft302TheSSLProtocolVersion3.0,1996

[5]RFC2817FergusonP,SenieD.Networkingressfiltering:DefeatingdenialofserviceattackwhichemployIPsourceaddressspoofing.,2000

4具体转发程序

(1)转发器先运行,在默认的SSL/TLS接收端口443建立侦

作者简介韩海鹰(1967-),高级教师,1989年北京师范大学数学系毕业,现从事计算机教学和科研工作。

(收稿日期:2006・12・26)

听。

(2)IE向转发器发出SSL/TLS请求,转发器接受到数据后去

标签: