數(shù)字電視中基于硬件信息的軟件加密系統(tǒng)的應(yīng)用

數(shù)字音視頻編碼器在數(shù)字電視系統(tǒng)中占有核心地位,對(duì)其進(jìn)行軟件保護(hù)具有非常重要的現(xiàn)實(shí)意義。在對(duì)數(shù)字電視系統(tǒng)整體結(jié)構(gòu)進(jìn)行分析的基礎(chǔ)上,深入研究了數(shù)字電視中編碼器軟件的加密技術(shù)。針對(duì)現(xiàn)有編碼器中加密方法的不足,提出了一種基于硬件信息的軟加密技術(shù),以具有唯一性的多項(xiàng)硬件信息為加密依據(jù),采用MD5算法對(duì)獲得的信息進(jìn)行加密,充分考慮了編碼器“一機(jī)一碼”的需求,從而可以有效防止非法注冊(cè)。

一、軟件加密技術(shù)簡(jiǎn)介

軟件加密是解決非法復(fù)制的有效手段,根據(jù)加密原理和方式的不同,軟件加密技術(shù)可分為軟加密、硬加密和網(wǎng)絡(luò)加密3類。

軟加密是指不依賴于特別硬件,用純軟件方式來(lái)實(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)單,不需要額外的成本,用戶購(gòu)買也非常方便,網(wǎng)絡(luò)上80%的軟件都是按照這種方式進(jìn)行保護(hù)的,微軟的操作系統(tǒng)也曾使用過(guò)這種方法。

硬加密是通過(guò)硬件和軟件結(jié)合的方式,將加密信息固化到某個(gè)硬件中作為軟件的附加設(shè)備來(lái)實(shí)現(xiàn)軟件加密的。加密后運(yùn)行軟件時(shí),需要訪問(wèn)相應(yīng)的硬件,這類加密方式主要依賴于硬件信息不易被更改和復(fù)制的特點(diǎn)。主要有光盤(pán)加密、加密狗、加密芯片和軟盤(pán)加密等。

網(wǎng)絡(luò)加密技術(shù)被譽(yù)為是最安全的加密方式,但缺點(diǎn)也很明顯。用戶必須一直在線,一旦網(wǎng)絡(luò)不穩(wěn)定,被加密的軟件將無(wú)法使用。國(guó)外曾有一些游戲軟件使用過(guò)網(wǎng)絡(luò)加密方式,要求玩家必須在線,一旦網(wǎng)絡(luò)不穩(wěn)定或是掉線,程序就會(huì)自動(dòng)關(guān)閉,給用戶帶來(lái)了極大的不便。

在數(shù)字電視的系統(tǒng)中,為了保證音視頻的有效傳輸,需要高效的編碼算法:編碼器在系統(tǒng)中具有核心的地位,所以一旦被不法分子拷貝將會(huì)對(duì)設(shè)備制造商、運(yùn)營(yíng)商以及研發(fā)人員的權(quán)益造成極大的損失。不同于其他應(yīng)用軟件,編碼器一般應(yīng)用于廣播網(wǎng)且需快速注冊(cè),所以傳統(tǒng)的加密方法并不能很好地達(dá)到系統(tǒng)的要求岱針對(duì)“一機(jī)一碼”的需求,本文提出了一種基于硬件信息的軟加密技術(shù),通過(guò)數(shù)字簽名,散列、密鑰交換等多個(gè)可靠的密碼學(xué)算法進(jìn)行多重加密保護(hù),保證了編碼器軟件的安全。

1

二、基于硬件信息的軟件加密系統(tǒng)

1、系統(tǒng)設(shè)計(jì)

