CN100555237C - 用于检测和防止回放攻击的方法和系统 - Google Patents

用于检测和防止回放攻击的方法和系统 Download PDF

Info

Publication number
CN100555237C
CN100555237C CNB200480043634XA CN200480043634A CN100555237C CN 100555237 C CN100555237 C CN 100555237C CN B200480043634X A CNB200480043634X A CN B200480043634XA CN 200480043634 A CN200480043634 A CN 200480043634A CN 100555237 C CN100555237 C CN 100555237C
Authority
CN
China
Prior art keywords
master project
project
application data
inspection item
control information
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
Application number
CNB200480043634XA
Other languages
English (en)
Other versions
CN101084487A (zh
Inventor
马丁·特拉普
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101084487A publication Critical patent/CN101084487A/zh
Application granted granted Critical
Publication of CN100555237C publication Critical patent/CN100555237C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2145Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2151Time stamp

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Chemical And Physical Treatments For Wood And The Like (AREA)
  • Treatments For Attaching Organic Compounds To Fibrous Goods (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

根据本发明的方法扩展了写操作,以便包括步骤:接收用于将要写到分层树结构的应用数据的写指令(202);递增计时器;将时间戳设置为该计时器的值(201);基于接收到的应用数据和时间戳,计算消息认证码;将控制信息附加到应用数据;将带有控制信息的应用数据作为主项目写到数据存储设备,并且通过跟随链接,沿着从主项目到根的路径更新与主项目相关联的每个检查项目的控制信息。用于从数据存储设备读应用数据的方法(204)包括步骤:验证包含在应用数据位置处的消息认证码;将来自该位置处的数据解析为应用数据和控制信息;认证控制信息,并且将应用数据传送给调用应用程序。

Description

用于检测和防止回放攻击的方法和系统
技术领域
公开的本发明广义上涉及数据安全领域,并且更具体地,涉及从不可信数据存储设备(store)对数据的可靠检索。
背景技术
信息技术(IT)系统依赖于可靠的数据存储设备,并且这些数据存储设备通常位于IT系统的安全计算环境之外,并且因此易于受到攻击。可以使用安全计算环境保护其内部应用程序免受物理和逻辑攻击,但是这些应用程序可能仍然依赖不能部署在安全计算环境内的外部数据存储设备。见Trapp等人的“Method and Apparatus for SecureProcessing of Sensitive Data,”申请序号10/065,802,通过引用将其结合在此。
可以使用标准的密码技术加密和认证数据存储设备的内容,并且从而可以保护数据不受窥探和未授权的修改,但是它们不足以保证对数据存储设备的查询总是返回最准确和最新近的数据。对数据存储设备查询的回放(replay)攻击是这样的一种攻击:攻击者以曾经存储在数据存储设备内、但是不再是当前的数据对查询进行回答。进入数据存储设备的攻击者可以用过时的数据响应应用程序作出的查询,假装这些是数据存储设备的实际内容。这种攻击通常称为回放攻击,因为攻击者“回放”以前在系统中有效的数据。在当今依赖来自数据存储设备的信息的许多应用程序中,这是一个严重的问题。如果考虑查询银行账户内的数目或罪犯监视列表内的条目的应用程序,可以明了该问题的严重性。
虽然有针对计算机网络上的安全通信通道的回放攻击的已知对策,这些技术不能适用于确保对位于安全计算环境之外的数据存储设备(即,不安全的数据存储设备)的数据库查询不受回放攻击。当前大多数大型系统运行在安全计算环境之外,因此,需要一种克服现有技术的缺点的方法。
发明内容
根据本发明,一种方法允许在安全计算环境内运行的应用程序在查询不安全的数据存储设备(例如数据库或文件系统)的过程中检测和防止回放攻击。简单地说,根据本发明的方法扩展了写操作以包括步骤:接收用于将被写到分层树结构内的应用数据的写指令;响应接收到该写指令递增计时器,将时间戳设置为该计时器的值;基于接收到的应用数据计算消息认证码,将控制信息附加到应用数据,所述控制信息包括所述时间戳和所述消息认证码;将带有附加控制信息的应用数据作为主项目写到不安全的数据存储设备;并且通过跟随链接,沿着从主项目到根的路径,更新与所述主项目相关联的每个检查项目的控制信息。
根据本发明的方法扩展了从不安全的数据存储设备读取应用数据的读操作以包括步骤:接收对于应用数据的读指令;为应用数据确定在不安全的数据存储设备内的位置;验证包含在该位置处的消息认证码;将来自该位置的数据解析为应用数据和控制信息;认证控制信息;以及将应用数据传送到调用应用程序。
根据本发明的实施例,本发明还提供了一种系统,用于使得在安全计算环境内运行的应用程序在查询不安全的数据存储设备(例如数据库或文件系统)的过程中检测和防止回放攻击。所述系统扩展了写操作以包括:接收用于将被写到分层树结构内的应用数据的写指令的装置;响应接收到该写指令递增计时器,将时间戳设置为该计时器的值的装置;基于接收到的应用数据计算消息认证码,将控制信息附加到应用数据的装置,所述控制信息包括所述时间戳和所述消息认证码;将带有附加控制信息的应用数据作为主项目写到不安全的数据存储设备的装置;以及通过跟随链接,沿着从主项目到根的路径,更新与所述主项目相关联的每个检查项目的控制信息的装置。
根据另一个实施例,一种计算机程序产品包括用于执行上述方法的指令。
附图说明
图1示出了安全计算环境和数据存储设备的高层结构。
图2示出了保护不受回放攻击的抽象视图。
图3示出了项目和检查树的详细结构。
图4示出了作为统一建模语言(UML)中的类图的项目和链接的数据结构。
图5示出了将主项目写到数据存储设备内以及更新检查树内的控制信息的详细流程。
图6示出了从数据存储设备内读取主项目和检查检查树内的控制信息的详细流程。
图7示出了用于保持安全计算环境内的某些项目的图1的另一种替代。
图8示出了带有忽略的安全计算环境内的检查条目的图7的另一种替代。
图9示出了用于根据要求计算到检查条目的链接的等式。
图10示出了来自多个安全计算环境的对单个数据存储设备或多个数据存储设备的共享使用。
图11示出了一个系统的例子,通过此系统,多个安全环境通过一个被指定为主(master)的安全环境访问至少一个数据存储设备。
图12示出了可以有利地使用本发明的实施例的计算机程序产品的简化的方框图。
具体实施方式
讨论一种在运行在安全计算环境中的应用程序对外部(不安全的)数据存储设备进行的查询过程中识别并且防止回放攻击的方法。
安全计算环境(“安全环境”)是不能从该安全环境之外观看或访问事务的环境。另外,不可能从安全环境之外恶意地改变处理或处理后的数据。由该环境检测对安全环境、在内部运行的程序、或内部处理的数据的试图篡改,然后其破坏存储在该环境内的敏感数据,或使其成为永久不可访问的。安全环境的一个例子是通用计算设备,诸如具有FIPS(联邦信息处理标准)140-1等级4验证的IBM4758密码协处理器。见发表于2001年11月6日的Schneck等人的“System forcontrolling Access and Distribution of Digital Property”,美国专利号6,314,409,通过引用将其结合在此。
在本发明的优选实施例中,将数据存储设备(其可以是数据库或文件系统)看成是项目的集合。一个项目是数据存储设备的总是被一块读和写的一部分。一个项目可以例如代表数据库表中的单个字段或整个行,文件中的一个记录或整个文件。有两种类型的项目:主项目和检查项目。应用数据存储设备在主项目内。检查项目包含控制或安全信息。主和检查项目包含消息认证码,到检查条目的链接,以及虚拟时间(VTime)字段。每个检查项目保持至少两个检查条目。检查条目代表被存储为检查项目内的阵列的单个VTime值。
本发明的一个重要特征是使用全局计数器、时间戳和检查条目的分层结构,以便在安全环境内确定对外部数据存储设备的查询是否返回最新近的数据(最新鲜的数据)。虚拟时间是逻辑上位于安全环境内的全局计数器的值。每次将主项目写入数据存储设备时,递增全局计数器。详见图5。该计数器可用硬件或软件实现,但是在重置或重新引导安全环境时,其值必须不能丢失。优选地,全局计数器的值存储在安全环境内的电池供电的RAM内。
本发明的另一个方面是给项目(主和检查项目)增加(即,附加)VTime值(时间戳)、到检查条目的唯一的链接、以及消息认证码(MAC)。所有敏感操作都被限制在安全环境内。例如,使用唯一的MAC密钥在安全环境内产生和检查MAC,该MAC密钥保持在从外部不能对其进行修改的安全环境内。
项目和它们的链接形成树状分层结构,其中该树的叶子是主项目,并且所有其他节点(包括根)是检查项目。该方法包含扩展了向/从不安全数据存储设备的读/写操作两者的处理。在读操作中检测回放攻击。在写操作中实现检测和防止未来的回放攻击的对策,并且该对策将在下面进行描述。
参考图1,示出了用于保护不受回放攻击的系统100的高层图示。在安全环境150内,应用程序101执行命令,以便将应用数据102存储在位于安全环境150之外的数据存储设备107内。箭头132表示安全环境150和数据存储设备107间的通信关联。由于数据存储设备107在安全环境150之外,它被考虑为是不安全的系统。我们将“不安全”的系统定义为可以非法访问(即,未授权访问)的系统。因此,可推断出“可信任”的系统是不能非法访问的系统。
根据本发明的实施例,应用程序101执行在(逻辑上位于)安全环境150内。全局计数器(计时器)104、编码/解码服务103、消息摘要服务105和加密引擎115也逻辑地位于(即,不必物理地位于)安全环境150内。根据此处描述的实施例,将如下进行写操作:应用程序101将应用数据102传输到编码/解码服务103。编码/解码服务103递增全局计数器104,并且给应用数据102增加全局计数器104的实际值,并且创建从主项目110到检测项目109内的条目的链接111。
有若干方案可用于创建从项目到它们的检查条目的链接:编码/解码服务103可以a)当它写项目时,分配和指定新的检查条目;或b)在对该项目的第一次的写操作过程中,分配和指定用于该项目的检查条目。对相同项目的连续的写然后将重用存储在该项目内的链接。b)的变种是方案c),方案c)中系统在初始化阶段或根据要求周期地产生项目,检查项目和它们之间的链接。在该情况下,当编码/解码服务103希望更新项目时,它重用存储在已初始化的项目内的这些预先定义的链接。在下面的讨论中,为了简化起见,将假设使用方案c。在图9中给出了检查条目的分配和链接的可替换表示的更多细节。
图3中将给出项目和检查树140的结构的细节。编码/解码服务103使用消息摘要服务105,以便使用MAC密钥106计算用于增加后的数据(其包括链接和时间戳)的MAC(消息认证码)。可选择地,可以使用加密引擎115加密和解密将正写到主和检查项目内的数据。然后将增加后和保护的数据写到数据存储设备107内的主项目110内。然后,编码/解码服务103通过更新检查项目109的检查条目和MAC内的时间戳,更新相关联的检查项目109。在检查项目109内,更新两个时间戳:一个是检查条目,由另一个检查项目引用它;并且另一个是检查项目本身的时间戳。以编码/解码服务103递增全局计数器104时创建的时间条目更新时间戳。
图1示出了检查树140的子集作为例子:虚线箭头和点表示任意层的检查项目109。作为主项目110或检查项目109的时间戳存储的VTime是该项目上一次被写到数据存储设备107时的时刻(由全局计数器104的值指示)。该VTime还记录在所述项目的检查条目内。因此,只要当将主项目110写到数据存储设备107时就也以新的时间戳更新主项目110和检查树140的根108间的检查树路径上的所有检查项目109。
从刚刚被写的主项目110内的链接所引用的检查条目开始,并且然后向上遍历树结构140,直到更新了树140的根108为止,编码/解码服务103更新检查项目109,这样沿着该路径更新项目内的所有控制信息。
在本发明的一个实施例中,可以避免到检查条目的链接的明确存储。根据需要从本来应当明确存储该链接的项目的地址计算检查条目的地址,从而消除了对明确存储链接的需要。图9中示出了用于该实施例的所需等式。
当安全环境150内的应用程序101将对应用数据102的请求委派(delegate)给编码/解码服务103时,读操作开始。编码/解码服务103读所请求的主项目110以及从请求的主项目110往上直到检查树140的根108并且包括根108的路径上的所有检查项目109。对于读取的所有项目,编码/解码服务103使用消息摘要服务105,利用MAC密钥106,以便验证读取的项目内的所有MAC都是正确的。对于这些测试,编码/解码服务103重新计算存储在项目内的数据的MAC(包括链接和时间戳),并且将其与当前存储在项目内的MAC进行比较。如果该数据是可信的,即,它是由编码/解码服务103产生的,两个值(当前存储在项目内的MAC和重新计算的MAC值)相同。如果MAC比较成功了,则编码/解码服务103确定检查树140的根108的时间戳值是否等于全局计数器104的实际值。如果MAC比较未成功,读操作终止并且向调用者报告错误。
当从数据存储设备107读取主项目110时,项目的时间戳必须仍然与其检查条目内的值匹配。保持该检查条目的检查项目的时间戳必须与其自己的检查条目匹配,依此类推直到检查树140的根108。检查树的根108的时间戳必须总是等于安全环境150内的实际虚拟时间(由全局计数器104指示)。如果这些条件之一失败,或如果这些项目的任何MAC是错误的,则认为数据被篡改或回放了,并且该方法报告错误。
另外,对于所有其他读取的项目,编码/解码服务103确定它们的时间戳值是否与项目的链接111引用的检查条目内所存储的值相同。编码/解码服务103执行检查,以便确定从主项目110到根108的路径上的各个项目是否是新鲜的。紧跟着写主项目110和其检查项目109之后,所有这些项目的时间戳被设置为实际的虚拟时间(全局计数器104的值)。当读取主项目110和其检查项目109时,它们不必全部具有相同的时间戳,但是对于各个项目,时间戳必须与记录在项目的检查条目内的时间戳相同。仅在对主项目(以及其检查项目)的写和读之间未发生对不同主项目(以及其检查项目)的写时,从主项目110到检查树140的根108的同一路径上的项目具有相同的时间戳。如果在对主项目a的写之后并且在对主项目a的读之前发生了对不同的主项目b的一个写操作,则:从b到根108的路径上的所有项目具有相同的时间戳;结果是现在不再是从a到根108上的所有项目都具有相同的时间戳了(在此期间,至少根10被改变了,但是可能还有其他项目的时间戳也改变了,如果从a到根的路径和从b到根108的路径具有更多的共同项目)。在两种情况下得以保持的是:各个项目的时间戳与位于其检查项目109内的其检查条目内的时间戳相同。
如果发现所有MAC都正确,并且所有时间戳比较都匹配,编码/解码服务103使用例如解析算法从主项目110的内容中剥离时间戳、链接和MAC,并且将剩余数据作为应用数据102返回应用程序101。如果MAC不正确,或时间戳比较失败了,可能作为回放攻击的结果,编码/解码服务103向调用应用程序101返回错误码,指示数据存储设备107内的数据被篡改了,并且因此可能包含过时的内容。
图2示出了保护不受回放攻击的概要步骤。该方法扩展了从/向数据存储设备107的读/写操作。在从数据存储设备107读的过程中检测回放攻击。
扩展的写操作包括步骤201、202和203。在步骤201中,给应用数据102增加控制信息,诸如项目被存储在数据存储设备107内或写到数据存储设备107时的VTime。该VTime是全局计数器104的值。在步骤202中,维护被称为检查树的树状分层数据结构,其由存储在检查项目内的检查条目构成。检查条目记录链接到它的项目的上一次修改时间。沿着到根108的路径,使用从主项目110到检查项目109的链接维护该树状结构。在步骤203中,示出检查树140的根108的上一次修改时间的全局计数器104的值被预留在安全环境150中。换言之,全局计数器104的值保持不变,直到下一次将数据写到数据存储设备为止。
扩展的读操作包括步骤204、205和206。在步骤204中,从数据存储设备107中读主项目110。然后将该项目的修改时间(记录在项目本身内)和在步骤205中记录在项目的检查条目内的修改时间进行比较。为直到根108的检查树140中所有父节点重复该检查。在步骤206,将根108的上一次修改时间和反映修改根的最后时刻的安全环境150内的全局计数器104的值进行比较。如果这些检查中的任一个失败,或项目的MAC无效,将检测到回放攻击。
图2给出了非常概括的视图。下面给出关于数据项目的结构、检查树140的结构、对具有MAC的项目的保护、数据定义、该方法的算法和变形的细节。
图3示出了检查树140中的主项目110和检查项目109的详细结构。其示出检查树140的子集300作为例子:虚线箭头代表任意层的检查项目109。主项目110由两部分构成:保持应用数据的内容302;以及控制信息,控制信息包括时间戳303、保持检查条目的地址的链接304、以及MAC305。检查项目109包含至少两个检查条目的阵列307,并且象主项目中那样,包含时间戳308、到检查条目的链接309、以及MAC310。时间戳308代表项目上一次被写时的虚拟时刻(其值由全局计数器104提供)。MAC310保护项目的内容不受不可识别的修改。
检查树140的根108是特殊的。它是不具有到检查条目的链接的检查项目109。所有其他项目109和110都具有指向检查条目的链接。链接是对<c,s>,其中c代表检查项目(109),并且s代表c的检查条目阵列(307)中的索引。链接<Cx,Sx>从项目x指向位于检查项目Cx内的x的检查条目。每个项目具有唯一的链接,即没有两个项目链接到相同的检查条目。检查树140的叶子总是主项目110。检查树140的根108和内部节点全是检查项目109。
只要在数据存储设备107中分配(即,向其写)新的主项目110时,就必须创建和链接检查项目109。如果主项目110的数目是固定的,可以事先创建所有项目和链接111。还可以成比例地增加主项目110的数目,从而相应地创建必需的检查项目109和链接111。
检查项目109内的检查条目阵列307的大小是任意的,唯一的要求是它包含至少两个条目。这保证主项目110的有限集合的检查树140的大小也是有限的。不同的检查项目109可以具有不同大小的检查条目阵列。检查条目阵列越大,得到的检查树的高度越短,产生越平坦的分层结构。这导致检查树内的路径上更少的检查条目,但是也导致在读/写操作过程中必须更新和检查的更多的检查项目109。
在防止回放攻击的系统的另一个实现中,使用加密引擎115加密存储在主项目110和/或检查项目109内的数据的某些或全部。虽然这是一个有利的特征,但是不是回放保护所必需的。
图4示出了作为统一建模语言(UML)中的类图的项目和链接的定义。Item类401是PrimaryItem类403和CheckItem类404的共同父类。Item类401定义时间戳、MAC,并且总计Link类402的值。所有这些字段由主和检查项目对象继承。类型“MacType”是适合于保持MAC的类型。时间戳的类型“VTime”是足够大以便表示足够多数目的虚拟时刻的整数类型,例如>32位。在写操作过程中递增VTime的值,并且该值在系统的生命期中不能溢出。PrimaryItem类403的对象具有某一任意类型的内容字段,而CheckItem类404的对象保持检查条目。检查条目阵列是VTime值的阵列。单个检查条目是该阵列中的一个值。单个检查条目记录引用该条目的项目的上一次修改时间。注意,CheckItem404保持若干时间戳:检查条目阵列中存储至少两个时间戳,并且从Item父类继承其他的时间戳。检查条目内的时间戳记录链接到它的项目的上一次修改时间,而继承的时间戳记录检查项目本身的上一次修改时间。链接402包含两个值:对CheckItem404的引用,由location关联表示;以及用于选择检查项目内的检查条目的称为idx的整数值。
位置是唯一标识数据存储设备107内的项目的值。该值的结构取决于项目的粒度,诸如项目是数据库行、数据库字段还是文件内的记录。例如,为了引用数据库行,位置值可以是数据库表的名称和唯一选择该表内的行的关键字值。作为另一个例子,如果项目是索引文件内的记录,则位置值可由文件名和文件中记录的索引构成。
PrimaryItem类403提供两个操作(读和写),这两个操作实现用于检测和保护不受回放攻击的方法。写操作将应用数据102保存到数据存储设备107内的主项目110,并且还保持检查树140内的附加控制信息。读操作从数据存储设备107内的主项目110读应用数据102,并且还验证检查树140内的控制信息,以便检测回放攻击。图5和6中给出了关于这些操作的细节。
图5示出了用于将应用数据102写到数据存储设备107内的主项目110和用于保持检查树140内的控制信息的逻辑流程。该操作具有两个参数:将存储的应用数据102、以及它将被存储到的location。location必须指向主项目110。它不能指向检查项目109。
在步骤500,递增全局计时器104以便为这个写操作提供新的VTime值。步骤501读当前存储在数据存储设备107的给定location的item。此时不考虑item的实际内容,而是其link信息,其是稍后在步骤506和507中需要的。在步骤502中以新的应用数据102重设当前内容。在步骤503中,将item的时间戳设置为实际虚拟时间。在步骤504中:计算并设置item的MAC后,在步骤505中将item写回数据存储设备107。步骤506确定item的链接字段是否指向检查条目。如果其不指向检查条目,item是检查树140的根108,并且在步骤510中写操作结束。
如果链接字段指向检查条目,处理继续到步骤507。在步骤507中,从实际项目的链接字段取出item的location和该item内的检查条目的索引idx。在步骤508中,将检查item从其在数据存储设备内的location读出。步骤509以实际的虚拟时间更新刚刚读出的检查项目的检查条目阵列内的索引idx处的时间戳。然后,处理循环回步骤503,以便保护并且存储检查项目109,并且从直到检查树140的根108的其他检查条目(其最终被在步骤506中检测)继续。
图6示出了从数据存储设备107中的位置读取应用数据102,以及检查检查树140内的控制信息的流程。读操作的参数是主项目110的位置。该操作将返回存储在数据存储设备107内的项目内的应用数据102。
在步骤601中,从数据存储设备107内的给定位置读取主项目110。在步骤602中检查主项目的MAC。如果该检查失败,处理在步骤613中结束,并且向调用应用101报告错误。如果MAC正确,步骤603将刚刚读取的项目的内容字段赋值给变量data,从而稍后在步骤612中可以将其返回给调用应用程序101。步骤604将项目的时间戳保存在变量stamp中,以便稍后比较。然后,步骤605确定实际项目的链接字段是否指向检查条目。如果它不指向检查条目,则实际项目是检查树140的根108,并且处理继续到步骤611。如果实际项目的链接指向检查条目,处理继续到步骤606,在该步骤从实际item的链接字段取出检查项目109的location以及该检查项目109内的检查条目的索引idx。在步骤607中,将检查项目109从其在数据存储设备107中的location读出。步骤608检查刚刚读出的检查项目的MAC。如果MAC不正确,处理在步骤613结束。如果MAC正确,处理继续到步骤609。
步骤609和610将刚刚读出的检查项目的检查条目阵列内的索引idx处的时间戳与stamp的值(其在步骤604中被设置为从以前的item获得的虚拟时间)进行比较。如果这些值不同,处理在步骤613中结束。如果这些值相同,处理循环回到步骤604,以便检查直到检查树140的根108的其他的检查条目(其最终在步骤605被检测)。当处理到达步骤611时,已经成功地对检查树140直到其根进行了检查。现在,步骤611将stamp变量(其现在保持着根item的时间戳)与实际的虚拟时间(即全局计数器104的值)进行比较。如果两个值相同,则没有检测到回放,并且通过返回在步骤603中设置的data的值,在步骤612中成功终止读操作。注意,仅将data的值(仅仅是内容)传送给调用应用程序。如果这两个值不同,处理在步骤613结束,向调用者报告错误。
仅在检测到回放攻击或数据修改(即仅在步骤610或611内的时间戳比较失败了;或在步骤602或608的MAC验证失败了)时才到达步骤613。如果到达了步骤613,读操作终止,并且向调用者通知错误,以便警告调用者可能的数据污染。依赖于该读出值的任意随后的操作现在都是不安全的,具有产生无效结果的高概率。调用者有若干行动应付该错误。三种可能的选择是:
a)期望修改仅是暂时的而重试读操作。如果攻击者没有永久修改数据存储设备107,而是拦截和改变数据存储设备和安全环境150间的通信,这将是可能的。
b)如果系统具有项目的备份,以及在此期间执行的事务的完整日志,并且如果该信息可以成功读出而未遇到其他回答攻击,系统可以恢复账户,并且调用者可以再次重试读取;或
c)调用者可以抛出(precipitate)处理故障,从而迫使实际事务的重新进行(rollback),并且将该事件通知操作者。
图7和图8示出了图2的数据布局的可替换的实施例。
图7示出了安全环境701,但是其忽略了图1中示出的、在安全环境150内的组件。其还示出了具有主项目706的不安全的数据存储设备702。该数据存储设备702和图1的数据存储设备107间的重要区别是仅有检查项目705的某些被放置在数据存储设备702内。检查树的根703、以及或许有靠近根703的若干层检查项目704放置在安全环境内。图7示出了检查树的子集作为例子:虚线箭头代表任意层检查项目。
该实施例功能上等同于图1所示的实施例,但是它缩减了保持在数据存储设备702内的检查树部分的高度。缺点是安全计算环境701内的检查项目703-704可能消耗安全环境701的宝贵的存储器资源。优点是:对于图5和图6中所示的流程,会减少必须从数据存储设备702读和写到数据存储设备702的项目的数目,这又会显著地加速处理。采用哪个实施例的决策必须考虑速度和存储器分配间的这种折中。
图8示出了基本上是图7的修改的本发明的另一实施例。与图7比较,安全环境801内的检查项目803不具有到检查条目的链接。链接是数据存储设备802内的检查项目804和主项目805所需的,但是它们对于安全环境801内的项目不是必需的。可以省略检查树的根和其他检查项目,只要从数据存储设备802内的项目804-805没有到达它们的直接链接即可。如果省略这些检查项目,必须相应地改变图5和图6中的流程:不从盘读出检查项目803或将其写到盘上,并且省略步骤611而以步骤612替代。对于安全环境801内的检查项目803,还可以省略时间戳和MAC字段。图8示出了检查树的子集作为例子:虚线箭头代表任意层检查项目。
图8还可以看作具有若干根的检查树的森林(forest),并且因此如图8中的曲线所指示的,还示出了可以如何使用用于保护不受回放攻击的方法以它们自己的检查树保护数据存储设备801的不同部分,或甚至是不同的数据存储设备。
图9示出了可以用于从主项目x的地址根据要求计算到检查条目的链接的递归等式。如果根据要求计算到检查条目的链接,则不必在项目内明确地存储链接。如果主条目的数目N以及每个检查项目的检查条目的数目n是固定的,则根据要求计算链接是简单的。此处<c1,s1>=<cx,sx>是用于主项目x的检查条目,<c2,s2>是用于检查项目c1的检查条目,<c3,s3>是用于检查项目c2的检查条目,并且依此类推直到检查树的根,cr,其中r是lr=1成立的第一个索引,其中l是如图9中定义的长度函数。
图10示出了本发明的另一个实施例,在该实施例中在访问一个或多个数据存储设备的同时,给两个或更多安全环境1001-1002提供回放攻击保护。在该例子中,示出了两个数据存储设备1004和1005。在该实施例1000中,安全环境1001和1002在它们之间建立安全通道1003。可以通过多个标准密码协议中的任意一种(诸如保护两个或更多安全环境间的通信不受修改和回放攻击的SSL/TLS(安全套接字层/传输层完全)),确保该安全通道1003或通信链接的安全。然后可以使用安全通道1003管理和同步所有安全环境间的一个或多个全局计时器的共享。该实施例需要每个数据存储设备一个计时器。
图11示出了图10中所示的实施例的可替代实施例,其中将一个安全环境1123指定为“主”,并且多个其他的安全环境(在主安全环境之外)可以通过主1123访问数据存储设备1104内的应用数据102。仅有主1123访问数据存储设备1104内的项目。其他的安全环境1101到1109起主1123的客户端的作用,如果沿用服务器/客户端范例的话。客户端1101到1109将读/写请求委派给主1123。主1123为客户端执行服务。该服务为客户端提供读和写操作。可以通过多个不同的协议访问该服务,这些协议诸如TCP/IP(传输控制协议/网际协议)和RPC(远程程序调用)。RPC是一种编程接口,允许一个程序使用远程机器内的另一个程序的服务。以箭头1130和1139表示主1123和客户端1101-1109间的通信。必须保护通信层不受修改和回放。这可以利用诸如图10的SSL/TLS协议的标准密码技术实现。
在图11中所示的例子内,主1123提供高速缓冲存储器1127,其高速缓存由所有客户端1101-1109作出的读访问。高速缓冲存储器1127逻辑上位于主安全环境1123内,并且因此被保护不受可能的攻击。当客户端1101-1109从数据存储设备请求应用数据时,由于所请求的数据可能因以前成功的请求被高速缓存在高速缓冲存储器1127内,主1123首先查询高速缓存1127。如果在高速缓冲存储器1127可得到该数据,主1123可以将该数据返回给作出请求的客户端,而不必访问数据存储设备1124。检索高速缓存的数据是一种用于数据检索加速的已知方法。另外,由于对数据存储设备1124的所有修改必须经过主1123,并且没有其他系统可以直接访问数据存储设备1124,高速缓存的数据总被认为是新的并且未被污染。应当理解还可以有利地使用刚刚描述的实施例而不用高速缓冲存储器1127。另外,可以在与本发明的精神和范围保持一致的前提下,用该方式访问多个数据存储设备。数据存储设备1125被以虚线示出,以便表示具有多个数据存储设备的可替换的配置。
参考图12,示出了可以配置成根据本发明的实施例操作的可编程计算机的简化方框图。根据本发明的实施例,计算机可读介质(诸如CDROM 1201)可以包括用于根据本发明操作可编程计算机1200的程序指令。可编程计算机1200的处理装置包括:随机访问存储器1202、只读存储器1204、处理器1206和输入/输出控制器1208。这些被通过CPU总线1207连接。另外,有输入/输出总线1209和输入/输出接口1210、盘驱动控制器1212、大容量存储设备1220、大容量存储接口1214、以及可移动的CDROM驱动器1216。已示出和讨论的是可编程计算机装置的高度简化图示。本领域的技术人员应当理解,在计算机装置的任何实际应用中需要其他低层组件和连接。
应当理解,提供的示例性例子决不是对本发明的许多可能的使用的穷尽描述。因此,虽然已经描述了当前被认为是优选的实施例的实施例,本领域的技术人员应当理解,在本发明的精神和范围内可以作出其他修改。

