| Learning Objective | Essential Knowledge |
|---|---|
5.1.A |
|
5.1.B |
|
5.1.C |
|
保护应用与数据
AP 网络安全 · 第 5 主题
5.1
应用与数据的漏洞与攻击
大纲
来源:美国大学理事会 AP 课程与考试说明
应用程序(applications)是在计算机上运行的程序,而数据是它们处理的——两者都是首要目标。若文件被未加密地存储,任何有访问驱动器权限的人都能读它们。若一个普通用户被给予管理性(administrative)权限,一个窃取那个账户的对手获得广泛的权力。
最大的应用危险是坏的用户输入。当一个程序不检查一个用户打什么时,一个对手能溜入命令——一个注入攻击(injection attack)。数据验证(data validation)(检查输入符合预期的规则)是防御。关键的攻击:
- SQL注入(SQL injection)——把 SQL 命令插入一个输入字段以读或改变一个数据库。
- 跨站脚本(XSS)(cross-site scripting)——把恶意脚本注入一个网站,它在另一个用户的浏览器里运行。
- 缓冲区溢出(buffer overflow)——发送比一个内存缓冲区(buffer)能容纳的更多数据,所以它溢出到附近的内存并可能运行对手的代码。
- 目录遍历(directory traversal)——在一个 URL 里用
../序列以到达打算的文件夹之外的文件,例如/etc/passwd。
我们按敏感性给数据风险评级:未加密的军事计划是高风险;带一个弱密钥的客户数据是中等;带短密钥的低价值数据是低。
| 英文 | 中文 | 拼音 |
|---|---|---|
| Applications | 应用程序 | yìng yòng chéng xù |
| administrative | 管理性 | guǎn lǐ xìng |
| injection attack | 注入攻击 | zhù rù gōng jī |
| Data validation | 数据验证 | shù jù yàn zhèng |
| SQL injection | SQL注入 | zhù rù |
| Cross-site scripting (XSS) | 跨站脚本 | kuà zhàn jiǎo běn |
| Buffer overflow | 缓冲区溢出 | huǎn chōng qū yì chū |
| buffer | 缓冲区 | huǎn chōng qū |
| Directory traversal | 目录遍历 | mù lù biàn lì |
5.2
保护应用与数据:管理性控制与访问控制
大纲
| Learning Objective | Essential Knowledge |
|---|---|
5.2.A |
|
5.2.B |
|
5.2.C |
|
5.2.D |
|
来源:美国大学理事会 AP 课程与考试说明
数据按它的状态分类——静态数据(at rest)(存储在一个驱动器上)、传输中数据(in transit)(在设备之间移动),和使用中数据(in use)(正在被处理)。静态数据和传输中数据可以加密,这样窃取者也读不了;使用中数据必须解密,所以改由访问控制来守护它。
有些数据类型是受监管(regulated)的 —— 法律规定了它们必须如何存储、传输和处理 —— 所以组织必须让自己的控制措施匹配这些规则,以达到合规(compliance)。考试要你能把每种数据类型与管辖它的法律配对:
| 受监管数据 | 它是什么 | 管辖法律 |
|---|---|---|
| 个人身份信息(PII)(personally identifiable information) | 任何能识别一个人的信息:姓名、地址、社保号、生物特征、出生日期 | 《隐私法》(1974);针对 13 岁以下儿童的 COPPA |
| 受保护健康信息(PHI)(protected health information) | 健康、治疗和医疗付款记录 | HIPAA(1996) |
| 支付卡信息(PCI)(payment card information) | 卡号、有效期、CVV、持卡人姓名 | PCI-DSS |
收集受监管数据的组织必须给它贴标签,并制定政策,使其存储、传输和处理保持合规 —— 敏感度越高,所需的安全程度就越高。
访问控制(access control)决定哪些主体(subjects)(用户)可以对哪些对象(objects)(文件)执行哪些操作(operations)。四个模型:
- 基于角色的访问控制(RBAC)(role-based)——访问遵循你的角色(所有"会计"都能到达工资软件)。
- 基于规则的访问控制(RuBAC)(rule-based)——访问遵循条件(只在营业时间),层叠在另一个模型上。
- 自主访问控制(DAC)(discretionary)——一个文件的所有者(owner)决定谁还可以使用它。
- 强制访问控制(MAC)(mandatory)——一个中央管理员设定严格的级别;Bell-LaPadula 模型把它总结为"向上写、向下读"。

