2022年11月22日星期二

安全架构师站在网络安全角度看智能汽车的安全问题

前言:先对广东潮州发生的2死多伤智能汽车失控事故致以默哀10分钟。

为啥写这篇文章,是因为看了很多网络评论的分析,都仅仅停留在刹车是否踩下等的初浅问题的讨论上。

作为某“大型”南极动物的工厂出来的前“某天网”安全架构师和项目主导人,我觉得有必要通过在网络安全角度,深入分析一下导致事故的各种因素,从而得出有利于对公众安全、长期认真真正负责任的分析。

首先我们知道,复杂系统一定是不可靠的,不管是谁做的。

这里先拿曾经的高铁动车事故来说:复杂的电信号和网络系统,总会因为人为的非人为的原因,导致系统层面的失控或者事故发生。

简单来说:对于安全而言,所有系统都有漏洞。  专业点来说:图灵完备的软件系统无法证明绝对正确。而智能汽车、智能电气系统,一定是有图灵完备的软件系统的:包含了spaceX这样的宇航员用的智能系统——曾经就发生过因为一个计算符号写少了等于号,所以价值几十亿美金的航天飞机失事,7个宇航员殉职。对没错,发生在美国。

温州动车事故发生后,作为没拿上岗许可证的程序员,内心很是惶恐。据说原因是某些没拿证的程序员开发的系统有BUG(程序错误)导致的信号系统失控。

当然,现在不用什么据说不据说,据说一般都是“谣言”。这里想说的是在各种事故发生了,总会有各种言论出来做为分析,不一定正确,但代表了某些人的看法。

某B音的飞机因传感器问题导致的软件系统失控,这里飞机驾驶员的权限还不如软件系统。然后大家都知道了,死了不少人,某型号的飞机也被禁飞了很久。

所以,我觉得:如果软件很重要,为什么不更注意安全多一些。在网络安全、软件安全、系统安全上投入多一些,总会带来更多的可靠性和品牌赞誉。

举了这么多例子,说了这么多事故的故事。那么我们如何来分析这次智能汽车导致的事故的原因呢?

智能系统一定是复杂系统,甚至是分布式的、网络的庞大系统,这是肯定的、毫无疑问的。

所以出了事故,总会有小道消息说,该智能汽车的官方人员从后台数据显示:没有任何杀车纪录,都是电门踩到底,潮州的事故如此,江浙前几天发生的智能汽车失控靠着摩擦路边护栏才能停下来,也是如此。

我想说的是:服务器的后台数据不一定可信,不可信的原因有很多种。

1、并不是说官方的程序员不可信

2、并不是说官方的网络服务程序不可信

3、并不是说官方的智能汽车的智能操作系统、自动驾驶系统不可信

4、并不是说官方的智能系统一定会黑客攻击了

5、并不是说官方的智能系统一定被某些信号干扰了(说的就是传感器、非传感器信号)

6、并不是说官方的智能汽车的刹车系统不够智能

7、并不是说机械装置就一定可信(传感器也是机械系统)

8、并不是说智能汽车没有类似飞机黑匣子一样的黑科技

我想说的是:还是得有类似“黑匣子”的黑科技可能才更可信。

所以,某B音飞机失事,查原因不全得靠黑匣子吗。

后台数据不可信吗?不一定不可信,只是不能全信。因为后台数据是依靠不安全的无线网络信道得来的。

原因很多,比如说俄乌纷争,据说某朗的无人机技术,是复刻自美国。原因是:美国军方侦察用无人机的无线电信号被干扰,然后被某朗军方完整捕获了。

某拉的智能汽车,虽然安全级别并不一定低于美国军方,但是也会被、也能被电信号干扰,这是绝对的以及肯定的。所以360董事长曾当面跟某拉创始人说过:你的智能汽车系统不安全,我方程序员已经黑进去了。好吧:黑进去了。然后某拉创始人就再也不理360董事长了!!!

他们间的矛盾是小事。

对于安全而言,总得有人出来指出,哟,原来你没穿上我们普通人的衣服,你穿的是隐形的透明的钢铁不锈钢的合金衣!

无线网络信道的不可信,问题很大。是具备能让智能汽车失控的潜在原因。

但这并不是全部,能出问题还可能在智能系统上。

