国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      對(duì)軟件進(jìn)行加密、解密的方法及加密、解密的裝置的制作方法

      文檔序號(hào):6609472閱讀:206來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):對(duì)軟件進(jìn)行加密、解密的方法及加密、解密的裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計(jì)算機(jī)安全領(lǐng)域,特別涉及計(jì)算機(jī)加密領(lǐng)域,具體的講是對(duì)軟件進(jìn)行加密、 解密的方法及加密、解密的裝置。
      背景技術(shù)
      現(xiàn)在,軟件已經(jīng)成為一種具有獨(dú)立的價(jià)值的商品,軟件的功能、執(zhí)行過(guò)程和編碼等等都 很可能成為競(jìng)爭(zhēng)對(duì)手或其它組織或個(gè)人抄襲的對(duì)象。所以軟件,特別是由中間語(yǔ)言,例如, Java, .NET等編程語(yǔ)言編寫(xiě)的軟件很容易通過(guò)逆向工程被逆向編碼,例如使用.NET Reflect (微軟的逆向工程工具),JAD (Java的逆向工程工具),從而得到軟件的核心算法、編碼等 信息,這些信息如果被破解者惡意使用會(huì)造成開(kāi)發(fā)者的損失,例如,模仿軟件的核心算法, 繞過(guò)注冊(cè)過(guò)的軟件等。
      在現(xiàn)有技術(shù)中,通過(guò)更改程序內(nèi)部函數(shù)名稱(chēng),重新安排控制流程或其它方法來(lái)迷惑破解 者的破解行為具有一定的效果,能夠使逆向編碼后的軟件程序很難讀懂或者無(wú)法讀懂,但是 這種源代碼的保護(hù)機(jī)制不能避免軟件程序被逆向編碼,軟件程序的信息還是有可能泄漏。
      在《計(jì)算機(jī)與信息技術(shù)》2005年5月刊"利用DES加密算法保護(hù)Java源代碼" 一文中, 公開(kāi)了一種將Java編輯的軟件進(jìn)行加密,并在運(yùn)行時(shí)解密的方案。該方案使用數(shù)據(jù)加密標(biāo)準(zhǔn) (DES: Data Encryption Standard)將可執(zhí)行的Java程序加密,將加密后的程序編碼和密鑰存儲(chǔ)于 存儲(chǔ)器內(nèi),加載器將加密的Java程序編碼和密鑰加載到系統(tǒng)中,調(diào)出密鑰并將程序編碼解密, 轉(zhuǎn)換為可執(zhí)行的編碼形式,并載入Java虛擬機(jī)(JVM)中運(yùn)行。
      上述方法很容易被破解者跟蹤,破解者只要使用調(diào)試工具就可以跟蹤程序啟動(dòng)的每一 步。如果程序在每次運(yùn)行時(shí)都訪(fǎng)問(wèn)某一個(gè)文件,從該文件中獲得密鑰或者獲得系統(tǒng)符號(hào)名, 這樣會(huì)使破解者懷疑該文件可能為該軟件的密鑰文件或者系統(tǒng)符號(hào)名對(duì)照表,如果破解者確 定了該文件就是密鑰文件,則會(huì)千方百計(jì)的破解該密鑰文件,如果破解了密鑰文件,則就可 以將密文的軟件編碼轉(zhuǎn)換為明文的軟件編碼,對(duì)該軟件就可以進(jìn)行逆向工程以生成源代碼, 從而造成軟件所有人的損失。

      發(fā)明內(nèi)容
      為了解決以上問(wèn)題,增加軟件被反編譯的難度,本發(fā)明的目的在于提供一種對(duì)軟件進(jìn)行 加密的方法和一種相應(yīng)的解密方法,加入了門(mén)限加密特征,在每次啟動(dòng)軟件時(shí)獲取門(mén)限密鑰 因子的地址都不一樣,使破解者不能確定哪些是密鑰地址。本發(fā)明還提供了一種對(duì)軟件進(jìn)行加密的裝置和一種相應(yīng)的解密裝置,能夠隨機(jī)的將多個(gè) 門(mén)限密鑰因子存儲(chǔ)于軟件的不同段中,解密時(shí)隨機(jī)的從某些段中取得門(mén)限密鑰因子用于解密 軟件。
      步驟IOI,利用第一加密模塊將存儲(chǔ)介質(zhì)中的軟件明文加密為第一軟件密文,其中解密 所用的密鑰為第一密鑰SK;
      步驟102,第二加密模塊利用n個(gè)門(mén)限密鑰因子生成第二密鑰,使用該第二密鑰將所述 第一密鑰SK加密為密鑰密文PSK,并將所述密鑰密文PSK拼接于所述第一軟件密文中,其中 n>l的正整數(shù);
      步驟103,利用封裝模塊將所述密鑰密文PSK和第一軟件密文作為一體分為n段,將所 述門(mén)限密鑰因子拼接于所述分段中,形成第二軟件密文,并存儲(chǔ)于所述存儲(chǔ)介質(zhì)中。
      根據(jù)本發(fā)明加密方法的一個(gè)進(jìn)一步的方面,所述步驟101中所述的加密方法包括,對(duì)稱(chēng) 加密算法或非對(duì)稱(chēng)加密算法。
      根據(jù)本發(fā)明加密方法的再一個(gè)進(jìn)一步的方面,所述步驟102中使用的門(mén)限密鑰算法包括 沙米爾門(mén)限密鑰算法。
      根據(jù)本發(fā)明加密方法的另一個(gè)進(jìn)一步的方面,所述步驟103中,所述封裝模塊將所述密 鑰密文PSK和第一軟件密文作為一體分為n段,C代表所述n段中的任意一段,段C由塊G, G,…,C構(gòu)成,針對(duì)于每一段C和相應(yīng)的A計(jì)算<formula>formula see original document page 5</formula>
      以上的X為算術(shù)乘法運(yùn)算,同時(shí)計(jì)算門(mén)限密鑰因子A的的哈希值力,合并C。至C^形成
      C,,將n段C,和相應(yīng)的哈希值力拼接到一起形成所述的第二軟件密文。 一種對(duì)軟件進(jìn)行解密的方法,在軟件加載的過(guò)程中包括以下步驟 步驟201,解封裝模塊從第二軟件密文的n個(gè)段中隨機(jī)取t個(gè)門(mén)限密鑰因子,將所述第
      二軟件密文恢復(fù)為第一軟件密文和密鑰密文PSK,其中"t^1, n為大于l的正整數(shù);
      步驟202,提取所述密鑰密文PSK,第二解密模塊根據(jù)所述t個(gè)門(mén)限密鑰因子生成第二密鑰,利用該第二密鑰將密鑰密文PSK解密為第一密鑰SK;
      步驟203,第一解密模塊使用所述第一密鑰SK將所述第一軟件密文解密,并將軟件明文
      傳送給CPU,以執(zhí)行該軟件。
      根據(jù)本發(fā)明解密方法的一個(gè)進(jìn)一步的方面,所述步驟201中,所述解封裝模塊分別對(duì)n 段第二軟件密文中的每一段計(jì)算根據(jù)EO至E歷消去C。, C,,…,C^,得到等式<formula>formula see original document page 6</formula>
      求解該等式中的么當(dāng)々的哈希值等于該c'段相應(yīng)的哈希值力時(shí),用該A將c。至c;恢
      復(fù)為C。至C^,將C。至C^合并以獲得段C,該段C為第一軟件密文和密鑰密文作為一體的n 段中的一段;求出n個(gè)k,并將第二軟件密文恢復(fù)為第一軟件密文和密鑰密文PSK。
      根據(jù)本發(fā)明解密方法的再一個(gè)進(jìn)一步的方面,使用多項(xiàng)式的牛頓迭代法所述求解等式 (PO)中的A。
      一種對(duì)軟件進(jìn)行加密的裝置,其特征在于包括,第一加密模塊,第二加密模塊和封裝模 塊;所述第一加密模塊,利用第一密鑰SK將軟件明文加密為第一軟件密文;所述第二加密模 塊與所述第一加密模塊相連接,利用n個(gè)門(mén)限密鑰因子生成第二密鑰,使用該第二密鑰將所 述第一密鑰SK加密為密鑰密文PSK,并將所述密鑰密文PSK存儲(chǔ)于所述第一軟件密文中;所 述封裝模塊與所述第二加密模塊相連接,將所述第一軟件密文分為n段,將所述門(mén)限密鑰因 子拼接于所述分段中,形成第二軟件密文。
      一種對(duì)軟件進(jìn)行解密的裝置,其特征在于包括,解封裝模塊,第二解密模塊和第一解密 模塊;所述解封裝模塊將第二軟件密文解封裝為第一軟件密文和密鑰密文PSK,并在所述第 一軟件密文的n個(gè)段中隨機(jī)取t個(gè)門(mén)限密鑰因子;所述第二解密模塊與所述解封裝模塊相連 接,根據(jù)所述t個(gè)門(mén)限密鑰因子生成第二密鑰,利用該第二密鑰將密鑰密文PSK解密為第一 密鑰SK;所述第一解密模塊與所述第二解密模塊相連接,使用所述第一密鑰SK將所述第一 軟件密文解密,獲得軟件明文并傳送給CPU,以執(zhí)行該軟件。
      本發(fā)明的有益效果在于,加強(qiáng)了軟件加密密鑰的保護(hù),使破解者很難通過(guò)跟蹤軟件加載 過(guò)程,獲得密鑰物理地址從而通過(guò)分析密鑰實(shí)現(xiàn)軟件破解的目的本發(fā)明通過(guò)動(dòng)態(tài)存儲(chǔ)密鑰的 技術(shù)加強(qiáng)了現(xiàn)有給軟件加密,以提高其安全性的方案。


      圖1為本發(fā)明進(jìn)行軟件加密的流程圖; 圖2為本發(fā)明進(jìn)行軟件解密的流程圖;圖3為本發(fā)明進(jìn)行軟件加密的裝置結(jié)構(gòu)示意圖; 圖4為本發(fā)明進(jìn)行軟件解密的裝置結(jié)構(gòu)示意圖; 圖5為實(shí)施本發(fā)明時(shí)的裝置結(jié)構(gòu)示意圖。
      具體實(shí)施例方式
      下面,結(jié)合附圖對(duì)于本發(fā)明進(jìn)行如下詳細(xì)說(shuō)明。
      本發(fā)明使用門(mén)限密鑰的理論對(duì)所述第一密鑰進(jìn)一步保護(hù),并將門(mén)限密鑰因子拼接被加密 的軟件中,這樣使破解者每次跟蹤程序運(yùn)行時(shí)都獲得不同的跳轉(zhuǎn)地址,使破解者無(wú)法確定去 哪尋找所述的第一密鑰。本發(fā)明所能夠保護(hù)的軟件不僅限于可執(zhí)行程序,還包括功能模塊和 軟件的核心算法等?,F(xiàn)有的門(mén)限加密方法是,利用一個(gè)隨機(jī)數(shù)作為第二密鑰將所述第一密鑰
      SK加密為密鑰密文PSK,同時(shí)生成用于計(jì)算該隨機(jī)數(shù)的n個(gè)門(mén)限密鑰因子;在需要密鑰進(jìn)行 解密的時(shí)候,只需要t個(gè)門(mén)限密鑰因子("rO生成所述第二密鑰用于解密。門(mén)限密碼學(xué)提出 的目的是為了權(quán)利分散及提高安全性,權(quán)利分散性體現(xiàn)于在使用門(mén)限密碼方法進(jìn)行解密時(shí),
      當(dāng)每個(gè)人都持有一個(gè)密鑰因子,則必須達(dá)到一定數(shù)量(門(mén)限值t)的人合作才能完成解密;
      安全性, 一方面是為了防止獲得一個(gè)密鑰因子就使加密失去意義,在這群人中只要少于門(mén)限
      值的人被攻陷,那么還是無(wú)法解密的;另一方面,防止密鑰因子丟失影響正常的解密工作, 因?yàn)橹灰卸嘤诨虻扔陂T(mén)限值的人擁有有效的密鑰因子,還是能夠解密。本發(fā)明具體實(shí)施方 式中使用門(mén)限加密算法以沙米爾方案(Shamir)為例,但不限于沙米爾方案,還可以使用阿
      斯木斯-布隆門(mén)限密鑰方案(As咖th-Bloom)。
      在銷(xiāo)售軟件之前,軟件的賣(mài)主利用加密算法對(duì)明文的軟件進(jìn)行加密,該加密算法為現(xiàn)有 的對(duì)稱(chēng)或非對(duì)稱(chēng)加密算法,例如,AES, DES或RSA, ECC等。如果使用了對(duì)稱(chēng)加密算法,則 軟件加密密鑰與解密密鑰相同,也可用于解密,該解密密鑰為密鑰SK (即,第一密鑰)。如 果使用非對(duì)稱(chēng)加密算法,則加密密鑰與所述非對(duì)稱(chēng)加密算法的解密密鑰存在著對(duì)應(yīng)關(guān)系,在 本發(fā)明中解密密鑰為密鑰SK (即,第一密鑰)。因?yàn)檐浖拿荑€SK是關(guān)系到軟件能否被破解 的關(guān)鍵,所以關(guān)于該密鑰SK的安全就相當(dāng)重要,本發(fā)明特別使用門(mén)限加密的沙米爾方案通過(guò) n個(gè)門(mén)限密鑰因子《,,2,…,凡的運(yùn)算生成第二密鑰,利用該第二密鑰將該密鑰SK加密為 密鑰密文PSK,將密鑰密文PSK拼接到被加密的軟件中,例如將其拼接于被加密軟件的頭部 或者尾部。并且將該n個(gè)門(mén)限密鑰因子由一個(gè)強(qiáng)壯的拼接算法(或者簡(jiǎn)單的拼接方式)拼接 于被加密的軟件不同的物理段落中,例如,拼接于軟件的頭部或尾部。本發(fā)明通過(guò)第一步, 加密需要保護(hù)的軟件;第二步,加密第一步中的第一密鑰SK;第三步,拼接實(shí)現(xiàn)第二步加密 的密鑰因子;在軟件運(yùn)行需要解密時(shí),隨機(jī)地從被保護(hù)的軟件密文中取得t (1S"n, t和n均為正整數(shù))個(gè)門(mén)限密鑰因子,然后通過(guò)沙米爾方案就可以從密鑰密文PSK中將被加密軟件 的第一密鑰SK解出,從而對(duì)軟件密文進(jìn)行解密。門(mén)限密鑰恢復(fù)方法使軟件加載的過(guò)程產(chǎn)生了 動(dòng)態(tài)特性,每次都從軟件中不同的位置獲得門(mén)限密鑰因子用于解密,可以有效針對(duì)跟蹤軟件 加載的破解方法,增加破解的難度。
      如圖1所示,為本發(fā)明軟件加密過(guò)程的流程圖。
      步驟101,選擇合適的對(duì)稱(chēng)加密算法,例如AES, DES等,利用第一加密模塊將軟件的 明文加密為第一軟件密文,其所使用密鑰為第一密鑰SK。
      步驟102,第二加密模塊利用門(mén)限加密算法中的Shamir算法保護(hù)上述密鑰SK,在域Zp 中使用拉格朗日插值多項(xiàng)式算法的Shamir方案,其中Zp是由素?cái)?shù)域,生成t-l次的多項(xiàng)式
      其中《W的系數(shù)ao,…,a。是隨機(jī)生成的。
      令、=1 ,計(jì)算尸 (1) = "0+0,+。2+ + 0,—,'
      令X" = , 計(jì)算尸 (") = "。 + + a2"2 +…+ 。
      其中,…,尸 (的<2", n為大于l的正整數(shù),t為大于等于l小于n的正整數(shù)。
      然后生成了n個(gè)門(mén)限密鑰因子對(duì)^—i,尸。(1)),, & = 使用ao為第二密鑰將密鑰 SK加密為密鑰密文PSK。并將加密后的密鑰密文PSK拼接于所述第一軟件密文的頭部或尾部, 本步驟可以使用現(xiàn)有技術(shù)中的存儲(chǔ)方法。
      步驟103,封裝模塊將第一軟件密文和密鑰密紋作為一體分割為n個(gè)段,將n個(gè)門(mén)限密 鑰因子分別拼接于n個(gè)段中。在此,可以直接將n個(gè)密鑰因子分別拼接于第一軟件密文每一 段的頭部或尾部,如圖中所示黑色的部分為密鑰因子,白色部分為n段,形成第二軟件密文 并存儲(chǔ)于存儲(chǔ)介質(zhì)中,也可以使用下面的拼接方法,形成更加復(fù)雜的第二軟件密文。
      C代表第一軟件密文的某一段,其中每段C由塊G, G,…,構(gòu)成,A代表門(mén)限密 鑰因子對(duì)《中的Pn(力,具體拼接過(guò)程如下,
      <formula>formula see original document page 8</formula>(EO)
      <formula>formula see original document page 8</formula> (E2)<formula>formula see original document page 8</formula> (E3)<formula>formula see original document page 8</formula>(E/zrl)Cm = C —, (E歷)
      其中X為算術(shù)乘法運(yùn)算。作為優(yōu)選的實(shí)施例,每一塊G的長(zhǎng)度等于A的長(zhǎng)度,即length(G) =lengthU)。例如,軟件加密后分為n個(gè)段,其中某一段C的長(zhǎng)度為128字節(jié),密鑰因子的 長(zhǎng)度為16字節(jié),則將C分成8塊,即nF7,C的每一塊G的長(zhǎng)度為16字節(jié)。同時(shí)計(jì)算/^hashU),
      即將門(mén)限密鑰因子A的哈希值記錄下來(lái),用于解密時(shí)驗(yàn)證恢復(fù)的門(mén)限密鑰因子是否正確。C。
      至(^合并成一段完整的C'后,再和哈希值力進(jìn)行拼接(力加在C'段的前面或后面),然后
      拼接所有段C'和相應(yīng)的哈希值h形成最終存儲(chǔ)的軟件密文,即第二軟件密文,并將第二軟 件密文存儲(chǔ)于存儲(chǔ)介質(zhì)中。
      在Shamir門(mén)限密鑰加密方案中,可以用任意的t個(gè)密鑰因子恢復(fù)第二密鑰^,以用于 解密PSK,因此軟件裝載器在每次裝載被加密的軟件時(shí),都將會(huì)隨機(jī)的從n個(gè)密鑰因子中選 擇t個(gè),用于解密PSK,以提供一種高強(qiáng)度的防止破解者跟蹤、分析軟件裝載過(guò)程,并具有 動(dòng)態(tài)特點(diǎn)的保護(hù)機(jī)制。
      圖2為本發(fā)明軟件加載解密的流程圖。軟件的啟動(dòng)階段,由加載器從存儲(chǔ)介質(zhì)中將第二 軟件密文加載到內(nèi)存中,其中黑色部分為密鑰因子,白色部分為第一軟件密文和PSK,如果 在加密步驟中沒(méi)有使用如步驟103那樣的拼接方法,而只是將n個(gè)密鑰因子直接拼接于軟件 密文相應(yīng)段落的頭部或尾部,則步驟201可以通過(guò)解封裝模塊直接從隨機(jī)選取的t段密文中 直接得到t個(gè)密鑰因子,并將第二軟件密文恢復(fù)為第一軟件密文和PSK。如果在加密時(shí)使用 了如步驟103中所述那樣的拼接方法,則通過(guò)解封裝模塊選擇一段密文C'和相應(yīng)的哈希值力, 恢復(fù)該段密文上攜帶的門(mén)限密鑰因子A?;謴?fù)算法如下
      消去E0至E/Z7中的C。至d ,將C —, =Cm代入(E/7Tl),獲得等式
      Cm—2 =C —, - CmxA: + C >^2 ,將該等式代入(E/zr2)……,直到代入(E0),最后形成
      o=-or+c-c:_2xr2+ .+(-i廣'xc;,將o=《r+c'-C2xr—2十…+(-ir-1《
      標(biāo)記為P0,密鑰因子A為上述多項(xiàng)式的根,通過(guò)在多項(xiàng)式數(shù)值域的計(jì)算找出根,可以從第二
      軟件密文c〗,q',…,c二中恢復(fù)夂在本實(shí)施例中使用牛頓迭代算法尋找多項(xiàng)式PO的一 個(gè)或多個(gè)根。
      (a)令y = -ex + c二—xf — c二一2 x r-2 +…+(-i)" x q = /(" (pi),任意選擇 起始a ,例如&q = 2""洲"-1 。(b )計(jì)算、,A—^ ,i=0至m ,/'w為/("的導(dǎo)數(shù),即,
      /'(A:) = —C二 x w x yT—1 + C二, x (w _ l)x /T—2 — C二2 x (w — 2)x /T—3 + 一+ (—l)m —2 x C;。
      (c) 重復(fù)步驟b,直到H卜1,此時(shí)^近似為P1的根。
      (d) 如果hashU,+,)^,或者h(yuǎn)ash(^+l)=力,hash(/t,+1-l)=力,其中力為加密步
      驟(4)中的力值,則本步驟算出的、,就為加密步驟中的門(mén)限密鑰因子"跳轉(zhuǎn)到步驟(f),
      如果不相等,則數(shù)字根A:尋找算法失敗,進(jìn)入步驟(e)。本發(fā)明中所述的哈希算法,即散列 算法,是一個(gè)單向算法,即數(shù)據(jù)被演算后無(wú)法反推出原數(shù)據(jù),因而若要比較數(shù)據(jù)傳輸前后是 否被改動(dòng)過(guò),只需比較傳輸前后的哈希值是否相等即可。
      (e) 如果在步驟(d)中沒(méi)有找到A則意味著PO有多個(gè)實(shí)根,其他的實(shí)根可以通過(guò)下 面方法獲得
      使用步驟(d)中的根^作為新的^。
      令 =-c二, ~ = (-i廣'xc二"+ ,其中A-l, 2'…,/ rl,然后建立一個(gè)新
      的多項(xiàng)式,/(" = 6。><纊—'+6,xF1—2+…+ Zv' (P2);
      使用上述步驟b-c計(jì)算新等式P2的實(shí)根,獲得P0的其他實(shí)根。
      通過(guò)本步驟(e)計(jì)算出P0的所有實(shí)根,每次經(jīng)過(guò)(e)后,重復(fù)檢查步驟(d),判斷 是否得到真正的密鑰因子,然后得到門(mén)限密鑰因子h
      (f )得到一段密文中的門(mén)限密鑰因子k以后,代回方程組E0至Em,將第二軟件密文G ,
      C;,…,C二恢復(fù)為第一軟件密文G, G,…,G。
      對(duì)n段C,分別進(jìn)行a-f,得出解密鑰密文PSK所需的所有門(mén)限密鑰因子A,并利用A
      恢復(fù)所有的密文C',形成第一軟件密文。
      步驟202,當(dāng)恢復(fù)完t個(gè)門(mén)限密鑰因子后,(A,尸"(;。),1《i《t,第二解密
      模塊用t個(gè)k構(gòu)建一個(gè)新的多項(xiàng)式 ^ 、
      '■=1 ,=1 ^ 一x,'

      其中,尸nOO, x,和&為已經(jīng)恢復(fù)的門(mén)限密鑰因子對(duì)中的x,其中i^k,最后令x 等于0,得出尸 (0) = "0。在第一軟件密文中提取PSK,使用統(tǒng)作為解密密鑰密文PSK的密鑰,從而獲得解密被加 密軟件的第一密鑰SK。
      步驟203,第一解密模塊使用SK對(duì)被加密的軟件進(jìn)行解密,獲得原始軟件明文。 CPU根據(jù)該軟件明文執(zhí)行。
      如圖3所示,為本發(fā)明加密裝置的示意圖,包括,第一加密模塊,第二加密模塊和封裝 模塊;所述第一加密模塊,利用第一密鑰SK將軟件明文加密為第一軟件密文;所述第二加密 模塊與所述第一加密模塊相連接,利用n個(gè)門(mén)限密鑰因子生成第二密鑰,使用該第二密鑰將 所述第一密鑰SK加密為密鑰密文PSK,并將所述密鑰密文PSK存儲(chǔ)于所述第一軟件密文中; 所述封裝模塊與所述第二加密模塊相連接,將所述第一軟件密文分為n段,將所述門(mén)限密鑰 因子拼接于所述分段中,形成第二軟件密文。
      如圖4所示,為本發(fā)明解密裝置的示意圖,包括,解封裝模塊,第二解密模塊和第一解 密模塊;所述解封裝模塊將第二軟件密文解封裝為第一軟件密文,并在所述第一軟件密文的 n個(gè)段中隨機(jī)取t個(gè)門(mén)限密鑰因子;所述第二解密模塊與所述解封裝模塊相連接,根據(jù)所述t 個(gè)門(mén)限密鑰因子生成第二密鑰,利用該第二密鑰將密鑰密文PSK解密為第一密鑰SK;所述第 一解密模塊與所述第二解密模塊相連接,使用所述第一密鑰SK將所述第一軟件密文解密,獲 得軟件明文。
      如圖5所示,為本發(fā)明裝置運(yùn)行的示意圖。包括加載器,用于從存儲(chǔ)介質(zhì)中加載軟件, 還包括如圖4所示的解密裝置,相同部分不再贅述。加載器從軟件的存儲(chǔ)介質(zhì)中(例如硬盤(pán)) 加載第二軟件密文,將其輸入所述解密裝置,所述解密裝置將所述第二軟件密文轉(zhuǎn)換為軟件 明文,并將其傳送給CPU執(zhí)行軟件。
      本發(fā)明的有益效果在于,加密可執(zhí)行的軟件,使軟件破解者不會(huì)通過(guò)簡(jiǎn)單的跟蹤軟件加 載獲得密鑰,從而防止該軟件被解密并通過(guò)逆向工程等方法逆向編譯。加強(qiáng)了軟件加密密鑰 的保護(hù),使破解者很難通過(guò)跟蹤軟件加載過(guò)程,獲得密鑰物理地址從而通過(guò)分析密鑰實(shí)現(xiàn)軟 件破解的目的本發(fā)明通過(guò)動(dòng)態(tài)存儲(chǔ)密鑰的技術(shù)加強(qiáng)了現(xiàn)有給軟件加密,以提高其安全性的方 案。
      以上具體實(shí)施方式
      僅用于說(shuō)明本發(fā)明,而非用于限定本發(fā)明。
      權(quán)利要求
      1. 一種對(duì)軟件進(jìn)行加密的方法,包括以下步驟-步驟IOI,利用第一加密模塊將存儲(chǔ)介質(zhì)中的軟件明文加密為第一軟件密文,其中解密 所用的密鑰為第一密鑰SK;步驟102,第二加密模塊利用n個(gè)門(mén)限密鑰因子生成第二密鑰,其中r^l的正整數(shù),使 用該第二密鑰將所述第一密鑰SK加密為密鑰密文PSK,并將所述密鑰密文PSK拼接于所述第 一軟件密文中;步驟103,利用封裝模塊將所述密鑰密文PSK和第一軟件密文作為一體分為n段,將所 述門(mén)限密鑰因子拼接于所述分段中,形成第二軟件密文,并存儲(chǔ)于所述存儲(chǔ)介質(zhì)中。
      2. 根據(jù)權(quán)利要求1所述的對(duì)軟件進(jìn)行加密的方法,其特征在于,所述步驟101中所述 的加密方法包括,對(duì)稱(chēng)加密算法或非對(duì)稱(chēng)加密算法。
      3. 根據(jù)權(quán)利要求1所述的對(duì)軟件進(jìn)行加密的方法,其特征在于,所述步驟102中使用的門(mén)限密鑰算法包括沙米爾門(mén)限密鑰方案,或者阿斯木斯-布隆門(mén)限密鑰方案。
      4. 根據(jù)權(quán)利要求3所述的對(duì)軟件進(jìn)行加密的方法,其特征在于,所述步驟103中,所述封裝模塊將所述密鑰密文PSK和第一軟件密文作為一體分為n段,C代表所述n段中的任 意一段,段C由塊G, G,…,C,構(gòu)成,其中每一塊的長(zhǎng)度與門(mén)限密鑰因子A的長(zhǎng)度相等, 針對(duì)于每一段C和相應(yīng)的A計(jì)算C0 = C0 x A: (E0)C;=ClX/t + C。 (E2)C2《xA: + q (E3)CC^" + C;—2 (E/zrl) 《=Q一 (E歷)以上的X為算術(shù)乘法運(yùn)算,同時(shí)計(jì)算門(mén)限密鑰因子A的的哈希值力,合并C。至(^形成C',將n段C'和相應(yīng)的哈希值力拼接到一起形成所述的第二軟件密文。
      5. —種對(duì)軟件進(jìn)行解密的方法,在軟件加載的過(guò)程中包括以下步驟步驟201 ,解封裝模塊從第二軟件密文的n個(gè)段中隨機(jī)取t個(gè)門(mén)限密鑰因子',其中iSt^n, n為大于1的正整數(shù),將所述第二軟件密文恢復(fù)為第一軟件密文和密鑰密文PSK;步驟202,提取所述密鑰密文PSK,第二解密模塊根據(jù)所述t個(gè)門(mén)限密鑰因子生成第二 密鑰,利用該第二密鑰將密鑰密文PSK解密為第一密鑰SK;步驟203,第一解密模塊使用所述第一密鑰SK將所述第一軟件密文解密,并將軟件明文 傳送給CPU,以執(zhí)行該軟件。
      6. 根據(jù)權(quán)利要求5所述的對(duì)軟件進(jìn)行解密的方法,其特征在于,所述步驟201中,所 述解封裝模塊分別對(duì)n段第二軟件密文中、的每一段計(jì)算根據(jù)EO至E歷消去<formula>formula see original document page 3</formula>得到等式<formula>formula see original document page 3</formula>求解該等式中的么當(dāng)A的哈希值等于該c'段相應(yīng)的哈希值力時(shí),用該A將c。至c;/咴復(fù)為C。至C^,將C。至C^合并以獲得段C,該段C為第一軟件密文和密鑰密文作為一體的n 段中的一段;求出n個(gè)k,并將第二軟件密文恢復(fù)為第一軟件密文和密鑰密文PSK。
      7. 根據(jù)權(quán)利要求6所述的對(duì)軟件進(jìn)行解密的方法,其特征在于,使用多項(xiàng)式的牛頓迭 代法所述求解等式(PO)中的A。
      8. —種對(duì)軟件進(jìn)行加密的裝置,其特征在于包括,第一加密模塊,第二加密模塊和封 裝模塊;所述第一加密模塊,利用第一密鑰SK將軟件明文加密為第一軟件密文;所述第二加 密模塊與所述第一加密模塊相連接,利用n個(gè)門(mén)限密鑰因子生成第二密鑰,使用該第二密鑰 將所述第一密鑰SK加密為密鑰密文PSK,并將所述密鑰密文PSK存儲(chǔ)于所述第一軟件密文中; 所述封裝模塊與所述第二加密模塊相連接,將所述第一軟件密文分為n段,將所述門(mén)限密鑰 因子拼接于所述分段中,形成第二軟件密文。
      9. 一種對(duì)軟件進(jìn)行解密的裝置,其特征在于包括,解封裝模塊,第二解密模塊和第一 解密模塊;所述解封裝模塊將第二軟件密文解封裝為第一軟件密文和密鑰密文PSK,并在所 述第一軟件密文的n個(gè)段中隨機(jī)取t個(gè)門(mén)限密鑰因子;所述第二解密模塊與所述解封裝模塊 相連接,根據(jù)所述t個(gè)門(mén)限密鑰因子生成第二密鑰,利用該第二密鑰將密鑰密文PSK解密為 第一密鑰SK;所述第一解密模塊與所述第二解密模塊相連接,使用所述第一密鑰SK將所述 第一軟件密文解密,獲得軟件明文并傳送給CPU以執(zhí)行該軟件。
      全文摘要
      本發(fā)明涉及計(jì)算機(jī)安全領(lǐng)域,具體的講是對(duì)軟件進(jìn)行加密、解密的方法及加密、解密的裝置。本發(fā)明解密包括以下步驟,步驟201,從第二軟件密文的n個(gè)段中隨機(jī)取t個(gè)門(mén)限密鑰因子,將所述第二軟件密文恢復(fù)為第一軟件密文和密鑰密文PSK,其中n為大于1的正整數(shù),t為小于等于n的正整數(shù);步驟202,提取所述密鑰密文PSK,并根據(jù)所述t個(gè)門(mén)限密鑰因子計(jì)算出第二密鑰,利用該第二密鑰將密鑰密文PSK解密為第一密鑰SK;步驟203,使用所述第一密鑰SK將所述第一軟件密文解密,獲得軟件明文。本發(fā)明有益效果在于加強(qiáng)了軟件加密密鑰的保護(hù),使破解者很難通過(guò)跟蹤軟件加載過(guò)程實(shí)現(xiàn)軟件破解的目的。
      文檔編號(hào)G06F21/22GK101311942SQ20071010763
      公開(kāi)日2008年11月26日 申請(qǐng)日期2007年5月23日 優(yōu)先權(quán)日2007年5月23日
      發(fā)明者文 唐, 胡建鈞 申請(qǐng)人:西門(mén)子(中國(guó))有限公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1