密码学要解决的三个问题
数据的安全性
数据的完整性
数据来源的可确认性
要达到上述三个目标,需要理解以下概念:
对称加密,非对称加密,Hash,签名,证书
对称加密
加解密使用同一把密钥
加解密速度快
非对称加密
加解密使用不同的密钥
加解密速度慢
公钥和私钥要成对使用
Hash
生成数据摘要信息,Hash过程不可逆,即由摘要信息不可还原出源数据;
任何微小的改动,生成的摘要信息都会不一样,可以确认信息是否被篡改,确保数据的完整性;
签名
非对称加密中,私钥和公钥是成对使用的。由私钥加密的数据,只能由配对的公钥解密。
签名就是A用私钥加密后,接收数据的一方用A的公钥可以成功能解密,那边可以证明数据是由A所发;
证书
假设有人冒充A生成密钥对,要如何知道呢?显然这个就不是算法能解决的事情了。为了保证A的证书是由A所持有,需要一个公正的第三方来保证。这个第三方所分发的数字签名就是证书。
我们用第三方机构的公钥解密出来的数据,包含有A的公钥。由于第三方的权威性,我们认为A的公钥是可信的,由此用A的公钥正常解密数据,也就说明了数据的来源是A。