故事从一个深夜开始。
1974 年 6 月,麻省剑桥,BBN 的机房。
空调嗡嗡响,磁带机咔啦转。一个工程师蹲在终端前,用 BBN 自己写的抓包工具盯着流量。
屏幕刷出一行字
Packet 1427: UCLA → RAND
NCP Data: login: root password: admin123
他愣了三秒,揉眼睛,再看------还是明文。 这不是一次偶然。
整个 ARPANet 当时有 46 个节点,从加州 UCLA 的 Sigma 7 到犹他大学的 PDP-10,全靠 50 kbit/s 的租用电话线连起来。

分组用的是 NCP 协议,格式很简单:
[1822 报头 96 位] + [任意长数据]
报头明文(路由要看),数据也明文(谁也没想藏)。
一个分组从源到目标,平均经过 5 台 IMP(Honeywell DDP-516 小型机,12KB 内存)。
只要在任意一台 IMP 插根线,或者让运维写个 dump 程序,密码就到手了。
这个工程师立马冒出了冷汗,这网络不能给军方用。
第二天一早,ARPA 的 Larry Roberts 把电话打到 Honeywell:
"你们 Multics 不是搞了个安全内核吗?ARPANet 现在是核指挥的备用链路,密码明着传,苏联人插根线就全完了。给我们整个方案,年底要见原型。"
Honeywell 没废话,回了一封电传:
"收到。明尼阿波利斯,9 月开工。"
明尼苏达的小灰楼:SCTC 诞生
1974 年 9 月 27 日,明尼阿波利斯郊区,一栋单层砖楼。
门口钉了个塑料牌: Secure Computing Technology Center(SCTC)
里面 22 个人,领头的是 Roger Schell ------ Multics 安全内核的原作者,烟斗不离手,桌上堆满穿孔卡。他们的任务只有一个:
让 ARPANet 主机和链路"可信"。
但有个硬约束:
- 不能动 46 台 IMP 的固件(NCP 已经烧死了)
- 不能降带宽(50 kbit/s 已经是极限)
- 主机内存只有 12KB
结论:核心不动,边缘加锁。
第一把锁:PLI 加密盒 ------ 防"路上偷看"
1973 年,BBN 已经造了个原型,叫 PLI(Private Line Interface),像个铁鞋盒,插在 IMP 和主机之间。SCTC 接手后,干了三件事:
- 选加密算法:用 IBM 的 Lucifer(56 位密钥,DES 的前身),1973 年刚提交给 NIST。
密钥烧进 EPROM 芯片,焊死在板子上。 - 定加密范围:1822 报头不加密,从第 97 位开始,8 字节一组,硬件加密
- 写加载流程:主机启动 → 网卡驱动从 ROM 读密钥 → 存进内核保护区
加密过程是这样的:
NCP 交出明文分组 → PLI 硬件
↓
跳过报头,加密负载
↓
报头明文 + 负载乱码 → 进 IMP
1974 年 11 月,MIT 到 RAND 的实测:
| 未加密 | 加密后 | |
|---|---|---|
| 丢包 | 0.2% | 0.3% |
| 延迟 | 180 ms | 182 ms |
| 嗅探 | 密码可见 | 只剩报头 |
还想半路上偷看?没戏了!
第二把锁:类型强制内核 ------ 防"家里贼"
加密只防路上,主机内部还是裸的。
比如一个日志守护进程(file_daemon)本该只写 /log,但它读了 /data/secret,再通过 NCP 发出去,这时候加密也拦不住。
SCTC 把 Multics 的 类型强制 塞进 12KB 内存,精简成一个评估内核。核心是一张表(384 字节):
| 进程 | 文件 | 允许操作 |
|---|---|---|
| file_daemon | /data/* | read |
| file_daemon | /log/* | write |
每次系统调用,内核查表:
read(fd, buf, 100); // fd 指向 /data/secret
- 取进程标签 → file_daemon
- 取文件标签 → /data/secret
- 查表 → 不允许 → 返回 EPERM,进程被杀
Roger 亲自写了个越界程序测试,机器立刻蓝屏。
他拍桌子:"看!这就叫强制,可不是建议!"
就算家里有贼,也没戏了。
1974 年 12 月:交作业
就这样,SCTC最终提交了一份完整的报告(SCTC-74-12):
- 链路加密:PLI + Lucifer,负载不可读
- 主机隔离:类型强制内核,12KB 内存,32 会话
- 审计:每小时 1KB 日志,压缩后寄 NSA
- 建议:1975 年把 PLI 推到所有 IMP,关键主机跑类型强制
ARPA 追加 近百万美元合同,Roger 买了箱啤酒,团队在雪地里合影。
后来呢?
- 1989:SCTC 独立,改名 Secure Computing
- 1991:Sidewinder 防火墙 ------ PLI 的状态检测 + 类型强制的应用代理
- 1996:SafeWord 令牌 ------ 动态口令,防明文密码
- 2003:SmartFilter ------ URL 分类,类型强制的网页版
- 2008:McAfee 4.65 亿收购,技术进云
就这样,ARPANet 第一次从"能连"变成"能信",靠的是两步:
- PLI 加密盒 → 解决 "路上偷看"
- 类型强制内核 → 解决 "家里贼"
这两招,分别长成了现代的 IPsec 和 SELinux。
安全这门课,从这间明尼苏达的小灰楼,正式开讲。