uware密码生成器20140421
2014年4月21日,密码生我在一个废弃的成器下载站里翻到这个东西。文件名就叫“uware密码生成器20140421”,密码生压缩包解开只有300多KB,成器一个exe,密码生一个说明文档,成器连个图标都懒得做。密码生双击运行,成器界面是密码生一块灰底黑字的控制台,像极了上世纪九十年代的成器DOS程序。
它干的密码生事很简单:按你设定的长度和字符集,生成一串随机密码。成器但真正让我愣住的密码生,是成器它附带的那个“历史记录”功能。不是密码生记录你生成过什么,而是记录每次生成时的时间戳和算法种子。我试着连续生成十次,每次间隔几秒,发现种子值居然跟着系统时钟在跳——精确到毫秒。这意味着如果你知道某次生成的精确时间,理论上能反推那串密码。
这不是个普通的工具,它是把双刃剑。开发者把生成逻辑写在说明文档里,还附了一段伪代码。里面用了一个叫“梅森旋转”的算法,1997年由松本真和西村拓士提出,至今仍是很多伪随机数生成器的核心。但问题在于,uware没有加盐,也没做加密哈希,直接拿裸种子输出。当年我拿自己电脑试过,用同一毫秒生成两次,密码完全一致。
后来我去搜这个软件的出处。论坛里有人说作者是个网络安全爱好者,ID叫“灰帽老K”,2013年注册,发过几个帖子,全是讲密码学基础的。2014年4月21日那天,他上传了这个生成器,之后账号再没登录过。有人猜他被请去喝茶,有人说他跑路了,但没人拿出实锤。我试着给他留过言,石沉大海。
这个工具让我想起一件事。2011年CSDN的600万用户密码被泄露,很多人的密码是“123456”或者“password”。当时有人统计,超过一半的账号在三个月内没有任何改动。密码这东西,人类天生不擅长。我们记不住长串随机字符,所以总倾向用生日、宠物名、键盘顺序。但机器生成的东西,又容易陷入“伪随机”的陷阱——只要摸清规律,跟没加密一样。
uware生成器最讽刺的地方在于它的“安全说明”。文档里写着“本工具生成的密码强度极高,请放心使用”,却完全没提种子泄露的风险。我试过用它的默认设置(16位,大小写加数字),生成一个密码,然后故意把系统时间调慢一分钟再生成,结果完全不同。但要是时间同步到毫秒级,破解就只是算力问题。
现在这个软件早被各种密码管理器取代了。LastPass、1Password,甚至浏览器自带的生成器,都用了操作系统级别的真随机源,还会加盐、做哈希。但每次看到那些“强密码”建议,我总会想起那个灰底黑框的小工具。它像一面镜子,照出所有依赖“随机”的东西都藏着可预测的裂缝。
我至今没删那个exe文件。偶尔还会打开,随手生成一串密码,然后盯着屏幕想:如果灰帽老K还在,他会怎么评价现在的密码世界?大概会冷笑一声,说“你们还是没学会自己造随机数”。