CN110213051B - 一种目录细粒度的加解密方法和系统 - Google Patents

一种目录细粒度的加解密方法和系统 Download PDF

Info

Publication number
CN110213051B
CN110213051B CN201910483765.8A CN201910483765A CN110213051B CN 110213051 B CN110213051 B CN 110213051B CN 201910483765 A CN201910483765 A CN 201910483765A CN 110213051 B CN110213051 B CN 110213051B
Authority
CN
China
Prior art keywords
password
directory
module
file
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
CN201910483765.8A
Other languages
English (en)
Other versions
CN110213051A (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 CN201910483765.8A priority Critical patent/CN110213051B/zh
Publication of CN110213051A publication Critical patent/CN110213051A/zh
Application granted granted Critical
Publication of CN110213051B publication Critical patent/CN110213051B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提出了一种目录细粒度的加解密方法和系统,所述方法包括:接收用户输入的第一口令密码;判断第一口令密码与预存的第二口令密码是否一致;若一致,则将目录挂载到eCryptfs文件系统上;当用户向目录创建文件时,随机产生一秘钥,使用预存的第二口令密码对秘钥进行加密,得到秘钥密文并将其保存到文件头部;当用户向目录中的文件写数据时,eCryptfs文件系统使用预存的第二口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用秘钥明文对写入数据进行加密,得到数据密文并保存至文件中;一方面用户可以选择想要保护的任何数据,不会限制用户对全盘加密或者某一类型的文件加密;另一方面用户访问明文数据须输入正确的口令密码,提高数据存储的安全性。

Description

一种目录细粒度的加解密方法和系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种目录细粒度的加解密方法和系统。
背景技术
在当前信息爆炸式增长的时代,数据的安全性越来越受到人们的重视。常用的保护用户数据的方法是对数据加密,使用的时候对数据解密。在具体应用中又分为以下两类,一类是文件加密后,只有被信任的应用程序能够访问;另一类是系统对整个磁盘进行加密,开机时通过密码或硬件设备(TCM芯片)得到秘钥,并将秘钥插入内核,用户访问数据时文件系统层对数据解密。
以上两种方案存在如下问题:方案一只对指定文件格式的内容加密,如果加密软件没有设置对.mak格式的文件进行加密的话,那么用户如果把含有源代码内容的文件存储为.mak文件,加密软件不会加密,这就有可能造成源代码的泄露;方案二采用透明加解密技术,一旦系统内核加载了秘钥,任何对磁盘文件的访问都是明文的,也就是说磁盘文件可以随时以明文状态被拷贝出去,造成数据泄露。
发明内容
为了解决上述至少一个技术问题,本发明提出了一种目录细粒度的加解密方法和系统。
为了实现上述目的,本发明第一方面提出一种目录细粒度的加解密方法,包括:
接收用户输入的第一口令密码;
判断所述第一口令密码与预存的第二口令密码是否一致;
若一致,则将目录挂载到eCryptfs文件系统上;
当用户向所述目录创建文件时,随机产生一秘钥,使用预存的第二口令密码对所述秘钥进行加密,得到秘钥密文并将其保存到文件头部;
当用户向所述目录中的文件写数据时,所述eCryptfs文件系统使用预存的第二口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对写入数据进行加密,得到数据密文并保存至所述文件中;和/或
当用户读取所述目录中的数据密文时,所述eCryptfs文件系统使用用户提供的第一口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对数据密文进行解密,得到对应的数据明文。
本方案中,在接收用户输入的第一口令密码之前,还包括:
接收用户创建加解密目录的请求指令;
根据请求指令,反馈要求用户输入口令密码的提示信息;
接收用户输入的第二口令密码,对所述第二口令密码执行散列函数处理,得到散列值并预存入数据库中,将所述目录挂载到eCryptfs文件系统上;
待挂载成功后,将所述目录从所述eCryptfs文件系统上卸载。
本方案中,随机产生一秘钥,使用预存的第二口令密码对所述秘钥进行加密,得到秘钥密文并将其保存到文件头部,包括:
由内核keystore模块随机产生一秘钥明文;
根据所述第二口令密码的散列值,并使用对称密钥加密算法加密所述秘钥明文,以得到所述秘钥密文;
将所述秘钥密文传入内核并保存到文件的头部。
进一步的,所述eCryptfs文件系统使用用户提供的第一口令密码对文件头部的秘钥密文进行解密,包括:
当用户打开挂载在eCryptfs文件系统的文件时,通过物理文件系统读取所述文件的头部数据并取出所述秘钥密文;
对用户提供的第一口令密码进行散列函数处理,得到散列值,并经由内核的keystore模块根据所述第一口令密码的散列值对所述秘钥密文进行解密,以得到秘钥明文;
调用kernel crypt API传入所述秘钥明文至所述eCryptfs文件系统,以对所述文件的数据进行加解密。
本方案中,所述目录细粒度的加解密方法是在UI模块、系统服务模块、数据库模块的基础上实现的,在接收用户输入的第一口令密码之前,所述UI模块、所述系统服务模块、所述数据库模块分别执行:
所述系统服务模块收到所述UI模块的创建保密箱请求后,对所述第二口令密码进行散列函数处理得到一个token,并将其以sig字段的形式插入数据库模块中;
将所述保密箱对应的目录挂载到eCryptfs文件系统上,其中,所述保密箱与对应的目录一一对应设置;
待挂载成功后,所述系统服务模块调用数据库模块的接口将所述保密箱信息插入到所述数据库模块;
将所述保密箱对应的目录卸载。
进一步的,在将目录挂载到eCryptfs文件系统上时,所述UI模块、所述系统服务模块、所述数据库模块分别执行:
所述系统服务模块收到UI模块的打开保密箱请求后,首先对所述口令密码进行散列函数处理得到一个token;
将所述第一口令密码的token与所述数据库模块里保存的sig字段比较;
如果不一致,返回给UI模块密码错误的错误码并终止操作;
如果一致,则将所述第一口令密码的token插入到内核,并将所述保密箱的目录挂载到eCryptfs文件系统上,并调用所述数据库模块的接口更新所述保密箱的状态为打开状态。
进一步的,所述目录细粒度的加解密方法具体还包括:
所述系统服务模块收到UI模块的关闭保密箱请求后,对所述保密箱对应的目录执行卸载操作,并移除挂载时插入内核的秘钥;
调用所述数据库模块的接口更新所述保密箱的状态为关闭状态。
进一步的,所述目录细粒度的加解密方法具体还包括:
所述系统服务模块收到UI模块的重命名保密箱请求后,对所述第一口令密码进行散列函数处理得到一个token;
将所述第一口令密码的token与所述数据库模块里保存的sig字段比较;
如果不一致,返回给UI模块密码错误的错误码并终止操作;
如果一致,则检查新的保密箱名称是否被使用,若未使用,则调用所述数据库模块的接口更新所述保密箱的name字段。
进一步的,所述目录细粒度的加解密方法具体还包括:
所述系统服务模块收到UI模块的解除保密箱请求后,对所述第一口令密码进行散列函数处理得到一个token;
将所述第一口令密码的token与所述数据库模块里保存的sig字段比较;
如果不一致,返回给UI模块密码错误的错误码并终止操作;
如果一致,则首先删除所述保密箱对应的目录,然后调用所述数据库模块的接口将所述保密箱的信息从所述数据库模块中删除。
本发明第二方面还提出一种目录细粒度的加解密系统,所述目录细粒度的加解密系统包括:存储器及处理器,所述存储器中包括一种目录细粒度的加解密方法程序,所述目录细粒度的加解密方法程序被所述处理器执行时,实现如上述的一种目录细粒度的加解密方法的步骤。
本发明通过接收用户输入的第一口令密码;判断所述第一口令密码与预存的第二口令密码是否一致;若一致,则将所述目录挂载到eCryptfs文件系统上;当用户向所述目录创建文件时,随机产生一秘钥,使用预存的第二口令密码对所述秘钥进行加密,得到秘钥密文并将其保存到文件头部;当用户向所述目录中的文件写数据时,所述eCryptfs文件系统使用预存的第二口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对写入数据进行加密,得到数据密文并保存至所述文件中;和/或当用户读取所述目录中的数据密文时,所述eCryptfs文件系统使用用户提供的第一口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对数据密文进行解密,得到对应的数据明文。一方面,用户可以选择想要保护的任何数据,不会限制用户对全盘加密或者某一类型的文件加密,从而节省了加解密的开销;另一方面,用户要想访问明文数据必须要输入正确的口令密码,大大提高了数据存储的安全性。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明一种目录细粒度的加解密方法的流程图;
图2示出了本发明的秘钥生成和保存方法的流程图;
图3示出了本发明一种eCryptfs文件系统的架构图;
图4示出了本发明基于eCryptfs文件系统的加解密操作流程图;
图5示出了本发明UI模块可视化交互界面的框图;
图6示出了本发明挂载eCryptfs文件系统的操作流程图;
图7示出了本发明卸载eCryptfs文件系统的操作流程图;
图8示出了本发明创建保密箱的流程图;
图9示出了本发明打开保密箱的流程图;
图10示出了本发明关闭保密箱的流程图;
图11示出了本发明重命名保密箱的流程图;
图12示出了本发明解除保密箱的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出本发明一种目录细粒度的加解密方法的流程图。
如图1所示,本发明第一方面提出一种目录细粒度的加解密方法,包括:
S101,接收用户输入的第一口令密码;
S102,判断所述第一口令密码与预存的第二口令密码是否一致;
S103,若一致,则将目录挂载到eCryptfs文件系统上;
S104,当用户向所述目录创建文件时,随机产生一秘钥,使用预存的第二口令密码对所述秘钥进行加密,得到秘钥密文并将其保存到文件头部;
S105,当用户向所述目录中的文件写数据时,所述eCryptfs文件系统使用预存的第二口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对写入数据进行加密,得到数据密文并保存至所述文件中;和/或
S106,当用户读取所述目录中的数据密文时,所述eCryptfs文件系统使用用户提供的第一口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对数据密文进行解密,得到对应的数据明文。
需要说明的是,上述步骤S102之后还包括:
若不一致,则所述目录无法挂载到eCryptfs文件系统上,且目录下的所有文件将以密文的形式呈现给用户。
根据本发明的实施例,在接收用户输入的第一口令密码之前,还包括:
接收用户创建加解密目录的请求指令;
根据请求指令,反馈要求用户输入口令密码的提示信息;
接收用户输入的第二口令密码,对所述第二口令密码执行散列函数处理,得到散列值并预存入数据库中,将所述目录挂载到eCryptfs文件系统上;
待挂载成功后,将所述目录从所述eCryptfs文件系统上卸载。
图2示出本发明的秘钥生成和保存方法的流程图。
如图2所示,随机产生一秘钥,使用预存的第二口令密码对所述秘钥进行加密,得到秘钥密文并将其保存到文件头部,包括:
S201,由内核keystore模块随机产生一秘钥明文;
S202,根据所述第二口令密码的散列值,并使用对称密钥加密算法加密所述秘钥明文,以得到所述秘钥密文;
S203,将所述秘钥密文传入内核并保存到文件的头部。
根据本发明的实施例,在将所述秘钥密文传入内核并保存到文件的头部之后,当用户打开挂载在eCryptfs文件系统的文件时,所述eCryptfs文件系统使用用户提供的第一口令密码对文件头部的秘钥密文进行解密,包括:
通过物理文件系统读取所述文件的头部数据并取出所述秘钥密文;
对用户提供的第一口令密码进行散列函数处理,得到散列值,并经由内核的keystore模块根据所述第一口令密码的散列值对所述秘钥密文进行解密,以得到秘钥明文;
调用kernel crypt API传入所述秘钥明文至所述eCryptfs文件系统,以对所述文件的数据进行加解密。
可以理解,本发明提出一种以目录为单位的加解密方法,用户将私密数据放到该目录中,并对数据加密。具体的,该方法利用内核eCryptfs 文件系统技术,当目录以eCryptfs文件系统挂载时,要求用户输入口令密码;挂载成功后,当用户向所述目录创建文件时,内核keystore模块随机产生一秘钥,使用预存的第二口令密码对所述秘钥进行加密,得到秘钥密文并将其保存到文件头部,当用户读取所述目录中的数据密文时,所述eCryptfs文件系统使用用户提供的第一口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对数据密文进行解密,因此用户能够看到数据的明文,此时相当于对目录里的数据解密了,当用户往文件写数据时,所述eCryptfs文件系统使用用户提供的第一口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对写入数据进行加密,并写入物理文件系统中;当卸载掉该目录的eCryptfs文件系统时,移除挂载时插入内核的秘钥,这时用户访问该目录的数据时,因为没有正确的秘钥所以访问到的是密文。本发明中,可以把挂载和卸载eCryptfs文件系统的操作形象的比喻成打开和关闭保密箱。
如图3所示,eCryptfs插在VFS(虚拟文件系统层)和下层物理文件系统(如ext2、ext3等)之间,充当一个过滤器的角色。用户应用程序对加密文件的写请求,经系统调用层到达VFS层,VFS转给eCryptfs文件系统组件处理,处理完毕后,再转给下层物理文件系统;读请求流程则相反。
如图4所示,eCryptfs分两步来加密单个文件,首先使用一种对称密钥加密算法(如AES算法、DES算法等)来加密文件的内容,秘钥FEK(File Encryption Key)随机产生;其次,FEK不能以明文的形式存放,因此eCryptfs使用用户提供的口令密码(Passphrase)、公开密钥算法(如RSA算法等)或TCM(Trusted Cryptography Module)的公钥来加密保护FEK。优选的,可以使用预存的第二口令密码来加密FEK。首先,对第二口令密码执行散列函数处理,得到散列值,然后再使用一种对称密钥算法加密FEK。口令密码被称为FEKEK(FileEncryption Key Encryption Key),加密后的FEK则称为EFEK(Encrypted FileEncryption Key),EFEK被保存到文件的头部。
用户打开挂载了eCryptfs文件系统的文件时,通过物理文件系统(如ext2等)读取该文件的头部元数据,取出EFEK,使用用户提供的第一口令密码,并经由内核的keystore模块对EFEK解密,解密后EFEK就是对文件内容加解密时使用的秘钥FEK,调用kernel cryptAPI传入FEK就能对文件数据解密了,用户此时看到的就是数据的明文;用户向文件写数据时,调用kernel crypt API对数据进行加密,并写入磁盘。
需要说明的是,eCryptfs-utils提供了eCryptfs文件系统应用层的开发库和帮助工具,通过接口生成加密秘钥并插入内核。
根据本发明的实施例,所述目录细粒度的加解密方法是在UI模块、系统服务模块、数据库模块的基础上实现的,在接收用户输入的第一口令密码之前,所述UI模块、所述系统服务模块、所述数据库模块分别执行:
所述系统服务模块收到所述UI模块的创建保密箱请求后,对所述第二口令密码进行散列函数处理得到一个token,并将其以sig字段的形式插入数据库模块中;
将所述保密箱对应的目录挂载到eCryptfs文件系统上,其中,所述保密箱与对应的目录一一对应设置;
待挂载成功后,所述系统服务模块调用数据库模块的接口将所述保密箱信息插入到所述数据库模块;
将所述保密箱对应的目录卸载。
进一步的,在将目录挂载到eCryptfs文件系统上时,所述UI模块、所述系统服务模块、所述数据库模块分别执行:
所述系统服务模块收到UI模块的打开保密箱请求后,首先对所述第一口令密码进行散列函数处理得到一个token;
将所述第一口令密码的token与所述数据库模块里保存的sig字段比较;
如果不一致,返回给UI模块密码错误的错误码并终止操作;
如果一致,则将所述第一口令密码的token插入到内核,并将所述保密箱的目录挂载到eCryptfs文件系统上,并调用所述数据库模块的接口更新所述保密箱的状态为打开状态。
进一步的,所述目录细粒度的加解密方法具体还包括:
所述系统服务模块收到UI模块的关闭保密箱请求后,对所述保密箱对应的目录执行卸载操作,并移除挂载时插入内核的秘钥;
调用所述数据库模块的接口更新所述保密箱的状态为关闭状态。
进一步的,所述目录细粒度的加解密方法具体还包括:
所述系统服务模块收到UI模块的重命名保密箱请求后,对所述第一口令密码进行散列函数处理得到一个token;
将所述第一口令密码的token与所述数据库模块里保存的sig字段比较;
如果不一致,返回给UI模块密码错误的错误码并终止操作;
如果一致,则检查新的保密箱名称是否被使用,若未使用,则调用所述数据库模块的接口更新所述保密箱的name字段。
进一步的,所述目录细粒度的加解密方法具体还包括:
所述系统服务模块收到UI模块的解除保密箱请求后,对所述第一口令密码进行散列函数处理得到一个token;
将所述第一口令密码的token与所述数据库模块里保存的sig字段比较;
如果不一致,返回给UI模块密码错误的错误码并终止操作;
如果一致,则首先删除所述保密箱对应的目录,然后调用所述数据库模块的接口将所述保密箱的信息从所述数据库模块中删除。
本发明第二方面还提出一种目录细粒度的加解密系统,所述目录细粒度的加解密系统包括:存储器及处理器,所述存储器中包括一种目录细粒度的加解密方法程序,所述目录细粒度的加解密方法程序被所述处理器执行时,实现如上述的一种目录细粒度的加解密方法的步骤。
为了更好的解释本发明的技术方案,下面将通过一实施例进行详细说明。
本实施例的系统架构设计包括UI模块、系统服务模块、数据库模块三部分。其中,UI模块提供用户可视化交互界面,给用户提供操作安全保密箱的入口,同时显示当前安全保密箱的状态,该模块通过DBus总线与系统服务模块通信,由系统服务模块完成对安全保密箱的操作;系统服务模块负责监听UI模块的请求,处理请求,并更新数据库模块;数据库模块则提供访问数据库的 API接口。各个模块的具体设计如下所示。
UI模块设计
UI模块可视化交互界面如图5所示。交互界面包括两部分:第一部分(图示最上面一行)是控制面板,包括创建保密箱、开启保密箱、解除保密箱、重命名保密箱;第二部分是紧邻着控制面板的安全保密箱的显示区,该区域中显示当前账户下所有创建的安全保密箱的名称、修改时间以及状态列表,其中状态列是可点击的按钮,能够对当前行的保密箱进行打开和关闭操作。在当前保密箱打开的状态,鼠标右键当前行保密箱可以打开保密箱目录,以便用户访问安全保密箱里的数据。
UI模块实现对安全保密箱的创建、打开、关闭、重命名、解除五大功能。
创建保密箱时,首先提示用户输入安全保密箱名称,并检查名称是否有重复;然后提示用户输入密码,密码复杂度由Linux-PAM模块控制,名称和密码输入成功后,会在当前登录用户的~/secbox目录下创建‘name-time’格式的目录;最后通过DBus远程调用,通知系统服务模块创建保密箱。
打开保密箱时,选中保密箱名称后点击‘开启保密箱’按钮或者通过状态列的按钮打开保密箱,最终通过DBus远程调用,通知系统服务模块打开保密箱。
关闭保密箱时,通过状态列的按钮关闭保密箱,最终通过DBus远程调用,通知系统服务模块关闭保密箱。
解除保密箱时,要求用户输入密码,密码验证成功后,最终通过DBus远程调用,通知系统服务模块解除保密箱。
重命名保密箱时,首先选中保密箱名称,然后点击‘重命名保密箱’按钮,紧接着提示用户输入保密箱密码,密码验证成功后,要求用户输入新保密箱的名字,最终通过DBus远程调用,通知系统服务模块重命名保密箱。
系统服务模块设计
系统服务模块为安全保密箱UI模块提供服务。UI模块通过RPC(远程过程调用)调用系统服务模块的函数完成相关功能。同时,系统服务模块还负责更新数据库模块、保密箱目录权限管理等。
本发明对文件的加解密是通过eCryptfs文件系统层来实现的,所以安全保密箱的打开与关闭就是对相应目录执行挂载和卸载eCryptfs文件系统的操作。挂载eCryptfs文件系统的流程如图6所示。卸载eCryptfs文件系统的流程如图7所示。
远程调用接口创建保密箱时,系统服务模块收到UI模块的创建保密箱请求后,通过对第二口令密码进行hash处理得到一个token,也就是数据库模块里存放的sig,并将它插入数据库模块中,然后将该保密箱对应的目录挂载到eCryptfs文件系统,挂载成功后,系统服务模块调用数据库模块的接口将保密箱信息插入到数据库,然后将该保密箱对应的目录卸载。最后将创建的保密箱对应的目录进行权限控制,新创建成功的保密箱处于关闭状态,关闭状态下的保密箱目录受多级安全访问控制权限的管控,关闭状态下禁止任何用户访问该目录。创建保密箱流程如图8所示。
远程调用接口打开保密箱时,系统服务模块收到UI模块的打开保密箱请求后,首先对第一口令密码进行hash处理得到一个token,将第一口令密码的token与数据库里保存的sig字段比较,如果不一致,返回给UI模块密码错误的错误码并终止操作;如果token与sig一致,则将所述第一口令密码的token插入到内核,并将该保密箱的目录挂载到eCryptfs文件系统上,然后调用数据库模块的接口更新保密箱的状态为打开状态,最后对该保密箱对应的目录进行权限控制,打开成功的保密箱允许当前用户访问。打开保密箱的流程如图9所示。
远程调用接口关闭保密箱时,系统服务模块收到UI模块的关闭保密箱请求后,首先对该保密箱对应的目录执行卸载操作,然后调用数据库模块的接口更新保密箱的状态为关闭状态。最后对该保密箱对应的目录进行权限控制,关闭状态下的保密箱目录受多级安全访问控制权限的管控,关闭状态下禁止任何用户访问该目录。关闭保密箱的流程如图10所示。
远程调用接口重命名保密箱时,系统服务模块收到UI模块的重命名保密箱请求后,首先对第一口令密码进行hash处理得到一个token,将所述第一口令密码的token与数据库里保存的sig字段比较,如果不一致,返回给UI模块密码错误的错误码并终止操作;如果token与sig一致,则检查新的保密箱名称是否被使用,如果未使用则调用数据库模块的接口更新保密箱的name字段。重命名保密箱的流程如图11所示。
远程调用接口解除保密箱时,系统服务模块收到UI模块的解除保密箱请求后,首先对第一口令密码进行hash处理得到一个token,将所述第一口令密码的token与数据库里保存的sig字段比较,如果不一致,返回给UI模块密码错误的错误码并终止操作;如果token与sig一致,则首先删除该保密箱对应的目录,然后调用数据库模块的接口将该保密箱的信息从数据库中删除,解除保密箱的流程如图12所示。
可以理解,本发明所述sig字段的内容即是对第二口令密码执行散列函数处理得到的散列值(哈希值)。
远程调用接口获取保密箱信息时,UI模块在执行完上述操作时都会向系统服务模块发送获取保密箱信息的请求,以更新系统UI模块的显示区。系统服务模块收到UI模块的获取保密箱信息请求后,将当前用户下的所有保密箱信息返回给UI模块并显示在显示区。
系统服务模块每次对保密箱操作成功后,都会更新数据库来保存保密箱信息。
系统服务模块负责对每个账户创建的安全保密箱目录进行权限管理,当安全保密箱处于关闭状态下时,通过权限控制用户禁止访问该保密箱对应的目录;当安全保密箱被打开时,再次给用户访问该保密箱对应目录的权限。权限管理使用基于多级安全的访问控制特性实现,该特性能够赋予每一个目录除自主访问控制之外的访问权限。
数据库模块设计
数据库模块提供了访问sqlite3轻量级数据库的接口,包括增、删、改、查等,实时保存保密箱的状态信息。数据库受到SELinux访问权限的控制,只有系统服务模块能够访问数据库文件。数据库模块中设计有secbox_table表,其具体结构如下表1所示。
Figure DEST_PATH_IMAGE001
本发明通过接收用户输入的第一口令密码;判断所述第一口令密码与预存的第二口令密码是否一致;若一致,则将所述目录挂载到eCryptfs文件系统上;当用户向所述目录创建文件时,随机产生一秘钥,使用预存的第二口令密码对所述秘钥进行加密,得到秘钥密文并将其保存到文件头部;当用户向所述目录中的文件写数据时,所述eCryptfs文件系统使用预存的第二口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对写入数据进行加密,得到数据密文并保存至所述文件中;和/或当用户读取所述目录中的数据密文时,所述eCryptfs文件系统使用用户提供的第一口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对数据密文进行解密,得到对应的数据明文。一方面,用户可以选择想要保护的任何数据,不会限制用户对全盘加密或者某一类型的文件加密,从而节省了加解密的开销;另一方面,用户要想访问明文数据必须要输入正确的口令密码,大大提高了数据存储的安全性。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种目录细粒度的加解密方法,其特征在于,包括:
接收用户输入的第一口令密码;
判断所述第一口令密码与预存的第二口令密码是否一致;
若一致,则将目录挂载到eCryptfs文件系统上;
当用户向所述目录创建文件时,随机产生一秘钥,使用预存的第二口令密码对所述秘钥进行加密,得到秘钥密文并将其保存到文件头部;
当用户向所述目录中的文件写数据时,所述eCryptfs文件系统使用预存的第二口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对写入数据进行加密,得到数据密文并保存至所述文件中;和/或
当用户读取所述目录中的数据密文时,所述eCryptfs文件系统使用用户提供的第一口令密码对文件头部的秘钥密文进行解密,得到秘钥明文,用所述秘钥明文对数据密文进行解密,得到对应的数据明文。
2.根据权利要求1所述的目录细粒度的加解密方法,其特征在于,在接收用户输入的第一口令密码之前,还包括:
接收用户创建加解密目录的请求指令;
根据请求指令,反馈要求用户输入口令密码的提示信息;
接收用户输入的第二口令密码,对所述第二口令密码执行散列函数处理,得到散列值并预存入数据库中,将所述目录挂载到eCryptfs文件系统上;
待挂载成功后,将所述目录从所述eCryptfs文件系统上卸载。
3.根据权利要求2所述的目录细粒度的加解密方法,其特征在于,随机产生一秘钥,使用预存的第二口令密码对所述秘钥进行加密,得到秘钥密文并将其保存到文件头部,包括:
由内核keystore模块随机产生一秘钥明文;
根据所述第二口令密码的散列值,并使用对称密钥加密算法加密所述秘钥明文,以得到所述秘钥密文;
将所述秘钥密文传入内核并保存到文件的头部。
4.根据权利要求3所述的目录细粒度的加解密方法,其特征在于,所述eCryptfs文件系统使用用户提供的第一口令密码对文件头部的秘钥密文进行解密,包括:
通过物理文件系统读取所述文件的头部数据并取出所述秘钥密文;
对用户提供的第一口令密码进行散列函数处理,得到散列值,并经由内核的keystore模块根据所述第一口令密码的散列值对所述秘钥密文进行解密,以得到秘钥明文;
调用kernel crypt API传入所述秘钥明文至所述eCryptfs文件系统,以对所述文件的数据进行加解密。
5.根据权利要求1所述的目录细粒度的加解密方法,其特征在于,所述目录细粒度的加解密方法是在UI模块、系统服务模块、数据库模块的基础上实现的,在接收用户输入的第一口令密码之前,所述UI模块、所述系统服务模块、所述数据库模块分别执行:
所述系统服务模块收到所述UI模块的创建保密箱请求后,对所述第二口令密码进行散列函数处理得到一个token,并将其以sig字段的形式插入数据库模块中;
将所述保密箱对应的目录挂载到eCryptfs文件系统上,其中,所述保密箱与对应的目录一一对应设置;
待挂载成功后,所述系统服务模块调用数据库模块的接口将所述保密箱信息插入到所述数据库模块;
将所述保密箱对应的目录卸载。
6.根据权利要求5所述的目录细粒度的加解密方法,其特征在于,在将目录挂载到eCryptfs文件系统上时,所述UI模块、所述系统服务模块、所述数据库模块分别执行:
所述系统服务模块收到UI模块的打开保密箱请求后,首先对所述第一口令密码进行散列函数处理得到一个token;
将所述第一口令密码的token与所述数据库模块里保存的sig字段比较;
如果不一致,返回给UI模块密码错误的错误码并终止操作;
如果一致,则将所述第一口令密码的token插入到内核,并将所述保密箱的目录挂载到eCryptfs文件系统上,并调用所述数据库模块的接口更新所述保密箱的状态为打开状态。
7.根据权利要求5所述的目录细粒度的加解密方法,其特征在于,所述目录细粒度的加解密方法具体还包括:
所述系统服务模块收到UI模块的关闭保密箱请求后,对所述保密箱对应的目录执行卸载操作,并移除挂载时插入内核的秘钥;
调用所述数据库模块的接口更新所述保密箱的状态为关闭状态。
8.根据权利要求5所述的目录细粒度的加解密方法,其特征在于,所述目录细粒度的加解密方法具体还包括:
所述系统服务模块收到UI模块的重命名保密箱请求后,对所述第一口令密码进行散列函数处理得到一个token;
将所述第一口令密码的token与所述数据库模块里保存的sig字段比较;
如果不一致,返回给UI模块密码错误的错误码并终止操作;
如果一致,则检查新的保密箱名称是否被使用,若未使用,则调用所述数据库模块的接口更新所述保密箱的name字段。
9.根据权利要求5所述的目录细粒度的加解密方法,其特征在于,所述目录细粒度的加解密方法具体还包括:
所述系统服务模块收到UI模块的解除保密箱请求后,对所述第一口令密码进行散列函数处理得到一个token;
将所述第一口令密码的token与所述数据库模块里保存的sig字段比较;
如果不一致,返回给UI模块密码错误的错误码并终止操作;
如果一致,则首先删除所述保密箱对应的目录,然后调用所述数据库模块的接口将所述保密箱的信息从所述数据库模块中删除。
10.一种目录细粒度的加解密系统,其特征在于,所述目录细粒度的加解密系统包括:存储器及处理器,所述存储器中包括一种目录细粒度的加解密方法程序,所述目录细粒度的加解密方法程序被所述处理器执行时,实现如权利要求1至9中任一项所述的一种目录细粒度的加解密方法的步骤。
CN201910483765.8A 2019-06-05 2019-06-05 一种目录细粒度的加解密方法和系统 Active CN110213051B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910483765.8A CN110213051B (zh) 2019-06-05 2019-06-05 一种目录细粒度的加解密方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910483765.8A CN110213051B (zh) 2019-06-05 2019-06-05 一种目录细粒度的加解密方法和系统

Publications (2)

Publication Number Publication Date
CN110213051A CN110213051A (zh) 2019-09-06
CN110213051B true CN110213051B (zh) 2021-11-19

Family

ID=67790768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910483765.8A Active CN110213051B (zh) 2019-06-05 2019-06-05 一种目录细粒度的加解密方法和系统

Country Status (1)

Country Link
CN (1) CN110213051B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110677465B (zh) * 2019-09-09 2022-11-22 北京信安世纪科技股份有限公司 一种分布式锁的控制方法及装置
CN112115492B (zh) * 2020-08-21 2024-06-11 麒麟软件有限公司 一种基于Linux操作系统的用户数据加密隔离方法及系统
CN112395629A (zh) * 2020-11-23 2021-02-23 中标软件有限公司 一种基于tcm芯片的文件加密方法及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010056541A1 (en) * 2000-05-11 2001-12-27 Natsume Matsuzaki File management apparatus
US20050193195A1 (en) * 2004-02-27 2005-09-01 Foquest Advanced, Inc. Method and system for protecting data of storage unit
CN102567688B (zh) * 2011-11-30 2015-05-20 中标软件有限公司 一种安卓操作系统上的文件保密系统及其保密方法
CN103425938B (zh) * 2013-08-01 2016-04-27 亚太宝龙科技(湖南)有限公司 一种类Unix操作系统的文件夹加密方法和装置

Also Published As

Publication number Publication date
CN110213051A (zh) 2019-09-06

Similar Documents

Publication Publication Date Title
CA2253585C (en) Cryptographic file labeling system for supporting secured access by multiple users
US7639819B2 (en) Method and apparatus for using an external security device to secure data in a database
US6081893A (en) System for supporting secured log-in of multiple users into a plurality of computers using combined presentation of memorized password and transportable passport record
US9070112B2 (en) Method and system for securing documents on a remote shared storage resource
US7111005B1 (en) Method and apparatus for automatic database encryption
JP4902207B2 (ja) ファイルの暗号化と復号化のための複数のキーを管理するシステムと方法
KR100749867B1 (ko) 보안장치상에 암호화시스템을 보안가능하게 설치하는시스템 및 방법
CN110213051B (zh) 一种目录细粒度的加解密方法和系统
US20050283662A1 (en) Secure data backup and recovery
US20130254536A1 (en) Secure server side encryption for online file sharing and collaboration
JP5097130B2 (ja) 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
CN103106372A (zh) 用于Android系统的轻量级隐私数据加密方法及系统
CN114175580B (zh) 增强的安全加密和解密系统
CN101470789A (zh) 一种计算机的加解密方法及装置
JP2009510616A (ja) データベース内の機密データを保護するためのシステム及び方法
US6336189B1 (en) Apparatus and method for data capsule generation
CN101833625A (zh) 一种基于动态口令的文件及文件夹安全保护方法及系统
US20020172363A1 (en) Data security on a mobile device
WO2023071990A1 (zh) 一种隐私保护方法及系统
CN114844632A (zh) 数据传输方法、装置和电子设备
JP2009059008A (ja) ファイル管理システム
WO2015154469A1 (zh) 数据库的操作方法及装置
CN116594567A (zh) 信息管理方法、装置和电子设备
CN110855429A (zh) 一种基于tpm的软件密钥保护方法
US11283600B2 (en) Symmetrically encrypt a master passphrase key

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