软考-系统架构设计师 访问控制和数字签名技术详细讲解

发布于:2025-09-13 ⋅ 阅读:(22) ⋅ 点赞:(0)

个人博客: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,并说明其如何简化管理。
    • 高安全保密环境 -> 推荐MACRBAC与MAC结合
    • 需要非常动态、细粒度的策略(如“允许项目经理在项目期内访问项目文件”) -> 推荐ABAC

第二部分:数字签名 (Digital Signature)

数字签名技术是实现认证性、完整性、不可否认性三大安全目标的密码学基础。

一、核心思想与特性

数字签名是非对称加密技术散列函数的结合体。它模拟了现实生活中的手写签名,但安全性更高。

  • 验证签名者身份(认证性):只有私钥持有者才能生成有效的签名。
  • 证明信息未被篡改(完整性):对原文的任何修改都会导致签名验证失败。
  • 防止抵赖(不可否认性):签名者事后无法否认自己签过的文件。

二、数字签名的流程(必考核心)

这是一个经典的“发送方用私钥,接收方用公钥”的过程。其流程完美结合了散列函数和非对称加密的优点。

发送方 签名
计算消息M的散列值
用发送方的私钥SK加密H 生成签名S
将消息M与签名S 一起发送给接收方
接收方 验证
计算消息M的散列值
用发送方的公钥PK解密签名S 得到散列值
对比是否相等?
验证成功 消息完整且来源可信
验证失败 消息被篡改或来源无效

三、数字证书与公钥基础设施 (PKI)

  • 问题:如何保证你用来验证签名的公钥确实是对方的,而不是攻击者冒充的?
  • 解决方案数字证书。它是信任的载体
  • 数字证书内容:包含用户的身份信息、公钥,并由一个可信的证书颁发机构(CA) 用自己的私钥对这些信息进行签名。
  • PKI体系:一个提供公钥分发和信任服务的完整框架,包括CA、RA(注册机构)、证书库、CRL(证书吊销列表)/OCSP(在线证书状态协议)等组件。
  • 验证链条:浏览器/操作系统内置了信任的根CA证书。验证时,通过逐级验证证书签名,建立起从根CA到目标证书的信任链。

四、典型算法与国密算法

  • RSA:即可用于加密,也可用于签名。是最常见的签名算法。
  • DSA:数字签名算法,仅用于签名,不用于加密。
  • ECDSA:基于椭圆曲线的数字签名算法,效率高,带宽占用小。
  • 国密算法SM2(基于椭圆曲线,用于替代RSA),SM3(散列算法,用于替代SHA-256)。

五、软考应用

  • 选择题:考查数字签名的目的、流程、所用算法(散列+非对称)。
  • 案例分析题
    • 要求设计一个保证数据来源可信、防止抵赖的系统(如电子合同、公文传输) -> 必须采用数字签名技术
    • 问“如何保证软件更新包来自官方且未被篡改?” -> 答:官方用私钥对更新包生成数字签名,随包发布;用户用官方公钥验证签名。
  • 论文题:可以围绕“论数字签名技术在电子商务系统中的应用”、“PKI体系建设与实践”等主题展开,详细论述如何利用该技术解决身份认证和抗抵赖问题。

总结与关联

技术 主要解决的安全问题 核心思想/模型 软考中的定位
访问控制 授权 (Authorization) RBAC (主流), ABAC (趋势) 系统内部权限管理的设计核心
数字签名 认证、完整性、不可否认 私钥签名,公钥验证 + Hash 跨主体身份验证和行为确认的基石

作为架构师,必须能够:

  1. 根据场景选择合适的访问控制模型(企业内部用RBAC,云环境考虑ABAC)。
  2. 在系统架构中无缝集成数字签名功能,尤其是在涉及法律效力或重要操作确认的场景。
  3. 理解PKI是数字签名能够大规模应用的基础设施保障

网站公告

今日签到

点亮在社区的每一天
去签到