范 濤,毛繼曙,王國中
(1.上海大學(xué) 通信與信息工程學(xué)院,上海 200072;2.上海廣電電子科技有限公司,上海 200233)
責(zé)任編輯:許 盈
隨著網(wǎng)絡(luò)技術(shù)和數(shù)字多媒體技術(shù)的迅猛發(fā)展,數(shù)字視頻通信獲得了廣泛應(yīng)用,人類正在步入一個全新的數(shù)字時代[1]。數(shù)字電視系統(tǒng)是指音頻、視頻和數(shù)據(jù)信號從信源編碼、調(diào)制到接收和處理均采用數(shù)字化技術(shù)的系統(tǒng)方案。按照功能其可分為頭端發(fā)送系統(tǒng)和終端接收系統(tǒng)兩大部分。其中頭端包括數(shù)字電視信源系統(tǒng)、信號處理系統(tǒng)和調(diào)制輸出系統(tǒng);終端接收系統(tǒng)包括機(jī)頂盒、電視機(jī)或數(shù)字電視一體機(jī)等,其各模塊間的通信如圖1所示。
在數(shù)字電視的系統(tǒng)中,頭端編碼器占有絕對的核心地位,其成本與價(jià)值非常高昂,而且傾注了開發(fā)者大量的心血,然而一旦軟件被盜用,無論對于開發(fā)者還是編碼器的制造商都會造成非常嚴(yán)重的后果。為了保護(hù)產(chǎn)品制造商以及開發(fā)者的權(quán)益,設(shè)計(jì)較好的編碼器軟件加密系統(tǒng)方案有著至關(guān)重要的作用。
目前編碼器在授權(quán)時大部分采用傳統(tǒng)的序列號保護(hù)法,該方法成本較低,但安全性和可靠性也較低[2]。采用注冊碼驗(yàn)證的軟件保護(hù)機(jī)制一般對不同用戶使用相同的注冊碼,極易造成注冊碼的非法擴(kuò)散,任何拷貝到軟件的用戶都可以用該注冊碼進(jìn)行軟件注冊,從而給開發(fā)商造成相當(dāng)大的損失。針對上述的問題,本文設(shè)計(jì)的方案主要基于如下4點(diǎn)考慮:
1)遵循“一機(jī)一碼”的原則。軟件注冊碼是唯一的,即一個注冊碼只能在一臺機(jī)器上注冊使用軟件,不能復(fù)制使用。
2)每次運(yùn)行軟件時,要對用戶身份進(jìn)行驗(yàn)證,只有合法用戶才能使用軟件。
3)防惡意攻擊,攻擊者不能掌握注冊碼規(guī)律,無法寫出注冊機(jī)。
4)方便使用,成本低,推廣加密系統(tǒng)的應(yīng)用。
根據(jù)上述4點(diǎn)需求,本文提出了一種基于硬件信息的軟加密技術(shù)。以具有唯一性的多項(xiàng)硬件信息為加密依據(jù),采用MD5算法對獲得的信息進(jìn)行加密,充分考慮了編碼器“一機(jī)一碼”的需求,從而可以有效防止非法注冊。此外,系統(tǒng)合理地選擇了非對稱算法來防止非法注冊的生成,對編碼器軟件進(jìn)行加密保護(hù),有效維護(hù)開發(fā)者和制造商的權(quán)益。
軟件加密是解決非法復(fù)制的有效手段,根據(jù)加密原理和方式的不同,軟件加密技術(shù)可分為軟加密、硬加密和網(wǎng)絡(luò)加密3類。
軟加密是指不依賴于特別硬件,用純軟件方式來實(shí)現(xiàn)對軟件的加密保護(hù),最大優(yōu)勢在于極低的加密成本。目前主要有序列號法、時間限制、功能限制、警告(NAG)窗口、注冊文件法和加殼法等。
序列號保護(hù)法是軟加密的一種,是以復(fù)雜的數(shù)學(xué)算法為核心的軟件加密技術(shù),也是應(yīng)用最為廣泛的方法之一。為達(dá)到識別用戶身份的目的,用戶必須到軟件公司去注冊后才能繼續(xù)使用。序列號保護(hù)法加密比較簡單,不需要額外的成本,用戶購買也非常方便,網(wǎng)絡(luò)上80%的軟件都是按照這種方式進(jìn)行保護(hù)的,微軟的操作系統(tǒng)也曾使用過這種方法。
硬加密是通過硬件和軟件結(jié)合的方式,將加密信息固化到某個硬件中作為軟件的附加設(shè)備來實(shí)現(xiàn)軟件加密的。加密后運(yùn)行軟件時,需要訪問相應(yīng)的硬件,這類加密方式主要依賴于硬件信息不易被更改和復(fù)制的特點(diǎn)。主要有光盤加密、加密狗、加密芯片和軟盤加密等。
網(wǎng)絡(luò)加密技術(shù)被譽(yù)為是最安全的加密方式,但缺點(diǎn)也很明顯。用戶必須一直在線,一旦網(wǎng)絡(luò)不穩(wěn)定,被加密的軟件將無法使用。國外曾有一些游戲軟件使用過網(wǎng)絡(luò)加密方式,要求玩家必須在線,一旦網(wǎng)絡(luò)不穩(wěn)定或是掉線,程序就會自動關(guān)閉,給用戶帶來了極大的不便。
在數(shù)字電視的系統(tǒng)中,為了保證音視頻的有效傳輸,需要高效的編碼算法。編碼器在系統(tǒng)中具有核心的地位,所以一旦被不法分子拷貝將會對設(shè)備制造商、運(yùn)營商以及研發(fā)人員的權(quán)益造成極大的損失。不同于其他應(yīng)用軟件,編碼器一般應(yīng)用于廣播網(wǎng)且需快速注冊,所以傳統(tǒng)的加密方法并不能很好地達(dá)到系統(tǒng)的要求。針對“一機(jī)一碼”的需求,本文提出了一種基于硬件信息的軟加密技術(shù),通過數(shù)字簽名,散列、密鑰交換等多個可靠的密碼學(xué)算法進(jìn)行多重加密保護(hù),保證了編碼器軟件的安全。
基于硬件信息的軟件加密方案,當(dāng)用戶獲得軟件進(jìn)行安裝時,首先通過機(jī)器碼獲取模塊從用戶的計(jì)算機(jī)上取得該機(jī)器的一些硬件信息(如硬盤序列號、網(wǎng)卡MAC地址、CPU ID等)。然后,對這些信息進(jìn)行計(jì)算獲得序列號,從而達(dá)到軟件與硬件信息綁定。用戶需要把這一序列號用Internet、Email或郵寄等方法告知軟件發(fā)行商,軟件發(fā)行商利用注冊碼生成模塊(即注冊機(jī))生成相應(yīng)的注冊碼寄給用戶,用戶根據(jù)安裝提示輸入注冊碼進(jìn)行軟件注冊。由于不同計(jì)算機(jī)的硬件信息不相同,即使用戶信息被盜用,驗(yàn)證模塊可保證其他計(jì)算機(jī)不能成功注冊使用軟件,從而使軟件加密的可靠性和安全性大大提高,真正實(shí)現(xiàn)“一機(jī)一碼”的軟件注冊。系統(tǒng)流程圖如圖2所示。
如圖2所示加密系統(tǒng)按照功能劃分模塊主要可以分為ID碼生成模塊、注冊碼生成模塊、注冊模塊和驗(yàn)證模塊4個部分?;谟布畔⒌能浖用芟到y(tǒng)采用計(jì)算主機(jī)的多個硬件信息,如CPU序列號、MAC地址、主板序列號等作為注冊源,經(jīng)過散列函數(shù)計(jì)算得到散列值進(jìn)行簽名。軟件只有在注冊后才能使用,且獲取的硬件信息具有唯一性,經(jīng)過單向函數(shù)加密可以保證用戶信息的保密性,同時方便軟件發(fā)行商使用注冊機(jī)產(chǎn)生唯一的注冊碼,實(shí)現(xiàn)“一機(jī)一碼”的注冊機(jī)制。使用非對稱密碼對注冊碼進(jìn)行注冊,使攻擊者無法得到注冊碼,寫出注冊機(jī)程序,保證軟件的安全。
1)ID碼生成模塊
ID碼獲取模塊主要完成兩個功能:自動獲取計(jì)算機(jī)硬件信息,對硬件信息進(jìn)行加密生成ID碼。
每臺計(jì)算機(jī)都有內(nèi)存、硬盤、CPU、顯示器等配件,這些信息有很多都是相同的,不具唯一性,對軟件加密沒有意義。網(wǎng)卡MAC地址、CPU ID、硬盤的出廠序列號、顯卡型號以及BIOS序列號等信息,對于不同計(jì)算機(jī)是不相同的。可以選取這些信息并將它們組合起來,這樣信息相同的幾率就會很小,基本可以保證用戶身份的唯一性,從而有效地防止軟件的非法使用,保護(hù)軟件發(fā)行商的合法權(quán)益。
因此在選取硬件信息對軟件進(jìn)行加密的過程中,可以選取計(jì)算機(jī)CPU ID、主板序列號、MAC地址等多個硬件信息,構(gòu)成計(jì)算機(jī)特征值。由于這些信息本身就具有唯一性,通過多個硬件信息組合得到的計(jì)算機(jī)特征值可以說完全具備了唯一性的要求,滿足“一機(jī)一碼”條件。為避免攻擊者對其他計(jì)算機(jī)硬件信息的修改,需要將自動獲取的計(jì)算機(jī)硬件信息用特定加密算法進(jìn)行加密,以保證用戶信息的安全,具有單向性的Hash函數(shù)是最合適的選擇。
Hash函數(shù)也稱為散列函數(shù),是一種單向密碼體制,是一個從明文到密文的不可逆映射,只有加密過程,不能解密。同時,Hash函數(shù)可以將任意長度的輸入經(jīng)過變換后得到固定長度的輸出。MD5算法就是Hash函數(shù)的一種,在這里選取MD5算法[4]對硬件信息進(jìn)行加密,得到ID碼。
MD5算法可簡單描述為:將任意長度的字節(jié)串(即需要產(chǎn)生摘要的硬件信息)映射為一個128位的信息摘要,即使可看到源程序和加密算法描述,也無法將一個MD5的值反推導(dǎo)回原來的字符串。算法實(shí)現(xiàn)如圖3所示。
圖3 MD5算法流程圖
MD5算法是一種單向加密算法,數(shù)據(jù)只能加密,不能被解密,也就是說攻擊者不能由消息摘要推得用戶計(jì)算機(jī)信息,保證了用戶信息的安全。另外任意一段數(shù)據(jù),經(jīng)過加密后,其結(jié)果永遠(yuǎn)是相同的;任意兩段數(shù)據(jù)加密之后的密文是不相同的,可以保證每個用戶信息經(jīng)MD5算法加密后生成各不相同的ID碼。用戶需要將該模塊生成的ID碼發(fā)送給軟件發(fā)行商。
2)注冊碼生成模塊
軟件發(fā)行商提供唯一的軟件注冊碼給用戶進(jìn)行安裝與注冊,安裝時注冊信息將寫入注冊表,用以驗(yàn)證每次運(yùn)行時的信息是否存在與正確,在使用注冊碼進(jìn)行軟件授權(quán)機(jī)制中,注冊碼是整套軟件保護(hù)方案中最重要的部分。
注冊碼是根據(jù)用戶信息生成的,具有唯一性。軟件發(fā)行商在給用戶分發(fā)注冊碼時通過某種算法f將用戶信息換算成注冊碼(用SN表示),注冊碼生成過程可表示為
注冊碼生成過程與注冊碼合法性驗(yàn)證環(huán)節(jié)有著密切的聯(lián)系,常見的軟件合法性驗(yàn)證計(jì)算方式可表示為
軟件破解的難易程度與換算關(guān)系設(shè)計(jì)有直接關(guān)系,因?yàn)轵?yàn)證過程是在用戶計(jì)算機(jī)上運(yùn)行的,攻擊者可以使用工具軟件對其進(jìn)行分析,可能造成合法注冊碼泄露,并在網(wǎng)上傳播,任何復(fù)制了這個軟件的人都可以使用這個注冊碼進(jìn)行軟件認(rèn)證,造成軟件盜版。破解者也可能會通過進(jìn)一步分析換算方法g,寫出非法注冊機(jī),這樣軟件就能被隨意復(fù)制并使用,并被非法的通過認(rèn)證,同樣會造成軟件保護(hù)的失效,嚴(yán)重?fù)p害了軟件發(fā)行商的利益。針對這些情況,本文采用“一機(jī)一碼”制,即一臺計(jì)算機(jī)對應(yīng)一個注冊碼,那么即使此注冊碼被破解,也不能在其他計(jì)算機(jī)上使用。另外,在合法性驗(yàn)證環(huán)節(jié)采用注冊碼算法的逆算法,即
軟件合法性驗(yàn)證過程是在用戶計(jì)算機(jī)上進(jìn)行,容易被攻擊者破解,如果采用非對稱加密算法,那么就可以進(jìn)一步限制盜版的可能。RSA算法[5]作為非對稱加密算法的一種,是第一個既能用于加密又能用于數(shù)字簽名的算法,加解密原理簡單,易于理解和操作,具有良好的安全性,目前已成為公鑰密碼的國際標(biāo)準(zhǔn)。在本系統(tǒng)中選用RSA算法進(jìn)行加密生成軟件注冊碼。算法步驟如下:
步驟一,RSA加解密算法的初始化。
(1)隨意選擇兩個互異的大素?cái)?shù)p和q,要求p不等于q;
(2)計(jì)算n=p×q,根據(jù)歐拉公式得φ(n)=(p -1)(q -1);
(3)選擇一個整數(shù)e,滿足e與φ(n)互素,且e小于φ(n);
(4)計(jì)算整數(shù)d,d=e-1mod(p-1)(q-1),且d〉;
(5)為安全起見將p和q的記錄銷毀,返回n,d。
步驟二,RSA加解密變換。
將明文劃分成塊,使得每個明文報(bào)文長度滿足m〈n,然后對每個數(shù)據(jù)塊m進(jìn)行加密和解密變換。
(1)加密變換,對于待加密消息m,其對應(yīng)的密文為c=E(m)=memod n;
(2)解密變換,m=D(c)=cdmod n。
注冊碼生成模塊是一個獨(dú)立于應(yīng)用軟件的模塊,不隨應(yīng)用軟件一起發(fā)布,軟件發(fā)行商獨(dú)立擁有,用于產(chǎn)生用戶注冊密碼。使用非對稱RSA算法對用戶ID碼進(jìn)行加密獲得注冊碼,攻擊者即使得到了公鑰,也無法推算得到私鑰,不可能自行根據(jù)消息摘要計(jì)算得到注冊碼。保證了攻擊者不能寫出注冊機(jī)程序。
3)注冊模塊
注冊模塊的主要功能是用戶端在接收到軟件發(fā)行商發(fā)回的注冊碼后自動完成注冊并將其寫入注冊表,供以后每次運(yùn)行軟件時驗(yàn)證模塊使用。
4)驗(yàn)證模塊
注冊碼驗(yàn)證實(shí)際上就是驗(yàn)證簽名的過程,判斷用戶是不是已注冊為合法用戶。驗(yàn)證模塊主要完成在用戶每次運(yùn)行軟件時,用軟件開發(fā)商提供的公鑰,也就是RSA算法的公鑰還原出計(jì)算機(jī)的ID碼,將還原得到的ID碼與原始用戶ID碼進(jìn)行比較和簽名驗(yàn)證,只有一致的情況下軟件才能正常運(yùn)行,否則無法注冊。
本文加密系統(tǒng)設(shè)計(jì)主要采用了數(shù)據(jù)加密技術(shù)和注冊表操作技術(shù),運(yùn)用多重加密算法對用戶信息進(jìn)行保護(hù)。用戶注冊軟件時,軟件自動采集計(jì)算機(jī)的硬件信息(如硬盤序列號、網(wǎng)卡MAC地址、CPU ID等)作為信息源,經(jīng)過特定算法得到擾亂后的ID碼,發(fā)送給軟件發(fā)行商,軟件發(fā)行商利用RSA非對稱加密算法生成注冊碼對用戶授權(quán),用戶利用注冊碼進(jìn)行認(rèn)證注冊。軟件安裝時將注冊信息寫入注冊表,用于以后使用軟件時檢查注冊表中的信息是否正確,若正確則編碼器正常編碼,否則編碼器對視頻進(jìn)行不正常編碼,終端解碼得到的節(jié)目流將會非常不清晰,用戶不能得到正常信息,這將迫使用戶重新注冊編碼器軟件。
為了驗(yàn)證有效性,將該加密系統(tǒng)的方案成功用于編碼器軟件進(jìn)行測試。圖4是采用加密算法獲得的用戶計(jì)算機(jī)的ID碼,可以看出圖中的碼字為不規(guī)則的亂碼。圖5是采用非對稱RSA加密算法獲得的注冊碼,由此可知算法有效可行。
圖4 用戶計(jì)算機(jī)ID碼
圖5 用戶獲得注冊碼
通過測試分析,得出基于硬件信息的編碼器軟件加密方法具有以下優(yōu)點(diǎn):
1)與多數(shù)軟件注冊方式不同,本設(shè)計(jì)采用“一機(jī)一碼”注冊,保護(hù)了軟件發(fā)行商的合法權(quán)益;
2)直接選取計(jì)算機(jī)硬件信息作為注冊依據(jù),不需要添加外置軟盤、硬盤等設(shè)備;
3)在沒有正確注冊的情況下,允許編碼器工作;
4)采用特別技術(shù),攻擊者很難找到產(chǎn)生注冊碼的規(guī)律,不會出現(xiàn)非法注冊碼;
5)純軟件實(shí)現(xiàn),可實(shí)現(xiàn)批量處理,方便使用,價(jià)格低。
本文采用基于具有唯一性的多項(xiàng)硬件信息,用數(shù)字簽名、散列、密鑰交換等多個可靠的密碼學(xué)算法,考慮了“一機(jī)一碼”防止非法注冊,合理選擇了非對稱算法來防止非法注冊碼的生成,對數(shù)字電視編碼器軟件進(jìn)行加密保護(hù)。從測試結(jié)果可以看出,算法加密強(qiáng)度很高,破解強(qiáng)度也很高,很好地完成了編碼器軟件加密要求,可以較好地保護(hù)編碼器軟件發(fā)行商的合法權(quán)益。
[1]朱耀光.數(shù)字電視條件接收前端系統(tǒng)的研究與實(shí)現(xiàn)[D].武漢:武漢理工大學(xué),2006.
[2]王晟宇.關(guān)于計(jì)算機(jī)軟件保護(hù)方法的探討[J].計(jì)算機(jī)安全,2008(10):82-85.
[3]江兵.一種軟件加密的方案與設(shè)計(jì)[J].信息技術(shù),2010(12):185-190.
[4]張興紅,甄彤,包暉.基于DES和MD5算法的安全注冊系統(tǒng)[J].計(jì)算機(jī)與數(shù)字工程,2010,38(5):96-98.
[5]王印明,李陽.一種基于DES,RSA的隨機(jī)加密算法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(4):235-237.