TLS 1.3包括3个子协议——alert、handshake、record handshake协议负责协商使用的TLS版本、加密算法、哈希算法、密钥材料和其他与通信过程有关的信息,对服务器进行身份认证,对客户端进行可选的身份认证,最后对整个握手阶段信息进行完整性校验以防范中间人攻击,是整个TLS协议的核心。 record协议负责对接收到的报文进行加密解...
} HandshakeType;/*定义handshake消息类型*/struct{HandshakeType msg_type;/*Handshake消息类型*/uint24 length;/*消息长度*/select (HandshakeType){casehello_request: HelloRequest;caseclient_hello: ClientHello;caseserver_hello: ServerHello;casecertificate: Certificate;caseserver_key_exchange: ServerKeyExchange...
客户端首先发送包含支持的协议版本、加密套件、压缩算法、随机数和扩展字段的`client_hello`。服务器回应`server_hello`,选择协议版本、加密套件,并附带服务器证书和随机数。客户端验证证书后,通过计算随机数生成`Pre-master`并加密发送给服务器。接着,双方交换`change_cipher_spec`和`encrypted_handshak...
服务器接收到这些信息后,解密并确认无误,双方便可以利用协商的session secret开始加密通信的加密密钥交换。服务器生成一个加密的encrypted_handshake_message,用此密钥加密后发送给客户端,握手过程至此完成。在某些情况下,双向认证可能进行,客户端用私钥加密certificate_verify_message,确保通信的安全。为了...
对于Alert 的消息处理比较特殊,不能进行分片。 application data:对TLS协议不可见,所以没有对应的处理规则。 handshake message:握手信息,传输数据中间不能夹杂其他信息。 加密解密使用AEAD,使用AEAD加密机制和协商出来的加密算法对消息报文进行加密 。 AEADEncrypted = AEAD-Encrypt(write_key(即加密密钥), nonce, plain...
TLS 1.3 去掉了 ChangeCipherSpec ,这样record之上有3个协议:handshake,alert,application data 1. record层的密码学保护的改动 由于只保留了aead,所以不需要MAC key了。 aead的具体参数用法也有调整,前文有。 KDF 换成了标准的HKDF,有2种 tls_kdf_sha256, tls_kdf_sha384 ...
TLS协议分析 (五) handshake协议 证书与密钥交换 5.4. handshake — Server Certificate 当服务器确定了CipherSuite后,根据CipherSuite里面的认证算法,如果需要发送证书给客户端,那么就发送 Server Certificate消息给客户端。Server Certificate总是在ServerHello之后立即发送,所以在同一个RTT里。
从抓包到的结果来看,本机上使用的TLS版本为1.2,出现的TLS握手层协议有密码切换协议(Change Cipher Spec)、警告协议(Alert)、握手协议(Handshake)、应用数据协议(Application Data)四种。每个TCP数据表可能包含多个TLS数据包,每个TLS数据包之间用TLS记录层规则进行界线划分,且每个TLS记录层数据包中只能包含一个TLS握手层...
服务器回复 Alert,错误描述是:Illegal Parameter -> 握手失败,终端报错。关于TLS握手的详细流程下文会...
handshake_message 的内容包含从 ClientHello开始,直到 本条Finished之前的所有消息,只包含handshake层的消息体,不包含record层的几个消息头字段。包括CertificateVerify 消息。同时,对客户端和服务器来说,handshake_message 的内容不同, 后发送者必须包含前发送者的 Finished 消息。