半导体器件、认证系统和认证方法与流程

文档序号:17772999发布日期:2019-05-28 19:40阅读:601来源:国知局
半导体器件、认证系统和认证方法与流程

于2017年11月21日提交的包括说明书、附图和摘要的日本专利申请no.2017-223607的公开通过引用其全部而被包含在本文中。

本发明涉及半导体器件、认证系统和认证方法,更具体地说,涉及例如具有硬件安全模块电路的半导体器件、认证系统和认证方法。



背景技术:

已经提出了用于在器件之间发送/接收数据的情况下的安全数据加载方法。例如,专利文献1公开了一种使用公钥/私钥和mac(消息认证码)值的数字签名被添加到数据的数据结构,以及一种在加载数据时使用数据结构执行认证处理或数据篡改检查的方法。专利文献2公开了一种允许更新感测规则以用于感测车载网络中的未授权帧的技术。

另一方面,已经提出了使用纠错码(error-correctingcode)技术的加密/解密方法。专利文献3公开了一种使用纠错码技术的加密/解密方法。在专利文献3中,对明文执行纠错编码处理,并且在产生的纠错编码后的数据中,产生可校正的随机误码。然后,具有随机误码的纠错编码后的数据被加密以产生密文。相反地,密文被解密并且然后经历纠错编码以提供明文。

【现有技术文献】

【专利文献】

【专利文献1】日本专利no.4856080

【专利文献2】日本未审专利申请公开no.2016-134914

【专利文献3】日本未审专利申请公开no.2002-77135



技术实现要素:

在根据上述专利文献1和专利文献2的每一种技术中,没有考虑给出诸如检查通信时的数据错误、或者由硬件故障或纠错码导致的数据错误的功能安全措施。另外,在根据上述专利文献3的技术中,已经引入纠错码以提供一种密码分析方法,而不采取功能安全措施。因此,在根据上述专利文献1、2和3的技术中存在无法允许考虑功能安全的安全数据发送/接收被执行的风险。

本发明的其它问题和新颖特征将根据本说明书的陈述和附图变得显而易见。

根据实施例的半导体器件包括:硬件安全模块电路,其执行认证处理;以及错误检测电路,其用于至少对在硬件安全模块电路中处理的第一数据执行错误检测处理。与错误检测电路相关联的存储器区域被配置为,当至少对第一数据执行错误检测处理时仅能够由硬件安全模块电路访问。

注意的是,作为根据根据上述实施例的器件的替代表示的方法或系统、用于使计算机执行由该器件或该器件的部分执行的处理的程序、包括该器件的成像设备等也是本发明的有效实施例方式。

上述实施例允许考虑功能安全的安全数据发送/接收被执行。

附图说明

图1是示出根据第一实施例的半导体器件的硬件配置的视图;

图2是示出根据第一实施例的硬件安全模块电路的硬件配置的视图;

图3是示出根据第一实施例的具有访问控制电路的半导体器件的视图;

图4是示出根据第一实施例的具有访问控制电路的半导体器件的视图;

图5是示出在图3和图4中均示出的访问控制电路中设置的属性控制状态机的视图;

图6是通过图5中所示的属性控制状态机实施的状态转换图;

图7示出了(r,w,e)属性控制机制与存储器空间之间的耦合配置的示例;

图8是示出根据第一实施例的硬件安全模块电路、在错误检测电路中设置的访问控制电路以及在cpu中设置的访问控制电路当中的耦合配置的视图;

图9是示出当访问控制电路被设置在图4所示的多个组件中的每一个组件中时、数据读取单元和指令提取单元的配置的视图;

图10是示出根据第一实施例的数据发送/接收序列被执行的认证系统的视图;

图11是示出根据第一实施例的数据发送/接收序列的序列图;

图12是示出根据第一实施例的数据发送/接收序列的序列图;

图13是示出根据第一实施例的数据发送/接收序列的序列图;

图14是示出根据第一实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图15是示出根据第一实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图16是示出根据第一实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图17是示出根据第一实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图18是示出根据第一实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图19是示出根据第一实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图20示出了根据第二实施例的在认证系统中执行的数据发送/接收序列;

图21示出了根据第二实施例的在认证系统中执行的数据发送/接收序列;

图22示出了根据第二实施例的在认证系统中执行的数据发送/接收序列;

图23是示出根据第二实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图24是示出根据第二实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图25是示出根据第二实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图26是示出根据第二实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图27是示出根据第二实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图28是示出根据第二实施例的变型的在认证系统中执行的数据发送/接收序列的序列图;

图29是示出根据第三实施例的在认证系统中执行的数据发送/接收序列的序列图;

图30是示出根据第三实施例的在认证系统中执行的数据发送/接收序列的序列图;

图31是示出根据第三实施例的在认证系统中执行的数据发送/接收序列的序列图;

图32是示出根据第三实施例的在认证系统中执行的数据发送/接收序列的序列图;

图33是示出根据第三实施例的在认证系统中执行的数据发送/接收序列的序列图;以及

图34是示出根据第三实施例的在认证系统中执行的数据发送/接收序列的序列图。

具体实施方式

参照附图,下面将描述本发明的实施例。为了提高描述的清楚性,适当地省略并简化下面的描述和附图。注意的是,在各个附图中,相同的部件通过相同的附图标记表示,并且根据需要省略重复的描述。

在下面的每一个实施例中,如果需要,为了方便起见,将通过划分多个部分或实施例来描述各实施例。然而,除非另外特别明确地描述,否则它们绝不是彼此无关的,并且部分或实施例中的一个部分或实施例是其它部分或实施例的部分或整体的变型、应用示例、详细描述、补充描述等。并且,在下面的实施例中,当元件的数量等(包括数量、数值、量、范围等)被提及时,除非另外特别明确地描述、或者除非它们原则上被明显限制为特定数量,否则它们不限于特定的数量。元件的数量等可以不少于或不多于特定数量。

并且,在下面的实施例中,其组件(也包括操作、步骤等)不一定是必不可少的,除非另外特别明确地描述、或者除非组件原则上被认为明显必不可少。同样,在组件等的形状、位置关系等在下面的实施例被提及时,该形状、位置关系等被假定包括那些大体上近似或类似的形状、位置关系等,除非另外特别明确地描述、或者除非原则上可以认为它们明显不是这样。关于前述数字等(包括数量、数值、量、范围等)应该被相同地应用。

并且,附图中示出的作为执行各个处理的功能块的各个元件可以使用cpu(中央处理单元)、存储器或作为硬件的其它电路配置,同时这些元件可以由在存储器等中加载的程序实施。因此,本领域技术人员将理解的是,功能块可以仅通过硬件、仅通过软件、或通过硬件和软件的组合的各种方式实施,并且不限于硬件、软件和其组合中的任意一个。

上文提及的程序可以使用各种类型的非暂时性计算机可读介质存储并且提供给计算机。非暂时性计算机可读介质包括各种类型的有形存储介质。非暂时性计算机可读介质的示例包括磁记录介质(例如软盘、磁带或硬盘驱动)、光磁记录介质(例如光磁盘)、cd-rom(只读存储器)、cd-r、cd-r/w、以及半导体存储器(例如掩模rom、prom(可编程rom)、eprom(可擦除prom)、闪存rom、或ram(随机存取存储器))。程序还可以使用各种类型的暂时性计算机可读介质而被提供给计算机。暂时性计算机可读介质的示例包括电信号、光信号和电磁波。暂时性计算机可读介质可以将程序经由诸如电线或光纤的有线通信路径或无线通信路径提供给计算机。

(实施例的概述)

在描述本发明的实施例之前,将给出实施例的概述的描述。

为了满足功能安全要求,重要的是保护发送/接收的数据。简言之,期望保护发送/接收的数据免于由于错误而损坏。因此,需要数据发送器适当地将crc(循环冗余检查)或ecc(纠错码)添加(将错误检测数据添加)到数据,并且需要数据接收器适当地检查crc或ecc。

在下文描述的实施例中,通过从非hsm(硬件安全模块)的组件隐藏由数据接收器执行的crc或ecc处理,可以实施数据发送/接收序列,对于该数据发送/接收序列,不仅可以确保篡改抵抗,还可以确保机密性。并且,在本发明的实施例中,致力于hsm的crc或ecc处理机制被设置为软件或硬件。注意的是,当没有设置致力于hsm的这种处理机制时,可以配置满足功能安全要求并具有篡改抵抗的数据发送/接收序列,但是可能无法实现机密性。为了防止这样,本发明的实施例公开了一种包括致力于hsm作为软件或硬件的crc或ecc处理机制的配置,以及一种使用配置满足功能安全要求并具有篡改抵抗和机密性的数据发送/接收序列。

本文假设待被发送/接收的目标数据包括程序。下文示出的数据发送/接收序列包括满足功能安全要求的安全数据和程序存储。数据发送/接收序列特别地包括到用于程序保护的存储器区域的数据存储,在该存储器区域程序可执行但是数据不可读取。

在本发明的实施例中,在数据存储中,即使在存储位置处的(r,w,e)属性(访问属性)的规范是使得数据不可写入或不可读取时,也可以执行满足功能安全要求的安全数据写入。下面是本文使用的r、w和e表示的含义:

r指定数据是否可读取。当r为“1”时,数据可读取,而当r为“0”时,数据不可读取。

w指定数据是否可写入。当w为“1”时,数据可写入,而当w为“0”时,数据不可写入。

e指定数据是否可执行。当e为“1”时,数据可执行,而当e为“0”时,数据不可执行。

简言之,访问属性示出存储器区域中存储的数据是否可读取、数据是否对存储器区域可写入以及存储器区域中存储的数据(程序)是否可执行。

(r,w,e)属性可以使用由例如unixs(注册商标)、linux(注册商标)等提供的软件中的属性设置/改变方式、或者在下文描述的本发明的实施例中的(r,w,e)属性控制机制而被指定。特别地,当(r,w,e)属性可以使用软件设置/改变时,可期望使用涉及诸如挑战-应答认证的适当加密认证的(r,w,e)属性改变机制。

本发明的实施例包括基于使用访问控制机制的语句。访问控制机制可以通过例如由selinux提供的强制访问控制机制来实施。备选地,访问控制机制还可以使用基于设置用于诸如由atmega128提供的存储器区域的每个存储器区域的锁定位的方法来实施。备选地,访问控制机制还可以使用本发明的实施例中公开的(r,w,e)属性控制机制和现有的访问控制机制结合来实施。特别地,当访问控制可以使用软件设置/改变时,可期望使用涉及诸如挑战-应答认证的适当加密认证的访问控制机制。

另外,在本发明的实施例中,(r,w,e)属性和访问控制可以使用hsm中嵌入的cpu或控制状态机、或者使用放置在hsm外部的非安全部分中的cpu来设置。不论发生何种情况,对于执行设置的软件来说,假定认可的是软件在执行之前尚不能使用安全启动等被篡改。在hsm中执行的情况下,假定hsm中嵌入的cpu或控制状态机执行设置。

(第一实施例)

图1是示出根据第一实施例的半导体器件1的硬件配置的视图。半导体器件1为例如安装在车辆等中的mcu(作为微控制器的微控制单元)。半导体器件1包括cpu2、程序存储器3、错误检测电路4、输入/输出接口(输入/输出i/f)5、工作存储器6和硬件安全模块电路10(hsm)。cpu2、程序存储器3、错误检测电路4、输入/输出接口5、工作存储器6和硬件安全模块电路10经由总线9耦合彼此耦合。注意的是半导体器件1(特别是存储器区域)除硬件安全模块电路10的组件还可以称为非安全部分。

cpu2执行算术处理和执行程序的处理。程序存储器3存储由cpu2执行的程序。当诸如执行程序的处理执行时使用工作存储器6。输入/输出接口5执行用于从外部接收输入或将输出产生到外部的处理。注意的是,输入/输出接口5配备有用于处理由用于数据包的协议定义的crc/ecc的功能。

错误检测电路4对半导体器件1中处理的数据执行错误检测处理(crc/ecc处理)。具体地,错误检测电路4执行crc/ecc的生成,并将其添加到半导体器件1的内部总线9中的通讯数据(错误检测数据的生成和添加)以及crc/ecc的处理(检查)。错误检测电路4还执行crc/ecc的生成,并将其添加到发送到输入/输出接口5/从输入/输出接口5接收的数据以及crc/ecc的处理(检查)。

半导体器件1还可以具有专用错误检测电路8,其专用于硬件安全模块电路10。专用错误检测电路8仅耦合到硬件安全模块电路10。因此,仅硬件安全模块电路10被允许访问专用错误检测电路8。换言之,专用错误检测电路8是专用于硬件安全模块电路10的硬件电路。专用错误检测电路8与错误检测电路4具有大体上相同的功能。

因此,专用错误检测电路8对由硬件安全模块电路10处理的数据(第一数据)执行错误检测处理。具体地,专用错误检测电路8被用于在硬件安全模块电路10中执行的安全相关处理中执行的crc/ecc处理(错误检测处理)。与专用错误检测电路8相关联的存储器区域被配置为当由硬件安全模块电路10执行crc/ecc处理时仅能够由硬件安全模块10访问。

当未设置专用错误检测电路8时,错误检测电路4可以用于在硬件安全模块电路10中执行的安全相关处理中执行的crc/ecc处理(错误检测处理)。换言之,根据第一实施例的错误检测电路4至少对由硬件安全模块电路10处理的数据(第一数据)执行错误检测处理。在这种情况下,cpu2被配置为使得在由硬件安全模块10执行crc/ecc处理时,在适当的访问控制下禁止访问与错误检测电路4相关联的数据。可期望的是,由硬件安全模块电路10以稍后描述的发送/接收序列来设置访问控制。

图2是示出根据第一实施例的硬件安全模块电路10的硬件配置的视图。硬件安全模块电路10包括cpu11、输入/输出接口12(输入/输出i/f)、加密处理单元13、工作存储器14、代码非易失性存储器15和数据非易失性存储器16。

cpu11执行算术处理。具体地,cpu11执行稍后描述的数据发送/接收序列中执行的处理(诸如访问控制)。注意的是,硬件安全模块电路10不一定需要具有cpu11。在这种情况下,硬件安全模块电路10还可以具有任意的控制状态机。

输入/输出接口12执行用于从外部接收输入或将输出产生到外部的处理。加密处理单元13执行诸如加密、解密或认证处理的加密处理。加密处理单元13还可以执行用于执行签名认证的处理。当在硬件安全模块电路10中执行处理时,使用工作存储器14。代码非易失性存储器15存储在硬件安全模块电路10中执行的代码。数据非易失性存储器16存储用于在硬件安全模块电路10中执行的处理的数据。

注意的是,代码非易失性存储器15和数据非易失性存储器16中的每一个还可以被配置为使得其局部区域从硬件安全模块电路10的外部可访问,而不要求任何认证。简言之,代码非易失性存储器15和数据非易失性存储器16中的每一个还可以具有未被保护(其不安全)的位置区域。换言之,代码非易失性存储器15和数据非易失性存储器16中的每一个还可以具有在硬件安全模块电路10的控制下设置为安全区域的位置区域。

这里将给出根据第一实施例的操作的概述的描述。

当半导体器件1具有专用错误检测电路8时,专用错误检测电路8使用添加到在硬件安全模块电路10中解密的数据的ecc/crc来执行ecc/crc检查处理。专用错误检测电路8还为在硬件安全模块电路10中待加密的目标数据生成(发出)ecc/crc值,并且将生成的ecc/crc值添加到待加密的目标数据以实现加密。

另一方面,当半导体器件1不具有专用错误检测电路8时,耦合到总线9的错误检测电路4执行与上面描述的由专用错误检测电路8所执行的相同的处理。在硬件安全模块电路10中的解密数据处作为目标的ecc/crc检查可以通过控制错误检测电路4而进行,以使得错误检测电路4仅通过硬件安全模块电路10可访问。同样,加密处理可以通过错误检测电路4而进行,以使得错误检测电路4仅通过硬件安全模块电路10可访问。注意的是,稍后将描述访问控制的细节。

为了满足功能安全要求,重要的是保护发送/接收的数据。因此,需要数据发送器适当地将crc或ecc添加到数据,并且数据接收器适当地检查该crc或ecc。此时,禁止除硬件安全模块电路10之外的组件访问执行这种处理的错误检测电路,以使得安全(机密性)提高。这允许根据本第一实施例的半导体器件1执行考虑功能安全的安全数据发送/接收。

在包括专用错误检测电路8的半导体器件1中,硬件配置被扩展为允许上述处理被实施。因此,当crc/ecc被添加或crc/ecc检查(错误检测处理)被执行时,禁止通过除硬件安全模块电路10之外的组件对专用错误检测电路8的访问。这允许根据本第一实施例的半导体器件1执行考虑功能安全的安全数据发送/接收。由于提供了专用错误检测电路8,不需要执行稍后将描述的这种访问控制。因此,处理的内容比当执行访问控制时更简单。

当半导体器件1不包括专用错误检测电路8,即当硬件配置未被扩展时,错误检测电路4可以在适当的访问控制下仅能够通过硬件安全模块电路10访问。因此,当crc/ecc被添加或crc/ecc检查(错误检测处理)被执行时,禁止通过除硬件安全模块电路10之外的组件对错误检测电路8的访问。这允许根据本第一实施例的半导体器件1执行考虑功能安全的安全数据发送/接收。由于执行了访问控制,不需要提供专用错误检测电路8。因此,半导体器件1的硬件配置比提供专用错误检测电路8时更简单。简言之,可以在禁止安全的退化并且满足功能安全要求的同时,仍然使用错误检测电路4也能够执行与除硬件安全模块电路10之外的组件相关联的处理的配置。

(访问控制)

接下来,将给出访问控制的描述。

图3和图4分别是示出根据第一实施例的具有访问控制电路的半导体器件1的视图。为需要保护的组件中的每一个组件提供访问控制电路20。在cpu2(总线主控器)中提供访问控制电路40。图3中示出的半导体器件1被配置为使得仅为错误检测电路4提供访问控制电路20。换言之,在图3所示的示例中,仅错误检测电路4是访问控制(强制访问控制)的目标。

