假设RSA被认为是加密的“安全”方法。RSA是用来编码一个整数序列的基27。如果我们使用一个很难计算的n=pq,那么如果我们单独编码每个整数(字母)而不是整个短语一次,那么它是否仍然是安全的呢?
编辑:我没想到会得到这么好的答案。谢谢大家!
发布于 2021-12-09 19:53:18
虽然RSA不是用于加密的,但我们可以使用RSA进行加密。如果使用TextBook RSA,那么它将是不安全的,因为加密是免费的,那么任何攻击者都可以检查这些值。我们称之为加密甲骨文,它在公钥系统上是免费的。
一个简单的RSA加密甲骨文游戏。
def Ind_CPA_RSA(adversary, target):
(e,n,d,...) = generate_RSA_key() //keygen part
def RSA_encryption_oracle_PKCS#1_v1.5(plaintext): //Encryption oracle
EM = PKCS#1_v1.5_padding(plaintext)
ciphertext = EM^e mod n
return ciphertext
for each m in possible_message_space: //queries
c = RSA_encryption_oracle_PKCS#1_v1.5(m)
if c == target
print(target)
return succcess
return failure因此,对手尽可能地尝试所有可能的信息,以看到平等的胜利。
在教科书中,RSA,如果公共指数e=3,那么立方根攻击工作的所有消息suche,即len(m) < \sqrt[3]{n}。
对于所有其他攻击,丹·邦纳的文章是一个很好的起点;
为了安全起见,必须使用PKCS#1 v1.5 (RSAES-PKCS1-v1_5)或OAEP (RSAES-OAEP)填充的RSA加密。这些加法增加了随机化来实现概率加密。
每个编码都使用特殊编码来实现这一点,比如PKCS#1 v1.5填充;
EM = 0x00 || 0x02 || PS || 0x00 || M.
M是信息。PS由随机化部分组成。
生成长度为k- mLen -3的八位串PS,该字符串由伪随机生成的非零八元组成.PS的长度至少为8个八位数。
例如,对于2048位RSA;k = 256,mLen=4,那么对于一个字母大小的消息,PS长度是249个字节的随机性.因此,攻击者无法使用加密oracle测试这些值。其余的攻击RSA问题。
同样,OAEP具有随机性,OAEP已被证明具有IND-CCA1安全性。与PKCS#1 v1.5相比,它更喜欢OAEP,因为它由于实现不当而受到许多攻击。
如果有人想要一篇关于RSA加密度量的学术文章,这里是付费文章;
https://crypto.stackexchange.com/questions/96544
复制相似问题