用于硬件加速密码的密钥的线程所有权的制作方法

文档序号:17441423发布日期:2019-04-17 04:48阅读:189来源:国知局
用于硬件加速密码的密钥的线程所有权的制作方法

本申请总体涉及数据安全性,更具体地涉及处理器架构内的计算安全性。



背景技术:

数据通信的安全性对于范围从诸如超级计算机的大规模系统到诸如嵌入式处理器的最小规模系统的几乎每种类型的电子系统都是重要的问题。实际上,安全性正成为小规模系统(例如预期在“物联网”(iot)中部署的传感器和致动器)的首要问题。鉴于其相对较小的计算能力和远程实施,将在很多服务和应用中大量实施的这些高度分布的iot对象可能特别容易受到攻击和危害。然而,由这些传感器和致动器的网络执行的功能的重要性提高了安全风险。

在数字数据密码领域中已知各种方法,例如可以用于数据通信、数据存储和检索,以及包括可以由嵌入式处理器执行的那些的其他应用。通常,密码领域包括数据加密和解密、数字认证(例如,签名/验证方案)等。公钥密码(也称为非对称密码)是一种常用的密码。根据该方法,根据特定算法生成公钥-私钥对“密钥”,每个密钥是数据块或信息块。公钥和私钥基于生成多项式彼此具有反向关系,使得发射节点使用该对中的一个密钥来保证通信,并且接收节点使用另一个密钥来解密或验证通信。更具体地,在数据加密上下文中,可以使用私钥解密使用公钥加密的数据块;在认证上下文中,可以使用公钥来验证使用私钥生成的数字签名。公钥和私钥通过困难的数学问题(通常称为“陷门函数”)彼此相关,因此从计算上难以根据其对应的已知公钥的知识来确定私钥。因此,公钥可以被发布,例如由不安全的通信发送或在公共注册表中列出,以实现私钥的持有者和获得公钥的那些之间的数据通信数据,而没有私钥可以由攻击者计算的实际风险。公钥/私钥方法通常受到青睐,因为私钥的持有者不需要与任何其他方共享该密钥;相反,对称密钥方法要求双方知道相同的加密密钥。

特定公钥方案提供的安全级别通常对应于密钥的长度;较长的密钥长度增加了从公钥导出私钥的难度。在诸如“dh”、“dsa”和“rsa”之类的密码算法下,公钥和私钥的常规比特长度范围从大约1024位到15360位。密钥的长度可以广泛变化,这取决于期望的安全级别和加密节点和解密节点的可用计算能力。更具体地,增加电子系统中实现的安全级别通常以降低系统性能为代价,因为与较高安全级别相关联的较长密钥需要增加的机器周期数和增加的存储器空间。

通过实施专用于系统处理器中的密码处理的基于硬件的加速器,可以在很大程度上减轻这种折衷。从德克萨斯仪器股份有限公司(texasinstrumentsincorporated)可获得的sitaraam335x处理器是嵌入式处理器的示例,其中实施了诸如可以在iot应用中使用的基于硬件的专用安全加速器。在这种类型的架构中,加密、解密和其他密码功能中涉及的计算密集型操作由中央处理单元卸载到安全加速器。这允许中央处理单元在处理末端用户应用时使用其处理带宽,使得系统吞吐量不会受到密码操作的显着影响。

图1示出了具有基于硬件的安全加速器的常规嵌入式处理器的示例的通用功能架构和操作。在该示例中,中央处理单元(cpu)2是常规多核处理器,例如在上文描述的sitaraam335x处理器中使用的armcortex-a8cpu。cpu2在常规操作系统(例如linux)下的多线程环境中执行其应用。在图1的示例中,cpu2在操作系统4下运行三个线程t1、t2、t3。各个线程t1、t2、t3由cpu2根据操作系统4中的调度器函数执行,其中操作系统4写入正在由如图1所示的cpu2的线程id寄存器9中执行的当前线程的标识符。该线程id在操作系统4的控制下由cpu2的硬件管理,以防止一个线程被另一个线程假冒。

