TLS 1.0 - 计算主密钥

时间:2014-05-02 12:37:29

标签: ssl hmac handshake hmacsha1

RFC提供公式

PRF(secret, label, seed) = P_MD5(S1, label + seed) XOR
                          P_SHA-1(S2, label + seed);

执行此操作.P_hash依次具有以下公式:

P_hash(secret, seed) = HMAC_hash(secret, A(1) + seed) +
                          HMAC_hash(secret, A(2) + seed) +
                          HMAC_hash(secret, A(3) + seed) + ...

RFC也说

  

P_hash可以根据需要迭代多次      所需的数据量。例如,如果正在使用P_SHA-1      创建64字节的数据,它必须迭代4次      (通过A(4)),创建80字节的输出数据;最后16个字节      然后将丢弃最后一次迭代,剩下64个字节      输出数据。

我发现" P_hash可以根据需要进行多次迭代,以产生所需数量的数据"令人困惑。只需要多少次?是否有一个阈值,之后它并不重要?如果是这样,这个阈值是多少?

1 个答案:

答案 0 :(得分:0)

我非常确定在TLS 1.0中,premaster密码和主密钥总是48字节长,但是当你在线下进一步创建密钥块时,它可能超过48个字节。即如果您的密码使用sha1和aes256,则需要136个字节。