另一方面,图4所示的半导体器件1被配置为使得不仅为错误检测电路4、而且还为多个组件提供访问控制电路20(访问控制电路20a-20d)。换言之,在图4所示的示例中,包括错误检测电路4的多个组件是访问控制(强制访问控制)的目标。注意的是,在图4中,为全部组件单独地提供访问控制电路20,除了不需要为不需要保护的组件提供访问控制电路20。在图4所示的示例中,还可以根据放置的访问控制电路20的数量来配置访问控制电路40。当存在多个cpu2(总线主控器)时,访问控制电路40还可以以一对一形式单独地为cpu2(总线主控器)提供。

图5是示出在图3和图4中示出的访问控制电路20中的每个访问控制电路中设置的属性控制状态机22的视图。图5所示的属性控制状态机22是上述(r,w,e)属性控制机制的示例。属性控制状态机22旨在对寄存器设置(r,w,e)值。在从cpu2等接收3位输入信号(r_in,w_in,e_in)时,属性控制状态机22引起状态转换,并且输出表示后转换状态的3位信号(r_out,w_out,e_out)。注意的是,信号(r_in,w_in,e_in)的值可以通过从cpu2等设置寄存器而被更新。

属性控制状态机22具有状态保持寄存器,作为每当发生状态转换时在非易失性存储器中存储更新的状态的硬件控制机制。当电源关闭、重置等发生时,状态保持寄存器的值被初始化至(0,0,0)。另一方面,在电源激活时,状态保持寄存器感测生成的激活信号、读取非易失性存储器中存储的值、并且设置其中的读取值。注意的是,为了保护从中待读取存储的状态的非易失性存储器区域免受访问,该机制和非易失性存储器区域还可以仅通过硬件安全模块电路10可访问。

图6是通过图5所示的属性控制状态机22实施的状态转换图。下面是状态s0至s07中的各个状态(r,w,e)。注意的是,(r,w,e)中的“1”表示数据可读取、可写入或可执行的状态,而(r,w,e)中的“0”表示数据不可读取、不可写入或不可执行的状态。

s0:(1,1,1):数据可读取、可写入并且可执行

s1:(1,1,0):数据可读取并且可写入

s2:(1,0,1):数据可读取并且可执行

s3:(1,0,0):数据可读取

s4:(0,1,0):数据可写入

s5:(0,0,1):数据可执行

s6:(0,0,0):数据不可读取、不可写入并且不可执行

s7:(0,1,1):数据可写入并且可执行

状态s0是初始状态。在状态s7中,当攻击者等写入程序并且执行该程序时,系统可能由此受到显著影响。因此,不存在到状态s7的转换。也不存在到状态s6的转换。注意的是,在状态s5中,可以仅读取(提取)程序(指令)以执行该程序(指令)。

如图6所示,可以从s0转换到s0、s1、s2、s3、s4和s5中的每一个状态,从s1转换到s1、s2、s3和s5中的每一个状态,从s2转换到s1、s2、s4和s5中的每一个状态,从s3转换到s3、s4和s5中的每一个状态,从s4转换到s3、s4和s5中的每一个状态。然而,从s5仅可以转换到s5。简言之,除了在s1与s2之间允许的转换和s3与s4之间允许的转换之外,仅允许更严格的(r,w,e)属性的改变(即,具有更少的可能操作)。注意的是,在图6中,假定允许了在s1与s2之间的转换,但是不是必定需要允许在s1与s2之间的转换。

因此,在根据本第一实施例的属性控制状态机22中,一旦由于电源关闭或重置后的状态重置而进行到更严格的(r,w,e)属性的转换,只可以转换到比当前属性更严格的属性。换言之,在根据本第一实施例的属性控制状态机22中,可以从第一状态转换到第二状态,其中第二状态中可能的操作比第一状态中的更少,从而产生稳健的硬件机制。另外,通过将各自具有属性控制状态机22的访问控制电路20设置为与存储器区域相同的数量,可以控制需要保护的存储器区域中的每个存储器区域的(r,w,e)属性。例如,通过控制其中诸如bootloader的关键软件被设置为引起以下连续转换的非易失性存储器区域,可以禁止软件的抄袭和使用该软件的攻击:从软件被写入的状态(s2或s4)到通过读取软件识别写入软件的状态(s1或s3)、并且到使用根据本第一实施例的访问控制电路20仅允许执行软件的状态(s5)。

图7示出了(r、w、e)属性控制机制与存储器空间之间的耦合配置的示例。图7所示的耦合配置使用下面所示的信号以及图5所示的属性控制状态机22中使用的信号来配置。

d_in是到存储器(要保护的目标存储器区域)的输入数据信号。d_out是来自存储器的输出数据信号。dec_addr[i]是在存储器中生成的地址解码信号。当dec_addr[i]为“1”时,地址解码信号显示输入地址指示对应的存储器元件[i]。当dec_addr[i]为“0”时,地址解码信号显示输入地址不指示对应的存储器元件[i]。

并且,满足r_dec:=dec_addr[i]∧r_out。并且,满足w_dec:=de_addr[i]∧w_out。并且,r_out'是与由地址的更高位序列等识别的多个目标存储器区域中的一个目标存储器区域相关联的r_out的信号,并且其当(r,w,e)属性未针对该存储器区域被指定时为“1”。并且,e_out'是与由地址的更高位序列等识别的多个目标存储器区域中的一个目标存储器区域相关联的e_out的信号,并且当(r,w,e)属性未针对该存储器区域被指定时为“1”。

由于图7所示的配置,仅当w_out为“1”时,选择器23将数据写入由存储器单元/寄存器24中的地址指定的目标存储器区域中。此外,仅当r_out和e_out中的至少一个为“1”时,选择器25从存储器单元/寄存器24读取数据。

读取的数据经由总线9传送到例如cpu2等。此时,cpu2中设置的数据读取单元41可以仅在r_out为“1”时(或者当(r,w,e)属性未针对存储器区域被指定时)使用选择器42读取数据。并且,指令提取单元43可以仅在e_out为“1”时(或者当(r,w,e)属性未针对存储器区域被指定时)使用选择器44提取指令。此时,cpu2可以执行作为指令的读取数据。当还使用诸如dmac(直接内存访问控制器)的总线主控器时,在此执行相同的数据读取控制。

因此,通过组合图6和图7中所示的配置,允许仅根据(r,w,e)属性的执行。特别地,通过组合图6和图7所示的配置,可以控制需要保护的存储器区域中的每一个存储器区域的(r,w,e)属性,并且允许仅具有适当访问权限的硬件或软件对需要保护的存储器区域执行读取、执行和写入操作。如上所述,在设置了更严格的访问限制时,通过使用到(r,w,e)属性控制的输入信号或改变输入寄存器的设置,设置的访问限制无法返回到更少严格的访问限制。甚至在执行电源关闭或重置时,也可以保持该访问限制。即使os(操作系统)被破解、权限被非法提升、并且恶意软件被执行的情况下,恶意软件也只能对符合由(r,w,e)属性控制确定的要保护的目标区域的访问控制进行访问。因此,在适当的访问控制下进行存储器保护变得可能。因此,通过应用图6和图7至图3所示的配置,对错误检测电路4的访问可以仅通过硬件安全模块电路10来实施,这将在下面描述。

图8是示出根据第一实施例的硬件安全模块电路10、错误检测电路4中设置的访问控制电路20以及cpu2中设置的访问控制电路40当中的耦合配置的视图。使用下面的信号以及图5所示的属性控制状态机22中使用的信号来配置图8所示的耦合配置。

d_in是到存储器的输入数据信号,其被输入到选择器23。d_out是来自存储器的输出数据信号,其从选择器25输出。r_hsm是在硬件安全模块电路10中发出(生成)的强制读取信号。当r_hsm为“1”时,r_hsm指示数据可读取,而当r_hsm为“0”时,r_hsm指示数据不可读取。w_hsm是在硬件安全模块电路10中发出(生成)的强制写入信号。当w_hsm为“1”时,w_hsm指示数据可写入,而当w_hsm为“0”时,w_hsm指示数据不可写入。

并且,满足r_e=r_out∨r_hsm,当r_e为“1”时,r_e指示数据可读取,而当r_e为“0”时,r_e指示数据不可读取。满足w_e=w_out∨w_hsm,并且当w_e为“1”时,w_e指示数据可写入,而当w_e为“0”时,w_e指示数据不可写入。

dec_addr[i]是在存储器中生成的地址解码信号。当dec_addr[i]为“1”时,dec_addr[i]表示输入地址指示对应的存储器元件[i],而当dec_addr[i]为“0”时,dec_addr[i]表示输入地址不指示对应的存储器元件[i]。

另外,满足r_e2:=dec_addr[i]∧r_e。并且,满足w_e2:=dec_addr[i]∧w_e。并且,满足e_e2:=dec_addr[i]∧e_out。因为可能存在多个目标存储器区域,dec_upperaddr[j]是用于通过地址的更高位序列等识别相应区域的地址解码信号。并且,满足r_e':=dec_upperaddr[j]∧r_e。r_e'是与由地址的更高位序列等识别的多个目标存储器区域中的一个目标存储器区域相关联的r_e的信号、并且当(r,w,e)属性未针对存储器区域被指定时为“1”。并且,满足e_out':=dec_upperaddr[j]∧e_out。e_out'是与由地址的更高位序列等识别的多个目标存储器区域中的一个目标存储器区域相关联的e_out的信号,并且当(r,w,e)属性未针对存储器区域指定时为“1”。

在图8所示的配置中,只有当w_out和w_hsm中的至少一个为“1”时,选择器23才将数据写入由存储器单元/寄存器24中的地址指定的目标存储器区域中。特别地,甚至在(r,w,e)属性中针对r_out指定的值为“0”时,硬件安全模块电路10也可以强制地使存储器区域进入数据可写入状态。只有当r_out、e_out和r_hsm中的至少任一个为“1”时,选择器25才从存储器单元/寄存器24读取数据。特别地,甚至在(r,w,e)属性中针对r_out和e_out指定的每个值为“0”时,硬件安全模块电路10也可以强制地使存储器区域进入数据可读取状态。

读取的数据经由总线9传送到例如cpu2等。此时,cpu2中设置的访问控制电路40的数据读取单元41仅在r_out和r_hsm中的至少一个为“1”时(或者当(r,w,e)属性未针对存储器区域被指定时)使用选择器42读取数据。换言之,甚至在(r,w,e)属性中针对r_out指定的值是“0”时,硬件安全模块电路10也可以强制地使cpu2进入数据可读取状态。另一方面,访问控制电路40的指令提取单元43允许选择器44在e_out为“1”时(或者当(r,w,e)属性未针对区域被指定时)提取指令。简言之,cpu2可以执行作为指令的读取数据。

因此,通过组合图6和图8所示的配置,不仅获得图7所示的配置实现的效果,而且硬件安全模块电路10中生成的信号r_hsm和w_hsm允许从目标存储器区域读取数据并将数据写入目标存储器区域、不管(r,w,e)属性如何。特别地,图8所示的配置允许仅通过硬件安全模块电路10而对存储器区域执行读取、执行和写入操作,而不管对在(r,w,e)属性控制下确定的要保护的目标区域的访问控制如何。这允许写入到数据不可写入区域等的数据或程序被执行。当仅允许执行程序以确保程序的机密性时,程序不能被更新。然而,图8所示的配置允许程序仅通过硬件安全模块电路10被更新。在此可期望这种数据通过硬件安全模块电路10写入要保护的目标存储器区域中,而不管稍后描述的仅在数据发送/接收序列中执行的访问控制。通过应用图6和图8至图3所示的配置,仅允许硬件安全模块电路10访问错误检测电路4。

