用于在安全元件中安全地处理数字信息的方法与流程

文档序号:32951242发布日期:2023-01-14 13:40阅读:42来源:国知局
用于在安全元件中安全地处理数字信息的方法与流程

1.本公开涉及计算机安全领域,并且更精确地涉及利用安全元件(例如智能卡)安全地处理数字信息(诸如代码和/或数据)。


背景技术:

2.一般来讲,安全元件(诸如智能卡)包括硬件资源,诸如安全处理单元(scpu)、易失性存储器和非易失性存储器。非易失性存储器存储一个或多个代码(应用程序)和数据,并且当需要执行或处理时,可将代码和/或数据加载到易失性存储器中。安全元件可嵌入在具有若干处理单元、若干存储器和若干功能配件的soc(片上系统)中。soc可集成在较大模块中。
3.在比如iot系统(即,物联网系统)的约束环境中,安全元件可能仅具有小型非易失性存储器,诸如otp(一次性可编程)存储器,该较小非易失性存储器用于存储有限的信息量,例如计数器和/或密钥。安全元件不用于存储代码和数据。为了使安全元件的成本保持较低,代码和数据存储在位于安全元件之外的外部非易失性存储器中,例如存储在soc中或位于soc之外的模块中。当需要执行或处理时,代码和/或数据被加载到安全元件的易失性存储器中。
4.在此类约束语境中,当将数字信息(代码和/或数据)存储在外部存储器中时,当将其从外部存储器加载到安全元件的内部存储器中时,以及当其由安全元件处理或执行时,保护数字信息(代码和/或数据)是很重要的。特别是,必须保护数字信息免受物理攻击。
5.此类物理攻击涉及比如智能卡和soc等分立元件。它们可以被远程执行。迄今为止,存在两种主要的已知物理攻击。
6.第一种物理攻击被称为“侧信道攻击”。侧信道攻击是基于从计算机系统(例如安全元件)的实施中获得的信息的任何攻击。定时信息、功耗、电磁泄漏、声音可以提供额外的信息源,这些额外的信息源可能会被利用。在安全元件的操作(例如由cpu执行加密算法或将数据从一个存储器转移到另一个存储器)期间,攻击者可能监听电磁辐射或功耗以便捕获安全元件的物理行为。此类监听使得其能够获得秘密信息,比如密钥。例如,当处理单元使用秘密信息执行加密算法时,其具有可由示波器捕获的以便获得秘密信息的特定功耗。
7.第二种物理攻击被称为“故障攻击”。故障攻击是涉及故意在加密系统或任何敏感系统中产生错误的一系列技术。这些攻击可能与硬件(比如加密处理器)或软件组件有关。它们旨在引起加密或敏感操作的异常行为以便提取秘密信息,诸如加密密钥。在由安全元件执行的操作期间,可例如通过改变电源、改变时钟或注入激光脉冲来注入故障。注入的故障可能导致更改安全元件的一些电子硬件的行为。例如,在加密操作期间,攻击者可注入阻止加密的故障。这意味着输出将是明文的,而不是加密的。这是直接的攻击。也可在pin验证期间注入故障,并且即使pin是错误值,也可能被认为是有效的。在另一个示例中,在输出数据的命令期间,故障可能会更改输出缓冲区的指针并且使得能够转储应该保密的内部值。
8.故障攻击和物理攻击也可进行组合。
9.有必要改善该情况。更精确地说,当将数字信息存储在外部非易失性存储器中时,当将其从外部存储器加载到安全元件时,以及当其由安全元件处理时,有必要在任何时间保护数字信息。


技术实现要素:

