2014-05-02 54 views
1

的RFC得到式TLS 1.0 - 计算所述主密钥

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

为反过来做this.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可以重复多次,要产生所需的数据量” confusing.Just多少次是必要的吗?是否有一个门槛后,它不要紧多少它是什么?如果是这样,这个门槛是多少?

+0

“生产所需数量的数据所需的次数”对我来说似乎非常清楚。但是,我不会使用“迭代”这个词。实际发生的事情是*使用了所需的表达式*。 – EJP

+0

那么需要多少数据?我浏览了RFC,并没有提到数据量。由于主密钥总是48个字节长,可能是48个字节? – automaton

+1

如果我没有记错的话,这个用在多个地方,所以所需的数据量取决于上下文。 – EJP

回答

0

我很确定,在TLS 1.0中,预主密钥和主密钥总是48bytes长,但是当你创建密钥块时,它的长度可能会超过48个字节。即如果你的密码使用sha1和aes256,你将需要136个字节。