Ssl TLS1.2“解密”;“已完成”;消息

Ssl TLS1.2“解密”;“已完成”;消息,ssl,encryption,aes,tls1.2,Ssl,Encryption,Aes,Tls1.2,我正在实现TLS1.2服务器套接字的简化版本,在解密客户端“已完成”消息时遇到问题。我已成功地将消息交换给客户端“已完成”消息。我已经正确地计算了master_secret(从浏览器中提取的master_secret与我计算的一个匹配),扩展了密钥的内容,但我无法解密客户端消息。以下是我到底做了什么: 交换了具有以下重要结果的消息: cipher_suite = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" master_secret = "bee102cfec0

我正在实现TLS1.2服务器套接字的简化版本,在解密客户端“已完成”消息时遇到问题。我已成功地将消息交换给客户端“已完成”消息。我已经正确地计算了master_secret(从浏览器中提取的master_secret与我计算的一个匹配),扩展了密钥的内容,但我无法解密客户端消息。以下是我到底做了什么:

交换了具有以下重要结果的消息:

cipher_suite = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA"
master_secret = "bee102cfec022435774e97a9718628798643563b2e95626dc405f20660e023b6da73846bf54879bc53780760535316fd"
client_random = "99ab80aa2659df3ddb367f0d1e65b121d87782e26f7d75a7121c763833138529"
server_random = "0000000000000000000000000000000000000000000000000000000000000000"
基于上述内容,我生成了以下关键材料:

key_client_write = "64288957f9ad56be81db1af6a00f49713bd1fc7e89a56093fc8d18a9efe62267"
key_server_write = "280b12c845df613e5bc62f92337e6cbb91fcba5a63df535c77d06d16b5ef85ce"
但在解密客户端(Firefox浏览器)发送的“已完成”消息后,我将记录层标题与加密部分用一个空格隔开:

client_finished = "1603030040 b5d75b9c79a08d3895ae4e623187078e099c9af49ec5dcd65bfe31c11b0a404689b75d4bf73aabb74c947449adf52c15d01f541dbccf83c14ef8cdbfaeef94d3"
我将数据处理如下:

iv = "b5d75b9c79a08d3895ae4e623187078e"
ciphertext = "099c9af49ec5dcd65bfe31c11b0a404689b75d4bf73aabb74c947449adf52c15d01f541dbccf83c14ef8cdbfaeef94d37ffbbbdfe042200e2db7"
尝试使用这两个密钥,但解密的消息没有任何意义


是我的键错了,还是我对数据的解释错了?

好的,我对键材料的解释是错误的。我用了32个字节作为MAC密钥,但应该是20个字节