目录
一、引言:信息安全概述
信息安全(Information Security)是指保护信息和信息系统免受偶然或恶意的访问、使用、披露、记录、破坏、修改或干扰。随着信息化、数字化、云化程度的不断加深,数据已经成为企业最核心的资产,信息系统一旦遭到攻击,轻则业务中断、数据泄露,重则造成经济损失、声誉受损甚至承担法律责任。因此,安全架构设计已经成为系统架构设计师必须掌握的核心能力之一。
信息安全架构是系统架构的一个组成部分,它从安全的角度描述系统架构,关注如何通过组织、技术、管理等多种手段,保障信息的机密性、完整性、可用性等安全属性。安全架构设计的目标是在风险、成本、可用性之间取得平衡,而非追求"绝对安全"。
在系统架构设计中,安全不是事后补丁,而应贯穿于架构设计的全过程。一个成熟的安全架构应当具备以下特征:
- 系统性:从物理、网络、主机、应用、数据多个层面综合设计,而非单点防护。
- 纵深性:采用多层防御,单层被突破后仍有后续防线。
- 动态性:能够应对不断演化的威胁,支持持续监测与响应。
- 可审计:所有关键操作有据可查,满足合规要求。
- 最小特权:主体仅被授予完成任务所需的最小权限。
1.1 纵深防御(Defense in Depth)概念
纵深防御是安全架构设计中最核心的思想之一,源自军事领域。其核心观点是:没有任何单一的安全措施能够提供完整的保护,因此必须通过多层、多类型的安全控制协同工作,使得攻击者即便突破某一层,仍然要面对下一层的防御,从而大幅提升攻击成本和被发现概率。
纵深防御的典型分层包括:物理安全 → 网络安全 → 主机安全 → 应用安全 → 数据安全。每一层都部署相应的控制措施,层与层之间相互独立又相互补充。例如,即便网络防火墙被绕过,主机加固和应用层校验仍能拦截攻击;即便应用存在漏洞,数据库加密也能降低数据泄露的损失。
纵深防御五层:物 → 网 → 主 → 用 → 数。每层都有"识别、保护、检测、响应、恢复"五个动作(IPDRR 模型)。
二、信息安全五要素(CIA+)
信息安全的目标通常用 CIA 三元组(机密性、完整性、可用性)来概括。在软考及更广义的安全体系中,再补充真实性和抗抵赖性两个要素,构成信息安全五要素(CIA+)。这是安全架构设计的根本出发点——所有安全控制最终都是为了保障这五个属性。
2.1 机密性(Confidentiality)
机密性是指信息不被泄露给未经授权的个人、实体或过程,或供其利用的特性。简而言之,就是数据只能被有权限的人看到。机密性是大家最容易理解的安全属性,也是大部分安全事件的直接危害所在。
- 典型威胁:窃听、嗅探、数据泄露、越权访问。
- 保障手段:加密(对称/非对称)、访问控制、物理隔离、网络分段、传输加密(TLS)。
2.2 完整性(Integrity)
完整性是指信息在存储、传输或处理过程中保持准确和完整,不被未授权地篡改、插入、删除或重放。即数据没有被偷偷改过。完整性与机密性经常被混淆,需要区分:机密性关注"是否被看到",完整性关注"是否被改动"。
- 典型威胁:篡改、伪造、重放攻击、中间人攻击。
- 保障手段:哈希校验、消息认证码(MAC)、数字签名、校验和。
2.3 可用性(Availability)
可用性是指得到授权的实体在需要时能够访问和使用系统及数据的特性。即系统在该用的时候能用。可用性强调的是服务的连续性,是拒绝服务攻击(DoS/DDoS)直接破坏的目标。
- 典型威胁:DoS/DDoS 攻击、勒索软件、系统宕机、单点故障。
- 保障手段:冗余设计、负载均衡、限流降级、容灾备份、DDoS 清洗。
2.4 真实性(Authenticity)
真实性是指确保主体、客体及信息来源的身份是真实的、可验证的,即对方确实是其声称的那个身份。真实性是身份认证和访问控制的基础。
- 典型威胁:身份伪造、钓鱼攻击、口令破解、凭证窃取。
- 保障手段:身份认证(口令、生物特征、证书)、数字证书、Kerberos。
2.5 抗抵赖性(Non-repudiation)
抗抵赖性是指确保实体无法否认其已经执行过的操作或已经发送/接收过的信息。即做过的事赖不掉。抗抵赖性在电子合同、电子支付、电子取证等场景中至关重要。
- 典型威胁:行为否认、抵赖交易、抵赖发送。
- 保障手段:数字签名、可信时间戳、审计日志、PKI 体系。
| 安全要素 | 核心含义 | 典型场景 | 代表技术 |
|---|---|---|---|
| 机密性 | 数据不被未授权方获知 | 文件加密、通信加密 | AES、RSA、TLS |
| 完整性 | 数据不被未授权篡改 | 软件下载校验、配置校验 | SHA-256、MAC、数字签名 |
| 可用性 | 授权方可按需访问 | 网站高可用、容灾 | 负载均衡、冗余、备份 |
| 真实性 | 身份与来源真实可信 | 登录认证、证书认证 | 数字证书、Kerberos、MFA |
| 抗抵赖性 | 行为不可抵赖 | 电子合同、电子转账 | 数字签名、时间戳、审计 |
· 完整性 vs 真实性:完整性强调"数据没被改",真实性强调"来源是真的"
· 抗抵赖性的核心手段是数字签名(私钥签名,公钥验签)
· CIA 三元组中,"可用性"经常被忽视,但它是 DoS 攻击的直接破坏目标
三、安全体系结构:纵深防御
纵深防御体系将安全防护划分为由外到内的多个层次。攻击者要触达核心数据资产,必须依次突破每一层防御。这种"剥洋葱"式的防御大幅提高了攻击成本,并为安全检测和响应争取了时间。
3.1 物理安全
物理安全是整个安全体系的最外层,也是最基础的一层。无论网络和应用防护多么严密,如果机房被人闯入、服务器被人搬走,一切上层防护都将形同虚设。物理安全的控制对象包括机房环境、设备设施和物理访问。
物理安全控制要点
- 环境安全:防雷、防火、防水、防静电、防尘、温湿度控制(机房空调)。
- 设备安全:防盗、防毁、防电磁辐射(TEMPEST)、电源冗余(UPS)。
- 介质安全:硬盘、磁带、U 盘的存放、传输与销毁。
- 访问控制:门禁系统(刷卡/生物识别)、视频监控、保安巡逻、机房分区。
3.2 网络安全
网络安全在网络边界和内部网络部署防护,控制进出网络的流量,检测和阻断网络层攻击。这是纵深防御中"最为人熟知"的一层,也是软考的高频考点。
- 边界防护:防火墙(包过滤、状态检测、应用层网关)。
- 入侵检测与防御:IDS(旁路检测)、IPS(串行阻断)。
- 安全通信:VPN(IPSec、SSL VPN)、传输加密。
- 区域划分:DMZ、内部网络、管理网络分段。
3.3 主机安全
主机安全聚焦于操作系统和服务器自身的加固。即便网络层放行了恶意流量,一个加固良好的主机仍能抵御大部分漏洞利用。
- 系统加固:关闭不必要的服务和端口、删除多余账号、最小化安装。
- 补丁管理:及时更新操作系统和应用的安全补丁。
- 主机入侵检测(HIDS):监控文件完整性、进程行为、系统日志。
- 账号与权限:强口令策略、特权账号管控、最小权限。
3.4 应用安全
应用安全关注应用程序自身的健壮性,是开发者最直接可控的安全层。OWASP Top 10 列出了 Web 应用最常见的安全风险,如注入、XSS、CSRF、权限失效等,均属于应用层安全问题。
- 安全编码:输入校验、参数化查询、输出编码。
- 身份认证与授权:强认证、最小权限、会话管理。
- 安全配置:错误处理不泄露堆栈、关闭调试模式。
- 安全测试:SAST/DAST、渗透测试、代码审计。
3.5 数据安全
数据安全是纵深防御的最后一道防线,也是核心目标——所有防护最终都是为了保护数据。即便前面的层全部失守,数据加密和备份仍能将损失降到最低。
- 数据加密:存储加密、传输加密、字段级加密。
- 数据脱敏:对敏感字段(手机号、身份证)进行掩码或替换。
- 备份与恢复:3-2-1 备份策略、异地容灾、定期演练。
- 分级分类:按敏感度对数据分级,实施差异化保护。
很多团队把安全等同于"装个防火墙",这违反了纵深防御原则。防火墙只覆盖网络层,对应用层漏洞(如 SQL 注入)和内部威胁(如恶意员工)几乎无防护能力。安全架构必须覆盖五层,缺一不可。
四、加密体系
密码学是安全架构的基石。机密性、完整性、真实性和抗抵赖性四个安全要素都依赖密码学技术实现。加密体系主要分为三大类:对称加密、非对称加密和哈希函数,再结合数字信封、PKI 等组合机制构成完整的密码应用体系。
4.1 对称加密(Symmetric Encryption)
对称加密是指加密和解密使用同一个密钥的加密算法。通信双方在通信前必须先安全地共享这个密钥,这就是对称加密的核心难题——密钥分发问题。
常见对称加密算法
- DES(Data Encryption Standard):1977 年美国国家标准,密钥长度 56 位(实际 64 位,含 8 位校验),分组长度 64 位。因密钥过短已被暴力破解,不再安全。
- 3DES(Triple DES):使用 3 个 56 位密钥,对数据执行三次 DES(加密-解密-加密)。密钥强度相当于 112 位,是 DES 到 AES 的过渡方案,目前也逐渐被淘汰。
- AES(Advanced Encryption Standard):2001 年发布的新一代标准,支持 128/192/256 位密钥,分组长度 128 位。安全性高、性能好,是当前最主流的对称加密算法。
- SM4(国密):中国国家密码管理局发布的分组密码算法,密钥长度和分组长度均为 128 位,用于无线局域网等产品,是国密体系的重要组成部分。
- IDEA、RC4、ChaCha20:其他常见算法,其中 RC4 因存在漏洞已不推荐,ChaCha20 在移动端性能优异。
优点
- 加解密速度快,适合加密大量数据
- 算法成熟,硬件支持广泛
- 加密后密文长度与明文接近
缺点
- 密钥分发困难(n 个用户需 n(n-1)/2 个密钥)
- 无法实现抗抵赖(双方共享密钥)
- 密钥管理规模大,易泄露
4.2 非对称加密(Asymmetric Encryption)
非对称加密使用一对数学相关的密钥:公钥(Public Key)公开给所有人,私钥(Private Key)严格保密。其核心特性是:公钥加密的数据只能用对应的私钥解密,反之亦然。这巧妙地解决了对称加密的密钥分发难题。
常见非对称加密算法
- RSA:1977 年由 Rivest、Shamir、Adleman 提出,基于大整数分解难题。常用密钥长度 2048/4096 位。是应用最广的非对称算法,可用于加密和数字签名。
- ECC(椭圆曲线密码):基于椭圆曲线离散对数难题。在相同安全强度下密钥更短(256 位 ECC ≈ 3072 位 RSA),适合移动端和物联网。
- SM2(国密):基于椭圆曲线的非对称算法,密钥长度 256 位,是中国公钥密码标准,用于替换 RSA。
- DSA(数字签名算法):仅用于数字签名,不能用于加密。
- Diffie-Hellman(DH):用于密钥交换,不能直接加解密。
数字签名(Digital Signature)
非对称加密的"反向使用"就是数字签名:用私钥签名,用公钥验签。由于私钥只有签名方持有,因此验签成功即可证明:消息确实来自该签名方(真实性),且未被篡改(完整性),签名方无法抵赖(抗抵赖性)。
· 公钥加密 / 私钥解密:用于保障机密性(只有私钥持有者能读)
· 私钥签名 / 公钥验签:用于保障真实性、完整性、抗抵赖性(证明是私钥持有者发的)
· 记忆:加密用对方公钥,签名用自己私钥。
| 对比维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1 个(加解密共用) | 1 对(公钥 + 私钥) |
| 加解密速度 | 快(适合大数据量) | 慢(适合小数据量/密钥交换) |
| 密钥分发 | 困难(核心难题) | 容易(公钥可公开) |
| 抗抵赖性 | 不支持 | 支持(数字签名) |
| 代表算法 | DES、3DES、AES、SM4 | RSA、ECC、SM2、DSA |
| n 个用户密钥数 | n(n-1)/2 | 2n(每人一对) |
| 典型用途 | 数据加密、文件加密 | 密钥交换、数字签名、身份认证 |
4.3 哈希函数(Hash Function)
哈希函数(也称散列函数、摘要函数)是一种单向密码学函数,它将任意长度的输入压缩为固定长度的输出(摘要/哈希值)。好的哈希函数具有:单向性(不可由摘要反推原文)、抗碰撞性(难以找到两个不同输入产生相同摘要)、雪崩效应(输入微小变化导致摘要剧烈变化)。
常见哈希算法
- MD5:输出 128 位摘要。已被发现严重碰撞漏洞,不再适用于安全场景,但仍在非安全场景(如文件指纹)中广泛使用。
- SHA-1:输出 160 位摘要。同样被攻破,2017 年 Google 公布首次实际碰撞,已不推荐使用。
- SHA-256 / SHA-512:SHA-2 家族,输出 256/512 位。目前广泛使用,安全性高,是 TLS 证书签名的主流算法。
- SHA-3:基于 Keccak 海绵结构,是新一代标准,与 SHA-2 结构完全不同。
- SM3(国密):输出 256 位摘要,中国密码行业标准,用于 SM2 签名、SSL 国密套件。
哈希函数的典型用途
- 完整性校验:发布软件时附带哈希值,下载后比对判断是否被篡改。
- 口令存储:数据库中存储口令的哈希值(应加盐 salt),即便数据库泄露也无法还原口令。
- 数字签名:对长消息签名前先计算摘要,再对摘要签名,提升效率。
- 消息认证码(MAC):哈希 + 密钥,验证消息完整性和来源。
严禁明文存储口令!也不应只存简单哈希(容易被彩虹表破解)。正确做法是加盐 + 慢哈希(如 bcrypt、PBKDF2、scrypt、Argon2),增加暴力破解成本。
4.4 消息认证码(MAC)与 HMAC
消息认证码(Message Authentication Code, MAC)是结合了密钥的哈希函数,用于同时验证消息完整性和来源真实性。与普通哈希的区别在于:MAC 需要密钥参与,没有密钥就无法生成或验证合法的 MAC,从而防止攻击者伪造。
HMAC(Hash-based MAC)是最常用的 MAC 构造方式,它将哈希函数与密钥结合:HMAC(K, M) = H((K⊕opad) ‖ H((K⊕ipad) ‖ M))。HMAC 可基于任意安全哈希函数实现,如 HMAC-SHA256、HMAC-SM3。
· MAC 用对称密钥,速度快,但无法实现抗抵赖(双方都持有密钥,无法证明是哪一方生成的)
· 数字签名用非对称密钥,速度慢,但支持抗抵赖(只有私钥持有者能签)
· 需要抗抵赖时用数字签名,仅需完整性+真实性时用 MAC。
4.5 数字信封(Digital Envelope)
对称加密速度快但密钥分发难,非对称加密解决了密钥分发但速度慢。数字信封将两者结合:用对称加密保护数据,用非对称加密保护对称密钥,兼顾安全与效率。
4.6 数字证书与 PKI/CA
非对称加密中,如何确认"这个公钥确实是某人的"?如果攻击者冒名发布公钥,就会造成中间人攻击。数字证书(Digital Certificate)就是用来绑定公钥与身份的电子凭证,由权威的证书授权机构(CA, Certificate Authority)签发。
PKI(Public Key Infrastructure,公钥基础设施)是围绕数字证书建立的一整套体系,包括 CA、RA(注册机构)、证书库、CRL/OCSP(吊销机制)、密钥管理等组件。
X.509 证书结构(软考重点)
- 版本号:证书格式版本(V1/V2/V3)。
- 序列号:CA 分配的唯一编号。
- 签名算法:CA 用于签发本证书的算法(如 SHA256withRSA)。
- 颁发者(Issuer):签发该证书的 CA 名称(DN)。
- 有效期:证书的生效与失效时间(Not Before / Not After)。
- 主体(Subject):证书持有者名称(DN)。
- 主体公钥:持有者的公钥及算法。
- 扩展:密钥用途、基本约束(是否为 CA)、SAN 等。
- CA 签名:CA 对上述所有字段的数字签名。
证书吊销
证书在有效期内可能因私钥泄露、用户变更等原因需要提前作废,这就是证书吊销。主要有两种机制:
- CRL(Certificate Revocation List,证书吊销列表):CA 定期发布已被吊销的证书列表,验证方下载列表查询。缺点是时效性差(有发布间隔)、列表可能很大。
- OCSP(Online Certificate Status Protocol,在线证书状态协议):验证方向 CA 的 OCSP 服务器实时查询某证书的状态(good/revoked/unknown)。时效性好,但增加了一次在线查询开销。
· SM1:对称分组密码,不公开,仅以 IP 核形式提供
· SM2:椭圆曲线非对称密码(替代 RSA)
· SM3:哈希算法(替代 SHA-256)
· SM4:对称分组密码(替代 AES),公开
· SM9:基于标识的非对称密码(IBE)
五、身份认证与访问控制
身份认证解决"你是谁"的问题,访问控制解决"你能做什么"的问题。两者共同构成了系统安全的第一道应用层防线,是安全架构设计的高频考点。
5.1 身份认证(Authentication)
身份认证是验证某个实体是否为其声称身份的过程。认证依据分为三类,称为认证三因素:
- 你知道什么(Something you know):口令、密码、PIN 码、安全问题。最常用,但易被猜测、撞库、钓鱼。
- 你拥有什么(Something you have):令牌、智能卡、手机短信验证码、U 盾、动态口令器(OTP)。
- 你是什么(Something you are):指纹、人脸、虹膜、声纹、静脉等生物特征。不易丢失,但一旦泄露不可更换。
多因素认证(MFA):组合使用两种或以上不同类型的因素进行认证(如口令 + 短信验证码),即使某一因素泄露,攻击者也无法完成认证,大幅提升安全性。
单点登录(SSO)
单点登录(Single Sign-On)是指用户只需登录一次,即可访问所有相互信任的应用系统,避免在多个系统间反复输入凭证。常见 SSO 协议包括:
- SAML(Security Assertion Markup Language):基于 XML 的企业级 SSO 标准,常用于 B2B 场景。
- OAuth 2.0:授权框架,本身不直接做认证,但常被用于实现 SSO 的授权部分。
- OpenID Connect(OIDC):在 OAuth 2.0 之上增加身份层,提供认证能力,是现代 SSO 的主流方案。
- CAS:耶鲁大学开源的 SSO 框架,国内高校、企业使用较多。
· 认证(Authentication):验证身份,回答"你是谁" → AuthN
· 授权(Authorization):授予权限,回答"你能做什么" → AuthZ
· OAuth 2.0 是授权框架,OIDC 才是认证协议。
5.2 访问控制(Access Control)
访问控制是在确认身份后,决定主体(Subject)能否以某种方式(权限)访问某个客体(Object)的机制。主流的访问控制模型有四种,是软考高频考点。
1. 自主访问控制(DAC, Discretionary Access Control)
客体的所有者可以自主决定将权限授予谁。典型实现是 ACL(访问控制列表),如 Linux 文件的 rwx 权限,文件所有者可以 chmod 改权限。灵活性高但安全性较弱,权限容易传播失控。
2. 强制访问控制(MAC, Mandatory Access Control)
系统强制实施,主体和客体都被赋予安全标签(如绝密、机密、秘密、公开),由系统按"向下写、向上读"等规则强制判定,用户无权更改。安全性最高但灵活性差,常用于军事、政府等高安全场景。
· 向下读原则(No Read Up):主体只能读安全等级 ≤ 自己的客体
· 向上写原则(No Write Down):主体只能写安全等级 ≥ 自己的客体
· 目标:防止高密级信息流向低密级主体,保障机密性
Biba 模型(完整性):与 BLP 相反,防篡改,保障完整性
3. 基于角色的访问控制(RBAC, Role-Based Access Control)
RBAC 是企业应用中最主流的模型。核心思想是:权限不直接授予用户,而是授予"角色",用户通过被分配角色间接获得权限。这极大简化了权限管理——用户变动只需调整角色分配,权限调整只需修改角色权限。
4. 基于属性的访问控制(ABAC, Attribute-Based Access Control)
ABAC 基于主体属性、客体属性、环境属性、操作属性,通过策略(Policy)动态判定是否允许访问。例如"工作时间内、本部门员工、可读取本部门机密文件"。最灵活、最精细,但策略复杂、管理成本高,适合复杂场景。
| 模型 | 核心机制 | 灵活性 | 安全性 | 典型场景 |
|---|---|---|---|---|
| DAC | 所有者自主授权(ACL) | 高 | 低 | Linux 文件权限 |
| MAC | 系统强制 + 安全标签 | 低 | 高 | 军政系统 |
| RBAC | 角色为中介 | 中 | 中 | 企业应用(主流) |
| ABAC | 属性 + 策略 | 最高 | 高 | 复杂权限场景 |
六、网络安全
网络安全是纵深防御的第二层,主要在网络边界和内部网络部署防护措施,控制流量、检测攻击、保障传输安全。软考中防火墙、IDS/IPS、VPN、DMZ 是高频考点。
6.1 防火墙(Firewall)
防火墙是部署在网络边界的访问控制设备,根据预定义规则允许或拒绝流量通过。按技术原理分为三代:
- 包过滤防火墙(Packet Filter):工作在网络层/传输层,根据源/目的 IP、端口、协议过滤。速度快但无法识别应用层内容,无法防范伪造 IP。
- 状态检测防火墙(Stateful Inspection):在包过滤基础上跟踪连接状态,识别会话。是目前主流的防火墙技术。
- 应用层网关(Application-Level Gateway / 代理防火墙):工作在应用层,代理应用请求,可深入检查应用层内容,安全性高但性能开销大。
6.2 IDS / IPS
入侵检测系统(IDS, Intrusion Detection System)用于检测网络或系统中的入侵行为并告警,旁路部署,只检测不阻断。入侵防御系统(IPS, Intrusion Prevention System)在 IDS 基础上增加阻断能力,串行部署,可实时拦截。
按检测原理分为两类:
- 基于特征(Signature-based):维护已知攻击特征库,匹配则告警。准确率高、误报少,但无法检测未知攻击(零日漏洞)。
- 基于异常(Anomaly-based):建立正常行为基线,偏离基线即告警。可发现未知攻击,但误报率高。
6.3 VPN
VPN(Virtual Private Network,虚拟专用网)通过隧道技术在公共网络上建立加密通道,实现安全通信。主流协议:
- IPSec:工作在网络层,加密整个 IP 包。包括 AH(仅认证)、ESP(加密+认证)、IKE(密钥交换)。适合站点到站点 VPN。
- SSL/TLS VPN:工作在传输层/应用层,基于浏览器即可接入,无需专用客户端。适合远程办公接入。
6.4 DMZ 架构
DMZ(Demilitarized Zone,隔离区/非军事区)是位于内外网之间的一个缓冲网络,用于部署需要对外提供服务的服务器(如 Web、邮件、DNS)。外部流量只能访问 DMZ,不能直接进入内网;DMZ 服务器也不能主动发起连接到内网,即使 DMZ 被攻陷,内网仍受保护。
· IDS:旁路部署,只检测不阻断,不影响业务流量
· IPS:串行部署,检测并阻断,可能误判正常流量
· IDS 像"摄像头",IPS 像"保安"
七、Web 安全
Web 应用是当前互联网最主流的应用形态,也是攻击者最关注的攻击面。OWASP Top 10 列出了 Web 应用最严重的安全风险,其中 SQL 注入、XSS、CSRF 是软考必考的三大 Web 安全问题。
7.1 SQL 注入(SQL Injection)
SQL 注入是指攻击者通过在输入中构造恶意 SQL 片段,使后端数据库执行非预期命令,从而读取、篡改或删除数据。其根本原因是将用户输入直接拼接到 SQL 语句中,未做参数化处理。
防御措施
- 参数化查询(预编译语句 PreparedStatement):最根本的防御,将 SQL 结构与数据彻底分离,输入永远不会被当作 SQL 代码执行。
- 输入校验与过滤:白名单校验输入格式,过滤危险字符。但黑名单方式不可靠。
- 使用 ORM 框架:MyBatis、Hibernate 等默认参数化,避免手写拼接。
- 最小权限:数据库账号只授予必要权限,禁用 root/sa 连接应用。
- WAF(Web 应用防火墙):在网络层拦截常见注入特征。
7.2 XSS(跨站脚本攻击)
XSS(Cross-Site Scripting)是指攻击者将恶意脚本注入到 Web 页面中,当其他用户浏览该页面时,脚本在用户浏览器中执行,从而窃取 Cookie、会话令牌或进行其他恶意操作。XSS 的根本原因是输出未编码。
XSS 分为三类:
- 存储型 XSS(Stored XSS):恶意脚本被持久化存储到数据库(如评论、个人资料),所有访问该页面的用户都会中招。危害最大。
- 反射型 XSS(Reflected XSS):恶意脚本包含在 URL 参数中,服务器将其"反射"回页面执行。需诱导用户点击恶意链接。
- DOM 型 XSS(DOM-based XSS):完全在前端 JavaScript 中发生,恶意数据通过 DOM 操作注入页面,不经过服务器。
防御措施
- 输出编码(HTML Encoding):将 < > & " ' 等特殊字符转义为 HTML 实体,使脚本无法执行。
- CSP(Content Security Policy,内容安全策略):通过 HTTP 头限制可加载脚本来源,禁止内联脚本执行。
- HttpOnly Cookie:设置 Cookie 的 HttpOnly 属性,使 JavaScript 无法读取,防止会话劫持。
- 输入校验:对输入长度、格式做白名单校验。
7.3 CSRF(跨站请求伪造)
CSRF(Cross-Site Request Forgery)是指攻击者诱导已登录用户访问恶意页面,利用用户的登录凭证(Cookie 自动携带)向目标网站发起请求,以用户身份执行非本意操作。CSRF 的本质是利用 Cookie 自动携带机制冒充用户。
防御措施
- CSRF Token:服务器为每个会话生成随机令牌,请求必须携带正确 token 才被接受。攻击者站点无法获取该 token。
- SameSite Cookie:设置 Cookie 的 SameSite 属性为 Strict 或 Lax,限制跨站请求携带 Cookie。
- Referer / Origin 校验:验证请求来源是否为合法站点。
- 二次确认:敏感操作要求验证码或二次密码。
7.4 其他常见 Web 漏洞
- 文件上传漏洞:上传可执行脚本(如 webshell.php)并被服务器执行,获得服务器控制权。防御:白名单校验扩展名、重命名、存储到非 Web 目录、内容检测。
- 目录遍历(Path Traversal):通过 ../ 等路径跳转读取服务器任意文件。防御:规范化路径、限制根目录、参数校验。
- 命令注入(Command Injection):将用户输入拼接到系统命令中,执行任意命令。防御:避免调用系统命令、参数化、严格过滤。
- SSRF(服务端请求伪造):诱使服务器发起请求访问内网资源。防御:限制可访问地址、白名单。
| 攻击 | 攻击目标 | 根本原因 | 核心防御 |
|---|---|---|---|
| SQL 注入 | 数据库 | SQL 拼接 | 参数化查询 |
| XSS | 用户浏览器 | 输出未编码 | 输出编码 + CSP |
| CSRF | 用户会话 | Cookie 自动携带 | CSRF Token + SameSite |
| 文件上传 | 服务器 | 未校验文件类型 | 白名单 + 重命名 |
| 目录遍历 | 文件系统 | 路径未规范化 | 路径规范化 + 限制 |
| 命令注入 | 操作系统 | 命令拼接 | 避免系统命令 + 过滤 |
· SQL 注入:攻击数据库,输入被当作 SQL 代码 → 防御:参数化
· XSS:攻击浏览器,输入被当作 HTML/JS 代码 → 防御:输出编码
· CSRF:攻击会话,借用用户身份发请求 → 防御:Token
· XSS 是"注入代码执行",CSRF 是"借用身份请求",注意区分!
八、安全协议
安全协议在通信双方之间建立安全通道,实现加密、认证、完整性保护。常见的安全协议包括 HTTPS/SSL/TLS、IPSec、Kerberos 等。
8.1 HTTPS / SSL / TLS
HTTPS 是在 HTTP 之上叠加 TLS/SSL 协议实现的加密通信。SSL(Secure Sockets Layer)是早期协议,已因漏洞弃用;TLS(Transport Layer Security)是其继任者,目前主流版本为 TLS 1.2 / 1.3。TLS 提供机密性(加密)、完整性(MAC)、真实性(证书认证)三项保障。
TLS 协议分为两层:记录协议(Record Protocol,底层,负责数据分片、加密、MAC)和握手协议(Handshake Protocol,上层,负责协商加密套件、交换密钥、验证身份)。
8.2 IPSec
IPSec(Internet Protocol Security)是工作在网络层(IP 层)的安全协议,为 IP 包提供加密和认证,常用于构建站点到站点 VPN。它由三个核心子协议组成:
- AH(Authentication Header):提供数据完整性、来源认证和抗重放,不提供加密。
- ESP(Encapsulating Security Payload):提供加密 + 完整性 + 认证,是 IPSec 最常用的协议。
- IKE(Internet Key Exchange):基于 Diffie-Hellman 协商安全关联(SA)和密钥。
IPSec 有两种工作模式:传输模式(Transport,只保护 IP 载荷,原 IP 头不变,适合主机到主机)和隧道模式(Tunnel,整个原 IP 包加密并封装在新 IP 头中,适合网关到网关 VPN)。
8.3 Kerberos
Kerberos 是 MIT 提出的基于对称加密和网络时间同步的身份认证协议,是 Windows Active Directory 的核心认证机制。它通过票据(Ticket)机制实现单点登录(SSO),避免口令在网络中传输。
Kerberos 涉及三方:客户端(C)、认证服务器(AS,也即 KDC 的组成部分)和票据授予服务器(TGS)。客户端不直接向应用服务器发送口令,而是先向 AS 证明身份获取 TGT(票据授予票据),再用 TGT 向 TGS 换取访问某具体服务的 ST(服务票据),最后用 ST 访问目标服务。整个过程口令从不在网络中明文传输,且票据有时效性,支持单点登录。
· Kerberos 基于对称加密(非非对称)
· 核心票据:TGT(向 TGS 换 ST)、ST(访问具体服务)
· 依赖时间同步(防重放,票据带时间戳)
· 实现单点登录 SSO
九、软件安全开发生命周期
传统的安全实践往往是"先开发后打补丁",这种模式成本高、漏洞多。现代安全工程主张将安全左移(Shift Left),融入软件开发生命周期(SDLC)的每个阶段,从源头减少漏洞。微软提出的 SDL(Security Development Lifecycle)是这一思想的代表。
9.1 各阶段安全活动
- 需求阶段:明确安全需求与合规要求(如等保、GDPR),定义安全目标。
- 设计阶段:进行威胁建模(Threat Modeling),识别潜在威胁并设计缓解措施;遵循最小权限、纵深防御等原则。
- 编码阶段:遵循安全编码规范(如 OWASP),使用安全函数,避免危险 API;进行代码评审。
- 测试阶段:执行SAST(静态应用安全测试,扫描源码)、DAST(动态应用安全测试,运行时攻击)、渗透测试、模糊测试。
- 发布阶段:最终安全审查(FSR),签署安全合规声明。
- 运维阶段:漏洞应急响应、补丁管理、安全监控与日志审计。
9.2 威胁建模 —— STRIDE 模型
STRIDE 是微软提出的威胁分类模型,将威胁按安全属性分为六类,是软考设计阶段威胁建模的高频考点。STRIDE 是六个英文单词首字母的缩写:
- S - Spoofing(身份伪造):冒充他人身份。破坏真实性。缓解:强认证、多因素认证、Kerberos。
- T - Tampering(篡改):未授权修改数据或代码。破坏完整性。缓解:哈希校验、数字签名、MAC。
- R - Repudiation(抵赖):否认执行过的操作。破坏抗抵赖性。缓解:数字签名、审计日志、时间戳。
- I - Information Disclosure(信息泄露):敏感信息被未授权访问。破坏机密性。缓解:加密、访问控制、脱敏。
- D - Denial of Service(拒绝服务):使服务不可用。破坏可用性。缓解:限流、冗余、DDoS 清洗。
- E - Elevation of Privilege(权限提升):获取超出授权的权限。破坏授权。缓解:最小权限、输入校验、沙箱。
| STRIDE 威胁 | 破坏的安全属性 | 典型缓解措施 |
|---|---|---|
| Spoofing 伪造 | 真实性 | 身份认证、MFA、Kerberos |
| Tampering 篡改 | 完整性 | 数字签名、MAC、哈希 |
| Repudiation 抵赖 | 抗抵赖性 | 数字签名、审计日志 |
| Information Disclosure 信息泄露 | 机密性 | 加密、访问控制 |
| Denial of Service 拒绝服务 | 可用性 | 限流、冗余、负载均衡 |
| Elevation of Privilege 权限提升 | 授权 | 最小权限、输入校验 |
"伪、改、赖、露、拒、提" 对应 "真、完、抗、机、用、授" 六个安全属性。每个威胁正好破坏一个属性,对应一类缓解措施。
9.3 安全代码审查与 SAST/DAST
安全测试是 SDLC 中发现漏洞的关键环节,主要分为静态和动态两类:
- SAST(静态应用安全测试):白盒测试,在不运行程序的情况下扫描源码、字节码,发现硬编码口令、SQL 拼接、危险函数等问题。优点是能在开发早期发现漏洞;缺点是误报率较高。
- DAST(动态应用安全测试):黑盒测试,在程序运行时模拟攻击,从外部探测漏洞(如注入、XSS)。优点是发现真实可利用漏洞;缺点是无法定位到具体代码行。
- IAST(交互式应用安全测试):灰盒测试,在运行时插桩监测,结合代码上下文,准确率高。
- SCA(软件成分分析):扫描第三方依赖库已知漏洞(CVE)。
十、实战案例:银行系统安全架构
下面以网上银行系统为例,综合运用前面各章知识,设计一个完整的安全架构。银行系统对安全的要求极高,涉及资金和客户隐私,必须从网络、应用、数据、认证、审计等多维度构建纵深防御体系。
10.1 网络安全措施
- 边界防护:上游 Anti-DDoS 清洗中心抵御大流量攻击;WAF 拦截 SQL 注入、XSS 等 Web 攻击。
- DMZ 部署:前端网关、API 网关部署在 DMZ,与内网应用服务隔离;堡垒机统一运维入口。
- 双防火墙 + 网络分段:外部防火墙隔离 Internet 与 DMZ,内部防火墙隔离 DMZ 与内网;内网按业务进一步分段。
- IDS/IPS + HIDS:网络层 IDS/IPS 检测流量异常,主机层 HIDS 监控进程与文件完整性。
- 全链路 TLS 1.3:客户端到服务器全程加密,禁用旧版本 SSL/TLS。
10.2 应用安全措施
- 安全编码:遵循 OWASP 规范,所有数据库访问使用参数化查询,输出统一编码。
- API 网关:统一鉴权、限流、熔断,防止接口被滥用和暴力破解。
- 风控引擎:基于设备指纹、行为画像、交易频率等实时识别异常交易并拦截。
- 安全测试:CI/CD 流水线集成 SAST/DAST/SCA,发布前必须通过安全门禁。
10.3 数据安全措施
- 存储加密:数据库透明加密(TDE),敏感字段(卡号、密码)额外加密。
- 密钥管理:使用 HSM(硬件安全模块)或 KMS 管理主密钥,密钥与数据分离。
- 数据脱敏:日志、测试环境中的敏感数据脱敏处理。
- 备份容灾:主从复制 + 异地容灾,定期演练恢复流程。
10.4 认证与授权设计
- 多因素认证(MFA):口令 + 短信/动态口令令牌 + 生物特征,敏感操作(大额转账)二次认证。
- 统一身份认证(SSO):基于 OAuth 2.0 / OIDC 实现各子系统单点登录。
- RBAC + ABAC:员工权限基于角色管理,关键操作叠加属性策略(如时间、IP)。
- 最小权限原则:数据库账号按业务隔离,应用账号无 DDL 权限。
10.5 审计与合规
- 全量审计日志:所有关键操作(登录、转账、配置变更)记录不可篡改的审计日志。
- SIEM(安全信息与事件管理):集中收集日志,关联分析,实时告警。
- 堡垒机:运维操作全程录像审计,防止内部越权。
- 合规遵从:满足等保 2.0 三级、PCI-DSS(支付卡行业)、银保监会监管要求。
银行安全架构体现了"纵深防御 + 最小权限 + 安全左移 + 持续监测"四大原则。每一层都假设上一层可能失守,各自独立又相互补充,最终形成多道防线协同的立体防护体系。
十一、软考考点总结与真题
安全架构设计是系统架构设计师考试的核心模块之一,涉及密码学、网络安全、应用安全、访问控制等多个子领域,知识点密集且易混淆。下面汇总核心考点并给出典型真题。
11.1 核心加密算法速查表
| 类别 | 算法 | 密钥/摘要长度 | 说明 |
|---|---|---|---|
| 对称加密 | DES | 56 位 | 已不安全 |
| 3DES | 112/168 位 | 过渡方案 | |
| AES | 128/192/256 位 | 主流标准 | |
| SM4 | 128 位 | 国密 | |
| 非对称加密 | RSA | 2048/4096 位 | 基于大数分解 |
| ECC | 256+ 位 | 基于椭圆曲线 | |
| SM2 | 256 位 | 国密 | |
| 哈希 | MD5 | 128 位 | 已不安全 |
| SHA-1 | 160 位 | 已不安全 | |
| SHA-256 | 256 位 | 主流 | |
| SM3 | 256 位 | 国密 |
11.2 典型真题
真题一(单选题)
某系统要求在网络中传输的数据既不能被窃听,又不能被篡改,同时接收方还能确认发送方的身份且发送方不能抵赖。下列方案中最合适的是( )。
A. 先用发送方私钥签名,再用对称密钥加密
B. 先用接收方公钥加密,再用发送方私钥签名
C. 先对称加密数据,再用发送方私钥对摘要签名,对称密钥用接收方公钥加密(数字信封)
D. 用哈希函数计算摘要后直接传输
解析:题干要求同时满足机密性(不被窃听)、完整性(不被篡改)、真实性(确认身份)、抗抵赖性(不能抵赖)。方案 C 是典型的"数字信封 + 数字签名"组合:对称加密保证机密性和效率;私钥对摘要签名保证完整性、真实性和抗抵赖;接收方公钥加密对称密钥解决密钥分发。A 缺少机密性保护(无加密数据);B 顺序不合理且效率低;D 仅能保证完整性,无加密无认证。
真题二(单选题)
关于访问控制模型,下列说法正确的是( )。
A. DAC 中客体所有者可以自主决定权限的授予,安全性最高
B. MAC 基于安全标签强制控制,灵活性好,广泛用于企业应用
C. RBAC 通过角色作为用户与权限的中介,是企业应用的主流模型
D. ABAC 仅基于用户身份判定权限,管理简单
解析:A 错,DAC 灵活但安全性较低(权限易传播失控),安全性最高的是 MAC;B 错,MAC 安全性高但灵活性差,多用于军政系统而非企业;C 正确,RBAC 通过角色解耦用户与权限,是企业应用主流模型;D 错,ABAC 基于多种属性(主体、客体、环境)和策略判定,最为灵活但管理复杂。
真题三(单选题)
在 Kerberos 认证系统中,客户端访问某应用服务时所持有的票据是( ),该票据由( )颁发。
A. TGT,AS
B. TGT,TGS
C. ST(服务票据),TGS
D. ST(服务票据),应用服务器
解析:Kerberos 中,客户端先向 AS(认证服务器)认证获取 TGT(票据授予票据);再用 TGT 向 TGS(票据授予服务器)换取访问具体应用的 ST(服务票据);最后用 ST 访问目标应用服务器。因此访问应用服务持有的是 ST,由 TGS 颁发。注意区分 TGT(向 TGS 换取 ST 用)与 ST(访问服务用)。
11.3 记忆口诀与复习要点
1. CIA 五要素:机密性、完整性、可用性、真实性、抗抵赖性,对应 STRIDE 六威胁
2. 加密三剑客:对称(AES/SM4,快,分发难)、非对称(RSA/SM2,慢,解决分发+签名)、哈希(SHA-256/SM3,单向)
3. 数字签名 = 私钥签名 + 公钥验签,保障真实性+完整性+抗抵赖
4. 数字信封 = 对称加密数据 + 非对称加密密钥,兼顾安全与效率
5. 访问控制四模型:DAC(自主)、MAC(强制)、RBAC(角色,主流)、ABAC(属性)
6. Web 三大攻击:SQL 注入(参数化)、XSS(输出编码)、CSRF(Token)
7. IDS vs IPS:旁路检测 vs 串行阻断
8. Kerberos:对称加密 + 票据(TGT/ST)+ SSO + 时间同步
9. 国密算法:SM1(对称,不公开)、SM2(非对称)、SM3(哈希)、SM4(对称,公开)
10. STRIDE:伪/改/赖/露/拒/提 对应 真/完/抗/机/用/授
· 加密用对方公钥,签名用自己私钥
· MD5/SHA-1 已不安全,SHA-256/SM3 才安全
· 认证(AuthN)是"你是谁",授权(AuthZ)是"你能做什么"
· OAuth 2.0 是授权框架,OIDC 才是认证协议
· DAC 灵活不安全,MAC 安全不灵活,RBAC 企业主流
安全架构设计不是堆砌安全产品,而是在深入理解威胁与防护原理的基础上,结合业务场景做系统性、层次化的权衡。架构师应当从 CIA 五要素出发,以纵深防御为骨架,灵活运用密码学、访问控制、网络安全、安全协议等手段,并将安全贯穿 SDLC 全生命周期,才能构建出既安全又可用的系统。在软考中,掌握各类技术的基本原理、适用场景、优缺点对比,并能将其应用于案例分析,是取得高分的关键。