检查程序指令是否已经由便携式终端设备执行的方法

文档序号:6360438阅读:215来源:国知局
专利名称:检查程序指令是否已经由便携式终端设备执行的方法
技术领域
本发明涉及检查程序指令是否已经由便携式终端设备执行的方法和系统。
背景技术
随着电子终端设备,特别是诸如移动无线电设备、PDA、平板PC、智能电话等的终端设备的越发普及,在这些终端设备上个人的、机密的、秘密的数据和/或至少具有敏感内容的数据的处理增加。这些数据特别包括用户的机密,例如授权数据、访问数据、个人身份编号、支付交易数据,特别是TAN和信用卡号。如果这些数据被攻击者窥探,则在很多情况中引起财务或个人损失。
以与具有因特网连接的传统PC上的攻击方法可比较的方式,例如借助于间谍软件,便携式终端设备越来越频繁地变成攻击目标。因此,在这样的终端设备上的数据应当受到最大保护,从而在这样的数据上的间谍攻击是无果的。间谍攻击通过植入有害第三方程序指令来完成,例如通过作为恶意软件的所谓的木马、病毒或蠕虫。因此,需要便携式终端设备检查要执行的各个程序指令以识别第三方程序指令的植入并且如果可行的话,初始化防御动作。这里,在要执行的程序指令的实际执行之前、期间或之后可以进行要执行的程序指令的检查。根据本发明理解程序指令为便携式终端设备的计算单元,特别是CPU可以执行和处理的机器可读指令、语句和/或命令的序列。对于这里的发明,程序指令呈现为机器码、字节码或源码,或编译器或解译器是否作为用于CPU中的它们的执行的翻译实体插入是非实质性。从现有技术已知用于程序指令的检查方法。根据美国专利US-7191464-B2,在终端设备的起始程序指令(所谓的引导代码)的执行期间已经进行检查。这里程序指令细分为多个部分,在将接下来的部分的控制传递到终端设备之前,程序指令的每个部分检查接下来要执行的程序指令的部分的完整性。此过程的问题是程序指令的第一部分必须是值得信任的,因为该第一部分自身不被检查。这可以例如通过在例如ROM存储器的特殊组件中存储程序指令的第一部分来解决,因为ROM存储器在初始写入之后不能再被改变。但是,这排除了例如借助于软件补丁的该第一部分的任何后续更新。在US-2008/0022108-A1中,再次描述了用于检查程序指令的第一部分的方法。这里,在程序指令的一部分的基础上计算随机密码功能,其在程序指令的该部分的执行之前在独立和外部的密码硬件单元中验证。在此情况下,在没有位于系统外的独立单元的情况下无法这样做。

