近五年来,电动汽车的发展已经取得了令人难以置信的进步,从一开始带着未来主义色彩,似乎不切实际,变成了现在大家希望拥有的东西。随着电动汽车价格大幅下降,2017年初电动汽车销量就突破了200万辆大关,并且还在继续增长。电动汽车的基础设施在也飞快发展,所以在家附近看到充电站也不是什么奇怪的事了。
但是,与快速发展的经济机遇中总是会出现的情况一样,制造商们纷纷加入了竞争行列,尽一切可能去分得最大的一块市场蛋糕,而对接下来可能发生的情况则未多加考虑。当然,我们说得是安全性。这里的安全不是指电动汽车在物理上不安全 – 充电器本身不太可能给你造成伤害 – 而是指网络方面的不安全性。目前实施的基本概念,即付费和充电,并没有太多关注用户个人资料和资金的保密性。Mathias Dalheimer在第三十四届混沌通讯大会的发言中提到了电动汽车基础设施脆弱性这个问题。
实际充电运作原理
随着电动车数量的增长,充电站的数量也在不断上升,充电站供应商提供收费充电服务。为此,充电站提供商需要内置计费系统。在开始为汽车充电之前,你需要使用自己的充电ID令牌来证明身份,这种令牌是和你的充电帐户相关联的特殊近场通信(NFC)卡。
电子移动性计费通常采用开放充电协议,该协议规定了一端的计费管理系统与另一端的充电管理系统之间之间的通信。充电点发送请求,用于向计费系统确定你的身份;计费管理系统核准请求后,会通知充电点;随后充电站开始为你的车充电。充好电后,系统会计算充电量并将其发送回计费管理系统,以便在月底通过账单向你收费。
没有什么新鲜事,对吧?那么,下面我们来仔细研究下,看看问题到底出现在哪儿。
漏洞百出
Dalheimer研究了这种系统的不同组成部分,结果发现各个部分都有一些安全问题。首先是ID令牌。这种令牌由第三方提供商提供,但 – 出人意外! – 其中大多数ID令牌无法保护你的数据。它们只是非常简单的NFC卡,不会加密你的ID或其他任何内容。NFC卡的问题还不止于此。首先,对卡编程很容易,Mathias复制了自己的卡,然后用所复制的卡成功进行了充电。对有编程知识的人来说,对一大批卡编程非常容易,很有可能会碰到一个有效帐号。(考虑到道德方面的原因,Mathias并没有这样做。)
充电供应商每月收费一次,所以如果车主的账户以上述方式泄露,车主是不会察觉到有异样情况的,直到收到月账单。
此程序中另一件可疑的方面是:大多数充电站使用的是2012版本的OCPP协议,这个协议相对陈旧,而且是基于HTTP协议的。(我们都知道HTTP问题在哪儿:对交易不加密。)Mathias证明了通过中继交易来设置中间人攻击是多么容易。
此外,Mathias研究的两个充电站都有USB接口。插入一个空的U盘 – 日志和配置数据就会复制到U盘。通过这些数据,很容易获得OCPP服务器的登录名和密码,另外,还有前面用户的令牌号 – 别忘了,这些令牌号只要仿造就行。
更糟糕的是,如果驱动器上的数据被修改,然后将U盘插回充电点,则充电点将自动根据U盘中的数据更新,并将U盘上的数据视为新配置。这为黑客攻击打开了许许多多的可能性。
总而言之,犯罪分子可以做到:收集身份证号、仿造编号并利用这些编号进行交易(真实账户持有者必须为此付费);使充电请求连到新线路,这基本上会禁用充电点;获得充电站的根权限,然后就可以为所欲为了。所有这一切都是因为提供商选择漠视安全性的结果。