摘要

  • RFC 972 为自愿实现 PWDGEN 的 ARPA Internet 主机设计了一项服务:一次给出六个八字符、较易发音的候选词,用户可以挑选或再取一组。
  • 文件把候选词的独特性系在随机种子上:建议全系统共用并在每次调用后更新,反对只用当天时间作种子;TCP 与 UDP 版本都在 129 端口。

柜台递来六张小卡片,每张写着八个字符。挑一个吧;实在看不上,还能再要一盘。F. Wancho 在 1986 年 1 月的 《Password Generator Protocol》里安排了这样一个颇有人情味的入口。问题是,柜台后的机器若老拿同一锅面团烤饼,卡片写得再顺口也救不了它。

当年的管理员面对两头为难。用户自己想的密码容易被猜中;机器随机拼出来的密码又可能根本念不出来,难以记住。部分站点试过字典过滤,也试过随机生成。Wancho 还指出,短周期的伪随机数发生器会削弱预期的变化;一个相关算法已在少数互联网站点使用多年。新文件提出的是供愿意采用的主机调用的网络服务,不能把那少数站点的使用经历写成全网普及。

服务交付的东西很具体:六个八字符的“词”,用 CRLF 分开,经过多层算法处理,目标是让人有办法读出来。文件提到供管理员研究的 FORTRAN-77 实现。人的职责因此变成从六个候选里选一个,或者要求机器再开一轮。这个选择确实改善了记忆上的处境,却不负责证明候选词从哪里来。

后厨的账本叫随机种子。文件直说,生成词的独特性高度依赖初始种子的随机程度;拿时钟时间当种子不可接受。它偏好一枚全系统共用的种子,每次访问后更新,并建议存储值超过 32 位。这样一来,服务端必须保存状态,下一位来客不能只是把旧起点换个声音念出来。用户看到六个悦耳的词,看不到种子有没有更新。

网络交互短到近乎冷淡。TCP 129 端口接通后,服务器发出六个以 CRLF 分隔的词,随即关连接,没有问答。UDP 129 端口收到一个数据报,就回一个装有六词的数据报。文件还设想多个站点提供服务:客户端可以随机挑站点,故障时换备用站点。备用柜台能接着营业,但每个柜台背后都有人管种子,换柜台也换了这份责任。

RFC 编辑部记录确认文件发表于 1986 年 1 月。两页原文没有提供部署统计,也没有证明每台实际机器都把种子养好了。它真正留下的是一张职责图:人选择记得住的词,算法制订候选清单,运营者维护下一轮生成的状态。六选一看起来像投票;候选名单在投票前就已经写好。