TLS记录协议中的操作(续) 网络安全 NETWORK SECURITY 第四步,encryption ■采用密码块链接(CBC)加密,算法由cipher spec参数指定 数据长度不超过214+2048字节,包括 >加密之后的数据内容 HMAC >padding,padding_length ■1 V,初始协商指定,以后,前后记录连接起来 ■说明:如果是流密码算法, 则不需要padding Time =1 Time=2 Time=N DES DES DES Encrypt Encrypt Encrypt 22
22 22 TLS记录协议中的操作(续) • 第四步,encryption n 采用密码块链接(CBC) 加密,算法由cipher spec参数指定 n 数据长度不超过214+2048字节,包括 Ø 加密之后的数据内容 Ø HMAC Ø padding, 共padding_length n IV,初始协商指定,以后,前后记录连接起来 n 说明:如果是流密码算法,则不需要padding
TLS记录协议的处理结果 网络安全 NETWORK SECURITY 结果如下: struct ContentType type;一一8位,上层协议类型 ProtocolVersion version; 一一16位,主次版本 uint161 ength;一一加密后数据的长度, 不超过214+2048字节 EncryptedData fragment; 密文数据 TLSCiphertext; Content Major Minor Compressed Type Version Version Length Plaintext pajdkou3 (optionally compressed) MAC (0,16,or 20 bytes 888888888888888888888
23 23 TLS记录协议的处理结果 • 结果如下: struct { ContentType type; —— 8位,上层协议类型 ProtocolVersion version; —— 16位,主次版本 u i n t 1 6 l e n g t h ; — — 加 密 后 数 据 的 长 度 , 不超过214+2048字节 EncryptedData fragment; —— 密文数据 } TLSCiphertext;
TLS密码变化协议 网络安全 NETWORK SECURITY ·它位于TLS记录协议之上 ■所以,它用到了TLS记录协议的处理过程 ■ContentType=20 ■协议只包含一条消息,一个字节1 ■ 用途:切换状态 把密码参数设置为当前状态 1 byte 在握手协议中,当安全参数 1 协商一致后,发送此消息 ■这条消息使得接收方改变当 Change Cipher Spec Protocol 前状态读参数,使得发送方 改变当前状态写参数 24
24 24 TLS密码变化协议 • 它位于TLS记录协议之上 n 所以,它用到了TLS记录协议的处理过程 n ContentType = 20 n 协议只包含一条消息,一个字节 1 n 用途:切换状态 把密码参数设置为当前状态 在握手协议中,当安全参数 协商一致后,发送此消息 n 这条消息使得接收方改变当 前状态读参数,使得发送方 改变当前状态写参数
TLS警告协议 网络安全 NETWORK SECURITY ● 位于TLS记录协议之上 ■所以,也用到了TLS记录协议的处理过程 ■ ContentType 21 ■ 协议数据包含两个字节 第一个字节为level: 分别为warning(1)和 1 byte 1 byte fatal(2)两种情况 Level Alert 第二个字节为情况说明 ■Fatal类型的alert消息导致 Alert Protocol 连接立即终止,此时,对应 该会话的其他连接可以继续, 但是会话标识符无效,以免 利用此失败的连接来建立新 的连接 25
25 25 TLS警告协议 • 位于TLS记录协议之上 n 所以,也用到了TLS记录协议的处理过程 n ContentType = 21 n 协议数据包含两个字节 第一个字节为level: 分别为warning(1)和 fatal(2)两种情况 第二个字节为情况说明 n Fatal类型的alert消息导致 连接立即终止,此时,对应 该会话的其他连接可以继续, 但是会话标识符无效,以免 利用此失败的连接来建立新 的连接
Alert Protocol第二字节说明 网络安全 close_notify(0), access_denied(49)NETWORK SECuRITY unexpected_message(10), decode_error(50), bad record mac(20), decrypt_error(51), decryption_failed(21), export_restriction(60), record_overflow(22), protocol_version(70), insufficient_security(71), decompression failure(30), internal_error(80), handshake_failure(40), user_canceled(90), bad_certificate(42), no_renegotiation(100),# unsupported_certificate(43),说明 certificate_revoked(44), 1*表示该消息往往是fatal级别 certificate_expired(45), 2#表示该消息往往是warning:级别 certificate_unknown(46), 3对于其他的错误情况,发送方可以 根据情况决定是warning.还是fatal, illegal_parameter(47), 对于warning消息,接收方可以自行 unknown ca(48), 决定如何处理,如果是fatal消息, 则一定要当作fatal消息来对待 26
26 26 Alert Protocol第二字节说明 close_notify(0), unexpected_message(10), bad_record_mac(20),* decryption_failed(21),* record_overflow(22), * decompression_failure(30),* handshake_failure(40),* bad_certificate(42), unsupported_certificate(43), certificate_revoked(44), certificate_expired(45), certificate_unknown(46), illegal_parameter(47),* unknown_ca(48), * access_denied(49), decode_error(50),* decrypt_error(51), export_restriction(60), * protocol_version(70), * insufficient_security(71), * internal_error(80), * user_canceled(90), # no_renegotiation(100), # 说明: 1 * 表示该消息往往是fatal级别 2 # 表示该消息往往是warning级别 3 对于其他的错误情况,发送方可以 根据情况决定是warning还是fatal, 对于warning消息,接收方可以自行 决定如何处理,如果是fatal消息, 则一定要当作fatal消息来对待