跨所有模型的一个指导思想是最小权限原则(principle of least privilege)——给每个实体恰好它需要的访问,不多。
在一个 Linux 系统上,每个文件有三个权限——读(r)、写(w)、执行(x)——对三个组:所有者(owner)、组(group),和其他人(others)。chmod 命令用数字设定它们,加 4(读)+ 2(写)+ 1(执行)。所以 chmod 640 意味着所有者读+写(6)、组读(4)、其他人什么都没有(0)。

Worked example. 一个主体想要只有她自己能读并编辑一个文件、她的员工组能读它,而没有其他人能碰它。读+写 = 4+2 = 所有者的 6、读 = 组的 4、什么都没有 = 其他人的 0,给出 chmod 640 file。列表然后显示 -rw-r-----。要也让所有者能作为一个程序运行这个文件,你会加执行(7 = 4+2+1),给出 chmod 740。
Which access-control model fits the rule?
Each access-control model has a different decider: RBAC by your role, RuBAC by a condition, DAC by the file's owner, and MAC by a central administrator's levels.
| 英文 | 中文 | 拼音 |
|---|---|---|
| at rest | 静态数据 | jìng tài shù jù |
| in transit | 传输中数据 | chuán shū zhōng shù jù |
| in use | 使用中数据 | shǐ yòng zhōng shù jù |
| regulated | 受监管 | shòu jiān guǎn |
| compliance | 合规 | hé guī |
| personally identifiable information (PII) | 个人身份信息 | gè rén shēn fèn xìn xī |
| protected health information (PHI) | 受保护健康信息 | shòu bǎo hù jiàn kāng xìn xī |
| payment card information (PCI) | 支付卡信息 | zhī fù kǎ xìn xī |
| Role-based (RBAC) | 基于角色的访问控制 | jī yú jué sè de fǎng wèn kòng zhì |
| Rule-based (RuBAC) | 基于规则的访问控制 | jī yú guī zé de fǎng wèn kòng zhì |
| Discretionary (DAC) | 自主访问控制 | zì zhǔ fǎng wèn kòng zhì |
| Mandatory (MAC) | 强制访问控制 | qiáng zhì fǎng wèn kòng zhì |
| principle of least privilege | 最小权限原则 | zuì xiǎo quán xiàn yuán zé |
5.3
用密码学保护存储的数据
大纲
| Learning Objective | Essential Knowledge |
|---|---|
5.3.A |
|
5.3.B |
|
来源:美国大学理事会 AP 课程与考试说明
密码学(cryptography)隐藏信息。一个加密(encryption)算法把明文(plaintext)与一个密钥(key)结合以产生密文(ciphertext);解密(decryption)逆转它。密钥空间(keyspace)是可能的密钥的数量——它越大,一个对手需要越长时间猜测。一个 n 位密钥有一个 $2^n$ 的密钥空间。
对称加密(symmetric encryption)使用相同的密钥来加密和解密。标准是 AES(高级加密标准),一个在 128 位块上工作的分组密码(block cipher),保护 Wi-Fi、浏览和存储的文件。因为两侧都需要相同的秘密密钥,安全地共享那个密钥是挑战。
Encrypt a message by shifting letters
Encryption combines plaintext with a key to make ciphertext. In this simple cipher the key is the shift amount; only someone who knows the shift can decrypt the message back.
| 英文 | 中文 | 拼音 |
|---|---|---|
| Cryptography | 密码学 | mì mǎ xué |
| plaintext | 明文 | míng wén |
| key | 密钥 | mì yào |
| ciphertext | 密文 | mì wén |
| keyspace | 密钥空间 | mì yào kōng jiān |
| Symmetric encryption | 对称加密 | duì chèn jiā mì |
| AES | 高级加密标准 | gāo jí jiā mì biāo zhǔn |
| block cipher | 分组密码 | fēn zǔ mì mǎ |
5.4
非对称密码学
大纲
| Learning Objective | Essential Knowledge |
|---|---|
5.4.A |
|
5.4.B |
|
5.4.C |
|
来源:美国大学理事会 AP 课程与考试说明
非对称加密(asymmetric encryption)用一个密钥对(key pair)解决密钥共享问题——一个任何人都可以看的公钥(public key)和一个保持秘密的私钥(private key)。这些密钥是数学的逆:无论一个锁上什么,只有另一个解锁。要给你发一个秘密,我用你的公钥加密,而只有你的私钥能解密它——所以我们从不必提前共享一个秘密。

