为什么SSL如此特别?我不能自己实施RSA吗?

use*_*114 2 security encryption ssl client cryptography

我可以自己实施RSA,而不是在ssl上花费一大堆$$吗?(我不关心证明网站的身份;我只想加密客户端和服务器之间的密码以防止中间人攻击).我读过任何自定义解决方案都可能非常不安全,但是有人可以阅读我的计划并做出深思熟虑的回应吗?

首先,我将创建公钥和私钥.我会用javascript加密客户端密码,将密码的字母翻译成ascii-values,然后乘以或添加(任何建议?)这些ascii值来获取"未加密的消息".然后我会使用javascript和公钥加密此消息.

在服务器上,我将使用私钥解密安全邮件,最后得到密码的ascii-values的总和/乘积.关于如何从中获取单个字母的任何提示?

编辑:我已经得出结论,SSL是最好的方式.我只关注交易的客户端到服务器端(所有客户端发送的都是密码).当然,服务器发送给客户端的信息很有价值,不应该容易受到MITM攻击.感谢您提供免费的SSL建议.

谢谢

Cam*_*ner 5

有很多理由不推出自己的加密.

  1. SSL使用户确信站点是安全的,并且窃听者无法在线路上查看密码.如果您不使用SSL,则通常的浏览器指示该站点是安全的将不存在.
  2. 真的很难得到正确的RSA(或任何加密算法为此事).首先,使用原始RSA是不安全的,您需要有一个适当的填充机制,并且不能使其真正安全.RSA也只能加密n-1数据字节,其中n密钥的大小.
  3. 把密码留给密码学家.您提出的系统的第一个问题是您错过了使用安全传输的重点:您不需要对数据进行任何特殊编码(转换为ascii和乘法/求和或任何部分)因为安全运输意味着窃听者无法看到过去的情况.
  4. 您的提案无法防范中间人攻击.它(有点)防止窃听,这是一个不同的问题.

也就是说,您肯定可以通过Javascript实现RSA,但是请注意,在您让一群密码分析师看到并尝试打破它之前,它不太可能是安全的.即使你是世界上最好的程序员,你也会在某个地方出错.

用户体验也会受到影响,因为用户很难确认他们实际上正在与您的服务器通信.

SSL是一个众所周知,分析良好,尚未破解的协议,如果您使用自签名证书(另一个糟糕的用户体验,但至少它仍然相当安全)可以免费使用.觉得小心你决定要便宜出在加密之前,确保你的体重证书的成本对您的开发时间(它会带你很多时间来实现RSA)和漏水的重要客户信息的潜在成本(其密码).与项目成本的其余部分相比,证书的成本可能微不足道.

  • @ user1114105:顺便提一下,这是使加密变得如此困难的一个很好的例子:很容易错过问题的某些方面并结束一个不安全的系统.不要心疼:) (2认同)