小米的博客
感恩能够遇见

在平时工作学习中经常听到数字证书、数字签名之类的名词,感觉很熟悉但就是不知道具体是个啥玩意。前几天在学习Git的时候刚好遇到公匙、私匙的概念,就决定弄清楚一番。

首先讲一下加密解密算法,加密解密算法分两种,一种是对称加密,另一种是非对称加密。在对称加密算法中,加密使用的密钥和解密使用的密钥是相同的。也就是说,加密和解密都是使用的同一个密钥。在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。公匙密码体制就是一种常见的非对称加密,在公匙密码体制中,公匙加密的数据只有对应的私有密钥才能解密,私有密钥加密的数据,也只有对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥。

那什么是数字签名呢?在信息传递中,先用hash对信息就行一次运算,然后把运算的结果再通过私匙进行加密,加密后作为一个签名连同信息一起发出去。这样当接收方在收到信息后,对传递的内容再做一次hash运算,并把运算的值和所附带的hash值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过。上面的这个加密的hash值就是数字签名。

到目前为止,上面的方法看上去是安全的,但还是有一个BUG,就是当你的公匙被别人偷偷的换掉的时候,当你拿着一个被更换过得公匙通信的时候,也就是你信息泄露的时候。为了解决这个问题,数字证书闪亮登场了。数字证书就是证书持有者找证书中心(certificate authority,简称CA)为公匙做的一种认证。证书中心用自己的私匙对证书持有者的公匙和相关的信息进行加密生成数字证书。当证书持有者再和用户进行通信的时候就可以在签名的同时把数字证书一起附上。这样用户就可以用CA的公匙解开数字证书,拿到证书持有者真正的公匙。

最后讲一下一个证书应包含的内容。1、证书的发布机构。2、证书的持有者。3、证书的有效期。4、公匙。5、签名使用的算法。6、指纹及指纹算法。

这篇文章还没有人发言,快抢第一!

发表评论