2014-05-02 90 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個字節。