CN112580068A - 一种SQLite数据库安全增强方法 - Google Patents

一种SQLite数据库安全增强方法 Download PDF

Info

Publication number
CN112580068A
CN112580068A CN202011369759.9A CN202011369759A CN112580068A CN 112580068 A CN112580068 A CN 112580068A CN 202011369759 A CN202011369759 A CN 202011369759A CN 112580068 A CN112580068 A CN 112580068A
Authority
CN
China
Prior art keywords
page
encryption
sqlite database
crc32
current page
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.)
Granted
Application number
CN202011369759.9A
Other languages
English (en)
Other versions
CN112580068B (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.)
Beijing Beika Technology Co ltd
Original Assignee
Beijing Beika 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 Beijing Beika Technology Co ltd filed Critical Beijing Beika Technology Co ltd
Priority to CN202011369759.9A priority Critical patent/CN112580068B/zh
Publication of CN112580068A publication Critical patent/CN112580068A/zh
Application granted granted Critical
Publication of CN112580068B publication Critical patent/CN112580068B/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种SQLite数据库安全增强方法,在将SQLite数据库文件写入存储介质时触发,具体包括以下步骤:在加密接口的加密函数中增加对BTree页的冗余数据清除功能,在对当前页加密前,先对其执行冗余数据清除操作;利用ZUC和SM3算法实现SQLite数据库的加解密接口函数中的加解密操作。此种方法可在数据库文件被存储到存储介质前对其进行加密,而在加密前先对BTree页执行冗余数据清除操作,能够有效增强数据库的安全性,从而防止用户隐私数据被窃取。

Description

