我对非对称公钥密码术的理解(尽pipe是有限的)是公钥被devise为与一个和所有人共享,而私钥是保密的。
假设我将本地计算机的公钥存储在远程Web服务器上,并且发送给此服务器的encryption信息(通过我的私钥)被另一个也拥有我的公钥的方截取。 这不意味着他们也可以解密我的encryption信息吗?
如果是的话,这是否意味着我应该只与一方共享公钥 – 在这种情况下是服务器 – 这违背了我对公钥的用途的理解? 我可以在本地计算机上为不同的应用程序使用不同的密钥对吗?
您不会将信息发送到使用私钥encryption的服务器。 当您打开与服务器的安全连接时,服务器上的软件会生成一个新的对称encryption密钥,并使用公钥对其进行encryption,然后将其发送给您。 然后使用私钥对其进行解密,并将该对称encryption密钥用于发送给服务器的数据。 除了安全方面之外,公钥/私钥encryption对于在所有数据传输中使用它太密集CPU – 通常只用于encryption其他encryption密钥或用于数字签名。
公钥系统可以做三件完全不同的事情:
发送私人数据:为此,您不使用您的公钥,而是使用您预期目的地的公钥。 因此,数据只能使用其私钥进行解密。
签署公共数据:如果你使用你的私钥encryption某个东西,任何人(使用你的公钥)都可以解密并阅读它,但是他们知道你是谁写的,而且没有被修改。 实际上,整个消息是不encryption的,只有一个用作签名的校验和。
build立一个私人通道:这是比较复杂的,最常用的方法是Diffie-Hellman密钥交换协议 。 这个简短的交换允许双方产生一个共同的秘密,即使有人拦截了通信,如果他没有一个私钥,他也不会得到这个共享的秘密。 然后,共享密钥被用于encryption其余的通信。
我想你已经阅读了前两个案例的描述,但是你的问题(和Mike Scott的答案 )似乎是第三个。
用公钥可以encryption并发送给私钥的持有者进行解密,则不能用公钥进行解密。
一台机器上可以有许多不同的密钥对。
SSH唯一使用公钥的方式是确定相应私钥持有者的身份。 关于唯一可以用SSH公钥来做的事情就是确定合作的authentication代理是否拥有相应的私钥。