基于Android的社交网络安全通信系统研究

2017-03-14 18:48杨新宇
黑龙江教育·理论与实践 2017年3期
关键词:Android系统信息安全

杨新宇

摘要:谷歌推出的安卓平台以其良好的开放性和灵活性赢得广大消费者的欢迎。文章针对安卓手机的移动社交软件中存在的安全隐患,以保护用户个人通信的隐私,提高短信传输的可靠性及安全性为目的,研究了在Android平台上对字符串进行加密和签名认证的方法。设计并实现了一个加密和签名认证的通信系统,该系统用AES加密算法实现对字符串的加密,用RSA签名算法实现对字符串的签名和验证。具有良好的兼容性和实用性,在系统中添加了短信发送功能,更加方便了用户使用。

关键词:Android系统;AES算法;RSA算法;信息安全

1 引言

云计算技术随着大数据时代的到来不断发展,人们通过网络方便地进行信息交流,随之而产生的移动社交软件也层出不穷。诸如QQ、微信、微博、短信等早已深入到人们的日常生活之中。人们享受便利与高效通信的同时,伴随而来的安全问题正时刻困扰着我们。“棱镜门”等类似事件也在不断向我们敲响警钟,即在双方利用手机进行通信时,社交软件公司、互联网运营商等都有技术来获得用户通信内容。就目前来看,主要存在着以下隐患:(1)编辑的字符串以明文形式发送,在不安全的信道中传输,字符串内容可能被恶意第三方获知。(2)接收方无法对字符串的发送者进行身份鉴别,发送方可以抵赖,单凭账号和手机号已经缺乏可靠性。(3)接收方对字符串内容的完整性不能鉴别,无法获知该内容是否被他人篡改。

因此,在使用移动社交软件时如何将用户的隐私控制在用户自己手中,如何提高用户信息的安全性显得至关重要。为此,本文以安卓手机为例,结合安卓手机短信的运行机制,设计并实现了一个针对社交时敏感字符串的签名、加密通信系统,用户可对字符串进行签名验证、加密解密。其特点如下:具有较强的实用性;具有较好的兼容性;具有一定的安全性;保證了字符串的可信性、不可抵赖性和数据完整性;操作简单方便。

2 系统设计

2.1系统模型

整个系统模型可分为3层,其中安卓平台作为底层,移动社交软件作为中间层,通信系统作为顶层。图1是系统的设计模型。

安卓平台作为底层包括了应用层、应用框架层、系统运行库层和Linux内核层,该层提供基本的功能支持,如连接互联网,获取SIM信息等。社交软件层包括了用户常用的各种社交软件,在该层点击“发送”按键后,信息交由底层发送至信道中,接收方获得密文后也是在该层显示出来。通信系统层为字符串提供加密、签名、签名加密三种功能(签名加密是将前两种功能结合起来一并使用),具体使用哪种由用户自己选择。

2.2系统模块

本系统主要分为3个模块。分别是发送接收模块、加密解密模块、签名验证模块。图2展现了各模块之间的关联。

其中发送接收模块提供了短信的发送和接收功能。通过该模块不需要借助于移动社交软件就可以直接进行字符数据的传输,为使用短信通信提供了便利。在发送前,系统会通过判断语句对短信字符长度进行判断,如果消息长度超过70个字符,短信会自动分为两条发送。当然用户也可以通过复制粘贴的方式将密文导入安卓手机自带的短信发送软件中实现发送。

加密解密模块采用对称加密中的AES算法。在众多加密方法中,对称加密具有加密速度快、加密数据量大的优点,适合在字符串长度较长的情况下进行加密。而其中的AES算法也是当前较为常用的一种加密算法,该加密算法采用分组加密的方式,共有128bit、192bit和256bit三种分组长度,这里采用256bit。在通信前输入对称密钥,编辑字符串,完成加密。复制粘贴到用户使用的社交软件对话框中,点击发送便完成了密文的传输。接收方在社交软件对话框中看到密文后,将密文导入系统中,输入对称密钥进行解密。

签名验证模块采用RSA算法,该算法在数字签名中使用较为广泛。为了保证在计算上的困难性,密钥长度至少在1024bit。

3 系统实现