10.本公开涉及一种用于安全地处理数字信息的方法,该方法由安全元件执行,该安全元件包括安全处理器以及均位于该安全处理器外部的至少一个内部存储器和代码关联单元,该方法包括以下步骤:
[0011]-将数字信息从外部存储器加载到安全元件的至少一个内部存储器中;
[0012]-在代码关联单元处,将数字信息分割成数字信息的字,从所述数字信息的字生成代码,即错误检测代码或错误校正代码的任一者,并且将所述代码与至少一个内部存储器中的对应的字相关联;
[0013]-将数字信息的字和所关联的代码从至少一个内部存储器转移到安全处理器;
[0014]-在安全处理器中,在处理包含在所述字中的数字信息之前,基于所关联的错误检测代码或错误校正代码来验证数字信息的字。
[0015]
将错误检测代码(edc)或错误校正代码(ecc)添加到数字信息的小字中会允许确保在将字转移到安全处理器之前,数字信息未被安全元件之内的攻击修改。实际上,与给定的字相关联的edc或ecc使得能够检测该字中的一个或多个错误。
[0016]
在生成错误校正代码的情况下,与给定的字相关联的ecc不仅可用于检测该字中的错误,而且可用于校正该字中的一个或多个位。
[0017]
有利地,该方法还包括验证数字信息的完整性的步骤,该步骤在将错误检测代码或错误校正代码与对应的字相关联的步骤之后并且在将数字信息的字和所关联的错误检测代码或错误校正代码转移到安全处理器之前执行。
[0018]
完整性的验证是在将数字信息分割成字之后实行的,并且可使用数字信息的字本身。这确保转移到具有所关联的错误检测代码或错误校正代码的安全处理器的字不会被损坏。
[0019]
有利地,该方法还包括解密从外部存储器加载的数字信息以获得明文数字信息的步骤,并且其中对明文数字信息执行分割成字的步骤。
[0020]
当将数字信息存储在外部存储器中时以及当将其从外部存储器转移到安全元件中时,加密允许保护该数字信息。
[0021]
有利地,该方法还包括验证加密形式的数字信息的完整性的步骤。这确保攻击者未改变加密。
[0022]
因此,在一些实施方案中,对数字信息的保护是基于众所周知的“encrypt-then-mac”(etm)方法,并且可以是“mac-then-encrypt-then-mac”类型。etm方法被认为是用于认证加密的最稳健的方法,但其仅在一定程度上保护数据。在本公开中,也可对明文数字信息进行认证。在这种情况下,通过以下方式来保护数字信息:用密钥k0计算明文值上的第一mac,然后用密钥k1加密用第一mac认证的数字信息,然后用密钥k2计算经认证和经加密的数字信息上的第二mac。以此方式,数字信息由明文形式的第一mac和加密形式的第二mac来认证。这确保了数字信息在存储期间和在从外部存储器转移到安全元件期间没有被更改或损
坏。
[0023]
有利地,数字信息的字与错误检测代码或错误校正代码相关联地存储在安全元件的内部存储器中,并且在将数字信息的字与错误检测代码或错误校正代码相关联的步骤之后执行的验证数字信息的完整性的所述步骤中,从内部存储器读取所述数字信息的字以执行完整性的验证。
[0024]
这允许验证存储在安全元件的内部存储器中待转移到安全处理器的数字信息的字的完整性。这确保准备好转移到安全处理器的字未被更改。这为从外部存储器中的存储到由安全元件中的安全处理器的处理提供了端到端安全性。
[0025]
有利地,只有在将错误检测代码或错误校正代码与对应的字相关联的步骤之后成功地验证了数字信息的完整性时,才将数字信息的字和所关联的错误检测代码或错误校正代码转移到安全处理器。
[0026]
数字信息可被分割成预定大小的字,这取决于安全处理器的工作格式或安全处理器的寄存器的容量。
[0027]
添加了错误检测代码或错误校正代码的字的大小适用于安全处理器的架构。通常,其对应于由安全处理器使用的格式(即,由安全处理器处理的数字块的大小)。字的大小可对应于安全处理器的寄存器的大小。例如,安全处理器可以是8位或16位或32位或64位处理器(指示的位值对应于其寄存器的大小)。在这种情况下,字的大小可被设定为处理器寄存器的大小(即,分别为8位或16位或32位或64位)。然而,对于一些计算,安全处理器的工作格式(即,在计算的执行期间由安全处理器操纵或处理的数字块的大小或格式)可小于处理器寄存器的大小。例如,安全处理器的工作格式可以是8位,而安全处理器的寄存器是32位。字的大小经过调整适应。
[0028]
在一些实施方案中,将数字信息存储在外部存储器中的区段中,针对区段中的每个区段迭代地执行加载数字信息的步骤以及将数字信息分割成字的步骤。
[0029]
在具体实施方案中,-在从外部存储器加载每个区段的步骤中,安全元件加载加密形式的数字信息和完整性元素;-在验证加密形式的数字信息的完整性的步骤中,安全元件通过以加密形式链接对l+1个具有预定字节数的块的计算来计算完整性元素,并且将所计算出的完整性元素与所加载的完整性元素进行比较。
[0030]
有利地,
[0031]-在解密的步骤中,将n+1个加密形式的块解密成n个明文数字信息的块和另一个完整性元素;
[0032]-在分割的步骤中,将n个明文数字信息块中的每个块分成数字信息的字。
[0033]
有利地,在将错误检测代码或错误校正代码与对应的字相关联的步骤之后执行的验证数字信息的完整性的步骤中,安全元件通过链接对l个明文数字信息的块的计算来计算完整性元素,并且将所述计算出的完整性元素与从解密的步骤得到的所述其他完整性元素进行比较。
[0034]
该方法还可包括由数字信息提供者执行的以下步骤:
[0035]-将明文数字信息分割成区段;
[0036]-以及,针对每个数字信息区段:
[0037]
.为明文数字信息计算第一完整性元素;
[0038]
.对数字信息和第一完整性元素进行加密;
[0039]
.计算加密结的果的第二完整性元素并将加密的结果与所述第二完整性元素级联;
[0040]
.将与所述第二完整性级联的加密的结果存储在外部存储器中。
[0041]
另外,当数字信息区段已由安全元件修改时,所述安全元件可通过执行以下步骤来更新外部存储器中的所述数字信息的区段:
[0042]
.为明文数字信息计算第一完整性元素;
[0043]
.对数字信息和第一完整性元素进行加密;
[0044]
.计算加密的结果的第二完整性元素并将加密的结果与所述第二完整性元素级联;
[0045]
.用与第二完整性元素级联的加密的结果来更新当前存储在外部存储器中的区段。
[0046]
任选地,每个块的每个字可将其自身的错误检测代码或错误校正代码存储在安全元件中,该错误检测代码或错误校正代码可在计算第一完整性元素之后并在对n个数字信息块进行加密之前被验证。因此,加密路径更能抵抗故障攻击。
[0047]
有利地,只有在所述数字信息的字中没有检测到错误时,数字信息的字才由安全处理器处理。
[0048]
当安全处理器基于所关联的错误检测代码或错误校正代码验证数字信息的字的步骤失败时,所述数字信息的字可由安全处理器处理为不相关,或者用于安全地处理数字信息的方法可由安全元件中止。
[0049]
本公开的第二方面涉及一种用于安全地处理数字信息的安全元件,该安全元件包括:
[0050]-安全处理器;
[0051]-至少一个内部存储器;
[0052]-通信接口,该通信接口用于将数字信息从外部存储器加载到安全元件的至少一个内部存储器中;
[0053]-代码关联单元,该代码关联单元用于将数字信息分割成数字信息的字,从所述数字信息的字生成错误检测代码或错误校正代码,以及将所生成的代码与至少一个内部存储器中的对应的字相关联;其中安全处理器被配置为从至少一个内部存储器加载数字信息的字和所关联的错误检测代码或错误校正代码,以及在处理包含在所述字中的数字信息之前,基于所关联的错误检测代码或错误校正代码来验证所述数字信息的字。
[0054]
有利地,安全元件还包括完整性验证单元,该完整性验证单元被配置为基于从至少一个内部存储器读取的数字信息的字来验证数字信息的完整性。
[0055]
安全元件还可包括:完整性验证单元,该完整性验证单元用于验证加密形式的数字信息的完整性;和解密单元,该解密单元用于对已加载的数字信息进行解密以获得明文数字信息。
[0056]
本公开的第三方面涉及一种包括先前定义的安全元件的片上系统。
[0057]
该片上系统可具有位于安全元件之外的外部存储器。
[0058]
本公开的第四实施方案涉及一种包括片上系统的模块。
[0059]
有利地,在模块中,位于安全元件之外的所述外部存储器位于片上系统之内或片上系统之外的任一处。
[0060]
本公开的第五方面涉及一种包括程序指令的非暂态计算机可读介质,该程序指令用于使得用于安全地处理数字信息的安全元件执行先前定义的方法的步骤,所述安全元件包括安全处理器。
附图说明
[0061]
通过阅读参考附图所作的非限制性实施方案的详细说明,本公开的其他特征、目的和优点将变得更加清楚。
[0062]
图1示出了根据示例性实施方案的嵌入具有安全元件的soc(片上系统)的模块。
[0063]
图2示出了根据示例性实施方案的准备数字信息的操作,该数字信息将被存储在外部存储器中(即,在安全元件的外部)并且易于被加载到安全元件中。
[0064]
图3示出了根据示例性实施方案的在从外部存储器加载到安全元件中之后由安全元件处理数字信息的操作。
[0065]
图4表示根据示例性实施方案的安全元件。
[0066]
图5表示根据示例性实施方案的准备要存储在外部存储器中的数字信息的方法的流程图。
[0067]
图6表示根据示例性实施方案的由安全元件执行的安全地处理存储在外部存储器中的数字信息的方法的流程图。
具体实施方式
[0068]
图1示出了包括安全元件100和外部存储器200(即,在安全元件外部)的系统。安全元件是例如智能卡或芯片。其可嵌入在具有若干处理单元、若干存储器和若干功能配件(未表示)的soc(片上系统)110中。soc 110可集成在较大模块120中。例如,该较大模块120可以是iot装置(通常设置有唯一标识符和通过网络传输数据的能力)、电信设备、位置系统、交通工具(比如汽车或飞机)等。
[0069]
安全元件100具有安全处理单元102,例如集成的硬件知识产权核心(ip核心)。
[0070]
下面给出安全元件100的不同的示例性和说明性使用案例(非限制性)。
[0071]
在第一示例性使用案例中,安全元件100可集成在电信系统或设备的调制解调器中。在这种情况下,其可处理网络认证和下载安全应用程序。
[0072]
在第二示例性使用案例中,安全元件100可集成在行驶记录仪中并安全地位置数据。
[0073]
在第三示例性使用案例中,安全元件100可集成在交通工具(例如汽车或飞机)中,保护和管理安全数据传输。
[0074]
外部存储器200存储数字信息。术语“数字信息”指定易于加载到安全元件100中的数据,诸如可执行代码或由可执行代码生成或由可执行代码使用的信息,或将由安全元件100使用或处理的任何其他数据。
[0075]
安全元件100旨在加载和处理(或使用)存储在外部存储器200中的数字信息。
[0076]
在示例性实施方案中,在外部存储器200中使用存储器分割。数字信息被分割并以
区段进行存储。
[0077]
区段由若干具有预定字节数的块构成。例如,块可以是16字节长(16b或128位)。数字信息的区段可例如包括64个16字节的块,这大约对应于1千字节长(1kb)的区段。每个区段具有与其相关联的一组属性(诸如区段中包含的数据的类型、区段的长度、区段的地址、数据的版本等)。这些属性被记录在附接到区段的标头中。存在两种主要不同类型的区段,即包括可执行代码的代码区段和包括可由代码区段或应用程序使用或由应用程序生成的数字信息的数据区段。
[0078]
数字信息被准备以存储在外部存储器200中。准备要存储在外部存储器200中的数字信息的方法最初由数字信息提供者(即,用于提供数字信息的系统)来实行。
[0079]
将参考图2和图5描述准备要存储在外部存储器200中的数字信息的方法的示例性实施方案。
[0080]
在第一步骤s1中,明文数字信息被分成m个数字信息的区段,称为“si”,其中1≤i≤m。
[0081]
明文数字信息的每个区段si可由多个具有预定字节数的块构成。例如,块各自为16字节长(128位)。块的大小可根据必须在区段上实行的操作而变化。例如,用于应用mac函数(或用于任何其他认证函数或算法)的块的大小可不同于用于加密或解密的块的大小。
[0082]
然后,为了保证数字信息的机密性和真实性,在步骤s2中对数字信息的区段中的每个区段进行认证加密。在本实施方案中,认证加密是基于众所周知的认证加密“encrypt-then-mac”(etm),并遵循“mac-then-encrypt-then-mac”类型的方法。更精确地说,对于明文数字信息的每个区段si,在步骤s20中基于明文数字信息产生第一完整性元素,然后在步骤s21中对与其第一完整性元素组合的明文数字信息进行加密,并且然后在步骤s22中基于加密的结果产生第二完整性元素。
[0083]
第一完整性元素和第二完整性元素中的每一者是用于认证数字信息的一小段信息,诸如mac(消息认证代码)。在本公开中,与区段si相关的第一完整性元素和第二完整性元素被称为“maci
1”和“maci
2”,其中1≤i≤m。
[0084]
在对明文区段si产生maci1的步骤s20中,第一mac是通过使用mac函数(在图2中称为mac
*
)链接对l个明文数字信息的块pi0、