图1的常规处理器包括密码协处理器5,其操作为通过总线sys_bus与cpu2通信的基于硬件的安全加速器,并且专用于执行密码操作,例如数据块的加密和解密。在该架构中,密码协处理器5结合安全存储器块6执行这些操作,安全存储器块6是通过专用总线ded_bus协处理器5可访问的存储器资源的一部分或全部;通常,对安全存储器块6的访问限于协处理器5,而不包括嵌入式处理器中的cpu2和其他通用逻辑和i/o功能。

在该常规架构中,密码协处理器5和安全存储器块6用作由cpu2执行的各种线程t1至t3共用的共享资源。将执行从一个线程切换到另一个线程(这通常是在多线程环境中执行)需要从被暂停的线程存储执行“上下文”,以便在恢复执行该线程时进行后续检索。该上下文包括寄存器内容、执行状态、设置和其他信息,这些信息可以允许逻辑电路在其停止的相同位置恢复线程的执行,就好像在此期间没有处理一个或多个中间线程一样。对于密码操作,该上下文包括在特定线程中使用的密码密钥。该传统架构中的安全存储器块6通过提供密码上下文的本地存储,特别是在协处理器5的密码操作中使用的密钥,允许协处理器5在接收到命令时进行快速上下文切换以在不同的执行线程下自先前操作执行密码操作。

如图1所示,多个密钥条目8在安全存储器块6中可用,用于存储多个密码密钥(即,多个线程上下文),从而允许协处理器执行多个不同的操作和通信信道,每个操作和通信信道具有它们自己的不同私钥、公钥或对称(共享)密钥。在这种典型的常规布置中,每个密钥条目8x可以由密钥“标签”或其他标识符keyid调用,以标识和引用特定密钥。条目8的内容各自包括key字段,以用于存储密钥本身,或者用于存储地址指针,该地址指针指向存储密钥的安全存储器块6中的另一个位置。在一些常规架构中,keyattr字段指示允许使用该密钥的密码操作的类型(即,加密、解密、认证、签名),以及该密钥的密码类型(aes、pka等)。尽管图1中示出了四个密钥条目81到84,然而安全存储器块6可以适当地包含更多或更少的条目。

在该架构中,cpu2通过总线sys_bus与密码协处理器5通信。为了在当前执行线程中调用密码操作,cpu2通过总线sys_bus向协处理器5发出调用,该调用包括指示待执行的操作类型的命令、在其上执行那些操作的数据,以及密钥标识符keyid的值,该值表示待用于该操作中的密码密钥的密钥条目8x。如果该密钥与协处理器5当前正在使用的密钥不同(这通常在操作系统4已经在cpu2处将执行从一个线程切换到另一个线程时发生),则协处理器5通过存储当前密钥和用于该先前密钥的安全存储器块6中的密钥条目8x的其他上下文,并且从cpu2检索与新接收的keyid值相对应的密钥条目8x的密钥,来执行上下文切换。在完成所需的密码操作后,密码协处理器5进行通过总线sys_bus将结果传送回到cpu2。

在一些常规处理器架构中,密码协处理器可以以“公共”或“私密”模式操作。在这些架构中,公共模式可以与在该模式下可以在多个线程之间共享的一个密码密钥相关联,而私密模式与也可以在该模式中的线程之间共享的不同的密码密钥相关联。

作为进一步的背景,一些常规处理器架构在密码协处理器之外执行上下文切换。在这些架构中,操作系统在cpu处或调用协处理器的其他处理器处执行上下文切换,将先前线程的上下文“清理”到协处理器中存在的程度。在这种方法中,协处理器不参与上下文切换,除了通过下一个线程重写其密钥(如果需要)。

作为进一步的背景,在一些常规处理器架构中,在密码协处理器中提供用于公共模式和私密模式的单独寄存器。这些逻辑上分离的寄存器将私密域中的协处理器使用的密码密钥其他设置和信息与公共域中那些隔离,并且反之亦然。在这种布置中,在从一个域到另一个域的上下文切换中不需要清理。



技术实现要素:

在所描述的示例中,中央处理单元(cpu)在多线程环境中操作。cpu向密码协处理器发出调用,以使用密钥执行密码操作,例如加密和解密。协处理器可访问的安全存储器块存储多个密钥条目,每个密钥条目存储与线程标识符相关联的密码密钥,该线程标识符标识执行线程与该密钥相关联(“拥有该密钥”)。在发出用于密码操作的协处理器调用时,cpu将待使用的密钥的密钥标识符和线程标识符传送到协处理器。协处理器将从cpu接收的线程标识符与存储在具有所需密钥的安全存储器中的线程标识符进行比较,以确定调用线程是否拥有该密钥;如果是,则从安全存储器块检索密钥以供协处理器用于密码操作。如果线程标识符不匹配,则不执行所请求的操作。

