马玉琢+郭玉翠
摘要:Android系统作为开源的系统,受到越来越多的青睐,同时其安全性及用户的隐私也受到了极大的考验。本文提出了一种针对短信隐私保护的加密方案。从Android系统的整体架构及分层思想出发,通过对3DES对称加密算法及RSA非对称加密算法的原理进行分析与研究,提出了一种新型的针对Android系统的混合加密算法的短信加密方案,详细地介绍了具体的实现过程。使用Android模拟器进行的收发仿真实验,证明了短信加密方案的可行性。
关键词:Android系统;3DES算法;RSA算法;短信息;加解密
引言
自从Google2007年推出Android操作系统以来,该系统以开源的优势迅速占领市场,但安全性也越来越受到重视。短信是人们使用较为频繁的业务,然而短信的安全性面临很多威胁,一些不法分子将用户发送的短信进行拦截,窃听短信,盗取用户信息进行诈骗等活动。目前对于短信的安全问题有很多研究,张宇斯提出了基于RSA加密算法的短信加密方案;方传蔚等人提出了基于3DES的短信加密方案;徐德志等人提出了在“ELGamal”加密体制基础上针对GSM短消息系统的公开密钥加密方案等。然而现有的加密方案大多仅限于对短信内容进行加密,且对称加密算法的密钥保密困难,非对加密算法加密速度慢。本文选取Android系统的短信加密作为研究方向,将非对称加密算法和对称加密算法进行结合,设计了基于3DES和RSA混合加密算法的短信加密方案,将短信内容和密钥分别进行加密,达到了双重加密的效果,综合发挥了两种算法的优点,又避免了各自的缺点。
1Android的系统架构
Android其本质就是在Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个Java的application framework,所有的应用程序都是基于Java的application framework之上。
Android的系统架构采用了分层架构的思想,从上层到底层共包括四层,分别是应用程序层、应用框架层、系统库、Android运行时和Linux内核。
应用程序层提供一些核心应用程序包,通常用Java语言编写,Java程序及相关资源经过编译后,生成一个APK包。
应用程序框架层是从事Android开发的基础,为应用程序层的开发者提供了API,它实际上是一个应用程序的框架,很多核心应用程序也是通过这一层来实现其核心功能的。
系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。Android的核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。
本文的短信加密方案是基于Android系统的应用程序层进行设计的,调用了部分应用程序框架层的API,采用Java语言进行的实现。
2 3DES和RSA混合加密算法简述
2.1 3DES加密算法
3DES加密算法是一种对称加密算法,加密和解密使用相同的密钥,使用3条64位的密钥对数据进行三次加密,加密速度快。
具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,s代表密表,
3DES加密过程为:S=Ek3(Dk2(Fk1(M))),
3DES解密过程为:M=Dkl((EK2(Dk3(s)))。
2.2 RSA加密算法
RSA是一种非对称加密算法,加密和解密使用不同的密钥,将两个大素数的乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥,将两个大素数相乘十分容易,但对其乘积进行因式分解却极其困难,任何人都可对明文进行加密,但只有被授权的用户,即拥有私钥的用户才可对密文解密,所以RSA方法可以具有很好的加密效果。
2.3 3DES和RSA混合加密算法
3DES对称加密算法的加密速度快,但由于加解密钥相同,所以密钥需要通过私密信道传送给对方,泄露的风险较大。RSA非对称加密算法强度复杂、安全性高,但由于RSA算法需要进行大整数的乘幂和求模处理,所以其效率较低,不适合大量数据的加密。
本文拟采用3DES和RSA混合加密算法进行加解密,即采用对称的3DES算法加密短信数据,采用非对称的RSA算法加密3DES的密钥。这样密钥不需要使用私密信道发送,又提高了整体的加密速度,发挥了3DES和RSA加密算法的优点又避免了各自的缺点,实现了一种新型的混合加密短信的方案。
具体过程如下:假设A是短信发送方,B是短信接收方,B在本地产生RSA密钥对,将RSA公钥通过WIFI等途径拷贝给A;A在本地输入3DES密钥,使用3DES密钥对明文短信进行加密,再使用RSA公钥对3DES密钥进行加密,并将加密后的密钥和密文短信一同传送给B;B用本地的RSA私钥解密出3DES密钥,并用3DES密钥对接收到的密文短信进行解密,得到的数据即为A所发送的明文短信。
流程图如下:
3短信加密实现
在Eclipse中建立工程,AndroidManifest.xml中添加短信的读写权限。启动两个模拟器,系统自动给这两个模拟器分配号码,默认前缀为1555521,启动的模拟器是5554和5556。将工程运行在两个模拟器中,5556为短信发送方,5554为短信接收方。
3.1短信发送方
实现步骤:
(1)输入电话号码,短信内容。
(2)输入自定义的24位3DES密钥,并对明文短信运用3DES加密算法进行加密。
(3)从对方拷贝的RSA公钥文件中读取RSA公钥,对3DES密钥运用RSA加密算法进行加密。
(4)将密文短信以及加密过的密钥一同调用系统API以短信的形式发送到接收方。
具体实现结果:
(1)输人手机号码:5554
(2)输入短信内容:happy new year and bestwishes to you.
(3)输入24位的明文密钥:ml a2y3u425h6u708 12345678
(4)3DES算法加密后的密文短信:G56pHPqWjRZ6Sb3cTzFDEwfKwZcj+cWFb4dpSJSd9/R4yKGylsd7ow
(5)RSA算法加密后的密钥结果:Y42XUo5nkoZJuTes6mMw7SRnz3DYR8i/T1ioMl08wKhtBB ldZVyhLvXq0KfhntUr07LbM3T+azCgypK8HDXl3BEm2bUtUeR890gY3BSOILM9R104C60dhISmC5+bUNnh5bPOi+XBfOtUkur7e2HIl2Jd3hrq0TEXL69mcoTncQ=
(6)运行界面:
3.2短信接收方
具体实现步骤:
(1)监听短信,当短信数据库发生变化时,获取新接收到的短信。短信收件箱的URL:content://sms/inbox,使用SQL语句查询数据库中的信息,查询Id、address、date、body等字段,即获取到短信内容。
(2)对短信内容进行分解,分解成密文短信和密文密钥。
(3)获取本地所生成的RSA私钥,对密文密钥运用RSA解密算法进行解密,得到明文密钥。
(4)使用明文密钥运用3DES解密算法对密文短信进行解密,得到明文短信并显示出来。
(5)运行结果界面:
4结语
本文设计并实现了一种基于Android系统的3DES和RSA混合加密短信的方案。其中3DES密钥为用户手动输入的24位密钥,实现了一次一密,提高了短信加密的安全性。将两种算法进行混合,充分的发挥了3DES对称加密算法速度快、效率高和RSA非对称加密算法破解难度大、安全性高的优点。并且在Android模拟器上对短信加密方案进行了实现和验证。