本系统在安卓系统2.3.3版本上进行设计,该版本在市场上出现较早。

3.1系统流程

1.密钥分发。(1)AES密钥:手工分发、RSA加密分发。(2)RSA公钥:短信发送、互联网发布。

2.AES加密发送短信。(1)输入密码、短信内容和电话号码。(2)对短信内容加密。(3)发送密文。

3.RSA签名发送短信。(1)输入短信文本。(2)对原文签名生成消息摘要。(3)输入AES加密密钥,对消息摘要和明文加密形成密文。(4)发送密文。

3.2功能实现

1.置布局文件。

使用线性布局作为整体的布局框架。首先界面上要有输入密码,输入短信字符串及输入电话号码的可编辑文本框,其次一个加密的按钮点击后实现加密,一个解密按钮点击后实现解密,一个发送按钮发送短信,以及一个返回按钮结束程序。整个布局采用线性布局,里面再嵌套两个线性布局。至于签名验证模块的布局原理类似,不加以赘述。图3为加密解密模块的布局效果图。

2.发送功能。

(1)系统具备发送短信的功能,在AndroidManifest.xml文件中需要添加发送短信的权限

(2)将Android中自带的telephony.SmsManager类导入。

(3)设置监听器监听事件btnSend.setOnClickListener(new OnClickListener(),一旦触发,立即读取短信字符串和手机号码字符串。

(4)发送短信smsManager.sendTextMessage(mobile, null, msg, null, null),弹出提示框“短信已发送”。

3.加密解密功能。

(1)调用加密函数AESCipher类进行加密

dest = AESCipher.encrypt(key, src)

(2)加密函数

public class AESCipher {public static String encrypt(String key, String src) throws Exception {

byte[] rawKey = getRawKey(key.getBytes());

byte[] result = encrypt(rawKey, src.getBytes());

return toHex(result); }

(3)加密流程

字符数据转化为字节数据。

src = etStr.getText().toString().trim()

字节数据转化为十六进制字符串

public static String toHex(String txt)

{return toHex(txt.getBytes()); }

图5、图6分别为原文加密后的应用界面。

(4)解密

解密时调用相应的解密函数:

dest = AESCipher.decrypt(key, src)

4.签名验证功能。

(1)密钥生成

生成公私密钥对:

KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(RSA)

密钥位数为1024位,keyPairGen.initialize(1024)。

动态生成密钥对,这是当前最耗时的操作,一般要2s以上。

KeyPair keyPair = keyPairGen.generateKeyPair();

PublicKey publicKey = (RSAPublicKey) keyPair.getPublic();

PrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();

byte[] publicKeyData = publicKey.getEncoded();

byte[] privateKeyData = privateKey.getEncoded();

(2)签名

用户编辑完字符串后,将私钥导入相应的文本框中,点击“签名”按钮。系统读取字符串。

String content = txtInput.getText().toString()

RSA签名函数对字符串完成签名。

byte[] dataEncode=cipher.doFinal(content.getBytes());

最后经Base64编码后导入通信双方的对话框中。

(3)验证

用户从对话框中获得签名,经过解码后,导入发送方公钥,点击“验证”按钮。主要代码如下:

byte[] miwen = content.getBytes();

byte[]=android.util.Base64.decode(miwen,Base64.DEFAULT);

byte[] dataDecode = cipher.doFinal(b);

4 结束语

本文就移动社交网络中传递的字符串加密和签名方法进行了研究和设计,在使用社交软件时,通过本系统可对敏感信息进行即时加密和签名。即使被恶意第三方获得了密文,也无法立即获取信息内容。接收方在获得密文后同样使用复制、粘贴的方式,将密文導入系统中完成解密、验证。在今后的工作中,可尝试添加RSA公钥加密模块,实现对AES对称密钥的管理,在社交软件群聊的信息传递模式中也可以实现安全的通信,不再局限于目前点对点的信息传递。

猜你喜欢
Android系统信息安全
《信息安全与通信保密》征稿函
信息安全专业人才培养探索与实践
保护信息安全要滴水不漏
高校信息安全防护
Android系统上的移动互联网集成平台开发机制
保护个人信息安全刻不容缓
信息安全