信息安全系统工程SSL和OpenSSL

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、一个简单的安全协议1、协议概述2、协议过程一个简单的安全协议由于SSL协议的复杂性,为了更好地理解SSL,引入一个简单的安全协议,该协议适合于交互式应用。该协议的主要目标:1、保证通信数据的机密性;2、保证通信数据的完整性;3、确保通信双方身份的可靠性;4、不需为每个数据包都动用昂贵的公开密钥操作,具有较高的效率。协议过程基本步骤(假设通信双方为Alice、Bob):1、握手(Handshake)Alice和Bob使用他们的证书和私钥来对对方进行身份鉴别并交换共享密钥(MS—Mastersecret)2、导出密钥(Keyderivation)Alice和Bob使用他们达成一致的共享密钥(MS)导出一组用于保护将要传输的数据的密钥(SessionKey)3、数据传输(Datatransfer)将要传输的数据分割成一系列的记录,并对每条记录加以保护4、关闭连接(Connectionclosure)使用特殊的、经过保护的关闭消息,安全地关闭连接协议过程—握手握手阶段(Handshake)AliceBob单向鉴别(结束后双方获得主密钥MS)声称的身份(Bob)掌握Bob的私钥才能解密,从而完成身份证明Alice产生主密钥MS,并用Bob公钥加密(挑战)协议过程—握手(续)握手阶段(Handshake)AliceBob双向鉴别(结束后双方获得主密钥MS)Alice产生主密钥MS,并用Bob公钥加密(挑战),再用自己私钥签名(证明自己)协议过程—导出密钥使用同一个密钥来完成不同类型的加密操作是糟糕的思想本协议在每个传输方向上可以采用两个会话密钥,分别用于加密和消息鉴别(MAC):会话密钥可通过密钥导出函数(KeyDerivationFunction,KDF)由MS和nonce导出;KDF一般基于Hash算法。一种最简单的KDF可能如下(由同一个主密钥MS生成了四个不同的会话密钥):Ecs=Hash(MS,nonce,”ECS”)//”ECS”等是一个常量Mcs=Hash(MS,nonce,”MCS”)//E是加密密钥,M是MAC密钥Esc=Hash(MS,nonce,”ESC”)//cs和sc是传输方向Msc=Hash(MS,nonce,”MSC”)协议过程—数据传输数据记录为实现数据传输的灵活性,必须对数据分块(记录)传输数据分块后MAC如何处理,放最后吗?解决方法:分块后,每个记录应该自带MAC记录大小定长,不经济理想的应是变长记录,每个记录要加上长度字段记录格式长度Mx+数据D+MACMAC计算M=MAC(Mx,D)协议过程—数据传输(续)序号为对抗重放、删除、重排攻击,需要增加序号Sequence序号必须是MAC输入的一部分可以放在记录中在基于TCP的连接中,也可以使用隐含序号MAC的计算M=MAC(Mx,Sequence||D)协议过程—关闭连接控制信息为防止攻击者恶意切断连接,需要有一种机制使得Alice能告诉Bob(或反之),她已完成数据传送两种方法1、传送长度为0的记录2、在记录中增加类型字段增加类型字段后的记录格式长度Mx+序号Sequence+类型Type+数据D+MAC类型为0:普通数据类型为1:结束记录类型为其他:报告错误信息MAC的计算M=MAC(Mx,Sequence||Type||D)协议过程–完整图示AliceBob协议小结该简单协议已经包含了SSL绝大多数的核心功能握手密钥交换双向鉴别保密传输遗漏的部分不完整,不包括具体实现细节数据结构定义每一字段大小使用何种算法涉及到数据结构表示、翻译等问题更重要的是缺少协商(negotiation)功能二、SSL协议1、SSL协议概述2、SSL的会话和连接3、SSL的握手协议4、SSL的ChangeCipherSpec协议5、SSL的Alert协议6、SSL的记录协议1、SSL协议概述SSL:SecureSocketLayer(安全套接层)SSL是用于Internet上两台机器间提供安全通道的协议,主要有两项功能:保护传输数据(机密性和完整性);识别通信机器(认证性)。SSL协议的安全通道是透明的对传输的数据内容上不加变更,仅作了加密;透明性使得几乎所有基于TCP的协议稍加改动就可以在SSL上运行。SSL的历史SSLv1(1994,Netscape)未发布SSLv2(1994)第一版SSLv3(1995)只进行认证的模式;DH,DSS;关闭握手;再握手;证书链TLS(1997-1999)IETF;必须支持DH,DSS;新的MAC算法;新的密钥扩展•TLS:TransportLayerSecurity;•TLSV1.0是一个Internet协议,完全建立在SSLV3的基础上,又称为SSLv3.1;•RFC2246:TheTLSProtocolVersion1.0•Rfc3546:TransportLayerSecurity(TLS)ExtensionsSSL在协议栈中的位置IPHTTPFTPSMTPTCPSSLorTLS应用层表示层会话层传输层(TCP)网络层(IP)数据链路层物理层应用层表示层会话层传输层(TCP)网络层(IP)数据链路层物理层物理介质主机A主机B在分层模型下,某层进行了加密,则上层协议都将自动被加密网络协议栈TCP/IP协议报文封装应用协议包头应用层数TCP/UDP包头TCP数据IP包头IP数据帧头帧数据帧尾(CRC)在分层模型下,某层进行了加密,则上层协议都将自动被加密SSL的保护区域SSL协议的使用用于Web的SSLhttps的端口:一般为443;在SSL上构建一切ftps-data(989),ftps(990)nntps(563)pop3s(995)telnets(992)目前SSL的主要应用范围是http协议。加密传输客户浏览器(1,2,…n)路由器路由器路由器攻击者实际的报文传输物理路径利用SSL构建的端到端的逻辑安全通道SSL加密前明文数据(104协议)SSL加密后数据利用WireShark抓包分析SSL的体系结构SSL由Handshake、ChangeCipherSpec、Alert和Record这四个子协议组成2、SSL连接和会话连接(Connection):指一次提供适当类型服务的传送。会话(Session):由握手协议创建;定义了一组可以被多个连接共用的密码安全参数。连接vs会话在任意一对的双方之间,也许会有多个安全连接;理论上,双方可以存在多个同时会话,但在实践中并未用到这个特性。会话状态参数(48字节)会话状态中的CipherspecEnum{stream,block}CipherType;Enum{true,false}IsExportable;Enum{null,rc4,rc2,des,3des,des40,idea,fortezza}BulkCipherAlgorithm;Enum{null,md5,sha}MACAlgorithm;Struct{BulkCipherAlgorithmBulk_Cipher_Algorithm;MACAlgorithmMAC_Algorithm;CipherTypeCipher_Type;IsExportableIs_Exportable;Uint8hash_size;//MAC的长度Uint8key_material;//对称加密密钥的长度Uint8IV_size;//IV的长度(CBC模式使用)}CipherSpec;连接状态参数上述状态中的各种密钥SSL使用两个相互独立的密钥,即Serverwritekey和clientwritekey,分别用于同一连接的两个方向上的加解密,对于MAC操作也一样。各个密钥的关系如下:pre_master_secretmastersecretClientwriteMACsecretClientwritesecretClientwriteIVServerwriteMACsecretServerwritesecretServerwriteIV预备状态和当前状态SSL中定义了预备状态(pendingstate)和当前状态(currentoperatingstate):用这些状态来协调客户和服务器同时使用新的加密参数和密钥。预备状态:包含本次握手过程中协商成功的各种算法和密钥。当前状态:包含记录层正在使用的各种算法和密钥。此外,客户和服务器都有各自独立的读状态和写状态读状态:包含解密、解压缩、MAC验证算法;解密密钥。写状态:包含加密、压缩、MAC生成算法;加密密钥。预备状态和当前状态(续)以上二者结合,SSL的每一端都包含预备读、预备写、当前读、当前写4个逻辑状态。客户/服务器通过Changecipherspec消息进行状态同步客户/服务器收到changecipherspec后,会将预备读状态中的内容复制到当前读状态;客户/服务器发送changecipherspec后,会将预备写状态中的内容复制到当前写状态。3、SSL握手协议SSL的握手协议层的功能是验证实体身份,协商密钥交换算法、压缩算法和加密算法,完成密钥交换以及密钥导出等。客户和服务器的握手过程是指建立一个会话或恢复一个会话的过程。在这一过程中,客户和服务器都建立新的会话的会话状态或使用已经存在的会话的会话状态,但每次握手都产生新的密钥、MAC密钥和IV,并将这些参数作为当前连接状态中的元素。SSL握手协议消息握手消息共有10种,除了Finished消息外,所有其他握手消息都以明文传送。建立一个新会话的握手过程ClientServer建立一个新会话的握手过程(续)SSL握手协议本质上是一个密钥交换协议。密钥交换最多用到5条消息:ServerCertificate、ServerKeyExchange、ClientCertificate、ClientKeyExchange和CertificateVerify。实际上,不同的握手过程蕴含了SSL的3种验证模式:1)客户和服务器都被验证;2)只验证服务器,不验证客户,这是目前应用最广的模式;3)客户和服务器都不被验证,也成为完全匿名模式(SSL不鼓励,甚至反对使用该模式)。Hello消息中的CipherSuite包括一个密钥交换算法和一个CipherSpec。DataEncryption:AESRC2-40RC4-128DESDES403DESIDEAFortezzaMessageDigest:MD5SHAKeyExchange.RSAFixedDiffie-HellmanEphemeralDiffie-HellmanAnonymousDiffie-HellmanFortezzaDataCompression:PKZipWinZipgzipStuffItServerkeyexchange消息服务器在3种情况下发送该消息,向客户提供ciphersuite中指定的密钥交换算法的临时公开密钥:1)服务器没有证书2)服务器有证书,但只用于签名3)使用了Fortezza_dms密钥交换算法服务器可以对发送的临时公开密钥进行签名。Clientkeyexchange消息根据密钥交换算法的不同,该消息分为3类:1)RSAEncryptedPre_master_secret:当使用RSA密钥交换算法时,客户产生48字节的Pre_master_secret,用服务器证书中的公钥或Serverkeyexchange中给出的临时RSA公钥加密,然后发送给服务器。2)Fortezza密钥交换消息:略。Clientkeyexchange消息(续)3)ClientD

1 / 81
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功