更长的密钥意味着更大的密钥空间和更多的安全,但更慢的加密。常见的非对称算法是 RSA 和椭圆曲线密码学(ECC)(elliptic curve cryptography),用于数字签名和证书。记住:你只能在同一算法内比较密钥长度——一个 RSA 4096 位密钥不直接与一个 AES 256 位密钥可比。

| 英文 | 中文 | 拼音 |
|---|---|---|
| Asymmetric encryption | 非对称加密 | fēi duì chèn jiā mì |
| key pair | 密钥对 | mì yào duì |
| public key | 公钥 | gōng yào |
| private key | 私钥 | sī yào |
| elliptic curve cryptography (ECC) | 椭圆曲线密码学 | tuǒ yuán qū xiàn mì mǎ xué |
5.5
保护应用
大纲
| Learning Objective | Essential Knowledge |
|---|---|
5.5.A |
|
5.5.B |
|
来源:美国大学理事会 AP 课程与考试说明
两个设计原则从一开始就保持应用安全。安全设计(secure by design)把安全建入开发的每个阶段,而不是作为一个事后的想法。默认安全(secure by default)意味着产品出厂时它的安全功能已经启用——开箱即安全。
安全设计建立在一家公司必须采纳的三个原则上:(1)为它的客户的安全结果负责,而不是把责任推给用户,(2)拥抱彻底的透明和问责——快速分享与安全相关的消息和更新,让每个人都更安全,以及(3)建立把安全作为头等目标的组织结构和领导力。
对抗注入攻击的关键防御是输入清理(input sanitization)。某些特殊字符(special characters)——单引号、双引号和分号——能被用来操纵一个系统,所以一个好的程序在处理之前移除或拒绝它们。清理同样地防御 SQL 注入、XSS 和目录遍历攻击。
| 英文 | 中文 | 拼音 |
|---|---|---|
| Secure by design | 安全设计 | ān quán shè jì |
| Secure by default | 默认安全 | mò rèn ān quán |
| input sanitization | 输入清理 | shū rù qīng lǐ |
| special characters | 特殊字符 | tè shū zì fú |
5.6
检测应用与数据攻击
大纲
| Learning Objective | Essential Knowledge |
|---|---|
5.6.A |
|
5.6.B |
|
5.6.C |
|
5.6.D |
|
5.6.E |
|
来源:美国大学理事会 AP 课程与考试说明
要检测数据攻击,系统执行审计记录(accounting)——记录谁在何时访问了什么。但日志非常庞大,所以日志分析必须自动化才能以有用的速度运行;靠人读原始日志太慢了。一个巧妙的补充是一个蜜罐(honeypot)——一个看起来有价值的假文件;因为没有人有真正的理由打开它,任何访问都是一个近乎即时的、清晰的攻击迹象。尤其要留意删除或复制敏感文件的企图。密码散列也帮助:重新散列一个文件并比较——若摘要改变了,文件被更改了。
选择检测控制意味着权衡成本(蜜罐便宜;一个数据泄露防护(DLP)(data loss prevention)服务强大但昂贵)与数据的敏感性。要从日志读一个具体的攻击,寻找它的特征:SQL 注入显示 OR 1=1 和 --;XSS 显示 <script> 标签;目录遍历显示 ../ 序列;一个缓冲区溢出显示异常长的输入字符串。
| 英文 | 中文 | 拼音 |
|---|---|---|
| accounting | 审计记录 | shěn jì jì lù |
| honeypot | 蜜罐 | mì guàn |
| data loss prevention (DLP) | 数据泄露防护 | shù jù xiè lòu fáng hù |
5.6
考试技巧
- 把每个应用攻击匹配到它在一个日志里的证据:
OR 1=1/--= SQL 注入;<script>= XSS;../= 目录遍历;非常长的输入 = 缓冲区溢出。 - 按它们的决定者学四个访问控制模型:RBAC = 你的角色、RuBAC = 一个条件、DAC = 文件的所有者、MAC = 一个中央管理员。最小权限是它们全部的基础。
- 通过每组加 4+2+1 读 Linux 权限——
chmod 750= 所有者 rwx(7)、组 r-x(5)、其他人 none(0)。练习双向转换。 - 对称 = 一个共享密钥(快,AES);非对称 = 一个公钥/私钥对(解决密钥共享,RSA/ECC)。用接收者的公钥加密。
- 输入清理是防止注入攻击的单个最佳答案;一个蜜罐是经典的便宜的检测控制。
本主题的互动课程
逐步学习,并即时检测练习。