智能系统一定是复杂的,特别是带有网络远程控制的智能系统。所以,谷歌的安卓系统,是能作恶的。国产的鸿蒙系统最近新增了2000万行代码,什么概念呢?拿一篇word文档举例,只能放得下50页,如果全部打印下来那就是40万页。我们普通的一本书比较厚的大概是1000页,也就是说大概打印下来能装400万本1000页厚的书。如果每个人1年写10本1000页厚的书,大概需要40万人1年才能写出2000万行代码。

写代码是简单的,但是查代码漏洞不容易啊。首先,完整看完这2000万行代码,我觉得大部分人100辈子都做不到。更别说查漏洞了。

这里肯定会有人抬杠一下,2000万行的智能系统不多见吧?
举世流行的linux系统(google的安卓系统底层就是用这个),累计下来,预计有10亿行代码。linux系统在你人的智能手机上都安装有(苹果手机是类unix系统改造的,代码行数并不低)。

所以,智能系统大部分都是复杂系统。

复杂系统不一定不安全,就是有漏洞。这不,0day漏洞,作为云服务器运营商,亚马逊和国内的各种云,肯定整天在打智能系统的运维补丁。   为啥?漏洞不少啊。

既然智能系统不安全,能不能不用。这是个好问题,我想说的是:能不用就不用。

所以俄罗斯跟乌克兰的矛盾在于:“俄用的是电子管武器,没有智能系统”(谣言止于智者)。乌用的是西式的武器系统,有大量的复杂的网络的、智能的、分布式的、APP的、去中心化举报敌情的各种智能系统。  战争的现状估计很多人都关注到,俄增兵了,战斗很焦灼。

智能系统,既能用于智能汽车,也能用于战争,这是俄乌战争的启示。
不仅如此,民用的电子芯片(例如MCU,某D牌厂商就号称能自主生产大部分车规级芯片——这是个壮举)也能用于导弹等的复杂智能武器上。所以俄撤退了,抱走的是电冰箱,因为电冰箱里有MCU芯片,可以用于制造拥有智能系统的精确制导武器。

对于穿上了红色衣服的安全教主说的话,某斯拉的智能汽车有漏洞,能被黑入,我是信的。因为没有漏洞的智能系统不存在。

既然如此,智能系统充满漏洞,刹车系统被影响了,这并不奇怪。

现在的智能汽车,都是有着比linux、安卓系统更加复杂的神经网络之无人驾驶的自动系统的。这可比某B音的飞机无人驾驶系统复杂1万倍的:在天上没有路障,没有信号灯、没有横穿马路的行人、没有左右摇摆的电动单车、没有坑坑洼洼有可能地陷的路面、没有因修路而设置的各种路障,飞行驾驶员还是年薪几百万的。

复杂的贵达数亿美金的机械飞机都能失控、还能出智能无人驾驶系统事故,更别说才几十万元人民币的又带有复杂自动驾驶系统的智能电动汽车了。

说了这么多,网络服务器、信道可能会被攻击,智能汽车的智能系统也充满了潜在的漏洞。还如何确保安全呢?

本人不是机械工程师,无法给出机械方面的安全建议。但是就智能系统和网络安全、智能主机安全给出一些比普通人还算专业的建议,还是能做得到的。

首先,要确保有日志。

这不,某拉的官方工作人员说了,有后台数据,后台数据表明没刹车,电门按到底。
对,专业的货车驾驶员,能把电位当刹车,一直踩,不松开过。

就这不松开过就存在问题,谁剎车发现没反应,会一直踩到底不松呢(连踩到底几分钟不松很困难),除非是脑子轴了。但是警方说司机是没有毒驾、醉驾的。

这就在逻辑上排除了,人为的电门会被正常表现的老司机一直踩到底没松过的可能性。

如果不是人为一直踩电门,那有可能的原因是什么呢?

很简单,电门不一定非得人踩着,才会有电门踩到底的行为。

因为除了人,还有自动驾驶系统。即便自动驾驶系统没发过这样的指令,也可能是电信号干扰导致的。原因太多,一辆电动智能汽车的组件虽然看起来比机械油车零部件少,但是构建智能系统的复杂的分布式系统模块,一定是比普通汽车要多得多的。

如果某拉的后台数据是对的,智能汽车的智能系统也是对的、驾驶员也没问题,那是什么问题呢?

所以警方说了,是失控事故。我觉得这个“失控”定义非常清晰,说的就不是人为的。
这里说的人,既是说驾驶员不会人为导致事故,也是说某拉不会故意让智能汽车发生事故。

