《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 基于DSA算法的軟件注冊碼保護

基于DSA算法的軟件注冊碼保護

2009-08-13
作者:譚毓安,盧 超,崔志剛

??? 摘? 要: 提出一種利用DSA算法生成和驗證軟件注冊碼的方法。注冊碼的計算和驗證分別使用秘密密鑰和公開密鑰,以保證注冊碼計算的秘密性。
??? 關鍵詞: 注冊碼? 軟件保護? DSA數字簽名算法

?

??? 計算機軟件采用的加密方法可分為硬加密和軟加密。硬加密主要有鑰匙盤、軟件狗、CD指紋等,其兼容性較差、成本高,不能有效地利用Internet來發布和銷售軟件。軟加密是通過軟件注冊碼的形式向用戶提供授權,不依賴于專門硬件,從而避免了硬加密方法的一些限制。
??? 本文研究了一種通過公開密鑰數字簽名算法進行軟件加密的方法。該方法使用DSA(Digital Signature Algorithm)數字簽名算法對主機ID生成一個數字簽名作為軟件的注冊碼,軟件運行時再對數字簽名進行驗證來判斷軟件的合法性。只有開發商才能對主機ID進行數字簽名,此方法可有效地保護軟件版權,而且不依賴于任何特殊的硬件設備。
1? 利用注冊碼實現軟件加密
??? 在軟件運行前,對計算機硬件進行檢測以獲得該計算機的標識信息,即代表這個計算機的主機ID。用戶通過Internet、E-mail、電話等方式將主機ID提供給軟件開發商,軟件開發商對用戶進行驗證后,再根據主機ID計算出一個注冊碼。用戶輸入注冊碼后,軟件中的程序就可以檢測計算機的主機ID和該序列號是否對應。如果用戶將軟件安裝或拷貝到其他計算機上,由于主機ID不同,程序就能判斷出該軟件屬于非法使用。微軟最新發布的Windows XP和Office系列軟件即采用了這種軟加密方式。這種方式也被稱為許可證加密方式或序列號加密方式。
1.1 注冊碼的計算和校驗
??? 主機ID可以根據計算機的CPU序列號、網卡序列號、硬盤卷標、BIOS的日期及版本等信息產生。用戶將主機ID提供給軟件開發商后,得到一個二元組。該二元組就作為對該計算機的授權。
??? 二元組的計算在軟件開發商的計算機上完成,而該二元組的驗證在用戶的計算機上完成。計算模塊和校驗模塊分別用于產生和驗證二元組。因此這兩個模塊之間必須共享一些信息。計算模塊是秘密的,而校驗模塊(包括校驗過程使用的算法及參數)對破解者是沒有任何秘密可言的。通過分析校驗算法,可以獲得注冊碼的計算過程,但不能允許從校驗過程直接推導出計算過程的參數。一些使用注冊碼方式加密的軟件中,其校驗模塊暴露了太多的信息,以至于破解者可以開發出注冊機,為任何主機ID生成注冊碼。
1.2 數字簽名在注冊碼加密的應用
??? 軟件開發商選定一個加密算法和一個私鑰/公鑰對來實現注冊碼加密。私鑰用來為ID產生數字簽名,此簽名作為軟件的注冊碼。公鑰存在于軟件程序中,校驗模塊得到計算機的ID后,利用公鑰驗證數字簽名(注冊碼)的正確性。
??? 使用基于公開密碼體制的數字簽名算法來計算和校驗注冊碼,在軟件程序中包含了公鑰和簽名的驗證過程,而注冊碼計算所需要的私鑰則是秘密的。破解者通過分析、跟蹤等方法可以獲得注冊碼的校驗過程和公鑰,從而推導出注冊碼的計算方法,但他不能得到計算過程中所需要的私鑰,因此不能計算出注冊碼。當密鑰的位數足夠長時,使用暴力窮舉法或其他攻擊方法也不能在有效時間范圍內根據已獲得的公鑰計算出私鑰。
??? 如圖1所示,注冊碼加密包括了密鑰生成、主機ID生成、注冊碼計算、注冊碼校驗四個主要模塊。

?