附图说明

图1是常规嵌入式处理器的架构的一部分的框图形式的电气图。

图2是根据实施例构造的嵌入式处理器的框图形式的电气图。

图3是根据实施例的图2的处理器的中央处理单元、密码协处理器和安全存储器块的架构的框图形式的电气图。

图4是根据实施例示出图3的架构的操作的流程图。

图5是根据另一实施例的图2的处理器的中央处理单元、密码协处理器和安全存储器块的架构的框图形式的电气图。

具体实施方式

在处理器和操作方法的示例实施例中,在更高安全级别下的多线程环境中的基于硬件的安全加速器处执行密码操作,而不降低系统性能。出于密码操作的目的,这种处理器和方法提供了线程之间的改进的隔离。而且,这种处理器和方法在安全加速器处实现快速上下文切换。

本说明书中描述的一个或多个实施例被实施为电子系统中的嵌入式处理器(例如微控制器),因为这种实施方式在该上下文中是特别有利的。然而,示例实施例可以有益地应用于其他应用,例如较大规模的处理器和系统,包括智能电话、平板电脑、笔记本和其他个人计算机、服务器等。

常规嵌入式处理器可能易受与由密码协处理器执行的密码操作相关的“攻击”的影响。例如,参考关于图1的上文描述的常规架构,第一执行线程可以向协处理器5发出调用以使用第一密钥对数据块进行加密。在上下文切换之后,该第一密钥存储在安全存储器块6中,安全存储器块6在本地存储用于数个cpu线程的密码操作的上下文数据。在这种类型的攻击中,在不同线程中执行的恶意软件监视cpu2和协处理器5之间的总线sys_bus以获得加密数据,然后向协处理器5发出调用以使用现在存储在安全存储器块6中的第一密钥解密该数据块,第一密钥是数据用其加密的密钥。简而言之,上文关于图1描述的常规协处理器架构不为线程之间的密码密钥提供安全性。

根据这些实施例,通过将协处理器系统的安全存储器中的每个密钥条目绑定到特定线程来排除该漏洞。在一个实施例中,密钥条目包括标识线程“拥有”与该密钥条目相关联的密钥的字段,该线程是向协处理器提供该密钥的线程。对于协处理器要访问的密钥,调用协处理器在操作中使用该密钥的线程必须与密钥的密钥条目中标识的线程拥有者匹配。

图2示出了根据这些实施例的嵌入式处理器10的整体架构,例如可以实施为适合于在iot环境中部署的传感器、控制器或其他电子系统。如上所述,这些实施例可以在如不同规模的并用于广泛的应用的电子系统中部署的各种架构的处理器电路中实施。该实施例中的嵌入式处理器10的架构遵循诸如可从德克萨斯仪器股份有限公司(texasinstrumentsincorporated)获得的sitaraam335xarm处理器之类的设备的整体架构,但其根据下文描述的实施例之一附加地构造。根据该架构的处理器10通常将实现为单个集成电路,但也可以替代地实现为多个集成电路(例如,作为“芯片组”或多模块设备)。并且,根据这些实施例,处理器10中可以包括除了本文描述的功能单元之外的更多或更少的功能单元。

如图2所示,处理器10包括许多不同的功能单元。为清楚起见,总线连接未在图2中示出。中央处理单元(cpu)12用作处理器10的主要可编程逻辑,并且可以是诸如在上文描述的sitaraam335x处理器系列中的armcortex-a8等的多核处理器。在该实施例中,cpu12适合于在多线程环境中执行其应用程序及类似应用程序。cpu12例如经由主系统总线(未示出)与系统存储器14连接。系统存储器14包括对cpu12和处理器10中的其他功能件有用的适当程序和数据存储器,并且可以实现为多个块或不同类型的存储器阵列,包括诸如sram的易失性存储器以及诸如eeprom或闪存的非易失性存储器。