不是人为的,那就是非人为的。

关于智能汽车的神经网络自动驾驶系统,我很早就跟行业知名的某媒咨询创始人兼CEO说过,自动驾驶会在5年内变得流行起来。

果然,2022年了,现在的智能汽车不能没有自动驾驶。

智能自动驾驶,作为算法工程师兼安全架构师、码农(农民工的农)的我,几天天天开这样的智能自动驾驶汽车。而且一出停车场,必开L2级别的自动驾驶,无它,省心省事。

每天开上几十公里近百公里上下班,能省不少精力。

但,自从刚买车不到1个月,就出了一个小小的自动驾驶事故,我的手再也没离开过方向盘,并且眼睛总是盯着路况,丝毫不会分心,即便我听着音质尚可的丹拿音响的Q版高清音乐。

事故的原因很简单,以10公里/h不到的速度,自动驾驶的汽车径直地撞向了鬼探头的缓行的的士汽车。对于那个的士司机,现在依然对他感到歉意。因为我对自动驾驶的过于放心才导致了剐蹭,还好没发生人身伤害,只是让对方损失了半天的维修时间加上影响了一天的心情。

因为这次事故,虽然我天天一出门必开自动驾驶,但是绝对不敢不看路况的情况下,把方向盘完全交给L2级别的自动驾驶的智能系统。

原因无它,用它是为了省踩刹车、踩电门、踩油门(好吧,暴露就暴露吧,是史上最强混动系统的、在除了上海地区能挂绿牌插混的某D牌某H型号某M后缀的4.7s百公里加速插混版智能汽车)的精力。

智能汽车的自动驾驶确实是神器,不仅省心、省力、还安全可靠。当然,这仅限于你的注意力不被分散、没有鬼探头、仅限跟车的情况下——并且跟车的情况下保持安全距离,留够智能系统自动刹车的时间和距离——总而言之,懂点计算机程序算法的人,估计更容易操控这样的智能自动驾驶汽车,不讲道理的非理性的人不建议采用自动驾驶模式,因为目前还不够智能,不够智能的汽车你跟它发脾气或者不理它,很容易出问题。

拿自己开智能自动驾驶的经验告诉大家一个事实:

带智能自动驾驶的汽车,电门和刹车,是能被带有神经网络的智能系统控制的。否则无法自动刹车、自动踩电门加速。

从这次潮洲的智能汽车的事故来看,不管出于什么原因。车失控之后,十之八九“被动”启动了“自动驾驶”程序逻辑。

是否如此,得查日志!

再次,虽然有后台数据(网络日志——通过无线网络传递过来的,经过无线通信基站、卫星、光纤、宽带、路由器、云服务商、服务器机等等的分布式去中心化网络系统),但不一定完全可信。

就拿曾经在国内大工厂的安全方面的工作经验来看,网络日志也可能没打全、打漏、缺失、错误、被修改、被误处理、被清理。

当然,没打全的网络日志,就很有可能因某些事件没有被纪录下来,这就导致了网络日志可能没办法真实还原现场。

有人一定会说,既然没打全,那有还有没有可能拿到全量日志呢?

没打全的原因很简单,涉及到成本问题。
不管是智能汽车的无线网络通讯,还是保存于服务器端的网络日志,传输和保存都是需要大量成本的,如果把网络日志打全了(特别是把实时的路况的传感器数据——包含某拉采用的图像识别的自动驾驶算法,这网速跟不跟得上,跟得上之后带宽费、网络存储费谁给?给不给得起,贵不贵都是要实际考虑的问题)。

所以说,站在经济学的角度,这次或者后续的智能汽车发生事故,不可能得到全量的智能汽车运转日志数据。

说到这里,我觉得没必要纠结某拉服务器上的后台数据(网络日志)的电门踩到底,没有踩过刹车的这个结论的。更重要的是如何通过“有限的日志来反馈真相”,这才是重要的事情。

如果后台数据反馈的真相不正确,那么还有没有更好的办法呢?

办法很简单:还是得看日志。

既然后台数据(网络日志)不一定可信(或者说只代表了缺失信息的真相),那么很简单啊。不看网络日志,看主机日志——就是智能汽车上保留的智能主机日志。

故警方通报说:将邀请第三方的检测机构进行检查、核实事故发生的真实原因。

