Posted in Technology 3次吐槽

在”心脏出血” 和罗永浩锤子手机给Openssl 赞助100万元的事情发生很久以后,某网站刊出一篇文章《隐形战友》,用煽情的语言描绘了Openssl项目和其工作人员“无私奉献”的精神,以及锤子手机捐赠的情况。文章发出以后,很快受到了知名网红程序员霍炬的反驳,双方都发表了长篇大论,最后演变成人身攻击。

以下是双方文章:

《界面》:形战友

霍炬:到底谁才是真正的隐形战友——开源软件和OpenSSL的真实故事

罗永浩:无论如何,你还是要把你最好的给这个世界

霍炬:无需最好,你只需实现自己吹过的牛逼

 

我作为曾经的比特币网站编辑,对这些东西也不是一窍不通,今天和霍老师辩论了一番,我觉得有必要也写一篇文章。虽然霍老师批判了破破的桥这样的“公知大V”,比我水平不知道高到哪里去了,我作为一个年轻人,还没有和霍老师谈笑风生的资格,但是总想搞个大新闻…

我准备分成几部分探讨这个问题,有些部分涉及专业或者科普,如果大家对技术不感兴趣或者已经了解,可以不用看技术部分。

一、OpenSSL和开源软件的关系、OpenSSL为什么重要、OpenSSL为什么特殊?这和普通的用户有什么关系?

OpenSSL是开源软件,而且是免费的。  

首先OpenSSL是一个开源软件。这个毋庸置疑。如果从这个角度上看,OpenSSL就是免费的,使用是不要花钱的。虽然你可以捐赠,但是也可以不捐赠,使用这个软件的企业和个人没有义务捐赠,“不用白不用”。

OpenSSL为什么重要?

OpenSSL其实是由不同的部分组成,包括密码算法和TLS实现,这里具体技术我不谈了。其中最重要的是密码算法部分。

无论在联网和非联网的场合,有时候都会需要用到密码学算法,这是基本的安全措施。就比如你现在访问的网站,就是由一些密码保护的,你可以点击浏览器上的安全连接图标,获取密码算法的细节。具体来说,在我的网站上查看安全连接图标,你可以看到“AES”和“ECDHE”两个具体的密码名称。这些密码保护你在浏览我的网站时,你的公司和老大哥都不知道你在看什么。

 

 

Capture

通常情况下,涉及隐私安全的程序(当然,不包括中国的程序,你懂的),都需要密码学算法的保护。包括电子邮件、聊天、关键性的网页(如银行),电子游戏,VPN,翻墙软件,比特币,甚至是智能手表、手环,只要你的信息流经别人的通道,为了不让其他人看到,就需要密码学算法。

需要定义密码学算法的程序,不可能每次都重复发明轮子,重新写一遍密码算法。因此一般我们使用OpenSSL(或者其他的什么SSL)作为密码算法的“库”,可以理解为OpenSSL作为其他的软件中的一个零件,而这个零件又是负责安全的关键零件,而且还是免费的。

OpenSSL为什么特殊?

有人说了,那好啊,如果OpenSSL写的不好(如同霍老师文章中说的那样),我们可以换一家用,还有那么多同类的工具,Libressl、Polarssl、还有谷歌开发的SSL库,为什么非要用这几个“隐形战友”开发的这款“性能低下,安全有漏洞”的密码工具呢?
这些人忘了,中国都担心美国的设备安全,还要搞自主产权,要搞去IOE,就是怕美国政府在设备里安装后门。美国棱镜门曝光后,大家对RSA都不信任了。在关键的加密算法部件上,全球的用户不太可能信任一个商业企业(不管它在哪个国家)的产品。哪怕是谷歌的产品,开放了源代码,考虑到这次openssl在开源的情况下仍然暴出漏洞,代码又长达几十万行,一般的开发者不可能审计代码中有没有后门,更何况普通用户?只有全球广泛使用的开源软件,才能被全球的用户所接受(尽管这样也不是完美安全的)。