图9是示出当访问控制电路20被设置在图4所示的多个组件中的每一个组件中时的数据读取单元41和指令提取单元43的配置的视图。图9示出了如下配置:其中从两个访问控制电路20a和20b((r,w,e)属性控制机制#1)分别接收r_ea和e_outa以及r_eb和e_outb。dec_upperaddr[j]是用于识别与访问控制电路20a相关联的区域的地址解码信号,而dec_upperaddr[i]是用于识别与访问控制电路20b相关联的区域的地址解码信号。

如图9所示,数据读取单元41具有用于每对访问控制电路20a和20b的选择器42a和42b。选择器42a仅在访问控制电路20a中r_out和r_hsm中的至少一个为“1”(r_ea=1)时读取数据。另一方面,选择器42b仅在访问控制电路20b中r_out和r_hsm中的至少一个为“1”(r_eb=1)时读取数据。选择器51根据地址解码信号(dec_upperaddr[j]或dec_upperaddr[i])输出从选择器42a或选择器42b读取的数据。

指令提取单元43具有用于每对访问控制电路20a和20b的选择器44a和44b。仅当访问控制电路20a中的e_outa为“1”时,选择器44a提取指令。另一方面,仅当访问控制电路20b中e_outb为“1”时,选择器44b提取指令。选择器53根据地址解码信号(dec_upperaddr[j]或dec_upperaddr[i])输出从选择器44a或选择器44b读取的数据。

注意的是,图9示出了以下配置的示例:其中分别从两个访问控制电路20a和20b((r,w,e)属性控制机制#1)接收r_ea和e_outa以及r_eb和e_outb,但是访问控制电路20的数量是任意的。扩展到n(n是满足n>2的整数)个访问控制电路20可以通过以下而被实现:添加更高地址解码结果信号、添加控制从总线9读取数据的单元(选择器42和44)、以及将最终级选择器51和53替换为具有根据n个地址解码结果来输出信号的选择器。

(数据发送/接收序列)

接下来,将描述由根据第一实施例的半导体器件1执行的数据发送/接收序列。下文描述的数据发送/接收序列是根据考虑功能安全并具有篡改抵抗和机密性的数据发送/接收协议的操作,其中本文提及的“考虑功能安全”指示针对通信路径中的数据错误和由硬件故障导致的数据错误而采取措施。

图10是示出其中执行根据第一实施例的数据发送/接收序列的认证系统100的视图。认证系统100是例如应用于诸如汽车的车辆的车载网络系统。认证系统100具有服务器104、器件a102(第一器件)和器件b110(第二器件)。

器件a102和器件b110设置在车辆中。服务器104设置在车辆外部。器件a102是例如从车辆的外部(诸如服务器104)接收信号的网关(中央网关)。器件b110是例如控制车辆的各个组件(诸如制动器、电动机、发动机和转向器)的mcu。器件a102经由无线系统等可通信地耦合到服务器104。器件a102和器件b110有线或无线彼此可通信地耦合。器件b110对应于根据第一实施例的半导体器件1。简言之,器件a102是半导体器件1外部的器件。器件b110包括硬件安全模块电路10和除硬件安全模块电路10之外的非安全部分120(诸如cpu2、程序存储器3、错误检测电路4、输入/输出接口5和工作存储器6)。注意的是,器件a102还可以包括与器件b110的组件相同的组件。

图11至图13是示出根据第一实施例的数据发送/接收序列的序列图。假设,预先进行以下设置,作为器件a102和b110的公共对称密钥的初始设置。

器件a102接收到该器件的1^k输入,其中k是安全参数(k=128或256)。器件a102为器件b110中被分配有认证标识符idi∈{0,1}^k的每个器件选择对称密钥ski←{0,1}^k(即,ski的位长为k),并且将(ski,idi)发送到器件b110。器件b110将(ski,idi)存储在非易失性存储器中。器件b110将认证标识符idi的一组id发送到器件a102。这里假设,器件b110的总数量是n并且满足i∈[1,n]。例如,还可以通过在器件b110出厂之前进行这种初始设置,为每个器件b110设置特定密钥并且特定密钥被设置为存储在器件a102中。还假设,每个器件b110的非安全部分120被允许读取存储在器件b110中嵌入的硬件安全模块电路10中的idi,但是不允许在适当的访问控制下执行覆盖操作和擦除操作。

(1)器件a中的器件认证信息的构建

器件b110中的每个器件的非安全部分120从硬件安全模块电路10获取idi(步骤s101)。非安全部分120可以从硬件安全模块电路10读取idi,或者也可以从硬件安全模块电路10接收idi。在获取到idi时,非安全部分120选择会话信息rp∈{0,1}^k以用于会话管理(步骤s102),并将(1,rp,idi)发送到器件a102(步骤s103)。在(1,rp,idi)中,“1”显示会话信息rp中的第一处理。在接收到(1,rp,idi)时,器件a102执行以下处理(步骤s104),从而器件b110被认证。

1.验证是否满足rp,idi∈{0,1}^k和idi∈id。换言之,验证rp和idi的位长,并且验证idi是否已经被寄存。如果不满足rp,idi∈{0,1}^k和idi∈id,处理结束。如果满足rp,idi∈{0,1}^k和idi∈id,执行以下处理。

2.当前时间被选择为tss←timestamp。

3.随机数被选择为rh1←{0,1}^k。

4.对于发送的数据data,计算crc或ecc。假设例如计算了crc,则建立data_crc:=crc(data)。

5.计算c1:=ae.enc(ski,tss||idi||rh1||data||data_crc)。

然后,器件a102建立data1:=(tss,idi,c1)并将(1,rp,data1)发送到器件b110的非安全部分120(步骤s105)。运算符“||”表示位串联(bitconcatenation),而c1是经认证的加密数据。并且,ae.enc是经认证的密文,其也可以是aes-gcm或aes-ccm。

可选地,ae.enc也可以如下配置为例如密文和cmac值的组合。这在不能使用经认证的密文的情况下特别有效。

随机数被选择为rh0←{0,1}^m,其中满足m:=sizeof(data||data_crc)。

r1':=prf(ski,tss||idi||rh1||rh0||2)

c1':=enc(r1',tss||idi||rh1||data||data_crc)

r1:=prf(ski,tss||idi||rh1||c1'||1)

在这种情况下,data1中的c1满足c1:=(rh1,rh0,c1',r1)。在前文中,prf是用作cmac值的伪随机函数,enc是公共密钥块加密、其例如是aes-cbc,r1'是用于针对伪随机函数发出签名签名的公共密钥,r1是签名的加密的结果。

(2)器件b中的数据解密、数据存储和结果收集

器件b110中的每个器件的非安全部分120使用例如上述的访问控制电路20而将存储data1的存储器区域的(r,w,e)属性设置为(1,1,0)或(0,1,0)(步骤s106)。换言之,访问控制电路20将(r,w,e)属性设置为使得数据可写入并且程序不可执行。非安全部分120还将当前时间选择为tsp←timestamp。在接收到data1时,非安全部分120使用例如访问控制电路20而将非安全部分120的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s107)。简言之,访问控制电路20将(r,w,e)属性设置为使得数据仅可读取。

然后,非安全部分120将(rp,tsp,data1)发送到器件b110的硬件安全模块电路10(步骤s108)。此时,当发送完成时,非安全部分120使用例如访问控制电路20而将非安全部分120的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data1(步骤s109)。这里也可以使用嵌入在器件b110的硬件安全模块电路10中的cpu11、或使用非安全部分120的cpu2来改变(r,w,e)属性。在任一种情况下,假设已经认识到,设置软件在其执行之前使用安全启动等而尚未被篡改。

在接收到(rp,tsp,data1=(tss,idi,cl))时,假设m是data||data_crc的大小(即,假设rh2的位长为m),器件b110的硬件安全模块电路10建立rh2←{0,1}^m,并且执行以下处理(步骤s110)。因此,执行认证器件a102、验证接收的数据并解密数据的处理。

1.验证是否满足rp,tsp,tss,idi,cl∈{0,1}^k,即每个数据项的长度是否具有规定值。然后,检查idi是否与器件b110的标识符匹配。因此,执行简单的筛选。注意的是,当满足c1:=(rh1,rh0,c1',r1)时,还验证是否满足rh1,rh0,c1',r1∈{0,1}^k。

如果不满足rh1,rh0,c1',r1∈{0,1}^k,则建立result1:=000,rc←{0,1}^(k-3),rc:=rc||result1,并且不再执行稍后将描述的处理。这里使用的result1的值“000”显示已经进行未授权访问。如果满足rh1,rh0,c1',r1∈{0,1}^k,则执行以下操作。

2.执行tss||idi||rh1||data||data_crc=ae.dec(ski,c1),即执行根据认证加密的解密以验证认证是否成功。如果认证不成功,result1被设置为满足result1:=110,其显示认证的加密的结果失败。如果认证成功,则执行3.中及之后的处理。

注意的是,当满足c1:=(rh1,rh0,c1',r1)时,验证是否满足r1=prn(ski,tss||id||rh1||c1'||1)(即,执行签名检查)。当不满足r1=prn(ski,tss||id||rh1||c1'||1)时,result1被设置为满足result1:=110。当满足r1=prn(ski,tss||id||rh1||c1'||1)时,执行下面的操作。具体地,在r1':=prn(ski,tss||idi||rh1||rh0||2)之后执行tss||idi||rh1||data||data_crc:=dec(r1',c1')作为解码处理,执行3.中及之后的处理。注意的是,这里使用dec的是根据公共密钥块加密的解密,其是例如在aes-cbc模式中的解密。

3.例如,访问控制电路20设置访问控制,以使得仅允许硬件安全模块电路10访问错误检测电路4。使用错误检测电路4,data的crc作为使用crc(data)计算的解密的结果被获得,并验证计算的data的crc是否匹配data_crc。当不存在匹配时,result1被设置为满足result1:=100,其显示crc检查已经失败。当存在匹配时,执行以下操作。

4.作为解密结果获得的data的区域a1的(r,w,e)属性被设置为(1,1,0)或(0,1,0)(即,使得data可写入并且program不可执行),并且data被存储(写入)在区域a1中。因此,当写入已经通过crc检查(即,其中没有检测到错误)的数据时,设置仅允许硬件安全模块电路10写入数据。这禁止了攻击者等篡改数据。另外,区域a1的(r,w,e)属性被设置为(1,0,1)或(1,0,0)(即,使得data可读取并且不可写入),并且再次从区域a1读取data并将data设置为data'。使用crc(data')计算data'的crc,并且验证data'的crc是否匹配data_crc。由于当写入非易失性存储器时数据可能被破坏,因此为了提高容错,在写入数据之后读取数据并对数据进行crc检查。此时,由于设置仅允许硬件安全模块电路10读取数据,因此当读取数据以用于检测在写入数据期间已发生的错误时,可以防止攻击者等篡改数据。

当crc(data')与data_crc之间存在匹配时,将区域a1的(r,w,e)属性设置为(1,0,1)、(1,0,0)或(0,0,1)(即,使得data不可写入)。当区域a1是非易失性存储器部分时,在其上执行激活处理。然后,将result1设置为满足result1:=001,其显示所有处理都成功。当data是关键程序并且需要机密性时,将(r,w,e)属性设置为(0,0,1),使得程序仅可执行。当crc(data')与data_crc之间不存在匹配时,将区域a1的(r,w,e)属性设置为(1,1,0)或(0,1,0)(即,使得data可写入并且程序不可执行),并且擦除区域a1中写入的data。这可以禁止数据的不适当的执行或读取。然后,将result1设置为满足restul1:=010,其显示crc检查已经再次失败(数据写入已经再次失败)。

5.例如,访问控制电路20设置访问控制,以使得允许需要通过错误检测电路4进行处理的另一模块(诸如cpu2)访问错误检测电路4。然后,将随机数选择为rc←{0,1}^(k-3)以满足rc:=rc||result1∈{0,1}^k。

6.计算r2:=prf(ski,tss||tsp||idi||rh2||rc)。然后,器件b110的硬件安全模块电路10建立data2:=(tss,idi,rh2,rc,r2)并将(rp,tsp,data2)作为data2:=(tss,idi,rh2,rc,r2)发送到器件b110的非安全部分120(步骤s120)。

7.在接收到data2时,器件b110的非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s121),然后将(2,rp,tsp,data2)发送到器件a102(步骤s122),其中“2”表示会话信息rp中的第二处理。当发送完成时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data2(步骤s123)。

注意的是,也可以使用图3至图9所示的(r,w,e)属性控制机制(访问控制电路20)来更新(r,w,e)属性。注意的是,当不使用图3至图9所示的(r,w,e)属性控制机制时,也可以使用存储器保护单元(mpu)或存储器管理单元(mmu)进行设置。在使用图6中的机制的情况下,即使当属性r和w中的每一个属性为“0”时,也可以通过设置硬件安全模块电路10来读取和写入数据。因此,考虑这一点,需要对属性进行改变。当在图6中的s1与s2之间不进行转换时,可更新的范围受限,并且因此需要在有限范围内改变属性。

注意的是,当从器件a102到器件b110的非安全部分120的发送存在时间限制并且tsp可靠时,还可以通过在如上所述的处理1.中的大小检查期间将tss与tsp进行比较来识别该时间限制。当待认证的目标终端中的认证处理存在时间限制、并且器件b110的非安全部分120的时钟可靠时,还可以在从待认证的终端接收到认证结果时通过将tsp与时间(下文中被称为tsp2)进行比较来识别该时间限制。结果,当处理需要过长的时间时,可以检测到不适当的处理。

(3)器件a中的认证结果的验证

器件b110中的每个器件的非安全部分120将(2,rp,tsp,data2)发送到器件a102(s122)。在接收到(2,rp,tsp,data2=(tss,idi,rh2,rc,r2))时,器件a102执行以下处理(步骤s124)。因此,器件a102和器件b110在其间执行相互认证。

器件a102验证是否满足rp,tss,tsp,idi,rc,r2∈{0,1}^k和rh2∈{0,1}^m,即每个数据的长度是否具有规定值。当不满足rp,tss,tsp,idi,rc,r2∈{0,1}^k和rh2∈{0,1}^m时,器件a102将result2设置为满足result2:=000。当满足rp,tss,tsp,idi,rc,r2∈{0,1}^k和rh2∈{0,1}^m时,器件a102验证是否满足r2=prf(ski,tss||tsp||idi||rh2||rc)(即签名是否正确)。当签名正确时,器件a102将result2设置为满足result2:=lower3bitsofrc(即result1的值),否则将result2设置为满足result2:=000。

然后,器件a102将result2输出为认证结果并记录该认证结果。当result2显示“001”时,“001”表示数据data被成功地存储在器件b110的数据存储区域中而未被中间人篡改、没有泄漏、并且没有遭受丢失。当result2显示“010”时,“010”表示由于数据写入中的数据丢失而导致写入失败。当result2显示“100”时,“100”表示认证/解密成功,但在写入数据之前已经发生了数据丢失。当result2显示“110”时,“110”表示发生接收错误(可能已经发生消息篡改)。

注意的是,当从器件a102到器件b110的非安全部分120的认证加密数据的发送与器件a102从器件b110的非安全部分120获取认证的加密数据之间的时间段存在限制时,还可以通过在上述大小检查期间将tss与器件a102中的当前时间进行比较来识别该时间限制。当对从器件b110的非安全部分120到器件a102解密认证的加密数据的操作是否成功的发送存在限制、并且器件b110的非安全部分120的时钟可靠时,还可以通过将已经添加了tsp2的数据从器件b110的非安全部分120发送到器件a102、并且将tsp2与tss进行比较来识别该时间限制。

当待传送的目标数据从作为外部器件的器件a102传送到根据第一实施例的半导体器件1(器件b110)时,硬件安全模块电路10经由非安全部分120的存储器区域从器件a102接收认证数据(data1,data2),并将该认证数据发送到器件a102。这允许半导体器件1(器件b110)执行与器件a102的相互认证。非安全部分120的存储器区域被配置为使得在访问控制下不被攻击者等访问。因此,当传送待传送的目标数据时,可以禁止攻击者等作为目的地处的器件进行欺骗。

根据第一实施例的数据发送/接收序列是故障安全的,因为当rp被篡改时对应的会话不再存在,或者即使当存在对应的会话时,由于在器件b110中的认证失败,序列也无法在不同的会话中继续。当rh2被篡改时,根据第一实施例的数据发送/接收序列也是故障安全的,因为在器件a102中解密经认证密文的处理是否成功的验证是失败的。并且,在根据第一实施例的数据发送/接收序列中,即使当攻击者等篡改rc的值时,由于验证在器件a102中解密经认证密文的操作是否成功的验证方式,攻击者等不能伪装器件a102中的验证成功。并且,在根据第一实施例的数据发送/接收序列中,即使当tsp被篡改时,由于验证器件a102中的认证结果的方式,攻击者等不能伪装器件a102的验证成功。换言之,即使当rp,rh2和tsp中的任何一个被篡改时,在验证在器件b110的硬件安全模块电路10中形成的经认证密文的解密处理是否成功的验证中,攻击者等不能伪装数据写入成功或验证成功。因此,在第一实施例中,当rp,rh2和rc中的全部或任何一个被篡改时,可以感测到任何篡改的存在。注意的是,为了有效地检测由于篡改而导致的认证失败或验证失败,还可以将哈希值添加到tsp。

(第一实施例的变型)

接下来,将描述第一实施例的变型。图11至图13所示的序列图示出了用于通过一个会话将待传送的目标数据从器件a102传送到器件b110的序列。当待传送的目标数据的数据大小大于可传送大小并因此需要通过多个会话对数据进行分段和传送,并且当图11至图13所示的序列在不改变的情况下使用时,需要执行诸如对应于多个会话的多次认证的处理。

当可传送大小受限时,可以想象更高效的是,通过经认证的加密方法来加密待传送的整个目标数据、将整个加密的数据分段为多个数据分段、并将数据分段传送;而不是将待传送的目标数据分段为多个数据分段,在传送时分别加密数据分段中的每个数据分段,并在传送会话中的一个传送会话中传送加密的数据分段。例如,当考虑在非易失性存储器中存储数据时,更高效的是将足够量的数据存储在器件b110的硬件安全模块电路10中,然后根据经认证的加密方法来解密足够量的存储的数据,并且然后将解密的数据写入数据区域。经认证的加密方法也可以是在不同密钥用于加密和生成签名的前提下、根据块加密方法和对加密结果的签名来添加密文的方法。

图14至图19分别是示出在根据第一实施例的变型的认证系统100中执行的数据发送/接收序列的序列图。由于根据第一实施例的变型的认证系统100的配置与根据图10中所示的第一实施例的认证系统100的配置基本相同,因此省略其描述。

使用图14至图19的序列图,根据协议的操作允许考虑功能安全并具有篡改阻力和机密性的数据的同时加密、以及通过分段传送来发送/接收加密数据。这里提及的图14至图19的序列具有(1)涉及传送会话的数量的通知的相互认证处理(s201至s224),(2)用于完全加密数据的重复的分段传送处理(s231至s257),以及(3)涉及组合数据和数据存储的解密的相互认证处理(s262至s286)。假设,进行以下设置,作为器件a102和器件b110的公共对称密钥的初始设置的结果。

器件a102接收到该器件的1^k输入,其中k是安全参数。器件a102为器件b110中被分配有认证标识符idi∈{0,1}^k的器件选择对称密钥ski←{0,1}^k,并且将(ski,idi)发送到器件b110。器件b110将(ski,idi)存储在非易失性存储器中。器件b110还将认证标识符idi的一组id发送到器件a102。这里假设,器件b110的总数量是m并且满足i∈[1,m]。还可以通过在器件b110出厂之前进行这种初始设置,为每个器件b110设置特定密钥并且特定密钥被存储在器件a102中。还假设,每个器件b110的非安全部分120被允许读取存储在器件b110中嵌入的硬件安全模块电路10中的idi,但是不允许在适当的访问控制下执行覆盖操作和擦除操作。

(1)涉及传送会话数量的通知的相互认证处理

(1-1)器件a中的器件认证信息的构建

器件b110中的每个器件的非安全部分120从硬件安全模块电路10获取idi(步骤s201)。非安全部分120可以从硬件安全模块电路10读取idi、或者也可以从硬件安全模块电路10接收idi。在获取idi时,非安全部分120选择会话信息rp∈{0,1}^k以用于会话管理(步骤s202),并将(1,rp,idi)发送到器件a102(步骤s203)。在(1,rp,idi)中,“1”显示会话信息rp中的第一处理。在接收到(1,rp,idi)时,器件a102执行以下处理(步骤s204),从而器件b110被认证并且对传送会话的数量给出签名。

1.验证是否满足rp,idi∈{0,1}^k和idi∈id。如果不满足rp,idi∈{0,1}^k和idi∈id,处理结束。如果满足rp,idi∈{0,1}^k和idi∈id,执行以下处理。

2.当前时间被选择为tss1←timestamp。

3.两个随机数被选择为rh0←{0,1}^k和rh1←{0,1}^k。

4.作为会话密钥,计算r1':=prf(ski,tss1||idi||rh0||1),其中“ski”是用于签名验证的密钥。

5.对于待发送的整个数据data(待传送的目标数据),计算crc或ecc。假设例如计算了crc,则建立data_crc:=crc(data)。

6.计算c1:=ae.enc(r1',data||data_crc)。然后,考虑待传送的目标数据的大小,器件a102将c1分段成n个分段以构建{c1[j];j=1,...,n},其中,运算符“||”表示位串联。以与上述示例中相同的方式,ae.enc是经认证的密文,其也可以是aes-gcm或aes-ccm或例如密文和cmac值的组合。

7.为了做出待传送的数据分段的数量n的通知,计算r1:=prf(ski,tss1||idi||rh1||n||1),其中r1不是添加到待传送的目标数据的签名,而是添加到传送会话的数量n的签名。

8.建立data1:=(tss,idi,rh1,r1,n),并且将(1,rp,data1)传送到器件b110的非安全部分120(步骤s205)。

(1-2)器件b中的数据解密、数据存储和结果收集

器件b110中的每个器件的非安全部分120将存储data1的存储器区域的(r,w,e)属性设置为(1,1,0)或(0,1,0)(步骤s206)。换言之,(r,w,e)属性被设置为使得数据可写入并且程序不可执行。还可以使用例如如上所述的访问控制电路20来改变(r,w,e)属性。非安全部分120还将当前时间选择为tsp1←timestamp。在接收到data1时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s207)。简言之,访问控制电路20将(r,w,e)属性设置为使得数据仅可读取。

然后,非安全部分120将(rp,tsp1,data1)发送到器件b110的硬件安全模块电路10(步骤s208)。当发送完成时,非安全部分120将非安全部分120的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data1(步骤s209)。这里也可以使用嵌入在器件b110的硬件安全模块电路10中的cpu11、或使用非安全部分120的cpu2来改变(r,w,e)属性。在任一种情况下,假设已经认识到,设置软件在其执行之前使用安全启动等而尚未被篡改。

在接收到(rp,tsp1,data1=(tss1,idi,rh1,r1,n))时,器件b110的硬件安全模块电路10建立rh2←{0,1}^k,并且执行以下处理(步骤s210)。因此,器件a102和传送会话的数量n被认证。

1.验证是否满足rp,tsp1,tss1,idi,rh1,r1∈{0,1}^k,即每个数据项的长度是否具有规定值。然后,检查idi是否与器件b110的标识符匹配。注意,当不满足rp,tsp1,tss1,idi,rh1,r1∈{0,1}^k时,建立result1:=00,rc1←{0,1}^(k-2),rc1:=rc1||result1。然后,将不再执行稍后将描述的处理。这里使用的result1的值“00”显示已经进行未授权访问。如果满足rp,tsp1,tss1,idi,rh1,r1∈{0,1}^k,则执行以下操作。

2.验证是否满足r1=prf(ski,tss1||idi||rh1||n||1)。当满足r1=prf(ski,tss1||idi||rh1||n||1)时,result1被设置为满足result1:=01,其显示器件a102和传送会话的数量n的认证成功。当不满足r1=prf(ski,tss1||idi||rh1||n||1)时,result1被设置为满足result1:=10,其显示器件a102和传送会话的数量n的认证已经失败。注意的是,由于由分段产生的数据分段的数量n被发送到硬件安全模块电路10,因此允许硬件安全模块电路10识别从器件a102发送数据多少次(即,由分段产生多少数据分段)。

3.随机数被选择为rc1←{0,1}^k-2,并且建立rc1:=rc1||result1。

4.计算r2:=prf(ski,tss1||tsp1||idi||rh2||rc1||n),其中r2是添加到传送会话的数量n的签名。然后,器件b110建立data2:=(tss1,idi,rh2,rc1,n,r2),并将(rp,tsp1,data2)发送到器件b110的非安全部分120(步骤s220)。

5.在接收到data2时,器件b110的非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s221),然后将(2,rp,tsp1,data2)发送到器件a102(步骤s222),其中“2”表示会话信息rp中的第二处理。当发送完成时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data2。非安全部分120进一步将data3所在的存储器区域的(r,w,e)属性设置为(0,1,0),以准备从器件a102接收data3(步骤s223)。