说到这里,大家应该明白我的看法了吧,日志一定是反馈真相的有效手段,但是因为各种原因,日志也并不全,所以需要结合多方面的日志数据来整理分析。

目前来看,警方已经在这么做了。

比如说网络上各种报道看到的监控视频、相片等,都是一种交叉分析事故原因的方法。只不过这些都是佐证,最好的办法还是拿到主机上的日志,然后进行进一步的第三方的客观分析。

这里点赞一下最近因为疫情的生存艰难的航空行业。他们很早就建立了基于飞行日志的黑匣子机制,而且一定是高规格的国际安全规范、安全标准。

相比而言,目前带有复杂自动驾驶的智能汽车,在安全方面离真正的专业、安全规范、国际标准还有点远。相信为了更好地让普通人能得到便宜实惠、性能卓越、安全可靠的智能自动驾驶的智能汽车,接下来的生产设计厂商,不回避问题,建立更有公信力,安全可靠的安全行业行业规范。只有这样,才能更好的保护消费者,也能为品牌建立长期安全运转建立安全屏障。

结论是啥:安全靠日志?

好吧,查事故还真得靠具备还原真相的操作日志。虽然这些操控日志也未必全面、准确。但是不能没有,不能像普通人一样瞎猜吧。

话说,有了日志,普通人也可以变身专业的侦探。这不,很多警匪电影,不就是说警方破获案件,主要靠路口的监控视频日志吗?

日志分很多种:本机(主机)日志,网络日志,第三方监控日志(例如监控摄像头)。
如果主机日志、网络日志都不可信,也是可能发生的。因为日志没打全嘛(经济原因或者存储空间不够)。
在这种情况下,一定要依赖第三方的监控日志来做交叉对比。

举个简单的例子,国家的网络安全法规定,所有提供网络服务的主体,必须把服务器放在国内部署。这是为了消费者和国家安全的一种监管方式。

如果某拉的云服务器部署在国内,那就简单了。查有没有删除数据库日志还是简单的,监管部门可以让云服务商配合,从数据库日志中查看数据备份,进行数据比对就能知道是否发生人为的后台日志数据删改事件(某盟等saas云软件厂商、包括口碑不佳的某度都发行过程序员删改数据库事故——这是上刑法的,所以农业出身的程序员,一定不要做这种事情)。

除了服务器的备份数据比对,还有主机的日志交叉比对:这里警方需要第三方检测机构的原因在于,不能让事故方品牌来参与是为了公信力。

主机日志有很多种,神经网络的自动驾驶的日志是最难懂的。最好开发这个系统的程序员来干这活,因为目前大部分的自动驾驶神经网络算法,算法结果有的时候连开发算法的程序员都看不懂。

这就导致了很多问题,算法建模所产生的参数网络,有可能也是百万级、千万级的大表大参数,理解它有很大的困难性,更别说解读日志了。

十之八九,我认为主机上的日志也是不全的。正因为车机系统太复杂——操作系统、智能驾驶系统、传感器系统,都复杂且不一定能产生全面的可分析的全量日志。

既然不能全靠网络日志,主机日志也不全,还咋整呢?

人民群众的智慧是无以穷尽的,我认为最有价值的难点是:某D生产的绿牌新能源汽车,在剎车油门位置,放置了一个类似行车纪录仪一样的摄像头,自此之后,某D的车机就很安全了。

这里引出第三方安全日志的重要性!

行车纪录仪,除了供电,不会与主机复杂系统产生深入关联的类第三方系统,能在事故还原、剎车变油门事件中真实原因真相,提供类似第三方检测机构一样的公信力。

第三方日志纪录仪、第三方检测带来真相,带来事故处理结果公信力!

这在航空产业的黑匣子应用方面已经被证实。
再说,某拉失控开到了190多公里/h的时速,最终驾驶员性命是安全的,车头损害严重,但是最终我认为,如果有主机/车机日志、车载黑匣子、第三方日志(类行业纪录仪),再经由第三方检测部门,按照标准的安全行业日志规范来读取还原真相,事故的原因查明将简单明了。

没有瞎猜,没有信息不全面、信息失真、谣言参与的逻辑分析,只有基于数据日志分析得到的粗浅的人人可信的结论。

再祝因故事不幸的人一切安好、早日康复!愿世间再无事故!

写于中国2022.11.14

来源:孤帆远影投稿