数据加密iOS加密技术iOS加密解密

浅析数字签名和数字证书

2018-05-21  本文已影响4人  艺术农

基础知识

对称加密与非对称加密

概述

在现代密码学诞生以前,就已经有很多的加密方法了。例如,最古老的斯巴达加密棒,广泛应用于公元前7世纪的古希腊。16世纪意大利数学家卡尔达诺发明的栅格密码,基于单表代换的凯撒密码、猪圈密码,基于多表代换的维吉尼亚密码,二战中德军广泛使用的恩格玛加密机….但最终都找到了有效的破解算法。
现代密码学的诞生标志是1977年1月由美国国家标准局公布的数据加密标准(Data Encryption Standard,DES)。
在经过20多年之后,为适应现代的安全要求,2000年美国国家和标准技术协会筛选和评测出了被称为AES(Advanced Encryption Standard)的加密算法作为新的加密标准。目前,AES已被广泛使用,且未发现致命缺陷。到目前为止,AES是一个安全的加密算法。
然而,在加密算法之外,面临一个问题,那就是:秘钥的分发。就是说,解密方如何获得加密方的秘钥呢? 从而出现了:对称加密和非对称加密。

对称加密

对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。
常见的对称加密算法:DES,AES,3DES等等。

非对称加密

非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。
常见的非对称加密算法:RSA,ECC

区别

对称加密算法相比非对称加密算法来说,加解密的效率要高得多。但是缺陷在于对于秘钥的管理上,以及在非安全信道中通讯时,密钥交换的安全性不能保障。所以在实际的网络环境中,会将两者混合使用.

数字摘要

数字摘要是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。数字摘要就是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。

数字签名

1. image

鲍勃有两把钥匙,一把是公钥,另一把是私钥。

2. image
鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。
3. image

苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

4. image
鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
5. image
鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。
6. image
然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。
7. image
鲍勃将这个签名,附在信件下面,一起发给苏珊。
8. image
苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。
9. image
苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
10. image
复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。
11. image
后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
12. image
鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。
13. image
苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。

C/S模型

主要原理分为两部分:
详细步骤:
  1. 首先,客户端(浏览器)向服务器发出加密请求。
  2. 服务端预先计算出一对秘钥pub/pri。将私钥保密,将公钥公开。
  3. 服务器会将自己的公钥用CA证书的私钥加密,然后将数字证书发送给客户端。
  4. 客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。
  5. 如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。
  6. 如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。
  7. 如果数字证书是可靠的,客户端就可以使用列表中的公钥解密证书,获取服务器公钥(pub),如果能解密证书,则验证了获取的公钥是来自服务器的。
  8. 接下来客户端会通过AES计算出一个对称加密的秘钥X。 然后使用服务器公钥(pub)将X进行加密。
  9. 客户端将加密后的密文发送给服务端。服务端通过私钥(pri)解密获得X。
  10. 然后两边的通讯内容就通过对称密钥X以对称加密算法来加解密。

数字摘要与数字签名、加密等技术结合使用的过程如下:

  1. 发送方S将原文信息进行Hash运算,得到Hash值,即数字摘要MD;

  2. 发送方S用自己的私钥PVS,采用非对称加密算法RSA,对数字摘要MD进行加密,得到数字签名DS;

  3. 发送方S用对称算法DES的对称密钥SK对原文信息、数字签名DS及发送方证书的公钥PBS采用对称算法加密,得到加密信息E;

  4. 发送方S用接收方R的公钥PBR,采用RSA算法对对称密钥SK进行加密,形成数字信封DE。该过程就像将对称密钥SK,装进了一个用接收方的公钥加密的信封里。

  5. 发送方S将加密信息E和数字信封DE一起发送给接收方R;

  6. 接收方R将收到的数字信封DE用自己的私钥PVR解密,取出对称密钥SK;

  7. 接收方R用对称密钥SK通过DES算法对接收到的加密信息E进行解密,还原出原文信息、数字签名DS以及发送方证书的公钥PBS;

  8. 接收方R用发送方S的公钥PBS解密数字签名,得到数字摘要MD;

  9. 接收方R将原文信息用同样的Hash算法,求得一个新的数字摘要MD1;

  10. 比较两个数字摘要MD和MD1,若一致,则认为收到的就是未被篡改的原文,否则,认为原文被篡改,拒绝该签名。

参考资料

上一篇下一篇

猜你喜欢

热点阅读