CN103336929A - 用于已加密文件访问的方法和*** - Google Patents
用于已加密文件访问的方法和*** Download PDFInfo
- Publication number
- CN103336929A CN103336929A CN2013100739964A CN201310073996A CN103336929A CN 103336929 A CN103336929 A CN 103336929A CN 2013100739964 A CN2013100739964 A CN 2013100739964A CN 201310073996 A CN201310073996 A CN 201310073996A CN 103336929 A CN103336929 A CN 103336929A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- field
- request
- program module
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000004422 calculation algorithm Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 13
- 238000006243 chemical reaction Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 9
- 238000013507 mapping Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000013478 data encryption standard Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 230000002708 enhancing effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- VEMKTZHHVJILDY-UHFFFAOYSA-N resmethrin Chemical compound CC1(C)C(C=C(C)C)C1C(=O)OCC1=COC(CC=2C=CC=CC=2)=C1 VEMKTZHHVJILDY-UHFFFAOYSA-N 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
实施方式包括用于已加密文件访问的方法和***。访问程序模块,连接至至少一个文件***,拦截用于访问明文文件的数据请求,明文文件具有在硬盘上物理地并且连续地存储的信息,并且具有由发送数据请求的程序期望的预定顺序和长度,其中明文文件包括具有键字段和明文数据字段的明文记录。访问程序模块基于配置文件和数据请求确定与明文文件相关联的已加密文件,其中配置文件指示与明文文件相关联的已加密文件。访问程序模块基于配置文件确定一个或者多个加密密钥。访问程序模块基于一个或者多个加密密钥和键字段来访问已加密数据字段。
Description
技术领域
本发明总体上涉及数据加密,并且更具体地,涉及用于对已加密非关系数据进行透明实时访问的***和方法。
背景技术
相关技术描述
诸如银行和大型公司的组织通常涉及大量的电子事务,涉及通过计算机网络来对具有特定顺序并具有特定长度(例如,非关系数据)的敏感信息进行传输、访问和存储。这些敏感信息可以包括银行账户信息、***信息以及社会安全号码。另外,组织中的特定雇员可以访问该敏感信息。为了保护敏感信息免受未授权使用、并且保证与政府数据安全法律相符合,使用数据加密来将敏感数据作为已加密数据进行传输。
数据加密是一种用于将可读数据(明文)转换为不可读字符(密文)的方法,该方法可以防止对敏感数据的未授权访问和使用。密文(也被称作已加密数据或者杂乱数据)可以在计算机可读有形存储设备(诸如硬盘)上存储,或者例如经由电子邮件消息来由发送者向接收者通过网络进行传输。另外,组织的多个现有应用程序(已经使用了许多年并且处理明文形式的敏感数据)可能需要被更新,以便该应用程序可以访问敏感信息的已加密版本。
当前,为了更新组织的用于处理敏感信息的应用程序,应用程序还需要被在程序上进行定制,以便该应用程序能够访问已加密数据。然而,对应用程序进行程序上的定制以便它们能够访问已加密程序,这对于具有大量应用程序的组织而言将会开销巨大并且消耗大量时间。然而,对于希望对应用程序在程序上进行定制的组织而言,通常应用程序的源代码是不可获得的。即使在找到源代码之后,也需要在源代码的多处进行程序上的定制,并且还需要对应用程序与其进行通信的其他计算机***进行程序上的定制。
发明内容
在本发明的一个实施方式中,公开了一种用于已加密文件访问的方法。所述方法包括:连接至至少一个文件***的访问程序模块,拦截用于访问明文文件的数据请求,所述明文文件具有在硬盘上物理地并且连续地存储的信息,并且具有由发送所述数据请求的程序期望的预定顺序和长度,其中所述明文文件包括具有键字段和明文数据字段的明文记录。所述方法进一步包括:所述访问程序模块基于配置文件和所述数据请求确定与所述明文文件相关联的已加密文件,其中所述配置文件指示与所述明文文件相关联的所述已加密文件,并且所述已加密文件包括与所述明文记录相关联的已加密记录,以及其中所述已加密记录包括报头字段、所述键字段、以及与所述明文数据字段相关联的已加密数据字段。所述方法进一步包括:所述访问程序模块基于所述配置文件确定一个或者多个加密密钥。所述方法进一步包括:所述访问程序模块基于所述一个或者多个加密密钥和所述键字段来访问所述已加密数据字段。
在本发明的另一实施方式中,公开了一种用于已加密文件访问的计算机程序产品。该计算机程序产品包括计算机可读存储介质以及存储在计算机可读存储介质上的程序指令。该程序指令包括:用于使得连接至至少一个文件***的访问程序模块执行如下的程序指令:拦截用于访问明文文件的数据请求,所述明文文件具有在硬盘上物理地并且连续地存储的信息,并且具有由发送所述数据请求的程序期望的预定顺序和长度,其中所述明文文件包括具有键字段和明文数据字段的明文记录。所述程序指令进一步包括:用于基于配置文件和所述数据请求确定与所述明文文件相关联的已加密文件的程序指令,其中所述配置文件指示与所述明文文件相关联的所述已加密文件,并且所述已加密文件包括与所述明文记录相关联的已加密记录,以及其中所述已加密记录包括记录字段、所述键字段、以及与所述明文数据字段相关联的已加密数据字段。所述程序指令进一步包括:用于基于所述配置文件确定一个或者多个加密密钥的程序指令。所述程序指令进一步包括:用于基于所述一个或者多个加密密钥和所述键字段来访问所述已加密数据字段的程序指令。
在本发明的另一实施方式中,公开了一种用于已加密文件访问的计算机***。该计算机***包括:一个或者多个处理器、一个或者多个计算机可读存储器、一个或者多个计算机可读存储介质、以及存储在所述一个或者多个存储介质上的程序用于由所述一个或者多个处理器经由所述一个或者多个存储器执行。所述程序指令包括:用于使得连接至至少一个文件***的访问程序模块的程序指令:拦截用于访问明文文件的数据请求,所述明文文件具有在硬盘上物理地并且连续地存储的信息,并且具有由发送所述数据请求的程序期望的预定顺序和长度,其中所述明文文件包括具有键字段和明文数据字段的明文记录。程序指令进一步包括:用于基于配置文件和所述数据请求确定与所述明文文件相关联的已加密文件的程序指令,其中所述配置文件指示与所述明文文件相关联的所述已加密文件,并且所述已加密文件包括与所述明文记录相关联的已加密记录,以及其中所述已加密记录包括报头字段、所述键字段、以及与所述明文数据字段相关联的已加密数据字段。程序指令进一步包括:用于基于所述配置文件确定一个或者多个加密密钥的程序指令。程序指令进一步包括:用于基于所述一个或者多个加密密钥和所述键字段来访问所述已加密数据字段的程序指令。
附图说明
图1是根据本发明一个实施方式的、利用透明实时访问程序模块的计算机***的框图;
图2是示出了根据本发明一个实施方式的访问程序模块的图示,该访问程序模块将具有第一格式的原始明文文件转换至具有第二格式的已加密文件拷贝的记录字段;
图3是示出了根据本发明一个实施方式的访问程序模块的操作的流程图,该访问程序模块与安装在计算机上的操作***进行通信、拦截针对具有第一格式的原始明文文件的数据请求、以及执行对已加密文件拷贝的打开请求、读取请求、写入请求、和/或关闭请求的操作。
具体实施方式
所属技术领域的技术人员理解,本发明可以实现为***、方法或计算机程序产品。因此,本公开可以具体实现为以下形式:可以是完全的硬件实施方式、也可以是完全的软件实施方式(包括固件、驻留软件、微代码等),还可以是硬件和软件结合形式的实施方式,本文可以将其统称为“电路”、“模块”或“***”。此外,在一些实施方式中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施方式的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
在此使用的术语是仅用于描述特定实施方式的目的,而并不旨在限制本公开。如在此使用,单数形式“一个”、“一种”、“所述”还旨在包括附属形式,除非在上下文中明确指出。此外,术语“一个”、“一种”等形式的使用并不表示限制数量,而是表示存在至少一个所引用的事物。还应当理解,当在本说明书还总使用时,术语“包括”和/或“包含”指示存在所指明的特征、区域、数字、步骤、操作、元件和/或组件,但不限于排除存在或者附加一个或者多个其他特征、区域、数字、步骤、操作、元素和组件和/或其组合。
另外,应当理解,当被称为程序模块、模块或者硬件组件的元件被“连接”、“可操作地连接”、“耦合”或者“可操作地耦合”至另一元件时,其可以直接或者连接或者间接地耦合到其他元件,或者还可以存在中间元件。相反,当元件被“直接连接”或者“直接耦合”至另一元件时,不存在中间元件。
现在将参考附图在下文中更全面地描述示例性实施方式。然而,本公开可以以多种不同形式实现,并且不能认为是对于再次阐明的示例性实施方式的限制。而是,提供这些示例性实施方式以便对于本领域技术人员可以透彻并且全面地理解本公开,并且构成本公开的完整实现。在说明书中,省略了对公知特征和技术的细节的描述以便避免不必要地干扰所呈现的实施方式。
本发明的实施方式提供了一种技术,该技术用于支持应用程序在不必在程序上对应用进行定制的情况下,实时地并且在记录字段水平利用块密码(block cipher)来访问已加密非关系数据。
历史上,大量敏感数据以明文形式并且基于记录而以非关系文件格式来存储在计算机上,其中假定计算机足够安全防御外部威胁,并且计算机周围的物理安全性(诸如,安保人员和持卡访问)足以保护敏感信息免于非授权访问。然而,随着网络犯罪的抬头以及经由计算机网络的在计算机***之间的增强的交互性,人们可以绕开用于保护计算机***的网络安全机制,并且获得通过互联网对敏感信息的未授权访问。在一定时期内,对于敏感信息而言,政府规定、业务策略、客户感觉以及终端用户需求已经变得需要越来越高的数据安全性,其中以明文方式存储敏感信息不再能够接受。然而,访问并且使用敏感信息的许多应用程序都是已有的应用,这些应用是在多年以前设计的而用于访问明文的敏感信息,而不能访问已加密的非关系数据。由此,在本公开的一个实施方式中,需要对以明文存储的敏感信息进行加密,从而敏感信息被存储为已加密的非关系数据,并且以不会使得应用程序进入错误状况(例如,抛出异常)的方式来去除明文版本。挑战是,许多应用程序没有被设计以访问已加密的非关系数据,并且应用程序时间久远通常不能获得源代码。由此,对应用程序进行定制以访问已加密的非关系数据是昂贵并且困难的。因而,在本公开中,描述了用于支持应用程序访问已加密的非关系数据的技术。
非关系数据是使用由应用程序所期望的预定义顺序和长度来存储的信息。例如,非关系数据可以包括长度为20字节的名称字段,其后跟随有长度为25字节的地址字段。非关系数据包括文档(诸如文本文件)内的自由格式明文,其中自由格式明文可以包括如下信息,诸如个人地址、日期、社会安全号码、信用***码和其他敏感信息或者非敏感信息。由此,如果信息的顺序和/或长度改变,由于例如需要利用块密码来加密的新的数据安全策略,则应用程序期望信息可以不再能够访问数据,这是因为信息的已加密版本偏离于原始顺序和长度。然而,本公开提供了一种访问程序模块,在一个实施方式中,其对原始非关系数据进行加密,并且将非关系数据变为已加密文件拷贝,其中已加密文件拷贝是存储在数据库中的、包括以已加密形式原始非关系数据的新文件。如果应用程序需要从已加密的文件拷贝读取非关系数据,则访问程序模块可以将已加密的文件拷贝中的非关系数据进行解密,并且以应用程序期望的格式向应用程序提供的未加密形式的非关系数据。相反,如果应用程序需要向已加密的文件拷贝写入非关系数据,则访问程序模块可以将来自应用程序的非关系数据加密,并且以已加密形式向存储在数据库中的已加密的文件拷贝写入非关系数据。由此,访问程序模块提供了增强的数据安全性,并且允许继续使用未修改的应用程序。具体地,访问程序模块允许应用程序(例如,现有应用)来在无需在程序上定制的情况下实时地继续使用非关系数据,即使由于使用块密码执行加密的结果而使得非关系数据的预定义顺序和/或长度改变的情况下,也是如此。
块密码是用于对固定比特长度的非关系数据进行加密/解密的算法,其中长度通常为8字节至16字节,然而还可以是其他长度。块密码总是产生块大小的倍数的已加密文本,而与输入长度无关。例如,8字节的块密码将8字节的明文转换至相应的8字节密文,但是16字节的块密码将相同的8字节明文转换至相应的16字节密文。由此,在已加密形式中明文的长度(例如,密文的字节数)是密码块长度的倍数。用于执行加密或者解密的最常规使用的加密是块密码,其包括由国家标准组织(NBS)采纳的数据加密标准(DES)、三重DES(DES的变型)、由国家标准和技术局协会(NIST)公布的高级加密标准(AES)。
此外,如在此使用,实时表示传输、访问以及已加密的非关系数据的存储是及时的,其中当需要时应用程序访问已加密的文件拷贝的部分(例如,记录和记录内的数据字段)。在此基于终端用户的需求来定义及时,其中由应用程序进行的对已加密的非关系数据的传输、访问和/或存储至少比基于每天发生更为频繁。在一个实施方式中,相比于基于批处理的技术,已加密的文件拷贝驻留在运行操作***(诸如,z/VSE,虚拟存储扩展)的计算机硬件***的硬盘上,并且在需要时而不是按照固定调度来访问。已加密的非关系数据可以是基于记录的、非关系文件格式,例如IBM的虚拟存储访问方法文件格式(VSAM文件格式)或者在类似于VSAM文件格式的基于记录的文件格式。
当前使用多种软件程序模块、工具、技术和方案来用于加密和访问非关系数据,其中非关系数据驻留在计算机硬件***上,该计算机硬件***具有基于与操作***(诸如,z/VSE)兼容的记录的文件***和文件格式(即,VSAM文件格式)。例如,当前使用的用于加密非关系数据的软件程序模块涉及使用***提供的加密和***程序方案(与由开发的相兼容)以及关于密码的硬件,以加密数据用于数据交换、数据获取以及数据备份目的。然而,当前使用***提供的加密和***程序方案和密码的硬件,其实施面向成批的处理,其在完整的数据集或者文件上工作,并且运行频率比每天一次更低,其中全部数据集或者文件被加密,包括全部记录字段以便提供增强的数据安全性。
面向成批的处理不能提供对个体记录的实时访问,而是基于每天、每周、每月或者每年来运行。此外,相对于实时处理而言,面向成批的处理是指对完整文件无需人工辅助的处理,其中实时处理是交互式的,并且在需要时涉及应用程序对敏感信息的及时传输、访问和/或存储作为文件(例如,记录)的部分。因而,对文件的及时处理是基于终端用户需求而定义的,其中对非关系数据的传输、访问、和/或存储发生的频率比每天一次更低。
因而,用于访问已加密的非关系数据(作为非关系格式,诸如VSAM文件格式或者类似于VSAM的文件格式)的当前软件程序模块不提供用于对已加密的非关系数据进行透明实时访问的有效方法,这是由于当前软件程序模块或者是面向成批的(即,非实时的)、或者需要应用程序来在程序上进行定制,以便访问已加密的非关系数据。对于已加密的非关系数据的透明实时访问不是面向成批的,并且是指在无需对应用程序在程序上定制的情况下、实时地在记录字段级别对已加密的非关系数据进行电子访问的应用程序。由此,在提供支持应用程序对已加密的非关系数据进行透明实时访问的软件程序模块中存在挑战。为了解决这一挑战,公开了用于支持应用程序对已加密的非关系数据进行访问的计算机***、方法和程序产品。
图1示出了包括计算机10的计算机***,该计算机10编译并且运行透明实时访问程序模块30A。计算机10包括CPU12、操作***(O/S)14、RAM16、ROM18、存储20、I/O接口24、网络接口卡22、访问程序模块30A、应用程序32A、本地文件***34、网络文件***36A和文件数据库38A。在一个实施方式中,文件数据库38A表示存储20上的特定数据库,其中存储20是硬盘。此外,计算机10与I/O设备26通过I/O接口24通信。I/O接口24可操作地连接至CPU12,包括用于往来于外部设备交换信息的任何***。I/O设备26包括任何已知类型的外部设备,诸如显示器设备(例如,监视器)、键盘、鼠标、打印机或者手持设备。另外,本地文件***34与存储20相关联。
计算机10通过网络接口卡22和网络40连接至网络文件***服务器50和计算机150,其中计算机10和计算机150是电子设备,包括膝上型计算机、台式机、服务器和大型机。尽管出于简化目的而没有示出,网络文件***服务器50和计算机150,其中每个计算机150包括CPU、操作***、存储器、存储、I/O接口、和网络接口卡。每个计算机150可以安装并且运行应用程序32B。
计算机10的访问程序模块30A与O/S14通信,并且访问程序模块30A支持应用程序32A和/或32B来访问文件数据库38A中的已加密的非关系数据。在一个实施方式中,访问程序模块30A使用块密码并且实时地(即,以最小的延迟,其中对已加密的非关系数据的访问至少比每天一次更频繁)在记录字段水平访问数据。具体地,访问程序模块30A可操作地连接至本地文件***34和网络文件***36A,其中访问程序模块30A可以响应于本地文件***34向访问程序模块30A传输预定义情况的出现,来从应用程序32A拦截数据请求,可以包括但不限于数据请求是文件打开请求、文件读取请求、文件写入请求或者文件关闭请求。访问程序模块30A还可以响应于网络文件***36A向访问程序模块30A传输预定义情况的出现,来拦截来自应用程序32B的数据请求,包括但不限于数据请求是文件打开请求、文件读取请求、文件写入请求或者文件关闭请求。此外,访问程序模块30A连接至文件数据库38A并且与O/S14通信,以便访问文件数据库38A中的已加密的非关系数据,其中文件数据库38A物理地位于存储20上。
在公开的实施方式中,访问程序模块30A处理利用块密码来加密的非关系数据,因为非关系数据具有由应用程序32A和32B期望的预定的顺序和固定长度的字节。块密码是对称密钥算法,其用以对被称作块的固定长度数据进行操作,并且在本实施方式中,块包括明文的非关系数据,其将被利用用以确定转换的密钥来被转换至已加密的非关系数据的块。已加密的非关系数据的长度将是密码块长度的倍数。在优选实施方式中,因为块密码可以提供更好的加密强度,利用块密码而不是串流加密。然而,如果利用串流加密则已加密的非关系数据的比特长度将变得更长,但是如果应用32A和/或32B正在执行读取请求,则已加密的非关系数据将仍需被解密,以便应用32A和/或32B使用非关系数据。
在所公开的实施方式中,访问程序模块30A允许应用程序32A和/或32B(其可以是现有应用程序),其期望明文数据在文件中的特定位置,以便在不同位置处在另一文件中访问该明文数据的已加密版本。许多现有的程序应用将非关系数据存储为单一文件中的连续数据块。现有程序应用可以使用引入至数据块中的偏移来访问期望记录的期望字段。例如,应用程序可以在文件中存储多个35字节的记录,其中每个记录具有10字节的名称字段,其后跟随有5字节的账户号码字段,以及跟随有20字节的地址字段。应用程序继而可以通过跳过最初的10个字节(名称字段)并且读取第11-15字节(账户号码字段)来快速地访问账户号码字段,从而获得账户号码。假定基础为零的计数***(即,其中第一记录是记录号码0),应用程序可以访问通过简单地读取在n×35+10字节处开始的5个字节,来访问第n个记录的账户号码(即,每个记录是35字节长度,因而第n个记录是文件中的n×35字节,加上10个字节以跳过名称字段)。类似地,可以使用如下运算:n×35获得第n个名称字段,而n×35+15获得第n个地址字段。当使用块密码来加密以此方式构造结构的文件时,关于每个记录内的字段位置的这些假设不再成立,因为当块密码被应用于每个数据字段时,块密码算法将数据字段转换至密码块长度的倍数的大小。例如,在一个实施方式中,如果使用16字节的密码块长度来加密10个字节的名称字段被,结果将是名称字段现在占据16字节。类似地,如果使用16字节的密码块长度来加密20字节的地址字段被,结果将是地址字段现在占据32字节。由此,在一个实施方式中,生成原始明文文件的已加密的文件拷贝,并且访问程序模块30A响应于由应用程序32A发送的数据请求来访问已加密的文件拷贝,并且返回应用程序32A期望的结果,即使在信息是从原始明文文件的已加密版本而不是原始明文文件获取时也是如此。通常,模块30A通过拦截并处理由应用程序32A发送的用于访问曾经是原始明文文件的非关系数据的数据请求,来提供信息。
然而,记录字段水平是指数据记录内的数据字段(例如,银行账户数据字段),其中数据字段例如可以包括:客户名称、地址、客户号码和/或信用***码。由此,访问程序模块30A可以直接与本地文件***34和网络文件***36A通信以拦截数据请求,并且用以向应用程序32A和/或32B提供在记录字段水平对已加密的非关系数据的访问,其中已加密的非关系数据存储在文件数据库38A中。具体地,数据请求由访问程序模块30A利用由O/S14提供的功能性来进行拦截。由O/S14提供的功能性允许访问程序模块30A响应于基于出现预定义条件(即,条件包括但不限于,数据请求是文件打开请求、文件读取请求、文件写入请求或者文件关闭请求)、本地文件***34和/或网络文件***36A调用访问程序模块30A来执行,由此访问程序模块30A确定是否通过数据请求获取控制。
如上所述,访问程序模块30A与本地文件***34和网络文件***36A通信。具体地,本地文件***34向应用32A提供经由访问程序模块30A对已加密的非关系数据的本地访问,其中已加密的非关系数据存储在文件数据库38A中。然而,网络文件***36A向应用32B提供经由访问程序模块30A的对已加密的非关系数据的远程访问,其中已加密的非关系数据存储在文件数据库38A中。
另外,网络文件***服务器50包括透明实时访问程序模块30B、网络文件***36B、以及文件数据库38B,其中网络文件***服务器50与计算机10和150通过网络40通信,以便向应用32A和/或32B提供对已加密的非关系数据的远程访问。具体地,访问程序模块30B可通信地连接至网络文件***36B以便拦截数据请求,以及向应用程序32A和/或32B提供在记录字段水平的对已加密的非关系数据的远程访问,其中已加密的非关系数据存储在文件数据库38B中。通过利用由安装在网络文件***服务器50上的操作***提供的功能性,数据请求由访问程序模块30B拦截。
由操作***提供的功能性允许访问程序模块30B响应于基于出现预定义条件(即,条件包括但不限于,数据请求是文件打开请求、文件读取请求、文件写入请求或者文件关闭请求)、网络文件***36B调用访问程序模块30B来执行,由此访问程序模块30B确定是否通过数据请求获取控制。由此,访问程序模块30B支持应用程序32A和/或32B来在记录字段水平/并且在不必在程序上定制应用程序32A或32B的情况下,利用块密码来访问已加密的非关系数据。
此外,本地文件***34和网络文件***36A在逻辑上将信息组织为文件数据库38A中的文件和目录的层级结构,其中文件数据库38A中的每个文件可以存储数据。另外,网络文件***36B将文件数据库38B在逻辑上将信息组织为文件数据库38B中的文件和目录的层级结构,其中文件数据库38A中的每个文件还可以存储数据。在一个实施方式中,本地文件***34、网络文件***36A、网络文件***36B的目录可以实现为被指定格式的文件,该文件包括关于其他文件和目录的信息。
在本实施方式中,网络40根据信息递送的客户端/服务器模型,提供计算机10、网络文件***服务器50和计算机150之间的数据连接性。然而,在其他实施方式中,计算机10和150可以不具有网络访问,这是由于本公开操作以改进在计算机可读存储设备上存储的非关系数据的数据安全性,即使在存储设备没有连接到网络40的情况下。
图2是示出访问程序模块30A的框图,该访问程序模块30A执行从具有第一格式的原始明文文件到具有第二格式的已加密的文件拷贝的转换,以便提供增强的数据安全性。在所公开的实施方式中,原始明文文件被制作拷贝并且被加密,并且该拷贝经由应用程序32A和/或32B可访问。所公开的实施方式用于一种普通情况,其中应用程序32A和/或32B可以被修改以访问与应用程序32A和/或32B原始被编写以处理时不同大小的记录字段,或者可以被修改以访问与应用程序32A和/或32B被原始编写以处理时不同的一个或者多个文件。在备选实施方式中,原始明文文件的已加密版本可以替代原始明文文件。
如上所述,访问程序模块30A可以将具有第一格式的原始明文文件的记录字段转换至具有第二格式的已加密的文件拷贝,其中记录字段被串行地组织(即,以非关系文件格式)。尽管在访问程序模块30A的上下文中描述了转换,然而相同的转换可以由访问程序模块30B执行。需要具有第二格式的已加密的文件拷贝,因为利用块密码以加密非关系数据,这改变已加密数据字段的长度(在发送数据请求时应用程序32A和/或32B期望处理的)。例如,如果包括非关系数据的原始明文文件的明文数据字段具有100比特的长度,并且密码的块长度为128比特,则已加密的文件拷贝的相应已加密数据字段将为128比特(即,密码块长度的倍数)。由此,由访问程序模块30A执行的加密提高了存储在硬盘上的非关系数据的数据安全性,然而应用程序32A和/或32B将不能读取包括非关系数据的已加密数据字段,除非该数据字段被转换回由应用程序32A和/或32B期望的第一格式。
非关系数据是具有由应用程序所期望的预定顺序和长度的信息。因而,为了应用32A和/或32B的能够利用已加密的文件拷贝的数据字段内的已加密数据,继而访问程序模块30A需要将数据转换回由应用32A和/或32B期望的第一格式。例如,通过使用先前定义的35字节的记录,应用32A可以假设账户号码字段开始于记录的第11个字节。然而,由于35字节记录已经被加密,则账户号码字段现在可以开始于第17字节(在向其应用16字节的块密码之后,假设10字节的名称字段已经变成16字节),并且现在是16字节长度(另外,假设5字节的账户号码字段已经被利用16字节的块密码来加密,并且现在是16字节长度)。当应用程序32A发出数据请求以访问在原始明文文件中的第n个记录的第11字节处的账户号码字段时,访问程序模块30A将拦截该数据请求,访问开始于第n个记录的第17字节处的16个字节,解密该记录字段并且向应用32A返回原始明文信息。
***程序员/管理员创建驻留于硬盘(例如,计算机10的存储20)上的配置文件,其可以由访问程序模块30A容易地进行访问。由于配置文件包括用于如下的信息,因而需要该配置文件:访问程序模块30A用于打开已加密的文件拷贝、以及响应于由应用程序32A和/或32B发送的数据请求而提供对已加密的非关系数据的访问。然而,在配置文件中的配置信息的部分(例如,关于原始明文文件的第一格式的示例配置信息)可以由访问程序模块30A通过解析应用程序32A和/或32B的源代码(如果该源代码可获得的话)来自动生成。
在本实施方式中,具有第二格式的已加密的文件拷贝是通过利用原始明文文件的第一格式以及对应于所选择加密算法的规则来创建。一旦第一次创建已加密的文件拷贝,则原始明文文件内的明文非关系数据(例如,未加密敏感信息)被去除,另外可以出于防止应用程序32A和/或32B由于不能找到原始明文文件而进入错误状态(即,抛出异常)的情况,保留原始明文文件。
在配置文件的配置信息以及管理在第一格式和第二格式之间的记录字段转换的规则中提供对应于所选择加密算法的规则。具体地,对应于所选择加密算法的规则确定针对访问程序模块30A的密码块长度,以用于将原始明文文件的记录字段转换至已加密的文件拷贝的记录字段。该规则还确定从具有第一格式的原始明文文件的记录字段到具有第二格式的已加密的文件拷贝的记录字段的转换。另外,作为配置信息的部分,配置文件包括:包括用于加密所配置的文件的列表、所需加密密钥、待加密原始明文文件内的记录字段、用于访问程序模块30A以将具有第一格式的原始明文文件的记录字段转换至具有第二格式的已加密的文件拷贝的加密算法、以及已加密的非关系数据在已加密的文件拷贝内的位置。
记录200表示具有第一格式的原始明文文件的记录,而记录220表示到已加密的文件拷贝中的第二格式的记录200的转换。在本实施方式中,第一格式要求记录字段成为如下串行顺序:主键字段202、数据字段203、第一备选索引/键(第一AIX)字段204、数据字段205、第二备选索引/键(第二AIX)字段206。键字段202内的内容、第一AIX字段204、以及第二AIX字段206由现有应用程序(应用程序32A或者32B)生成,然而程序员/管理员确定键字段202、第一AIX字段204和第二AIX字段206在原始明文文件中的大小和位置。字段202、203、204、205和206中的每个是已知的预定义长度。在本实施方式中,第一格式需要记录字段作为如上所述的指定串行顺序。在另一实施方式中,第一格式可以要求记录字段作为不同的顺序,其中第一格式是由应用程序32A和/或32B确定。
然而,主要和备选索引/键字段是未加密记录字段,其用于定位记录在已加密的文件拷贝内的位置,以便响应于应用程序32A和/或32B的读取请求或者写入请求。依赖于对应于已加密的文件拷贝的原始明文文件的配置,可以使用多于一个的备选索引/键字段。由此,原始明文文件可以包括一个或者多个备选索引/键字段,或者不包括备选索引/键字段。然而,在本实施方式中,原始明文文件包括两个索引/键字段。具体地,第一AIX字段204和第二AIX字段206两者均为备选索引/键字段,其中键字段202是主加密键字段。数据字段203和205可以包括敏感信息,诸如社会安全号码或者信用***码。通过使用原始明文文件的第一格式以及对应于所选择加密算法的规则,访问程序模块30A将记录200的键字段202、第一AIX字段204和第二AIX字段206分别转换至记录220的键字段拷贝223、第一AIX字段拷贝224和第二AIX字段拷贝226。此外,数据字段203和205被访问程序模块30A分别转换至数据字段拷贝226和227。数据字段226和227是已加密敏感信息,可以包括社会安全号码和/或信用***码,并且在由访问程序模块30A执行转换之后,数据字段203和205的字段长度必须是密码块长度的倍数。因而,如果转换没有生成作为密码块长度倍数的数据字段拷贝226和227的字段长度,则利用填充字段(pad field)228来将已加密数据字段拷贝226和227填充至密码块长度的倍数。基于块的加密算法需要正被加密的数据是密码块长度的倍数(例如,DES和三重DES使用8字节的块长度,而AES使用16字节的块长度)。
此外,在本实施方式中,管理转换的规则需要记录220的记录字段是第二格式,其中记录字段的串行顺序如下所示:HDR222、键字段拷贝223、第一AIX字段拷贝224、第二AIX字段拷贝225、数据字段拷贝226和227以及填充字段228。HDR是由访问程序模块30A创建的报头字段。HDR222可以用于存储关于记录220的附加信息,以便在第一格式和第二格式之间提供正确转换,例如HDR222可以存储记录220的长度(如果记录220具有可变长度),或者存储来自原始明文文件的原始记录200的长度。HDR222、键字段拷贝223、第一AIX字段拷贝224和第二AIX字段拷贝225可以全部是保持未加密的字段,这是因为这些字段被配置以不由***程序员/管理员进行加密。
在此,通常而言针对已加密的文件拷贝中的每个记录,报头字段是第一个,其后跟随有未被加密的主键字段、未被加密的一个或者多个备选索引/键字段、以及可以包括敏感信息的一个或者多个数据字段。此外,数据字段可以跟随有填充字段用于构成所组合数据字段的长度,其是已加密的、密码块长度的倍数。
图3是示出访问程序模块30A或者30B操作的流程图,该访问程序模块30A或者30B处理数据请求以便执行打开操作、读取操作写入操作或者关闭操作。在本实施方式中,访问程序模块30A正在处理数据请求,其中应用程序32B正在向计算机10发送一个或者多个数据请求。具体地,访问程序模块30A与网络文件***36A通信,并且确定是否拦截对应于具有第一格式的原始明文文件的数据请求(框300),其中由应用程序32B向计算机10发送数据请求。访问程序模块30A基于出现预定条件(包括但不限于,数据请求是文件打开请求、文件读取请求、文件写入请求或者文件关闭请求)而确定是否拦截数据请求。如果访问程序模块30A不拦截数据请求,则访问程序模块30A结束,并且访问程序模块30A不执行数据请求的进一步处理。
然而,如果访问程序模块30拦截数据请求,则访问程序模块30A确定对应于数据请求的原始明文文件是否被配置用于加密。访问程序模块30A可以通过对照包括配置用于加密的文件列表,执行查找/检查确定原始明文文件,来确定原始明文文件是否配置用于加密,其中该列表是配置文件。
如果对照列表的查找/检查结果指示原始明文文件没有配置用于加密,则访问程序模块30A取消执行。此外,由访问程序模块30A进行的数据请求处理结束,这是因为原始明文文件没有配置用于加密,这指示访问程序模块30A不需要用于向应用程序32B提供对已加密的非关系数据的访问。否则,如果对照列表的查找/检查结果指示原始明文文件被配置用于加密,则访问程序模块30A确定原始明文文件的已加密的文件拷贝是否已经被打开。
如果原始明文文件的已加密的文件拷贝已经被打开(确定框305的“是”分支),则访问程序模块30A确定是否关闭已加密的文件拷贝。如果数据请求是关闭请求(确定框306的“是”分支),则访问程序模块30A执行关闭操作,以在应用程序32B已经结束对于已加密的文件拷贝的工作之后将已加密的文件拷贝关闭(框307)。关闭操作释放用于在记录字段级别访问已加密的文件拷贝的记录内容的资源(例如,加密密钥和已加密的文件拷贝)。在关闭已加密的文件拷贝之后,由访问程序模块30A执行的对数据请求的处理结束。然而,如果数据请求不是关闭操作(在确定框306处的“否”分支),则访问程序模块30A向主要和备选索引/键字段应用字段映射(框330)。
向主要和备选索引/键字段应用字段映射涉及,将对应于具有第一格式的原始明文文件的记录的主要和备选索引/键字段转换至具有第二格式的已加密的文件拷贝内的记录的主要和备选索引/键字段。这一转换是由上文图2所述的在配置文件中提供的规则来管理的。访问程序模块30A向主要和备选索引/键字段应用字段映射,以便该主要和备选索引/键字段可用于访问程序模块30A,以便响应于由应用程序32B发送的读取请求或者写入请求来定位已加密的文件拷贝。具体地,为了在已加密的文件拷贝内进行定位,具有第一格式的原始明文文件的主要和备选索引/键字段被转换至具有第二格式的已加密的文件拷贝的主要和备选索引/键字段,其中转换的主要和备选索引/键字段被用于在已加密的文件拷贝内定位记录。由此,定位是指对原始明文文件或者已加密的文件拷贝内的特定记录进行定位。例如,通过使用已转换的主要或者备选索引/键字段来在已加密的文件拷贝内进行定位并且定位期望的记录,访问程序模块30A将向网络文件***36A提供主键或者备选索引/键字段。网络文件***36A维护索引,并且可以使用主要或者备选索引/键字来在索引中找到匹配的条目,定位对应于索引中的条目的期望记录,并且作为输出向访问程序模块30A返回期望的记录。
经由来自应用程序32B的数据请求而基于被请求的信息,访问程序模块30A可以确定是否需要定位。例如,如果在先前数据请求之后立刻执行当前数据请求,其中两者数据请求均对应于相同记录,则不需要在已加密的文件拷贝内进行定位,这是由于先前数据请求已经在已加密的文件拷贝内定位了正确记录。备选地,在先前数据请求之后立刻执行当前数据请求,但是两个数据请求不是对应于相同记录,则需要定位以便在已加密的文件拷贝中定位正确记录。
然而,如果已加密的文件拷贝没有被打开(确定框305中的“否”分支),则访问程序模块30A并不立刻向主要和备选索引/键字段应用字段映射。代替的是,访问程序模块30A继而验证在配置文件中的配置信息包括用于执行打开操作所需的全部属性,以便打开具有第二格式的已加密的文件拷贝(框310)。在一个实施方式中,该属性包括所需的加密密钥、具有第一格式的原始明文文件内的将被加密的字段数据、用于将记录字段进行加密的加密算法、以及已加密的文件拷贝的文件名。
在验证配置信息之后,如果配置信息不包括用于执行打开操作的全部属性,则访问程序模块30A向应用程序32B返回错误,并且取消执行打开操作,其中由访问程序模块30A进行的数据请求的进一步处理结束。如果配置信息没有包括用于执行打开操作的全部属性,则访问程序模块30A取消打开操作,这是由于如果配置信息不完整则访问程序模块30A不能完成打开操作。
然而,如果配置信息包括用于执行打开操作的全部属性,则访问程序模块30A打开具有第二格式的已加密的文件拷贝,其中已加密的文件拷贝是原始明文文件的已加密版本(框315)。已加密的文件拷贝可以驻留在硬盘上,并且在原始明文文件被配置用于加密以及首次由***程序员/管理员访问之后,初始地由***程序员/管理员创建。需要具有第二格式的已加密的文件拷贝,这是因为利用块密码改变已加密数据字段的长度。例如,如果原始明文文件的明文数据字段的长度为100比特,并且密码块长度是128比特,则已加密的文件拷贝的相对应已加密数据字段将是128比特。一旦已加密的文件拷贝被成功打开,则可以由应用程序32B执行多个读取和写入请求。因而,打开操作支持应用程序32B来通过使用记录字段级别的块密码来访问已加密的非关系数据,并且在无需在程序上定制应用程序32B的情况下实时地进行。
接着,如果访问程序模块30A不能成功打开已加密的文件拷贝,则访问程序模块30A向应用程序32B返回错误并且取消执行,其中由访问程序模块30A进行的数据请求的进一步处理结束。如果不能成功打开已加密的文件拷贝,则访问程序模块30A取消执行,这是因为已加密的文件拷贝对于访问程序模块30A而言是不可用的,即不能执行用于应用程序32B的读取请求或者写入请求。
然而,如果打开操作能够成功地打开已加密的文件拷贝,则访问程序模块30A验证已加密的文件拷贝(框320)。为了验证已加密的文件拷贝,访问程序模块30A确定包括记录长度、密钥长度的已加密的文件拷贝的属性是否匹配于在配置文件的配置信息中提供的属性。典型地,已加密的文件拷贝的记录长度必须足够大以便容纳全部主要和备选索引/键字段、全部非加密的字段以及全部已加密字段。此外,还可以包括附加填充以便与所选择加密算法的密码块长度相一致,这是因为基于块的加密算法需要被加密之后的数据是密码块长度的倍数。
因而,在验证已加密文件拷贝之后,如果记录长度和密钥长度不匹配于在配置信息中提供的属性,则访问程序模块30A向应用程序32B返回错误并且取消执行,其中由访问程序模块30A进行的数据请求的进一步处理结束。如果记录长度和密钥长度与在配置信息中提供的属性不匹配,则取消访问程序模块30A的执行,这是因为已加密的文件拷贝将不能由访问程序模块30A使用以执行用于应用程序32A和/或32B的读取请求或者写入请求。
然而,如果在验证已加密的文件拷贝之后,访问程序模块30A确定记录长度和密钥长度匹配于在配置信息中提供的属性,则访问程序模块30A将加密密钥加载至存储器(即,RAM16)或者其他适合的计算机可读有形存储设备中(框325)。加密密钥是确定加密算法输出的某长度的值。具体地,加密密钥用于执行加密操作,以便将具有第一格式的原始明文文件的记录字段转换至具有第二格式的已加密的文件拷贝的记录字段,其中加密密钥可以由终端用户创建或者由软件程序生成。加密密钥的长度典型地以比特来测量。由于加密密钥仅仅是可以由终端用于作为加密密钥的一个值、密码或者口令短语,因而加密密钥易于由终端用户记忆。备选地,加密密钥甚至可以从外部密钥存储位置加载。配置文件中的配置信息指示可以使用哪种类型的加密密钥来执行加密操作,以及在何处找到该密钥。可以使用的加密密钥的类型可以包括但不限于,用于由RSA加密或者类似非对称加密算法使用的公共/私有密钥对、用于由DES、三重DES、AES或者类似对称加密算法使用的秘密密钥。
接着,如果没有加载全部加密密钥并且其对于访问程序模块30A不可用,则访问程序模块30A向应用程序32B返回错误并且取消执行,其中由访问程序模块30A进行的数据请求的进一步处理结束。如果没有加载全部加密密钥或者其对于访问程序模块30A不可用,则取消访问程序模块30A,这是因为访问程序模块30A将不能执行对记录字段进行的后续加密或者解密(这是响应于由应用程序32B发出的读取请求或者写入请求所需要的)。
然而,如果加载了全部加密密钥并且其可用于访问程序模块30A,则访问程序模块30A向主要和备选索引/键字段应用字段映射(框330)。如上所述,向主要和备选索引/键字段应用字段映射涉及,执行将对应于具有第一格式的原始明文文件的记录的主要和备选索引/键字段转换至具有第二格式的已加密的文件拷贝内的记录的主要和备选索引/键字段。这一转换由上文图2所述的在配置文件中提供的规则管理。响应于由应用程序32B发送的读取请求或者写入请求,访问程序模块30A向主要和备选索引/键字段应用字段映射,以便主要和备选索引/键字段可用于访问程序模块30A以在已加密的文件拷贝中定位记录。
在应用字段映射之后,访问程序模块30A确定由应用程序32B所发送的数据是读取请求或者写入请求(框335)。如果访问程序模块30A确定来自应用程序32B的数据请求是读取请求(确定框340的“是”分支),则访问程序模块30A执行读取请求操作并解密数据(框345)。然而,如果访问程序模块30A确定来自应用程序32B的数据请求不是读取请求(确定框340的“否”分支),则访问程序模块30A执行写入请求操作并加密数据(框350)。
具体地,在数据请求是读取请求的情况下,访问程序模块30A执行读取请求操作以允许应用程序32B从已加密的文件拷贝中在记录字段级别读取记录内容(即,数据),其中应用程序32B向访问程序模块30A提供期望被读取记录的主要和备选索引/键。为了能够从期望记录读取记录内容,如果需要,可以使用主要和备选索引/键来定位期望的记录。一旦在已加密的文件拷贝内定位期望的记录,则来自记录内的数据字段的记录内容(即,已加密的非关系数据)被读取到存储器(例如计算机10的RAM16)中,并且被解密。当执行读取请求操作时,访问程序模块30A知晓需要被解密的记录字段,这是因为被解密的记录字段的名称和位置可以列出在配置文件中,并且作为配置信息的部分而对于访问程序模块30A可用。除了数据字段,记录内的其他记录字段可以被读取至存储器。为了解密来自数据字段的记录内容,访问程序模块30A使用被加载到存储器(即,RAM16)或者其他适合计算机可读有形存储设备中的至少一个加密密钥,来执行从已加密的非关系数据转换回到由应用程序32B所期望的未加密非关系数据。另外,被读入到存储器中的数据字段和其他记录字段可以被映射至具有第一格式的记录,以便应用程序32B可以理解并使用该记录。接着,未加密数据字段和/或其他记录字段可以被传输至应用程序32B,以成功完成读取请求操作,其中由访问程序模块30A进行的数据请求的进一步处理结束。
如果读取请求操作未成功,则访问程序模块30A向应用程序32B返回错误并取消执行,其中由访问程序模块30A进行的数据请求的进一步处理结束。然而,当已加密的文件拷贝被打开时,后续读取请求或者写入请求可以由应用程序32A和/或32B来执行。
在数据请求是写入请求的情况下,访问程序模块30A执行写入请求操作,以允许应用程序32B在记录字段级别向已加密的文件拷贝写入记录内容(即,数据),其中应用程序32B向访问程序模块30A提供期望被写入记录的主要和备选索引/键。如果需要,可以利用主要和备选索引/键来在已加密的文件拷贝内定位位置,并且向期望记录写入记录内容。一旦定位到适合的位置,则通过使用被加载到存储器中的加密密钥之一,访问程序模块30A将来自由应用程序32B传递的原始记录的部分记录内容进行加密,其中记录内容的部分在由***程序员/管理员创建的配置文件中被指定用于加密。访问程序模块30A可以将来自由应用程序32B传递的记录的仅部分记录内容进行加密,这是因为仅记录内容的部分被***程序员/管理员配置进行加密。接着,访问程序模块30A利用配置信息来向已加密的文件拷贝执行写入请求操作,其中记录内容被写入已加密的文件拷贝的期望记录字段,并且由访问程序模块30A进行的数据请求的进一步处理结束。
如果写入请求操作不成功,则访问程序模块30A向应用程序32B返回错误,并且取消执行写入请求操作,其中由访问程序模块30A进行的进一步处理结束。然而,当已加密的文件拷贝被打开时,可以由应用程序32A和/或32B执行后续的读取请求或者写入请求。
在应用程序32B发送针对在计算机10上存储的非关系数据的数据请求的上下文中,已经在上文中描述了在图3中示出的流程图,其中访问程序模块30A处理经由网络文件***36A的数据请求。然而,该流程还应用于备选实施方式,其中针对在计算机10上存储的非关系数据的数据请求是由应用程序32A发出,并且访问程序模块30A处理经由本地文件***34的数据请求。此外,该流程还应用于另一备选实施方式,其中针对在网络文件***服务器50上存储的非关系数据的数据请求是由应用程序32A或者32B发出,并且访问程序模块30B处理经由网络文件***36B的数据请求。
出于示出和说明的目的已经呈现了本发明的各个方面的上文的描述。其并不旨在穷尽或者限制所公开的精确形式,显然,对于本领域技术人员是易见的多种修改和变型旨在包括在由所附权利要求限定的本发明的范围内。
Claims (18)
1.一种用于已加密文件访问的方法,包括:
连接至至少一个文件***的访问程序模块拦截用于访问明文文件的数据请求,所述明文文件具有在硬盘上物理地并且连续地存储的信息,并且具有由发送所述数据请求的程序期望的预定顺序和长度,其中所述明文文件包括具有键字段和明文数据字段的明文记录;
所述访问程序模块基于配置文件和所述数据请求确定与所述明文文件相关联的已加密文件,其中所述配置文件指示与所述明文文件相关联的所述已加密文件,并且所述已加密文件包括与所述明文记录相关联的已加密记录,并且其中所述已加密记录包括报头字段、所述键字段、以及与所述明文数据字段相关联的已加密数据字段;
所述访问程序模块基于所述配置文件确定一个或者多个加密密钥;以及
所述访问程序模块基于所述一个或者多个加密密钥和所述键字段来访问所述已加密数据字段。
2.根据权利要求1所述的方法,其中所述访问程序模块确定与所述明文文件相关联的所述已加密文件进一步包括:
生成具有配置信息的所述配置文件,所述配置信息包括包含被配置用于加密的所述明文文件的列表、所述明文文件的格式、针对所述已加密数据字段执行加密和解密操作所需的一个或者多个加密密钥、要加密的所述明文文件内的所述明文数据字段、供所述访问程序模块用于将所述明文数据字段转换至所述已加密数据字段的加密算法、以及要求在所述已加密文件的所述已加密记录内的字段的串行顺序的规则。
3.根据权利要求2所述的方法,其中在所述配置信息中包括的所述明文文件的所述格式通过所述访问程序模块解析所述程序的源代码来生成。
4.根据权利要求2所述的方法,其中所述串行顺序使得所述已加密记录开始于所述报头字段,跟随有所述键字段,以及跟随有所述已加密数据字段。
5.根据权利要求4所述的方法,其中所述已加密数据字段跟随有填充字段,并且与所述填充字段的长度相结合的所述已加密数据字段的长度是密码块长度的倍数。
6.根据权利要求1所述的方法,其中所述至少一个文件***包括本地文件***、网络文件***、或者所述本地文件***和所述网络文件***两者。
7.根据权利要求1所述的方法,其中安装在第一计算机上的所述程序向所述第一计算机的至少一个文件***发送所述数据请求,或者安装在所述第一计算机上的所述程序通过网络向第二计算机的所述至少一个文件***发送所述数据请求。
8.根据权利要求1所述的方法,其中:
连接至所述至少一个文件***的所述访问程序模块拦截所述数据请求包括,响应于所述至少一个文件***接收来自所述程序的所述数据请求以及预定条件的出现,所述至少一个文件***调用所述访问程序模块;以及
所述预定条件包括所述至少一个文件***接收所述数据请求,其中所述数据请求是打开请求、关闭请求、读取请求或者写入请求。
9.根据权利要求1所述的方法,其中所述访问程序模块基于所述一个或者多个加密密钥和所述键字段访问所述已加密数据字段包括:
利用所述键字段来定位所述已加密文件内的所述已加密记录,利用块密码和所述一个或者多个加密密钥来解密所述已加密记录的所述已加密数据字段,将所述键字段和所述已加密数据字段转换至由所述程序期望的所述明文文件的格式,以及随后基于所述数据请求返回所述信息的未加密版本;以及
利用所述键字段来定位所述已加密文件内的所述记录,利用块密码和所述一个或者多个加密密钥来加密所述明文数据字段,以及随后将所述明文数据字段转换至由所述访问程序模块确定的所述已加密文件的格式,并且随后将信息的已加密版本写入所述已加密数据字段,所述信息在硬盘上物理地并且连续地存储,并且具有由发送所述数据请求的所述程序期望的预定顺序和长度。
10.一种用于已加密文件访问的计算机***,包括:
一个或者多个处理器、一个或者多个计算机可读存储器、一个或者多个计算机可读存储介质、以及存储在所述一个或者多个存储介质上的程序用于由所述一个或者多个处理器经由所述一个或者多个存储器执行,所述程序指令包括:
用于由连接至至少一个文件***的访问程序模块拦截用于访问明文文件的数据请求的程序指令,所述明文文件具有在硬盘上物理地并且连续地存储的信息,并且具有由发送所述数据请求的程序期望的预定顺序和长度,其中所述明文文件包括具有键字段和明文数据字段的明文记录;
用于基于配置文件和所述数据请求确定与所述明文文件相关联的已加密文件的程序指令,其中所述配置文件指示与所述明文文件相关联的所述已加密文件,并且所述已加密文件包括与所述明文记录相关联的已加密记录,以及其中所述已加密记录包括报头字段、所述键字段、以及与所述明文数据字段相关联的已加密数据字段;
用于基于所述配置文件确定一个或者多个加密密钥的程序指令;以及
用于基于所述一个或者多个加密密钥和所述键字段来访问所述已加密数据字段的程序指令。
11.根据权利要求10所述的计算机***,其中用于确定与所述明文文件相关联的所述已加密文件的所述程序指令进一步包括:
用于生成具有配置信息的所述配置文件的程序指令,所述配置信息包括包含被配置用于加密的所述明文文件的列表、所述明文文件的格式、针对所述已加密数据字段执行加密和解密操作所需的一个或者多个加密密钥、要加密的所述明文文件内的所述明文数据字段、供所述访问程序模块用于将所述明文数据字段转换至所述已加密数据字段的加密算法、以及要求在所述已加密文件的所述已加密记录内的字段的串行顺序的规则。
12.根据权利要求11所述的计算机***,其中在所述配置信息中包括的所述明文文件的所述格式通过所述访问程序模块解析所述程序的源代码来生成。
13.根据权利要求11所述的计算机***,其中所述串行顺序使得所述已加密记录开始于所述报头字段,跟随有所述键字段,以及跟随有所述已加密数据字段。
14.根据权利要求13所述的计算机***,其中所述已加密数据字段跟随有填充字段,并且与所述填充字段的长度相结合的所述已加密数据字段的长度是密码块长度的倍数。
15.根据权利要求10所述的计算机***,其中所述至少一个文件***包括本地文件***、网络文件***、或者所述本地文件***和所述网络文件***两者。
16.根据权利要求10所述的计算机***,其中安装在第一计算机上的所述程序向所述第一计算机的至少一个文件***发送所述数据请求,或者安装在所述第一计算机上的所述程序通过网络向第二计算机的所述至少一个文件***发送所述数据请求。
17.根据权利要求10所述的计算机***,其中:
拥有由连接至所述至少一个文件***的所述访问程序模块拦截所述数据请求的程序指令包括,响应于所述至少一个文件***接收来自所述程序的所述数据请求以及预定条件的出现,所述至少一个文件***调用所述访问程序模块;以及
所述预定条件包括所述至少一个文件***接收所述数据请求,其中所述数据请求是打开请求、关闭请求、读取请求或者写入请求。
18.根据权利要求10所述的计算机***,其中所述程序指令基于所述一个或者多个加密密钥和所述键字段访问所述已加密数据字段包括:
利用所述键字段来定位所述已加密文件内的所述已加密记录,利用块密码和所述一个或者多个加密密钥来解密所述已加密记录的所述已加密数据字段,将所述键字段和所述已加密数据字段转换至由所述程序期望的所述明文文件的格式,以及随后基于所述数据请求返回所述信息的未加密版本;以及
利用所述键字段来定位所述已加密文件内的所述记录,利用块密码和所述一个或者多个加密密钥来加密所述明文数据字段,以及随后将所述明文数据字段转换至由所述访问程序模块确定的所述已加密文件的格式,以及随后将信息的已加密版本写入所述已加密数据字段,所述信息在硬盘上物理地并且连续地存储,并且具有由发送所述数据请求的所述程序期望的预定顺序和长度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/417,774 US9152811B2 (en) | 2012-03-12 | 2012-03-12 | Transparent real-time access to encrypted non-relational data |
US13/417,774 | 2012-03-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103336929A true CN103336929A (zh) | 2013-10-02 |
CN103336929B CN103336929B (zh) | 2016-06-15 |
Family
ID=47998824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310073996.4A Expired - Fee Related CN103336929B (zh) | 2012-03-12 | 2013-03-08 | 用于已加密文件访问的方法和*** |
Country Status (4)
Country | Link |
---|---|
US (2) | US9152811B2 (zh) |
CN (1) | CN103336929B (zh) |
DE (1) | DE102013203126B4 (zh) |
GB (1) | GB2511295A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104144034A (zh) * | 2013-12-04 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 密码共享和获取方法及装置 |
CN104657670A (zh) * | 2013-11-19 | 2015-05-27 | 北京天地超云科技有限公司 | 一种基于数据加密的配置文件安全使用方法 |
CN109213850A (zh) * | 2017-07-06 | 2019-01-15 | 卡巴斯基实验室股份制公司 | 确定包含机密数据的文本的***和方法 |
CN110892403A (zh) * | 2017-05-03 | 2020-03-17 | 尤尼斯康通用身份控制股份有限公司 | 安全地访问数据的方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5750497B2 (ja) * | 2013-12-11 | 2015-07-22 | 株式会社アイキュエス | アクセス制御装置、プログラム及びアクセス制御システム |
EP2884692B1 (en) * | 2013-12-13 | 2020-05-20 | Nxp B.V. | Updating software on a secure element |
US10055471B2 (en) * | 2015-11-18 | 2018-08-21 | American Express Travel Related Services Company, Inc. | Integrated big data interface for multiple storage types |
EP3438864B1 (en) * | 2016-04-01 | 2023-05-10 | Telefonica Cybersecurity & Cloud Tech S.L.U. | Method and system for protecting a computer file against possible malware encryption |
CN110730066A (zh) * | 2019-08-30 | 2020-01-24 | 深圳壹账通智能科技有限公司 | 数据的网络加密、解密方法和装置、存储介质、电子装置 |
CN111783140A (zh) * | 2020-07-02 | 2020-10-16 | 奇安信科技集团股份有限公司 | 请求响应方法及装置、电子设备及计算机可读存储介质 |
US11386227B1 (en) * | 2021-02-24 | 2022-07-12 | CyberAdjust, LLC | Protection of databases, data transmissions and files without the use of encryption |
US11943226B2 (en) | 2021-05-14 | 2024-03-26 | International Business Machines Corporation | Container and resource access restriction |
CN117424752B (zh) * | 2023-12-07 | 2024-03-15 | 佛山市顺德弘金电器科技有限公司 | 一种通信加密解密方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060277413A1 (en) * | 2005-06-01 | 2006-12-07 | Drews Dennis T | Data security |
CN101401105A (zh) * | 2006-04-18 | 2009-04-01 | 国际商业机器公司 | 用于提供加密文件***的加密装置和方法 |
US20100074441A1 (en) * | 2006-06-28 | 2010-03-25 | Pauker Matthew J | Data processing systems with format-preserving encryption and decryption engines |
US20110103579A1 (en) * | 2009-10-30 | 2011-05-05 | Martin Luther W | Format preserving encryption systems for data strings with constraints |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6259789B1 (en) * | 1997-12-12 | 2001-07-10 | Safecourier Software, Inc. | Computer implemented secret object key block cipher encryption and digital signature device and method |
US6832316B1 (en) * | 1999-12-22 | 2004-12-14 | Intertrust Technologies, Corp. | Systems and methods for protecting data secrecy and integrity |
US7757278B2 (en) | 2001-01-04 | 2010-07-13 | Safenet, Inc. | Method and apparatus for transparent encryption |
US20020159588A1 (en) * | 2001-04-27 | 2002-10-31 | Kauffman Jason R. | Cryptography with unconditional security for the internet, commercial intranets, and data storage |
US8001242B2 (en) | 2001-05-08 | 2011-08-16 | International Business Machines Corporation | Method for redirection of host data access to multiple non-host file systems or data stores |
US7640427B2 (en) * | 2003-01-07 | 2009-12-29 | Pgp Corporation | System and method for secure electronic communication in a partially keyless environment |
US7171258B2 (en) * | 2003-06-25 | 2007-01-30 | Cardiac Pacemakers, Inc. | Method and apparatus for trending a physiological cardiac parameter |
US7200226B2 (en) * | 2003-09-04 | 2007-04-03 | Intel Corporation | Cipher block chaining decryption |
US7885405B1 (en) * | 2004-06-04 | 2011-02-08 | GlobalFoundries, Inc. | Multi-gigabit per second concurrent encryption in block cipher modes |
JP2006155190A (ja) * | 2004-11-29 | 2006-06-15 | Sony Corp | データ記憶装置、データ処理方法、記録媒体、およびプログラム |
US7639819B2 (en) | 2005-06-16 | 2009-12-29 | Oracle International Corporation | Method and apparatus for using an external security device to secure data in a database |
US20070079386A1 (en) | 2005-09-26 | 2007-04-05 | Brian Metzger | Transparent encryption using secure encryption device |
US7694134B2 (en) | 2005-11-11 | 2010-04-06 | Computer Associates Think, Inc. | System and method for encrypting data without regard to application |
US7836508B2 (en) | 2005-11-14 | 2010-11-16 | Accenture Global Services Limited | Data masking application |
US9176975B2 (en) | 2006-05-31 | 2015-11-03 | International Business Machines Corporation | Method and system for transformation of logical data objects for storage |
US8855296B2 (en) * | 2006-06-28 | 2014-10-07 | Voltage Security, Inc. | Data processing systems with format-preserving encryption and decryption engines |
KR100859162B1 (ko) | 2007-10-16 | 2008-09-19 | 펜타시큐리티시스템 주식회사 | 암호화된 칼럼을 포함하는 데이터베이스에서의 쿼리의 암호화 변조를 통한 사용자 쿼리 처리 장치 및 방법 |
US8594321B2 (en) * | 2007-10-26 | 2013-11-26 | International Business Machines Corporation | Apparatus and method for operating a symmetric cipher engine in cipher-block chaining mode |
US8416947B2 (en) * | 2008-02-21 | 2013-04-09 | Red Hat, Inc. | Block cipher using multiplication over a finite field of even characteristic |
-
2012
- 2012-03-12 US US13/417,774 patent/US9152811B2/en not_active Expired - Fee Related
-
2013
- 2013-02-08 GB GB1302253.8A patent/GB2511295A/en not_active Withdrawn
- 2013-02-26 DE DE102013203126.2A patent/DE102013203126B4/de active Active
- 2013-03-08 CN CN201310073996.4A patent/CN103336929B/zh not_active Expired - Fee Related
-
2014
- 2014-01-07 US US14/148,936 patent/US9152813B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060277413A1 (en) * | 2005-06-01 | 2006-12-07 | Drews Dennis T | Data security |
CN101401105A (zh) * | 2006-04-18 | 2009-04-01 | 国际商业机器公司 | 用于提供加密文件***的加密装置和方法 |
US20100074441A1 (en) * | 2006-06-28 | 2010-03-25 | Pauker Matthew J | Data processing systems with format-preserving encryption and decryption engines |
US20110103579A1 (en) * | 2009-10-30 | 2011-05-05 | Martin Luther W | Format preserving encryption systems for data strings with constraints |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657670A (zh) * | 2013-11-19 | 2015-05-27 | 北京天地超云科技有限公司 | 一种基于数据加密的配置文件安全使用方法 |
CN104144034A (zh) * | 2013-12-04 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 密码共享和获取方法及装置 |
CN104144034B (zh) * | 2013-12-04 | 2016-04-13 | 腾讯科技(深圳)有限公司 | 密码共享和获取方法及装置 |
US9949120B2 (en) | 2013-12-04 | 2018-04-17 | Tencent Technology (Shenzhen) Company Limited | Methods and systems for enabling communication with a receiver device in a network |
US10165446B2 (en) | 2013-12-04 | 2018-12-25 | Tencent Technology (Shenzhen) Company Limited | Methods and systems for enabling communication with a receiver device in a network |
CN110892403A (zh) * | 2017-05-03 | 2020-03-17 | 尤尼斯康通用身份控制股份有限公司 | 安全地访问数据的方法 |
CN110892403B (zh) * | 2017-05-03 | 2023-08-15 | 尤尼斯康通用身份控制股份有限公司 | 安全地访问数据的方法 |
CN109213850A (zh) * | 2017-07-06 | 2019-01-15 | 卡巴斯基实验室股份制公司 | 确定包含机密数据的文本的***和方法 |
Also Published As
Publication number | Publication date |
---|---|
DE102013203126B4 (de) | 2020-08-27 |
CN103336929B (zh) | 2016-06-15 |
GB2511295A (en) | 2014-09-03 |
DE102013203126A1 (de) | 2013-09-12 |
US20140129832A1 (en) | 2014-05-08 |
GB201302253D0 (en) | 2013-03-27 |
US9152811B2 (en) | 2015-10-06 |
US20130238581A1 (en) | 2013-09-12 |
US9152813B2 (en) | 2015-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11366924B2 (en) | Block chain-based data query method, server and storage medium | |
CN103336929A (zh) | 用于已加密文件访问的方法和*** | |
US8375224B2 (en) | Data masking with an encrypted seed | |
US10949555B2 (en) | Encryption and decryption system and method | |
US9350714B2 (en) | Data encryption at the client and server level | |
KR101371608B1 (ko) | Dbms 및 데이터베이스에서 암호화 방법 | |
US20170277774A1 (en) | Systems and methods for secure storage of user information in a user profile | |
US10599863B2 (en) | Database encryption to provide write protection | |
Ding et al. | Model-driven application-level encryption for the privacy of e-health data | |
US20090240956A1 (en) | Transparent encryption using secure encryption device | |
CN101002417A (zh) | 不标识敏感信息及相关记录的***及方法 | |
US20170277775A1 (en) | Systems and methods for secure storage of user information in a user profile | |
EP3469512A1 (en) | Systems and methods for secure storage of user information in a user profile | |
AU2017440029B2 (en) | Cryptographic key generation for logically sharded data stores | |
CN106682521B (zh) | 基于驱动层的文件透明加解密***及方法 | |
CN108574567A (zh) | 隐私文件保护和加密密钥管理***及方法、信息处理终端 | |
CN109981579A (zh) | 基于SGX的Hadoop秘钥管理服务安全加强方法 | |
CN103379133A (zh) | 一种安全可信的云存储*** | |
WO2009132046A2 (en) | Method and system for security requiring authorization by multiple users | |
KR102573032B1 (ko) | 데이터 이중암복호화 기반 보안 강화 블록체인 시스템 | |
WO2022199796A1 (en) | Method and computer-based system for key management | |
EP3346414A1 (en) | Data filing method and system | |
JP2018006852A (ja) | 情報処理装置、情報処理システム、端末、判定装置、処理プログラム、及び情報処理方法 | |
US20220405420A1 (en) | Privacy preserving data storage | |
Haunts et al. | Azure Key Vault Usage Patterns |
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: 20160615 |
|
CF01 | Termination of patent right due to non-payment of annual fee |