Cryptography 加密和替换

Cryptography 加密和替换,cryptography,Cryptography,假设我们有下一个字符串: 13:45:11:17:-65:107 此字符串是RSA加密的产物。每个数字都是加密信息的一个字节。 我们用公钥加密了它。之后,我们决定“隐藏”它,下一步: 1=q,3=f,4=d,5=o,7=y,6=p,0=b,-=u,:=t 毕竟,我们还有下一个字符串: QFTDOTQTQQYTUPOTQBY 假设服务器端将以相反的方式取消隐藏此字符串。并通过私钥进行解密 所以我在问:如果有人偷了这个字符串,但是他没有访问我们软件的权限。他只有一根弦-qftodqtqqtytupo

假设我们有下一个字符串:

13:45:11:17:-65:107

此字符串是RSA加密的产物。每个数字都是加密信息的一个字节。 我们用公钥加密了它。之后,我们决定“隐藏”它,下一步: 1=q,3=f,4=d,5=o,7=y,6=p,0=b,-=u,:=t

毕竟,我们还有下一个字符串:

QFTDOTQTQQYTUPOTQBY

假设服务器端将以相反的方式取消隐藏此字符串。并通过私钥进行解密

所以我在问:如果有人偷了这个字符串,但是他没有访问我们软件的权限。他只有一根弦-qftodqtqqtytupotqby

他有可能理解这一点吗


qftodqtqqtytupotqby=13:45:11:17:-65:107

如果假设攻击者无法访问您的软件,因此他所拥有的只是一些ECB(替代加密)编码的RSA密码文本,那么答案是不,他无法将其反转。(这假设RSA密码文本实际上是字节“伪随机”的,没有密钥。如果它们有一些可预测的明文头信息,ECB可能会受到攻击。)

然而,这是一个需要考虑的非常薄弱的攻击者位置。通常,您应该假设攻击者拥有您的软件的副本,否则,您的软件的每个副本实际上都是整个系统的主密钥


我倾向于使用AES,并将编译后的密钥用于您的自制ECB。至少这限制了密钥的机密性,而不是整个软件包的机密性。您还可以使用此技术将安全风险划分为具有相同编译密钥的软件包。

从严格的安全角度来看,字母编码毫无价值,不会添加任何保护(请参阅),因为您不能假设攻击者不知道您的实现。安全性必须完全取决于密钥

假设RSA输出看起来与问题中所示完全相同(这意味着使用了小得离谱的RSA密钥大小),那么很容易至少部分地打破简单的替换,因为RSA密文的ASCII表示是高度结构化的。最常见的符号是冒号(
),而仅出现在冒号旁边的符号是负号(
-
)。如果冒号之间有四个符号,最左边的是负号。如果冒号之间有三个符号,最左边的是负号,一个(
1
)或两个(
2
)。剩下的8位数字不那么容易,但加上使用的RSA的小密钥大小并不是真正的障碍


以下不是问题的直接部分,但也必须说明:协议的RSA部分是否安全取决于许多因素,因此不可能写出完整的答案。这里仅举两个例子说明上述方案可能存在缺陷:

  • 一个字节的小数据块大小意味着8位的密钥大小,这非常容易用笔和纸来实现收支平衡
  • 如果这是没有安全填充的纯教科书式RSA加密(如PKCS#12.x OAEP),则该方案存在致命缺陷。攻击者可以简单地使用公钥计算包含所有256字节值的加密版本的字典,并使用字典解密所有加密字节

这就是说,使用字节式RSA效率极低,最好将所有字节放在一个RSA块中,或者如果一个块中的数据太多,请使用混合方案和对称算法进行批量加密,并且按照用户1131467的建议,仅使用RSA加密随机会话密钥。

当然有。默默无闻的安全永远不是100%。阅读任何一本战争历史书。你似乎在问:如果你对RSA加密的加密文本进行加密字节ECB,攻击者是否可以反转ECB以获得加密文本(就像他们可以通过统计方法攻击ECB以获取明文一样)?这是正确的问题吗?@user1452715您不是在问实用方法,而是在问“他是否有可能理解”AES加密RSA密文是非常愚蠢的。使用RSA的全部原因是为了保护数据。。。如果攻击者能够访问系统找出替换密码(即ECB是密码的一种操作模式,而不是加密方法本身),那么攻击者可能会找出AESkey@PeterElliott:OPs声明的问题是保护RSA密文。我同意,我不知道你为什么要这么做,因为它已经被加密了,但这是他问的。ECB代表电子码本,是替代密码的另一种表达方式,也是分组密码的一种操作模式(以及CTR、CBC等)。@user1131467我从未听说过“ECB”被用作“替代密码”的同义词,至少该领域的专家没有听说过。@DanielRoethlisberger fair point,它最终会非常不安全,而不是极度不安全。即使不访问软件,也可以计算出替换密码,但只要访问源代码,任何一个密码都可能被破解。@user1131467统计方法。由于询问者建议用一个字符替换每个数字/减号/冒号,因此很容易理解冒号字符是什么。然后你知道有三个字符的块,第三个字符是负号,1或2。从那里,其他方法可以揭示其余的数字。虽然基础密文是(某种)伪随机的,但输出格式是非常严格的结构。我很确定用户1131467建议询问者使用AES加密他的RSA密文,而不是RSA加密AES密钥并使用AES加密数据。@PeterElliott啊,是的,谢谢,我完全误解了用户1131467的答案,