、pi
l-1
的mac计算来计算得出的。明文数字信息的块被称为pi0、

、pi
l-1
,其中字母“p”是指“plaintext(纯文本)”一词,并且“i”是区段的索引。在本示例性实施方案中,每个块pi0、

、pi
l-1
为128位长,并且每个区段si具有l个明文数字信息的块(或者对于不完整的区段可能少于l个块),其中l例如等于64(该值仅是例示性示例)。
[0085]
mac函数使用第一秘密密钥k0,例如256位的密钥。所得的maci1为例如16字节长(128位)。将完整性元素maci1与明文数字信息的区段si级联(组合),以便形成新的认证区段si'=si|maci1(

|’表示级联)。区段si'包括与完整性元素maci1级联的明文数字信息的区段si。
[0086]
在加密的步骤s21中,从步骤s20得到的认证区段si'通过加密算法的执行进行加密。加密算法应用于形成区段si'的n+1个块并且产生n+1个加密的块,这些加密的块被称为ci0、

、cin(字母“c”指代“ciphertext(密文)”),从而形成经认证和经加密的区段,该区段被称为[si'](括号代表加密)。
[0087]
与加密相关的块数n可与认证相关的数量l相同或不同,这取决于认证函数的类型和所使用的加密算法的类型。
[0088]
在图2和图3中示出的本示例性实施方案中,n和l相同并且等于64。加密的块ci0、

、cin在此各自为16字节长(128位)。
[0089]
加密使用第二秘密密钥k1,例如256位的密钥。在本实施方案中,第二密钥k1不同于第一密钥k0(但k0和k1可以是相同的密钥)。
[0090]
在产生maci2的步骤s22中,第二mac是通过使用mac函数(在图2中称为“mac”)链接对l+1个加密的块ci0、

、ci
l
的mac计算来计算得出的。mac函数使用第三密钥k2,即例如256位的密钥。在本实施方案中,第三密钥k2不同于第一密钥k0和第二密钥k1(但k2可与k0和/或k1相同,但这不太安全)。所得的安全性元素maci2为例如16字节长(128位)。maci2与经认证和经加密的区段[si']级联(组合),以便形成要存储的新的认证的区段si”(经认证和经加密的区段被称为si”=[si']|maci2)。
[0091]
任选地,可通过加密来保护完整性元素maci2。
[0092]
任选地,完整性元素maci2的仅仅一部分位可附加到经认证和经加密的区段[si'],例如仅仅一些位“lsb”(最低有效位)。
[0093]
然后,在步骤s3中,以受保护的形式(在此经过验证,然后加密,然后验证)的数字信息的区段si”(其中1≤i≤m)存储在外部存储器200中。
[0094]
针对数字信息的每个区段si重复步骤s2和s3,其中1≤i≤m。
[0095]
一旦存储在外部存储器200中,数字信息就可由安全元件100加载和处理(或使用)。
[0096]
参考图4,安全元件100具有通信接口101、处理单元(cpu)102、第一完整性验证单元103、解密单元104、第二完整性验证单元105、代码关联单元106和至少一个内部存储器107。
[0097]
处理单元(cpu)102是例如安全处理器(即,具有安全特征的处理器,其具有用于安全关键应用的高保证级别认证),例如类型为riscv或armsc300的处理器。
[0098]
至少一个内部存储器107是例如易失性存储器。其可通过总线连接到处理单元102。其可具有本地加扰和加密来保护它。
[0099]
为了使用存储在外部存储器200中的数字信息,安全元件100执行用于安全地处理数字信息的方法,现在将根据第一示例性实施方案参考图3和图6描述该方法。
[0100]
在第一步骤s10中,安全元件100通过通信接口101将数字信息的区段(以受保护的形式,先前称为si”)从外部存储器200加载到安全元件100的内部存储器107中。区段si”包括与第二完整性元素maci2级联的经认证和经加密的区段[si'],即=[si']|maci2。
[0101]
在第二步骤s11中,安全元件100验证所加载的加密形式的数字信息的区段si”的完整性。为此,第一mac单元103通过以区段si”的加密形式链接对l个第一块ci0、

、ci
l
的计算来从所加载的区段si”计算mac。第一完整性验证单元103使用mac函数和密钥k2。然后,其将所计算出的mac与包括在所加载的区段si”中的完整性元素maci2进行比较。如果所计算出的mac与所加载的maci2匹配,则成功地检查了[si’]的完整性。在这种情况下,启用解密和解密之后的完整性验证(图3中的步骤s19)。如果所计算出的mac与所加载的maci2不匹配,则拒绝[si']的完整性。在这种情况下,数字信息的处理之后是错误步骤s18,该错误步
骤导致中止数字信息的处理。另选地,错误步骤s18可能导致将区段si”处理为不相关并将其丢弃(即,不处理或不使用该区段)。
[0102]
在第三步骤s12中,在[si']的完整性已被成功地验证了之后,安全元件100解密n+1个块ci0、

、cin。解密是由解密单元104执行并且使用密钥k1。解密步骤s12的结果是明文数字信息和完整性元素maci1。更精确地说,解密单元104输出n个明文数字信息的块pi0、

、pi
n-1
和完整性元素maci1。
[0103]
如前所指出,用于验证完整性的数量l可等于用于解密的数量n或不同于n,这取决于验证完整性的函数和解密算法。
[0104]
在第四步骤s13中,代码关联单元106首先将明文数字信息(即,从解密步骤s12得到的数字信息)分割成数字信息的字。例如,代码关联单元106将n个数字信息的块pi0、

、pi
n-1
作为输入,并且将每个块分割成较小的字。每个块pij(其中0≤j≤n-1)被分成x个字wi
j,k
(其中1≤k≤x)。
[0105]
根据定义,“字”具有预定字节数。字的大小可取决于安全处理器102的工作格式或安全处理器102的寄存器的容量。工作格式可小于寄存器的容量。在一些实施方案中,字wi
j,k
的大小等于安全处理器的工作格式或等于处理器寄存器的大小。字的大小可小于或等于块的字节数。在第一例示性示例中,安全处理器102具有32位的寄存器,并且代码关联单元106将16字节长(128位)的每个块分割成四个32位的字。在第二例示性示例中,安全处理器102具有8位的工作格式,并且代码关联单元106将16字节长的每个块分割成16个8位长的字。在具体实施方案中,字的大小等于寄存器的大小和处理单元102的工作格式中的最小值。另选地,字的大小可小于安全处理器的工作格式或小于处理器寄存器的大小。
[0106]
然后,在第一实施方案中,在步骤s13中,代码关联单元106针对字wi
j,k
中的每个字生成错误检测代码(edc)(被称为edc
j,k
),并且将所述错误检测代码edc
j,k
添加(或组合)到对应的字wi
j,k
。换言之,代码edc
j,k
从字wi
j,k
生成,并且然后附加到所述字wi
j,k

[0107]
错误检测代码的计算是基于数学函数。例如,错误检测代码是奇偶校验码或汉明码。有利地,其可能不是加密函数,这将导致更少的计算资源。错误检测代码edc
j,k
允许检测在所述数据已被转移时接收到的存在于数据中(即,在字wi
j,k
中)的错误。代码edc
j,k
包含一些位,这些位附加到原始数据(即,字wi
j,k
)。如果该代码在原始数据wi
j,k
的传输期间出现错误,则代码edc
j,k
允许检测错误。
[0108]
与其各自的错误检测代码edc
j,k
相关联的明文数字信息的字wi
j,k
(其中0≤j≤n-1并且1≤k≤x)存储在安全元件100的内部存储器107中。
[0109]
在将错误检测代码edc
j,k
与数字信息的字wi
j,k
相关联(其中0≤j≤n-1并且1≤k≤x)并且将字及其所关联的错误检测代码存储在内部存储器107中的步骤s13之后,安全元件100在步骤s14中验证明文数字信息的完整性。明文数字信息的完整性是在从内部存储器107读取的数字信息的字wi
j,k
(没有所关联的错误检测代码edc
j,k
)上进行验证。更精确地说,第二完整性验证单元105从内部存储器107读取字wi
j,k
,重构明文数字信息的区段si,并且通过使用mac函数和密钥k0链接对l个明文数字信息的块pi0、

、pi
l-1
的计算来计算完整性元素(在此为mac)。然后,第二完整性验证单元105将所计算出的mac与从解密步骤s12所得的完整性元素maci1进行比较。
[0110]
如果所计算出的mac与maci1匹配,则成功地验证了明文数字信息的完整性。在这
种情况下,字wi
j,k
从内部存储器107到安全处理器106的转移被启用(图3中的步骤s18)并且该方法继续进行图6中所示的接下来的步骤s15-s17。如果所计算出的mac与maci1不匹配,则拒绝明文数字信息的完整性并且数字信息的处理之后是错误步骤s2。该错误步骤s18可能导致中止数字信息的处理。另选地,错误步骤s18可能导致将区段si处理为不相关并将其丢弃(即,不处理或不使用该区段并且擦除该区段)。
[0111]
针对存储在内部存储器107中的字wi
j,k
(其中0≤j≤n-1并且1≤k≤x)中的每个字连续地执行接下来的步骤s15至s17。
[0112]
在步骤s15中,数字信息的每个字wi
j,k
(其中0≤j≤n-1并且1≤k≤x)及其所关联的错误检测代码被转移到安全处理器102。仅当在步骤s14处成功地验证了明文数字信息的完整性时,才将数字信息的字wi
j,k
及其所关联的错误检测代码转移到安全处理器102。
[0113]
然后,在步骤s16中,安全处理器102通过使用所关联的错误检测代码来验证接收到的字wi
j,k
。如果在步骤s16中没有在字中检测到错误,则在步骤s17中由安全处理器102处理(或使用)该数字信息的字wi
j,k
。如果在步骤s16中检测到错误,则该方法进行到错误步骤s18。该错误步骤s18可导致下列中的任一情况:导致中止数字信息的处理,或者导致认为错误词不相关并将其丢弃。
[0114]
针对从外部存储器200加载的受保护形式的多个数字信息的区段si”迭代地执行步骤s10至s17或s18。
[0115]
在由安全元件处理或使用数字信息期间,可修改区段si。修改后的区段被称为sic。在这种情况下,安全元件100可执行以下步骤以更新外部存储器200中已被修改的区段(被称为si
c”):
[0116]-为修改的明文数字信息sic计算第一完整性元素maci
c_1

[0117]-对与第一完整性元素maci
c_1
级联的数字信息sic进行加密以计算[sic']=[sic]|[maci
c_1
];
[0118]-计算加密的结果[sic']=[sic]|[maci
c_1
]的第二完整性元素maci
c_2
,并且将加密的结果与所述第二完整性元素级联以形成si
c”=[sic]|[maci
c_1
]|maci
c_2

[0119]-用与第二完整性元素级联的加密结果si
c”来更新当前存储在外部存储器(200)中的区段。
[0120]
任选地,索引j的每个块(pi0,

,pi
n-1
)中的每个字wi
j,k
可将其自身的错误检测代码存储在安全元件100的内部存储器107中。每个字的错误检测代码可在第一完整性元素maci
c_1
的计算之后和在执行加密步骤之前进行验证。因此,加密路径更能抵抗故障攻击。
[0121]
然后,将更新的区段从安全元件100下载到外部存储器200中,并且当前存储的区段被更新的区段取代。
[0122]
如在步骤s10至s17或s18中所述,数字信息的处理是由安全元件在程序指令的控制下执行。程序指令存储在一个或多个存储模块(诸如易失性存储器(例如,ram等))和/或非易失性存储器(例如,rom、flash、nand等)中,该存储模块永久地或可移除地集成在安全元件中。因此,本公开还涉及一种包括程序指令的非暂态计算机可读介质,该程序指令用于使得用于安全地处理数字信息的安全元件(所述安全元件包括安全处理器)执行先前所述的步骤,特别是以下步骤:
[0123]-将数字信息从外部存储器加载到安全元件中;
[0124]-将数字信息分割成数字信息的字,从所述数字信息的字生成错误检测代码,并且将所述错误检测代码与对应的字相关联;
[0125]-将数字信息的字和所关联的错误检测代码转移到安全处理器;
[0126]-在安全处理器中,在处理包含在所述字中的数字信息之前,基于所关联的错误检测代码来验证数字信息的字。
[0127]
由安全元件100来实行的处理数字信息的方法的第二示例性实施方案是基于第一示例性实施方案并且与第一示例性实施方案的不同在于在步骤s13中由代码关联单元106针对字wi
j,k
中的每个字生成的代码是错误校正代码(ecc)(被称为ecc
j,k
)。然后,该代码ecc
j,k
与对应的字wi
j,k
组合。如果该代码在原始数据wi
j,k
的传输期间出现错误,则错误校正代码ecc
j,k
允许检测并校正对应的字wi
j,k
中的一个或多个位错误。在第二示例性实施方案中,在字wi
j,k
中检测到错误的情况下,对该字wi
j,k
的一个或多个位的校正可由安全元件100(例如由校正单元)在将字wi
j,k
转移到安全处理器102之前来实行。
[0128]
在本公开中,存储在外部存储器200中并且旨在由安全元件100中的安全处理器102处理(使用)的数字信息是通过认证加密来保护,该认证加密遵循“mac-then-encrypt-then-mac”类型的方法。这意味着对明文数字信息计算第一mac,然后对数字信息和第一mac应用加密,并且然后对加密结果计算第二mac。这样保护的数字信息从外部存储器加载到安全元件。在安全元件中,在解密之前验证受保护形式的数字信息的完整性。在解密之后,将明文数字信息分割(分)成大小适于安全处理器的字,并且将错误检测代码或错误校正代码添加到这些字。明文数字信息的字和所关联的错误检测代码(edc)或错误校正代码(ecc)存储在安全元件的内部存储器中,准备好转移到安全处理器。在将字及其所关联的代码(edc或ecc)转移到安全处理器之前,验证明文数字信息的完整性。通过对明文数字信息(通过读取存储在内部存储器中的字而获得)计算mac(或完整性元素)并且将所计算出的mac与在安全环境中所计算出的参考mac进行比较来进行该验证。
[0129]
此类配置在数字信息的处理中为从外部存储器中的存储到安全元件中的安全处理器的处理提供了端到端安全性。这确保了数字信息在存储在外部存储器中期间、在从外部存储器转移到安全元件中期间以及在安全元件中一直到将数字信息转移到安全处理器的点为止没有被更改。
[0130]
可使用不同类型的mac函数来生成数字信息的完整性元素以及验证数字信息的完整性。例如,可使用cmac函数(基于密码的消息认证代码)(其为基于块密码的消息认证代码算法)或hmac算法(基于哈希的消息认证代码)(其为涉及加密哈希函数和秘密密钥的特定类型的消息认证代码(mac))。在这种情况下,块大小的字节数可能与用于加密的字节数不同。可使用任何其他认证函数来代替mac函数。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1