加密读写芯片标识符的方法与流程

文档序号:15145097发布日期:2018-08-10 20:21阅读:284来源:国知局

本发明涉及半导体技术领域,尤其涉及一种加密读写芯片标识符的方法。



背景技术:

随着嵌入式应用的越来越广泛,芯片产品的安全也显得越来越重要。一方面是为了保护硬件设计,另外一方面也是为了产品本身的安全,防止被黑客攻击(hacked)。为了保护芯片中的数据,越来越多的厂商在芯片内部提供了一种特殊的寄存器:otp寄存器(onetimeprogrammable,一次性编程寄存器)。otp寄存器是每位信息都是一次性写入,不可重写,掉电不丢失数据,可以反复读出数据。

芯片标识符chipid,又称设备唯一识别码deviceuniquekeys,是芯片安全性的核心技术,不可逆向解密或重复使用。

为了实现“一芯一异”——每颗芯片都不同,芯片标识符的核心在于标识的唯一性。芯片标识符具有唯一性和不可更改的要求,所以目前通常都使用otp寄存器来实现。实现机制包括efuse/antifuse器件,目前的chipid的写入和读出方法如图1所示:

首先是步骤s101,设定chipid;

然后是步骤s102,把设定的chipid写入到otp寄存器;

接着步骤s103,在需要读出chipid时,从otp寄存器中读出设定的chipid;

最后步骤s104,用户获取从otp寄存器读出的设定的chipid。

通常步骤s102中把设定的chipid写入到otp寄存器是使用电子熔丝e-fuse实现的,从硅片代工厂生产出来时,所有芯片都是同样的值,比如说16位0x0,当把设定的chipid写入到otp寄存器时后,芯片的值可以改成设定的chipid,比如说是16位的0x1,最后一位改变了,最后系统读到的值就是步骤101中设定的chipid。这个过程中芯片的外部虽然没有变化,但是由于e-fuse对芯片的物理影响比较大,如果把这颗芯片解剖分析,就很容易发现改写的位,用光学显微镜就能很容易逆向分析破解这些chipid。当然也可以把未写入设定的chipid的芯片(对应id为0x0)改写为0x1,实现复制拷贝。这样就对产品本身的安全性造成很大的威胁。



技术实现要素:

本发明为了克服上述现有技术存在的缺陷,提供一种加密读写芯片标识符的方法,通过使芯片标识符至少包含第一标识符和第二标识符,且第一标识符根据芯片特定掩模层图形的逻辑值获得,由此实现otp寄存器可以得到唯一的芯片标识符,而且难以被逆向破解和非法复制。sm4算法生成标识符符合国家安全标准,支持密码口令管理。生成过程中分组后利于并行迭代计算,利用硬件电路优势,提高运算性能。

根据本发明的一个方面,提供一种加密读写芯片标识符的方法,包括:获取芯片标识符,所述芯片标识符至少包括按预定顺序排列的第一标识符和第二标识符,所述第一标识符通过读取芯片的特定掩模层图形的逻辑值获得;将所述芯片标识符按sm4进行加密运算,得到经所述sm4加密后的芯片标识符;将经所述sm4加密后的芯片标识符写入到芯片的otp寄存器中的设定地址内,所述设定地址至少包括对应第一标识符的第一地址段和对应第二表示符的第二地址段,所述第一地址段和所述第二地址段的排序顺序与所述第一标识符和第二标识符的排序顺序相同;当要从所述otp寄存器的设定地址内中读出数据时,按所述第一地址段和所述第二地址段的顺序自所述otp寄存器中获取数据;将所述获取的数据按sm4进行加密运算,得到经所述sm4加密后的读取数据;提供经所述sm4加密后的读取数据。

可选地,所述将待写入到otp寄存器中的芯片标识符,按sm4进行加密运算,得到经所述sm4加密后的芯片标识符的步骤还包括:将所述芯片标识符扩展为待运算字段组,所述待运算字段组的比特位数总和为16的整数倍;对所述待运算字段组按sm4进行加密运算,得到经所述sm4加密后的芯片标识符。

可选地,所述待运算字段组包括:第一字段,所述第一字段为所述待写入到otp寄存器中的芯片标识符;第二字段,紧接于所述第一字段,所述第二字段的比特长度为1,且该比特位内填充1作为停止位;第三字段,紧接于所述第二字段,所述第三字段为填充字段,所述填充字段中的各比特位填为0。

