范 濤,毛繼曙,王國中
(1.上海大學(xué) 通信與信息工程學(xué)院,上海 200072;2.上海廣電電子科技有限公司,上海 200233)
責(zé)任編輯:許 盈
隨著網(wǎng)絡(luò)技術(shù)和數(shù)字多媒體技術(shù)的迅猛發(fā)展,數(shù)字視頻通信獲得了廣泛應(yīng)用,人類正在步入一個(gè)全新的數(shù)字時(shí)代[1]。數(shù)字電視系統(tǒng)是指音頻、視頻和數(shù)據(jù)信號(hào)從信源編碼、調(diào)制到接收和處理均采用數(shù)字化技術(shù)的系統(tǒng)方案。按照功能其可分為頭端發(fā)送系統(tǒng)和終端接收系統(tǒng)兩大部分。其中頭端包括數(shù)字電視信源系統(tǒng)、信號(hào)處理系統(tǒng)和調(diào)制輸出系統(tǒng);終端接收系統(tǒng)包括機(jī)頂盒、電視機(jī)或數(shù)字電視一體機(jī)等,其各模塊間的通信如圖1所示。
在數(shù)字電視的系統(tǒng)中,頭端編碼器占有絕對(duì)的核心地位,其成本與價(jià)值非常高昂,而且傾注了開發(fā)者大量的心血,然而一旦軟件被盜用,無論對(duì)于開發(fā)者還是編碼器的制造商都會(huì)造成非常嚴(yán)重的后果。為了保護(hù)產(chǎn)品制造商以及開發(fā)者的權(quán)益,設(shè)計(jì)較好的編碼器軟件加密系統(tǒng)方案有著至關(guān)重要的作用。
目前編碼器在授權(quán)時(shí)大部分采用傳統(tǒng)的序列號(hào)保護(hù)法,該方法成本較低,但安全性和可靠性也較低[2]。采用注冊(cè)碼驗(yàn)證的軟件保護(hù)機(jī)制一般對(duì)不同用戶使用相同的注冊(cè)碼,極易造成注冊(cè)碼的非法擴(kuò)散,任何拷貝到軟件的用戶都可以用該注冊(cè)碼進(jìn)行軟件注冊(cè),從而給開發(fā)商造成相當(dāng)大的損失。針對(duì)上述的問題,本文設(shè)計(jì)的方案主要基于如下4點(diǎn)考慮:

