Signal安全I(xiàn)M核心技術(shù)詳解:X3DH,雙棘輪算法,以及源碼詳解,含F(xiàn)S/PCS等概念

Signal是在IT界與安全界都非常有名的一個(gè)端對(duì)端加密產(chǎn)品,它既符合FS(Forward secrecy,前向安全),也同時(shí)符合PCS(Post-Compromise security,后向安全)。

Signal的核心技術(shù)是X3DH(3倍增加版的Diffie Hellman),以及Double Ratchet(雙棘輪)

我打算分開(kāi)兩篇文章詳解相關(guān)的技術(shù)細(xì)節(jié):

第一篇:簡(jiǎn)單講解相關(guān)的技術(shù)背景,以及代碼級(jí)別詳解X3DH。
第二篇:詳解Double Ratchet雙棘輪的算法。

下面開(kāi)始第一篇,我們先講講剛剛提到的技術(shù)點(diǎn):FS前向安全,PCS后向安全,DH算法。然后再講密碼學(xué)中的HMAC, KDF, HKDF,這些跟雙棘輪有關(guān)。然后再細(xì)講X3DH。

一些技術(shù)背景

Forward secrecy,前向安全

前向安全,一般人的理解是:如果某一輪的密鑰泄漏了,不會(huì)導(dǎo)致之前的消息被破解。但我查過(guò)一些相關(guān)的文獻(xiàn),如Wiki,Handbook of applied cryptography等,定義可能比較多,綜合了一下,我更傾向于將前向安全定義為:

FS/前向安全 = 無(wú)論long-term key長(zhǎng)期密鑰,或者中期密鑰,或者某輪密鑰泄露,都不會(huì)導(dǎo)致之前的消息被破解。

Post-Compromise security / Future Secrecy / 后向安全

同樣,我更傾向于將后向安全定義為:在密鑰Compromise之后, 在一定時(shí)間內(nèi),可以恢復(fù)。(recovery from compromise)

DH (Diffie Hellman) / ECDH

這個(gè)到處都有說(shuō),不展開(kāi)了,最簡(jiǎn)單的理解是:

DH: A的私鑰 + B的公鑰 = 密鑰 = A的公鑰 + B的私鑰

ECDH就是基于橢圓曲線的Diffie Hellman。

HMAC

全稱(chēng)Hash-based Message Authentication Code,就是用于生成摘要,驗(yàn)證消息完整性以及源身份。不再展開(kāi)了。

KDF

KDF全稱(chēng)是key derivation function,我也不知道怎么翻譯好。像上面說(shuō)的DH出來(lái)的密鑰,其實(shí)不是離散均勻的,更多情況下需要KDF或HKDF

HKDF

基于HMAC的KDF,細(xì)節(jié)可以看看其它文章,簡(jiǎn)單地說(shuō),就是

HKDF(key, salt, info) => T(0), T(1), T(2), T(..)個(gè)密鑰。

X3DH

我們剛剛說(shuō)了X3DH就是三倍的DH。從signal官方文檔說(shuō),X3DH就是下圖的樣子:

1.x3dh1.jpg

圖中:
IKA:A的長(zhǎng)期Key Pair;
EKA:A的臨時(shí)Key Pair;
IKB:B的長(zhǎng)期Key Pair;
SPKB:B的中期Key Pair;
OPKB:B的臨時(shí)Key Pair;

圖中的1,2,3,4。其實(shí)就是做4次ECDH。我們從代碼看看他是如何實(shí)現(xiàn)的。

PS:我們拿Javascript的代碼,更好理解

1.x3dhsource.jpg

我已經(jīng)在圖上標(biāo)注了如何做的。簡(jiǎn)單說(shuō),就是:

Final = (DH1 + DH2 + DH3 + DH4)

值得注意的是,像上圖的虛線,X3DH并不一定需要OPKB,從代碼也可以看到,ECDH4不一定會(huì)做。

Double Ratchet雙棘輪

上面說(shuō)的內(nèi)容算是比較簡(jiǎn)單的,雙棘輪才是Signal的經(jīng)典,我們將在下一篇文章詳細(xì)講解。如果你對(duì)HKDF,HMAC,X3DH還不太清楚,可以多看幾遍此文章。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容