上周在关于航空航天软件挑战会议上,有一个关于开放标准,开源软件和安全的辩论会。NASA的专家和SEI的一个老师对此进行了激烈的讨论。
以NASA开发JavaPathFinder的核心人物Peter Mehlitz为代表的专家们认为:开放标准和体系结构上软件开发,尤其针对开源软件,是生态系统演化汹涌波涛下的定海神针,典型例子分别是HTML和Linux内核。
SEI的专家则认为:正是开放的标准让别有用心的人更多可乘之机,入侵系统,带来无穷尽的安全隐患。要是没有网络,哪来那么多网络攻击!要是没有外来客,哪有那么多骗子!
两方面都提出非常直观的实例。乍一看确实“公说公有理,婆说婆有理”,一时难分高下。
其实,开放(Open)这个词挺有意思。
热力学第三定律告诉我们,如果系统是封闭的,那么终将归于混沌,熵值达到最大。除非系统是开放的,和周围环境交换信息。这个原理用在社会学或者社交网络上也是同样的意义。只要人与人之间存在交往,信息得到流通,流水不腐,户枢不蠹,系统就不会寂灭。
当然,很多人说,足不出户,互联网的好处是我能够得到信息,而信息是负熵,所以只要能够联网就可以继续宅下去了。我前面嘻话里也提到,虚拟现实或者增强现实能够给你带来足不出户但是身临其境的效果,如果害怕恐怖袭击和雾霾,权衡利弊最好哪里也别去,猫在家里上上网得了。话音未落,Google的虚拟艺术馆软件就公测了,珍贵的艺术品一件件就摆在眼前。所以嘛,旅游的愿望应该部分得到满足了。
CES2017提出的新科技,让恋人可以远程传递亲吻和香味,这样连亲密接触都可以模拟得十分逼真,加上差值计算弥补网络传输的延迟,第五代通信技术似乎可以把人与人之间的距离进一步缩短。再这样发展下去,等到人工增强智能发展到奇点,似乎可以把人的全部记忆和感知都上传到无处不在的互联网中,替你思考,替你享乐,那么不仅是丢失工作这么简单的问题,连人本身的存在意义都可能需要存疑了。
真像霍金预言的那样,人类会让这种情况发生吗?在DeepMind访谈中,哈比达斯认为人工智能应该考虑伦理,不会走向那个极端。我对这点从人工智能角度理解不够深,所以也不妄加揣测。但是从物理上换个角度探讨一下,也许对大家会有点启发。
单从熵,“乱序度”,这个概念出发理解,从数学上确实无法避免我前面提到的问题。可是,开放系统除了交换信息,也要交换物质呀。这些物质的交换虽然不直接影响乱序度,但是会有其它守衡律的制约。
用个低俗的讲法,你宅在家里上网,需要吃饭(输入物质),和出恭(输出物质)。这些物质交换保证了开放系统的另一个特征,就是不完全覆盖原理。从软件工程的角度讲,就是模型永远不会逼真到真,抽象下来的结果你总是会丢失掉一些什么。
这样,如果狡辩,说连吃饭也可以上网点餐,通过O2O实现,那么你在不知不觉中引入了新的子系统,替你送餐的朋友在他的协作圈里还会带来若干新的开放系统。所以说,O2O,线上线下两翼齐飞,系统要不开放也不行啊。
关于开放的社会技术系统人机物协作的思考,参见彭鑫老师的几篇相关论文:
Xin Peng, Yi Xie, Yijun Yu, John Mylopoulos, Wenyun Zhao: Evolving Commitments for Self-Adaptive Socio-technical Systems. ICECCS 2014: 98-107
Xin Peng, Muhammad Ali Babar, Christof Ebert: Collaborative Software Development Platforms for Crowdsourcing. IEEE Software 31(2): 30-36 (2014)
Xin Peng, Jingxiao Gu, Tian Huat Tan, Jun Sun, Yijun Yu, Bashar Nuseibeh, Wenyun Zhao: CrowdService: serving the individuals through mobile crowdsourcing and service composition. ASE 2016: 214-219
从这个角度看,类似于苹果的垂直整合思路,前两天发布的微信的小程序希望建立一个事实的标准,开放给自己的用户开发,所以是部分开放。但是对于微信以外的APP,就相对要封闭些。
Google的安卓平台则是水平整合,但是由于没有建立,或者说建立了太多平行的开放标准(相当于每个版本一套),也搞得天下大乱,人声鼎沸。分久必合,合久必分,可能都是需要的,不同阶段需要不同的策略。既然大戏已经开演,咱们慢慢瞧着吧。
真正的开放系统应该不会达到科幻片中用人型机器人替代恋人的地步,不然人类繁衍就会有危机了。
回到前面关于安全似是而非的观点,大开城门,完全开放,不就是“开门缉盗”吗?空城计还是只能蒙大智若愚的司马懿,长坂坡只能喝退多疑的曹阿瞒。
这里我的观点是,安全是建立在知识优越性基础上的,攻防双方谁知道的多谁占优势(知己知彼)。如果对方知道你是诸葛亮,还是猛张飞,其效果就不一样了。
安全仅仅靠封闭系统是做不到的,就好比掩耳盗铃,设定自欺欺人的假设(Trust Assumption)是不行的,还是要从设计上防微杜渐,想得周全些。开放标准并不对攻防双方厚此薄彼,因此只能对安全更有意义。
参见Yijun Yu, Virginia N. L. Franqueira, Thein Than Tun, Roel Wieringa, Bashar Nuseibeh: Automated analysis of security requirements through risk-based argumentation. Journal of Systems and Software 106: 102-116 (2015)
按照Linus Tolvalds的讲法,开放代码(开源)的一个效果是利用更多的眼球帮你找臭虫,何乐而不为呢?
欢迎围观并讨论
私人微信号:yijunyu8824001