1)遵循“一機(jī)一碼”的原則。軟件注冊(cè)碼是唯一的,即一個(gè)注冊(cè)碼只能在一臺(tái)機(jī)器上注冊(cè)使用軟件,不能復(fù)制使用。
2)每次運(yùn)行軟件時(shí),要對(duì)用戶身份進(jìn)行驗(yàn)證,只有合法用戶才能使用軟件。
3)防惡意攻擊,攻擊者不能掌握注冊(cè)碼規(guī)律,無法寫出注冊(cè)機(jī)。
4)方便使用,成本低,推廣加密系統(tǒng)的應(yīng)用。
根據(jù)上述4點(diǎn)需求,本文提出了一種基于硬件信息的軟加密技術(shù)。以具有唯一性的多項(xiàng)硬件信息為加密依據(jù),采用MD5算法對(duì)獲得的信息進(jìn)行加密,充分考慮了編碼器“一機(jī)一碼”的需求,從而可以有效防止非法注冊(cè)。此外,系統(tǒng)合理地選擇了非對(duì)稱算法來防止非法注冊(cè)的生成,對(duì)編碼器軟件進(jìn)行加密保護(hù),有效維護(hù)開發(fā)者和制造商的權(quán)益。
軟件加密是解決非法復(fù)制的有效手段,根據(jù)加密原理和方式的不同,軟件加密技術(shù)可分為軟加密、硬加密和網(wǎng)絡(luò)加密3類。
軟加密是指不依賴于特別硬件,用純軟件方式來實(shí)現(xiàn)對(duì)軟件的加密保護(hù),最大優(yōu)勢(shì)在于極低的加密成本。目前主要有序列號(hào)法、時(shí)間限制、功能限制、警告(NAG)窗口、注冊(cè)文件法和加殼法等。
序列號(hào)保護(hù)法是軟加密的一種,是以復(fù)雜的數(shù)學(xué)算法為核心的軟件加密技術(shù),也是應(yīng)用最為廣泛的方法之一。為達(dá)到識(shí)別用戶身份的目的,用戶必須到軟件公司去注冊(cè)后才能繼續(xù)使用。序列號(hào)保護(hù)法加密比較簡(jiǎn)單,不需要額外的成本,用戶購買也非常方便,網(wǎng)絡(luò)上80%的軟件都是按照這種方式進(jìn)行保護(hù)的,微軟的操作系統(tǒng)也曾使用過這種方法。
硬加密是通過硬件和軟件結(jié)合的方式,將加密信息固化到某個(gè)硬件中作為軟件的附加設(shè)備來實(shí)現(xiàn)軟件加密的。加密后運(yùn)行軟件時(shí),需要訪問相應(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)定或是掉線,程序就會(huì)自動(dòng)關(guān)閉,給用戶帶來了極大的不便。
在數(shù)字電視的系統(tǒng)中,為了保證音視頻的有效傳輸,需要高效的編碼算法。編碼器在系統(tǒng)中具有核心的地位,所以一旦被不法分子拷貝將會(huì)對(duì)設(shè)備制造商、運(yùn)營商以及研發(fā)人員的權(quán)益造成極大的損失。不同于其他應(yīng)用軟件,編碼器一般應(yīng)用于廣播網(wǎng)且需快速注冊(cè),所以傳統(tǒng)的加密方法并不能很好地達(dá)到系統(tǒng)的要求。針對(duì)“一機(jī)一碼”的需求,本文提出了一種基于硬件信息的軟加密技術(shù),通過數(shù)字簽名,散列、密鑰交換等多個(gè)可靠的密碼學(xué)算法進(jìn)行多重加密保護(hù),保證了編碼器軟件的安全。
基于硬件信息的軟件加密方案,當(dāng)用戶獲得軟件進(jìn)行安裝時(shí),首先通過機(jī)器碼獲取模塊從用戶的計(jì)算機(jī)上取得該機(jī)器的一些硬件信息(如硬盤序列號(hào)、網(wǎng)卡MAC地址、CPU ID等)。然后,對(duì)這些信息進(jìn)行計(jì)算獲得序列號(hào),從而達(dá)到軟件與硬件信息綁定。用戶需要把這一序列號(hào)用Internet、Email或郵寄等方法告知軟件發(fā)行商,軟件發(fā)行商利用注冊(cè)碼生成模塊(即注冊(cè)機(jī))生成相應(yīng)的注冊(cè)碼寄給用戶,用戶根據(jù)安裝提示輸入注冊(cè)碼進(jìn)行軟件注冊(cè)。由于不同計(jì)算機(jī)的硬件信息不相同,即使用戶信息被盜用,驗(yàn)證模塊可保證其他計(jì)算機(jī)不能成功注冊(cè)使用軟件,從而使軟件加密的可靠性和安全性大大提高,真正實(shí)現(xiàn)“一機(jī)一碼”的軟件注冊(cè)。系統(tǒng)流程圖如圖2所示。