根据该实施例的处理器10中提供的其他功能单元包括显示控制器18和各种可编程实时单元20,显示控制器18可以包括处理器10内的图形协处理器(未示出)或与之协作,各种可编程实时单元20支持处理器10与iot中的其他设备之间通过一个或多个常规协议(例如ethercat、profibus、profinet和ethernet/ip协议等)进行通信。处理器10包括cpu12可通过3/4级互连总线22访问的附加接口,包括串行接口24(例如,usb和emac接口)、并行接口26(例如,sdio和gpio接口),以及存储器接口28(诸如可以用于与dram或处理器10外部的其他存储器接合的接口)等。各种系统外围设备26也可以包括在处理器10内,例如定时器、振荡器、dma功能件、模数转换器(adc)和数模转换器(dac)等。

根据这些实施例,处理器10能够安全地执行各种密码操作,包括诸如数据加密、数据解密、认证等操作。通常,这些密码操作是计算密集型的,消耗大量处理器周期和大量存储器资源。为了改善其整体性能和带宽,特别是与其cpu12相关,根据该实施例的处理器10包括密码协处理器15(其为可编程逻辑功能件),例如专用于执行用于密码操作的软件例程的处理器核。在该架构中,协处理器15与安全密钥存储器16一起操作。如下文进一步描述的,安全密钥存储器16包括适当的存储器空间和用于存储在协处理器15执行密码操作中使用的密码密钥的组织。安全密钥存储器16被认为是“安全”存储器,因为对它的访问可能限于协处理器15,并且可能限于在处理器10中的其他特定电路功能件,以排除其他电路功能件。在这个意义上,安全密钥存储器16可以在物理上与系统存储器14和处理器10中的其他存储器资源分开,其中专用存储器总线在安全密钥存储器16与协处理器15之间运行,或者可替代地安全密钥存储器16可以实现为系统存储器14的一部分,对安全密钥存储器16的访问受到“防火墙”或其他安全操作的限制。除安全密钥存储器16之外,在处理器10中还提供存储可由协处理器15执行的密码软件程序和其它程序代码的程序存储器;该程序存储器可以是安全密钥存储器16的一部分,或系统存储器14的一部分,或者可替代地是协处理器15内或可由协处理器15访问的另一存储器资源。

本文描述的实施例和其他替代处理器架构适用于特定应用。

参见图3,现在将描述根据实施例的处理器10的架构,处理器10涉及密码协处理器15的操作。如上所述,该实施例中的cpu12是支持操作系统13的多核处理器,并且能够在多线程环境中操作,在图3所示的实例中运行n个线程t1到tn。cpu12包括线程id寄存器11,该线程id寄存器11存储由cpu12正在执行的当前线程的标识符。该线程标识符可以采取各种形式,这取决于实施方式。例如,在多核架构中,线程标识符可以包括分配给每个执行线程的标签,而无论执行该线程的核如何,或者可替代地,线程标识符可以包括执行该线程的cpu核的标识符结合对该核上的线程进行区分的线程标识符。无论线程id的形式如何,操作系统13都控制各个执行线程t1到tn的调度和切换,并且自身用当前线程标识符写入线程id寄存器11的内容。在该实施例中,操作系统13具有比诸如应用软件之类的其他软件例程更高的权限级别,使得操作系统13能够写入线程id寄存器11的内容,以排除较低权限软件例程。当前线程和线程id寄存器11的这种“硬件”设置防止一个线程“假冒”该多线程环境中的另一个线程。

在该实施例中,cpu12经由处理器10的主设备总线结构32耦合到协处理器15并与协处理器15通信。设备总线结构32包括用于在处理器10的各种功能件(包括系统存储器14和处理器10的其他功能件,例如上文关于图3所述)之间传送存储器地址、数据和控制信息的适当导体。

除了设备总线结构32之外,cpu12还通过“边带”信号耦合到密码协处理器15。在这些实施例中,边带信号是指通过与设备总线结构32分开的硬件通信路径(“边带路径”)sc从cpu12传送到协处理器15的数据和控制信息信号。例如,边带路径sc可以由实施处理器10的集成电路中的一个或多个导体实现,这些导体与设备总线结构32分开,并且因此不能被驻留在设备总线结构32上的功能访问。因此,在边带路径sc上发射的边带信号将不可见或者不能通过“窥探”设备总线结构32的电路或功能件来掌握。在该实施例中,这些边带信号将线程id寄存器11的内容(即当前正在由cpu12执行的线程的标识符)从cpu12安全地传送到与用于密码操作的调用连接的协处理器15。

