CN100536473C - 一种用于nas存储系统的加密读写方法 - Google Patents
一种用于nas存储系统的加密读写方法 Download PDFInfo
- Publication number
- CN100536473C CN100536473C CNB2006101249939A CN200610124993A CN100536473C CN 100536473 C CN100536473 C CN 100536473C CN B2006101249939 A CNB2006101249939 A CN B2006101249939A CN 200610124993 A CN200610124993 A CN 200610124993A CN 100536473 C CN100536473 C CN 100536473C
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- byte
- address
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种在内核态文件系统层的加密读写方法,该方法位于虚拟文件系统和物理文件系统之间,读操作时,先对读取的密文数据进行解密,再传给上层的虚拟文件系统;写操作时,先判断写操作的类型,若是写入操作,则先将待写的明文数据进行加密,再将截取的密文数据传给下层的物理文件系统,若是修改操作,则对读入内存的密文数据进行局部解密、覆盖、全局加密、局部截取等四个步骤的操作。该方法不仅具备内核态操作所固有的高效性,而且采用局部解密和局部截取的方式来提高数据操作的效率。从试验过程和试验数据可知,使用本发明加密读写方法可以同时克服应用层加密程序的不便利性和用户态加密文件系统的低效率。
Description
技术领域
本发明属于网络存储技术领域,具体涉及一种用于NAS存储系统的加密读写方法。
背景技术
多数企业的存储容量每6~8个月就翻一番,当存储容量继续增大时,受到威胁的数据也随之增加,数据的被窃、篡改、破坏对企业来说有时是致命的。目前存在一类很重要的应用--附网存储(Network AttachedStorage,NAS),NAS主要通过网络协议(如Network File System,NFS)在以太网上备份和共享数据资源,因此NAS存在许多安全隐患,如嗅探攻击、非法拷贝等,采用应用程序来保护数据具有开销大和使用不便利的缺点,比如用户通常不习惯使用应用程序来加密数据,一个思路是在文件系统实施加密操作。
在文件系统层实现数据的加/解密来提高数据的安全性对NAS应用具有很重要的意义:1)在文件系统层实现安全措施可以保护任何应用程序所使用的任意数据,最大限度保护已有投资;2)加密文件系统允许用户透明地加密数据,为所有的应用程序提供统一的加密方式,从而降低用户的介入开销。
虽然Matt Blaze设计的加密文件系统(Cryptographic File System,CFS)实现了文件系统层的加密,见Matt Blaze的论文《A Cryptographic File Systemfor UNIX》,http://www.crypto.com/papers/cfs.pdf,但CFS在用户态实现,过多的上下文切换、数据拷贝降低了该类文件系统的性能。
发明内容
本发明的目的在于为NAS存储系统提供一种位于内核态文件系统层的加密读写方法,使用该方法可以在存储服务器端提供加/解密的功能,从而保护NAS中的数据。
本发明提供的一种用于NAS存储系统的加密读写方法,其读过程包括以下步骤:
(A1)将文件中的密文数据读入空闲内存区域,其中待读密文数据在内存中的起始地址设为F字节,结束地址设为G字节,占据r个内存页面设为Page_1、Page_2、...、Page_r;
(A2)对内存页面Page_1、Page_2、...、Page_r中的数据进行解密;
(A3)将内存地址为F~G-1字节的待读密文数据所对应的明文数据截取出来;
(A4)将截取的明文数据传给上层虚拟文件系统,完成数据读请求操作。
其写操作包括以下步骤,其中待写的数据长度设为M字节:
(B1)操作系统先判断操作的类别,若是写入操作,则进入步骤(B2),如果是修改操作,则进入步骤(B3);
(B2)按照下述步骤进行写入操作,完成后进入步骤(B4);
(B21)将待写明文数据读入空闲内存区域,占用的内存页设为Pg_1、Pg_2、...、Pg_w,待写数据在内存中的起始地址与页边界对齐,待写明文数据占用的内存地址为P~P+M-1字节;
(B22)将内存页面Pg_w的空闲区域置0;
(B23)加密内存页面Pg_1、Pg_2、...、Pg_w中的数据;
(B24)截取地址范围为P~P+M-1字节的密文数据;
(B25)将截取的密文数据传给下一层物理文件系统;
(B3)按照下述步骤进行修改:
(B31)将文件中待修改的密文数据读入空闲内存区域,设待修改的密文数据位于n个内存页面PP_1、PP_2、...、PP_n中,内存页面PP_1的起始地址设为B字节,页面PP_n的结束地址设为E字节,待修改的密文数据占用的内存地址为Q~Q+M-1字节;再分配n个临时内存页面P_1、P_2、...、P_n;
(B32)将内存页面PP_1的密文数据解密,截取位于B~Q-1字节的一段明文数据放入P_1中,从低地址开始存放;
(B33)将长度为M字节的新数据放入临时内存空间P_1、...、P_n中,放置地址与待修改的密文数据在内存页面PP_1、PP_2、...、PP_n中的位置相对应;
(B34)将内存页面PP_n中的密文数据解密,并截取位于Q+M~E的一段明文数据放入P_n中,将临时内存页面P_n的空闲区域填满;
(B35)对临时内存空间P_1、...、P_n中的明文数据进行加密;
(B36)从P_1~P_n中取出M字节的密文数据,密文数据所在地址与步骤(B33)中新数据的存放地址一致,用该密文数据覆盖上述内存区域中内存地址为Q~Q+M-1字节的密文数据;
(B37)将该内存区域中的密文数据传给下一层物理文件系统;
(B4)将密文数据写入二级存储;
(B5)返回写操作。
本发明加密读写方法能有效地克服应用程序和用户态加密文件系统的诸多不利因素,其间采用的轻量级挂载机制可增加加密文件系统的用户使用数。本发明方法具有以下特点:1)实现层次,在文件系统层增加了数据加密功能的方式不仅能提高NAS系统的安全性,而且提供了一种对用户透明的加密方式;2)性能考虑,用户态文件系统(如CFS)具有性能方面的缺陷,比如过多的上下文切换,而内核层文件系统能较好地克服这些缺点;3)操作效率,数据修改操作中涉及了解密、覆盖、加密三个过程,为了提高数据修改请求的效率,本发明采用了局部解密、覆盖、全局加密,局部截取这一操作顺序;4)机密性,为了进一步加强机密性,采用了基于用户ID和回话ID的密钥机制和超时机制;5)便利性,本发明方法运用于存储服务器端,保证现有客户端的免安装和免升级操作。总之,本发明提出的NAS存储系统加密读写方法既克服了应用层加密程序所具有的使用不便利性,又克服了用户态加密文件系统的效率低下。
附图说明
图1为加密读写方法所处层次的示意图;
图2为读操作的流程图;
图3为写操作流程图;
图4为写入操作的流程图;
图5为修改操作的流程图;
图6为文件中数据的读取过程示意图;
图7为文件中数据的写入过程示意图;
图8为文件中数据的修改过程示意图;
图9为加密NAS系统的软件框架示意图;
图10为本发明系统NasCFS和CFS的对比测试数据图。
具体实施方式
访问NAS时,数据会经过网络到达服务器端,其间经过了网络文件系统层,本发明的思路是在网络文件系统层和虚拟文件系统层(Virtual FileSystem,VFS)之间采用本发明方法对流经的读写数据进行加密和解密。加密算法采用Bruce Schneier提出的Blowfish,它能保证加密前后的数据大小是一样的,参考资料见http://www.schneier.com/blowfish.html。这种透明的加密方式,既保持了用户的使用习惯,又克服了用户态加密文件系统(如CFS)性能效率低的缺点。
数据加密中,将加密前的数据称为明文数据,加密后的数据称为密文数据,本发明申请沿用该术语。
如图1所示,文件系统往往是驻留在内核中,并直接与设备驱动程序通信,虚拟文件系统从文件系统操作的实现中抽象出文件系统操作,每个文件系统提供了特定文件系统操作的实现,为了访问某个物理文件系统(如NFS等),进程发出的系统调用请求先被翻译为VFS调用,然后VFS再将调用请求发给适当的物理文件系统,此时VFS被视为上层文件系统,物理文件系统被认为下层文件系统,上下层文件系统的调用是通过虚拟节点接口实现的。本发明在虚拟文件系统和物理文件系统之间加入加密读写方法,对流经的数据进行操作。读数据时,对数据进行解密;写数据时,对数据进行加密。由于遵循虚拟文件系统的定义规范,本发明加密读写方法可为上层应用提供透明的加密/解密功能。
本发明方法的读过程如图2所示,写入操作如图3~5所示,下面结合实例对本发明作进一步详细的说明。
在操作系统中,文件读请求往往先将文件数据从二级存储设备(如硬盘)读入内存中,并以内存页面的方式呈现;对于文件写请求,文件数据也要经过内存,然后在系统的调度下,再写入二级存储设备中。
如图6所示,读请求需要读取地址是11000字节至37000字节的数据,从图中可知,该数据段分别分布于4个内存页面(Page_1、Page_2、Page_3、Page_4),系统先读取上述四个页面的数据,并解密,如图中(1)所示,然后从解密数据中截取11000~36999范围的数据,如图中(2)所示,最后将截取的数据传递给上层的虚拟文件系统(VFS)。读操作时完成了解密过程。
如图7所示,待写入的数据位于49154字节至78056字节之间,从图中可知,该数据位于4个内存页面(Pg_1、Pg_2、Pg_3、Pg_4)。系统先加密上述四个页面,如图中(1)所示,然后截取49154~78055字节中的明文数据,如图中(2)所示,并将截取的明文数据传递给下层的物理文件系统(如Second Extended File System,Ext2)。该操作完成了加密过程。
修改操作的过程如图8所示,需要修改长度为26000字节的密文数据,该数据从二级存储设备读入内存区域3后,仍处于密文状态,存放地址为111000~136999字节。通常情况下,可采用与读操作相对应的方法:读取PP_1、PP_2、PP_3、PP_4并进行解密,然后将修改请求的数据段覆盖相应的位置(111000~136999字节),最后再对四个内存页(110592~143360字节)进行加密。从中可以发现,位于111000~136999的数据段先被解密,后被覆盖,而数据加密是一项耗费CPU的计算,如果需要写入的数据段很长,那么上述操作将对系统性能产生很大的影响。因此,本发明采用了局部解密、覆盖、全局加密,局部截取这一操作顺序,修改操作完成了加密过程,以下为具体的操作步骤:
1)先临时分配4个页面的内存空间,如P_1、P_2、P_3、P_4;
2)读取位于110592~118783字节的数据,并进行解密;截取其中的110592~110999字节,并放在P_1中,从低地址开始存放,如图中(2)所示;
3)将修改请求的新数据放入临时内存空间P_1、P_2、P_3、P_4中,放置地址与待修改的密文数据在内存页面PP_1、PP_2、PP_3、PP_4中的位置相对应;
4)读取页面PP_4(135168~143359字节)的数据并解密,如图中(3)所示,再截取位于137000~143359字节的一段解密数据放入临时内存页面P_4中,如图中(4)所示,将页面P_4的空闲区域填满;
5)对临时内存空间P_1、P_2、P_3、P_4中的数据进行加密;
6)从P_1~P_n中取出M字节的密文数据,密文数据所在地址与内存区域3中111000~136999字节的地址相对应,并覆盖内存区域3中内存地址为111000~136999字节的密文数据;
7)将内存区域3中的密文数据传给下一层物理文件系统(Ext2);
NAS服务的I/O路径上经历几个文件系统:客户端利用网络协议(如NFS)通过网络访问NAS服务器,再利用服务器本地的文件系统(Ext2)访问底层的磁盘设备;而在VFS层和NFS层之间加入本发明加密读写方法之后,对经过I/O路径的数据进行加密处理,从而起到加密的作用,如图9所示。图中NasCFS模块为本发明加密读写方法的实现模块,它对经过的数据进行加密或解密。
本发明对虚拟节点进行了概念上的扩展:增加了文件系统功能模块化的特性,引入了面向对象的方法。虚拟节点既可以指向下一层物理文件系统,也可以指向另一个虚拟节点。NasCFS相对下层物理文件系统而言,它是虚拟文件系统,而相对虚拟文件系统(VFS)而言,它是下层文件系统。在某一虚拟节点,该节点只执行与该层相关的操作,或截获与该节点相关的数据;否则将上层的操作或数据向下传递给下一层物理文件系统。
图9中粗箭头表示远程客户进行写数据时的流向,当客户向NAS存储服务器提出写文件请求,数据通过NFS传输到NAS服务器,数据经过文件系统NasCFS时经过加密再传给VFS,VFS调用NAS服务器本地物理文件系统(如Ext2)将数据写入存储设备中。读数据的操作流程则与写数据操作相反,如图中细虚线所示。
为了评估NasCFS和CFS分别对系统性能的影响,以及用户使用两种加密文件系统的便利情况。在同一测试环境下,对NasCFS和CFS进行了对比测试,测试结果如图10所示。
测试对象是三组文件系统(NFS、NFS+NasCFS、NFS+CFS),其中NFS指未加载加密文件系统;NFS+NasCFS指将文件系统NasCFS加载在NAS存储服务器端的内核层;而NFS+CFS指将CFS加载在用户层;然后用测试工具Bonnie++(一种文件系统测试工具,http://www.coker.com.au/bonnie++/)通过NFS对服务器端进行三项测试:顺序块读取、顺序块写入、顺序块重写。
CFS中包含DES、3DES、Blowfish等加密算法,由于NasCFS采用了Blowfish加密算法,为增强可比性,CFS测试选择了Blowfish算法。
NFS+NasCFS的传输率相对于NFS下降了8.1%~11.4%;而NFS+CFS的传输率相对于NFS下降21.7%~32.7%,性能明显下降。试验结果表明,基本达到了本发明目的。
Claims (1)
1、一种用于附网存储NAS存储系统的加密读写方法,包括读过程和写操作;
其读过程包括以下步骤:
(A1)将文件中的待读密文数据读入空闲内存区域,其中待读密文数据在内存中的起始地址设为F字节,结束地址设为G字节,占据r个内存页面设为Page_1、Page_2、...、Page_r;
(A2)对内存页面Page_1、Page_2、...、Page_r中的数据进行解密;
(A3)将内存地址为F~G-1字节的待读密文数据所对应的明文数据截取出来;
(A4)将截取的明文数据传给上层虚拟文件系统,完成数据读请求操作;
其写操作包括以下步骤,其中设待写的数据长度为M字节:
(B1)操作系统先判断操作的类别,若是写入操作,则进入步骤(B2),如果是修改操作,则进入步骤(B3);
(B2)按照下述步骤进行写入操作,完成后进入步骤(B4);
(B21)将待写明文数据读入空闲内存区域,占用的内存页设为Pg_1、Pg_2、...、Pg_w,待写数据在内存中的起始地址与页边界对齐,待写明文数据占用的内存地址为P~P+M-1字节;
(B22)将内存页面Pg_w的空闲区域置0;
(B23)加密内存页面Pg_1、Pg_2、...、Pg_w中的数据;
(B24)截取地址范围为P~P+M-1字节的密文数据;
(B25)将截取的密文数据传给下一层物理文件系统;
(B3)按照下述步骤进行修改:
(B31)将文件中待修改的密文数据读入空闲内存区域,设待修改的密文数据位于n个内存页面PP_1、PP_2、...、PP_n中,页面PP_1的起始地址设为B字节,页面PP_n的结束地址设为E字节,待修改的密文数据占用的内存地址为Q~Q+M-1字节;再分配n个临时内存页面P_1、...、P_n;
(B32)将内存页面PP_1的密文数据解密,截取位于B~Q-1字节的一段明文数据放入P_1中,从低地址开始存放;
(B33)将长度为M字节的新数据放入临时内存页面P_1、...、P_n中,放置地址与待修改的密文数据在内存页面PP_1、PP_2、...、PP_n中的位置相对应;
(B34)将内存页面PP_n中的密文数据解密,并截取位于Q+M~E的一段明文数据放入P_n中,将临时内存页面P_n的空闲区域填满;
(B35)对临时内存页面P_1、...、P_n中的明文数据进行加密;
(B36)从P_1~P_n中取出M字节的密文数据,密文数据所在地址与步骤(B33)中新数据的存放地址一致,用该密文数据覆盖上述内存区域中内存地址为Q~Q+M-1字节的密文数据;
(B37)将该内存区域中的密文数据传给下一层物理文件系统;
(B4)将密文数据写入二级存储;
(B5)返回写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101249939A CN100536473C (zh) | 2006-11-09 | 2006-11-09 | 一种用于nas存储系统的加密读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101249939A CN100536473C (zh) | 2006-11-09 | 2006-11-09 | 一种用于nas存储系统的加密读写方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1960372A CN1960372A (zh) | 2007-05-09 |
CN100536473C true CN100536473C (zh) | 2009-09-02 |
Family
ID=38071863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101249939A Expired - Fee Related CN100536473C (zh) | 2006-11-09 | 2006-11-09 | 一种用于nas存储系统的加密读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100536473C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108616537A (zh) * | 2018-04-28 | 2018-10-02 | 湖南麒麟信安科技有限公司 | 一种低耦合的通用数据加解密方法及系统 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101547199B (zh) * | 2009-05-05 | 2012-05-23 | 北京神舟航天软件技术有限公司 | 电子文档安全保障系统及方法 |
CN101808095B (zh) * | 2010-03-22 | 2012-08-15 | 华中科技大学 | 一种分布式存储环境下的加密副本组织方法 |
CN102567688B (zh) * | 2011-11-30 | 2015-05-20 | 中标软件有限公司 | 一种安卓操作系统上的文件保密系统及其保密方法 |
CN105656866B (zh) * | 2014-12-02 | 2019-10-22 | 华为技术有限公司 | 数据加密方法及系统 |
CN105808977A (zh) * | 2014-12-30 | 2016-07-27 | Tcl集团股份有限公司 | 一种文件读操作、写操作的处理方法及装置 |
CN107330336B (zh) * | 2017-05-23 | 2020-02-14 | 中国人民解放军信息工程大学 | Linux操作系统内存页面即时加解密方法和系统 |
CN107609428A (zh) * | 2017-08-16 | 2018-01-19 | 大唐高鸿信安(浙江)信息科技有限公司 | 数据安全存储系统及方法 |
CN108509613A (zh) * | 2018-04-03 | 2018-09-07 | 重庆大学 | 一种利用nvm提升加密文件系统性能的方法 |
CN109286484A (zh) * | 2018-09-28 | 2019-01-29 | 哈尔滨百香果科技有限公司 | 一种提高数据加解密速度的快速数据处理方法 |
CN115344507B (zh) * | 2021-05-14 | 2024-08-27 | 华为技术有限公司 | 内存分配方法、装置和系统 |
CN113326526B (zh) * | 2021-06-23 | 2023-04-25 | 杭州弗兰科信息安全科技有限公司 | 一种数据访问方法、装置、设备及存储介质 |
CN113419843B (zh) * | 2021-08-25 | 2021-11-26 | 南京赛宁信息技术有限公司 | 一种基于nas的分布式资源管理系统 |
-
2006
- 2006-11-09 CN CNB2006101249939A patent/CN100536473C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108616537A (zh) * | 2018-04-28 | 2018-10-02 | 湖南麒麟信安科技有限公司 | 一种低耦合的通用数据加解密方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1960372A (zh) | 2007-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100536473C (zh) | 一种用于nas存储系统的加密读写方法 | |
CN100449560C (zh) | 一种计算机数据安全防护方法 | |
Rogers et al. | Using address independent seed encryption and bonsai merkle trees to make secure processors os-and performance-friendly | |
McDonald et al. | StegFS: A steganographic file system for Linux | |
CN1841255B (zh) | 保护数据存储的机密性与完整性的方法和装置 | |
EP3355232B1 (en) | Input/output data encryption | |
CN1100419C (zh) | 再加密数据的设备和方法 | |
TWI567557B (zh) | 具防護重播攻擊之用於記憶體加密的可微調加密模式 | |
JP6067757B2 (ja) | ストレージ装置とホスト間でデータ伝送を保護するためのストレージ・コントローラ・バス・インターフェースの使用 | |
CN102184351B (zh) | 一种内容阅读系统和方法 | |
WO2004034184A2 (en) | Encrypting operating system | |
CN104951409A (zh) | 一种基于硬件的全盘加密系统及加密方法 | |
CN103745162B (zh) | 一种安全网络文件存储系统 | |
JP4167476B2 (ja) | データ保護・保管方法/サーバ | |
Elbaz et al. | A parallelized way to provide data encryption and integrity checking on a processor-memory bus | |
CN104995633A (zh) | 利用下游解密器进行端到端加密情况下实现存储效率 | |
CN101877246A (zh) | 加密u盘实现方法 | |
EP1536307B1 (en) | Encryption of system paging file | |
CN101630292B (zh) | 一种usb可移动存储设备的文件加解密方法 | |
CN105224882A (zh) | 一种基于桥文件系统的文件加密系统 | |
GB2315575A (en) | Encryption circuit in I/O subsystem | |
CN110113151A (zh) | 一种对elf格式程序的非侵入式实时加解密方法 | |
CN109697366A (zh) | 一种基于钩子的Android文件透明加解密方法 | |
WO2016053407A2 (en) | Speculative cryptographic processing for out of order data | |
Zhang et al. | Enabling secure deduplication in encrypted decentralized storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090902 Termination date: 20181109 |
|
CF01 | Termination of patent right due to non-payment of annual fee |