第十八天:对称加密-非对称加密-数字签名-证书
对称加密
对称密码中,加密用的密钥和解密用的密钥是相同的
如何解密
DES加密
DES是一种将64bit明文加密成64bit密文的对称加密算法,密钥长度是56bit
规格上来说,密钥长度是64bit,但每隔7bit会设置一个用于错误检查的bit,因此密钥长度实质上是56bit
由于DES每次只能加密64bit的数据,遇到比较大的数据,需要对DES加密进行迭代((反复)
目前已经可以在短时间内被破解,所以不建议使用
3DES加密
3DES,将DES重复3次所得到的一种密码算法,也叫做3重DES三重DES并不是进行三次DES加密(加密→加密→加密)
而是加密(Encryption)→解密(Decryption)→加密(Encryption)的过程
目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题
三把密钥是不一样的,如果所有密钥都使用同一个,则结果与普通的DES是等价的
AES加密(Advanced Encryption Standard)
取代DES成为新标准的一种对称加密算法,又称Rijndael加密法
AES的密钥长度有128、192、256bit三种
目前AES,已经逐步取代DES、3DES,成为首选的对称加密算法
其它加密
https : / / www.sojson.com/ encrypt des.html
https: //tool.chinaz.com/tools/md5.aspx
密钥配送问题
传输过程中,我的密钥也会传输,就会被窃听者窃听到你的密钥,当窃听者拿到密钥也会解密后拿到明文
如果Alice将使用对称加密过的消息发给了Bob只有将密钥发送给Bob,Bob才能完成解密在发送密钥过程中
心
可能会被Eve窃取密钥最后Eve也能完成解密
如何解决密钥配送问题
有以下几种解决密钥配送的方法
-
事先共享密钥(比如私下共享)
-
密钥分配中心(Key Distribution Center,简称KDC)
-
Diffie-Hellman密钥交换
-
非对称加密
非对称加密
在非对称加密中,密钥分为加密密钥、解密密钥2种,它们并不是同一个密钥
公钥密码中,加密用的密钥和解密用的密钥是不同的
加密密钥:—般是公开的,因此该密钥称为公钥(public key)
- 因此,非对称加密也被称为公钥密码(Public-key Cryptography)
解密密钥:由消息接收者自己保管的,不能公开,因此也称为私钥(private key)
具体流程
首先由E生成一对密钥—公钥和私钥,当ABCD向E发送数据时,ABCD用公钥进行加密,然后由E用私钥进行解密
公钥、私钥
- 公钥和私钥是一一对应的,不能单独生成
- 一对公钥和私钥统称为密钥对(key pair)
- 由公钥加密的密文,必须使用与该公钥对应的私钥才能解密
- 由私钥加密的密文,必须使用与该私钥对应的公钥才能解密
那为什么不直接用非对称加密直接解决发送呢?还要用非对称加密解决对称加密的密钥问题?
因为非对称加密安全,相对的,他的成本就会很高加密解密速度就慢
而对称加密虽然简单不安全,但是他的加解密速度快
解决密钥配送问题
- 由消息的接收者,生成一对公钥、私钥
- 将公钥发给消息的发送者
- 消息的发送者使用公钥加密消息
- 非对称加密的加密解密速度比对称加密要慢
RSA加密算法
目前使用最广泛的非对称加密算法是RSA
RSA的名字,由它的3位开发者,即Ron Rivest、Adi Shamir、Leonard Adleman的姓氏首字母组成
混合密码系统
对称加密的缺点
- 不能很好地解决密钥配送问题(密钥会被窃听)
非对称加密的缺点
- 加密解密速度比较慢
混合密码系统:是将对称加密和非对称加密的优势相结合的方法
- 解决了非对称加密速度慢的问题
- 并通过非对称加密解决了对称加密的密钥配送问题
- 网络上的密码通信所用的SSL/TLS都运用了混合密码系统
混合密码加密
会话密钥(session key)
为本次通信随机生成的临时密钥
作为对称加密的密钥,用于加密消息,提高速度
加密步骤(发送消息)
- 首先,消息发送者要拥有消息接收者的公钥
- 生成会话密钥,作为对称加密的密钥,加密消息
- 用消息接收者的公钥,加密会话密钥
- 将前2步生成的加密结果,一并发给消息接收者
发送出去的内容包括
- 用会话密钥加密的消息(加密方法:对称加密)
- 用公钥加密的会话密钥(加密方法:非对称加密)
混合密码—解密
解密过程图解
混合密码-加密解密流程
**Alice >>>>>> Bob
发送过程(加密过程)
- Bob先生成一对公钥、私钥
- Bob把公钥共享给Alice
- Alice随机生成一个会话密钥(临时密钥)
- Alice用会话密钥加密需要发送的消息(使用的是对称加密)
- Alice用Bob的公钥加密会话密钥(使用的是非对称加密)
- Alice把第④、⑤步的加密结果,一并发送给Bob
接收过程(解密过程)
- Bob利用自己的私钥解密会话密钥(使用的是非对称加密算法进行解密)
- Bob利用会话密钥解密发送过来的消息(使用的是对称加密筹法进行解密)
数字签名
业务场景
Alice发的内容有可能是被篡改的,或者有人伪装成Alice发消息,或者就是Alice发的,但她可以否认
问题来了: Bob如何确定这段消息的真实性?如何识别篡改、伪装、否认?
解决方案
数字签名
在数字签名技术中,有以下2种行为
生成签名
- 由消息的发送者完成,通过“签名密钥”生成
验证签名
- 由消息的接收者完成,通过“验证密钥”验证
如何能保证这个签名是消息发送者自己签的?
- 用消息发送者的私钥进行签名
数字签名-过程
图解
如果有人篡改了消息内容或签名内容,会是什么结果?
签名验证失败,证明内容被篡改了
数字签名不能保证机密性?
数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改
数字签名的作用
确认消息的完整性识别消息是否被篡改防止消息发送人否认
非对称加密一公钥、私钥再总结
在非对称加密中,任何人都可以使用公钥进行加密
在数字签名中,任何人都可以使用公钥验证签名
既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密
公钥负责加密,私钥负责解密
既然是签名,那肯定是不希望有人冒充我发消息,所以只有我才能签名
私钥负责签名,公钥负责验签
公钥的合法性
如果遭遇了中间人攻击,那么公钥将可能是伪造的
如何验证公钥合法性
证书
证书
说到证书
首先联想到的是驾驶证、毕业证、英语四六级证等等,都是由权威机构认证的
密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似
- 里面有姓名、邮箱等个人信息,以及此人的公钥
- 并由认证机构(Certificate Authority,CA)施加数字签名
CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或组织
证书-使用
各大CA的公钥,默认已经内置在浏览器和操作系统中
注册和下载
查看可以证书
-
Windows键+R>>>输入mmc
-
文件>>>添加/删除管理单元
-
证书>>>添加>>>我的用户账户>>>完成>>>确定