软考-系统架构设计师 访问控制和数字签名技术详细讲解
个人博客:blogs.wurp.top
第一部分:访问控制 (Access Control)
访问控制的核心任务是限制主体对客体的访问,即解决“谁(主体)在什么条件下能对什么资源(客体)进行什么操作(权限)”的问题。
一、访问控制模型 (Access Control Models)
这是访问控制的理论基础,是软考的必考点。
1. 自主访问控制 (DAC - Discretionary Access Control)
- 核心思想:资源的拥有者(所有者)可以自主地决定将自己资源的访问权限授予其他主体。
- 实现方式:通常通过访问控制列表(ACL) 实现。ACL附着在客体上,标明每个主体对该客体的操作权限(如读、写、执行)。
- 优点:灵活,便于用户自定义。
- 缺点:权限分散,难以进行全局统一管理,安全性较低。用户可能错误授权,导致权限泛滥(如经典的
chmod 777
)。 - 典型场景:传统Unix/Linux文件系统、Windows共享文件夹。
2. 强制访问控制 (MAC - Mandatory Access Control)
- 核心思想:由系统(通常是安全管理员)强制实施访问策略,主体和客体都被赋予固定的安全属性(如安全级别、标签),用户不能自行更改。访问是否被允许取决于主体和客体的安全属性之间的关系。
- 实现方式:基于安全标签(如机密、秘密、绝密)的多级安全模型。遵循两大规则:
- 不上读:低安全级别的主体不能读高安全级别的客体(防止泄密)。
- 不下写:高安全级别的主体不能向低安全级别的客体写数据(防止病毒或 Trojan Horse 将高密数据写入低密文件)。
- 优点:强制性,安全性非常高,适用于军政等机密部门。
- 缺点:配置复杂,灵活性差,用户体验不友好。
- 典型场景:SELinux, AppArmor。
3. 基于角色的访问控制 (RBAC - Role-Based Access Control)
- 核心思想:在用户和权限之间引入“角色(Role)”这个中间层。用户被分配角色,权限被授予角色,而不是直接授予用户。用户通过成为适当角色的成员而获得其权限。
- 核心概念:
- 用户 (User):系统的使用者。
- 角色 (Role):一个 job function 或职称,代表一种权限的集合。
- 权限 (Permission):对客体的操作许可。
- 会话 (Session):用户激活其角色子集的一个临时上下文。
- 优点:
- 简化管理:改变用户的角色即可改变其权限,无需逐个修改权限。
- 灵活:符合企业的组织架构(如经理、会计、员工)。
- 支持最小权限原则:可以方便地为用户分配工作所需的最小角色集。
- 典型场景:几乎所有企业级应用和系统(如ERP、CRM、后台管理系统)。是当前最主流、最广泛采用的模型。
- RBAC96模型家族:包括RBAC0(基础)、RBAC1(支持角色继承)、RBAC2(支持约束,如互斥角色、基数约束)、RBAC3(RBAC1+RBAC2)。
4. 基于属性的访问控制 (ABAC - Attribute-Based Access Control)
- 核心思想:访问决策基于主体、客体、操作和环境的属性动态计算得出。
- 属性示例:
- 主体属性:用户身份、部门、职位、安全等级。
- 客体属性:文件创建者、文件敏感性、文件类型。
- 环境属性:访问时间、当前位置、当前系统威胁等级。
- 策略语言:通常使用
XACML
(eXtensible Access Control Markup Language)等策略语言来描述复杂的授权规则。 - 优点:极其灵活和强大,可以表达非常细粒度和动态的访问控制策略。
- 缺点:实现复杂,性能开销大。
- 典型场景:云平台(AWS IAM, Azure Policy)、复杂业务流程的权限控制。
二、访问控制管理
- 集中式管理:由一个中央管理员或系统统一管理所有权限。优点是策略一致,缺点是单点瓶颈。
- 分布式管理:由不同部门的管理员分权管理。优点是灵活,缺点是策略容易不一致。
三、软考应用
- 选择题:直接考查DAC、MAC、RBAC、ABAC的定义、特点和区别。
- 案例分析题:给出一个企业场景,要求设计其权限系统。
- 绝大多数企业内部系统 -> 推荐RBAC,并说明其如何简化管理。
- 高安全保密环境 -> 推荐MAC或RBAC与MAC结合。
- 需要非常动态、细粒度的策略(如“允许项目经理在项目期内访问项目文件”) -> 推荐ABAC。
第二部分:数字签名 (Digital Signature)
数字签名技术是实现认证性、完整性、不可否认性三大安全目标的密码学基础。
一、核心思想与特性
数字签名是非对称加密技术和散列函数的结合体。它模拟了现实生活中的手写签名,但安全性更高。
- 验证签名者身份(认证性):只有私钥持有者才能生成有效的签名。
- 证明信息未被篡改(完整性):对原文的任何修改都会导致签名验证失败。
- 防止抵赖(不可否认性):签名者事后无法否认自己签过的文件。
二、数字签名的流程(必考核心)
这是一个经典的“发送方用私钥,接收方用公钥”的过程。其流程完美结合了散列函数和非对称加密的优点。
三、数字证书与公钥基础设施 (PKI)
- 问题:如何保证你用来验证签名的公钥确实是对方的,而不是攻击者冒充的?
- 解决方案:数字证书。它是信任的载体。
- 数字证书内容:包含用户的身份信息、公钥,并由一个可信的证书颁发机构(CA) 用自己的私钥对这些信息进行签名。
- PKI体系:一个提供公钥分发和信任服务的完整框架,包括CA、RA(注册机构)、证书库、CRL(证书吊销列表)/OCSP(在线证书状态协议)等组件。
- 验证链条:浏览器/操作系统内置了信任的根CA证书。验证时,通过逐级验证证书签名,建立起从根CA到目标证书的信任链。
四、典型算法与国密算法
- RSA:即可用于加密,也可用于签名。是最常见的签名算法。
- DSA:数字签名算法,仅用于签名,不用于加密。
- ECDSA:基于椭圆曲线的数字签名算法,效率高,带宽占用小。
- 国密算法:SM2(基于椭圆曲线,用于替代RSA),SM3(散列算法,用于替代SHA-256)。
五、软考应用
- 选择题:考查数字签名的目的、流程、所用算法(散列+非对称)。
- 案例分析题:
- 要求设计一个保证数据来源可信、防止抵赖的系统(如电子合同、公文传输) -> 必须采用数字签名技术。
- 问“如何保证软件更新包来自官方且未被篡改?” -> 答:官方用私钥对更新包生成数字签名,随包发布;用户用官方公钥验证签名。
- 论文题:可以围绕“论数字签名技术在电子商务系统中的应用”、“PKI体系建设与实践”等主题展开,详细论述如何利用该技术解决身份认证和抗抵赖问题。
总结与关联
技术 | 主要解决的安全问题 | 核心思想/模型 | 软考中的定位 |
---|---|---|---|
访问控制 | 授权 (Authorization) | RBAC (主流), ABAC (趋势) | 系统内部权限管理的设计核心 |
数字签名 | 认证、完整性、不可否认 | 私钥签名,公钥验证 + Hash | 跨主体身份验证和行为确认的基石 |
作为架构师,必须能够:
- 根据场景选择合适的访问控制模型(企业内部用RBAC,云环境考虑ABAC)。
- 在系统架构中无缝集成数字签名功能,尤其是在涉及法律效力或重要操作确认的场景。
- 理解PKI是数字签名能够大规模应用的基础设施保障。