因为我是信息安全专业的,面试的时候就经常被问到这个,很神奇……
实际上光RSA的应用就太多了,说2个最最常见的吧
1. TLS/SSL
TLS加密首先用公钥加密协商一个私钥出来。
之后用这个协商出来的私钥进行对称加密传输。
(以下摘自维基百科:)
为了生成会话密钥用于安全连接,客户端使用服务器的公钥加密随机生成的密钥,并将其发送到服务器,只有服务器才能使用自己的私钥解密。
利用随机数,双方生成用于加密和解密的对称密钥。这就是TLS协议的握手,握手完毕后的连接是安全的,直到连接(被)关闭。如果上述任何一个步骤失败,TLS握手过程就会失败,并且断开所有的连接。
这样做的好处:
1. 因为公钥加密效率太低,实际传输时必须用对称加密。
2. 对称加密的密钥每次都会更换,由于公钥加密的特点,可以通过加密传递私钥。
2. SSH的RSA签名登录
这个在git中有非常广泛的应用,下面介绍一下原理:
假设你有一台自己的PC,叫做A;一台服务器,叫做B。
(*事实上,在我们使用github的时候,我们自己的电脑就是A,github就是B)
你尝试在A上通过SSH登录B。但是每次都要输入SSH密钥,很麻烦,起的太简单又总有弱智破你的弱密钥来DDos,怎么办?
简单,你可以在A上生成一对RSA公钥和密钥,分别存在两个文件里。
然后,把公钥文件拷贝到B上,设置B成为能提供这个公钥的对应私钥的人就可以登录。
(这个过程在github上也是手动的,github的settings中SSH选项里一般都有你之前设置的RSA,只不过你可能已经忘了)
注意这里不是使用RSA加密信息,而是使用RSA签名来认证。