陆超
(上汽大众汽车有限公司,上海201805)
智能网联化是目前汽车开发一个亮点,需要在控制整车成本同时,提供用户丰富生态服务。基于低成本收放机平台,采用手机车机互联技术方案,同时支持有线及无线连接方式,手机端传输移动在线服务数据,车机进行投屏,支持智能语音识别、多轮对话、微信语音聊天,通过微信群进行群组导航等功能是一个可行的解决办法,APP 可快速响应新功能需求进行更新。本文提出相关应用场景下的车机、手机APP、后台服务器三者间通信及数据存储的一种安全机制方案及应用说明。
整个网络中的参与节点包括车机端、云端和移动端,三者在系统中是独立的个体,进行数据链接之前的双方要建立可靠、安全的信任关系认证。基于数字证书的认证是目前公认的认证方式最佳实践,该认证方式既能识别个体身份,也能灵活控制使用范围和使用期限,并且基于数字证书也是目前最为成熟的[1],所以本方案中会为车端、移动端和云端的设备及个人签发相应的数字证书,以此作为身份认证的凭据,用以验证对方的数字签名。
网络通信属于基础设施范畴,是一切服务的基础条件,必须保证其高可靠性、高可用性、高保密性。需要着重防范以下风险:a. 数据泄露,采用明文发送数据的HTTP 业务造成数据篡改、泄露、流量劫持等安全问题。通过网络嗅探设备等技术手段能还原HTTP 报文内容。b.弱算法和协议,随着时间的推移,过时的加密算法和存在安全漏洞的加密协议均可导致用户敏感信息泄露。众所周知,截至目前,DES 对称算法已经不安全,MD5摘要算法可被碰撞,密钥长度在1024 位以下的RSA 非对称算法已不安全,SSL 2.0 协议也已不安全[2]。国家密码管理局要求金融机构、党政机关、重点企业,必须使用国密算法和国密协议。c.DNS 劫持,也称为钓鱼攻击,以危害巨大且不容易被用户感知著称。用户只要接入黑客掌握的公共WiFi,或者浏览一下黑客所掌控的特殊构建的WEB 页面,DNS 就会被黑客篡改,并可以成功躲过常规安全软件检测。可导致用户遭受DNS 诈骗或者敏感数据被窃取和篡改。d.通信过程未/弱加密,存在被破解风险。
主要包括服务器大数据存储,业务信息存储;手机端用户数据临时缓存;车机端车辆数据、用户信息存储;明文保存敏感信息数据在本地,存在被窃取风险。
智能手机作为当今人手必备的随身设备,安装有各种应用,而且属于开放网络。
手机APP 可以通过USB 和Wifi 和车机进行连接,同时需要和云端连接获取相应数据。在手机端会保存相应的用户信息、鉴权信息等,需要进行加密保护。
低成本收放机开发定义可以连接WiFi 热点,但是车机本身无法上网,收放机通过车身CAN 总线,获取车辆数据、车况数据等,同时通过车机终端可以进行车辆的设置,是车辆智能化控制不可或缺的核心部分。所以对车机终端安全防护是整车安全以及车联网安全核心。
在本项目中车机与手机连接,手机只是车机CAN 总线数据的接收端,因此由车机对需要传递给手机的数据进行加密保护,车机端CAN 总线数据的安全性由车机端的安全机制来确保。
手机端和车机端采用TCP 的通讯链路,基于TLS1.2 协议,证书采用自签名方式实现。手机端与后台采集HTTPS 的通讯链路,基于TLS1.2 的协议,证书购买CA 数据签名机构Wosign 的签名的证书。车机端的安全隔离与权限控制由车机端系统进行控制及授权[3]。手机端既需要和车机端通讯,同时也需要与后台通讯,手机端Link APP 的内部数据存储为加密存储。整体架构图如下:
图1 整体架构图
Link 手机APP 和WeCloud 云端通过HTTPS 进行请求,HTTPS 请求是目前互联网公认的加密传输协议,基于TLS 协议之上的应用层协议,采用专业的CA 机构- 沃通Wosign 的证书。一般需要加密传输的主要是用户信息、鉴权信息、涉及车辆相关的信息,以上这些访问均采集HTTPS 加密传输的方式。
手机终端Link APP 在整体架构中,既需要跟TSP 服务进行交互,也跟车机终端通过USB 或者Wifi 进行数据交互。手机App 和WeCloud 云端通过HTTPS 进行请求,这些请求均采用HTTPS 加密传输的方式来确保数据安全。手机App 和车机终端之间通过USB 或者WIFI 构建数据传输局域网通道。
手机端主要存贮两个文件:“私钥,和加密签名证书”,目前的手机系统都会分配App 目录以供存贮相应的文件,安全性由系统来负责。但考虑到这种机制容易被人破解,因此将这些文件以动态申请目录的方法,存贮在其它系统级目录,从命名上无法猜测到是证书和私钥文件,增加破解的难度。
由于操作系统都是可以Root 的,所以不存在绝对的安全,但是对于Link 这样的一款产品来说,主要功能都存在于手机端,并没有可以操控车机的功能接口,统计数据也是以加密SDK 的方式直接提交后台,并没有特别需要提升安全等级的敏感数据和内容[4]。
3.3.1 方案一
AES 对称密码在出车机出厂时预置到车机里,每个项目生成一个。由车机端产生私钥,并进行公钥证书生成。首次连接时,通过AES 加密方式传递相应的公钥证书(自签)及数字签名(自签)信息。手机端做为TLS 客户端,车机端做为TLS 服务端,建立TLS 加密传输通道。TLS 使用1.2 版本,加密套件:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
优点:a.车机端生成私钥及证书,私钥由车机保存,由于车机不能联网,定制系统相对安全。b.首次获取证书使用对称密钥,相对安全。
缺点:a.手机存储的对称密码、证书存在被破译风险。b.车机存储证书,存在更新问题。
3.3.2 方案二
车机端与手机端建立TLS 单向认证安全链接。WeCloud 作为自签名CA,手机端作为TLS 服务端,车机端作为TLS 客户端 。 TLS 使 用 1.2 版 本 , 加 密 套 件 :TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
优点:a.整个链路相对安全。b.手机APP 非唯一私钥,确保ID 不同。c.签名证书由云端生成。
缺点:a.手机不联网,无法获取签名证书,车机与手机无法互联。b.网络波动影响连接成功率。c.车机存储证书,存在更新问题。d.私钥存储安全存在风险。e.使用TLS 建立的连接,发现WIFI 方案下,已知三星部分手机,华为部分手机存在TLS 握手时间过长,大概20~40S,导致连接超时,存在适配性问题。f.使用手机验证码作为连接前提,增加了用户使用的复杂度,降低了用户使用产品的意愿。
车机端防护主要体现在两个方面:a. 对CA 证书的安全存储,以防止被人为篡改并连接伪造的恶意手机APP。b.对进程的权限控制,以防止进程与手机APP 的通信已经被劫持的情况下,也只能访问有限的系统资源。
提前释放CA 证书存储到车机,证书通过混淆算法处理成加密字符串的形式。将该证书做进只读文件系统(rootfs),由于文件系统是只读的,所以该证书不会被人为篡改。该证书将只属于相关进程的用户组,其他进程无法访问它,这样就保证了机密性。
图2 认证流程
采取权限管理机制,对各个应用进程制定DAC 规则并限制其能力。各个应用进程都只属于各自的用户,这样相关进程就只能访问自己必须访问的资源,而不能访问属于其他进程的资源。相关进程如必须访问某些系统级资源,则给它赋予特定的能力,这样它就可以像root 用户那样访问那些必须的系统资源,但它依然不能访问超出该能力之外的资源。车机各个进程之间的通信,会基于已有的事件ID,超出定义范围外的事件ID 会被对方拒绝;这样相关进程将无法获取未定义的车身数据。