CN112131595B - 一种SQLite数据库文件安全存取方法及装置 - Google Patents

一种SQLite数据库文件安全存取方法及装置 Download PDF

Info

Publication number
CN112131595B
CN112131595B CN202011062918.0A CN202011062918A CN112131595B CN 112131595 B CN112131595 B CN 112131595B CN 202011062918 A CN202011062918 A CN 202011062918A CN 112131595 B CN112131595 B CN 112131595B
Authority
CN
China
Prior art keywords
sqlite database
file
page
key
encryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011062918.0A
Other languages
English (en)
Other versions
CN112131595A (zh
Inventor
杨飞
廖正赟
张彦斗
王超
江淋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Xinda Jiean Information Technology Co Ltd
Original Assignee
Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhengzhou Xinda Jiean Information Technology Co Ltd filed Critical Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority to CN202011062918.0A priority Critical patent/CN112131595B/zh
Publication of CN112131595A publication Critical patent/CN112131595A/zh
Application granted granted Critical
Publication of CN112131595B publication Critical patent/CN112131595B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries

Abstract

本发明提出了一种SQLite数据库文件安全存取方法及装置,其中,方法包括:在第一次使用SQLite时调用硬件密码模块生成原始加密密钥,并使用提供的SM1算法及设备主密钥,加密原始密钥后存储与硬件密码模块,后续使用时通过检测硬件密码模块是否插入并进行PIN码校验后,在写SQLite数据库文件时,计算所述SQLite数据库文件存储结构第一页的16字节盐值,将生成的原始密钥与所述盐值按位与后,进行三次PBKDF2‑HMAC‑SM3运算,生成最终的SQLite数据库文件加密密钥,然后调用最终的数据库加密密钥对所述待SQLite数据库的文件内容逐页进行加密,并使用HMAC‑SM3算法生成SQLite数据库每页密文的消息校验码,通过该校验码,在加密数据文件解密时,进行SQLite数据库密文完整性验证。

Description

一种SQLite数据库文件安全存取方法及装置
技术领域
本发明涉及嵌入式数据库领域,尤其涉及一种SQLite数据库文件安全存取方法及装置。
背景技术
SQLite是嵌入式轻量数据库,被Android及PC应用广泛使用、也是Android系统、Chrome、金石等浏览器内置数据库,它是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,不需要在系统中配置。
原生的免费版SQLite有一个致命缺点:不支持加密,导致存储在SQLite中的数据可以被任何人用任何文本编辑器查看到,收费版SQLite以及通过SQLite提供的加密的接口实现加密的开源类软件,实现了基于国际标准算法DES、SHA512等的加密数据库,但是算法实现为纯软件实现,存在一定的安全风险,密钥的生成与存储也无硬件保护,密钥存在很大的泄漏风险,通过静态分析、动态调试或者HOOK技术可以拿到密钥,因此基于国际标准算法实现的收费或者开源加密数据库SQLite有很大安全风险,容易造成数据泄露或数据被篡改。
发明内容
为了解决上述问题,有必要提供基于商用密码算法实现的一种SQLite数据库文件安全存取方法及装置。
本发明第一方面提出一种SQLite数据库文件安全存取方法,所述方法包括以下步骤:
应用程序加载并打开SQLite数据库;
检测是否插入硬件密码模块,如是则进行PIN码校验,否则继续检测;
PIN码校验成功后,从所述硬件密码模块密钥存储区域获取key,将获取的key设置为SQLite数据库文件加密密钥;
若为首次使用SQLite数据库,先调用所述硬件密码模块提供的随机数接口生成16字节随机数作为原始密钥,将原始密钥通过所述硬件密码模块提供的SM1对称密码算法及设备主密钥加密,生成原始密钥密文作为key存储于所述硬件密码模块的密钥存储区域;
在写SQLite数据库文件时,调用SQLite数据库文件加密密钥,对SQLite数据库的写入文件内容逐页进行加密,生成加密数据文件,其中,加密数据文件中的文件头和reserved字段不进行加密;
若待加密SQLite数据库文件的页数为第一页,则先计算所述SQLite数据库文件第一页的16字节盐值,调用所述硬件密码模块对key进行解密获取原始密钥,将原始密钥与所述16字节盐值按位相与后,再进行三次PBKDF2-HMAC-SM3运算,生成SQLite数据库文件加密密钥;
执行加密后,使用SQLite数据库文件加密密钥及SQLite数据库文件的每页加密密文,进行HMAC-SM3杂凑运算,获取加密数据文件每页的密文消息认证码,填充在page尾部。
基于上述,还包括以下步骤:
获取待解密的SQLite数据库加密文件,使用SQLite数据库文件加密密钥及SQLite数据库文件的每页加密密文,进行HMAC-SM3杂凑运算,获取待验证的密文消息认证码,将该待验证的密文消息认证码与page尾部的密文消息认证码进行比对,若一致,则在读取SQLite数据库文件时,调用SQLite数据库文件加密密钥对待解密的SQLite数据库加密文件内容逐页进行解密,获得原始的SQLite数据库文件内容;
否则抛出异常。
基于上述,所述杂凑运算方法均为硬件密码模块提供的SM3算法。
基于上述,对SQLite数据库的写入文件内容逐页进行加密时,通过调用硬件密码模块提供的SM4算法进行数据加密。
基于上述,对待解密的SQLite数据库加密文件内容逐页进行解密时,通过调用硬件密码模块提供的SM4算法进行数据解密。
本发明第二方面提供了一种SQLite数据库文件安全存取装置,包括嵌入式SQLite数据库、接口单元以及硬件密码模块,其中,
所述SQLite数据库通过所述接口单元使用所述硬件密码模块;
所述接口单元包括硬件密码模块检测单元和硬件密码模块调用单元;
所述硬件密码模块检测单元,用于检测是否插入所述硬件密码模块;
所述硬件密码模块调用单元,用于调用所述硬件密码模块;
所述硬件密码模块包括设备密钥存储单元、随机数生成单元、加解密单元和加密密钥存储单元;
所述设备密钥保存单元,用于保存所述硬件密码模块的设备主密钥;
所述随机数生成单元,用于生成16字节随机数作为原始密钥;
所述加解密单元内置加密算法和杂凑算法,用于加密密钥的生成以及加密数据文件的加解密;
所述加密密钥保存单元用于保存SQLite数据库文件加密密钥;
当检测到硬件密码模块插入,所述SQLite数据库通过所述硬件密码模块调用单元,调用所述硬件密码模块进行PIN码校验,校验成功后,从所述加密密钥保存单元获取key,将获取的key设置为SQLite数据库文件加密密钥;
若为首次使用SQLite数据库,所述SQLite数据库通过所述硬件密码模块调用单元,调用所述硬件密码模块的随机数生成单元,生成16字节随机数作为原始密钥;调用所述加解密单元将原始密钥通过SM1对称密码算法及设备主密钥加密,生成原始密钥密文作为key存储于所述加密密钥保存单元;
在写SQLite数据库文件时,所述SQLite数据库通过所述硬件密码模块调用单元,调用所述加解密单元使用SQLite数据库文件加密密钥对SQLite数据库的写入文件内容逐页进行加密,生成加密数据文件存储于所述加密密钥保存单元,其中,加密数据文件中的文件头和reserved字段不进行加密;
若待加密SQLite数据库文件的页数为第一页,则先计算所述SQLite数据库文件第一页的16字节盐值,调用所述加解密单元对key进行解密获取原始密钥,将原始密钥与所述16字节盐值按位相与后,再进行三次PBKDF2-HMAC-SM3运算,生成SQLite数据库文件加密密钥;
执行加密后,调用所述加解密单元使用SQLite数据库文件加密密钥及SQLite数据库文件的每页加密密文,进行HMAC-SM3杂凑运算,获取加密数据文件每页的密文消息认证码,填充在page尾部。
基于上述,获取待解密的SQLite数据库加密文件后,调用所述加解密单元使用SQLite数据库文件加密密钥及SQLite数据库文件的每页加密密文,进行HMAC-SM3杂凑运算,获取待验证的密文消息认证码,将该待验证的密文消息认证码与page尾部的密文消息认证码进行比对,若一致,则在读取SQLite数据库文件时,调用SQLite数据库文件加密密钥对待解密的SQLite数据库加密文件内容逐页进行解密,获得原始的SQLite数据库文件内容;
否则抛出异常。
基于上述,所述杂凑运算方法均为硬件密码模块提供的SM3算法。
基于上述,对SQLite数据库的写入文件内容逐页进行加密时,通过调用所述加解密单元提供的SM4算法进行数据加密。
基于上述,对待解密的SQLite数据库加密文件内容逐页进行解密时,通过调用所述加解密单元提供的SM4算法进行数据解密。
本发明通过的有益效果:
1)本发明基于硬件密码模块提供的安全功能,实现了SQLite数据库的密钥生成、密钥存储与数据库加密存储,且密钥等敏感参数受硬件密码模块PIN码保护;
2)本发明基于商用密码体系算法SM1、SM3、SM4、HMAC-SM3、PBKDF2-HMAC-SM3,实现了SQLite数据库加密与完整性保护,相对于国际标准算法具有更高的安全性;
3)本发明密钥与生成的salt混合后,进行三次PBKDF2-HMAC-SM3算法得到最终的数据库加密密钥,对密钥进行多重保护,原始密钥存储在硬件密码模块,攻击者无法拿到,因此任何时候攻击者都无法还原密文;
4)本发明通过最终的数据库加密密钥以及HMAC-SM3算法,计算数据库加密密文消息验证码,对数据库密文进行完整性保护,避免了数据库密文文件遭到篡改后引发的数据安全问题。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明所述安全存储方法的流程图;
图2示出了本发明所述安全存储装置的组成示意图;
图3示出了本发明所述安全存储装置的硬件密码模块接口的组成示意图;
图4示出了本发明所述安全存储装置的硬件密码模块的组成示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
本发明第一方面提出一种SQLite数据库文件安全存取方法,采用基于硬件密码模块实现的SQLite数据库文件安全存取方法,其架构图可参考图2,具体方法流程可参考图1。
如图1所述,本发明提供的方法首先用于生成SQLite数据库文件加密密钥以及生成加密数据文件,所述方法包括如下步骤:
S1,应用程序加载SQLite数据库。
S2,打开所述SQLite数据库;如果数据库不存在,则默认创建一个新的SQLite数据库。
S3,检测是否插入硬件密码模块,如是则进行S4,否则重复步骤S3;其中,所述硬件密码模块可以嵌入PC或移动设备,也可以通过外部物理接口与PC或移动设备进行连接。硬件密码模块可以是安全芯片、UKEY、TF贴膜卡等。
S4,判断是否为首次使用所述SQLite数据库,如是则进行步骤S5,否则转步骤S6。
S5,调用所述硬件密码模块提供的随机数接口生成16字节随机数作为原始密钥,将原始密钥通过所述硬件密码模块提供的SM1对称密码算法及设备主密钥加密,生成原始密钥密文作为key存储于所述硬件密码模块的密钥存储区域。
S6,从所述硬件密码模块获取所述key,将所述key设置为SQLite数据库文件加密密钥;其中,可以从硬件密码模块获取所述key中的密钥,密钥既可以是进一步加密生成其他密钥的参数,如步骤S5中生成的原始密钥,也可以是加解密直接调用的密钥,如步骤S8中生成的SQLite数据库文件加密密钥,key仅提供向外部读取密钥的接口,更进一步地,当需要重置密钥时,key中的密钥可以通过人工或自动的方式植入新的密钥。
S7,判断待加密SQLite数据库文件的页数是否为第一页,如是则进行步骤S8,否则转入步骤S9。在SQLite主数据库文件包括了1个以上的页,页的大小是2的幂,可以从512到65536,同一个数据库中的所有页的大小是一样的,页大小在数据库文件偏移16个字节的地方定义。
S8,计算所述SQLite数据库文件第一页的盐值,具体为通过杂凑算法生成16个字节的salt,并存储在数据库第一页的头部(SQLite3的db文件,头部前16个字节固定为SQLite 3 format,所以可以利用文件头来存储一些数据);然后调用硬件密码模块对步骤S6中的key进行解密获取所述原始密钥,将所述原始密钥与所述盐值混合后进行多次杂凑运算,生成最终的SQLite数据库文件加密密钥,并将其作为key保存于程序运行内存中;需要说明的是,在未覆盖保存之前,key中保存的可能是通过随机数生成接口生成的原始密钥密文,在覆盖保存之后,key中保存的是最终的SQLite数据库文件加密密钥,该密钥也是密文形式;
S9,调用S8中生成的SQLite数据库文件最终的加密密钥对所述SQLite数据库的文件内容逐页进行加密,生成加密数据文件,其中,所述加密数据文件密文中的文件头和reserved字段不进行加密,只需要加密有效的内容即可;
S10,执行加密后,对所述加密数据文件进行SM3杂凑运算,获取所述加密数据文件的文件校验码,填充在page尾部,需要说明的是,SQLite3提供了reserved字段,自动在page尾部预留一段空间,因此可以在尾部填充信息。
进一步地,所述方法还包括SQLite数据库加密数据文件的解密,所述SQLite数据库加密数据文件的解密方法包括如下步骤:
S11,获取待解密的SQLite数据库加密文件;
S12,对所述加密数据文件进行杂凑运算,获取所述加密数据文件的文件校验码,将所述文件校验码与page尾部的文件校验码进行比对,判断二者是否一致,如是则转步骤S13,否则抛出异常,通过文件校验码可以对文件进行完整性验证,在文件被篡改后及时发现并进行预警;
S13,调用SQLite数据库文件最终的key对所述待解密的SQLite数据库的文件内容逐页进行解密,获得原始的SQLite数据库文件,其中,所述key为步骤S8中生成的最终的SQLite数据库文件加密密钥。
进一步地,所述硬件密码模块为安全芯片,所述原始密钥密文为所述安全芯片运用SM1算法及设备主密钥经过加密运算得出的。
进一步地,所述步骤S9中使用SM4算法对SQLite数据库的文件内容逐页进行加密,所述步骤S13中使用SM4算法对SQLite数据库的文件内容逐页进行解密。
进一步地,所述步骤S8、S10、S12中使用的杂凑运算方法均为SM3算法。
进一步地,所述步骤S9中,通过pager_write_pagelist接口调用CODE2函数进行数据加密,所述步骤S3中,通过readDbPage接口调用CODEC1函数进行数据解密,执行时所述CODEC1函数和所述CODE2函数均指向SQLite3Codec完成最终的数据加解密。
本发明的第二方面提供一种SQLite数据库文件安全存取装置,采用如上所述的思路实现的SQLite数据库文件安全存取方法,如图2所示,所述装置包括操作系统、部署在操作系统中的SQLite数据库、接口单元以及硬件密码模块,其中,
作为一个嵌入式数据库,本发明提供的基于硬件密码模块以及其提供的商用密码算法实现的SQLite数据库供其他APP加载使用,或浏览器、Android系统内置数据库实现,支持Windows、Linux、Android、IOS、中标麒麟、金石等系统;
所述SQLite数据库可通过所述接口单元使用所述硬件密码模块,具体地,硬件密码模块提供的安全功能包括但不限于密钥生成、存储以及多种商用密码算法运算服务,还提供随机数生成,密钥、证书及文件存储,基于PIN码机制校验用户身份、硬件密码模块提供的安全功能受PIN码保护;
所述接口单元包括硬件密码模块检测单元和硬件密码模块调用单元;具体结构可参考图3,所述硬件密码模块检测单元,用于检测是否插入硬件密码模块并调用硬件密码模块调用单元;所述硬件密码模块调用单元,用于调用硬件密码模块进行pin码校验、获取所述硬件密码模块传入的key,并调用所述硬件密码模块的算法生成最终的SQLite数据库文件加密密钥,以及用于根据具体情况向硬件密码模块下达文件加解密命令或校验命令,获取所述硬件密码模块处理后的数据并进行保存;
如图4所示,所述硬件密码模块包括设备密钥保存单元、随机数生成单元、加解密单元和加密密钥保存单元;所述设备密钥保存单元,用于保存所述硬件密码模块的设备主密钥;所述随机数生成单元,用于生成原始密钥;所述加解密单元内置加密算法和杂凑算法,用于加密密钥的生成以及数据文件的加解密;所述加密密钥保存单元用于保存最终的SQLite数据库文件加密密钥。
需要说明的是,SQLite数据库使用Pager来管理存储页面,Pager模块预留了三个函数指针,分别为xCodec(核心函数,负责Page的加解密,初始化过程中SQLite3CodecAttach会将该函数指针指向内部函数SQLite3Codec),xCodeSizeChng(page大小变化的回调),xCodecFree(释放函数),同时预留了指针pCodec用于保存加解密的上下文即SQLite3Codec。本发明通过硬件密码模块提供的SM4算法实现加解密函数。所述加解密单元在加密时通过pager_write_pagelist接口调用CODE2函数进行数据加密,在解密时通过readDbPage接口调用CODEC1函数进行数据解密,执行时所述CODEC1函数和所述CODE2函数均指向SQLite3Codec完成最终的数据加解密,主要通过传入的加解密类型参数来控制,Page模块调用此函数时会传入需加解密的数据库数据及Page页数等信息。
进一步地,所述硬件密码模块的加密算法和杂凑算法包括SM1/SM4对称密码算法、SM2非对称密码算法和SM3杂凑算法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种SQLite数据库文件安全存取方法,其特征在于,所述方法包括以下步骤:
应用程序加载并打开SQLite数据库;
检测是否插入硬件密码模块,如是则进行PIN码校验,否则继续检测;
PIN码校验成功后,从所述硬件密码模块密钥存储区域获取key,将获取的key设置为SQLite数据库文件加密密钥;
若为首次使用SQLite数据库,先调用所述硬件密码模块提供的随机数接口生成16字节随机数作为原始密钥,将原始密钥通过所述硬件密码模块提供的SM1对称密码算法及设备主密钥加密,生成原始密钥密文作为key存储于所述硬件密码模块的密钥存储区域;
在写SQLite数据库文件时,调用SQLite数据库文件加密密钥,对SQLite数据库的写入文件内容逐页进行加密,生成加密数据文件,其中,加密数据文件中的文件头和reserved字段不进行加密;
若待加密SQLite数据库文件的页数为第一页,则先计算所述SQLite数据库文件第一页的16字节盐值,调用所述硬件密码模块对key进行解密获取原始密钥,将原始密钥与所述16字节盐值按位相与后,再进行三次PBKDF2-HMAC-SM3运算,生成SQLite数据库文件加密密钥;
执行加密后,使用SQLite数据库文件加密密钥及SQLite数据库文件的每页加密密文,进行HMAC-SM3杂凑运算,获取加密数据文件每页的密文消息认证码,填充在page尾部。
2.根据权利要求1所述的SQLite数据库文件安全存取方法,其特征在于,还包括以下步骤:
获取待解密的SQLite数据库加密文件,使用SQLite数据库文件加密密钥及SQLite数据库文件的每页加密密文,进行HMAC-SM3杂凑运算,获取待验证的密文消息认证码,将该待验证的密文消息认证码与page尾部的密文消息认证码进行比对,若一致,则在读取SQLite数据库文件时,调用SQLite数据库文件加密密钥对待解密的SQLite数据库加密文件内容逐页进行解密,获得原始的SQLite数据库文件内容;
否则抛出异常。
3.根据权利要求1或2所述的SQLite数据库文件安全存取方法,其特征在于,所述杂凑运算均为硬件密码模块提供的SM3算法。
4.根据权利要求1或2所述的SQLite数据库文件安全存取方法,其特征在于:对SQLite数据库的写入文件内容逐页进行加密时,通过调用硬件密码模块提供的SM4算法进行数据加密。
5.根据权利要求2所述的SQLite数据库文件安全存取方法,其特征在于:对待解密的SQLite数据库加密文件内容逐页进行解密时,通过调用硬件密码模块提供的SM4算法进行数据解密。
6.一种SQLite数据库文件安全存取装置,其特征在于:包括嵌入式SQLite数据库、接口单元以及硬件密码模块,其中,
所述SQLite数据库通过所述接口单元使用所述硬件密码模块;
所述接口单元包括硬件密码模块检测单元和硬件密码模块调用单元;
所述硬件密码模块检测单元,用于检测是否插入所述硬件密码模块;
所述硬件密码模块调用单元,用于调用所述硬件密码模块;
所述硬件密码模块包括设备密钥存储单元、随机数生成单元、加解密单元和加密密钥存储单元;
所述设备密钥保存单元,用于保存所述硬件密码模块的设备主密钥;
所述随机数生成单元,用于生成16字节随机数作为原始密钥;
所述加解密单元内置加密算法和杂凑算法,用于加密密钥的生成以及加密数据文件的加解密;
所述加密密钥保存单元用于保存SQLite数据库文件加密密钥;
当检测到硬件密码模块插入,所述SQLite数据库通过所述硬件密码模块调用单元,调用所述硬件密码模块进行PIN码校验,校验成功后,从所述加密密钥保存单元获取key,将获取的key设置为SQLite数据库文件加密密钥;
若为首次使用SQLite数据库,所述SQLite数据库通过所述硬件密码模块调用单元,调用所述硬件密码模块的随机数生成单元,生成16字节随机数作为原始密钥;调用所述加解密单元将原始密钥通过SM1对称密码算法及设备主密钥加密,生成原始密钥密文作为key存储于所述加密密钥保存单元;
在写SQLite数据库文件时,所述SQLite数据库通过所述硬件密码模块调用单元,调用所述加解密单元使用SQLite数据库文件加密密钥对SQLite数据库的写入文件内容逐页进行加密,生成加密数据文件存储于所述加密密钥保存单元,其中,加密数据文件中的文件头和reserved字段不进行加密;
若待加密SQLite数据库文件的页数为第一页,则先计算所述SQLite数据库文件第一页的16字节盐值,调用所述加解密单元对key进行解密获取原始密钥,将原始密钥与所述16字节盐值按位相与后,再进行三次PBKDF2-HMAC-SM3运算,生成SQLite数据库文件加密密钥;
执行加密后,调用所述加解密单元使用SQLite数据库文件加密密钥及SQLite数据库文件的每页加密密文,进行HMAC-SM3杂凑运算,获取加密数据文件每页的密文消息认证码,填充在page尾部。
7.根据权利要求6所述的SQLite数据库文件安全存取装置,其特征在于,获取待解密的SQLite数据库加密文件后,调用所述加解密单元使用SQLite数据库文件加密密钥及SQLite数据库文件的每页加密密文,进行HMAC-SM3杂凑运算,获取待验证的密文消息认证码,将该待验证的密文消息认证码与page尾部的密文消息认证码进行比对,若一致,则在读取SQLite数据库文件时,调用SQLite数据库文件加密密钥对待解密的SQLite数据库加密文件内容逐页进行解密,获得原始的SQLite数据库文件内容;
否则抛出异常。
8.根据权利要求6或7所述的SQLite数据库文件安全存取装置,其特征在于,所述杂凑运算均为硬件密码模块提供的SM3算法。
9.根据权利要求6或7所述的SQLite数据库文件安全存取装置,其特征在于:对SQLite数据库的写入文件内容逐页进行加密时,通过调用所述加解密单元提供的SM4算法进行数据加密。
10.根据权利要求9所述的SQLite数据库文件安全存取装置,其特征在于:对待解密的SQLite数据库加密文件内容逐页进行解密时,通过调用所述加解密单元提供的SM4算法进行数据解密。
CN202011062918.0A 2020-09-30 2020-09-30 一种SQLite数据库文件安全存取方法及装置 Active CN112131595B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011062918.0A CN112131595B (zh) 2020-09-30 2020-09-30 一种SQLite数据库文件安全存取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011062918.0A CN112131595B (zh) 2020-09-30 2020-09-30 一种SQLite数据库文件安全存取方法及装置

