(一)密码输入保护方案需求分析
对于广大手机使用者来说,一种常态是手机时常借给同事邻里使用或者遗落在办公桌等地方,锁屏或者通用密码不能起到较好的保护个人隐私的作用。由于可穿戴智能设备(此处及后文以SmartWatch2为例)的出现,笔者特别提出一种软硬件结合方式输入密码,以防止上述情况的出现。
无论用户使用系统默认输入法键盘还是自定义软键盘,以往智能手机的输入尤其是密码等信息的输入都可以被监控以致用户信息尤其是密码数据被黑客窃取。基于这个原因,笔者设计实现的密码输入保护方案的总体设计思路是提供一种只使用智能手表SmartWatch2而不在手机端输入密码数据的方法,将密码输入过程完全放在手表端,这在一定程度上可以防止密码被窃取。
笔者将此密码输入保护方案设计实现为一种基于SmartWatch2的扩展应用,称之为密码输入器,扩展应用在实现方面应充分考虑其实用性。此应用为需要提供特殊保护的应用提供密码输入键盘,并且不针对某一应用单独使用,而是为所有需要的应用提供输入服务。同时,为了达到使用效果,笔者同时实现一个普通的Android应用与密码输入器扩展应用配合使用。普通Android应用、密码输入器智能扩展应用以及手机间的结构关系如图8-29所示。
图8-29 普通Android应用与密码输入器应用结构关系
(二)Android权限机制
Android系统整体架构的安全性体现在:任何应用程序都不能在没有权限(permission)的情况下,对系统内其他程序有非法的操作,对其他程序造成负面影响。
Android系统的权限机制,是Android系统在应用框架层上为应用程序提供安全保障的最核心也是最基本的机制。权限机制的作用是将使用者所安装的应用程序限制在合理范围,Android系统内的任意一个应用程序所占的进程都可以看作一个独立运行的沙盒,这个沙盒不能在没有声明并获取它自身所需权限的状态下通过任何方式影响别的应用。权限机制保障系统安全的方式是通过实施基于权限的安全策略。具体来说,当使用者安装一个应用程序,该应用程序需要使用的一切权限在此时会以列表的形式展示给使用者,此时使用者可以判断这些权限是否确实需要或安全,如果使用者确认通过并安装,系统才赋予这些权限并在应用运行时验证权限。如果验证错误,该应用程序就会由系统自动关闭。Android系统在其SDK中定义了android.manifest.Permission类,这个类包含了一系列默认的权限,同时也允许开发者自定义新的权限。Android SDK中共定义了总计达122种的系统权限,包括访问蓝牙设备等。Android系统的主要安全规范体现在只有得到用户和系统许可获得相关权限后,应用程序才可能执行相关操作。
Android的权限机制仅对单独的应用程序有效,对于多个程序或组件则较易提高权限,如组件A可以通过调用组件B的某个可以被外部调用的功能实现组件A未被授权的功能,从而达到隐式权限提升。这种方式为恶意代码权限的提升带来了便利,使得重要信息被泄露。目前,恶意代码经常通过这种方式实施相关操作。
同时,由于当前用户对于手机防病毒的意识还比较淡薄,同时手机中的通信录、短信息等均可以被应用程序访问,虽然这些权限会在应用程序被安装的时候给出提示,但是这样并不能保护用户安全。因为恶意软件的请求权限方式与正常应用程序并无区别,用户很难判断出来。Android系统并没有强大的防火墙或保护措施来判断用户的隐私信息是否被非法访问,Android系统只能对应用程序做完整性以及稳定性的监测。应用程序的权限在经过授权许可后,这些权限在程序的整个生命周期内一直保有,不会被解除,Android系统缺乏对应用程序动态运行时的监测。综合以上几点,Android系统在一定程度上无法完全依靠权限机制来保障应用程序的安全性。
(三)硬件绑定
众所周知,厂商在电脑的网卡(包括无线网卡)出厂的时候便赋予其具有唯一标识的MAC硬件地址,因而在日常生活中频繁使用的,如无线路由器中可以设置只为某些MAC地址提供网络服务。蓝牙设备的MAC地址与电脑网卡MAC地址异曲同工,都具备唯一的识示性。故笔者以此思路提出可以使用类似绑定网卡MAC地址方法的绑定蓝牙设备MAC地址的方法。以此方法达到只能使用特定SmartWatch2输入密码的效果。
如前文所述,SmartWatch2与Android手机之间的连接以及通信环节均建立在蓝牙技术之上,因而上文提出以SmartWatch2设备的蓝牙设备MAC地址作为标识的方法得以实用,使用者通过密码输入器注册提供的Activity界面设置与其绑定使用的蓝牙设备MAC地址,只有与设置的蓝牙设备MAC地址相同的蓝牙设备才能输入密码,这一方法能在一定程度上保证密码输入时的安全性。
Android系统本身提供了一系列接口以供开发者使用,其中Bluetooth Adapter类为与蓝牙相关的核心类。通过此类可以获得本机蓝牙设备适配器,再通过此适配器获得与之相连的外围蓝牙设备信息,从而可以取得外围连接状态中蓝牙设备的MAC地址,以满足密码输入保护方案的需求。
(四)加密解密技术
当今社会是一个高度信息化社会,无论是公司还是个人都极为重视信息的安全,尤其是数据的安全。因而,数据加密算法逐渐发展成熟,并广泛地应用于生活以及科研中的各个领域。数据加密技术通常可分为两大类:对称式加密和非对称式加密。
对称式加密是指加密和解密两个阶段所使用的是相同的密钥,这种密钥一般被称为“Session Key”。由于对称式加密技术发展应用较早,这种加密技术在当今世界已被广泛采用。对称式加密算法主要包括DES加密算法,分组加密算法AES,流加密算法RC4等。美国政府就曾经使用DES加密算法来进行数据加密,它的Session Key长度一般为56 bits。由于对称式加密算法发展应用较早,对于早期的计算机处理速度低的特性,其在当时还能保证安全性。然而随着当今计算机处理能力的增强,DES加密算法等对称式加密算法的安全性受到严峻的考验,如DES的密钥长度只有56位,在如今已经很容易破解。
较之对称式加密,非对称式加密的加密和解密两个阶段采用不相同的密钥,一般同时存在两个密钥,称为“公钥”和“私钥”,两者分别在加密和解密中使用。一般来说,公钥可以对外公布使用,而私钥则不能,一般只由解密方保存。通常情况下,在进行网络传输的时候,总是需要将己方密钥告诉对方来进行加解密工作,这样对于传统的对称式加密方法而言其密钥被窃取的可能性极大。而非对称式加密由于同时存在两个密钥,且其中的公钥本身就是可以公开的信息,收件人在解密时只需用其持有的私钥就可以解密数据,这在很大程度上解决了密钥的传输安全性问题,保障了信息传输的安全。非对称式加密算法中最常被使用的是RSA加密算法。
通常情况下,非对称式加密算法的显著缺陷在于对数据加密速度过慢,结合实际需求可以知道,笔者只对四位长度的密码进行加密,因而使用非对称式加密算法有其显著的优越性。使用RSA加密算法的加密解密过程如图8-30所示。(www.xing528.com)
图8-30 加密解密过程
1.RSA算法
RSA加密算法的实现基于一个公认的数学难题:两个非常大的素数相乘得到一个乘积,将得到的这个乘积在没有任何已知的情况下,直接进行因式分解是非常困难的,现阶段的方法以及运算速度,无法做到对其进行因式分解。在RSA使用过程中公钥和私钥是一对大素数的函数。SET(Secure Electronic Transaction)协议中要求CA采用2 048位的密钥,其他实体通常使用1 024位的密钥。就目前实际情况来说,所能破解的最长的RSA密钥的长度为768位。因此,通常认为长度1 024位的RSA密钥是基本安全的。RSA加密算法的特点是,其密钥长度会随着保密级别的提高而快速增大。如果某个程序对于安全性的要求非常严格,可以使用位数更多的RSA密钥,对于2 048位的RSA密钥现阶段认为是极其安全的。然而,随着位数的增加,加密所耗费的时间也极大增加,对于短数据的加密完全没有必要采用过长的RSA密钥。
2.RSA安全性
相对于一般对称式加密算法,RSA的加密解密过程比较费时,但对于短数据其所需时间便在较好的范围之内,又能保证非常高的安全性。综合考量下,对于笔者所需功能,采用RSA的显著优势在于加密时间相对较短的情况下,具有很强的抵抗攻击能力。
(五)密码输入保护方案设计
密码输入器采用的软硬件结合方式的方法是,密码输入器根据使用者使用的SmartWatch2的蓝牙MAC地址与此SmartWatch2绑定,在绑定之后只能由绑定SmartWatch2输入密码,既不能使用手机端输入也不能使用另一个SmartWatch2输入密码。如果他人卸载密码输入器,只要在蓝牙服务范围内,SmartWatch2会自动震动以提醒拥有者密码输入器遭卸载。
较之支付宝等应用的自定义软键盘,笔者设计实现的密码输入器为了具有一般通用性,采用Android广播机制发送密码。广播机制的问题在于任意应用均可能接收包含密码信息的Intent,故需要在密码输入器与待输入密码应用之间自定义一种权限(Android权限机制)。
在权限机制保障一部分安全性的基础上,笔者再对Intent中包含的密码信息事先加密,以防止恶意软件或代码恶意声明权限盗取密码。
综合以上三重保护机制的设计,笔者设计实现的密码输入器在一定程度上可以保证用户输入密码的安全,从而保证了使用者个人信息数据的安全性。这三重保护机制如图8-31所示。
图8-31 三重保护机制
(六)密码输入器的界面设计
Android应用界面是使用者的第一观感反应,是使用者评价应用好坏的基础以及重要因素。界面设计的重要地位不言自明,评判界面设计的优良可以粗略总结为以下几个方面。
1.界面的风格,主要体现在界面背景,各种控件的大小排版,字体风格,整体协调性等方面。
2.界面的流畅性,主要体现在界面切换的流畅度,各个独立界面的过渡性等方面。
3.界面动画效果,主要体现在动画效果的优雅及美感等方面。
4.界面的大小,主要体现在依据不同使用环境提供符合此环境大小的界面等方面。
SmartWatch2的屏幕较小,难以承载过多元素或者空间,过多字符在SmartWatch2这样小的屏幕上会导致显示效果以及触摸效果不佳。而由于设计之初已经考虑采用软硬件结合方式以及权限机制保障密码输入的安全性,故组成密码的字符数目无需过长,组成密码的字符复杂度也可以较低。综合考虑以上几个因素,笔者设计实现的密码输入器扩展应用密码的组成字符只需包含简单的数字就已足够。综上所述,笔者将密码输入器扩展应用Password的UI设计为包括十个数字密码按钮,一个回退按钮,一个确认密码按钮及一个密码显示框。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。