如圖2所示加密系統(tǒng)按照功能劃分模塊主要可以分為ID碼生成模塊、注冊(cè)碼生成模塊、注冊(cè)模塊和驗(yàn)證模塊4個(gè)部分。基于硬件信息的軟件加密系統(tǒng)采用計(jì)算主機(jī)的多個(gè)硬件信息,如CPU序列號(hào)、MAC地址、主板序列號(hào)等作為注冊(cè)源,經(jīng)過散列函數(shù)計(jì)算得到散列值進(jìn)行簽名。軟件只有在注冊(cè)后才能使用,且獲取的硬件信息具有唯一性,經(jīng)過單向函數(shù)加密可以保證用戶信息的保密性,同時(shí)方便軟件發(fā)行商使用注冊(cè)機(jī)產(chǎn)生唯一的注冊(cè)碼,實(shí)現(xiàn)“一機(jī)一碼”的注冊(cè)機(jī)制。使用非對(duì)稱密碼對(duì)注冊(cè)碼進(jìn)行注冊(cè),使攻擊者無法得到注冊(cè)碼,寫出注冊(cè)機(jī)程序,保證軟件的安全。
1)ID碼生成模塊
ID碼獲取模塊主要完成兩個(gè)功能:自動(dòng)獲取計(jì)算機(jī)硬件信息,對(duì)硬件信息進(jìn)行加密生成ID碼。
每臺(tái)計(jì)算機(jī)都有內(nèi)存、硬盤、CPU、顯示器等配件,這些信息有很多都是相同的,不具唯一性,對(duì)軟件加密沒有意義。網(wǎng)卡MAC地址、CPU ID、硬盤的出廠序列號(hào)、顯卡型號(hào)以及BIOS序列號(hào)等信息,對(duì)于不同計(jì)算機(jī)是不相同的。可以選取這些信息并將它們組合起來,這樣信息相同的幾率就會(huì)很小,基本可以保證用戶身份的唯一性,從而有效地防止軟件的非法使用,保護(hù)軟件發(fā)行商的合法權(quán)益。
因此在選取硬件信息對(duì)軟件進(jìn)行加密的過程中,可以選取計(jì)算機(jī)CPU ID、主板序列號(hào)、MAC地址等多個(gè)硬件信息,構(gòu)成計(jì)算機(jī)特征值。由于這些信息本身就具有唯一性,通過多個(gè)硬件信息組合得到的計(jì)算機(jī)特征值可以說完全具備了唯一性的要求,滿足“一機(jī)一碼”條件。為避免攻擊者對(duì)其他計(jì)算機(jī)硬件信息的修改,需要將自動(dòng)獲取的計(jì)算機(jī)硬件信息用特定加密算法進(jìn)行加密,以保證用戶信息的安全,具有單向性的Hash函數(shù)是最合適的選擇。
Hash函數(shù)也稱為散列函數(shù),是一種單向密碼體制,是一個(gè)從明文到密文的不可逆映射,只有加密過程,不能解密。同時(shí),Hash函數(shù)可以將任意長(zhǎng)度的輸入經(jīng)過變換后得到固定長(zhǎng)度的輸出。MD5算法就是Hash函數(shù)的一種,在這里選取MD5算法[4]對(duì)硬件信息進(jìn)行加密,得到ID碼。
MD5算法可簡(jiǎn)單描述為:將任意長(zhǎng)度的字節(jié)串(即需要產(chǎn)生摘要的硬件信息)映射為一個(gè)128位的信息摘要,即使可看到源程序和加密算法描述,也無法將一個(gè)MD5的值反推導(dǎo)回原來的字符串。算法實(shí)現(xiàn)如圖3所示。

圖3 MD5算法流程圖
MD5算法是一種單向加密算法,數(shù)據(jù)只能加密,不能被解密,也就是說攻擊者不能由消息摘要推得用戶計(jì)算機(jī)信息,保證了用戶信息的安全。另外任意一段數(shù)據(jù),經(jīng)過加密后,其結(jié)果永遠(yuǎn)是相同的;任意兩段數(shù)據(jù)加密之后的密文是不相同的,可以保證每個(gè)用戶信息經(jīng)MD5算法加密后生成各不相同的ID碼。用戶需要將該模塊生成的ID碼發(fā)送給軟件發(fā)行商。
2)注冊(cè)碼生成模塊
軟件發(fā)行商提供唯一的軟件注冊(cè)碼給用戶進(jìn)行安裝與注冊(cè),安裝時(shí)注冊(cè)信息將寫入注冊(cè)表,用以驗(yàn)證每次運(yùn)行時(shí)的信息是否存在與正確,在使用注冊(cè)碼進(jìn)行軟件授權(quán)機(jī)制中,注冊(cè)碼是整套軟件保護(hù)方案中最重要的部分。
注冊(cè)碼是根據(jù)用戶信息生成的,具有唯一性。軟件發(fā)行商在給用戶分發(fā)注冊(cè)碼時(shí)通過某種算法f將用戶信息換算成注冊(cè)碼(用SN表示),注冊(cè)碼生成過程可表示為

