欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

PKI 加密系统的加密过程和原理 - I. 基本相关概念

最编程 2024-06-29 15:28:25
...

注:PKI全称公钥基础设施,主要用于保障数据传输交换过程诸如完整性、保密性等安全需求。在进行PKI加密体系学习前,我们需要先了解几个关键的名词。


1.信息安全CIA三要素

一般而言,我们讲的信息安全三要素是指:保密性、完整性、可用性。这并不是说信息安全只有这三个点,其实还有诸如:有效性、真实性、不可抵赖性等等(当然这些特性其实从某种角度而言可以归纳进入三要素之中,可看作是更细分的特性)。而这些就是信息安全需要保障的。PKI体系主要偏向保障了数据的保密性、完整性、不可抵赖性和真实性等。

通常我们对网络安全、信息安全、数据安全等称呼的认知都是认为他们是相同的,其实他们之间是存在范围上或者层级上的不一样的,当然他们需要保障的特性是具有相通性的,这里我们不做说明,后面的描述我将统一采用数据安全来的描述方式。


2.密码学基本相关概念

密钥

密钥就是“钥匙”。是加解密过程使用的钥匙,可以理解为锁门关门所使用的“钥匙”,从功能上讲这是相似的。数学上这是一个解开函数的已知量,例如:x+5=y,这里这个“5”就是密钥。加密过程就是知道x计算出y,解密就是知道y反推出x。需要特别指出的是,实际上加密与解密的密钥可以是相同的也可以是不同的,即知道加密的密钥与加密后的密文是不一定能计算出原文的(知道y与5计算不出x),至于原理,那就是数学的魅力了。

这里的举例只是便于理解,实际过程使用的数学函数是不会这么简单的,例如AES使用的核心数学原理是伽罗瓦域,RSA的核心数学原理大素数的难分解性,欧拉定理等,我国的SM2就利用了椭圆曲线算法。


加/解密算法

对称加密
简单的说,对称加密就是加密与解密使用同一个密钥。
非对称加密
与对称加密相对应的,非对称加密就是加密与解密使用两个完全不同无关联不能相互推导且相互之间唯一的一对密钥。也就是说这种加密算法是会产生两个密钥的(通常称之为一对密钥),这一对密钥中的两个密钥(通常称之为公钥与私钥)相互之间不同,除加解密之外无其他关联,无法相互推导而出,能且只能相互加解密(公钥加密的只有对应的私钥能够解密,私钥加密的只有对应公钥能够解密,公钥只能解密对应私钥加密的数据,私钥只能解密对应公钥加密的数据)

关于这一对公私钥,谁是公钥谁是私钥,是没有标准要求的,只有一个区分:对外公开的就是公钥,不对外公开的,自己要完美保密的就是私钥。是的没有看错,通常情况下公钥是需要且必要对外公开的,具体的我们后文会有提及。


不可逆(单向)加密(散列函数hash、消息摘要、杂凑函数)
这一类加密算法是比较特殊,但其实应用比较广泛的加密算法。其特点是,一旦加密无法解密,密文唯一(即不同字符的数据原文加密后的密文是不同的,不会出现一致的密文),通常密文长度固定(不管原文长度如何,加密后都是统一固定长度)。与前面两种加密不同的是这种加密实现的主要保障目的是完整性、不可抵赖性。

加/解密算法按照不同维度会有多种分类方式,每种分类又会有多种不同的类型,例如按照加密方式可分为流加密算法、分组加密算法....按照用途又可以分为密钥协商算法、加密算法等等。这里我们不做详细说明,感兴趣的可以自行百度作为了解。 密码学的历史是比较悠久的,整个学科也很复杂,从早期的古典密码(核心理论是替代和置换,如经典的凯撒密码),到现在普谝使用的PKI体系。形成了一个较为庞大的学科体系,感兴趣的可以自行百度作为了解,这里我们只针对PKI关联紧密的做一些简单的说明。 这里提一个目前公用的密码学中的原则:柯克霍夫原则(Kerckhoffs's principle)即柯克霍夫这个人提出的理论。他认为“即使密码系统的任何细节已为人悉知,只要密匙未泄漏,它也应是安全的。”基于这个原则,算法是可以公开的,并且部分人认为应该公开,让所有人去攻击,这样都无法攻破的算法才是安全的算法,我们只需要保证每次使用的密钥的安全保密即可。

3.数字签名/数字证书

数字签名:与物理世界签名的作用本质上是一样的,只不过签名方式不通。数字签名就是一串字符串,通常是对数据(已知数据)用私钥加密,因为私钥只有发送者自己知道,且其解密方式有且只有用对应的公钥解解密,所以能够判定该加密数据是发送者发送的,就产生了“签名”的效果。
数字证书:数字证书则是为证明数字签名的真实有效不可抵赖而产生的。在上述的数字签名过程中有一个逻辑上的问题:我们要验证签名的真实性需要用发送者签名时使用的私钥其对应的公钥来解密,查看能否解密,解密后数据正确与否,以此来判断;然而公钥是公开的,我们无法验证我们拿到的公钥就一定是正确的;且发送者也可以随时抵赖说我们使用的公钥并不是他们的公钥(因为私钥是绝对保密的,我们无法证明)。这个时候就需要权威机构发布证明文件(类似于派出所发放身份证),这个文件就是数字证书。

数字证书本身也是会有签名证明该证书是该权威机构发放的(防伪造),验证使用的公钥也是可以造机构公网拿到的。当然,我们可以说拿到的数字证书的也不一定是可信的,验证数字证书用的公钥也不一定是可信的(简单的说就是这个机构也不是一定可信的),它和数字签名一样存在逻辑问题。数字证书的可信度是需要建立在“你总是需要信任一个人”的理论上面的,这就像如果你不信任法院、*局等机构,那么一切都是徒劳的,是无法做到完全可信的。当然拿到的验证证书使用的公钥需要保证正确,这就像生活中总有骗子冒充执法人员诈骗一样,这就只能自己睁大眼了,一定需要从官方获取并得到准确认证。


4.CA/RA机构

CA(证书机构):
就是上文提到的审核、发放、撤销、管理数字证书的机构,“*局”的存在。证书机构CA是PKI的信任基础,它管理公钥的整个生命周期,其作用包括:发放证书、规定证书的有效期和通过发布证书废除列表(CRL)确保必要时可以废除证书。
RA(注册机构):
可以理解为CA的下级机构(“派出所”)。注册机构RA提供用户和CA之间的一个接口,它获取并认证用户的身份,向CA提出证书请求。它主要完成收集用户信息和确认用户身份的功能。这里指的用户,是指将要向认证中心(即CA)申请数字证书的客户,可以是个人,也可以是集团或团体、某*机构等。注册管理一般由一个独立的注册机构(即RA)来承担。它接受用户的注册申请,审查用户的申请资格,并决定是否同意CA给其签发数字证书。注册机构并不给用户签发证书,而只是对用户进行资格审查。当然,对于一个规模较小的PKI应用系统来说,可把注册管理的职能由CA来完成,而不设立独立运行的RA。但这并不是取消了RA的相关功能,而是将其作为CA的一项功能而已。PKI国际标准推荐由一个独立的RA来完成注册管理的任务,可以增强应用系统的安全。

推荐阅读