PKI理论与技术(第7章安全协议与安全接口)Instructor:HouMengbo侯孟波Email:houmb@sdu.edu.cnOffice:InformationSecurityResearchOffice.MainBuildingRoom535ofSDU(SouthSection)ComputerScience&TechnologySchoolofShandongUniversityShanDongUniversityComputerSchoolCopyrightDannyHou2第7章安全协议与安全接口Protocols:SSL/TLS、WTLS、SETIPSEC、S/MIME、PGPSSH、SPKI、SSOAPIs:MS-CryptoAPI、CDSAGSS-API、OpenSSL……ShanDongUniversityComputerSchoolCopyrightDannyHou3内容目录(1)SSL/TLSSecureSocketLayer/TransportLayerSecurity(2)IPSECIPSecurity(3)SETSecureElectronicTransaction(4)S/MIMESecure/MultipurposeInternetMailExtensions(5)PGPPrettyGoodPrivacy(6)WTLS*WirelessTransportLayerSecurity(7)SSHSecureSHell(8)SPKI*SimplePublicKeyInfrastructure(9)SSOSingleSignOn(10)MS-CryptoAPI(11)CDSA*CommonDataSecurityArchitecture(12)GSS-API*GenericSecurityServicesAPI(13)OpenSSL第一部分SSL/TLS协议(RFC2246、3546)ShanDongUniversityComputerSchoolCopyrightDannyHou5第一部分SSL/TLS协议•SSL(SecureSocketLayer)是一种在两个端实体(EndEntity)之间提供安全通道的协议。•它具有保护传输数据以及识别通信实体的功能。•安全通道是透明的•IETF制定的TLS(TransportLayerSecurity)版本是对Nescape公司的SSL和Microsoft公司的PCT(PrivateCommunicationTechnology)两个协议的综合和兼容。•本文重点讨论SSL协议ShanDongUniversityComputerSchoolCopyrightDannyHou6SSL/TLS协议设计目标•SSLV2设计目标–为满足WEB安全通信而设计–提供客户和服务器之间传输数据的保密性–服务器认证(客户端认证可选)•SSLV3设计目标–修正SSLV2中存在的多处安全问题–设计一种安全磋商多种加密算法的机制ShanDongUniversityComputerSchoolCopyrightDannyHou7SSL提供了什么•SSL提供了通道级别的安全:连接的两端知道所传输的数据是保密的,而且没有被篡改•几乎总是要对服务器进行认证•可选的客户端认证•针对异常情况的安全通知–错误警示–关闭连接•所有这些依赖于某些对系统的假定–假定已经正确产生了密钥数据并且–该密钥已被安全地保管ShanDongUniversityComputerSchoolCopyrightDannyHou8SSL与TCP/IP•SSL连接非常类似于“保密的”的TCP连接•位于TCP之上,应用层之下•几乎只能在TCP上运行,而不能在UDP或IP上运行,因而它依赖于可靠的传输协议•微软的STLP和无线应用论坛的WTLS均为意图在数据报传输层(如UDP)上正确工作的变种。ShanDongUniversityComputerSchoolCopyrightDannyHou9SSL变种谱系树SSLV1(1994)未发布SSLV2(1994)第一版SSLV3(1995)TLS(1997-1999)PCT(1995)STLP(1996)WTLS(1998)ShanDongUniversityComputerSchoolCopyrightDannyHou10用于WEB的SSL•保护使用HTTP的WEB通信•新的URLhttps://•在浏览器中的表现–NETSCAPE:工具条上会显示一把钥匙–IE:右下角显示一把锁•几乎所有的商业WEB服务器和浏览器都实现了内置的SSL协议,通过配置即可使用ShanDongUniversityComputerSchoolCopyrightDannyHou11在SSL上构建一切•除了HTTP和NNTP(SNEWS)外,还可以用于SMTP、Telnet、FTP等,也可用于保护专有协议。•协议端口标准化•协议实现–OPENSSL(C语言实现)–pureTLS(java实现)–ApacheSSL(针对Apache服务器的实现)–Mod_sslShanDongUniversityComputerSchoolCopyrightDannyHou12两个主要的协议•SSL记录协议–建立在可靠的传输协议(如TCP)之上–它提供连接安全性,有两个特点•保密性,使用了对称加密算法•完整性,使用HMAC算法–用来封装高层的协议•SSL握手协议–客户和服务器之间相互鉴别–协商加密算法和密钥–它提供连接安全性,有三个特点•身份鉴别,至少对一方实现鉴别,也可以是双向鉴别•协商得到的共享密钥是安全的,中间人不能够知道•协商过程是可靠的ShanDongUniversityComputerSchoolCopyrightDannyHou13SSL的两个重要概念•SSL连接(connection)–一个连接是一个提供一种合适类型服务的传输(OSI分层的定义)。–SSL的连接是点对点的关系。–连接是暂时的,每一个连接和一个会话关联。•SSL会话(session)–一个SSL会话是在客户与服务器之间的一个关联。会话由HandshakeProtocol创建。会话定义了一组可供多个连接共享的密码安全参数。–会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价。ShanDongUniversityComputerSchoolCopyrightDannyHou14SSL基础-针对RSA服务器认证的SSL•SSL灵活性:–单向认证和双向认证认证+加密和认证–加密算法:RSADSSDHFORTEZZA……•连接分为两个节段:–握手阶段完成对服务器认证并建立加密密钥–数据传输阶段加密数据传输ShanDongUniversityComputerSchoolCopyrightDannyHou15握手协议•握手阶段的目的–客户和服务器协商保护数据的算法(及其具体参数)–确立在协商好的算法上使用的加密密钥–可选择对客户端进行认证clientserver----------------------------------------------------------------------------(1)所支持的加密算法,随机数(2)选中的加密算法,随机数,服务器证书(3)加密后的pre_master_secret(4)计算相关演化密钥计算相关演化密钥(5)握手消息的MAC值(6)握手消息的MAC值注:1.pre_master_secret可以由KDF(keyderivationfunction)演化出master_secret,最后再通过master_secret演化出系列加密密钥。2.最后两步防止握手本身遭受篡改(如低强度密码算法替换等).3.客户端和服务器端随机数的传输,防止重放攻击。ShanDongUniversityComputerSchoolCopyrightDannyHou16握手消息clientserver----------------------------------------------------------------------------握手:ClientHello握手:ServerHelloCertificate……ServerHelloDoneClientKeyExchange……(ChangeCipherSpec)Finished……(ChangeCipherSpec)FinishedShanDongUniversityComputerSchoolCopyrightDannyHou17SSL记录协议•实际的数据传输是使用SSL记录协议实现的•数据流分割成一系列片段并加以传输,每个片断单独保护和传输•为实现完整性保护,对片段进行MAC保护•为实现机密性保护,对片段进行加密保护•传输的是安全记录ShanDongUniversityComputerSchoolCopyrightDannyHou18记录头(Head)•ContentType;——8位,上层协议类型•Majorversion;Minnorversion——16位,主次版本•CompressedLength:16位—加密后数据的长度,不超过214+2048字节(SSL几乎不用压缩,虽然支持)•EncryptedDatafragment;——密文数据ShanDongUniversityComputerSchoolCopyrightDannyHou19记录负荷(Payload)•支持4种协议消息:application_data、alert、handshake、change_cipher_spec.•Alert协议消息:报警等级(warning/fatal)+具体报警编码2字节•change_cipher_spec协议消息:1字节,将挂起状态变成当前状态,指示在此之后的所有消息都将使用刚刚商定的密码进行加密。•handshake协议消息:类型(1字节)+长度(3字节)+消息,类型共10种ShanDongUniversityComputerSchoolCopyrightDannyHou20完整SSL会话握手协议•交换Hello消息,对于算法、交换随机值等协商一致•交换必要的密码参数,以便双方得到统一的premastersecret•交换证书和相应的密码信息,以便进行身份认证•产生mastersecret•把安全参数提供给SSL记录层•检验双方是否已经获得同样的安全参数ShanDongUniversityComputerSchoolCopyrightDannyHou21ShanDongUniversityComputerSchoolCopyrightDannyHou22第一阶段:建立起安全协商•客户发送一个client_hello消息,包括以下参数:版本、随机数(32位时间戳+28字节随机序列)、会话ID、客户支持的密码算法列表(CipherSuite)、客户支持的压缩方法列表.然后,客户等待服务器的server_hello消息•服务器发送server_hello消息,参数:客户建议的低版本以及服务器支持的最高版本、服务器产生的随机数、会话ID、服务器从客户建议的密码算法和压缩方法中确定一套本次连接使用的确定方法.ShanDongUniversityComputerSchoolCopyrightDannyHou23CipherSuite•指定了密钥交换的方法,SSL支持以下一些方法:–RSA,要求服务器提供一个RSA证书–DH(Diffie-Hellman),要求服务器的证书中包含了由CA签名的DH公开参数。客户或者在证书中提供DH公开参数,或者在密钥交换消息中提供此参数–EDH(EphemeralDiffie-Hellman),产生临时的密钥,DH公开参数由发送者的私钥进行签名,接收者用对应的公钥进行验证–匿名的DH,不加鉴别。会受到中间人攻击•然后,指定以下信息–加密算法和类型(流还是分组密码算法)–HMA