一种SQLite数据库安全增强方法
技术领域
本发明属于数据安全技术领域,特别涉及一种SQLite数据库安全增强方法。
背景技术
SQLite数据库在系统中是以文件的形式存储,在实际应用中,大量的SQLite数据库文件被存储在闪存中。一方面,闪存只能进行擦除、写和读操作,不支持数据的本地更新;另一方面,SQLite提供的API在删除数据时,只删除记录在数据库文件中的记录,并没有彻底清除数据库文件中的记录数据。因此,随着对SQLite数据库进行增、删、改、查操作,数据库文件会在闪存里留下大量的历史痕迹。而这些痕迹给不法分子提供了通过闪存来恢复数据库文件,并进一步窃取用户隐私的可能。
发明内容
本发明的目的,在于提供一种SQLite数据库安全增强方法,其可在数据库文件被存储到存储介质前对其进行加密,而在加密前先对BTree页执行冗余数据清除操作,能够有效增强数据库的安全性,从而防止用户隐私数据被窃取。
为了达成上述目的,本发明的解决方案是:
一种SQLite数据库安全增强方法,在SQLite数据库的加密接口函数中增加实现冗余数据清除的函数,在将SQLite数据库文件写入存储介质时触发加密接口函数,首先对数据库的BTree页进行冗余数据清除操作,然后进行加密操作;加密接口函数的具体工作过程是:
步骤A,在首次对SQLite数据库文件进行写入操作时,获取该SQLite数据库文件的总页数N,加密接口函数在本地建立一个可存储N个crc32值的文件,并对这N个crc32值进行初始化赋值;
步骤B,在对SQLite数据库文件的某一页进行操作时,根据该页的页类型标志判断该页的类型,若为BTree页,则转步骤C;否则不对该页做任何处理,转到下一页重复步骤B;
步骤C,根据本地存储crc32值的文件中当前页对应的crc32值来判断是否为首次对当前页执行冗余数据清除操作,若是第一次执行冗余数据清除操作,则在执行完清除操作后,计算当前页的crc32值并保存在本地;若非第一次执行冗余数据清除操作,则先计算当前页的crc32值,并与保存在本地的当前页的crc32值进行比较:若两者相等则跳过本次的数据清除操作;若不相等,则在执行完数据清除操作后重新计算当前页的crc32值,并用重新计算后的crc32值来更新本地存储的当前页的crc32值;
步骤D,在SQLite源码中添加启动加密扩展的宏定义,然后利用SM3计算加解密密钥,利用ZUC算法实现SQLite数据库加密接口函数中的加密操作和解密接口函数中的解密操作。
上述步骤B中将所有页的第一个字节作为该页的页类型标志,若页类型标志为0X0D、0X05、0X0A、0X02时,则判定当前页为BTree页。
上述步骤C中,冗余数据清除操作的具体过程是:首先,根据SQLite数据库文件格式和当前页的页头数据解析当前页的页面数据;接着,将页面格式信息和存储在当前页面中的单元数据之外的其他数据标记为无效数据;最后,用0X00或随机数覆盖清除数据库中的无效数据。
上述步骤B中,对crc32值赋值为-1;在步骤C中,若从本地文件读取的当前页的crc32值为-1,则为首次操作;若crc32值存在且不为-1,则非首次操作。
上述步骤C中,冗余数据清除操作适用于不大于15.9G的SQLite数据库。
上述步骤D中,加密和解密接口函数中利用ZUC算法对当前页进行加解密时,其密钥为用户输入的密钥与当前待处理页的页号拼接后得到的结果经过SM3算法计算得到的杂凑值,且不对第1页的第17、18字节加密。
采用上述方案后,本发明通过彻底清除SQLite数据库文件BTree页中被删除数据单元,并在将数据库文件存储到存储介质之前,对其进行加密,从而全面提升数据库文件的安全性。在具体实现方式上,一方面,每页的加密密钥由初始密钥和页号共同生成,可以保证每个页面的加密密钥具有差异性,从而增强加密的安全性;另一方面,通过对比crc32值来判别是否需要执行数据清除操作,可以避免对无冗余数据的页面进行操作,提高加密的执行效率。
附图说明
图1是本发明的整体流程图;
图2是本发明中BTree页冗余数据清除流程图。
具体实施方式
以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
如图1所示,本发明提供一种SQLite数据库安全增强方法,用于在将SQLite数据库文件写入存储介质(含更新、删除等操作)时触发,以提高SQLite数据库的安全性,具体包括如下步骤:
步骤1,利用ZUC算法实现SQLite数据库的加密接口,当对SQLite数据库文件进行操作时,则会调用该接口函数,执行后续步骤的操作;
所述步骤1中,页面的加密密钥设置为用户输入的密钥与当前待处理页的页号拼接后得到的结果经过SM3算法计算得到的杂凑值。
步骤2,在加密接口函数中增加页的冗余数据清除功能,在对当前页加密前先对其执行冗余数据清除操作;
本发明的具体应用流程是:
步骤A,当需要对SQLite数据库文件进行操作时,会调用加密接口函数,获取该SQLite数据库文件的总页数N,在本地建立一个可存储N个crc32值的文件,并将这N个crc32值初始化为-1;
步骤B,根据当前页的页类型标志判断当前页的类型,若为BTree页,则转步骤C;否则不对该页做任何处理,转到下一页重复步骤B;
步骤C,根据本地文件中当前页对应的crc32值来判断是否为首次对当前页执行冗余数据清除操作:若crc32值为-1则为首次操作;crc32值为0,则非首次操作。若是第一次执行冗余数据清除操作,则在执行完清除操作后,计算当前页的crc32值并保存在本地;若非第一次执行冗余数据清除操作,则先计算当前页的crc32值,并与保存在本地的当前页的crc32值进行比较:若两者相等则跳过本次的数据清除操作;若不相等,则在执行完数据清除操作后重新计算当前页的crc32值,并用重新计算后的crc32值来更新本地存储的当前页的crc32值;
步骤D,在SQLite源码中添加启动加密扩展的宏定义,然后利用SM3计算加解密密钥,利用ZUC算法实现SQLite数据库加密接口函数中的加密操作和解密接口函数中的解密操作。
所述步骤C中,冗余数据清除操作的具体过程是:首先,根据SQLite数据库文件格式和当前页的页头数据解析当前页的页面数据;接着,将页面格式信息和存储在当前页面中的单元数据之外的其他数据标记为无效数据;最后,用0X00或随机数覆盖清除数据库中的无效数据;
所述步骤C中,冗余数据清除操作适用于不大于15.9G的SQLite数据库。
所述步骤D中,加密和解密接口函数中利用ZUC算法对当前页进行加解密时,其密钥为用户输入的密钥与当前待处理页的页号拼接后得到的结果经过SM3算法计算得到的杂凑值,且不对第1页的第17、18字节加密。
综上所述,本发明提供的冗余数据清除操作在SQLite数据库的加密接口函数中实现,且冗余数据清除操作是在加密接口函数中的加密操作之前执行。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