注冊(cè)碼生成過程與注冊(cè)碼合法性驗(yàn)證環(huán)節(jié)有著密切的聯(lián)系,常見的軟件合法性驗(yàn)證計(jì)算方式可表示為

軟件破解的難易程度與換算關(guān)系設(shè)計(jì)有直接關(guān)系,因?yàn)轵?yàn)證過程是在用戶計(jì)算機(jī)上運(yùn)行的,攻擊者可以使用工具軟件對(duì)其進(jìn)行分析,可能造成合法注冊(cè)碼泄露,并在網(wǎng)上傳播,任何復(fù)制了這個(gè)軟件的人都可以使用這個(gè)注冊(cè)碼進(jìn)行軟件認(rèn)證,造成軟件盜版。破解者也可能會(huì)通過進(jìn)一步分析換算方法g,寫出非法注冊(cè)機(jī),這樣軟件就能被隨意復(fù)制并使用,并被非法的通過認(rèn)證,同樣會(huì)造成軟件保護(hù)的失效,嚴(yán)重?fù)p害了軟件發(fā)行商的利益。針對(duì)這些情況,本文采用“一機(jī)一碼”制,即一臺(tái)計(jì)算機(jī)對(duì)應(yīng)一個(gè)注冊(cè)碼,那么即使此注冊(cè)碼被破解,也不能在其他計(jì)算機(jī)上使用。另外,在合法性驗(yàn)證環(huán)節(jié)采用注冊(cè)碼算法的逆算法,即