注意的是,也可以使用图3至图9所示的(r,w,e)属性控制机制(访问控制电路20)来更新(r,w,e)属性。注意的是,当不使用图3至图9所示的(r,w,e)属性控制机制时,也可以使用存储器保护单元(mpu)或存储器管理单元(mmu)进行设置。在使用图6的机制的情况下,即使当属性r和w中的每一个属性为“0”时,也可以通过设置硬件安全模块电路10来读取和写入数据。因此,考虑这一点,需要对属性进行改变。当在图6中不进行s1到s2之间的转换时,可更新的范围受限,并且因此需要在有限的范围内改变属性。在稍后描述的第二实施例的变型中也是如此。

注意的是,当从器件a102到器件b110的非安全部分120的发送存在时间限制、并且tsp可靠时,还可以通过在如上所述的处理1.中的大小检查期间将tss1与tsp1进行比较来识别该时间限制。当待认证的目标终端中的认证处理存在时间限制、并且器件b110的非安全部分120的时钟可靠时,还可以在从待认证的终端接收到认证结果时通过将tsp1与时间(下文中被称为tsp')进行比较来识别该时间限制。结果,当处理需要过长的时间时,可以检测到不适当的处理。这甚至在稍后描述的第二实施例的变型中也是如此。

(1-3)器件a中的认证结果的验证

器件b110中的每个器件的非安全部分120将(2,rp,tsp1,data2)发送到器件a102(s222)。在接收到2,rp,tsp1,data2=(tss1,idi,rh2,rc1,n,r2)时,器件a102执行以下处理(步骤s224)。因此,在待传送的目标数据被传送之前,器件a102和器件b110在其间执行相互认证。

器件a102验证是否满足rp,tss1,tsp1,idi,rh2,rc1,r2∈{0,1}^k和n∈{0,1}^1,即每个数据项的长度是否具有规定值。当不满足rp,tss1,tsp1,idi,rh2,rc1,r2∈{0,1}^k和n∈{0,1}^1时,器件a102将result2设置为满足result2:=11。当满足rp,tss1,tsp1,idi,rh2,rc1,r2∈{0,1}^k和n∈{0,1}^1时,器件a102验证是否满足r2=prf(ski,tss1||tsp1||idi||rh2||rc1||n)(即签名是否正确)。当签名正确时,器件a102将result2设置为满足result2:=lower2bitsofrc1,否则将result2设置为满足result2:=11,其显示失败的相互认证。

然后,器件a102将result2输出为认证结果并记录该认证结果。当result2显示“01”时,“01”表示数据分段的数量n已经从器件a102记录到器件b110而未被篡改,并且器件a102与器件b110之间的相互认证成功。当result2显示“10”时,“10”表示发生接收错误(消息可能已经被篡改)。当满足result2=01时,器件a102设置表示传送会话数量的索引变量j以满足j=1(初始值)。当不满足result2=01时,处理结束。

注意的是,当从器件a102到器件b110的非安全部分120的认证数据的发送与器件a102从器件b110的非安全部分120获取认证数据之间的时间段存在限制时,还可以通过在上述大小检查期间、将tss1与器件a102中的当前时间进行比较来识别该时间限制。当对从器件b110的非安全部分120到器件a102的认证数据的验证是否成功的发送存在限制、并且器件b110的非安全部分120的时钟可靠时,还可以通过将已经添加了tsp'的数据从器件b110的非安全部分120发送到器件a102、并且将tsp'与tss1进行比较来识别该时间限制。在稍后描述的第二实施例的变型中也是如此。

当待传送的目标数据从作为外部器件的器件a102传送到根据第一实施例的变型的半导体器件1(器件b110)时,硬件安全模块电路10经由非安全部分120的存储器区域而从器件a102接收到认证数据(data1,data2),并将认证数据发送到器件a102。这允许半导体器件1(器件b110)执行与器件a102的相互认证。因此,当传送待传送的目标数据时,可以防止攻击者等作为目的地处的器件进行欺骗。

根据第一实施例的变型的数据发送/接收序列是故障安全的,因为当rp被篡改时对应的会话不再存在,或者即使当存在对应的会话时,在不同会话中的器件b110中的认证被执行并且失败。当rh2被篡改时,根据第一实施例的变型的数据发送/接收序列也是故障安全的,因为在器件a102中解密经认证的密文的处理是否成功的验证失败。并且,在根据第一实施例的变型的数据发送/接收序列中,即使当攻击者等篡改rc1的值时,由于使用器件a102中的prf的验证方式,因此攻击者等不能伪装器件a102中的验证是成功的。并且,在根据第一实施例的变型的数据发送/接收序列中,即使当tsp1被篡改时,由于验证器件a102中的认证结果的方式,因此攻击者等不能伪装器件a102的验证是成功的。换言之,即使当rp、rh2和tsp1中的任何一个被篡改时,攻击者等不能伪装在器件b110的硬件安全模块电路10中形成的data2已经成功进行了验证。因此,当rp、rh2和rc1中的全部或任何一个被篡改时,可以感测到任何篡改的存在。注意的是,为了高效地检测由于篡改而导致的认证失败或验证失败,还可以向tsp1添加哈希值。

(2)用于完全加密数据的重复分段传送处理

下面重复执行处理(2-1)至(2-3),直到完成从器件a102到器件b110的数据分段{c1[j];j=1,...,n}的传送。这里,在分段数据传送处理中不执行器件a102与器件b110之间的相互认证。

(2-1)器件a中的传送数据的构建

假设满足j=1,器件a102执行以下处理。

1.器件a102生成data3:=(tss1,idi,n,j,c1[j])(步骤s231)并且将(j+2,rp,data3)发送到器件b110的非安全部分120(步骤s232)。

(2-2)器件b中的数据解密、数据存储和结果收集

器件b110中的每个器件的非安全部分120将当前时间选择为tspj←timestamp。在接收到data3时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s233)。然后,非安全部分120将(rp,tspj,data3)发送到器件b110的硬件安全模块电路10(步骤s234)。

当完成发送时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data3。非安全部分120还将data4所在的存储器区域的(r,w,e)属性设置为(0,1,0),以准备从器件b110接收data4(步骤s235)。这里也可以使用嵌入在器件b110的硬件安全模块电路10中的cpu11、或使用非安全部分120的cpu2来改变(r,w,e)属性。在任一种情况下,假设已经认识到,设置软件在其执行之前使用安全启动等而尚未被篡改。

在接收到(rp,tspj,data3)=(tss1,idi,n,j,c1[j])时,器件b110的硬件安全模块电路10建立enc_data_with_crc:={},并且执行以下处理(步骤s240)。

1.验证是否满足rp,tss1,tspj,idi,c1[j]∈{0,1}^k和n,j∈{0,1}^k,即每个数据项的长度是否具有规定值。然后,检查idi是否与器件b110的标识符匹配。当不满足rp,tss1,tspj,idi,c1[j]∈{0,1}^k和n,j∈{0,1}^1时,建立result1:=00,rc←{0,1}^(k-2),rc1:=rc1||result1。当满足rp,tss1,tspj,idi,c1[j]∈{0,1}^k和n,j∈{0,1}^1时,执行以下处理。

2.计算enc_data_with_crc:=enc_data_with_crc∪c1[j],并建立result1:=01。

3.随机数被选择为rc1←{0,1}^k-2,并且建立rc1:=rc1||result1。

4.硬件安全模块电路10建立data4:=(tss1,idi,rc1,n,j),并将(rp,tspj,data4)发送到器件b110的非安全部分120(步骤s250)。如果满足j=n,并且rc1的最低有效位为“1”,则硬件安全模块10完成接收n分段数据的操作。

5.在接收到data4时,器件b110的非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s252),并且然后将(j+2,rp,tspj,data4)发送到器件a102(步骤s254)。当发送完成时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data4。当满足j<n时,非安全部分120将data3所在的存储器区域的(r,w,e)属性设置为(0,1,0),以准备从器件a102接收data3(步骤s256)。

注意的是,当从器件a102到器件b110的非安全部分120的传输存在时间限制、并且tspj可靠时,还可以通过在如上所述的处理1.中的大小检查期间、将tss1与tspj进行比较来识别该时间限制。当待认证的目标终端中的认证处理存在时间限制、并且器件b110的非安全部分120的时钟可靠时,还可以在从待认证的终端接收到认证结果时、通过将tspj与时间(下文中被称为tsp')进行比较来识别该时间限制。

(2-3)器件a中的认证结果的验证

器件b110中的每个器件的非安全部分120将(j+2,rp,tspj,data4)发送到器件a102(s254)。在接收到(j+2,rp,tspj,data4=(tss1,idi,rc1,n,j))时,器件a102执行以下处理(步骤s257)。

器件a102验证是否满足rp,tss1,tspj,idi,rc1∈{0,1}^k和n,j∈{0,1}^1,即每个数据项的长度是否具有规定值。当不满足rp,tss1,tspj,idi,rc1∈{0,1}^k和n,j∈{0,1}^1时,器件a102将result2设置为满足result2:=00。当满足rp,tss1,tspj,idi,rc1∈{0,1}^k和n,j∈{0,1}^1时,器件a102将result2设置为满足result2:=lower2bitsofrc。当满足result2=01时,器件a102设置j:=j+1。当满足j>n时,器件a102完成从器件a102的数据分段的传送。当result2显示“01”时,“01”表示数据c1[j]被成功存储在器件b110的数据存储区域中,同时保持大小。当result2显示“00”时,“00”表示存在数据大小的不匹配。

注意的是,当从器件a102到器件b110的非安全部分120的认证加密数据分段的发送与器件a102从器件b110的非安全部分120获取响应之间的时间段存在限制时,还可以通过在上述大小检查期间、将tss1与器件a102中的当前时间进行比较来识别该时间限制。当对从器件b110的非安全部分120到器件a102的认证加密数据分段的大小检查是否成功的发送存在限制、并且器件b110的非安全部分120的时钟可靠时,还可以通过将已经添加了tsp'的数据从器件b110的非安全部分120发送到器件a102、并且将tsp'与tss1进行比较来识别时间限制。

在根据第一实施例的变型的数据发送/接收序列中,在组合所有认证的加密数据分段之后,根据稍后描述的(3)涉及组合数据和数据存储的相互认证处理的认证加密方法来执行认证和解密。因此,当{c1[j];j=1,...,n}中的全部或任一个被篡改时,可以感测任意篡改的存在。

(3)涉及组合数据和数据存储的相互认证处理

(3-1)器件a中的器件认证信息的构建

当在(2)的重复执行中满足j>n时,器件a102识别(2)的重复执行的完成并且执行以下处理(步骤s262)。

1.当前时间被选择为tss2←timestamp。

2.随机数被选择为rh3←{0,1}^k。

3.计算r3:=prf(ski,tss1||tss2||idi||rh0||rh3||n||n+1),其中最后的“n+1”旨在给出解密待传送的目标数据的指令,因为数据分段的传送已经结束。然后,器件a102建立data5:=(tss1,tss2,idi,rh0,rh3,r3,n,n+1),并将(j+2,rp,data5)发送到器件b110的非安全部分120(步骤s263)。注意的是,这里使用的运算符“||”表示位串联。

(3-2)器件b中的数据解密、数据存储和结果收集

器件b110中的每个器件的非安全部分120将存储data5的存储器区域的(r,w,e)属性设置为(0,1,0)(步骤s264)。简言之,(r,w,e)属性被设置为使得数据仅可写入。非安全部分120还将当前时间选择为tspn+1←timestamp。在接收到data5时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s265)。简言之,(r,w,e)属性被设置为使得数据仅可读取。

然后,非安全部分120将(rp,tspn+1,data5)发送到器件b110的硬件安全模块电路10(步骤s266)。当发送完成时,非安全部分120将非安全部分120的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data5(步骤s267)。非安全部分120还将从器件b110的硬件安全模块电路10接收data6的存储器区域的(r,w,e)属性设置为(0,1,0)(步骤s281)。这里还可以使用嵌入在器件b110的硬件安全模块电路10中的cpu11、或使用非安全部分120的cpu2来改变(r,w,e)属性。在任一种情况下,假设已经认识到,设置软件在其执行之前使用安全启动等尚未被篡改。

在接收到(rp,tspn+1,data5=(tss1,tss2,idi,rh0,rh3,r3,n,n+1))时,器件b110的硬件安全模块电路10建立rh4←{0,1}^k,并且执行以下处理(步骤s270)。因此,执行认证器件a102、验证接收的数据并解密数据的处理。

1.验证是否满足rp,tspn+1,tss1,tss2,idi,rh0,rh3,r3∈{0,1}^k和n,n+1∈{0,1}^1,即每个数据项的长度是否具有规定值。然后,检查idi是否与器件b110的标识符匹配。当不满足rp,tspn+1,tss1,tss2,idi,rh0,rh3,r3∈{0,1}^k和n,n+1∈{0,1}^1时,建立result2:=0000,rc2←{0,1}^(k-4),rc2:=rc2||result2。当满足rp,tspn+1,tss1,tss2,idi,rh0,rh3,r3∈{0,1}^k和n,n+1∈{0,1}^1时,执行以下操作。然后,稍后将描述的处理2执行。这里使用的result2的值“0000”显示已经进行未授权访问。

2.验证是否满足r3=prf(ski,tss1||tss2||idi||rh0||rh3||n||n+1)。当不满足r3=prf(ski,tss1||tss2||idi||rh0||rh3||n||n+1)时,设置result2以满足result2:=1100,其显示认证验证的结果失败。当满足r3=prf(ski,tss1||tss2||idi||rh0||rh3||n||n+1)时,计算r1'=prf(ski,tss1||idi||rh0||1),并且执行以下操作。

3.对于data||data_crc=ae.dec(r1',enc_data_with_crc),即加密的密文,通过在(3)的重复执行中串联{c1[j];j=1,...,n}而获得的enc_data_with_crc被解密,并且然后验证认证是否成功。当认证不成功时,设置result2以满足result2:=1000,其显示数据认证的结果失败。当认证成功时,执行以下操作。

4.访问控制被设置为使得仅允许硬件安全模块电路10访问错误检测电路4。使用crc(data)计算作为解密的结果而获得的data的crc,并验证计算的data的crc是否匹配data_crc。当不存在匹配时,result2被设置为满足result2:=0100,其显示crc检查已经失败。当存在匹配时,执行以下操作。

5.作为解密结果而获得data的区域a1的(r,w,e)属性被设置为(1,1,0)或(0,1,0)(即,使得data可写入并且程序不可执行),并且data被存储(写入)在区域a1中。因此,当写入已经通过crc检查的数据(即,其中没有检测到错误)时,可以禁止攻击者等篡改数据。然后,区域a1的(r,w,e)属性被设置为(1,0,1)或(1,0,0)(即,使得data可读取并且不可写入),并且再次从区域a1读取data并将data设置为data'。使用crc(data')计算data'的crc,并且验证计算的data'的crc是否匹配data_crc。由于当写入非易失性存储器时数据可能被破坏,因此为了提高容错,在写入数据之后读取数据并对数据进行crc检查。这种处理可以禁止攻击者等在读取数据以用于检测在写入数据期间已发生的错误时篡改该数据。

当crc(data')和data_crc匹配时,将区域a1的(r,w,e)属性设置为(1,0,1)、(1,0,0)或(0,0,1)(即,使得data不可写入)。然后,当区域a1是非易失性存储器部分时,在其上执行激活处理。此外,将result2设置为满足result2:=0001,其显示所有处理都成功。当data是关键程序并且需要机密性时,将(r,w,e)属性设置为(0,0,1),以仅允许程序的执行。当不存在匹配时,将区域a1的(r,w,e)属性设置为(1,1,0)或(0,1,0)(即,使得data可写入并且程序不可执行),并且擦除区域a1中写入的data。这可以禁止数据的不适当的执行或读取。然后,将result2设置为满足restul2:=0010,其显示crc检查已经再次失败。

6.访问控制被设置为允许需要通过错误检测电路4进行处理的另一模块(诸如cpu2)来访问错误检测电路4(“default”)。然后,将随机数选择为rc2←{0,1}^(k-3)以满足rc2:=rc2||result2∈{0,1}^k。

7.计算r4:=prf(ski,tss2||tspn+1||idi||rh4||rc2||0)。然后,器件b110的硬件安全模块电路10建立data6:=(tss2,idi,rh4,rc2,r4),并将(rp,tspn+1,data6)发送到器件b110的非安全部分120(步骤s282)。

8.在接收到data6时,器件b110的非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s283),并且然后向器件a102发送(j+2,rp,tspn+1,data6)(步骤s284)。当发送完成时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data6(步骤s285)。

注意的是,也可以使用图3至图9所示的(r,w,e)属性控制机制(访问控制电路20)来更新(r,w,e)属性。注意的是,当不使用图3至图9所示的(r,w,e)属性控制机制时,也可以使用存储器保护单元(mpu)或存储器管理单元(mmu)进行设置。在使用图6中的机制的情况下,即使当属性r和w中的每一个属性为“0”时,也可以通过设置硬件安全模块电路10来读取和写入数据。因此,考虑这一点,需要对属性进行改变。当在图6中的s1与s2之间不进行转换时,可更新的范围受限,因此需要在有限的范围内改变属性。

