基于安卓终端的SQLite数据库网盘存储安全研究

2020-10-27 05:51张晶
中国管理信息化 2020年15期
关键词:安全

张晶

[摘    要] 随着移动客户端的普及,我国移动用户不断增加。基于此,文章对安卓终端的SQLite数据库进行简单介绍,以网盘存储的安全研究为主,分别从身份认证、访问控制模块、网盘的设计与实现和SQLite数据库加密等方面,进一步提升SQLite数据库的网盘存储安全性。

[关键词] 安卓终端;SQLite数据库;网盘储存;安全

doi : 10 . 3969 / j . issn . 1673 - 0194 . 2020. 15. 082

[中图分类号] TP311    [文献标识码]  A      [文章编号]  1673 - 0194(2020)15- 0197- 02

1      基于安卓终端的SQLite数据库介绍

SQLite是一款通过C语言编写的开放嵌入式数据库,符合ACID中的关系型数据库管理系统。SQLite数据库具有所占内容小、运行效率高的特点,是现在安卓终端设备常用的数据库,其由公共接口、虚拟机、后端与编译器系统等部分组成。其中公共接口主要是通过SQLite C API组成,其中很多脚本语言或者程序,都是利用SQLite与接口交互;而编译器系统则由分析器、代码生成器与分组器组成,其中分组器与分析器先检测执行的语句,然后将其转变为方便基层处理的数据结构,接着将这种数据结构传递给代码生成器进行后续处理,并产生虚拟机,继续执行汇编代码;虚拟机也叫虚拟数据库引擎,此是SQLite数据库的关键内容,负责解释执行字节;后端的主要作用是管理数据,并借助OS Interface分享页面信息[1]。

2      基于安卓终端的SQLite数据库网盘存储安全的实现

2.1   身份认证

增强SQLite数据库网盘储存的安全性,最先从身份认证方案的实现入手,具体包括身份认证与密钥形成两部分内容。

2.1.1   身份认证

第一,系统中调出sqlite3_open_v2()的函数,并根据提示分别输入用户名与口令。第二,系统继续调取函数,并分析其中带有的参数,如用户名、口令等。第三,用户在函数下,通过查找用户名的形式,观看其是否在用户信息体系中的属性列表中。如果存在,继续下一步。如果不存在,系统直接退出页面,结束访问。第四,结合密钥生成的过程,用户在输入口令的时候,还需关注运算后产生的数值。第五,对于查询系统,用户有密钥文件中的密钥K。第六,系统调用checkPassword()函数中判断K0和K的关系,若两者相等,则证明身份认证成功,成功进入数据库,若两者不相等,直接退出访问。

2.1.2   密钥生成规则函数

数据库进入过程中的身份验证,需要比较两个数值,如K0和K,K0表示用户登录数据库中输入的口令,经过密钥生成规则的数值;K则是用户最早注册,设置口令时产生的密钥值,图1为密钥生成规律函数下的算法代码[2]。其中,用户输入口令之后,通过密钥生成规律,进行密钥计算,系统通过函数提示录入手机IMEI码,接着将其与站用户输入口令拼接,再加入Sale值,进行MD5散列,最终得到上百位不可逆推的密钥。

2.2   访问控制模块

用户在终端登录SQLite数据库的时候,系统经过对其进行身份验证后,就会对用户角色进行划分,可以是一种,也可是多种,并在多种角色下,尽量增强角色权限。例如方位控制阶段,系统会读取用户的权限与角色类别,判断其是否具有操作权限。用户身份验证成功后,系统调用钩子函数授权回调函数。其中的回调函数有三类返回值,分别为允许操作、拒绝操作与允许操作中摒弃不授权的操作。然后通过调用函数,按照用户的角色,检测是否有进行SQL语句操作权限。验证结果如果是有权限,则允许操作,若没有就终止请求。查找权限表的代码图只需系统对用户进行角色判断,就可知道是否具有执行权限。若权限码type的值为1-5,表示系統执行的是符合用户需求的操作;若权限码type的值为6-10,表示系统执行的是删除的操作;若权限码type的值为11-15,表示系统执行对应SQL语句操作:若用户的角色中没有type,则表示无对应操作权限。

2.3   网盘的设计与实现

SQLite数据库网盘的使用客户,可通过客户端注册登录与检索下载。SQLite数据库服务器对信息的储存是以密文形式,要想解密,需要的密钥在本地安卓终端上,以此防止云服务过程中产生的安全威胁。打开SQLite数据库客户端,输入账号密码后,用户持合法身份进入主界面,并点击其中的多种功能,上传文件空间,系统程序自动打开SQLite接口,进入安全模块,系统验证访问者身份。待权限控制模块认证成功后,SQLite数据库内部的文件就可上传[3]。安卓终端中的本地SQLite安全加强模块中的密文,通过云端或者网盘,上传到服务器终端。文件上传前,就已经有很多数据被加密,以密文的形式存在于服务端,防止资料信息在传递或者保存的时候,被黑客攻击并窃取。本文关于网盘的存储安全,主要就是通过密文形式,通过数据库安全模块,将储存在数据库中的数据成功保护。网盘储存模块,有客户端与服务器端两种。

2.3.1   客户端模块

