Rivest-Shamir-Adleman (RSA) - 經(jīng)典非對稱加密算法
我們有一個單向陷門函數(shù),非常適合加密。
“教科書式”RSA加密
- ?取兩個大素數(shù),然后N = ????, 然后挑選一對??, ??
- ?加密:給定???? = (??, ??) 和一條消息?? 在里面?計算密文?? :
- ?解密:給定一個密文?? 將原始消息計算為
- 運算過程
教科書式RSA加密并不是IND-CPA
教科書(又名Plain,Vanilla)RSA是確定性的,即相同的明文總是產(chǎn)生相同的密文,因此攻擊者能夠發(fā)現(xiàn)重復。
如果攻擊者發(fā)現(xiàn):
-
71F63EA被RSA加密為賣
-
6AE81B4被RSA加密為買
修復教科書RSA
- 好的通用加密必須是概率性的,即每次加密明文時,都應該得到一個新的隨機密文
- 確定性加密對于特殊目的非常有用,例如保留格式的加密
如果我們只是用隨機填充來填充消息呢?
?? 需要足夠長,才能讓暴力破解不可行。
PKCS#1 v1.5使用了這個想法:
- 被認為是IND-CPA安全的
- CCA攻擊是可能的,例如Bleichenbacher的攻擊
Optimal Asymmetric Encryption Padding (OAEP) - RSA-OAEP
Factoring Hardness
在實踐中,RSA模數(shù)大小為2048或3072位。
?圖片來源:Stallings
RSA中需要避免的其他問題
- 不要共用一個共同的模數(shù) -- 共模攻擊。
- 不要共用公共素數(shù)。公共素數(shù)可以通過有效的gcd算法找到,例如:
- 不要使用小公鑰?? 加快加密速 -- 低加密指數(shù)攻擊,盡管OAEP可以阻止此攻擊
- 不要使用小密鑰?? 以加快解密速度 -- 低解密指數(shù)攻擊
NIST RSA密鑰大小建議
混合加密
公鑰加密比對稱加密慢得多,但不需要事先就共享密鑰達成一致。
- 在實踐中,幾乎總是使用混合加密(也稱為KEM-EM):
- 為對稱加密生成新密鑰
- 使用公鑰加密對密鑰進行加密(密鑰封裝機制)
- 使用對稱加密和密鑰來加密數(shù)據(jù)(數(shù)據(jù)封裝機制)
比如:標準化DLIES/ECIES
混合加密的安全性和有效性
混合加密方案是IND-CPA安全的,如果文章來源:http://www.zghlxwxcb.cn/news/detail-538505.html
- 公鑰加密方案PKEnc是IND-CPA安全的
- 對稱加密方案SymEnc在竊聽情況下無法區(qū)分
公鑰加密方案
廣泛使用:文章來源地址http://www.zghlxwxcb.cn/news/detail-538505.html
- 基于因子分解:RSA家族、Rabin、Paillier
- 基于離散對數(shù):ElGamal家族,Cramer–Shoup
到了這里,關于密碼學學習筆記(九):Public-Key Encryption - 公鑰加密2的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!