本發明涉及信息安全,尤其涉及一種基于橢圓曲線短簽名的注冊碼生成與驗證方法及系統。
背景技術:
1、傳統軟件注冊方法有多種,包括注冊碼注冊、加密鎖注冊、授權文件注冊等,其中注冊碼注冊最為便捷,因而使用更為普遍。
2、現有技術中,軟件注冊碼的生成與驗證算法協議中采用對稱計算協議,黑客可以通過逆向分析軟件的注冊驗證模塊破解注冊碼的生成算法,從而編寫此軟件的注冊機并發布于互聯網,用戶可以通過注冊機生成合法的注冊碼而繞開軟件的授權驗證功能,這也是目前大量軟件在互聯網上存在大量破解版本的主要原因。基于對稱算法協議的注冊碼生成與驗證方法,黑客可以通過逆向注冊碼驗證程序破解注冊碼的生成算法并開發注冊機軟件,這是目前造成軟件被盜版泛濫的最重要原因。也就是說,依靠注冊碼生成算法協議保密而生成的注冊碼與驗證方法在保護軟件版權時,作用有相當大的局限性,尤其是軟件的用戶量足夠大時,黑客攻擊注冊碼的動力強,這種保護機制對軟件版權保護能力已不滿足需求。
3、基于對稱算法協議(如數字摘要算法、帶密鑰的數字摘要算法、分組密碼算法)的注冊碼生成與驗證面對軟件的逆向分析攻擊經常顯得很無賴,而對于黑客所開發的注冊機軟件難以防范。所以有部分軟件開發商嘗試以公鑰密碼算法實現注冊碼的生成與驗證,生成注冊碼時所用私鑰由軟件商所有,驗證只需要公鑰,而公鑰是可公開的,公鑰密碼算法的注冊碼生成與驗證算法協議是可以公開的,安全性依賴于公鑰密碼技術。攻擊者若想破解軟件的注冊碼保護則需要通過破解軟件開發商的私鑰,而公鑰密碼的安全性保障了在現有的計算機計算能力下,要破解公鑰密碼至少需要上千年,顯然這種通過破解公鑰密碼的攻擊手段是無效的。但是,通常采用公鑰密碼,無論是基于大數分解難度的rsa(ron?rivest、adi?shamir和leonard?adleman)算法還是基于離散對數難度的ecc(elliptic?curvecryptography)通過數字簽名所生成的授權注冊碼的長度都較長(至少64字節二進制數據,編碼后達到100多個字符),讓用戶手工錄入顯然十分不便,只能通過授權文件方式導入;這與傳統的注冊碼只有20~30字符相比適用范圍和操作的便利性上造成用戶體驗差,并且對于一些軟硬一體化的產品的注冊碼是需要印刷在產品標簽上,過長的注冊碼也難以要產品標簽上印刷,輸入過長的注冊碼更是用戶難以接受。
技術實現思路
1、鑒于上述的分析,本發明旨在公開一種基于橢圓曲線短簽名的注冊碼生成與驗證方法及系統,通過對軟件運行環境的機器碼進行短簽名,并將簽名通過編碼生成與傳統注冊碼長度相類似的注冊碼,并通過簽名驗證實現注冊碼與運行的設備相綁定,防止軟件在非授權設備上使用,從而有效的實現了軟件的版權保護。
2、一方面,本發明提供了一種基于橢圓曲線短簽名的注冊碼生成方法,具體包括如下步驟:
3、基于安裝軟件的設備的硬件信息和該軟件的標識信息生成該設備運行該軟件所對應的機器碼;
4、生成隨機橢圓曲線密鑰對(sk,pk),基于密鑰對中的私鑰sk對機器碼進行短簽名得到對應的簽名值(r,s);
5、基于簽名值(r,s)生成該軟件在該設備上運行的注冊碼。
6、進一步的,所述基于密鑰對中的私鑰對機器碼進行短簽名得到對應的簽名值包括:
7、生成隨機數k并計算k對應橢圓曲線上的點p=k·g;其中g為橢圓曲線的一個基點,其階為素數;
8、基于橢圓曲線點p的x坐標確定簽名值的r;
9、對所述機器碼計算數字摘要得到機器碼的特征碼,并將所述特征碼轉換為大整數h;
10、基于h和所述私鑰計算得到簽名值的s,s=k-1(h+sk)mod?n,其中n為基點g的階;其中sk為所述私鑰;
11、基于r和s構成所述簽名值(r,s)。
12、進一步的,所述基于簽名值生成該軟件在該設備上運行的注冊碼包括:
13、將所述簽名值(r,s)的字節流拼接得到的字節流采用base64編碼得到可顯示字符串;所述可顯示字符串不包含字符“/”或“+”;
14、基于所述可顯示字符串得到所述注冊碼。
15、進一步的,所述基于安裝軟件的設備的硬件信息和該軟件的標識信息生成該設備運行該軟件所對應的機器碼包括:
16、將所述硬件信息和所述標識信息拼接成信息字符串;
17、基于所述信息字符串計算得到對應的信息數字摘要;
18、將所述信息數字摘要按比特位分為高和低位兩組,將該兩組數據進行邏輯運算得到對應的信息比特位數據;
19、對所述信息比特位數據按照十六進制編碼得到機器碼字符串;
20、基于所述機器碼字符串確定所述機器碼。
21、進一步的,所述硬件信息包括硬盤序列號、cpu序列號、bios編號、網卡mac地址;
22、所述標識信息包括軟件名稱、開發商名稱、版本號;
23、利用sha256或sm3算法基于所述信息字符串計算得到對應的信息數字摘要。
24、另一方面,本發明還提供了一種基于橢圓曲線短簽名的注冊碼驗證方法,用于驗證所述注冊碼生成方法所生成的注冊碼;所述注冊碼驗證方法包括:
25、基于安裝軟件的設備的硬件信息和該軟件的標識信息生成該設備運行該軟件所對應的機器碼;
26、還原待驗證的注冊碼得到簽名值(r′,s′);
27、基于機器碼和簽名值(r′,s′)驗證所述注冊碼。
28、進一步的,所述還原待驗證的注冊碼得到簽名值(r′,s′)包括:
29、基于待驗證的注冊碼得到對應的可顯示字符串;
30、對所述對應的可顯示字符串進行base64解碼得到對應的字節流;
31、基于所述對應的字節流得到簽名值(r′,s′)。
32、進一步的,所述基于機器碼和簽名值(r′,s′)驗證所述注冊碼包括:
33、對機器碼計算數字摘要得到機器碼的特征碼,并將所述特征碼轉換為大整數h′;
34、對大整數h′取模得到整數h1,h1=h′mod?n,其中n為基點g的階;
35、計算h1對應橢圓曲線上的點p1,p1=h1·g;
36、基于所述密鑰對中的公鑰計算橢圓曲線上的驗證點p2,p2=s′-1(p1+pk),其中s′-1表示對s′求模逆,pk為所述隨機橢圓曲線密鑰對中的公鑰;
37、基于p2的x坐標的確定r′;
38、比較r與r′是否相等,若相等,則注冊碼合法,否則注冊碼非法。
39、另一方面,本發明還提供了一種基于橢圓曲線短簽名的注冊碼生成與驗證系統,包括:
40、機器碼生成模塊,用于基于安裝軟件的設備的硬件信息和該軟件的標識信息生成該設備運行該軟件所對應的機器碼;
41、注冊碼生成模塊,用于基于生成的隨機橢圓曲線密鑰對(sk,pk)中的私鑰sk,對機器碼進行短簽名得到對應的簽名值(r,s);基于簽名值(r,s)生成該軟件在該設備上運行的注冊碼;
42、注冊碼驗證模塊,用于驗證注冊碼生成模塊所生成的注冊碼,包括:基于安裝軟件的設備的硬件信息和該軟件的標識信息生成該設備運行該軟件所對應的機器碼;還原待驗證的注冊碼得到簽名值(r′,s′);基于機器碼和簽名值(r′,s′)驗證待驗證的注冊碼。
43、進一步的,所述注冊碼生成模塊在生成注冊碼時,從軟件生產商處安全獲取所述隨機橢圓曲線密鑰對中的私鑰;
44、所述注冊碼驗證模塊預先采用密鑰分散算法隱藏配置所述隨機橢圓曲線密鑰對中的公鑰。
45、本發明至少可以實現下述之一的有益效果:
46、通過本發明創新設計的短簽名算法過程使簽名的長度極大的縮短,以滿足注冊碼通常小于30個字符的需求,極大提升了用戶的操作體驗。本實施例,通過基于軟件運行設備的硬件信息和軟件的標識信息生成機器碼,基于機器碼生成注冊碼,實現了軟件與運行環境的硬件綁定,可有效解決軟件的版權保護問題,任何非法復制軟件至非授權設備均無法運行。
47、本發明通過基于軟件運行環境的機器碼經過橢圓曲線簽名生成注冊碼,而簽名所用的私鑰只有軟件開發商所有,所以注冊碼是無法假冒和偽造的,任何生成破解注冊碼工具軟件的攻擊版圖都是徒勞的,有效實現對軟件的版權保護。
48、通過采用公開密碼算法生成注冊碼和驗證注冊碼,其安全性依賴公鑰密碼保障,在現有的計算機處理能力下公鑰密碼算法是公認安全的,密碼強度是可證明安全的,因此本發明的生成方法和驗證方法是安全有效的,解決了注冊碼被黑客逆向分析得到注冊碼生成算法從而開發注冊機破解程序的功能。同時,由于本發明采用了短簽名算法,從而解決了采用公鑰密碼的簽名算法生成的授權碼過長無法使用注冊碼形式的問題。
49、本發明的其他特征和優點將在隨后的說明書中闡述,并且,部分優點可從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過說明書、權利要求書以及附圖中所特別指出的內容中來實現和獲得。