数字证书原理简介

在计算机领域,数字证书已经成为一个不可替代的技术方案,用于实现对网络通信的安全加密以及身份认证等。得益于各类软件对证书技术的高度集成,只需要通过一些简单配置或API调用就可以实现证书接入,例如浏览器与Web应用服务器的HTTPS协议通信、UKey证书管理及使用等,在这里简单概述下数字证书从原理到实际应用的一些个人理解。

数字证书原理

在介绍证书原理前,首先需要说明一下加密算法机制。

数据加密与解密过程
数据加密与解密过程

加密算法从密钥类型分为对称加密与非对称加密两类。对称加密的加密与解密过程使用相同的密钥(密码),即使两者的密码不同,也能够由其中的一个很容易地推导出另一个,因此有加密能力就意味着有解密能力;非对称加密则采用不同的密钥,并且加密密钥与解密密钥存在着相互配对的关系。假设这一对密钥为A和B,使用A进行数据加密,只有用B才能将密文解开,同样如果用B进行加密的话,就必须使用A才能解密,从而非对称加密是以一个不可逆的过程进行的。或许你会疑问,如果非对称密钥之间存在对应关系,那么是否表示可以通过算法推导来从密钥A计算得到密钥B。从理论上来讲这种破解方案是可行的,不过非对称加密设计的目的就是保证让这种逆向推导非常困难甚至无法执行,例如常见的RSA密钥机制是大素数质因数,由于数学中大素数分解非常困难,目前的计算能力下很难对其进行推导,从而确保密钥对的安全性。

密钥关系

由于非对称加密这种相互配对但又无法逆推的特性,进而出现了这样的用法:把密钥B公开给其他人,密钥A自己留着。别人发私密数据给自己时,用B进行加密,则只有持有A的自己能够解密这段密文;自己对外发布消息时,用A进行加密,那么所有持有B的人都可以对内容进行解密,同时对方可以得到一个隐含的结论:这段密文确实是由A所产生,而不是第三方冒名发布的。

非对称加密通信过程

上面这段交互看似毫无漏洞,不过一个重要前提是通讯双方都正常拿到了密钥A和B。从攻击者角度来看,既然无法直接从算法层面破解AB密钥对,那可以通过偷梁换柱的方式进行破坏。例如,悄悄窃取一份密钥A的副本,这样他就可以解密所有密文并伪造加密;或自己生成一对密钥CD,把前面的密钥B替换成自己的密钥D,诱导别人用错误的公开密钥加密消息,从而自己可以窃取加密信息并解密。数字证书的出现就是为了防御上面这类攻击方式。

数字证书格式

数字证书的核心作用是当非对称密钥的载体,除包含密钥信息外,还存储有密钥持有者信息、证书序列号、证书有效期等一系列表明持有身份及证书本体的数据,从而将密钥及用户信息有效地绑定在一起。

目前常见的数字证书标准为X509和PKCS系列。X509标准规定了数字证书应该包含哪些内容,并规定这些内容如何进行编码存储;PKCS系列标准则涵盖了从密钥格式、加密算法到文件格式等各个方面,目的是规范指导人们正确使用公钥算法。

例如常见的.pfx后缀文件是包含了公钥和私钥二进制证书文件,由PKCS#12标准定义,用于对用户的私钥进行存储以及发放。由于私钥的重要性,操作以及读取pfx文件内容时均会要求输入文件密码,从而他人即使拿到证书备份也无法使用密钥,对密钥数据进行二次保护。同时在密钥管理体系中,通常会要求私钥数据一旦导入设备就不能再次被导出,控制密钥的传播。

常见的公钥证书文件格式为.cer后缀,仅包含有公钥信息,并且没有密码保护。与私钥文件不同,公钥文件设计的目的就是公开化、透明化,任何人都可以不受限的获取并使用公钥文件,因为已经通过非对称算法保证了逆向破解的安全性。

微软官网公钥证书文件

数字证书的发放

上面解决了数字证书如何存储以及呈现的问题,不过还存在一个难题是如何将证书文件安全可靠的发放给最终用户,这里则需要依赖于公共密钥基础设施PKI(Public Key Infrastructure)。PKI不是一项具体的技术,而是由数字证书、密钥加密、证书管理以及身份验证等一系列机制聚合而成的平台,保证通信过程中的数据安全和防止伪造。

完整的PKI系统由认证机构(CA)、数字证书库、密钥备份及恢复模块、证书吊销模块、应用接口等部分组成。

认证机构(CA):数字证书的申请及签发机关,同时也负责执行证书吊销及更新等操作,是PKI的核心;

数字证书库:用于存放已签发的数字证书及公钥,用户可由此获得其他用户的数字证书;

密钥备份及恢复模块:为了满足实际的应用环境,加密数据使用的非对称密钥可能需要进行归档,从而密钥丢失并且需要访问先前加密的信息时,能够进行密钥恢复;

证书吊销模块:当密钥丢失或用户身份改变时,需要在用户证书过期之前将其吊销,使证书提前失去效用;

应用接口:为使用户能够方便地使用加密、数字签名等安全服务,PKI系统必须提供良好的应用程序接口,使得各种各样的应用能够以安全、可靠的方式与PKI交互。

此外,注册机构(RA)是PKI的可选系统,主要负责执行CA委托的任务,如确定公开密钥和证书持有人身份之间的关联等。


数字证书的使用

数字证书相关技术构成了一个庞大的体系,不过归根到底,其核心作用主要为两个:数据加密与数字签名。

数据加密的场景下,要求数据内容只能被特定的人访问,并且密文能够在公开环境进行传输,任何第三方即使获取到密文也无法破译其中信息。按照非对称加密公钥公开而私钥隐蔽的特性,要实现仅有特定的人能够解密,则可以使用对方的公钥进行加密,对方在获取到密文后使用个人密钥便可以还原出原始消息。不过由于非对称加密算法的复杂性,算法性能较差,一般不会直接用于大量数据的加密,此时通常会结合对称密钥进行混合加密:使用对称密钥K加密数据本体,再使用非对称密钥中的公钥B加密对称密钥K。解密过程步骤则相反:先用个人私钥A解密出对称密钥K,再用K解密出数据本体。

数字签名场景下,要求数据内容以明文方式进行发布,但希望数据在传播过程中不被人恶意篡改,也即常说的“官宣”。此时,数字证书不加密数据本体,而是先进行哈希计算,得到完整数据内容的哈希值,再使用个人私钥A对这段哈希结果进行加密,把得到的密文与数据内容本体一起对外公布。如此便达到需要的效果:1. 数据内容本体不加密,任何人可直接查看;2. 数据完整性可验证,篡改数据内容会导致哈希值与密文段不一致,而攻击者在没有私钥A的情况下无法正确生产篡改后内容的哈希密文。第三方人员校验时,先用公钥B解密出哈希段明文,再对数据内容进行哈希计算,通过比对两次哈希结果是否一致就可以判断出是否存在篡改行为。

常见的HTTPS协议通信过程就是对数据加密以及数字签名的混合使用,只是浏览器以及服务器中间件屏蔽了具体的交互细节,感兴趣的同学可以自行阅读了解。

 

附录:

数字证书是什么

简单易懂PKI系列第一章——简介

HTTPS工作原理

作者:阮伟聪

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值