return TLS1_FINISH_MAC_LENGTH; } 在TLS中,这个函数是首先对目前为止的所有收发的数据包进行一次哈希计算,然后将哈希的结果和Master Key还有一个输入的Label字符串,这个Label字符串默认是空的。实际上就是目前为止收发的数据包的哈希值和Master Key的PRF计算的结果。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10....
收到第一个Client Hello包的时候,状态是TLS_ST_SR_CLNT_HELLO,所以会首先进入 tls_process_client_hello(s, pkt);函数。所有的消息处理函数的输入参数都是SSL结构体和当前接收到的数据包的内容。 Client Helllo的处理是一个很复杂的过程,因为在TLS协议的发展过程中,诞生了很多的各种各样的扩展,这些扩展大都会体...
因为这个TLS握手状态机的上层还有一个状态机,那个读取状态机定义了两个函数执行,一个是处理消息的函数,一个是处理消息之后要执行的函数,分别是ossl_statem_server_process_message和ossl_statem_server_post_process_message,刚看到的是第一个处理函数对应的处理分支,处理完之后会调用下一个处理函数。 WORK_STATE oss...
{1,SSL3_TXT_RSA_RC4_40_MD5,SSL3_CK_RSA_RC4_40_MD5,SSL_kRSA,//密钥协商算法为RSASSL_aRSA,//签名认证算法为RSASSL_RC4,//加密算法为RC4SSL_MD5,//摘要算法为MD5SSL_SSLV3,SSL_EXPORT|SSL_EXP40,SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,40,128,} 通过密钥协商算法,我们可以得到用于加密算法的密钥,...
NID_dsaWithSHA1_2# define EVP_PKEY_DH NID_dhKeyAgreement# define EVP_PKEY_DHX NID_dhpublicnumber# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey# define EVP_PKEY_HMAC NID_hmac# define EVP_PKEY_CMAC NID_cmac# define EVP_PKEY_TLS1_PRF NID_tls1_prf# define EVP_PKEY_HKDF NID_hkdf# ...
TLS记录层使用密钥消息认证码(MAC)来保护消息的完整性。在RFC文档里和OpenSSL实现里使用的算法为HMAC,如[HMAC]RFC中所述,该结构基于散列函数。,如果需要的话,其他密码套件可以定义他们自己的MAC结构。 伪随机函数(PRF)将(secrets)秘密,(seed)种子和(identifying label)识别标签作为输入,并产生任意输出 长度。
unsignedcharA1[EVP_MAX_MD_SIZE]; size_tA1_len; intret=0; Expand All@@ -188,58 +187,59 @@ static int tls1_prf_P_hash(const EVP_MD *md, if(!ossl_assert(chunk>0)) goto err; ctx=EVP_MD_CTX_new(); ctx_tmp=EVP_MD_CTX_new(); ...
NID_dhpublicnumber#defineEVP_PKEY_EC NID_X9_62_id_ecPublicKey#defineEVP_PKEY_HMAC NID_hmac#defineEVP_PKEY_CMAC NID_cmac#defineEVP_PKEY_TLS1_PRF NID_tls1_prf#defineEVP_PKEY_HKDF NID_hkdf#defineEVP_PKEY_PAILLIER NID_paillier#defineEVP_PKEY_SM9_MASTER NID_id_sm9MasterSecret#defineEVP_PKEY...
2)报文鉴别码:SSLv3.0和TLS的MAC算法及MAC计算的范围不同。TLS使用了RFC-2104定义的HMAC算法。SSLv3.0使用了相似的算法,两者差别在于SSLv3.0中,填充字节与密钥之间采用的是连接运算,而HMAC算法采用的是异或运算。但是两者的安全程度是相同的。 3)伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是...
伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的方式。 报警代码:TLS支持几乎所有的SSLv3.0报警代码,而且TLS还补充定义了很多报警代码,如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)等。