一种Android SQLite数据库安全增强、安全操作方法以及装置制造方法及图纸

技术编号:19745963 阅读:39 留言:0更新日期:2018-12-12 04:52
本发明专利技术公开了一种Android SQLite数据库安全增强、安全操作方法以及装置,属于计算机安全技术领域。该方法提出一种Android SQLite数据库的安全增强方法,包括:加密Sqlcipher.jar,其中,Sqlcipher.jar包括对SQLite的数据库操作;创建目标动态库,其中,目标动态库中包括对Sqlcipher.jar中的数据库操作的封装;加密Libsqlcipher.so,其中,Libsqlcipher.so包括对SQLite的数据库的加/解密。另外,还提出一种适用于上述数据库安全增强方法的数据库的安全操作方法。本发明专利技术能够在采用Sqlcipher对SQLite数据库进行加密的情况下,进一步增强Android SQLite数据库操作的安全性。

【技术实现步骤摘要】
一种AndroidSQLite数据库安全增强、安全操作方法以及装置
本专利技术涉及计算机安全
,具体涉及SQLite数据库安全增强、安全操作方法以及装置。
技术介绍
Android是目前市场上最流行的智能手机操作系统,进而吸引了越来越多的人关注Android操作系统破解,想要获取用户的敏感数据。越来越多应用选择把用户数据存储在数据库中,SQLite是一款Android内置的轻量级的关系型数据库,具有运行速度快,占用资源小的特点,但是内置SQLite数据库是没有加密的。如果被人获取应用的数据库文件,则可以使用普通的数据库工具读取,进而会引发安全严重的安全问题。Sqlcipher是一个在SQLite基础之上进行扩展的开源数据库,非常适合嵌入式应用的数据库保护,适用于移动开发。因此,为了保护数据,目前很多android应用同时使用了Sqlcipher加密数据库,用来保护用户的敏感数据。然而通过实践和逆向分析发现,Sqlcipher等相关的数据库保护方法同样存在着一些安全问题,主要原因为以下几点:1、Sqlcipher实现代码是开源的,加密算法可知,只需要获取数据库的密码就可以解密数据库,进而获取到数据库中的敏感数据,而密码可以通过静态或动态分析,或者HOOK方式获取;2、Sqlcipher在处理数据库数据的时,通过函数传入密码后打开数据库后,返回一个数据库在内存中的类地址,通过类地址即可操作数据库,可通过静态或动态分析,或者HOOK方式获取到该类地址,即在不知道密码的情况下也可以操作数据库,从而获取数据库的数据。
技术实现思路
为了克服如上的技术问题,本专利技术提出一种AndroidSQLite数据库安全增强、安全操作方法以及装置,能够在采用Sqlcipher对SQLite数据库进行加密的情况下,进一步增强AndroidSQLite数据库操作的安全性。本专利技术采用的技术方案如下:第一方面,提出一种AndroidSQLite数据库的安全增强方法,包括:加密Sqlcipher.jar,其中,Sqlcipher.jar包括对SQLite的数据库操作;创建目标动态库,其中,目标动态库中包括对Sqlcipher.jar中的数据库操作的封装;加密Libsqlcipher.so,其中,Libsqlcipher.so包括对SQLite的数据库的加/解密。进一步地,在加密Sqlcipher.jar的同时,还可以对Sqlcipher.jar中的函数进行代码抽取加密保存。更进一步地,还可以绑定数据库文件密码和创建数据库文件的系统。第二方面,提出一种适用于上述数据库安全增强方法的数据库的安全操作方法,包括:当目标动态库对数据库进行操作时,S1,对Sqlcipher.jar进行解密;S2,判断Sqlcipher.jar的完整性值是否正确,若正确,转到S3,若不正确,转到S7;S3,加载Sqlcipher.jar;S4,解密Libsqlcipher.so;S5,判断Libsqlcipher.so的完整性值是否正确,若正确,转到S6,若不正确,转到S7;S6,加载Libsqlcipher.so;S7,操作结束。第三方面,提供一种具有AndroidSQLite数据库的计算机装置,包括处理器和存储器,存储器存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器执行以实现如第一方面和第二方面的所述的AndroidSQLite数据库的安全增强方法以及适用于上述安全增强方法的数据库的安全操作方法。第四方面,提供一种计算机可读存储介质,存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器执行以实现如第一方面和第二方面的所述的AndroidSQLite数据库的安全增强方法以及适用于上述安全增强方法的数据库的安全操作方法。本专利技术提供的技术方案带来的有益效果是:针对目前在采用Sqlcipher对SQLite数据库进行加密的情况下,存在的数据库密码和数据库数据仍然可能被恶意获取的安全问题,本专利技术第一方面,通过对Sqlcipher.jar中的数据操作进行封装,创建目标动态库,第二方面,对进行数据库操作的Sqlcipher.jar进行加密,第三方面,对数据库进行加/解密的Libsqlcipher.so进行加密,通过将数据库操作行为封装后,达到隐藏数据库类地址的目的,使得外界无法轻易通过获取数据库类地址的手段来访问数据库,另外,通过对Sqlcipher.jar和Libsqlcipher.so进行加密,进一步增加了数据库破解的难度。因此,本专利技术所提出的AndroidSQLite数据库安全增强或数据安全操作方法能够在采用Sqlcipher对SQLite数据库进行加密的情况下,进一步增强AndroidSQLite数据库操作的安全性。附图说明图1所示为应用程序使用Sqlcipher加/解密数据库的示意框图;图2所示为一种AndroidSQLite数据库的安全增强方法的示意框图;图3中示出了一种AndroidSQLite数据库的安全操作方法实施例流程图;图4示出了本专利技术一种具有AndroidSQLite数据库的计算机装置结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方案作进一步地详细描述。Sqlcipher是一个在SQLite基础之上进行扩展的开源数据库,Sqlcipher支持很多种不同的平台,它主要是在SQLite的基础之上增加了数据加密功能,能够增加存储数据的安全性。图1所示为在android平台上的应用程序使用Sqlcipher加密数据库的示意框图,包括应用程序101、Sqlcipher.jar102、Libsqlcipher.so103以及File.db104中。应用程序101是在android平台上进行开发的应用程序,File.db104是指sqlite数据库文件,应用程序101需要在File.db104中存储数据信息。当Sqlcipher工具包被引入到具体项目中后,包括Sqlcipher.jar102、Libsqlcipher.so103等文件,其中,Sqlcipher.jar102主要处理对数据库的操作,其需要依赖Libsqlcipher.so103,因为Libsqlcipher.so103主要包括对数据库文件File.db104进行加/解密。如图2所示为一种AndroidSQLite数据库的安全增强方法的示意框图,包括:在步骤201中,加密Sqlcipher.jar,其中,Sqlcipher.jar包括对SQLite的数据库操作;在应用程序中引入的Sqlcipher.jar包括对SQLite的数据库操作,外界可通过Hook方式获取Sqlcipher.jar在访问数据库时返回的数据库类地址,通过数据库类地址就能直接操作数据库中的数据,这里的Hook实现方式为在函数调用前或者后面进行挂钩,插入需要相应的操作,比如获取参数值、变更参数值和主动调用函数。在一种可能的操作中,在应用程序编译生成时,对Sqlcipher.jar进行加密,同时生成Sqlcipher.jar的完整性值,保存在应用程序的安装包中。目标动态本文档来自技高网...

