一种基于同态映射的安全文件系统实现方法与流程

文档序号:32531777发布日期:2022-12-13 22:24阅读:80来源:国知局
一种基于同态映射的安全文件系统实现方法与流程

1.本发明涉及信息安全领域,具体的说,是一种基于同态映射的安全文件系统实现方法。


背景技术:

2.对用户数据的管理和保护,是密码卡/密码机的重中之重,用户数据如密钥、权限、身份信息泄露将产生不可估量的影响。用户信息往往以厂商自定义的文件系统来进行管理,通过sdf_createfile、sdf_readfile、sdf_writefile、sdf_deletefile等gm/t 0016
ꢀ‑ꢀ
2012《智能密码钥匙密码应用接口规范》定义的标准接口进行调用,因此高安全、高可靠性、可移植性的文件系统,将是固件实现的技术难点,也是整个密码卡/密码机产品的核心竞争力。
3.对目前使用较广的fat32、exfat、ntfs、ext4等通用文件系统进行研究和分析,发现大多文件系统采用文件映射表加文件数据块的模式组织。以fat32文件系统为例,首先通过mbr(主引导分区)解析分区信息,然后通过对应分区的dbr(文件分配表)记录文件系统的数据,在通过dbr解析fat文件系统的目录项,从而找到文件,文件以链表的结构将数据内容以簇的形式进行内容关联。这就导致一个问题,仅通过密钥的形式对数据进行加密。在目前高性能计算机暴力破解的情况下,很容易根据mbr和dbr和固定特征数据反向破解密钥,从而解析出整个文件系统,因此基于通用文件系统设计的面向密码卡/密码机的自定义文件系统,在安全性上存在漏洞,尤其符合csp/skf/sdf接口标准的安全设备上,存在一定的隐患。


技术实现要素:

