APP下载

基于3DES和RSA的Android系统短信加密设计与实现

2017-02-06马玉琢郭玉翠

软件 2016年6期
关键词:明文加密算法密文

马玉琢+郭玉翠

摘要: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模拟器上对短信加密方案进行了实现和验证。

猜你喜欢

明文加密算法密文
一种针对格基后量子密码的能量侧信道分析框架
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
奇怪的处罚
奇怪的处罚
基于小波变换和混沌映射的图像加密算法
四部委明文反对垃圾焚烧低价竞争
云存储中支持词频和用户喜好的密文模糊检索
Hill加密算法的改进