密码学科普小说 · 第 5 章
把程序装进内存:冯·诺依曼的大房间
这次的落点是 1945 年的美国普林斯顿。一间堆满草稿纸的办公室里,一个穿着笔挺西装、说话语速飞快的匈牙利人,正一边吃三明治一边心算一个复杂的积分。
“约翰·冯·诺依曼,”Bob 小声对 Alice 说,“据说他六岁能心算八位数除法,还会用古希腊语讲笑话。”
冯·诺依曼听见了,头也不抬:“七位数。而且那些笑话并不好笑。”
他正在写一份报告,后来被称作《EDVAC 报告草案》。他给两个“实习生”讲了他的想法:早期的电子计算机,比如 ENIAC,要换一种计算任务,得靠工人重新拔插几千根电线,一换就是好几天。而他的主张是——
把程序本身也当作数据,存在和数据同一个内存里。
Alice:“所以‘换程序’就变成了‘往内存里写一串新数字’?不用再拔电线了?”
冯·诺依曼:“正是。机器不再是一台只会做一件事的计算器,它变成了一个可以执行任意指令的‘万能机’——这是图灵先生在纸上证明过的东西,我只是把它画成了工程图纸。”
Bob 激动坏了:“这意味着,密码算法从此不再是一台专门的机器,比如恩尼格玛,而是一段软件!任何人都可以把它写出来、拷贝、检查、改进。换算法,换的只是代码。”
冯·诺依曼放下三明治,突然很严肃地看着他们:“年轻人,还有一件事你们要想清楚。程序和数据住在同一个房间里,你的钥匙也住在那个房间里。”
📌 课堂小结:为什么这一章对密码学重要
1. 算法软件化:密码算法变成了可以公开、审查、标准化的代码。现代密码学有一条重要原则叫“柯克霍夫原则”:系统的安全应该只依赖于密钥的保密,而不依赖于算法的保密。算法应该公开接受全世界的检验。
2. 密钥在内存里:计算时密钥必须加载进内存。木马、恶意浏览器插件、被感染的电脑都可能把它读走。这就是为什么后来会有硬件钱包——让私钥待在一个永远不联网、只做签名的小盒子里,不进你的电脑内存。
那天晚上,Alice 在笔记本上写:
“算法可以公开,钥匙必须保密。钥匙在哪台机器上算,哪台机器就要被信任。——所以,要么信任你的电脑,要么别让钥匙进你的电脑。”
Bob 凑过来看了一眼,在后面加了一句:“第 11 章再展开。”
“为什么是第 11 章?”
“直觉。”Bob 说。
📌 思考题
1. 为什么说“算法保密”反而不安全?(提示:谁来检查它有没有漏洞?)
2. 你在网吧电脑上登录过网银吗?用本章的知识解释其中的风险。