您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 3-4:网络安全协议-传输层安全
1Internet安全体系-传输层安全2传输层安全-SSL/TLS协议•协议的目标–设计用来使用TCP提供一个可靠的端到端安全服务,为两个通讯实体(客户和服务器)之间提供保密性和完整性(身份鉴别).3传输层安全-SSL/TLS协议•协议的使用–SSL/TLS可以作为基本协议族的一个部分提供,对应用程序透明。4传输层安全-SSL/TLS协议•协议的使用5传输层安全-SSL/TLS协议•SSL/TLS发展历史–1994年,Netscape公司发布了SSL2.0协议•微软在SSL2.0基础上发布了PCT协议–1996年,Netscape公司发布了SSL3.0协议–1997年,IETF基于SSL3.0发布了TLS1.0协议•微软放弃PCT,开始支持TLS标准–1999年,RFC2246发布(TLS协议1.0)6传输层安全-SSL/TLS协议•SSL体系结构–协议分为两层•底层:SSL记录协议•上层:SSL握手协议、SSL更改密码规范协议、SSL警告协议IP协议TCP协议SSL记录协议SSL握手协议SSL更改密码规范协议SSL警告协议HTTP协议7传输层安全-SSL/TLS协议•两个主要的协议–SSL记录协议•建立在可靠的传输协议(如TCP)之上•它提供连接安全性,有两个特点–保密性,使用了对称加密算法–完整性,使用了HMAC算法•用来封装高层的协议•SSL握手协议–客户和服务器之间相互鉴别–协商加密算法和密钥–它提供连接安全性,有三个特点•身份鉴别,至少对一方实现鉴别,也可以是双向鉴别•协商得到的共享密钥是安全的,中间人不能够知道•协商过程是可靠的8传输层安全-SSL/TLS协议•更改密码规范协议–由单个字节组成,告知记录层按照当前密码规范中所指定的方式进行加密和压缩。9传输层安全-SSL/TLS协议•警告协议–警告协议将警告信息已经严重程度传递给TLS会话中的主体。–每个消息由两个字节组成。•警告级别1为警告2为致命的警告•特定警告的代码–若一方检测到一个错误,就向另一方发送消息。若是致命的,双方关闭连接。10传输层安全-SSL/TLS协议•致命警告–unexpected_message:收到意外消息–bad_record_mac:收到不正确的mac.–decomression_failure:解压缩函数收到不适当的输入(例如不能解压缩或解压缩成大于最多允许的长度)–handshake_failure:指定的选项可用时,发送者不能协商可接受的安全参数集合11传输层安全-SSL/TLS协议•其余警告:–Close_notify:通知接收方不再通过该连接发送任何消息–No_certificate:没有适当的证书可用。–Unsupported_certificate:收到证书类型不支持–Certificate_expired–Certificate_revoked12传输层安全-SSL/TLS协议•SSL的两个重要概念–SSL连接(connection)•一个连接是一个提供一种合适类型服务的传输(OSI分层的定义)–SSL会话(session)•一个SSL会话是在客户和服务器的一个关联。会话由HandshakeProtocol创建。会话定义了一组可供多个连接共享的密码安全参数•会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价13传输层安全-SSL/TLS协议•会话状态–有多个状态与每一个会话相关联–一旦一个会话建立,就存在一个读或写的当前状态14传输层安全-SSL/TLS协议•会话状态参数–Sessionidentifier:服务器选择的一个任意字节序列,用以标识一个活动的或可激活的会话状态–PeerCertificate:一个X.509.v3证书。可为空–Compressionmethod:加密前进行数据压缩的算法–Cipherspec:指明数据体加密的算法(无,或DES等)以及散列算法(如MD5或SHA-1)用以计算MAC。还包括其它参数,如散列长度–Mastersecret:48位秘密,在client与server之间共享。–Isresumable:一个标志,指明该会话是否能用于产生一个新连接15SSL记录协议SSLRecordProtocol16传输层安全-SSL/TLS协议•SSLRecordProtocol–SSLRecordProtocol为SSL连接提供两种服务•保密性。HandshakeProtocol定义一个共享的保密密钥用于对SSL有效载荷加密。•消息完整性。HandshakeProtocol定义一个共享的保密密钥用于形成MAC。17传输层安全-SSL/TLS协议应用数据分片压缩增加MAC加密增加SSL记录头18传输层安全-SSL/TLS协议•SSL记录协议中的操作–第一步,fragmentation•上层消息的数据被分片成214(16384)字节大小的块,或者更小–第二步,compression(可选)•必须是无损压缩,如果数据增加的话,则增加部分的长度不超过1024字节19传输层安全-SSL/TLS协议•第三步,MAC计算:–使用共享的密钥MAC_write_secret–hash(MAC_write_seret||pad_2||hash(MAC_write_secret||pad_1||seq_num||SSLCompressed.type||SSLCompressed.length||SSLCompressed.fragment))20传输层安全-SSL/TLS协议•第四步,加密,可供选择的加密算法:–BlockCipher•IDEA128、RC2-4040、DES-4040、DES56、3DES168、Fortezza80–StreamCipher•RC-4040、RC4-128128–采用CBC,算法由cipherspec指定–数据长度不超过214+2048字节,包括IV,初始协商指定,以后,前后记录连接起来–说明:如果是流密码算法,则不需要padding21第五步:封装成TCP数据包22传输层安全-SSL/TLS协议•SSL记录格式23传输层安全-SSL/TLS协议•SSL记录格式–ContentType;——8位,上层协议类型–Majorversion;Minnorversion——16位,主次版本–压缩长度:16位—加密后数据的长度,不超过214+2048字节–EncryptedDatafragment;——密文数据24传输层安全-SSL/TLS协议•SSL的有效载荷–ChangeCipherSpecProtocol1字节•一字节值为1,用以将挂起状态转至当前状态,导致当前加密处理包用于该连接。–AlertProtocol2字节[LevelAlert]•Level=1(warning),•Level=2(fatal),SSL将立即关闭本连接,本会话的其它连接可以继续,但不能创建新连接。•Alert=具体警告编码;如:(均为fatal的警告内容)unexpected_message、bad_record_mac25传输层安全-SSL/TLS协议•SSL的有效载荷–HandshakeProtocol26传输层安全-SSL/TLS协议•SSL握手协议的流程27传输层安全-SSL/TLS协议•SSL握手协议的流程–交换Hello消息,对于算法、交换随机值等协商一致–交换必要的密码参数,以便双方得到统一的premastersecret–交换证书和相应的密码信息,以便进行身份认证–产生mastersecret–把安全参数提供给SSL记录层–检验双方是否已经获得同样的安全参数28传输层安全-SSL/TLS协议•SSL握手协议使用的消息消息参数hello_requestNullclient_hello版本,随机数,会话id,密码参数,压缩方法server_hellocertificateX.509v3证书链server_key_exchange参数,签名certificate_request类型,CAsserver_doneNullcertificate_verify签名client_key_exchange参数,签名finishedHash值29传输层安全-SSL/TLS协议•第一阶段:建立起安全协商–客户发送一个client_hello消息,包括以下参数:•版本、随机数(32位时间戳+28字节随机序列)、会话ID、客户支持的密码算法列表(CipherSuite)、客户支持的压缩方法列表–然后,客户等待服务器的server_hello消息–服务器发送server_hello消息,参数:•客户建议的低版本以及服务器支持的最高版本、服务器产生的随机数、会话ID、服务器从客户建议的密码算法中挑出一套、服务器从客户建议的压缩方法中挑出一个30传输层安全-SSL/TLS协议•第一阶段:建立起安全协商31传输层安全-SSL/TLS协议•第二阶段:服务器鉴别和密钥交换32传输层安全-SSL/TLS协议•第三阶段:客户鉴别和密钥交换33•第四阶段:结束34传输层安全-SSL/TLS协议•密钥交换算法–SSL记录协议需要:CipherSuite,mastersecret,andtheclientandserverrandomvalues–在hello消息中,交换随机数以及各种算法–两类密钥交换算法:•RSA,客户产生一个48字节的pre_master_secret,然后通过服务器的公钥传递给服务器•Diffie-Hellman,双方协商得到的密钥被用作pre_master_secret–对于各种密钥交换算法,从pre_master_secret计算得到master_secret,然后从内存中删除–Master_secret总是48字节长,而pre_master_secret长度不定,取决于密钥交换算法35传输层安全-SSL/TLS协议•Master_secret的产生–对于所有的密钥交换算法,使用相同的算法将pre_master_secret转换master_secret。–master_secret=PRF(pre_master_secret,mastersecret,ClientHello.random‖ServerHello.random)[0..47];36传输层安全-SSL/TLS协议•伪随机函数PRF(secretlabel,seed)–PRF(secret,label,seed)=P_MD5(S1,label‖seed)XORP_SHA-1(S2,label‖seed)–这里,S1和S2为secret的各一半,如果secret为奇数个字节,则S1和S2共享一个字节37传输层安全-SSL/TLS协议•伪随机函数PRF(secretlabel,seed)–P_hash(secret,seed)=HMAC_hash(secret,A(1)‖seed)HMAC_hash(secret,A(2)‖seed)HMAC_hash(secret,A(3)‖seed)‖...–A(0)=seed,–A(i)=HMAC_hash(secret,A(i-1))可以多次重复使用P_hash,直到产生足够长的数据。38传输层安全-SSL/TLS协议•密钥材料的生成算法–客户写MAC密码,服务器写MAC密码,客户写密钥,服务器写密钥,客户写IV,服务器写IV•key_block=PRF(SecurityParameters.master_secret,“keyexpansion”,SecurityParameters.server_random‖SecurityParameters.client_random);直到产生足够的输出。39传输层安全-SSL/TLS协议•重用一个SSL会话–客户和服务器在交换hello消息中,客户要求重用已有的SSL会话,服务器同意使用cache中的会话–跳过第二第三阶段,直接把SSL会话中的参数传递给SSL记录层40?
本文标题:3-4:网络安全协议-传输层安全
链接地址:https://www.777doc.com/doc-3415219 .html