本发明涉及一种安全元件。安全元件是防篡改的处理电路。
背景技术:
如今,安全元件是可拆卸的独立芯片并且焊接在最大电子设备的主板上。一般,安全元件通常包括具有易失性存储器和非易失性存储器的微处理器、频繁地密码化处理器以及专用于安全化的某种硬件电路。与智能卡芯片有关的现有技术构成关于安全化并且关于应用这些安全元件是可能的大部分。
然而,安全元件中所加载的软件必须是安全的并且安全地加载在安全元件中。一般,芯片制造商可以将空白安全元件提供给组件集成商,其将在受信组件是真正空白的来自组件制造商的保证的情况下对安全元件加载受信软件。组件集成商通常在芯片内部加载安全操作系统(os)。芯片及其os可以然后嵌入在类似便携式卡的设备中,或交付给另一设备制造商以包括在更大的电子设备(例如智能电话、计算机、车辆、测量设备等)中。
在接收到其os之后,安全元件可以远程地并且安全地加载应用。处理安全元件的存取密钥的组件集成商保证安全加载的信任度。因为操作系统必须适配为接收最终应用,所以某种问题可能产生。另一问题是,电子设备的最终客户不能选取作为其应用的安全化的保证的组件集成商。
理想地,将最佳的是,安全元件将以在购买电子设备之后可以进行完整定制的这样的方式完全空白地集成到电子设备中。但主要问题是具体地在电子设备的多次转售之后如何对最终客户保证安全元件是真正空白的。
技术实现要素:
本发明提出一种包括用于保证组件是真正空白的一些硬件特征的嵌入式电路的新结构。具体地说,本发明是一种安全元件,其包括至少一个处理器、至少一个通信接口、至少一个存储器以及至少一个总线存取控制器。所述总线存取控制器至少定义第一区域、第二区域和安全区域。所述第一区域包括能够在所述第二区域中加载程序包的第一加载器程序。所述安全区域包括能够对所述第二区域中所加载的程序包进行鉴权的鉴权密钥。在对所述第二区域中所加载的所述程序包进行鉴权之后,所述第一加载器程序的存取权限以所述第一区域中的程序不再可以存取所述第二区域的这样的方式改变。
使用具有在加载程序保证之后改变的存取权限的第一加载器程序消除通过第一加载器攻击的可能方式。
优选地,所述第二区域中所加载的所述程序包可以包括鉴权令牌,其包括可以通过所述鉴权密钥鉴权的所加载的程序包的签名。所加载的程序包可以包含通过所述鉴权密钥加密的第二密钥,所述第二密钥用于对所述程序包的至少一个部分进行解密。
所述第二区域中所加载的所述程序包可以包括第二加载器程序。该第二加载器包是由os制作商制作的,对该第二加载器的控制是更可靠的,并且当所有环境在控制下时使得能够使用本领域公知的更复杂的保护机制。所述第二加载器程序进行的随后加载可以通过加密的方式得以进行,所述解密是使用所述第二密钥进行的。
可以通过附加硬件防火墙化进行安全化的增加。所述总线存取控制器可以定义可以仅由第二加载器程序加载的例如专用于所述操作系统的第三区域。另一安全化改进可以包括:将所述第二密钥存储在所述安全区域中。所述总线存取控制器可以定义可以从在另一区域中运行的任何程序在读取和写入模式下存取的中性区域,所述中性区域用于在各区域之间传递数据,并且其中,在所述总线存取控制器检测到存取权限违反的情况下,擦除所述中性区域中的所有数据。所述安全区域可以包括加密和解密的一些安全功能,其可以从另一区域启动,但它们的执行是仅在所述安全区域中进行的。
为了反复使用的目的,在完成擦除所述第二区域之后,所述第一加载器程序可以再次存取所述第二区域。该机制可以允许反复使用芯片而没有公开机密数据的风险,因为它们被擦除。在此情况下,如果存在第三区域,则应与所述第二区域同时擦除所述第三区域。为了防止意外擦除,应仅在来自连接到所述通信接口的主机设备的关于擦除的鉴权之后进行所述第二区域的擦除。
附图说明
将参照附图更详细地描述本发明,其中:
图1示出安全元件的框图,
图2示出根据本发明的安全元件的安全化域,
图3示出根据本发明的安全化域所定义的存储器映射,
图4和图5示出存储器根据其安全化域的的存取表,
图6示出密钥管理的表,
图7是安装副引导加载器的流程图。
具体实施方式
图1示出安全元件100的架构的示例,其包括连接到总线存取控制器103所监控的中央总线102的处理单元101。中央总线还连接到通信接口104、易失性存储器(ram)105、非易失性存储器106以及密码化协处理器107。安全元件的其它架构可以适用于本发明。在集成电路中制作该安全元件100。但考虑安全元件将是所配置的软件,其可以看作一片芯片。换言之,安全元件可以集成在片上系统内部,其中,安全元件是通过其通信接口104进行通信的模块。
对于片上系统内部所嵌入的安全元件100,通信接口104可以是连接到soc的中央总线的并行接口。在此情况下,安全元件100的主机是soc。通信接口104将主要包括缓冲器,用于从主机接收命令和数据。
如果将安全元件100制作为在集成电路内部是单独的,则通信接口104可以包括根据一个或多个公知协议的一个或多个接口。优选地,使用串行接口(例如iso7816、iso、usb、i2c、spi、swp或对于两个芯片之间的通信所普遍使用的任何串行接口)。也可以具有无接触接口,以将天线直接耦合到芯片(例如iso14443、zigbee、蓝牙或任何其它接口)。
实现密码化协处理器107,以用于使得计算专用于密码化的某种操作比处理单元101更快。即使使用密码化协处理器107并非必要的,也推荐具有用于执行可能在通用处理器(例如处理单元101)上耗费长的处理时间的强密码化功能的密码化协处理器107。
非易失性存储器106可以包括若干类型的存储器(例如rom、prom、e2prom或闪存e2prom)。典型地,存储器的部分仅受编程一次,并且可以直接由ic制造商编程。ic制造商所提供的所有种类的数据和程序可以使用不可擦除的技术。易失性存储器105和非易失性存储器106被布置为在可由它们的地址容易地标识的不同区域中是可分离的。
中央总线102是并行微处理器总线,其包括三个部分:一个部分用于地址,一个部分用于数据,并且最后部分用于控制信号。总线存取控制器103监控中央总线102的地址和控制信号。地址映射由用于在若干区域中分离存储器的硬件定义,每个区域对应于将稍后详述的安全化域。控制信号使得总线存取控制器能够获知存储器存取是读取操作、写入操作还是提取操作。考虑提取是用于执行指令,存取总线控制器获知从哪个地址将进行下一存取。优选地,总线控制器103通过不能修改安全元件100的所监控的地址映射的这样的方式硬引线化。总线存取控制器103包括可以编程以用于改变一个存取规则的非易失性类型的至少一个比特。本领域技术人员可以取决于将详述的要实现的规则容易地制作该总线存取控制器。
图2示出可以通过本发明实现的不同安全化域。第一域201是ic制造商的域。第一域201主要包含将用于安全地加载随后软件的主引导加载器。第二域202处于os制作商的控制下。第二域202包含副引导加载器。副引导加载器是由主引导加载器加载的,并且将用于加载操作系统。第三域203处于os制作商的控制下。第三域包含操作系统。第四域专用于消费者,并且包含应用。所有域以一个域的软件不能存取其它域的数据的这样的方式通过防火墙得以分离。
在本发明优选实现方式中,第一域与第二域之间以及第二域与第三域之间的防火墙是硬件防火墙,而第三域与第四域之间的防火墙是由os的软件进行的。在变形中,第二域和第三域也可以构成没有防火墙的单个域。第一域与第二域之间的硬件防火墙保证ic制造商与os制作商之间的秘密性。
图3详述对应于不同域的存储器映射,以用于解释如何确保硬件安全化。在图3中,第一域201在两个存储器区域中是共享的,一个专用于主引导加载器(pbl区域),并且另一个用于安全化功能(mz区域)。mz区域包括安全化功能,并且不能从pbl区域存取。第二域202包含副引导加载器,并且构成sbl区域。第二域和第三域203和204放置在单个区域(os区域)中。这四个区域(pbl区域、mz区域、sbl区域和os区域)是通过总线存取控制器103所管理的硬件防火墙fw1、fw2和fw3彼此分离的区域。第五区域对应于在关于所有区域的写入和读取方面是开放的共享区域。共享区域用于使得能够在各分离的区域之间安全地交换信息。
区域的特定硬件防火墙化目的是防止原生地强制第一域与第二域之间的防火墙化的主引导加载器与副引导加载器之间的秘密的任何泄露。即使pbl具有软件功能障碍或恶意程序已经插入,于是证书化的硬件也将防止任何秘密泄露到相应域外部。总之,pbl不能公开sbl的秘密,并且反之亦然。
关于总线存取控制器的存取规则的更多细节,参照图4和图5。图4对应于在加载副引导加载器之前的存取规则,图5对应于在加载并且鉴权副引导加载器之后的存取规则。通过以密封规则达组件的寿命的这样的方式在总线存取控制器中硬引线化实现这些图4和图5。如之前所指示的那样,总线存取控制器103监控总线和所处理的指令。在任何时间,总线存取控制器103获知当前所执行的指令所来自的区域。取决于发源的区域,可以在其它区域上给予某种权限。在表中,r指示允许关于读取操作的存取权限,w指示允许关于写入操作的存取权限,x指示允许关于将来执行的提取操作。
可见,图4和图5所定义的权限允许执行仅在其区域中的指令。两幅图之间的仅一个差异是从pbl区域到sbl区域的存取权限。在图4上,pbl区域具有用于读取并且写入sbl区域方面的存取的权限,以用于在sbl区域中下载程序包并且验证加载得以执行。在下载包之后,包的鉴权将得以进行并且是成功的,总线存取控制器的非易失性比特改变,并且从pbl区域到sbl区域的存取于是被禁止,如图5中所指示的那样。
可以由本领域技术人员取决于安全化和某选项的等级修改这种存储器映射。在说明书的示例中,os区域与sbl区域分离。sbl区域具有读取和写入方面的os区域中的存取权限,因为应通过副引导加载器进行os的所有更新。关于os区域,对于sbl区域,具体地说,对于使用可以感兴趣于加载软件应用的来自sbl区域的一些信息,也给予一些存取权限。考虑两个对应域可以是相同的域,也可以定义用于sbl区域和os区域二者的单个区域。这是可能的,因为os制作商制作副引导加载器,以用于对os制作商保证完全标识的引导加载器软件安全地加载操作系统。操作系统与副引导加载器之间的防火墙化可以由软件进行。
可见,一些数据可以通过共享区域从一个区域传递到另一区域。通过该机制,仅数据正常地从一个区域传送到另一区域。此外,接收数据的区域具有对接收到的数据的完全控制,因为其正常地由所述区域的程序读取。然而,如果总线存取控制器103检测到权限违反,或如果检测到处理单元的故障,则完全擦除共享存储器。可选地,安全元件100可以包括一些安全化传感器,以用于根据对于该安全组件已经获知的内容检测物理攻击。如果安全化传感器检测到潜在攻击,则也擦除共享存储器。
对于从一个区域到另一区域的切换,两种机制是可能的。第一种机制是在共享存储器中加载与启动最终具有一些数据的功能对应的指针并且然后激活指示切换到所选择的区域的中断。区域的激活可以然后读取指针以及最终数据。在读取之后,在区域中进行指针的验证,以用于启动所指向的功能。
另一机制是在每个区域中定义一个或多个入口点。这些入口点可以与总线存取控制器标识为对普通存取规则的所授权的例外的特定地址对应。当然,应通过共享存储器传递互补数据。
如之前所介绍的那样,mz区域包含芯片的安全化功能。mz区域连同将由安全元件使用的密钥一起包含一个或多个密码化功能的代码。通过相同方式,密码化协处理器仅在mz域中正常地运行。一些其它功能也专用于mz域(例如sbl域中所加载的代码的鉴权、sbl区域的擦除、总线存取控制器的非易失性比特的锁定和解锁)。mz区域完全处于ic制造商的控制下,并且其应是通过其软件得以证书化的证书化域。因为并未修改代码,所以非易失性存储器的部分可以是rom类型的。替代地,包含到mz中的某种功能可以启动替代处理单元进行动作以用于执行一些功能的某种硬引线化的状态机。
所有密码化处理是在mz区域内部进行的。mz区域连同存取权限的表一起存储所有密钥。作为示例,图6示出现将详述的具有作为待在安装处理期间使用的密钥的三个密钥的表。第一密钥kpbl是分配给主引导加载器的密钥,以用于对所加载的程序包具有被加载的权限进行鉴权,对尚未修改pbl区域进行鉴权,并且还对作为用于对副引导加载器inx加密的密钥的第二密钥ksbl进行解密。优选地,第三密钥koem用于启动某种功能(例如存储器擦除)。第一密钥和第三密钥是以授权分离可能地使用两种不同算法的两个不同功能的管理的这样的方式分离的密钥,这两个密钥kpbl和koem由ic制造商直接加载。在变形中,可以具有替代第一密钥和第三密钥的单个密钥。
如图6中所指示的那样,密钥对于一些域是可用的,而对于一些其它域并非可用的。考虑在mz区域内部进行所有密码化处理,密钥总是保留在mz区域中,但它们可以仅使用的处理是从所授权的区域启动的。在任何情况下,mz区域内部寄存的密钥从不离开mz区域,并且密钥的所有用途必须在mz区域内部执行。第一密钥kpbl对从sbl区域或从mz区域请求的处理是可用的,但如果请求出自另一区域,则不能使用该第一密钥kpbl。第二密钥ksbl对于sbl区域、mz区域和os区域是可用的,而对于其它区域并非可用的。第三密钥koem对于pbl区域和mz区域是可用的。
参照图7的算法描述安装处理。一旦安全元件通电,处理就开始(步骤700)。当认为电压处于操作等级时,执行初始化的步骤701。该步骤主要重置组件的所有缓冲器并且将pbl区域中的程序指针定位在对应于测试702的指令上。测试702包括:验证指示副引导加载器是否有效的非易失性存储器中的标志。如果sbl并非有效的,则将安全元件100置于等待状态下
(703)。等待状态是空闲状态,其中,来自通信接口104的中断指示接收允许进入下一步骤(其为测试704)的命令。测试704验证接收到的命令是否为擦除命令。如果命令并非擦除命令,则测试705验证其是否为加载命令。如果命令并非加载命令,则测试706验证其是否为安装命令。如果命令并非安装命令,则处理回到空闲步骤703,直到下一命令接收。
本领域技术人员可以注意,主引导加载器仅对出自主机的仅三条命令进行反应。这三条命令是对于加载程序必要的最小命令集合。必要的是,pbl是具有最小数量的命令的最小可能大小,以用于减少潜在攻击风险。
如果接收到的命令是擦除命令,则执行擦除步骤707。在该擦除步骤707期间,pbl将验证鉴权令牌。作为示例,鉴权令牌可以包括随机数,并且所述随机数通过第三密钥koem得以加密。加密方法可以是例如aes算法。pbl区域将临时请求mz区域要么使用第三密钥koem计算数字的aes要么对所加密的数字进行解密。结果将然后与令牌的其它部分比较。如果令牌得以鉴权,则擦除sbl区域和os区域的所有非易失性存储器。对于完成步骤707,重新写入两个非易失性标志,一个指示sbl并非有效,另一个指示擦除非易失性存储器。然后,处理可以回到空闲步骤703。
如果接收到的命令是加载命令,则执行测试708。测试708仅验证指示是否正确地擦除存储器的标志的状态。如果并非正确地擦除存储器,则处理返回到空闲步骤703。如果擦除存储器,则开始加载步骤709,其中,在sbl区域中加载指示不再擦除存储器并且其中出自通信接口的程序包的加载的非易失性标志。本领域技术人员可以注意,因为sbl并非有效的,所以pbl区域可以在该步骤709期间存取sbl区域。
程序包包括sbl的加密的代码、鉴权令牌以及第二密钥ksbl。存在用于制作该程序包的很多替选,并且将主要详述仅一个示例。加密的代码是例如使用第二密钥ksbl根据aes算法加密的。关于鉴权令牌,重要的是,定义可以使得能够验证代码完整性并且还允许加载代码的令牌。关于对第二密钥koem进行加密,我们也应使用第一密钥kpbl,但os制造商无需获知密钥kpbl。关于允许该机制,ic制造商可以提供一对两条信息构成的标识信息,一条信息是数字rpbl,另一条信息是与使用第一密钥kpbl通过aes算法加密rpbl对应的所加密的数字cpbl。用于加密第二密钥ksbl的一种方式是使用信息rpbl进行密码化,信息cpbl传递到包中。然后,可以通过连同替代cpbl的信息rpbl一起制作整个包的散列函数来制作包的签名。
为了通过公式使得示例清楚,ic制造商对os制造商给出成对信息:
{cpbl;rpbl}
其中:
cpbl=aes[kpbl](rpbl)
rpbl=aes-1[kpbl](cpbl)
包对应于以下信息群组:
{ec;cpbl;cksbl;xsbl}
其中:
-ec是加密的代码:
ec=aes[kpbl](code)
-cksbl是第二密钥ksbl的密码化:
cksbl=ksblxorrpbl
-xsbl是包的签名
xsbl=sha256(ec;rpbl;cksbl)
sha256是本领域技术人员公知的256比特上的安全散列值。
鉴权令牌在此情况下是在包内部所发送的一对{cpbl;xsbl}。
当然,可以进行其它编码可能性。可以使用具有rsa代替对称密钥aes的公钥基础架构。重要的是,能够对代码进行鉴权并且使用第一密钥kpbl对第二密钥ksbl进行加密,而不将密钥kpbl给予os制造商。
在公开sbl区域中所加载的程序包之后,继续公开图7的处理将变得更容易。在接收到安装命令时,主引导加载器启动mz区域所执行的鉴权步骤710。鉴权步骤710目的是检查包的完整性和鉴权,但其也必须验证pbl区域的完整性,将pbl区域存取锁定在sbl区域上并且最终对代码进行解密。
考虑一对信息{cpbl;rpbl}和包{ec;cpbl;cksbl;xsbl},mz区域读取cpbl,以用于使用kpbl计算rpbl。然后,计算签名,以用于验证签名xsbl是正确的。如果签名xsbl不是正确的,则将错误消息发送到通信接口104,并且擦除sbl区域和os区域的存储器。如果签名xsbl是正确的,则这说明包得以鉴权,并且于是设置指示sbl得以鉴权的非易失性标志,以防止从pbl区域到sbl区域中的存取。在对代码进行解密之前,还例如通过对所有pbl区域执行sha256例如使用来检查pbl区域的完整性的验证,然后与mz区域中先前记录的签名进行比较。确保组件完整性,第二密钥ksbl得以从cksbl提取并且存储在mz区域中。
最后,mz切换到sbl区域,以用于解密步骤711,其中,使用第二密钥ksbl对代码进行解密。
sbl有效,处理继续于运行测试712,其验证是否安装操作系统。副引导加载器代码功能主要是提供用于操作系统的安全引导加载器。因此,如果并未加载os,则执行加载步骤713,以用于在os区域中加载os。加载os可能是更复杂的,并且因为副引导加载器进行的os安装由os制作商进行并且保证,所以也可以定义用于应用的软件防火墙。仅副引导加载器可以加载os的事实使得os的加载是更安全的。具体地说,同一密钥ksbl也可以用于对操作系统的包进行解密。在加载os之后,os变为有效,并且可以运行os和所安装的应用。
本发明的一个附加优点是,包括本发明的安全元件的设备可以实现可以出自不同源的不同应用并且不必使用相同os。在此情况下,应用、os以及引导加载器的加密备份可以在主机上进行,并且存储器可以得以完全擦除,以用于通过其os及其应用接收另一副引导加载器。
本领域技术人员应理解,在不改变所附权利要求中所限定的本发明的范围的情况下,可以修改实施例的示例。