加密和替换

时间:2013-01-30 09:14:11

标签: cryptography

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

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

此字符串是RSA加密的产物。每个数字都是加密信息的一个字节。 我们用公钥加密了它。之后我们决定隐藏"它,下一个方式: 1 = Q 3 = F,4 = d,5 = O,7 = Y,6 = P,0 = B, - = U,:= T;

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

qftdotqqtqytupotqby

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

所以我问:如果有人窃取了这个字符串,但是他对我们的软件没有任何访问权限。他只有一个字符串 - qftdotqqtqytupotqby

他是否有可能理解

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

2 个答案:

答案 0 :(得分:1)

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

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

我倾向于使用带有编译密钥的AES来自己的自制ECB。至少这限制了密钥的秘密,而不是整个软件包。您还可以使用此技术将安全风险划分为仅使用密钥编译的软件包。

答案 1 :(得分:1)

从严格的安全角度来看,字母编码毫无价值,并且没有添加任何保护(请参阅Kerkhoff principle),因为您不能认为攻击者不知道您的实现。安全性必须完全放在密钥中。

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


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

  • 一个字节的小块大小意味着8位的密钥大小,即使只用笔和纸也很容易破解。
  • 如果这是没有安全填充的普通教科书RSA加密(例如PKCS#1 2.x OAEP),该方案存在致命缺陷。攻击者可以简单地使用公钥来计算具有所有256字节值的加密版本的字典,并使用字典来解密所有加密字节。

话虽这么说,按字节顺序执行RSA的效率非常低,将所有字节放在单个RSA块中要好得多,或者如果单个块有太多数据,请使用带有对称算法的混合方案批量加密,只有RSA加密随机会话密钥,如user1131467 所示。