12/02/08。 cathayan.org版权所有,保留一切权利。转载请保留此说明。谢绝商业转载。
好几个月以前的事了,就是Debian Linux发行版中
OpenSSL这个很重要的包被Debian开发者修改,从而降低加密可靠度的问题。
Slashdot上有很多讨论,主贴就质疑Debian,这是很不科学的。
这个事情,其实告诉我们Debian的开发者,也就是俗称的DD们,真的要看他们维护的代码;这个事情还是挺出乎我的意料的,毕竟DD们也并不总是开发者,更不总是特别牛的人,维护某个包不一定就很熟悉那一门的专业知识。这些东西不在DD的要求里面(基本的编程知识是要求的)。
事情就是某位DD看了这个代码(起因也可能是某工具报警),发现一个没有初始化的变量就直接使用了,然后他安全起见,就把这个变量初始化一下,给了个Null。没想到这个没有初始化的东西是原作者用来当作随机数的一部分的,随机数是用来加密的,这样一来,这个随机就没了,只剩下当前进程的ID号作为随机数,而Linux上ID号是个整数,2^15那么大,所以就不够大,更不够随机,总是存在猜测出来的可能性了。这就是那个Bug的问题所在。
好像这个问题在2年多的时间里也没有造成什么问题,这当然是侥幸了。但是,虽然有许多其他意见,比如认为DD太傻,老改人家代码之类,我还是认为这个发行版的人们很靠谱,很认真。Debian走到今天,不是没有原因的。
12/02/08 14:17:32,由
cathayan发表。目录:
电脑
6条评论
做这个修改的 dd 可能有洁癖,比如看不得编译 warning 之类。
洁癖有时不是坏事,如果像 edyfox 说的那样,到 openssl 邮件列表嚷嚷了一通也没人理,那确实无法苛求了。
只是,这样做本身,已经违反了 do not fix it if it is not broken 原则。
http://lymanrb.spaces.live.com lyman 于 12/02/08 14:44:45 发表.
内存检查记得用的是valgrind。收费的工具有Purify,free的也就是Valgrind了。
roy_hu 于 12/02/08 15:05:51 发表.
我觉得是原作者的注释写得不够清楚, maintainability不好才导致这样的问题.
Albert 于 12/02/08 20:25:56 发表.
我觉得 openssl 的 maintainer 已经尽力了,虽然有些鲁莽。
去 mentors-debian 看看一个新的包进入 Debian 有多难,就知道 Debian 的维护者和 DD 有多认真了。当然,他们有的时候也会犯错。但是 Debian 的规章制度和维护者执着的信念让我们相信 Debian 在很长时间里仍然会有它的影响力的。
http://tchaikov.blogsome.com tchaikov 于 12/02/08 21:07:23 发表.
不光是注释不好,似乎还有另一个问题就是他在程序里同一个名字却用了两次,用于不同的目的,更加混淆,当时在另一个Blog上看来的。再说那个方法实在也太tricky了点。
haha 于 12/03/08 09:34:16 发表.
I am watching and will delete all spam.