本發(fā)明實施例涉及通信技術領域,尤其涉及一種軟件防護方法及裝置。
背景技術:
web廣泛普及,人們使用著各種web應用,這些web應用服務給人們的工作和生活帶來了巨大的便利,推動了社會的發(fā)展。然而,隨著web應用的高速發(fā)展,針對web應用漏洞的攻擊導致的信息泄漏和經(jīng)濟損失正在增加。軟件被篡改已成為web系統(tǒng)所面臨的最大的威脅。
為了解決該問題,現(xiàn)有技術提出了一些技術方案,以防止軟件被篡改,其中,一種方式是:將軟件或信息產(chǎn)品的內(nèi)容分為本地信息和網(wǎng)絡信息分別存放在獨立介質(zhì)和網(wǎng)絡中心上;合法的用戶擁有一個唯一的標識信息;網(wǎng)絡中心運行一個應用軟件,能夠通過用戶傳來的標識信息判斷該用戶是否合法,并向該合法用戶傳送所需的網(wǎng)絡信息。使得軟件的內(nèi)容不易被非法復制,從而有效地制止盜版,甚至杜絕盜版,可用于面市的應用軟件或信息產(chǎn)品。該發(fā)明主要是用戶有合法的標識后,可以從網(wǎng)絡下載該軟件。另外,還有一種方式是:根據(jù)接收到的軟件控制指令,生成相應的第一軟件特征字符串;以第一軟件特征字符串為解密密鑰,對預存的加密圖片文件進行解密,獲取相應的解密圖片文件;加載解密圖片文件,并判斷解密圖片文件是否能夠正常加載;若是,則軟件識別為未被篡改;若否,則軟件識別為被篡改。其將傳統(tǒng)的采用驗證字符串來識別軟件是否被篡改替換為采用解密圖片文件來進行識別,使得識別過程不再依賴于獨立的驗證字符串,并且識別過程更加直觀,且不需要人工比對。
但是,上述技術方案存在一個問題是對軟件的防護力度不夠強。
技術實現(xiàn)要素:
本發(fā)明實施例提供一種軟件防護方法及裝置,以提高對軟件的防護力度。
本發(fā)明實施例的一個方面是提供一種軟件防護方法,包括:
對等網(wǎng)絡中的節(jié)點接收軟件開發(fā)平臺發(fā)送的簽名信息,所述簽名信息是所述軟件開發(fā)平臺采用其對應的私鑰對軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、第一哈希值進行簽名后得到的信息;
所述節(jié)點根據(jù)所述軟件開發(fā)者的身份信息,查詢歷史記錄獲得所述軟件開發(fā)者的公鑰;
所述節(jié)點根據(jù)所述軟件開發(fā)者的公鑰對所述軟件開發(fā)平臺發(fā)送的簽名信息進行驗證;
若所述節(jié)點根據(jù)所述軟件開發(fā)者的公鑰對所述軟件開發(fā)平臺發(fā)送的簽名信息驗證成功,則根據(jù)歷史哈希值和隨機數(shù)計算第二哈希值;
若所述第二哈希值小于閾值,則所述節(jié)點將所述軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、所述第一哈希值、所述隨機數(shù)和所述第二哈希值發(fā)送給所述對等網(wǎng)絡中的其他節(jié)點。
本發(fā)明實施例的另一個方面是提供一種軟件防護裝置,包括:
接收模塊,用于接收軟件開發(fā)平臺發(fā)送的簽名信息,所述簽名信息是所述軟件開發(fā)平臺采用其對應的私鑰對軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、第一哈希值進行簽名后得到的信息;
查詢模塊,用于根據(jù)所述軟件開發(fā)者的身份信息,查詢歷史記錄獲得所述軟件開發(fā)者的公鑰;
驗證模塊,用于根據(jù)所述軟件開發(fā)者的公鑰對所述軟件開發(fā)平臺發(fā)送的簽名信息進行驗證;
計算模塊,用于根據(jù)所述軟件開發(fā)者的公鑰對所述軟件開發(fā)平臺發(fā)送的簽名信息驗證成功時,根據(jù)歷史哈希值和隨機數(shù)計算第二哈希值;
發(fā)送模塊,用于當所述第二哈希值小于閾值時,將所述軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、所述第一哈希值、所述隨機數(shù)和所述第二哈希值發(fā)送給所述對等網(wǎng)絡中的其他節(jié)點。
本發(fā)明實施例提供的軟件防護方法及裝置,通過對等網(wǎng)絡中的節(jié)點接收軟件開發(fā)平臺發(fā)送的簽名信息,并根據(jù)軟件開發(fā)者的公鑰對該簽名信息進行驗證;如果驗證成,則該節(jié)點根據(jù)歷史哈希值和隨機數(shù)計算新的哈希值,如果新的哈希值小于閾值,則該節(jié)點將軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、隨機數(shù)和新的哈希值發(fā)送給對等網(wǎng)絡中的其他節(jié)點,避免非法節(jié)點對軟件進行修改,同時根據(jù)軟件標識對應的哈希值可以方便確定,該軟件是否被修改,提高了對軟件的防護力度。
附圖說明
圖1為本發(fā)明實施例提供的軟件防護方法流程圖;
圖2為本發(fā)明實施例提供的軟件防護方法適用的網(wǎng)絡架構圖;
圖3為本發(fā)明實施例提供的軟件防護裝置的結構圖;
圖4為本發(fā)明另一實施例提供的軟件防護裝置的結構圖。
具體實施方式
圖1為本發(fā)明實施例提供的軟件防護方法流程圖;圖2為本發(fā)明實施例提供的軟件防護方法適用的網(wǎng)絡架構圖。具體的軟件防護方法步驟如下:
步驟s101、對等網(wǎng)絡中的節(jié)點接收軟件開發(fā)平臺發(fā)送的簽名信息,所述簽名信息是所述軟件開發(fā)平臺采用其對應的私鑰對軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、第一哈希值進行簽名后得到的信息。
如圖2所示,軟件開發(fā)平臺在發(fā)布一款軟件時,同時發(fā)布軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、待發(fā)布的軟件和第一哈希值,該第一哈希值是軟件開發(fā)平臺對軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、待發(fā)布的軟件進行哈希運算得到的哈希值。例如軟件開發(fā)平臺將軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、待發(fā)布的軟件和第一哈希值發(fā)送到應用服務器。其中,軟件開發(fā)者的身份信息具體可以是軟件開發(fā)者名稱,待發(fā)布的軟件的標識信息具體可以是待發(fā)布的軟件的名稱,待發(fā)布的軟件具體可以是軟件開發(fā)者經(jīng)過開發(fā)后待發(fā)布的軟件本身。為了防止惡意修改者修改軟件的同時計算新的hash值使得驗證者無法察覺,在發(fā)布軟件的同時,軟件開發(fā)平臺還需要將軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息和第一哈希值發(fā)布到公共賬本,該公共賬本由對等網(wǎng)絡中的各個節(jié)點維護,并保證該公共賬本不被篡改,另外,軟件開發(fā)平臺也可以是對等網(wǎng)絡中的節(jié)點。
當用戶終端從應用服務器查詢到其需要的軟件本身后獲得該軟件本身對應的軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息和第一哈希值;同時,用戶終端還從對等網(wǎng)絡中的公共賬本中獲取該軟件本身對應的第一哈希值。用戶終端比較從應用服務器獲得的該軟件本身對應的第一哈希值和從公共賬本中獲取的該軟件本身對應的第一哈希值是否一致,如果不一致,則該用戶終端不下載該軟件本身;如果一致,該用戶終端下載該軟件本身,當用戶終端下載完該軟件本身后,對軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、待發(fā)布的軟件進行哈希運算得到一個哈希值,并比較計算出的哈希值和應用服務器、公共賬本中記錄的該軟件本身對應的第一哈希值是否一致,如果不一致,則該用戶終端不安裝或使用該軟件本身,如果一致,則該用戶終端安裝或使用該軟件本身。
軟件開發(fā)平臺具體可以采用其對應的私鑰對該軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、第一哈希值進行簽名后得到簽名信息,并將簽名信息發(fā)送給對等網(wǎng)絡中的節(jié)點。
步驟s102、所述節(jié)點根據(jù)所述軟件開發(fā)者的身份信息,查詢歷史記錄獲得所述軟件開發(fā)者的公鑰。
在本實施例中,公共賬本還可以記錄每個節(jié)點的身份信息和每個節(jié)點的公鑰的對應關系,例如可以記錄軟件開發(fā)者的身份信息和該軟件開發(fā)者的公鑰。
對等網(wǎng)絡中的節(jié)點接收到軟件開發(fā)平臺發(fā)送的簽名信息后,查詢公共賬本中該軟件開發(fā)者的身份信息對應的該軟件開發(fā)者的公鑰。
步驟s103、所述節(jié)點根據(jù)所述軟件開發(fā)者的公鑰對所述軟件開發(fā)平臺發(fā)送的簽名信息進行驗證。
對等網(wǎng)絡中的節(jié)點根據(jù)該軟件開發(fā)者的公鑰對該軟件開發(fā)平臺發(fā)送的簽名信息進行驗證。
步驟s104、若所述節(jié)點根據(jù)所述軟件開發(fā)者的公鑰對所述軟件開發(fā)平臺發(fā)送的簽名信息驗證成功,則根據(jù)歷史哈希值和隨機數(shù)計算第二哈希值。
如果對等網(wǎng)絡中的節(jié)點根據(jù)該軟件開發(fā)者的公鑰對該軟件開發(fā)平臺發(fā)送的簽名信息驗證成功,說明該軟件開發(fā)者的身份是真實合法的,則該節(jié)點根據(jù)歷史哈希值和隨機數(shù)計算第二哈希值,該節(jié)點計算第二哈希值的同時,對等網(wǎng)絡中的其他節(jié)點也在計算第二哈希值,對等網(wǎng)絡中的各個節(jié)點計算第二哈希值的目的是:各個節(jié)點根據(jù)計算出的第二哈希值獲得記錄該軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、第一哈希值的權利,具體的,若各個節(jié)點中的某一個節(jié)點計算出的第二哈希值小于閾值,則該節(jié)點即可獲取到記錄該軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、第一哈希值的權利。
步驟s105、若所述第二哈希值小于閾值,則所述節(jié)點將所述軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、所述第一哈希值、所述隨機數(shù)和所述第二哈希值發(fā)送給所述對等網(wǎng)絡中的其他節(jié)點。
如果該第二哈希值小于閾值,則該節(jié)點將該軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、第一哈希值、所述隨機數(shù)和所述第二哈希值發(fā)送給所述對等網(wǎng)絡中的其他節(jié)點。
本發(fā)明實施例通過對等網(wǎng)絡中的節(jié)點接收軟件開發(fā)平臺發(fā)送的簽名信息,并根據(jù)軟件開發(fā)者的公鑰對該簽名信息進行驗證;如果驗證成,則該節(jié)點根據(jù)歷史哈希值和隨機數(shù)計算新的哈希值,如果新的哈希值小于閾值,則該節(jié)點將軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、隨機數(shù)和新的哈希值發(fā)送給對等網(wǎng)絡中的其他節(jié)點,避免非法節(jié)點對軟件進行修改,同時根據(jù)軟件標識對應的哈希值可以方便確定,該軟件是否被修改,提高了對軟件的防護力度。
在上述實施例的基礎上,對等網(wǎng)絡中的節(jié)點還可以將自己的身份信息和該節(jié)點的公鑰發(fā)送給對等網(wǎng)絡中的其他節(jié)點,以便其他節(jié)點將該節(jié)點的身份信息和該節(jié)點的公鑰存儲到公共賬本中。此外,節(jié)點接收軟件開發(fā)平臺發(fā)送的簽名信息之前,該節(jié)點還可以接收該軟件開發(fā)平臺發(fā)送的所述軟件開發(fā)者的身份信息和所述軟件開發(fā)者的公鑰的對應關系;并將所述軟件開發(fā)者的身份信息和所述軟件開發(fā)者的公鑰的對應關系存儲在所述歷史記錄中。
圖3為本發(fā)明實施例提供的軟件防護裝置的結構圖。本發(fā)明實施例提供的軟件防護裝置可以執(zhí)行軟件防護方法實施例提供的處理流程,如圖3所示,軟件防護裝置30包括接收模塊31、查詢模塊32、驗證模塊33、計算模塊34、發(fā)送模塊35,其中,接收模塊31用于接收軟件開發(fā)平臺發(fā)送的簽名信息,所述簽名信息是所述軟件開發(fā)平臺采用其對應的私鑰對軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、第一哈希值進行簽名后得到的信息;查詢模塊32用于根據(jù)所述軟件開發(fā)者的身份信息,查詢歷史記錄獲得所述軟件開發(fā)者的公鑰;驗證模塊33用于根據(jù)所述軟件開發(fā)者的公鑰對所述軟件開發(fā)平臺發(fā)送的簽名信息進行驗證;計算模塊34用于根據(jù)所述軟件開發(fā)者的公鑰對所述軟件開發(fā)平臺發(fā)送的簽名信息驗證成功時,根據(jù)歷史哈希值和隨機數(shù)計算第二哈希值;發(fā)送模塊35用于當所述第二哈希值小于閾值時,將所述軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、所述第一哈希值、所述隨機數(shù)和所述第二哈希值發(fā)送給所述對等網(wǎng)絡中的其他節(jié)點。
本發(fā)明實施例通過對等網(wǎng)絡中的節(jié)點接收軟件開發(fā)平臺發(fā)送的簽名信息,并根據(jù)軟件開發(fā)者的公鑰對該簽名信息進行驗證;如果驗證成,則該節(jié)點根據(jù)歷史哈希值和隨機數(shù)計算新的哈希值,如果新的哈希值小于閾值,則該節(jié)點將軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、隨機數(shù)和新的哈希值發(fā)送給對等網(wǎng)絡中的其他節(jié)點,避免非法節(jié)點對軟件進行修改,同時根據(jù)軟件標識對應的哈希值可以方便確定,該軟件是否被修改,提高了對軟件的防護力度。
圖4為本發(fā)明另一實施例提供的軟件防護裝置的結構圖。在上述實施例的基礎上,所述第一哈希值是所述軟件開發(fā)平臺對所述軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、待發(fā)布的軟件進行哈希運算得到的哈希值。
所述第一哈希值是所述軟件開發(fā)平臺對所述軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、待發(fā)布的軟件進行哈希運算得到的哈希值。
發(fā)送模塊35還用于將所述節(jié)點的身份信息和所述節(jié)點的公鑰發(fā)送給所述對等網(wǎng)絡中的其他節(jié)點。接收模塊31還有用于接收所述軟件開發(fā)平臺發(fā)送的所述軟件開發(fā)者的身份信息和所述軟件開發(fā)者的公鑰的對應關系;另外,軟件防護裝置30還包括存儲模塊36,存儲模塊36用于將所述軟件開發(fā)者的身份信息和所述軟件開發(fā)者的公鑰的對應關系存儲在所述歷史記錄中。
本發(fā)明實施例提供的軟件防護裝置可以具體用于執(zhí)行上述圖1所提供的方法實施例,具體功能此處不再贅述。
本發(fā)明實施例通過對等網(wǎng)絡中的節(jié)點接收軟件開發(fā)平臺發(fā)送的簽名信息,并根據(jù)軟件開發(fā)者的公鑰對該簽名信息進行驗證;如果驗證成,則該節(jié)點根據(jù)歷史哈希值和隨機數(shù)計算新的哈希值,如果新的哈希值小于閾值,則該節(jié)點將軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、隨機數(shù)和新的哈希值發(fā)送給對等網(wǎng)絡中的其他節(jié)點,避免非法節(jié)點對軟件進行修改,同時根據(jù)軟件標識對應的哈希值可以方便確定,該軟件是否被修改,提高了對軟件的防護力度。
綜上所述,本發(fā)明實施例通過對等網(wǎng)絡中的節(jié)點接收軟件開發(fā)平臺發(fā)送的簽名信息,并根據(jù)軟件開發(fā)者的公鑰對該簽名信息進行驗證;如果驗證成,則該節(jié)點根據(jù)歷史哈希值和隨機數(shù)計算新的哈希值,如果新的哈希值小于閾值,則該節(jié)點將軟件開發(fā)者的身份信息、待發(fā)布的軟件的標識信息、隨機數(shù)和新的哈希值發(fā)送給對等網(wǎng)絡中的其他節(jié)點,避免非法節(jié)點對軟件進行修改,同時根據(jù)軟件標識對應的哈希值可以方便確定,該軟件是否被修改,提高了對軟件的防護力度。
在本發(fā)明所提供的幾個實施例中,應該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(read-onlymemory,rom)、隨機存取存儲器(randomaccessmemory,ram)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
本領域技術人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實施例技術方案的范圍。