在该实施例中,协处理器15包括用于响应于通过设备总线结构32和边带路径sc来自cpu12的调用而执行密码操作的功能电路。此功能电路包括密钥访问状态机34,密钥访问状态机34为在协处理器15中实施以与安全存储器块16通信从而检索与cpu12调用的任务相关联的密码密钥的顺序逻辑。协处理器15还包括活动密钥存储36,活动密钥存储36为用于存储由状态机34从安全存储器块16检索的密码密钥的存储器块或寄存器位置。在该实施例中,密钥访问状态机34通过处理器10的主设备总线结构32从安全存储器块16检索密码密钥。就其本身而言,安全存储器块16经由防火墙35与设备总线结构32连接,防火墙35由逻辑电路构成,该逻辑电路限制对将密码密钥和相关信息仅存储到密码协处理器15的安全存储器块16的那些部分的访问,以在处理器10的正常操作期间排除其他功能。在一些实施例中,可以布置防火墙35允许其他功能件(例如cpu12本身)也在“安全”处理的范围内访问安全存储器块16。例如,cpu12可以执行安全处理以利用密码密钥加载安全存储器块16。

可替代地,协处理器15可以经由专用总线(诸如图3中的阴影所示的总线33)耦合到安全存储器块16。在该替代方法中,安全存储器块16可以不耦合到设备总线结构32,在这种情况下,其只能由密码协处理器15访问或通过密码协处理器15访问。该替代结构在安全存储器块16仅专用于密钥存储并且不包含可用于其他安全功能的其他存储空间的那些应用中可能是有用的。

在该实施例中,安全存储器块16的全部或一部分用作密码协处理器15的专用密钥存储管理存储器。如图3所示,安全存储器块16的区域存储多个密码密钥401至404(统称为密钥40),供协处理器15在由cpu12调用的密码操作中使用。这些密码密钥40可以彼此具有不同的类型和尺寸。例如,密钥401和404可以均为aes128密钥,密钥402可以是pka密钥,密钥403可以是aes256密钥。特别是由于相对大的尺寸和不同的密钥类型和尺寸,这些密钥40通过间接寻址的方式被访问,如下所述。

在该实施例中,安全存储器块16包括存储多个密钥条目251至254(统称为条目25)的区域。对于该示例,图3中示出了四个密钥条目251到254,但是安全存储器块16视情况可以包含更多或更少的密钥条目25。就此而言,每个密钥条目25x包括与对应的密码密钥40x有关的多个字段。为了如上所述间接访问密钥40,本实施例的每个密钥条目25x是密钥地址指针字段38x,其将存储器地址存储在安全存储器块16中,在该安全存储器块16中存储其对应的密钥40x。作为图3中所示的间接寻址布置的替代,每个条目25x中的字段可以存储实际密钥40x自身,例如代替密钥地址指针字段38x;这种布置可适用于类似类型和尺寸的短密钥。还如图3所示,每个密钥条目25x包括标识其对应密钥40x的密码类型(例如,pka、aes等)的密钥属性字段39x,并且还可以包括许可,诸如可以使用该密钥40x的操作类型(加密/解密、签名/认证等)等。

根据该实施例,每个密钥条目25x与标签或标识符相关联,如图3所示作为密钥标识符字段37x,通过这种方式,协处理器15访问此特定密钥条目25x。例如,cpu12对协处理器15的调用可以包括与对应于在该操作中使用的密码密钥40x的密钥标识符字段37x的内容相对应的密钥标识符值。从cpu12接收此密钥标识符值的密钥访问状态机34然后可以以与内容可寻址存储器或高速缓存标签阵列类似的方式在具有该值的安全存储器块16中访问密钥条目25x,以检索用于对应的密钥40x的密钥地址指针38x。可替代地,密钥访问状态机34可以使用存储器地址从安全存储器块16检索密钥40x,例如通过使用查找表将cpu12传送的密钥标识符值转换为安全存储块16中的对应密钥条目25x的存储器地址。

