專利名稱:一種利用芯片實現(xiàn)加密的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種利用芯片實現(xiàn)加密的方法。
背景技術(shù):
生產(chǎn)商為了防止他人抄板,通常都會使用一種加密方法來提高芯片程序的可靠性和安全性。青島海信電器股份有限公司于2006年12月31日在先申請了“軟件系統(tǒng)的防盜版保護方法”,其專利申請?zhí)枮?00610171048.4,具體包括如下步驟:
步驟1、利用主芯片的編譯器對加密芯片內(nèi)部的加密程序進行編譯,生成庫文件后,插入到主芯片內(nèi)部的主程序中;
步驟2、通過主芯片生成一個密鑰,輸入到所述的庫文件中,并對所述庫文件的輸出值Result進行存儲;
步驟3、通過主芯片將所述密鑰發(fā)送給加密芯片,加密芯片利用其內(nèi)部的加密函數(shù)對所述密鑰進行加密處理后生成Reed值,返回給主芯片;
步驟4、主芯片對所述的Result值和Reed值進行配對操作,若配對成功,則繼續(xù)執(zhí)行后續(xù)程序;若失敗,則退出主程序。上述步驟I中需要將生成的庫文件插入到主芯片內(nèi)部,過程相對復雜,并且可以反復從主芯片里把數(shù)據(jù)讀出來,數(shù)據(jù)一旦被讀出來,就很容易被破解。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種實現(xiàn)方法簡單,加密操作更為安全可靠的利用芯片實現(xiàn)加密的方法。本發(fā)明一種利用芯片實現(xiàn)加密的方法,包括如下步驟:
步驟1、使用編譯器編譯包含加密算法的加密芯片程序,將編譯出的OTP文件燒錄到加密芯片上,并且在燒錄時將該加密芯片鎖定;
步驟2、主芯片程序跟加密芯片程序使用同一套加密算法,并且主芯片程序跟加密芯片程序使用同一個加密因子進行加密;
主芯片程序通過隨機函數(shù)得到加密因子,并把該加密因子下發(fā)給加密芯片程序,該加密芯片程序使用收到的加密因子通過固化其中的加密算法計算出加密數(shù)據(jù)data2,然后以中斷信號通知主芯片程序從加密芯片程序里把該加密數(shù)據(jù)data2讀回;同時,主芯片程序使用上述加密因子通過與加密芯片程序相同的加密算法計算出加密數(shù)據(jù)datal ;主芯片程序把從加密芯片程序里讀回的加密數(shù)據(jù)data2跟自己計算出的加密數(shù)據(jù)datal進行比較,如果相等,則主芯片可以正常工作;如果不相等,則主芯片不能正常工作,此時主芯片程序進入一段空程序,不再向加密芯片發(fā)送任何內(nèi)容。在bootloader階段運行:主芯片啟動到bootloader階段,主芯片程序通過隨機函數(shù)得到加密因子,主芯片程序把加密因子下發(fā)給加密芯片程序,該加密芯片程序利用收到的加密因子通過固化其中的加密算法計算出加密數(shù)據(jù)data2,然后以中斷信號通知主芯片程序從加密芯片程序里把加密數(shù)據(jù)data2讀回;同時,主芯片程序使用上述加密因子通過與加密芯片程序相同的加密算法計算出加密數(shù)據(jù)datal ;主芯片程序把從加密芯片程序里讀回的加密數(shù)據(jù)data2跟自己計算出的加密數(shù)據(jù)datal進行比較,如果相等,則主芯片bootloader階段的驅(qū)動功能正常;如果不相等,則主芯片bootloader階段的驅(qū)動功能失效。在內(nèi)核加載驅(qū)動的階段運行:主芯片啟動到內(nèi)核且加載內(nèi)核驅(qū)動程序的時候,主芯片運行內(nèi)核驅(qū)動程序通過隨機函數(shù)得到加密因子,主芯片的內(nèi)核驅(qū)動程序把該加密因子下發(fā)給加密芯片程序,該加密芯片程序根據(jù)收到的加密因子計算出加密數(shù)據(jù)data2,然后以中斷信號通知主芯片的內(nèi)核驅(qū)動程序從加密芯片程序里把加密數(shù)據(jù)data2讀回;同時,主芯片的內(nèi)核驅(qū)動程序使用上述的加密因子通過與加密芯片程序相同的加密算法計算出加密數(shù)據(jù)datal ;主芯片的內(nèi)核驅(qū)動程序把從加密芯片程序里讀回的加密數(shù)據(jù)data2跟自己計算出的加密數(shù)據(jù)datal進行比較,如果相等,則主芯片加載驅(qū)動程序成功,如果不相等,則主芯片加載驅(qū)動程序不成功,對應的驅(qū)動功能失效。采用本發(fā)明的技術(shù)方案后,只要主芯片程序在驅(qū)動中通過隨機函數(shù)獲取加密因子,然后把加密因子給加密芯片程序,主芯片程序和加密芯片程序雙方使用同樣的加密算法獲得加密數(shù)據(jù),若獲得的加密數(shù)據(jù)相同,則達到加密的效果;同時,由于加密算法固化在加密芯片中,而加密芯片程序只能燒錄一次,并且在燒錄時將該加密芯片鎖定,外部無法讀取內(nèi)部程序,所以本發(fā)明的加密操作更為安全可靠。
圖1為本發(fā)明的工作原理圖。以下結(jié)合附圖和具體實施例對本發(fā)明作進一步詳述。具體實現(xiàn)方式
如圖1所示,本發(fā)明一種利用芯片實現(xiàn)加密的方法,具體包括如下步驟:
步驟1、使用編譯器編譯包含加密算法的加密芯片程序,將編譯出的OTP文件燒錄到加密芯片上,并且在燒錄時將該加密芯片鎖定;
步驟2、主芯片程序跟加密芯片程序使用同一套加密算法,并且主芯片程序跟加密芯片程序使用同一個加密因子進行加密,主芯片程序通過隨機函數(shù)得到加密因子,并把該加密因子下發(fā)給加密芯片程序,該加密芯片程序使用收到的加密因子通過固化其中的加密算法計算出加密數(shù)據(jù)data2,然后以中斷信號通知主芯片程序從加密芯片程序里把該加密數(shù)據(jù)data2讀回;同時,主芯片程序使用上述加密因子通過與加密芯片程序相同的加密算法計算出加密數(shù)據(jù)datal ;主芯片程序把從加密芯片程序里讀回的加密數(shù)據(jù)data2跟自己計算出的加密數(shù)據(jù)datal進行比較,如果相等,則主芯片可以正常工作;如果不相等,則主芯片不能正常工作,此時主芯片程序進入一段空程序,不再向加密芯片發(fā)送任何內(nèi)容。具體加密方法在如下兩個階段中運行:
(I)bootloader 階段
主芯片啟動到bootloader階段,主芯片程序通過隨機函數(shù)得到加密因子,主芯片程序把加密因子下發(fā)給加密芯片程序,該加密芯片程序利用收到的加密因子通過固化其中的加密算法計算出加密數(shù)據(jù)data2,然后以中斷信號通知主芯片程序從加密芯片程序里把加密數(shù)據(jù)data2讀回;同時,主芯片程序使用上述加密因子通過與加密芯片程序相同的加密算法計算出加密數(shù)據(jù)datal ;
主芯片程序把從加密芯片程序里讀回的加密數(shù)據(jù)data2跟自己計算出的加密數(shù)據(jù)datal進行比較,如果相等,則主芯片bootloader階段的驅(qū)動功能正常;如果不相等,則主芯片bootloader階段的驅(qū)動功能失效;
(2)內(nèi)核加載驅(qū)動的階段
主芯片啟動到內(nèi)核且加載內(nèi)核驅(qū)動程序的時候,主芯片運行內(nèi)核驅(qū)動程序通過隨機函數(shù)得到加密因子,主芯片的內(nèi)核驅(qū)動程序把該加密因子下發(fā)給加密芯片程序,該加密芯片程序根據(jù)收到的加密因子計算出加密數(shù)據(jù)data2,然后以中斷信號通知主芯片的內(nèi)核驅(qū)動程序從加密芯片程序里把加密數(shù)據(jù)data2讀回;同時,主芯片的內(nèi)核驅(qū)動程序使用上述的加密因子通過與加密芯片程序相同的加密算法計算出加密數(shù)據(jù)datal ;
主芯片的內(nèi)核驅(qū)動程序把從加密芯片程序里讀回的加密數(shù)據(jù)data2跟自己計算出的加密數(shù)據(jù)datal進行比較,如果相等,則主芯片加載驅(qū)動程序成功,如果不相等,則主芯片加載驅(qū)動程序不成功,對應的驅(qū)動功能失效。本發(fā)明與在先申請的區(qū)別點是:
1、本發(fā)明生成的OTP文件并不插入到主芯片程序中,而是直接將編譯器編譯出OTP文件燒錄到加密芯片上,該OTP文件只能燒錄一次,并且在燒錄時給加密芯片上鎖,使得他人無法從加密芯片里把數(shù)據(jù)讀出來;
2、本發(fā)明的主芯片程序通過隨機函數(shù)取得加密因子,并直接把加密因子發(fā)送給加密芯片程序,同時主芯片程序利用發(fā)送給加密芯片程序的加密因子通過跟加密芯片程序一樣的加密算法進行加密,得到加密數(shù)據(jù)datal,加密芯片程序根據(jù)主芯片程序發(fā)送過來的加密因子通過加密算法得到一個加密數(shù)據(jù)data2,然后以中斷信號通知主芯片來讀取加密數(shù)據(jù),所以此時的加密數(shù)據(jù)data2不是由加密芯片程序主動發(fā)送給主芯片程序,而是由主芯片程序主動來讀取該加密數(shù)據(jù)data2的;這樣做既可以幫主芯片節(jié)約寶貴的CPU資源,不需要實時訪問是否有加密數(shù)據(jù)上傳,又可以及時的把加密數(shù)據(jù)讀回,通過中斷信號,得知何時要去讀取加密數(shù)據(jù)。
3、當加密數(shù)據(jù)datal跟加密數(shù)據(jù)data2不相等時,并不退出主芯片程序,而是讓主芯片程序中部分功能失效,比如按鍵、喇機、led、耳機等重要功能失效,失效的時候,會進入一段空程序,不再向加密芯片發(fā)送任何內(nèi)容。此時沒有任何信號發(fā)出的好處是可以防止破解者通過抓波形來分析。以上所述,僅是本發(fā)明較佳實施例而已,并非對本發(fā)明的技術(shù)范圍作任何限制,故凡是依據(jù)本發(fā)明的技術(shù)實質(zhì)對以上實施例所作的任何細微修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。
權(quán)利要求
1.一種利用芯片實現(xiàn)加密的方法,其特征在于包括如下步驟: 步驟1、使用編譯器編譯包含加密算法的加密芯片程序,將編譯出的OTP文件燒錄到加密芯片上,并且在燒錄時將該加密芯片鎖定; 步驟2、主芯片程序跟加密芯片程序使用同一套加密算法,并且主芯片程序跟加密芯片程序使用同一個加密因子進行加密; 主芯片程序通過隨機函數(shù)得到加密因子,并把該加密因子下發(fā)給加密芯片程序,該加密芯片程序使用收到的加密因子通過固化其中的加密算法計算出加密數(shù)據(jù)data2,然后以中斷信號通知主芯片程序從加密芯片程序里把該加密數(shù)據(jù)data2讀回;同時,主芯片程序使用上述加密因子通過與加密芯片程序相同的加密算法計算出加密數(shù)據(jù)datal ;主芯片程序把從加密芯片程序里讀回的加密數(shù)據(jù)data2跟自己計算出的加密數(shù)據(jù)datal進行比較,如果相等,則主芯片可以正常工作;如果不相等,則主芯片不能正常工作,此時主芯片程序進入一段空程序,不再向加密芯片發(fā)送任何內(nèi)容。
2.根據(jù)權(quán)利要求1所述的一種利用芯片實現(xiàn)加密的方法,其特征在于在bootloader階段運行加密: 主芯片啟動到bootloader階段,主芯片程序通過隨機函數(shù)得到加密因子,主芯片程序把加密因子下發(fā)給加密芯片程序,該加密芯片程序利用收到的加密因子通過固化其中的加密算法計算出加密數(shù)據(jù)data2,然后以中斷信號通知主芯片程序從加密芯片程序里把加密數(shù)據(jù)data2讀回;同時,主芯片程序使用上述加密因子通過與加密芯片程序相同的加密算法計算出加密數(shù)據(jù)datal ; 主芯片程序把從加密芯片程序里讀回的加密數(shù)據(jù)data2跟自己計算出的加密數(shù)據(jù)datal進行比較,如果相等,則主芯片bootloader階段的驅(qū)動功能正常;如果不相等,則主芯片bootloader階段的驅(qū)動功能失效。
3.根據(jù)權(quán)利要求1所述的一種利用芯片實現(xiàn)加密的方法,其特征在于在內(nèi)核加載驅(qū)動的階段運行加密: 主芯片啟動到內(nèi)核且加載內(nèi)核驅(qū)動程序的時候,主芯片運行內(nèi)核驅(qū)動程序通過隨機函數(shù)得到加密因子,主芯片的內(nèi)核驅(qū)動程序把該加密因子下發(fā)給加密芯片程序,該加密芯片程序根據(jù)收到的加密因子計算出加密數(shù)據(jù)data2,然后以中斷信號通知主芯片的內(nèi)核驅(qū)動程序從加密芯片程序里把加密數(shù)據(jù)data2讀回;同時,主芯片的內(nèi)核驅(qū)動程序使用上述的加密因子通過與加密芯片程序相同的加密算法計算出加密數(shù)據(jù)datal ; 主芯片的內(nèi)核驅(qū)動程序把從加密芯片程序里讀回的加密數(shù)據(jù)data2跟自己計算出的加密數(shù)據(jù)datal進行比較,如果相等,則主芯片加載驅(qū)動程序成功,如果不相等,則主芯片加載驅(qū)動程序不成功,對應的驅(qū)動功能失效。
全文摘要
本發(fā)明一種利用芯片實現(xiàn)加密的方法,使用編譯器編譯包含加密算法的加密芯片程序,將編譯出的OTP文件燒錄到加密芯片上,并且在燒錄時將該加密芯片鎖定;主芯片程序跟加密芯片程序使用同一套加密算法,并且主芯片程序跟加密芯片程序使用同一個加密因子進行加密;若獲得的加密數(shù)據(jù)相同,則達到加密的效果;同時,由于加密算法固化在加密芯片中,而加密芯片程序只能燒錄一次,并且在燒錄時將該加密芯片鎖定,外部無法讀取內(nèi)部程序,所以本發(fā)明的加密操作更為安全可靠。
文檔編號G06F21/51GK103198242SQ201310112658
公開日2013年7月10日 申請日期2013年4月2日 優(yōu)先權(quán)日2013年4月2日
發(fā)明者張聯(lián)昌 申請人:廈門億聯(lián)網(wǎng)絡技術(shù)股份有限公司