4 手机App安全方案
智能手机App从状态上可以分解为以下2种状态,在这2种状态下,都要采取App安全性保障策略。
状态1:运行时状态———App程序已经启动的状态。
状态2:非运行时状态———App程序已下载或者已安装,但是未启动的状态。
4.1状态1———运行时状态安全性保障方案
App和后台交互时,即空中通道(手机至后台),在网络传输安全性方面,根据业界标准,App使用Https/SSL协议技术实现安全性保障。
超文本传输安全协议(HypertextTransferProtocolSecure,缩写:Https)是超文本传输协议和SSL/TLS的组合,用以提供加密通信及对网络服务器身份的鉴定。Https连接被广泛用于互联网及移动互联网上的交易支付和企业信息系统中敏感信息的传输。Https能保障数据传输安全性,使用SSL协议保障安全。
手机应用程序和车载模块T-Box之间的数据传输通过SPP蓝牙协议进行,但会话过程是加密的。利用后台服务器,使用非对称的RSA加密算法加密对称加密算法AES的密钥,而车载信息模块和手机应用程序之间的数据传输采用AES的密钥加密。具体过程如下。
1)蓝牙SPP连接成功,手机给车载信息模块一个消息,包括程序ID、进程ID、手机蓝牙MACP及初始化信息,同时也将这些信息发给后台服务器。
2)车载信息模块根据本身存储的手机蓝牙MACP及程序ID,对比该手机发来的信息,验证手机和程序的合法性,并给出相应的握手信息给手机。同时,利用车载信息模块ID及时间动态生成AES密钥(KA)。
3)后台服务器对比用户账户,检查手机号码及程序ID,并给出相应的握手信息给手机,若不匹配则断开连接。
4)对于本地的数据,如惯导信息,仅使用蓝牙进行传输,无需额外加密处理。
5)车载信息模块使用RSA的公钥Kpub加密KA、车载信息模块ID、蓝牙MACP、蓝牙MACT,并将该字串发送到后台服务器。
6)后台服务器使用RSA的私钥解密该字串,得到AES密钥KA,并使用KA加密程序&进程ID、Ack/Nack。
7)车载信息模块检查程序&进程ID,如果匹配,保留这些ID,否则断开连接,同时使用AES密钥KA加密Ack或Nack。
8)至此,加密的会话通道建立,此后所有传输的数据用AES加密,每次SPP连接都运行此过程。现在绝大部分App只在初次使用时,要求用户必须输入用户名和密码,以后都是启动程序就可以直接登录App,本方案也采用这种方式,而这种方式背后,先进的做法就是依靠AuthenToken机制在保证App与后台交换的安全性。
AuthenToken数据交互机制,是指App与后台之间均加上了自主设计的访问令牌方式保障数据传输安全。所谓访问令牌(AuthenToken)是一种类似于服务器SESSION的方式,用于存储用户的状态信息。用户在登录系统时会收到系统发了这样一个令牌(这个令牌不是简单的随机产生,是系统根据用户信息进行部分技术处理而产生的一串字符码,永远不会和其他用户或者该用户上一次登录相重复),只有当该令牌在有效期内,用户才能通过以加上该令牌的方式访问业务。任何一种登出都会使令牌失效。
如客户首次使用App需要输入密码,我们要求用户的密码是用AES加密后再传输,以更好地保障密码安全性,当然这同样要求后台数据库中的用户密码也是AES加密保存。
4.2状态2———非运行时状态安全性保障方案
对于手机App本身,为了保证安全,需要防御对其进行的反编译。因此在App代码编译时,需对其进行混淆。IOS应用程序不需要做混淆,其已经编译成机器码了。
5 结束语
随着网络技术的发展,APPSTORE的兴起,以及中国汽车市场的繁荣,基于车辆的App应用一定会有长足的发展。本文所介绍的基于手机应用程序的Telematics方案,是适应当前市场环境的一个快速有效方案,针对其所提供的一整套的安全加密策略,充分保证了整个系统的安全,经过小批量装车试运行,结果证明该设计方案有效合理,效果令人满意。对于其他类型的App设计同样具有借鉴意义。