如果在 3DES 中加密的 8 字元字元串的後半部分始終相同,這意味著什麼?
在最近的 Adobe 密碼洩露中,大概是在 3DES ECB 中加密的,所有 8 字元密碼的後半部分是相同的:ioxG6CatHBw==
來源:http ://pastebin.com/iDTFARwq (根據明顯的密碼提示猜測)
L8qbAD3jl3jioxG6CatHBw== password BB4e6X+b2xLioxG6CatHBw== adobe123 j9p+HwtWWT/ioxG6CatHBw== 12345678 rpkvF+oZzQvioxG6CatHBw== iloveyou 2dJY5hIJ4FHioxG6CatHBw== sunshine Ttgs5+ZAZM7ioxG6CatHBw== princess Dts8klglTQDioxG6CatHBw== computer y7F6CyUyVM/ioxG6CatHBw== superman 2hD1nmJUmh3ioxG6CatHBw== asdfasdf cSZM/nlchzzioxG6CatHBw== 1q2w3e4r e+4n2zDarnvioxG6CatHBw== 1qaz2wsx ueE89xIj8RTioxG6CatHBw== internet ietF94QrMIbioxG6CatHBw== michelle ecW6IyEemknioxG6CatHBw== football lVwka/Mn8TPioxG6CatHBw== baseball ghrvkwCcX4bioxG6CatHBw== jennifer eOsrbcW/PeTioxG6CatHBw== abcd1234 Nz4/TI6o5RrioxG6CatHBw== trustno1 iMhaearHXjPioxG6CatHBw== whatever OPQxDLW2L+DioxG6CatHBw== 11111111
它是否允許猜測使用的密鑰選項或其他 3DES 加密屬性?
DES 的塊大小為 8 個字節。因此,兩個塊達到 16 個字節。
看起來 Adbobe 在 ECB 模式下使用兩個 3-DES 塊加密密碼。
因為所有這些密碼都是八個字節長,所以第二個塊是空的,只是用零填充。由於密碼的位置 9 處的字元串終止 NUL 字元,第二個塊完全開始。塊的其餘部分填充的字元也是 NUL。因為我們處於 ECB 模式,所以這個塊每次都加密為相同的值。
這就是為什麼所有這些密碼都有相同的八個尾隨字節:ioxG6CatHBw==。這只是使用密鑰加密 64 個零位時獲得的字節序列。
注意:我將忽略以下文本中的 base64 編碼;base64 編碼不會改變生成密文的屬性。
您遇到的是與 ECB 模式一起填充。此填充可以是任何靜態填充。最常見的是 PKCS#5 填充,但零填充也是可能的。無法測試使用了哪個填充,除非您讓程序加密一個“密碼”,該“密碼”包含一個 8 個零或 8 個字節
08
為 PKCS#5 值的塊。在這種情況下,您會期望生成相同的字節。最後相同的密文塊不是問題,而且肯定找不到密鑰(除非分組密碼失敗,或者密鑰可猜測,否則永遠不可能找到)。然而,使用歐洲央行是一個問題。通過塊的二進制比較可以很容易地檢測到相同的 8 個字元串。眾所周知,ECB 加密不應用於字元串。
這取決於密碼的使用,但一般來說,儲存密碼(即使加密)是不安全的,也不需要儲存密碼才能登錄網站。為此,應使用基於密碼的密鑰派生函式(PBKDF2、bcrypt、scrypt)。如果需要額外的加密層,可以使用額外的秘密鹽。