您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 安全文明施工 > 信息安全系统工程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+MACMAC计算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的SSLhttps的端口:一般为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:AESRC2-40RC4-128DESDES403DESIDEAFortezzaMessageDigest:MD5SHAKeyExchange.RSAFixedDiffie-HellmanEphemeralDiffie-HellmanAnonymousDiffie-HellmanFortezzaDataCompression:PKZipWinZipgzipStuffItServerkeyexchange消息服务器在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
本文标题:信息安全系统工程SSL和OpenSSL
链接地址:https://www.777doc.com/doc-140867 .html