注意的是,当从器件a102到器件b110的非安全部分120的发送存在时间限制、并且tspn+1可靠时,还可以通过在如上所述的处理1.中的大小检查期间将tss2与tspn+1进行比较来识别该时间限制。当待认证的目标终端中的认证处理存在时间限制、并且器件b110的非安全部分120的时钟可靠时,还可以在从待认证的终端接收到认证结果时、通过将tspn+1与时间(下文中被称为tsp')进行比较来识别该时间限制。结果,当处理需要过长的时间时,可以检测到不适当的处理。

(3-3)器件a中的认证结果的验证

每个器件b110的非安全部分120将(j+2,rp,tspn+1,data6)发送到器件a102(s284)。在接收到(j+2,rp,tspn+1,data6=(tss2,idi,rh4,rc2,r4))时,器件a102执行以下处理(步骤s286)。因此,器件a102和器件b110在其间执行相互认证。

器件a102验证是否满足rp,tss2,tspn+1,idi,rh4,rc2,r4∈{0,1}^k,即每个数据项的长度是否具有规定值。当不满足rp,tss2,tspn+1,idi,rh4,rc2,r4∈{0,1}^k时,器件a102将result2设置为满足result2:=1110。当满足rp,tss2,tspn+1,idi,rh4,rc2,r4∈{0,1}^k时,器件a102将result2设置为满足result2:=1110。当满足rp,tss2,tspn+1,idi,rh4,rc2,r4∈{0,1}^k时,器件a102验证是否满足r4=prf(ski,tss2||tspn+1||idi||rh4||rc2||0)(即签名是否正确)。当签名正确时,器件a102将result2设置为满足result2:=lower4bitsofrc2,否则将result2设置为满足result2:=1110。

然后,器件a102将result2输出为认证结果并记录该认证结果。当result2显示“0001”时,“0001”意指器件a110和器件b110之间的相互认证成功,并且数据被成功地存储在器件b110的数据存储区域中而不被中间人篡改、没有泄漏、并且没有遭受丢失。当result2显示“0010”时,“0010”意指由于数据写入中的数据丢失而导致写入失败。当result2显示“0100”时,“0100”意指认证/解密成功,但在写入数据之前已经发生了数据丢失。当result2显示“1000”时,“1000”意指根据认证的加密方法的enc_data_with_crc的认证已经失败,即{c1[j];j=1,...,n}中的任一个可能已经被篡改。当result2显示“1100”时,“1100”意指发生接收错误(可能已经发生了消息篡改)。

注意的是,当从器件a102到器件b110的非安全部分120的认证数据的发送与器件a102从器件b110的非安全部分120获取认证数据之间的时间段存在限制时,还可以通过在上述大小检查期间、将tss2与器件a102中的当前时间进行比较来识别该时间限制。当对从器件b110的非安全部分120到器件a102的解密认证的加密数据的操作是否成功的发送存在限制、并且器件的非安全部分120的时钟可靠时,还可以通过将已经添加了tsp'的数据从器件b110的非安全部分120发送到器件a102、并且将tsp'与tss2进行比较来识别该时间限制。

根据第一实施例的变型的数据发送/接收序列是故障安全的,因为当rp被篡改时对应的会话不再存在,或者即使当存在对应的会话时,由于认证在器件b110中的不同会话中被执行并且失败,因此序列不继续。即使当rh4被篡改时,根据第一实施例的变型的数据发送/接收序列也是故障安全的,因为在器件a102中解密经认证的密文的处理是否成功的验证失败。并且,在根据第一实施例的变型的数据发送/接收序列中,即使当攻击者等篡改rc2的值时,由于验证在器件a102中解密经认证的密文的操作是否成功的验证方式,攻击者等不能伪装器件a102中的验证成功。并且,在根据第一实施例的变型的数据发送/接收序列中,即使当tspn+1被篡改时,由于验证器件a102中的认证结果的方式,攻击者等不能伪装器件a102的验证成功。换言之,即使当rp、rh4和tspn+1中的任何一个被篡改时,在器件b110的硬件安全模块电路10中形成的经认证的密文的解密处理是否成功的验证中,攻击者等不能伪装数据写入成功或验证成功。因此,当rp、rh4和rc2中的全部或任何一个被篡改时,可以感测到任何篡改的存在。注意的是,为了高效地检测由于篡改而导致的认证失败或验证失败,还可以向将tspn+1添加哈希值。

在根据第一实施例的变型的数据发送/接收序列中,当对数据大小存在限制时,在待传送的目标数据的传送之前和之后执行相互认证。对于待传送的整个目标数据,添加crc,根据经认证的加密方法对具有添加的crc的数据进行加密,并且对整个加密数据进行分段和传送。因此,当传送由分段产生的数据分段中的每个数据分段时,不再需要相互认证。因此,在根据第一实施例的变型的数据发送/接收序列中,与预先分段待传送的目标数据、并且由分段产生的数据分段中的每个数据分段在一个传送会话中被加密并传送时相比,可以更高效地传送数据。

(第二实施例)

接下来,将给出第二实施例的描述。图11至图13所示的序列图实施使用认证加密方法、考虑功能安全、并具有篡改抵抗和机密性的数据发送/接收协议。另一方面,当仅需要确保篡改抵抗时,可以通过仅验证发出的签名来配置考虑功能安全的序列,其中这里提到的“考虑功能安全”指示针对通信路径中的数据错误和由于硬件故障导致的数据错误来采取措施。

图20至图22示出了根据第二实施例的认证系统100中执行的数据发送/接收序列。注意的是,由于根据第二实施例的认证系统100的配置与根据图10所示的第一实施例的认证系统100的配置基本相同,因此省略其描述。假设预先进行以下设置,作为器件a102和b110的公共对称密钥的初始设置。

器件a102接收到该器件的1^k输入,其中k是安全参数。器件a102为器件b110中被分配有认证标识符idi∈{0,1}^k的每个器件选择对称密钥ski←{0,1}^k,并且将(ski,idi)发送到器件b110。器件b110将(ski,idi)存储在非易失性存储器中。器件b110将认证标识符idi的组id发送到器件a102。这里假设,器件b110的总数量是n并且满足i∈[1,n]。例如,还可以通过在器件b110出厂之前进行这种初始设置,为器件b110中的每个器件设置特定密钥,并且该特定密钥被设置为存储在器件a102中。还假设,器件b110中的每个器件的非安全部分120被允许读取存储在器件b110中嵌入的硬件安全模块电路10中的idi,但是不被允许在适当的访问控制下执行覆盖操作和擦除操作。

(1)器件a中的器件认证信息的构建

器件b110中的每个器件的非安全部分120从硬件安全模块电路10获取idi(步骤s301)。非安全部分120可以从硬件安全模块电路10读取idi、或者也可以从硬件安全模块电路10接收idi。在获取到idi时,非安全部分120选择会话信息rp∈{0,1}^k以用于会话管理(步骤s302),并将(1,rp,idi)发送到器件a102(步骤s303)。在(1,rp,idi)中,“1”显示会话信息rp中的第一处理。在接收到(1,rp,idi)时,器件a102执行以下处理(步骤s304),从而使器件b110被认证。

1.验证是否满足rp,idi∈{0,1}^k和idi∈id。换言之,验证rp和idi的位长,并且验证idi是否已经被寄存。如果不满足rp,idi∈{0,1}^k和idi∈id,处理结束。如果满足rp,idi∈{0,1}^k和idi∈id,执行以下处理。

2.当前时间被选择为tss←timestamp。

3.随机数被选择为rh1←{0,1}^k。

4.对于发送的数据data,计算crc或ecc。假设例如计算了crc,则建立data_crc:=crc(data)。

5.计算r1:=prf(ski,tss||idi||rh1||data||data_crc||1),其中,r1是到数据data的签名。因此,在第二实施例中,不生成c1(认证的加密数据)。换言之,在第二实施例中,数据不被加密。

然后,器件a102建立data1:=(tss,idi,rh1,r1,data,data_crc),并将(1,rp,data1)发送到器件b110的非安全部分120(步骤s305)。

(器件b中的数据签名解密、数据存储和结果收集)

器件b110中的每个器件的非安全部分120使用例如上述的访问控制电路20将存储data1的存储器区域的(r,w,e)属性设置为(1,1,0)或(0,1,0)(步骤s306)。换言之,访问控制电路20将(r,w,e)属性设置为使得数据可写入并且程序不可执行。非安全部分120还将当前时间选择为tsp←timestamp。在接收到data1时,非安全部分120使用例如访问控制电路20将非安全部分120的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s307)。简言之,访问控制电路20将(r,w,e)属性设置为使得数据仅可读取。

然后,非安全部分120将(rp,tsp,data1)发送到器件b110的硬件安全模块电路10(步骤s308)。此时,当发送完成时,非安全部分120使用例如访问控制电路20将非安全部分120的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data1(步骤s309)。这里也可以使用嵌入在器件b110的硬件安全模块电路10中的cpu11、或使用非安全部分120的cpu2来改变(r,w,e)属性。在任一种情况下,假设已经认识到,设置软件在其执行之前使用安全启动等尚未被篡改。

在接收到(rp,tsp,data1=(tss,idi,rh1,r1,data,data_crc))时,假设m是data||data_crc的大小(即,假设rh2的位长为m),器件b110的硬件安全模块电路10建立rh2←{0,1}^m,并且执行以下处理(步骤s310)。因此,器件a102被认证,并且接收的数据被验证。

1.验证是否满足rp,tsp,tss,idi,rh1,r1,data,data_crc∈{0,1}^k。换言之,验证每个数据项的长度是否具有规定值。然后,检查idi是否与器件b110的标识符匹配。因此,执行简单的筛选。

如果不满足rp,tsp,tss,idi,rh1,r1,data,data_crc∈{0,1}^k,则建立result1:=000,rc←{0,1}^(k-3),rc:=rc||result1,并且不再执行稍后将描述的处理。这里使用的result1的值“000”显示已经进行未授权访问。如果满足rp,tsp,tss,idi,rh1,r1,data,data_crc∈{0,1}^k,则执行以下操作。

2.验证是否满足r1=prf(ski,tss||idi||rh1||data||data_crc||1),即认证(签名验证)是否成功。当认证不成功时,result1被设置为满足result1:=110,其显示签名认证已经失败。当认证成功时,执行以下处理。

3.例如,访问控制电路20设置访问控制,使得仅允许硬件安全模块电路10访问错误检测电路4。与data_crc分离,使用crc(data)计算data的crc,并验证计算的data的crc是否匹配data_crc。当不存在匹配时,result1被设置为满足result1:=100,其显示crc检查已经失败。当存在匹配时,执行以下操作。

当不存在访问控制机制时,请求设置在器件b110中的非安全部分120中的错误检测电路4,以执行crc检查。在那种情况下,硬件安全模块电路10选择随机数rh2'←{0,1}^k,建立r0:=prf(ski,tss||idi||rh2'||data||data_crc||2),并将data发送到器件b110的非安全部分120中设置的错误检测电路4。因此,硬件安全模块电路10将crc检查分配给错误检测电路4,并接收结果和data_crc2。然后,为了检查不存在数据篡改,硬件安全模块电路10验证是否满足r0=prf(ski,tss||idi||rh2'||data||data_crc2||2)。当不满足r0=prf(ski,tss||idi||rh2'||data||data_crc2||2)或接收的结果为“失败”时,硬件安全模块电路10将result1设置为满足result1:=100。当满足r0=prf(ski,tss||idi||rh2'||data||data_crc2||2)且结果为“通过”时,执行以下操作。

4.存储data的区域a1的(r,w,e)属性被设置为(1,1,0)或(0,1,0)(即,使得data可写入并且程序不可执行),并且data被存储(写入)在区域a1中。因此,当写入已经通过crc检查(即,其中没有检测到错误)的数据时,可以禁止攻击者等篡改数据。另外,区域a1的(r,w,e)属性被设置为(1,0,1)或(1,0,0)(即,使得data可读取并且不可写入),并且再次从区域a1读取data并将data设置为data'。使用crc(data')计算data'的crc,并且验证data'的crc是否匹配data_crc。由于当写入非易失性存储器时数据可能被破坏,因此为了提高容错,在写入数据之后读取数据并对数据进行crc检查。这种方法可以防止攻击者等在当读取数据以检测在写入数据期间已发生的错误时篡改数据。

当crc(data')与data_crc之间存在匹配时,将区域a1的(r,w,e)属性设置为(1,0,1)、(1,0,0)或(0,0,1)(即,使得data不可写入)。当区域a1是非易失性存储器部分时,在其上执行激活处理。然后,将result1设置为满足result1:=001,其显示所有处理都成功。当data是关键程序并且需要机密性时,将区域a1的(r,w,e)属性设置为(0,0,1),使得程序仅可执行。当crc(data')与data_crc之间不存在匹配时,将区域a1的(r,w,e)属性设置为(1,1,0)或(0,1,0)(即,使得data可写入并且程序不可执行),并且擦除区域a1中写入的data。这可以防止数据的不适当的执行或读取。然后,将result1设置为满足restul1:=010,其显示crc检查已经再次失败。

当无法设置对错误检测电路4的访问控制时,请求错误检测电路4执行crc检查。在这种情况下,还可以执行如下所示的处理。也就是说,硬件安全模块电路10选择随机数rh2”←{0,1}^k,建立r0':=prf(ski,tss||idi||rh2”||data||data_crc||3),并且将data传送到在器件b110的非安全部分120中设置的错误检测电路4。因此,硬件安全模块电路10将crc检查分配到错误检测电路4,并且接收结果和data_crc2'。然后,为了检查不存在数据篡改,硬件安全模块电路10验证是否满足r0'=prf(ski,tss||idi||rh2”||data||data_crc2'||3)。当不满足r0'=prf(ski,tss||idi||rh2”||data||data_crc2'||3)、或当接收的结果为“失败”时,硬件安全模块电路10将区域a1的(r,w,e)属性设置为(1,1,0)、(1,0,0)或(0,1,0),擦除区域a1中写入的data,并且将result1设置为满足result1:=010。当满足r0'=prf(ski,tss||idi||rh2”||data||data_crc2'||3)、并且接收的结果为“通过”时,硬件安全模块电路10将区域a1的(r,w,e)属性设置为(1,1,0)、(1,0,0)或(0,1,0)。当区域a1是非易失性存储器部分时,硬件安全模块电路10在其上执行激活处理。硬件安全模块电路10进一步设置result1以满足result1:=001。当data是关键程序并且需要机密性时,硬件安全模块电路10将(r,w,e)属性设置为(0,0,1),以仅允许程序的执行。

5.例如,访问控制电路20设置访问控制,使得允许需要通过错误检测电路4进行处理的另一模块(诸如cpu2)访问错误检测电路4。然后,将随机数选择为rc←{0,1}^(k-3)以满足rc:=rc||result1∈{0,1}^k。

6.计算r2:=prf(ski,tss||tsp||idi||rh2||rc)。然后,器件b110的硬件安全模块电路10建立data2:=(tss,idi,rh2,rc,r2),并将(rp,tsp,data2)发送到器件b110的非安全部分120(步骤s320)。

7.在接收到data2时,器件b110的非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s321),并且然后将(2,rp,tsp,data2)发送到器件a102(步骤s322),其中“2”表示会话信息rp中的第二处理。当发送完成时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data2(步骤s323)。

注意的是,也可以使用图3至图9所示的(r,w,e)属性控制机制(访问控制电路20)来更新(r,w,e)属性。注意的是,当不使用图3至图9所示的(r,w,e)属性控制机制时,也可以使用存储器保护单元(mpu)或存储器管理单元(mmu)进行设置。在使用图6中的机制的情况下,即使当属性r和w中的每一个属性为“0”时,也可以通过设置硬件安全模块电路10来读取和写入数据。因此,考虑这一点,需要对属性进行改变。当在图6中的s1与s2之间不进行转换时,可更新的范围受限,因此需要在有限的范围内改变属性。

注意的是,当从器件a102到器件b110的非安全部分120的发送存在时间限制、并且tsp可靠时,还可以通过在如上所述的处理1.中的大小检查期间将tss与tsp进行比较来识别该时间限制。当待认证的目标终端中的认证处理存在时间限制、并且器件b110的非安全部分120的时钟可靠时,还可以在从待认证的终端接收到认证结果时、通过将tsp与时间(下文中被称为tsp2)进行比较来识别该时间限制。结果,当处理需要过长的时间时,可以检测到不适当的处理。

(3)器件a中的认证结果的验证

器件b110中的每个器件的非安全部分120将(2,rp,tsp,data2)发送到器件a102(s322)。在接收到(2,rp,tsp,data2=(tss,idi,rh2,rc,r2))时,器件a102执行以下处理(步骤s324)。因此,器件a102和器件b110在其间执行相互认证。注意的是,由于尚未加密数据,所以数据不被解密。

器件a102验证是否满足rp,tss,tsp,idi,rc,r2∈{0,1}^k和rh2∈{0,1}^m,即每个数据项的长度是否具有规定值。当不满足rp,tss,tsp,idi,rc,r2∈{0,1}^k和rh2∈{0,1}^m时,器件a102将result2设置为满足result2:=000。当满足rp,tss,tsp,idi,rc,r2∈{0,1}^k和rh2∈{0,1}^m时,器件a102验证是否满足r2=prf(ski,tss||tsp||idi||rh2||rc)(即签名是否正确)。当签名正确时,器件a102将result2设置为满足result2:=lower3bitsofrc(即result1的值),否则将result2设置为满足result2:=000。

然后,器件a102将result2输出为认证结果并记录该认证结果。当result2显示“001”时,“001”意指数据data被成功地存储在器件b110的数据存储区域中、而不被中间人篡改并且没有遭受丢失。当result2显示“010”时,“010”意指由于数据写入中的数据丢失而导致写入失败。当result2显示“100”时,“100”意指认证/解密成功,但在写入数据之前已经发生了数据丢失。当result2显示“110”时,“110”意指发生接收错误(消息可能已经被篡改)。

