扩展了以前的答案
我只是在徘徊,攻击者在用户和他的浏览器之间定位的方式是什么,当他们清楚地发短信并且结束时,他们无法拦截连接细节。
这里的魔力叫做 的 DH密钥交换 强> 。
使用派生对称加密密钥 Diffie锟绀Hellman密钥交换 ,交换公共加密密钥。
任何“倾听”派对(你的BadGuy)都无法通过嗅出整个通信来获得会话密钥。服务器将使用其证书和私钥来确保客户端与合法目标进行通信。这可以防止活跃的“中间人”构成虚假服务器。
当您可以访问从加密方进行的所有计算时,您无法解密公钥中的ecrypted文本。
非对称密码术基于所谓的“陷门”功能。这意味着很容易以一种方式计算功能(例如加密数据),但是在没有一些秘密值(私钥)的情况下以相反的方式非常困难(不可行)。事实上,有时很难理解它,并且在非对称加密下有很多限制是非常安全的。这就是为什么你总是会使用一些受信任的库而不是自己使用它。
通过加密来自浏览器端的数据,任何查看源代码的人都可以知道如何加密它,现在可以用它来解密它。
不是没有随机密钥,它是在密钥交换期间在客户端和服务器之间导出的(参见第一段)。
我正在为我们的网站创建一个新的加密系统,其中服务器随机创建一个只能由具有相应会话的用户使用的会话密钥。
这是密码学领域的规则之一 - 的 不要设计自己的加密! 强>
这通常是一个坏主意。请注意当前使用的安全通道(SSL,TLS,...基于 RSA , ECC )很多聪明的人设计,审查和使用,他们知道自己在做什么,如何减轻不同的攻击媒介。恕我直言,它仍然不完美,但它是我们拥有的最好的。
Assymetric加密有两个键,一个公钥和一个私钥,正如你正确描述的那样,所以不要感到愚蠢。两个密钥都可以用于加密和解密,但是,如果由公钥加密的数据只能由私钥解密,而私钥加密的数据只能由公钥解密。
因此,为了成功地参与使用不对称加密的通信,您需要同时拥有公钥和私钥。
您与他人共享公钥,也就是说,无论您收到什么数据,都会使用公钥加密。您随后可以使用您的私钥解密它,这是您的秘密。当您将数据发送到通信的另一端时,您使用私钥对另一方进行加密,而另一方则使用您的公钥对其进行解密。
考虑版本控制的示例。您参与了一些团队成员的项目。当您提取其他人的提交时,它会使用您的公钥加密,因此一旦在您的公共密钥下载,您将能够通过您的私钥解密它。在您工作和执行提交时,您将把更改推送到使用私钥加密的存储库中。通信的另一端已经拥有您的公钥,并且可以解密它。重要的是,您不要与任何人共享您的私钥,因此您的队友将无法冒充您,以您的名义提交恶意代码。您可以与任何人共享您的公钥,但建议仅与受信任的人(例如您的队友)共享,这样其他任何人都无法解密您的私钥加密的任何内容。
基本上你的公钥是一个非常大的数字,这是两个素数(私钥)相乘的结果。两个素数可以通过素数因子分解找到,但由于公钥是一个非常大的数字,所以进行素数分解会花费这么漫长的时间,没有人会等待时间(几个世纪),而分解是被执行并且结果被发现。
会话ID是标识会话的值。如果有一个这样的值,那么它不是不对称的加密,因为没有涉及公钥和私钥,并且一旦有人窃取会话ID,正如您正确指出的那样,恶意的第三人/系统可以冒充实际用户并做一些讨厌的事情。所以你发现的问题确实存在,但这不是一个新问题,而且实施了解决方案。您正在寻找的解决方案是HTTPS。一旦您的网站获得适当的证书,您就可以使用不对称的加密安全和健全。在引擎盖下,服务器将拥有用户会话的公钥,而用户将使用私钥加密/解密,如果中间人拦截会话的公钥(不是会话ID),则恶意第三人将无法冒充实际用户。在这里阅读更多:
https://en.wikipedia.org/wiki/Transport_Layer_Security