1

两台计算机通过 Internet 使用套接字进行通信。
我只是将服务器程序发送给另一个人,然后我的客户端程序将发送和接收字符串。
我需要在传输过程中对数据进行加密。
我的想法是简单地使用一种不需要任何密钥的幼稚算法,而是使用一对包含所有字母数字字符的序列。

ROW1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'

第二行将包含相同的字符但混淆了。原始内容将在传输前翻译成第二个序列,然后再翻译回来。

现在我想知道这个系统是否安全。

4

4 回答 4

4

永远不要这样做。您必须使用标准方法;这将经过试验和测试和深入研究。

阅读这些作为起点

http://en.wikipedia.org/wiki/RSA

http://en.wikipedia.org/wiki/Secure_Socket_Layer

于 2013-07-03T07:46:00.893 回答
4

可能不会受到智力障碍的猴子的影响,但国家安全局(甚至是刚从高中毕业的稍微熟练的密码分析员)将在很短的时间内将其解码。

要破解这个问题,您需要对英语字母频率(或您想要分析的任何目标语言)和一些密文有基本的了解。事实上,它在不适合加密方面与 ROT13 和 Pig Latin 并驾齐驱。

于 2013-07-03T07:46:08.490 回答
2

这种方法通常是一个坏主意。事实上,我认为它的强度不足以将其用于任何目的。我建议看一下众所周知的算法。正如您提到您正在使用套接字,我实用的方法是在两个端点之间创建一个 SSL 隧道。由于您没有提供有关特定语言的任何信息,因此我无法特别指出任何参考资料。

于 2013-07-03T07:46:22.793 回答
2

您所描述的是一个简单的替换密码。这类密码在古罗马被使用。对密文的几十个字母进行简单的频率分析可以恢复完整的密钥,使加密与纯文本一样好,直到密钥(替换字母表)改变。

在您的情况下,其他简单的攻击(例如重放攻击)也可能是相关的。对手可以重放先前窃听的命令,并且接收者会认为它完全有效,即使对手对密钥一无所知。请注意,即使您以幼稚的方式使用像 AES 这样的适当密码,这种攻击也是可能的——它可以证明整个协议的安全性是多么重要。

正确的加密标准和协议如此复杂是有原因的。对我们来说幸运的是,我们不必自己重新发明或重新实现它们。在这种情况下,一个不错的选择可能是TLS。几乎每个平台都有可用的库。

也值得一试:http: //blogs.msdn.com/b/ericlippert/archive/2011/09/27/keep-it-secret-keep-it-safe.aspx

于 2013-07-03T10:46:39.133 回答