基于Android传输的改进加密策略分析与实现
2019-08-26韩高峰
摘 要:数据传输的安全性一直是信息通信中的研究课题,基于Android端到端的开放网络环境的通信和数据传输,同样存在着较大安全隐患。基于Android的文件远距离加密传输研究的内容是在Android移动平台下通过开放互联网安全传递数据的策略,具有重要的研究意义和应用价值。当前密码学和TCP/IP协议应用广泛而成熟,基于对称加密思想对开放网络环境下数据传输时的加解密算法进行了改进。通过Android手机设备号作为对称加密密钥,RSA非对称加密算法将用户密钥加密传输至服务器,实现文件在传输过程中加密目的。
关键词:对称加密;RSA非对称加密算法;密钥加密;Android设备号
DOI:10.16640/j.cnki.37-1222/t.2019.24.064
0 引言
数据传输愈加频繁以及涉密信息系统不断扩展,信息安全技术得到人们重视并广泛应用。信息安全技术[1]主要包括加密、认证、检测、防攻击、防病毒、扫描、监控以及审计等几个方面,其中加密技术是保证网络安全的核心技术,已经渗透到大部分安全产品之中,并正向生物识别、芯片化、量子化方向发展。
基于Android的开放环境文件远距离加密传输主要是基于C/S和B/S的混合模式实现,客户端是一款Android平台APP。通信时,客户端只要知道对方的帐号就可以通过外网对文件加密传输,文件在客户端进行发送和接收文件时自动加密解密,并支持批量发送和接收。
1 技术原理
开放网络环境下的加密传输主要围绕数据加密和网络传输两个方面进行研究,系统由客户端、文件服务器和管理服务器组成。客户端基于Android开发,文件服务器采用Java语言编程,文件服务可以提供用户注册、登录模块,构建文件安全传输环境,可以同时服务多个客户端。客户端按照服务器定义的规则完成注册,登录,文件加密传输功能。管理服务器则基于JavaWeb开发,可检测文件服务器运行状态,对用户、文件服务器运行日志等进行管理。
为了提高文件传输效率,本文在现有的对称加密算法基础上进行了改进,形成自定义对称加密算法[2]。首先将Android手机序列号作为对称加密密钥,Android手机序列号是由15位数字组成的“电子串号”,它与每台移动电话机一一对应。将设备号作为对称加密的密钥,将要传输的文件读取至内存,然后通过对对称加密密钥和字节流文件进行逐位的异或运算 ,并循环遍历整个字节流文件,将每次异或运算后得到的新的字节值发送至服务器。在传输文件时设备号并不会进行传输,如果要暴力破解,枚举结果高达10^15次方种结果,通过这种方式进行破解是非常困难的。所以用于加密十分安全。
2 架构分析
2.1 客户端
客户端主要和服务器进行通信,和服务器共同协作,完成登录、注册和文件加密传输功能。客户端需要确定三件事情:向谁发送文件、发送的是什么文件、是谁给我发送的文件。发送和接收的过程可以批量进行,文件传输到服务器和从服务器下载到本地的过程完全是加密的。
2.2 文件服务器
文件服务器可同时为多个用户提供多线程互相独立的服务,每个用户注册,登录,发送文件。为保证系统安全性,文件服务器拥有密钥管理和帐号管理功能,日志功能,可记录客户端IP地址、访问端口号、传送文件。文件服务器采用Java语言编写,使用Web程序管理文件服务器。
2.3 管理服务器
管理服务器采用Web程序实现,其功能主要包含审计管理和用户管理。审计管理方面,管理服务器可以根据文件服务器的日志记录,监控系统运行状态,查看用户操作内容,如某个用户在什么时间发送或接收了什么文件。用户管理方面,管理服务器可查看访问过服务器的IP地址进行了哪些操作,能控制文件服务器让某个在线用户强制下线,或者将某个用户添加到黑名单等。
3 设计与实现
3.1 文件服务器
文件服务器具有层层屏障,保护用户文件,并且有较为复杂的交互协议。文件服务程序启动时会在19951号端口开启文字服务监听,专门用于语言的交流,包括需要的注册服务,登录服务,发送文件或接收文件服务时都需从该端口将指令发送到服务器;19952号端口是文件发送服务端口,当用户需要发送文件时,则通过该端口将数据传递到服务器; 19953号端口专门用于发送文件服务,当服务器接收到客户端请求接收文件的指令时,服务器会通过这个端口将文件发送给请求用户;19954号端口为心跳监听服务端口,该端口会每隔15秒从客户端接收一次数据,如果连续三次没有接收到,服务器就会认为客户端已离开,就会断开和这个客户端的所有连接,释放服务资源。文件服务器功能结构如图1所示。
文件服务器启动后,自动开启文字服务、文件发送服务器、文件接收服务器和心跳监听服务器。
3.2 文件传输设计
文件加密传输是本系统的核心,当用户A向用户B发送文件,用户A和用户B如果不在同一局域网内,是无法直接通信的,所以需要文件服务器作为中间媒介。文件服务器运行在拥有单独IP地址的服务器上,A即可和服务器通信,B也可和服务器通信 。所以用户A向用户B发送文件的过程,其实是A向服务器发送文件,服务器接收文件后进行存储,当用户B登录之后,请求接收文件,此时服务器把A发送给B的文件传输给用户B。
3.3 心跳监听设计
当用户登入系统之后,服务器心跳监测就开始工作了,客户端需每隔10秒向服务器发送一次数据。服务器会每隔15秒接收一次數据,如果三次没有接收到数据,就表示该客户端已不再活动,就会断开与该客户端所有的连接。
4 系统测试
4.1 文件发送测试
用户登录后,系统会为其创建一个线程,发送的文件可以是文本文件或者二进制文件。如客户端准备发送一张图片ico.png和一个文本文件testTxt.txt,作为一个压缩包来进行数据传输。
通过服务器运行详情况可以看到,客户端会向服务器发送一个密文指令:”p7=903101; jal&sko(05345{”。服务器接收到此密文后使用自定义对称加密算法和当前用户的密鑰对这个指令进行解密,解密后:s251121753 ico.png 14331s,解密的结果由两个s包裹,内容是251121753,这是接收者帐号,其后是ico.png,是发送的文件名,最后是文件的长度1433字节。同时文件服务器将发送的文件、文件大小和接收者信息等内容保存到数据库。
当文件发送到服务器后,所有文件均不能被正常解析,文本文件是乱码,图片为无效,压缩包无法正常解压,此时文件传输到服务器之后依然是密文保存,这些密文也就是在网络传输过程中的实际文件,即使被人拦截,没有密钥,也是毫无意义。
4.2 文件接收测试
用户登录成功后,接收文件,接收的文件会保存到内部存储空间的FlyDragonLock/received目录下;此时客户端接收的文件都能被正常解析。但是服务器将文件发送到接收者的客户端上时也是加密传输的,解密过程也是在对方客户端完成。
4.3 并发测试
本系统使用多线程技术,将每一个服务任务封装成线程任务对象,采用Socket转接形式交接服务,比如登录,就会把客户端Socket对象传递给登录服务的线程,登录服务的线程有了客户端Socket对象就能和它通信。对每一个用户而言都有不同的线程对其进行服务。
5 结束语
基于Android环境下文件加密传输核心算法是采用异或运算特性的自定义对称加密算法和非对称加密RSA算法。加密传输后的文件比如商务往来中的标书、邮件即使被他人截获,没有对应的解密密钥也是无法正常打开的,即使打开也是一堆毫无意义的乱码,所以在这种情况下即使被盗取,也没有任何损失,所以这种情况下的加密传输对于保护文档的安全是非常重要的。
参考文献:
[1]王晓鹤,沈卢斌.信息安全分析学[M].北京:清华大学出版社,2019:230-267.
[2]William,Stallings(美)威廉·斯托林斯.密码编码学与网络安全[M].电子工业出版社,2017:189-205.
作者简介:韩高峰(1981-),男,安徽阜阳人,硕士,讲师,研究方向:数据库挖掘、移动互联网开发。