Public Key encryption systems 基于One Way Functions;在一个方向上比在另一个方向上更容易计算的函数。公钥密码系统有两种常见的单向函数选择:Large integer factorization 和 Discrete Logarithms。
没有数学证据表明大整数分解没有简单解:但是,几十年的深入研究还没有发现任何多项式时间算法。 (不一定快,只是找到一个是一个很好的长期目标。)RSA 密码系统的安全性是基于分解大素数的难度。
有数学证明表明求解离散对数非常困难。 El Gamal 和 Diffie-Hellman 算法依赖离散对数来保证其安全性。
不过,公钥机制只是实际部署的解决方案的一部分。公钥系统通常用于数字签名和协商与symmetric cipher 一起使用的session key。对称密码在带有模式的纯文本上使用起来更快、更安全,并且是现代通信隐私和完整性不可或缺的一部分。
现在,直接解决您的问题:)
- 如果我知道公钥为什么我不能解密数据,肯定和私钥有关!!!
它们是相关的。你可以找到一个给定的。但是目前找到一个的计算复杂度比生成新的公钥/私钥对要糟糕得多,当你破解它时,密钥本身应该没有任何价值。 (“较小”键的年份,“较大”键可能是千年。问题是,定义会移动。:)
https 协议是加密所有数据还是只加密客户端发送的数据?例如,如果我去 gmail.com,html 代码是否被加密?
HTTPS 本身会双向加密一切。然而,一些网站会使用未加密的http 来处理图像、css、javascript,而https 则用于实际包含用户数据的 HTML。这是因为提供未加密内容比提供加密内容要快得多。这也是非常不安全,因为大多数这些类型的内容可以在飞行中被替换,允许入侵者修改浏览器的 DOM 或注入其他新代码,从而让他们可以访问私有数据.大多数浏览器都抱怨混合 SSL/TLS 和未加密的内容,所以希望没有多少网站这样做。
我的浏览器如何解密而其他人却不能?
在会话开始时的 SSL/TLS 握手期间,服务器和浏览器协商一个将用于会话的新会话密钥。浏览器和客户端之间的所有流量都使用会话密钥加密,并且由于 SSL/TLS 会话的创建方式,只有客户端和服务器知道密钥:
https://www.rfc-editor.org/rfc/rfc5246#page-64
8.1.1. RSA
When RSA is used for server authentication and key exchange, a 48-
byte pre_master_secret is generated by the client, encrypted under
the server's public key, and sent to the server. The server uses its
private key to decrypt the pre_master_secret. Both parties then
convert the pre_master_secret into the master_secret, as specified
above.
8.1.2. Diffie-Hellman
A conventional Diffie-Hellman computation is performed. The
negotiated key (Z) is used as the pre_master_secret, and is converted
into the master_secret, as specified above. Leading bytes of Z that
contain all zero bits are stripped before it is used as the
pre_master_secret.
Note: Diffie-Hellman parameters are specified by the server and may
be either ephemeral or contained within the server's certificate.