密码算法的特殊性决定了在大部分关键场合,密码算法只能采用开源软件。因此在不能使用商业产品的情况下,OpenSSL几乎是唯一的选择。至于其他的开源库,如Libressl,普通用户一样无法审计其安全性,唯一的办法就是等待,如果Libressl足够好,而且安全运行了很长时间还没有被攻破,那么用户自然会抛弃OpenSSL而选择Libressl的。而目前没有一款产品符合这个要求,OpenSSL多年的实践已经是可选的密码算法中最靠谱的一个了。

 

总结就是,密码算法极为关键,商用的不敢用,开源的需要时间验证,OpenSSL开源且时间长,相对较靠谱,其他的竞争者目前还没有被认可。如果有一天,OpenSSL被取代了,我认为没有任何问题。但再此之前,我们的安全确实还需要OpenSSL来支撑,而且这玩意还是免费的。至于霍老师强调谷歌自己的算法如何如何,他们公司的东西在他们公司的产品里使用,我觉得没有问题,这和其他开发者用户是否使用没有关系。

这和普通用户有什么关系?

这和普通用户没有直接关系。我这里讲的OpenSSL的用户,不是“坐在电脑前的你我他”,而是“开发者用户”。这好比你买了一辆车,车锁是免费的,但是厂家不会告诉你车锁是什么牌子的,而且是免费的。但是车锁出了问题,车里的东西被偷了,你肯定找汽车厂家,不会去找车锁的厂家,更不会去质问为什么车锁是免费的,因为你都不知道车锁是否是免费的,甚至不知道车锁的存在,因为这个锁对你是透明的,用户靠近汽车自动解锁……

普通用户也没有必要和可能去捐助OpenSSL,这和你完全没有关系。同样的,刷微博上朋友圈的普通用户也没有必要像霍炬老师一样去捐助FreeBSD,你知道啥叫FreeBSD? 从这点上看,难道捐助“技术水平更高,资金利用更合理”的FreeBSD,对普通用户就有意义了,显得逼格高了?那怎么不众筹个火箭登火星呢?

但是,开发者用户和商业企业有必要关注这件事,我们长期免费使用各种开源资源,难道就没有必要关注(我不提资助)开源?毕竟大部分开源软件的商业用户是没有能力编写或者改进基础代码的,但是在apt-get和yum install的同时,稍微了解一下这些东西的来历,有什么不对的吗?非要以为全世界都要围着你转,apt-get 的东西就跟百度高速下载一样心安理得,并且可以跳起来大骂软件质量差?

(“顺便提供一个小技巧,如果你在招聘工程师,可以问他觉得觉得OpenSSL代码写的怎么样,如果对方回答说写的很好,要么此人是远远超过Google一流工程师的世外高人,要么,还是赶紧让他去罗老师那应聘吧”——霍炬回应罗永浩:无需最好,你只需实现自己吹过的牛逼 )

 

二、开源要不要钱,要钱的话是否要资助,资助是不是炒作和利用“愧疚心理营销”,开源是否接受赞助和软件质量好坏有没有关系?

开源要不要钱?

开源软件的作者都是人,是人当然需要钱。但是,大部分开源软件都是业余作品,也就是说,作者有自己的工作,还有余力可以在网上做一点兴趣爱好。很多开源作者写的软件也可以互相借鉴和使用,只要遵循相应的协议。开发者可以独立开发,也可以修改别人的项目(霍老师说的Fork),还可以使用别人的开源软件,如OpenSSL,作为自己项目的一部分。在开源基础上修改的软件有时候也可以商用,比如基于CM的锤子Os,但是也要遵照协议开源。当然,有些人用了别人的开源软件,假装成自己的有版权的商业软件,比如透明计算……

但是,OpenSSL项目由于其特殊性,不是业余时间的小作品,或者说至少有不止一位程序员是全职开发。这就意味着他们要养家糊口,需要一定的经费。我知道霍老师要拿出RedHat做例子,RedHat开源且盈利,不代表OpenSSL开源也能盈利,这好象说苹果成功了,锤子也得成功,这是没有道理的。OpenSSL不管是因为什么原因不能像RedHat那样盈利,没有钱就是没有钱,这是一个事实。

