Otp寄存器中的芯片标识符读写方法_2

文档序号:8261387阅读:来源:国知局
[0040]图5是根据本发明第一实施方式中的读出一次性编程OTP寄存器的芯片标识符的数据通道;
[0041]图6是根据本发明第二实施方式中的写入一次性编程OTP寄存器的芯片标识符的数据通道。
【具体实施方式】
[0042]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
[0043]本发明的第一实施方式涉及一种一次性编程OTP寄存器中的芯片标识符读写方法。具体流程如图2所示。
[0044]首先是步骤201,通过系统接口接收用于待写入到OTP寄存器中的芯片标识符。
[0045]该Chip ID包含用户设定的ID、厂商设定的ID、其它自定义的ID或其任意组合的ID,在本实施方式中使用用户设定的ID和厂商设定的ID的组合,如图3所示。使用这种方法,只要保护好用户设定的ID和厂商设定的ID,即使是知晓全部设计细节的研发人员,缺了任意一个值,都不能破解上述芯片标识符,也不能把空白芯片,改写为有特定Chip ID的芯片,比单有一个厂商代码或者用户代码安全系数更高。
[0046]接着步骤202,将系统接口接收到的芯片标识符保存在临时寄存器中。
[0047]在本实施方式中,上述临时寄存器有两个,分别用于保存所述用户设定的ID和厂商设定的ID,使芯片标识符的输入过程井然有序,不容易出错。
[0048]接着步骤203,获取保存在临时寄存器中的芯片标识符后销毁临时寄存器中保存的数据。
[0049]保存在临时寄存器中的芯片标识符还需要经过一个合并处理的过程才会被系统获取,这个合并的过程用于把用户设定的ID和厂商设定的ID合并处理成一定的顺序,以便用于后续的SHA运算。具体如图4所示:
[0050]首先系统接口将待写入到OTP寄存器中的由用户设定的ID (图4中编号I)和厂商设定的ID (图4中编号2)组成的Chip ID作为第一字段,如图4中的编号3,然后在上述第一字段后的第二字段存放停止位,如图4中的编号4,之后把上述第二字段后的第三字段作为为填充字段,该填充字段中的各比特位填充为0,如图4中的编号5,最后将第三字段后的第四字段作为指示上述第一字段占用的比特位数,如图4中的编号6。
[0051]上述第一字段、第二字段、第三字段和第四字段的比特长度总和为512位比特,其中第四字段的比特长度为64位比特,其余三段比特长度为512位比特减去64位比特,SP448位比特。
[0052]上述合并过程完成后,系统犹取保存在临时寄存器中的芯片标识符,之后系统会自动刷白销毁保存在临时寄存器中的数据,这样就有效的保护了芯片标识符的安全,防止被非法盗取。
[0053]经过上述合并过程才能对上述设定的值进行SHA运算,在SHA运算过程中,由于输入的数据必须是512位比特,通过上述SHA运算之前的准备步骤,就能将第一字段、第二字段、第三字段和第四字段的比特长度总和综合处理成适用于SHA运算的512位比特,保证了SHA运算的可操作性和准确性。
[0054]接着是步骤204,使用安全散列算法SHA (Secure Hash Algorithm)算法对从临时寄存器中获取的Chip ID进行运算加密。
[0055]SHA算法是把不定长度的一串设定值,加以特定的算法处理,得到固定长度的数据,即加密后的Chip ID。
[0056]以用户设定的ID[31:0]为例,如图4所示。
[0057]用户设定的ID (准备写入)原始数据为0XF66FAA55,经过SHA运算加密后的用户设定的 ID 为 0x8558c7b5d53fb052af498dcf9bl7fb487fe877e9=SHA(F66FAA55),实际写入OTP寄存器的被保存值是0x7fe877e9,通过SHA后得到OTP寄存器读出来的数据是0x66cle9n9a4891253al00e86cac4239a58604ad7=SHA(7fe877e9),软件系统读到的用户设置的 ID为 0x58604ad7。
[0058]软件认为写入值efuse_pgm_word[103:72](对应用户设定的ID[31:0])为0xF66FAA55,但是 OTP 寄存器实际保存值 efuse_pgm_real_word[103:72]为 0x7FE877E9。
[0059]由于SHA运算的过程是单向不可逆的,使用SHA算法对设定的Chip ID进行运算后加密得到的Chip ID跟步骤101中待写入到OTP寄存器中的原始的Chip ID是不同的ChipID,因此在不知道用户设定的ID原始数据和厂商设定的ID原始数据的情况下,即使是已知的特定OTP寄存器中的ID,也是不能被复制的。
[0060]SHA算法包括SHA160/224/256/384/512和MD4/MD5/MD6等多种算法实现,理论上破解很困难(即目前的数学分析理论已经证明了当前数学工具不能通过对加密后数据的分析,反推破解出加密前的原始数据),工程实现是不可能的(即无法使用暴力穷举的方式,根据加密后的数据破解出加密前的原始数据)。其特征如下:
[0061]I)由数据摘要反推原输入数据,从计算理论上来说是很困难;
[0062]2)想要找到两组不同的数据对应到相同的数据摘要,从计算理论上来说也是很困难的;
[0063]3)任何对输入数据的变动,都有很高的机率导致其产生的数据摘要迥异。
[0064]由于SHA的具体算法已是现有的成熟技术,在此不再赘述。
[0065]接着进入步骤205,将经SHA加密后的Chip ID写入OTP寄存器的设定地址内。其中,系统写入OTP寄存器时,厂商设定的ID[143:0]和用户设定的ID[31:0]必须分两次写入,写入数据通过SHA加密以后才能真正写入OTP寄存器。具体地说:
[0066]先把上述加密后的Chip ID,取低位的N个比特位,所述N为厂商设定的ID的比特长度,再将上述N个比特位写入到OTP寄存器中的用于存放厂商设定的ID的字段中,然后将这N个比特位中的低位的NI个比特位写入到OTP寄存器中的用于存放用户设定的ID的字段中。其中,NI为用户设定的ID的比特长度。
[0067]至此,写入过程结束。
[0068]如图4所示,在本实施例中,OTP寄存器中的用于存放用户设定的ID的字段,为该OTP寄存器中从低到高的第72个比特位至第103个比特位,用于存放厂商设定的ID的字段,为该OTP寄存器中从低到高的第104个比特位至第247个比特位。
[0069]由于使用SHA算法运算后的芯片标识符信息会按照一定的顺序写入到OTP寄存器中,而本发明中OTP寄存器中用户设定的ID的字段和厂商设定的ID的字段是有一一对应的位置存放关系的,这就为SHA算法的准确性提供了保障,使整个运算过程井井有条,不容易发生由于位置关系不正确导致的运算错误。
[0070]本步骤中OTP寄存器的写入是通过电子熔丝e-Fuse、烧断laser或熔断fuse来实现的,其中efuse型OTP寄存器包含耦合电容型的efuse寄存器、串联晶体管型的efuse寄存器和电介质击穿型的efuse寄存器。这些方式实现的OTP寄存器特点是只能一次性写入,不可改写,但是可以重复读出数据,如果有需要,芯片厂商也可以根据客户的需要写入特定的序列号,这样,每个芯片都会有一个不一样的ID号,避免被复制,符合Chip ID具有唯一性和不可更改的要求。
[0071]步骤206,读出经过加密后的芯片标识符。
[0072]步骤207,使用SHA算法对读出的加密后的芯片标识符进行第二次运算加密。
[0073]在对加密后的Chip ID进行第二次运算加密之前也要经过步骤203中的合并处理过程,如图5中的编号3、4、5和6所示,本步骤中的合并处理过程跟步骤203中的合并处理过程相同,此处不做赘述。
[0074]对合并处理后的Chip ID进行SHA的运算过成也是跟步骤204的SHA运算过程相同,此处不做赘述。
[0075]经过此步骤的第二次SHA运算,得到了加密两次的Chip ID。
[0076]最后进入步骤208,用户获取经过两次加密的芯片标识符。
[0077]此步骤中用户获取的Chip ID与步骤205中写入到OTP寄存器中的Chip ID是不同的Chip ID,与步骤203中从临时寄存器获取的待写入到OTP寄存器中的Chip ID也是不同的Chip ID,用户获取的Chip ID相当于是经过了两次加密的Chip ID,大大的增加了Chip ID的安全系数。
[0078]在此还以用户设定的ID [31:0]为例,如图5所示。
[0079]系统通过DRM (DigitalR
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1