注意的是,当从器件a102到器件b110的非安全部分120的认证数据的发送与器件a102从器件b110的非安全部分120获取认证数据之间的时间段存在限制时,还可以通过在上述大小检查期间、将tss与器件a102中的当前时间进行比较来识别该时间限制。当对从器件b110的非安全部分120到器件a102的签名数据执行的签名验证是否成功存在限制、并且器件b110的非安全部分120的时钟可靠时,还可以通过将已经添加了tsp2的数据从器件b110的非安全部分120发送到器件a102、并且将tsp2与tss进行比较来识别该时间限制。

当待传送的目标数据从作为外部器件的器件a102传送到根据第二实施例的半导体器件1(器件b110)时,硬件安全模块电路10经由非安全部分120的存储器区域而从器件a102接收认证数据(data1,data2),并将认证数据发送到器件a102。这允许半导体器件1(器件b110)执行与器件a102的相互认证。非安全部分120的存储器区域被配置为使得在访问控制下不被攻击者等访问。因此,当传送待传送的目标数据时,可以防止攻击者等作为目的地处的器件进行欺骗。

根据第二实施例的数据发送/接收序列是故障安全的,因为当rp被篡改时对应的会话不再存在,或者即使当存在对应的会话时,由于在器件b110中的不同会话中认证失败,序列也不继续。即使当rh2被篡改时,根据第二实施例的数据发送/接收序列也是故障安全的,因为在器件a102中对签名数据执行的签名验证失败。并且,在根据第二实施例的数据发送/接收序列中,即使当攻击者等篡改rc的值时,由于对器件a102中的签名数据执行签名验证的方式,攻击者等不能伪装器件a102中的验证成功。并且,在根据第二实施例的数据发送/接收序列中,即使当tsp被篡改时,由于验证器件a102中的认证结果的器件,因此攻击者等不能伪装器件a102的验证是成功的。换言之,即使当rp、rh2和tsp中的任何一个被篡改时,在对硬件安全模块电路10中形成的签名数据执行的签名验证中,攻击者等不能伪装数据写入成功或验证成功。因此,在第二实施例中,当rp、rh2和rc中的全部或任何一个被篡改时,可以感测到任何篡改的存在。注意的是,为了有效地检测由于篡改而导致的认证失败或验证失败,还可以向tsp添加哈希值。

并且,在第二实施例中,待传送的目标数据未被加密。然而,由于执行对非安全部分120的访问控制,因此可以防止攻击者等在数据传送期间读取数据并执行数据(程序)。另外,即使存在任何篡改时,可以通过执行crc检查来检测该篡改。这允许考虑功能安全的安全数据发送/接收仅通过执行签名验证而不加密待传送的目标数据来实现。因此,可以减少各自用于加密待传送的目标数据的处理和硬件。

(第二实施例的变型)

接下来,将描述第二实施例的变型。图20至图22所示的序列图示出了用于通过一个会话将从器件a102待传送到器件b110的目标数据的序列。当待传送的目标数据的数据大小大于可传送大小并因此需要通过多个会话对数据进行分段和传送、并且当图20至图22所示的序列在不改变的情况下使用时,需要执行诸如对应于该多个会话的多次认证处理。

当可传送大小受限时,可以想象更高效的是,将签名数据等添加到待传送的整个目标数据,将具有添加的签名数据等的整个加密数据分段为多个数据分段,并传送该数据分段;而不是将待传送的目标数据分段为多个数据分段,在其传送时将签名数据等分别添加到数据分段中的每个数据分段,并在传送会话中的一个传送会话中传送具有添加的签名数据的数据分段。例如,当考虑在非易失性存储器中存储数据时,更高效的是将足够量的数据存储在器件b110的硬件安全模块电路10中,然后对其执行签名验证等,并且然后将数据写入数据区域。

图23至图28分别是示出在根据第二实施例的变型的认证系统100中执行的数据发送/接收序列的序列图。由于根据第二实施例的变型的认证系统100的配置与根据图1中所示的第一实施例的认证系统100的配置基本相同,因此省略其描述。

使用图23至图28的序列图,根据协议的操作允许同时添加考虑功能安全并具有篡改抵抗和机密性的签名数据、以及通过分段传送来发送/接收具有添加的签名数据的数据。这里提及的图23至图28的序列具有(1)涉及传送会话的数量的通知的相互认证处理(s401至s424),(2)用于完全签名数据的重复的分段传送处理(s431至s457),以及(3)涉及对组合数据和数据存储的签名验证的相互认证处理(s462至s486)。假设进行以下设置,作为用于器件a102和器件b110的公共对称密钥的初始设置的结果。

器件a102接收到该器件的1^k输入,其中k是安全参数。器件a102为被分配有认证标识符idi∈{0,1}^k的器件b110选择对称密钥ski←{0,1}^k,并且将(ski,idi)发送到器件b110。器件b110将(ski,idi)存储在非易失性存储器中。器件b110还将认证标识符idi的一组id发送到器件a102。这里假设,器件b110的总数量是m并且满足i∈[1,m]。还可以通过在器件b110出厂之前进行这种初始设置,为器件b110中的每个器件设置特定密钥,并且该特定密钥被存储在器件a102中。还假设,每个器件b110的非安全部分120被允许读取存储在器件b110中嵌入的硬件安全模块电路10中的idi,但是不允许在适当的访问控制下执行覆盖操作和擦除操作。

(1)涉及传送会话数量的通知的相互认证处理

(1-1)器件a中的器件认证信息的构建

器件b110中的每个器件的非安全部分120从硬件安全模块电路10获取idi(步骤s401)。非安全部分120可以从硬件安全模块电路10读取idi,或者也可以从硬件安全模块电路10接收idi。在获取idi时,非安全部分120选择会话信息rp∈{0,1}^k以用于会话管理(步骤s402),并将(1,rp,idi)发送到器件a102(步骤s403)。在(1,rp,idi)中,“1”显示会话信息rp中的第一处理。在接收到(1,rp,idi)时,器件a102执行以下处理(步骤s404),从而使器件b110被认证并且对传送会话的数量给出签名。

1.验证是否满足rp,idi∈{0,1}^k和idi∈id。如果不满足rp,idi∈{0,1}^k和idi∈id,处理结束。如果满足rp,idi∈{0,1}^k和idi∈id,执行以下处理。

2.当前时间被选择为tss1←timestamp。

3.随机数被选择为rh1←{0,1}^k。

4.对于发送的数据data,计算crc或ecc。假设例如计算了crc,则建立data_crc:=crc(data)。然后,考虑待传送的目标数据的大小,器件a102将data||data_crc分段为n个分段,以构建{d[j];j=1,...,n}。

5.为了通知待传送的数据分段的数量n,计算r1:=prf(ski,tss1||idi||rh1||n||1),其中r1不是添加到待传送的目标数据的签名,而是添加到传送会话的数量n的签名,并且“ski”是用于签名验证的密钥。

6.建立data1:=(tss,idi,rh1,r1,n),并且将(1,rp,data1)传送到器件b110的非安全部分120(步骤s405)。

(1-2)器件b中的数据签名验证、数据存储和结果收集

器件b110中的每个器件的非安全部分120将存储data1的存储器区域的(r,w,e)属性设置为(1,1,0)或(0,1,0)(步骤s406)。换言之,(r,w,e)属性被设置为使得数据可写入并且程序不可执行。还可以使用例如如上所述的访问控制电路20来改变(r,w,e)属性。非安全部分120还将当前时间选择为tsp1←timestamp。在接收到data1时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s407)。简言之,访问控制电路20将(r,w,e)属性设置为使得数据仅可读取。

然后,非安全部分120将(rp,tsp1,data1)发送到器件b110的硬件安全模块电路10(步骤s408)。当发送完成时,非安全部分120将非安全部分120的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data1(步骤s409)。这里也可以使用嵌入在器件b110的硬件安全模块电路10中的cpu11、或使用非安全部分120的cpu2来改变(r,w,e)属性。在任一种情况下,假设已经认识到,设置软件在其执行之前使用安全启动等尚未被篡改。

在接收到(rp,tsp1,data1=(tss1,idi,rh1,r1,n))时,器件b110的硬件安全模块电路10建立rh2←{0,1}^k,并且执行以下处理(步骤s410)。因此,器件a102和传送会话的数量n被认证。

1.验证是否满足rp,tsp1,tss1,idi,rh1,r1∈{0,1}^k,即每个数据项的长度是否具有规定值。然后,检查idi是否与器件b110的标识符匹配。注意的是,当不满足rp,tsp1,tss1,idi,rh1,r1∈{0,1}^k时,建立result1:=00,rc1←{0,1}^(k-2),rc1:=rc1||result1。然后,不再执行稍后将描述的处理。这里使用的result1的值“00”显示已经进行未授权访问。如果满足rp,tsp1,tss1,idi,rh1,r1∈{0,1}^k,则执行以下操作。

2.验证是否满足r1=prf(ski,tss1||idi||rh1||n||1)。当满足r1=prf(ski,tss1||idi||rh1||n||1)时,result1被设置为满足result1:=01,其显示器件a102和传送会话的数量n的认证成功。当不满足r1=prf(ski,tss1||idi||rh1||n||1)时,result1被设置为满足result1:=10,其显示器件a102的认证已经失败。注意的是,由于由分段产生的数据分段的数量n被发送到硬件安全模块电路10,所以允许硬件安全模块电路10识别从器件a102发送数据多少次(即,从分段产生多少数据分段)。

3.随机数被选择为rc1←{0,1}^k-2,并且建立rc1:=rc1||result1。

4.计算r2:=prf(ski,tss1||tsp1||idi||rh2||rc1||n),其中r2是添加到传送会话的数量n的签名。然后,器件b110建立data2:=(tss1,idi,rh2,rc1,n,r2),并将(rp,tsp1,data2)发送到器件b110的非安全部分120(步骤s420)。

5.在接收到data2时,器件b110的非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s421),并且然后将(2,rp,tsp1,data2)发送到器件a102(步骤s422),其中“2”表示会话信息rp中的第二处理。当发送完成时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data2。非安全部分120进一步将data3所在的存储器区域的(r,w,e)属性设置为(0,1,0),以准备从器件a102接收data3(步骤s423)。

(1-3)器件a中的认证结果的验证

器件b110中的每个器件的非安全部分120将(2,rp,tsp1,data2)发送到器件a102(s422)。在接收到(2,rp,tsp1,data2=(tss1,idi,rh2,rc1,n,r2)时,器件a102执行以下处理(步骤s424)。因此,器件a102和器件b110在其间执行相互认证。

器件a102验证是否满足rp,tss1,tsp1,idi,rh2,rc1,r2∈{0,1}^k和n∈{0,1}^1,即每个数据项的长度是否具有规定值。当不满足rp,tss1,tsp1,idi,rh2,rc1,r2∈{0,1}^k和n∈{0,1}^1时,器件a102将result2设置为满足result2:=11。当满足rp,tss1,tsp1,idi,rh2,rc1,r2∈{0,1}^k和n∈{0,1}^1时,器件a102验证是否满足r2=prf(ski,tss1||tsp1||idi||rh2||rc1||n)(即签名是否正确)。当签名正确时,器件a102将result2设置为满足result2:=lower2bitsofrc1,否则将result2设置为满足result2:=11。

然后,器件a102将result2输出为认证结果并记录该认证结果。当result2显示“01”时,“01”意指数据分段的数量n已经从器件a102记录到器件b110而未被篡改,并且器件a102与器件b110之间的相互认证成功。当result2显示“10”时,“10”意指发生接收错误(消息可能已经被篡改)。当满足result2=01时,器件a102设置表示传送会话的数量的索引变量j以满足j=1(初始值)。当不满足result2=01时,处理结束。

根据第二实施例的变型的数据发送/接收序列是故障安全的,因为当rp被篡改时对应的会话不再存在,或者即使当存在对应的会话时,认证在器件b110中的不同会话中被执行并且失败。当rh2被篡改时,根据第二实施例的变型的数据发送/接收序列也是故障安全的,因为在器件a102中对认证密文的解密的处理是否成功的验证失败。并且,在根据第二实施例的变型的数据发送/接收序列中,即使当攻击者等篡改rc1的值时,由于对器件a102中使用prf的验证方式,攻击者等不能伪装器件a102中的验证是成功的。并且,在根据第二实施例的变型的数据发送/接收序列中,即使当tsp1被篡改时,由于验证器件a102中的认证结果的方式,攻击者等不能伪装器件a102的验证是成功的。换言之,即使当rp、rh2和tsp1中的任何一个被篡改时,攻击者等不能伪装形成在器件b110的硬件安全模块电路10中的data2已经在验证中成功。因此,当rp、rh2和rc1中的全部或任何一个被篡改时,可以感测到任何篡改的存在。注意的是,为了高效地检测由于篡改而导致的认证失败或验证失败,还可以向tsp1添加哈希值。

(2)用于完全签名数据的重复分段传送处理

下面重复执行处理(2-1)至(2-3),直到完成从器件a102到器件b110的数据分段{c1[j];j=1,...,n}的传送。这里,在分段数据传送处理中不执行器件a102与器件b110之间的相互认证。

(2-1)器件a中的传送数据的构建

假设满足j=1,器件a102执行以下处理。

1.器件a102生成data3:=(tss1,idi,n,j,d[j])(步骤s431),并且将(j+2,rp,data3)发送到器件b110的非安全部分120(步骤s432)。

(2-2)器件b中的crc检查、数据存储和结果收集

器件b110中的每个器件的非安全部分120将当前时间选择为tspj←timestamp。在接收到(j+2,rp,data3=(tss1,idi,n,j,d[j]))时,非安全部分120建立enc_data_with_crc:={},并且执行以下处理(步骤s433)。

1.验证是否满足rp,tspj,tss1,idi,d[j]∈{0,1}^k和n,j∈{0,1}^1,即每个数据项的长度是否具有规定值。然后,检查idi是否与器件b110的标识符匹配。当不满足rp,tspj,tss1,idi,d[j]∈{0,1}^k和n,j∈{0,1}^1时,建立rc1[0]:=0。当满足rp,tspj,tss1,idi,d[j]∈{0,1}^k和n,j∈{0,1}^1时,执行以下处理。

2.计算enc_data_with_crc:=enc_data_with_crc∪d[j],并建立rc1[0]:=1。

3.非安全部分120在存储data3的区域中写入(2,rp,tspj,rc1[0]),并将存储器区域的(r,w,e)属性设置为(1,0,0)。

然后,非安全部分120将(j+2,rp,tspj,rc1[0])发送到器件a102(步骤s454)。当发送完成时,非安全部分120将存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除rc1[0](步骤s456)。当满足j<n时,非安全部分120将data3所在的存储器区域的(r,w,e)属性设置为(0,1,0),以准备从器件a102接收data3。

注意的是,当从器件a102到器件b110的非安全部分120的发送存在时间限制、并且tspj可靠时,还可以通过在如上所述的1.中的大小检查期间、将tss1与tspj进行比较来识别该时间限制。当待认证的目标终端中的认证处理存在时间限制、并且器件b110的非安全部分120的时钟可靠时,还可以在从待认证的终端接收到认证结果时、通过将tspj与时间(下文中被称为tsp')进行比较来识别该时间限制。

(2-3)器件a中的认证结果的验证

器件b110中的每个器件的非安全部分120将(j+2,rp,tspj,rc1[0])发送到器件a102(s454)。在接收到(j+2,rp,tspj,rc1[0])时,器件a102执行以下处理(步骤s457)。

器件a102验证是否满足rp,tspj∈{0,1}^k和rc1[0]∈{0,1}^1,即每个数据项的长度是否具有规定值,并且验证是否满足rc1[0]=1。当rp,tspj∈{0,1}^k,rc1[0]∈{0,1}^1和rc1[0]=1全部满足时,器件a102设置j:=j+1。然后,当满足j>n时,器件a102完成从器件a102的数据分段的传送。

注意的是,当从器件a102到器件b110的非安全部分120的签名数据分段的发送与器件a102从器件b110的非安全部分120获取响应之间的时间段存在限制时,还可以通过在上述大小检查期间、将tss1与器件a102中的当前时间进行比较来识别该时间限制。当对从器件b110的非安全部分120到器件a102的签名数据分段的大小检查是否成功的发送存在限制、并且器件b110的非安全部分120的时钟可靠时,还可以通过将已经添加了tsp'的数据从器件b110的非安全部分120发送到器件a102、并且将tsp'与tss1进行比较来识别该时间限制。

在根据第二实施例的变型的数据发送/接收序列中,在组合所有签名数据分段之后,在稍后描述的(3)涉及组合数据和数据存储的签名验证的相互认证处理中执行签名验证。因此,当{d[j];j=1,...,n}中的全部或任一个被篡改时,可以感测任意篡改的存在。

(3)涉及组合数据和数据存储的签名验证的相互认证处理

(3-1)器件a中的器件认证信息的构建

当在(2)的重复执行中满足j>n时,器件a102识别(2)的重复执行的完成并且执行以下处理(步骤s462)。

1.当前时间被选择为tss2←timestamp。

2.随机数被选择为rh0←{0,1}^k。

3.计算r3:=prf(ski,tss2||idi||rh0||data||data_crc||n||n+1),其中最后的“n+1”旨在给出执行待传送的目标数据的签名验证的指令,因为数据分段的传送已经结束,并且r3是添加到待传送的目标数据的签名。然后,器件a102建立data5:=(tss1,tss2,idi,rh0,r3,n,n+1),并将(j+2,rp,data5)发送到器件b110的非安全部分120(步骤s463)。注意的是,这里使用的运算符“||”表示位串联,并且prf表示伪随机函数。

(3-2)器件b中的签名验证、数据存储和结果收集

器件b110中的每个器件的非安全部分120将存储data5的存储器区域的(r,w,e)属性设置为(0,1,0)(步骤s464)。简言之,(r,w,e)属性被设置为使得数据仅可写入。非安全部分120还将当前时间选择为tspn+1←timestamp。在接收到data5时,非安全部分120计算data5:=data5∪data||data_crc,并且进一步将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s465)。简言之,(r,w,e)属性被设置为使得数据仅可读取。

然后,非安全部分120将(rp,tspn+1,data5)发送到器件b110的硬件安全模块电路10(步骤s466)。当发送完成时,非安全部分120将非安全部分120的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data5(步骤s467)。非安全部分120还将从器件b110的硬件安全模块电路10接收到data6的存储器区域的(r,w,e)属性设置为(0,1,0)(步骤s481)。这里还可以使用嵌入在器件b110的硬件安全模块电路10中的cpu11、或使用非安全部分120的cpu2来改变(r,w,e)属性。在任一种情况下,假设已经认识到,设置软件在其执行之前使用安全启动等而尚未被篡改。

在接收到(rp,tspn+1,data5=(tss1,tss2,idi,rh0,rh3,r3,n,n+1,data,data_crc))时,器件b110的硬件安全模块电路10建立rh4←{0,1}^k,并且执行以下处理(步骤s470)。因此,执行器件a102的认证和接收的数据的签名验证。

1.验证是否满足rp,tspn+1,tss1,tss2,idi,rh0,r3,data,data_crc∈{0,1}^k和n,n+1∈{0,1}^1,即每个数据项的长度是否具有规定值。然后,检查idi是否与器件b110的标识符匹配。当不满足rp,tspn+1,tss1,tss2,idi,rh0,r3,data,data_crc∈{0,1}^k和n,n+1∈{0,1}^1时,建立result2:=000,rc2←{0,1}^(k-3),rc2:=rc2||result2。当满足rp,tspn+1,tss1,tss2,idi,rh0,r3,data,data_crc∈{0,1}^k和n,n+1∈{0,1}^1时,执行以下操作。然后,稍后将描述的处理不再执行。这里使用的result2的值“000”显示已经进行未授权访问。

2.验证是否满足r3=prf(ski,tss1||tss2||idi||rh0||data||data_crc||n||n+1)。当不满足r3=prf(ski,tss1||tss2||idi||rh0||data||data_crc||n||n+1)时,设置result2以满足result2:=110,其显示签名验证的结果失败。当满足r3=prf(ski,tss1||tss2||idi||rh0||data||data_crc||n||n+1)时,执行以下操作。

3.访问控制被设置为使得仅允许硬件安全模块电路10访问错误检测电路4。使用crc(data)计算获得的data的crc,并验证计算的data的crc是否匹配data_crc。当不存在匹配时,result2被设置为满足result2:=0100,其显示crc检查已经失败。当存在匹配时,执行以下操作。

当不存在访问控制机制时,请求设置在器件b110中的非安全部分120中的错误检测电路4以执行crc检查。在那种情况下,硬件安全模块电路10选择随机数rh2'←{0,1}^k,建立r0:=prf(ski,tss||idi||rh2'||data||data_crc||2),并将data发送到设置在器件b110中的非安全部分120中的错误检测电路4。因此,硬件安全模块电路10将crc检查分配给错误检测电路4,并接收结果和data_crc2。然后,为了检查不存在数据篡改,硬件安全模块电路10验证是否满足r0=prf(ski,tss||idi||rh2'||data||data_crc2||2)。当不满足r0=prf(ski,tss||idi||rh2'||data||data_crc2||2)或接收结果为“失败”时,硬件安全模块电路10将result1设置为满足result1:=100。当满足r0=prf(ski,tss||idi||rh2'||data||data_crc2||2)且结果为“通过”时,执行以下操作。

4.作为签名验证的结果获得data的区域a1的(r,w,e)属性被设置为(1,1,0)或(0,1,0)(即,使得data可写入并且程序不可执行),并且data被存储(写入)在区域a1中。因此,当写入已经通过crc检查(即,其中没有检测到错误)的数据时,可以禁止攻击者等篡改数据。另外,区域a1的(r,w,e)属性被设置为(1,0,1)或(1,0,0)(即,使得data可读取并且不可写入),并且再次从区域a1读取data并将data设置为data'。使用crc(data')计算data'的crc,并且验证data'的crc是否匹配data_crc。由于当写入非易失性存储器时数据可能被破坏,因此为了提高容错,在写入数据之后读取数据并对数据进行crc检查。这种处理可以禁止攻击者等在读取数据以检测在写入数据期间已发生的错误时篡改数据。