OpenSSL是否需要资助?

如果说RedHat不需要资助也许是对的。但是对于OpenSSL,无疑是“可能需要资助“的。当然我知道高冷的程序员会说OpenSSL的代码写得不好,有安全问题,管理低效,没有避税,我们应该奖勤罚懒,不给他们捐款。没问题,你可以决定给FreeBSD或者什么别人捐款,或者不掏一分钱,甚至给我捐款,这都是你的自由。(我写了这么多关于翻墙的文章难道不该给我捐款吗?另外我还是Mirror的维护者,捐款只接受比特币 Bitcoin:1BJTk2HFuGYZexrZb4zS7y6P1K7MxyQpYQ )

但是罗永浩认为应该给”可能需要资助“的OpenSSL捐赠,我认为没有任何问题。至于界面渲染煽情,只要不是欺骗,我认为也没有问题。

 

资助是不是炒作和利用“愧疚心理营销”?

没错,公司名义资助任何公益事业,哪怕是给地震什么的捐赠,都是一种营销行为,按照高冷程序员的逻辑,是一种营销。问题是加多宝能营销,锤子手机就不能营销?红十字会能营销,OpenSSL就不能营销?锤子手机通过公益事业营销,是合理合法的商业行为。

从道义上看,锤子手机的营销活动没有捐赠给ISIS,没有被郭美美买跑车,哪怕有一部分用在了改善OpenSSL(或者其他开源软件)上面,只能让我们的世界更美好,而不是把网络安全状况搞得更糟。罗永浩一不输出流氓软件,二不输出虚假广告,三不来折腾你们,你们还有什么好说的?

 

至于“愧疚心理营销”,我觉得这属于朝鲜人民担心肥胖症。中国国内知识产权的现状我们都知道,别说开源软件了,就是收费软件,有几个不盗版的?普通用户根本不知道“开源软件”是什么东西,更不知道什么叫OpenSSL,遑论TLS实现过程的漏洞是不是由于OpenSSL的资金不足引起的? 普通中国用户都认为软件是天上掉下来的,只要花三千块买个电脑或者手机,就应该并且心安理得的用全世界任何一款软件、游戏、电影,并且还要叫骂“你们做的什么垃圾”!

至于中国的开发者,或者高级用户,99%的难道不是get惯了,出了问题也不知道怎么解决,坐等人家大神出补丁,然后yum update?  然后人家写个翻墙软件,没有免费服务器也要骂,有了免费服务器就要abuse ,然后一大堆star,提交代码的几乎没有? 还有所谓的开发者,不把别人的收费软件破解了拿到自己的商店里已经很给你面子了,用了开源还想指望记得是谁开发的?不好意思,人家用了你的开源还想去评一等奖呢!

在这种环境下,罗永浩做一点点矫枉过正的事,界面杂志煽情一下又如何?我相信90%的人看了这篇文章后“不明觉厉”,因为根本不懂OpenSSL是什么,也难以理解它的重要性,对于那几个歪果仁为什么要全职做善事,人家是西方神仙的价值观,进不了中国课堂的。剩下的人里面99%的人又会说“真感动,感天动地”,而绝对不会去捐款的。而高冷的程序员还认为这种煽情会“浪费宝贵的捐款资源,以至于把宝贵的资金捐给了一个垃圾项目”,何不食肉糜?

 

 

开源是否接受赞助和软件质量好坏有没有关系?

首先,如果我们不怀着最坏的恶意去推测歪果仁,至少接受赞助不会导致软件质量更差吧?难道他们拿了捐款去吃喝玩乐,软件不写了?就算这些资金全部用来支付人员工资,而不是直接用于改善软件质量(比如请人测试代码),对于一项重要的基础安全软件,全世界白用了这么多年,给人家一点钱又有什么问题呢?

