CN1303529C - 利用伪随机数二进制序列程序互锁来防止窜改 - Google Patents

利用伪随机数二进制序列程序互锁来防止窜改 Download PDF

Info

Publication number
CN1303529C
CN1303529C CNB01103212XA CN01103212A CN1303529C CN 1303529 C CN1303529 C CN 1303529C CN B01103212X A CNB01103212X A CN B01103212XA CN 01103212 A CN01103212 A CN 01103212A CN 1303529 C CN1303529 C CN 1303529C
Authority
CN
China
Prior art keywords
pseudo
different piece
binary sequence
random binary
mentioned
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
CNB01103212XA
Other languages
English (en)
Other versions
CN1314635A (zh
Inventor
小G·W·威廉
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 CN1314635A publication Critical patent/CN1314635A/zh
Application granted granted Critical
Publication of CN1303529C publication Critical patent/CN1303529C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices

Abstract

通过调用以排它方式存在处理器及其外围设备的一个不同部分中的功能和来自另一不同部分的驱动程序来防止窜改,以便防止观察软件各部分的执行过程。伪随机二进制序列发生器与各不同部分相关并分别随调用和执行前述功能而递增。在允许或阻止进一步执行软件之前比较伪随机二进制序列值。可在任何特权级下进行比较。可在一种特权级下用PRBS值来破坏数据或程序文件并执行逆功能以便用本身的PRBS值在另一种特权级下恢复数据或程序文件。

Description

利用伪随机数二进制序列程序互锁来防止窜改
技术领域
本发明在总体上涉及计算机软件应用程序的安全措施,具体地说,本发明涉及用于防止非法人员观察应用程序执行过程的装置。
背景技术
在过去的几年中,计算机应用软件的数量和多样性大大增加。计算机硬件的发展使得这些应用程序的功能有极大的扩展,从而,必须要写入的代码量和其它开发成本有极大的增长。在同一时期内,软件销售商对因非法复制这类程序而可能损失的价值的认识也有所提高。因此,目前软件销售商的通常作法是要求注册各个程序拷贝或者是出售用于特定用户的定点许可,并在程序中包括这样的特性,使得能够防止除已对该程序拷贝注册过的人员以外的人运行应用程序或应用程序中的主要部分。
软件注册一般是通过以下方法来强制执行的:如果不依照注册来授权访问,则使软件的大部分无效。以相同方式,为了促销软件,通常可通过在线方式将呈下述形式的软件提供给用户:所述软件具有与演示拷贝相类似的减少了的功能,但这种软件能有效地运行,足以使潜在的购买者决定是否购买。然后,在购买、付款和注册时以远程的方式使得在初始时被禁止的功能生效。按这种可转换的形式发布软件还能提供这样的优点即:可以避免需要生产如演示拷贝那样的独立版本并能避免一个拷贝破坏另一个拷贝的可能性。
但是,尽管这种性能业已发展到了一定程度的完善性和复杂性并取得了良好的安全性,但可以通过修改应用程序以绕过这些性能而使任何的这种性能失去作用,这一点是不言自明的。使受保护的软件的功能复原并访问受保护的功能的方法一般称为“黑客攻击(hacking)”,它一般用于使口令保护、用户识别或验证等失去作用。修改程序的方法通常称为“打补丁(patching)”。使得难以通过黑客攻击行为来修改程序的特性称为“防窜改”。当然,对诸如数据库之类的多种软件以及应用程序来说,“防窜改”是应有的特性。
形成防窜改软件通常涉及到包括在处理器内的特权级以及所谓的特权指令的概念。一般需要特权指令以便允许访问处理器体系结构的受限性能。例如,特权指令或功能可包括加载和卸载处理器中的受保护的专用调试寄存器、勾连中断向量和处理关键的操作系统(OS)存储区以及输入/输出(I/O)功能。这些特权功能在低特权级下受控于应用程序(例如由应用程序来请求),但实际上在应用程序的正常操作过程中要通过更高特权操作系统组件在较高的特权级下由其它结构或软件所执行。具体地说,I/O功能的执行受限于OS的最高特权级并且不能由在较低特权级下操作或执行的应用程序来执行,而只能由该应用程序来请求。
也就是说,为了使得应用软件更安全、符合软件开发的要求,通常需要开发特权伴随软件模块(通常呈设备驱动程序的形式),这种软件模块可按与应用程序相串行的方式工作并且能代表有较低特权的应用程序来执行上述特权操作。当应用程序需要(或者,应该需要,这取决于编程者)验证系统的完整性或需要确定是否出现了某些类型的窜改时,应用程序就可调用上述特权模块以进行上述维护。不幸的是,这种组织结构及其较为广泛的应用使得应用程序与特权模块之间的接口成为企图使安全特征失去作用的逻辑攻击点。例如,撤掉与安全性有关的对特权模块的调用在许多情况下会使得它们要执行的防窜改性和完整性检查功能失去作用。
尽管没有一种防窜改的形式是完全安全的,但是,一般都认为,应用程序和相应特权模块中以这种方式(例如通过包括更多的技术、陷阱和相关性)提供的复杂程度越大,在给定的时间量和工作量内使应用程序和相应特权模块失去作用从而危及应用程序或数据完整性或获得包含在其中的秘密的成功可能性就越低。不幸的是,这种复杂性还会使软件应用程序的可靠性和/或稳定性(或者例如数据库和/或错误恢复系统的牢靠性)以及软件本身的执行速度和效率打折扣。所以,迄今为止,在应用程序执行效率与应用程序本身及其数据的安全性之间存在着不可避免的折衷。
发明内容
所以,本发明的一个目的是提供一种通过检测窜改并在检测到窜改时终止执行文件和/或使文件破坏来提高软件安全性的技术。
本发明的另一个目的是在不使软件执行效率明显打折扣的情况下提供软件的有效安全性。
本发明的又一个目的是防止非法人员观察软件执行过程。
本发明的还一个目的是防止以非法的方式使软件中被禁止的或受保护的部分变为有效、或者观察这些被禁止的或受保护的部分。
为了实现本发明上述和其它目的,提供了一种防止窜改在处理器上运行的软件的方法,所述处理器具有多个不同的部分,第一不同部分可以执行在第二不同部分中不存在的功能,以及提供一个含有用于执行上述方法的命令的软件,所述方法包括下列步骤:使与所述第二不同部分相关的第一伪随机二进制序列递增;从第二不同部分中调用第一不同部分的功能;使与所述第一不同部分相关的第二伪随机二进制序列发生器递增;执行所述功能(该功能可包括对伪随机序列的值进行比较或者除了使伪随机二进制序列发生器递增以外还可包括或不包括一种或多种操作);对所述第一和第二伪随机二进制序列发生器中的伪随机二进制序列值进行比较;以及,根据比较的结果控制所述软件的执行。
依照本发明的另一个方面,提供了这样一种防止窜改在处理器上运行的软件的方法,所述处理器具有多个不同的部分,一个不同部分可以执行在第二不同部分中不存在的功能,以及提供含有用于执行上述方法的命令的软件,所述方法包括下列步骤:用一个算法和第一不同部分中的伪随机二进制序列值来改变所述软件的数据;以及,用逆算法和在上述第一不同部分中伪随机二进制序列值来改变所述软件的数据;从而,当所述不同部分和所述另一个不同部分的伪随机二进制序列值相同时,可恢复由上述算法改变的数据。
附图说明
参照附图从以下对本发明最佳实施例的详细说明中可以更好地理解上述和其它目的、方面和优点,在附图中:
图1是本发明最佳实施例的高层框图,它说明了该实施例的操作;
图2A和2B包括说明图1所示的本发明实施例的操作的流程图;
图3是说明图1的实施例的优选增强形式的高层框图;
图4是说明图3所示的本发明增强形式的流程图。
具体实施方式
参照附图,具体参照图1、2A和2B,以高层概略框图的形式示出了本发明的实施例100。应该注意,如箭头104所示,在图1中设置了任意的时间标度(从左至右),其中,实框表示可用硬件或软件来实现的功能元素,而用虚线表示的框则表示应对其进行保护的软件序列。在图2A和2B中,所述序列自上向下进行并且以与图1用虚线106来区分特权级的相同的方式将在其上执行每一个所述功能的软件分隔到左方或右方。因此,图1与图2A和2B按不同的重点和观点说明了同样的主题。在可能的情况下使用相对应的标号。(在图3和4中也分别使用了同样的制图约定。)
正如本领域的技术人员所认识到的那样,伪随机二进制序列(PRBS)发生器是公知的,可按多种方式加以使用和实现。一般地说,PRBS发生器被实现为一个逻辑阵列,它可包括多个存储设备。PPBS发生器的一种常用形式使用了串行连接的触发器串,它们呈移位寄存器的形式。业已表明在具有不同长度的这种移位寄存器中,某些存储级的输出可按原码值或补码值反馈给其它存储级并且可与其它存储级的输出(更一般地称为掩码)作逻辑组合,可以生成一长串逻辑值,它们具有基本上与纯随机数值相同的统计学属性。当然,可用软件以本技术中周知的方式来模拟这种硬件实现形式,并且,通常都进行这种模拟。(事实上,就实施本发明而言,正如以下将详细说明的那样,软件实现形式是更佳的。)
相对所提供的存储级的数量而言,可以把PRBS发生器的重复周期做成极长。可以从单个存储级中串行地取出PRBS发生器的输出,或者从内部抽头中按任意长度(多达存储级的数量)的字节并行地取出PRBS发生器的输出。尽管PRBS在多个有任意长度的二进制数字之后重复,但在开始时作为例如存储设备的初始存储状态提供给PRBS发生器的特定值可以使所述序列的起点始于任何点。所述初始状态总称为种子值。所以,可以从PRBS发生器得出的唯一序列的数量等于重复序列中的位数。
此外,PRBS发生器中的各个不同的逻辑阵列的互连或掩码(例如各相应存储级的反馈和逻辑组合)可提供一唯一的二进制序列。但是,同样原因,同样的二进制序列仅可源于功能相同的PRBS发生器,这些发生器有同样的掩码、存储级数量并用同样的种子值来初始化。所以,PRBS序列在不事先知道这些参数的情况下难以复制。
本发明在原理上使用了两个相同的PRBS发生器110和120(或有同样掩码和存储级n的PRBS发生器),这两个PRBS发生器用相同种子值来初始化它们在请求和执行特权调用时分别递增。这两个相同PRBS发生器中的一个发生器被提供给所述各特权级的每一级,或者可以被各特权级访问,在所述的各特权级之间,可依照本发明的原理防窜改。在更高特权级或更低特权级上(或者在不同的特权级根据各相应特权级中的PRBS所执行的其它功能中)比较来自各PRBS发生器的PRBS,并且,在所述相应PRBS信号不相等时中断执行并阻断更高特权功能的结果。这种基本的操作模式可非常快地执行,并且,即使是经常地重复也不会显著地使软件的执行效率打折扣,而且,能如以下参照图3和4详细说明的那样很容易地得以增强。
参照图1以及图2A和2B,应该明白,这里示出了两种特权级,每种特权级均有相应的PRBS发生器110或120。这两种特权级被命名为与Windows-Intel环境术语相一致的环3(较低的特权)和环0(较高的特权)。但是,应该认识到,本发明完全适用于其中不同功能可在不同特权级下加以执行或者以其它方式限于由专用的独立硬件、软件或固件来加以执行的任何环境。例如,可能需要用于执行命令的专门数据路径或寄存器。
也就是说,就成功地实施本发明以达到其预定目的而言,仅需要处理器或其外围设备或所用的驱动程序有(或可配置成有)不同的操作部分,这些部分可与离散的相同(或同样配置和初始化)的PRBS发生器相关,并且,一个这样不同部分需要能执行在另一个不同部分上得不到的功能。因此,术语“不同部分”应为理解为包括满足上述条件的所有这种可能结构。
这方面,应该明白,用软件来实现PRBS发生器在理论上是优选的,因为,在较低的特权级下对硬件访问可能被拒绝,从而需要PRBS发生器的软件实现形式。此外,PRBS发生器的软件实现形式有助于提供相同的PRBS发生器并且有助于在应用程序和其伴随设备驱动程序或其它较高特权级软件中对这些发生器的初始化。还应注意,本发明可以并且应该用于对PRBS发生器本身进行保护。
就以下的说明而言,假定应用程序或其它软件正在执行尚未按本发明加以保护的功能,如虚箭头200所示。还假定PRBS发生器110、120已被初始化成相同的种子值、相同的掩码以及相同的值n,从而,PRBS发生器110、120会输出相同的值并且可被看作是同步的。
在程序指令列表中在应加以保护的程序部分之前的某一点上插入操作系列A(和/或B和/或X)。这些操作不一定要按紧挨着的次序执行而是介于它们之间可以具有其它操作,以便使这些操作的目的不大可能被非法人员所识别。为了能说明本发明,将指令序列A表示为包括三项操作A1、A2和A3。这些操作中的每一项操作均可包括多个命令。
当在程序中达到序列A以便保护一个或多个按不同特权级或用专用软件加以执行的后续操作(例如A2)时,步骤A1如标号202所示那样使PRBS发生器递增并前进至受保护的步骤A2,该步骤如标号204所示那样在特权环0(例如在设备驱动程序中)调用预定的功能A(FnA)。然后,功能A使PRBS发生器120递增。功能A执行预定的操作并如标号208所示返回至应用程序。
然后,应用程序前进至操作A3并如标号210所示取出PRBS发生器110的输出且如标号212所示调用Fnp以取出PRBS发生器120的输出,而且如标号214所示将所述输出返回给应用程序。然后,操作A3比较PRBS发生器110和120的输出,由于所述发生器两者在开始时是同步的并且两者在序列A期间均递增一次,故比较是成功的,应用程序如标号218所示继续进行。
序列B以类似的方式操作,因而不需要单独加以说明。如果在操作B3(与操作A3相对应)中对PRBS发生器输出的比较是成功的,则应用程序如标号222所示那样继续。
但是,如果因为应用程序尚未注册,操作A2尚未被授权,从而对环0或其中的任何功能(或要由功能执行的操作)的访问均会被拒绝,那么,应用程序就不能继续。如果非法用户试图通过撤掉步骤A1(200)来使拒绝访问失去作用,则步骤A2会使PRBS发生器120递增,而PRBS发生器110不会递增,从而A3(216)处的比较会失败。
相反,如果通过在操作A期间撤掉使PRBS发生器120递增而试图使拒绝访问失去作用,则所述比较也会失败。通过撤掉功能A(例如通过删除或不开放操作A2)试图使拒绝对应用程序后续部分的访问失去作用(例如,对代码进行比较)也会导致前述比较失败,因为,PRBS发生器110会递增,而PRBS发生器120不递增。通过插入使PRBS发生器120或110递增或递减而试图使拒绝访问失去作用也会使A3处的比较失败,因为,依照本发明,FnA和其它特权功能会在执行所述功能之前使PRBS发生器120递增。
即使执行了特权功能,也会在将结果报告给应用程序之前进行以较。在比较216失败时,就会以编程者所希望的任何方式例如通过转换至任何预定的子例程(包括从存储器或者甚至从将应用程序加载进计算机的存储介质中删除应用程序或者删除该应用程序中或多或少的关键部分)来终止应用程序的执行。
必须同时且适当地执行至少两种修改,才能使拒绝对特权功能的访问失去作用,而事先不知道应用程序执行过程的非法用户要成功地作到这一点几乎是完全不可能的。应该记得,对系统执行过程的观察正是本发明所要防止的一种特别类型的窜改。所以,应该认识到,尽管本发明在应用程序中即使多次使用或重复的情况下仍能简单和迅速地执行,但本发明仍能相当有效地防止将应用程序的执行过程暴露给非法用户去窜改。
就实施本发明的基本原理而言,在哪里进行比较或者是否在比较时执行额外的也是特权功能的功能并不重要。但是,通过如以下就图1和图2B中受保护的操作X所述那样执行这种额外的功能可以提供某种额处的保护。在这种情况下,操作X1如以前在操作A1中如标号222所述那样使PRBS发生器110递增。操作X2调用Fnx(224)并如以前那样使PRBS发生器120(226)递增。同样,按上述方式再返回至应用程序(228)。
然后,操作X3从PRBS发生器110中取出(230)PRBS值,但这时调用操作Fnp′且将PRBS值从PRBS发生器110提供(232)给设备驱动程序。然后特权功能Fnp′从PRBS发生器120中取出PRBS值并进行比较。Fnp′不使PRBS发生器120进一步递增,或者,X3和Fnp′两者都可设置成使PRBS发生器110和120分别递增。除了是在较高的(或者至少是不同的)特权级下进行比较以外,上述操作与操作序列A相类似。但是,在实践中,与操作A3和其它特权功能相比,提供了更多的位置,在这些位置处,非法人员会不适当地进行修改,并且,在X3或Fnp′处提供了通常的不一致性。
以下参照图3和4说明本发明的增强形式。尽管本发明的上述实施例会在对PRBS输出的比较失败之后开始终止应用程序或者毁坏或破坏文件,但图3和4所示的本发明增强形式则将文件破坏和修复包括为防窜改的一部分,从而在性能上更牢靠并且会在检测到窜改之前的更早时间采取保护动作。现将所述增强形式说明为上述受保护的操作A的变化形式A′。
如以前那样执行操作A1,以便使PRBS发生器110递增。但是,如标号402所示,递增后的PRBS返回给应用程序。操作A2′如标号404所示利用该PRBS值以便用算法X和来自PRBS发生器110的当前PRBS值有意地毁坏或破坏数据和/或应用程序代码。然后,操作A3′调用特权功能FnA′,以便在使PRBS发生器120递增且返回该新的PRBS值之后执行操作A′。然后,使用来自PRBS发生器120的新PRBS值,该值目前与PRBS发生器110的值相同,并利用来自PRBS发生器120的PRBS值和算法X的逆算法X′重构在标号404处破坏的数据或代码,如标号410所示。
在这种情况下,不需要单独的比较,因为,对数据或代码的不正确的重构会终止应用程序或返回一个不正确和无意义的结果(因为数据或代码实际上是被随机二进制代码序列所破坏的)。此外,在操作A′期间不需要执行对数据进行破坏和重构以外的特权操作,因而实际上试图观察程序执行过程的非法人员不能从应用程序中获得信息。所述增强形式可单独使用或者与特权功能结合使用,所述特权功能利用比较作为诸如上述A、B或X之类的特权功能的特定实例的替代方案。
就以上内容而言,可以看出,本发明尽管能简单能够快速地执行,但是在单个实例中却能实现很高程度的防窜改。可提供本发明的多个实例,并且,所述防窜改过程可具体在变化形式(例如图2B)和增强形式(例如图4)中进行重复,以便在应用程序执行速度不打折扣的情况下提供在实践上难以超越的保护。
尽管就单个的实施例说明了本发明,但是本领域的技术人员应该认识到,可用后附权利要求的精神和范围内的改进形式来实施本发明。

Claims (10)

1、一种防止窜改在处理器上运行的软件的方法,所述处理器具有多个不同的部分,其中第一不同部分可以执行在第二不同部分中不存在的功能,所述方法包括下列步骤:
使与上述第二不同部分相关的第一伪随机二进制序列发生器递增;
从所述第二不同部分中调用上述第一不同部分的所述功能;
使与上述第一不同部分相关的第二伪随机二进制序列发生器递增;
执行所述功能;
对所述第一和第二伪随机二进制序列发生器中的伪随机二进制序列值进行比较;以及
根据比较步骤的结果控制所述软件的执行。
2、如权利要求1的方法,其特征在于,所述功能限于使上述第一不同部分相关的第二伪随机二进制序列发生器递增。
3、如权利要求1的方法,其特征在于,所述第一不同部分中存在的另一个功能调用来自上述第二不同部分相关的第一伪随机二进制序列发生器中的伪随机二进制序列值并在所述第一不同部分中执行上述比较步骤。
4、如权利要求3的方法,其特征在于,所述另一个功能使上述第一不同部分相关的第二伪随机二进制序列发生器递增,并且,在调用上述另一功能时,使所述第二不同部分相关的第一伪随机二进制序列发生器递增。
5、如权利要求2的方法,其特征在于,所述第一不同部分中存在的另一个功能调用来自上述第二不同部分相关的第一伪随机二进制序列发生器中的伪随机二进制序列值并在所述第一不同部分中执行上述比较步骤。
6、如权利要求5的方法,其特征在于,所述另一个功能使上述第一不同部分相关的第二伪随机二进制序列发生器递增,并且,在调用上述另一功能时,使所述第二不同部分相关的第一伪随机二进制序列发生器递增。
7、如权利要求1的方法,其特征在于,该方法还包括下列步骤:
用一个算法以及所述第二不同部分相关的第一伪随机二进制序列发生器中的伪随机二进制序列值来改变所述软件的数据;以及
用具有其功能是上述算法的逆算法的另一个算法以及所述第一不同部分相关的第二伪随机二进制序列发生器中的伪随机二进制序列值来改变所述软件的数据;
从而,在所述第一不同部分和所述第二不同部分相关的第一和第二伪随机二进制序列发生器的伪随机二进制序列值相同时,可恢复用上述算法改变的数据。
8、如权利要求1的方法,其特征在于,所述不同部分具有不同的特权级。
9、一种防止窜改在处理器上运行的软件的方法,所述处理器具有不同的部分,其中第一不同部分可以执行在第二不同部分中不存在的功能,所述方法包括下列步骤:
用一个算法和所述第二不同部分中的伪随机二进制序列值来改变所述软件的数据;以及,
用具有其功能是上述算法的逆算法的另一个算法和所述第一不同部分中的伪随机二进制序列值来改变所述软件的数据;
从而,当所述第一不同部分和所述第二不同部分的伪随机二进制序列值相同时,恢复由上述算法改变的数据。
10、如权利要求9的方法,其特征在于,所述不同部分具有不同的特权级。
CNB01103212XA 2000-02-08 2001-02-05 利用伪随机数二进制序列程序互锁来防止窜改 Expired - Fee Related CN1303529C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/500,345 2000-02-08
US09/500,345 US6789199B1 (en) 2000-02-08 2000-02-08 Tamper resistance with pseudo-random binary sequence program interlocks
US09/500345 2000-02-08

Publications (2)

Publication Number Publication Date
CN1314635A CN1314635A (zh) 2001-09-26
CN1303529C true CN1303529C (zh) 2007-03-07

Family

ID=23989003

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB01103212XA Expired - Fee Related CN1303529C (zh) 2000-02-08 2001-02-05 利用伪随机数二进制序列程序互锁来防止窜改

Country Status (7)

Country Link
US (1) US6789199B1 (zh)
JP (1) JP3721085B2 (zh)
KR (1) KR100406228B1 (zh)
CN (1) CN1303529C (zh)
CA (1) CA2324759A1 (zh)
GB (1) GB2366028B (zh)
TW (1) TW490608B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305564B2 (en) 2002-12-19 2007-12-04 International Business Machines Corporation System and method to proactively detect software tampering
US7100205B2 (en) * 2003-10-22 2006-08-29 The United States Of America As Represented By The Secretary Of The Navy Secure attention instruction central processing unit and system architecture
US7552342B1 (en) 2005-02-16 2009-06-23 Rennie Glen Software, Llc Method and system for increasing the tamper resistance of a software application
US20090201126A1 (en) * 2008-02-11 2009-08-13 Sanyo Electric Co., Ltd. Electronic device provided with theft prevention function, and method for preventing theft of electronic devices
US20110030036A1 (en) * 2009-07-31 2011-02-03 Wells Jr James W Running a software module at a higher privilege level in response to a requestor associated with a lower privilege level
EP2362314A1 (en) * 2010-02-18 2011-08-31 Thomson Licensing Method and apparatus for verifying the integrity of software code during execution and apparatus for generating such software code

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4310720A (en) * 1978-03-31 1982-01-12 Pitney Bowes Inc. Computer accessing system
CN1159108A (zh) * 1995-12-18 1997-09-10 阿尔卡塔尔Cit有限公司 用在异步传输模式信元传送信息的加密和解密器件
CN1201545A (zh) * 1995-09-18 1998-12-09 艾利森电话股份有限公司 用于用户认证的方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4573119A (en) 1983-07-11 1986-02-25 Westheimer Thomas O Computer software protection system
US4644493A (en) * 1984-09-14 1987-02-17 International Business Machines Corporation Implementing a shared higher level of privilege on personal computers for copy protection of software
US4605922A (en) 1984-09-14 1986-08-12 Racon, Inc. Intrusion detector
FR2638869B1 (fr) 1988-11-10 1990-12-21 Sgs Thomson Microelectronics Dispositif de securite contre la detection non autorisee de donnees protegees
GB9005916D0 (en) 1990-03-16 1990-05-09 Amstrad Plc Computer system
US5175847A (en) 1990-09-20 1992-12-29 Logicon Incorporated Computer system capable of program execution recovery
US5337357A (en) 1993-06-17 1994-08-09 Software Security, Inc. Method of software distribution protection
GB9422389D0 (en) * 1994-11-05 1995-01-04 Int Computers Ltd Authenticating access control for sensitive functions
US5757914A (en) * 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
GB9608696D0 (en) 1996-04-26 1996-07-03 Europ Computer Ind Res Electronic copy protection mechanism
US6463538B1 (en) * 1998-12-30 2002-10-08 Rainbow Technologies, Inc. Method of software protection using a random code generator

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4310720A (en) * 1978-03-31 1982-01-12 Pitney Bowes Inc. Computer accessing system
CN1201545A (zh) * 1995-09-18 1998-12-09 艾利森电话股份有限公司 用于用户认证的方法和装置
CN1159108A (zh) * 1995-12-18 1997-09-10 阿尔卡塔尔Cit有限公司 用在异步传输模式信元传送信息的加密和解密器件

Also Published As

Publication number Publication date
JP2001236132A (ja) 2001-08-31
GB0102166D0 (en) 2001-03-14
GB2366028A (en) 2002-02-27
TW490608B (en) 2002-06-11
KR20010078013A (ko) 2001-08-20
US6789199B1 (en) 2004-09-07
JP3721085B2 (ja) 2005-11-30
KR100406228B1 (ko) 2003-11-17
GB2366028B (en) 2004-08-18
CN1314635A (zh) 2001-09-26
CA2324759A1 (en) 2001-08-08

Similar Documents

Publication Publication Date Title
Collberg et al. Dynamic path-based software watermarking
KR100368947B1 (ko) 실행 모듈 및 이에 연관된 보호 서비스 제공자 모듈의 무결성 검사
Naumovich et al. Preventing piracy, reverse engineering, and tampering
Forrest et al. Self-nonself discrimination in a computer
DE60113844T2 (de) Verfahren zur feststellung böswilligen rechnerkodes
JP3686080B2 (ja) デジタル信号集合体に対する改変検出方法
Shao et al. Defending embedded systems against buffer overflow via hardware/software
US20080289045A1 (en) Method and device for encoding software to prevent reverse engineering, tampering or modifying software code, and masking the logical function of software execution
CN102667794A (zh) 用于保护操作系统免于非授权修改的方法和系统
CN105512548A (zh) 基于隐藏可执行镜像并注入dll保护镜像代码的方法
CN1303529C (zh) 利用伪随机数二进制序列程序互锁来防止窜改
Piromsopa et al. Survey of protections from buffer-overflow attacks
Jones et al. Defeating Denial-of-Service attacks in a self-managing N-Variant system
US20230088304A1 (en) Secure computing system for attestation of secured code, data and execution flows
US7784063B2 (en) Method and apparatus for system caller authentication
Co et al. Double Helix and RAVEN: a system for cyber fault tolerance and recovery
Wang et al. A survey of return-oriented programming attack, defense and its benign use
Brumley et al. Sting: An end-to-end self-healing system for defending against internet worms
Cohen Defense-in-depth against computer viruses
Piromsopa et al. Defeating buffer-overflow prevention hardware
Alouneh et al. A software approach for stack memory protection based on duplication and randomisation
Liu et al. Multi-Variant Execution Research of Software Diversity
US20230090165A1 (en) Compiler add-on for code, data and execution flows attestation in a secure computing system
Cohen Current best practices against computer viruses with examples from the DOS operating system
US9785768B1 (en) System and method to deter software tampering using interlinked sub-processes

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070307