Publications (2)

Publication Number Publication Date
CN112131595A CN112131595A (zh) 2020-12-25
CN112131595B true CN112131595B (zh) 2022-03-15

Family

ID=73843599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011062918.0A Active CN112131595B (zh) 2020-09-30 2020-09-30 一种SQLite数据库文件安全存取方法及装置

Country Status (1)

Country Link
CN (1) CN112131595B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113014380B (zh) * 2021-02-08 2022-12-27 深圳市亿图软件有限公司 文件数据的密码管理方法、装置、计算机设备及存储介质
CN114915416A (zh) * 2022-04-20 2022-08-16 中金金融认证中心有限公司 用于对文件进行加密的方法、解密验证的方法及相关产品
CN115277112A (zh) * 2022-07-07 2022-11-01 海南视联通信技术有限公司 数据处理方法、装置、电子设备及存储介质
CN116305193B (zh) * 2023-02-10 2024-01-26 广州通则康威科技股份有限公司 一种加密配置文件生成方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101504706A (zh) * 2009-03-03 2009-08-12 中国科学院软件研究所 数据库信息加密方法和系统
CN103279715A (zh) * 2013-05-22 2013-09-04 李凤华 数据库数据加解密方法及装置
CN104601820A (zh) * 2015-01-29 2015-05-06 成都三零瑞通移动通信有限公司 一种基于tf密码卡的手机终端信息保护方法
CN104636444A (zh) * 2015-01-13 2015-05-20 大唐移动通信设备有限公司 一种数据库的加解密方法及装置
EP3599568A1 (en) * 2018-07-27 2020-01-29 Interactive Media Corp. Systems and methods for providing secure database interface systems within an ecrypted device system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101504706A (zh) * 2009-03-03 2009-08-12 中国科学院软件研究所 数据库信息加密方法和系统
CN103279715A (zh) * 2013-05-22 2013-09-04 李凤华 数据库数据加解密方法及装置
CN104636444A (zh) * 2015-01-13 2015-05-20 大唐移动通信设备有限公司 一种数据库的加解密方法及装置
CN104601820A (zh) * 2015-01-29 2015-05-06 成都三零瑞通移动通信有限公司 一种基于tf密码卡的手机终端信息保护方法
EP3599568A1 (en) * 2018-07-27 2020-01-29 Interactive Media Corp. Systems and methods for providing secure database interface systems within an ecrypted device system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SQLite嵌入式数据库如何加密;佚名;《https://www.jiamisoft.com/blog/16441-sqlitejiamiqianrushishujuku.html》;20150309;全文 *
基于SDKEY的安卓手机安全传输技术;黎妹红等;《解放军理工大学学报(自然科学版)》;20150202;第16卷(第2期);全文 *

