上文android 安全的未来(I)谈到了双域的概念,个人域和企业域分离。其实理解为个人域和企业域之外,还可以理解为普通域/安全域。
普通域随便玩,安全域可以部署一些对安全要求比较高的应用,比如支付宝,银行客户端等等。有些读者可能马上回联想这两个应用可不是一个人战斗,别人都需要调用他们,调用他们的可能都不在安全域。这没关系,后续再表。
在谈这个安全域如何构建之前,我们先简单的看看移动终端在操作支付等敏感业务时面临的风险和解决方案。
1、风险
网上支付主要的风险,一个是口令被窃,也就是身份认证的手段;另一个是信息篡改,就是跨进程信息修改的问题。
身份认证容易理解。比如你的银行账户口令等被盗。。。
信息篡改:就是本来你要给老婆转账10000印尼盾,结果被屌丝黑客黑了,结果转给了女神10000$.剩下的结果大家都知道了。
2、解决方案
移动端的解决方案和PC端差不多,最大的差别就是外设接口,比如电脑主要是USB,手机上的有USB、蓝牙、耳机孔、苹果专用接口(Dock)等。
主要的安全思路分为两类:
1)认证类
比如手机短信认证、专门的动态口令卡。
侧重介绍一下动态口令卡:
为解决静态口令安全性的问题,在20世纪90年代出现了动态口令(Dynamic Password)技术。动态口令技术也称为一次性口令技术(One TimePassword),即用户每次登录系统时都使用不同的口令,这个口令用过后就立刻作废,不能再次使用。
动态口令是变动的口令,其变动来源于产生口令的运算因子是变化的。动态口令的产生因子一般都采用双运算因子(two factor):其一,为用户的私有密钥,它是代表用户身份的识别码,是固定不变的;其二,为变动因子,正是变动因子的不断变化,才产生了不断变动的动态口令。根据所采用的不同变动因子,形成了不同的动态口令认证技术:口令序列、时间同步(Time Synchronous)、事件同步(Event Synchronous)和挑战/应答方式(Challenge/Response Asynchronous)。
例如,登录前,首先产生登录用的动态口令:
动态口令= MD5(用户私密信息 +用户名 +不确定因子)。
网络传输动态口令,系统收到动态口令后,验证用户合法性:
验算口令=MD5(用户私密信息 +用户名 + 不确定因子)。
当动态口令与验算口令一致后即可认为用户是合法的。
侧重介绍一下给予时间同步的动态口令:
时间同步动态口令技术是一种基于时间同步方式来产生动态口令的技术。时间同步口令牌内置有时钟、种子密钥和口令产生算法,并可以根据当前时间和种子密钥生成一个动态口令。用户需要访问系统时,将令牌生成的口令传送到认证服务器,服务器通过其种子密钥副本和当前时间计算出验证口令,对用户进行验证,如果两口令相匹配,则认证通过。相关产品如RSA信息安全公司的SecurID系统。
基于时间同步认证技术是把时间作为变动因子,一般以60秒作为变化单位。所谓“同步”是指用户口令卡和认证服务器所产生的口令在时间上必须同步。这里的时间同步方法是用“滑动窗口”技术,自动在用户口令卡和服务器之间实现矫正和同步。基于时间同步的令牌在每次进行认证时,服务器端将会检测令牌的时钟偏移量,相应不断微调自己的时间记录,从而保证令牌和服务器的同步,确保日常的使用。但由于令牌的工作环境不同,在磁场、高温、高压、震荡、入水等情况下易发生时钟脉冲的不确定偏移和损坏,故对时间同步的设备进行较好的保护是十分必要的。对失去时间同步的令牌,可以通过增大偏移量的技术(前后10分钟)来进行远程同步,确保其能够继续使用,降低对应用的影响,但对超出默认(如20分钟)的时间同步令牌,将无法继续使用或进行远程同步,必须返厂或送回服务器端另行处理。
动态口令在安全性、易用性、处理能力、成本方面具有较强的优势,但动态口令也有不少劣势:
(1)动态口令不能提供非否认性。
(2)动态口令会被钓鱼。由于动态口令的输出信息有个短暂的有效期,可能被钓鱼以后用于违法操作。
(3)大多数动态口令仅起到了身份认证的功能,无法防止信息篡改。
2)签名类(U盾)
基于USB Key(U盾)的身份认证方式是近几年发展起来的一种身份认证技术。它内置了CPU、存储器、芯片操作系统(COS),可以存储用户的密钥或数字证书。利用USB Key内置的证书、密码算法实现对用户身份的认证、交易的不可否认性。
U盾采用非对称密钥算法对网上数据进行加密、解密和数字签名,确保网上交易的保密性、真实性、完整性和不可否认性。下图为U盾的硬件架构。
U盾保存证书以及证书对应的私钥。U盾的作用主要是提供身份认证以及签名。U盾中虽然内置证书,但每次验证过程都需要从U盾中读取出来,其实和存在在计算机上安全级别差不多,那么U盾最关键的部分就是签名了。由于私钥不能导出芯片,而只有私钥签名的数据在服务端才能验证通过,因此只有拥有私钥才能完成交易。也就是说,U盾的安全体现在物理存在。确保只有使用U盾时才能完成交易。当前U盾的物理存在是靠签名来体现的,只有通过U盾里面的私钥签名才能完成交易,而且U盾里面的私钥是不可导出的。恶意程序即使获取了用户所有的账户、口令信息,由于没有物理U盾,也无法在其他PC上完成交易。
但U盾也经历了逐渐完善的过程,最初的第一代U盾仅仅体现了物理存在,依然存在一些安全隐患,如交易数据被篡改,本来是给A转账100元,结果被改为转账1000元给B。另一个问题就是如果你一直把U盾插到计算机上,有可能木马自动完成全部交易,也就是自动执行的问题,虽然U盾私钥签名时需要输入口令,但由于这个输入是发生在Windows上的,木马可以帮你代劳。
由此诞生了第二代U盾,如图所示,带有确认按钮和显示屏的U盾。二代U盾有下列功能:
lU盾物理实体保证只有拥有该实体才能完成交易。U盾里面的私钥是不可导出的,无法复制。
l显示屏保证交易数据无误,如果木马篡改了交易数据,在显示屏直接可以看到。
l交易的自动执行,不点击确认按钮无法完成签名操作,交易也无法完成。
二代U盾比较彻底地解决了网银的支付安全问题,但带来的后果就是使用更复杂,用户体验更差。木马虽然也可以篡改数据,但如果用户不单击确认按钮,交易就无法完成。有了这种机制保证,这种损人不利己的事情(木马篡改数据、窃取口令等)会越来越少。
3、移动设备的接口类型
目前银行给移动终端提供的技术手段无外乎上面两种,无非就是外设接口。下面逐一介绍。
1)IOS系统
苹果就是这么*。接口总是标新立异。主要是自己Dock接口,问题是iPhone4之前都是30引脚接口,iphone5又改成了Lightning 8pin的。。。最最最大的问题就是苹果对dock设备都进行了控制,要银子。。。该接口需要得到苹果的授权许可,需要集成一个苹果指定厂商研发的认证芯片。。。。
后来就是注明的Square公司音频解决方案,通过耳机孔进行数据传输。
过来很多基于耳机孔的解决方案,有兴趣的大家去搜一下,后门挂一个类似U盾的东西。
音频传输也存在不少问题,适配性差,比如交易时女神发来一条消息可能就干扰,另外有些终端做了丽音的,也歇菜!!!
再就是蓝牙解决方案了,这种方案无需花钱,只需要U盾集成蓝牙芯片,实现蓝牙协议栈即可。只需一个客户端就可以完成调用。
2)android系统
上面说的蓝牙、耳机孔都可以。再就是android平台特有的TF卡解决方案,苹果不带TF卡的。。。
智能TF卡不同于我们常见的TF存储卡,除了携带Flash用于存储功能外,还带有一个智能卡芯片。智能TF卡具有如下功能:
l内置硬件随机数发生器;
l硬件协处理器支持DES/3DES、RSA(512bit、1024 bit)加密算法,SHA-1摘要算法;
l用户存储空间:64 KB或者更大。可用于存储个人信息、密钥、数字证书;
l带1 GB以上Flash存储空间,可用于数据存储或者应用软件预置。
再就是USB接口的了。
TF卡存在和第一代U盾相同的问题,就是信息被篡改,TF卡又无法扩展显示屏幕(移动终端不支持,很多TF卡都在电池下面)。
由于目前大多数移动终端是USB-Slave设备,不支持USB-Host。因此,二代U盾不能直接用于移动终端设备,OTG可以解决这个问题。
OTG(ON-The-Go)是在USB 2.0的技术上发展而来的,定义USB的组织在2001年定义了一个USB ON-The-Go规范来辅助USB 2.0的规范。
USB的优点在于低廉易构建,缺点是USB采用主从式架构(Master/Slavesystem),所有外围装置都要靠单一主控端(PC)。USB-IF 2001年12月公布USB 2.0 On-The-Go(OTG)补充版,新增双重角色装置(Dual-roleDevice)及HNP(Host Negotiation Protocol)、SRP (Session Request Protocol)两种协议,使USB可以任意替换主控端(Host)和外围端(Peripheral)的角色。
带有OTG芯片的U盾扮演USB-Host的功能,手机扮演USB-Slave的功能。这样实现的U盾既可以使用在PC上,又可以用在手机上。
总之,手机端的解决方案无非就是通过上述这些接口,挂接一个带有按键和显示屏的咚咚!
下一篇讨论安全域如何构建!