本次研究面向的是安卓终端专用的网盘,其安全性需要在安卓终端处,增加安全机制,保障数据安全后再上传。SQLite数据库的设计也重视终端数据的信息安全。用户先进行简单的注册、登录,然后在数据库中收集信息并下载文件。首先,注册登录系统的设计。SQLite数据库下的网盘存储安全的保证,最先从认证用户身份的合法性开始,通过注册用户名与密码,保证数据库登录的安全性,通过MD5散列后,将与用户名一致的信息上传到服务器,保存用户信息。用户第一次登录账号的时候,在成功后会将个人信息直接上传并保存到服务器的数据库中。若不是首次登录的用户,直接填写用户名与账号即可,待信息与数据库中已有账号相符,验证提交密码的散列值与对应散列值一致,则表示登录成功,否则会出现“对不起,您提交的信息无效”的提示。

接着实现注册登录功能,安卓终端中的SQLite数据库与其他应用程序相同,带配置完开发环境后,就构建安全网盘工程,并在安卓终端资源目录中,完成多个页面的UI设计,并存入项目所处的图片与多种格式等资源,并在JAVA文件中完成页面的布局。开发过程中需连接网络,并在AndroidManifest.xml中注册授权,对于SQLite数据库客户端中页面的设计,需有登录页面、注册页面与上传下载页面。用户首次登录时在登录页面注册账号,自己输入账号与密码,注册成功后对密码进行MD5散列,多种数值一同保存。注册页面上需要有:“注册”提示;输入用户名、密码、确定密码;体现注册信息、退出。

文件加密上传功能的设计,用户文件上传时需点击“上传文件”按钮,并回调打开函数接口,完成数据库的权限认证,并在制定的用户文件中提去本地密钥,加密所选上传文件。加密结束后就可在SQLite数据库日志中增加密文信息,并上传密文。此处可以借助Socket的方法完成客户端与服务器端的通信。

2.3.2   服务端模块

SQLite数据库中服务端模块的设计,先从数据表开始,服务端作为数据库中关键部分,记录用户的信息、上传下载文件信息等内容。用户初次注册成功后,网络服务端就会增加一条用户信息,往往通过CountID当作用户的ID标识,用于登录时设置名称,由服务端确定该用户是否存在于数据库中,若存在,接着对比密码散列值与用户输入密码散列后得到的值,以此提升口令安全性。以FileID文件标识为例,任意一个上传到服务端的文件,都有独立的ID号,通过FileID设置主键增强。并根据Sourceid判断文件是否初次上传,若该数值为空,则表示初次上传。安卓终端中,服务端与客户端相同,都通过创建对象,完成客户端与服务器的连接。可通过SocketServer.java文件,结合客户端发来的信息,确定文件是否初次上传、是否是断点续传、是否上传成功等,并将正确信息传输给客户端。

2.4   SQLite数据库加密

2.4.1   加密思路

安卓终端上的源码十分复杂,整体范围庞大,加密SQLite数据库的时候,若直接在安卓源码中修改SQLite源码,后期调试就会变得困难,且使用效率低。所以需要将SQLite源码先从安卓原生系统中分离,然后独立进行修改,以此优化AES算法加密效果。SQLite源码中增添加密与权限认证功能之后,就可再放入到原生系统中,完成加密接口与应用层的衔接,使系统开发技术人员在应用层中能快速调用SQLite加密API,并编写安卓源码,最终构建SQLite数据库安全系统。

2.4.2   加密方案的实现

安卓系统中所有SQLite源码的路径为:external/sqlite/dist,加密方案实现中,将SQLite源码提取。SQLite数据库官方源码中,包括几个加密系统,要想实现SQLite的加密功能,实际上就是实现几个函数。增加SQLite加解密功能的流程为:第一,在slite3.c文件中的开始部分,增加SQLITE_HAS_CODEC宏定义,启动SQLite数据库中的加解密功能。第二,在SQLite數据库定义文件中添加函数。创建加密结构体,将临时需要用的节目过程储存,并对于其中用到的页数据信息、密钥和B-tree指针等信息数值,并释放临时变量函数。第三,编写加密函数,优化原先的AES-128加解密算法,并植入SQLite数据库中。第四,编写新函数,连接进入数据库的读写操作与加解密功能。保证数据库每次被打开的时候,都会进行一次加解密操作。系统函数中往往蕴含多个数据库的信息,且需要通过变量数据明确需要具体的加密或者解密,将Codec变量作为加解密的密钥,可借助其他变量,释放函数。

3      结    论

经过对安卓终端SQLite数据库模块的加强与对网盘储存安全的实现进行阐述,从用户身份认证角度出发,配合数据加密与访问控制等形式,完成对SQLite数据库网盘存储安全的加强,使SQLite数据库网盘储存信息的安全性得到保障,进而避免信息在传输过程中受到恶意攻击,加强对安卓终端用户隐私的保护。

主要参考文献

[1]汪坤.SQLite数据库在Android平台下的加密设计[J].电子技术与软件工程,2020(3):210-212.

[2]何文才,马鹏斐,刘培鹤,等.基于Android平台的SQLite数据库加密研究[J].计算机应用与软件,2019,36(10):310-315,333.

[3]徐志扬,杨玉志,查晓俊,等.基于Android的医疗设备管理软件离线后数据的处理方法[J].中国医疗设备,2019,34(4):123-126.

猜你喜欢
安全
热电公司发电机励磁系统改造
浅谈计算机硬件实验室管理
中国民航HUD的应用和发展浅析