Also Published As

Publication number Publication date
CN112131595A (zh) 2020-12-25

Similar Documents

Publication Publication Date Title
CN112131595B (zh) 一种SQLite数据库文件安全存取方法及装置
WO2020192406A1 (zh) 数据存储、验证方法及装置
EP2115655B1 (en) Virtual secure on-chip one time programming
US20210294879A1 (en) Securing executable code integrity using auto-derivative key
CN101421739B (zh) 包括bios的系统以及用于bios的方法
EP2434683A1 (en) Electronic device, key generation program, recording medium, and key generation method
US20040093505A1 (en) Open generic tamper resistant CPU and application system thereof
TW200400434A (en) Multi-token seal and unseal
CN109657479B (zh) 数据防泄漏方法及计算机可读存储介质
CN103065082A (zh) 基于Linux系统的软件安全防护方法
CN109190401A (zh) 一种Qemu虚拟可信根的数据存储方法、装置及相关组件
CN111191195A (zh) 一种用于保护apk的方法和装置
CN107508801A (zh) 一种文件防篡改的方法及装置
CN109445705A (zh) 固件认证方法及固态硬盘
WO2023240866A1 (zh) 密码卡及其根密钥保护方法、计算机可读存储介质
CN109981266A (zh) 密钥和敏感信息存储、读取方法及装置
CN105303093A (zh) 智能密码钥匙密码验证方法
WO2020134896A1 (zh) 一种语音合成文件的调用方法及装置
CN114745373A (zh) 一种文件传输方法、装置、设备及存储介质
CN111539042B (zh) 一种基于核心数据文件可信存储的安全操作方法
CN107861892B (zh) 一种实现数据处理的方法及终端
CN111639353B (zh) 一种数据管理方法、装置、嵌入式设备及存储介质
CN110874225B (zh) 一种数据校验方法、装置、嵌入式设备及存储介质
CN109977665A (zh) 基于tpcm的云服务器启动过程防窃取和防篡改方法
CN114091088B (zh) 用于提高通信安全的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Secure Access Method and Device for SQLite Database Files

Effective date of registration: 20230412

Granted publication date: 20220315

Pledgee: China Construction Bank Corporation Zhengzhou Jinshui sub branch

Pledgor: ZHENGZHOU XINDA JIEAN INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2023980037751