可选地,将所述获取的数据按sm4进行加密运算,得到经所述sm4加密后的读取数据还包括:按与所述待写入到otp寄存器中的芯片标识符相同的方式,将所述获取的数据扩展为待运算字段组;对所述待运算字段组按sm4进行加密运算,得到经所述sm4加密后的读取数据。

可选地,所述将经所述sm4加密后的芯片标识符写入到所述otp寄存器中的设定地址内的步骤还包括:若经所述sm4加密后得到的数据的比特长度大于等于所述第一标识符的比特长度,则在经所述sm4加密后得到的数据中,取低n个比特位作为对应第一标识符的第一数据写入到所述otp寄存器中第一地址段中,其中,所述n为所述第一标识符的比特长度;在所述第一数据中,取低n1个比特位作为对应第二标识符的第二数据写入到所述otp寄存器中的第二地址段中,其中,所述n1为所述第二标识符的比特长度。

可选地,所述将经所述sm4加密后的芯片标识符写入到所述otp寄存器中的设定地址内的步骤还包括:若经所述sm4加密后得到的数据的比特长度小于所述第一标识符的比特长度,则将sm4的加密运算过程中生成的一个或多个中间数据与经所述sm4加密后得到的数据拼接直至拼接后的数据的比特长度大于等于所述第一标识符的比特长度;在经拼接后的数据中,取低n个比特位作为对应第一标识符的第一数据写入到所述otp寄存器中第一地址段中,其中,所述n为所述第一标识符的比特长度;在所述第一数据中,取低n1个比特位作为对应第二标识符的第二数据写入到所述otp寄存器中的第二地址段中,其中,所述n1为所述第二标识符的比特长度。

可选地,所述第一标识符为厂商设定的标识符,所述第二标识符为用户设定的标识符。

可选地,所述将所述芯片标识符按sm4进行加密运算,得到经所述sm4加密后的芯片标识符的步骤之后,所述将经所述sm4加密后的芯片标识符写入到芯片的otp寄存器中的设定地址内的步骤之前,还包括:检测所述otp寄存器中的设定地址是否已被编程写入过;若检测到所述设定地址尚未被编程写入过,则继续执行所述将经所述sm4加密后的芯片标识符写入到所述otp寄存器中的设定地址内的步骤;若检测到所述设定地址已被编程写入过,则不执行所述将经所述sm4加密后的芯片标识符写入到所述otp寄存器中的设定地址内的步骤,并报错。

可选地,所述otp寄存器为以下任意一种类型的otp寄存器:烧断型、熔断型、电子熔丝型、反熔丝型otp寄存器。

可选地,所述电子熔丝型otp寄存器包含耦合电容型、串联晶体管型和电介质击穿型的电子熔丝型寄存器。

本发明提供的加密读写芯片标识符的方法具有如下优势:

1)通过使芯片标识符至少包含第一标识符和第二标识符,且第一标识符根据芯片特定掩模层图形的逻辑值获得,由此实现otp寄存器可以得到唯一的芯片标识符,而且难以被逆向破解和非法复制;

2)sm4算法生成标识符符合国家安全标准,支持密码口令管理。生成过程中分组后利于并行迭代计算,利用硬件电路优势,提高运算性能;

3)此外,通过加密算法中多轮的中间数据,以级联的方式,实现中间数据和最终数据的拼接,以处理第一标识符比特长度较长的情况。同时,这样的实施方式拼接无论是最终数据还是中间数据,其值都是唯一且不可逆,因此,通过拼接的方式也可以进一步增加最终获得的第一标识符和第二标识符的唯一性和安全性。

附图说明

通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。

图1示出了根据现有技术的读写芯片标识符方法的流程图。

图2示出了根据本发明实施例的加密读写芯片标识符的方法的流程图。

图3示出了根据本发明一具体实施例的加密读写芯片标识符的方法的流程图。

图4示出了根据本发明一具体实施例的加密读写芯片标识符的方法的示意图。

图5示出了本发明一具体实施例的加密芯片标识符的示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

本发明的读写芯片标识符的加密算法是基于sm4来实现。具体而言,sm4分组密码算法是国家密码管理局于2012年发布的算法,是一种32轮的迭代非平衡feistel结构的分组加密算法,其密钥长度和分组长度均为128。sm4算法的加解密过程中使用的算法是完全相同的,唯一不同点在于该算法的解密密钥是由它的加密密钥进行逆序变换后得到的。

