信息安全系统工程SSL和OpenSSL.pptx
- 文档编号:18768698
- 上传时间:2023-11-05
- 格式:PPTX
- 页数:81
- 大小:1.39MB
信息安全系统工程SSL和OpenSSL.pptx
《信息安全系统工程SSL和OpenSSL.pptx》由会员分享,可在线阅读,更多相关《信息安全系统工程SSL和OpenSSL.pptx(81页珍藏版)》请在冰点文库上搜索。
一、一个简单的安全协议,1、协议概述2、协议过程,一个简单的安全协议,由于SSL协议的复杂性,为了更好地理解SSL,引入一个简单的安全协议,该协议适合于交互式应用。
该协议的主要目标:
1、保证通信数据的机密性;2、保证通信数据的完整性;3、确保通信双方身份的可靠性;4、不需为每个数据包都动用昂贵的公开密钥操作,具有较高的效率。
协议过程,基本步骤(假设通信双方为Alice、Bob):
1、握手(Handshake)Alice和Bob使用他们的证书和私钥来对对方进行身份鉴别并交换共享密钥(MSMastersecret)2、导出密钥(Keyderivation)Alice和Bob使用他们达成一致的共享密钥(MS)导出一组用于保护将要传输的数据的密钥(SessionKey)3、数据传输(Datatransfer)将要传输的数据分割成一系列的记录,并对每条记录加以保护4、关闭连接(Connectionclosure)使用特殊的、经过保护的关闭消息,安全地关闭连接,协议过程握手,握手阶段(Handshake),单向鉴别(结束后双方获得主密钥MS),声称的身份(Bob),掌握Bob的私钥才能解密,从而完成身份证明,Alice产生主密钥MS,并用Bob公钥加密(挑战),协议过程握手(续),握手阶段(Handshake),双向鉴别(结束后双方获得主密钥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),协议过程完整图示,Alice,Bob,协议小结,该简单协议已经包含了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的历史,TLS:
TransportLayerSecurity;TLSV1.0是一个Internet协议,完全建立在SSLV3的基础上,又称为SSLv3.1;RFC2246:
TheTLSProtocolVersion1.0Rfc3546:
TransportLayerSecurity(TLS)Extensions,SSL在协议栈中的位置,在分层模型下,某层进行了加密,则上层协议都将自动被加密,网络协议栈,TCP/IP协议报文封装,在分层模型下,某层进行了加密,则上层协议都将自动被加密,SSL的保护区域,SSL协议的使用,用于Web的SSLhttps:
/https的端口:
一般为443;在SSL上构建一切ftps-data(989),ftps(990)nntps(563)pop3s(995)telnets(992)目前SSL的主要应用范围是http协议。
加密传输,WWW服务器,HTTPsoverSSL,Internet,客户浏览器(1,2,n),路由器,路由器,路由器,攻击者,实际的报文传输物理路径,利用SSL构建的端到端的逻辑安全通道,利用WireShark抓包分析,SSL的体系结构,SSL由Handshake、ChangeCipherSpec、Alert和Record这四个子协议组成,2、SSL连接和会话,连接(Connection):
指一次提供适当类型服务的传送。
会话(Session):
由握手协议创建;定义了一组可以被多个连接共用的密码安全参数。
连接vs会话在任意一对的双方之间,也许会有多个安全连接;理论上,双方可以存在多个同时会话,但在实践中并未用到这个特性。
会话状态参数,(48字节),会话状态中的Cipherspec,Enumstream,blockCipherType;Enumtrue,falseIsExportable;Enumnull,rc4,rc2,des,3des,des40,idea,fortezzaBulkCipherAlgorithm;Enumnull,md5,shaMACAlgorithm;StructBulkCipherAlgorithmBulk_Cipher_Algorithm;MACAlgorithmMAC_Algorithm;CipherTypeCipher_Type;IsExportableIs_Exportable;Uint8hash_size;/MAC的长度Uint8key_material;/对称加密密钥的长度Uint8IV_size;/IV的长度(CBC模式使用)CipherSpec;,连接状态参数,上述状态中的各种密钥,SSL使用两个相互独立的密钥,即Serverwritekey和clientwritekey,分别用于同一连接的两个方向上的加解密,对于MAC操作也一样。
各个密钥的关系如下:
预备状态和当前状态,SSL中定义了预备状态(pendingstate)和当前状态(currentoperatingstate):
用这些状态来协调客户和服务器同时使用新的加密参数和密钥。
预备状态:
包含本次握手过程中协商成功的各种算法和密钥。
当前状态:
包含记录层正在使用的各种算法和密钥。
此外,客户和服务器都有各自独立的读状态和写状态读状态:
包含解密、解压缩、MAC验证算法;解密密钥。
写状态:
包含加密、压缩、MAC生成算法;加密密钥。
预备状态和当前状态(续),以上二者结合,SSL的每一端都包含预备读、预备写、当前读、当前写4个逻辑状态。
客户/服务器通过Changecipherspec消息进行状态同步客户/服务器收到changecipherspec后,会将预备读状态中的内容复制到当前读状态;客户/服务器发送changecipherspec后,会将预备写状态中的内容复制到当前写状态。
3、SSL握手协议,SSL的握手协议层的功能是验证实体身份,协商密钥交换算法、压缩算法和加密算法,完成密钥交换以及密钥导出等。
客户和服务器的握手过程是指建立一个会话或恢复一个会话的过程。
在这一过程中,客户和服务器都建立新的会话的会话状态或使用已经存在的会话的会话状态,但每次握手都产生新的密钥、MAC密钥和IV,并将这些参数作为当前连接状态中的元素。
SSL握手协议消息,握手消息共有10种,除了Finished消息外,所有其他握手消息都以明文传送。
建立一个新会话的握手过程,建立一个新会话的握手过程(续),SSL握手协议本质上是一个密钥交换协议。
密钥交换最多用到5条消息:
ServerCertificate、ServerKeyExchange、ClientCertificate、ClientKeyExchange和CertificateVerify。
实际上,不同的握手过程蕴含了SSL的3种验证模式:
1)客户和服务器都被验证;2)只验证服务器,不验证客户,这是目前应用最广的模式;3)客户和服务器都不被验证,也成为完全匿名模式(SSL不鼓励,甚至反对使用该模式)。
Hello消息中的CipherSuite,包括一个密钥交换算法和一个CipherSpec。
DataEncryption:
AESRC2-40RC4-128DESDES403DESIDEAFortezzaMessageDigest:
MD5SHA,KeyExchange.RSAFixedDiffie-HellmanEphemeralDiffie-HellmanAnonymousDiffie-HellmanFortezzaDataCompression:
PKZipWinZipgzipStuffIt,Serverkeyexchange消息,服务器在3种情况下发送该消息,向客户提供ciphersuite中指定的密钥交换算法的临时公开密钥:
1)服务器没有证书2)服务器有证书,但只用于签名3)使用了Fortezza_dms密钥交换算法服务器可以对发送的临时公开密钥进行签名。
Clientkeyexchange消息,根据密钥交换算法的不同,该消息分为3类:
1)RSAEncryptedPre_master_secret:
当使用RSA密钥交换算法时,客户产生48字节的Pre_master_secret,用服务器证书中的公钥或Serverkeyexchange中给出的临时RSA公钥加密,然后发送给服务器。
2)Fortezza密钥交换消息:
略。
Clientkeyexchange消息(续),3)ClientDiffie-HellmanPublicValue:
当使用D-H算法时,客户端通过该消息发送其公开密钥(Publicvalue)。
当使用D-H时,双方产生的秘密值被用作pre-master-secret,因此在每次建立会话时,对于使用固定D-H的场合,pre-master-secret总是相同。
有鉴于此,SSL规定必须先通过pre-master-secret生成master-secret,再通过master-secret生成最终的会话密钥。
Finished消息,Finished消息总是在ChangeCipherSpec消息之后立即发送,用于证实密钥交换和验证过程的成功。
该消息是第一个应用刚刚协商成功的加密算法和密钥加密的消息。
如果客户或服务器在验证Finished消息的正确性时没有通过,则终止当前握手;如果都成功,就可以开始传送保密数据。
Finished消息(续),该消息的散列计算方法如下(以SHA为例):
SHA_Hash=SHA(master_secret+pad2+SHA(handshake_messages+Sender+master_secret+pad1)其中Sender是发送方标识、pad1和pad2是两个固定的常量、handshake_messages是除Finished之外,从ClientHello开始的所有消息。
建立新会话时的密钥导出过程,建立新会话时的密钥导出过程(续),Master_secret=MD5(pre_master_secret+SHA(A+pre_master_secret+ClientHello.random+ServerHello.random)+MD5(pre_master_secret+SHA(BB+pre_master_secret+ClientHello.random+ServerHello.random)+MD5(pre_master_secret+SHA(CCC+pre_master_secret+ClientHello.random+ServerHello.random),建立新会话时的密钥导出过程(续),Keyblock=MD5(master_secret+SHA(A+master_secret+ClientHello.random+ServerHello.random)+MD5(master_secret+SHA(BB+master_secret+ClientHello.random+ServerHello.random)+MD5(master_secret+SHA(CCC+master_secret+ClientHello.random+ServerHello.random)+/直到产生足够生成6个参数的位数为止最终从keyblock截取出clientwriteMACsecret、serverwriteMACsecret、clientwritekey、serverwritekey、clientwriteIV和serverwriteIV。
重用SSL会话的握手过程,重用SSL会话的握手过程(续),当通过恢复一个会话建立连接时,这一新的连接继承这个会话状态下的压缩算法、CipherSpec和master_secret。
但该连接产生新的ClientHello.random和ServerHello.random,二者和当前会话的master_secret用来生成该连接使用的新密钥、MAC密钥和IVs。
4、ChangeCipherSpec协议,该协议只有一条消息:
ChangeCipherSpec消息,其作用是标志加密策略的改变。
客户和服务器都发送此消息,通知接受方,在该消息之后发送的消息将采用握手层刚刚协商成功的算法、密钥进行压缩、MAC计算和加密操作。
Changecipherspec消息的接收方令记录层将预备读状态复制到当前读状态;该消息的发送方令记录层将预备写状态复制到当前写状态。
ChangeCipherSpec消息只有1个字节,值为1。
5、Alert协议,Alert协议包括若干个报警(alert)消息。
报警消息的作用是,当握手过程或数据加密等操作出错或发生异常时,报警或终止当前连接。
根据错误的严重程度,报警消息分为“警告性”消息和“致命性”消息:
致命性报警消息导致立即终止当前连接,并将与这个连接相关的会话的Session_id作废,以免这个会话被继续用于建立新的连接。
Alert协议(续),SSL共有12类报警消息,都是加密传输的。
根据功能的不能,可以把它们分成两类:
close_notify消息和erroralerts消息。
Alert消息的结构是:
Alert协议(续),Close_notify消息通知接收方,发送方不再在当前的连接上发送消息。
客户端和服务器端都通过发送该消息结束当前连接。
如果一个连接不是通过发送close_notify终止的,则相关的会话不可恢复。
Error_alerts消息检测到错误的一方向对方发送Erroralerts消息。
一旦发送或接收致命erroralerts消息,客户和服务器立即终止当前连接,并忘掉该连接的密钥、MAC密钥以及与该连接相关的Session_id。
共有11种erroralerts消息(如unexpect_message、bad_record_mac等)。
一次真实的连接,Client,Server,6、SSL记录协议,记录层协议的功能是:
根据当前会话状态指定的压缩算法、CipherSpec,以及连接状态中指定的客户和服务器随机数、加密密钥、MAC密钥、IVs、消息序号等,对当前连接中要传送的高层数据进行压缩和解压缩、加解密、计算与校验MAC等操作。
记录层协议要封装的高层协议主要有4类:
1)Changecipherspec协议;2)Alert协议;3)握手协议;4)应用层协议,如HTTP、FTP和Telnet等。
各种协议协同工作,记录层协议的工作流程,发送方记录层协议的工作流程如下,记录层协议的工作流程(续),1)从应用层接受任意大小的数据块,将数据块分段成不超过214字节的明文记录;2)用当前会话状态中指定的压缩算法将明文结构SSLPlaintext变换为压缩结构SSLCompressed;3)用当前CipherSpec中指定的MAC算法对SSLCompressed计算MAC;4)用加密算法加密压缩数据和MAC,形成SSLCiphertext。
记录层协议的工作流程(续),SSL记录协议中MAC计算(HMAC),SSL记录协议中的加密,SSL记录协议的封装,7、SSL的安全
(1),SSL提供了什么SSL提供了通道级别的安全:
连接的两端知道所传输的数据是保密的,而且没有被篡改。
几乎总是要对服务器进行认证。
可选的客户端认证。
针对异常情况的安全通知错误警示。
关闭连接。
所有这些依赖于某些对系统的假定假定已经正确产生了密钥数据并且该密钥已被安全地保管。
SSL的安全
(2),保护master_secret几乎协议的所有安全都依赖于master_secret的保密;在内存中保护秘密。
保护服务器的私有密钥最常被违反的规则,很难保证做到;要求安全地存储私有密钥多数实现都对磁盘上的私钥进行加密,而且提供口令保护;其他实现在受保护的硬件中存储密钥。
上述两种方案在启动服务器时都要求管理员的介入,从而使得在系统崩溃或电力故障恢复时无法实现无人看管的重新启动。
使用良好的随机数生成器,三、OpenSSL,OpenSSL是什么?
一套密码学工具箱,实现了SSLv2/v3、TLSv1以及与SSL/TLS相关的若干密码标准不仅仅是SSL加密算法库Hash算法库数字签名算法库X.509证书处理库CA工具库SSL处理库EVP算法封装库BIO抽象I/O封装库openssl工具包,OpenSSL包括些什么?
源代码形如openssl-0.9.7b.tar.gz编译后的版本C语言包含文件如#include两个动态共享库Win32下libeay32.dllssleay32.dllLinux/Unix/FreeBSD下libcrypto.solibssl.so可执行文件openssl.exe,OpenSSL命令行工具,TheopensslprogramisacommandlinetoolforusingthevariouscryptographyfunctionsofOpenSSLscryptolibraryfromtheshell.ItcanbeusedforCreationofRSA,DHandDSAkeyparametersCreationofX.509certificates,CSRsandCRLsCalculationofMessageDigestsEncryptionandDecryptionwithCiphersSSL/TLSClientandServerTestsHandlingofS/MIMEsignedorencryptedmail,OpenSSL标准命令
(1),Asn1parse-ParseanASN.1sequence.Ca-CertificateAuthority(CA)Management.Ciphers-CipherSuiteDescriptionDetermination.Crl-CertificateRevocationList(CRL)Management.Crl2pkcs7-CRLtoPKCS#7Conversion.Dgst-MessageDigestCalculation.Dh-Diffie-HellmanParameterManagement.Obsoletedbydhparam.Dsa-DSADataManagement.,OpenSSL标准命令
(2),Dsaparam-DSAParameterGeneration.Enc-EncodingwithCiphers.Errstr-ErrorNumbertoErrorStringConversion.Dhparam-GenerationandManagementofDiffie-HellmanParameters.Gendh-GenerationofDiffie-HellmanParameters.Obsoletedbydhparam.Gendsa-GenerationofDSAParameters.Genrsa-GenerationofRSAParameters.,OpenSSL标准命令(3),Ocsp-OnlineCertificateStatusProtocolutility.Passwd-Generationofhashedpasswords.Pkcs7-PKCS#7DataManagement.Rand-Generatepseudo-randombytes.Req-X.509CertificateSigningRequest(CSR)Management.Rsa-RSADataManagement.Rsautl-RSAutilityforsigning,verification,encryption,anddecryption.,OpenSSL标准命令(4),s_client-ThisimplementsagenericSSL/TLSclientwhichcanestablishatransparentconnectiontoaremoteserverspeakingSSL/TLS.ItsintendedfortestingpurposesonlyandprovidesonlyrudimentaryinterfacefunctionalitybutinternallyusesmostlyallfunctionalityoftheOpenSSLssllibrary.,OpenSSL标准命令(5),s_server-ThisimplementsagenericSSL/TLSserverwhichacceptsconnectionsfromremoteclientsspeakingSSL/TLS.ItsintendedfortestingpurposesonlyandprovidesonlyrudimentaryinterfacefunctionalitybutinternallyusesmostlyallfunctionalityoftheOpenSSLssllibrary.Itprovidesbothanowncommandli
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 安全 系统工程 SSL OpenSSL