移动终端的广泛使用及其日益增加的功能带来了新的安全问题,为了保护用户的信息安全,需要了解并解决这些安全性问题。因此,移动平台信息的加密解密已成为研究的热点。在传统加密解密系统中,多数采用字母数字组合的键盘输入方式,但是在使用频率较高的移动平台上,反复使用高强度密码进行加密解密比较繁琐。因而需要设计出一种方便快捷的行为加密算法,即通过验证使用者对手机的一个动作行为,判断使用者是否合法。
一、 Android
Android是一个开放性移动设备综合平台,它是一个针对移动设备的程序集,其中包括一个操作系统,一个中间件和一些关键性应用。其中媒体方面对一些通用的audio,video、和图片格式提供支持。Google发布了它的移动平台操作系统Android SDK开发环境,包括:一个设备模拟器,调适工具,内存和效率调优工具和一个Ecjipse的插件等。这款模拟器功能非常齐全,用户可以使用键盘输入,鼠标点击模拟器按键输入,还可以使用鼠标点击、拖动屏幕进行操纵。其主屏分辨率达320*480像素,彩屏。所以本文选择这款模拟器作为开发环境。
二、行为加密算法设计
1、行为
行为是有机体在外界环境刺激下引起的反应,包括内在的生理和心理变化。人的行为由5个基本要索构成,即行为主体、行为客体、行为环境、行为手段和行为结果。奉义所讨论的行为特指使用者针对移动平台作用的生理行为:针对移动平台的行为有很多,如:以一定频率翻转手机,抛动手机等等。但是这些行为显然需要硬件设备的支持,而普通的移动平台一般不会配备这些设备。由于android手机操作系统提供了触摸屏环境,在其GPhone模拟器上设计行为加解密系统,可以狭义限定这里讨论的行为是指针对手机屏幕的行为,即在触摸屏上的一系列操作组合。也就是说这里的研究对象是时间和空间的有机
结合。
2、存储用户的行为
首先是空间的存储。这里所说的空间就是在触摸屏的环境下画图形,通过图形的比对作为整个行为加密解密匹配的一部分。为了加密解密便捷,可以认为用户输入图形中每个像素只有着色和未着色2种情况,所以可以直接将原始图形二值化,将原来的图形信息保存在—个与屏幕像素相等的矩阵( 320*480)中,并初始化所有矩阵元素为零,而后笔迹划过的像素点在矩阵中对应单元的值置1。这样就把用户输入的
图形转换为矩阵形式,方便后面的处理。
其次是时问的存储。在存储图形基础上,同时记录下用户输入的轨迹,这样时空结合,就能准确的描述一个针对移动平台的行为。在触摸屏上的动作一共只有3种,即落笔、拖动、抬笔。无论用户的这个行为多么复杂,总是上述3个步骤的循环。在移动平台上,可以通过函数调用存取时间,所以这个方法是可行的。当用户键入加密解密行为时,采用表1的数据结构保存轨迹。
用户在开始划出第一笔的时候,分配一个内存单元,将heali指针指向刚分配的单元。并通过函数获得落笔时刻的坐标信息和时间信息,在用户抬笔时刻再次获得抬笔坐标和时间信息,两次时间相减,即为消逝时间寺如果用户再次落笔,则再次分配内存单元,且将指针p指向新的单元。
3、比对加密解密行为
采用这样时间空间结合的方式,将用户的行为细化为计算机能够读懂的结构,然后比较加密行为与解密行为是否一致,如果一致,则解密成功,否则解密失败。本文设定时间空间两方面的一致才表示解密成功,即:图形一致;时间一致;落笔、抬笔坐标一致。这3个方面缺一不可,当且仅当3个方面的要求同时满足才能认为解密成功。在一般加密系统中需要精确匹配,但是同一个人做2次相同的事情一定会存在细微的差别,所以不宜采用过高的精度。所以,在本文需要将收集来的时间空间信息模糊化,使得解密过程能够顺利进行。
首先是图形的模糊化。根据数学形态学的腐蚀、膨胀算法,对图像模糊化的数学表达式为:
这与图像的细化互补,图像细化的数学表达式为:
式中→表示的足击中击不中变换。S是而知图像进行细化后的像素集合,B表示用来进行细化运算的结构元素,结构元素内的每个元素取值为0或1。他可以组成任何一种形状的图形,在图形中有一个中心点;X表示原图像经过二值化后的像素集合。此公式的含义是用B来细化X得到的集合S。S是X的全部像素点除去击中击不中变换结果后的集合。击中、击不中与包含的关系如图1所示。
在细化一幅图像X的过程中应满足两个条件:第一,在细化过程中,X应该有规律的缩小;第二,在X逐步缩小的过程中应到使X的连通性保持不变。
图像细化的实现步骤如下:
(1)获得原图像地址及图像的高与宽;
(2)开辟内存缓冲区,并初始化为255;
(3)如果当前像家为白(背景),则跳过该像素;
(4)如果当前像素为黑(图像),则定义一个5*5的结构元素,计算5*5的结构元素中各个位置上的值;
(5)依次判断S模板点是否满足判定条件,是则删除该点,否则判断下一个像素点,直到所有的像素点处理完一遍;
(6)循环执行(5)直到没有点可以删除为止;
(7)将结果保存到内存缓冲区。
在图像细化的基础上对图像像素点的灰度值取补,而后调用细化处理函数对取补后的图像进行处理,就得到需要的图像粗化。
加密图形解密图形均用上述步骤粗化,然后做异或运算,统计出异或运算后矩阵中为1的元素,再除以粗化后原图形为1元素总个数,得到图形容差。公式如下:
对于时间的一致,采用如下公式:
对于落笔抬笔的一致,采用如下公式:
这里的容差可以根据实际情况设定,开始加密的时候可以有一个学习记忆的过程,实际容差小于设定容差,且上述几个容差同时满足就说明解密成功。
三、系统结构设计与实现
1、总体架构及流程
采用android系统平台实现这套系统。对于加密模块,当程序启动之后,首先执行初始化,然后绘制人机对话界面,这个界面包含:用户绘图区域和菜单栏。在初始化绘图区域之后开始进入消息循环,捕捉用户在触摸屏上的动作。对用户在触摸屏上的落笔、拖动、抬笔3个动作分别连接事件。落笔时需要处理该点坐标,落笔时刻,还需要建立表1所示的节点。
拖动时相对比较简单,只需要记录所划过点的坐标。抬笔的时候除了记录坐标之外,还需要完成链表的链接工作。用户绘图完成之后点击菜单中的“加密完成”则加密模块完成,解密时,步骤与加密类似仍然先调用绘图模块,而后在消息循环中不断存储用户行为。在加密解密行为都存储之后按给定的设计方式进行匹配。
2、行为加密在Android上的实现
根据上文的分析,整个系统分为如下几个模块:界面设计模块、绘制图形模块、加密模块、解密模块、匹配模块6加密、解密以及匹配的模块已在上文叙述。界面设计模块以及绘制图形模块参考google提供的开发者文档中的例程,以及alctivity的处理机制来实现。需要注意的是Android应用程序的基础功能单元就是Activity-android.app.Activity类中的一个对象。如Activity显示在屏幕上并且设计它的UI,需要使用VIew和viewgroup-Android平台基础的用户界面表达单元。另外在android系统平台上开发用户界面,并不像在VC等环境中,用所见即所得的方法编辑程序界面,这里是通过xml语言控制界面的排列。
四、测试
1、测试环境
由于采用Eclipse3.2配合Android SDK的方式开发。E-clipse是一种可扩展的开放源代码IDEo Eclipse允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上,可使用GPhone模拟器作为载体验证本软件的有效性和可行性。
2、实例测试
首先启动程序,进入加密部分软件。此时,在用户区域上键人加密行为,如图2所示。加密行为键入完成后,点击MENU选择“加密完成”,如图3所示,至此,加密过程结束。打开解密软件,键入解密行为,如图4所示。同样,点击MENU选择“加密完成”。最后调用匹配函数判断解密行为与加密行为是否一致,并在屏幕上显示,如图5所示。
通过对行为加密这种新兴加密方式的应用研究,设计了一套适应于移动平台的行为加密应用系统,论述了行为的定义和加密和解密的判定方法,给出了应用系统的架构与处理流程,并在Andmid平台上用CPhone验证了该应用系统,测试结构表明本文给出的行为加密应用系统是有效的和可行的。
小知识之Android SDK
SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
因此,Android SDK 指的是Android专属的软件开发工具包。