(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210791685.0
(22)申请日 2022.07.07
(71)申请人 北京双洲科技有限公司
地址 100020 北京市朝阳区安 立路66号4号
楼III段11层
(72)发明人 姚述源 章翔凌 李升平
(51)Int.Cl.
G06F 3/06(2006.01)
G06F 21/62(2013.01)
(54)发明名称
一种linux操作系统环境下文件加密密钥的
存储方法
(57)摘要
本发明公开了一种linux操作系统环境下文
件加密密钥的存储方法, 包括如下步骤: 1、 文件
加密与加密密钥存储, 2、 密文加密密钥 与文件解
密。 该方法并没有多余的I/O操作, 也不依 赖于其
他软件, 整个过程高效简洁, 只要文件存在, 就不
会担心文件密钥的丢失。 本专利的优点在于: 1、
文件加密密钥存储时, 不再对第三方数据库的依
赖; 2、 减少了系统资源的浪费; 3、 降低了系统维
护人员的维护成本; 4、 减少了系统I/O操作次数,
提高了应用程序的效率; 5、 文件与文件加密密钥
存储在一起, 只要文件存在的时候就一定存在文
件加密密钥, 防止数据库崩溃或无法连接时, 应
用业务无法正常进行的情况。
权利要求书1页 说明书4页 附图2页
CN 115098034 A
2022.09.23
CN 115098034 A
1.一种linux操作系统环境下文件加密 密钥的存 储方法, 其特 征在于, 包括如下步骤:
1)、 文件加密与加密 密钥存储, 其过程如下:
第一步: 应用程序使用工具(硬件或软件)生成随机的文件密钥key;
第二步: 应用程序使用文件密钥key对明文 文件file进行加密, 生成密文 文件efile;
第三步: 应用程序使用密钥加密密钥key对文件密钥key进行加密保护, 生成文件加密
密钥ekey;
第四步: 应用程序在用户态调用Linux操作系统提供的标准API接口setxattr()函数,
对密文文件的扩展属性进行设置;
第五步: setxattr()函数对传 入的参数进 行合法性检查, 如合法则继续, 不合法则错误
返回;
第六步: 执行进程调用strncpy_from_user()函数或copy_from_user()函数将参数从
用户空间拷贝到内核空间;
第七步: 调用vfs_setxat tr()函数, 将扩展属性信息写入实际文件系统;
第八步: 文件加密 密钥被写入 扩展属性, 成功存 储, 返回;
2)、 密文加密 密钥与文件解密, 其过程如下:
第一步: 应用程序获取 预解密的密文 文件efile路径path;
第二步: 应用程序在用户态调用Linux操作系统提供的标准API接口getxattr()函数,
对密文文件的扩展属性进行获取;
第三步: getxat tr()函数对传入的参数进行合法性检查;
第四步: 执行进程调用strncpy_from_user()函数或copy_from_user()函数将参数从
用户空间拷贝到内核空间;
第五步: 调用vfs_getxattr()函数, 从文件系统记录获取将扩展属性信息, 即文件加密
密钥ekey;
第六步: 获取到文件加密 密钥, 将其返回用户态;
第七步: 应用程序将密钥加密 密钥key对文件加密 密钥ekey进行解密还原, 生成key;
第八步: 使用key对efi le进行解密, 生成明文 文件file;
第九步: 解密结束。
2.根据权利要求1所述的一种linux操作系统环境下文件加密密钥的存储方法, 其特征
在于, 所述函数setxattr包含五个参数: 第一个是指向目标对象对应的目录项, 即/path/
efile; 第二个参数表示用户空间的扩展属性名称, 即user.key; 第三个表示用户空间的扩
展属性的值, 即ekey; 第四个表示扩展属性值的长度; 第五个表 示传递给文件系统相关操作
的标志。
3.根据权利要求1所述的一种linux操作系统环境下文件加密密钥的存储方法, 其特征
在于, 所述getxattr()函数包括四个参数, 第一个表示目标对象对应的目录项, 即/path/
efile, 第二个表示用户空间的扩展属性名称, 即user.key, 第三个为保存用户空间的扩展
属性的值的缓冲区, 第四个表示扩展属性的长度。权 利 要 求 书 1/1 页
2
CN 115098034 A
2一种linux操作系统环境下文件加密 密钥的存 储方法
技术领域
[0001]本发明涉及一种加密密钥存储方法, 具体是一种linux操作系统环境下文件加密
密钥的存 储方法。
背景技术
[0002]对于文件加 密密钥的存储保护, 通常情况下的做 法是将加密后的文件密钥与其对
应的文件分开进 行各自存储。 应用程序通过密钥加密密钥(key)对文件密钥(key)进 行加密
保护, 生成文件加密密钥(ekey)。 因数据库表索引查找数据的方便性特点, 在设计加密密钥
存储方案时, 一般会将文件加密密钥写入数据库表, 而将与其对应的文件写入指定的文件
目录, 忽略了使用分开存储方式与数据库表存储带来的弊端; 文件加密密钥的保护存储需
要与数据库配套使用, 这就意味着系统管理员预先安装好数据库, 并且创建好数据 表。 文件
加密密钥写入整个过程大致如下: 应用程序连接数据库, 打开数据库表, 再将文件加密密钥
插入数据库表中。 在获取文件加密密钥时, 大概的流程如下: 应用程序连接数据库, 打开数
据库表, 查询获取相应的文件加密密钥, 再通过密钥加密密钥对文件加密密钥还原, 生 成文
件密钥。
[0003]如以上描述可知, 通常情况的做法不但增加了系统管理员的管理难度, 程序员的
开发工作量, 系统资源也会造成不必要的浪费, 在文件加密密钥存储与获取过程中过度依
赖第三方的数据库, 反复进行连接, 打开, 关闭, 读, 写等I/ O操作, 降低了程序运行的效率与
性能。 在数据库崩溃或无法连接时, 整个程序的运行会陷入停滞 状态, 用户无法对密 文文件
进行解密, 降低了程序应用的可靠性与安全性。 如何解决在文件加密密钥更高效的存储与
获取, 对第三方的依赖程度更低, 应用起 来更独立是件很有意 义的事情。
发明内容
[0004]本发明的目的在于提供一种linux操作系统环境下文件加密密钥的存储方法, 以
解决上述背景技 术中提出的问题。
[0005]为实现上述目的, 本发明提供如下技 术方案:
[0006]一种linux操作系统环境下文件加密密钥的存储方法, 包括如下步骤: 1、 文件加密
与加密密钥存储, 其过程如下:
[0007]第一步: 应用程序使用工具(硬件或软件)生成随机的文件密钥key;
[0008]第二步: 应用程序使用文件密钥key对明文文件file进行加密, 生成密文文件
efile;
[0009]第三步: 应用程序使用密钥加密密钥key对文件密钥key进行加密保护, 生成文件
加密密钥ekey;
[0010]第四步: 应用程序在用户态调用Linux操作系统提供的标准API接口setxattr()函
数, 对密文 文件的扩展属性进行设置;
[0011]其中, 函数setxattr包含五个参数: 第一个是指向目标对象对应的目录项, 即/说 明 书 1/4 页
3
CN 115098034 A
3
专利 一种linux操作系统环境下文件加密密钥的存储方法
文档预览
中文文档
8 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共8页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-02-18 22:35:03上传分享