本发明专利技术涉及读写方法,公开了一种一次性编程OTP寄存器中的芯片标识符读写方法。本发明专利技术中将待写入到一次性编程OTP寄存器中的芯片标识符通过系统接口接收并保存在临时寄存器中,系统获取所述芯片标识符后会自动销毁之前保存的数据,之后对获取的芯片标识符进行安全散列算法SHA的运算加密,再将该加密后的芯片标识符写入到OTP寄存器中的设定地址内,在从OTP寄存器中读出芯片标识符时,再对上述加密后的芯片标识符进行SHA运算加密,最后用户得到经过两次加密后的芯片标识符。与现有技术相比,本发明专利技术中显示给用户的芯片标识符经过两次加密处理,因SHA的运算过程单向不可逆,即使是黑客也很难逆向推断出OTP寄存器里面真实保存的芯片标识符。
【技术实现步骤摘要】
OTP寄存器中的芯片标识符读写方法
本专利技术涉及标识符读写方法,特别涉及一次性编程OTP寄存器中的芯片标识符读写方法。
技术介绍
随着嵌入式应用的越来越广泛,产品的安全也显得越来越重要。一方面是为了保护硬件设计,另外一方面也是为了产品本身的安全,防止被黑客攻击(HACKED)。为了保护芯片中的数据,越来越多的厂商在芯片内部提供了一种特殊的寄存器:OTP寄存器(OneTimeProgrammable,一次性编程寄存器)。OTP寄存器的特点是每组OTP寄存器包括多个比特位,对每一比特位而言,信息都是一次性写入,不可重写,但是不同比特位可以分多次写入。掉电不丢失数据,可以反复读出数据。芯片标识符ChipID具有唯一性和不可更改的要求,所以目前通常都使用OTP寄存器来实现。目前的ChipID的写入和读出方法如图1所示:首先是步骤101,获取设定的ChipID;然后是步骤102,把设定的ChipID写入到OTP寄存器;接着步骤103,在需要读出ChipID时,从OTP寄存器中读出设定的ChipID;最后步骤104,用户获取从OTP寄存器读出的设定的ChipID。通常步骤2中把设定的ChipID写入到OTP寄存器是使用电子熔丝e-Fuse实现的,从硅片代工厂生产出来时,所有芯片都是同样的值,比如说16位0x0,当把设定的ChipID写入到OTP寄存器时后,芯片的值可以改成设定的ChipID,比如说是16位的0x1,最后一位改变了,最后系统读到的值就是步骤101中设定的ChipID。这个过程中芯片的外部虽然没有变化,但是由于e-Fuse对芯片的物理影响比较大,如果把这颗芯片解剖分析,就很容易发现改写的位,用光学显微镜就能很容易逆向分析破解这些ChipID。当然也可以把未写入设定的ChipID的芯片(对应ID为0x0)改写为0x1,实现复制拷贝,这样就对产品本身的安全性造成很大的威胁。另外现有技术中系统获取设定的ChipID后,用于保存这个ChipID的临时寄存设备中仍然保存着这个ChipID,这样会给ChipID的安全造成隐患。
技术实现思路
本专利技术的目的在于提供一种一次性编程OTP寄存器中的OTP寄存器中的芯片标识符读写方法,使得在获取芯片标识符ChipID之后就可以把之前保存的数据销毁,且用户和厂商使用OTP寄存器可以得到唯一的芯片标识符ChipID,而且难以被逆向破解和非法复制。为解决上述技术问题,本专利技术提供了一种一次性编程OTP寄存器中的芯片标识符读写方法,包含以下步骤:接收用于待写入到一次性编程OTP寄存器中的芯片标识符;其中,接收的芯片标识符保存在临时寄存器中;获取保存在所述临时寄存器中的芯片标识符;对所述获取的芯片标识符进行安全散列算法SHA的运算,得到经所述SHA加密后的芯片标识符;将经所述SHA加密后的芯片标识符写入到所述OTP寄存器中的设定地址内;在从所述OTP寄存器中读出所述芯片标识符时,获取所述OTP寄存器中所述设定地址内的数据;将所述获取的数据进行SHA的运算,得到经所述SHA加密后的读取数据;将经所述SHA加密后的读取数据显示给用户;其中,在获取保存在所述临时寄存器中的芯片标识符之后,销毁所述临时寄存器中保存的数据。与现有技术相比,本专利技术中芯片标识符在写入到OTP寄存器之前会把接收到的芯片标识符保存在临时寄存器中,当临时寄存器中的芯片标识符被获取后系统就会自动刷白销毁临时寄存器中的数据,有效的保护了芯片标识符的安全,防止被非法盗取。另外,本专利技术中写入到OTP寄存器的芯片标识符是经过SHA运算后得到的加密的芯片标识符,该加密的芯片标识符与上述待写入到OTP寄存器中的芯片标识符不同,因此可以对待写入到OTP寄存器中的芯片标识符进行加密保护,防止被破解;并且,从OTP寄存器中读取这个加密的芯片标识符时还会经过一次SHA的运算,使最终显示给用户的芯片标识符经过两次加密处理,上述显示给用户的芯片标识符跟写入到OTP寄存器中的已经加密的芯片标识符也不相同,这样就对待写入到OTP寄存器中的芯片标识符作了进一步的加密保护。由于SHA的运算过程是单向不可逆的,所以即使是黑客也很难根据最终显示给用户的芯片标识符来逆向推断出OTP寄存器里面真实的芯片标识符。另外,SHA是把不定长度的一串消息,加以特定的算法处理,得到固定长度的数据,这个数据在理论上破解很困难,工程实现也是不可能的,所以本专利技术中的芯片标识符也是唯一的,不可复制的。优选地,在进行SHA的运算之前,还包含以下步骤:将所述待写入到OTP寄存器中的芯片标识符作为第一字段,在所述第一字段后的第二字段用于存放停止位,在所述第二字段后的第三字段为填充字段,所述填充字段中的各比特位填充为0;在所述第三字段后的第四字段用于指示所述第一字段占用的比特位数;所述第一字段、第二字段、第三字段和第四字段的比特长度总和为512位比特;在所述将待写入到OTP寄存器中的芯片标识符,进行SHA的运算的步骤中,将所述第一字段、第二字段、第三字段和第四字段组成的512位比特,进行所述SHA的运算。在SHA运算过程中,由于输入的数据必须是512位比特,通过上述SHA运算之前的准备步骤,就能将第一字段、第二字段、第三字段和第四字段的比特长度总和综合处理成适用于SHA运算的512位比特,保证了SHA运算的可操作性和准确性。优选地,本专利技术中的芯片标识符包含用户设定的ID和厂商设定的ID,使用这种方法,只要保护好厂商代码或用户代码,即使是知晓全部设计细节的研发人员,缺了任意一个代码,都不能破解上述芯片标识符,也不能把空白芯片,改写为有特定ChipID的芯片,比单有一个厂商代码或者用户代码安全系数更高。另外,本专利技术是通过系统接口获取所述用户设定的ID和厂商设定的ID。该系统接口用于把用户设定的ID和厂商设定的ID合并处理成一定的顺序,便于下一步SHA算法对其进行运算处理。另外,本专利技术中的临时寄存器有两个,分别用于保存所述用户设定的ID和厂商设定的ID,使芯片标识符的输入过程井然有序,不容易出错。另外,本专利技术中的OTP寄存器中的用于存放用户设定的ID的字段,为该OTP寄存器中从低到高的第72个比特位至第103个比特位;用于存放厂商设定的ID的字段,为该OTP寄存器中从低到高的第104个比特位至第247个比特位。由于使用SHA算法运算后的芯片标识符信息会按照一定的顺序写入到OTP寄存器中,并且在从OTP寄存器中读出芯片标识符时也要经过SHA算法的运算,而本专利技术中OTP寄存器中用户设定的ID的字段和厂商设定的ID的字段是有一一对应的位置存放关系的,这就为SHA算法的准确性提供了保障,使整个运算过程井井有条,不容易发生由于位置关系不正确导致的运算错误。作为本专利技术的进一步改进,在将由SHA加密后的芯片标识符写入到所述OTP寄存器中的设定地址内的步骤之前,还可以包含以下步骤:通过软件对经所述SHA加密后的芯片标识符进行测试,判断所述加密是否成功,如果加密成功,则再进入所述将经所述SHA加密后的芯片标识符写入到所述OTP寄存器中的设定地址内的步骤。上述软件测试可以避免由于SHA运算错误把错误的芯片标识符写入到OTP寄存器中,而且,如果软件测试加密失败,还会给出SHA运算错误的提示,便于用户及时修改相本文档来自技高网...
【技术保护点】
一种一次性编程OTP寄存器中的芯片标识符读写方法,其特征在于,包含以下步骤:接收用于待写入到一次性编程OTP寄存器中的芯片标识符;其中,接收的芯片标识符保存在临时寄存器中;获取保存在所述临时寄存器中的芯片标识符;对所述获取的芯片标识符进行安全散列算法SHA的运算,得到经所述SHA加密后的芯片标识符;将经所述SHA加密后的芯片标识符写入到所述OTP寄存器中的设定地址内;在从所述OTP寄存器中读出所述芯片标识符时,获取所述OTP寄存器中所述设定地址内的数据;将所述获取的数据进行SHA的运算,得到经所述SHA加密后的读取数据;将经所述SHA加密后的读取数据显示给用户;其中,在获取保存在所述临时寄存器中的芯片标识符之后,销毁所述临时寄存器中保存的数据。
【技术特征摘要】
1.一种一次性编程OTP寄存器中的芯片标识符读写方法,其特征在于,包含以下步骤:接收用于待写入到一次性编程OTP寄存器中的芯片标识符;其中,接收的芯片标识符保存在临时寄存器中;获取保存在所述临时寄存器中的芯片标识符;对所述获取的芯片标识符进行安全散列算法SHA的运算,得到经所述SHA加密后的芯片标识符;将经所述SHA加密后的芯片标识符写入到所述OTP寄存器中的设定地址内;在从所述OTP寄存器中读出所述芯片标识符时,获取所述OTP寄存器中所述设定地址内的数据;将所述获取的数据进行SHA的运算,得到经所述SHA加密后的读取数据;将经所述SHA加密后的读取数据显示给用户;其中,在获取保存在所述临时寄存器中的芯片标识符之后,销毁所述临时寄存器中保存的数据;其中,在将待写入到OTP寄存器中的芯片标识符,进行SHA的运算之前,还包含以下步骤:将所述待写入到OTP寄存器中的芯片标识符作为第一字段,在所述第一字段后的第二字段用于存放停止位,在所述第二字段后的第三字段为填充字段,所述填充字段中的各比特位填充为0;在所述第三字段后的第四字段用于指示所述第一字段占用的比特位数;所述第一字段、第二字段、第三字段和第四字段的比特长度总和为512位比特;在所述将待写入到OTP寄存器中的芯片标识符,进行SHA的运算的步骤中,将所述第一字段、第二字段、第三字段和第四字段组成的512位比特,进行所述SHA的运算。2.根据权利要求1所述的OTP寄存器中的芯片标识符读写方法,其特征在于,在将所述获取的数据进行SHA的运算,得到经所述SHA加密后的读取数据的步骤之前,还包含以下步骤:将所述获取的数据作为第一字段,在所述第一字段后的第二字段用于存放停止位,在所述第二字段后的第三字段为填充字段,所述填充字段中的各比特位填充为0;在所述第三字段后的第四字段用于指示所述第一字段占用的比特位数;所述第一字段、第二字段、第三字段和第四字段的比特长度总和为512位比特;在将所述获取的数据进行SHA的运算,得到经所述SHA加密后的读取数据的步骤中,将...
【专利技术属性】
技术研发人员:李林,仲亚东,夏建明,
申请(专利权)人:上海华力创通半导体有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。