4.针对现有技术的缺陷,本发明提供一种基于同态映射的安全文件系统实现方法,将文件映射表和文件内容相隔离,仅获取文件映射表无法获取该文件所有的连接关系,从而大幅度提高文件系统的安全性。
5.为了解决所述技术问题,本发明采用的技术方案是:一种基于同态映射的安全文件系统实现方法,本方法将文件映射表la和文件内容隔离存储,文件映射表la、同态映射模块、文件解析引擎存储于隔离沙箱内,隔离沙箱是由硬件实现的易失存储环境,文件内容以多个文件簇pd的形式存储于非易失空间,同态映射模块使用一对函数func_a和func_b管理文件映射表和文件内容的关联,func_a(la)= pa,func_b(next_pa)=la,通过函数func_a寻址la对应的pa,通过函数func_b寻找下一个pa即next_pa对应的la,其中pa表示文件簇pd在非易失空间的逻辑存储地址;文件解析引擎根据文件id检索其对应的首la,并根据同态映射模块的解析结果更新文件更新表,文件更新表用于缓存当前的pa。
6.进一步的,pd包括pd头部和pd内容,pd头部标识pd内容的描述信息,pd头部包括权限标识、映射关系、文件长度、时间戳、有效标识和pd校验和,pd内容以数据流的形式存储文件的实际内存,整个pd由pd校验和进行保护;映射关系中的next_pa是一个伪映射,仅用于
指向la的位置。
7.进一步的,la以记录的形式组织,包括la地址、la时间戳、有效映射、la校验和,存储介质中顺序存储la的有效映射,每次删除、修改、追加文件内容,需要修改la的有效映射,将整个la记录写入新地址,通过时间戳标识记录的时间点,通过la校验和保证每条la记录的完整性。
8.进一步的,文件结束标识在next_pa中特定指示, next_pa为结束标识时,则映射关系结束,整条记录全部加载。
9.进一步的,函数func_a和func_b是可逆的双射映射函数、自定义映射函数或者通过机器学习训练出来的映射函数。
10.进一步的,增加部分没有对应关系的la和pa。
11.进一步的,pd的最大长度不超过非易失存储芯片的擦除最小单位。
12.进一步的,文件系统包括目录和文件内容,目录包括根文件目录、应用目录和带节点目录,应用目录和带节点目录位于根文件目录下,文件内容位于应用目录和带节点目录下。
13.进一步的,文件内容经过硬件密码模块进行数据加解密,加解密采用密钥扩展模块扩展后的密钥,具体文件存储的pd位置使用不同的密钥扩展器进行加解密。
14.本发明的有益效果:本发明将文件映射表和文件内容隔离,并通过同态映射模块实现文件映射表和文件内容的关联,同态映射模块里设有两个函数,一个实现la到pa的映射,即映射关系到数据实际存储位置的映射,另一个实现next_pa到la的映射,即下一跳有效数据实际存储位置到映射关系的映射,其中next_pa是一个伪映射,并不指向真实的下一跳有效数据实际存储位置,仅用于指向la的位置,如此设计,是为了防止获取la与pd的映射关系后,依据la读取pd后,根据pd中next_pa的指示依次读取所有数据。通过该隔离设计能大幅度提高文件系统的安全性。本方法还设有多组密钥获取模块,可以设置多组密钥对不同的数据区域进行数据加密,在冷热数据交换和垃圾回收过程中,随机选取空闲pa,该pa可能会使用不同的密钥扩展模块进行加解密,实现“相同的数据,在不同的时间点,以不同形式的密文存储在数据存储区”。
附图说明
15.图1是安全文件系统的总体架构图;图2是安全文件系统硬件组成示意图;图3是la、pa、pd的映射关系示意图;图4是文件内容数据保护模型示意图;图5是安全文件系统数据结构示意图;图6是文件检索流程图;图7是文件更新流程图;图8是垃圾回收流程图。
具体实施方式
16.下面结合附图和具体实施例对本发明作进一步的说明。
17.实施例1本实施例公开一种基于同态映射的安全文件系统实现方法,所述的安全文件系统包括gm/t 0016
ꢀ‑ꢀ
2012《智能密码钥匙密码应用接口规范》、gm/t 0017
ꢀ‑ꢀ
2012《智能密码钥匙密码应用接口数据格式规范》,如图1所示,包括目录和文件内容,目录包括根文件目录mdf、应用目录adf和带节点目录ddf,应用目录adf和带节点目录ddf位于根文件目录mdf下,文件内容ef位于应用目录和带节点目录下。目录不具有实际意义,只是构成文件系统的逻辑关系;文件ef是文件实体,是以各种应用为基础组织的二进制内容,如二进制记录、对称密钥、pin、非对称密钥、电子钱包等具有实际价值的数据内容,用于保存用户的数据信息。
18.如图2所示,本方法将文件映射表la(即ef文件的逻辑连接)和文件内容隔离存储,文件映射表la、同态映射模块、文件解析引擎存储于隔离沙箱内,隔离沙箱是由硬件实现的易失存储环境,用于保护文件映射表la。文件内容以多个文件簇pd的形式存储于非易失空间。同态映射模块使用一对函数func_a和func_b管理文件映射表和文件内容的关联,func_a(la)= pa,func_b(next_pa)=la,通过函数func_a寻址la对应的pa,通过函数func_b寻找下一个pa即next_pa对应的la,其中pa表示文件簇pd在非易失空间的逻辑存储地址;文件解析引擎根据文件id检索其对应的首la,并根据同态映射模块的解析结果更新文件更新表,文件更新表用于缓存当前的pa。
19.本实施例中,隔离沙箱负责保护文件映射表la;同态映射模块用于匹配la、pa、pd的对应关系;文件解析引擎用于根据文件标识id解析出所有文件的内容,将pa和pd存放到sram中,cpu通过总线进行读写操作。
20.本方法将文件映射表la与文件内容pd隔离,并且文件映射表la与文件内容pd设有中间参量pa,因此仅获取全部la无法获取该文件所有的连接关系,需要结合pd中的下一条映射及同态映射模块,通过映射函数func_a和func_b进行解析,将映射关系解析即func(la)=pa到文件更新表,然后根据la解析出的pa地址,通过密码模块根据pa地址解密pd,pd存储在非易失的空间中,可以是片内flash存储介质,也可以是片外flash存储介质,通过密码模块将解密后的数据放入sram中,cpu通过ahb/axi总线进行读写操作。本实施例及附图中,ahb((advanced high performance bus,高级高性能总线)是amba标准中的高性能总线协议,一般作为soc的片上系统总线要用模块之间的互连。axi(advanced extensible interface)是amba标准中一个新的高性能协议,可以理解为对ahb总线的进一步丰富。
21.文件解析需要同态映射模块、文件解析引擎协同工作。如图3所示,文件解析引擎根据文件id(文件唯一标识信息)检索对应的首la,经过同态映射模块对映射关系进行解析,获取下一个数据块的实际地址,依次加载文件所有关联的la,解析到实际的pd,将pd的标识pa加载到文件更新表中,将解密后的数据加载到sram中,用于“增删改查”并适时回写la和数据存储区。图3中,文件内容在数据存储区已加密的形式存储,即已enc(pd)的形式存储,enc(pd)表示根据pd所在的不同数据区域使用对应的密钥,对pd原文进行加密产生的密文。
22.如图5所示,pd包括pd头部和pd内容,pd头部标识pd内容的描述信息,pd头部包括权限标识、映射关系、文件长度、时间戳、有效标识和pd校验和,pd内容以数据流的形式存储文件的实际内存,整个pd由pd校验和进行保护。映射关系包括pa和next_pa,pa表示pd在非易失空间的实际存储地址,next_pa表示下一跳有效数据在非易失空间的实际存储地址,但
是next_pa是一个伪映射,并不指向真实的下一跳有效数据实际存储位置,仅用于指向la的位置,如此设计保证映射表的复杂性和安全性。
23.如图5所示,la以记录的形式组织,包括la地址、la时间戳、有效映射、la校验和,存储介质中顺序存储la的映射内容,每次删除、修改、追加文件内容,需要修改la的映射关系,将整个la记录写入新地址,通过时间戳标识记录的时间点,通过la校验和保证每条la记录的完整性。
24.由图5可知,la通过同态映射模块的func_a函数计算出la对应的pa,然后pa位置存储的数据块即为pd,pd存储实际的文件内容和描述信息。pa_next通过映射函数func_b指向对应的la位置,内容指示下一跳有效数据在pd中的位置,当pa_next映射到结束标识,则映射关系结束,整条记录全部加载。
25.本实施例中,文件结束标识在next_pa中特定指示。在每次检索一个有效pd后,将数据存储到sram中,并根据next_pa指示使用同态映射模块func_b函数检索la,当func_b检测到next_pa为结束标识,停止寻找下一个数据块,文件读取完毕。
26.映射函数func_a和func_b默认是可逆的双射映射函数,即func_a()=func_b-1
(),func_a=a*f(x),func_b=(1/a)*f-1
(x),其中a为随机产生参数。也支持用户自定义映射函数,采用在定义域范围内的非线性可逆映射函数来增大破解映射关系的难度,最高可支持七阶非线性函数。映射函数可以通过机器学习的方法自动训练参数,寻找la的映射函数,保证la与pa在一定范围内可以一一对应,即pa和la的关系是一一对应的,但是整个文件的pd块连接顺序是可以随机选取la位置的,从而保证映射表的复杂性和安全性。
27.同态映射也是一种代数(又称原象集)到代数(象集)的映射,本实施例采用的默认同态映射关系是一阶的,满足双射关系(即原象集、象集中的元素一一对应),用户自定义的高阶非线性函数只需要满足单射即可,象集相同则原象一定相同,若象不同则原象一定不同,象集和原象集可能有剩余元素,但不存在相同的pa映射出不同的la关系,增加部分没有对应关系的la和pa可以进一步,增加干扰性。
28.本实施例中,自定义的同态映射函数为:y=a7*func7(x)7+a6*func6(x)6+a5*func5(x)5+a4*func4(x)4+a3*func3(x)3+a2*func2(x)2+a1*func1(x)1+a0,其中a7、a6、a5、a4、a3、a2、a1、a0是可用户自定义,func
1~n
()为线性或非线性函数,例如func(x)=x-offset、sigmoid、tanh、relu等,也可以通过机器学习进行训练得出的两组y到x的映射关系作为func_a和func_b,用于la到pa和next_pa到la的映射计算。在func_a映射关系中,y指代pa,x指代la;在func_b映射关系中,y指代la,x指代next_pa。
29.本实施例中,高阶函数的计算结果通过固件计算进行二次处理,进行无效映射过滤。
30.如图4所示,硬件加密模块设计多组密钥扩展模块,设置多组密钥对不同的数据区域进行数据加密,在冷热数据交换和垃圾回收过程中,随机选取空闲pa,该pa可能会使用不同的密钥扩展模块进行加解密,实现“相同的数据,在不同的时间点,以不同形式的密文存储在数据存储区”。硬件密码模块可以主动访问数据存储区,整个数据块搬运和交换过程,只需要固件提供数据的源地址(从哪里读取)和目的地址(写入到哪里去),硬件密码模块自动读取源地址的密钥扩展模块并解密数据,使用目的pd地址的密钥扩展模块进行加密写入,整个数据计算过程完全由硬件完成,可以最大限度保证安全性和效率。
31.本实施例中,pd的地址用pa来进行描述,pa描述某个pd块存储在非易失区间的逻辑地址,pd作为独立的一个文件簇,可以是256字节、512字节、1024字节等来存放数据内容,但pd的最大长度不应超过非易失存储芯片的擦除最小单位(一般以4kb为一个典型最小擦除单位),如果pd太小会导致la的颗粒度过于复杂,如果pd太大会导致资源浪费,频繁进行擦除操作,本文采用512字节为擦除单位。采用512字节为擦除单位的依据是sata、usb、pcie的存储类通讯协议如scsi、ata是以lba(logical block address)为最小单位,而lba的大小为512字节,这样做可以方便主机端管理工具无需数据拆分和拼接,有利于减少接口通讯次数,提高效率。
32.pd存在非易失存储空间中,cpu通过总线经过硬件密码模块进行数据加解密,加解密采用密钥扩展模块扩展后的密钥,密码模块将非易失存储空间划分成多个数据簇,按照位置使用不同的密钥扩展模块进行加解密,特别强调从容量来看cluster 》 最小擦除单位(4kb) 》 pd(512字节)。
33.如图6所示,依据本方法的文件解析流程为:s11)、文件解析引擎根据文件标识(id)检索到起始la后,通过同态映射模块的func_a函数查找到对应的pa地址,pa是pd的唯一标识;s12)、读取enc(pd)数据并进行解密,enc(pd)表示加密后的pd数据,将pd内容加载到sram中;s13)、根据pd中next_pa的标识,使用func_b函数,查找到对应的la地址,根据la解析下一个内容相关的pd位置,重复步骤s12);s14)、将pa写入文件更新表;s15)、判断是否结束,当func_b(next_pa)计算结果为结束标识,文件内容全部加载到sram中,并且对应的pa地址也加载到文件更新表中。
34.在la、pa、pd的映射关系加载识别的过程中,pa、pd通过以密文形式根据不同的文件簇位置选取对应的密钥扩展模块进行解密读取到sram中;la常驻于隔离沙箱中,读取和更新操作只能通过文件解析引擎通过同态映射模块进行读取和修改。
35.如图7所示,文件更新流程为:s21)、申请新的la空间,通过同态映射模块的func_a函数查找到la对应的pa地址,外部非易失存储设备根据pa申请新的pd空间;s22)、对数据加密写入pd,不写入pd头部;s23)、标识申请的la已占用;s24)、判断pd写入是否结束,如果是,更新整个la表,更新pd头部信息,计算校验和crc并写入。
36.为进一步增加数据的安全性,用户根据非易失存储设备的容量,划分为多个文件簇(可以根据实际使用增加更多的密钥扩展模块,本文中以4个为例),如图4所示。当某项文件进行修改,首先向文件解析引擎申请新的空闲la,根据同态映射模块的func_a函数得到pa,pa = func_b(la),pa代表了空闲的pd地址,(pa、pd)作为新内容写入的空间,用于更新内容。
37.首先更新空闲pd地址的数据内容,只更新pd内容,然后更新la的映射关系,即将la标识为已用;然后更新pd文件头,最主要的是记录next_pa用于保证后续文件连接未丢失。
38.更新整个la记录,记录la的时间戳标识,整个文件记录修改完成。
39.由于非易失存储设备擦除和pd的大小是不一致的,在频繁的数据读写过程中,会产生数据碎片,即一个擦除单位里面可能会有大量的无效pd(图5中的有效标识即trim位 = 1),而非易失电存储设备需要进行数据刷新保证数据保持时间(又称data retention),这种行为称为冷热数据交换,即垃圾回收。
40.如图8所示,垃圾回收的流程为:la中的有效映射标识pd中已经有数据的映射块数量,当该值接近阈值,需要进行垃圾回收,进行数据擦除释放空间。本实施例通过cnt表示已经有数据的映射块(已使用的映射块),cnt为累积已使用的映射块。
41.文件解析引擎分析映射块中占用率最低的块,也就是某个映射块中有效标识即trim位 = 1最少的,该块的有效数据使用率最低,用于进行垃圾回收。
42.将每条有效的pd进行搬移,即重复步骤s21)至步骤s23),进行数据搬移,数据搬移的目标地址由文件解析引擎分配,根据目标地址使用密码算法模块调用对应的密钥扩展模块进行加密,当所有有效数据搬移完成,执行步骤s24),更新la记录。
43.完成la更新后,进行映射块清除,释放空间,这样整个映射块中的所有pd空间均可再次利用。映射块也可用英文sector表示。
44.以上,描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1