第4节 ARPANet 第一次意识到“密码不能明着传”

故事从一个深夜开始。

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 接手后,干了三件事:

  1. 选加密算法:用 IBM 的 Lucifer(56 位密钥,DES 的前身),1973 年刚提交给 NIST。
    密钥烧进 EPROM 芯片,焊死在板子上。
  2. 定加密范围:1822 报头不加密,从第 97 位开始,8 字节一组,硬件加密
  3. 写加载流程:主机启动 → 网卡驱动从 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
  1. 取进程标签 → file_daemon
  2. 取文件标签 → /data/secret
  3. 查表 → 不允许 → 返回 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 第一次从"能连"变成"能信",靠的是两步:

  1. PLI 加密盒 → 解决 "路上偷看"
  2. 类型强制内核 → 解决 "家里贼"

这两招,分别长成了现代的 IPsec 和 SELinux。

安全这门课,从这间明尼苏达的小灰楼,正式开讲。

相关推荐
终端域名2 小时前
第四代核反应堆:未来能源的“安全高效革命”
安全·能源·第四代核反应堆·未来能源
思通数科多模态大模型2 小时前
扑灭斗殴的火苗:AI智能守护如何为校园安全保驾护航
大数据·人工智能·深度学习·安全·目标检测·计算机视觉·数据挖掘
FreeBuf_2 小时前
QNAP紧急修复Pwn2Own 2025比赛中遭利用的7个0Day漏洞
网络·安全·web安全
盈电智控2 小时前
九江风机叶片断裂引安全隐忧 物联网技术或成风电安全新防线
安全
上海云盾安全满满2 小时前
安全服务是什么
网络·安全
John_Rey3 小时前
Rust类型系统奇技淫巧:幽灵类型(PhantomData)——理解编译器与类型安全
前端·安全·rust
liebe1*13 小时前
第一章 网络安全概念及规范
安全·web安全
xixixi777773 小时前
内部网关协议——OSPF 协议(开放最短路径优先)(链路状态路由协议)
网络·智能路由器
大锦终3 小时前
【Linux】网络层与数据链路层中重点介绍
linux·运维·服务器·网络