專利名稱:軟件保護的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及軟件保護領域,特別涉及一種軟件保護的方法和系統(tǒng)。
技術背景目前對軟件的使用權進行保護的方法最灘行的是使用加密鎖這種加密工具。加密鎖加密 是現有加密技術的主流方法,通過在計算機的通信接口插上一個信息安全設備——加密鎖, 并配合特定的軟件保護,使用戶軟件離開加密鎖就無法運行,來實現軟件產品的保護。信息 安全設備是一種帶有微處理器的小型硬件設備,它通過計算機的通信接口與計算機連接,具 有密鑰生成、安全存儲密鑰、預置加密算法等功能。信息安全設備與密鑰相關的運算完全在 設備內部運行,且信息安全設備具有抗攻擊的特性,安全性極高。信息安全設備通常通過USB 接口與計算機進行連接,簡稱USBKey。通常使用USB key對軟件保護的最簡單的方法是在設計軟件時,將USB key的唯一硬件 ID號寫入軟件中,在運行此軟件時,軟件會讀取所使用的USBkey的ID號,如果讀取的ID 號與軟件中寫入的ID號相同,則允許使用此軟件,否則拒絕運用此軟件。由于加密鎖的ID號是固定的,軟件在運行時,需要通過計算機接口讀取加密鎖的ID號。 黑客利用這一弱點編制出了接口仿真程序,當用戶插上保護軟件原有的加密鎖運行時,該接 口仿真程序記錄下保護軟件讀取加密鎖ID的所有數據,以及在保護軟件運行時所有的寫入和 讀出的數據,從而可以將軟件讀取加密鎖ID的指令截獲。當用戶取下加密鎖時,黑客啟動仿 真程序來模擬加密鎖提供的所有數據,并模擬計算機接口通信協(xié)議,將ID號返回給軟件,從 而達到盜版軟件的目的。發(fā)明內容為了有效地保護軟件,本發(fā)明提供了一種軟件保護的方法和系統(tǒng)。所述技術方案如下 一種軟件保護的方法,所述方法包括第一裝置在軟件中設置算法、密鑰和動態(tài)因子,在信息安全設備中設置相同的算法、密 鑰和動態(tài)因子;第二裝置獲取所述軟件和信息安全設備且安裝所述軟件后,當需要運行該軟件時,與所 述信息安全設備建立連接;所述第二裝置獲取所述信息安全設備使用所述算法、密鑰和動態(tài)因子計算出的識別碼, 并根據所述軟件中的算法、密鑰和動態(tài)因子計算出驗證碼;所述第二裝置比對所述識別碼與所述驗證碼,如果一致,則允許運行所述軟件;否則, 進行異常處理;所述信息安全設備對所述信息安全設備內的動態(tài)因子進行更新,所述第二裝置按照相同 的方式對所述軟件中的動態(tài)因子進行更新。所述算法具體為HOPT、 DES、 RSA、 SHA算法或由生產商預先設定的算法。 所述動態(tài)因子具體為事件同步因子,所述方法還包括-所述信息安全設備對更新后的動態(tài)因子進行存儲,所述第二裝置將更新后的動態(tài)因子存 儲在所述軟件中。所述動態(tài)因子具體為時間同步因子,所述信息安全設備對所述信息安全設備內的動態(tài)因 子進行更新,所述第二裝置按照相同的方式對所述軟件中的動態(tài)因子進行更新,具體包括-所述信息安全設備對所述信息安全設備內的動態(tài)因子通過計時進行更新,所述第二裝置 按照相同的方式對所述軟件中的動態(tài)因子進行計時更新。所述更新具體為對所述動態(tài)因子增加或減少指定的值。所述第二裝置獲取所述信息安全設備使用所述算法、密鑰和動態(tài)因子計算出的識別碼, 具體包括當所述密鑰為一個時,所述第二裝置向所述信息安全設備發(fā)送固定的獲取識別碼的指令; 所述信息安全設備收到所述指令后,使用所述算法、密鑰和動態(tài)因子計算出識別碼,并 將所述識別碼發(fā)送給所述第二裝置。所述第二裝置獲取所述信息安全設備使用所述算法、密鑰和動態(tài)因子計算出的識別碼,具體包括當所述密鑰為多個時,所述第二裝置向所述信息安全設備發(fā)送獲取識別碼的指令,所述指令中攜帶指定密鑰的索引;所述信息安全設備收到所述指令后,使用所述算法、所述索引對應的密鑰和所述動態(tài)因 子計算出識別碼,并將所述識別碼發(fā)送給所述第二裝置。所述第二裝置比對所述識別碼與所述驗證碼,如果一致,則允許運行所述軟件;否則, 進行異常處理,具體包括當所述驗證碼為多個時,所述第二裝置比對所述識別碼與所述多個驗證碼,如果所述多 個驗證碼中有一個驗證碼與所述識別碼相同,則允許運行所述軟件;如果所述多個驗證碼均 與所述識別碼不同,則進行異常處理。所述方法還包括所述第二裝置允許運行所述軟件后,生成包含所述第二裝置更新后的動態(tài)因子的日志信 息,并存儲所述日志信息;當所述第二裝置重新安裝所述軟件時,根據所述日志信息,將所述軟件中的動態(tài)因子更 新為所述日志信息中的動態(tài)因子。一種軟件保護的系統(tǒng),所述系統(tǒng)包括第一裝置、第二裝置和信息安全設備;所述第一裝置包括設置模塊,用于在軟件中設置算法、密鑰和動態(tài)因子,在所述信息安全設備中設置相同 的算法、密鑰和動態(tài)因子;所述第二裝置包括 '通信模塊,用于當所述第二裝置獲取所述軟件和信息安全設備且安裝所述軟件后,當需 要運行該軟件時,與所述信息安全設備建立連接,并與所述信息安全設備進行通信; .獲取模塊,用于通過所述通信模塊獲取所述信息安全設備生成的識別碼;驗證碼生成模塊,用于根據所述軟件中的算法、密鑰和動態(tài)因子計算出驗證碼;控制模塊,用于比對所述獲取模塊得到的識別碼與所述驗證碼生成模塊得到的驗證碼, 如果一致,則允許所述第二裝置運行所述軟件;否則,所述第二裝置進行異常處理;更新模塊,用于按照與所述信息安全設備相同的方式對所述軟件中的動態(tài)因子進行更新;所述信息安全設備包括存儲模塊,用于存儲所述第一裝置的設置模塊設置的算法、密鑰和動態(tài)因子; 識別碼生成模塊,用于使用所述存儲模塊存儲的算法、密鑰和動態(tài)因子計算出識別碼; 通信模塊,用于與所述第二裝置進行通信,將所述識別碼生成模塊得到的識別碼發(fā)送給 所述第二裝置;更新模塊,用于對所述存儲模塊存儲的動態(tài)因子進行更新。 所述算法具體為HOPT、 DES、 RSA、 SHA算法或由生產商預先設定的算法。 所述動態(tài)因子具體為事件同步因子,所述第二裝置還包括 存儲模塊,用于存儲所述第二裝置的更新模塊更新后的動態(tài)因子。 所述動態(tài)因子具體為時間同步因子,所述信息安全設備的更新模塊具體包括計時單元,用于對所述信息安全設備的存儲模塊存儲的動態(tài)因子進行計時更新;電池,用于給所述計時單元提供電量。所述計時單元具體為計時芯片。所述信息安全設備的更新模塊具體包括更新單元,用于對所述信息安全設備的存儲模塊存儲的動態(tài)因子增加或減少指定的值。 所述第二裝置的獲取模塊具體包括-獲取單元,用于當所述密鑰為一個時,通過所述第二裝置的通信模塊向所述信息安全設 備發(fā)送固定的獲取識別碼的指令,并通過所述第二裝置的通信模塊接收所述信息安全設備返 回的識別碼;相應地,所述信息安全設備的識別碼生成模塊具體包括-識別碼生成單元,用于在接收到所述第二裝置發(fā)來的獲取識別碼指令后,使用所述信息 安全設備的存儲模塊存儲的算法、密鑰和動態(tài)因子計算出識別碼。 所述第二裝置的獲取模塊具體包括獲取單元,用于當所述密鑰為多個時,通過所述第二裝置的通信模塊向所述信息安全設 備發(fā)送獲取識別碼的指令,所述指令中攜帶指定密鑰的索引,并通過所述第二裝置的通信模 塊接收所述信息安全設備返回的識別碼;相應地,所述信息安全設備的識別碼生成模塊具體包括-識別碼生成單元,用于在接收到所述第二裝置發(fā)來的獲取識別碼的指令后,使用所述信 息安全設備的存儲模塊存儲的算法、所述指令中的索引對應的密鑰和動態(tài)因子計算出識別碼。 所述第二裝置的控制模塊具體包括比對單元,用于當所述驗證碼生成模塊生成的驗證碼為多個時,比對所述獲取模塊得到 的識別碼與所述多個驗證碼;控制單元,用于當所述比對單元比對出所述多個驗證碼中有一個驗證碼與所述識別碼相 同,則允許運行所述軟件;當所述比對單元比對出所述多個驗證碼均與所述識別碼不同,則 進行異常處理。所述第二裝置還包括日志生成模塊,用于當所述控制模塊允許運行所述軟件后,生成包含所述第二裝置的更 新模塊更新后的動態(tài)因子的日志信息;恢復模塊,用于當所述第二裝置重新安裝所述軟件時,根據所述日志生成模塊生成的曰 志信息,將所述軟件中的動態(tài)因子更新為所述日志信息中的動態(tài)因子。所述信息安全設備的通信模塊具體為USB接口、紅外接口、藍牙接口、并口、串口、射 頻接口和eSATA接口中的至少一種。本發(fā)明通過在軟件和信息安全設備中設置相同的算法、密鑰和動態(tài)因子,將信息安全設 備生成的識別碼和第二裝置生成的驗證碼進行比對并同步更新,來對軟件進行保護。第二裝 置安裝的軟件只有在合法的信息安全設備通過認證后,才能運行使用,即使接口仿真軟件盜 竊了本次軟件對信息安全設備進行驗證過程中相關的交互數據,該數據對于下次軟件對信息安全設備的驗證過程是無效的,從而有效地保護了軟件,防止軟件被盜版。
圖1是本發(fā)明實施例1提供的一種軟件保護的方法流程圖; 圖2是本發(fā)明實施例2提供的一種軟件保護的系統(tǒng)結構圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方式作進 一步地詳細描述。 實施例1如圖l所示,本發(fā)明實施例提供了一種軟件保護的方法,具體包括步驟101:第一裝置在軟件中設置算法、密鑰和動態(tài)因子,在信息安全設備中設置相同 的算法、密鑰和動態(tài)因子。例如,第一裝置在軟件中設置DES算法、密鑰2834和動態(tài)因子1900,在信息安全設備 中也設置DES算法、密鑰2834和動態(tài)因子1900。本實施例中的第一裝置通常為生產商的裝置,第二裝置通常為用戶使用的主機,如軟件 開發(fā)商的裝置在軟件和信息安全設備中設置算法,密鑰和動態(tài)因子后,軟件開發(fā)商將軟件和 信息安全設備提供給用戶,用戶在主機中安裝該軟件,并通過該主機與信息安全設備進行通 信。其中,第一裝置設置的算法具體為HOPT、 DES、 RSA、 SHA算法或由生產商預先設定 的算法,第一裝置設置的動態(tài)因子具體為事件同步因子或時間同步因子。步驟102:第二裝置獲取所述軟件和信息安全設備且安裝軟件后,當需要運行該軟件時, 與信息安全設備建立連接。步驟103:第二裝置獲取信息安全設備使用算法、密鑰和動態(tài)因子計算出的識別碼,并根據軟件中的算法、密鑰和動態(tài)因子計算出驗證碼。本實施例中的驗證碼不限于可識別的字 符。當第一裝置在軟件和信息安全設備中均設置一個密鑰時,第二裝置獲取信息安全設備生 成的識別碼可以具體如下第二裝置向信息安全設備發(fā)送固定的獲取識別碼的指令,信息安全設備收到該指令后, 使用信息安全設備中的算法、密鑰和動態(tài)因子計算出識別碼,并將該識別碼發(fā)送給第二裝置。 其中,固定的獲取識別碼的指令是指指令的內容固定不變,例如,固定的獲取識別碼的指令 為8個字節(jié),具體為OxOA,OxOO,OxOO,OxOO,OxOO,OxOO,OxOO,OxOO;當信息安全設備收到該指令 后,使用信息安全設備中的算法、密鑰和動態(tài)因子計算出識別碼,并將該識別碼發(fā)送給第二 裝置。進一步地,當第一裝置在軟件和信息安全設備中均設置多個密鑰時,第二裝置獲取信息安全設備生成的識別碼可以具體如下第二裝置向信息安全設備發(fā)送獲取識別碼的指令,其中攜帶指定密鑰的索引,信息安全 設備收到該指令后,使用信息安全設備中的算法、該索引對應的密鑰和動態(tài)因子計算出識別 碼,并將該識別碼發(fā)送給第二裝置。例如,獲取識別碼的指令為8個字節(jié),具體為OxOA,OxO 1,0x00,0x00,0x00,0x00,0x00,0x00,其中0x01表示使用第一個密鑰,當該字節(jié)為0x02 時表示使用第二個密鑰等,即指令中的第二個字節(jié)為指定密鑰的索引值。當信息安全設備收 到該指令后,使用信息安全設備中的算法、該索引對應的密鑰和動態(tài)因子計算出識別碼,并 將該識別碼發(fā)送給第二裝置。本實施例中信息安全設備計算出識別碼后,還對信息安全設備內的動態(tài)因子進行更新。 也可以在信息安全設備計算出識別碼前對信息安全設備內的動態(tài)因子進行更新。當動態(tài)因子 為事件同步因子時,信息安全設備對信息安全設備內的動態(tài)因子更新后進行存儲;當動態(tài)因 子為時間同步因子時,信息安全設備對信息安全設備內的動態(tài)因子通過計時進行更新。步驟104:第二裝置比對識別碼與驗證碼是否一致,如果一致,則執(zhí)行步驟105;否則, 執(zhí)行步驟106。歩驟105:允許運行該軟件,然后結束。步驟106:第二裝置進行異常處理,例如不允許運行該軟件,然后結束。上述過程中第二裝置還按照與信息安全設備相同的方式對軟件中的動態(tài)因子進行更新, 如第二裝置與信息安全設備均采用先更新后計算的方式,或者均采用先計算后更新的方式, 從而使二者的動態(tài)因子同步。當動態(tài)因子為事件同步因子時,第二裝置還將更新后的動態(tài)因子存儲在該軟件中;當動態(tài)因子為時間同步因子時,第二裝置按照與信息安全設備相同的方 式對軟件中的動態(tài)因子進行計時更新。另外,第二裝置允許運行軟件后,還可以生成包含第二裝置更新后的動態(tài)因子的日志信 息,并存儲該日志信息,如將日志信息存儲在第二裝置的系統(tǒng)注冊表中;當由于某些原因第 二裝置重新安裝該軟件時,根據存儲的日志信息,將軟件安裝后初始化的動態(tài)因子更新為日 志信息中的動態(tài)因子,以方便軟件中的動態(tài)因子與信息安全設備中的動態(tài)因子同步。在本發(fā)明實施例中,對動態(tài)因子的更新具體為對動態(tài)因子增加或減少指定的值,且第二 裝置對軟件中的動態(tài)因子的更新方式與信息安全設備對其內的動態(tài)因子的更新方式相同,如 均為增加固定的值,或均為減少固定的值。下面以一個具體的實例進行詳細說明,軟件和信息安全設備中預設的算法均為DES算法, 密鑰均為5821,動態(tài)因子均為事件同步因子,以事件計數進行同步,事件計數的初始值均為 1238,事件計數的增加值為2,且信息安全設備的唯一硬件標識碼為16071127。安裝了該軟 件的主機向信息安全設備發(fā)送獲取指令后,信息安全設備根據密鑰5821和動態(tài)因子1238, 使用DES算法對硬件標識碼16071127進行計算,得到識別碼3039B7DC2D0ED449并發(fā)送給 主機,然后將動態(tài)因子計數更新為1240。主機得到該識別碼后,將其與根據軟件中的密鑰5821 和動態(tài)因子1238且使用DES算法對硬件標識碼進行計算得到的驗證碼進行比對,比對出驗 證碼與識別碼相同,則允許在主機中運行該軟件,并且將軟件中的動態(tài)因子也更新為1240。 當再次使用該軟件時,信息安全設備根據密鑰5821和更新后的動態(tài)因子1240,使用DES算 法對硬件標識碼16071127進行計算,得到識別碼3039B7DC2D0ED449,并將動態(tài)因子更新 為1242。主機獲取到該識別碼后,與根據軟件中的密鑰5821和更新的動態(tài)因子1240使用 DES算法對硬件標識碼進行計算得到的驗證碼3039B7DC2D0ED449進行比對,結果為相同, 因此允許再次運行該軟件,且將該軟件中的動態(tài)因子也更新為1242。因此,通過事件計數同 步使得軟件與信息安全設備的動態(tài)因子在實現動態(tài)變化的同時又保持著同步。另外,為了防止由于偶然事件(如誤操作)而導致信息安全設備進行了動態(tài)因子的更新, 而不與軟件中的動態(tài)因子同步,進一步地,還可以在一個容錯范圍內對識別碼進行驗證,即 第二裝置還可以生成多個驗證碼,比對時第二裝置比對獲取的識別碼與生成的多個驗證碼, 如果該多個驗證碼中有一個驗證碼與該識別碼相同,則允許運行該軟件;如果該多個驗證碼 均與該識別碼不同,則進行異常處理,例如不允許運行該軟件。例如,密鑰為5816,軟件中的動態(tài)因子經過99次有效認證已經采用增加計數的方式更 新為1434,在當前第100次認證時,主機在當前動態(tài)因子1434的基礎上增加計數得到10個動態(tài)因子1436、 1438、 1440、 1442、 1444、 1446、 1448、 1450、 1452、 1454,則包含1434 共有11個動態(tài)因子,根據密鑰5816和11個動態(tài)因子用DES算法對信息安全設備的唯一硬 件標識碼16071127進行加密計算,分別得到11個驗證碼D8AE1D7792694CBC 、 11A007C042B6B152、 48A1734518707504 、 905AF710BB1DA1D6 、 3F8067A573465A48 、 1E5E50ECD398A005、 1980957B8D14E1CB、 768EE8155DC0C7E0、 905AF7I0BB1DA1D6、 3F8067A573465A48和1E5E50ECD398A005。主機獲取到信息安全設備生成的識別碼后,與 上述11個驗證碼逐一進行比對,如果該識別碼與11個驗證碼中的某一個驗證碼相同,則本 次認證通過,允許運行該軟件,且根據當前匹配的驗證碼更新動態(tài)因子,用于下次認證的根 據,如當前匹配的驗證碼為48A1734518707504,對應的動態(tài)因子為1438,則對其進行更新 為1440。如果11個驗證碼中沒有與該識別碼相同的驗證碼,則本次認證失敗,第二裝置進 行異常處理,例如不允許在主機上運行該軟件。 實施例2如圖2所示,本發(fā)明實施例提供了一種軟件保護的系統(tǒng),包括第一裝置、第二裝置和信 息安全設備;第一裝置包括設置模塊,用于在軟件中設置算法、密鑰和動態(tài)因子,在信息安全設備中設置相同的算 法、密鑰和動態(tài)因子; 第二裝置包括通信模塊,用于當第二裝置獲取上述軟件和信息安全設備且安裝該軟件后,當需要運行 該軟件時,與信息安全設備建立連接,并與信息安全設備進行通信;獲取模塊,用于通過通信模塊獲取信息安全設備生成的識別碼;具體地,可以通過通信 模塊發(fā)送獲取識別碼的指令給信息安全設備,并通過通信模塊接收信息安全設備返回的識別 碼;驗證碼生成模塊,用于根據軟件中的算法、密鑰和動態(tài)因子計算出驗證碼; 控制模塊,用于比對獲取模塊得到的識別碼與驗證碼生成模塊得到的驗證碼,如果一致, 則允許第二裝置運行軟件;否則,第二裝置進行異常處理,例如不允許第二裝置運行軟件; 更新模塊,用于按照與信息安全設備相同的方式對軟件中的動態(tài)因子進行更新; 信息安全設備包括-存儲模塊,用于存儲第一裝置的設置模塊設置的算法、密鑰和動態(tài)因子; 識別碼生成模塊,用于使用存儲模塊存儲的算法、密鑰和動態(tài)因子計算出識別碼;通信模塊,用于與第二裝置進行通信,將識別碼生成模塊得到的識別碼發(fā)送給第二裝置; 更新模塊,用于對存儲模塊存儲的動態(tài)因子進行更新。本實施例中的算法具體為HOPT、 DES、 RSA、 SHA算法或由生產商預先設定的算法, 動態(tài)因子具體為事件同步因子或時間同步因子。當上述動態(tài)因子具體為事件同步因子時,圖2中第二裝置還包括 存儲模塊,用于存儲第二裝置的更新模塊更新后的動態(tài)因子。當上述動態(tài)因子具體為時間同步因子時,圖?中信息安全設備的更新模塊具體包括 計時單元,用于對信息安全設備的存儲模塊存儲的動態(tài)因子進行計時更新;該計時單元 可以具體為計時芯片;電池,用于給計時單元提供電量。進一步地,圖2中信息安全設備的更新模塊具體包括更新單元,用于當識別碼生成模塊得到識別碼后,對信息安全設備的存儲模塊存儲的動 態(tài)因子增加或減少指定的值。進一步地,圖2中第二裝置的獲取模塊具體包括獲取單元,用于當密鑰為一個時,通過第二裝置的通信模塊向信息安全設備發(fā)送固定的 獲取識別碼的指令,并通過第二裝置的通信模塊接收信息安全設備返回的識別碼; 相應地,信息安全設備的識別碼生成模塊具體包括識別碼生成單元,用于在接收到第二裝置發(fā)來的獲取識別碼指令后,使用信息安全設備 的存儲模塊存儲的算法、密鑰和動態(tài)因子計算出識別碼。 進一步地,圖2中第二裝置的獲取模塊具體包括獲取單元,用于當密鑰為多個時,通過第二裝置的通信模塊向信息安全設備發(fā)送獲取識 別碼的指令,指令中攜帶指定密鑰的索引,并通過第二裝置的通信模塊接收信息安全設備返 回的識別碼;相應地,信息安全設備的識別碼生成模塊具體包括識別碼生成單元,用于在接收到第二裝置發(fā)來的獲取識別碼的指令后,使用信息安全設 備的存儲模塊存儲的算法、該指令中的索引對應的密鑰和動態(tài)因子計算出識別碼。進一步地,圖2中第二裝置的控制模塊具體包括-比對單元,用于當驗證碼生成模塊生成的驗證碼為多個時,比對獲取模塊得到的識別碼 與多個驗證碼;控制單元,用于當比對單元比對出多個驗證碼中有一個驗證碼與識別碼相同,則允許運 行軟件;當比對單元比對出多個驗證碼均與識別碼不同,則進行異常處理,例如不允許運行軟件。進一步地,圖2中第二裝置還包括曰志生成模塊,用于當控制模塊允許運行軟件后,生成包含第二裝置的更新模塊更新后 的動態(tài)因子的日志信息;恢復模塊,用于當第二裝置重新安裝軟件時,根據日志生成模塊生成的日志信息,將軟 件中的動態(tài)因子更新為日志信息中的動態(tài)因子。本實施例中的信息安全設備的通信模塊可以具體為USB接口、紅外接口、藍牙接口、并 口、串口、射頻接口和eSATA接口中的至少一種'。具體的,信息安全設備的存儲模塊、識別碼生成模塊、通信模塊和更新模塊可以集成在 一顆安全控制芯片上來實現,如集成在有USB接口的芯片CY7C63813上。本發(fā)明實施例通過在軟件和信息安全設備中設置相同的算法、密鑰和動態(tài)因子,將信息 安全設備生成的識別碼和第二裝置生成的驗證碼進行比對并同步更新,來對軟件進行保護。 第二裝置安裝的軟件只有在合法的信息安全設備通過認證后,才能運行使用,即使接口仿真 軟件盜竊了本次軟件對信息安全設備進行驗證過程中相關的交互數據,該數據對于下次軟件 對信息安全設備的驗證過程是無效的,從而有效地保護了軟件,防止軟件被盜版。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之 內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種軟件保護的方法,其特征在于,所述方法包括第一裝置在軟件中設置算法、密鑰和動態(tài)因子,在信息安全設備中設置相同的算法、密鑰和動態(tài)因子;第二裝置獲取所述軟件和信息安全設備且安裝所述軟件后,當需要運行該軟件時,與所述信息安全設備建立連接;所述第二裝置獲取所述信息安全設備使用所述算法、密鑰和動態(tài)因子計算出的識別碼,并根據所述軟件中的算法、密鑰和動態(tài)因子計算出驗證碼;所述第二裝置比對所述識別碼與所述驗證碼,如果一致,則允許運行所述軟件;否則,進行異常處理;所述信息安全設備對所述信息安全設備內的動態(tài)因子進行更新,所述第二裝置按照相同的方式對所述軟件中的動態(tài)因子進行更新。
2. 根據權利要求1所述的軟件保護的方法,其特征在于,所述算法具體為HOPT、 DES、 RSA、 SHA算法或由生產商預先設定的算法。
3. 根據權利要求1所述的軟件保護的方法,其特征在于,所述動態(tài)因子具體為事件同步 因子,所述方法還包括所述信息安全設備對更新后的動態(tài)因子進行存儲,所述第二裝置將更新后的動態(tài)因子存 儲在所述軟件中。
4. 根據權利要求1所述的軟件保護的方法,其特征在于,所述動態(tài)因子具體為時間同步 因子,所述信息安全設備對所述信息安全設備內的動態(tài)因子迸行更新,所述第二裝置按照相 同的方式對所述軟件中的動態(tài)因子進行更新,具體包括所述信息安全設備對所述信息安全設備內的動態(tài)因子通過計時進行更新,所述第二裝置 按照相同的方式對所述軟件中的動態(tài)因子進行計時更新。
5. 根據權利要求1所述的軟件保護的方法,其特征在于,所述更新具體為對所述動態(tài)因 子增加或減少指定的值。
6. 根據權利要求1所述的軟件保護的方法,其特征在于,所述第二裝置獲取所述信息安 全設備使用所述算法、密鑰和動態(tài)因子計算出的識別碼,具體包括-當所述密鑰為一個時,所述第二裝置向所述信息安全設備發(fā)送固定的獲取識別碼的指令; 所述信息安全設備收到所述指令后,使用所述算法、密鑰和動態(tài)因子計算出識別碼,并 將所述識別碼發(fā)送給所述第二裝置。
7. 根據權利要求1所述的軟件保護的方法,其特征在于,所述第二裝置獲取所述信息安 全設備使用所述算法、密鑰和動態(tài)因子計算出的識別碼,具體包括當所述密鑰為多個時,所述第二裝置向所述信息安全設備發(fā)送獲取識別碼的指令,所述 指令中攜帶指定密鑰的索引;所述信息安全設備收到所述指令后,使用所述算法、所述索引對應的密鑰和所述動態(tài)因 子計算出識別碼,并將所述識別碼發(fā)送給所述第二裝置。
8. 根據權利要求1所述的軟件保護的方法,其特征在于,所述第二裝置比對所述識別碼 與所述驗證碼,如果一致,則允許運行所述軟件;否則,進行異常處理,具體包括當所述驗證碼為多個時,所述第二裝置比對所述識別碼與所述多個驗證碼,如果所述多 個驗證碼中有一個驗證碼與所述識別碼相同,則允許運行所述軟件;如果所述多個驗證碼均 與所述識別碼不同,則進行異常處理。
9. 根據權利要求1所述的軟件保護的方法,其特征在于,所述方法還包括 所述第二裝置允許運行所述軟件后,生成包含所述第二裝置更新后的動態(tài)因子的日志信息,并存儲所述日志信息;當所述第二裝置重新安裝所述軟件時,根據所述日志信息,將所述軟件中的動態(tài)因子更 新為所述日志信息中的動態(tài)因子。
10. —種軟件保護的系統(tǒng),其特征在于,所述系統(tǒng)包括第一裝置、第二裝置和信息安全 設備;所述第一裝置包括設置模塊,用于在軟件中設置算法、密鑰和動態(tài)因子,在所述信息安全設備中設置相同的算法、密鑰和動態(tài)因子; 所述第二裝置包括通信模塊,用于當所述第二裝置獲取所述軟件和信息安全設備且安裝所述軟件后,當需 要運行該軟件時,與所述信息安全設備建立連接,并與所述信息安全設備進行通信; 獲取模塊,用于通過所述通信模塊獲取所述信息安全設備生成的識別碼; 驗證碼生成模塊,用于根據所述軟件中的算法、密鑰和動態(tài)因子計算出驗證碼; 控制模塊,用于比對所述獲取模塊得到的識別碼與所述驗證碼生成模塊得到的驗證碼, 如果一致,則允許所述第二裝置運行所述軟件;否則,所述第二裝置進行異常處理;更新模塊,用于按照與所述信息安全設備相同的方式對所述軟件中的動態(tài)因子進行更新; 所述信息安全設備包括 .存儲模塊,用于存儲所述第一裝置的設置模塊設置的算法、密鑰和動態(tài)因子; 識別碼生成模塊,用于使用所述存儲模塊存儲的算法、密鑰和動態(tài)因子計算出識別碼; 通信模塊,用于與所述第二裝置進行通信,將所述識別碼生成模塊得到的識別碼發(fā)送給 所述第二裝置;更新模塊,用于對所述存儲模塊存儲的動態(tài)因子進行更新。
11. 根據權利要求IO所述的軟件保護的系統(tǒng),其特征在于,所述算法具體為HOPT、DES、 RSA、 SHA算法或由生產商預先設定的算法。
12. 根據權利要求10所述的軟件保護的系統(tǒng),其特征在于,所述動態(tài)因子具體為事件同 步因子,所述第二裝置還包括-存儲模塊,用于將所述第二裝置的更新模塊更新后的動態(tài)因子存儲在所述軟件中。
13. 根據權利要求10所述的軟件保護的系統(tǒng),其特征在于,所述動態(tài)因子具體為時間同 步因子,所述信息安全設備的更新模塊具體包括計時單元,用于對所述信息安全設備的存儲模塊存儲的動態(tài)因子進行計時更新;電池,用于給所述計時單元提供電量。
14. 根據權利要求13所述的軟件保護系統(tǒng),其特征在于,所述計時單元具體為計時芯片。
15. 根據權利要求10所述的軟件保護的系統(tǒng),其特征在于,所述信息安全設備的更新模 塊具體包括-更新單元,用于對所述信息安全設備的存儲模塊存儲的動態(tài)因子增加或減少指定的值。
16. 根據權利要求10所述的軟件保護的系統(tǒng),其特征在于,所述第二裝置的獲取模塊具 體包括獲取單元,用于當所述密鑰為一個時,通過所述第二裝置的通信模塊向所述信息安全設 備發(fā)送固定的獲取識別碼的指令,并通過所述第二裝置的通信模塊接收所述信息安全設備返 回的識別碼;相應地,所述信息安全設備的識別碼生成模塊具體包括識別碼生成單元,用于在接收到所述第二裝置發(fā)來的獲取識別碼指令后,使用所述信息 安全設備的存儲模塊存儲的算法、密鑰和動態(tài)因子計算出識別碼。
17. 根據權利要求10所述的軟件保護的系統(tǒng),其特征在于,所述第二裝置的獲取模塊具 體包括-獲取單元,用于當所述密鑰為多個時,通過所述第二裝置的通信模塊向所述信息安全設 備發(fā)送獲取識別碼的指令,所述指令中攜帶指定密鑰的索引,并通過所述第二裝置的通信模 塊接收所述信息安全設備返回的識別碼;相應地,所述信息安全設備的識別碼生成模塊具體包括-識別碼生成單元,用于在接收到所述第二裝置發(fā)來的獲取識別碼的指令后,使用所述信 息安全設備的存儲模塊存儲的算法、所述指令中的索引對應的密鑰和動態(tài)因子計算出識別碼。
18. 根據權利要求10所述的軟件保護的系統(tǒng),其特征在于,所述第二裝置的控制模塊具 體包括比對單元,用于當所述驗證碼生成模塊生成的驗證碼為多個時,比對所述獲取模塊得到 的識別碼與所述多個驗證碼;控制單元,用于當所述比對單元比對出所述多個驗證碼中有一個驗證碼與所述識別碼相同,則允許運行所述軟件當所述比對單元比對出所述多個驗證碼均與所述識別碼不同,則 進行異常處理。
19. 根據權利要求10所述的軟件保護的系統(tǒng),其特征在于,所述第二裝置還包括 日志生成模塊,用于當所述控制模塊允許運行所述軟件后,生成包含所述第二裝置的更新模塊更新后的動態(tài)因子的日志信息;恢復模塊,用于當所述第二裝置重新安裝所述軟件時,根據所述日志生成模塊生成的日 志信息,將所述軟件中的動態(tài)因子更新為所述日志信息中的動態(tài)因子。
20. 根據權利要求10所述的軟件保護的系統(tǒng),其特征在于,所述信息安全設備的通信模 塊具體為USB接口、紅外接口、藍牙接口、并口、串口、射頻接口和eSATA接口中的至少一種。
全文摘要
本發(fā)明公開了一種軟件保護的方法和系統(tǒng),屬于軟件保護領域。所述方法包括第一裝置分別在軟件和信息安全設備中設置相同的算法、密鑰和動態(tài)因子;第二裝置獲取所述軟件和信息安全設備且安裝該軟件后,當需要運行該軟件時,與信息安全設備建立連接;第二裝置獲取信息安全設備使用算法、密鑰和動態(tài)因子生成的識別碼,與根據軟件中的算法、密鑰和動態(tài)因子生成的驗證碼進行比對,一致則允許運行該軟件;否則進行異常處理;信息安全設備及第二裝置按照相同方式更新各自的動態(tài)因子。所述系統(tǒng)包括第一裝置、第二裝置和信息安全設備。本發(fā)明實現了有效地對軟件進行保護,防止接口仿真程序對軟件進行盜版。
文檔編號G06F21/00GK101266638SQ20081010419
公開日2008年9月17日 申請日期2008年4月16日 優(yōu)先權日2008年4月16日
發(fā)明者于華章, 舟 陸 申請人:北京飛天誠信科技有限公司