專(zhuān)利名稱(chēng):對(duì)用戶(hù)程序簽名及驗(yàn)證用戶(hù)程序簽名的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全領(lǐng)域,尤其涉及一種對(duì)用戶(hù)程序簽名及驗(yàn)證用戶(hù)程序簽名的方法及裝置。
背景技術(shù):
采用OTP存儲(chǔ)器保存程序或使用帶OTP的CPU,OTP的CPU是存儲(chǔ)程序的存儲(chǔ)單元屬于一次可編程類(lèi)型,所以在程序燒寫(xiě)完成后不能夠篡改,除非更換存儲(chǔ)器或CPU,在沒(méi)有改變物理器件的條件下這種采用OTP CPU的方案可以達(dá)到防篡改的效果,但程序可以被復(fù)制到其他相同CPU上使用,即不能達(dá)到防盜的效果,還有這種方案程序只能燒寫(xiě)一次,程序升級(jí)與功能添加成本比較高且不方便。
發(fā)明內(nèi)容
本發(fā)明主要解決的技術(shù)問(wèn)題是提供一種對(duì)用戶(hù)程序簽名及驗(yàn)證用戶(hù)程序簽名的方法及裝置,防止程序被篡改和被盜,提高程序安全性。為解決上述技術(shù)問(wèn)題,本發(fā)明的一個(gè)方面是提供一種對(duì)用戶(hù)程序簽名的方法,包括步驟獲取CPU的ID,對(duì)用戶(hù)程序進(jìn)行SHA-256散列運(yùn)算得到程序摘要,所述用戶(hù)程序中編譯有通過(guò)RSA加密算法產(chǎn)生的公鑰和模;將CPU的ID、程序摘要和用戶(hù)程序的長(zhǎng)度按順序組合成數(shù)據(jù)串;對(duì)所述數(shù)據(jù)串采用與所述公鑰和模對(duì)應(yīng)的私鑰進(jìn)行加密運(yùn)算得到密文;將所述密文載入所述CPU的校驗(yàn)區(qū)。其中,所述CPU具有非易失性靜態(tài)內(nèi)存,所述校驗(yàn)區(qū)位于所述非易失性靜態(tài)內(nèi)存中。其中,在組合產(chǎn)生數(shù)據(jù)串的步驟中,還在數(shù)據(jù)串中添加有自定義標(biāo)簽。為解決上述技術(shù)問(wèn)題,本發(fā)明的又一個(gè)方面是提供一種對(duì)用戶(hù)程序簽名的裝置, 包括獲取單元用于獲取CPU的ID,對(duì)用戶(hù)程序進(jìn)行SHA-256散列運(yùn)算得到程序摘要, 其中用戶(hù)程序中編譯有通過(guò)RSA加密算法產(chǎn)生的公鑰和模;處理單元用于將所述ID、程序摘要和用戶(hù)程序的長(zhǎng)度按順序組合成數(shù)據(jù)串;加密單元用于對(duì)所述數(shù)據(jù)串采用所述公鑰和模對(duì)應(yīng)的私鑰進(jìn)行加密運(yùn)算得到密文;載入單元用于將所述密文載入所述CPU的校驗(yàn)區(qū)。其中,所述處理單元在組合產(chǎn)生數(shù)據(jù)串時(shí)還在數(shù)據(jù)串中添加自定義標(biāo)簽。為解決上述技術(shù)問(wèn)題,本發(fā)明的又一個(gè)方面是提供一種驗(yàn)證用戶(hù)程序簽名的方法,包括步驟讀取CPU本身的ID;
使用用戶(hù)程序中的公鑰和模對(duì)CPU校驗(yàn)區(qū)中的密文進(jìn)行解密得到解密后的明文;對(duì)解密后的明文按照已知的編排順序進(jìn)行解析,得到待驗(yàn)證ID、待驗(yàn)證用戶(hù)程序摘要、用戶(hù)程序長(zhǎng)度;根據(jù)用戶(hù)程序長(zhǎng)度讀取用戶(hù)程序,算出用戶(hù)程序的SHA-256散列運(yùn)算的摘要;對(duì)比待驗(yàn)證ID與CPU本身ID是否相等、待驗(yàn)證用戶(hù)程序摘要與運(yùn)算得到的用戶(hù)程序摘要是否相等,如果同時(shí)滿(mǎn)足則啟動(dòng)用戶(hù)程序,否則禁止用戶(hù)程序啟動(dòng)。為解決上述技術(shù)問(wèn)題,本發(fā)明的又一個(gè)方面是提供一種驗(yàn)證用戶(hù)程序簽名的裝置,包括讀取單元用于讀取CPU本身的ID ;解密單元用于使用用戶(hù)程序中的公鑰和模對(duì)CPU校驗(yàn)區(qū)中的密文進(jìn)行解密得到解密后的明文;解析單元用于對(duì)解密后的明文按照已知的編排順序進(jìn)行解析,得到待驗(yàn)證ID、 待驗(yàn)證用戶(hù)程序摘要、用戶(hù)程序長(zhǎng)度;計(jì)算單元用于根據(jù)用戶(hù)程序長(zhǎng)度讀取用戶(hù)程序,算出用戶(hù)程序的SHA-256散列運(yùn)算的摘要;對(duì)比單元用于對(duì)比待驗(yàn)證ID與CPU本身ID是否相等、待驗(yàn)證用戶(hù)程序摘要與運(yùn)算得到的用戶(hù)程序摘要是否相等,如果同時(shí)滿(mǎn)足則啟動(dòng)用戶(hù)程序,否則禁止用戶(hù)程序啟動(dòng)。本發(fā)明的有益效果是在本發(fā)明上述的簽名方法中,CPU的ID不可預(yù)知降低被破解的風(fēng)險(xiǎn),而RSA算法為目前最有影響力的公鑰加密算法,SHA是公認(rèn)的最安全的散列算法之一,本發(fā)明結(jié)合RSA算法和SHA算法對(duì)用戶(hù)程序進(jìn)行處理,并融合CPU的ID作為簽名的一部分,用戶(hù)程序的啟動(dòng)必須嚴(yán)格通過(guò)與簽名相配套的驗(yàn)證簽名過(guò)程,并且程序相當(dāng)于與CPU 綁定,在其他相同CPU上無(wú)法使用,達(dá)到一機(jī)一個(gè)秘密信息的效果,破解者無(wú)法從中獲得加密規(guī)律,大大降低程序被暴力破解的風(fēng)險(xiǎn),有效防止程序被惡意篡改或盜取。特別是如果CPU具有非易失性靜態(tài)內(nèi)存NVSRAM,由于NVSRAM在失電時(shí)數(shù)據(jù)丟失以及在收到攻擊時(shí)擦除內(nèi)容的特性,具有更進(jìn)一步的安全性。
圖I是本發(fā)明對(duì)用戶(hù)程序簽名的流程圖;圖2是本發(fā)明數(shù)據(jù)串?dāng)?shù)據(jù)結(jié)構(gòu)示意圖;圖3是本發(fā)明對(duì)用戶(hù)程序簽名裝置的結(jié)構(gòu)框圖;圖4是本發(fā)明驗(yàn)證用戶(hù)程序簽名的流程圖;圖5是本發(fā)明驗(yàn)證用戶(hù)程序簽名裝置的結(jié)構(gòu)框圖;圖6是利用本發(fā)明方法的一個(gè)終端的系統(tǒng)框圖。
具體實(shí)施例方式為詳細(xì)說(shuō)明本發(fā)明的技術(shù)內(nèi)容、構(gòu)造特征、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖詳予說(shuō)明。本發(fā)明主要要解決用戶(hù)程序的安全問(wèn)題,首先先要由授權(quán)者產(chǎn)生簽名密鑰組,具體為授權(quán)者通過(guò)RSA2048密鑰產(chǎn)生工具產(chǎn)生一個(gè)2048bit長(zhǎng)度的密鑰組,密鑰組具體有公鑰E、私鑰D、模N,授權(quán)者將公鑰E和模N發(fā)布給專(zhuān)用CPU程序的開(kāi)發(fā)者,由開(kāi)發(fā)者將公鑰E 和模N編譯到程序里面。請(qǐng)參閱圖1,本發(fā)明首先提出一種對(duì)用戶(hù)程序簽名的方法,包括步驟SlOl :獲取CPU的ID,對(duì)用戶(hù)程序進(jìn)行SHA-256散列運(yùn)算得到程序摘要,所述用戶(hù)程序中編譯有通過(guò)RSA加密算法產(chǎn)生的公鑰和模;該CPU應(yīng)為專(zhuān)用CPU,具有唯一的且不可預(yù)知的ID,用戶(hù)程序已被燒寫(xiě)在該CPU中,用戶(hù)程序?yàn)槭跈?quán)者認(rèn)可的程序,用戶(hù)程序中包含上述的由授權(quán)者發(fā)布的公鑰E和模N,經(jīng)過(guò)SHA-256散列運(yùn)算后得到32個(gè)字節(jié)的程序摘要 S ;S102 :將CPU的ID、程序摘要S和用戶(hù)程序的長(zhǎng)度L按順序組合成數(shù)據(jù)串SS,數(shù)據(jù)串SS的數(shù)據(jù)結(jié)構(gòu)如圖2所示,CPU的ID —般為8字節(jié)或16字節(jié),程序摘要S為32字節(jié), 用戶(hù)程度的長(zhǎng)度L為4字節(jié)、小端模式unsigned int型;當(dāng)然,在數(shù)據(jù)串中還可以添加一些自定義標(biāo)簽如公司名稱(chēng)、開(kāi)發(fā)者名字、隨機(jī)數(shù)等等,只要數(shù)據(jù)串總長(zhǎng)度不超過(guò)RSA算法的模 N的長(zhǎng)度,該自定義標(biāo)簽的設(shè)置提供了一個(gè)自識(shí)別的功能;S103 :對(duì)所述數(shù)據(jù)串SS采用與所述公鑰E和模N對(duì)應(yīng)的私鑰D進(jìn)行加密運(yùn)算得到密文SS_C,SS_C是一個(gè)256字節(jié)的密文字符串;S104 :將所述密文SS_C載入所述CPU的校驗(yàn)區(qū)。優(yōu)選地,選擇具有非易失性靜態(tài)內(nèi)存NVSRAM的CPU,而將校驗(yàn)區(qū)設(shè)置于所述非易失性靜態(tài)內(nèi)存NVSRAM中,NVSRAM的特性是具有超低的功耗,使用備用電池保持,備用電池丟失時(shí)數(shù)據(jù)丟失,或受到攻擊的時(shí)候擦除 NVSRAM內(nèi)容,由于這種特性,使得校驗(yàn)區(qū)內(nèi)的數(shù)據(jù)不易被竊取,從而提高用戶(hù)程序的安全性。結(jié)合CPU需要具有唯一的且不可預(yù)知的ID,可以選擇的專(zhuān)用CPU如美信的MAXQ1850芯片。在本發(fā)明上述的簽名方法中,CPU的ID不可預(yù)知降低被破解的風(fēng)險(xiǎn),而RSA算法為目前最有影響力的公鑰加密算法,SHA是公認(rèn)的最安全的散列算法之一,本發(fā)明結(jié)合RSA算法和SHA算法對(duì)用戶(hù)程序進(jìn)行處理,并融合CPU的ID作為簽名的一部分,用戶(hù)程序的啟動(dòng)必須嚴(yán)格通過(guò)與簽名相配套的驗(yàn)證簽名過(guò)程,并且程序相當(dāng)于與CPU綁定,在其他相同CPU 上無(wú)法使用,達(dá)到一機(jī)一個(gè)秘密信息的效果,破解者無(wú)法從中獲得加密規(guī)律,大大降低程序被暴力破解的風(fēng)險(xiǎn),有效防止程序被惡意篡改或盜取。特別是如果CPU具有非易失性靜態(tài)內(nèi)存NVSRAM,由于NVSRAM在失電時(shí)數(shù)據(jù)丟失以及在收到攻擊時(shí)擦除內(nèi)容的特性,具有更進(jìn)一步的安全性。參閱圖3,本發(fā)明還提供一種對(duì)用戶(hù)程序簽名的裝置,包括獲取單元用于獲取CPU的ID,對(duì)用戶(hù)程序進(jìn)行SHA-256散列運(yùn)算得到程序摘要, 其中用戶(hù)程序中編譯有通過(guò)RSA加密算法產(chǎn)生的公鑰和模。處理單元用于將所述ID、程序摘要和用戶(hù)程序的長(zhǎng)度按順序組合成數(shù)據(jù)串;其中,在組合產(chǎn)生數(shù)據(jù)串時(shí)還可以在數(shù)據(jù)串中添加自定義標(biāo)簽如公司名稱(chēng)、開(kāi)發(fā)者名字、隨機(jī)數(shù)等。加密單元用于對(duì)所述數(shù)據(jù)串采用所述公鑰和模對(duì)應(yīng)的私鑰進(jìn)行加密運(yùn)算得到密文。載入單元用于將所述密文載入所述CPU的校驗(yàn)區(qū)。與上述的對(duì)用戶(hù)程序簽名的方法類(lèi)似,根據(jù)本發(fā)明的該裝置可以對(duì)用戶(hù)程序進(jìn)行簽名,結(jié)合RSA算法、SHA算法以及CPU的ID和NVSRAM提供一種有效的安全簽名機(jī)制。該裝置可以認(rèn)為是一套授權(quán)工具,授權(quán)者通過(guò)該授權(quán)工具向?qū)S肅PU灌裝簽名數(shù)據(jù)。圖4給出了本發(fā)明驗(yàn)證用戶(hù)程序簽名的方法,當(dāng)CPU上電運(yùn)行后,進(jìn)行驗(yàn)證簽名的過(guò)程,具體包括步驟S201 讀取 CPU 本身的 ID。S202 :使用之前編譯在用戶(hù)程序中的公鑰E和模N對(duì)CPU校驗(yàn)區(qū)中的密文55_(進(jìn)行解密得到解密后的明文SS_D。S203 :對(duì)解密后的明文SS_D按照已知的編排順序進(jìn)行解析,得到待驗(yàn)證ID(ID_ D)、待驗(yàn)證用戶(hù)程序摘要(即用戶(hù)程序的SHA-256值S_D)、用戶(hù)程序長(zhǎng)度L_D ;所謂的編排順序即是指在簽名過(guò)程中組合形成數(shù)據(jù)串時(shí)CPU的ID、程序摘要S和用戶(hù)程序的長(zhǎng)度L的排列順序(如圖2所示)。S204:根據(jù)用戶(hù)程序長(zhǎng)度L_D讀取用戶(hù)程序,算出用戶(hù)程序的SHA-256散列運(yùn)算的摘要Si。S205 :對(duì)比待驗(yàn)證ID (ID_D)與CPU本身ID是否相等、待驗(yàn)證用戶(hù)程序摘要S_D與運(yùn)算得到的用戶(hù)程序摘要Si是否相等,如果同時(shí)滿(mǎn)足則啟動(dòng)用戶(hù)程序,否則禁止用戶(hù)程序啟動(dòng)。在正常情況下,對(duì)解密后的明文SS_D解析后得到的ID_D應(yīng)該與CPU本身的ID相等,解析得到的S_D也應(yīng)該和運(yùn)算得到的SI相等,當(dāng)同時(shí)滿(mǎn)足這兩個(gè)條件時(shí),即代表用戶(hù)程序是安全的,驗(yàn)證通過(guò),用戶(hù)程序正常啟動(dòng),而當(dāng)任一個(gè)條件不滿(mǎn)足時(shí),說(shuō)明程序或CPU可能被人為破壞過(guò),可能存在危險(xiǎn),此時(shí),禁止用戶(hù)程序啟動(dòng),禁止CPU繼續(xù)運(yùn)行或是限制CPU 的一些敏感功能。該驗(yàn)證簽名的過(guò)程建立在之前有對(duì)用戶(hù)程序簽名的基礎(chǔ)上,通過(guò)簽名和驗(yàn)證簽名的過(guò)程,保證用戶(hù)程序的安全性。參閱圖5,本發(fā)明還提供一種驗(yàn)證用戶(hù)程序簽名的裝置,包括讀取單元用于讀取CPU本身的ID ;解密單元用于使用用戶(hù)程序中的公鑰和模對(duì)CPU校驗(yàn)區(qū)中的密文進(jìn)行解密得到解密后的明文;解析單元用于對(duì)解密后的明文按照已知的編排順序進(jìn)行解析,得到待驗(yàn)證ID、 待驗(yàn)證用戶(hù)程序摘要、用戶(hù)程序長(zhǎng)度;計(jì)算單元用于根據(jù)用戶(hù)程序長(zhǎng)度讀取用戶(hù)程序,算出用戶(hù)程序的SHA-256散列運(yùn)算的摘要;對(duì)比單元用于對(duì)比待驗(yàn)證ID與CPU本身ID是否相等、待驗(yàn)證用戶(hù)程序摘要與運(yùn)算得到的用戶(hù)程序摘要是否相等,如果同時(shí)滿(mǎn)足則啟動(dòng)用戶(hù)程序,否則禁止用戶(hù)程序啟動(dòng)。該裝置與上述驗(yàn)證簽名的方法相對(duì)應(yīng),由于該機(jī)制的安全性,可應(yīng)用于對(duì)安全性有較高要求的設(shè)備中,例如POS終端等。圖6給出了一個(gè)應(yīng)用實(shí)例的系統(tǒng)框圖。該系統(tǒng)中,專(zhuān)用CPU選擇美信MAXQ1850芯片,MAXQ1850具有唯一的ID,由工廠掩膜且不可更改,具有NVSRAM,存放在NVSRAM里面的數(shù)據(jù)在CPU掉電后靠RTC (實(shí)時(shí)時(shí)鐘)備用電池維持,當(dāng)受到某種攻擊或RTC備用電池丟失時(shí)NVSRAM的數(shù)據(jù)丟失。
S3C2416是三星半導(dǎo)體的ARM9處理器,配置成Nor Flash啟動(dòng),首先運(yùn)行物理地址為0x00000000的程序內(nèi)容。X02-1200是CPLD(復(fù)雜可編程邏輯器件),這款CPLD內(nèi)部有Flash,S3C2416的一級(jí)Boot存儲(chǔ)在CPLD的Flash里面,CPLD和S3C2416的通信接口是8位并行總線,S3C2416 可以通過(guò)該總線訪問(wèn)CPLD里面Flash上的程序。MAXQ1850和CPLD是單向邏輯控制,控制接口總線是SPI(串行外設(shè)接口), MAXQ1850可以通過(guò)SPI接口讀取CPLD里面的Flash。MAXQ1850通過(guò)X02-1200控制著S3C2416的復(fù)位信號(hào)和Flash的讀寫(xiě)權(quán)限。Nand Flash存儲(chǔ)著S3C2416的用戶(hù)程序,一級(jí)啟動(dòng)Nand Flash里面的程序。該系統(tǒng)啟動(dòng)過(guò)程如下A. MAXQ1850 上電運(yùn)行;B.讀取 MAXQ1850 本身的 ID ;C.使用已經(jīng)在程序里面的公鑰E和模N對(duì)校驗(yàn)區(qū)(MAXQ1850中NVSRAM內(nèi)存地址 0x1800)的密文33_(進(jìn)行解密,得到解密后的明文SS_D ;D.按照已知的編排順序(如圖2)對(duì)35_0進(jìn)行解析,得到ID_D、用戶(hù)程序的 SHA-256值S_D、用戶(hù)程序長(zhǎng)度L_D ;E.根據(jù)L_D通過(guò)SPI讀取存儲(chǔ)在X02-1200里面的Bootl程序然后算出Flash內(nèi)容的SHA-256的摘要SI,對(duì)比ID_D和ID是否相等,S_D和SI是否相等,如果同時(shí)滿(mǎn)足則 Flash的讀寫(xiě)權(quán)限交付給S3C2416并釋放S3C2416的復(fù)位信號(hào),不相等則禁止S3C2416繼續(xù)運(yùn)行。該啟動(dòng)的過(guò)程為一個(gè)完整的驗(yàn)證簽名的過(guò)程,當(dāng)驗(yàn)證通過(guò)即代表程序安全。對(duì)于該系統(tǒng),之前需要通過(guò)授權(quán)工具進(jìn)行簽名。簽名過(guò)程如下A.授權(quán)工具獲取MAXQ1850的ID,對(duì)S3C2416的bootl進(jìn)行SHA-256散列運(yùn)算得到32個(gè)字節(jié)的摘要S ;B.將ID、S和用戶(hù)程序的長(zhǎng)度L按圖2順序組合成一個(gè)數(shù)據(jù)串SS ;C.授權(quán)工具用私鑰D對(duì)SS進(jìn)行加密運(yùn)算得到密文SS_C,SS_C是一個(gè)256字節(jié)的密文字符串;D.授權(quán)工具和MAXQ1850相互認(rèn)證通過(guò)后,授權(quán)工具將密文SS_C載入MAXQ1850的校驗(yàn)區(qū)里面(即NVSRAM中,地址為0x1800)。以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種對(duì)用戶(hù)程序簽名的方法,其特征在于,包括步驟獲取CPU的ID,對(duì)用戶(hù)程序進(jìn)行SHA-256散列運(yùn)算得到程序摘要,所述用戶(hù)程序中編譯有通過(guò)RSA加密算法產(chǎn)生的公鑰和模;將CPU的ID、程序摘要和用戶(hù)程序的長(zhǎng)度按順序組合成數(shù)據(jù)串;對(duì)所述數(shù)據(jù)串采用與所述公鑰和模對(duì)應(yīng)的私鑰進(jìn)行加密運(yùn)算得到密文;將所述密文載入所述CPU的校驗(yàn)區(qū)。
2.根據(jù)權(quán)利要求I所述的對(duì)用戶(hù)程序簽名的方法,其特征在于所述CPU具有非易失性靜態(tài)內(nèi)存,所述校驗(yàn)區(qū)位于所述非易失性靜態(tài)內(nèi)存中。
3.根據(jù)權(quán)利要求I所述的對(duì)用戶(hù)程序簽名的方法,其特征在于在組合產(chǎn)生數(shù)據(jù)串的步驟中,還在數(shù)據(jù)串中添加有自定義標(biāo)簽。
4.一種對(duì)用戶(hù)程序簽名的裝置,其特征在于,包括獲取單元用于獲取CPU的ID,對(duì)用戶(hù)程序進(jìn)行SHA-256散列運(yùn)算得到程序摘要,其中用戶(hù)程序中編譯有通過(guò)RSA加密算法產(chǎn)生的公鑰和模;處理單元用于將所述ID、程序摘要和用戶(hù)程序的長(zhǎng)度按順序組合成數(shù)據(jù)串;加密單元用于對(duì)所述數(shù)據(jù)串采用所述公鑰和模對(duì)應(yīng)的私鑰進(jìn)行加密運(yùn)算得到密文; 載入單元用于將所述密文載入所述CPU的校驗(yàn)區(qū)。
5.根據(jù)權(quán)利要求4所述的對(duì)用戶(hù)程序簽名的裝置,其特征在于所述處理單元在組合產(chǎn)生數(shù)據(jù)串時(shí)還在數(shù)據(jù)串中添加自定義標(biāo)簽。
6.一種驗(yàn)證用戶(hù)程序簽名的方法,其特征在于,包括步驟讀取CPU本身的ID ;使用用戶(hù)程序中的公鑰和模對(duì)CPU校驗(yàn)區(qū)中的密文進(jìn)行解密得到解密后的明文;對(duì)解密后的明文按照已知的編排順序進(jìn)行解析,得到待驗(yàn)證ID、待驗(yàn)證用戶(hù)程序摘要、 用戶(hù)程序長(zhǎng)度;根據(jù)用戶(hù)程序長(zhǎng)度讀取用戶(hù)程序,算出用戶(hù)程序的SHA-256散列運(yùn)算的摘要;對(duì)比待驗(yàn)證ID與CPU本身ID是否相等、待驗(yàn)證用戶(hù)程序摘要與運(yùn)算得到的用戶(hù)程序摘要是否相等,如果同時(shí)滿(mǎn)足則啟動(dòng)用戶(hù)程序,否則禁止用戶(hù)程序啟動(dòng)。
7.—種驗(yàn)證用戶(hù)程序簽名的裝置,其特征在于,包括讀取單元用于讀取CPU本身的ID ;解密單元用于使用用戶(hù)程序中的公鑰和模對(duì)CPU校驗(yàn)區(qū)中的密文進(jìn)行解密得到解密后的明文;解析單元用于對(duì)解密后的明文按照已知的編排順序進(jìn)行解析,得到待驗(yàn)證ID、待驗(yàn)證用戶(hù)程序摘要、用戶(hù)程序長(zhǎng)度;計(jì)算單元用于根據(jù)用戶(hù)程序長(zhǎng)度讀取用戶(hù)程序,算出用戶(hù)程序的SHA-256散列運(yùn)算的摘要;對(duì)比單元用于對(duì)比待驗(yàn)證ID與CPU本身ID是否相等、待驗(yàn)證用戶(hù)程序摘要與運(yùn)算得到的用戶(hù)程序摘要是否相等,如果同時(shí)滿(mǎn)足則啟動(dòng)用戶(hù)程序,否則禁止用戶(hù)程序啟動(dòng)。
全文摘要
本發(fā)明公開(kāi)了一種對(duì)用戶(hù)程序簽名及驗(yàn)證用戶(hù)程序簽名的方法及裝置。所述對(duì)用戶(hù)程序簽名的方法包括步驟獲取CPU的ID,對(duì)用戶(hù)程序進(jìn)行SHA-256散列運(yùn)算得到程序摘要,所述用戶(hù)程序中編譯有通過(guò)RSA加密算法產(chǎn)生的公鑰和模;將CPU的ID、程序摘要和用戶(hù)程序的長(zhǎng)度按順序組合成數(shù)據(jù)串;對(duì)所述數(shù)據(jù)串采用與所述公鑰和模對(duì)應(yīng)的私鑰進(jìn)行加密運(yùn)算得到密文;將所述密文載入所述CPU的校驗(yàn)區(qū)。本發(fā)明結(jié)合RSA算法和SHA算法對(duì)用戶(hù)程序進(jìn)行處理,并融合CPU的ID作為簽名的一部分,用戶(hù)程序的啟動(dòng)必須嚴(yán)格通過(guò)與簽名相配套的驗(yàn)證簽名過(guò)程,大大降低程序被暴力破解的風(fēng)險(xiǎn),有效防止程序被惡意篡改或盜取。
文檔編號(hào)G06F21/22GK102609665SQ201210018479
公開(kāi)日2012年7月25日 申請(qǐng)日期2012年1月19日 優(yōu)先權(quán)日2012年1月19日
發(fā)明者吳榮興 申請(qǐng)人:福建三元達(dá)軟件有限公司