本发明涉及使电子装置上的软件执行安全免受攻击的领域,并且更具体地,涉及一种用于由电子装置的处理器执行指令安全的方法。
背景技术:
1、电子装置现在被广泛用于存储数据,所述数据必须被保护以防止由攻击者进行的任何未授权访问:个人数据,例如身份信息、生物计量数据、银行信息、秘密数据,例如密钥等。因此,通常对这样的数据应用安全性措施,以减轻任何欺诈性读取或修改。这样的数据可以被加密;通过存储安全性信息(例如签名、校验和或哈希值),可以提高它们的完整性。
2、为了使用这样的数据,存储该数据的电子装置的cpu应该在由cpu执行的指令的任何后续使用之前在存储器中读取该数据。此时,数据在总线上从电子装置的存储器传送到cpu的内部寄存器,并且然后由cpu用于执行其指令。
3、在这样的数据操作期间,攻击者可以执行旁道攻击,这将使攻击者能够从电磁泄漏或来自cpu的功率消耗中获得由cpu处理的敏感信息的知识,例如加密密钥。他还可以执行故障注入攻击,以便引发电子装置失灵,并从这种降级状态中检索关于数据的信息。因此,为了防止这样的攻击,应用于敏感数据的对策应当在执行链上被尽可能广泛地应用,而不仅仅是在电子装置的存储器中存储数据期间。它应用于存储器接口、总线、cpu高速缓存和内部寄存器,直到cpu能够处置保护数据时的执行阶段。
4、问题起源于这样的措施对数据大小具有影响,这由于伴随性保护数据的安全性信息(完整性检查信息、屏蔽数据等)引发。结果,为了使现有的电子装置能够将这样的安全性信息连同保护数据一起存储和处置,直到cpu,这样的电子装置的硬件设计通常应该被适配,例如通过增加存储器中的数据字长,通过增加数据总线宽度。这样的修改在硬件成本和性能方面对现有设计有巨大影响,更不用说必要的工程和测试工作。
5、因此,存在对于一种方法的需要,所述方法通过增加对由该指令操纵的敏感数据的保护,使其免受故障攻击或旁道分析,来使得cpu能够安全执行该指令,其对执行该执行的电子装置的架构具有较低的影响。
技术实现思路
1、为此目的并且根据第一方面,本发明因此涉及一种用于由电子系统的处理器安全执行第一指令的方法,其中所述电子系统包括被配置成耦合到处理器的至少一个存储器,并且包括处理器寄存器和执行单元,所述执行单元包括加载和存储单元,所述方法包括:
2、a)在处理器的执行流水线中获取所述第一指令,
3、b)确定要执行的所述第一指令是用于将保护数据和相关联的安全性信息从所述至少一个存储器加载到处理器寄存器的要保护的加载指令,还是用于将保护数据和相关联的安全性信息从处理器寄存器存储到所述至少一个存储器的要保护的存储指令,
4、c)当要执行的所述第一指令是要保护的加载指令或要保护的存储指令时,由所述处理器顺序执行至少第一操作、第二操作和第三操作,其中:
5、·当所述第一指令是要保护的加载指令时,所述第一操作是用于将所述保护数据从所述至少一个存储器加载到所述加载和存储单元的加载操作,所述第二操作是用于将与所述保护数据相关联的所述安全性信息从所述至少一个存储器加载到所述加载和存储单元的加载操作,并且所述第三操作是用于由所述协处理器将所述保护数据和所述相关联的安全性信息从所述加载和存储单元复制到处理器寄存器的写入操作,
6、·当所述第一指令是要保护的存储指令时,所述第一操作是用于将所述保护数据和所述相关联的安全性信息从处理器寄存器复制到所述加载和存储单元的写入操作,所述第二操作是用于将所述复制的保护数据从所述加载和存储单元存储到所述至少一个存储器的存储操作,并且所述第三操作是用于将所述复制的相关联的安全性信息从所述加载和存储单元存储到所述至少一个存储器的存储操作,
7、与保护数据相关联的所述安全性信息是使能将所述保护数据转换成纯数据的数据和/或使能验证所述保护数据的完整性的完整性数据。
8、这样的方法使能通过使能以屏蔽/加密的形式保存数据和/或对从电子系统的存储器到处理器的处理器寄存器的数据执行完整性检查来提高第一指令执行的安全性。通过使用单独的操作来复制数据及其相关联的安全性信息,它使能这样做,而对连接存储器和处理器的总线的大小没有任何附加的要求
9、与数据相关联的所述安全性信息可以是屏蔽数据、密码密钥或冗余数据中的完整性数据、校验和、所述保护数据的最小值和/或最大值。
10、根据第一方面的方法可以包括当所述第一指令是要保护的加载指令时,在所述第一和第二操作已经被处理器执行之后,使用由第二操作加载的相关联的安全性信息,对由第一操作加载的所述数据执行安全性检查。
11、通过这样做,在从处理器寄存器请求数据之前,可以检测到在电子系统的存储器中的数据的读取和它们在处理器中的复制之间的任何数据欺诈性更改。
12、当处理器包括执行至少上述步骤c的安全执行单元或安全协处理器,并且所述电子系统包括执行第二指令的请求器时,当所述第二指令请求对复制在所述处理器寄存器中的所述数据进行访问时,根据第一方面的方法可以包括由安全执行单元或安全协处理器执行的以下步骤:
13、-确定所述请求器是否安全,
14、-当所述请求器被确定为安全时,将所述所请求的数据和所述相关联的安全性信息传送给请求器,并且由所述请求器基于所述传送的数据和所述传送的相关联的安全性信息执行所述第二指令,
15、-当所述请求器被确定为不安全时,由安全执行单元或安全协处理器通过使用存储在处理器寄存器中的与所述所请求的数据相关联的安全性信息将所述所请求的数据转换成纯数据和/或验证所述所请求的数据的完整性来处理所述所请求的数据,将所述所处理的数据传送给请求器,并由请求器基于所述所处理的数据执行所述第二指令。
16、如果请求器是安全的,这样的方法使能将数据的保护扩展到请求器;在执行第二指令之前检测数据的任何篡改;并且同时如果请求器不安全并且不能处置屏蔽/加密数据,则向请求器提供去屏蔽/解密的数据。
17、根据第一实施例,确定所述第一指令是否是要保护的加载或存储指令包括确定所述指令的操作码对应于保护指令还是未保护指令。
18、根据第二实施例,确定所述第一指令是否是要保护的加载或存储指令包括确定要执行的所述第一指令是否包括预定的元数据。
19、根据第三实施例,确定所述第一指令是否是要保护的加载或存储指令包括验证存储在所述处理器的安全性配置寄存器中的值。
20、通过这样做,可以仅针对一些加载和存储指令选择性地激活加载和存储指令的保护。
21、根据第二方面,本发明涉及一种可直接加载到至少一个计算机的存储器中的计算机程序产品,包括软件代码指令,当所述产品在计算机上运行时,所述软件代码指令用于执行根据本发明第一方面的方法的步骤。
22、根据第三方面,本发明涉及一种电子系统,包括处理器,其被配置用于执行根据本发明第一方面的方法的步骤。
23、为了实现前述和相关目的,一个或多个实施例包括在下文中充分描述并在权利要求中特别指出的特征。