




已阅读5页,还剩76页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 一个简单的安全协议 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 单向鉴别 结束后双方获得主密钥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的端口 一般为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 Enum 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操作也一样 各个密钥的关系如下 预备状态和当前状态 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命令行工具 TheopensslprogramisacommandlinetoolforusingthevariouscryptographyfunctionsofOpenSSL scryptolibraryfromtheshell 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 It sintendedfortestingpurposesonlyandprovidesonlyrudimentaryinterfacefunctionalitybutinternallyusesmostlyallfunctionalityoftheOpenSSLssllibrary OpenSSL标准命令 5 s server ThisimplementsagenericSSL TLSserverwhichacceptsconnectionsfromremoteclientsspeakingSSL TLS It sintendedfortestingpurposesonlyandprovidesonlyrudimentaryinterfacefunctionalitybutinternallyusesmostlyallfunctionalityoftheOpenSSLssllibrary ItprovidesbothanowncommandlineorientedprotocolfortestingSSLfunctionsandasimpleHTTPresponsefacilitytoemulateanSSL TLS awarewebserver OpenSSL应用程序接口 底层函数加密 解密大整数运算 公开密钥算法消息摘要文件I O SocketsI O MemoryI OASN 1 PKCSEVP密码算法封装BIOI O封装SSLPEM OpenSSL函数调用方法 直接调用相关函数如可以直接调用MD5 DES等算法实现的底层函数通过抽象接口类似于面向对象的多态EVPBIO EVP系列 一系列封装了openssl加密库中所有加密算法的函数 通过这样的统一的封装 使得只需要在初始化参数的时候做很少的改变 就可以使用相同的代码但采用不同的加密算法进行数据的加密和解密 公开密码算法EVP Seal EVP Open 数字签名算法EVP Sign EVP Verify 对称加密算法EVP Encrypt 信息摘要算法EVP Digest 信息编码算法EVP Encode EVP加密算法结构 typedefstructevp cipher st intnid intblock size intkey len intiv len unsignedlongflags int init EVP CIPHER CTX ctx constunsignedchar key constunsignedchar iv intenc int do cipher EVP CIPHER CTX ctx unsignedchar out constunsignedchar in unsignedintinl int cleanup EVP CIPHER CTX intctx size int set asn1 parameters EVP CIPHER CTX ASN1 TYPE int get asn1 parameters EVP CIPHER CTX ASN1 TYPE int ctrl EVP CIPHER CTX inttype intarg void ptr Miscellaneousoperations void app data EVP CIPHER BIO简明指南 1 BIO在隐藏了不同类型I O接口细节的一种应用程序接口 通过BIO可以和SSL 非加密的网络连接 文件 内存等进行透明的访问两种不同类型的BIOsource sink类型数据源 数据矢filter类型当数据流过filter类型BIO的过程中 可能进行格式转换改变内容 也可能不改变内容 而仅改变BIO的内部状态BIO可组织成链的形式一个source sink类型 多个filter类型对比网络协议层 STREAMS机制通常通过一指向BIO结构的指针访问BIO接口 BIO简明指南 2 BIO的创建BIO BIO new BIO METHOD type intBIO set BIO bio BIO METHOD type 示例 BIO mem BIO new BIO s mem BIO的释放intBIO free BIO bio voidBIO vfree BIO bio voidBIO free all BIO bio BIO简明指南 3 typedefstructbio method st inttype constchar name int bwrite BIO constchar int int bread BIO char int int bputs BIO constchar int bgets BIO char int long ctrl BIO int long void int create BIO int destroy BIO long callback ctrl BIO int bio info cb BIO METHOD BIO简明指南 4 staticBIO METHODmem method BIO TYPE MEM memorybuffer mem write mem read mem puts mem gets mem ctrl mem new mem free NULL BIO简明指南 5 source sink类型BIO BIO s accept 是一个封装了类似TCP IPsocketAccept规则的接口 并且使TCP IP操作对于BIO接口是透明的BIO s connect 是一个封装了类似TCP IPsocketConne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州六盘水市六枝特区黔发城市运营(集团)有限责任公司招聘笔试历年参考题库附带答案详解
- 2025福建福州市土地房屋开发总公司聘用人员招聘1人笔试历年参考题库附带答案详解
- 2025福建省福鼎市公共交通有限公司招聘驾驶员和广告部人员拟聘用笔试历年参考题库附带答案详解
- 2025福建漳龙集团有限公司招聘6人笔试历年参考题库附带答案详解
- 2025春季内蒙古建投国电准格尔旗能源有限公司校园招聘模拟试卷及一套答案详解
- 2025福建建工集团有限责任公司校园招聘51人笔试历年参考题库附带答案详解
- 2025安顺市参加“第十三届贵州人才博览会”引才1453人模拟试卷(含答案详解)
- 2025广东省风力发电有限公司山西分公司招聘笔试历年参考题库附带答案详解
- 2025年市场化选聘宁德市金禾房地产有限公司副总经理笔试历年参考题库附带答案详解
- 2025广东深圳市龙岗区园山街道招聘聘员12人模拟试卷附答案详解
- 韩语专业教育与职场应用能力培养融合研究
- 农机推广课件
- 小儿泌尿系感染的护理
- 水电站工程碾压混凝土大坝施工方案
- 2024年大学生入党积极分子培训班考试试题及答案
- 科研项目绩效管理办法
- 安全生产 技术规范
- 2025年 山东中烟工业有限责任公司招聘考试笔试试卷附答案
- 鱼苗配送服务方案(3篇)
- 产品可追溯管理制度
- 2025高考志愿第五轮学科评估(部分)+第四轮学科评估结果Excel表格
评论
0/150
提交评论