信息加密主要是为了保证信息在传输的过程中被第三方窃取从而引起的安全问题,信息不经过加密
定义
对称加密是指加密和解密的密钥为同一个,用来加密数据的密钥同时也可以用来解密;
特点
(1)它的特点是加密速度快,使用简单,因为加密解密只需要同一把钥匙就行了;
(2)对称加密的破解难度是随着钥匙的大小增加而增加的,钥匙越大就越难破解,但是钥匙越大相应的据解密的时间也会越长;
对称加密的问题
(1)双方都必须事先约定好加密规则。
(2)密钥的数目难于管理。因为对于每一个合作者都需要使用不同的密钥
(3)无法适用于陌生的网络的环境,双方都必须是可信任的才可进行,而在互联网通信过程中我们通信的双方都是互不相识的,如果双方要约定加密规则,那么势必也要通过网络发送加密秘钥,因为网络环境本身就会存在被窃取的可能,我们发送密钥的请求本身又是不安全的。
运用对称加密有一个前提就是在发送信息前双方都必须知道加密的规则但是在互联网的环境下我们每天可能跟不同人发送信息,很多人我们之前根本没认识过,这种情况下我们根本不可能事先就约定好加密规则,那么我们就只能通过信息把加密规则(密钥)发送给对方,然后我们再根据加密规则来加密聊天信息,很显然这肯定是不可取的,不经过加密的数据在网络传输是没有任何安全性可言的,于是就出现了非对称加密;
定义
与对称加密不同,非对称加密的密钥是成对的(公钥和私钥)。私钥由自己安全保管不外泄,而公钥则可以发给网络中的任何人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。根据公钥是无法推导出私钥的;
特点
(1)比对称加密安全:加密和解密是不同的钥匙,非对称加密的私钥是由自己保管不会外泄的,除了自己没有任何人知道私钥,而对称加密只有一把密钥并且通信双方都要知道密钥,一旦密钥知道的人越多那么安全的风险就越大。
(2)更方便可扩展:公钥可以公布在网络中,任何人都可以拿着公钥和你进行通信,而对称加密密钥是不可能公布在网络中的,只能通过私下约定密钥规则。
(3)更方便可扩展:公钥可以公布在网络中,任何人都可以拿着公钥和你进行通信,而对称加密密钥是不可能公布在网络中的,只能通过私下约定密钥规则。
此时小芳和小明发送信息就会是如下流程:
1、小明把公钥告诉小芳,私钥由自己保存;
2、小芳用小明的公钥加密数据,然后把加密的数据发送给小明。
3、小明接收到小芳的消息后用自己的私钥解密消息。
4、小明再用自己的私钥加密自己需要回复小芳的信息,然后发送给小芳。
5、小芳获取到小明回复的信息后,用小明的公钥解密小明回复过来的信息。
非对称加密的问题
虽然非对称加密很安全,但是和对称加密比起来,它的解密速度非常慢,所以通常会用混合加密的方式进行通信,混合加密是用非对称加密的方式交换双方的对称加密秘钥,交换对称加密秘钥之后再用 对称加密的方式进行通信。
信息被篡改的风险
上面的对称加密和非对称加密已经解决了信息传输中的安全问题了,经过加密的数据黑客截取了也无法解密。但是还有一个问题,虽然黑客无法解密通信的内容,但是黑客可以篡改数据双方的通信数据,那么这种情况下我们如何识别数据经过网络传输之后是否被别人篡改过呢,这种情况下就需要用到数字签名了来验证数据是否为对方发出;
此时小芳给小明发送信息需要做4件事
首先对信息内容进行hash得到信息摘要值
用私钥加密信息摘要得到数字签名
然后用对称加密对信息内容和数字签名进行加密得到加密后的内容和数字签名
再使用自己得私钥对对称加密的密钥进行加密
1、小芳发送信息前首先把需要发送的数据用哈希函数计算出一个哈希值出来得到一个信息摘要
2、小芳用自己的私钥对信息摘要进行加密得到一个数字签名(因为私钥加密的数据只有公钥才能解密,如果小明用小芳的公钥能解密到正确的数据,那证明此信息必定是由小芳发出)。
3、小芳然后用“对称秘钥”对加密信息内容和数字签名进行对称加密。
4、最后小芳用小明的公钥对“对称秘钥”进行非对称加密,然后把用加密过后的“对称加密秘钥”,和用对称加密秘钥加密过后的信息内容、数字签名一起发给了小明。
当小明接收到小芳的信息后,小明需要做4件事
1、当小明收到了小芳的信息后,首先用自己的私钥解密得到对称加密的秘钥。
2、然后用对称加密秘钥解密得到 信息信息内容和数字签名。
3、然后用小芳的公钥解密数字签名得到信息摘要。
4、最后把信息内容进行哈希得到哈希值与解密过后得到的信息摘要进行比对,如果相同则信息没有被篡改过。
身份确认证的问题
数字签名解决了信息可能会被篡改的问题,但是还有另外一个问题就是小明如何确定当前给我发信息的人就是小芳呢?黑客也可以伪装成小芳的身份然把小芳的公钥替换成自己的公钥,这样小明无法分辨出来的。
这样就衍生了一个身份认证的问题,显然这个身份证明不能由当事人自己发出来,只能由一个大家都信任的公开机构**(certificate authority,简称CA)**来发行证书,大家先要到CA去申请一个数字证书(证书信息包括发布机构,所属人,公钥,过期时间等信息);
最后通讯流程变成下面的情况:
1、小芳首先去CA申请一个数字证书;
2、小芳把信息加密后+加上签名和数字证书发送给小明;
3、小明收到小芳信息后,拿着小芳传过来的数字证书到CA去验证;
4、如果查询到对应数字证书信息里的所属人的确为小芳,那么身份真实可以进行通讯;
5、然后小明根据数字证书信息生成一个专属于小芳和小明加密方式(这里为对称加密),两个人通过此加密方式进行通讯;
https://zhuanlan.zhihu.com/p/50046393