下面将说明sm4加密算法的原理:

假设字段m长度为n比特位,那么对该字段进行sm4分组密码算法需执行如下步骤。

1)填充:首先将1个1和多个0填充到m末尾,填充后的消息m'长度为16的整数倍。

2)迭代:m'按照字为单位进行分组:x0,x1,x2,x3,轮密钥为字rki(i=0,1,…,31),则轮函数f为:

f(x0,x1,x2,x3,rk)=x0^t(x1^x2^x3^rk)

其中,t是一个可逆变换,由非线性变换τ和线性变换l复合而成。

τ由4个并行的s盒构成。设输入为a=(a0,a1,a2,a3),输出为b=(b0,b1,b2,b3),则

(b0,b1,b2,b3)=τ(a)=(sbox(a0),sbox(a1),sbox(a2),sbox(a3))

非线性变换τ的输出是线性变换l的输入。设输入为b,输出为c,则

c=l(b)=b^(b<<<2)^(b<<<10)^(b<<<18)^(b<<<24)

反序变换r为r(a0,a1,a2,a3)=(a3,a2,a1,a0)加密变换为:

xi+4=f(xi,xi+1,xi+2,xi+3,rki)=xi^t(xi+1^xi+2^xi+3^rki),i=0,1,…,31

(y0,y1,y2,y3)=r(x32,x33,x34,x35)=(x35,x34,x33,x32)

加密时轮密钥的使用顺序为:(rk0,rk1,…,rk31)。

3)结果:根据公式,求出加密结果128位比特值。

本发明的目的在于提供一种基于sm4的加密读写芯片标识符的方法,使得用户和厂商使用otp寄存器可以得到唯一的芯片标识符chipid,而且难以被逆向破解和非法复制。

本发明通过开发一种电路层设计方法,确保可以把实现唯一安全芯片的可配置连接放置在特定的通孔层中。该通孔层图形的逻辑值可以对应初始化向量initialvector作为第一标识符,该孔层图形可以理解为“二维码”,可以是通过电子束直写技术在特定的一层掩模实现,每颗芯片都不同。类似于“二维码”,对应该读取通孔层的图形,通孔部分和非通孔部分分别取值为1和0,以此可以获取对应的配置值,并根据配置值(二进制数)获取通孔层的图形的逻辑值作为本发明下述各个实施例的第一标识符。电子束直写(directelectronwriting)作为芯片标识符的创建和存储相当简易,其便于大批量生产,且其鉴定标示过程安全。。电子束直写(directelectronwriting,dews)技术可以满足这样的要求。使得芯片标识符具有唯一性和不可更改。

参见图2,图2示出了根据本发明实施例的加密读写芯片标识符的方法的流程图。图2共示出6个步骤:

步骤s210:获取芯片标识符,所述芯片标识符至少包括按预定顺序排列的第一标识符和第二标识符,所述第一标识符通过读取芯片的特定掩模层图形的逻辑值获得。

该第一标识符例如可以是厂商设定的标识符,该第二标识符例如可以是用户设定的标识符。本发明并非以两个标识符的实施方式为限,三个标识符及更多标识符的情况也在本发明的保护范围之内。

步骤s220:将待写入到一次性编程otp寄存器中的芯片标识符,进行安全散列算法sm4的运算,得到经所述sm4加密后的芯片标识符。

在步骤s210之后,可选地还可以通过软件对经所述sm4加密后的芯片标识符进行测试,判断所述加密是否成功,如果加密成功,则再进入所述将经所述sm4加密后的芯片标识符写入到所述otp寄存器中的设定地址内的步骤。

上述软件测试可以避免由于sm4运算错误把错误的芯片标识符写入到otp寄存器中,而且,如果软件测试加密失败,还会给出sm4运算错误的提示,便于用户及时修改相关信息,增加了本发明的可操作性。

步骤s230:将经所述sm4加密后的芯片标识符写入到所述otp寄存器中的设定地址内。

所述设定地址至少包括对应第一标识符的第一地址段和对应第二表示符的第二地址段,所述第一地址段和所述第二地址段的排序顺序与所述第一标识符和第二标识符的排序顺序相同。

在一个优选例中,可以在将经所述sm4加密后的芯片标识符写入到所述otp寄存器中的设定地址内之前,先检测所述设定地址是否已被编程写入过;如果检测到所述设定地址尚未被编程写入过,则再将经所述sm3加密后的芯片标识符写入到所述otp寄存器中的设定地址内。这样做就能避免将芯片标识符重复写入相同的设定地址,避免出错。

