第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。

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

相关推荐
用户962377954481 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star1 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954482 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
DianSan_ERP6 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全