Claims (25)

1.一种在安全计算环境内执行的、用于将应用数据写到包括用于存储主项目和检查项目的分层树结构的数据存储设备的方法,该方法包括步骤:
接收包括将要写的所述应用数据的写指令;
响应接收到所述写指令,递增计时器;
将时间戳设置为该计时器的值;
计算用于所述接收到的应用数据和所述时间戳的消息认证码;
将控制信息附加到所述应用数据,该控制信息包括所述时间戳和所述消息认证码;
将带有所述附加控制信息的所述应用数据作为主项目写到所述数据存储设备;和
通过跟随链接,沿着从所述主项目到根的路径更新与所述主项目相关联的每个检查项目的控制信息。
2.如权利要求1的方法,还包括步骤:
计算从所述主项目到检查条目的唯一链接,所述唯一链接根据要求从所述主项目的地址中计算出,以便附加到所述控制信息。
3.如权利要求1的方法,还包括步骤:
为检查项目和主项目的每一个,在所述项目本身和其链接的检查条目内记录上一次修改所述检查项目的虚拟时刻。
4.如权利要求1的方法,还包括在所述主项目和所述检查项目中的至少一个内存储所述应用数据或控制信息的至少一些的加密形式的步骤。
5.如权利要求1的方法,还包括步骤:
将所述分层树结构的上部放置在所述安全计算环境内。
6.如权利要求5的方法,还包括步骤:
在所述安全计算环境内,将位于所述树结构的上部内的检查项目与时间戳、链接和消息认证码一起存储。
7.如权利要求1的方法,还包括步骤:
通过安全通道,同步访问至少一个数据存储设备的两个或更多安全计算环境间的计时器的共享和使用。
8.如权利要求7的方法,还包括步骤:
以密码协议确保所述通道的安全。
9.如权利要求1的方法,还包括步骤:
通过至少一个安全计算环境,给多个安全计算环境提供对所述数据存储设备内的信息的访问。
10.如权利要求1的方法,还包括步骤:
使用逻辑上位于所述安全计算环境内的消息认证码密钥,确保每个主项目和沿着从所述主项目到根的路径的检查项目的所述消息认证码的安全。
11.一种在安全计算环境内执行的、用于从包括用于存储主项目和检查项目的分层树结构的数据存储设备中读取应用数据的方法,该方法包括步骤:
接收包含将要读取的应用数据的读指令;
为所述将要读取的应用数据确定在所述数据存储设备内的位置;
验证包含在该位置处的消息认证码;
将包含在该位置处的数据解析为应用数据和控制信息,所述控制信息包括:时间戳和消息认证码;
通过跟随链接,每次从所述数据存储设备中读取主项目时,沿着从所述主项目到根的路径,认证与所述主项目相关联的每个检查项目的控制信息;和
将所述应用数据传送到调用应用程序。
12.如权利要求11的方法,其中认证步骤还包括:
使用逻辑上位于所述安全计算环境内的消息认证码密钥,沿着从所述主项目到根的路径,认证每个检查项目的所述消息认证码。
13.如权利要求11的方法,其中认证步骤还包括:
如果所述主项目不是所述根,将所述主项目和所述路径上的每个检查项目的所述时间戳和记录在链接的检查条目内的时间戳进行比较;和
如果所述主项目是所述根,将所述时间戳和逻辑上位于所述安全计算环境内的计时器的实际值进行比较。
14.如权利要求11的方法,还包括步骤:
在逻辑上位于所述安全计算环境内的高速缓冲存储器中高速缓存从所述数据存储设备检索的应用数据。
15.如权利要求11的方法,还包括步骤:
如果满足下面条件中的至少一个,则向调用应用程序返回错误码:发现消息认证码无效,和时间戳比较失败。
16.一种应用于安全计算环境内的、用于将应用数据写到包括用于存储主项目和检查项目的分层树结构的数据存储设备的系统,包括:
接收包括将要写的所述应用数据的写指令的装置;
响应接收到所述写指令,递增计时器的装置;
将时间戳设置为该计时器的值的装置;
计算用于所述接收到的应用数据和所述时间戳的消息认证码的装置;
将控制信息附加到所述应用数据的装置,该控制信息包括所述时间戳和所述消息认证码;
将带有所述附加的控制信息的所述应用数据作为主项目写到所述数据存储设备的装置;和
通过跟随链接,沿着从所述主项目到根的路径更新与所述主项目相关联的每个检查项目的控制信息的装置。
17.如权利要求16的系统,还包括:
计算从所述主项目到检查条目的唯一链接的装置,所述唯一链接根据要求从所述主项目的地址中计算出,以便附加到所述控制信息。
18.如权利要求16的系统,还包括:
为检查项目和主项目的每一个,在所述主项目和检查项目本身和其链接的检查条目内记录上一次修改所述检查项目的虚拟时刻的装置。
19.如权利要求16的系统,还包括在所述主项目和所述检查项目中的至少一个内存储所述应用数据或控制信息的至少一些的加密形式的装置。
20.如权利要求16的系统,还包括:
将所述分层树结构的上部放置在所述安全计算环境内的装置。
21.如权利要求20的系统,还包括:
在所述安全计算环境内,将位于所述树结构的上部内的检查项目与时间戳、链接和消息认证码一起存储的装置。
22.如权利要求16的系统,还包括:
通过安全通道,同步访问至少一个数据存储设备的两个或更多安全计算环境间的计时器的共享和使用的装置。
23.如权利要求22的系统,还包括:
以密码协议确保所述通道的安全的装置。
24.如权利要求16的系统,还包括:
通过至少一个安全计算环境,给多个安全计算环境提供对所述数据存储设备内的信息的访问的装置。
25.如权利要求16的系统,还包括:
使用逻辑上位于所述安全计算环境内的消息认证码密钥,确保每个主项目和沿着从所述主项目到根的路径的检查项目的所述消息认证码的安全的装置。
CNB200480043634XA 2004-08-02 2004-08-02 用于检测和防止回放攻击的方法和系统 Expired - Fee Related CN100555237C (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2004/024770 WO2006022667A1 (en) 2004-08-02 2004-08-02 Method for guaranteeing freshness of results for queries against a non-secure data store

Publications (2)

Publication Number Publication Date
CN101084487A CN101084487A (zh) 2007-12-05
CN100555237C true CN100555237C (zh) 2009-10-28

Family

ID=35967768

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200480043634XA Expired - Fee Related CN100555237C (zh) 2004-08-02 2004-08-02 用于检测和防止回放攻击的方法和系统

Country Status (6)

Country Link
EP (1) EP1782203B1 (zh)
KR (1) KR100945781B1 (zh)
CN (1) CN100555237C (zh)
AT (1) ATE493706T1 (zh)
DE (1) DE602004030831D1 (zh)
WO (1) WO2006022667A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE401614T1 (de) 2006-05-26 2008-08-15 Sap Ag Verfahren und vorrichtung zum sicheren nachrichtenverkehr in einem netzwerk
IL187042A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Write failure protection for hierarchical integrity schemes
US9002973B2 (en) * 2011-10-21 2015-04-07 Fisher Controls International Llc Delayed publishing in process control systems
CN104468105A (zh) * 2013-09-17 2015-03-25 中兴通讯股份有限公司 账号信息处理方法及装置
CN109284424B (zh) * 2018-09-21 2021-10-19 长沙学院 构造滑动情况表的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5923763A (en) * 1996-03-21 1999-07-13 Walker Asset Management Limited Partnership Method and apparatus for secure document timestamping
US6393566B1 (en) * 1995-07-28 2002-05-21 National Institute Of Standards And Technology Time-stamp service for the national information network
CN1359493A (zh) * 1999-05-07 2002-07-17 德国捷德有限公司 用于安全写环形存储器指针的方法
CN1499771A (zh) * 2002-11-08 2004-05-26 联想(北京)有限公司 一种确保数据安全性的数据存储方法及其安全存储装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5001752A (en) * 1989-10-13 1991-03-19 Fischer Addison M Public/key date-time notary facility
EP1141808A1 (en) 1999-10-29 2001-10-10 Koninklijke Philips Electronics N.V. Assuring data integrity via a secure counter
KR20010008268A (ko) * 2000-11-20 2001-02-05 이계철 가입자 단말의 시스템 시간 설정을 위한 타임 스탬핑서비스 방법
US7092930B2 (en) * 2001-03-29 2006-08-15 Pitney Bowes Inc. Architecture and method to secure database records from tampering in devices such as postage value dispensing mechanisms
US7107445B2 (en) 2002-11-20 2006-09-12 International Business Machines Corporation Method and apparatus for secure processing of sensitive data
US7019676B2 (en) * 2003-06-12 2006-03-28 Matsushita Electric Industrial Co, Ltd. D/A converter

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393566B1 (en) * 1995-07-28 2002-05-21 National Institute Of Standards And Technology Time-stamp service for the national information network
US5923763A (en) * 1996-03-21 1999-07-13 Walker Asset Management Limited Partnership Method and apparatus for secure document timestamping
CN1359493A (zh) * 1999-05-07 2002-07-17 德国捷德有限公司 用于安全写环形存储器指针的方法
CN1499771A (zh) * 2002-11-08 2004-05-26 联想(北京)有限公司 一种确保数据安全性的数据存储方法及其安全存储装置

Also Published As

Publication number Publication date
EP1782203A4 (en) 2009-05-13
KR20070035030A (ko) 2007-03-29
ATE493706T1 (de) 2011-01-15
DE602004030831D1 (de) 2011-02-10
EP1782203A1 (en) 2007-05-09
CN101084487A (zh) 2007-12-05
WO2006022667A1 (en) 2006-03-02
EP1782203B1 (en) 2010-12-29
KR100945781B1 (ko) 2010-03-08

Similar Documents

Publication Publication Date Title
EP3776208B1 (en) Runtime self-correction for blockchain ledgers
CN110933163B (zh) 区块链合约部署方法、装置、设备以及存储介质
US7996679B2 (en) System and method for performing a trust-preserving migration of data objects from a source to a target
KR100711017B1 (ko) 소프트웨어 에이전트와 에이전트 행동의 검증 방법
CN1858738B (zh) 访问数据库的方法及装置
US7809958B2 (en) Method for guaranteeing freshness of results for queries against a non-secure data store
US6581093B1 (en) Policy validation in a LDAP directory
CN113221166A (zh) 一种获取区块链数据的方法、装置、电子设备及存储介质
US9727742B2 (en) Database encryption to provide write protection
CN113391880B (zh) 一种分层双重哈希验证的可信镜像传输方法
CN110069266A (zh) 应用升级方法、装置、计算机设备以及存储介质
CN100555237C (zh) 用于检测和防止回放攻击的方法和系统
CN111869165A (zh) 用于控制和/或监控装置的方法和控制系统
CN114822796A (zh) 基于智能合约的疫苗分配管理系统、方法及合约平台
KR102192232B1 (ko) 블록체인 기반의 원전 사이버 보안 가이드라인 제공 시스템
WO2006040757A1 (en) A system and method for authenticating and validating the linkage between input files and output files in a computational process
CN109933351A (zh) 一种修复和升级Linux系统的方法与装置
CN111698227A (zh) 信息同步管理方法、装置、计算机系统及可读存储介质
CN117762430B (zh) 基于应用程序的处理方法、装置、计算机设备和存储介质
CN117032727B (zh) 基于区块链的文件编译方法、装置、设备、介质及产品
CN118094623A (zh) 日志的可信处理方法、装置、计算机设备及存储介质
CN117951231A (zh) 基于数据一致性的仓库数据管理方法、设备及存储介质
CN116090011A (zh) 一种云链融合应用平台的数据安全处理方法
JP2023154825A (ja) 分散情報処理システムおよび分散情報処理方法
CN114662158A (zh) 数据处理方法、装置、系统及存储介质

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091028

Termination date: 20210802