【技术保护点】
1.一种Android SQLite数据库的安全增强方法,其特征在于,包括:加密Sqlcipher.jar,其中,所述Sqlcipher.jar包括对SQLite的数据库操作;创建目标动态库,其中,所述目标动态库中包括对Sqlcipher.jar中的数据库操作的封装;加密Libsqlcipher.so,其中,所述Libsqlcipher.so包括对SQLite的数据库的加/解密。

【技术特征摘要】
1.一种AndroidSQLite数据库的安全增强方法,其特征在于,包括:加密Sqlcipher.jar,其中,所述Sqlcipher.jar包括对SQLite的数据库操作;创建目标动态库,其中,所述目标动态库中包括对Sqlcipher.jar中的数据库操作的封装;加密Libsqlcipher.so,其中,所述Libsqlcipher.so包括对SQLite的数据库的加/解密。2.根据权利要求1所述,其特征在于,所述加密Sqlcipher.jar,其中,所述Sqlcipher.jar包括对SQLite的数据库操作,还包括:对Sqlcipher.jar中的函数进行代码抽取加密保存。3.根据权利要求1所述,其特征在于,还包括:绑定数据库文件密码和创建所述数据库文件的系统。4.根据权利要求1所述,其特征在于,所述加密Sqlcipher.jar,其中,所述Sqlcipher.jar包括对SQLite的数据库操作,同时还包括:生成并保存Sqlcipher.jar的完整性值。5.根据权利要求1所述,其特征在于,加密Libsqlcipher.so,其中,所述Libsqlcipher.so包括对SQLite的数据库的加/解密,同时还包括:生成并保存Libsqlcipher.so的完整性值。6.一种适用于如权利要求1-5任一所述的安全增强方法的数据库的安全操作方法,其特征在于,包括:当所述...

【专利技术属性】
技术研发人员:兰书俊孙奕苏玉海蔡阿川
申请(专利权)人:厦门市美亚柏科信息股份有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1