基于硬件信息的軟件加密方案,當(dāng)用戶獲得軟件進(jìn)行安裝時(shí),首先通過(guò)機(jī)器碼獲取模塊從用戶的計(jì)算機(jī)上取得該機(jī)器的一些硬件信息(如硬盤(pán)序列號(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所示。

1

2、加密系統(tǒng)模塊設(shè)計(jì)

如圖2所示加密系統(tǒng)按照功能劃分模塊主要可以分為ID碼生成模塊、注冊(cè)碼生成模塊、注冊(cè)模塊和驗(yàn)證模塊4個(gè)部分?;谟布畔⒌能浖用芟到y(tǒng)采用計(jì)算主機(jī)的多個(gè)硬件信息,如CPU序列號(hào)、MAC地址、主板序列號(hào)等作為注冊(cè)源,經(jīng)過(guò)散列函數(shù)計(jì)算得到散列值進(jìn)行簽名。軟件只有在注冊(cè)后才能使用,且獲取的硬件信息具有唯一性,經(jīng)過(guò)單向函數(shù)加密可以保證用戶信息的保密性,同時(shí)方便軟件發(fā)行商使用注冊(cè)機(jī)產(chǎn)生唯一的注冊(cè)碼,實(shí)現(xiàn)“一機(jī)一碼”的注冊(cè)機(jī)制a使用非對(duì)稱密碼對(duì)注冊(cè)碼進(jìn)行注冊(cè),使攻擊者無(wú)法得到注冊(cè)碼,寫(xiě)出注冊(cè)機(jī)程序,保證軟件的安全。

1) ID碼生成模塊

ID碼獲取模塊主要完成兩個(gè)功能:自動(dòng)獲取計(jì)算機(jī)硬件信息,對(duì)硬件信息進(jìn)行加密生成ID碼。

每臺(tái)計(jì)算機(jī)都有內(nèi)存、硬盤(pán)、CPU、顯示器等配件,這些信息有很多都是相同的,不具唯一性,對(duì)軟件加密沒(méi)有意義口網(wǎng)卡MAC地址、CPU ID、硬盤(pán)的出廠序列號(hào)、顯卡型號(hào)以及BIOS序列號(hào)等信息,對(duì)于不同計(jì)算機(jī)是不相同的??梢赃x取這些信息并將它們組合起來(lái),這樣信息相同的幾率就會(huì)很小,基本可以保證用戶身份的唯一性,從而有效地防止軟件的非法使用,保護(hù)軟件發(fā)行商的合法權(quán)益。

因此在選取硬件信息對(duì)軟件進(jìn)行加密的過(guò)程中,可以選取計(jì)算機(jī)CPU ID、主板序列號(hào)、MAC地址等多個(gè)硬件信息,構(gòu)成計(jì)算機(jī)特征值。由于這些信息本身就具有唯一性,通過(guò)多個(gè)硬件信息組合得到的計(jì)算機(jī)特征值可以說(shuō)完全具備了唯一性的要求,滿足“一機(jī)一碼”條件。為避免攻擊者對(duì)其他計(jì)算機(jī)硬件信息的修改,需要將自動(dòng)獲取的計(jì)算機(jī)硬件信息用特定加密算法進(jìn)行加密,以保證用戶信息的安全,具有單向性的Hash函數(shù)是最合適的選擇。

Hash函數(shù)也稱為散列函數(shù),是一種單向密碼體制,是一個(gè)從明文到密文的不可逆映射,只有加密過(guò)程,不能解密。同時(shí),HaBh函數(shù)可以將任意長(zhǎng)度的輸入經(jīng)過(guò)變換后得到固定長(zhǎng)度的輸出。MD5算法就是Hash函數(shù)的一種,在這里選取MD5算法4lXt硬件信息進(jìn)行加密,得到ID碼。

MD5算法可簡(jiǎn)單描述為:將任意長(zhǎng)度的字節(jié)串(即需要產(chǎn)生摘要的硬件信息)映射為一個(gè)128位的信息摘要,即使可看到源程序和加密算法描述,也無(wú)法將一個(gè)MD5的值反推導(dǎo)回原來(lái)的字符串。算法實(shí)現(xiàn)如圖3所示。

1

MD5算法是一種單向加密算法,數(shù)據(jù)只能加密,不能被解密,也就是說(shuō)攻擊者不能由消息摘要推得用戶計(jì)算機(jī)信息,保證了用戶信息的安全參另外任意一段數(shù)據(jù),經(jīng)過(guò)加密后,其結(jié)果永遠(yuǎn)是相同的;任意兩段數(shù)據(jù)加密之后的密文是不相同的,可以保證每個(gè)用戶信息經(jīng)MD5算法加密后生成各不相同的ID碼。用戶需要將該模塊生成的ID碼發(fā)送給軟件發(fā)行商。

2)注冊(cè)碼生成模塊

