CN104838387B - 芯片验证 - Google Patents

芯片验证 Download PDF

Info

Publication number
CN104838387B
CN104838387B CN201280077619.1A CN201280077619A CN104838387B CN 104838387 B CN104838387 B CN 104838387B CN 201280077619 A CN201280077619 A CN 201280077619A CN 104838387 B CN104838387 B CN 104838387B
Authority
CN
China
Prior art keywords
chip
data
otp memory
checking
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201280077619.1A
Other languages
English (en)
Other versions
CN104838387A (zh
Inventor
E.贝内德蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ai Dide Technology Co Ltd
Original Assignee
Ai Dide Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ai Dide Technology Co Ltd filed Critical Ai Dide Technology Co Ltd
Publication of CN104838387A publication Critical patent/CN104838387A/zh
Application granted granted Critical
Publication of CN104838387B publication Critical patent/CN104838387B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Abstract

描述了一种芯片,其包括可编程来存储芯片配置数据的一次可编程(OTP)存储器和可操作来访问OTP存储器的验证模块。验证模块可操作来接收关于OTP存储器的指定部分的验证请求,该验证请求包括限定OTP存储器的指定部分的掩模数据。响应于验证请求,验证模块可操作来使用掩模数据和OTP存储器以生成关于OTP存储器的指定部分的验证数据,该验证数据还基于芯片的秘密密钥而被生成。还描述了一种生成关于芯片的一次可编程(OTP)存储器的指定部分的验证数据的芯片实现的方法。还描述了用于初级或次级验证系统验证上面提到的芯片的OTP存储器的指定部分的配置的方法。

Description

芯片验证
技术领域
本发明涉及芯片验证。特别地,本发明涉及一种芯片及相关联的用于验证芯片配置的方法。
背景技术
芯片技术的进展导致更小的特征尺寸。这使得创建包括可以在芯片上被选择性地使能或禁用以支持该芯片要被包括在其中的特别的装置或电子设备所需的特征子集的很多功能模块在经济上具有吸引力。这样的芯片也被称为片上系统(SoC)。功能模块的这种选择性使能由一次(one-time)可编程(OTP)存储器控制。
选择机制将适当的值编程在使能或禁用芯片上的功能模块的OTP存储器中。示例是特定客户的专用电路、可选功能和/或许可的IP核。这种机制使得芯片制造商有可能制造可以被配置供广泛范围的装置中使用的单一芯片。
在芯片制造工艺期间,逻辑电路由在被用来制造芯片的一系列生产掩模中表示的芯片设计拓扑限定。逻辑电路包括在稍后的生产步骤初始化的功能模块。芯片制造还牵涉电路的测试、(可选地)将芯片唯一的数据编程在OTP中以及封装芯片。一系列的这些步骤和测试阶段的数目在芯片制造商之间可能不同。
在图1中示出示例性现有技术芯片10的框图。芯片10包括只读存储器(ROM)12、OTP存储器14、中央处理单元(CPU)16和公共逻辑模块18,它们中的全部借助于CPU总线20连接在一起。芯片还包括若干可配置功能模块F1......F8。OTP存储器14包括分别控制功能模块F1......F8的使能/激活(或替换地禁用/解激活)的存储器位置e1......e8。这些OTP存储器位置e1......e8均可以取决于是否期望使能或禁用对应的功能模块F1......F8而用特别的值(激活/不激活,“0/1”)仅写入一次。一般地,在芯片制造工艺期间使得用于功能模块F1......F8的存储器位置e1......e8保持为未被编程的(即未被写入),尽管在该工艺期间可以编程该OTP存储器14的一些其他值。该编程步骤通常牵涉将秘密密钥和/或类似机密信息装载到芯片10上。
作为包括这样的芯片10的装置的制造的一部分,将(封装的)芯片10放置在电路板上,该电路板在特别的装置所需的各种不同组件之间提供电接口。在制造工艺期间,OTP存储器14可以被进一步编程以依照特别的装置的要求个性化(或配置)芯片10。这些附加的OTP编程步骤牵涉将激活/不激活数据值写入到OTP存储器14的存储器位置e1......e8。这些数据值定制芯片10以用于特别的用途。这可以包括禁用芯片10中的某些功能F1......F8,从而使得只有所意图的一组电路(即功能模块F1......F8)在芯片10上保持激活。个性化功能中的一些在装置制造测试期间可能引起复杂情况(例如安全自举、限制对某些存储器位置或外设的访问)。因此,这样的功能模块在制造工艺期间在增量步骤中被激活。
在装置的制造工艺期间,在配置芯片10时可能发生误差。制造工艺中的牵涉对OTP存储器14的不正确编程的误差可能导致芯片14不使适当的功能模块使能/禁用。导致缩减的功能行为的误差通常在形成制造工艺的一部分的测试程序期间被捕捉到。然而,对OTP存储器14的不正确编程也可能导致不期望的功能模块F1......F8在制造工艺期间被错误地使能。这可能导致装置中的在形成制造工艺的一部分的功能测试程序期间并不总是能够被检测到的(隐藏)附加功能。
一些芯片配备有一系列安全性功能,例如即使芯片10包括潜在地运行流氓或破坏软件的通用处理器时也安全地处理数据的能力,或者将引导程序代码限制成仅单一软件供应商的引导程序代码的能力。为了达到这样的目的,经常用某种密钥材料来个性化芯片10。这样的密钥材料可以由负责芯片10的总体安全性的受信任第三方(TTP)管理(在SoC安全性设计是合理的假设下)。
这样的安全性功能通常在工艺中被尽可能快地(永久)使能。然而,芯片10可能经历若干生产步骤(可能在不同位置),它们都具有递减的信任级别。在每一个步骤处,只有一部分(而非全部)安全性措施可以被使能。因此,在生产步骤中的每一个处,可以进一步加强OTP存储器14以在后面的生产步骤期间获得更高的安全性级别。实际上可以跳过OTP编程步骤中的每一个。
芯片10上不期望的隐藏功能的可能性可以导致在部署装置期间的问题,并且也可以影响从其IP核在芯片10上的实际使用而得到收入的各方。为了缓解这个问题,装置制造商经常向许可伙伴和其他相关方提供OTP存储器14的读出。然而,由于OTP存储器14在每一类型的装置中应当具有用于个性化功能模块F1......F8的相同存储器值,所以装置制造商并不真的需要实际提供来自每一个芯片10的观测值。在压力下,制造商可以伪造OTP存储器14的读出,使得隐藏功能在发货的装置中保持不被检测到。
大多数认证方法牵涉计算包括数据段的代码。由于OTP存储器14中的值中的一些可以包括机密信息,所以在认证代码中不可能使用这个信息。
因此,需要一种使得装置制造商能够向各种风险承担者展示每一个发货的装置中的芯片个性化配置满足这些风险承担者的要求的技术。本发明寻求提供这样的技术及相关联的方法。
发明内容
从上面的讨论可知第三方当前不能可靠地确立芯片配置。本发明提供一种芯片及相关联的方法以使得第三方能够可靠地确立芯片配置。
根据本发明的第一方面,提供了一种芯片,其包括可编程来存储芯片配置数据的一次可编程(OTP)存储器和可操作来访问OTP存储器的验证模块。验证模块可操作来接收关于OTP存储器的指定部分的验证请求,该验证请求包括限定OTP存储器的指定部分的掩模数据。响应于验证请求,验证模块可操作来使用掩模数据和OTP存储器以生成关于OTP存储器的指定部分的验证数据,该验证数据还基于芯片的秘密密钥而被生成。
根据本发明的第二方面,提供了一种生成关于芯片的一次可编程(OTP)存储器的指定部分的验证数据的芯片实现的方法。OTP存储器可编程来存储芯片配置数据。该方法包括:(a)接收关于OTP存储器的指定部分的验证请求,其中验证请求包括限定OTP存储器的指定部分的掩模数据;以及(b)响应于验证请求,使用掩模数据和OTP存储器来生成关于OTP存储器的指定部分的验证数据,其中验证数据还基于芯片的秘密密钥而被生成。
密码学是充分确立的技术领域,其使用数学运算来处理数字信息和流。对于本发明而言,利用诸如消息认证码(MAC)(即加密钥的/密码散列值)之类的公知的密码原语和/或可以用来创建证书的数字签名。证书被用于各种不同的领域中以展示消息来自合法源。
本发明使用在芯片上的(安全的)验证模块,该验证模块可以访问OTP存储器中的芯片配置数据并且其使用机密芯片信息(即秘密密钥)来生成唯一的(个性化)消息,该唯一的消息使得风险承担者能够验证芯片被适当地配置用于特别的装置。机密芯片信息是对个别芯片唯一的,并且在其不能被轻易地从芯片读取的意义上是“机密”的。可以将机密芯片信息存储在(安全的)验证模块内。验证模块仅检查OTP存储器的关于芯片配置数据的子集的某些存储器值。掩模数据(例如比特掩模)用来选择正在由验证模块认证的OTP存储器段的比特值。
有利地,芯片还包括多个功能模块,其中芯片配置数据可操作来选择性地使能或禁用该多个功能模块中的每一个。
在一个实施例中,OTP存储器包括比特数组(B)并且掩模数据包括限定比特数组的指定部分的比特掩模(M)。
可选地,验证请求还包括随机数(nonce),并且验证数据还基于该随机数而被生成。
在一个实施例中,验证模块可操作来使用加密钥的密码散列函数生成验证数据。
秘密密钥可以是对称密钥或非对称密钥。在一个实施例中,秘密密钥是芯片的私钥。该实施例涉及非对称密码学。在另一个实施例中,秘密密钥是由芯片和初级验证系统共享的对称秘密密钥。该实施例涉及对称密码学。可选地,验证请求还包括与向芯片提交验证请求的一方相关联的ID数据,并且验证数据还基于ID数据而被生成。
根据本发明的第三方面,提供了一种用于初级验证系统验证上面的第一方面的芯片的OTP存储器的指定部分的配置的方法。芯片的OTP存储器的指定部分的预期配置对于初级验证系统是已知的。与芯片的秘密密钥相关联的验证密钥对于初级验证系统也是已知的。所述方法包括:(a)向芯片发送关于OTP存储器的指定部分的验证请求,其中该验证请求包括限定OTP存储器的指定部分的掩模数据;(b)从芯片接收关于OTP存储器的指定部分的验证数据,其中该验证数据由芯片基于OTP存储器、所接收的掩模数据和秘密密钥生成;以及(c)使用芯片的预期配置、掩模数据和验证密钥验证所接收的验证数据,从而确定芯片的OTP存储器的指定部分的配置是否如预期的那样。
本发明的该第三方面允许由第三方(即初级验证系统)使用芯片验证模块,该第三方知晓对应于由芯片验证模块使用的机密秘密密钥的验证密钥。初级验证系统可以是受信任第三方(TTP)。
秘密密钥可以是对称密钥或非对称密钥。在一个实施例中,秘密密钥是芯片的私钥,并且验证密钥是芯片的公钥。该实施例涉及非对称密码学。在另一个实施例中,验证密钥与秘密密钥相同。换言之,秘密密钥是芯片和初级验证系统共享的对称秘密密钥。该实施例涉及对称密码学。
根据本发明的第四方面,提供了一种用于次级验证系统在秘密密钥是由芯片和初级验证系统共享的对称秘密密钥时验证上面的第一方面的芯片的OTP存储器的指定部分的配置的方法。芯片的OTP存储器的指定部分的预期配置对于次级验证系统是已知的。所述方法包括:(a)从初级验证系统接收限定OTP存储器的指定部分的掩模数据;(b)从初级验证系统接收与次级验证系统相关联的ID数据;(c)从初级验证系统接收次级密钥,其中次级密钥由初级验证系统使用密钥导出方案从ID数据和秘密密钥导出;(d)向芯片发送关于OTP存储器的指定部分的验证请求,其中验证请求包括掩模数据和ID数据;(e)从芯片接收关于OTP存储器的指定部分的验证数据,其中验证数据由芯片基于OTP存储器、所接收的掩模数据和次级密钥生成,其中次级密钥由芯片使用密钥导出方案从所接收的ID数据和秘密密钥导出;以及(f)使用芯片的预期配置、掩模数据和次级密钥验证所接收的验证数据,从而确定芯片的OTP存储器的指定部分的配置是否如预期的那样。
本发明的该第四方面允许由第三方(即次级验证系统)询问芯片验证模块,该第三方本身不可以访问由验证模块使用的秘密。特别地,次级验证系统不知晓或可访问芯片和初级验证系统之间共享的秘密密钥。因此,初级验证系统基于秘密密钥将其自己唯一的次级密钥发布给次级验证系统。芯片能够独立地计算次级密钥。
根据本发明的第五方面,提供了一种计算机程序,该计算机程序在由处理器执行时使得处理器执行上面的第三或第四方面的方法。
根据本发明的第六方面,提供了一种携带上面的第五方面的计算机程序的数据携带介质。
数据携带介质可以是存储介质或传输介质。
根据本发明的第七方面,提供了一种包括第一方面的芯片的机顶盒。
在所附权利要求中阐述本发明的其他优选特征。
附图说明
现在将通过示例的方式参考附图描述本发明的实施例,在附图中:
图1示意性地图示了现有技术芯片。
图2示意性地图示了根据本发明的一个实施例的芯片。
图3是示出生成关于图2的芯片的OTP存储器的指定部分的验证数据的芯片实现的方法中的高级别步骤的流程图。
图4是示出用于初级验证系统验证图2的芯片的OTP存储器的指定部分的配置的方法中的高级别步骤的流程图。
图5a和5b示意性地描绘了一个示例性实施例中的验证程序。图5a示意性地描绘了初级验证系统的数据和处理,并且图5b示意性地描绘了图2的芯片的数据和处理。
图6是示出用于次级验证系统验证图2的芯片的OTP存储器的指定部分的配置的方法中的高级别步骤的流程图。
图7a、7b和7c示意性地描绘了一个示例性实施例中的验证程序。图7a示意性地描绘了初级验证系统的数据和处理,图7b示意性地描绘了特别的次级验证系统的数据和处理,并且图7c示意性地描绘了图2的芯片的数据和处理。
具体实施方式
在图2中示出根据本发明的一个实施例的芯片(或SoC)110。芯片110完全类似于图1中所示的现有技术芯片10,除了下面描述的区别。
图2的芯片110还包括验证模块(或OTP报告模块)130。芯片110的CPU总线120另外将验证模块130连接到ROM 12、OTP存储器14、CPU 16和公共逻辑模块18。因此,验证模块130可以访问OTP存储器14。还可以将验证模块130连接到芯片110的CPU 16(如果存在的话)。验证模块130也可以被配置有不牵涉芯片110的主CPU 16的到外部装备的通信接口(未示出)。
OTP存储器14存储芯片配置数据。例如,参考芯片110中的功能模块F1......F8,芯片配置数据可操作来选择性地使能或禁用功能模块F1......F8中的每一个。在这种情况下,将芯片配置数据存储在OTP存储器位置e1......e8。也可以将其他芯片配置数据存储在OTP存储器14中。
在芯片制造工艺期间,芯片110被配置有仅对于特别的第三方已知的少量数据。该特别的第三方在下面被称为“初级验证系统”或“受信任第三方(TTP)”。有利地,芯片110的验证模块130被配置有该数据。该数据意图用作密码操作中的秘密密钥K。秘密密钥K可以是安全的,从而其在没有显著工作量的情况下不能被观测或修改。密钥K不应当是通用软件程序在芯片110上执行期间或者通过外部接口(管脚)可访问的。
一般验证程序的综述
在芯片制造循环的结尾处,初级验证系统可以请求芯片110生成关于OTP存储器14中的配置数据的验证消息。对于特别类型的芯片110而言,配置数据将被预期对于每一个芯片110是相同的。由于第三方想要确信验证消息是由特别的芯片110的验证模块130(而不是由比方说制造商)生成的,所以生成的验证消息需要对于不同芯片10而言是不同的。因此,验证模块130使用芯片110的密钥K来生成验证消息。例如,验证模块130可以使用密钥K来生成用于OTP存储器14的特别的存储器位置e1......e8的的密码散列值并且输出该结果。存在可以用来计算密码散列值的广泛范围的函数。在一个变体中,密钥K可以用来对OTP存储器14中存储的一些或全部配置数据进行数字签名或加密。
只有初级验证系统(其具有密钥K(或与密钥K相关联的密钥,例如公钥对私钥)以及OTP存储器14中的预期配置数据的知识)可以验证所生成的散列值与预期配置数据相匹配。散列值的失配是制造问题的指示。
为了防止对于相同类型的芯片10生成相同的散列值,密钥K对于特别的芯片110是唯一的。替换地,可以使用公共(对称)密钥K,并且可以将一些随机数据(例如随机数)与来自OTP存储器14的数据相组合以形成对密码散列函数的输入。该随机数可以形成从初级验证系统到芯片110的验证请求的一部分。替换地,如果芯片110具有足够的随机数字生成器,则可以在芯片110内生成随机数。在这种情况下,随机数据也是所生成的验证消息的一部分,使得初级验证系统可以确认所生成的散列值。如将理解的,散列函数的性质使得根据仅有预期配置数据和随机数据的知识确定密钥K在计算上是不可行的。
在一些情况下,初级验证系统对于OTP存储器14中的配置数据的特定子集感兴趣。因此,从初级验证系统到芯片110的验证请求包括指示OTP存储器14的指定部分的掩模数据。这是有利的,因为如果来自OTP存储器14的其他数据值在其他方的控制之下的话,则包括这些数据值可能创建问题,使得难以确立预期的散列值。
芯片实现的验证程序的综述
图3是示出生成关于芯片110的OTP存储器14的指定部分的验证数据的芯片实现的方法中的高级别步骤的流程图。OTP存储器14的指定部分可以涉及OTP存储器14的对应于请求方感兴趣的特别功能模块F1......F8的特定存储器位置e1......e8
在步骤S301处,芯片110从请求方(例如初级验证系统)接收关于OTP存储器14的指定部分的验证请求。验证请求包括限定OTP存储器14的指定部分的掩模数据。掩模数据可以例如是比特掩模。替换地,掩模数据可以包括OTP存储器14中的相关存储器位置e1......e8的地址。
验证请求由芯片110的验证模块130处理。在步骤S302处,响应于验证请求,芯片110的验证模块130使用掩模数据和OTP存储器14来生成关于OTP存储器的指定部分的验证数据。验证数据还基于芯片110的秘密密钥K而被生成。
因此,验证模块130能够生成验证消息(即验证数据)以使得请求方能够验证芯片110中的功能模块F1......F8的个性化配置满足特定要求。掩模数据的使用确保在验证过程中只有请求方感兴趣的那些功能模块F1......F8才被考虑。
由初级验证系统进行的验证的综述
图4是示出用于初级验证系统验证上面描述的芯片110的OTP存储器14的指定部分的配置的方法中的高级别步骤的流程图。如上面所提到的,初级验证系统知晓芯片110的OTP存储器14的指定部分的预期配置。此外,初级验证系统也知晓与芯片110的秘密密钥K相关联的验证密钥。例如,在对称密码学实施例中,验证密钥可以与芯片的秘密密钥K相同。然而,将意识到的是,可以替换地使用不对称密码学。
在步骤S401处,初级验证系统向芯片110发送关于OTP存储器14的指定部分的验证请求。验证请求包括限定OTP存储器14的指定部分的掩模数据。
如上面关于图3中的步骤S302所描述的那样,验证请求由芯片110的验证模块130处理。所以,响应于验证请求,芯片110的验证模块130使用掩模数据和OTP存储器14来生成关于OTP存储器的指定部分的验证数据。验证数据还基于芯片110的秘密密钥而被生成。在步骤S402处,初级验证系统从芯片110接收芯片110生成的验证数据。
在步骤S403处,初级验证系统使用芯片的预期配置、掩模数据和验证密钥(例如其与秘密密钥K相同或与秘密密钥K有关)验证所接收的验证数据,从而确定芯片110的OTP存储器的指定部分的配置是否如预期的那样。
如果步骤S403中的验证并不如预期的那样,则这指示制造问题。
由初级验证系统进行的验证的详细示例
在该详细示例中,使用对称密码学,但是将意识到的是,可以替换地使用不对称密码学(使用芯片和初级验证系统的公钥和私钥)。
在该示例中,OTP存储器14被建模为S比特数组,并且初级验证系统对于在S比特数组B中的位置F处确立N比特的真实性感兴趣,其中并且其中。从芯片110接收的验证消息因此应当仅依赖于所述N比特,而独立于任何其他比特。换言之,验证消息应当是仅仅N比特的函数。因此,以比特掩模M的形式考虑掩模数据,其中如果,并且如果
图5a和5b示意性地描绘了一个示例性实施例中的验证程序。图5a示意性地描绘了初级验证系统510的数据和处理,并且图5b示意性地描绘了芯片110的数据和处理。数据在平行四边形形状的对象中示出,并且处理在矩形对象中示出。
如上面描述的,芯片110具有存储在其上的对称秘密密钥K和包含配置数据的比特数组B。该存储的数据借助于图5b中带阴影的平行四边形形状的对象而示出。
初级验证系统510可访问芯片110的对称秘密密钥K、比特掩模、随机值或随机数512以及B的预期值,即Be。这些值可以被存储在初级验证系统512的一个或多个存储器中,并且可以通过一些其他手段而对于初级验证系统是可访问的。该已知数据借助于图5a中的带阴影的平行四边形形状的对象示出。
使用加密模块E,初级验证系统510使用对称秘密密钥K对比特掩模M进行加密来提供加密的比特掩模E(M)。参考步骤S401,初级验证系统510向芯片110发送验证请求514。验证请求514包括加密的比特掩模E(M)和随机数512。验证请求514可以经由安全或不安全的信道来直接或间接地提交。
参考步骤S301,验证请求514然后由芯片110接收。使用解密模块D,芯片110使用对称秘密密钥K在内部对所接收的加密的比特掩模E(M)进行解密。因此,芯片110获得比特掩模M的知识。然后芯片110在内部计算比特数组T,其中。这个计算在图5b中由与门516示意性地描绘出。这个计算用来在的情况下设置,并且在的情况下设置。因此,B的所有不相关的比特被忽略。
参考步骤S302,芯片110然后生成验证数据。在该实施例中,消息认证码(MAC)是用于确立真实性的机制。然而,将意识到的是,可以替换地使用其他机制。如图5b中所示,比特掩模M、比特数组T和所接收的随机数512被全部输入到芯片110的MAC生成器518中,该MAC生成器518是用对称秘密密钥K加密钥的。MAC生成器518输出MAC值520,其中MAC=MAC(随机数‖M‖T)。换言之,MAC值520是连接有比特掩模M和比特数组T的随机数512的加密钥的散列。然后将MAC值520发送到初级验证系统510。因此,在该实施例中,验证数据是MAC值520。
初级验证系统510独立地计算预期的MAC值(MACe)522。特别地,初级验证系统510计算比特数组Te,其中。这个计算在图5a中由与门524示意性地描绘出。该计算实际上是滤波器操作,其中Be包含需要被用作MAC计算的输入的存储器地址。因此,Be的所有不相关比特被忽略。如图5a中所示,比特掩码M、比特数组Te和随机数512被全部输入到初级验证系统510的MAC生成器526中,该MAC生成器526是用对称秘密密钥K加密钥的。MAC生成器526输出MACe 522,其中MACe=MAC(随机数‖M‖Te)。换言之,预期的MAC值(MACe)522是连接有比特掩模M和比特数组Te的随机数的加密钥的散列。
在步骤S402中已经接收到MAC值520,并且已经计算出预期的MAC值(MACe)522,初级验证系统510能够使用验证模块528比较所接收的和预期的MAC值(MAC 520和MACe 522)。这形成步骤S403的一部分。如果MAC 520和MACe 522值匹配,则芯片110的OTP存储器14中的配置数据对于感兴趣的比特(即S比特数组B中的位置F处的N比特)是如期望的那样。如果MAC 520和MACe 522值不匹配,则这指示芯片110的制造问题。可以将验证模块528的输出提供给用户。
因此,有可能检测错配置以及对结果的任何篡改。上面描述的方案允许初级验证系统510证实SoC在OTP存储器14的相干区域中如期望的那样被配置,即使数据是在不安全的环境中收集的。并且,该方案允许初级验证系统510更改比特掩模M从而提供用于OTP存储器14的不同区域的验证,即使在芯片110已经被生产很长时间之后。
由次级验证系统进行的验证的综述
图6是示出用于次级验证系统验证上面描述的芯片110的OTP存储器14的指定部分的配置的方法中的高级别步骤的流程图。在该方法中,秘密密钥K是对称秘密密钥,使得使用对称密码学。像初级验证系统一样,次级验证系统知晓芯片110的OTP存储器14的指定部分的预期配置。然而,次级验证系统不知晓芯片110的对称秘密密钥K。因此,为了在不存在对称秘密密钥K的情况下执行验证,次级验证系统必须从知晓对称秘密密钥K的初级验证系统510接收相关的密钥信息。次级验证系统可以是对芯片110的OTP存储器14的指定部分的配置感兴趣的任何第三方。例如,次级验证系统可以是与芯片110的功能模块F1......F8中的一个有关的IP权利持有者。
在步骤S601处,次级验证系统从初级验证系统510接收限定OTP存储器14的指定部分的掩模数据。在步骤S602处,次级验证系统从初级验证系统510接收与次级验证系统相关联的ID数据。在步骤S603处,次级验证系统从初级验证系统510接收次级密钥。次级密钥由初级验证系统使用密钥导出方案从ID数据和对称秘密密钥K导出。将意识到的是,可以例如以不同的次序或者同时执行步骤S601-603。
在步骤S604处,次级验证系统向芯片110发送关于OTP存储器14的指定部分的验证请求。验证请求包括掩模数据和ID数据。
验证请求由芯片110的验证模块130以类似于上面关于图3中的步骤S302描述的方式的方式来处理。所以,响应于验证请求,芯片110的验证模块130使用掩模数据和OTP存储器14来生成关于OTP存储器的指定部分的验证数据。验证数据还基于可以由芯片110使用与初级验证系统510所使用过的相同密钥导出方案从所接收的ID数据和对称秘密密钥K导出的次级密钥而被生成。在步骤S605处,次级验证系统从芯片110接收芯片110生成的验证数据。
在步骤S606处,次级验证系统使用芯片的预期配置、掩模数据和次级密钥验证所接收的验证数据,从而确定芯片的OTP存储器的指定部分的配置是否如期望的那样。
如果在步骤S606中验证不是如期望的那样,则这指示制造问题。
由次级验证系统进行的验证的详细示例
在该示例中,假定存在很多分开的次级验证系统,它们中的全部对于验证芯片110的OTP存储器14中的配置数据的不同(但潜在地重叠)部分感兴趣。因此,标明为i的次级验证系统可以对配置数据的部分Fi感兴趣。换言之,次级验证系统对在S比特数组B中的位置Fi处确立Ni比特的真实性感兴趣,其中,其中,并且其中。因为对于每一个次级验证系统而言Fi不同,所以必须向每一个次级验证系统提供不同的比特掩模Mi
图7a、7b和7c示意性地描绘了一个示例性实施例中的验证程序。图7a示意性地描绘了初级验证系统510的数据和处理,图7b示意性地描绘了特别的次级验证系统710的数据和处理,并且图7c示意性地描绘了芯片110的数据和处理。
如上面描述的,芯片110具有存储在其上的对称秘密密钥K和包含配置数据的比特数组B。
初级验证系统510可访问芯片110的对称秘密密钥K。初级验证系统510向次级验证系统710分配ID标记Li。此外,初级验证系统510基于次级验证系统710感兴趣的配置数据的哪部分Fi而向次级验证系统710分配比特掩模Mi。使用鲁棒的密钥导出方案(KDS)711a,初级验证系统510基于芯片110的对称秘密密钥K和次级验证系统710的ID标记Li为次级验证系统710创建唯一的密钥Ki。换言之,。为了确保对称秘密密钥K的安全性,从Ki和Li导出K在计算上是不可行的。在现有技术中许多这样的密钥导出方案是可用的。初级验证系统510还可操作来提供随机值或随机数712。
使用加密模块E,初级验证系统510使用唯一的密钥Ki对比特掩模Mi加密以提供加密的比特掩模Ei(Mi)。初级验证系统510优选地经由安全信道将加密的比特掩模Ei(Mi)、唯一的密钥Ki、ID标记Li和随机数712发送到次级验证系统710。
参考步骤S601,次级验证系统710从初级验证系统510接收加密的比特掩模Ei(Mi)。参考步骤S602,次级验证系统710还从初级验证系统510接收ID标记Li。此外,参考步骤S603,次级验证系统710从初级验证系统510接收唯一的密钥Ki。还接收随机数512。次级验证系统710本身可访问B的预期值,即Be。如果B的预期值中的任何特定一个对于次级验证系统710不是已知的,则这是因为次级验证系统710对这些比特没有兴趣(即这些未知比特并不在比特数组B中的位置Fi处)。可以将任何未知的预期值设置成0或1,因为一旦已经应用了掩模Mi则它们的值将是不相关的。
参考步骤S604,次级验证系统710向芯片110发送验证请求714。验证请求714包括加密的比特掩模Ei(Mi)、ID标记Li和随机数712。可以经由安全或不安全信道直接或间接地提交验证请求714。
参考步骤S301,然后由芯片110接收验证请求714。芯片110可访问与初级验证系统510相同的KDS 711b。因此,芯片110能够基于芯片110的对称秘密密钥K和所接收的ID标记Li在内部计算唯一的密钥Ki。使用解密模块D,芯片110然后使用所计算的唯一的密钥Ki在内部对所接收的加密的比特掩模Ei(Mi)解密。因此,芯片110获得相关比特掩模Mi的知识。芯片110然后向比特数组B应用比特掩模Mi以在内部计算比特数组Ti,其中。这个计算在图7c中由与门716示意性地描绘出。这个计算用来在的情况下设置,并且在的情况下设置。因此,再次忽略B的所有不相关比特。
参考步骤S302,芯片110然后生成验证数据。在该实施例中,消息认证码(MAC)再次为用于确立真实性的机制。然而,将意识到的是,可以替换地使用其他机制。如图7c中所示,比特掩模Mi、比特数组Ti和所接收的随机数712被全部输入到MAC生成器718中,该MAC生成器718用芯片110所计算的唯一的密钥Ki加密钥。MAC生成器718输出MAC值(MACi)720,其中MACi=MAC(随机数‖Mi‖Ti)。换言之,MAC值(MACi)720是连接有比特掩模Mi和数组Ti的随机数的加密钥的散列。然后将MAC值(MACi)720发送到次级验证系统710。因此,在该实施例中,验证数据是MAC值(MACi)720。
次级验证系统710独立地计算预期MAC值(MACie)722。特别地,次级验证系统710将比特掩模Mi应用于预期比特数组Be以计算比特数组Tie,其中。这个计算在图7b中由与门724示意性地描绘出。因此,忽略Be的所有不相关比特,并且如上面提到的,这些不相关比特的值对验证程序没有影响。如图7b中所示,比特掩模Mi、比特数组Tie和随机数712被全部输入到MAC生成器726中,该MAC生成器726用唯一的密钥Ki加密钥。MAC生成器726输出MAC值(MACie)722,其中MACie=MAC(随机数‖Mi‖Tie)。换言之,预期的MAC值(MACie)722是连接有比特掩模Mi和比特数组Tie的随机数的加密钥的散列。
在步骤S605中已经接收到MAC值(MACi)720,并且已经计算出预期的MAC值(MACie)722,次级验证系统710能够使用验证模块728比较所接收的和预期的MAC值(MACi 720和MACie 722)。这形成步骤S606的一部分。如果MACi 720和MACie 722值匹配,则芯片110的OTP存储器14中的配置数据对于感兴趣比特(即S比特数组B中的位置Fi处的Ki比特)是如期望的那样。如果MACi 720和MACie 722值不匹配,则这指示芯片110的制造问题。可以将验证模块728的输出提供给用户。
因此,有可能检测错配置以及对结果的任何篡改。上面描述的方案允许次级验证系统710证实SoC在OTP存储器14的相关区域中如期望的那样被配置,即使数据是在不安全的环境中收集的。并且,该方案允许初级验证系统510 向不同的次级验证系统710提供不同的比特掩模Mi、ID标记Li和唯一的密钥Ki。该方案还确保次级验证系统710a不能修改由另一个次级验证系统710b执行的检查。
应用示例
设想可以将芯片110包括在机顶盒(STB)中,该机顶盒包括SoC上的安全微处理器。特别地,验证功能对于其中在消费者装置处没有智能卡是可用的仅软件的条件访问(CA)客户端实现而言是有用的。验证功能允许制造商确保芯片的安全性功能被正确地激活,使得第三方攻击不会危及CA客户端的安全。
芯片110的另一个应用涉及支持公司从在这样的芯片上激活的IP核生成许可收入的潜在服务。芯片110及相关联的验证方法将使得能够实现支持每芯片专利权使用费的记账机制,因为验证多少芯片110包括相关IP核将是可能的。
最后的备注
尽管已经描述本发明的优选实施例,但是应理解的是,这些实施例仅是举例而言,并且可以构思各种修改。
例如,将意识到的是,逻辑块之间的边界仅仅是说明性的,并且供替换的实施例可以合并逻辑块或元件,或者可以对各种逻辑块或元件强加功能的替换分解。
还将意识到的是,上面提到的功能和模块中的一些可以被实现为硬件和/或软件。例如,初级和/或次级验证系统的功能模块可以被实现为一个或多个软件组件以供系统的处理器执行。替换地,上面提到的模块可以诸如在一个或多个现场可编程门阵列(FPGA)和/或一个或多个专用集成电路(ASIC)和/或一个或多个数字信号处理器(DSP)和/或其他硬件布置上被实现为硬件。
将意识到的是,在本发明的实施例由计算机程序实现的范围,则携带计算机程序的存储介质或传输介质形成本发明的方面。计算机程序可以具有一个或多个程序指令或程序代码,该一个或多个程序指令或程序代码在由计算机执行时执行本发明的实施例。如本文中使用的术语“程序”可以是设计用于在计算机系统上执行的一系列指令,并且可以包括子例程、函数、程序、对象方法、对象实现方式、可执行应用、小应用程序、小服务程序、源代码、对象代码、共享库、动态链接库和/或设计用于在计算机系统上执行的其他指令序列。存储介质可以是磁盘(诸如硬盘驱动器或软盘)、光盘(诸如CD-ROM、DVD-ROM或蓝光盘)或存储器(诸如ROM、RAM、EEPROM、EPROM、闪速存储器或便携式/可移动存储器设备)等。传输介质可以是通信信号、数据广播、两个或更多计算机之间的通信链路等。

Claims (15)

1.一种芯片,包括:
多个功能模块,可操作来被选择性地使能或禁用;
一次可编程(OTP)存储器,其存储关于所述多个功能模块中的每一个的选择性使能或禁用的芯片配置数据;以及
验证模块,其可操作来访问OTP存储器;
其中,验证模块可操作来接收关于OTP存储器的指定部分的验证请求,OTP存储器的指定部分关于OTP存储器的与所述多个功能模块中请求方感兴趣的特别功能模块相对应的特定存储器位置,该验证请求包括限定OTP存储器的指定部分的掩模数据;并且
其中,响应于验证请求,验证模块可操作来使用掩模数据和OTP存储器以生成关于OTP存储器的指定部分的验证数据,该验证数据还基于芯片的秘密密钥而被生成。
2.如权利要求1所述的芯片,其中,OTP存储器包括比特数组(B)并且掩模数据包括限定比特数组的指定部分的比特掩模(M)。
3.如权利要求1或2所述的芯片,其中,验证请求还包括随机数,并且验证数据还基于该随机数而被生成。
4.如权利要求1或2所述的芯片,其中,验证模块可操作来使用加密钥的密码散列函数来生成验证数据。
5.如权利要求1或2所述的芯片,其中,秘密密钥是芯片的私钥。
6.如权利要求1或2所述的芯片,其中,秘密密钥是由芯片和初级验证系统共享的对称秘密密钥。
7.如权利要求6所述的芯片,其中,验证请求还包括与向芯片提交验证请求的一方相关联的ID数据,并且验证数据还基于ID数据而被生成。
8.一种生成关于芯片的一次可编程(OTP)存储器的指定部分的验证数据的芯片实现的方法,该芯片包括可操作来被选择性地使能或禁用的多个功能模块,该OTP存储器存储关于所述多个功能模块中的每一个的选择性使能或禁用的芯片配置数据,并且OTP存储器的指定部分关于OTP存储器的与所述多个功能模块中请求方感兴趣的特别功能模块相对应的特定存储器位置,该方法包括:
接收关于OTP存储器的指定部分的验证请求,其中验证请求包括限定OTP存储器的指定部分的掩模数据;以及
响应于验证请求,使用掩模数据和OTP存储器来生成关于OTP存储器的指定部分的验证数据,其中验证数据还基于芯片的秘密密钥而被生成。
9.一种用于初级验证系统验证权利要求1-4中的任何一项所述的芯片的OTP存储器的指定部分的配置的方法,OTP存储器的指定部分关于OTP存储器的与所述多个功能模块中请求方感兴趣的特别功能模块相对应的特定存储器位置,芯片的OTP存储器的指定部分的预期配置对于初级验证系统是已知的,与芯片的秘密密钥相关联的验证密钥对于初级验证系统也是已知的,所述方法包括:
向芯片发送关于OTP存储器的指定部分的验证请求,其中该验证请求包括限定OTP存储器的指定部分的掩模数据;
从芯片接收关于OTP存储器的指定部分的验证数据,其中该验证数据由芯片基于OTP存储器、所接收的掩模数据和秘密密钥生成;以及
使用芯片的预期配置、掩模数据和验证密钥验证所接收的验证数据,从而确定芯片的OTP存储器的指定部分的配置是否如预期的那样。
10.如权利要求9所述的方法,其中,秘密密钥是芯片的私钥,并且验证密钥是芯片的公钥。
11.如权利要求9所述的方法,其中,验证密钥与秘密密钥相同,秘密密钥是由芯片和初级验证系统共享的对称秘密密钥。
12.一种用于次级验证系统验证权利要求6所述的芯片的OTP存储器的指定部分的配置的方法,OTP存储器的指定部分关于OTP存储器的与所述多个功能模块中请求方感兴趣的特别功能模块相对应的特定存储器位置,该芯片的OTP存储器的指定部分的预期配置对于次级验证系统是已知的,所述方法包括:
从初级验证系统接收限定OTP存储器的指定部分的掩模数据;
从初级验证系统接收与次级验证系统相关联的ID数据;
从初级验证系统接收次级密钥,其中次级密钥由初级验证系统使用密钥导出方案从ID数据和对称秘密密钥导出;
向芯片发送关于OTP存储器的指定部分的验证请求,其中验证请求包括掩模数据和ID数据;
从芯片接收关于OTP存储器的指定部分的验证数据,其中验证数据由芯片基于OTP存储器、所接收的掩模数据和次级密钥生成,其中次级密钥由芯片使用密钥导出方案从所接收的ID数据和对称秘密密钥导出;以及
使用芯片的预期配置、掩模数据和次级密钥验证所接收的验证数据,从而确定芯片的OTP存储器的指定部分的配置是否如预期的那样。
13.一种携带计算机程序的数据携带介质,所述计算机程序在由处理器执行时使所述处理器实施权利要求9至12中的任何一项所述的方法。
14.如权利要求13所述的数据携带介质,其中所述数据携带介质是存储介质或传输介质。
15.一种机顶盒,其包括权利要求1-7中的任何一项所述的芯片。
CN201280077619.1A 2012-10-11 2012-10-11 芯片验证 Active CN104838387B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2012/004267 WO2014056515A1 (en) 2012-10-11 2012-10-11 Chip verification

Publications (2)

Publication Number Publication Date
CN104838387A CN104838387A (zh) 2015-08-12
CN104838387B true CN104838387B (zh) 2018-03-02

Family

ID=47177868

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280077619.1A Active CN104838387B (zh) 2012-10-11 2012-10-11 芯片验证

Country Status (6)

Country Link
US (1) US9678898B2 (zh)
EP (1) EP2907075B1 (zh)
CN (1) CN104838387B (zh)
AP (1) AP2015008354A0 (zh)
WO (1) WO2014056515A1 (zh)
ZA (1) ZA201502154B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727720B2 (en) * 2012-11-30 2017-08-08 Certicom Corp. Challenge-response authentication using a masked response value
US9769157B2 (en) 2015-09-21 2017-09-19 American Express Travel Related Services Company, Inc. Systems and methods for secure one-time password validation
US10181020B2 (en) 2015-09-21 2019-01-15 American Express Travel Related Services Company, Inc. Systems and methods for gesture based biometric security
DE102015121861A1 (de) * 2015-12-15 2017-06-22 Endress + Hauser Flowtec Ag Zugangsschlüssel für ein Feldgerät
GB201609781D0 (en) 2016-06-03 2016-07-20 Irdeto Bv Secured chip
US11196575B2 (en) 2019-04-24 2021-12-07 International Business Machines Corporation On-chipset certification to prevent spy chip
CN112311718B (zh) * 2019-07-24 2023-08-22 华为技术有限公司 检测硬件的方法、装置、设备及存储介质
US11861020B2 (en) * 2020-06-26 2024-01-02 Intel Corporation Generating keys for persistent memory
US11907409B2 (en) * 2021-09-29 2024-02-20 Dell Products L.P. Dynamic immutable security personalization for enterprise products

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1050789A2 (en) * 1999-05-04 2000-11-08 RSA Security Inc. System and method for authentication seed distribution
CN101218588A (zh) * 2005-05-05 2008-07-09 塞尔蒂卡姆公司 在固件上的更新认证
US7984304B1 (en) * 2004-03-02 2011-07-19 Vmware, Inc. Dynamic verification of validity of executable code

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI20011417A (fi) * 2001-06-29 2002-12-30 Nokia Corp Menetelmä suojata elektroninen laite ja elektroninen laite
US7913289B2 (en) * 2005-05-23 2011-03-22 Broadcom Corporation Method and apparatus for security policy and enforcing mechanism for a set-top box security processor
US9104894B2 (en) * 2005-12-16 2015-08-11 Hewlett-Packard Development Company, L.P. Hardware enablement using an interface
US8375189B2 (en) * 2005-12-30 2013-02-12 Intel Corporation Configuring levels of program/erase protection in flash devices
US20070290715A1 (en) * 2006-06-19 2007-12-20 David Baer Method And System For Using One-Time Programmable (OTP) Read-Only Memory (ROM) To Configure Chip Usage Features
US20080034444A1 (en) * 2006-08-04 2008-02-07 Nokia Corporation System, network entity, terminal and method for providing digital rights management of client applications
US8650399B2 (en) * 2008-02-29 2014-02-11 Spansion Llc Memory device and chip set processor pairing
EP2506176A1 (en) 2011-03-30 2012-10-03 Irdeto Corporate B.V. Establishing unique key during chip manufacturing
CN104160405B (zh) * 2011-12-31 2017-08-15 英特尔公司 用于信任配置的安全设备环境

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1050789A2 (en) * 1999-05-04 2000-11-08 RSA Security Inc. System and method for authentication seed distribution
US7984304B1 (en) * 2004-03-02 2011-07-19 Vmware, Inc. Dynamic verification of validity of executable code
CN101218588A (zh) * 2005-05-05 2008-07-09 塞尔蒂卡姆公司 在固件上的更新认证

Also Published As

Publication number Publication date
WO2014056515A1 (en) 2014-04-17
ZA201502154B (en) 2017-07-26
US9678898B2 (en) 2017-06-13
AP2015008354A0 (en) 2015-04-30
EP2907075A1 (en) 2015-08-19
EP2907075B1 (en) 2016-09-14
US20150261692A1 (en) 2015-09-17
CN104838387A (zh) 2015-08-12

Similar Documents

Publication Publication Date Title
CN104838387B (zh) 芯片验证
US11218323B2 (en) Method and system for producing a secure communication channel for terminals
US9602282B2 (en) Secure software and hardware association technique
Simpson et al. Offline hardware/software authentication for reconfigurable platforms
US8677144B2 (en) Secure software and hardware association technique
US8423774B2 (en) Integrity protected smart card transaction
US9721071B2 (en) Binding of cryptographic content using unique device characteristics with server heuristics
EP2506488B1 (en) Secure dynamic on-chip key programming
US20130086385A1 (en) System and Method for Providing Hardware-Based Security
CN107078905A (zh) 用于进行可信设备登记的技术
EP3732821B1 (en) Secure provisioning of keys
CN104868998B (zh) 一种向电子设备供应加密数据的系统、设备和方法
TW202137199A (zh) 生物支付設備的認證方法、裝置、電腦設備和儲存媒體
Zhang et al. A pragmatic per-device licensing scheme for hardware IP cores on SRAM-based FPGAs
US8645712B1 (en) Electronic circuit design copy protection
CN102270285B (zh) 密钥授权信息管理方法及装置
Alzomai et al. The mobile phone as a multi OTP device using trusted computing
US20160277182A1 (en) Communication system and master apparatus
CN107278357B (zh) 密码系统和方法
EP2575068A1 (en) System and method for providing hardware-based security
US20210273939A1 (en) Devices and methods for authentication
Zhang et al. Secure Licensing of IP Cores on SRAM-Based FPGAs
CA3213478A1 (en) Binding a trust anchor and an asic

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant