Internet安全协议与标准课PPT课件.ppt_第1页
Internet安全协议与标准课PPT课件.ppt_第2页
Internet安全协议与标准课PPT课件.ppt_第3页
Internet安全协议与标准课PPT课件.ppt_第4页
Internet安全协议与标准课PPT课件.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020 3 20 Internet安全协议与标准第6课 唐礼勇博士tly 2020 3 20 SSL协议及OpenSSL 2020 3 20 可编辑 Page 3 Agenda SSL协议基础OpenSSL简介 2020 3 20 可编辑 Page 4 SSL是什么 SSL SecureSocketLayer 安全套接层 一种在两台机器间提供安全通道的协议 两项功能保护传输数据识别通信机器安全通道是透明的对传输的数据内容上不加变更 仅作了加密透明性使得几乎所有基于TCP的协议稍加改动就可以在SSL上运行 2020 3 20 可编辑 Page 5 为什么叫这个名字 比较BerkeleysocketsAPI SocketsAPIintsocket int int int intconnect int conststructsockaddr int ssize twrite int constvoid size t ssize tread int void size t OpenSSLSSL SSL new SSL CTX intSSL connect SSL intSSL write SSL char int intSSL read SSL char int 2020 3 20 可编辑 Page 6 SSL在协议栈中的位置 2020 3 20 可编辑 Page 7 SSL谱系树 SSLv1 1994 未发布 SSLv2 1994 第一版 SSLv3 1995 只进行认证的模式 DH DSS 关闭握手 再握手 证书链 TLS 1997 1999 IETF 必须支持DH DSS 新的MAC算法 新的密钥扩展 PCT 1995 只进行认证的模式 再握手 证书链 STLP 1996 共享密钥认证数据及一些性能上的优化 WTLS 1998 WAP论坛对无线协议的支持 2020 3 20 可编辑 Page 8 SSL协议的使用 用于Web的SSL在SSL上构建一切ftps data 989 ftps 990 nntps 563 pop3s 995 telnets 992 2020 3 20 可编辑 Page 9 SSL体系结构 1 还记得TSP吗 Alice Bob 2020 3 20 可编辑 Page 10 SSL体系结构 2 2020 3 20 可编辑 Page 11 SSL基本概念 连接会话由握手协议创建定义了一组可以被多个连接共用的密码安全参数连接vs会话在任意一对的双方之间 也许会有多个安全连接理论上 双方可以存在多个同时会话 但在实践中并未用到这个特性 2020 3 20 可编辑 Page 12 会话状态参数 2020 3 20 可编辑 Page 13 连接状态参数 2020 3 20 可编辑 Page 14 各种密钥 pre master secret 2020 3 20 可编辑 Page 15 SSL握手协议报文格式 2020 3 20 可编辑 Page 16 2020 3 20 可编辑 Page 17 CipherSuiteAlternatives DataEncryption AESRC2 40RC4 128DESDES403DESIDEAFortezzaMessageDigest MD5SHA KeyExchange RSAFixedDiffie HellmanEphemeralDiffie HellmanAnonymousDiffie HellmanFortezzaDataCompression PKZipWinZipgzipStuffIt 2020 3 20 可编辑 Page 18 密钥导出 2020 3 20 可编辑 Page 19 重用SSL会话 2020 3 20 可编辑 Page 20 SSL ChangeCipherSpec及Alert ChangeCipherSpecProtocol指示在此之后的所有消息都将使用刚刚商定的密码进行加密单个报文 报文值为1AlertProtocol允许一方向另一方报告异常情况close nitify警示用来指示发送方已经发送了所有要在该连接上发送的数据 2020 3 20 可编辑 Page 21 一次真实的连接 Client Server 2020 3 20 可编辑 Page 22 各种消息协同工作 应用数据 Alert 握手 change cipher spec 记录层 TCP 2020 3 20 可编辑 Page 23 SSL记录协议如何操作 1 2020 3 20 可编辑 Page 24 SSL记录协议如何操作 2 2020 3 20 可编辑 Page 25 SSL记录协议如何操作 3 2020 3 20 可编辑 Page 26 SSL记录协议MAC计算 2020 3 20 可编辑 Page 27 SSL记录协议加密 2020 3 20 可编辑 Page 28 SSL记录协议封装 2020 3 20 可编辑 Page 29 SSL的安全 1 SSL提供了什么SSL提供了通道级别的安全 连接的两端知道所传输的数据是保密的 而且没有被篡改几乎总是要对服务器进行认证可选的客户端认证针对异常情况的安全通知错误警示关闭连接所有这些依赖于某些对系统的假定假定已经正确产生了密钥数据并且该密钥已被安全地保管 2020 3 20 可编辑 Page 30 SSL的安全 2 保护master secret几乎协议的所有安全都依赖于master secret的保密在内存中保护秘密保护服务器的私有密钥最常被违反的规则 很难保证做到要求安全地存储私有密钥多数实现都对磁盘上的私有密钥进行加密 而且提供口令保护其他实现在受保护的硬件中存储密钥上述两种方案在启动服务器时都要求管理员的介入 从而使得在系统崩溃或电力故障恢复时无法实现无人看管的重新启动使用良好的随机数生成器 2020 3 20 可编辑 Page 31 使用SSL进行设计 1 不同应用结合 SSL本身毫无用处 了解要保证什么样的安全没有必要让SSL来提供所有的安全服务 保密性在大多数应用中保密性都是有用的消息完整性对是否使用本项功能应不存在疑问消息完整性不是可有可无的服务器认证惟一不需要服务器认证的SSL模式为匿名DH模式几乎所有的SSL应用都要求服务器证书客户端认证使用SSL往往将用户锁定在使用基于证书的服务器模式许多应用协议均集成了自己的客户端认证机制 2020 3 20 可编辑 Page 32 使用SSL进行设计 2 客户端认证 用户名 口令SSL可以阻止线路嗅探但不能防止反复猜测口令用户名 口令的变种S Key SecureID在使用SSL的环境中没有什么优势在既有非安全连接又有安全连接的环境中 还是有用的SSL客户端认证可操作性方面比服务器认证困难 操作负担大另一个附加问题是将证书映射为用户标识经验法则在大多数情况下 提供用户名 口令认证更容易一些口令更易于与其他基础设施集成在一起 也易于被用户理解 2020 3 20 可编辑 Page 33 使用SSL进行设计 3 引用完整性 服务器身份要确保SSL安全连接的安全就必须验证服务器的身份不仅要对服务器的证书进行验证 还要验证这个服务器就是你期望与之交互的服务器需要掌握所期望的关于服务器身份的信息 通常以服务器域名的形式出现安全属性出于安全的原因 客户端需要验证连接属性是否符合其安全期望需要有指示要求使用SSL安全连接的实施一般应在客户端完成 2020 3 20 可编辑 Page 34 使用SSL进行设计 4 不适合的任务 不可抵赖性 Nonrepudiation 无法使用SSL来完成的一种常见任务就是提供数据的不可抵赖性SSL连接上传送的数据无法拿给任何别的人看 也不能让他人在SSL这外对内容进行验证端到端安全由于SSL握手是交互性的 因此不可能向无法同其建立网络连接的机器发送加密或鉴别数据SSL在任何涉及以先存储对象并保持其加密属性的不变 而后又加以恢复 验证的方式 来保护对象的任务时表现很差邮件就是一个很典型的例子 2020 3 20 可编辑 Page 35 使用SSL进行设计 5 协议的选择 如何同时运行同一种应用协议的安全与非安全版本两个要求必须能够明确区分安全与非安全连接没有安全意识的客户端与服务器必须能够正确地与有安全意识的客户端和服务器进行互操作两种协议选择方案独立端口http80 https443 pop3110 pop3s995stunnel是一个很好的SSL工具磋商升级SMTP STARTTLS 2020 3 20 可编辑 Page 36 Agenda SSL协议基础OpenSSL简介 2020 3 20 可编辑 Page 37 OpenSSL是什么 一套密码学工具箱 实现了SSLv2 v3 TLSv1以及与SSL TLS相关的若干密码标准不仅仅是SSL加密算法库Hash算法库数字签名算法库X 509证书处理库CA工具库SSL处理库EVP算法封装库BIO抽象I O封装库openssl工具包 2020 3 20 可编辑 Page 38 OpenSSL包括些什么 源代码形如openssl 0 9 7b tar gz编译后的版本C语言包含文件如 include两个动态共享库Win32下libeay32 dllssleay32 dllLinux Unix FreeBSD下libcrypto solibssl so可执行文件openssl exe 2020 3 20 可编辑 Page 39 OpenSSL命令行工具 TheopensslprogramisacommandlinetoolforusingthevariouscryptographyfunctionsofOpenSSL scryptolibraryfromtheshell ItcanbeusedforCreationofRSA DHandDSAkeyparametersCreationofX 509certificates CSRsandCRLsCalculationofMessageDigestsEncryptionandDecryptionwithCiphersSSL TLSClientandServerTestsHandlingofS MIMEsignedorencryptedmail 2020 3 20 可编辑 Page 40 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 2020 3 20 可编辑 Page 41 OpenSSL标准命令 2 Dsaparam DSAParameterGeneration Enc EncodingwithCiphers Errstr ErrorNumbertoErrorStringConversion Dhparam GenerationandManagementofDiffie HellmanParameters Gendh GenerationofDiffie HellmanParameters Obsoletedbydhparam Gendsa GenerationofDSAParameters Genrsa GenerationofRSAParameters 2020 3 20 可编辑 Page 42 OpenSSL标准命令 3 Ocsp OnlineCertificateStatusProtocolutility Passwd Generationofhashedpasswords Pkcs7 PKCS 7DataManagement Rand Generatepseudo randombytes Req X 509CertificateSigningRequest CSR Management Rsa RSADataManagement Rsautl RSAutilityforsigning verification encryption anddecryption 2020 3 20 可编辑 Page 43 OpenSSL标准命令 4 s client ThisimplementsagenericSSL TLSclientwhichcanestablishatransparentconnectiontoaremoteserverspeakingSSL TLS It sintendedfortestingpurposesonlyandprovidesonlyrudimentaryinterfacefunctionalitybutinternallyusesmostlyallfunctionalityoftheOpenSSLssllibrary 2020 3 20 可编辑 Page 44 OpenSSL标准命令 5 s server ThisimplementsagenericSSL TLSserverwhichacceptsconnectionsfromremoteclientsspeakingSSL TLS It sintendedfortestingpurposesonlyandprovidesonlyrudimentaryinterfacefunctionalitybutinternallyusesmostlyallfunctionalityoftheOpenSSLssllibrary ItprovidesbothanowncommandlineorientedprotocolfortestingSSLfunctionsandasimpleHTTPresponsefacilitytoemulateanSSL TLS awarewebserver 2020 3 20 可编辑 Page 45 OpenSSL应用程序接口 底层函数加密 解密大整数运算 公开密钥算法消息摘要文件I O SocketsI O MemoryI OASN 1 PKCSEVP密码算法封装BIOI O封装SSLPEM 2020 3 20 可编辑 Page 46 OpenSSL函数调用方法 直接调用相关函数如可以直接调用MD5 DES等算法实现的底层函数通过抽象接口类似于面向对象的多态EVPBIO 2020 3 20 可编辑 Page 47 EVP系列 一系列封装了openssl加密库中所有加密算法的函数 通过这样的统一的封装 使得只需要在初始化参数的时候做很少的改变 就可以使用相同的代码但采用不同的加密算法进行数据的加密和解密 公开密码算法EVP Seal EVP Open 数字签名算法EVP Sign EVP Verify 对称加密算法EVP Encrypt 信息摘要算法EVP Digest 信息编码算法EVP Encode 2020 3 20 可编辑 Page 48 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 2020 3 20 可编辑 Page 49 BIO简明指南 1 BIO 抽象IO接口 BIO在隐藏了不同类型I O接口细节的一种应用程序接口 通过BIO可以和SSL 非加密的网络连接 文件 内存等进行透明的访问两种不同类型的BIOsource sink类型数据源 数据矢filter类型当数据流过filter类型BIO的过程中 可能进行格式转换改变内容 也可能不改变内容 而仅改变BIO的内部状态BIO可组织成链的形式一个source sink类型 多个filter类型对比网络协议层 STREAMS机制通常过一指向BIO结构的指针访问BIO接口 2020 3 20 可编辑 Page 50 BIO简明指南 2 BIO的创建和释放 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 2020 3 20 可编辑 Page 51 BIO简明指南 3 BIO METHOD结构 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 2020 3 20 可编辑 Page 52 BIO简明指南 4 BIO METHOD结构示例 staticBIO METHODmem method BIO TYPE MEM memorybuffer mem write mem read mem puts mem gets mem ctrl mem new mem free NULL 2020 3 20 可编辑 Page 53 BIO简明指南 5 source sink类型BIO BIO s accept 是一个封装了类似TCP IPsocketAccept规则的接口 并且使TCP IP操作对于BIO接口是透明的BIO s connect 是一个封装了类似TCP IPsocketConnect规则的接口 并且使TCP IP操作对于BIO接口是透明的BIO s bio 封装了一个BIO对 数据从其中一个BIO写入 从另外一个BIO读出BIO s fd 是一个封装了文件描述符的BIO接口 提供类似文件读写操作的功能BIO s file 封装了标准的文件接口的BIO 包括标志的输入输出设备如stdin等BIO s mem 封装了内存操作的BIO接口 包括了对内存的读写操作BIO s null 返回空的sink型BIO接口 写入这种接口的所有数据读被丢弃 读的时候总是返回EOFBIO s socket 封装了socket接口的BIO类型 2020 3 20 可编辑 Page 54 BIO简明指南 6 filter类型BIO BIO f base64 封装了base64编码方法的BIO 写的时候进行编码 读的时候解码BIO f buffer 封装了缓冲区操作的BIO 写入该接口的数据一般是准备传入下一个BIO接口的 从该接口读出的数据一般也是从另一个BIO传过来的 BIO f cipher 封装了加解密方法的BIO 写的时候加密 读的时候解密BIO f md 封装了信息摘要方法的BIO 通过该接口读写的数据都是已经经过摘要的 BIO f null 一个不作任何事情的BIO 对它的操作都简单传到下一个BIO去了 相当于不存在 BIO f ssl 封装了openssl的SSL协议的BIO类型 也就是为SSL协议增加了一些BIO操作方法 2020 3 20 可编辑 Page 55 BIO简明指南 7 BIO基本操作 intBIO read BIO b void data intlen intBIO gets BIO bp char buf intsize intBIO write BIO b constvoid data intlen intBIO puts BIO bp constchar buf longBIO ctrl BIO b intcmd longlarg void parg intBIO reset BIO b intBIO seek BIO b intofs intBIO tell BIO b intBIO flush BIO b intBIO eof BIO b intBIO set close BIO b longflag intBIO get close BIO b 2020 3 20 可编辑 Page 56 BIO简明指南 8 BIO链操作 BIO BIO push BIO b BIO append BIO BIO pop BIO b 示例 假设md1 md2是digest类型的BIO b64是Base64类型的BIO 而f是file类型的BIOBIO push b64 f 将形成一条链b64 f再运行BIO push md2 b64 BIO push md1 md2 就会形成一条md1 md2 b64 f的BIO链 2020 3 20 可编辑 Page 57 BIO示例 1 内存型BIO 创建一个内存型BIO并写入数据BIO mem BIO new BIO s mem BIO puts mem HelloWorld n 创建一个只读的内存型BIOchardata HelloWorld BIO mem mem BIO new mem buf data 1 2020 3 20 可编辑 Page 58 BIO示例 2 base64编码 将字符串 HelloWorld n 进行base64编码并写入到标准输出BIO bio b64 charmessage HelloWorld n b64 BIO new BIO f base64 bio BIO new fp stdout BIO NOCLOSE bio BIO push b64 bio BIO write bio message strlen message BIO flush bio BIO free all bio 2020 3 20 可编辑 Page 59 BIO示例 3 base64解码 将base64编码的数据从标准输入设备并解码后输出到标准输出BIO bio b64 bio out charinbuf 512 intinlen b64 BIO new BIO f base64 bio BIO new fp stdin BIO NOCLOSE bio out BIO new fp stdout BIO NOCLOSE bio BIO push b64 bio while inlen BIO read bio inbuf sizeof inbuf 0 BIO write bio out inbuf inlen BIO free all bio 2020 3 20 可编辑 Page 60 BIO示例 4 MessageDigest I 从摘要类型BIO读数据BIO bio mdtmp charbuf 1024 intrdlen bio BIO new file file rb mdtmp BIO new BIO f md BIO set md mdtmp EVP sha1 bio BIO push mdtmp bio mdtmp BIO new BIO f md BIO set md mdtmp EVP md5 bio BIO push mdtmp bio do rdlen BIO read bio buf sizeof buf 可以在这里面加入处理数据的代码 while rdlen 0 2020 3 20 可编辑 Page 61 BIO示例 5 MessageDigest II 从BIO链中读取摘要并输出 可同上例配合 unsignedcharmdbuf EVP MAX MD SIZE intmdlen inti mdtmp bio 这里假设BIO已经设置好了 do EVP MD md mdtmp BIO find type mdtmp BIO TYPE MD if mdtmp break BIO get md mdtmp 2020 3 20 可编辑 Page 62 BIO示例 6 SSL客户端 I includeintmain BIO sbio out intlen chartmpbuf 1024 SSL CTX ctx SSL ssl ERR load crypto strings ERR load SSL strings OpenSSL add all algorithms ctx SSL CTX new SSLv23 client method 通常应该在这里设置一些验证路径和模式等 因为这里没有设置 所以该例子可以跟使用任意CA签发证书的任意服务器建立连接 sbio BIO new ssl connect ctx BIO get ssl sbio 2020 3 20 可编辑 Page 63 BIO示例 7 SSL客户端 II 不需要任何重试请求 SSL set mode ssl SSL MODE AUTO RETRY 这里你可以添加对SSL的其它一些设置 BIO set conn hostname sbio localhost 4433 out BIO new fp stdout BIO NOCLOSE if BIO do connect sbio 0 fprintf stderr Errorconnectingtoserver n ERR print errors fp stderr if BIO do handshake sbio 0 fprintf stderr ErrorestablishingSSLconnection n ERR print errors fp stderr 这里可以添加检测SSL连接的代码 得到一些连接信息 BIO puts sbio GET HTTP 1 0 n n for len BIO read sbio tmpbuf 1024 if len 0 break BIO write out tmpbuf len BIO free all sbio BIO free out 2020 3 20 可编辑 Page 64 BIO示例 8 SSL服务器端 I includeintmain BIO sbio bbio acpt out intlen chartmpbuf 1024 SSL CTX ctx SSL ssl ERR lo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论