当crc(data')和data_crc存在匹配时,将区域a1的(r,w,e)属性设置为(1,0,1)、(1,0,0)或(0,0,1)(即,使得data不可写入)。然后,当区域a1是非易失性存储器部分时,在其上执行激活处理。此外,将result2设置为满足result2:=001,其显示所有处理都成功。当data是关键程序并且需要机密性时,将(r,w,e)属性设置为(0,0,1),使得程序仅可执行。当crc(data')和data_crc不存在匹配时,将区域a1的(r,w,e)属性设置为(1,1,0)或(0,1,0)(即,使得data可写入并且程序不可执行),并且擦除区域a1中写入的data。这可以防止数据的不适当的执行或读取。然后,将result2设置为满足restul2:=010,其显示crc检查已经再次失败。

当不能设置对错误检测电路4的访问控制时,请求错误检测电路4执行crc检查。在这种情况下,还可以执行如下所示的处理。也就是说,硬件安全模块电路10选择随机数rh2”←{0,1}^k,建立r0':=prf(ski,tss||idi||rh2”||data||data_crc||3),并将data'发送到设置在器件b110中的非安全部分120中的错误检测电路4。因此,硬件安全模块电路10将crc检查分配给错误检测电路4,并接收结果和data_crc2'。然后,为了检查不存在数据篡改,硬件安全模块电路10验证是否满足r0':=prf(ski,tss||idi||rh2”||data'||data_crc2'||3)。当不满足r0':=prf(ski,tss||idi||rh2”||data'||data_crc2'||3)或当接收结果为“失败”时,硬件安全模块电路10将区域a1的(r,w,e)属性设置为(1,1,0)、(1,0,0)或(0,1,0),擦除写入在区域a1中的data,并将result1设置为满足result1:=010。当满足r0':=prf(ski,tss||idi||rh2”||data'||data_crc2'||3)并且接收结果为“通过”时,硬件安全模块电路10将区域a1的(r,w,e)属性设置为(1,1,0)、(1,0,0)或(0,1,0)。当区域a1是非易失性存储器部分时,硬件安全模块电路10在其上执行激活处理。硬件安全模块电路10进一步将result1设置为满足result1:=001。当data是关键程序并且需要机密性时,硬件安全模块电路10将(r,w,e)属性设置为(0,0,1)以仅允许执行程序。

5.访问控制被设置为使得允许需要通过错误检测电路4进行处理的另一模块(诸如cpu2)来访问错误检测电路4。然后,将随机数选择为rc2←{0,1}^(k-3)以满足rc2:=rc2||result2∈{0,1}^k。

6.计算r4:=prf(ski,tss2||tspn+1||idi||rh4||rc2||0)。然后,器件b110的硬件安全模块电路10建立data6:=(tss2,idi,rh4,rc2,r4),并将(rp,tspn+1,data6)发送到器件b110的非安全部分120(步骤s482)。

7.在接收到data6时,器件b110的非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s483),并且然后将(j+2,rp,tsp,data6)发送到器件a102(步骤s484)。当发送完成时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data6(步骤s485)。

注意的是,当从器件a102到器件b110的非安全部分120的发送存在时间限制、并且tspn+1可靠时,还可以通过在如上所述的处理1.中的大小检查期间、将tss2与tspn+1进行比较来识别该时间限制。当待认证的目标终端中的认证处理存在时间限制、并且器件b110的非安全部分120的时钟可靠时,还可以在从待认证的终端接收到认证结果时、通过将tspn+1与时间(下文中被称为tsp')进行比较来识别该时间限制。结果,当处理需要过长的时间时,可以检测到不适当的处理。

(3-3)器件a中的认证结果的验证

器件b110中的每个器件的非安全部分120将(j+2,rp,tspn+1,data6)发送到器件a102(s484)。在接收到(j+2,rp,tspn+1,data6=(tss2,idi,rh4,rc2,r4))时,器件a102执行以下处理(步骤s486)。因此,器件a102和器件b110在其间执行相互认证。

器件a102验证是否满足rp,tss2,tspn+1,idi,rh4,rc2,r4∈{0,1}^k,即每个数据项的长度是否具有规定值。当不满足rp,tss2,tspn+1,idi,rh4,rc2,r4∈{0,1}^k时,器件a102将result2设置为满足result2:=000。当满足rp,tss2,tspn+1,idi,rh4,rc2,r4∈{0,1}^k时,器件a102验证是否满足r4=prf(ski,tss2||tspn+1||idi||rh4||rc2||0)(即签名是否正确)。当签名正确时,器件a102将result2设置为满足result2:=lower3bitsofrc2,否则将result2设置为满足result2:=111。

然后,器件a102将result2输出为认证结果并记录该认证结果。当result2显示“001”时,“001”意指器件a110与器件b110之间的相互认证成功,并且数据被成功地存储在器件b110的数据存储区域中、而不被中间人篡改并且没有遭受丢失。当result2显示“010”时,“010”意指由于数据写入中的数据丢失而导致写入失败。当result2显示“100”时,“100”意指认证成功,但在写入数据之前已经发生了数据丢失。当result2显示“100”时,“100”意指enc_data_with_crc的签名认证已经失败,即{d[j];j=1,...,n}中的任一个可能已经被篡改。当result2显示“110”时,“110”意指发生接收错误(可能已经发生了消息篡改)。

注意的是,当从器件a102到器件b110的非安全部分120的认证数据的发送与器件a102从器件b110的非安全部分120获取认证数据之间的时间段存在限制时,还可以通过在上述大小检查期间、将tss2与器件a102中的当前时间进行比较来识别该时间限制。当对从器件b110的非安全部分120到器件a102执行签名数据是否成功进行签名认证的发送存在限制、并且器件的非安全部分120的时钟可靠时,还可以通过将已经添加了tsp'的数据从器件b110的非安全部分120发送到器件a102、并且将tsp'与tss2进行比较来识别该时间限制。

根据第二实施例的变型的数据发送/接收序列是故障安全的,因为当rp被篡改时对应的会话不再存在,或者即使当存在对应的会话时,认证在器件b110中的不同会话中被执行并且失败,并且因此序列不继续。即使当rh4被篡改时,根据第二实施例的变型的数据发送/接收序列也是故障安全的,因为在器件a102中对签名数据执行的签名验证失败。并且,在根据第二实施例的变型的数据发送/接收序列中,即使当攻击者等篡改rc2的值时,由于对器件a102中的签名数据执行签名验证的方式,所以攻击者等不能伪装器件a102中的验证是成功的。并且,在根据第二实施例的变型的数据发送/接收序列中,即使当tspn+1被篡改时,由于验证器件a102中的认证结果的器件,攻击者等不能伪装器件a102的验证成功。换言之,即使当rp、rh4和tspn+1中的任何一个被篡改时,在对硬件安全模块电路10中形成的签名数据执行的签名验证中,攻击者等不能伪装数据写入成功或验证成功。因此,当rp、rh4和rc2中的全部或任何一个被篡改时,可以感测到任何篡改的存在。注意的是,为了高效地检测由于篡改而导致的认证失败或验证失败,还可以向tspn+1添加哈希值。

在根据第二实施例的变型的数据发送/接收序列中,当对数据大小存在限制时,在待传送的目标数据的传送之前和之后执行相互认证。对于待传送的整个目标数据,添加crc并且添加签名,并且对具有添加的签名的整个数据进行分段和传送。因此,当传送由分段产生的数据分段中的每个分段时,不再需要相互认证。因此,在根据第二实施例的变型的数据发送/接收序列中,与预先分段待传送的目标数据、签名被添加到由分段产生的数据分段中的每个数据分段并在传送会话中的一个传送会话中传送具有添加的签名的数据分段相比,可以更高效地传送数据。

(第三实施例)

接下来,将给出第三实施例的描述。在上述第一和第二实施例的每个实施例中,假设器件a102和器件b110预先共享对称密钥ski。当在出厂之前将密钥写入器件中时,可以认为服务器(服务器104)将器件中的一组idi∈id和一组密钥ski在数据库中寄存为{(idi,ski);idi∈id,ski←{0,1}^k,k:positiveintegersecurityparameter}。

另一方面,由于通常不容易预测在出厂之后哪两个或更多个器件在其间执行数据发送/接收,可期望的是能够在组装器件之后设置公共对称密钥(诸如当例如使用器件时)。当假设可以自由地读取器件的id,但是不能执行覆盖操作和擦除操作时,在器件a102与器件b110之间的数据发送/接收中,可以将完全相同的对称密钥设置在除了器件a102和器件b110之外的例如器件a'中。在这种情况下,当器件b接收数据时,不容易识别器件a102和器件a'中的哪一个器件发送数据。因此,可期望的是能够设置仅由这两个器件a102和b110共享的对称密钥。

从器件a102发送到器件b110的数据可以是由器件a102生成的数据、或者来自数据传输服务器(服务器104)的数据,该数据传输服务器使用诸如安全通信的适当方式特别地设置在器件a102中。特别是在后一种情况下,可期望的是根据诸如tls(传输层安全)的安全协议将待从器件a102发送到器件b110的数据存储在器件a102中设置的hsm中。还应考虑,单独器件的相应标识符idi和对该器件的密钥ski没有在数据传输服务器的数据库中寄存的情况,以及首先没有这样的数据库并且单独器件的单独标识符idi和对该器件的密钥ski由与数据传输服务器不同的服务器管理的情况。在第三实施例中,服务器104发出仅用于器件a102与器件b110之间的数据发送/接收的密钥信息(随机数)。

图29至图34分别是示出在根据第三实施例的认证系统100中执行的数据发送/接收序列的序列图。图29至图34所示的序列图示出了根据协议的操作,该协议将由源器件生成(或使用其他方式安全地设置在源器件中)的数据发送到目的地器件。图29至图34所示的序列图示出了在假设源器件和目的地器件不预先具有公共密钥的情况下,根据考虑功能安全并且具有篡改抵抗和机密性的数据发送/接收协议的操作。假设预先进行以下设置,作为器件a102和器件b110的公共对称密钥的初始设置。

器件a102接收到该器件的1^k输入,其中k是安全参数。服务器104为分配有认证标识符idp∈{0,1}^k的器件a102选择对称密钥skp←{0,1}^k,并且将(skp,idp)发送到器件a102。同样,服务器104为分配有认证标识符idd∈{0,1}^k的器件b110选择对称密钥skd←{0,1}^k,并且将(skd,idd)发送到器件b110。这里使用的“skp”是对服务器104和器件a102的公共密钥,同时这里使用的“skd”是对服务器104和器件b110的公共密钥。器件a102和器件b110将各自的到(skp,idp)和(skd,idd)的通信部(correspondent)存储在其各自的非易失性存储器中。例如,还可以通过在器件a102和器件b110出厂之前执行这样的处理,将特定密钥设置到器件a102和b110中的每一个器件。还假设允许器件b110的非安全部分120读取存储在器件b110中嵌入的硬件安全模块电路10中的idi,但是不允许在适当的访问控制下执行覆盖操作和擦除操作。

(1)器件认证信息和关于器件a102与b110之间的公共密钥的信息的构建

器件a102从器件b110获取idd(步骤s501)。器件a102可以从器件b110读取idd,或者也可以从器件b110接收idd。器件a102选择rp∈{0,1}^k进行会话管理(步骤s502),并将(1,rp,idd,idp)发送到服务器104(步骤s503)。在接收到(1,rp,idd,idp)时,服务器104执行以下处理(步骤s504)。因此,器件a102和器件b110被认证,并且生成用于器件a102与器件b110之间的会话的会话密钥。

1.验证是否满足rp,idd,idp∈{0,1}^k和idd,idp∈id。如果不满足rp,idd,idp∈{0,1}^kk和idd,idp∈id,处理结束。如果满足rp,idd,idp∈{0,1}^k和idd,idp∈id,执行以下处理。

2.当前时间被选择为tss←timestamp。

3.随机数被选择为rh←{0,1}^k。

4.到器件a102与器件b110的会话密钥被选择为k1←{0,1}^k。

5.作为用于器件a102与服务器104之间的相互认证的信息,计算r1p:=prf(skp,tss||idp||rh||1)。

6.作为用于器件b110与服务器104之间的相互认证的信息,计算r1d:=prf(skd,tss||idd||rh||1)。

7.为了将会话密钥k1发送到器件a102和器件b110,执行以下处理。

·对于器件a102,计算r1'p:=prf(skp,tss||idp||rh||2)和c1p:=ae.enc(r1'p,k1),其中r1'p是用于解密密钥k1的密钥。

·对于器件b110,计算r1'd:=prf(skd,tss||idd||rh||2)和c1d:=ae.enc(r1'd,k1),其中r1'd是用于解密密钥k1的密钥。

8.服务器104建立data1:=(tss,idd,rh,r1d,c1d,idp,r1p,c1p),并将(1,rp,data1)发送到器件a102(步骤s505)。

(2)器件a中服务器器件认证信息的验证以及发送到器件b的认证加密数据的构建

器件a102将当前时间选择为tsp←timestamp,并将两个随机数选择为rcp←{0,1}^(k-3),r3p←{0,1}^k。器件a102还将存储data1的存储器区域的(r,w,e)属性设置为(1,1,0)或(0,1,0)(即,data1可写入,并且程序不可执行)。在接收到data1时,器件a102将data1写入对应的存储器区域。然后,器件a102将对应的存储器区域的(r,w,e)属性设置为(1,0,0),并执行以下处理(步骤s510)。

1.验证是否满足rp,tss,idd,rh,r1d,c1d,idp,r1p,c1p∈{0,1}^k和idd,idp∈id。当不满足rp,tss,idd,rh,r1d,c1d,idp,r1p,c1p∈{0,1}^k和idd,idp∈id时,建立result1p:=000,rcp:=rcp||result1p,并且将随机数选择为r2p←{0,1}^k。这里使用的result1p的值“000”显示在服务器104与器件a102之间已经进行未授权访问。当满足rp,tss,idd,rh,r1d,c1d,idp,r1p,c1p∈{0,1}^k和idd,idp∈id时,执行以下处理。