发明内容
因此,本发明是基于提供用于检查程序指令是否已经由终端设备执行的方法和系统的目的,其是简单和安全的并且可以低成本地实现。同时,此检查应该不是可预测的并且不是资源密集的。同时,程序指令必须已经在哪个时间点和程序指令的哪个部分必须已经检查应该是无关紧要的。这里的部分目的是利用终端设备的现有硬件设施。本发明的此目的通过在同级的独立权利要求中描述的措施完成。在各个从属权利要求中描述有利的实施例。根据本发明,因此提出了检查程序指令是否已经由终端设备执行的方法,其中,终端设备调用(call for)该程序指令,该程序指令以可执行形式存储在可信任的实体中,特别是芯片卡。存储优选地在可信任实体的易失性存储器区域中生效,特别是闪存。这里,优选地经由终端设备和可信任实体之间的现有通信连接使调用生效。调用步骤之后是可信任实体以使得修改的程序指令在方法的每次执行时改变的方式可变地修改可执行程序指令的步骤。此可变修改基本上意味着在根据本发明的方法的每次执行时不同地修改程序指令。这意味着在根据本发明的方法的重复执行时发生替代修改以检查相同的程序指令。
在终端设备上无修改的程序指令的执行具有的原始效果不由程序指令的改进而更改。这可能引起额外效果,例如,由于程序指令的改进所获得的检查值,这些额外效果用来检查程序指令的执行。接着,修改的程序指令从可信任的实体传送到终端设备并由终端设备执行,通过修改的程序指令的执行获得检查值。由于程序指令的修改而获得此检查值。此检查值又从终端设备传送到可信任的实体并在可信任的实体中验证,用以检查所调用的程序指令是否已经在终端设备中执行。通过此方法,有利地实现了在每次执行之前单独地修改要执行的程序指令。因此,在植入第三方影响的部分没有预测是可能的,因为修改的程序指令的执行必然引起单独的检查值。由于间谍攻击将它们自身植入程序指令中的第三方程序指令不知道要获得的检查值或导致获得错误检查值,从而在可信任的实体内的检查值的基础上的检查得出其不是要执行的所调用的程序指令。在方法的一个实施例中,要执行的程序指令在调用它们之前从终端设备传送到可信任的实体。因此仅临时地和出于修改的目的在可信任实体中存储程序指令。其结果是,降低在可信任实体中的存储器要求并且仍然保证恰当的检查。有利地,所获得的检查值在可信任实体中与在修改的程序指令的传送之前存储的期望值比较,并且假如检查值和期望值匹配,则检查得出终端设备已经执行调用的程序指令。为了增加安全性并降低检查的执行时间,在一个实施例中,终端设备仅调用程序指令的部分。在根据本发明的方法的每次执行时,可以调用存储在可信任实体中的程序指令的不同部分。要调用的部分的选择可以是随机的。这些部分也可以特别地是起始程序指令,从而可以由根据本发明的方法安全地检查程序指令的很多部分的起始处的部分的完整性。在有利的实施例中,可变的改进生效从而将可执行的检查指令并入程序指令中。在修改的程序指令的执行时,此检查指令传递用来在可信任实体中验证的检查值。可信任实体类似地执行该检查指令并存储该检查指令的结果作为期望值。特别是,算法计算、所调用的程序指令的无修改或修改部分的签名、密码计算可以合并为检查指令。特别是,在每次改进时检查指令是不同的。以示例的方式,检查指令是可执行散列算法,获得某些部分,特别是修改的程序指令的计算的散列值作为检查值。借助于修改的程序指令,本发明的想法得以类似地包括检查未调用的程序指令。例如,修改的程序指令传送到终端设备,它们由该终端设备执行,并且通过修改的额外效果,可以是已经执行的所检查的程序指令或可以是必须通过已经执行的程序指令,特别是软件例行程序、接口配置或访问权呈现的所检查的效果。可以以此方式识别通过恶意软件的所植入的第三方程序指令。在有利的实施例中,通过合并可变值,特别是随机值来生效程序指令的可变修改。获得该可变值作为通过终端设备执行修改的程序指令并在可信任实体中验证的检查值。替代地,通过修改在可变值上执行散列函数,并且可变值的散列值作为获得的检查值传送。类似地,可以获得将要执行或已执行的程序指令的散列值作为检查值。替代地,通过在所调用的程序指令的特定位置或不同位置并入空闲指令的随机数,也称为空闲任务或NOP来生效可变修改。然后,包含这些空闲指令的程序指令的部分的 位置或散列值用作要验证的检查值。替代地,也可以插入程序指令而无任何目标效果,所谓的无意义命令,也指垃圾指令。由通过所调用的程序指令的部分的随机化来生效的可变修改获得安全性上的进一步增加。然后,所获得的检查值例如是散列值或随机化数据流的签名,其也由可信任实体计算并存储为期望值。在替代实施例中,可变地修改程序指令,从而在终端设备中修改的程序指令的执行之后,以密码加密形式生效所获得的检查值的传送,可信任实体能够解密所获得的检查值。出于此目的,特别是密匙对的公共部分作为修改的程序指令的一部分传送。在执行修改的程序指令时,请求终端设备采用密匙的公共部分用于密码地加密终端设备和可信任实体之间的传送。因为将匹配公共密匙的私密密匙存储在可信任实体中并提供其用于解密以加密形式传送的数据,所以所获得的检查值要么是以密匙加密传送的,要么导致的加密传送是检查值。如果解密不是可能的,则认为不执行所调用的程序指令。在一个实施例中,由于验证,可信任实体授权行动。可信任动作特别是网络访问、授权、签名的创建等。在一个实施例中,所调用的程序指令是起始程序指令、终端设备的所谓的引导代码。在终端的引导期间和/或在引导之后生效起始程序指令的调用。通过此措施,防止在早期阶段植入恶意软件的第三方程序指令,或者这样的植入可以在早期阶段发现。在特殊实施例中,终端设备是移动无线电终端设备并且可信任实体是用户识别模块,所谓的SIM。这里,经由用户识别模块和移动无线电终端设备之间的现有通信连接,例如经由ISO 7816或ISO 14443连接生效修改的程序指令以及获得的检查值的传送。在替代实施例中,可信任实体是网络操作者的服务器、智能存储器卡,例如MMC、miniSD、μ SD、USIM或智能卡或完全基于操作系统内核中的如受信任平台模块或缩写为TPM的软件。可信任实体可以额外地具有另外的功能单元,诸如计算单元、不同标准的通信接口。另外,提出用于执行根据本发明的方法的系统,该系统具有可信任实体,该可信任实体具有用于存储用于终端设备内的执行的程序指令的装置、用于可变地修改程序指令从而修改的程序指令在根据前述权利要求的方法的每次执行时改变的装置、用于传送修改的程序指令的装置和用于出于检查程序指令是否已经由终端设备执行的目的而验证所获得的检查值的装置,并且该系统进一步具有终端设备,该终端设备具有用于执行修改的程序指令的装置,通过该修改的程序指令的执行获得检查值、用于从可信任实体调用程序指令的装置和用于传送所获得的检查值到可信任实体的装置。有利地,可信任实体进一步具有用于随机化程序指令的装置和/或用于计算和存储修改的程序指令的散列值的装置。这里,采用该散列值来验证所获得的检查值。进一步,根据本发明的系统的可信任实体具有随机数生成器,通过合并所生成的随机数来生效可变修改。可信任实体优选地含有具有相应的安全性功能性的数据载体,诸如例如移动无线电网络中的智能卡、芯片卡、令牌、大容量存储器卡、多媒体卡、用户身份卡。特别地设计可信任实体为硬件组件并在移动终端设备中作为紧密集成组件布置, 其要么是以例如M2M模块、协处理器或信任基底的此形式从移动终端设备不可移除的,要么是连接到移动终端设备作为具有安全性功能性的可移除模块,例如芯片卡,特别是用户识别模块,简称SIM卡、智能卡、大容量存储器卡、USB令牌、多媒体卡、安全微型SD卡、例如UMTS因特网棒的移动无线电网络令牌。替代地,设计可信任实体为以受信任平台模块的形式的软件组件作为移动终端设备的操作系统内核的可信任部分或作为安全性软件算法。TPM类似的可信任实体通过设备的设备中性或使用者中性的数据来总地检查电子设备的系统整体性,该设备的设备中性或使用者中性的数据不准许正被收集、评估和传递的设备或使用者的标识。由于它们的本质或经由它们在可信任实体中的出现而唯一地关联于设备的这样的设备专用数据可以因此示出终端设备相对于第三方的可信任度,但是它们并不使得可以得出关于具体终端设备并且特别是它的使用者的任何结论。


