再现神人!仅仅只花4天半就解开了史上最难密码,这下整个圈子都炸开了.........

浪尽此生 提交于 2020-09-28 18:11:14

全世界只有3.14 % 的人关注了

爆炸吧知识

鲁迅先生曾说,记录这东西,就是用来打破的。

前阵子程序员圈子一定热呼的不可开交,咋回事?还不是因为有个程序员妹子捅出了一个大篓子

事情是这样的,在德国慕尼黑有一个名叫 Leah Neukirchen 的程序员妹子,她厌倦了日复一复的解决小儿科程序代码。

直到 2015 年的一天,闲来无事的 Leah 在 BSD3 源码树的文件转储中发现了一个 /etc/passwd 文件,其中包含了计算机领域中一些传奇工程师的旧密码,令人惊讶的是,这些密码竟然已经存放了39年之久。

Leah找到的部分旧密码名单

Leah 对他们使用的密码非常感兴趣,加上此刻鲁迅先生的名言在她耳边萦绕不散。她相信,再古老的密码都会有被破译的一天。

因此,Leah 展开了一段暴力破解密码之旅

 计算机大师用的都是些小儿科密码?

她这一破就是破了5年,您别说,大部分密码还真就都被她破解了。

但其实在大多数情况下,leah的成功是因为用户的密码比较容易猜到

毕竟大部分计算机大师以前使用的密码保护程序是 Unix 早期的版本——BSD,这是一个古老的操作系统,因此从今天的密码保护标准来衡量,它们的安全保障措施确实不敢恭维。

首先,保护密码的哈希函数虽然在40年前是最先进的技术,但现在要破解它并不难。更奇怪的是,一些BSD创建者的密码散列包含在公开的源代码中。

比如:

BSD的共同发明者Dennis Ritchie使用了“dmac”作为密码(他的中间名是MacAlistair);

Stephen R. Bourne是Bourne shell命令行解释器的创建者,他的密码是“Bourne”;

Eric Schmidt是Unix软件的早期开发者,现在是谷歌母公司Alphabet的执行董事长,他的密码竟然是妻子的名字“wendy”;

Unix自动化工具make的作者、同时也是第一个Fortran编译器的作者Stuart Feldman,他使用的密码是“axolotl”(一种墨西哥蝾螈的名字)。

其中最弱的是Unix贡献者Brian W. Kernighan的密码:“/.,/.,”,表示一个三个字符的字符串,重复敲两次QWERTY键盘上的相邻键就得到了。

但是,就像超模君说过,巨人总会遇到比他更大的巨人一样(?),至少有五个纯文本密码 Leah 是一点想法也没有。

这里面包括土耳其计算机科学家Ozalp Babaoğlu, Unix 软件开发人员Howard Katseff,Unix 的重要贡献者 Tom London 和 Bob Fabry。

但其中令 Leah 最不甘心、最费解、花了最长时间甚至一度想把电脑砸了的是Unix之父Ken Thompson 使用的密码。

Ken Thompson 和他的 UNIX

Ken Thompson 是硅谷传奇计算机科学家和工程师,UNIX 之父,江湖人称“ken桑”,他同时也是 1983 年图灵奖得主。

1983年ACM图灵奖评语(节选):

“UNIX系统的成功是由于英明地选用了一些有决定意义的观念并且准确地加以了实现。UNIX系统作为一个样板,已经引导了一代软件设计者思考程序设计的新途径。UNIX的精髓是它的体系结构,这种结构可使程序员藉此开展其他工作。

鉴于Ken Thompson和Ritchie在UNIX操作系统的开发和实现中所作出的卓越贡献,美国计算机协会(ACM)将授予1983年的ACM图灵奖。”

说出来你可能不信,就这么一个大人物的小学成绩却是烂到极点,烂到他母亲足足给他退了三次学都被他成功说服回去再读一遍试试。

直到有一节课讲了二进制,自小喜欢逻辑的他瞬间被迷住了,他做了很多二进制运算,还借助一台十进制计算器扩展到各种进制。