根据该实施例,每个密钥条目25x包括线程拥有者字段30x。线程拥有者字段30x存储线程标识符值,该线程标识符值标识cpu12处的线程t1至tn中“拥有”与该密钥条目25x相关联的密码密钥40x的线程。更具体地,此线程拥有者字段30x的内容是最初将密码密钥40x提供给协处理器15的执行线程的线程标识符,并且因此是与上下文切换连接的安全存储器块16相关联并存储在安全存储器块16中的密钥40x的线程的线程标识符。这些线程标识符值由于在cpu12处建立执行线程而由操作系统13分配,并且在执行期间作为当前线程存储在cpu12的线程id寄存器11中,如在多线程环境中操作的常规处理器中那样。其他标准或操作可以确定哪个cpu线程被认为“拥有”该特定密钥。

参见图4,现在将描述根据实施例的处理器10中的密码操作的执行。在过程42中,通过cpu12协处理器15和安全存储器块16被“提供”一个或多个密码密钥。例如,由cpu12正在执行的当前线程(例如,线程t1)可以包括“存储密钥”指令,通过该方式,密码密钥由cpu12通过设备总线结构32转发到协处理器15,以及通过边带路径sc转发该当前线程t1的线程id。可替代地,提供过程42可以由cpu12发出命令来执行,该命令用于由协处理器15使用特定密钥执行密码操作(例如,对数据块加密)。在任何一种情况下,cpu12通过设备总线结构32转发相关命令以及待使用的密钥和待执行操作的数据,并且cpu12通过边带路径sc转发用于当前执行线程的线程id(例如,t1)。在过程44中,协处理器15将密钥存储在安全存储器块16中。该过程44可以在协处理器15处在上下文切换时被执行(不同的线程(例如线程t3)调用密码操作),或者作为对明确的“存储密钥”指令的立即响应。对于图3中所示的存储器布置,过程44的存储器写入将包括创建关于密钥标识符(字段37x)和字段39x中的适当属性的条目25x,将密钥40x自身存储在存储在密钥地址指针38x中的存储器地址处,以及将提供该密钥的当前线程的线程id值存储在该密钥条目25x的线程拥有者字段30x中。在图3的处理器10的架构中,这些存储器写操作将由密钥访问状态机34经由设备总线结构32执行以保护由防火墙35允许的存储器块16。

可以由cpu12在安全存储器块16中设置多个密码密钥以供协处理器15稍后使用,以根据需要重复该提供过程42和存储过程44。然而,通常这些过程42、44将根据需要执行或当需要时在处理器10正在执行的应用程序的正常程序流程中执行,而不是在一组密钥提供操作中执行。在任何情况下,在过程44中存储密钥之后,协处理器15然后在过程45中进入等待状态,等待来自cpu12的命令。

在过程46中,cpu12向协处理器15发出调用以执行密码操作。在图3的架构中,可以发出该调用,以作为与期望的密码操作相对应的命令连同要在其上执行操作的数据(或者,例如,在系统存储器14中的存储数据的地址)以及密钥标识符值,该密钥标识符值指示要使用存储在安全存储块16中的哪个密码密钥。该密钥标识符值可以是与密钥标识符37x相对应的标签,通过这种方式,协处理器15的密钥访问状态机34可以访问安全存储器块16中的对应的条目25x以检索对应的密钥40x,或者可替代地,该密钥标识符值可以是状态机34转换以到达密钥标识符37x的值。如上所述,cpu12通过设备总线结构32将命令、数据(或地址)和密钥标识符值转发到协处理器15。同样在过程46中,根据该实施例,cpu12还通过经由路径sc传送的边带信号将存储在其线程id寄存器11中的当前线程标识符转发到密钥访问状态机34。如上所述,当前执行线程的线程id在操作系统13中(例如当其执行上下文切换时)被存储在线程id寄存器11中,并且该线程id还通过操作系统13经由边带路径sc“在硬件中”被传送。线程id寄存器11的写入及其内容通过边带路径进行的传送可以限于操作系统13的高权限级别,以排除诸如应用软件之类的较低权限过程,以防止在一个线程中执行恶意应用软件代码而假冒另一个线程。因此,在过程46中与命令和密钥标识符一起被传送的线程id标识随后在cpu12处执行的真实当前执行线程。