在上述优选例的一个具体实施中,经sm4运算加密后的芯片标识符写入到otp寄存器设定地址之前检测动作中,如果检测到的设定地址已经被编程写入,则将会忽略本次写操作,还可以向上层软件系统报错,这样就能避免因重复编程写入损坏otp寄存器。

步骤s240:当要从所述otp寄存器的设定地址内中读出数据时,按所述第一地址段和所述第二地址段的顺序自所述otp寄存器中获取数据。

步骤s250:将所述获取的数据进行sm4的运算,得到经所述sm4加密后的读取数据。

步骤s260:将经所述sm4加密后的读取数据显示给用户。

与现有技术相比,本发明中写入到otp寄存器的芯片标识符是经过sm4运算后得到的加密的芯片标识符,该加密的芯片标识符与上述待写入到otp寄存器中的芯片标识符不同,因此可以对待写入到otp寄存器中的芯片标识符进行加密保护,防止被破解。此外,从otp寄存器中读取这个加密的芯片标识符时还会经过一次sm4的运算,使最终显示给用户的芯片标识符经过两次加密处理,上述显示给用户的芯片标识符跟写入到otp寄存器中的已经加密的芯片标识符也不相同,这样就对待写入到otp寄存器中的芯片标识符作了进一步的加密保护。

由于sm4的运算过程是单向不可逆的,所以即使是黑客也很难根据最终显示给用户的芯片标识符来逆向推断出otp寄存器里面真实的芯片标识符。另外,sm4是把不定长度的一串消息,加以特定的算法处理,得到固定长度的数据,这个数据在理论上破解很困难,工程实现也是不可能的,所以本发明中的芯片标识符也是唯一的,不可复制的。最后,sm4的安全是基于密钥管理的,算法和实现可以完全公开,只要保护密码就可以维护芯片系统安全。

sm4是国家密码管理局编制的算法,因此经过sm4加密的芯片标识符更加符合国家安全标准。sm4算法将填充后的消息进行分组,迭代过程ebc模式可利用并行计算实现,从而充分利用硬件电路优势,提高运算性能。

优选地,在步骤s220和步骤s250中进行sm4的运算还包含以下步骤:

将待处理数据(所述待写入到otp寄存器中的芯片标识符及自otp寄存器中所述设定地址内的数据)作为第一字段,在所述第一字段后的第二字段用于存放1位1作为停止位,在所述第二字段后的第三字段为填充字段,所述填充字段中的各比特位填为0。所述第一字段、第二字段、第三字段共同组成待运算字段组,待运算字段组的比特位数总和为16的整数倍。对待运算字段组进行所述sm4的运算,并输出128位比特的数据。在sm4运算过程中,由于输入的数据必须是16的整数倍位比特,通过上述sm4运算之前的准备步骤,就能将消息的比特长度总和综合处理成适用于sm4运算的16的整数倍位比特,保证了sm4运算的可操作性和准确性。对于输入数据大于128位的情况,可以通过chain链接方式实现数据缩减为128位的整倍数(即当输入数据大于128位的情况,可以将其缩减为长度小于该输入数据的最大128位的整倍数)。

优选地,本发明中的芯片标识符包含用户设定的标识符和厂商设定的标识符,使用这种方法,只要保护好厂商代码或用户代码,即使是知晓全部设计细节的研发人员,缺了任意一个代码,都不能破解上述芯片标识符,也不能把空白芯片,改写为有特定chipid的芯片,比单有一个厂商代码或者用户代码安全系数更高。

另外,本发明可以通过系统接口获取所述用户设定的标识符和厂商设定的标识符。该系统接口用于把用户设定的标识符和厂商设定的标识符合并处理成一定的顺序,便于下一步sm4算法对其进行运算处理。

另外,本发明中,若经所述sm4加密后得到的数据的比特长度大于等于所述第一标识符的比特长度,则在经sm4运算后得到的加密后的芯片标识符中,取低n个比特位作为第一数据写入到所述otp寄存器中的第一地址段中,其中,所述n为所述厂商设定的标识符的比特长度;在所述第一数据中,取低n1个比特位作为第二数据写入到所述otp寄存器中的第二地址段中,其中,所述n1为所述用户设定的标识符的比特长度。