軟件發(fā)行商提供唯一的軟件注冊(cè)碼給用戶進(jìn)行安裝與注冊(cè),安裝時(shí)注冊(cè)信息將寫(xiě)入注冊(cè)表,用以驗(yàn)證每次運(yùn)行時(shí)的信息是否存在與正確,在使用注冊(cè)碼進(jìn)行軟件授權(quán)機(jī)制中,注冊(cè)碼是整套軟件保護(hù)方案中最重要的部分。

注冊(cè)碼是根據(jù)用戶信息生成的,具有唯一性。軟件發(fā)行商在給用戶分發(fā)注冊(cè)碼時(shí)通過(guò)某種算法尉等用戶信息換算成注冊(cè)碼(用SN表示),注冊(cè)碼生成過(guò)程可表示為:

注冊(cè)碼SN=以用戶信息) (1)

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

用戶信息_g(注冊(cè)碼SN) (2)

軟件破解的難易程度與換算關(guān)系設(shè)計(jì)有直接關(guān)系;因?yàn)轵?yàn)證過(guò)程是在用戶計(jì)算機(jī)上運(yùn)行的,攻擊者可以使用工具軟件對(duì)其進(jìn)行分析,可能造成合法注冊(cè)碼泄露,并在網(wǎng)上傳播,任何復(fù)制了這個(gè)軟件的人都可以使用這個(gè)注冊(cè)碼進(jìn)行軟件認(rèn)證,造成軟件盜版Q破解者也可能會(huì)通過(guò)進(jìn)一步分析換算方法g,寫(xiě)出非法注冊(cè)機(jī),這樣軟件就能被隨意復(fù)制并使用,并被非法的通過(guò)認(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è)碼算法的逆算法,即:

用戶信息=fl(注冊(cè)碼SN) (3)

軟件合法性驗(yàn)證過(guò)程是在用戶計(jì)算機(jī)上進(jìn)行,容易被攻擊者破解,如果采用非對(duì)稱加密算法,那么就可以進(jìn)一步限制盜版的可能。RSA算法巧作為非對(duì)稱加密算法的一種,是第一個(gè)既能用于加密又能用于數(shù)字簽名的算法,加解密原理簡(jiǎn)單,易于理解和操作,具有良好的安全性,目前已成為公鑰密碼的國(guó)際標(biāo)準(zhǔn)。在本系統(tǒng)中選用RSA算法進(jìn)行加密生成軟件注冊(cè)碼。算法步驟如下:

步驟一,RSA加解密算法的初始化。

(1)隨意選擇兩個(gè)互異的大素?cái)?shù)p和q,要求p不等于q;

(2)計(jì)算n=pxq,根據(jù)歐拉公式得φ(n)=(p -1)(q -1);

(3)選擇一個(gè)整數(shù)e,滿足e與(p(n)互素,且e小于φ(n);

(5)為安全起見(jiàn)將p和q的記錄銷毀,返回n,d。

步驟二,RSA加解密變換。 將明文劃分成塊,使得每個(gè)明文報(bào)文長(zhǎng)度滿足m<,然后對(duì)每個(gè)數(shù)據(jù)塊m進(jìn)行加密和解密變換。

(1)加密變換,對(duì)于待加密消息m,其對(duì)應(yīng)的密文為m=E (m)=me modn;

(2)解密變換,m=D(c)= Cd modn。

注冊(cè)碼生成模塊是一個(gè)獨(dú)立于應(yīng)用軟件的模塊,不應(yīng)用軟件一起發(fā)布,軟件發(fā)行商獨(dú)立擁有,用于產(chǎn)生用注冊(cè)密碼。使用非對(duì)稱RSA算法對(duì)用戶ID碼進(jìn)行加獲得注冊(cè)碼,攻擊者即使得到了公鑰,也無(wú)法推算得到鑰,不可能自行根據(jù)消息摘要計(jì)算得到注冊(cè)碼。保證攻擊者不能寫(xiě)出注冊(cè)機(jī)程序。

3)注冊(cè)模塊

