我已經在I2P源(JAVA)下面的代碼片段最近發現:I2P會話密鑰生成疑似泄漏
private final SessionKey calculateSessionKey(BigInteger myPrivateValue, BigInteger publicPeerValue) {
SessionKey key = new SessionKey();
BigInteger exchangedKey = publicPeerValue.modPow(myPrivateValue, CryptoConstants.elgp);
byte buf[] = exchangedKey.toByteArray();
byte val[] = new byte[32];
if (buf.length < val.length) {
System.arraycopy(buf, 0, val, 0, buf.length);
... //irrelevant details
} else { // (buf.length >= val.length)
System.arraycopy(buf, 0, val, 0, val.length);
... //irrelevant details
}
key.setData(val);
return key;
}
據我瞭解,中buf[]
第256位被直接複製到會話密鑰,並且沒有運行SHA256摘要。我不是密碼學專家(不是java),任何人都可以解釋我,這不是安全漏洞嗎?我的意思是,在標準Diffie-Hellman wiki頁面中,SHA散列也在密鑰上運行。 如果確實如此,你還可以舉一個例子來說明它是如何被利用的嗎?