Otp寄存器中的芯片標識符讀寫方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及標識符讀寫方法,特別涉及一次性編程OTP寄存器中的芯片標識符讀寫方法。
【背景技術(shù)】
[0002]隨著嵌入式應用的越來越廣泛,產(chǎn)品的安全也顯得越來越重要。一方面是為了保護硬件設(shè)計,另外一方面也是為了產(chǎn)品本身的安全,防止被黑客攻擊(HACKED)。為了保護芯片中的數(shù)據(jù),越來越多的廠商在芯片內(nèi)部提供了一種特殊的寄存器=OTP寄存器(One TimeProgrammable,一次性編程寄存器)。OTP寄存器的特點是每組OTP寄存器包括多個比特位,對每一比特位而言,信息都是一次性寫入,不可重寫,但是不同比特位可以分多次寫入。掉電不丟失數(shù)據(jù),可以反復讀出數(shù)據(jù)。
[0003]芯片標識符Chip ID具有唯一性和不可更改的要求,所以目前通常都使用OTP寄存器來實現(xiàn)。目前的Chip ID的寫入和讀出方法如圖1所示:
[0004]首先是步驟101,獲取設(shè)定的Chip ID ;
[0005]然后是步驟102,把設(shè)定的Chip ID寫入到OTP寄存器;
[0006]接著步驟103,在需要讀出Chip ID時,從OTP寄存器中讀出設(shè)定的Chip ID ;
[0007]最后步驟104,用戶獲取從OTP寄存器讀出的設(shè)定的Chip ID。
[0008]通常步驟2中把設(shè)定的Chip ID寫入到OTP寄存器是使用電子熔絲e-Fuse實現(xiàn)的,從硅片代工廠生產(chǎn)出來時,所有芯片都是同樣的值,比如說16位0x0,當把設(shè)定的ChipID寫入到OTP寄存器時后,芯片的值可以改成設(shè)定的Chip ID,比如說是16位的0x1,最后一位改變了,最后系統(tǒng)讀到的值就是步驟101中設(shè)定的Chip ID。這個過程中芯片的外部雖然沒有變化,但是由于e-Fuse對芯片的物理影響比較大,如果把這顆芯片解剖分析,就很容易發(fā)現(xiàn)改寫的位,用光學顯微鏡就能很容易逆向分析破解這些Chip ID。當然也可以把未寫入設(shè)定的Chip ID的芯片(對應ID為0x0)改寫為0x1,實現(xiàn)復制拷貝,這樣就對產(chǎn)品本身的安全性造成很大的威脅。
[0009]另外現(xiàn)有技術(shù)中系統(tǒng)獲取設(shè)定的Chip ID后,用于保存這個Chip ID的臨時寄存設(shè)備中仍然保存著這個Chip ID,這樣會給Chip ID的安全造成隱患。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的在于提供一種一次性編程OTP寄存器中的OTP寄存器中的芯片標識符讀寫方法,使得在獲取芯片標識符Chip ID之后就可以把之前保存的數(shù)據(jù)銷毀,且用戶和廠商使用OTP寄存器可以得到唯一的芯片標識符Chip ID,而且難以被逆向破解和非法復制。
[0011]為解決上述技術(shù)問題,本發(fā)明提供了一種一次性編程OTP寄存器中的芯片標識符讀寫方法,包含以下步驟:
[0012]接收用于待寫入到一次性編程OTP寄存器中的芯片標識符;其中,接收的芯片標識符保存在臨時寄存器中;
[0013]獲取保存在所述臨時寄存器中的芯片標識符;
[0014]對所述獲取的芯片標識符進行安全散列算法SHA的運算,得到經(jīng)所述SHA加密后的芯片標識符;
[0015]將經(jīng)所述SHA加密后的芯片標識符寫入到所述OTP寄存器中的設(shè)定地址內(nèi);
[0016]在從所述OTP寄存器中讀出所述芯片標識符時,獲取所述OTP寄存器中所述設(shè)定地址內(nèi)的數(shù)據(jù);
[0017]將所述獲取的數(shù)據(jù)進行SHA的運算,得到經(jīng)所述SHA加密后的讀取數(shù)據(jù);
[0018]將經(jīng)所述SHA加密后的讀取數(shù)據(jù)顯示給用戶;
[0019]其中,在獲取保存在所述臨時寄存器中的芯片標識符之后,銷毀所述臨時寄存器中保存的數(shù)據(jù)。
[0020]與現(xiàn)有技術(shù)相比,本發(fā)明中芯片標識符在寫入到OTP寄存器之前會把接收到的芯片標識符保存在臨時寄存器中,當臨時寄存器中的芯片標識符被猶取后系統(tǒng)就會自動刷白銷毀臨時寄存器中的數(shù)據(jù),有效的保護了芯片標識符的安全,防止被非法盜取。另外,本發(fā)明中寫入到OTP寄存器的芯片標識符是經(jīng)過SHA運算后得到的加密的芯片標識符,該加密的芯片標識符與上述待寫入到OTP寄存器中的芯片標識符不同,因此可以對待寫入到OTP寄存器中的芯片標識符進行加密保護,防止被破解;并且,從OTP寄存器中讀取這個加密的芯片標識符時還會經(jīng)過一次SHA的運算,使最終顯示給用戶的芯片標識符經(jīng)過兩次加密處理,上述顯示給用戶的芯片標識符跟寫入到OTP寄存器中的已經(jīng)加密的芯片標識符也不相同,這樣就對待寫入到OTP寄存器中的芯片標識符作了進一步的加密保護。由于SHA的運算過程是單向不可逆的,所以即使是黑客也很難根據(jù)最終顯示給用戶的芯片標識符來逆向推斷出OTP寄存器里面真實的芯片標識符。另外,SHA是把不定長度的一串消息,加以特定的算法處理,得到固定長度的數(shù)據(jù),這個數(shù)據(jù)在理論上破解很困難,工程實現(xiàn)也是不可能的,所以本發(fā)明中的芯片標識符也是唯一的,不可復制的。
[0021]優(yōu)選地,在進行SHA的運算之前,還包含以下步驟:
[0022]將所述待寫入到OTP寄存器中的芯片標識符作為第一字段,在所述第一字段后的第二字段用于存放停止位,在所述第二字段后的第三字段為填充字段,所述填充字段中的各比特位填充為O ;
[0023]在所述第三字段后的第四字段用于指示所述第一字段占用的比特位數(shù);
[0024]所述第一字段、第二字段、第三字段和第四字段的比特長度總和為512位比特;
[0025]在所述將待寫入到OTP寄存器中的芯片標識符,進行SHA的運算的步驟中,將所述第一字段、第二字段、第三字段和第四字段組成的512位比特,進行所述SHA的運算。
[0026]在SHA運算過程中,由于輸入的數(shù)據(jù)必須是512位比特,通過上述SHA運算之前的準備步驟,就能將第一字段、第二字段、第三字段和第四字段的比特長度總和綜合處理成適用于SHA運算的512位比特,保證了 SHA運算的可操作性和準確性。
[0027]優(yōu)選地,本發(fā)明中的芯片標識符包含用戶設(shè)定的ID和廠商設(shè)定的ID,使用這種方法,只要保護好廠商代碼或用戶代碼,即使是知曉全部設(shè)計細節(jié)的研發(fā)人員,缺了任意一個代碼,都不能破解上述芯片標識符,也不能把空白芯片,改寫為有特定Chip ID的芯片,比單有一個廠商代碼或者用戶代碼安全系數(shù)更高。
[0028]另外,本發(fā)明是通過系統(tǒng)接口獲取所述用戶設(shè)定的ID和廠商設(shè)定的ID。該系統(tǒng)接口用于把用戶設(shè)定的ID和廠商設(shè)定的ID合并處理成一定的順序,便于下一步SHA算法對其進行運算處理。
[0029]另外,本發(fā)明中的臨時寄存器有兩個,分別用于保存所述用戶設(shè)定的ID和廠商設(shè)定的ID,使芯片標識符的輸入過程井然有序,不容易出錯。
[0030]另外,本發(fā)明中的OTP寄存器中的用于存放用戶設(shè)定的ID的字段,為該OTP寄存器中從低到高的第72個比特位至第103個比特位;用于存放廠商設(shè)定的ID的字段,為該OTP寄存器中從低到高的第104個比特位至第247個比特位。
[0031]由于使用SHA算法運算后的芯片標識符信息會按照一定的順序?qū)懭氲絆TP寄存器中,并且在從OTP寄存器中讀出芯片標識符時也要經(jīng)過SHA算法的運算,而本發(fā)明中OTP寄存器中用戶設(shè)定的ID的字段和廠商設(shè)定的ID的字段是有一一對應的位置存放關(guān)系的,這就為SHA算法的準確性提供了保障,使整個運算過程井井有條,不容易發(fā)生由于位置關(guān)系不正確導致的運算錯誤。
[0032]作為本發(fā)明的進一步改進,在將由SHA加密后的芯片標識符寫入到所述OTP寄存器中的設(shè)定地址內(nèi)的步驟之前,還可以包含以下步驟:
[0033]通過軟件對經(jīng)所述SHA加密后的芯片標識符進行測試,判斷所述加密是否成功,如果加密成功,則再進入所述將經(jīng)所述SHA加密后的芯片標識符寫入到所述OTP寄存器中的設(shè)定地址內(nèi)的步驟。
[0034]上述軟件測試可以避免由于SHA運算錯誤把錯誤的芯片標識符寫入到OTP寄存器中,而且,如果軟件測試加密失敗,還會給出SHA運算錯誤的提示,便于用戶及時修改相關(guān)信息,增加了本發(fā)明的可操作性。
[0035]此外,本發(fā)明中的OTP寄存器可以為燒斷l(xiāng)aser型OTP寄存器、熔斷fuse型OTP寄存器或電子熔絲efuse型OTP寄存器。這些類型的OTP寄存器的特點就是一次性寫入,不可改寫,如果有需要,芯片廠商也可以根據(jù)客戶的需要寫入特定的序列號,這樣,每個芯片都會有一個不一樣的ID號,避免被復制,符合芯片標識符Chip ID具有唯一'丨生和不可更改的要求。
【附圖說明】
[0036]圖1是現(xiàn)有技術(shù)中的一次性編程OTP寄存器中的芯片標識符讀寫方法流程圖;
[0037]圖2是根據(jù)本發(fā)明第一實施方式中的一次性編程OTP寄存器中的芯片標識符讀寫方法流程圖;
[0038]圖3是根據(jù)本發(fā)明第一實施方式中的一次性編程OTP寄存器中的芯片標識符讀寫方法示意圖;
[0039]圖4是根據(jù)本發(fā)明第一實施方式中的寫入一次性編程OTP寄存器的芯片標識符的數(shù)據(jù)通道;