本篇要回答的问题:从病毒、木马到敏感信息窃取,操作系统的安全能力是怎么一步步演进的?在"网络链路不可信"的假设下,如何做到防窃听、防篡改、防钓鱼?
本讲是操作系统的最后一个子系统:安全管理。安全是个基础架构问题——最好从最底层就开始设计,所有人走同一道门最好查。全篇分两条线:一条是软件信息安全(病毒→木马→敏感信息窃取的演进,及隔离/签名/沙盒/权限管控等机制),另一条是网络环境安全(数字签名、对称/非对称加密、HTTPS 与数字证书)。
病毒与木马:操作系统安全能力的演进
| 时期 | 操作系统 | 内存模式 | 恶意软件 | 特征 |
|---|---|---|---|---|
| 早期 | DOS(实模式) | 物理地址空间,互相可读写 | 病毒 | 信任模式;繁衍自己,破坏系统 |
| PC 联网 | Windows(保护模式) | 内存地址空间隔离 | 木马 | 隐藏窃取隐私,经网络外传 |
| 移动 | iOS/Android | 隔离 + 沙盒 + 签名 | 过度索权的"正常"软件 | 有实用功能,背地获利 |
关键洞见:保护模式隔离了跨进程内存,但木马靠把自己复制进正常软件的同一进程,照样一览无余。
逐步加码的防御机制:
| 机制 | 解决什么 | 本质 |
|---|---|---|
| 保护模式 | 进程间内存隔离 | CPU 级隔离 |
| 数字签名 | 防止软件被篡改附加木马 | 白名单技术 |
| App Store | 软件发布封闭化 + 发布前安全扫描 | 苹果首创的封闭环境 |
| 沙盒 Sandbox | 软件间文件系统隔离 | iOS 引入 |
| 权限管控 | 敏感信息授予 | iOS 运行时索权 > Android 安装时索权 |
关键判断:iOS 在使用过程中索权远强于 Android 在安装时索权——“还没见到软件真身就让用户判断,用户只能无脑接受;运行到特定场景再索权,才有合理决策依据”。
移动时代恶意软件边界已模糊:复制繁衍能力被操作系统阻止,于是恶意软件和普通软件一样靠诱导下载、再过度索取敏感信息(通讯录、短信、GPS、支付密码、录音录像权限等)获利。
网络环境的信息安全:三类风险
中间节点(交换机、路由器、WiFi)带来三级风险:
| 风险 | 含义 | 防御手段 |
|---|---|---|
| 被窃听 | 监听你访问/提交的内容 | 加密 |
| 被篡改 | 截获并修改内容(插广告、换 apk、改 404 页) | 数字签名 / 加密 |
| 被钓鱼 | 冒充服务方与你通讯(假银行官网) | HTTPS + 数字证书 |
防篡改:数字签名
适用场景:电子合同/公章、网络请求授权——不在乎被看到,在乎是不是某人真写的。
| 组成 | 作用 |
|---|---|
| 要防篡改的内容 | 信息原文 |
| 密钥提示 keyHint | 多密钥时定位对应密钥(单密钥可省) |
| 指纹 | 对内容用密钥 + 摘要算法生成的信息摘要 |
摘要算法常用 HMAC MD5 / HMAC SHA1。验证时重算摘要 textDigestExp,与 textDigest 相同则未被篡改。
防窃听 + 防篡改 + 防钓鱼:加密与 HTTPS
| 加密类型 | 密钥 | 特点 |
|---|---|---|
| 对称加密 | 加解密同一密钥 | 快,符合直觉 |
| 非对称加密 | 公钥(公开)+ 私钥(自留) | 慢;公钥加密只有私钥能解,私钥签名公钥可验 |
关键洞见:非对称加密一箭双雕——公钥加密解决定向发送,私钥签名解决来源验证;但它慢,所以实战是结合两者:用非对称加密只传一个临时随机密码
random-key,之后会话全用random-key做对称加密。
剩下的难题:B 怎么把公钥安全交给 A? 网络不可信时引入第三方权威机构 G 与数字证书:
| 步骤 | 动作 |
|---|---|
| 1 | A 向 B 请求数字证书 |
| 2 | B 返回证书(含 domain、B-public-key、颁发人 G) |
| 3 | A 用已持有的 G-public-key 验证证书确由 G 认证 |
| 4 | A 核对证书中 domain 与目标域名一致,才信任其中的公钥 |
关键判断:数字证书最重要的不是怎么传,而是它记录了"域名 domain 对应公钥是 B-public-key,由 G 公证"这一事实——所以可提前生成、随意公开传递。
局限:HTTPS 不能完全解决钓鱼——它假设用户对域名可靠性有判断力。所以 Chrome 等浏览器会建立不靠谱域名数据库做风险提示。
总结
软件安全态势从病毒(破坏)→ 木马(窃密)→ 敏感信息窃取(正常与恶意边界模糊)演进,操作系统用保护模式、数字签名、App Store、沙盒、权限管控逐层加固。网络层面在"链路不可信"假设下,用数字签名防篡改,用对称+非对称加密 + HTTPS 数字证书做到防窃听、防篡改、防钓鱼。
先把"是什么"回答清楚
| 概念 | 一句话说明 |
|---|---|
| 保护模式 | CPU 隔离进程内存,互相不可访问 |
| 数字签名 | 白名单防篡改;指纹 = 密钥 + 摘要算法 |
| 沙盒 Sandbox | 软件间文件系统隔离 |
| 非对称加密 | 公钥加密私钥解、私钥签名公钥验 |
| 数字证书 | 权威机构 G 对"域名↔公钥"做的公证 |
| HTTPS | 靠数字证书安全获取网站公钥后再通讯 |
一句话速记
软件靠隔离+签名+沙盒+索权守住本机,网络靠数字签名防篡改、非对称传密钥+对称传正文防窃听、证书+G 公证防钓鱼。
几条值得记住的判断
- 安全要从最底层设计,门窗越少越好查——但互联网故意不把安全放最底层(下讲会讲原因)。
- iOS 运行时索权 > Android 安装时索权:有场景才有合理决策。
- HTTPS 防不住钓鱼,最终仍依赖用户对域名的判断力。
思考题
正常软件与恶意软件的边界正越来越模糊——很多耳熟能详的常规软件也在过度索取它根本不需要的权限。回到你负责的产品:你申请的每一项系统权限,是否都能对应到一个用户能理解的使用场景?如果不能,这项权限是不是该删掉?