??? 密鑰生成模塊和注冊碼計算模塊由軟件開發商掌握,主機ID生成模塊和注冊碼校驗模塊在軟件中運行。
??? (1)密鑰生成模塊計算出具有一定長度的<公鑰,私鑰>對。公鑰由注冊碼校驗模塊使用,而私鑰由注冊碼計算模塊使用。(2)主機ID生成模塊按照主機的硬件信息計算出一個固定長度的ID。軟件用戶將主機ID交給軟件開發商。(3)注冊碼計算模塊根據主機ID計算出對應的注冊碼,注冊碼就是主機ID的數字簽名,使用密鑰生成模塊提供的私鑰進行簽名。軟件開發將二元組交給用戶。(4)在運行軟件程序時,注冊碼校驗模塊首先確認ID的合法性。如果本機的ID與二元組中的ID不一致,說明該授權不是對這臺計算機的,程序終止。ID正確時,再檢驗二元組是否匹配,即注冊碼是否正確。如果不匹配,說明注冊碼是偽造的,程序終止。
2? 基于DSA算法的軟件加密
??? 數字簽名算法包括兩大類:基于公開密鑰的數字簽名和基于共享密鑰的數字簽名。前者包括ElGamal、DSA(Digital Signature Algorithm)、RSA(Rivest Shamir Adleman algorithm)等,后者包括HMAC(Keyed-Hashing for Message Authentication)、Asmuth-Bloom等。在軟件加密中不能使用共享密鑰簽名方案,因為校驗模塊中包括的共享密鑰會完全被暴露給破解者。
??? 計算機的ID作為簽名算法的輸入(即消息)得到的簽名作為注冊碼。算法的公鑰存在于校驗模塊中,而私鑰則必須秘密保存,由計算模塊使用。注冊碼的計算和校驗方法不需要保密。
2.1 DSA算法
??? DSA是Schnorr和ElGamal簽名算法的變種,被美國NIST稱為DSS(Digital Signature Standard)[4]。DSA是基于整數有限域離散對數難題的,其安全性與RSA類似。DSA的一個重要特點是兩個素數公開,這樣,當使用p和q時,即使不知道私鑰,也能確認它們的安全性。而RSA算法卻沒有這個特點。DSA算法由于其計算量大,其所用時間是RSA簽名的10~40倍。在軟件加密中,簽名的計算和校驗并不頻繁,因此DSA算法的速度并不會帶來明顯的影響。
??? DSA算法既可用于數據的加密解密,也可用于數字簽名。DSA算法產生的數字簽名由于其長度固定,適合作為軟件的注冊碼。也可以采用ElGamal、RSA等其他公開密鑰數字簽名算法。
??? 算法中應用了下述參數:
??? p:L bits長的素數(L是64的倍數,取為1024);
??? q:p-1的160位的素因子;
??? g:g=h((p-1)/q) mod p,h滿足h((p-1)/q) mod p>1;
??? x:x??? y:y=gx mod p;
??? H(x):單向Hash函數。這里選用安全哈希算法SHA-1(Secure Hash Algorithm)。SHA也被稱為安全哈希標準(SHS,Secure Hash Standard),是由美國政府提出的,它能為任意長度的字符串生成160位的哈希值。
2.2 注冊碼的計算
??? 計算注冊碼的過程實際上就是產生數字簽名的過程。
??? x為秘密密鑰,y為公開密鑰,p、q、g可由一組用戶共享。但在實際應用中,和RSA算法一樣,使用公共模數可能會帶來一定的威脅。對消息m的簽名協議如下:
??? (1)將用戶的主機ID作為消息m,使用SHA算法生成ID的報文摘要g=SHA(m)。g的長度為160位。(2)產生隨機數k,kk mod p)mod q。(4)計算k-1 mod q。(5)計算s=(k-1(H(m)+xr))mod q。(6)簽名結果(m,r,s)中的(r,s)作為主機ID對應的注冊碼。
2.3 注冊碼的校驗
??? 將m和(r,s)作為提供給用戶。驗證注冊碼的過程就是對數字簽名進行校驗的過程。
??? (1)獲得主機ID,計算g=SHA(m)。(2)與中的ID相比較,不匹配時驗證失敗。(3)驗證0-1 mod q。(5)計算uv=wg mod q,v=rw mod q。(6)計算v=((gu×yv)mod p) mod q。(7)若v=r,則認為簽名有效,證實(r,s)是m的正確數字簽名,即可確認用戶輸入的注冊碼是由軟件開發商簽發的。
2.4 私鑰/公鑰對的生成
??? 注冊碼的計算和校驗分別使用一個DSA密鑰對中的私鑰和公鑰。采用Java加密擴展庫JCE的KeyPairGenerator即可生成512位的DSA密鑰對[5]。其主要代碼為:
??? KeyPairGenerator kpg=KeyPairGenerator.getInstance(″DSA″);
??? SecureRandom secrand=new SecureRandom( );//初始化隨機產生器
??? keygen.initialize(512,secrand);//初始化密鑰生成器
??? KeyPair kp=kpg.generateKeyPair( );//生成密鑰對
??? PublicKey pubk=kp.getPublic( );//得到密鑰對中的公鑰
??? PrivateKey prvk=kp.getPrivate( );//得到密鑰對中的私鑰
2.5 模乘運算
??? 在DSA簽名算法中,需要計算xc(mod n),其中指數c很大,如果直接進行c-1次乘法,計算量太大。這里采用“平方-和-乘法”方法,將計算r=xc(mod n)的模乘法的數目縮小到2t次或更少,這里的t是指數c的二進制位數(指數c以二進制形式表示為ct-1……c2 c1 c0)。
???
??? r的初值為1。執行一個循環i從0到t-1,每次計算出否則r不變。
3? 主機ID的匹配
??? 在理想狀態下,主機ID對每一個計算機應是惟一的。當計算機的某些部件被更換或升級時,主機ID可能會改變。如果任何一個小的硬件變動都要求用戶重新申請注冊碼,無疑會加重用戶和軟件開發商雙方的負擔。因此,主機ID的選取應該能容忍主機上的部分硬件變化。
??? 如表1所示,主機ID共128位,包括了9種信息,如CPU、硬盤序列號、網卡MAC地址、BIOS出廠時間等。硬件部件的信息作為SHA-1或MD5等哈希算法的輸入,取計算結果的最低若干位存放在主機ID中,例如硬盤型號的哈希值在識別碼中占20位。

