本教程用于零基础的CA从业人员了解行业基础知识,从而更好的熟悉相关业务。
密码学是构成CA体系的基石,因此在第一部分主要讲解一下与CA相关的算法以及数字签名是什么。
这次的教程主要包含以下四个关键词:
在古代,密码常用于军事领域,用于隐秘地传输信息。
比如说在古代如果有一个将军需要向前线传输一条信息:
hello world
并向前线的士兵做好如下约定:
我传输给你们的信息,所有的字母我都会加一,a->b,b->c,z->a
那么前线士兵在收到信息之后,会发现是一条这样的数据:
ifmmp xpsme
根据和将军的约定,对照着字母表把所有的字母都减一之后,就得到了将军的信息
ifmmp xpsme
↓
hello world
在上面这个简单的加密过程中,包含了两个部分:
在解密过程里面,也包含了两个部分:
以前的密码学和上面提到的例子都很相似,包含算法与密钥两个部分,加密就是将普通信息转换成难以理解的密文,而解密则是相反的算法,其中有一个很重要的特征就是加密与解密共用一个密钥,这种算法就叫做对称算法。
通常算法的种类有限,但是一个算法的密钥是无限的。
对称算法要能安全生效的一个条件就是双方约定好算法与密钥两个部分,在以前,使用密码手册或者使用密码机都是双方确认密钥的过程,但是在信息时代,通信的双方一个在亚洲,一个在美洲,线下可能永远不接触,导致密钥无法交换,或者密钥只能在线上通过网络传输。
理论上,你们小区的网络管理员可以获取到你所有上网和外界传输的信息。
这种情况就导致了不管是多么复杂的对称加密算法,都无法防范中间人攻击,因为通信双方的所有信息都会被中间人截取,包括密钥,一旦中间人持有算法和密钥,通信双方的信息对于中间人来说都是明文传输。
非对称算法就是为了解决该问题而产生的,数学家提出了这样一种密码算法:密钥成对出现,密钥1加密的数据只有密钥2才能解开,密钥2加密的数据只有密钥1才能解开。在进行信息交换的时候,密钥持有人自己保留密钥1,称为私钥,把密钥2公开到互联网上,称为公钥。
如果有人向你传输数据,使用你的公钥来加密信息发送给你,这种算法可以从技术上防范中间人截取信息的风险,中间人通过截取传输的数据,能够知道公钥与算法,但是依旧无法解密通过公钥加密的信息,这条信息只有私钥持有人才能解开。这就是非对称算法的加密应用。
另一方面,如果你想向别人传递一条信息,可以使用私钥来加密,所有持有公钥的人都能解开,约等于明文,这条数据只有私钥持有人能生成,从侧面来说这条消息是无法被篡改的。这就是非对称算法的签名应用。
来对比一下两种算法的区别:
对称算法 | 非对称算法 | |
---|---|---|
运算速度 | 较快 | 慢 |
密钥数 | 一个 | 一对 |
在网上看到一组测试数据,一组160byte长度的运算(约80个汉字的一段话),重复加密10000次,对称算法的耗时为0.13s,非对称算法为190秒,速度相差一千多倍。这导致一个问题,就是单纯的使用非对称算法的签名应用于加密应用在大文件上效果很差,比如一部1080P的电影,如果你需要加密传输,可能加密时间就是十五分钟。
正因为大文件的处理上,非对称算法不具备优势,人们就在思考,是否能将大文件从某种形式上转变为小文件,以利用非对称算法的优势。
摘要算法(哈希算法,HASH)是一种的不可逆的算法,粗略的讲,就是一种我们上面提到的转换大文件为小文件的算法。
首先我们说一下摘要算法的成员有哪些:
由于算法的细节比较复杂,我们也不关心,只来描述一下摘要算法的效果: 摘要算法可以对一个任意大的文件做运算,得到一个较短的定长字符串。
电影“加勒比海盗4”的MD5值为:4cf6d3dfbb8204daf0bd22df1ab2f6e3
字符串“123456”的MD5值为:e10adc3949ba59abbe56e057f20f883e
可以总结一下:
可以说,摘要就是“数据的指纹”。
有了摘要算法的帮助,非对称算法终于可以运用到大文件上而不用考虑运算的效率了,因为可以先用摘要算法算出这个大文件的“指纹”,也就是摘要值,摘要值通常很短,不需要考虑运算时间。
数字签名的流程:
在上面这个流程中,私钥加密的摘要值就是我们常说的数字签名。