若经所述sm4加密后得到的数据的比特长度小于所述第一标识符的比特长度,则将sm4的加密运算过程中生成的一个或多个中间数据与经所述sm4加密后得到的数据拼接直至拼接后的数据的比特长度大于等于所述第一标识符的比特长度;在经拼接后的数据中,取低n个比特位作为对应第一标识符的第一数据写入到所述otp寄存器中第一地址段中,其中,所述n为所述第一标识符的比特长度;在所述第一数据中,取低n1个比特位作为对应第二标识符的第二数据写入到所述otp寄存器中的第二地址段中,其中,所述n1为所述第二标识符的比特长度。具体而言,sm4的加密运算过程中由于经过多轮运算,每轮运算生成一中间数据(例如,第1轮加密中间数据a;第2轮加密中间数据b;第3轮加密中间数据c......倒数第3轮加密中间数据x;倒数第2轮加密中间数据y;最后1轮加密数据结果z,自最后1轮向前拼接合并直至拼接后的数据的比特长度大于等于所述第一标识符的比特长度n)。通过加密算法中多轮的中间数据,以级联的方式,实现中间数据和最终数据的拼接,以处理第一标识符比特长度较长的情况。同时,这样的实施方式拼接无论是最终数据还是中间数据,其值都是唯一且不可逆,因此,通过拼接的方式也可以进一步增加最终获得的第一标识符和第二标识符的唯一性和安全性。

由于使用sm4算法运算后的芯片标识符信息会按照一定的顺序写入到otp寄存器中,并且在从otp寄存器中读出芯片标识符时也要经过sm4算法的运算,而本发明中otp寄存器中用户设定的标识符的字段和厂商设定的标识符的字段是有一一对应的位置存放关系的,这就为sm4算法的准确性提供了保障,使整个运算过程井井有条,不容易发生由于位置关系不正确导致的运算错误。

此外,本发明中的otp寄存器可以为烧断laser型otp寄存器、熔断fuse型otp寄存器或电子熔丝e-fuse型otp寄存器。所述e-fuse型otp寄存器可以包含耦合电容型、串联晶体管型和电介质击穿型的e-fuse寄存器。这些类型的otp寄存器的特点就是一次性写入,不可改写,如果有需要,芯片厂商也可以根据客户的需要写入特定的序列号,这样,每个芯片都会有一个不一样的标识符号,避免被复制,符合芯片标识符chipid具有唯一性和不可更改的要求。

下面将结合图3至图5描述本发明提供的具体实施例:

首先是步骤s201,根据芯片特定掩模层获取第一标识符,获取第二标识符,形成芯片标识符。

该chipid包含用户设定的标识符(第二标识符)、厂商设定的标识符(第一标识符)、其它自定义的标识符或其任意组合的标识符。在本实施方式中使用用户设定的标识符和厂商设定的标识符的组合,如图4标号301和302所示。使用这种方法,只要保护好用户设定的标识符和厂商设定的标识符,即使是知晓全部设计细节的研发人员,缺了任意一个值,都不能破解上述芯片标识符,也不能把空白芯片,改写为有特定chipid的芯片,比单有一个厂商代码或者用户代码安全系数更高。

接着是步骤s202,使用安全散列算法sm4算法对设定的chipid进行运算加密。

在步骤s202中,经过系统接口(图4标号304)获取待写入到otp寄存器中的chipid后,需要经过一个合并处理的过程(如图4标号305),用于把用户设定的标识符和厂商设定的标识符合并处理成一定的顺序,以便用于sm4运算。

具体如图5所示:

首先系统接口将待写入到otp寄存器中的由用户设定的标识符和厂商设定的标识符组成的chipid310作为第一字段321,然后在上述第一字段321后的第二字段322用于存放1位1作为停止位,第三字段323作为填充字段,所述填充字段中的各比特位填为0。。上述第一字段321、第二字段322、第三字段323组成待运算字段组,待运算字段组的比特位数总和为16的整数倍。

在sm4运算过程中,由于输入的数据必须是16位比特的整数倍,通过上述sm4运算之前的准备步骤,就能将消息长度总和综合处理成适用于sm4运算的16位比特的整数倍,保证了sm4运算的可操作性和准确性。

使用sm4杂凑算法对设定的chipid进行运算加密。sm4算法是把不定长度的一串设定值,加以特定的算法处理,得到固定长度的数据,即加密后的chipid330。

