OTP操作的大概樣子
OTP寄存器和FLASH數據區域很類似,1能被改寫為0,但0永遠也不能寫成1.如果有一個32位的OTP寄存器,出產的值是0xFFFFFFFF,如果用戶通過編程,將OTP寄存器的值寫為0xFFFFFFFE后,那OTP寄存器再也不能在改寫為0xFFFFFFFF了;當然,這個OTP寄存器的值還可以改寫為0xFFFFFFFC或其它。
(不知道這里是否難理解,我再啰嗦一下,這里就是只修改了最后一個位,其他的都還是保持原始的狀態還沒有修改,那我當然還可以再修改一次。)
為了給OTP寄存器提供保護,一般這類FLASH芯片還會提供一個LOCK寄存器。LOCK寄存器(同屬OTP)也只能燒寫一次。LOCK寄存器的每一位對應于一個OTP寄存器。
(套娃,就是告訴你這如果部分flash的數據很重要,所以我要保護好它,我用了OTP。然后我還得保護好操作OTP的寄存器,那我就把操作它的的也保護好,所以LOCK就是拿來保護好OTP寄存器的)
如果與OTP寄存器對應LOCK寄存器的位(BIT)從1寫為0,就意味著這個被鎖住的OTP寄存器再也不能進行寫操作了。即使OTP的當前值為0XFFFFFFFF,它的值也永遠不可以被改寫了。
通過OTP寄存器與LOCK寄存器,用戶可以在OTP里保存一些特定的信息,例如軟件版本號,硬件版本號,秘鑰等信息。(這不就實例化了它的作用,你還能想到什么?)
同時,這類FLASH芯片內部還會有另外一個OTP寄存器,這個寄存器在出產的時候就被廠家編程過了,寫入特定的序列號,并LOCK住。
如果有需要,FLASH廠商也可以根據客戶的需要寫入特定的序列號。這樣,每個芯片都會有一個不一樣的ID號,避免被復制。
除了FLASH芯片,很多CPU廠商,也在CPU內部提供類似的OTP寄存器,供用戶使用,利于開發更安全的應用。
象一些比較大的廠商,例如TI,FREESCALE等,他們往往是不公開某些芯片的數據手冊的。如果要獲得他們的數據手冊,一是要有大量的訂貨,同時也需要簽署一定的保密協議。
OTP本身并不能提供絕對安全的應用。但OTP的提供,有利于開發商開發和部署更安全的應用,保護自己和客戶的利益。
象很多大的廠商,例如NOKIA,MOTOROAL,SAMSUNG和SONYERRICSON等,都需要根據客戶(運營商)的要求,開發一些只能在自己的網絡里使用的手機。其中很多軟件和硬件的保護都是基于OTP來實現的。
OTP的解密
對于OTP芯片根據其存儲器的特點,簡單的方法就是想辦法把密碼去掉,因為OTP形式存儲不能用電擦除,但是可以用紫外光來擦除,那么只要能控制好了只把密碼部分擦除掉,而保留了程序段,那么這樣的芯片就是不加密的了。
如果這樣還沒有辦法,那么如果把芯片經過去層處理,把存儲器進行拍照,因為代碼是以電荷的碼點形式存在的,然后把照片經過染色處理,把1和0區分讀出整理,這樣就得到了存儲器里的代碼。 解密的方法和手段很多,以上只是簡單的提了一下思路。
-
芯片
+關注
關注
456文章
50889瀏覽量
424301 -
單片機
+關注
關注
6037文章
44564瀏覽量
635980 -
寄存器
+關注
關注
31文章
5355瀏覽量
120541 -
存儲器
+關注
關注
38文章
7496瀏覽量
163932 -
OTP
+關注
關注
4文章
218瀏覽量
47203
發布評論請先 登錄
相關推薦
評論