Claims (7)

1.一种SQLite数据库安全增强方法,其特征在于:在SQLite数据库的加密接口函数中增加实现冗余数据清除的函数,在将SQLite数据库文件写入存储介质时触发加密接口函数,首先对数据库的BTree页进行冗余数据清除操作,然后进行加密操作;加密接口函数的具体工作过程是:
步骤A,在首次对SQLite数据库文件进行写入操作时,获取该SQLite数据库文件的总页数N,加密接口函数在本地建立一个可存储N个crc32值的文件,并对这N个crc32值进行初始化赋值;
步骤B,在对SQLite数据库文件的某一页进行操作时,根据该页的页类型标志判断该页的类型,若为BTree页,则转步骤C;否则不对该页做任何处理,转到下一页重复步骤B;
步骤C,根据本地存储crc32值的文件中当前页对应的crc32值来判断是否为首次对当前页执行冗余数据清除操作,若是第一次执行冗余数据清除操作,则在执行完清除操作后,计算当前页的crc32值并保存在本地;若非第一次执行冗余数据清除操作,则先计算当前页的crc32值,并与保存在本地的当前页的crc32值进行比较:若两者相等则跳过本次的数据清除操作;若不相等,则在执行完数据清除操作后重新计算当前页的crc32值,并用重新计算后的crc32值来更新本地存储的当前页的crc32值;
步骤D,在SQLite源码中添加启动加密扩展的宏定义,然后利用SM3计算加解密密钥,利用ZUC算法实现SQLite数据库加密接口函数中的加密操作和解密接口函数中的解密操作。
2.如权利要求1所述的SQLite数据库安全增强方法,其特征在于:所述步骤B中将所有页的第一个字节作为该页的页类型标志,若页类型标志为0X0D、0X05、0X0A、0X02时,则判定当前页为BTree页。
3.如权利要求1所述的SQLite数据库安全增强方法,其特征在于:所述步骤C中,冗余数据清除操作的具体过程是:首先,根据SQLite数据库文件格式和当前页的页头数据解析当前页的页面数据;接着,将页面格式信息和存储在当前页面中的单元数据之外的其他数据标记为无效数据;最后,用0X00或随机数覆盖清除数据库中的无效数据。
4.如权利要求1所述的SQLite数据库安全增强方法,其特征在于:所述步骤B中,对crc32值赋值为-1;在步骤C中,若从本地文件读取的当前页的crc32值为-1,则为首次操作;若crc32值存在且不为-1,则非首次操作。
5.如权利要求1所述的SQLite数据库安全增强方法,其特征在于:所述步骤C中,冗余数据清除操作适用于不大于15.9G的SQLite数据库。
6.如权利要求1所述的SQLite数据库安全增强方法,其特征在于:所述步骤D中,加密和解密接口函数中利用ZUC算法对当前页进行加解密时,其密钥为用户输入的密钥与当前待处理页的页号拼接后得到的结果经过SM3算法计算得到的杂凑值。
7.如权利要求1所述的SQLite数据库安全增强方法,其特征在于:所述步骤D中,不对数据库第1页中的第17、18字节进行加密。
CN202011369759.9A 2020-11-30 2020-11-30 一种SQLite数据库安全增强方法 Active CN112580068B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011369759.9A CN112580068B (zh) 2020-11-30 2020-11-30 一种SQLite数据库安全增强方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011369759.9A CN112580068B (zh) 2020-11-30 2020-11-30 一种SQLite数据库安全增强方法

Publications (2)

Publication Number Publication Date
CN112580068A true CN112580068A (zh) 2021-03-30
CN112580068B CN112580068B (zh) 2023-05-23

Family

ID=75126369

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011369759.9A Active CN112580068B (zh) 2020-11-30 2020-11-30 一种SQLite数据库安全增强方法

Country Status (1)

