1. 初始的做法就是对明文按照一定的规则做变换。这个一定的规则就相当于一个秘钥。知道了这个密钥,就能破解密文。
这个做法的问题有两个:第一个根据大量密文,很容易猜测出明文。第二个,如果需要多个人通讯,
密钥需要存放多处,增加了丢失的风险
2. 为了解决上面的情况,发明了非对称加密
就是有一对钥匙,一个密钥,一个公钥.用密钥加密的只能用公钥解密,用公钥加密的,只能用密钥解密
这个怎么使用?现在假设A,B双方需要通讯,A有自己的密钥A0和公钥A1,B有自己的密钥B0和公钥B1.
双方将公钥公布出去。A向B发消息的时候用B的.公钥加密获得密文B',这个B'现在即使被窃取,也只有B能解开。
保证了密文的安全性,多方通讯也不需要将密钥多处存放。
3. B怎么和A通讯呢?同样的B可以用A的公钥加密然后回信息给A。
4. 现在双方的通讯消息不能被解密了,但是怎么保证消息被人替换或者篡改呢?比如有一个中间人C,
将A发给B的消息替换成了自己的,这个时候C用B的公钥加密发给B,B还可能认为是A发来的消息,
可能会回复一些敏感数据。(这个时候甚至可以附上C自己的公钥,让B用这个加密回消息)
1. 数字签名的原理是A将密文t1做一个hash运算得到一个摘要z1,将z1和自己的一些信息i1一起用自己的私钥s1一起加密得到签名m1,
然后将密文t1和签名m1一起发送给对方B
2. B收到之后,用A的公钥PA将m1解密得到z1'和i1',这个时候对t1做hash运算得到的摘要z2和z1'做比较,如果不相同,则这条消息被修改了。
3. 所有数字签名的核心是用自己的私钥做加密,如果用谁的公钥解开了,那就证明对方是谁。
这个时候别人替换或者篡改都没可能了,篡改用hash保证的。