注冊(cè)模塊的主要功能是用戶端在接收到軟件發(fā)行商回的注冊(cè)碼后自動(dòng)完成注冊(cè)并將其寫(xiě)入注冊(cè)表,供以每次運(yùn)行軟件時(shí)驗(yàn)證模塊使用。

4)驗(yàn)證模塊

注冊(cè)碼驗(yàn)證實(shí)際上就是驗(yàn)證簽名的過(guò)程,判斷用戶不是已注冊(cè)為合法用戶。驗(yàn)證模塊主要完成在用戶每運(yùn)行軟件時(shí),用軟件開(kāi)發(fā)商提供的公鑰,也就是RSA算的公鑰還原出計(jì)算機(jī)的ID碼,將還原得到的ID碼與原用戶ID碼進(jìn)行比較和簽名驗(yàn)證,只有一致的情況下軟才能正常運(yùn)行,否則無(wú)法注冊(cè)。

1

系統(tǒng)測(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)過(guò)定算法得到擾亂后的ID碼,發(fā)送給軟件發(fā)行商,軟件行商利用RSA非對(duì)稱加密算法生成注冊(cè)碼對(duì)用戶授,用戶利用注冊(cè)碼進(jìn)行認(rèn)證注冊(cè)。軟件安裝時(shí)將注冊(cè)息寫(xiě)入注冊(cè)表,用于以后使用軟件時(shí)檢查注冊(cè)表中的息是否正確,若正確則編碼器正常編碼,否則編碼器對(duì)頻進(jìn)行不正常編碼,終端解碼得到的節(jié)目流將會(huì)非常清晰,用戶不能得到正常信息,這將迫使用戶重新注冊(cè)碼器軟件。

為了驗(yàn)證有效性,將該加密系統(tǒng)的方案成功用于編器軟件進(jìn)行測(cè)試。圖4是采用加密算法獲得的用戶計(jì)機(jī)的ID碼,可以看出圖中的碼字為不規(guī)則的亂碼。圖是采用非對(duì)稱RSA加密算法獲得的注冊(cè)碼,由此可知算法有效可行。

通過(guò)測(cè)試分析,得出基于硬件信息的編碼器軟件加密方法具有以下優(yōu)點(diǎn):

1)與多數(shù)軟件注冊(cè)方式不同,本設(shè)計(jì)采用“一機(jī)一碼啦冊(cè),保護(hù)了軟件發(fā)行商的合法權(quán)益;

2)直接選取計(jì)算機(jī)硬件信息作為注冊(cè)依據(jù),不需要添加外置軟盤(pán)、硬盤(pán)等設(shè)備;

3)在沒(méi)有正確注冊(cè)的情況下,允許編碼器工作;

4)采用特別技術(shù),攻擊者很難找到產(chǎn)生注冊(cè)碼的規(guī)律,不會(huì)出現(xiàn)非法注冊(cè)碼;

5)純軟件實(shí)現(xiàn),可實(shí)現(xiàn)批量處理,方便使用,價(jià)格低。

小知識(shí)之硬加密

硬加密是目前廣泛采用的加密手段。所謂硬加密就是通過(guò)硬件和軟件結(jié)合的方式來(lái)實(shí)現(xiàn)軟件的加密,加密后軟件執(zhí)行時(shí)需訪問(wèn)相應(yīng)的硬件,如插在計(jì)算機(jī)擴(kuò)展槽上的卡或插在計(jì)算機(jī)并口上的“狗”。