【软考架构】第4章 密钥管理技术和访问控制及数字签名技术
对称密钥的分配与管理
密钥分配一般要解决两个问题:
- 一是引进自动分配密钥机制,以提高系统的效率;
- 二是尽可能减少系统中驻留的密钥量。
这两个问题也可以同步解决。
密钥的使用控制
两个用户(主机、进程、应用程序)在进行保密通信时,必须拥有一个共享的并且经常更新的秘密密钥。密钥的分配技术从一定程度上决定着密码系统的强度。
控制密钥的安全性主要有以下两种技术。
1) 密钥标签
例如用于DES的密钥控制,将DES中的8个校验位作为控制这个密钥的标签,其中前3位分别代表了该密钥的不同信息:主/会话密钥、加密、解密。但是长度过于限制,且须经解密方能使用,带来了一定的不便性。
2) 控制矢量
被分配的若干字段分别说明不同情况下密钥是被允许使用或者不允许,且长度可变。它在密钥分配中心KDC(Key Distribution Center)产生密钥时加在密钥之中:首先由一杂凑函数将控制矢量压缩到加密密钥等长,然后与主密钥异或后作为加密会话密钥的密钥,即:
H=h(CV)
Kn =Km XOR H
Kou=EKm XORH[KS]
其恢复过程为:KS=DKm XOR H[EKm XOR H[KS]]
用户只有使用与KDC共享的主密钥以及KDC发送过来的控制矢量才能恢复会话密钥,因此,须保证保留会话密钥和他控制矢量之间的对应关系。
密钥的分配
两个用户A和B在获得共享密钥时可以有4种方式。
(1) 经过A选取的密钥通过物理手段发送给另一方B。
(2) 由第3方选取密钥,在通过物理手段分别发送给A和B。
(3)A、B事先已有一个密钥,其中一方选取新密钥后,用已有密钥加密该新密钥后发送给另一方。
(4)三方A、B、C各有一保密信道,C选取密钥后,分别通过A、B各自的保密信道发送。
前两种方法称为人工发送。若网络中N个用户都要求支持加密服务,则任意一对希望通信的用户各需要一个共享密钥,这导致密钥数目多达N(N-1)/2。第3种方法攻击者一旦获得一个密钥就可获取以后所有的密钥,这就给安全性带来隐患。这3种方法的公共弱点在于当N很大时,密钥的分配代价也变得非常大。但是,这种无中心的密钥控制技术在整个网络的局部范围内却显得非常有用。如图4-3所示,其中N表示随机数。
第4种方法是较常用的。第3方C是为用户分配密钥的KDC,每个用户和KDC有一个共享密钥,即主密钥。主密钥再分配给每对用户会话密钥,用于用户间的保密通信。会话密钥在通信结束后立即销毁。虽然此种方法的会话密钥数目是N(N-1)/2,但是主密钥的数目却只需要N个,可以通过物理手段进行发送。如图4-4所示,其中N表示随机数,Ks表示会话密钥。
由于网络中用户数目非常多并且地域分布非常广泛,因此有时需要使用多个KDC的分层结构。可在每个小范围(如一个LAN或一个建筑物)内,建立本地KDC;不同范围的两个本地间可再用一个全局KDC连接。这样建立的两层KDC不但减少了主密钥的分布,更可以将虚假的KDC的危害限制到一个局部的区域。
另外,应注意会话密钥有效期的设置。会话密钥更换得越频繁,系统的安全性也就越高。但是另一方面,频繁更换会话密钥会造成网络负担,延迟用户之间的交换。因此在决定其有效期时,应权衡矛盾的两个方面。
公钥加密体制的密钥管理
公开发布
公开发布是指用户将自己的公钥发给每一其他用户,或向某一团体广播。例如:PGP(PrettyGood Privacy)中采用RSA算法,很多用户就可将自己的公钥附加到消息上,发送到公开区域。这种方法虽然简单,但有一个非常大的缺点:任何人都可以伪造密钥公开发布。如果某个用户假装是用户A,并以A的名义向另一用户发送或广播自己的公开钥,则在A发现假冒者以前,这一假冒者可解读所有发向A的加密消息,甚至还能用伪造的密钥获得认证。
公用目录表
公用目录表指一个公用的公钥动态目录表,由某个可信的实体或组织(公用目录的管理员)承担该共用目录表的建立、维护以及公钥的分布等。管理员为每个用户在目录表中建立一个目录,其中包括用户名和用户的公开钥两个数据项,并且定期公布和更新目录表。每个用户都亲自或以某种安全的认证通信在管理者那里注册自己的公开钥,可通过电子手段访问目录表,还可随时替换新密钥。但是,这种公用目录表的管理员秘密钥一旦被攻击者获取,同样面临被假冒的危险。
公钥管理机构
与公用目录表类似的,不过用公钥管理机构来为各用户建立、维护动态的公钥目录,这种对公钥分配更加严密的控制措施可以增强其安全性。特别注意的是,每个用户都可靠地知道管理机构的公开钥,但是只有管理机构自己知道相应的秘密钥。
例如:当用户A向公钥管理机构发送一个请求时,该机构对请求作出应答,并用自己的秘密钥SKAu加密后发送给A,A再用机构的公开钥解密。
它的缺点在于因为每一用户要想和他人联系都须求助于管理机构,所以容易使管理机构成为系统的瓶颈,并且管理机构维护的公钥目录表也容易被敌手窜扰。
公钥证书
公钥证书可以从一定程度上解决以上策略存在的一些不足之处。公钥证书是由证书管理机构CA(Certificate Authority)为用户建立的,其中的数据项有与该用户的秘密钥相匹配的公开钥及用户的身份和时戳等,所有的数据项经CA用自己的秘密钥签字后就形成证书,即证书的形式为CA=ESKcA[T,IDA,PK?]。T是当前的时戳,ID?是用户A的身份,PKA是A的公钥,SKcA是CA的秘密钥,CA则是用户A产生的证书。
用户将自己的公开钥通过公钥证书发给另一用户,而接受方则可用CA的公钥PKcA对证书加以验证。这样通过证书交换用户之间的公钥而无须再与公钥管理机构联系,从而避免了由统一机构管理所带来的不便和安全隐患。
公钥加密分配单钥密码体制的密钥
公开钥分配完之后,用户可用公钥加密体制进行保密通信。但是,这种加密体制的加密速度比较慢,因此比较适合于单钥密码体制的密钥分配,如图4-5所示。
假定A、B双方用户已完成公钥交换,则可利用公钥加密体制按照如下步骤建立共享会话密钥。
(1) A将用B的公钥加密得到的身份IDA和一个用于唯一标志这个业务的一次性随机数N,发往B。
(2) 预使A确定对方是B,则B用A的公钥加密N?和另一新产生的随机数N?,因为只有B能解读①中的加密。
(3) A用B的公钥PKB对N?加密后返回给B,以使B相信对方确是A。
(4) A将M=Epkp[ESKA[Ks]]发送给B,其中Ks为会话密钥,用B的公开钥加密是为保证只有B能解读加密结果,用A的秘密钥加密是保证该加密结果只有A能发送。
(5) B以DpkA[DskB[M]]恢复会话密钥。
这种分配过程的保密性和认证性均非常强,既可防止被动攻击,又可防止主动攻击。
访问控制及数字签名技术
访问控制技术
互联网络的蓬勃发展,为信息资源的共享提供了更加完善的手段,企业在信息资源共享的同时也要阻止非授权用户对企业敏感信息的访问。访问控制的目的是为了保护企业在信息系统中存储和处理的信息的安全。
访问控制的基本模型
访问控制是指主体依据某些控制策略或权限对客体本身或是其资源进行的不同授权访问。访问控制包括3个要素,即主体、客体和控制策略。访问控制模型是一种从访问控制的角度出发,描述安全系统,建立安全模型的方法。
(1)主体(Subject):是可以对其他实体施加动作的主动实体,简记为S。有时我们也称为用户(User)或访问者(被授权使用计算机的人员),记为U。主体的含义是广泛的,可以是用户所在的组织(以后我们称为用户组)、用户本身,也可是用户使用的计算机终端、卡机、手持终端(无线)等,甚至可以是应用服务程序程序或进程。
(2)客体(Object):是接受其他实体访问的被动实体,简记为O。客体的概念也很广泛,凡是可以被操作的信息、资源、对象都可以认为是客体。在信息社会中,客体可以是信息、文件和记录等的集合体,也可以是网路上的硬件设施,无线通信中的终端,甚至一个客体可以包含另外一个客体。
(3)控制策略:是主体对客体的操作行为集和约束条件集,简记为KS。简单讲,控制策略是主体对客体的访问规则集,这个规则集直接定义了主体对可以的作用行为和客体对主体的条件约束。访问策略体现了一种授权行为,也就是客体对主体的权限允许,这种允许不超越规则集,由其给出。
访问控制的实现首先要考虑对合法用户进行验证,然后是对控制策略的选用与管理,最后要对没有非法用户或是越权操作进行管理。所以,访问控制包括认证、控制策略实现和审计3方面的内容:
**(1)认证。**主体对客体的识别认证和客体对主体的检验认证。主体和客体的认证关系是相互的,当一个主体受到另外一个客体的访问时,这个主体也就变成了客体。一个实体可以在某一时刻是主体,而在另一时刻是客体,这取决于当前实体的功能是动作的执行者还是动作的被执行者。
**(2)控制策略的具体实现。**如何设定规则集合从而确保正常用户对信息资源的合法使用,既要防止非法用户,也要考虑敏感资源的泄露,对于合法用户而言,更不能越权行使控制策略所赋予其权利以外的功能。
**(3)审计。**审计的重要意义在于,比如客体的管理者即管理员有操作赋予权,他有可能滥用这一权利,这是无法在策略中加以约束的。必须对这些行为进行记录,从而达到威慑和保证访问控制正常实现的目的。
访问控制的实现技术
建立访问控制模型和实现访问控制都是抽象和复杂的行为,实现访问的控制不仅要保证授权用户使用的权限与其所拥有的权限对应,制止非授权用户的非授权行为;还要保证敏感信息的交叉感染。为了便于讨论这一问题,我们以文件的访问控制为例对访问控制的实现做具体说明。通常用户访问信息资源(文件或是数据库),可能的行为有读、写和管理。为方便起见,用Read或是R表示读操作,Write或是W表示写操作,Own或是〇表示管理操作。之所以将管理操作从读写中分离出来,是因为管理员也许会对控制规则本身或是文件的属性等做修改。1)访问控制矩阵访问控制矩阵(Access Control Matrix,ACM)是通过矩阵形式表示访问控制规则和授权用户权限的方法。也就是说,对每个主体而言,都拥有对哪些客体的哪些访问权限;而对客体而言,又有哪些主体对他可以实施访问;将这种关联关系加以阐述,就形成了控制矩阵。其中,特权用户或特权用户组可以修改主体的访问控制权限。访问矩阵是以主体为行索引,以客体为列索引的矩阵,矩阵中的每一个元素表示一组访问方式,是若干访问方式的集合。矩阵中第i行第j列的元素记录着第i个主体S,可以执行的对第j个客体O,的访问方式,比如M,等于表示S,可以对O,进行读和写访问。访问控制矩阵的实现很易于理解,但是查找和实现起来有一定的难度,而且,如果用户和文件系统要管理的文件很多,那么控制矩阵将会成几何级数增长。因为在大型系统中访问矩阵很大而且其中会有很多空值,所以目前使用的实现技术都不是保存整个访问矩阵,而是基于访问矩阵的行或者列来保存信息。
2)访问控制表
访问控制表ACLs(Access Control Lists)是目前最流行、使用最多的访问控制实现技术。每个客体有一个访问控制表,是系统中每一个有权访问这个客体的主体的信息。这种实现技术实际上是按列保存访问矩阵。访问控制表提供了针对客体的方便的查询方法,通过查询一个客体的访问控制表,很容易决定某一个主体对该客体的当前访问权限。删除客体的访问权限也很方便,把该客体的访问控制表整个替换为空表即可。但是用访问控制表来查询一个主体对所有客体的所有访问权限是很困难的,必须查询系统中所有客体的访问控制表来获得其中每一个与该主体有关的信息。类似地,删除一个主体对所有客体的所有访问权限也必须查询所有客体的访问控制表,删除与该主体相关的信息。
3)能力表
能力表(Capabilities)对应于访问控制表,这种实现技术实际上是按行保存访问矩阵。每个主体有一个能力表(Cap-ability Lists),是该主体对系统中每一个客体的访问权限信息。使用能力表实现的访问控制系统可以很方便地查询某一个主体的所有访问权限,只需要遍历这个主体的能力表即可。然而查询对某一个客体具有访问权限的主体信息就很困难了,必须查询系统中所有主体的能力表。20世纪70年代,很多操作系统的访问控制安全机制是基于能力表实现的,但并没有取得商业上的成功,现代的操作系统大多改用基于访问控制表的实现技术,只有少数实验性的安全操作系统使用基于能力表的实现技术。在一些分布式系统中,也使用了能力表和访问控制表相结合的方法来实现其访问控制安全机制。
4)授权关系表
访问矩阵也有既不对应于行也不对应于列的实现技术,那就是对应访问矩阵中每一个非空元素的实现技术——授权关系表(Authorization Relations)。授权关系表的每一行(或者说元组)就是访问矩阵中的一个非空元素,是某一个主体对应于某一个客体的访问权限信息。如果授权关系表按主体排序,查询时就可以得到能力表的效率;如果按客体排序,查询时就可以得到访问控制表的效率。安全数据库系统通常用授权关系表来实现其访问控制安全机制。
数字签名
与人们手写签名的作用一样,数字签名系统向通信双方提供服务,使得A向B发送签名的消息P,以便达到以下几点:
(1)B可以验证消息P确实来源于A。
(2)A以后不能否认发送过P。
(3)B不能编造或改变消息P。
数字签名的条件
可用的数字签名应保证以下几个条件:
(1)签名是可信的。签名使文件的接收者相信签名者是慎重地在文件上签字的。
(2)签名不可伪造。签名证明是签字者而不是其他人慎重地在文件上签字。
(3)签名不可重用。签名是文件的一部分,不法之徒不可能将签名移到不同的文件上。
(4)签名的文件是不可改变的。在文件签名后,文件不能改变。
(5)签名是不可抵赖的。签名和文件是物理的东西。签名者事后不能声称他没有签过名。
在现实生活中,关于签名的这些特性没有一个是完全真实的。签名能够被伪造,签名能够从文章中盗用移到另一篇文章中,文件在签名后能够被改变。在计算机上做这种事情,同样存在一些问题。首先计算机文件易于复制。即使某人的签名难以伪造(例如,手写签名的图形),但是从一个文件到另一个文件剪切和粘贴有效的签名都是很容易的。这种签名并没有什么意义;其次文件在签名后也易于修改,并且不会留下任何修改的痕迹。为解决这些问题,数字签名技术就应运而生。
称密钥签名
基于对称密钥的签名如图4-6所示。设BB是A和B共同信赖的仲裁人。K?和KB分别是A和B与BB之间的密钥,而KpB是只有BB掌握的密钥,P是A发给B的消息,t是时间戳。BB解读了A的报文{A,KA(B,R,t,P)}以后产生了一个签名的消息Kg?(A,t,P),并装配成发给B的报文{Kg(A,R?,t,P,Kgp(A,t,P))}。B可以解密该报文,阅读消息P,并保留证据KB(A,t,P)。由于A和B之间的通信是通过中间人BB的,所以不必怀疑对方的身份。又由于证据Kgn(A,t,P)的存在,A不能否认发送过消息P,B也不能改变得到的消息P,因为BB仲裁时可能会当场解密KgB(A,t,P),得到发送人、发送时间和原来的消息P。
公开密钥签名
在对称密码体制中由于加密密钥和解密密钥是可以相互推导的。密钥暴露会使系统变得不安全。而公钥密码体制可以很容易地解决密钥交换问题。在公钥密码系统中,解密密钥和加密密钥是不同的,并且很难从一个推导出另外一个。
利用公钥加密算法的数字签名系统如图4-7所示。如果A方否认,B可以拿出Dx§,并用A的公钥EA解密得到P,从而证明P是A发送的。如果B篡改消息P,当A要求B出示原来的D?§时,B拿不出来。
在实践中,对长文件签名采用公钥密码算法效率太低。为了节约时间,数字签名协议经常和单向Hash函数一起使用,即并不对整个文件签名,只对文件的Hash值签名。基于消息摘要大大地提高了数字签名的计算速度。此外该协议还有其他优点:首先,签名和文件可以分开保存。其次,接收者对文件和签名的存储量要求大大降低。档案系统可用这类协议来验证文件的存在而不需保存它们的内容。用户将文件的Hash值传给数据库,数据库加上时间标记并保存,如果对某文件的存在发生争执,数据库可通过找到文件的Hash值来解决争端。
密钥管理技术、访问控制技术和数字签名技术是信息安全体系架构中的核心支柱。它们相互关联,共同构建了系统机密性、完整性、可用性和不可否认性的基础。以下是针对这三个关键技术的要点解析:
一、 密钥管理技术 (Key Management)
密钥管理是密码学应用中最关键也是最脆弱的环节。它涉及密钥从生成到销毁的整个生命周期。
-
核心目标:
- 机密性: 保护密钥本身不被未授权访问。
- 完整性: 确保密钥在存储和传输过程中不被篡改。
- 可用性: 确保授权用户在需要时能够获得和使用密钥。
- 真实性: 确保密钥来源可靠,未被假冒。
-
生命周期阶段:
- 生成 (Generation): 使用安全的随机数生成器 (CSPRNG) 产生强密钥。考虑使用硬件安全模块 (HSM)。
- 分发 (Distribution): 最关键的挑战之一。
- 对称密钥分发: 挑战最大(共享同一密钥)。常用方法:物理交付、预共享密钥、使用公钥加密分发(如使用接收方的公钥加密对称会话密钥)、密钥分发中心 (KDC - 如 Kerberos)。
- 非对称密钥分发: 公钥可以公开分发(通过目录服务、数字证书),私钥必须严格保密。私钥分发通常由最终用户在安全环境中生成并保管。
- 存储 (Storage):
- 硬件: HSM、智能卡、USB Token 提供最高安全性(防篡改、密钥不出模块)。
- 软件: 使用操作系统或应用提供的安全存储机制(如 Keychain, Keystore),通常需要主密钥加密保护,主密钥的保护是关键。
- 使用 (Usage): 在密码操作中安全地使用密钥,避免密钥泄露(如内存清除)。
- 备份与恢复 (Backup & Recovery): 为灾难恢复做准备,必须以加密形式安全存储备份密钥。
- 归档 (Archiving): 对已过期但可能需要用于解密旧数据的密钥进行长期安全存储。
- 更新/轮换 (Update/Rotation): 定期更换密钥以降低密钥泄露的风险和影响。自动化是关键。
- 撤销 (Revocation): 当密钥疑似或确认泄露时,立即撤销其有效性(尤其对于证书绑定的公钥)。
- 销毁 (Destruction): 安全地删除或覆盖密钥,确保其无法恢复。
-
关键技术/机制:
- 密钥分发中心 (KDC): 如 Kerberos,中心化分发对称会话密钥。
- 公钥基础设施 (PKI): 提供非对称密钥对的管理框架,核心是数字证书(由 CA 签发)和证书撤销列表 (CRL) / 在线证书状态协议 (OCSP)。PKI 是解决公钥真实性问题和实现大规模密钥管理的基石。
- 密钥协商协议: 如 Diffie-Hellman (DH), ECDH,允许双方在不安全的信道上协商出一个共享的会话密钥(无需预先共享或依赖第三方)。
- 硬件安全模块 (HSM): 提供物理和逻辑保护,用于密钥生成、存储、使用(加密/解密/签名)。是最高安全级别的选择。
- 密钥管理系统 (KMS): 集中化的平台或服务,用于自动化管理密钥的生命周期(生成、存储、分发、轮换、撤销)。云服务提供商通常提供 KMS(如 AWS KMS, Azure Key Vault, GCP KMS)。
-
架构师关注点:
- 根据应用场景和安全需求选择对称/非对称密钥体系。
- 设计健壮、可扩展的密钥分发机制(特别是对于分布式系统)。
- 制定严格的密钥存储策略(优先使用 HSM)。
- 实现自动化的密钥轮换策略。
- 规划密钥备份、恢复和归档方案。
- 评估和集成 PKI。
- 考虑使用托管的 KMS 服务以降低管理复杂性。
二、 访问控制技术 (Access Control)
访问控制决定谁(主体)在什么条件下可以对什么(客体)执行哪些操作(权限)。
-
核心目标:
- 防止未授权访问: 确保只有授权用户/进程能访问资源。
- 最小权限原则: 用户/进程仅被授予执行其任务所必需的最小权限。
- 职责分离: 关键操作需要多人协作完成,防止单人滥用权限。
- 可审计性: 记录访问行为以便追踪和审计。
-
主要模型:
- 自主访问控制 (DAC - Discretionary Access Control):
- 资源(文件)的所有者自主决定谁可以访问以及拥有何种权限(读、写、执行)。
- 灵活性高(如 Unix/Linux 文件权限
rwx
)。 - 缺点:权限管理分散,容易失控(权限传递问题),安全性相对较低。
- 强制访问控制 (MAC - Mandatory Access Control):
- 由系统管理员根据安全策略(基于安全标签,如机密、秘密、绝密)集中、强制性地定义主体和客体的访问权限。
- 主体(用户/进程)和客体(文件/资源)都被赋予固定的安全等级和类别标签。
- 访问决策基于主体等级是否 >= 客体等级且主体类别包含客体类别(如 Bell-LaPadula 模型:不上读、不下写)。
- 安全性高,常用于军事、政府等高安全环境(如 SELinux, AppArmor)。
- 缺点:配置管理复杂,灵活性差。
- 基于角色的访问控制 (RBAC - Role-Based Access Control):
- 核心概念: 用户被分配角色,角色被赋予权限。权限=操作+客体。
- 核心优势: 简化管理(用户-角色,角色-权限),符合最小权限和职责分离(通过角色互斥实现)。
- 层级关系: 角色可以继承(如经理角色继承员工角色的权限)。
- 约束: 角色互斥(同一用户不能同时担任互斥角色)、基数约束(一个角色最多/最少分配多少用户)。
- 是目前企业环境中应用最广泛的模型。
- 基于属性的访问控制 (ABAC - Attribute-Based Access Control):
- 核心概念: 访问决策基于主体属性(用户部门、职位、安全等级)、客体属性(文件类型、创建者、敏感度)、环境属性(时间、地点、访问设备安全状态)和操作。
- 策略: 使用规则(如
IF subject.department == 'Finance' AND resource.type == 'Payroll' AND time in '9:00-17:00' THEN PERMIT access
)动态评估。 - 核心优势: 极其灵活、细粒度、上下文感知、适用于复杂和动态的环境(如云、IoT)。
- 标准: XACML (eXtensible Access Control Markup Language) 是定义策略和决策的常用标准。
- 是未来发展的趋势,特别是在零信任架构中。
- 自主访问控制 (DAC - Discretionary Access Control):
-
关键技术/机制:
- 访问控制列表 (ACL): DAC 的常见实现,列出每个客体关联的主体及其权限。
- 能力列表 (Capability List): 另一种 DAC 实现,列出每个主体关联的客体及其权限(类似票证)。
- 策略决策点 (PDP) & 策略执行点 (PEP): ABAC 架构的核心组件。PEP 拦截访问请求并发送给 PDP 做决策,然后执行决策(允许/拒绝)。
- 单点登录 (SSO): 用户一次登录即可访问多个关联系统,简化用户体验和访问管理(如 SAML, OAuth 2.0, OpenID Connect)。
- 身份认证与访问管理 (IAM): 集中管理用户身份、认证、授权(RBAC/ABAC)和审计的系统/服务。
-
架构师关注点:
- 根据系统安全需求(机密性、完整性要求)和业务需求(灵活性、管理复杂性)选择合适的访问控制模型(或组合)。
- 在复杂系统中,优先考虑 RBAC 或 ABAC。
- 严格实施最小权限原则和职责分离。
- 设计集中化的身份管理和认证机制(如 LDAP, Active Directory)。
- 集成 SSO 提升用户体验和安全性。
- 设计细粒度的权限模型。
- 实现完善的访问审计日志。
- 在云环境中,充分利用云提供商的 IAM 服务。
三、 数字签名技术 (Digital Signature)
数字签名利用非对称密码学和哈希函数提供消息的完整性验证、来源认证和不可否认性。
-
核心目标与特性:
- 完整性 (Integrity): 接收方可以验证消息在传输过程中是否被篡改。
- 认证 (Authentication): 接收方可以确认消息确实来自声称的发送方。
- 不可否认性 (Non-repudiation): 发送方事后无法抵赖其发送过该消息(法律证据)。
- 注意:数字签名本身不提供机密性。如果需要机密性,需额外加密消息。
-
工作原理:
- 发送方:
- 哈希: 对原始消息
M
应用密码学哈希函数 (如 SHA-256, SHA-3),生成固定长度的消息摘要H(M)
。 - 签名: 使用发送方的私钥
PrivK_S
对消息摘要H(M)
进行加密操作(即签名操作),生成数字签名Sig
。Sig = Sign(PrivK_S, H(M))
。 - 发送: 将原始消息
M
和数字签名Sig
一起发送给接收方。
- 哈希: 对原始消息
- 接收方:
- 接收: 收到消息
M'
和签名Sig'
('
表示可能被篡改过)。 - 哈希: 对收到的消息
M'
应用相同的哈希函数,生成消息摘要H(M')
。 - 验证签名: 使用发送方的公钥
PubK_S
对收到的签名Sig'
进行解密操作(即验证操作),得到摘要H_decrypted
。H_decrypted = Verify(PubK_S, Sig')
。 - 比较: 比较自己计算出的摘要
H(M')
和解密得到的摘要H_decrypted
:- 如果
H(M') == H_decrypted
:- 说明
M'
就是原始的M
(完整性验证通过)。 - 说明
Sig'
确实是用PrivK_S
对H(M)
签名的(来源认证通过。因为只有PrivK_S
能生成能用PubK_S
成功验证的签名)。 - 发送方无法抵赖(不可否认性。因为只有他拥有
PrivK_S
)。
- 说明
- 如果
H(M') != H_decrypted
:说明消息被篡改或签名无效(或两者兼有),验证失败。
- 如果
- 接收: 收到消息
- 发送方:
-
关键技术与依赖:
- 非对称密码算法: RSA, DSA, ECDSA (最常用且高效)。用于签名和验证。
- 密码学哈希函数: SHA-256, SHA-3 等。用于生成消息摘要。
- 公钥基础设施 (PKI): 至关重要! 用于安全地分发和验证发送方公钥
PubK_S
的真实性(通过数字证书)。没有可信的 PKI,来源认证和不可否认性就无法真正实现(存在中间人攻击风险)。
-
架构师关注点:
- 理解原理: 深刻理解哈希、私钥签名、公钥验证的流程和目的。
- 算法选择: 根据性能、安全强度要求选择合适的签名算法(如 ECDSA)和哈希算法(如 SHA-256)。
- PKI 集成: 必须将数字签名技术与 PKI 紧密结合,确保证书的颁发、验证和撤销机制可靠运行。
- 密钥管理: 发送方的签名私钥是核心资产,必须严格保护(优先使用 HSM),其管理遵循密钥管理的最佳实践。私钥泄露意味着签名可被伪造。
- 应用场景:
- 软件/固件发布(验证来源和完整性)。
- 电子合同/协议(提供法律效力的不可否认性)。
- 安全电子邮件 (S/MIME, PGP)。
- 安全通信协议 (SSL/TLS 握手过程中的证书验证和签名)。
- 区块链交易(验证交易发起者)。
- 标准: 遵循 PKCS#7/CMS, XMLDSig, JWS 等签名格式标准。
四、 三者关联与协同
- 数字签名依赖密钥管理: 数字签名使用的签名私钥必须通过安全的密钥管理机制生成、存储和使用(尤其依赖 HSM 和 PKI)。验证方需要安全地获取签名者的公钥(通过 PKI 证书)。
- 访问控制依赖认证(常由数字签名支持): 访问控制决策通常需要先确认请求者的身份(认证)。数字签名是强认证的重要手段(如客户端证书认证)。PKI 证书中的身份信息也常用于访问控制决策(ABAC 中的主体属性)。
- 密钥管理依赖访问控制: 访问密钥管理系统本身(如 KMS)、查看或操作密钥(如备份、轮换)需要严格的访问控制机制(通常使用 RBAC/ABAC)。
- 综合应用示例:
- 用户通过 PKI 证书(数字签名用于证书签发)认证登录系统(访问控制中的认证)。
- 系统根据用户的角色(RBAC)或属性(ABAC)控制其访问资源。
- 用户需要签署一份电子文档,系统调用 HSM 中的私钥(密钥管理)对文档哈希进行签名(数字签名)。
- 接收方通过 PKI 验证签名者的证书和签名,确认文档来源和完整性。
总结:
- 密钥管理是密码学的基石,确保密钥安全是整个安全链条的根本。
- 访问控制是安全策略的执行者,定义了“谁能干什么”。
- 数字签名是提供完整性、认证和不可否认性的关键技术,高度依赖可靠的密钥管理和 PKI。
- PKI 作为信任基础设施,是连接密钥管理(非对称密钥对、证书)、数字签名(证书验证、签名)和访问控制(证书中的身份属性)的核心桥梁。
系统架构设计师必须深刻理解这些技术的原理、模型、优缺点、相互依赖关系以及它们在不同应用场景(特别是分布式系统、云计算)下的实现挑战和最佳实践,才能设计出安全、可靠、可管理的系统架构。