Country Link
CN (1) CN112580068B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102883039A (zh) * 2012-07-30 2013-01-16 成都西可科技有限公司 手机多媒体私密日记加密方法
US20150371053A1 (en) * 2014-06-23 2015-12-24 Ivo Welch Anti-identity-theft method and hardware database device
CN105447112A (zh) * 2015-11-12 2016-03-30 国云科技股份有限公司 一种实现关系数据库Hash分区高效扩展的方法
US20160301693A1 (en) * 2015-04-10 2016-10-13 Maxim Nikulin System and method for identifying and protecting sensitive data using client file digital fingerprint
CN108052644A (zh) * 2017-12-22 2018-05-18 深圳大普微电子科技有限公司 数据模式日志文件系统的数据写入方法及系统
CN109583217A (zh) * 2018-11-21 2019-04-05 深圳市易讯天空网络技术有限公司 一种互联网电商平台用户隐私数据加密及解密方法
CN110008757A (zh) * 2019-04-09 2019-07-12 江南大学 一种物联网终端固件更新中数据保护方法及系统
CN111625844A (zh) * 2020-04-17 2020-09-04 国家电网有限公司客户服务中心 调查数据安全加密方法、装置、电子设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102883039A (zh) * 2012-07-30 2013-01-16 成都西可科技有限公司 手机多媒体私密日记加密方法
US20150371053A1 (en) * 2014-06-23 2015-12-24 Ivo Welch Anti-identity-theft method and hardware database device
US20160301693A1 (en) * 2015-04-10 2016-10-13 Maxim Nikulin System and method for identifying and protecting sensitive data using client file digital fingerprint
CN105447112A (zh) * 2015-11-12 2016-03-30 国云科技股份有限公司 一种实现关系数据库Hash分区高效扩展的方法
CN108052644A (zh) * 2017-12-22 2018-05-18 深圳大普微电子科技有限公司 数据模式日志文件系统的数据写入方法及系统
CN109583217A (zh) * 2018-11-21 2019-04-05 深圳市易讯天空网络技术有限公司 一种互联网电商平台用户隐私数据加密及解密方法
CN110008757A (zh) * 2019-04-09 2019-07-12 江南大学 一种物联网终端固件更新中数据保护方法及系统
CN111625844A (zh) * 2020-04-17 2020-09-04 国家电网有限公司客户服务中心 调查数据安全加密方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN112580068B (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
US8117377B2 (en) Flash memory device having secure file deletion function and method for securely deleting flash file
CN101634992B (zh) Ntfs文件系统下轻量级文件加密及其解密恢复方法
US7835518B2 (en) System and method for write failure recovery
CN105426708A (zh) 一种Android系统的应用程序的加固方法
CN103106372A (zh) 用于Android系统的轻量级隐私数据加密方法及系统
CN1801072A (zh) 用于逻辑撕碎存储在worm介质上的数据的系统和方法
JP4869337B2 (ja) データの安全な処理
CN109657497B (zh) 安全文件系统及其方法
US10095635B2 (en) Securing information relating to data compression and encryption in a storage device
JP2007316944A (ja) データ処理装置、データ処理方法、およびデータ処理プログラム
CN111737276B (zh) 一种修改区块链数据的方法和系统
KR100874872B1 (ko) 안전한 갱신을 지원하는 플래시 메모리 기반 보안 2차 저장장치
CN112580068B (zh) 一种SQLite数据库安全增强方法
CN110058820B (zh) 基于固态盘阵列的数据安全写入、删除、读取方法及装置
KR100859651B1 (ko) 가변크기 데이터 저장을 위한 데이터구조를 기록한기록매체, 가변크기 데이터 저장방법, 및 가변크기 데이터저장방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한컴퓨터로 읽을 수 있는 기록매체
KR101467227B1 (ko) Ssd에 적합한 보안 삭제 기능을 가진 패스워드 기반의 암호화 파일 관리 방법 및 이들을 이용한 암호화 파일 관리 시스템
KR20090071348A (ko) 파일 안전 삭제 기능을 갖는 플래시 메모리 장치 및 플래시파일 안전 삭제 방법
US11977518B2 (en) Method and system for data deduplication and compression in untrusted storage system
CN107330340B (zh) 文件加密方法、设备、文件解密方法、设备及存储介质
WO2023073368A1 (en) Methods and systems for secure data storage
CN109324756A (zh) 一种基于固态盘阵列的数据安全删除方法
CN114329568A (zh) 文件加密方法、装置、系统平台及文件解密方法
KR101648262B1 (ko) Ssd에 적합한 보안 삭제 기능을 가진 패스워드 기반의 암호화 파일 관리 방법 및 이들을 이용한 암호화 파일 관리 시스템
Tiwari et al. Secure Wipe Out in BYOD Environment
CN112948879A (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