專利名稱:軟硬件之間的安全通訊方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軟硬件之間的安全通訊技術(shù),尤其涉及一種有效增強(qiáng)軟件保護(hù)的方法。
背景技術(shù):
軟件保護(hù)是保護(hù)客戶軟件被盜版的技術(shù)。目前的軟件保護(hù)產(chǎn)品很多,其中應(yīng)用比較廣泛、效果較好的是使用專用的不可復(fù)制的小型并口或USB口硬件進(jìn)行軟件保護(hù)的產(chǎn)品,俗稱“加密狗”或“加密鎖”。這種方法是在專用硬件內(nèi)實(shí)現(xiàn)某些功能(如EEPROM數(shù)據(jù)存儲(chǔ)、基于硬件芯片的加密算法等),并在軟件運(yùn)行過程中進(jìn)行調(diào)用。如果調(diào)用結(jié)果與預(yù)期結(jié)果不符,則被認(rèn)為軟件遭到了盜版。但是被保護(hù)的軟件依然有可能被破解,一個(gè)主要的破解手段就是使用破解者自己開發(fā)的軟件或硬件來模擬原有硬件的存在而使被保護(hù)軟件正常運(yùn)行。此外,由于軟件對硬件功能的調(diào)用實(shí)際是一個(gè)比較復(fù)雜的過程,調(diào)用命令和通訊數(shù)據(jù)一般要經(jīng)過動(dòng)態(tài)連接庫(DLL)、驅(qū)動(dòng)程序(Driver)以及計(jì)算機(jī)硬件接口(如并口、串口、USB口及無線傳輸端口等),破解者在上述任何一處都可以監(jiān)聽和分析傳遞的數(shù)據(jù),并可能對其進(jìn)行偽造、竄改,從而讓軟件對返回結(jié)果進(jìn)行誤判,并進(jìn)而脫離硬件運(yùn)行,達(dá)到破解的目的。圖1顯示了軟件對硬件功能的調(diào)用過程及可能的破解點(diǎn)。
對于軟件保護(hù)技術(shù)涉及到的安全層面,目前使用的技術(shù)并不完善,還不能真正避免通訊數(shù)據(jù)被監(jiān)聽或破解的問題?,F(xiàn)有技術(shù)之一是以明文或部分明文傳遞軟硬件通訊數(shù)據(jù),這很容易被破解者監(jiān)聽或偽造,因此基本不具有安全性;還有一些通訊方法雖然對通訊數(shù)據(jù)進(jìn)行了加密,但算法過于簡單(如使用異或算法、自定義的數(shù)據(jù)變換算法等),這些算法可以輕易地被破解;還有一些通訊方法未在通訊中加入或未加入足夠的隨機(jī)數(shù),這使得破解者能夠通過記錄并偽造的方法實(shí)現(xiàn)對硬件的模擬;還有一些通訊方法雖然使用了加密算法或隨機(jī)數(shù),但算法密鑰或隨機(jī)數(shù)種子本身是通過明文或簡單算法加密傳遞的,這同樣達(dá)不到安全通訊的目的。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種軟硬件之間的安全通訊方法和裝置,以更好地防止破解者獲取、偽造、監(jiān)聽、竄改通訊數(shù)據(jù)。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種軟硬件之間的安全通訊方法,用于被保護(hù)軟件和專用硬件裝置之間的通訊,在被保護(hù)軟件和專用硬件裝置內(nèi)部實(shí)現(xiàn)相同的加密算法,且分別在二者中預(yù)置用于加密算法的密鑰,被保護(hù)軟件和專用硬件裝置二者之一產(chǎn)生隨機(jī)數(shù),通過將被保護(hù)軟件和專用硬件裝置之間的待傳送數(shù)據(jù)與隨機(jī)數(shù)結(jié)合在一起并利用密鑰使其被密文地傳送,使得被保護(hù)軟件和專用硬件裝置之間的通訊數(shù)據(jù)在整個(gè)通訊過程中安全傳送。
一方面,根據(jù)本發(fā)明的上述方法,在被保護(hù)軟件和專用硬件裝置間的待傳送數(shù)據(jù)中添加隨機(jī)數(shù)據(jù),然后用預(yù)置密鑰直接加密并進(jìn)行傳送。
根據(jù)本發(fā)明的上述方法,進(jìn)一步包括如下步驟步驟一,在被保護(hù)軟件和專用硬件裝置內(nèi)同時(shí)實(shí)現(xiàn)相同的數(shù)據(jù)加密算法F;步驟二,將用于加密算法F的密鑰Key1、Key2分別預(yù)置到被保護(hù)軟件和專用硬件裝置中;步驟三,每次被保護(hù)軟件和專用硬件裝置通訊時(shí),由通訊發(fā)起方產(chǎn)生隨機(jī)數(shù)Rand,將隨機(jī)數(shù)Rand與待發(fā)送數(shù)據(jù)DataIn結(jié)合在一起,然后用預(yù)置密鑰加密,發(fā)送給接收方;接收方收到后,用自己的預(yù)置密鑰解密數(shù)據(jù)得到DataIn。
根據(jù)本發(fā)明的上述方法,還可以包括步驟四,通訊接收方對接收的數(shù)據(jù)進(jìn)行處理后產(chǎn)生返回?cái)?shù)據(jù)DataOut,將收到的隨機(jī)數(shù)Rand與返回?cái)?shù)據(jù)DataOut結(jié)合在一起,用接收方預(yù)置密鑰加密發(fā)送給發(fā)起方;發(fā)起方收到后,用自己的預(yù)置密鑰解密得到返回?cái)?shù)據(jù)DataOut,從而完成應(yīng)答驗(yàn)證。其中,通訊接收方還可以產(chǎn)生另一隨機(jī)數(shù)Rand′而不使用通訊發(fā)起方傳送來的隨機(jī)數(shù)Rand,然后將隨機(jī)數(shù)Rand′與返回?cái)?shù)據(jù)DataOut結(jié)合在一起,用接收方預(yù)置密鑰加密發(fā)送給發(fā)起方進(jìn)行應(yīng)答驗(yàn)證;根據(jù)本發(fā)明的上述方法,在所述步驟三,所述隨機(jī)數(shù)Rand和待傳數(shù)據(jù)DataIn可以以不同的順序排列或用不同的方法疊加而結(jié)合在一起,且在任何一個(gè)加密算法F的加密塊長度內(nèi),都要包含隨機(jī)部分,以保障每兩次通訊不會(huì)有任何一個(gè)加密塊長度內(nèi)的數(shù)據(jù)是相同的,而且,在每次傳遞的數(shù)據(jù)中還包含校驗(yàn)信息,以驗(yàn)證所收到的數(shù)據(jù)的完整性。
根據(jù)本發(fā)明的上述方法,當(dāng)所述的數(shù)據(jù)加密算法F可以是對稱加密算法時(shí),所述加密密鑰Key1、Key2相同;當(dāng)所述的數(shù)據(jù)加密算法F可以是非對稱加密算法時(shí),所述的加密密鑰Key1和Key2為同一密鑰對中的公鑰與私鑰。
另一方面,根據(jù)本發(fā)明的上述方法,被保護(hù)軟件運(yùn)行時(shí)產(chǎn)生隨機(jī)的會(huì)話密鑰,被保護(hù)軟件用其內(nèi)置密鑰加密該會(huì)話密鑰,并將其傳遞給專用硬件裝置;然后,用該隨機(jī)產(chǎn)生的會(huì)話密鑰將被保護(hù)軟件和專用硬件裝置間的待傳送數(shù)據(jù)加密后進(jìn)行傳送。
根據(jù)本發(fā)明的上述方法,進(jìn)一步包括如下步驟步驟一,在被保護(hù)軟件和專用硬件裝置內(nèi)同時(shí)分別實(shí)現(xiàn)兩種相同的加密算法,一種是認(rèn)證算法FA,一種是數(shù)據(jù)加密算法FE,其中數(shù)據(jù)加密算法FE是對稱算法;將用于FA算法的認(rèn)證密鑰Key1、Key2分別預(yù)置于被保護(hù)軟件和專用硬件裝置中;步驟二,在軟件運(yùn)行時(shí),被保護(hù)軟件隨機(jī)產(chǎn)生會(huì)話密鑰Key3;在被保護(hù)軟件中,用認(rèn)證密鑰Key1對會(huì)話密鑰Key3加密,然后將它傳遞給專用硬件裝置;專用硬件裝置在收到數(shù)據(jù)后,用密鑰Key2進(jìn)行解密,得到會(huì)話密鑰Key3,之后向被保護(hù)軟件返回應(yīng)答信息;步驟三,傳送數(shù)據(jù)時(shí),通訊發(fā)送方將待傳送數(shù)據(jù)用所述會(huì)話密鑰Key3加密,然后傳送給通訊接收方,通訊接收方解密后使用。
根據(jù)本發(fā)明的上述方法,還可包括步驟四,通訊接收方對接收的數(shù)據(jù)進(jìn)行處理后產(chǎn)生返回?cái)?shù)據(jù)DataOut,通訊接收方用密鑰Key3加密發(fā)送給通訊發(fā)起方;通訊發(fā)起方收到后,用密鑰Key3解密得到返回?cái)?shù)據(jù)DataOut,從而完成應(yīng)答驗(yàn)證。
根據(jù)本發(fā)明的上述方法,還可包括一步驟,在被保護(hù)軟件運(yùn)行過程中,被保護(hù)軟件清除會(huì)話密鑰Key3;然后通過所述步驟二,產(chǎn)生新的隨機(jī)會(huì)話密鑰Key3并加密傳送給專門硬件裝置。
根據(jù)本發(fā)明的上述方法,在被保護(hù)軟件和專用硬件裝置內(nèi)的認(rèn)證算法FA是非對稱算法,所述認(rèn)證密鑰Key1和Key2分別是同一密鑰對中的公鑰與私鑰。
根據(jù)本發(fā)明的上述方法,在所述步驟一,被保護(hù)軟件和專用硬件裝置內(nèi)的認(rèn)證算法FA是對稱加密算法,所述認(rèn)證密鑰Key1、Key2相同,且認(rèn)證算法FA與數(shù)據(jù)加密算法FE相同。
根據(jù)本發(fā)明的上述方法,所述密鑰Key1在軟件開發(fā)時(shí)寫入;密鑰Key2在硬件生產(chǎn)或初始化時(shí)由特定的硬件初始化指令寫入。
根據(jù)本發(fā)明的上述方法,所述的在被保護(hù)軟件內(nèi)實(shí)現(xiàn)加密算法,是通過軟件保護(hù)方案或產(chǎn)品提供者以源碼、OBJ或DLL方式將實(shí)現(xiàn)后的算法提供給軟件開發(fā)者,并由軟件開發(fā)者將其加入被保護(hù)軟件來完成的。
根據(jù)本發(fā)明的上述方法,所述被保護(hù)軟件和專用硬件裝置,通過并口、串口、USB口、1394口、PCI或PCIE總線來進(jìn)行通訊,或是基于局域網(wǎng)或廣域網(wǎng)在內(nèi)的有線或無線網(wǎng)絡(luò)通訊。
為了實(shí)現(xiàn)本發(fā)明目的,本發(fā)明還提供一種軟硬件之間的安全通訊裝置,用于被保護(hù)軟件與專門硬件裝置之間,其包括包含在被保護(hù)軟件或?qū)iT硬件裝置二者之一中的隨機(jī)數(shù)生成模塊,其用于生成隨機(jī)數(shù),以及分別包含于被保護(hù)軟件與專門硬件裝置中的加解密模塊和通訊模塊;其中被保護(hù)軟件與專門硬件裝置中的加解密模塊中載有相同的加密算法并且分別預(yù)置有用于加密算法的密鑰;通過將被保護(hù)軟件和專用硬件裝置之間的待傳送數(shù)據(jù)與隨機(jī)數(shù)結(jié)合在一起并利用密鑰被密文地傳送,使得被保護(hù)軟件和專用硬件裝置之間的通訊數(shù)據(jù)在整個(gè)通訊過程中安全傳送。
一方面,根據(jù)本發(fā)明的上述裝置,還包括分別包含于被保護(hù)軟件或?qū)iT硬件裝置中的隨機(jī)化編解碼模塊,用于將待傳送數(shù)據(jù)與隨機(jī)數(shù)結(jié)合在一起;通訊發(fā)起方通過其加解密模塊將結(jié)合在一起的待傳送數(shù)據(jù)和隨機(jī)數(shù)直接用其預(yù)置密鑰加密,然后經(jīng)通訊模塊傳送至通訊接收方的通訊模塊;在通訊接收方中,將接收到的數(shù)據(jù)經(jīng)加解密模塊解密、隨機(jī)化編解碼模塊解碼,得到傳送數(shù)據(jù)。
根據(jù)本發(fā)明的上述裝置,所述隨機(jī)數(shù)生成模塊包含于所述被保護(hù)軟件中,在被保護(hù)軟件的加解密模塊中預(yù)置的密鑰為Key1,在專門硬件裝置的加解密模塊中預(yù)置的密鑰為Key2;在被保護(hù)軟件中所述隨機(jī)數(shù)生成模塊生成隨機(jī)數(shù)Rand,隨機(jī)化編解碼模塊將欲傳送的數(shù)據(jù)DataIn與所生成的隨機(jī)數(shù)Rand結(jié)合在一起,然后經(jīng)加解密模塊用預(yù)置密鑰Key1加密,通過通訊模塊傳送至專門硬件裝置中的通訊模塊;在專門硬件裝置中,所接收的數(shù)據(jù)經(jīng)加解密模塊用預(yù)置密鑰Key2解密、經(jīng)隨機(jī)化編解碼模塊解碼后得到傳送數(shù)據(jù)DataIn。
根據(jù)本發(fā)明的上述裝置,所述專門硬件裝置得到傳送數(shù)據(jù)DataIn后產(chǎn)生返回?cái)?shù)據(jù)DataOut,返回?cái)?shù)據(jù)DataOut與隨機(jī)數(shù)Rand經(jīng)隨機(jī)化編解碼模塊結(jié)合在一起,再經(jīng)加解密模塊加密,然后經(jīng)通訊模塊傳送至被保護(hù)軟件側(cè)的通訊模塊,在被保護(hù)軟件內(nèi)經(jīng)加解密模塊解密、隨機(jī)化編解碼模塊解碼得到DataOut,完成接收方應(yīng)答驗(yàn)證。
根據(jù)本發(fā)明的上述裝置,在所述專門硬件裝置中,還包括一隨機(jī)數(shù)產(chǎn)生模塊,專門硬件裝置得到傳送數(shù)據(jù)DataIn后產(chǎn)生返回?cái)?shù)據(jù)DataOut,所述的隨機(jī)數(shù)產(chǎn)生模塊產(chǎn)生隨機(jī)數(shù)Rand′,返回?cái)?shù)據(jù)DataOut與隨機(jī)數(shù)Rand′經(jīng)隨機(jī)化編解碼模塊結(jié)合在一起,再經(jīng)加解密模塊加密,然后經(jīng)通訊模塊傳送至被保護(hù)軟件的通訊模塊;在被保護(hù)軟件中,所接收到的數(shù)據(jù)經(jīng)加解密模塊解密、隨機(jī)化編解碼模塊解碼得到DataOut,完成接收方應(yīng)答驗(yàn)證。
根據(jù)本發(fā)明的上述裝置,所述隨機(jī)數(shù)生成模塊包含于所述專門硬件裝置中,在被保護(hù)軟件的加解密模塊中預(yù)置的密鑰為Key1,在專門硬件裝置的加解密模塊中預(yù)置的密鑰為Key2;在專門硬件裝置中,所述隨機(jī)數(shù)生成模塊生成隨機(jī)數(shù)Rand,隨機(jī)化編解碼模塊將欲傳送的數(shù)據(jù)DataIn與所生成的隨機(jī)數(shù)Rand結(jié)合在一起,然后經(jīng)加解密模塊用預(yù)置密鑰Key2加密,通過通訊模塊傳送至被保護(hù)軟件中的通訊模塊;在被保護(hù)軟件中,所接收到的數(shù)據(jù)經(jīng)加解密模塊用預(yù)置密鑰Key1解密、經(jīng)隨機(jī)化編解碼模塊解碼后得到傳送數(shù)據(jù)DataIn。
根據(jù)本發(fā)明的上述裝置,被保護(hù)軟件得到傳送數(shù)據(jù)DataIn后生成返回?cái)?shù)據(jù)DataOut,所述返回?cái)?shù)據(jù)DataOut與隨機(jī)數(shù)Rand經(jīng)其中的隨機(jī)化編解碼模塊結(jié)合在一起,再經(jīng)其中的加解密模塊加密,然后經(jīng)通訊模塊傳送至被專門硬件裝置的通訊模塊;在被專門硬件裝置中,所接收到的數(shù)據(jù)經(jīng)其中的加解密模塊解密、隨機(jī)化編解碼模塊解碼得到DataOut,完成接收方應(yīng)答驗(yàn)證。
根據(jù)本發(fā)明的上述裝置,在所述被保護(hù)軟件中還包括一隨機(jī)數(shù)產(chǎn)生模塊,被保護(hù)軟件得到傳送數(shù)據(jù)DataIn后生成返回?cái)?shù)據(jù)DataOut且其中的隨機(jī)數(shù)產(chǎn)生模塊產(chǎn)生隨機(jī)數(shù)Rand′,返回?cái)?shù)據(jù)DataOut與隨機(jī)數(shù)Rand′在被保護(hù)軟件中經(jīng)隨機(jī)化編解碼模塊結(jié)合在一起,再經(jīng)加解密模塊加密,然后經(jīng)通訊模塊傳送至被專門硬件裝置的通訊模塊;在被專門硬件裝置中,所接收到的數(shù)據(jù)經(jīng)加解密模塊解密、隨機(jī)化編解碼模塊解碼得到DataOut,完成接收方應(yīng)答驗(yàn)證。
根據(jù)本發(fā)明的上述裝置,所述的隨機(jī)化編解碼模塊能夠?qū)㈦S機(jī)數(shù)Rand和待傳送數(shù)據(jù)DataIn以不同的順序排列或用不同的方法疊加而結(jié)合在一起,且在任何一個(gè)加密算法的加密塊長度內(nèi),都要包含隨機(jī)部分,以保障每兩次通訊不會(huì)有任何一個(gè)加密塊長度內(nèi)的數(shù)據(jù)是相同的,而且,在每次傳遞的數(shù)據(jù)中還包含校驗(yàn)信息,以驗(yàn)證所收到的數(shù)據(jù)的完整性。
根據(jù)本發(fā)明的上述裝置,當(dāng)所述的加密算法采用對稱加密算法時(shí),所述預(yù)置密鑰Key1、Key2相同;當(dāng)所述的加密算法采用非對稱加密算法時(shí),所述預(yù)置密鑰Key1、Key2為同一密鑰對中的公鑰與私鑰。
另一方面,根據(jù)本發(fā)明的上述裝置,還包括分別包含于所述被保護(hù)軟件和專門硬件裝置中的第二加解密模塊,該兩個(gè)第二加解密模塊中載有相同的加密算法,且該加密算法是對稱算法,其中所述隨機(jī)數(shù)生成模塊包含于被保護(hù)軟件中,在被保護(hù)軟件的加解密模塊中預(yù)置的密鑰為Key1,在專門硬件裝置的加解密模塊中預(yù)置的密鑰為Key2;所述隨機(jī)數(shù)生成模塊生成的隨機(jī)數(shù)作為會(huì)話密鑰Key3,該會(huì)話密鑰Key3保存于所述第二加解密模塊中,用于今后加密待傳送數(shù)據(jù);在被保護(hù)軟件中加解密模塊將會(huì)話密鑰Key3用預(yù)置密鑰Key1加密,經(jīng)通訊模塊傳送至專門硬件裝置中的通訊模塊;在專門硬件裝置中,對接收到的數(shù)據(jù)在加解密模塊中用預(yù)置密鑰Key2解密得到會(huì)話密鑰Key3,將其保存于第二加解密模塊中,并向被保護(hù)軟件返回應(yīng)答信息;當(dāng)傳送數(shù)據(jù)時(shí),通訊發(fā)起方在其第二加解密模塊中用會(huì)話密鑰Key3加密待傳送數(shù)據(jù)DataIn,然后經(jīng)通訊模塊傳送至通訊接收方,通訊接收方將接收到的數(shù)據(jù)經(jīng)其第二加解密模塊用會(huì)話密鑰Key3解密獲得傳送數(shù)據(jù)DataIn,然后通訊接收方產(chǎn)生返回?cái)?shù)據(jù)DataOut,并用會(huì)話密鑰Key3加密,經(jīng)通訊模塊傳送至通訊發(fā)起方,通訊發(fā)起方收到后經(jīng)加解密模塊用會(huì)話密鑰Key3解密得到返回?cái)?shù)據(jù)DataOut,從而完成通訊。另外,所述被保護(hù)軟件還可包括一控制模塊,用于控制會(huì)話密鑰Key3的清除以及被保護(hù)軟件中所述隨機(jī)數(shù)生成模塊產(chǎn)生新的會(huì)話密鑰Key3。
根據(jù)本發(fā)明的上述裝置,當(dāng)被保護(hù)軟件和專門硬件裝置的加解密模塊中所用的加密算法是非對稱算法時(shí),所述密鑰Key1和Key2分別是同一密鑰對中的公鑰與私鑰;當(dāng)被保護(hù)軟件和專門硬件裝置的加解密模塊中所用的加密算法是對稱算法時(shí),所述密鑰Key1和Key2相同。
根據(jù)本發(fā)明的上述裝置,所述隨機(jī)數(shù)生成模塊包含于被保護(hù)軟件中,其中在被保護(hù)軟件和專門硬件裝置的加解密模塊中實(shí)現(xiàn)的加密算法是對稱加密算法,且二者中分別預(yù)置的密鑰Key1和Key2相同;所述隨機(jī)數(shù)生成模塊生成的隨機(jī)數(shù)作為會(huì)話密鑰Key3,該會(huì)話密鑰Key3用于今后加密待傳送數(shù)據(jù);在被保護(hù)軟件中,加解密模塊保存會(huì)話密鑰Key3并將會(huì)話密鑰Key3用預(yù)置密鑰Key1加密,經(jīng)通訊模塊傳送至專門硬件裝置中的通訊模塊;在專門硬件裝置中,在加解密模塊中對接收到的數(shù)據(jù)用預(yù)置密鑰Key2解密得到會(huì)話密鑰Key3,并向被保護(hù)軟件返回應(yīng)答信息;當(dāng)傳送數(shù)據(jù)時(shí),通訊發(fā)起方在其加解密模塊中用會(huì)話密鑰Key3加密待傳送數(shù)據(jù)DataIn,然后經(jīng)通訊模塊傳送至通訊接收方;通訊接收方將接收到的數(shù)據(jù)經(jīng)其加解密模塊用會(huì)話密鑰Key3解密獲得傳送數(shù)據(jù)DataIn;然后通訊接收方產(chǎn)生返回?cái)?shù)據(jù)DataOut,并用會(huì)話密鑰Key3加密,經(jīng)通訊模塊傳送至通訊發(fā)起方,通訊發(fā)起方收到后經(jīng)加解密模塊用會(huì)話密鑰Key3解密得到返回?cái)?shù)據(jù)DataOut,從而完成通訊。另外,所述被保護(hù)軟件還可包括一控制模塊,用于控制會(huì)話密鑰Key3的清除以及被保護(hù)軟件中所述隨機(jī)數(shù)生成模塊產(chǎn)生新的會(huì)話密鑰Key3。
根據(jù)本發(fā)明的上述裝置,所述密鑰Key1在軟件開發(fā)時(shí)寫入;密鑰Key2在硬件生產(chǎn)或初始化時(shí)由特定硬件初始化指令寫入。
根據(jù)本發(fā)明的上述裝置,被保護(hù)軟件的加解密模塊中的加密算法,是通過軟件保護(hù)方案或產(chǎn)品提供者以源碼、OBJ或DLL方式將實(shí)現(xiàn)后的算法提供給軟件開發(fā)者,并由軟件開發(fā)者將其加入加解密模塊中的。
根據(jù)本發(fā)明的上述裝置,所述被保護(hù)軟件和專用硬件裝置的通訊模塊,是通過并口、串口、USB口、1394口、PCI或PCIE總線來進(jìn)行通訊的,或是基于局域網(wǎng)或廣域網(wǎng)在內(nèi)的有線或無線網(wǎng)絡(luò)進(jìn)行通訊的。
在本發(fā)明中,由于所有的傳送數(shù)據(jù)都是經(jīng)過加密的,因此在任何時(shí)刻破解者不可能從截獲的通訊數(shù)據(jù)中得到原始通訊內(nèi)容,從而防止破解者通過監(jiān)聽獲得軟硬件通訊的數(shù)據(jù),保證了數(shù)據(jù)的安全性;由于本發(fā)明對傳輸數(shù)據(jù)添加了隨機(jī)數(shù)等隨機(jī)因素,即使軟硬件間傳遞的原始數(shù)據(jù)相同,在經(jīng)過編碼或加密后實(shí)際傳遞數(shù)據(jù)也變得完全不同。破解者即使記錄了監(jiān)聽時(shí)間內(nèi)軟硬件之間的所有通訊數(shù)據(jù),也無法使用這些數(shù)據(jù)在今后仿冒硬件的存在而使軟件獨(dú)立運(yùn)行,從而能夠有效地防止破解者通過記錄并仿冒的方式實(shí)現(xiàn)軟件脫離硬件運(yùn)行。
另外,采用本發(fā)明所提供的針對軟硬件內(nèi)置密鑰直接加密通訊數(shù)據(jù)時(shí)對數(shù)據(jù)的隨機(jī)化編碼方法,由于隨機(jī)數(shù)與傳遞數(shù)據(jù)的分散排列及數(shù)據(jù)校驗(yàn)部分而保障了數(shù)據(jù)傳遞安全的最大化。而且,本發(fā)明還可以通過會(huì)話密鑰來保護(hù)實(shí)際的通訊數(shù)據(jù),其中會(huì)話密鑰通過內(nèi)置的認(rèn)證密鑰保證其安全地產(chǎn)生和交換,從而保證了數(shù)據(jù)傳輸?shù)陌踩浴?br>
綜上所述,本發(fā)明在目前專用硬件設(shè)備的軟件保護(hù)技術(shù)基礎(chǔ)上,通過在應(yīng)用軟件及硬件保護(hù)裝置內(nèi)部實(shí)現(xiàn)加密算法及特定的通訊協(xié)議,對受保護(hù)應(yīng)用軟件及其硬件保護(hù)裝置之間的待傳送數(shù)據(jù)加密和添加隨機(jī)數(shù)等方式,防止了破解者對通訊鏈路的監(jiān)聽、偽造或竄改,在軟硬件之間建立起一條安全可靠的數(shù)據(jù)交換通道,防止了在不修改軟件本身的情況下使其脫離硬件運(yùn)行的可能性。此外,為了最大化地保障通訊效率和安全性,軟硬件之間也可以首先產(chǎn)生并交換隨機(jī)會(huì)話密鑰,并用此會(huì)話密鑰來加密今后傳遞的其它通訊數(shù)據(jù)。而且,本發(fā)明所提供的上述軟硬件安全通訊方法,無論軟硬件之間通過何種物理方式進(jìn)行聯(lián)系及存在多遠(yuǎn)的物理距離都可以使用,具有通用性。
圖1顯示了現(xiàn)有技術(shù)軟/硬件調(diào)用過程及破解點(diǎn);圖2是根據(jù)本發(fā)明方法的第一實(shí)施例的通過內(nèi)置密鑰直接加密通訊的示意圖;圖3是本發(fā)明提供的一種隨機(jī)化編碼示意圖;圖4是根據(jù)本發(fā)明方法的第二實(shí)施例的通過隨機(jī)會(huì)話密鑰進(jìn)行通訊的示意圖;圖5是根據(jù)本發(fā)明方法的第二實(shí)施例的簡化模型;圖6是根據(jù)本發(fā)明由被保護(hù)軟件作為通訊發(fā)起方時(shí)通過內(nèi)置密鑰直接加密通訊的裝置的示意圖;圖7是根據(jù)本發(fā)明由專門硬件裝置作為通訊發(fā)起方時(shí)通過內(nèi)置密鑰直接加密通訊的裝置的示意圖;圖8是根據(jù)本發(fā)明通過隨機(jī)會(huì)話密鑰進(jìn)行通訊的裝置的示意圖;圖9是圖8所示裝置的簡化裝置的示意圖。
具體實(shí)施例方式
下面結(jié)合附圖對本發(fā)明的具體實(shí)施方案進(jìn)一步詳細(xì)說明。
圖2是根據(jù)本發(fā)明的第一實(shí)施例的通過內(nèi)置密鑰直接加密通訊的示意圖。其以軟件發(fā)起通訊為例,在軟硬件中分別內(nèi)置密鑰,并使用它們直接加密軟硬件間的待傳送數(shù)據(jù),但為了保障其隨機(jī)性,需要在每次通訊中包含隨機(jī)數(shù)據(jù)。示意了如下的通訊過程步驟一,在被保護(hù)軟件和專用硬件裝置的芯片內(nèi)同時(shí)實(shí)現(xiàn)相同的數(shù)據(jù)加密算法F,F(xiàn)可以是對稱加密算法也可以是非對稱加密算法。但相對來說,對稱算法更易在軟、硬件中實(shí)現(xiàn),并可以保證更好的效率;非對稱算法則有助于提高整個(gè)軟件保護(hù)系統(tǒng)的安全性。
步驟二,在軟件開發(fā)時(shí),將用于加密算法F的密鑰Key1、Key2分別預(yù)置到軟件和硬件裝置中。對于對稱加密算法來說,Key1與Key2相同;對于非對稱加密算法,Key1和Key2分別是同一密鑰對中的公鑰與私鑰。
步驟三,每次軟硬件通訊時(shí),由通訊發(fā)起方(一般是軟件部分)產(chǎn)生隨機(jī)數(shù)Rand,將Rand與待發(fā)送數(shù)據(jù)DataIn結(jié)合在一起,然后通過加密算法F用預(yù)置的密鑰加密,發(fā)送給接收方;接收方收到后,用自己的預(yù)置密鑰解密數(shù)據(jù)得到DataIn。假設(shè)通訊由軟件部分發(fā)起,則上述過程可表示為從軟件發(fā)出加密數(shù)據(jù)FKey1(Rand,DataIn),硬件收到后執(zhí)行FKey2(FKey1(Rand,DataIn))并還原得到DataIn。
步驟四,通訊接收方對輸入數(shù)據(jù)進(jìn)行處理后生成返回?cái)?shù)據(jù)DataOut,將隨機(jī)數(shù)Rand與返回?cái)?shù)據(jù)DataOut結(jié)合在一起,通過加密算法F用接收方預(yù)置密鑰加密,發(fā)送給發(fā)起方;發(fā)起方收到數(shù)據(jù)后,用自己的預(yù)置密鑰解密得到DataOut。上述過程可表示為硬件發(fā)出返回?cái)?shù)據(jù)FKey2(Rand,DataOut),軟件收到后執(zhí)行FKey1(FKey2(Rand,DataOut))并還原得到DataOut,完成接收方應(yīng)答驗(yàn)證。其中,通訊接收方也可以產(chǎn)生新的隨機(jī)數(shù)Rand′,隨機(jī)數(shù)Rand′與DataOut結(jié)合在一起,經(jīng)編碼、加密后傳送加通訊發(fā)起方,由通訊發(fā)起方解密、解碼得出DataOut,以完成接收方應(yīng)答驗(yàn)證。
上述過程中,通訊可以是單向的,即接收方不返回?cái)?shù)據(jù)。但單向通訊由于缺乏接收方的應(yīng)答驗(yàn)證,有可能被破解者從通訊中截獲并重復(fù)偽造使用,因此最好不要使用或只在一組復(fù)雜通訊過程中做為特殊目的使用。
上述過程中,軟硬件在加密待發(fā)送數(shù)據(jù)DataIn前要將隨機(jī)數(shù)Rand與待發(fā)送數(shù)據(jù)DataIn結(jié)合起來,這個(gè)過程可稱為對發(fā)送數(shù)據(jù)的隨機(jī)化編碼。隨機(jī)化編碼方的式可以是各種各樣的,但為保障通訊過程的安全性,本發(fā)明給出了一種隨機(jī)化編碼方法。如圖3所示,其示意了一個(gè)典型的通訊數(shù)據(jù)結(jié)構(gòu)。隨機(jī)數(shù)Rand和待傳數(shù)據(jù)Data可以以不同的順序排列或不同的方法疊加,而在任何一個(gè)算法F的加密塊長度內(nèi),都要包含隨機(jī)部分,以保障每兩次通訊不會(huì)有任何一個(gè)加密塊長度內(nèi)的數(shù)據(jù)是相同的。在每次傳遞的數(shù)據(jù)中還應(yīng)包含校驗(yàn)信息,以驗(yàn)證所收到的數(shù)據(jù)的完整性。
圖4給出了根據(jù)本發(fā)明的第二實(shí)施例的通過隨機(jī)會(huì)話密鑰進(jìn)行通訊的示意圖。在本實(shí)施例中,使用隨機(jī)產(chǎn)生的會(huì)話密鑰加密傳輸數(shù)據(jù),即傳遞數(shù)據(jù)的隨機(jī)性由隨機(jī)會(huì)話密鑰來保證。相對本發(fā)明的第一實(shí)施例來說,無需考慮隨機(jī)化編碼的問題,但增加了會(huì)話密鑰的創(chuàng)建和交換。其具體過程如下在被保護(hù)軟件和專用硬件裝置的芯片內(nèi)同時(shí)實(shí)現(xiàn)相同的認(rèn)證算法FA和數(shù)據(jù)加密算法FE。實(shí)際上,認(rèn)證算法和數(shù)據(jù)加密算法可以相同也可以不同。但一般來說,使用一種非對稱算法實(shí)現(xiàn)FA并使用一種對稱算法實(shí)現(xiàn)FE具有最佳的安全性和實(shí)現(xiàn)效率。當(dāng)然,認(rèn)證算法FA和數(shù)據(jù)加密算法FE都可以采用非對稱算法,但是實(shí)現(xiàn)效率會(huì)差得多。
在軟件開發(fā)時(shí),將用于FA算法的認(rèn)證密鑰Key1、Key2分別包含到軟件和專門硬件裝置中。對于對稱認(rèn)證算法來說,Key1與Key2相同;對于非對稱認(rèn)證算法,Key1和Key2分別是同一密鑰對中的公鑰與私鑰。
在軟件運(yùn)行時(shí),被保護(hù)軟件產(chǎn)生隨機(jī)會(huì)話密鑰Key3,用認(rèn)證密鑰Key1對它加密,即進(jìn)行FAKey1(Key3)操作,然后將它傳遞給硬件供今后使用。硬件在收到數(shù)據(jù)后,使用密鑰Key2進(jìn)行解密,即進(jìn)行FAKey2(FAKey1(Key3)),得到密鑰Key3。成功后向軟件返回應(yīng)答信息。當(dāng)軟件停止運(yùn)行后,上一次通訊中產(chǎn)生的Key3將被清除,因此當(dāng)軟件重新開始運(yùn)行時(shí),被保護(hù)軟件將隨機(jī)產(chǎn)生一個(gè)新的會(huì)話密鑰Key3,并如上述方式傳送。
今后當(dāng)軟件向硬件傳遞數(shù)據(jù)時(shí),軟件用密鑰Key3加密待傳送數(shù)據(jù)然后再發(fā)給硬件,硬件收到數(shù)據(jù)后先解密然后再使用;硬件向軟件傳遞數(shù)據(jù)時(shí),硬件先用Key3加密數(shù)據(jù)然后再發(fā)出,軟件收到數(shù)據(jù)后先解密然后再使用。從而在軟硬件之間構(gòu)筑起了一條安全的數(shù)據(jù)傳輸通道。另外,為了使通訊更為安全,通訊接收方對接收的數(shù)據(jù)進(jìn)行處理后產(chǎn)生返回?cái)?shù)據(jù)DataOut,通訊接收方用密鑰Key3加密發(fā)送給通訊發(fā)起方;通訊發(fā)起方收到后,用密鑰Key3解密得到返回?cái)?shù)據(jù)DataOut,從而完成應(yīng)答驗(yàn)證。
在必要時(shí),在軟件運(yùn)行過程中,軟件可以主動(dòng)清除數(shù)據(jù)加密密鑰Key3,并重新開始以上過程,產(chǎn)生新的隨機(jī)會(huì)話密鑰Key3,以增加安全性。
在上述過程中,如果認(rèn)證算法使用對稱加密算法,則認(rèn)證算法可以與數(shù)據(jù)加密算法相同以簡化設(shè)計(jì),且此時(shí)Key1與Key2相同。在這種情況下上述過程可以得到簡化,如圖5所示。
上述過程中,一旦安全通道被建立,因?yàn)槊看蝹鬟f的數(shù)據(jù)都經(jīng)過了Key3的加密,而Key3本身是隨機(jī)生成的,它由軟硬件內(nèi)預(yù)置的Key1、Key2完成交換,在整個(gè)過程中都不會(huì)明文暴露在軟、硬件傳輸通道上,因此任何人都無法在這個(gè)過程中得到加密密鑰Key3。此外,由于密鑰Key3的隨機(jī)性,破解者也無法重復(fù)利用監(jiān)聽和記錄而獲取軟硬件通訊數(shù)據(jù)。
總得來說,為了實(shí)現(xiàn)在軟硬件之間構(gòu)筑安全通道的目的,需要在軟件內(nèi)部實(shí)現(xiàn)隨機(jī)數(shù)發(fā)生機(jī)制和加密算法F(如第一實(shí)施例)或認(rèn)證算法FA及數(shù)據(jù)加密算法FE(如第二實(shí)施例);在硬件芯片中實(shí)現(xiàn)同樣的加密算法F(如第一實(shí)施例)或認(rèn)證算法FA及數(shù)據(jù)加密算法FE(如第二實(shí)施例)。對于第二實(shí)施例來說,F(xiàn)A和FE可以相同也可以不同。FE最好是一種對稱算法,以實(shí)現(xiàn)高效簡便的數(shù)據(jù)加解密;當(dāng)FA與FE不同時(shí),F(xiàn)A選擇使用非對稱算法,可以更好地保證系統(tǒng)的安全性。為了在軟件內(nèi)實(shí)現(xiàn)上述算法,軟件保護(hù)方案或產(chǎn)品提供者可以以源碼、OBJ或DLL等方式將實(shí)現(xiàn)后的算法提供給軟件開發(fā)者,并由軟件開發(fā)者將其加入被保護(hù)軟件。
為了實(shí)現(xiàn)軟硬件之間構(gòu)筑安全通道的目的,還需要在軟件和硬件內(nèi)部預(yù)置用于直接加密待傳送數(shù)據(jù)或交換會(huì)話密鑰時(shí)所使用的密鑰對Key1和Key2。Key1可以在軟件開發(fā)時(shí)寫入;Key2則可以在硬件生產(chǎn)或初始化時(shí)由特定指令寫入。
在上述實(shí)施例中,構(gòu)建安全通道的軟硬件,既可以通過基本的并口、串口、USB口、1394口、PCI或PCIE總線來進(jìn)行通訊,也可以是基于局域網(wǎng)或廣域網(wǎng)在內(nèi)的有線或無線網(wǎng)絡(luò)通訊。因此其應(yīng)用范圍非常廣泛,應(yīng)用形式也非常靈活。
圖6給出了根據(jù)本發(fā)明由被保護(hù)軟件作為通訊發(fā)起方時(shí)通過內(nèi)置密鑰直接加密通訊的裝置的示意圖。如圖6所示,根據(jù)本發(fā)明的軟硬件之間的安全通訊裝置包括分別包含于被保護(hù)軟件1與專門硬件裝置2中的加解密模塊、隨機(jī)化編解碼模塊和通訊模塊,以及包含于被保護(hù)軟件1中的隨機(jī)數(shù)生成模塊。所述隨機(jī)數(shù)生成模塊用于生成隨機(jī)數(shù)Rand,其中被保護(hù)軟件1與專門硬件裝置2的加解密模塊中載有相同的加密算法并且分別預(yù)置有用于加密算法的密鑰Key1和Key2;圖6中包含在被保護(hù)軟件中的軟件功能模塊是實(shí)現(xiàn)軟件本身固有的功能的模塊,包含在專門硬件裝置中的硬件功能模塊是實(shí)現(xiàn)專門硬件本身固有的功能的模塊。在被保護(hù)軟件1中,隨機(jī)化編解碼模塊將來自軟件功能模塊的待傳送數(shù)據(jù)DataIn與隨機(jī)數(shù)Rand結(jié)合在一起,然后經(jīng)加解密模塊用預(yù)置密鑰Key1加密,通過通訊模塊傳送至專門硬件裝置中的通訊模塊;在專門硬件裝置2中,對接收到的數(shù)據(jù)經(jīng)加解密模塊用預(yù)置密鑰Key2解密、經(jīng)隨機(jī)化編解碼模塊解碼后得到傳送數(shù)據(jù)DataIn;而且,在專門硬件裝置2中,硬件功能模塊生成返回?cái)?shù)據(jù)DataOut,返回?cái)?shù)據(jù)DataOut與隨機(jī)數(shù)Rand經(jīng)隨機(jī)化編解碼模塊結(jié)合在一起,再經(jīng)加解密模塊加密,然后經(jīng)通訊模塊傳送至被保護(hù)軟件的通訊模塊,在被保護(hù)軟件1內(nèi)經(jīng)加解密模塊解密、隨機(jī)化編解碼模塊解碼得到DataOut,完成接收方的應(yīng)答驗(yàn)證。
圖7給出了根據(jù)本發(fā)明由專門硬件裝置作為通訊發(fā)起方時(shí)通過內(nèi)置密鑰直接加密通訊的裝置的示意圖,其操作與圖6類似,只是專門硬件裝置2作為通訊發(fā)起方,隨機(jī)數(shù)生成模塊包含于專門硬件裝置2中。
在圖6和圖7所示的裝置中,所述的隨機(jī)化編解碼模塊能夠?qū)㈦S機(jī)數(shù)Rand和待傳送數(shù)據(jù)DataIn以不同的順序排列或用不同的方法疊加而結(jié)合在一起,且在任何一個(gè)加密算法的加密塊長度內(nèi),都要包含隨機(jī)部分,以保障每兩次通訊不會(huì)有任何一個(gè)加密塊長度內(nèi)的數(shù)據(jù)是相同的,而且,在每次傳遞的數(shù)據(jù)中還包含校驗(yàn)信息,以驗(yàn)證所收到的數(shù)據(jù)的完整性。
在圖6和圖7所示的裝置中,當(dāng)加解密模塊中的加密算法采用對稱加密算法時(shí),所述預(yù)置密鑰Key1、Key2相同;當(dāng)所述的加密算法采用非對稱加密算法時(shí),所述預(yù)置密鑰Key1、Key2為同一密鑰對中的公鑰與私鑰。
此外,在圖6和圖7所示的裝置中,為了更好地協(xié)調(diào)各個(gè)模塊之間的操作,可以采用一控制模塊,該控制模塊與隨機(jī)數(shù)產(chǎn)生模塊置于同一側(cè),用于控制,如隨機(jī)數(shù)產(chǎn)生模塊產(chǎn)生隨機(jī)數(shù),并在隨機(jī)數(shù)產(chǎn)生后,將待傳送數(shù)據(jù)與隨機(jī)數(shù)一同傳送給隨機(jī)化編解碼模塊、加解密模塊,以及在返回應(yīng)答驗(yàn)證完成等操作。
圖8給出了是根據(jù)本發(fā)明通過隨機(jī)會(huì)話密鑰進(jìn)行通訊的裝置的示意圖;如圖8所示,根據(jù)本發(fā)明的軟硬件之間的安全通訊裝置包括分別包含于被保護(hù)軟件1與專門硬件裝置2中的加解密模塊、第二加解密模塊和通訊模塊,包含于被保護(hù)軟件1中的隨機(jī)數(shù)生成模塊,被保護(hù)軟件1與專門硬件裝置2的加解密模塊中載有相同的認(rèn)證算法FA并分別預(yù)置有密鑰Key1和Key2,被保護(hù)軟件1與專門硬件裝置2的第二加解密模塊中載有相同的數(shù)據(jù)加密算法FE,且該數(shù)據(jù)加密算法FE是對稱加密算法;所述隨機(jī)數(shù)生成模塊用于生成隨機(jī)數(shù),其生成的隨機(jī)數(shù)作為會(huì)話密鑰Key3,該會(huì)話密鑰Key3保存于被保護(hù)軟件1中的第二加解密模塊中,用于今后加密待傳送數(shù)據(jù);圖8中被保護(hù)軟件的軟件功能模塊是實(shí)現(xiàn)軟件本身固有功能的模塊,專門硬件裝置中的硬件功能模塊是實(shí)現(xiàn)硬件本身固有功能的模塊。在被保護(hù)軟件1中,加解密模塊將會(huì)話密鑰Key3用預(yù)置密鑰Key1加密,經(jīng)通訊模塊傳送至專門硬件裝置中的通訊模塊;在專門硬件裝置2中,對接收到的數(shù)據(jù)在加解密模塊中用預(yù)置密鑰Key2解密得到會(huì)話密鑰Key3,將其保存于第二加解密模塊中,并向被保護(hù)軟件1返回應(yīng)答信息;當(dāng)傳送數(shù)據(jù)時(shí),通訊發(fā)起方在其第二加解密模塊中用會(huì)話密鑰Key3加密來自相應(yīng)的功能模塊的待傳送數(shù)據(jù)DataIn,經(jīng)通訊模塊傳送至通訊接收方;通訊接收方將接收到的數(shù)據(jù)經(jīng)其第二加解密模塊用會(huì)話密鑰Key3解密獲得傳送數(shù)據(jù)DataIn;然后通訊接收方的軟件功能模塊或硬件功能模塊產(chǎn)生返回?cái)?shù)據(jù)DataOut,并用會(huì)話密鑰Key3加密,經(jīng)通訊模塊傳送至通訊發(fā)起方;通訊發(fā)起方收到后經(jīng)加解密模塊用會(huì)話密鑰Key3解密得到返回?cái)?shù)據(jù)DataOut,從而完成應(yīng)答驗(yàn)證。
另外,在圖8所示的裝置中,當(dāng)被保護(hù)軟件和專門硬件裝置的加解密模塊中所用的加密算法是非對稱算法時(shí),所述密鑰Key1和Key2分別是同一密鑰對中的公鑰與私鑰;當(dāng)被保護(hù)軟件和專門硬件裝置的加解密模塊中所用的加密算法是對稱算法時(shí),所述密鑰Key1和Key2相同。
當(dāng)然,圖8所示的裝置中,所述被保護(hù)軟件和專門硬件裝置的第二加解密模塊中的數(shù)據(jù)加密算法可以為非對稱算法,這時(shí)通訊的安全性會(huì)更高,但實(shí)現(xiàn)效率會(huì)相應(yīng)地降低。
圖9給出了圖8所示裝置的簡化裝置的示意圖。如圖9所示,根據(jù)本發(fā)明的軟硬件之間的安全通訊裝置包括分別包含于被保護(hù)軟件1與專門硬件裝置2中的加解密模塊和通訊模塊,包含于被保護(hù)軟件1中的隨機(jī)數(shù)生成模塊,其中在被保護(hù)軟件1和專門硬件裝置2的加解密模塊中實(shí)現(xiàn)的相同加密算法是對稱加密算法且分別預(yù)置二者中的密鑰Key1和Key2相同;所述隨機(jī)數(shù)生成模塊生成的隨機(jī)數(shù)作為會(huì)話密鑰Key3,該會(huì)話密鑰Key3用于今后加密待傳送數(shù)據(jù)。在被保護(hù)軟件1中,加解密模塊保存會(huì)話密鑰Key3并將會(huì)話密鑰Key3用預(yù)置密鑰Key1加密,經(jīng)通訊模塊傳送至專門硬件裝置中的通訊模塊;在專門硬件裝置2中,在加解密模塊中對接收到的數(shù)據(jù)用預(yù)置密鑰Key2解密得到會(huì)話密鑰Key3,并向被保護(hù)軟件返回應(yīng)答信息;當(dāng)傳送數(shù)據(jù)時(shí),通訊發(fā)起方在其加解密模塊中用會(huì)話密鑰Key3加密待傳送數(shù)據(jù)DataIn,然后經(jīng)通訊模塊傳送至通訊接收方;通訊接收方將接收到的數(shù)據(jù)經(jīng)其加解密模塊用會(huì)話密鑰Key3解密獲得傳送數(shù)據(jù)DataIn;然后通訊接收方產(chǎn)生返回?cái)?shù)據(jù)DataOut,并用會(huì)話密鑰Key3加密,經(jīng)通訊模塊傳送至通訊發(fā)起方,通訊發(fā)起方收到后經(jīng)加解密模塊用會(huì)話密鑰Key3解密得到返回?cái)?shù)據(jù)DataOut,從而完成驗(yàn)證。
另外,在圖8、9所示的裝置中,為了進(jìn)一步保證通訊的安全性,在被保護(hù)軟件可加入一控制模塊,用于控制從第二加解密模塊中清除會(huì)話密鑰Key3,以及使所述隨機(jī)數(shù)生成模塊產(chǎn)生新的會(huì)話密鑰Key3保存于被保護(hù)軟件的第二加解密模塊中并傳送給專門硬件裝置中的第二加解密模塊。
在圖6、7、8和9所示的裝置中,所述密鑰Key1在軟件開發(fā)時(shí)寫入;密鑰Key2在硬件生產(chǎn)或初始化時(shí)由特定硬件初始化指令寫入。被保護(hù)軟件的加解密模塊中的加密算法,是通過軟件保護(hù)方案或產(chǎn)品提供者以源碼、OBJ或DLL方式將實(shí)現(xiàn)后的算法提供給軟件開發(fā)者,并由軟件開發(fā)者將其加入加解密模塊中的。所述被保護(hù)軟件和專用硬件裝置的通訊模塊,是通過并口、串口、USB口、1394口、PCI或PCIE總線來進(jìn)行通訊的,或是基于局域網(wǎng)或廣域網(wǎng)在內(nèi)的有線或無線網(wǎng)絡(luò)進(jìn)行通訊的。
當(dāng)本發(fā)明用于軟件保護(hù)時(shí),上面描述中的專用硬件裝置,可以為加密狗,加密鎖,加密卡等軟件保護(hù)用的專門硬件裝置。
本發(fā)明的上述描述均主要是以保護(hù)軟件為目的而進(jìn)行的描述,但本發(fā)明并不局限于此目的,它可以廣泛地應(yīng)用于軟硬件之間的通訊保護(hù)、甚至對兩硬件之間的通訊進(jìn)行保護(hù)。
上述內(nèi)容并非用來限制本發(fā)明的具體實(shí)施方式
,凡根據(jù)本方法的主要發(fā)明構(gòu)思而進(jìn)行的修改和變動(dòng)或組合,均應(yīng)屬于本發(fā)明所要求的保護(hù)范圍。
權(quán)利要求
1.一種軟硬件之間的安全通訊方法,其特征在于,在被保護(hù)軟件和專用硬件裝置內(nèi)部實(shí)現(xiàn)相同的加密算法,且分別在二者中預(yù)置用于加密算法的密鑰,被保護(hù)軟件和專用硬件裝置二者之一產(chǎn)生隨機(jī)數(shù),通過將被保護(hù)軟件和專用硬件裝置之間的待傳送數(shù)據(jù)與該所產(chǎn)生的隨機(jī)數(shù)結(jié)合在一起并利用密鑰使其被密文地傳送,使得被保護(hù)軟件和專用硬件裝置之間的通訊數(shù)據(jù)在整個(gè)通訊過程中安全傳送。
2.根據(jù)權(quán)利要求1所述的軟硬件之間的安全通訊方法,其特征在于,在被保護(hù)軟件和專用硬件裝置間的待傳送數(shù)據(jù)中添加隨機(jī)數(shù)據(jù),然后用預(yù)置密鑰直接加密并進(jìn)行傳送。
3.根據(jù)權(quán)利要求2所述的軟硬件之間的安全通訊方法,進(jìn)一步包括如下步驟步驟一,在被保護(hù)軟件和專用硬件裝置內(nèi)同時(shí)實(shí)現(xiàn)相同的數(shù)據(jù)加密算法F;步驟二,將用于加密算法F的密鑰Key1、Key2分別預(yù)置到被保護(hù)軟件和專用硬件裝置中;步驟三,每次被保護(hù)軟件和專用硬件裝置通訊時(shí),由通訊發(fā)起方產(chǎn)生隨機(jī)數(shù)Rand,將隨機(jī)數(shù)Rand與待發(fā)送數(shù)據(jù)DataIn結(jié)合在一起,然后用預(yù)置密鑰加密,發(fā)送給接收方;接收方收到后,用自己的預(yù)置密鑰解密數(shù)據(jù)得到DataIn。
4.根據(jù)權(quán)利要求3所述的軟硬件之間的安全通訊方法,其特征在于,還包括步驟四,通訊接收方對接收的數(shù)據(jù)進(jìn)行處理后產(chǎn)生返回?cái)?shù)據(jù)DataOut,將收到的隨機(jī)數(shù)Rand與返回?cái)?shù)據(jù)DataOut結(jié)合在一起,用接收方預(yù)置密鑰加密發(fā)送給發(fā)起方;發(fā)起方收到后,用自己的預(yù)置密鑰解密得到返回?cái)?shù)據(jù)DataOut,從而完成應(yīng)答驗(yàn)證。
5.根據(jù)權(quán)利要求3所述的軟硬件之間的安全通訊方法,其特征在于,還包括步驟四,通訊接收方對接收的數(shù)據(jù)進(jìn)行處理后產(chǎn)生返回?cái)?shù)據(jù)DataOut及一隨機(jī)數(shù)Rand′,將隨機(jī)數(shù)Rand′與返回?cái)?shù)據(jù)DataOut結(jié)合在一起,用接收方預(yù)置密鑰加密發(fā)送給發(fā)起方;發(fā)起方收到后,用自己的預(yù)置密鑰解密得到返回?cái)?shù)據(jù)DataOut,從而完成應(yīng)答驗(yàn)證。
6.根據(jù)權(quán)利要求3或4或5所述的軟硬件之間的安全通訊方法,其特征在于,在所述步驟三,所述隨機(jī)數(shù)Rand和待傳數(shù)據(jù)DataIn以不同的順序排列或用不同的方法疊加而結(jié)合在一起,且在任何一個(gè)加密算法F的加密塊長度內(nèi),都要包含隨機(jī)部分,以保障每兩次通訊不會(huì)有任何一個(gè)加密塊長度內(nèi)的數(shù)據(jù)是相同的,而且,在每次傳遞的數(shù)據(jù)中還包含校驗(yàn)信息,以驗(yàn)證所收到的數(shù)據(jù)的完整性。
7.根據(jù)權(quán)利要求3或4或5所述的軟硬件之間的安全通訊方法,其特征在于,當(dāng)所述的數(shù)據(jù)加密算法F是對稱加密算法時(shí),所述加密密鑰Key1、Key2相同;當(dāng)所述的數(shù)據(jù)加密算法F是非對稱加密算法時(shí),所述的加密密鑰Key1和Key2為同一密鑰對中的公鑰與私鑰。
8.根據(jù)權(quán)利要求1所述的軟硬件之間的安全通訊方法,其特征在于,被保護(hù)軟件運(yùn)行時(shí)產(chǎn)生隨機(jī)的會(huì)話密鑰,被保護(hù)軟件用其內(nèi)置密鑰加密該會(huì)話密鑰,并將其傳遞給專用硬件裝置;然后,用該隨機(jī)產(chǎn)生的會(huì)話密鑰將被保護(hù)軟件和專用硬件裝置間的待傳送數(shù)據(jù)加密后進(jìn)行傳送。
9.根據(jù)權(quán)利要求8所述的軟硬件之間的安全通訊方法,其特征在于,進(jìn)一步包括如下步驟步驟一,在被保護(hù)軟件和專用硬件裝置內(nèi)同時(shí)分別實(shí)現(xiàn)兩種相同的加密算法,一種是認(rèn)證算法FA,一種是數(shù)據(jù)加密算法FE,其中數(shù)據(jù)加密算法FE是對稱算法;將用于FA算法的認(rèn)證密鑰Key1、Key2分別預(yù)置于被保護(hù)軟件和專用硬件裝置中;步驟二,在軟件運(yùn)行時(shí),被保護(hù)軟件隨機(jī)產(chǎn)生會(huì)話密鑰Key3;在被保護(hù)軟件中,用認(rèn)證密鑰Key1對會(huì)話密鑰Key3加密,然后將它傳遞給專用硬件裝置;專用硬件裝置在收到數(shù)據(jù)后,用密鑰Key2進(jìn)行解密,得到會(huì)話密鑰Key3,之后向被保護(hù)軟件返回應(yīng)答信息;步驟三,傳送數(shù)據(jù)時(shí),通訊發(fā)送方將待傳送數(shù)據(jù)用所述會(huì)話密鑰Key3加密,然后傳送給通訊接收方,通訊接收方解密后使用。
10.根據(jù)權(quán)利要求9的軟硬件之間的安全通訊方法,其特征在于,還包括步驟四,通訊接收方對接收的數(shù)據(jù)進(jìn)行處理后產(chǎn)生返回?cái)?shù)據(jù)DataOut,通訊接收方用密鑰Key3加密發(fā)送給通訊發(fā)起方;通訊發(fā)起方收到后,用密鑰Key3解密得到返回?cái)?shù)據(jù)DataOut,從而完成應(yīng)答驗(yàn)證。
11.根據(jù)權(quán)利要求9或10的軟硬件之間的安全通訊方法,其特征在于,還包括一步驟,在被保護(hù)軟件運(yùn)行過程中,被保護(hù)軟件清除會(huì)話密鑰Key3;然后通過所述步驟二,產(chǎn)生新的隨機(jī)會(huì)話密鑰Key3并加密傳送給專門硬件裝置。
12.根據(jù)權(quán)利要求9或10的軟硬件之間的安全通訊方法,其特征在于,在所述步驟一,在被保護(hù)軟件和專用硬件裝置內(nèi)的認(rèn)證算法FA是非對稱算法,所述認(rèn)證密鑰Key1和Key2分別是同一密鑰對中的公鑰與私鑰。
13.根據(jù)權(quán)利要求9或10的軟硬件之間的安全通訊方法,其特征在于,在所述步驟一,被保護(hù)軟件和專用硬件裝置內(nèi)的認(rèn)證算法FA是對稱加密算法,所述認(rèn)證密鑰Key1、Key2相同,且認(rèn)證算法FA與數(shù)據(jù)加密算法FE相同。
14.根據(jù)權(quán)利要求3或9所述的軟硬件之間的安全通訊方法,是其特征在于,所述密鑰Key1在軟件開發(fā)時(shí)寫入;密鑰Key2在硬件生產(chǎn)或初始化時(shí)由特定初始化指令寫入。
15.根據(jù)權(quán)利要求1-5和8-10中之一所述的軟硬件之間的安全通訊方法,其特征在于,所述的在被保護(hù)軟件內(nèi)實(shí)現(xiàn)加密算法,是通過軟件保護(hù)方案或產(chǎn)品提供者以源碼、OBJ或DLL方式將實(shí)現(xiàn)后的算法提供給軟件開發(fā)者,并由軟件開發(fā)者將其加入被保護(hù)軟件來完成的。
16.根據(jù)權(quán)利要求1-5和8-10中之一所述的軟硬件之間的安全通訊方法,其特征在于,所述被保護(hù)軟件和專用硬件裝置,通過并口、串口、USB口、1394口、PCI或PCIE總線來進(jìn)行通訊,或是基于局域網(wǎng)或廣域網(wǎng)在內(nèi)的有線或無線網(wǎng)絡(luò)通訊。
17.一種軟硬件之間的安全通訊裝置,用于被保護(hù)軟件與專門硬件裝置之間,其特征在于,包括包含在被保護(hù)軟件或?qū)iT硬件裝置二者之一中的隨機(jī)數(shù)生成模塊,其用于生成隨機(jī)數(shù),分別包含于被保護(hù)軟件與專門硬件裝置中的加解密模塊和通訊模塊;其中被保護(hù)軟件與專門硬件裝置中的加解密模塊中載有相同的加密算法并且分別預(yù)置有用于加密算法的密鑰;通過將被保護(hù)軟件和專用硬件裝置之間的待傳送數(shù)據(jù)與隨機(jī)數(shù)結(jié)合在一起并利用密鑰被密文地傳送,使得被保護(hù)軟件和專用硬件裝置之間的通訊數(shù)據(jù)在整個(gè)通訊過程中安全傳送。
18.根據(jù)權(quán)利要求17所述的軟硬件之間的安全通訊裝置,其特征在于,還包括分別包含于被保護(hù)軟件或?qū)iT硬件裝置中的隨機(jī)化編解碼模塊,用于將待傳送數(shù)據(jù)與隨機(jī)數(shù)結(jié)合在一起;通訊發(fā)起方通過其加解密模塊將結(jié)合在一起的待傳送數(shù)據(jù)和隨機(jī)數(shù)直接用其預(yù)置密鑰加密,然后經(jīng)通訊模塊傳送至通訊接收方的通訊模塊;在通訊接收方中,將接收到的數(shù)據(jù)經(jīng)加解密模塊解密、隨機(jī)化編解碼模塊解碼,得到傳送數(shù)據(jù)。
19.根據(jù)權(quán)利要求18所述的軟硬件之間的安全通訊裝置,其特征在于,所述隨機(jī)數(shù)生成模塊包含于所述被保護(hù)軟件中,在被保護(hù)軟件的加解密模塊中預(yù)置的密鑰為Key1,在專門硬件裝置的加解密模塊中預(yù)置的密鑰為Key2;在被保護(hù)軟件中所述隨機(jī)數(shù)生成模塊生成隨機(jī)數(shù)Rand,隨機(jī)化編解碼模塊將欲傳送的數(shù)據(jù)DataIn與所生成的隨機(jī)數(shù)Rand結(jié)合在一起,然后經(jīng)加解密模塊用預(yù)置密鑰Key1加密,通過通訊模塊傳送至專門硬件裝置中的通訊模塊;在專門硬件裝置中,所接收的數(shù)據(jù)經(jīng)加解密模塊用預(yù)置密鑰Key2解密、經(jīng)隨機(jī)化編解碼模塊解碼后得到傳送數(shù)據(jù)DataIn。
20.根據(jù)權(quán)利要求19所述的軟硬件之間的安全通訊裝置,其特征在于,所述專門硬件裝置得到傳送數(shù)據(jù)DataIn后產(chǎn)生返回?cái)?shù)據(jù)DataOut,返回?cái)?shù)據(jù)DataOut與隨機(jī)數(shù)Rand經(jīng)隨機(jī)化編解碼模塊結(jié)合在一起,再經(jīng)加解密模塊加密,然后經(jīng)通訊模塊傳送至被保護(hù)軟件側(cè)的通訊模塊,在被保護(hù)軟件內(nèi)經(jīng)加解密模塊解密、隨機(jī)化編解碼模塊解碼得到DataOut,完成接收方應(yīng)答驗(yàn)證。
21.根據(jù)權(quán)利要求19所述的軟硬件之間的安全通訊裝置,其特征在于,在所述專門硬件裝置中,還包括一隨機(jī)數(shù)產(chǎn)生模塊,專門硬件裝置得到傳送數(shù)據(jù)DataIn后產(chǎn)生返回?cái)?shù)據(jù)DataOut,所述的隨機(jī)數(shù)產(chǎn)生模塊產(chǎn)生隨機(jī)數(shù)Rand′,返回?cái)?shù)據(jù)DataOut與隨機(jī)數(shù)Rand′經(jīng)隨機(jī)化編解碼模塊結(jié)合在一起,再經(jīng)加解密模塊加密,然后經(jīng)通訊模塊傳送至被保護(hù)軟件的通訊模塊;在被保護(hù)軟件中,所接收到的數(shù)據(jù)經(jīng)加解密模塊解密、隨機(jī)化編解碼模塊解碼得到DataOut,完成接收方應(yīng)答驗(yàn)證。
22.根據(jù)權(quán)利要求18的軟硬件之間的安全通訊裝置,其特征在于,所述隨機(jī)數(shù)生成模塊包含于所述專門硬件裝置中,在被保護(hù)軟件的加解密模塊中預(yù)置的密鑰為Key1,在專門硬件裝置的加解密模塊中預(yù)置的密鑰為Key2;在專門硬件裝置中,所述隨機(jī)數(shù)生成模塊生成隨機(jī)數(shù)Rand,隨機(jī)化編解碼模塊將欲傳送的數(shù)據(jù)DataIn與所生成的隨機(jī)數(shù)Rand結(jié)合在一起,然后經(jīng)加解密模塊用預(yù)置密鑰Key2加密,通過通訊模塊傳送至被保護(hù)軟件中的通訊模塊;在被保護(hù)軟件中,所接收到的數(shù)據(jù)經(jīng)加解密模塊用預(yù)置密鑰Key1解密、經(jīng)隨機(jī)化編解碼模塊解碼后得到傳送數(shù)據(jù)DataIn。
23.根據(jù)權(quán)利要求22的軟硬件之間的安全通訊裝置,其特征在于,被保護(hù)軟件得到傳送數(shù)據(jù)DataIn后生成返回?cái)?shù)據(jù)DataOut,所述返回?cái)?shù)據(jù)DataOut與隨機(jī)數(shù)Rand經(jīng)其中的隨機(jī)化編解碼模塊結(jié)合在一起,再經(jīng)其中的加解密模塊加密,然后經(jīng)通訊模塊傳送至被專門硬件裝置的通訊模塊;在被專門硬件裝置中,所接收到的數(shù)據(jù)經(jīng)其中的加解密模塊解密、隨機(jī)化編解碼模塊解碼得到DataOut,完成接收方應(yīng)答驗(yàn)證。
24.根據(jù)權(quán)利要求22的軟硬件之間的安全通訊裝置,其特征在于,在所述被保護(hù)軟件中還包括一隨機(jī)數(shù)產(chǎn)生模塊,被保護(hù)軟件得到傳送數(shù)據(jù)DataIn后生成返回?cái)?shù)據(jù)DataOut且其中的隨機(jī)數(shù)產(chǎn)生模塊產(chǎn)生隨機(jī)數(shù)Rand′,返回?cái)?shù)據(jù)DataOut與隨機(jī)數(shù)Rand′在被保護(hù)軟件中經(jīng)隨機(jī)化編解碼模塊結(jié)合在一起,再經(jīng)加解密模塊加密,然后經(jīng)通訊模塊傳送至被專門硬件裝置的通訊模塊;在被專門硬件裝置中,所接收到的數(shù)據(jù)經(jīng)加解密模塊解密、隨機(jī)化編解碼模塊解碼得到DataOut,完成接收方應(yīng)答驗(yàn)證。
25.根據(jù)權(quán)利要求19至24中之一所述的軟硬件之間的安全通訊裝置,其特征在于,所述的隨機(jī)化編解碼模塊能夠?qū)㈦S機(jī)數(shù)Rand和待傳送數(shù)據(jù)DataIn以不同的順序排列或用不同的方法疊加而結(jié)合在一起,且在任何一個(gè)加密算法的加密塊長度內(nèi),都要包含隨機(jī)部分,以保障每兩次通訊不會(huì)有任何一個(gè)加密塊長度內(nèi)的數(shù)據(jù)是相同的,而且,在每次傳遞的數(shù)據(jù)中還包含校驗(yàn)信息,以驗(yàn)證所收到的數(shù)據(jù)的完整性。
26.根據(jù)權(quán)利要求19至24中之一所述的軟硬件之間的安全通訊裝置,其特征在于,當(dāng)所述的加密算法采用對稱加密算法時(shí),所述預(yù)置密鑰Key1、Key2相同;當(dāng)所述的加密算法采用非對稱加密算法時(shí),所述預(yù)置密鑰Key1、Key2為同一密鑰對中的公鑰與私鑰。
27.根據(jù)權(quán)利要求17所述的軟硬件之間的安全通訊裝置,其特征在于,還包括分別包含于所述被保護(hù)軟件和專門硬件裝置中的第二加解密模塊,該兩個(gè)第二加解密模塊中載有相同的加密算法,且該加密算法是對稱算法,其中所述隨機(jī)數(shù)生成模塊包含于被保護(hù)軟件中,在被保護(hù)軟件的加解密模塊中預(yù)置的密鑰為Key1,在專門硬件裝置的加解密模塊中預(yù)置的密鑰為Key2;所述隨機(jī)數(shù)生成模塊生成的隨機(jī)數(shù)作為會(huì)話密鑰Key3,該會(huì)話密鑰Key3保存于所述第二加解密模塊中,用于今后加密待傳送數(shù)據(jù);在被保護(hù)軟件中加解密模塊將會(huì)話密鑰Key3用預(yù)置密鑰Key1加密,經(jīng)通訊模塊傳送至專門硬件裝置中的通訊模塊;在專門硬件裝置中,對接收到的數(shù)據(jù)在加解密模塊中用預(yù)置密鑰Key2解密得到會(huì)話密鑰Key3,將其保存于第二加解密模塊中,并向被保護(hù)軟件返回應(yīng)答信息;當(dāng)傳送數(shù)據(jù)時(shí),通訊發(fā)起方在其第二加解密模塊中用會(huì)話密鑰Key3加密待傳送數(shù)據(jù)DataIn,然后經(jīng)通訊模塊傳送至通訊接收方,通訊接收方將接收到的數(shù)據(jù)經(jīng)其第二加解密模塊用會(huì)話密鑰Key3解密獲得傳送數(shù)據(jù)DataIn,然后通訊接收方產(chǎn)生返回?cái)?shù)據(jù)DataOut,并用會(huì)話密鑰Key3加密,經(jīng)通訊模塊傳送至通訊發(fā)起方,通訊發(fā)起方收到后經(jīng)加解密模塊用會(huì)話密鑰Key3解密得到返回?cái)?shù)據(jù)DataOut,從而完成接收方應(yīng)答驗(yàn)證。
28.根據(jù)權(quán)利要求27所述的軟硬件之間的安全通訊裝置,其特征在于,在所述被保護(hù)軟件還包括一控制模塊,用于控制會(huì)話密鑰Key3的清除以及被保護(hù)軟件中所述隨機(jī)數(shù)生成模塊產(chǎn)生新的會(huì)話密鑰Key3。
29.根據(jù)權(quán)利要求27所述的軟硬件之間的安全通訊裝置,其特征在于,當(dāng)被保護(hù)軟件和專門硬件裝置的加解密模塊中所用的加密算法是非對稱算法時(shí),所述密鑰Key1和Key2分別是同一密鑰對中的公鑰與私鑰;當(dāng)被保護(hù)軟件和專門硬件裝置的加解密模塊中所用的加密算法是對稱算法時(shí),所述密鑰Key1和Key2相同。
30.根據(jù)權(quán)利要求17所述的軟硬件之間的安全通訊裝置,其特征在于,所述隨機(jī)數(shù)生成模塊包含于被保護(hù)軟件中,其中在被保護(hù)軟件和專門硬件裝置的加解密模塊中實(shí)現(xiàn)的加密算法是對稱加密算法,且二者中分別預(yù)置的密鑰Key1和Key2相同;所述隨機(jī)數(shù)生成模塊生成的隨機(jī)數(shù)作為會(huì)話密鑰Key3,該會(huì)話密鑰Key3用于今后加密待傳送數(shù)據(jù);在被保護(hù)軟件中,加解密模塊保存會(huì)話密鑰Key3并將會(huì)話密鑰Key3用預(yù)置密鑰Key1加密,經(jīng)通訊模塊傳送至專門硬件裝置中的通訊模塊;在專門硬件裝置中,在加解密模塊中對接收到的數(shù)據(jù)用預(yù)置密鑰Key2解密得到會(huì)話密鑰Key3,并向被保護(hù)軟件返回應(yīng)答信息;當(dāng)傳送數(shù)據(jù)時(shí),通訊發(fā)起方在其加解密模塊中用會(huì)話密鑰Key3加密待傳送數(shù)據(jù)DataIn,然后經(jīng)通訊模塊傳送至通訊接收方;通訊接收方將接收到的數(shù)據(jù)經(jīng)其加解密模塊用會(huì)話密鑰Key3解密獲得傳送數(shù)據(jù)DataIn;然后通訊接收方產(chǎn)生返回?cái)?shù)據(jù)DataOut,并用會(huì)話密鑰Key3加密,經(jīng)通訊模塊傳送至通訊發(fā)起方,通訊發(fā)起方收到后經(jīng)加解密模塊用會(huì)話密鑰Key3解密得到返回?cái)?shù)據(jù)DataOut,從而完成接收方應(yīng)答驗(yàn)證。
31.根據(jù)權(quán)利要求30所述的軟硬件之間的安全通訊裝置,其特征在于,在所述被保護(hù)軟件還包括一控制模塊,用于控制會(huì)話密鑰Key3的清除以及被保護(hù)軟件中所述隨機(jī)數(shù)生成模塊產(chǎn)生新的會(huì)話密鑰Key3。
32.根據(jù)權(quán)利要求19-24和27-31中之一所述的軟件安全通訊裝置,是其特征在于,所述密鑰Key1在軟件開發(fā)時(shí)寫入;密鑰Key2在硬件生產(chǎn)或初始化時(shí)由特定初始化指令寫入。
33.根據(jù)權(quán)利要求19-24和27-31中之一所述的軟硬件之間的安全通訊裝置,其特征在于,被保護(hù)軟件的加解密模塊中的加密算法,是通過軟件保護(hù)方案或產(chǎn)品提供者以源碼、OBJ或DLL方式將實(shí)現(xiàn)后的算法提供給軟件開發(fā)者,并由軟件開發(fā)者將其加入加解密模塊中的。
34.根據(jù)權(quán)利要求17-24和27-31中之一所述的軟硬件之間的安全通訊裝置,其特征在于,所述被保護(hù)軟件和專用硬件裝置的通訊模塊,是通過并口、串口、USB口、1394口、PCI或PCIE總線來進(jìn)行通訊的,或是基于局域網(wǎng)或廣域網(wǎng)在內(nèi)的有線或無線網(wǎng)絡(luò)進(jìn)行通訊的。
全文摘要
本發(fā)明涉及軟硬件之間的安全通訊方法,在被保護(hù)軟件和專用硬件裝置內(nèi)部實(shí)現(xiàn)相同的加密算法,且分別在二者中預(yù)置用于加密算法的密鑰,被保護(hù)軟件和專用硬件裝置二者之一產(chǎn)生隨機(jī)數(shù),通過將被保護(hù)軟件和專用硬件裝置之間的待傳送數(shù)據(jù)與隨機(jī)數(shù)結(jié)合在一起并利用密鑰使其被密文地傳送,使得被保護(hù)軟件和專用硬件裝置之間的通訊數(shù)據(jù)在整個(gè)通訊過程中安全傳送。本發(fā)明還提供實(shí)現(xiàn)本發(fā)明的方法的軟硬件之間的安全通訊裝置。利用本發(fā)明,能夠有效地防止破解者對通訊鏈路的監(jiān)聽、偽造或竄改,防止在不修改軟件本身的情況下使其脫離硬件運(yùn)行的可能性。而且,本發(fā)明具有通用性,無論軟硬件之間通過何種物理方式進(jìn)行聯(lián)系及存在多遠(yuǎn)的物理距離都可以使用。
文檔編號H04L9/14GK1797266SQ20041010153
公開日2006年7月5日 申請日期2004年12月21日 優(yōu)先權(quán)日2004年12月21日
發(fā)明者陳龍森, 孟雄暉 申請人:賽孚耐(北京)信息技術(shù)有限公司