軟件合法性驗(yàn)證過程是在用戶計(jì)算機(jī)上進(jìn)行,容易被攻擊者破解,如果采用非對(duì)稱加密算法,那么就可以進(jìn)一步限制盜版的可能。RSA算法[5]作為非對(duì)稱加密算法的一種,是第一個(gè)既能用于加密又能用于數(shù)字簽名的算法,加解密原理簡(jiǎn)單,易于理解和操作,具有良好的安全性,目前已成為公鑰密碼的國際標(biāo)準(zhǔn)。在本系統(tǒng)中選用RSA算法進(jìn)行加密生成軟件注冊(cè)碼。算法步驟如下:
步驟一,RSA加解密算法的初始化。
(1)隨意選擇兩個(gè)互異的大素?cái)?shù)p和q,要求p不等于q;
(2)計(jì)算n=p×q,根據(jù)歐拉公式得φ(n)=(p -1)(q -1);
(3)選擇一個(gè)整數(shù)e,滿足e與φ(n)互素,且e小于φ(n);
(4)計(jì)算整數(shù)d,d=e-1mod(p-1)(q-1),且d〉;
(5)為安全起見將p和q的記錄銷毀,返回n,d。
步驟二,RSA加解密變換。
將明文劃分成塊,使得每個(gè)明文報(bào)文長(zhǎng)度滿足m〈n,然后對(duì)每個(gè)數(shù)據(jù)塊m進(jìn)行加密和解密變換。
(1)加密變換,對(duì)于待加密消息m,其對(duì)應(yīng)的密文為c=E(m)=memod n;
(2)解密變換,m=D(c)=cdmod n。
注冊(cè)碼生成模塊是一個(gè)獨(dú)立于應(yīng)用軟件的模塊,不隨應(yīng)用軟件一起發(fā)布,軟件發(fā)行商獨(dú)立擁有,用于產(chǎn)生用戶注冊(cè)密碼。使用非對(duì)稱RSA算法對(duì)用戶ID碼進(jìn)行加密獲得注冊(cè)碼,攻擊者即使得到了公鑰,也無法推算得到私鑰,不可能自行根據(jù)消息摘要計(jì)算得到注冊(cè)碼。保證了攻擊者不能寫出注冊(cè)機(jī)程序。
3)注冊(cè)模塊
注冊(cè)模塊的主要功能是用戶端在接收到軟件發(fā)行商發(fā)回的注冊(cè)碼后自動(dòng)完成注冊(cè)并將其寫入注冊(cè)表,供以后每次運(yùn)行軟件時(shí)驗(yàn)證模塊使用。
4)驗(yàn)證模塊
注冊(cè)碼驗(yàn)證實(shí)際上就是驗(yàn)證簽名的過程,判斷用戶是不是已注冊(cè)為合法用戶。驗(yàn)證模塊主要完成在用戶每次運(yùn)行軟件時(shí),用軟件開發(fā)商提供的公鑰,也就是RSA算法的公鑰還原出計(jì)算機(jī)的ID碼,將還原得到的ID碼與原始用戶ID碼進(jìn)行比較和簽名驗(yàn)證,只有一致的情況下軟件才能正常運(yùn)行,否則無法注冊(cè)。
本文加密系統(tǒng)設(shè)計(jì)主要采用了數(shù)據(jù)加密技術(shù)和注冊(cè)表操作技術(shù),運(yùn)用多重加密算法對(duì)用戶信息進(jìn)行保護(hù)。用戶注冊(cè)軟件時(shí),軟件自動(dòng)采集計(jì)算機(jī)的硬件信息(如硬盤序列號(hào)、網(wǎng)卡MAC地址、CPU ID等)作為信息源,經(jīng)過特定算法得到擾亂后的ID碼,發(fā)送給軟件發(fā)行商,軟件發(fā)行商利用RSA非對(duì)稱加密算法生成注冊(cè)碼對(duì)用戶授權(quán),用戶利用注冊(cè)碼進(jìn)行認(rèn)證注冊(cè)。軟件安裝時(shí)將注冊(cè)信息寫入注冊(cè)表,用于以后使用軟件時(shí)檢查注冊(cè)表中的信息是否正確,若正確則編碼器正常編碼,否則編碼器對(duì)視頻進(jìn)行不正常編碼,終端解碼得到的節(jié)目流將會(huì)非常不清晰,用戶不能得到正常信息,這將迫使用戶重新注冊(cè)編碼器軟件。
為了驗(yàn)證有效性,將該加密系統(tǒng)的方案成功用于編碼器軟件進(jìn)行測(cè)試。圖4是采用加密算法獲得的用戶計(jì)算機(jī)的ID碼,可以看出圖中的碼字為不規(guī)則的亂碼。圖5是采用非對(duì)稱RSA加密算法獲得的注冊(cè)碼,由此可知算法有效可行。

圖4 用戶計(jì)算機(jī)ID碼

圖5 用戶獲得注冊(cè)碼
通過測(cè)試分析,得出基于硬件信息的編碼器軟件加密方法具有以下優(yōu)點(diǎn):
1)與多數(shù)軟件注冊(cè)方式不同,本設(shè)計(jì)采用“一機(jī)一碼”注冊(cè),保護(hù)了軟件發(fā)行商的合法權(quán)益;
2)直接選取計(jì)算機(jī)硬件信息作為注冊(cè)依據(jù),不需要添加外置軟盤、硬盤等設(shè)備;
3)在沒有正確注冊(cè)的情況下,允許編碼器工作;
4)采用特別技術(shù),攻擊者很難找到產(chǎn)生注冊(cè)碼的規(guī)律,不會(huì)出現(xiàn)非法注冊(cè)碼;
5)純軟件實(shí)現(xiàn),可實(shí)現(xiàn)批量處理,方便使用,價(jià)格低。
本文采用基于具有唯一性的多項(xiàng)硬件信息,用數(shù)字簽名、散列、密鑰交換等多個(gè)可靠的密碼學(xué)算法,考慮了“一機(jī)一碼”防止非法注冊(cè),合理選擇了非對(duì)稱算法來防止非法注冊(cè)碼的生成,對(duì)數(shù)字電視編碼器軟件進(jìn)行加密保護(hù)。從測(cè)試結(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算法的安全注冊(cè)系統(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.