
摘要:数据传输的安全一直是信息通信领域的研究课题。基于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 为文件发送服务端口。当用户需要发送文件时,通过该端口将数据传输到服务器; 19953端口专门用于发送文件服务。当服务器收到客户端请求接收文件的指令时,服务器会通过该端口将文件发送给请求用户; 19954端口为心跳监控服务端口。该端口每 15 秒就会从客户端接收一次数据。如果连续3次没有收到数据,服务器就会认为客户端已经离开。与该客户端的所有连接将被断开,服务资源将被释放。文件服务器的功能结构如图1所示。
文件服务器启动后,文本服务、文件发送服务器、文件接收服务器和心跳监控服务器会自动启动。
3.2 文件传输设计
文件加密传输是本系统的核心。当用户A向用户B发送文件时,如果用户A和用户B不在同一个局域网内,则无法直接通信,因此需要文件服务器作为中介。文件服务器运行在具有单独 IP 地址的服务器上。 A可以与服务器通信,B也可以与服务器通信。那么用户A向用户B发送文件的过程实际上就是A将文件发送给服务器,服务器收到后存储该文件。当用户B登录时,他请求接收该文件。此时服务器将A发送给B的文件传输给用户B。
3.3 心跳监测设计
当用户登录系统后,服务器心跳监控开始工作,客户端需要每隔10秒向服务器发送一次数据。服务器每15秒就会接收一次数据。如果3次都没有收到数据,则表示该客户端不再活跃,所有与该客户端的连接将被断开。
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]威廉·斯托林斯(美国)威廉·斯托林斯。隐动物学与网络安全[M].电子工业出版社,2017:189-205.
作者简介:韩高峰(1981-),男,安徽富阳人,硕士,讲师,研究方向:数据库挖掘、移动互联网开发。