以下,将在附图的基础上更准确地说明本发明或本发明的另外的实施例和优势,该附图仅仅描述本发明的实施例示例。以相同的附图标记提供附图中相同的组件。附图不认为是真实比例;附图的单独要素可以用夸张尺寸或夸张的简明性来描述。以下示出图I :用于检查程序指令是否已经在终端设备中执行的根据本发明的系统的示例性描述;图2 :用于检查程序指令是否已经在终端设备中执行的根据本发明的方法的流程图;图3 :根据本发明修改的程序指令的第一实施例示例;图4 :根据本发明修改的程序指令的第二实施例示例;图5 :根据本发明修改的程序指令的第三实施例示例;图6 :根据本发明修改的程序指令的第四实施例示例;
具体实施例方式图I示出根据本发明的系统的粗略表示。这里,终端设备I具有中央处理单元2,简称CPU。该终端设备优选地是便携式终端设备,特别是移动无线电终端设备。出于清晰的目的而未表现终端设备2的另外的功能组。终端设备I的CPU 2能够处理程序指令。出于此目的,可以使用现有技术中足够熟知的基础设备。此外,该系统具有可信任实体3,这里以示例的方式,是移动无线电终端设备I的SIM卡3。替代地,可信任实体是操作系统内核的可信任软件组件,诸如例如MoWCore 。特别是存储器区域4位于的SIM卡3或MobiCore 中。此外,可信任实体3和终端设备I拥有例如接触型或非接触的通信接口用来在终端设备I和可信任实体3之间建立数据通信5。在可信任实体3的存储器区域4中,至少包含在终端设备I的CPU 2中执行的程序指令13的一部分。程序指令13被理解为是机器可读命令/语句(statement)或指令的序列,由此程序指令可以以机器语言、源程序文本或字节码呈现。可以额外提供诸如编译器、汇编器、解译器的可能的中间翻译单元。在可信任实体中,存在用来修改所调用的程序指令13的另外的装置,借助于其可以检查终端设备I执行的程序指令。这些装置以如下方式修改所调用的检查指令13 :例如,使得将空闲任务14b插入所调用的程序指令13的任意位置、将特别是随机数的可变值14c 并入程序指令13内的任意位置。可以类似地使用检查指令14,借助于该检查指令14可以修改程序指令13。全部这些措施公共的在于修改14是可变的,即,当修改14经由相同的所调用的程序指令13再次执行时,出现不同地修改的程序指令14。即,在执行修改的程序指令时,所调用的程序指令13的空闲任务14b的编号或位置是不同的,随机号是不同的,或检查指令实现不同的额外效果。无论可变地修改的程序指令14如何,所调用的程序指令13的原始效果总是相同的。因此,可以确保修改的和无修改的程序指令14、13的功能相同的执行。现在,在图2到图6中,将描述根据本发明的方法。在图2中,表现终端设备I和可信任实体2之间的方法序列。在程序指令的执行期间,出于终端设备I的执行的目的,终端设备I接收请求以从可信任实体2调用下一程序指令13用于其自身。替代地,终端设备I接收请求以使可信任实体3检查已经执行的程序指令13。替代地,在终端设备执行之前,终端设备I发送要执行的程序指令13的至少一部分到可信任实体,从而可信任实体3不需要在存储器区域4中存储程序指令13。根据图2的箭头6,现在终端设备调用程序指令13的至少一部分。此调用可以关于程序指令13的随机选择的部分,或者也可以将要执行的程序指令13传送到可信任实体。在可信任实体中,然后生效所调用的程序指令13的可变修改7。在图3到图6中更详细地考虑该修改。可变地修改的程序指令14现在经由数据通信5传送到终端设备1,参见箭头
8。在终端设备I中,根据步骤9执行修改的程序指令14。由于修改14,从而获得检查值9a。在步骤10中,传送此检查值到可信任实体。该检查值例如是已经并入程序指令13中作为修改的所执行的检查指令的结果。替代地,检查值是修改本身,例如随机数14c或合并的空闲任务14b的编号。该检查值例如可以是散列值或修改的程序指令14的部分的密码签名,或者是已经执行的程序指令或尚未执行的程序指令的部分13a、13b、13c。类似地,该检查值可以是需要到来的与可信任实体的通信的加密。在全部情况下,根据步骤11在可信任实体中验证所获得的检查值。通过检查值9a和可信任实体3的期望值的比较,这是特别可能的。这里,例如在传送之前,通过执行可信任实体3中的修改的程序指令14来生成期望值并存储在实体3中。在简单情况下,期望值和检查值对应于修改14。当检查值9a对应于期望值时,在步骤12可信任实体3授权动作。这可以是例如网络访问的使能、数据的签名、在e服务的授权或更多。如果未验证检查值,则未授权动作。这和发现所调用的程序指令尚未以此形式由终端设备执行是同 义的。在图3中,表现了修改14的原理。这里将所调用的程序指令13表现为数据流。由修改14改变这些程序指令13,并获得修改的程序指令。在图4中,表现修改14的第二实施例示例。这里,修改14的一部分是密码密匙14a。此密匙14a是根据PKI基础设备构建的非对称密匙对的公共部分。该密匙的私密部分存储在可信任实体3中。现在,密匙14a例如并入检查指令中作为对所调用的程序指令13的修改。通过终端设备执行修改的程序指令14,来执行检查指令。这是例如图4的完全数据流上的散列算法。根据检查指令,在图4中表现的数据流上执行散列算法并且获得散列值作为结果。在执行所合并的检查指令时,现在首先获得散列值作为检查值9a,该检查值9a以根据检查指令的密码密匙14a额外加密。在传送加密的检查值9a之后,可信任实体3将能够借助于密匙的私密部分解密检查值并随后验证散列值。如果恶意软件将第三方程序指令植入要执行的程序指令中,则要获得的检查值,这里是所计算的散列值,将首先不匹配期望值。另外,加密将不能适当地生效或完全不生效,从而可信任实体将通过与期望值的比较而识别非加密的和错误的检查值,并不验证该检查值。可能的结果例如是终端设备的禁用、网络访问的拒绝等。因为修改14和密匙被认作终端设备I和实体3之间的密码加密通信的前提条件,所以也可以无任何进一步检查指令地传送密匙14a。在图5中,示出修改14的第三实施例示例。这里,将空闲任务14b插入修改14的部分中。所插入的空闲任务14b的编号和位置是随机和任意的。在到终端设备I的传送之前,在可信任实体3中执行修改的程序指令14的散列值并且将此值存储为期望值。在到终端设备I的传送之后,类似地获得散列值作为修改的程序指令14的检查值9a。依据期望值,实体3随后验证检查值。因为空闲任务的编号和位置是任意的,散列值总是可变的并且不能由植入的第三方程序指令模拟。要散列的修改的程序指令的部分的检查值可以了类似地合并为修改14。替代空闲任务,也可以使用所谓的无意义命令或垃圾指令,例如运行空程序循环X次。在图6中,表现修改14的第四实施例示例。这里,程序指令13至少部分地细分为部分13a、13b、13c。现在随机化这些部分13a、13b、13c,S卩,以随机方式交换顺序。因为要获得检查值9a,所以也在这里计算在可信任实体中验证的数字签名或散列值。因为顺序的交换是随机的,所以植入的第三方程序指令不能重现期望值;因此,检查值9a的验证失败。在未表现的变型中,将随机值14c并入所调用的程序指令中,该程序指令随后验证为检查值9a。当然可以任意地组合全部描述的修改以保证安全检查。另外,需要增加安全性以保障终端设备I和可信任实体3之间的传送,例如通过另外的密码加密。因此,植入的第三方程序指令的拦截可以排除。类似地包含在本发明的想法中的是,在可信任实体2的可变修改之前,终端设备I传送要执行的程序指令。因为修改总是可变的并且此外以要执行的程序指令的形式链接于终端设备的计算步骤,所以第三方程序指令拦截和模拟所获得的检查值是不可能的。由有害第三方程序指令自身的修改的程序指令的检查在计算机科学中已知为停机问题(halting problem)。已知此问题已经证明为无解。附图标记列表I终端设备2终端设备的CPU
3可信任实体,SM4可信任实体的存储器区域5数据通信连接6调用程序指令7可变地修改程序指令8传送修改的程序指令9执行修改的程序指令9a获得检查值10传送所获得的检查值11验证检查值12授权/使能动作13程序指令13a, b, c程序指令的部分14 修改14a密码密匙14b空闲任务14c可变值、随机数
权利要求
1.一种用于检查程序指令(13)是否已经由终端设备(I)执行的方法,具有方法步骤 -由终端设备(I)调用(6)所述程序指令(13),所述程序指令(13)以可执行形式被存储在可/[目任实体(3),特别是芯片卡中; -由可信任实体(3)可变地修改可执行程序指令(7),从而修改的程序指令在所述方法的每次执行时变化; -从所述可信任实体(3)传送修改的程序指令(8)到所述终端设备(I); -由所述终端设备(I)执行修改的程序指令(9),通过执行修改的程序指令(9)而获得检查值(9a); -从所述终端设备(I)传送所获得的检查值(10)到所述可信任实体(3);并且 -在所述可信任实体(3)中验证所获得的检查值(11),用于检查所调用的程序指令(13)是否已经在所述终端设备(I)中执行。
2.根据权利要求I所述的方法,其中,直接在调用步骤之前或在调用步骤期间,从所述终端设备传送所述程序指令(13)到所述可信任实体(3 )。
3.根据权利要求I或2所述的方法,其中,当在所述可信任实体(3)中获得的所述检查值(9a)对应于所述可信任实体(3)中的期望值时,认为所述程序指令(13)由所述终端设备(I)执行。
4.根据前述权利要求的任一项所述的方法,其中,调用所述程序指令的至少部分(13a、13b、13c),并且其中,在所述方法的每次执行时调用所述程序指令(13)的不同部分。
5.根据前述权利要求的任一项所述的方法,其中,所述程序指令(13)通过在所述终端设备(I)中可执行的至少一个检查指令(14)的合并来可变地修改。
6.根据前述权利要求的任一项所述的方法,其中,所述程序指令(13)通过特别是随机值的值(14c)的合并,和/或不同编号的空闲指令(14b)的合并来可变地修改。
7.根据前述权利要求的任一项所述的方法,其中,所述可变修改(14)通过所述程序指令(13)的部分(13a、13b、13c)的随机化而生效。
8.根据前述权利要求的任一项所述的方法,其中,可变地修改所述程序指令(13)以使得在所述终端设备(I)中修改的程序指令(9)的执行之后,以密码加密形式生效所获得的检查值的传送,所述可信任实体能够解密所获得的检查值(9a)。
9.根据前述权利要求的任一项所述的方法,其中,只要认为执行所述程序指令(13),所述可信任实体(3)就授权(12)动作。
10.根据前述权利要求的任一项所述的方法,其中,所述程序指令(13)是所述终端设备(I)的起始程序指令,并且在所述终端设备(I)的引导期间和/或弓I导之后生效所述起始程序指令(6)的调用。
11.根据前述权利要求的任一项所述的方法,其中,所获得的检查值(9a)是修改的程序指令的至少部分(13a、13b、13c)的散列值。
12.根据前述权利要求的任一项所述的方法,其中,所述终端设备(I)是移动无线电终端设备,并且所述可信任实体(3)是用户识别模块(SM),并且其中,所述传送(8、10)经由所述用户识别模块和所述移动无线电终端设备的现有通信连接(5)而生效。
13.一种用于执行根据前述权利要求的方法的系统,具有 -可信任实体,具有-用于存储用于在所述终端设备内执行的程序指令的装置; -用于可变地修改所述程序指令以使得修改的程序指令在根据前述权利要求的方法的每次执行时变化的装置; -用于传送修改的程序指令的 装置;和 -用于出于检查程序指令是否已经由终端设备执行的目的而验证所获得的检查值的装置; 和 -终端设备,具有 -用于执行修改的程序指令的装置,通过该修改的程序指令的执行获得检查值; -用于从所述可信任实体调用程序指令的装置;和 -用于传送所获得的检查值到所述可信任实体的装置。
14.根据权利要求13所述的系统,其中,所述可信任实体具有用于计算和存储修改的程序指令的散列值的装置,并且采用所述散列值用来验证所获得的检查值。
15.根据权利要求13所述的系统,其中,所述可信任实体具有随机数发生器,并且所述可变修改通过所生成的随机数的合并来生效。
全文摘要
本发明涉及用于检查程序指令(13)是否已经由终端设备(1)执行的方法和系统。出于此目的,终端设备请求程序指令(13),其中该程序指令(13)已经以可执行形式存储在可信任实体(3)中,特别是芯片卡中。接着,以使得修改的程序指令在方法的每次执行时改变的方式,可变地修改可信任实体(3)中的程序指令(13)。通过在终端设备(1)中执行指令,获得测试值(9a),其又被传输到可信任实体(3)并且在该可信任实体中验证。
文档编号G06F21/54GK102893288SQ201180023596
公开日2013年1月23日 申请日期2011年5月6日 优先权日2010年5月10日
发明者S.鲍尔 申请人:德国捷德有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1