1.公钥加密,又叫非对称加密,一般指的是用一组密钥来保证通信的安全。(公钥,私钥)成对存在且惟一,典型的公钥算法有 RSA(计算出的是1024位,128字节),顺便提一下与公钥加密算法相对应的就是传统的 私钥加密(对称加密),典型的有DES算法。
2.数字签名的过程和作用
公钥一般用来加密信息,而私钥更多用来加密摘要,如网站要给个人发送网页信息,为了确保网页信息确实是由该网站发出的并且中途没有被修改,则先对网页信息进行MD5摘要计算(生成32位十六进制的摘要),这个摘要就被称为数字签名。
第一步,个人接收到网站发过来的信息和数字签名,用该网站的公钥解密数字签名,如果可以正确解密,则证明确实是由该网站主动发出的网页,而且数字签名具有不可否认性,因为只有签名的一方具有私钥,能进行加密的动作;第二步,对网页同样进行MD5摘要计算,将得到的摘要与刚刚解密出来的摘要进行比对,如果一样,则证明网页文件中途没有被篡改,这即叫作验证数据的完整性。
3.为了公证密钥对与发行方的一一对应性,需要证书中心(CA),CA用自己的私钥对网站信息及网站的公钥一起进行私钥加密,这样就表明这对密钥合法,值得信任,浏览器今后就用CA的公钥解密出网站的公钥。可以放心的使用对应网站的公钥。与没有数字证书不同的是,现在网站给用户发送信息时,要将信息,数字签名,数字证书一起发送。
4.在SSH中,不存在证书中心。假如我们是A主机,向B主机发出登陆请求,那么B就将它的公钥发给我们,如果我们信任这个公钥,则用这个公钥加密我们的密码,发给B。这里存在一个问题,如果中间人C冒充B,将C自己的公钥发给我们,我们以为是B,依然用收到的公钥加密并回传,那么C通过用私钥解密就可以得到我们的密码。这样C就可以去登陆B了,这就是中间人攻击。
我们用SSH首次登陆一个主机时,它会提示无法确定主机的真实性,并会给出RSA公钥的指纹(将1024位128字节的RSA公钥进行MD5摘要计算,压缩成128位16字节的数据),怎样认证,没有其它办法,远程主机或者网站必须公示它的公钥指纹,我们自己进行核对是否一致,如果信任就直接进行登陆。