作者:爱塔居
专栏:计算机网络
目录
文章目录
前言
一、对称加密
二、非对称加密
既然要保证数据安全,就需要进行“加密”。网络传输中,不再直接传输明文了,而是加密之后的“密文”。加密的方式有很多,但整体上可以分成两大类:对称加密和非对称加密。
对称加密就是通过同一个“密钥”,将明文加密成密文,并且也能把密文解密成明文。引用对称加密之后,即使数据被截获,由于黑客不知道密钥是什么,因此就无法解密,不知道请求的内容。
但是,服务器同一时刻是给很多客户端提供服务的,每个人用的密钥必然不同。
数据加密标准DES属于对称密钥密码体制。DES是一种加密分组密码体制。在加密前,先对整个的明文进行分组。每一个组为64位长的二进制数据。然后对每一个64位二进制数据进行加密处理,产生一组64位密文数据。最后将各组密文串接起来,即得到整个的密文。使用的密钥
占有64位(实际密钥长度位56位,外加8位用于奇偶校验。)
DES的机密性仅取决于对密钥的保密,而算法是公开的。DES的问题是它的密钥长度。56位长的密钥意味着共有2^56种可能的密钥。这种密文标准在芯片的迅速发展下,不再安全。
服务器就需要维护每个客户端和每个密钥之间的关联关系,很麻烦。比较理想的做法,就是能在客户端和服务端建立连接的时候,双方协商确认这次的密钥是什么。
但是如果直接把密钥明文传输,黑客也会获得密钥。
因此,密钥的传输需要加密传输,这时又需要密钥的密钥了。
非对称加密要用到两个密钥,一个叫做“公钥”(pub),一个叫做“私钥”(pri)。
公钥和私钥是配对的,没有规定哪个用来加密,哪个用来解密。最大的缺点就是运算速度非常慢,比对称加密慢得多。
也可以反过来:
通常是公钥加密,私钥解密。
我们可以举一个生活中的例子:
把公钥看作是锁,私钥看作是钥匙。
A想要把重要文件交给B,但是B不在办公室。于是,B给了A一个锁(公钥),让A把文件放在B的柜子里,锁住。而开锁的钥匙,只有B手中有。这期间,无论怎样,坏人只能拿到锁,没有办法开柜子,拿到文件。
客户端是希望把自己的key安全地传给服务器,不被黑客拿到。
客户端和服务器的业务数据传输,仍然是使用对称加密的方式(对称加密速度快,成本低)。只不过,为了保证对称密钥能够安全到达服务器,这才引入非对称密钥,来保护对称密钥。在对称密钥传输完成后,就不用非对称密钥,改用对称密钥了。
这就真的万无一失了吗?那当然不是。
中间人攻击,破解的关键在于让客户端能够信任公钥!!这就需要权威机构了。
如何针对证书进行校验
1.得到初始的签名:客户端使用系统中内置的权威机构的公钥,针对上述证书中的加密签名进行解密,得到了初始的签名。我们的电脑或实际系统里,默认已经安装根证书,根证书里记录了可以信任的CA机构以及公钥。所以黑客是无法在网络中进行截获或者篡改的。
2.计算现在的签名:客户端使用同样的签名计算算法,基于证书的属性重新计算
3.比较两个签名是否相同。如果相同,说明证书中的数据都是未被篡改的原始数据包。如果签名不同,说明证书的数据被篡改过,客户端的浏览器弹框报错。
这个权威机构的作用就是让客户端信任这个公钥是安全的,是服务器给的,而不是被黑客篡改的公钥。黑客也有公钥,可以对签名进行解密,可以进行同样的校验,但不能改公钥!
黑客要篡改公钥,就需要把证书中的服务器的公钥,替换成自己的公钥。黑客需要针对证书的各个属性,重新计算签名,不然就会被客户端发现。计算完的签名,黑客不知道pri2,是无法对签名进行加密的。这也就确保了数字证书的不可伪造性。