1. 程式人生 > 其它 >【悟空雲課堂】第三十五期:加密強度不足(CWE-326:Inadequate Encryption Strength)

【悟空雲課堂】第三十五期:加密強度不足(CWE-326:Inadequate Encryption Strength)

技術標籤:悟空雲課堂程式碼規範網路安全安全漏洞

關注公眾號“中科天齊軟體安全中心”(id:woocoom),一起漲知識!
該欄目為中科天齊全新規劃的悟空雲課堂,每週五下午18:00準時上線,旨在科普軟體安全相關知識,助力企業有效防範軟體安全漏洞,提升網路安全防護能力。

【悟空雲課堂】第三十五期:加密強度不足(CWE-326:Inadequate Encryption Strength)

什麼是加密強度不足缺陷?

大多數密碼系統都需要足夠的金鑰大小來抵禦暴力攻擊。軟體使用理論上合理的加密方案儲存或傳輸敏感資料,但強度不足以達到所需的保護級別。

RSA是目前最有影響力和最常用的公鑰加密演算法,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被ISO推薦為公鑰資料加密標準。只有短的RSA鑰匙才可能被強力方式解破。只要當鑰匙的長度足夠長時,用RSA加密的資訊實際上是難以被解破。

RSA的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難度與大數分解難度等價,而且密碼學界多數人士傾向於因子分解不是NP問題。人們已能分解140多個十進位制位的大素數,這就要求使用更長的金鑰,帶來的問題是速度減慢;另外,人們正在積極尋找攻擊RSA的方法,如選擇密文攻擊,一般攻擊者是將某一資訊作一下偽裝(Blind),讓擁有私鑰的實體簽署。然後,經過計算可得到它所想要的資訊。

加密強度不足缺陷構成條件有哪些?

軟體使用強度不足以提供所需的保護級別的加密方案。

加密強度不足缺陷會造成哪些後果?

加密強度不足的程式可能會受到暴力攻擊,如果暴力攻擊成功,惡意攻擊者則進入系統進行破壞。

加密強度不足缺陷的防範和修補方法有哪些?

使用本領域專家目前認為比較強的加密方案。例如使用RSA演算法,金鑰越長,它就越難破解。目前被破解的最長RSA金鑰是768個二進位制位。也就是說,長度超過768位的金鑰,還無法破解。因此,1024位的RSA金鑰基本安全,2048位的金鑰極其安全,建議使用2048位的金鑰。

加密強度不足缺陷樣例:

try {
 			javax.crypto.Cipher c = javax.crypto.Cipher.getInstance("RSA/ECB/PKCS1Padding", "SunJCE");
             // Prepare the cipher to encrypt
java.security.KeyPairGenerator keyGen = java.security.KeyPairGenerator.getInstance("RSA"); keyGen.initialize(1024); java.security.PublicKey publicKey= keyGen.genKeyPair().getPublic(); c.init(javax.crypto.Cipher.ENCRYPT_MODE, publicKey);

用Wukong(悟空)軟體程式碼安全檢測修復系統檢測上述程式程式碼,則可以發現程式碼中存在著“加密強度不足” 導致的程式碼缺陷,如下圖:
Wukong(悟空)軟體程式碼安全檢測修復系統
加密強度不足缺陷在CWE中被編號為CWE-326:Inadequate Encryption Strength

更多的資訊請參考CWE官網:http://cwe.mitre.org/data/definitions/326.html

瞭解更多安全資訊 請關注公眾號 中科天齊軟體安全中心