?


??? 軟件運行時,在取得主機ID后,與中的ID相比較。如果二者之間只有3項(或更少)有變化,則認為是正常的硬件升級或維修,匹配成功。
4? 結? 論
??? 本文介紹了一種使用DSA簽名算法來計算和校驗軟件注冊碼的方法。利用DSA密鑰對中的公鑰,注冊碼可以被有效地檢驗,而用戶和破解者從軟件程序中不能獲得計算注冊碼所需的私鑰。在驗證主機ID時,采用了多項硬件部件的組合,既使用戶更換少部分硬件仍能保證其注冊碼的使用。另外,還可以采取其他方法保護校驗模塊,防止其被篡改或繞過。
參考文獻
1?? Cronin G.A Taxonomy of Methods for Software Piracy Prevention.http://www.croninsolutions.com/writing/piracytaxonomy.pdf,2002,6
2?? Microsoft Corporation. Windows XP Product Activation.http://www.microsoft.com/windowsxp/pro/evaluation/overviews/activation.asp,2002,8
3?? Nichol A.Windows Product Activation(WPA) on Windows XP.http://aumha.org/win5/a/wpa.php,2005,3
4?? 吳世忠,祝世雄,張文政.應用密碼學:協議、算法與C源程序.北京:機械工業出版社,2000

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲福利电影| 国产亚洲欧美日韩精品| 亚洲另类在线视频| 最新成人av网站| aaa亚洲精品一二三区| 伊人久久噜噜噜躁狠狠躁| 国产精品一区二区三区久久久| 亚洲国产精品一区二区尤物区| 亚洲激情二区| 一区二区视频免费在线观看| 亚洲最新在线| 欧美日本亚洲视频| 欧美日韩不卡视频| 在线观看一区二区精品视频| 国产精品久久毛片a| 亚洲欧美久久| 亚洲女同性videos| 一区二区欧美精品| 蜜桃伊人久久| 亚洲欧洲三级电影| 免费日韩成人| 久久婷婷成人综合色| 国产欧美日韩专区发布| 国产精品你懂得| 尤妮丝一区二区裸体视频| 男人的天堂成人在线| 欧美成人午夜免费视在线看片| 91久久久久久国产精品| 亚洲全部视频| 欧美与欧洲交xxxx免费观看| 欧美激情影音先锋| 欧美日韩精品一区| 欧美日韩和欧美的一区二区| 亚洲人线精品午夜| 亚洲视频电影图片偷拍一区| 国产伦精品一区二区三区免费| 亚洲一区二区三区777| 国产综合av| 久久精品国产久精国产爱| 日韩视频在线一区二区三区| 日韩一区二区久久| 久久精品亚洲热| 亚洲欧美日韩高清| 久久成人免费电影| 欧美二区不卡| 99精品国产高清一区二区| 国产精品美女999| 午夜视黄欧洲亚洲| 久久高清国产| 欧美国产激情| 欧美日韩国产一区二区三区地区| 在线看国产日韩| 一本色道**综合亚洲精品蜜桃冫| 欧美韩国日本一区| 国产一区欧美日韩| 亚洲九九爱视频| 欧美一级成年大片在线观看| 99视频精品全国免费| 亚洲主播在线| 久久精品亚洲一区二区三区浴池| 久久久久国产精品一区三寸| 久热re这里精品视频在线6| 欧美激情第8页| 亚洲人屁股眼子交8| 欧美日韩午夜在线| 欧美大胆a视频| 国产欧美日韩三区| 亚洲国产欧美日韩另类综合| 亚洲系列中文字幕| 国产亚洲网站| 精久久久久久| 久久亚洲春色中文字幕久久久| 久久美女艺术照精彩视频福利播放| 女人香蕉久久**毛片精品| 欧美日韩亚洲一区二区三区四区| 国产模特精品视频久久久久| 禁断一区二区三区在线| 国产精品影视天天线| 一区二区三区中文在线观看| 国产日韩精品视频一区| 亚洲自啪免费| 欧美另类在线观看| 久久久一区二区三区| 亚洲欧洲精品成人久久奇米网| 美女视频黄a大片欧美| 欧美天天综合网| 欧美日韩国产一区精品一区| 久久激情久久| 亚洲国产精品久久久久婷婷老年| 99re6热只有精品免费观看| 亚洲狠狠丁香婷婷综合久久久| 久久国产一二区| 亚洲综合欧美日韩| 国产亚洲在线| 免费在线看一区| 在线日韩中文| 一区二区三区日韩欧美| 欧美精品久久99| 国产日韩欧美精品一区| 国产一区二区福利| 国产精品一二一区| 国产一区二区精品久久91| 国产精品久久久久久久久久三级| 国产精品大片免费观看| 亚洲黄色在线看| 欧美电影免费观看大全| 久久久久久夜| 欧美激情视频在线播放| 国产女人水真多18毛片18精品视频| 麻豆精品91| 久久久97精品| 亚洲国产成人在线播放| 久久久精品性| 国产精品h在线观看| 亚洲日本免费| 亚洲欧美另类久久久精品2019| 久久男人资源视频| 久久只有精品| 国模精品娜娜一二三区| 艳女tv在线观看国产一区| 欧美一二三区精品| 免费观看成人网| 老司机午夜精品视频在线观看| 亚洲电影免费在线观看| 国产精品ⅴa在线观看h| 久热精品视频在线观看一区| 欧美成人免费大片| 欧美激情精品久久久久久大尺度| 欧美视频中文一区二区三区在线观看| 久久久久久久久伊人| 能在线观看的日韩av| 亚洲黄色有码视频| 国产亚洲激情在线| 韩国亚洲精品| 久久综合久色欧美综合狠狠| 另类图片综合电影| 亚洲一区免费网站| 国产一区91| 久久米奇亚洲| 91久久一区二区| 欧美日韩高清在线观看| 亚洲精品久久在线| 午夜日韩激情| 亚洲第一天堂av| 久久深夜福利免费观看| 国产亚洲欧美一级| 亚洲精品一区在线观看香蕉| 一区一区视频| 女同性一区二区三区人了人一| 欧美日韩一区不卡| 久久综合国产精品台湾中文娱乐网| 亚洲乱码精品一二三四区日韩在线| 欧美精品1区2区| 欧美理论电影在线播放| 亚洲欧美在线一区| 欧美日韩高清在线播放| 欧美国产视频在线| 亚洲国产成人精品女人久久久| 国产日韩一区| 久久精品一区中文字幕| 亚洲国产成人高清精品| 国产色婷婷国产综合在线理论片a| 一区二区三区精品久久久| 亚洲视频第一页| 黄色资源网久久资源365| 亚洲区国产区| 欧美专区在线| 狠狠色丁香久久综合频道| 亚洲精品在线观看视频| 中国成人亚色综合网站| 久久久亚洲人| 欧美亚洲在线观看| 亚洲精品乱码久久久久久久久| 午夜精品美女自拍福到在线| 久久亚洲综合网| 永久久久久久| 国产午夜精品一区二区三区视频| 亚洲最新中文字幕| 国产一区二区日韩精品欧美精品| 日韩一级二级三级| 99re视频这里只有精品| 欧美久久久久免费| 欧美日韩一区二区在线观看| 国产综合激情| 欧美不卡三区| 欧美成人在线影院| 欧美日韩一区二区免费在线观看| 亚洲人成在线影院| 欧美日本不卡高清| 亚洲另类在线视频| 欧美日韩小视频| 一区二区三区欧美成人| 国产精品一区二区在线| 亚洲午夜未删减在线观看| 欧美国产日韩在线| 国产一区二区三区在线观看免费视频| 久久国产手机看片| 欧美体内谢she精2性欧美| 欧美日韩一区二区三区四区在线观看| 欧美日韩在线免费视频| 欧美日韩亚洲网| 在线视频欧美日韩| 亚洲国产精品久久91精品| 亚洲国产日韩美| 欧美日韩一卡| 欧美一区二区三区四区夜夜大片| 亚洲特黄一级片| 国精品一区二区| 在线观看91精品国产麻豆| 在线看国产日韩| 欧美一区二区三区久久精品茉莉花| 欧美日韩一区二区三区四区五区| 亚洲大片在线观看| 亚洲一区综合| 欧美成人免费全部| 中文高清一区| 正在播放欧美视频| 国产精品豆花视频| 在线天堂一区av电影| 国产精品久久久久久久久久久久久久| 国产一区二区高清不卡| 欧美激情中文字幕在线| 欧美视频一区二区三区在线观看| 久久精品一区中文字幕| 久久gogo国模裸体人体| 亚洲国产一区二区在线| 欧美国产日韩一区二区三区| 亚洲精品久久久久久久久| 香蕉av777xxx色综合一区| 国产精品福利av| 国产一区二区三区精品欧美日韩一区二区三区| 午夜精品免费视频| 国产精品xxx在线观看www| 蜜臀a∨国产成人精品| 欧美成人综合网站| 欧美三级资源在线| 国产精品入口66mio| 欧美色精品天天在线观看视频| 在线日韩欧美视频| 欧美三级中文字幕在线观看| 欧美日韩精品一区二区在线播放| 久久精品色图| 欧美极品影院| 免费中文日韩| 欧美影院成年免费版| 国产字幕视频一区二区| 国产一区二区三区免费在线观看| 国产精品av一区二区| 亚洲免费av片| 国产精品久久久一区麻豆最新章节| 国产精品美女视频网站| 亚洲蜜桃精久久久久久久| 久久精品国产免费观看| 久久精品在线免费观看| 亚洲国产视频a| 欧美成人按摩| 亚洲欧洲一区二区在线播放| 欧美日本精品一区二区三区| 欧美日韩色综合| 久久天堂国产精品| 欧美日韩日日骚| 国产精品视频最多的网站| 狠狠色丁香久久综合频道| 亚洲香蕉伊综合在人在线视看| 国产片一区二区| 久久精品国产精品亚洲| 黄色成人av网| 国产日韩精品久久| 亚洲国产成人精品视频| 欧美午夜免费电影| 欧美一区二区网站| 欧美一区视频在线| 亚洲午夜一区二区| 国产一区二区三区在线播放免费观看| 在线成人激情视频| 狠狠色综合日日| 久久蜜桃精品| 国产精品免费aⅴ片在线观看| 欧美国产日韩一区| 免播放器亚洲| 亚洲天堂成人在线观看| 亚洲精品在线电影| 久久久久久亚洲综合影院红桃| 亚洲精品乱码久久久久久日本蜜臀| 99精品免费网| 日韩午夜在线观看视频| 久久综合九色综合欧美就去吻| 亚洲一区二区黄色| 欧美日韩免费在线观看| 欧美伊人精品成人久久综合97| 黄色一区二区三区| 激情文学一区| 欧美一区2区视频在线观看| 99re6热在线精品视频播放速度| 99pao成人国产永久免费视频| 91久久香蕉国产日韩欧美9色| 欧美性淫爽ww久久久久无| 久久久国产精品一区二区中文| 好看的日韩av电影| 国语自产精品视频在线看抢先版结局| 怡红院av一区二区三区| 国产午夜精品久久| 欧美在线91| 欧美日韩大片| 久久精品2019中文字幕| 国语自产精品视频在线看一大j8| 国产精品久久久久久久久借妻| 亚洲精品欧美极品| 欧美日韩一卡| 国产日韩精品一区二区三区在线| 亚洲国产精品va在看黑人| 国产精品大片wwwwww| 久久全国免费视频| 久久国产精品99久久久久久老狼| 亚洲一区在线视频| 午夜精品美女久久久久av福利| 国产一区二区主播在线| 欧美日韩精品一区二区三区| 欧美国产精品一区| 欧美美女操人视频| 国产女人精品视频| 在线观看视频一区二区欧美日韩| 亚洲人成网站在线观看播放| 伊人久久av导航| 欧美色图天堂网| 国模 一区 二区 三区| 亚洲天堂av在线免费观看| 国产精品男人爽免费视频1|