对于开源软件质量好坏的评估,也应该由软件的用户来决定。如果大家认为Openssl不好,都去用Libressl了,那OpenSSL早死了,更何谈捐款不捐款?就算OpenSSL的质量存在问题,或者说质量很差,但是大家都在用,而且别无选择,在这种情况下,至少在用的人,拿出一点赞助来有什么说不过去的? 难道我不用FreeBSD还非要去捐赠FreeBSD不成,就因为它是(高冷的程序员认为)效率最高的?——这个逻辑简直不是捐赠,连商业逻辑都说不上,简直是计划经济的逻辑,干脆让天朝计划生产什么软件,直接拨款算了。

就算OpenSSL非常差,差到不可理喻,难道就不能捐赠以使他改善了?这里我也讲个故事。去年我写了一篇文章讲中国比特币行业资助白血病患者的故事,这个故事的结局是荒谬的。该白血病患者是非不分,非要吃中药,在这种情况下,我本来提出最好大家不要捐钱了,让他自生自灭去。但是难道他不懂医学常识就该死?——因此经过大家的思想工作,他放弃了吃中药,我们整个行业给他捐赠了14万元,帮助他进行了化疗,并成功生存下来了。  在这里,患者不懂医学,是非不分,不是他不该接受捐赠的理由。

后来这个患者缓解了以后,不知道为什么去炒比特币期货,把家里的钱亏了据说几十万。很多人感到上当和愤怒,而我认为当时的情况下他确实需要帮助,至于他后面犯了什么错,那是另一个问题。哪怕他骗了我们,也是另一个话题了。他骗了我们,我们以后不理他就是了,就好像我们现在不理红十字会一样。现在说当初捐红十字会的人没有常识或者交了智商税可以理解,但是说他们用心有问题,就没有道理了。

至于什么EFF比什么OpenSSL更好更牛逼之类的高论…… 我只能说,人家比尔盖子比你不知道高到哪里去了,你怎么不去搞个基金会呢?

 

我的基本观点

1,OpenSSL是一个非营利的开源项目,致力于保护信息安全,并且是独立于国家和商业企业的。

2,OpenSSL和其他开源项目是否需要资助,应该由资助者自主决定,和资金利用效率、软件质量没有关系。

3,企业赞助行为是营销,但这和被资助者没有关系。和被资助者软件质量好坏更没有关系。

4,中国人普遍不尊重知识产权的现状下,谈尊重开源软件是一种奢侈。但是绝没有坏处,矫枉过正有时候是必要的。至少对于开发者是这样。

5,对于普通用户,不指望他们给开源软件赞助,但是能够通过认识OpenSSL、EFF这样的事迹,有助于他们尊重商业软件,少盗点版。取法乎上,仅得其中。

6,界面杂志没有过度美化锤子手机,至于是否过度美化OpenSSL,人家是非营利组织,“过度美化”又如何?

 

其他的东西:

罗永浩攻击霍炬的文章里人身攻击是不对的。

OpenSSL确实非常伟大,至少密码库这一部分,比特币、大部分的翻墙软件都是依赖于这些东西的。霍老师说主要靠法制,但在我们这个不毛之地,有时候只能靠一点技术花招了。如果没有OpenSSL,很难想象你还能科学上网。我自己在多个应用场景中免费使用了这些智慧成果,并且没有付钱。(之所以没赞助是因为国际汇款麻烦,BTC又被取消了…但是我资助了维基百科一点钱)

软件质量、经费多少、是否该捐赠、是否营销、是否煽情好像没有关系。

我没有买第二部锤子手机,因为觉得性价比不合适。

 

 

最后欢迎给我捐赠:1BJTk2HFuGYZexrZb4zS7y6P1K7MxyQpYQ    既然霍老师在每篇文章后面都贴微信支付,我也就不客气了。

 

作者  Velaciela   转载请保留作者名称(我连接都不奢望了) 谈开源,捐赠的话题,这点节操总是有的。

 

打赏
2015年02月12日