2.验证是否满足r1p=prf(skp,tss||idp||rh||1)。当不满足r1p=prf(skp,tss||idp||rh||1)时,将result1p设置为满足result1p:=0100。当满足r1p=pf(skp,tss||idp||rh||1)时,执行以下处理。

·设置result1p以满足result1p:=001。

·计算r1'p:=prf(skp,tss||idp||rh||2),k1:=ae.dec(r1'p,c1p),其中ae.dec是根据认证的加密方法的解密。注意的是,当成对给出密文和签名时,执行密文的签名验证,并且当验证成功时,该密文被解密。

·当根据经认证的加密方法在认证中检测到认证错误时,在result1p:=010上覆盖result1p。

3.作为器件a102中的服务器104的认证和服务器104用于器件a102的认证的认证信息的结果,计算rcp:=rcp||result1p,r2p:=prf(skp,tss||tsp||idp||rh||rcp||1)。

4.将随机数选择为rh1←{0,1}^k。

注意的是,也可以在5.的处理之后执行处理3.和4.。并且,当执行下述的处理5.时,不一定必须执行处理4.。

5.验证是否满足result1p=001。当满足result1p=001时,执行以下处理。当不满足result1p=001时,执行包括处理6.和在处理6.之后处理的处理。

·将当前时间选择为tss1←timestamp,并且随机数选择为rh1←{0,1}^k。

·对于待发送到器件b110的数据data,在器件a102中的错误检测电路(ecc/crc处理单元)中,建立例如data_crc:=crc(data),并计算crc。这里假设本处理涉及适当的访问限制,并且在确保篡改抵抗和机密性的范围内、在器件a102中的hsm中执行。当在该处理中仅能够确保篡改抵抗时,则在器件a102中,仅能够确保篡改抵抗。这针对从器件a102到器件b110中的hsm中的存储的路径中的中间人的攻击,提供了篡改抵抗和机密性。

·对于器件a102与器件b110之间的相互认证,计算r1”p:=prf(k1,tss1||idd||rh||2),c1:=ae.enc(r1”p,tss1||idd||rh1||data||data_crc)。

6.器件a102建立data2:=(tss,tss1,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,c1),并且将(1,rp,tsp,data2)发送到器件b110的非安全部分120(步骤s522)。

(3)器件b中的数据解密、数据存储和结果收集

器件b110中的每个器件的非安全部分120将存储data1的存储器区域的(r,w,e)属性设置为(1,1,0)或(0,1,0)(步骤s521)。在接收到data2时(s522),非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s523),并且然后将(rp,tsp,data2)发送到器件b110的硬件安全模块电路10(步骤s524)。当发送完成时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data2(步骤s525)。这里也可以使用嵌入在器件b110的硬件安全模块电路10中的cpu11、或使用非安全部分120的cpu2来改变(r,w,e)属性。在任一种情况下,假设已经认识到,设置软件在其执行之前使用安全启动等而尚未被篡改。

在接收到(rp,tsp,data2=(tss,tss1,1dd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,c1))时,器件b110的硬件安全模块电路10将四个随机数选择为r2d←{0,1}^k,r3d←{0,1}^k,rcd←{0,1}^(k-3),rcdp←{0,1}^(k-4)。然后,硬件安全模块电路10执行以下处理(步骤s530)。

1.验证是否满足rp,tsp,tss,tss1,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,c1∈{0,1}^k,即每个数据项的长度是否具有规定值,并且是否满足idd,idp∈id。如果不满足rp,tsp,tss,tss1,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,c1∈{0,1}^k和idd,idp∈id,则建立result1:=000,rcd:=rcd||result1d,result1dp:=000,rcdp:=rcdp||result1dp,其中result1d的值“000”显示在服务器104与器件b110之间已经进行未授权访问,并且result1dp的值“000”显示已经进行从器件102到器件b110的授权访问。如果满足rp,tsp,tss,tss1,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,c1∈{0,1}^k和idd,idp∈id,则执行以下操作。

2.验证是否满足r1d=prf(skd,tss||idd||rh||1)。当不满足r1d=prf(skd,tss||idd||rh||1)时,result1d被设置为满足result1d:=100。当满足r1d=prf(skd,tss||idd||rh||1)时,执行以下处理。

·建立result1d:=001。

·计算r1'd:=prf(skd,tss||idd||rh||2),k1:=ae.dec(r1'd,c1d)。

·当根据认证加密方法在认证中检测认证错误时,在result1d:=010上覆盖result1d。

3.作为器件b110中的服务器104的认证和服务器104对器件b110的认证所使用的认证信息的结果,计算rcd:=rcd||result1d,r2d:=prf(skd,tss||tsp||idd||rh||rcd||1)。

4.验证是否满足result1d=001。当不满足result1d=001时,建立result1dp=1100。当满足result1d=001时,计算r1”p:=prf(k1,tss1||idd||rh||2),tss1||idd||rh||data||data_crc:=ae.dec(r1”p,c1)。因此,c1被检查。

5.执行tss1||idd||rh||data||data_crc:=ae.dec(r1”p,c1),即执行根据认证加密方法的认证解密以验证认证是否成功。如果认证不成功,则建立result1dp:=1000。如果认证成功,则执行以下操作。在上述解密中,ae.dec表示根据认证的加密方法的解密。当成对给出密文和签名时,执行密文的签名验证,并且当验证成功时,密文被解密。这里执行的签名验证对应于认证。

6.在设置的访问控制下,仅允许硬件安全模块电路10访问错误检测电路4。作为解密的结果获得的data的crc使用crc(data)计算,并验证计算的crc是否与data_crc匹配。当不存在匹配时,建立result1dp:=0100,其显示crc检查已经失败。当存在匹配时,执行以下操作。

·作为解密结果获得的数据所在区域a1的(r,w,e)属性被设置为(1,1,0)或(0,1,0)(即,使得data可写入并且程序不可执行),并且data存储在区域a1中。因此,当写入已经通过crc检查的数据(即,其中没有检测到错误)时,设置为仅允许硬件安全模块电路10写入数据。这禁止攻击者等篡改数据。另外,区域a1的(r,w,e)属性被设置为(1,0,1)或(1,0,0)(即,使得data可读取且不可写入),并且再次从区域a1读取data并将data设置为data'。使用crc(data')计算data'的crc,并且验证data'的crc是否与data_crc匹配。由于当写入非易失性存储器时数据可能被破坏,因此为了提高容错,在写入数据之后读取数据并对数据进行crc检查。这种处理可以禁止攻击者等在读取数据以检测在写入数据期间发生的错误时篡改数据。

·当crc(data')与data_crc之间存在匹配时,将区域a1的(r,w,e)属性设置为(1,0,1)、(1,0,0)或(0,0,1)(即,使得data不可写入)。当区域a1是非易失性存储器部分时,在其上执行激活处理。然后,将result1dp设置为满足result1dp:=0001,其显示所有处理都成功。当数据是关键程序并且需要机密性时,将(r,w,e)属性设置为(0,0,1),使得程序仅可执行。当crc(data')与data_crc之间不存在匹配时,将区域a1的(r,w,e)属性设置为(1,1,0)或(0,1,0)(即,使得data可写入并且程序不可执行),并且擦除区域a1中写入的data。这可以禁止数据的不适当的执行或读取。然后,将result1dp设置为满足restul1dp:=0010,其显示crc检查已经再次失败。

·在设置的访问控制下,允许由错误检测电路4进行处理的另一模块(诸如cpu2)访问错误检测电路4。

·作为器件b110中器件a120的认证和器件a102用于对器件b110认证的认证信息的结果,计算rcdp:=rcdp||result1dp,r3d:=prf(k1,tss||tsp||idd||rh||rcdp||1)。

7.器件b110的硬件安全模块电路10建立data3:=(tss,tss1,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d),并将(rp,tsp,data3)发送到器件b110的非安全部分120(步骤s540)。

8.在接收到data3时,器件b110的非安全部分120将对应的存储器区域的(r,w,e)属性设置为(1,0,0)(步骤s541),并且然后将(2,rp,tsp,data3)发送到器件a102(步骤s542)。当发送完成时,非安全部分120将对应的存储器区域的(r,w,e)属性设置为(0,1,0),并且然后擦除data3(步骤s543)。

注意的是,也可以使用图3至图9所示的(r,w,e)属性控制机制(访问控制电路20)来更新(r,w,e)属性。注意的是,当不使用图3至图9所示的(r,w,e)属性控制机制时,也可以使用存储器保护单元(mpu)或存储器管理单元(mmu)进行设置。在使用图6中的机制的情况下,即使当属性r和w中的每一个属性为“0”时,也可以通过设置硬件安全模块电路10来读取和写入数据。因此,考虑这一点,需要对属性进行改变。当在图6中的s1与s2之间不进行转换时,可更新的范围受限,因此需要在有限的范围内改变属性。

注意的是,当从器件a102到器件b110的非安全部分120的发送存在时间限制、并且tsp和tss1可靠时,还可以通过在如上所述的处理1.中的大小检查期间、将tss和tsp与tss1进行比较来识别该时间限制。当待认证的目标终端中的认证处理存在时间限制、并且器件b110的非安全部分120的时钟可靠时,还可以在从待认证的终端接收到认证结果时、通过将tsp和tss1与时间(下文中被称为tsp')进行比较来识别该时间限制。结果,当处理需要过长的时间时,可以检测到不适当的处理。

(3)器件a中的来自器件b的认证结果的验证

器件b110中的每个器件的非安全部分120将(2,rp,tsp,data3)发送到器件a102(s542)。在接收到(2,rp,tsp,data3=(tss,tss1,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d))时,器件a102建立rcp←{0,1}^(k-3)并执行以下处理(步骤s544)。因此,执行服务器104的认证和k1的验证。

1.验证是否满足rp,tss,tss1,tsp,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d∈{0,1}^k,即每个数据项的长度是否具有规定值,并且验证是否满足idd,idp∈id。如果不满足rp,tss,tss1,tsp,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d∈{0,1}^k和idd,idp∈id,则建立result1pd:=000,result1p:=000,其中result1pd的值“000”显示从器件a102到器件b110已经进行未授权访问。如果满足rp,tss,tss1,tsp,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d∈{0,1}^k和idd,idp∈id,则执行以下操作。

2.验证是否满足r1p=prf(skp,tss||idp||rh||1)(即,签名是否正确)。当不满足r1p=prf(skp,tss||idp||rh||1)时,result1p被设置为满足result1p:=0100。当满足r1p=prf(skp,tss||idp||rh||1)时,执行以下处理。

·result1p被设置以满足result1p:=001。

·计算r1'p:=prf(skp,tss||idp||rh||2),k1:=ae.dec(r1'p,c1p)。

·当根据认证的加密方法在认证中检测认证错误时,在result1p:=010上覆盖result1p。

3.验证是否满足result1p=001。当不满足result1p=001时,当前处理转移到处理5.。当满足result1p=001时,执行以下处理。

4.验证是否满足r3d=prf(k1,tss||tsp||idd||rh||rcd||1)。因此,待传送到服务器104的数据被验证。当不满足r3d=prf(k1,tss||tsp||idd||rh||rcd||1)时,result1pd被设置以满足result1pd:=100。当满足r3d=prf(k1,tss||tsp||idd||rh||rcd||1)时,result1pd被设置以满足result1pd:=001。

5.验证是否满足result1pd=001。当不满足result1pd=001时,result2pd被设置以满足result2pd:=111。当满足result1pd=001时,result2pd被设置以满足result2pd:=0x0...0f&rcdp(lower4bitsofrcdp)。

然后,器件a102将result2pd输出为认证结果并记录result2pd。当result2pd为“0001”时,“0001”意指服务器104的认证被证明,并且数据data被成功地存储在器件b110的数据存储区域中,而不被中间人篡改、没有泄漏、并且没有遭受丢失。当result2pd显示“0010”时,“0010”意指由于数据data写入中的数据丢失而导致写入失败。当result2pd显示“0100”时,“0100”意指服务器104的认证被成功证明并且认证/解密是成功的,但在写入数据data之前已经发生了数据丢失。当result2pd显示“1100”时,“1100”意指已经发生接收错误(消息可能已经被篡改,即服务器104的认证未被证明、或服务器104的认证被成功证明但是根据认证的加密方法的公共密钥k1的认证已经失败)。

(5)服务器中的器件a和b的认证的结果的验证

器件a102将(2,rp,tsp,data3)发送到服务器104(步骤s551)。在接收到(2,rp,tsp,data3=(tss,tss1,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d))时,服务器104建立result2d:=111,result2p:=111,并且执行以下处理(步骤s552)。

1.验证是否满足rp,tss,tss1,tsp,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d∈{0,1}^k(即每个数据项的长度是否具有规定值),并且是否满足idd,idp∈id。如果不满足rp,tss,tss1,tsp,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d∈{0,1}^k和idd,idp∈id,则建立result2d:=101,result2p:=101。如果满足rp,tss,tss1,tsp,idd,rh,r1d,c1d,idp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d∈{0,1}^k和idd,idp∈id,则执行以下操作。在上文中,result2d和result2p中的每一个的值“101”显示已经进行了未授权访问。

2.对于证明器件a102中服务器104的认证的结果的验证,验证是否满足r2p=prf(skp,tss||tsp||idp||rh||rcp||1)。当满足r2p=prf(skp,tss||tsp||idp||rh||rcp||1)时,建立result2p:=0x0...7&rcp(lower3bitsofrcp)。然后result2p被记录为器件a102与服务器104之间的相互认证的结果。当result2p为“001”时,“001”意指服务器104的认证被证明,并且数据被成功地存储在器件a102的数据存储区域中、而不遭受通过中间人的密钥k1的篡改以及密钥k1的泄漏。当result2p显示“010”时,“010”意指根据认证加密方法在认证密钥k1中失败(消息可能已经被篡改)。当result2p为“100”时,“100”意指在证明服务器104的认证中失败(消息可能已经被篡改)。

对于证明器件b110中服务器104的认证的结果的验证,验证是否满足r2d=prf(skd,tss||tsp||idd||rh||rcd||1)。当满足r2d=prf(skd,tss||tsp||idd||rh||rcd||1)时,建立result2d:=0x0...7&rcd(lower3bitsofrcd)。然后result2d被记录为器件b110与服务器104之间的相互认证的结果。当result2d为“001”时,“001”意指服务器104的认证被证明,并且数据被成功地存储在器件b110的数据存储区域中、而不遭受通过中间人的密钥k1的篡改以及密钥k1的泄漏。当result2d显示“010”时,“010”意指根据认证加密方法在认证密钥k1中失败(消息可能已经被篡改)。当result2d为“100”时,“100”意指在证明服务器104的认证中失败(消息可能已经被篡改)。

注意的是,当从服务器104到器件a102的密钥k1的认证加密数据的发送、由器件a102和器件b110执行的服务器104的认证证明的结果、以及由服务器104的密钥k1的认证的结果的获取的时间段存在限制时,还可以通过在上述大小检查期间、将tss与服务器104中的当前时间进行比较来识别该时间限制。

根据第三实施例的数据发送/接收序列是故障安全的,因为当rp被篡改时对应的会话不再存在,或者即使当存在对应的会话时,认证在器件b110中的不同会话中被执行并且失败。即使当rh被篡改时,根据第三实施例的数据发送/接收序列也是故障安全的,因为在器件a102和b110中解密密钥k1的经认证的密文的处理是否成功的验证失败。当rh被篡改时,根据第三实施例的数据发送/接收序列也是故障安全的,因为由于验证器件b110中解密经认证的密文的操作是否成功的方式,所以在该密文被解密时从器件a102到器件b100发送的数据的认证失败。并且,在根据第三实施例的数据发送/接收序列中,即使当攻击者等篡改rcdp的值时,由于在器件a102与器件b110之间的相互认证的方式,因此攻击者等不能向器件a102伪装在器件b110中的写入数据是成功的。并且,在根据第三实施例的数据发送/接收序列中,即使当tsp被篡改时,由于验证器件a102和器件b110中的认证结果的方式,因此攻击者既不能伪装器件b110中的写入数据是成功的,也不能向器件a102伪装器件b110中的写入数据是成功的。这同样适用于其它值。换言之,即使当rp、rh2和tsp中的任何一个被篡改时,在器件b110的硬件安全模块电路10中形成的经认证的密文的解密处理是否成功的验证中,攻击者等不能伪装数据写入成功或验证成功。因此,在第三实施例中,被包括在消息中的全部或任何一个值被篡改时,可以感测到篡改的存在。注意的是,为了高效地检测由于篡改而导致的认证失败或验证失败,还可以向tsp添加哈希值。

并且,在根据第三实施例的数据发送/接收序列中,由服务器104向器件a102和器件b110发出仅用于与器件a102和器件b110(半导体器件1)通信的密钥信息(k1)。当密钥信息被发送到器件a102和器件b110时,服务器104和器件a102和b110在其间执行相互认证。另外,以与在第一实施例和第二实施例中的每一个实施例中传送待传送的目标数据的情况相同的方式,对非安全部分120的存储器区域执行访问控制。这消除了预先将公共密钥放置在器件a102和器件b110中的需要。此外,通过在发出密钥信息时执行访问控制,可以防止攻击者等篡改密钥信息。

(变型)

注意,本发明的实施例不限于上述实施例,并且可以在不脱离其主旨的范围内适当地修改。例如,上述多个实施例彼此适用。例如,也可以在执行根据第一实施例的数据发送/接收序列之前执行根据第三实施例的密钥信息的发送。此外,在根据上述实施例的每个序列图中,可以适当地改变单独处理的顺序。

并且,在上述每个实施例中,假设认证系统100是车载网络系统。然而,认证系统100不限于车载网络系统。认证系统100适用于能够与另一器件通信的任何器件。例如,认证系统适用于能够与外部器件通信的家用电器。

尽管在此之前已经基于实施例具体描述了由本发明人实现的发明,但是本发明不限于上述实施例。将理解的是,在不脱离其主旨的范围内,可以在本发明中进行各种改变和变型。

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