让我们假设我们有下一个字符串:
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
答案 0 :(得分:1)
如果您假设攻击者无法访问您的软件,因此他所拥有的只是一些ECB(替代加密)编码的RSA密码,而答案是肯定的,他无法逆转它。 (这假设RSA crypttexts实际上是字节方式的“伪随机”而没有密钥。如果它们有一些明文可预测的头信息,那么可能会攻击ECB。)
然而,这是一个非常弱的攻击者位置。一般来说,您应该假设攻击者拥有您的软件副本,否则您的软件的每个副本实际上都是整个系统的秘密主密钥。我倾向于使用带有编译密钥的AES来自己的自制ECB。至少这限制了密钥的秘密,而不是整个软件包。您还可以使用此技术将安全风险划分为仅使用密钥编译的软件包。
答案 1 :(得分:1)
从严格的安全角度来看,字母编码毫无价值,并且没有添加任何保护(请参阅Kerkhoff principle),因为您不能认为攻击者不知道您的实现。安全性必须完全放在密钥中。
假设RSA输出看起来与问题中显示的完全一致(这意味着使用了一个非常小的RSA密钥大小),那么很容易至少部分地破坏简单替换,因为RSA密文的ASCII表示是高度的结构化的。最常见的符号是冒号(:
),而仅出现在冒号旁边的符号将是减号(-
)。如果冒号之间有四个符号,则最左边是减号。如果冒号之间有三个符号,则最左边是减号,一个(1
)或两个(2
)。剩下8位数字并不容易,但与RSA的小按键相结合使用并不是真正的障碍。
以下不是问题的直接部分,但也必须说明:协议的RSA部分是否安全取决于很多因素,因此无法写出完整的答案。这里只是两个例子,说明上述方案可能存在缺陷:
话虽这么说,按字节顺序执行RSA的效率非常低,将所有字节放在单个RSA块中要好得多,或者如果单个块有太多数据,请使用带有对称算法的混合方案批量加密,只有RSA加密随机会话密钥,如user1131467 所示。