在过程48中,响应于哪个安全存储器块16将该密钥条目25x的线程拥有者字段的内容返回到状态机34,根据该架构的cpu12中的密钥访问状态机34访问与在该过程46的实例中由cpu12传送的密钥标识符值对应的密钥条目25x。然后,状态机34通过将从密钥条目25x检索到的线程拥有者字段30x的内容与在过程46中通过cpu12经由边带信道34传送的线程id值进行比较来执行判定49。该判定49的比较将发出使用特定密钥40x的调用的当前执行线程的线程id与最初提供具有该密钥40x的协处理器15的执行线程(即,作为该钥匙40x的“拥有者”的线程)的线程id进行比较。如果通过边带路径sc的来自cpu12的线程id值与所访问的密钥条目25x中的线程拥有者字段30x的内容不匹配(即,判定49返回“否”结果),则在过程50中状态机34通过设备总线结构32发出错误消息,以向cpu12指示,由于当前线程没有使用在过程46中由密钥标识符标识的密码密钥的许可,所以其对协处理器15的调用失败,。然后控制转到等待状态45以等待下一次对协处理器15的调用。

如果通过边带路径sc传送到状态机34的线程id与在过程48中从安全存储器块16中检索的密钥条目25x中的线程拥有者字段30x的内容匹配(判定49返回“是”结果),则在过程46中调用的密码操作可以继续。在过程54中,状态机34通过访问存储在密钥条目25x的密钥地址指针字段38x中的安全存储器块16中的存储器地址来检索实际密钥40x,或者如果密钥40x被存储在密钥条目25x本身内,则通过读取密钥条目25x的对应字段来检索实际密钥40x,并且将密钥40x存储在协处理器15的活动密钥存储装置36中。还可以检查检索到的密钥条目25x的密钥属性字段39x中的许可,以确保密钥40x可以用于该特定操作。假设这样,该存储的密钥40x然后由协处理器15在过程56中执行期望的密码操作时使用。在完成过程56的操作并且将结果转发回cpu12之后,协处理器15返回到等待状态45以等待下一次调用。

因此,根据该实施例,可以对多线程环境中的一个执行线程中使用的密码密钥的访问限制由其他执行线程使用。通过防止恶意软件在单独的线程中执行的攻击,以这种方式将密钥绑定到各个线程,以允许在包括密码协处理器的基于处理器的系统中提供更高的安全性,基于处理器的系统包括用于在安全性是主要关注的iot上下文中实施的那些。按照允许在密码协处理器处进行快速上下文切换的方式实现这种改进的安全性,从而使主处理器逻辑从管理协处理器上下文切换中解除并且从访问外部存储器以及由此带来的整体系统性能的降低中解除。

如针对图3中所示的实施例所描述的,发出对协处理器15的调用的执行线程的线程id被从cpu12中的线程id寄存器11通过边带路径sc传送到协处理器15。根据另一个实施例,如图5所示,当前线程id寄存器51被提供在密码协处理器15’中。在该实施例中,操作系统13使cpu12通过设备总线结构32将当前线程id值转发到协处理器15’,例如在cpu12处执行的线程上下文切换的一部分,即使协处理器15’不参与软件例程。如在图3的实施例中,操作系统13将具有足够高的权限级别,高于其他软件例程(例如正在执行的应用软件)的权限级别,以便其可以写入当前线程id寄存器51的内容,而禁止较低权限软件例程这样做。因此,根据该实施例,当前线程id被存储在协处理器15’自身的寄存器51中。在操作中,通过密钥访问状态机34将其自身拥有的线程id寄存器51的内容与检索到的密钥条目25x的线程拥有者字段30x的内容进行比较来执行在判定49(图4)中用于确定当前执行线程是否是所指示的密码密钥40x的拥有者的比较。根据图5的该实施例的协处理器15’的操作还要遵循上文关于图4描述的方法。

此外在替代方案中,可以布置密钥条目的内容,使得除了提供(即“拥有”)特定密码密钥的线程之外的线程也可以被授权以同样使用相同的密钥。在该替代实施方式中,图4的判定49将评估密钥条目的对应字段,以确定由cpu12传送或由操作系统13存储在协处理器15本身中的当前执行线程是否被授权使用该密钥;如果不是,则将发出错误消息,并且如果是,则在该当前线程内执行所需的操作。

在所描述的实施例中,修改是可能的,并且在权利要求的范围内,其他实施例也是可能的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1