展现出计算机天赋的他,在1960 年如愿进入了加州大学伯克利分校主修电气工程

在二年级的时候他有机会使用一台模拟计算机,其实因为根本没人想用,实际上成了他的专用计算机。他仔细研读,学会了编程,并在学校找到编程的工作,直到 1966 年他加入了贝尔实验室。

在贝尔实验室工作期间,汤普森在参与 Multics 操作系统项目的过程中开发了一款游戏 ——《星际旅行》。

Space Travel 游戏

后来贝尔实验室撤出了 Multics 项目。为了能够继续玩游戏,汤普森只好找到一台老式 PDP-7 机器,重写了游戏代码。

但他发现游戏在新机器下玩起来太卡,于是又吸取了其他程序员在开发 Multics 文件系统时的经验,在他们工作的基础上设计了自己的文件系统。

后经扩展,形成了一个完备的操作系统,在公司内部广泛传播,并于 1970 年被命名为 Unix。

Ken Thompson 最难破译的密码

回到现在,Leah 对无法破解 Ken 的密码感到沮丧,她在 Unix Heritage Society 的邮件列表中表示:

“我一直没有办法用散列ZghOT0eRm4U9s破解 Ken 的密码,我列举了所有8个小写字母+特殊符号键空间。任何帮助都行,欢(求)迎(求)大家给我指点!”

(字里行间透露出一丝心酸和不甘,超模君抱抱。)

姐是真的破译不下去了

leah发邮件后不久,就被一个自称 Nigel Williams 的论坛哥们看到了,抱着自古江湖儿女,你有困难我定拔刀相助的想法,令所有人惊讶的是,

这哥们仅花了4天半的时间,用 AMD Radeon Vega64 以大约930MH/sd的速度运行Hashcat(一个密码破解程序),并利用了强大的显卡运行计算能力之后就破解了ken的密码。

随后他兴奋地一路屁颠屁颠跑去给leach发邮件声称他已破译这个密码了。

Ken的密码加密后的字符串是:ZghOT0eRm4U9s

解密后得到的明文是:p/q2-q4!

Nigel Williams的论坛原文

要知道ken这个密码可是在1980年设置的,现在都0202年了,用这么现代的计算机才能破解这样一个古老的密码,这确实很Ken桑

随着 Unix 之父 Ken Thompson 的旧密码被破解,这个消息瞬间在技术论坛中炸开了锅。

有意思的是,汤普森的密码“p/q2-q4!”其实是国际象棋中一种常见的开局走法的符号。

乍一看“p/q2-q4!”像是一个数学公式,而实际上是一种古老的符号,代表国际象棋中棋子的走位,意思是 “皇后前面的兵 (Pawn) 向前移动 2 个方格”。q 代表 Queen,p 代表 Pawn,这种走棋记法属于国际象棋的代数记谱法

p/q2-q4!——皇后前面的兵从第2行走到第4行

是国际象棋注释符号,表示“好棋”

好了藏不住了,这里超模君要公布一下这位1980 年度第 3 届全球计算机国际象棋锦标赛的冠军——Ken Thompson!!

Ken是一名实实在在的国际象棋迷,还曾经在空余的时间另外开发一个专用于下国际象棋的计算机程序 “Belle”。

眼看着自己39年前的密码被人破解

当事人 Ken Thompson 通过邮件得知这件事后

对 Williams 表示了深切且由衷的赞赏

并回复道:“恭(ma)喜(de)!”

参考资料:

https://thehackernews.com/2019/10/unix-bsd-password-cracked.html

https://arstechnica.com/information-technology/2019/10/forum-cracks-the-vintage-passwords-of-ken-thompson-and-other-unix-pioneers/

作者简介:超模君,数学教育与生活自媒体博主,新晋理工科奶爸。出版过《芥子须弥 · 大科学家的小故事》《数学之旅·闪耀人类的54个数学家》。后续数学文化创意多多,欢迎关注认识!

文系网易新闻·网易号“各有态度”特色内容

部分资料来源于网络

转载请在公众号中,回复“转载”

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!