【发布时间】:2014-05-02 12:37:28
【问题描述】:
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 可以根据需要迭代多次以生成所需数量的数据”令人困惑。到底需要多少次?是否有一个阈值,超过多少次都无关紧要?如果有,这个阈值是多少?
【问题讨论】:
-
'产生所需数量的数据所需的次数'对我来说似乎非常清楚。但是,我不会使用“迭代”这个词。真正发生的是使用了所需的表达式中的尽可能多的术语。
-
那么需要多少数据呢?我已经搜索了 RFC,它没有说明数据量。既然主密钥总是 48 字节长,那么它可能是 48 字节吗?
-
如果我没记错的话,这用于多个地方,因此所需的数据量取决于上下文。
-
啊,是的,这就解释了。另外,这个操作产生的数据量和最终导出的key的长度差不多。
标签: ssl hmac handshake hmacsha1