CN111052089B - 数据保护 - Google Patents
数据保护 Download PDFInfo
- Publication number
- CN111052089B CN111052089B CN201880057589.5A CN201880057589A CN111052089B CN 111052089 B CN111052089 B CN 111052089B CN 201880057589 A CN201880057589 A CN 201880057589A CN 111052089 B CN111052089 B CN 111052089B
- Authority
- CN
- China
- Prior art keywords
- data
- ecc
- integrity
- error
- correction
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 363
- 230000008569 process Effects 0.000 claims abstract description 206
- 238000012937 correction Methods 0.000 claims abstract description 122
- 238000004590 computer program Methods 0.000 claims abstract description 78
- 238000004458 analytical method Methods 0.000 claims abstract description 52
- 230000004044 response Effects 0.000 claims abstract description 41
- 238000012795 verification Methods 0.000 claims abstract description 25
- 238000001514 detection method Methods 0.000 claims description 47
- 230000000052 comparative effect Effects 0.000 claims 1
- 230000008439 repair process Effects 0.000 description 92
- 238000012545 processing Methods 0.000 description 19
- 238000012986 modification Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013524 data verification Methods 0.000 description 2
- 235000014676 Phragmites communis Nutrition 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1028—Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
描述了一种计算机实现的方法,该方法包括:接收与数据有关的访问请求,其中,存在与该数据有关的ECC数据,并且其中该ECC数据被配置成使得能够校正跨越该数据的多达预定数量的连续位的多位错误;实行第一完整性验证过程以验证至少所述数据的完整性;响应于通过该第一完整性验证过程对非完整性的发现,基于该数据和该ECC数据来实行错误分析过程;响应于通过错误分析过程对校正数据的生成,实行第二完整性验证过程以验证至少校正数据的完整性;以及响应于通过第二完整性验证过程对完整性的发现,使用所述校正数据来允许访问请求。还描述了相关的方法、装置、计算机程序和计算机可读介质。
Description
技术领域
本发明涉及数据保护。特别地,本发明涉及用于在数据已经被修改或损坏的情况下进行动态数据校正的方法。还设想了相关联的装置、计算机程序和计算机可读介质。
背景技术
数据验证使用一种用于验证计算机数据的完整性的算法。一种方法是要将数据与相同数据的另一个存储副本逐位地进行比较。
显然,需要相同数据的两个副本,并且该方法可能会遗漏可能在两组数据中都发生的系统性损坏。另一种更流行的方法是要存储数据的校验和(哈希),被也称为消息摘要,以供之后的比较。
如果数据的当前版本的哈希值与先前存储的哈希值不匹配,则数据完整性已经被损害,并且数据已经被损坏。
数据可能会由于存储介质故障、传输中的错误、拷贝或移动期间的写入错误、软件程序错误、恶意攻击等等而被损坏。替换地,如果哈希值匹配,则推定数据未被修改。为了增加的安全性,可以使用密码哈希函数。替换地,可以采用数字签名来确保防篡改。
关于恶意攻击,数据验证可以提供计算机数据已经被篡改的指示,并且由此作为结果,防止进一步访问该数据。然而,将合期望的是,改进计算机系统对攻击者篡改计算机数据的尝试做出响应的能力。
发明内容
根据本发明的第一方面,提供了一种计算机实现的方法,其包括:(a)接收与数据有关的访问请求,其中,存在与该数据有关的纠错码(ECC)数据;(b)实行第一完整性验证(IV)过程以验证至少该数据的完整性;(c)响应于通过第一IV过程对非完整性的发现,基于该数据和该ECC数据来实行错误分析过程;(d)响应于通过错误分析过程对校正数据的生成,实行第二IV过程以验证至少校正数据的完整性;以及(e)响应于通过第二IV过程对完整性的发现,使用所述校正数据来允许访问请求。
第一方面的该方法提供了数据的动态校正,由此允许数据从篡改中恢复。不需要对替换数据的外部访问。每当存在与该数据有关的访问请求时(例如,每次从存储介质读取数据文件),就可以运行该方法。
根据本发明的第二方面,提供了一种保护数据的计算机实现的方法,该方法包括实行一系列检查,其中实行检查包括:(a)实行第一IV过程以验证至少该数据的完整性;(b)响应于通过第一IV过程对非完整性的发现,基于该数据和与该数据有关的ECC数据来实行错误分析过程;(c)响应于通过错误分析过程对校正数据的生成,实行第二IV过程以验证至少校正数据的完整性;以及(d)响应于通过第二IV过程对完整性的发现,使用校正数据来更新该数据。
根据本发明的第三方面,提供了一种用于使用一个或多个处理器来执行存储在存储介质上的计算机程序的方法。该方法包括将存储在存储介质上的至少一部分计算机程序加载到代码空间中,并且该方法进一步包括执行所加载的至少一部分计算机程序的一个或多个指令。所述一个或多个指令的执行使一个或多个处理器来:(a)实行第一IV过程以验证所加载的至少一部分计算机程序的完整性;(b)响应于通过第一IV过程对非完整性的发现,基于所加载的至少一部分计算机程序和对应的ECC数据来实行错误分析过程;(c)响应于通过错误分析过程对校正数据的生成,实行第二IV过程以验证至少校正数据的完整性;(d)响应于通过第二IV过程对完整性的发现,使计算机程序的执行终止。
根据本发明的第四方面,提供了一种使用一个或多个处理器来执行存储在存储介质上的计算机程序的方法。该方法包括:将存储在存储介质上的至少一部分计算机程序加载到代码空间中,并且该方法进一步包括:执行所加载的至少一部分计算机程序的一个或多个指令。所述一个或多个指令的执行使一个或多个处理器来:(a)实行第一IV过程以验证存储在存储介质上的计算机程序的完整性;(b)响应于通过第一IV过程对非完整性的发现,基于存储在存储介质上的计算机程序和对应的ECC数据来实行错误分析过程;(c)响应于通过错误分析过程对校正数据的生成,实行第二IV过程以验证至少校正数据的完整性;(d)响应于通过第二IV过程对完整性的发现,使用校正数据来更新存储在存储介质上的计算机程序;以及(e)使计算机程序的执行终止。
根据本发明的第五方面,提供了一种装置,该装置被布置成执行根据第一至第四方面中任一个的方法。
根据本发明的第六方面,提供了一种计算机程序,该计算机程序在由一个或多个处理器执行时使一个或多个处理器执行根据第一至第四方面中任一个的方法。
根据本发明的第七方面,提供了一种存储了根据第六方面的计算机程序的计算机可读介质。
在所附权利要求中阐述了本发明的其他优选特征。
附图说明
现在将参考附图以示例的方式来描述本发明的实施例,在附图中:
图1示意性地图示了计算机系统的示例。
图2示意性地图示了根据一个实施例的计算机实现的方法。
图3示意性地图示了汉明奇偶校验位到数据中的按位插入。
图4示意性地图示了汉明奇偶校验字节到数据中的按字节插入。
图5示意性地图示了图4的数据字节和汉明奇偶校验字节的重新排序。
图6A示意性地图示了数据组块(chunk)的数据位1-704的布置、以及针对该数据组块的汉明奇偶校验字节1-256的对应布置。
图6B示意性地图示了图6A的数据位和汉明奇偶校验位到字节中的布置。
图7是示出了示例性汉明码设置的表。
图8示意性地图示了用于在本方法中使用的示例数据结构。
图9示意性地图示了根据另一实施例的计算机实现的方法。
图10示意性地图示了根据另一实施例的计算机实现的方法。
图11示意性地图示了根据另一实施例的计算机实现的方法。
具体实施方式
在下面的描述中以及在附图中,描述了本发明的某些实施例。然而,将领会的是,本发明不限于所描述的实施例,并且一些实施例可以不包括下面描述的所有特征。然而,将显而易见的是,在不脱离如所附权利要求所阐述的本发明的更宽泛的精神和范围的情况下,在本文中可以做出各种修改和改变。
1-系统概述
图1示意性地图示了计算机系统100的示例。系统100包括计算机102。计算机102包括:存储介质104、存储器106、处理器108、接口110、用户输出接口112、用户输入接口114以及网络接口116,它们全部通过一个或更多通信总线118链接在一起。
存储介质104可以是诸如硬盘驱动器、磁盘、光盘、ROM等中的一个或多个之类的任何形式的非易失性数据存储设备。存储介质104可以存储供处理器108执行以便使计算机102起作用的操作系统。存储介质104还可以存储一个或多个计算机程序(或软件或指令或代码)。
存储器106可以是适于存储数据和/或计算机程序(或软件或指令或代码)的任何随机存取存储器(存储单元或易失性存储介质)。
处理器108可以是适于执行一个或多个计算机程序(诸如存储在存储介质104上和/或存储器106中的计算机程序)的任何数据处理单元,其中一些计算机程序可以是根据本发明的实施例的计算机程序,或者是当由处理器108执行时使得处理器108实行根据本发明的实施例的方法并将系统100配置成根据本发明实施例的系统的计算机程序。处理器108可以包括单个数据处理单元或多个数据处理单元,该多个数据处理单元并行地、单独地或彼此协作地操作。处理器108在执行用于本发明的实施例的数据处理操作时,可以将数据存储到存储介质104和/或存储器106和/或从存储介质104和/或存储器106读取数据。
接口110可以是用于向计算机102外部的设备122或可从计算机102去除的设备122提供接口的任何单元。设备122可以是数据存储设备,例如光盘、磁盘、固态存储设备等中的一个或多个。设备122可以具有处理能力,例如该设备可以是智能卡。因此,接口110可以根据从处理器108接收到的一个或多个命令来从设备122访问数据或者向设备122提供数据或者与设备122对接。
用户输入接口114被布置成接收来自系统100的用户或操作者的输入。用户可以经由连接到用户输入接口114或与用户输入接口114通信的系统100的一个或多个输入设备(诸如鼠标(或其他定点设备)126和/或键盘124)提供此输入。然而,将领会的是,用户可以经由一个或多个附加的或替换的输入设备(诸如触摸屏)向计算机102提供输入。计算机102可以将经由用户输入接口114从输入设备接收到的输入存储在存储器106中,以供处理器108随后访问和处理,或者可以将从输入设备接收到的输入直接传递给处理器108,以使得处理器108可以相应地响应用户输入。
用户输出接口112被布置成向系统100的用户或操作者提供图形/视觉和/或音频输出。这样,处理器108可以被布置成指示用户输出接口112形成表示期望的图形输出的图像/视频信号,并且将该信号提供给连接到用户输出接口112的系统100的监视器(或屏幕或显示单元)120。附加地或替换地,处理器108可以被布置成指示用户输出接口112形成表示期望的音频输出的音频信号,并且将该信号提供给连接到用户输出接口112的系统100的一个或多个扬声器121。
最后,网络接口116为计算机102提供从一个或多个数据通信网络下载数据和/或将数据上传到一个或多个数据通信网络的功能。
将领会的是,图1中所图示和上面描述的系统100的架构仅仅是示例性的,并且可以在本发明的实施例中使用具有不同架构(例如,具有比图1所示的更少的组件或者具有与图1所示的相比是附加和/或替换的组件)的其他计算机系统100。作为示例,计算机系统100可以包括以下各项中的一项或多项:个人计算机;服务器计算机;移动电话;平板设备;膝上型计算机;电视机;机顶盒;游戏控制台;其他移动设备或消费电子设备;等等。
2-自修复数据
在图2中示意性地图示了通用计算机实现的方法200。步骤S201包括:接收与数据有关的访问请求。存在与数据有关的ECC数据。步骤S202包括:实行第一IV过程以验证至少该数据的完整性。步骤S203包括:响应于通过第一IV过程对非完整性的发现,基于该数据和ECC数据来实行错误分析过程。步骤S204包括:响应于通过错误分析过程对校正数据的生成,实行第二IV过程以验证至少校正数据的完整性。然后,步骤S205包括:响应于通过第二IV过程对完整性的发现,使用所述校正数据来允许访问请求。
因此,首先使用IV过程来评估所述数据是否被损坏。将理解的是,存在可以被用于此目的的许多公知的IV过程。如果发现该数据被损坏,则可以使用相关的ECC数据来尝试校正该数据中的任何错误。将理解的是,存在许多公知的ECC编码和解码算法,它们可以被用来生成ECC数据,并且随后基于该ECC数据来检测和校正错误。然后,可以对校正数据使用相同(或不同)的IV过程,以检查通过错误分析过程而应用的校正是否已经成功。如果是,则使用校正数据来允许访问请求。
由于仅在已经通过IV过程检测到数据的修改之后尝试错误校正,所以计算开销相对较低。针对这一点的一个原因是:运行IV过程通常比基于ECC的错误分析过程(IV过程不是基于ECC的过程)具有更低的计算开销。当基于ECC的错误分析过程正在检测并且校正包括多个连续位的突发错误时,IV过程的这种减少的计算开销是特别相关的。因此,只有在已经检测到对数据的修改时才存在对性能的影响,并且这种情况下的性能方面的降低通常是可接受的(即,如果要对抗恶意攻击,则用户倾向于乐于接受降低的性能)。
该数据可以是在诸如磁盘、固态存储装置等等之类的非易失性数据存储介质上的文件。替换地,可以将数据存储在诸如RAM之类的易失性存储器中。
为了简单起见,第二IV过程可以与第一IV过程相同,并且这通常是优选实施例。然而,如果需要的话,在特定的实现方式中,可以使用不同的IV过程来验证该数据和校正数据。
值得注意的是,当攻击者添加调试点或对数据做出其他修改时,经常会引入跨越数据的多个字节的错误。在一些实施例中,该数据包括可执行代码(例如,二进制可执行文件、源代码等)。方法200对于以这种方式替换/修改可执行数据文件中的指令块的攻击者特别有用,这是因为方法200可以被配置成针对跨越多达给定数量的位/字节的大错误进行保护。特别地,ECC数据被配置成使得能够校正跨越数据的多达预定数量的连续位的多位错误(即,突发错误),如下面将描述的那样。
下面将参考在ECC编码和解码算法中使用的汉明码来更详细地讨论该方法的示例性实现方式。汉明码是公知的;用于ECC编码(即,生成汉明ECC数据)和解码(基于汉明ECC数据的随后的错误检测和校正)的相关算法也是公知的(例如,参见https:// en.wikipedia.org/wiki/Hamming code)。
标准汉明码的ECC数据(或修复数据)包括:插入到数据流中的奇偶校验位(或校验位),用以检测多达两位错误或校正一位错误。作为在图3中示意性地图示的汉明奇偶校验流的示例,其中位1、2、4、8和16分别是汉明奇偶校验位#1、#2、#3、#4和#5,并且位3、5-7和9-15是要保护的相关数据流/文件的数据位。奇偶校验位指示它们覆盖的位中1的数量是奇数还是偶数,并且这可以借助于XOR操作来高效地在计算方面实现。最常见的约定是:奇偶校验值1指示数据中存在奇数数量的1,而奇偶校验值0指示存在偶数数量的1。奇偶校验位#1覆盖已经将最低有效位设置为1的所有位的位置(即,位1、3、5、7、9、11、13、15等)。奇偶校验位#2覆盖已经将第二最低有效位设置为1的所有位的位置(即,位2、3、6、7、10、11、14、15等)。奇偶校验位#3覆盖已经将第三最低有效位设置为1的所有位的位置(即,位4-7、12-15等)。奇偶校验位#4覆盖已经将第四最低有效位设置为1的所有位的位置(即,位8-15等)。奇偶校验位#5覆盖本示例中未示出的位的位置,因此在此处是冗余的。奇偶校验位可以借助于汉明ECC编码算法来计算。值得注意的是,奇偶校验位(即,ECC数据)本身是可修复数据的一部分。
改变我们如何看待该数据是可能的,如图4中示意性地图示的那样,其中多个列表示8个汉明奇偶校验流(例如,类似于图3所示的汉明奇偶校验流)。每个数据字节中的所有位都处于不同的汉明奇偶校验流中。因此,我们现在可以修复大小为1字节(8位)的错误块,并且可以可选地检测大小为2字节(16位)的错误块。
然而,在图4的示例中,汉明奇偶校验位(即,ECC数据)“在带内(in band)”,这意味着它们被直接插入源数据中。这意味着在读取该数据时有必要“过滤掉”汉明数据。就ECC数据的创建/插入而言,这也增加了一层复杂性。因此,如图5中示意性地图示的那样,我们可以再次改变我们的视角。在该示例中,相同的数据字节和汉明奇偶校验字节如图4中所示,但是已经对它们进行了重新排序,以使得原始数据字节被首先列出,而汉明奇偶校验字节被最后列出。这意味着已经使得原始数据不被更改,并且相关的ECC数据可以存储在任何位置(例如,与原始数据一起或其他位置)中。
此外,我们不限于多达仅1个字节的错误块修复;数据的“宽度”(即,列数)可以根据需要来调整。宽度可以是任何数量的位,但是优选地是整数数量的字节,以使得能够实现有效处理,因此在下面的示例中我们将以字节为单位来指代宽度,但是将理解的是,这是可选的。该宽度(以字节为单位)可以被称为修复数据的“跨度”。该跨度表示可以保证被成功修复的被破坏的字节的最长行程(run)。两倍跨度表示保证被成功检测到的被破坏的字节的最长行程。因此,本方法论设想了用于修复的连续位(或字节)错误的可配置跨度。特别是,它可以被用来校正多位错误,即,跨越至少2个连续数据位的错误(例如,2位错误、或连续3位错误、或连续8位错误(即,字节错误)或更多)。
考虑数据的组块,诸如可执行软件代码的文件,其包括B个位的序列bi(i=1,...B)。在图6A中示意性地图示了具有B=704位数据的这样的文件。在该说明性示例中,数据组块的跨度S(以字节为单位)是4。以位为单位的数据组块的宽度T(即,数据的列数)可以被计算为T=8S=32。可以使用如上所引用的汉明ECC编码算法来生成ECC/修复数据位ei(i=1,...E)。在上面给出的示例中,数据组块的多达11个数据位由4个汉明奇偶校验位来保护。换言之,数据长度N(以位为单位)是11,并且“级别”L(即,奇偶校验位的数量)是4。作为示例,在图6A中由粗边框601突出显示的11个数据位被用作输入到ECC编码算法以生成也在图6A中由粗边框602突出显示的4个修复位的数据组块。
更一般地,在该示例中,用于ECC编码算法的数据组块的数据位的输入序列为:
其中。
从ECC角度来看,该数据位的输入序列生成了以下修复位:
在附加的数据存储方面的开销反过来取决于所利用的汉明位的数量。汉明位越多,开销越低。在给定的示例中,多达11个数据位由4个汉明位来保护,开销为4/11=36%。我们将其称为11/4汉明码(即,N=11和L=4)。
当然,如果期望使用具有4字节的跨度的11/4汉明码(如图6A中所示),并且数据组块不是11*32的精确倍数,则填充位(或填充位元)的附加序列可以被附加到数据组块。填充位可以仅仅是零的序列。例如,参照图6A,如果数据组块实际上的大小为628,则可以在位的位置629-704中附加76个零的序列以将该数据填充拉长成图6A所示的大小。
值得注意的是,图6A所示的数据组块和修复数据的各个数据位可以替换地被视为数据字节,如图6B中示意性地图示的那样。由于修复数据(即,ECC数据)可以借助于XOR处理来生成,因此不必在逐位的基础上实行该处理,而是代替地整个数据字节(或一次多个数据字节)可以是同一XOR处理将来生成相关ECC数据字节的主体。这增加了使用汉明ECC编码算法来生成ECC数据所需的处理的效率。类似地,可以在随后的ECC解码阶段期间一次全部处理多个数据字节,其中ECC数据被用来针对任何错误进行检查并且潜在地修复任何错误。
可能的汉明码设置的示例在图7中示出。如先前提到的,跨度S(以字节为单位)是可以保证被成功修复的被破坏的字节的最高行程。级别L(以位为单位)是每个汉明奇偶校验流的修复位的数量。相关地,数据长度N(以位为单位)由N+L=2L-1给出,使得N=2L-1-L。数据长度N是由级别L的汉明奇偶校验位保护的数据组块的数据位的数量。数据大小D(以字节为单位)由D=SN给出。修复大小R(以字节为单位)是修复数据的量(即,针对数据大小D所需的修复位的数量)。因此,R=SL。开销O被定义为O=R/D=SL/SN=UN。因此,图7示出了开销O随着汉明位L的数量增加而减少。
大多数现代机器架构具有64位(或8个字节)的机器字长度。在这样的机器中,当跨度S为8的倍数时,最佳汉明码性能出现。换言之,64位机器在具有64、128、192等的跨度的情况下工作得最好。类似地,32位机器在具有32、64、96、128等的跨度的情况下工作得最好。因此,对于给定的计算机架构,当跨度(以字节为单位)是机器字长(以字节为单位)的倍数时,最佳性能出现。在优选实现方式中,我们使用具有跨度S为16以及级别L为8的汉明算法——我们将其称为16/8汉明修复工具(HRT)算法。在该实现方式中,可以在原始数据组块的每个3952字节数据块中修复16字节的错误长度,并且开销仅为3%。
在一个实现方式中,通过将修复位附加到数据组块,将修复位与原始数据组块一起存储。因此,数据组块和修复数据可以被存储在同一文件中,并且所有数据组块和修复数据都由修复数据所保护(因为奇偶校验位覆盖包括奇偶校验位本身的位的范围)。这意味着,在创建修复数据时,文件中的所有数据都被保护。将ECC/修复数据存储在与原始数据组块相同的文件中的一个优点是:在IV步骤期间,对ECC数据与数据组块一起进行验证。然而,将领会的是,如果需要的话,可以代替地将修复位与数据组块分离地存储。
在图8中示出了与本方法结合使用的示例数据结构800。数据结构800包括:原始文件812、嵌入的第一IV数据814、ECC修复数据820、ECC修复尾部(trailer)822和第二IV数据830。
在该示例性数据结构800中,数据810由原始文件812与附加的第一IV数据814组成。因此,在该示例中,第一IV数据814被嵌入数据810中。原始文件812可以是可执行软件代码,以使得数据810包括可执行软件代码。例如,第一IV数据814可以是用以验证数据810的完整性的任何类型的IV数据,诸如哈希或校验和值、或数字签名、或消息认证码。也可以使用其他已知类型的IV数据。IV数据不是基于ECC的数据。
原始文件812和嵌入的第一IV数据814一起构成了用于ECC编码算法的输入数据810。所生成的ECC修复数据820(即,ECC数据)与图8中的数据810一起存储。实际上,ECC修复数据820被附加到数据810。因此,在图8的实施例中,在图2的方法中引用的数据包括数据810(即,具有嵌入的第一IV数据814的原始文件812)。在图2的方法中引用的ECC数据包括ECC修复数据820。因此,数据810和ECC修复数据820两者都由ECC修复数据820所保护。因此,数据810和ECC修复数据820可以一起被称为受保护数据840。
附加到图8中的ECC修复数据820的是可选的ECC修复尾部822。ECC修复尾部822可以包括用以指定所使用的ECC算法的性质(例如,跨度、级别等)的数据。ECC修复尾部822可以进一步包括用以帮助标识ECC修复数据820的位置(例如,数据文件中的偏移、或ECC修复数据820所存储到的URL)的数据。由于ECC修复数据820并不覆盖ECC修复尾部822中的数据,因此ECC修复尾部822可以进一步包括与ECC修复尾部数据本身有关的附加的ECC修复数据。可以通过对ECC修复尾部822中的数据运行第二ECC编码算法来生成附加的ECC修复数据。换言之,从ECC修复尾部822中的数据生成附加的ECC修复数据,以便于提供与ECC修复尾部822中的数据相关的错误校正能力。例如,附加的ECC修复数据可以使用4/3 HRT算法(即,S=4,L=3),这意味着可以校正ECC修复尾部822中的数据中的跨越多达4个字节的任何破坏。
第二IV数据830可以可选地被提供为数据结构800的部分。第二IV数据830可以是任何类型的IV数据,用以验证其余数据结构(即,受保护数据840,连同可选的ECC修复尾部822)的完整性。例如,第二IV数据830可以是例如哈希或校验和值、或数字签名、或消息认证码。也可以使用其他已知类型的IV数据。在一个实现方式中,第二IV数据830是内核IV签名,其充当数据结构800的外部签名。
值得注意的是,涉及第一IV数据814的IV过程可以是优选的,因为相比于涉及第二IV数据830的IV过程,它们涉及测试更少量数据的完整性。因此,涉及第一IV数据814的IV过程通常将更快。而且,可优选的是,仅对需要验证的数据(即,原始文件812)实行IV过程。这确保了对非完整性的任何发现将与原始文件812有关,而不是与其他(潜在地是多余的)数据有关。
往回参考图2中所示的一般方法200,根据一个实施例,该方法的更详细的版本在图9中示出。方法900在步骤S901中开始于与数据有关的访问请求。因此,图9中的步骤S901类似于图2中的步骤S201。所讨论的数据可以是图8的数据结构的数据810。如先前所描述的,存在与该数据有关的ECC数据。特别地,通过在该数据上运行ECC编码算法来生成ECC数据。例如,所讨论的ECC数据可以是图8的ECC修复数据820。有利地,ECC编码算法可以在数据组块的一个或多个字节上并行地运行(即,逐字节数据处理)以用于增加的效率。ECC编码算法可以是基于汉明的算法(如上所描述的),使得ECC数据包括与该数据和ECC数据的组合有关的汉明码奇偶校验位。然而,还设想了其他ECC编码算法,诸如里德所罗门码、turbo码、格雷码等等。
响应于该访问请求,在步骤S902处,启动与至少该数据有关的第一IV过程。因此,图9中的步骤S902类似于图2中的步骤S202。步骤S902的第一IV过程可以涉及:通过处理图8的嵌入的第一IV数据814来仅对该数据进行IV测试。例如,如果第一IV数据814是原始文件812的哈希值,则第一IV过程可以涉及:针对作为第一IV数据814而存储的哈希值来计算和检查相关数据的哈希值。替换地/附加地,步骤S902的第一IV过程可以涉及:例如通过处理图8的第二IV数据830来对数据连同其他数据进行IV测试。例如,如果第二IV数据830是其余数据结构的数字签名,则第一IV过程可以涉及检查该数字签名的有效性。如果经测试的数据通过了第一IV过程(即,如果存在对该经测试的数据的完整性的发现),则在步骤S903中,允许该访问请求。替换地,如果经测试的数据未通过第一IV过程(即,如果存在对经测试的数据的非完整性的发现),则在步骤S904处,发起错误分析过程。在图9中的步骤S904处的实行错误分析过程相当于图2中的步骤S203。
步骤S904的错误分析过程首先包括:在步骤S905处实行错误检测过程。该错误检测过程基于ECC数据(例如,图8的ECC修复数据820)。该错误检测过程能够基于ECC数据来检测错误。在优选实施例中,该错误检测过程还能够生成可以被用来加速随后的错误校正过程的数据。例如,在一个实现方式中,每个汉明奇偶校验流的附加位可以被存储(例如,临时地存储),以便标识包括错误的汉明奇偶校验流。因此,这些附加位可以一起被认为形成了“错误图(error map)”。在随后的错误校正阶段中,该错误图可以被用来消除对在错误检测阶段期间已被标识为“有效”(即,没有错误)的汉明奇偶校验流的修复尝试。该错误图的大小等于跨度S(或跨度的倍数),并且因此也受益于性能方面为8个位的倍数的跨度。
错误检测过程能够基于ECC数据来确定检测到的错误是否是可校正的。例如,如上面讨论的,在基于汉明的错误检测和校正的情况下,只要每个汉明奇偶校验流仅存在单个错误,就有可能校正错误。可以校正多达S个字节的错误块(其中S是跨度,如上面讨论的),这是因为S个字节中的位错误中的每一个将处于不同的汉明奇偶校验流中。比S个字节更长的错误将不可校正。如果错误检测过程基于ECC数据确定了检测到的错误是不可校正的,则在步骤S908处可以拒绝该访问请求。
替换地,如果错误检测过程基于ECC数据确定了检测到的错误是可校正的,则方法900在步骤S906处继续实行错误校正过程。该错误校正过程基于ECC数据和数据组块(即,图8的数据810和ECC修复数据820两者)。该错误校正过程可以包括运行与被用来生成ECC数据的ECC编码算法相对应的ECC解码算法。该错误校正过程由此提供了校正数据。如果使用读/写文件系统,则可以将校正数据酌情写入在原始数据上,以便校正被存储以供访问的数据。换言之,可以使用校正数据来更新(或修复)数据(例如,数据结构800中的数据810)。如果使用只读文件系统,则不可能利用校正数据来盖写原始数据,但是在任何情况下,都响应于原始读取请求(即,步骤S901的访问请求)来返回校正数据。
实际上,该错误分析过程可以包括在数据(例如,数据810)上重新运行ECC编码算法,并且与ECC数据(例如,ECC修复数据820)进行比较。换言之,被用来生成现有ECC数据的ECC编码算法被重新运行以生成一组新的ECC数据,以用于与现有ECC数据(例如,ECC修复数据820)进行比较。新的与现有的ECC数据之间的差异使得数据中的错误能够被检测到并且潜在地能够被校正。
尽管图9将错误检测过程和错误校正过程描绘为不同/单独的过程,但是将理解的是,该错误检测过程和错误校正过程实际上可以是同一过程的不可分离的部分。在某些ECC方案中,根本不存在单独的检测和校正步骤。
而是仅通过单个过程来处理数据和ECC数据,以在所有情况下生成校正数据。因此,错误检测过程是可选的,这是因为不一定始终在校正错误之前首先检测到它们。响应于提供或生成校正数据的错误分析过程,在步骤S907处启动与至少该校正数据有关的第二IV过程。换言之,在第二IV过程中针对完整性来测试至少该校正数据。因此,图9的步骤S907相当于图2的步骤S204。如先前提到的,与校正数据有关的步骤S907的第二IV过程优选地与关于原始数据的步骤S902的第一IV过程相同。例如,步骤S902和S907的IV过程可以都包括基于所存储的IV数据(诸如,图8的第一IV数据814)的基于哈希的IV过程。替换地/附加地,步骤S902和S907的IV过程可以都包括基于其他所存储的IV数据(诸如图8的第二IV数据830)的数字签名IV。然而,如果需要的话,在步骤S902和S907中可以使用不同的IV过程。
如果校正数据通过了第二IV过程(即,如果存在对校正数据的完整性的发现),则在步骤S903中使用该校正数据来允许访问请求。这相当于图2的步骤S205。替换地,如果校正数据未通过IV过程(即,如果存在对校正数据的非完整性的发现),则在步骤S908中拒绝该访问请求。
在本部分中已经描述了图2的方法的具体实施例。下一部分阐述了在不同情况下对该方法的变化。然后,在以下部分中讨论了各种可能的修改。
3-变化
将领会的是,数据可以是存储在非易失性存储介质(诸如,磁盘、固态存储器、EEPROM等)中的文件(或可以形成其部分),因此,访问请求可以是例如从存储介质读取数据的请求。替换地,数据可以是存储在易失性存储介质(例如,RAM)中的一定量的数据(或可以形成其部分),诸如是用户空间数据(例如,通过执行用户空间应用而生成的数据),和/或是代码空间数据(例如,机器代码或应用的指令),因此,访问请求可以是例如从存储器读取数据的请求。
图2和9阐述了一种计算机实现的方法200、900,以用于在接收到与该数据有关的访问请求时对该数据进行自我检查和修复。现在描述一种用于对数据持续进行自我检查和修复的相关计算机实现的方法。该方法是保护数据的计算机实现的方法。该方法包括实行一系列检查。实行检查包括以下步骤:(a)实行第一IV过程以验证至少该数据的完整性;(b)响应于通过第一IV过程对非完整性的发现,基于该数据和与该数据有关的ECC数据来实行错误分析过程;(c)响应于通过错误分析过程对校正数据的生成,实行第二IV过程以验证至少校正数据的完整性;以及(d)响应于通过第二IV过程对完整性的发现,使用校正数据来更新该数据。在图10中示意性地图示了这样的方法1000。
方法1000包括实行一系列检查(或测试)1001(或其序列)。可以周期性地实行该检查(例如,自上次检查开始或结束以来的预定时间段之后实行下一次检查),或者响应于某个事件(例如,由计算机的操作系统触发的事件、或由在计算机上执行的过程或应用触发的事件)来实行该检查。
检查1001开始于实行与至少该数据有关的第一IV过程的步骤S1002。该数据可以包括来自非易失性存储介质(诸如,磁盘、固态存储器、EEPROM等)中存储的一个或多个预定文件的数据。附加地或替换地,该数据可以包括存储在易失性存储介质(例如,RAM)中的一定量的数据(或可以形成其部分),诸如是用户空间数据(例如,通过执行用户空间应用生成的数据),和/或是代码空间数据(例如,机器代码或应用的指令)。因此,以与图9的步骤S902相同的方式来实行图10中的步骤S1002。因此,本文中应当不对其进行更详细的描述。
如果经测试的数据通过了第一IV过程(即,如果存在对经测试的数据的完整性的发现),则当前检查1001结束,并且针对方法1000的处理将继续实行检查1001的序列中的下一个检查1001。
替换地,如果经测试的数据未通过第一IV过程(即,如果存在对经测试的数据的非完整性的发现),则在步骤S1004处发起错误分析过程。以与图9的步骤S904相同的方式来实行图10中的步骤S1004。
以与图9的讨论类似的方式,步骤S1004的错误分析过程首先包括在步骤S1005处实行错误检测过程。该错误检测过程基于ECC数据(例如,图8的ECC修复数据820)。该错误检测过程能够基于ECC数据来检测错误。在优选实施例中,错误检测过程还能够生成可以被用来加速随后的错误校正过程的数据。例如,在一个实现方式中,每个汉明奇偶校验流的附加位可以被存储(例如,临时地存储),以便标识包括错误的汉明奇偶校验流。因此,这些附加位可以一起被认为形成了“错误图”。在随后的错误校正阶段中,该错误图可以被用来消除对在错误检测阶段期间已被标识为“有效”(即,没有错误)的汉明奇偶校验流的修复尝试。该错误图的大小等于跨度S(或跨度的倍数),并且因此也受益于性能方面为8个位的倍数的跨度。
错误检测过程能够基于ECC数据来确定检测到的错误是否是可校正的。例如,如上面讨论的,在基于汉明的错误检测和校正的情况下,只要每个汉明奇偶校验流仅存在单个错误,就有可能校正错误。可以校正多达S个字节的错误块(其中S是跨度,如上面讨论的),这是因为S个字节中的位错误中的每一个将处于不同的汉明奇偶校验流中。比S个字节更长的错误将不可校正。如果错误检测过程基于ECC数据确定了检测到的错误是不可校正的,则处理在步骤S1008处继续(稍后更详细地描述)。替换地,如果错误检测过程基于ECC数据确定了检测到的错误是可校正的,则检查1001在步骤S1006处继续实行错误校正过程。该错误校正过程基于ECC数据和数据组块两者(即,图8的数据810和ECC修复数据820两者)。该错误校正过程可以包括运行与被用来生成ECC数据的ECC编码算法相对应的ECC解码算法。该错误校正过程由此提供了校正数据。
实际上,该错误分析过程可以包括在数据(例如,数据810)上重新运行ECC编码算法,并且与ECC数据(例如,ECC修复数据820)进行比较。换言之,被用来生成现有ECC数据的ECC编码算法被重新运行以生成一组新的ECC数据,以用于与现有ECC数据(例如,ECC修复数据820)进行比较。新的与现有的ECC数据之间的差异使得数据中的错误能够被检测到并且潜在地能够被校正。
尽管图10将错误检测过程和错误校正过程描绘为不同/单独的过程,但是将理解的是,该错误检测过程和错误校正过程实际上可以是同一过程的不可分离的部分。在某些ECC方案中,根本不存在单独的检测和校正步骤。
而是仅通过单个过程来处理数据和ECC数据,以在所有情况下生成校正数据。因此,错误检测过程是可选的,这是因为不一定始终在校正错误之前首先检测到它们。
响应于提供或生成校正数据的错误分析过程,在步骤S1007处启动与至少该校正数据有关的第二IV过程。换言之,在第二IV过程中针对完整性来测试至少该校正数据。以与图9的步骤S907相同的方式来实行图10中的步骤S1007。与校正数据有关的步骤S1007的第二IV过程优选地与关于原始数据的步骤S1002的第一IV过程相同。例如,步骤S1002和S1007的IV过程可以都包括基于所存储的IV数据(诸如,图8的第一IV数据814)的基于哈希的IV过程。
替换地/附加地,步骤S1002和S1007的IV过程可以都包括基于其他所存储的IV数据(诸如图8的第二IV数据830)的数字签名IV。然而,如果需要的话,可以在步骤S1002和S1007中使用不同的IV过程。
如果校正数据通过了第二IV过程(即,如果存在对校正数据的完整性的发现),则使用该校正数据来更新(例如,盖写)原始数据,即,将损坏的原始数据恢复为其原始形式。然后,针对方法1000的处理继续实行检查1001的序列中的下一个检查1001。替换地,如果校正数据未通过IV过程(即,如果存在对校正数据的非完整性的发现),则处理在步骤S1008处继续。
在步骤S1008处,方法1000可以执行各种各样的操作。当已经发现正在检查的数据以不可校正的方式被损坏时,例如,如果攻击者已经对数据进行了过多修改以至于无法校正,则到达此步骤S1008。在一些实施例中,步骤S1008可以涉及用替换数据(例如,随机生成的数据)来替代正被检查的数据,这将有助于阻止攻击者的攻击。附加地或替换地,在一些实施例中,步骤S1008可以涉及使一个或多个应用或过程(例如,基于或使用正被检查的数据的应用或过程)终止。附加地或替换地,在一些实施例中,步骤S1008可以涉及记录已经到达步骤S1008的事实(即,已经标识了不可校正的损坏的数据)和/或向计算机或某个其他实体的用户警告已经到达步骤S1008的事实。将领会的是,在步骤S1008处可以采取其他对策(countermeasure)。然后,可以通过执行一系列检查1001中的下一个检查1001来恢复处理(尽管这在例如应用或过程已终止的情况下可能不会发生)。
以这种方式,例如,如果攻击者尝试通过修改应用或过程的代码和/或数据来执行攻击,则方法1000使得能够对该代码和/或数据持续进行检查和修复,这可以帮助阻止该攻击,因为攻击者的修改可能未完成(潜在地在攻击者甚至没有意识到这已经发生的情况下)。
在一个实施例中,数据包括正在执行的应用的代码空间中的多个指令之一,和/或由正在执行的应用生成的数据。在该实施例中,在正在执行的应用的运行时实行一系列检查。
在计算机程序的加载时间处考虑了两种相关方法。因此,数据包括至少一部分计算机程序。现在描述用于使用一个或多个处理器来执行存储在存储介质上的计算机程序的两种方法。
第一个这样的方法包括:将存储在存储介质上的至少一部分计算机程序加载到代码空间中。该第一方法进一步包括:执行所加载的至少一部分计算机程序的一个或多个指令。所述一个或多个指令的执行使一个或多个处理器来:(a)实行第一IV过程以验证所加载的至少一部分计算机程序的完整性;(b)响应于通过第一IV过程对非完整性的发现,基于所加载的至少一部分计算机程序和对应的ECC数据来实行错误分析过程;(c)响应于通过错误分析过程对校正数据的生成,实行第二IV过程以验证至少校正数据的完整性;(d)响应于通过第二IV过程对完整性的发现,使用校正数据来更新存储在存储介质上的计算机程序;以及(e)使计算机程序的执行终止。
因此,在该第一方法中,对已经加载到代码空间中的计算机程序的版本进行验证。替换地,设想的是,根据下面阐述的第二方法,可以对存储在存储介质上的计算机程序的版本进行验证。
第二方法包括:将存储在存储介质上的至少一部分计算机程序加载到代码空间中。该第二方法进一步包括:执行所加载的至少一部分计算机程序的一个或多个指令。所述一个或多个指令的执行使一个或多个处理器来:(a)实行第一IV过程以验证存储在存储介质上的计算机程序的完整性;(b)响应于通过第一IV过程对非完整性的发现,基于存储在存储介质上的计算机程序和对应的ECC数据来实行错误分析过程;(c)响应于通过错误分析过程对校正数据的生成,实行第二IV过程以验证至少校正数据的完整性;(d)响应于通过第二IV过程对完整性的发现,使用校正数据来更新存储在存储介质上的计算机程序;以及(e)使计算机程序的执行终止。
图11是图示了以上两个示例方法的流程图。方法1100开始于步骤S1101,在步骤S1101处,将存储在存储介质(例如,磁盘或固态存储装置)中的至少一部分计算机程序加载到存储器(例如,RAM)中,即,至少一部分计算机程序被加载到计算机存储器的代码空间中。例如,将计算机程序的一个或多个指令(其可以是计算机程序的所有指令,但是不一定是全部指令,这取决于计算机程序的性质以及计算机程如何被加载)加载到代码空间中以供计算机执行。将计算机程序指令加载到代码空间中是公知的,并且因此本文中应当不对其进行更详细的描述。
然后,可以开始执行所加载的指令。然后,一个或多个所加载的指令使计算机的一个或多个处理器来执行方法1100的随后步骤。
在步骤S1102处,执行与一定量的数据有关的第一IV过程。在一些实施例中,该数据包括如存储在存储介质上的计算机程序(或至少一部分计算机程序)。附加地或替换地,该数据包括计算机程序的所加载部分(或计算机程序的所加载部分的至少一部分)。因此,以与图9的步骤S902和图10的步骤S1002相同的方式来实行图11中的步骤S1102。因此,本文中应当不对其进行更详细的描述。
如果经测试的数据通过了第一IV过程(即,如果存在对经测试的数据的完整性的发现),则可以继续执行该计算机程序,如步骤S1103处所示。替换地,如果经测试的数据未通过第一IV过程(即,如果存在对经测试的数据的非完整性的发现),则在步骤S1104处发起错误分析过程。以与图9的步骤S904和图10的步骤S1004相同的方式来实行图11中的步骤S1104。
以与图9和图10的讨论类似的方式,步骤S1104的错误分析过程首先包括在步骤S1105处实行错误检测过程。该错误检测过程基于ECC数据(例如,图8的ECC修复数据820)。该错误检测过程能够基于ECC数据来检测错误。在优选实施例中,该错误检测过程还能够生成可以被用来加速随后的错误校正过程的数据。例如,在一个实现方式中,每个汉明奇偶校验流的附加位可以被存储(例如,临时地存储),以便标识包括错误的汉明奇偶校验流。因此,这些附加位可以一起被认为形成了“错误图”。在随后的错误校正阶段中,该错误图可以被用来消除对在错误检测阶段期间已被标识为“有效”(即,没有错误)的汉明奇偶校验流的修复尝试。该错误图的大小等于跨度S(或跨度的倍数),并且因此也受益于性能方面为8个位的倍数的跨度。
错误检测过程能够基于ECC数据来确定检测到的错误是否是可校正的。例如,如上面讨论的,在基于汉明的错误检测和校正的情况下,只要每个汉明奇偶校验流仅存在单个错误,就有可能校正错误。可以校正多达S个字节的错误块(其中S是跨度,如上面讨论的),这是因为S个字节中的位错误中的每一个将处于不同的汉明奇偶校验流中。比S个字节更长的错误将不可校正。如果错误检测过程基于ECC数据确定了检测到的错误是不可校正的,则处理在步骤S1108处继续(稍后更详细地描述)。替换地,如果错误检测过程基于ECC数据确定了检测到的错误是可校正的,则在步骤S1106处实行错误校正过程。该错误校正过程基于ECC数据和数据组块(即,图8的数据810和ECC修复数据820两者)。该错误校正过程可以包括运行与被用来生成ECC数据的ECC编码算法相对应的ECC解码算法。该错误校正过程由此提供了校正数据。
实际上,该错误分析过程可以包括在数据(例如,数据810)上重新运行ECC编码算法,并且与ECC数据(例如,ECC修复数据820)进行比较。换言之,被用来生成现有ECC数据的ECC编码算法被重新运行以生成一组新的ECC数据,以用于与现有ECC数据(例如,ECC修复数据820)进行比较。新的与现有的ECC数据之间的差异使得数据中的错误能够被检测到并且潜在地能够被校正。
尽管图11将错误检测过程和错误校正过程描绘为不同/单独的过程,但是将理解的是,该错误检测过程和错误校正过程实际上可以是同一过程的不可分离的部分。在某些ECC方案中,根本不存在单独的检测和校正步骤。而是仅通过单个过程来处理数据和ECC数据,以在所有情况下生成校正数据。因此,错误检测过程是可选的,这是因为不一定始终在校正错误之前首先检测到它们。
响应于提供或生成校正数据的错误分析过程,在步骤S1107处启动与至少该校正数据有关的第二IV过程。换言之,在第二IV过程中针对完整性来测试至少该校正数据。以与图9的步骤S907和图10的步骤S1107相同的方式来实行图11中的步骤S1107。与校正数据有关的步骤S1107的第二IV过程优选地与关于原始数据的步骤S1102的第一IV过程相同。例如,步骤S1102和S1107的IV过程两者可以包括基于所存储的IV数据(诸如,图8的第一IV数据814)的基于哈希的IV过程。替换地/附加地,步骤S1102和S1107的IV过程可以都包括基于其他所存储的IV数据(诸如图8的第二IV数据830)的数字签名IV。然而,如果需要的话,在步骤S1102和S1107中可以使用不同的IV过程。
如果校正数据通过了第二IV过程(即,如果存在对校正数据的完整性的发现),则:
•如果在步骤S1102处检查的数据包括如存储在存储介质上的计算机程序(或至少一部分计算机程序),则处理在步骤S1109处继续,在步骤S1109处,使用该校正数据来更新(例如,盖写)存储在存储介质中的计算机程序,即,将存储在存储介质上的损坏的计算机程序恢复为其原始形式。然后,处理在步骤S1108处继续。
•如果在步骤S1102处检查的数据不包括存储在存储介质上的计算机程序(或至少一部分计算机程序),而仅包括计算机程序的所加载部分(或计算机程序的所加载部分的至少一部分),则可以执行步骤S1109(如上所述),或者可以省略步骤S1109(取而代之,以处理在步骤S1108处继续的情况下)。
替换地,如果校正数据未通过IV过程(即,如果存在对校正数据的非完整性的发现),则处理在步骤S1108处继续。
在步骤S1108处,终止计算机程序的执行。将领会的是,可以在步骤S1108处执行附加操作。例如,在一些实施例中,步骤S1108可以涉及:记录已经到达步骤S1108的事实(即,已经标识了不可校正的损坏的数据),和/或向计算机或某个其他实体的用户警告已经到达步骤S1108的事实。
以这种方式,例如,如果攻击者尝试执行损坏的计算机程序(例如,以损坏的形式存储在存储介质上的计算机程序,或者在存储介质上未损坏但是在被加载到代码空间中时受到损坏的计算机程序),则方法1100使得计算机程序能够实现自我检查并且终止。当然,用于执行步骤S1102、S1104、S1105、S1106、S1107、S1108和S1109的指令可以以混淆的方式(如在本技术领域中已知的方式)来实现,以有助于防止攻击者绕开方法1100的检查机制。
将领会的是,如果到达了步骤S1103,在该步骤处,在计算机程序已经被加载之后,准许继续执行计算机程序,则图10的方法1000可以被用来执行对正在执行的计算机程序的代码和/或数据的持续监视。
4-修改
以上实施例涉及被用于ECC编码和解码算法的汉明码。如先前提到的,理论上可以使用任何ECC算法(例如,里德所罗门码、turbo码、格雷码等等)。格雷码比汉明码更鲁棒,并且Turbo码再次更加鲁棒。然而,这种额外的鲁棒性以计算开销而得到。例如,以[24,12]或[24,11]的[数据位,错误位]来实行Golay码,这相当于50%或52%的开销。类似地,turbo码是反馈ECC,其需要实现复杂得多的算法。即使利用代码打孔(puncturing)(消除某些错误位以减少开销的子方法),开销也将会保持为高,并且实现的复杂性也将会增加。因此,汉明码通常表示优选的实现方式。在汉明码中,汉明修复位在逻辑上被放置在“2的幂”的位置处,如上面关于图3所描述的。存在高度优化的数学“诀窍”,其使用标准的机器代码实现方式来利用是2的幂的数字(即,如果(x XOR(x-1))== 0,则数字x是2的幂)。因此,汉明ECC算法与替换的ECC算法相比通常具有低开销和低复杂性。
将领会的是,方法900、1000和1100表示具体的实施例。在替换实施例中,可以尝试校正数据,无论该数据是否可校正。换言之,无论错误检测过程的结果如何,都可以运行错误校正过程。在这样的实施例中,将错误检测和错误校正过程组合成单个过程将是特别高效的。而且,在这样的实施例中,值得注意的是,无论该修复成功与否,任何修复都会破坏攻击者的目的。虽然如果错误过多(例如,如果每个汉明奇偶校验流存在多于一个错误)则错误校正过程将无法正确地修复数据,但是尝试校正数据将仍然阻止攻击者对数据的修改,由此使攻击效果降低。
在另外的替换实施例中,方法200和900中的访问请求可以始终被允许,而无论IV是否已经成功。当IV失败时,可以发出警报或可以记录错误以供将来处理,而不是拒绝访问请求。在这样的实施例中,攻击者将不会必然立即意识到他们的攻击尚未成功。这与如下情况相反:如果IV失败,攻击者将被拒绝访问数据,并且因此将意识到他们的修改已经被注意到。
考虑了方法200或900的另外的实施例,其中在步骤S201或S901中接收访问请求之前,数据的一部分被有意/故意地破坏(即,被篡改)。可以通过用相似大小的数据的另一个(例如,随机)部分来替代该数据的所选部分以实现该破坏。该破坏意味着第一完整性验证过程将导致对非完整性的发现。然而,该破坏使得错误分析过程能够校正由于该破坏所导致的数据错误。因此,该破坏的位置和程度将取决于ECC数据:任何破坏都可借助于相关联的ECC数据进行校正是重要的。例如,该破坏可能与跨越数据的多达预定数量的连续位的单个多位错误有关(因为这样的错误可使用ECC数据进行校正)。替换地,该破坏可能与许多较小的位错误有关。在对被破坏的数据实行方法200或900之后,可以恢复原始(未被破坏的)数据(当然,假设不存在由于对数据的其他(无意)破坏所导致的不可校正错误)。在破坏步骤之前,该实施例还可以包括选择数据中要被破坏的部分。用户可以基于数据访问的频率和/或数据的感知到的重要性,来随机地和/或以任何其他方式选择数据中要被破坏的部分。被选择用于篡改的数据可能仅在一个修复块中,或者可能在更多、多达所有修复块中。为了进一步混淆篡改,被篡改的位在数据内不需要是连续/相邻的。如先前讨论的,为了使得能够进行修复,要求每个汉明奇偶校验流仅篡改一个位。
在该实施例中,故意破坏意味着:在不使用本发明的完整性验证和错误检测/校正过程的情况下,原始(未损坏的)数据将是不可访问的。因此,如果将数据移动到未运行方法200或900的另一个设备,则数据将保持被破坏并且将潜在地不可使用。相反地,对运行方法200或900的(一个或多个)设备的任何数据访问请求将不会受到影响,这是因为在提供所请求的数据之前,该破坏将被校正。以这种方式,有可能将数据绑定到运行了与访问请求有关的方法200或900的一个或多个特定设备。
在该实施例中,优选的是,被篡改的数据是只读数据(例如,在数据的只读区段中)。这样可以防止ECC分析过程潜在地利用校正数据来盖写被篡改的数据。尽管这种盖写对于校正偶然的数据错误将是合期望的,但是关于故意篡改的数据它将是不合期望的,这是因为它将抵消所提供的保护。替换地,如果被篡改的数据在数据的读-写区段中(因此不是只读的),则可以提供用于标识数据的篡改部分的手段,以使得可以实现该方法,以便避免盖写数据的那些所标识的篡改部分。这将确保保留了由篡改提供的保护。
就包括可执行文件的数据而言,该故意篡改实施例特别有用。在这样的情况下,被破坏的可执行文件将无法运行(或将无法按意图/预期的方式实行),除非可以首先对其进行校正。因此,有必要在运行可执行文件之前实行方法200或900以校正可执行文件。再次,这意味着该可执行文件将无法在未批准的设备上正确地运行,该设备不包括运行方法200或900的合适加载器。
因此,在计算机程序(可执行文件)的加载时间处,就方法1100而言设想了类似的实施例。在该实施例中,在加载步骤之前,存储在存储介质上的计算机程序的一部分被有意/故意破坏/篡改。这种破坏使得错误分析过程能够校正由于该破坏所导致的错误。因此,被破坏的计算机程序仅在它与方法1100共同运行时才将可靠地起作用。在该实施例中,当选择计算机程序中要被破坏的部分时,优选的是选择该程序对于正确起作用而言所依赖的部分(例如,主要代码的部分或重要的子例程,而不是选择编码注释或很少使用的子例程)。在连续位篡改(即,相邻篡改)的一个示例中,可以以如下这样的方式对代码分支进行篡改:该代码分支跳转到实际上什么都不做的复杂函数。仅在方法1100的ECC分析过程之后,才能够访问代码的校正版本。
在另外的实施例中,可以包括与ECC修复尾部822的使用有关的附加步骤。如上所述,可选的ECC修复尾部822可以包括附加的修复数据以修复ECC修复尾部822本身。因此,方法900可以进一步包括第二错误分析过程。尽管步骤S904的错误分析过程是基于数据和ECC数据的,但是第二错误分析过程将基于ECC修复尾部822,包括附加的ECC修复数据。该第二错误分析过程可以包括基于附加的ECC修复数据来实行第二错误检测过程,以便基于附加的ECC修复数据来确定检测到的错误是否是可校正的。该第二错误分析过程可以包括:基于包括附加ECC修复数据的ECC修复尾部822来实行第二错误校正过程,以便提供经校正的ECC修复尾部822。因此,附加的ECC修复数据可以被用来检测ECC修复尾部822中的错误。附加的ECC修复数据也可以被用来尝试校正检测到的错误,以便提供经校正的ECC修复尾部822。
在一些实施例中,方法200、900或1000可以由系统100的内核来执行,例如由在内核空间中执行的内核模块来执行。例如,当内核接收到用以访问存储介质中存储的文件或用以访问存储器区域的请求/命令时,则内核(或内核模块)可以执行与该文件或该存储器区域(作为数据)有关的方法200、900或1000。
替换地,方法200、900或1000可以由内核(或内核模块)钩入的用户空间模块来执行。例如,当内核接收到用以访问存储介质上存储的文件或用以访问存储器区域的请求/命令时,则内核(或内核模块)可以向用户空间模块发出命令/指令,以使用户空间模块执行与该文件或该存储器区域(作为数据)有关的方法200、900或1000。可以以混淆的方式实现该用户空间模块,以帮助防止攻击者能够修改用户空间模块的功能。为了避免依赖于定制的内核模块或使内核模块钩入用户空间模块,可以使用方法1100(其中,在用户空间中执行的计算机程序可以执行其自己的检查和校正)。同样地,将领会的是,方法200、900和1000可以等同地作为用户空间中的计算机程序的执行的一部分来执行。
将领会的是,所描述的方法已经被示出为以特定次序执行的各个步骤。然而,技术人员将领会的是,这些步骤可以以不同的次序组合或执行,同时仍然实现期望的结果。
将领会的是,可以使用各种各样不同的信息处理系统来实现本发明的实施例。特别地,尽管附图及其讨论提供了示例性的计算系统和方法,但提出这些仅仅是为了在讨论本发明的各个方面时提供有用的参考。本发明的实施例可以在任何合适的数据处理设备上执行,这些设备诸如是个人计算机、膝上型计算机、个人数字助理、移动电话、机顶盒、电视、服务器计算机等。当然,出于讨论的目的,已经简化了对系统和方法的描述,并且它们仅仅是可以被用于本发明的实施例的许多不同类型的系统和方法之一。将领会的是,逻辑块之间的边界仅仅是说明性的,并且替换实施例可以合并逻辑块或元件,或者可以根据各种逻辑块或元件来施加功能的替代分解。
将领会的是,上述功能可以被实现为作为硬件和/或软件的一个或多个对应的模块。例如,上面提到的功能可以被实现为用于由系统的处理器执行的一个或多个软件组件。替换地,上面提到的功能可以被实现为诸如在一个或多个现场可编程门阵列(FPGA)和/或一个或多个专用集成电路(ASIC)上的硬件,和/或一个或多个数字信号处理器(DSP)和/或其他硬件布置。在本文中所包含的流程图中实现的、或者如上所述的方法步骤可以均由对应的相应模块来实现;在本文中所包含的流程图中实现的、或者如上所述的多个方法步骤可以由单个模块一起实现。
将领会的是,只要本发明的实施例由计算机程序实现,则存储或承载计算机程序的一个或多个存储介质和/或一个或多个传输介质就形成本发明的方面。计算机程序可以具有一个或多个程序指令或程序代码,当由一个或多个处理器(或一个或多个计算机)执行时,该程序指令或程序代码执行本发明的实施例。如本文中使用的术语“程序”可以是被设计用于在计算机系统上执行的指令序列,并且可以包括子例程、函数、过程、模块、对象方法、对象实现、可执行应用、小程序、小服务程序、源代码、目标代码、字节代码、共享库、动态链接库和/或被设计用于在计算机系统上执行的其他指令序列。存储介质可以是磁盘(诸如,硬盘驱动器或软盘)、光盘(诸如,CD-ROM、DVD-ROM或蓝光光盘)或存储器(诸如,ROM、RAM、EEPROM、EPROM、闪速存储器或便携式/可移动存储器设备等)。传输介质可以是通信信号、数据广播、两个或更多个计算机之间的通信链路等。
Claims (25)
1.一种计算机实现方法(200,900),其包括:
接收(S201,S901)与数据(810)有关的访问请求,其中存在与所述数据有关的ECC数据(820),其中通过在所述数据上运行ECC编码算法来生成所述ECC数据,其中所述ECC编码算法是基于汉明的算法,使得所述ECC数据包括与所述数据和所述ECC数据的组合有关的汉明奇偶校验位,并且其中,所述ECC数据被配置成使得能够校正跨越所述数据的多达预定数量的连续位的多位错误;
实行(S202,S902)第一完整性验证过程以验证至少所述数据的完整性;
响应于通过所述第一完整性验证过程对非完整性的发现,基于所述数据和所述ECC数据来实行(S203,S904)错误分析过程;
响应于通过所述错误分析过程对校正数据的生成,实行(S204,S907)第二完整性验证过程以验证至少所述校正数据的完整性;以及
响应于通过所述第二完整性验证过程对完整性的发现,使用所述校正数据来允许(S205,S903)访问请求;
其中,生成所述ECC数据,使得跨越所述预定数量的连续位的多位错误将导致每个汉明奇偶校验流的一个错误的最大值,由此使得能够校正所述多位错误。
2.根据权利要求1所述的方法,其中预定数量的连续位等于整数数量的字节。
3.根据权利要求1所述的方法,其中实行所述第一完整性验证过程比实行所述错误分析过程具有更低的计算开销。
4.根据权利要求1-3中任一项所述的方法,其中所述第一和/或第二完整性验证过程不是基于ECC的完整性验证过程。
5.根据权利要求1-3中任一项所述的方法,进一步包括:
在接收所述访问请求之前破坏所述数据的一部分,所述破坏使得所述第一完整性验证过程将导致非完整性的发现,并且所述破坏使得所述错误分析过程能够校正由于所述破坏所导致的所述数据的该部分中的错误。
6.根据权利要求1-3中任一项所述的方法,其中所述错误分析过程包括:基于所述ECC数据和所述数据两者来实行错误校正过程,以便提供所述校正数据。
7.根据权利要求1-3中任一项所述的方法,其中所述错误分析过程包括:基于所述ECC数据来实行错误检测过程,以便基于所述ECC数据来确定检测到的错误是否可校正。
8.根据权利要求7所述的方法,其中,响应于来自所述错误检测过程的基于所述ECC数据的确定来实行所述错误校正过程,所述确定为所述检测到的错误是可校正的。
9.根据权利要求7所述的方法,进一步包括:
响应于来自所述错误检测过程的基于所述ECC数据的确定来拒绝所述访问请求,所述确定为所述检测到的错误是不可校正的。
10.根据权利要求1-3中任一项所述的方法,进一步包括:
响应于通过所述错误分析过程对校正数据的生成,使用所述校正数据来更新所述数据。
11.根据权利要求1-3中任一项所述的方法,进一步包括:
响应于通过所述第一完整性验证过程对完整性的发现,允许所述访问请求。
12.根据权利要求1-3中任一项所述的方法,进一步包括:
响应于通过所述第二完整性验证过程对非完整性的发现,拒绝所述访问请求。
13.根据权利要求1-3中任一项所述的方法,其中所述错误分析过程包括:
在所述数据上重新运行所述ECC编码算法以生成比较ECC数据;以及
将所述比较ECC数据与所述ECC数据进行比较。
14.根据权利要求1-3中任一项所述的方法,其中,所述错误分析过程包括:
基于所述数据和所述ECC数据来运行所述ECC解码算法,以便生成所述校正数据。
15.根据权利要求1-3中任一项所述的方法,其中,所述ECC编码和/或解码算法在所述数据的一个或多个字节上并行运行。
16.根据权利要求1-3中任一项所述的方法,其中,所述ECC数据与所述数据一起存储。
17.根据权利要求13所述的方法,其中,所述ECC数据被附加到所述数据。
18.根据权利要求1-3中任一项所述的方法,其中,所述数据包括可执行软件代码。
19.根据权利要求1-3中任一项所述的方法,其中,在所述第一和/或第二验证过程中验证的数据包括以下各项之一:
所述数据;以及
所述数据和所述ECC数据。
20.根据权利要求1-3中任一项所述的方法,其中,所述第一完整性验证过程与所述第二完整性验证过程相同。
21.根据权利要求1-3中任一项所述的方法,其中,所述第一和/或第二完整性验证过程使用哈希值、校验和、消息认证码和数字签名中的一个或多个。
22.根据权利要求1-3中任一项所述的方法,其中,所述数据包括用于在所述第一和/或第二完整性验证过程中使用的第一完整性验证数据。
23.根据权利要求1-3中任一项所述的方法,其中,第二完整性验证数据与所述数据一起存储,以用于在所述第一和/或第二完整性验证过程中使用。
24.一种被布置成执行根据权利要求1至23中任一项所述的方法的装置。
25.一种计算机可读介质,其存储计算机程序,当由一个或多个处理器执行时使所述一个或多个处理器执行根据权利要求1至23中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1710839.0 | 2017-07-05 | ||
GBGB1710839.0A GB201710839D0 (en) | 2017-07-05 | 2017-07-05 | Data protection |
PCT/EP2018/068292 WO2019008112A1 (en) | 2017-07-05 | 2018-07-05 | DATA PROTECTION |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111052089A CN111052089A (zh) | 2020-04-21 |
CN111052089B true CN111052089B (zh) | 2024-03-19 |
Family
ID=59592412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880057589.5A Active CN111052089B (zh) | 2017-07-05 | 2018-07-05 | 数据保护 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11599651B2 (zh) |
EP (2) | EP3649553B1 (zh) |
CN (1) | CN111052089B (zh) |
GB (1) | GB201710839D0 (zh) |
WO (1) | WO2019008112A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11960358B1 (en) * | 2022-09-30 | 2024-04-16 | Nxp B.V. | More secure data reading with error correction codes |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11282701A (ja) * | 1997-11-14 | 1999-10-15 | Cirrus Logic Inc | コンピュータ記憶装置においてランダムデータに対してcrcシンドロームを生成するeccシステム |
CN104756120A (zh) * | 2013-03-27 | 2015-07-01 | 爱迪德技术有限公司 | 存储和访问数据 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5283791A (en) * | 1988-08-02 | 1994-02-01 | Cray Research Systems, Inc. | Error recovery method and apparatus for high performance disk drives |
US5287478A (en) * | 1991-08-06 | 1994-02-15 | R-Byte, Inc. | Digital data tape storage system utilizing plurality of read/write heads with system diagnostic capability |
US6367046B1 (en) * | 1992-09-23 | 2002-04-02 | International Business Machines Corporation | Multi-bit error correction system |
JP2003077294A (ja) * | 2001-08-31 | 2003-03-14 | Mitsubishi Electric Corp | メモリ回路 |
GB0226420D0 (en) * | 2002-11-13 | 2002-12-18 | Koninkl Philips Electronics Nv | An improved communications protocol |
US7389465B2 (en) * | 2004-01-30 | 2008-06-17 | Micron Technology, Inc. | Error detection and correction scheme for a memory device |
US8464093B1 (en) * | 2004-09-03 | 2013-06-11 | Extreme Networks, Inc. | Memory array error correction |
TWI303414B (en) * | 2005-12-21 | 2008-11-21 | Ind Tech Res Inst | A data encoding method for error correcton |
US7747903B2 (en) * | 2007-07-09 | 2010-06-29 | Micron Technology, Inc. | Error correction for memory |
US8464138B2 (en) * | 2008-08-20 | 2013-06-11 | Qualcomm Incorporated | Effective utilization of header space for error correction in aggregate frames |
US8495458B1 (en) * | 2008-11-17 | 2013-07-23 | Marvell International Ltd. | Systems and methods for multistage error correction |
US9166624B2 (en) * | 2010-05-11 | 2015-10-20 | Osaka University | Error-correcting code processing method and device |
US20110307758A1 (en) * | 2010-06-15 | 2011-12-15 | Fusion-Io, Inc. | Apparatus, system, and method for providing error correction |
WO2012039983A1 (en) * | 2010-09-24 | 2012-03-29 | Rambus Inc. | Memory device with ecc history table |
US9183078B1 (en) * | 2012-04-10 | 2015-11-10 | Marvell International Ltd. | Providing error checking and correcting (ECC) capability for memory |
US9128820B1 (en) | 2012-06-18 | 2015-09-08 | Western Digital Technologies, Inc. | File management among different zones of storage media |
JP5870901B2 (ja) * | 2012-11-02 | 2016-03-01 | ソニー株式会社 | 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法 |
US9146809B2 (en) * | 2013-10-07 | 2015-09-29 | Macronix International Co., Ltd. | ECC method for double pattern flash memory |
US9189327B2 (en) * | 2013-11-19 | 2015-11-17 | International Business Machines Corporation | Error-correcting code distribution for memory systems |
US9323602B2 (en) * | 2014-01-20 | 2016-04-26 | Freescale Semiconductor, Inc. | Error correction with extended CAM |
US9396064B2 (en) * | 2014-04-30 | 2016-07-19 | Freescale Semiconductor, Inc. | Error correction with secondary memory |
US9654143B2 (en) * | 2014-06-18 | 2017-05-16 | Intel Corporation | Consecutive bit error detection and correction |
JP2016014972A (ja) * | 2014-07-01 | 2016-01-28 | 富士通株式会社 | 通信制御装置,ストレージ装置及び通信制御プログラム |
US10229055B2 (en) * | 2014-10-29 | 2019-03-12 | Seagate Technology Llc | Adaptive spanning control |
US9619320B2 (en) * | 2015-02-20 | 2017-04-11 | Western Digital Technologies, Inc. | Error correction for non-volatile memory |
US20160380651A1 (en) * | 2015-06-25 | 2016-12-29 | Samsung Electronics Co., Ltd. | Multiple ecc checking mechanism with multi-bit hard and soft error correction capability |
US10621336B2 (en) | 2015-09-26 | 2020-04-14 | Intel Corporation | Technologies for software attack detection using encoded access intent |
US9904595B1 (en) * | 2016-08-23 | 2018-02-27 | Texas Instruments Incorporated | Error correction hardware with fault detection |
-
2017
- 2017-07-05 GB GBGB1710839.0A patent/GB201710839D0/en not_active Ceased
-
2018
- 2018-07-05 EP EP18737269.3A patent/EP3649553B1/en active Active
- 2018-07-05 CN CN201880057589.5A patent/CN111052089B/zh active Active
- 2018-07-05 US US16/623,424 patent/US11599651B2/en active Active
- 2018-07-05 EP EP21186138.0A patent/EP3916558A1/en not_active Withdrawn
- 2018-07-05 WO PCT/EP2018/068292 patent/WO2019008112A1/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11282701A (ja) * | 1997-11-14 | 1999-10-15 | Cirrus Logic Inc | コンピュータ記憶装置においてランダムデータに対してcrcシンドロームを生成するeccシステム |
CN104756120A (zh) * | 2013-03-27 | 2015-07-01 | 爱迪德技术有限公司 | 存储和访问数据 |
Also Published As
Publication number | Publication date |
---|---|
US11599651B2 (en) | 2023-03-07 |
CN111052089A (zh) | 2020-04-21 |
GB201710839D0 (en) | 2017-08-16 |
EP3649553B1 (en) | 2022-10-12 |
US20200193040A1 (en) | 2020-06-18 |
EP3649553A1 (en) | 2020-05-13 |
EP3916558A1 (en) | 2021-12-01 |
WO2019008112A1 (en) | 2019-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10650151B2 (en) | Method of execution of a binary code of a secure function by a microprocessor | |
US8145977B2 (en) | Methods and apparatus for providing error correction to unwritten pages and for identifying unwritten pages in flash memory | |
US7613982B2 (en) | Data processing apparatus and method for flash memory | |
JP5780174B2 (ja) | 不良ビットエラーを処理するシステムおよび方法 | |
KR102292212B1 (ko) | 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록용 에러 코드 발생장치 및 방법 | |
US9946474B2 (en) | Storing and accessing data | |
US8533557B2 (en) | Device and method for error correction and protection against data corruption | |
US9734328B2 (en) | Datum reading error detection method | |
US20080109904A1 (en) | Apparatus and method for managing secure data | |
US8949694B2 (en) | Address error detection | |
KR101486424B1 (ko) | 에러 정정 회로, 에러 정정 회로를 구비하는 플래시 메모리시스템 및 에러 정정 회로의 동작 방법 | |
US11663095B2 (en) | Error detection circuit | |
JPH03248251A (ja) | 情報処理装置 | |
KR20070077466A (ko) | 데이터 워드를 판독하는 장치 및 방법과 데이터 블록을 저장하는 장치 및 방법, 컴퓨터 판독 가능한 기록 매체 | |
US11461476B2 (en) | Method for executing a binary code of a function secured by a microprocessor | |
US10489244B2 (en) | Systems and methods for detecting and correcting memory corruptions in software | |
US10942868B2 (en) | Execution process of binary code of function secured by microprocessor | |
US20100194609A1 (en) | Method and Device For Coding Data Words | |
CN111052089B (zh) | 数据保护 | |
EP3454216B1 (en) | Method for protecting unauthorized data access from a memory | |
CN108572882B (zh) | 一种数据存储的方法及存储设备 | |
US20050289409A1 (en) | Parallel data bus | |
TW202246979A (zh) | 用於具有內建的錯誤校正和偵測的記憶體的錯誤率 | |
US20100180181A1 (en) | Apparatus and method for writing data to be stored to a predetermined memory area | |
US20220358206A1 (en) | Method for the execution of a binary code by a microprocessor |
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 |