密码学基础知识

《密码学基础知识》

参考文章:《现代操作系统》
                  《为什么需要PKI》王玉琨  计算机世界报

        转载请注明出处:http://blog.youkuaiyun.com/rosetta


        看完本文相信会对如:对称、非对称密钥密码技术、数字证书、数字签名、证书发放机构(CA)、公开密钥的安全策略等, 有一个大致的了解。详细的可看《为什么需要PKI》,写得比较容易明白,本文为自己的学习笔记。
        如果甲乙双方要保证通信的安全,最自然的做法就是对通信内容加密,这里的加密是指对称加密算法,比如AES、3DES、SM1、SM4等,对称加密算法需要一个双方约定的密钥,加密解密都用这个密钥,如果这个密钥被黑客盗取,那么就可以解密。
        所以后来就引进非对称加密算法,比如RSA,SM2算法,这种算法有一对密钥:公钥和私钥。如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫做非对称加密算法 。
        公钥可在网络上传送,私钥自己保存。这样甲就可以使用乙的公钥加密,即使黑客获取了此公钥也解不开,因为只有乙的私钥才能解密。既然这样,那为什么不用直接用公钥对原始数据直接加密后发送给对方,而是要用对称加密算法加密原始数据,这里考虑到速度效率问题,因为非对称加密算法的加解密速度很慢,对称加密算法的加解密速度是其几十倍甚至几非倍,所以对很小数据量的对称密钥使用非对称加密算法,而对数据量很大的原始数据使用对称加密算法才可行。DH算法也是非对称算法,它主要用于密钥交换,在国际协议IKE协商密钥交换的时候就是用DH算法(在国密协议里密钥是通过非对称算法的公钥加密的),它的原理也是差不多,利用数学难题特性,最终的目的是在公网上不直接传送密钥。
        这样貌似可以达到安全传送的目的了,但是这样不能保证数据的可靠性和完整性以及抗抵赖等问题。比如黑客使用乙的公钥(之前说了公钥是公开传送的,所以有可能被盗取)加密了一份非正常文件,乙用私钥解开后却不知道这其实不是甲发的;再比如甲发完信息给乙后拒不承认曾经发过这样的消息给乙,还有比如乙随便拿一个不是甲发给他的文件说是甲发的,那么这怎么证明谁是谁非呢?所以就有了数字签名来解决这一系列问题。        
        数字签名是通过散列算法,如 MD5、SHA1、SM3等算法从大块的数据中提取一个摘要。而从这个摘要中不能通过散列算法恢复出任何一点原文,即得到的摘要不会透露出任何最初明文的信息, 但如果原信息受到任何改动,得到的摘要却肯定会有所不同。因此甲可以对文件进行散列算法得到摘要,并用自己的私钥加密,这样即使黑客截获并用公钥解开也没用,因为他得到只是数据的摘要。但乙却不一样,他可用甲的公钥解密,得到其摘要(如果用甲的公钥能够解开此摘要,说明此摘要肯定是甲发的,因为只有甲的公钥才能解开用甲的私钥加密的信息,而甲的私钥只有甲自己知道),并对收到的文件(解密后文件)也进行同样的散列算法,通过比较其摘要是否一样,就可得知此文件是否被篡改过(因为若摘要相同,则肯定信息未被改动,这是散列算法的特点)。这样不仅解决了证明发送人身份的问题,同时还解决了文件是否被篡改问题。     
        那么抗抵赖是如何进行的呢?即发送方如果拒不承认曾经发送过的报文,那么接收方可以拿出发送方发给他的签名数据和签名之前的哈希值给第三者,第三者拿出发送方的公钥对签名块解签,解签的结果也是一个哈希值,如果这个哈希和之前的哈希相同,说明发送方确实发过这样的报文(这原理上面那段讲得其实一样)。如果接收方伪造接收后解密的结果,那么接收方是提供不了伪造结果的私钥签名值(因为甲方的私钥乙方是不知道的,所以乙不可能提供一个用甲的私钥签名后的签名值。)。
        通过对称加密算法加密其文件,再通过非对称算法加密其对称密钥,又通过散列算法证明其发送者身份和其信息的正确性,这样是否就万无一失了? 回答是否定的。问题在于乙并不能肯定他所用的所谓甲的公钥一定是甲的, 解决办法是用数字证书来绑定公钥和公钥所属人。数字证书等问题暂时理解的不够深,以后再做总结。

        通过以上问题的解决,就基本满足了安全发送文件的需求。下面总结一下这个过程,对甲而言整个发送过程如下: 
        1. 创建对称密钥(随机产生,并且是一次性的),用其加密原始文件,并用乙的公钥加密对称密钥。 
        2. 创建数字签名,对合同进行散列算法(如MD5算法)并产生原始摘要,甲用自己的私钥加密该摘要。 
        3. 最后,甲将加密后的原始文件、加密后的密钥、加密后的摘要,以及甲的数字证书(公钥)一起发给乙。 
        而乙接收加密文件后,需要完成以下动作: 
        1. 接收后,用乙的私钥解密得到对称密钥,并用对称密钥解开加密的原始文件,得到原始文件明文。 
        2. 通过甲的数字证书获得属于甲的公钥,并用其解开摘要(称做摘要1)。 
        3. 对解密后的文件使用和发送者同样的散列算法来创建摘要(称做摘要2)。 
        4. 比较摘要1和摘要2,若相同,则表示信息未被篡改,且来自于甲。 
        

        备注:       
         非对称算法如RSA、SM2、DH密钥交换,对称加密算法如AES、3DES、SM1、SM4,哈希算法如MD5、SHA1、SM3。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值