以输入消息“0123456789abcdeffedcba9876543210”为例,加密密钥为“0123456789abcdeffedcba9876543210”,迭代结果为:

x[28]=536e4246x[29]=86b3e94f

x[30]=d206965ex[31]=681edf34

则密文为“681edf34d206965e86b3e94f536e4246”。

由于sm4运算的过程是单向不可逆的,使用sm4算法对设定的chipid进行运算后加密得到的chipid跟步骤s101中待写入到otp寄存器中的原始的chipid是不同的chipid,因此在不知道用户设定的标识符原始数据和厂商设定的标识符原始数据的情况下,即使是已知的特定otp寄存器中的标识符,也是不能被复制的。

国家密码管理局认证的sm4密码算法架构决定了,即使算法理论和工程实现流程完全公开,只要能保证密码安全,电子束直写dew作为puc芯片标识符的认证过程,在这样的系统中安全可控。

sm4理论上破解很困难(即目前的数学分析理论已经证明了当前数学工具不能通过对加密后数据的分析,反推破解出加密前的原始数据),工程实现是不可能的(即无法使用暴力穷举的方式,根据加密后的数据破解出加密前的原始数据)。其特征如下:

1)由数据摘要反推原输入数据,从计算理论上来说是很困难;

2)想要找到两组不同的数据对应到相同的数据摘要,从计算理论上来说也是很困难的;

3)任何对输入数据的变动,都有很高的机率导致其产生的数据摘要迥异。

可选地,经过步骤s202后,系统还可加一个检测装置,这个检测装置用来检测sm4运算是否正确,如果检测结果正确,就直接进入步骤s203,如果检测结果不正确,则不会进入步骤s203,而是提示用户运算错误,同时还会出现错误提示,提示用户修改相关参数,增加了本实施例的可操作性。

接着进入s203,检测otp寄存器中的设定地址是否已经被编程写入过。

如果检测到上述otp寄存器中的设定地址尚未被编程写入过,就会将经sm4加密后的芯片标识符写入到otp寄存器中的设定地址内,这样就能避免将芯片标识符重复写入相同的设定地址,避免出错;如果检测到上述otp寄存器中的设定地址已被编程写入过,则忽略将经sm4加密后的芯片标识符写入到所述otp寄存器中的设定地址内的操作,并向上层系统报错,这样就能避免因重复编程写入损坏otp寄存器,方便用户及时修改相关信息。

接着进入步骤s204,将经sm4加密后的chipid写入otp寄存器的设定地址内。系统写入otp寄存器时,厂商设定的标识符(例如其比特长度为[127:0])和用户设定的标识符(例如其比特长度为[31:0])必须分两次写入,写入数据通过sm4加密以后才能真正写入otp寄存器。具体地说:

在经sm4运算后得到的加密后的芯片标识符中,取低n个比特位(对应于本实施例中的厂商设定的标识符的比特长度,例如128个比特位)作为第一数据写入到所述otp寄存器中的用于存放厂商设定的标识符的字段中,其中;在所述第一数据中,取低n1(对应于本实施例中的用户设定的标识符的比特长度,例如32个比特位)个比特位作为第二数据写入到所述otp寄存器中的用于存放用户设定的标识符的字段中。

至此,写入过程结束。

在本实施例中,otp寄存器中的用于存放用户设定的标识符的字段,例如为该otp寄存器中从低到高的第72个比特位至第103个比特位,用于存放厂商设定的标识符的字段,例如为该otp寄存器中从低到高的第104个比特位至第232个比特位。

由于使用sm4算法运算后的芯片标识符信息会按照一定的顺序写入到otp寄存器中,而本发明中otp寄存器中用户设定的标识符的字段和厂商设定的标识符的字段是有一一对应的位置存放关系的,这就为sm4算法的准确性提供了保障,使整个运算过程井井有条,不容易发生由于位置关系不正确导致的运算错误。

本步骤中otp寄存器的写入是通过电子熔丝e-fuse、烧断laser或熔断fuse来实现的,其中e-fuse型otp寄存器包含耦合电容型的efuse寄存器、串联晶体管型的e-fuse寄存器和电介质击穿型的e-fuse寄存器。这些方式实现的otp寄存器特点是只能一次性写入,不可改写,但是可以重复读出数据,如果有需要,芯片厂商也可以根据客户的需要写入特定的序列号,这样,每个芯片都会有一个不一样的标识符号,避免被复制,符合chipid具有唯一性和不可更改的要求。上述步骤s204对应图4中的标号305、306及307。

