首先,简要介绍一下加密技术。即将明文加密为密文,并通过通信路径发送,中途窃听者不会阅读或理解课文。在接收端接收时,密文被解密为明文。
加密算法一般可以分为两种:一种是对称加密,另一种是非对称加密。
1.对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
简单的讲就是发件人和收件人必须使用相同的钥匙(秘钥),因为使用的钥匙相同,所以才叫对称加密。比如A要给B发送一个加密文件,首先A会用这个秘钥对明文信息加密,加密完成后明文就变成了密文,B收到这个密文之后,必须要用和A相同的秘钥进行解密后才能看到原先的明文信息。
常用算法:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK ……
缺点:
- 在A和B共享秘钥的时候容易被黑客窃听
- 所有人共用一个秘钥,当人数达到上千或上万的时候,只要一个人的秘钥泄漏了,其他人都会受到影响,整体加密信息也会被破解
- 秘钥管理负担大
优点:
- 算法公开、计算量小、加密速度快、加密效率高
2.非对称加密
对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)
非对称加密解决了对称加密过程中秘钥容易被破解的问题。非对称加密不采用对称加密中大家都用相同秘钥的方法,而是每个人独立的生成“公钥-私钥”对,使用私钥加密的信息,只能由该私钥对应的公钥才能解密,同理,使用公钥加密的信息,只能由该公钥对应的私钥才能解密。其中公钥是可以对外公开的,而私钥只能自己知道,不对外公开。
比如:A生成了属于他自己的“A公钥-A私钥”对,B也生成了属于他自己的“B公钥-B私钥”对,当A想向B发送密文的时候:
代码语言:javascript复制A说:
“我想给你发信息,但是我想对信息加密变成密文发给你,你可以把你的B公钥发给我用来加密吗?”
B说:
“可以,我的公钥是:*#UYBHH767**IXA,你可以用这个公钥加密你要发的信息”
A说:
“我加密好了,这是加密后的信息:#SJ2HDSJ35KDH*##5JK5AHD1JKA,你可以用你的私钥解开得到明文”
B说:
“我用我的私钥解开了,已收到信息”
A说:
“好的”
从上面的聊天过程可以看到,B私钥始终没有暴露出去,只有B自己知道。即使发送过程中密文和B公钥被窃听了,他也解不开,因为B公钥始终在B手中。
常用算法:RSA、DSA、ECDSA ……
优点:
- 密钥分配简单
- 密钥的保存量少
- 可以满足互不相识的人之间进行私人谈话时的保密性要求
- 可以完成数字签名和数字鉴别
缺点:
- 公钥密码是对大数进行操作,计算量浩大,速度远比不上私钥密码体制
- 公钥容易被别人冒充,例如:C可以冒充B把自己的公钥给A,A一样可以用C的公钥加密信息然后发给C,此时A还被蒙在鼓里,以为C就是B,A的信息就这样被套走了
3.电子签名和电子证书
上面说到非对称加密的缺点是不能确定B公钥就是B本人的,也可能是C冒充的。既然双方无法100%确认就是其本人,那么就要借助第三方,而且这个第三方还必须要是中立的,类似于公证处。
解决办法就是数字证书,数字证书从本质上来说是一种电子文档,是由电子商务认证中心(CA中心)所颁发的一种较为权威与公正的证书。
数字证书特征:
- 第一,安全性。用户申请证书时会有两份不同证书,分别用于工作电脑以及用于验证用户的信息交互,若所使用电脑不同,用户就需重新获取用于验证用户所使用电脑的证书,而无法进行备份,这样即使他人窃取了证书,也无法获取用户的账户信息,保障了账户信息。
- 第二,唯一性。数字证书依用户身份不同给予其相应的访问权限,若换电脑进行账户登录,而用户无证书备份,其是无法实施操作的,只能查看账户信息,数字证书就犹如“钥匙”一般,所谓“一把钥匙只能开一把锁”,就是其唯一性的体现。
- 第三,便利性。用户可即时申请、开通并使用数字证书,且可依用户需求选择相应的数字证书保障技术。用户不需要掌握加密技术或原理,就能够直接通过数字证书来进行安全防护,十分便捷高效。数字证书是由CA中心所签发的,CA中心是一个具权威性、依赖度极高的第三方,其资格证书经国家颁发,可有效保障网络数据信息的安全性,使数据信息处国家掌握当中。用户在浏览网络数据信息或进行网上交易时,利用数字证书可保障信息传输及交易的安全性。
有了数字证书后,B就不会直接把B公钥给A,而是先通过CA中心颁发的电子证书认证B公钥就是B本人的公钥,即CA中心把B公钥加密到数字证书中,这时候B才会把数字证书和自己的B公钥给A,A这边看到数字证书中加密的B公钥和B自己发过来的B公钥是一样的,就可以确定这就是B本人的公钥,所以才可以放心的用这个公钥将想要发送给B的信息加密发送给B,不用担心信息发错人。
这里解释一下为什么CA中心颁发的电子证书可以认证B公钥就是B本人的公钥。其实CA中心也有自己的“公钥-私钥”对,当B把公钥和个人信息给CA中心后,CA中心会用自己的私钥把这些信息加密到数字证书,只有CA中心自己的公钥才可以解开。其中CA中心自己的公钥也叫做“根证书”。“根证书”黑客是无法篡改的,比如浏览器的根证书是浏览器厂商发布的时候预制上的,黑客如果想更换根证书,除非自己开发个浏览器,然后让用户用,不然的话篡改不了。
A就是通过CA中心的公钥解开证书中的信息后得到B的公钥,然后把里面证书里面的B公钥和B自己传过来的B公钥对比,如果一样,就可以确认B传过来的公钥确实是B本人的公钥。