万玉晴
(太极计算机股份有限公司 北京 100083)
摘 要 针对智能手机图像的加密应用需求与目前台式加密系统不能很好地适用于移动终端平台等问题,本文设计了一套适用于智能手机的图像加密系统,结合基于混沌算法的图像加密技术,提出了适用于移动端应用的低配置、快速实现图像加密的技术方法。实验结果表明,系统采用的并行多线程技术路线,可以提高大像素图像的加解密效率三倍以上,为智能手机的实时图像加密提供了一种可实现解决方案。
教育期刊网 http://www.jyqkw.com
关键词 移动终端,即时通信,多线程,图像加密
doi:10.3969/j.issn.1674-7933.2015.04.005
作者简介:万玉晴,女,1973 年生,硕士,高级工程师,主要从事及研究领域:计算机应用、数据分析、软硬件开发,Email :wyq@mail.taiji.com.cn。
0 引言
近年随着移动终端设备的普及、硬件及移动网络的提升,其传递消息的及时性、种类的多样性一直受到众多群体的喜爱,图像作为即时通信中的重要信息媒介,其具有的直观性和丰富性已普及流行并有与文字信息并驾齐驱的趋势。
随着即时通信理念及移动设备的普及,即时通信系统终将进入到各个专门的领域,针对特殊群体设计的即时通信系统将越来越受到关注,提供一个既安全又具有多种实用性功能的面向专业人群的即时通信系统将越来越受到欢迎。目前主流的即时通信系统虽然面向对象较广、功能较全面。但也存在多种因素制约,如安全性不高,未能对商业人群、安全部门、政府机关等特定群体提供具有专业特色的功能;再如隐私照片、内部资料、以及会议视频等图像文件的加密无线移动推送和保存。
图像信息作为资讯分享、信息传递、文件审阅等方面的重要载体,它的应用将更加广泛。出于安全性考虑,人们迫切希望即时通信工具在提供图像分享功能的过程中应保证图像存储的安全、图像信息的安全,保证其不被他人恶意窃取。因此,为即时通信平台提供高效、安全可靠的图像加密功能具有重要意义。
图像中往往包含个人信息、敏感信息、商业信息等不适合公开的内容,由于互联网存在的固有安全问题,图像泄露或者被窃取会给个人甚至社会带来负面影响。因此,图像加密是即时通信中不可或缺的一环。由于移动终端内存、计算单元的限制,传统做法是将图像在服务器端进行加密处理后转储到移动端,该方法需要较多的时间,消耗更多带宽,而且受限于网络,用户无法随时随地为移动设备上的图像进行加密。
本文采用的移动通信终端的图像加密算法已经在《一种用于手机图像处理的混沌加密改进算法》一文中做了介绍,故在此不再赘述,有兴趣读者可以见教育期刊网 http://www.jyqkw.com
参考文献[1]。出于便捷性考虑,移动终端往往采用比桌面设备更小的内存和性能更低的中央处理器,但图像加密往往涉及到较大的内存开销及大量的计算[2]。作为系统在保证敏感信息的加密前提下,如何尽量减少系统的运算量,提高加密效率,解决移动终端进行图像加密遇到的内存溢出问题。基于上述因素,传统的图像处理方案在移动终端上并不完全适用,在此主要介绍手机的图像加密算法结合多线程技术的特点,充分利用移动终端的处理器特点,提高加密速度,使移动终端的图像加密具有更高的效率,是一种简单、有效的实现方法。
1 系统需求分析
即时通信平台中的移动终端图像加密子系统,在应用中主要包括加密图像、解密图像、上传图像、下载图像、浏览图像、下载图像等功能,如图1所示。
根据图像加密系统的业务需求,本系统技术上主要实现以下几个功能:图像预览功能、图像加密的实现、图像解密的实现、图像上传与下载、图像存储等功能。
1) 图像预览功能
图像预览功能是指用户可以通过列表形式查看本地已经保存的已加密图像或者经解密的图像;通过缩放形式查看完整的本地已经保存的已加密图像或者经解密的图像;查看本地已经保存的图像或者通过摄像头捕获的图像。
2) 图像加密功能
图像加密功能是指在用户从本地存储选取了照片或者从摄像头获取了照片,并在选定的加密区域上,用户输入加密密码;在得到用户输入的加密密钥后,利用系统加密算法隐藏图像中的选定信息。
3) 图像解密功能
图像解密功能是指在用户获得了一张待解密图像并选择解密操作后,提示用户输入解密密码;在得到用户输入的解密密钥后,利用系统解密算法本功能要求,在用户已准确输入解密密钥的情况下,为用户所选取的加密图像进行解密,显示图像中的隐藏信息。
4) 图像上传功能
该功能在用户完成对图像加密操作之后,为用户提供将本地图像备份至即时通平台的后台服务器中,该功能只能用来将已加密的图像上传至服务器中。利用该功能,用户可以将本地信息存储至服务器,降低本地的存储负担。
5) 图像下载功能
该功能实现了用户从远端服务器获取本用户的所有已上传图像,或者他人提供的具有统一资源定位URL(Uniform Resource Locator)信息的图像信息。利用该功能,用户可以通过网络恢复存储在服务器端的图像。
6) 图像存储功能
该功能要求能对经过加密程序处理的图像、经过解密程序处理的图像、已上传至服务器的图像实现保存至本地的功能。该功能提供了用户操作过程中可以将重要信息进行本地备份。
除了上述系统应用功能外,系统运行还涉及到性能方面的需求,如需提供高效的信息加密速度,可靠的信息备份与恢复等功能。在保证系统稳定的前提下,应尽量提高系统整体的安全:从源头获取图像、中途网络传输过程以及在移动终端存储的安全性。
因此,在系统设计与实现过程中,还需要考虑系统的性能指标,如系统后台处理系统的并发用户数及响应时间的需求。各种手机的图像显示屏规格需求;移动端加解密响应时间等。
作为面向实际应用的系统,可靠性和安全性是系统实现的必要保障,系统不仅需要保证传统即时通信所应有的及时性,还应保证加密系统的稳定性,如使用过程中不会因内存溢出、系统无响应等问题导致程序崩溃。此外还应具有系统数据实时性和多重备份,为数据的恢复提供支持。
2 系统设计与实现
2.1系统架构与功能设计
移动通信加密子系统设计分为前台用户界面和后台服务器两部分,前台主要实现移动端的图像加密处理。本文采用Android Studio编写用户UI,用Java编程语言实现加解密功能、图像上传与下载等功能。后台选用MySQL数据库保存用户信息及图像资料等数据。用户上传或下载图像通信使用Openfi re服务,fast FDS文件服务器系统用于存放用户上传的图像文件,Nginx作为HTTP和反向代理服务器,系统拓扑结构如图2所示。
图像加密系统包含六个功能模块,包括图像加密、图像解密、图像上传、图像下载、图像预览和图像保存模块。图像加密、解密模块作为本系统研究的主要功能,为图像加密和解密提供支持;图像上传、下载模块保障了图像的备份与恢复;图像预览模块是整个系统的基础模块,为其他各个模块提供支持;图像保存模块用于将加密图像或已解密图像存储在本地系统中,此外还提供删除操作。系统功能结构示意系统结构如图3所示。
2.2 系统加解密流程设计
图像加密模块的主要功能是为用户的图像进行加密,用户可以从本地存储卡或者相机选择待加密的图像,系统会直接显示该图像,用户通过滑动手指选择需加密区域,此后选择加密操作,在输入密码之后,点击确认按钮,以此启动整个加密过程。其中,采用Activity类作为操作界面,用来显示待加密的图像区域选择框、操作选择、密码输入;Bitmap类实现对本地图像或者照相机获取的图片的调用及保存;Image Manage类实现对Image类的管理;Image类主要用来显示原始图像及已加密的图像;Encrypt作为实现对原始图像进行加密操作的类。图像加密模块的流程见图4。
实现图像加密的具体处理流程如下:
第一步:从本地图库或者照相机获取到待加密的图像,将其在activity上进行显示;
第二步:通过拖拽矩形框选择需要加密的区域;
第三步:点选加密按钮,并在密码输入框中键入密码;
第四步:后台程序将获取的密码串通过转化得到混沌序列的初始值;
第五步:利用图5中所示原理,对像素点值进行异或处理,完成对所选择区域的像素操作,并将加密区域的矩阵信息写入到图像中;
第六步:将经过加密后的图像显示在activity中,并提示用户加密已完成,请选择保存、上传、取消等操作。
同理,图像解密模块设计思路基本类同加密模块,仅是逆向操作而已,现做一简单的介绍。作为图像加密的逆操作,图像解密操作包括自获取用户输入的解密密码到为用户呈现原始图像信息的过程。
2.3 图像加密操作设计
手机图像加密子系统的操作主要由七个界面构成,包括主界面、原始图像展示界面、加密图库界面、解密图库界面、已加密图像展示界面、已解密图像展示界面和临时图像展示界面。
系统启动时默认进入到主界面,主界面是系统的程序入口,有3个按钮,对应功能为图像选择、加密图库和解密图库的三个入口。选择“选取照片”将会弹出对话框让用户选择是从本地相册获取图像或者从照相机获取;选择“解密图库”将跳转到已经过解密的图像列表;选择“加密图库”将跳转到已经过加密的图像列表,具体示意见图6。
临时图像展示界面展示经过加密或者解密但还未保存至本地的图像,在本界面用户可以选择保存图片、上传图片、放弃图片操作。
3 并行多线程技术与实验
在手机图像加密过程中,需对图像中的像素点进行像素值运算,而图像的像素点一般都达到百万级别,由于加密算法对单个图像的处理不影响其他像素点的处理,因此可以通过多线程技术,实现图像加密的并行多线程计算[3]。
设定Pix数组为该图像的点阵序列;其中iw为图像的宽度;ih为 图像的高度;key为图像加密密钥,利用该密钥进行多次迭代得到系统混沌序列的初始值;offset为所需处理的图像点阵相对于起点的高度偏移量。然后利用混沌序列对图像中像素点的像素值进行异或操作,分别获得当前像素点的RGB值与三个不同的混沌值进行异或操作,将达到的新RGB值进行位移操作,得到像素点的新像素值,并返回处理后的图像点阵。
本文实验采用操作系统为Android 4.1.2,4核CPU,主频1.6GHz的手机,进行了并行多线程图像加解密性能测试。为直观比较性能测试数据,选择图7(左)作为本次测试的原始图像,图像分辨率为1920×2560,通过对该图像等比例缩放,得到不同规格的原始图像。为测试图像加密过程中系统避免内存溢出问题,本实验选择对整张图像进行加密,加密结果如图7(右)所示。
图8中的数据是多线程技术与单线程加密算法在处理不同尺度规格的图像所耗费的时间对比图。系统加密响应时间从系统调用加密算法开始,到加密算法完成返回完整的图像为止。
通过实验数据分析发现:
1) 图像规格较小情况下,多线程加密技术与单线程加密方法效率几乎相当;
2) 单线程技术的加密响应时间随图像规格的增长呈线性增长;
3) 多线程加密技术的加密响应时间随着图像规格的增长基本稳定不变;
4) 单线程技术在处理规格为1920×2560图像时,响应时间超过2 000ms,用户体验极差,不能满足实际应用需求;
5) 当图像规格超过480×640后,多线程加密技术的加密效率是普通加密方法的3倍以上,且系统不会出现内存溢出问题。
同时还进行了解密运算,解密作为加密操作的逆过程,在原理上与加密操作类似。本测试利用加密过程中产生的不同规格文件作为操作对象,利用解密算法对图像进行解密。待解密图像如图7(右)所示,还原后的图像如图7(左)所示。实验数据分析表明,系统实现加密与解密时间基本相当,且呈现与加密类同的时间响应特征。实验数据分析还表明,采用多线程技术的图像加密系统,在加密性能上得到显著提高,运行于当前主流的移动设备上,能充分发挥移动设备的特点,实现安全、稳定、高效的图像加密功能。
4 结论
本文的移动终端图像加解密子系统目前已在全国多个公安部门试点应用,为公安干警的现场应用提供了图像信息的安全加密采集和传送技术实现。本子系统采用的基于混沌序列的图像加密算法保证了信息采集和传送的安全性,避免被轻易破解;在实际应用中采用的多线程技术提高系统的加密效率,降低了设备内存配置要求,提高了用户体验深度,保障了系统的稳定性,避免出现内存溢出现象。
本文作为教育期刊网 http://www.jyqkw.com
参考文献[1]的补充,描述了移动终端图像加密子系统的研究与应用工作。虽然经实验和实战已经证明,本文提出的移动终端图像加解密设计是可实现的,但是还有许多方面需要进一步完善,特别是推广应用到民用领域,还需要对不同移动终端操作系统、不同厂家生产的不同手机设备进行广泛性适配实验。对加密算法和系统效率等性能指标还有很大改进余地,有待于今后努力。
教育期刊网 http://www.jyqkw.com
参考文献
万玉晴, 盛荣春. 一种用于手机图像处理的混沌加密改进算法[J]. 软件产业与工程, 2015,(5):30.
李静. 基于混沌的图像加密算法的应用及其研究[D]. 重庆大学, 2013.
闫伟, 叶建栲. 多线程技术在android手机开发中的应用[J].信息通信, 2012,(01).