接着进入步骤s205,系统会自动判断是否需要读出芯片标识符。

如果不需要读出芯片标识符,则就会返回判断动作,如此循环下去;

如果需要读出芯片标识符,就会进入下一步骤s206。

步骤s206,在otp寄存器设定地址中读出经过加密后的芯片标识符。

步骤s207,使用sm4算法对读出的加密后的芯片标识符进行第二次运算加密。

在对加密后的chipid进行第二次运算加密之前也要经过步骤s202中的合并处理过程,本步骤中的合并处理过程跟步骤202中的合并处理过程相同,此处不做赘述。

对合并处理后的chipid进行sm4的运算过成也是跟步骤s202的sm4运算过程相同,此处不做赘述。

经过此步骤的第二次sm4运算,得到了加密两次的chipid。

最后进入步骤s208,用户获取经过两次加密的芯片标识符。

此步骤中用户获取的chipid与步骤204中写入到otp寄存器中的chipid是不同的chipid,与步骤s201中待写入到otp寄存器中的chipid也是不同的chipid,用户获取的chipid相当于是经过了两次加密的chipid,大大的增加了chipid的安全系数。

具体而言,可以按如下方式利用系统接口读取用户设定的标识符及厂商设定的标识符。系统可以通过drm(digitalrightmanage数字权利管理,是一种包括加解密以及密钥管理实现保密功能(security)的硬件)读出otp寄存器中的标识符时,经过sm4加密,可以分为用户设定的标识符和厂商设定的标识符两种情况,利用硬件控制信号hardware_sel[1:0]来实现(这两位可以是00/01/10/11,对应4种功能选择,分别对应用户设定的标识符customid/厂商设定的developid和自测试等功能)。具体地址在drm(security)的偏移量0x0100[4:3]处(系统软件可以配置这个地址,改变hardware_sel,实现不同功能),例如,hardware_sel为10(二进制)是读出用户设定的标识符,hardware_sel为11(二进制)是读出厂商设定的标识符。通过sm4处理,达到散列杂凑的目的。

对系统而言,无论是厂商设定的标识符还是用户设定的标识符都不是otp寄存器保存的数据,软件读出的结果都是经过了sm4加密的结果。

至此,整个芯片标识符的读写过程结束。

与现有技术相比,本发明中写入到otp寄存器的芯片标识符是经过sm4运算后得到的加密的芯片标识符,该加密的芯片标识符与上述待写入到otp寄存器中的芯片标识符不同,因此可以对待写入到otp寄存器中的芯片标识符进行加密保护,防止被破解;并且,从otp寄存器中读取这个加密的芯片标识符时还会经过一次sm4的运算,使最终显示给用户的芯片标识符经过两次加密处理,上述显示给用户的芯片标识符跟写入到otp寄存器中的已经加密的芯片标识符也不相同,这样就对待写入到otp寄存器中的芯片标识符作了进一步的加密保护。由于sm4的运算过程是单向不可逆的,所以即使是黑客也很难根据最终显示给用户的芯片标识符来逆向推断出otp寄存器里面真实的芯片标识符。另外,sm4是把不定长度的一串消息,加以特定的算法处理,得到固定长度的数据,这个数据在理论上破解很困难,工程实现也是不可能的,所以本发明中的芯片标识符也是唯一的,不可复制的。最后,sm4算法生成标识符符合国家安全标准,支持密码口令管理。生成过程中分组后利于并行迭代计算,利用硬件电路优势,提高运算性能。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

本发明提供的加密读写芯片标识符的方法具有如下优势:

1)通过使芯片标识符至少包含第一标识符和第二标识符,且第一标识符根据芯片特定掩模层图形的逻辑值获得,由此实现otp寄存器可以得到唯一的芯片标识符,而且难以被逆向破解和非法复制;

2)sm4算法生成标识符符合国家安全标准,支持密码口令管理。生成过程中分组后利于并行迭代计算,利用硬件电路优势,提高运算性能;

3)此外,通过加密算法中多轮的中间数据,以级联的方式,实现中间数据和最终数据的拼接,以处理第一标识符比特长度较长的情况。同时,这样的实施方式拼接无论是最终数据还是中间数据,其值都是唯一且不可逆,因此,通过拼接的方式也可以进一步增加最终获得的第一标识符和第二标识符的唯一性和安全性。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

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