亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用戶驗證方法和裝置以及盜版追蹤方法和裝置制造方法

文檔序號:6500717閱讀:141來源:國知局
用戶驗證方法和裝置以及盜版追蹤方法和裝置制造方法
【專利摘要】用戶驗證方法和裝置以及盜版追蹤方法和裝置。該用戶驗證方法包括:利用用戶所輸入的秘密信息,確定當(dāng)前機器碼是否與利用軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息加密的授權(quán)機器碼相匹配;以及在當(dāng)前機器碼是授權(quán)機器碼的情況下,允許用戶使用該軟件產(chǎn)品,其中,用戶秘密信息是與嵌入在軟件產(chǎn)品的程序結(jié)構(gòu)中的水印相對應(yīng)的秘密信息。
【專利說明】用戶驗證方法和裝置以及盜版追蹤方法和裝置

【技術(shù)領(lǐng)域】
[0001]本申請涉及用戶驗證以及盜版追蹤,更具體地,涉及用戶驗證方法和裝置以及基于水印進行盜版追蹤的方法和裝置。

【背景技術(shù)】
[0002]隨著計算機的廣泛使用、網(wǎng)絡(luò)技術(shù)的飛速發(fā)展以及計算機軟件的迅速發(fā)展,軟件被復(fù)制并遭受未經(jīng)授權(quán)的次級發(fā)行、軟件的算法被盜用、或者軟件遭受惡意篡改等等情形越來越常見,軟件產(chǎn)品的版權(quán)保護已經(jīng)成為一個十分重要的問題。
[0003]一種用于保護軟件版權(quán)的重要技術(shù)是軟件水印技術(shù)。軟件水印可以用來標(biāo)識作者、發(fā)行者、所有者、使用者等,并且可以攜帶有版權(quán)保護信息和身份認(rèn)證信息,從而能夠鑒別出非法復(fù)制和盜用的軟件產(chǎn)品。
[0004]軟件水印是附加在軟件程序上的冗余信息?,F(xiàn)有的軟件水印根據(jù)水印的加入位置可以分為代碼水印和數(shù)據(jù)水印,代碼水印隱藏在程序的指令部分,而數(shù)據(jù)水印則隱藏在包括頭文件、字符串和調(diào)試信息等數(shù)據(jù)中。根據(jù)水印被加載的時刻,軟件水印又可分為靜態(tài)水印和動態(tài)水印,靜態(tài)水印的存在不依賴于軟件的運行狀態(tài),可以在存放、分發(fā)以及運行時被驗證。這類水印在軟件編碼時或編碼完成后被直接嵌入。動態(tài)水印保存在程序的執(zhí)行狀態(tài)中,而不是程序源代碼本身。


【發(fā)明內(nèi)容】

[0005]在下文中給出了關(guān)于本發(fā)明的簡要概述,以便提供關(guān)于本發(fā)明的某些方面的基本理解。應(yīng)當(dāng)理解,這個概述并不是關(guān)于本發(fā)明的窮舉性概述。它并不是意圖確定本發(fā)明的關(guān)鍵或重要部分,也不是意圖限定本發(fā)明的范圍。其目的僅僅是以簡化的形式給出某些概念,以此作為稍后論述的更詳細(xì)描述的前序。
[0006]根據(jù)本發(fā)明的一個方面,提供一種用戶驗證方法,包括:利用用戶所輸入的秘密信息,確定當(dāng)前機器碼是否與利用軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息加密的授權(quán)機器碼相匹配;以及在當(dāng)前機器碼是授權(quán)機器碼的情況下,允許用戶使用該軟件產(chǎn)品,其中,用戶秘密信息是與嵌入在該軟件產(chǎn)品的程序結(jié)構(gòu)中的水印相對應(yīng)的秘密信息。
[0007]根據(jù)本發(fā)明的另一個方面,提供一種用戶驗證裝置,包括:機器碼匹配部分,被配置為利用用戶所輸入的秘密信息,確定當(dāng)前機器碼是否與利用軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息加密的授權(quán)機器碼相匹配;以及驗證確定部分,被配置為在當(dāng)前機器碼是授權(quán)機器碼的情況下,允許用戶使用該軟件產(chǎn)品,其中,用戶秘密信息是與嵌入在該軟件產(chǎn)品的程序結(jié)構(gòu)中的水印相對應(yīng)的秘密信息。
[0008]根據(jù)本發(fā)明的再一個方面,提供一種基于水印的盜版追蹤方法,包括:通過對盜版軟件產(chǎn)品的程序結(jié)構(gòu)的分析來查找與正版軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息相匹配的水?。灰约霸谡业脚c用戶秘密信息相匹配的水印的情況下,根據(jù)該用戶秘密信息確定盜版者。
[0009]根據(jù)本發(fā)明的又一個方面,提供一種用于基于水印進行盜版追蹤的裝置,包括:水印查找部分,被配置為通過對盜版軟件產(chǎn)品的程序結(jié)構(gòu)的分析來查找與正版軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息相匹配的水?。灰约氨I版者確定部分,被配置為:在水印查找部分找到與用戶秘密信息相匹配的水印的情況下,根據(jù)該用戶秘密信息確定盜版者。

【專利附圖】

【附圖說明】
[0010]本發(fā)明可以通過參考下文中結(jié)合附圖所給出的描述而得到更好的理解,其中在所有附圖中使用了相同或相似的附圖標(biāo)記來表示相同或者相似的部件。所述附圖連同下面的詳細(xì)說明一起包含在本說明書中并且形成本說明書的一部分,而且用來進一步舉例說明本發(fā)明的優(yōu)選實施例和解釋本發(fā)明的原理和優(yōu)點。在附圖中:
[0011]圖1是示出根據(jù)本發(fā)明實施例的用戶驗證方法的過程示例的流程圖;
[0012]圖2是示出根據(jù)本發(fā)明實施例的用戶驗證方法的另一過程示例的流程圖;
[0013]圖3示出了用來構(gòu)造水印的程序拓?fù)浣Y(jié)構(gòu)的示例;
[0014]圖4示出了用來構(gòu)造水印的程序數(shù)據(jù)結(jié)構(gòu)的示例;
[0015]圖5示出了用來構(gòu)造水印的程序數(shù)據(jù)結(jié)構(gòu)的另一示例;
[0016]圖6示出了用來構(gòu)造水印的程序數(shù)據(jù)結(jié)構(gòu)的又一示例;
[0017]圖7是示出根據(jù)本發(fā)明實施例的用戶驗證裝置的配置示例的框圖;
[0018]圖8是示出根據(jù)本發(fā)明實施例的用戶驗證裝置的另一配置示例的框圖;
[0019]圖9是示出根據(jù)本發(fā)明實施例的盜版追蹤方法的過程示例的流程圖;
[0020]圖10是示出根據(jù)本發(fā)明實施例的盜版追蹤裝置的配置示例的框圖;以及
[0021]圖11是示出實現(xiàn)本申請的方法和設(shè)備的計算機的示例性結(jié)構(gòu)的框圖。

【具體實施方式】
[0022]下面將參照附圖來說明本發(fā)明的實施例。在本發(fā)明的一個附圖或一種實施方式中描述的元素和特征可以與一個或更多個其它附圖或?qū)嵤┓绞街惺境龅脑睾吞卣飨嘟Y(jié)合。應(yīng)當(dāng)注意,為了清楚的目的,附圖和說明中省略了與本發(fā)明無關(guān)的、本領(lǐng)域普通技術(shù)人員已知的部件和處理的表示和描述。
[0023]根據(jù)本發(fā)明實施例的用戶驗證方法用于在用戶要使用軟件產(chǎn)品時對用戶進行驗證,以確定該用戶是否為該軟件產(chǎn)品的授權(quán)用戶,從而確定該用戶是否能夠使用該軟件產(chǎn)品O
[0024]如圖1所示,根據(jù)本發(fā)明實施例的用戶驗證方法利用用戶所輸入的秘密信息來確定當(dāng)前機器碼是否與利用軟件發(fā)行方提供的用戶秘密信息加密的授權(quán)機器碼相匹配(S110、S120)。其中,用于加密授權(quán)機器碼的用戶秘密信息是與嵌入在該軟件產(chǎn)品的程序結(jié)構(gòu)中的水印相對應(yīng)的秘密信息。
[0025]具體地,例如以用戶輸入的秘密信息和所讀取的當(dāng)前機器碼作為預(yù)定加密函數(shù)的輸入,以獲得加密的當(dāng)前機器碼,并且將加密的當(dāng)前機器碼與用同樣方式加密的授權(quán)機器碼(可以是一個或更多個授權(quán)機器碼)進行比較。或者,可以使用用戶輸入的秘密信息對加密的授權(quán)機器碼進行解密,并將當(dāng)前機器碼與解密的授權(quán)機器碼進行比較。其中,加密的授權(quán)機器碼例如可以被保存在軟件頭部分。
[0026]另外,授權(quán)機器碼例如是在用戶購買軟件產(chǎn)品時被確定和加密保存的,或者可以是在授權(quán)用戶安裝或運行軟件時從當(dāng)前機器讀取并加密保存的。
[0027]如圖1所示,在確定當(dāng)前機器碼是授權(quán)機器碼的情況下,允許用戶使用該軟件產(chǎn)品(S130),即允許運行軟件并獲得相應(yīng)的功能輸出。
[0028]另外,在確定當(dāng)前機器碼不是授權(quán)機器碼的情況下,根據(jù)本申請實施例的用戶驗證方法可以進行多種處理。例如,可以要求用戶重新輸入秘密信息,可以記錄或報告未被授權(quán)的當(dāng)前機器碼,或者可以進行其他的驗證過程,例如下面將要描述的基于水印的驗證過程。
[0029]根據(jù)本發(fā)明實施例的用戶驗證方法通過使用與嵌入在軟件產(chǎn)品的程序結(jié)構(gòu)中的水印相對應(yīng)的秘密信息作為授權(quán)機器碼的加密密鑰,并使用用戶輸入的由軟件發(fā)行方提供的用戶秘密信息來進行機器碼的匹配,使得不需要在軟件產(chǎn)品中特別設(shè)置安全存儲區(qū)以保存授權(quán)機器碼的加密密鑰。此外,在需要進行進一步的水印驗證的情況下,由于用戶所輸入的該秘密信息也用于水印驗證,因此不會額外地增加用戶的操作負(fù)擔(dān)。
[0030]接下來,參照圖2說明根據(jù)本發(fā)明實施例的用戶驗證方法的另一處理示例。
[0031]圖2中的步驟S210和S230與參照圖1說明的步驟SllO和S130類似,在此不再贅述。
[0032]當(dāng)S220中確定當(dāng)前機器碼與授權(quán)機器碼不匹配時,有可能是如下情況:用戶輸入的秘密信息正確(即用戶是授權(quán)用戶),但當(dāng)前機器碼未被記錄為授權(quán)機器碼。因此,根據(jù)本實施例的用戶驗證方法進一步進行水印驗證,即確定軟件產(chǎn)品的程序結(jié)構(gòu)中是否存在與用戶所輸入的秘密信息相匹配的水印(S240),從而確認(rèn)用戶是否是授權(quán)用戶。
[0033]在存在與所輸入的秘密信息相匹配的水印的情況下,確定用戶為授權(quán)用戶,并且允許用戶使用該軟件產(chǎn)品(S250),否則不允許所述用戶使用該軟件產(chǎn)品(S260)。
[0034]另外,在水印驗證通過的情況下,根據(jù)本發(fā)明實施例的用戶驗證方法還可以包括將當(dāng)前機器碼添加為授權(quán)機器碼的步驟(S270)。例如,可以通過與已有授權(quán)機器碼的加密方式相同的方式、使用用戶秘密信息對當(dāng)前機器碼進行加密并保存。
[0035]接下來,對根據(jù)本發(fā)明實施例的用戶驗證方法中的水印驗證進行說明。
[0036]作為水印嵌入的程序結(jié)構(gòu)可以包括程序的拓?fù)浣Y(jié)構(gòu),即程序指令的流程組成的結(jié)構(gòu)。此外,可以基于程序塊中的數(shù)據(jù)來構(gòu)造水印。例如,作為嵌入的水印,可以是根據(jù)預(yù)定規(guī)則、由程序塊中的數(shù)據(jù)構(gòu)造的數(shù)據(jù)結(jié)構(gòu),其中數(shù)據(jù)結(jié)構(gòu)例如包括數(shù)組、鏈表、隊列、樹、堆或者圖,但不限于此。相應(yīng)地,在進行水印驗證時,可以通過對程序結(jié)構(gòu)的分析,利用與嵌入水印的方式相對應(yīng)的方式,逐個程序塊地查找水印,直到找到水印或窮盡所有程序塊為止,從而確定是否存在與所輸入的秘密信息相匹配的水印。具體地,可以基于軟件的程序塊中的數(shù)據(jù)、按照與嵌入水印時所使用的預(yù)定規(guī)則相對應(yīng)的規(guī)則構(gòu)造數(shù)據(jù)結(jié)構(gòu),并且在所構(gòu)造的數(shù)據(jù)結(jié)構(gòu)與所輸入的秘密信息具有預(yù)定對應(yīng)關(guān)系的情況下確定存在匹配的水印。
[0037]在程序結(jié)構(gòu)中嵌入的水印可以是通過對原始程序?qū)嵤┗煜鴺?gòu)建的,其中可以采用多種混淆手段,例如,插入支路、增加冗余操作數(shù)以及拆分變量或者拆分循環(huán)等,但不限于此。經(jīng)過混淆的程序結(jié)構(gòu)對于盜版者而言難以讀懂,使得盜版者難以通過篡改程序結(jié)構(gòu)來破壞水印,從而使得所構(gòu)建的水印具有更高的魯棒性。
[0038]另外,可以針對不同的授權(quán)用戶實施不同的混淆以得到每個授權(quán)用戶所特有的水印。在這種情況下,由于授權(quán)用戶與其所獲得的軟件產(chǎn)品中嵌入的水印(相應(yīng)地,與用戶秘密信息)之間具有一一對應(yīng)的關(guān)系,因此更加利于授權(quán)用戶信息的維護以及版權(quán)保護。
[0039]可以根據(jù)預(yù)定方式確定與程序結(jié)構(gòu)中嵌入的水印相對應(yīng)的用戶秘密信息。例如,可以按照預(yù)定規(guī)則由所構(gòu)建的程序結(jié)構(gòu)得到相應(yīng)的值,即水印信息,并且將秘密信息確定為以該水印信息為結(jié)果的預(yù)定數(shù)學(xué)難題的解。在本文中,數(shù)學(xué)難題的“解”是指由于數(shù)學(xué)難題的難解性而較難算出的值,而數(shù)學(xué)難題的“結(jié)果”是指該數(shù)學(xué)難題的給定值或者說目標(biāo)值。例如,在因子分解問題K=p.q中,在給定K的情況下較難求出P和q,因此將因子P和q稱為以K為結(jié)果的因子分解問題的解。在實際應(yīng)用中,可以先確定秘密信息,并相應(yīng)地算出要嵌入的水印信息,然后例如通過實施混淆來構(gòu)造與該水印信息相對應(yīng)的程序結(jié)構(gòu),從而完成水印的嵌入。所應(yīng)用的數(shù)學(xué)難題例如可以包括大數(shù)因子分解問題、離散對數(shù)問題、橢圓曲線離散對數(shù)問題或者冪因子分解問題,但不限于此。相應(yīng)地,在進行水印驗證時,確定程序結(jié)構(gòu)中是否存在與所輸入的秘密信息具有預(yù)定對應(yīng)關(guān)系的結(jié)構(gòu),可以將該預(yù)定對應(yīng)關(guān)系設(shè)置為:按照預(yù)定規(guī)則由數(shù)據(jù)結(jié)構(gòu)得到相應(yīng)的值,秘密信息對應(yīng)于以該值為結(jié)果的預(yù)定數(shù)學(xué)難題的解。在實際應(yīng)用中,可以根據(jù)用戶輸入的秘密信息,通過預(yù)定數(shù)學(xué)難題的逆運算得到數(shù)學(xué)難題的結(jié)果,并在程序中查找與該結(jié)果相對應(yīng)的程序結(jié)構(gòu),當(dāng)找到對應(yīng)的結(jié)構(gòu)時確定驗證通過。在以數(shù)學(xué)難題的解作為秘密信息的情況下,即使在知道了水印信息的情況下也較難算出秘密信息,從而保證了秘密信息的安全性。另一方面,根據(jù)秘密信息較容易算出水印信息,從而保證了水印嵌入以及驗證過程中較小的計算量。
[0040]下面,結(jié)合具體示例說明根據(jù)本發(fā)明實施例的利用數(shù)學(xué)難題和程序結(jié)構(gòu)來構(gòu)造水印的方式。相應(yīng)地,在進行水印驗證時,可以利用相應(yīng)規(guī)則確定程序結(jié)構(gòu)中是否存在與用戶輸入的秘密信息相對應(yīng)的水印。
[0041]參照圖3說明根據(jù)本發(fā)明的一個具體實施例的用大數(shù)素因子分解問題以及程序的圖狀拓?fù)浣Y(jié)構(gòu)來構(gòu)造水印的方式。
[0042]圖3示出了一個程序流程組成的圖狀拓?fù)浣Y(jié)構(gòu)的示例。該拓?fù)浣Y(jié)構(gòu)包含8個結(jié)點,其中箭頭方向表示執(zhí)行流走向。該拓?fù)浣Y(jié)構(gòu)例如可以是通過混淆來構(gòu)建的??梢愿鶕?jù)如下規(guī)則確定與該拓?fù)浣Y(jié)構(gòu)對應(yīng)的水印信息:以圖中各個環(huán)路根據(jù)所包含的邊數(shù)進行排列,將包含邊數(shù)多的環(huán)路的數(shù)量值排在高位,將包含邊數(shù)少的環(huán)路的數(shù)量值排在低位,將該數(shù)值排列得到的值作為與該結(jié)構(gòu)相對應(yīng)的值。在確定環(huán)路數(shù)量時,約定自向環(huán)只計算一遍,且環(huán)路不能包含交叉點(自向環(huán)不是交叉點)。根據(jù)該規(guī)則,圖中包含I條邊的環(huán)路有I個(由結(jié)點4和I條邊組成);包含2條邊的環(huán)路有O個;包含3條邊的環(huán)路有5個,分別是(1,6,2),(1,6,8), (1,3,2), (2,5,4)和(2,7,3);包含 4 條邊的環(huán)路有 2 個,分別是(2,5,4,4,)和(6,2,7,I)(注意,(1,3,2,7,3,2)不可被計算為環(huán)路,因為有交叉點);圖中不包含5個或更多邊的環(huán)路。因此,以環(huán)路包含的邊數(shù)為排列,環(huán)路包含4、3、2、1條邊的環(huán)路的數(shù)量值分別為2、5、0、1。從而,與這個圖狀拓?fù)浣Y(jié)構(gòu)相對應(yīng)的數(shù)值可以被確定為2501。
[0043]利用大數(shù)因子分解問題確定與該值相對應(yīng)的秘密信息。大數(shù)因子分解問題可以被描述為:給定大數(shù)K,K=p.q,其中P和q是兩個大素數(shù),根據(jù)K求解p和q的問題即為大數(shù)素因子分解問題。對于上述數(shù)值,2501=41*61,因此用戶秘密信息S為(41,61)。這里給出的具體素因子分解的示例僅僅是為了說明的目的,實際應(yīng)用中的素因子可以取大素因子,并且構(gòu)建相應(yīng)的程序結(jié)構(gòu)。相應(yīng)地,在進行水印驗證時,可以對程序塊逐個進行分析以確定其拓?fù)浣Y(jié)構(gòu),按照上述規(guī)則基于拓?fù)浣Y(jié)構(gòu)確定相應(yīng)的值,并確定用戶輸入的秘密信息是否對應(yīng)于以該值的因子分解問題的解。在找到匹配的拓?fù)浣Y(jié)構(gòu)時,確定驗證通過。例如,在上面的示例中,當(dāng)用戶輸入的秘密信息為(41,61)時,可以根據(jù)該秘密信息得到因子分解的逆運算,即相乘的結(jié)果為41*61=2501,因此,一旦在程序的拓?fù)浣Y(jié)構(gòu)中找到根據(jù)上述規(guī)則與2501相對應(yīng)的結(jié)構(gòu),則驗證通過。
[0044]接下來,參照圖4說明一個用離散對數(shù)問題以及樹狀數(shù)據(jù)結(jié)構(gòu)來構(gòu)造水印的示例。
[0045]首先,簡單描述離散對數(shù)問題:給定一個素數(shù)P和有線域Zp上的本原元a,對Zp上的整數(shù)b,尋找唯一的整數(shù)c,使得Sti = b (modp)。一般地,如果仔細(xì)選擇P使p_l至少有一個大的素數(shù)因子,則認(rèn)為該問題是難解的??梢?,在約定素數(shù)P以及本原元a的情況下,可將b作為水印信息,而c即為相應(yīng)的秘密信息S。
[0046]圖4給出了一個由12個結(jié)點組成的5層樹狀數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)是一個排序二叉樹,每個結(jié)點的值都小于自己右子樹的值,大于自己左子樹的值。該二叉樹結(jié)構(gòu)可以是通過將程序塊中的數(shù)據(jù)按照被使用的順序依次排入上述二叉樹而得到的。該樹狀結(jié)構(gòu)從上自下分別是第O層、I層、2層、3層和4層。用X.2i來表示每個結(jié)點,其中X是每個結(jié)點的值,i是每個結(jié)點所在的層次,則這個樹狀數(shù)據(jù)結(jié)構(gòu)所代表的值可以被確定為X.21對于樹中的每個結(jié)點的求和。對于該示例數(shù)據(jù)結(jié)構(gòu),該求和值為:
[0047](8+33).24+(2+7+13).23+(1+4+6+11).22+(3+9).2J+5.2° = 949
[0048]S卩,這個樹狀數(shù)據(jù)結(jié)構(gòu)嵌入的水印信息是949。
[0049]結(jié)合離散對數(shù)問題,約定p=2579,a=2,而2765 = 949 (mod2579),S卩,該水印的秘密信息S=765。
[0050]相應(yīng)地,在進行水印驗證時,可以對程序塊逐個匹配,根據(jù)程序塊的數(shù)據(jù)確定排序二叉樹,按照上述規(guī)則基于排序二叉樹確定相應(yīng)的值,并確定用戶輸入的秘密信息是否對應(yīng)于該離散對數(shù)問題的解。在找到匹配的數(shù)據(jù)結(jié)構(gòu)時,確定驗證通過。例如,在上面的示例中,當(dāng)用戶輸入的秘密信息為765時,可以根據(jù)該秘密信息得到離散對數(shù)問題的逆運算的結(jié)果為2765mod2579 = 949,因此,一旦在程序的根據(jù)上述規(guī)則構(gòu)造的數(shù)據(jù)結(jié)構(gòu)中找到根據(jù)上述規(guī)則與949相對應(yīng)的結(jié)構(gòu),則驗證通過。
[0051]這里采用的規(guī)則約定和數(shù)值設(shè)置僅僅是為說明而給出的具體示例,本發(fā)明不限于此。
[0052]此外,根據(jù)本發(fā)明的一個實施例,可以根據(jù)數(shù)據(jù)排序和數(shù)據(jù)類型來構(gòu)造數(shù)據(jù)結(jié)構(gòu)。例如,除了根據(jù)程序塊中的數(shù)據(jù)不論類型地生成的排序二叉樹之外,可以按各個數(shù)據(jù)類型生成相應(yīng)的補充排序二叉樹,并將不論類型生成的排序二叉樹與補充排序二叉樹進行組合來構(gòu)成圖狀數(shù)據(jù)結(jié)構(gòu)。
[0053]參照圖5描述根據(jù)數(shù)據(jù)排序和數(shù)據(jù)類型來構(gòu)造數(shù)據(jù)結(jié)構(gòu)的示例。其中,圖5a所示的是不論類型生成的排序二叉樹,其中包含整數(shù)(int)類型、字符(char)類型、浮點(float)類型以及雙精度(double)類型的數(shù)據(jù)。圖5b中粗線表示的是float類型的補充排序二叉樹,圖5c中粗線表示的是double類型的補充排序二叉樹,圖5d中粗線表示的是char類型的補充排序二叉樹。通過將圖5a所示的排序二叉樹與各個補充排序二叉樹進行組合,得到圖5e所示的最終圖狀數(shù)據(jù)結(jié)構(gòu),作為根據(jù)該程序塊構(gòu)建的數(shù)據(jù)結(jié)構(gòu)。
[0054]將根據(jù)該數(shù)據(jù)結(jié)構(gòu)確定水印信息的方式設(shè)置為:以連接結(jié)點的邊數(shù)為排列,連接邊數(shù)多的排在高位,連接邊數(shù)少的排在低位,將該排列得到的數(shù)值作為水印信息。具體地,在圖5e的結(jié)構(gòu)中,連接4、3、2、1條邊的結(jié)點數(shù)分別為4、7、4、7,因此這個圖狀數(shù)據(jù)結(jié)構(gòu)中嵌入的水印信息為4747。利用大數(shù)因子分解問題,4747=47*101,因此用戶秘密信息為(47,101)。
[0055]這里采用的規(guī)則約定和數(shù)值設(shè)置僅僅是為說明而給出的具體示例,本發(fā)明不限于此。
[0056]相應(yīng)地,在進行水印驗證時,可以對程序塊逐個匹配,根據(jù)程序塊的數(shù)據(jù)排序和數(shù)據(jù)類型確定上述圖狀數(shù)據(jù)結(jié)構(gòu),按照上述規(guī)則基于數(shù)據(jù)結(jié)構(gòu)確定相應(yīng)的值,并確定用戶輸入的秘密信息是否對應(yīng)于該值的因子分解問題的解。在找到匹配的數(shù)據(jù)結(jié)構(gòu)時,確定驗證通過。例如,在上面的示例中,當(dāng)用戶輸入的秘密信息為(47,101)時,可以根據(jù)該秘密信息得到因子分解問題的逆運算的結(jié)果為47*101=4747,因此,一旦在程序的根據(jù)上述規(guī)則構(gòu)造的數(shù)據(jù)結(jié)構(gòu)中找到根據(jù)上述規(guī)則與4747相對應(yīng)的結(jié)構(gòu),則驗證通過。
[0057]下面參照圖6描述用大數(shù)因子分解問題以及二維數(shù)組數(shù)據(jù)結(jié)構(gòu)來構(gòu)造水印的示例。其中,將二維數(shù)組的數(shù)據(jù)結(jié)構(gòu)定義為一個包含程序塊中所有數(shù)據(jù)的最小二維方陣,且該方陣中的空白處由O補齊。例如,一個程序塊中按序用到14個數(shù)據(jù)(45,21,3,4,12,8,8, 23,11,0, 2,37,9,17),那么包含這14個數(shù)據(jù)的最小二維方陣是4*4的方陣,多余的兩個位置補0,于是可以得到與之相對應(yīng)的二維數(shù)組數(shù)據(jù)結(jié)構(gòu)如圖6所示。
[0058]將根據(jù)該數(shù)據(jù)結(jié)構(gòu)確定水印信息的方式設(shè)置為:取該二維數(shù)據(jù)結(jié)構(gòu)對角線元素以及反對角線元素的排列所得到的數(shù)。在圖6的矩陣中,對角線元素和反對絞線元素的排列為(45,8,2,O, 4,8,O, 9),因此得到的值為 458204809。而 458204809=28109*16301,用戶秘密信息即為(28109,16301)。相應(yīng)地,在進行水印驗證時,可以對程序塊逐個匹配,根據(jù)程序塊的數(shù)據(jù)排序確定上述二維方陣,按照上述規(guī)則基于而為方陣確定相應(yīng)的值,并確定用戶輸入的秘密信息是否對應(yīng)于該值的因子分解問題的解。在找到匹配的數(shù)據(jù)結(jié)構(gòu)時,確定驗證通過。例如,在上面的不例中,當(dāng)用戶輸入的秘密信息為(28109,16301)時,可以根據(jù)該秘密信息得到因子分解問題的逆運算的結(jié)果為28109*16301=458204809,因此,一旦在程序的根據(jù)上述規(guī)則構(gòu)造的數(shù)據(jù)結(jié)構(gòu)中找到根據(jù)上述規(guī)則與458204809相對應(yīng)的結(jié)構(gòu),則驗證通過。
[0059]上述各個示例中描述的構(gòu)建數(shù)據(jù)結(jié)構(gòu)的方式、由程序結(jié)構(gòu)確定相應(yīng)的值(水印信息)的方式以及利用數(shù)學(xué)難題確定與水印信息相對應(yīng)的秘密信息的方式可以進行適當(dāng)變型的組合。特別地,雖然上述示例中分別描述了基于程序的拓?fù)浣Y(jié)構(gòu)和根據(jù)數(shù)據(jù)構(gòu)建的數(shù)據(jù)結(jié)構(gòu)來嵌入水印的示例,但是也可以利用拓?fù)浣Y(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)的組合來構(gòu)建水印。然而,本發(fā)明并不限于上面所舉的程序結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和數(shù)學(xué)難題。在進行水印驗證時,按照與嵌入水印的方式相應(yīng)的方式,例如通過對軟件的程序塊逐個進行分析確定程序塊的拓?fù)浣Y(jié)構(gòu),或者利用上述規(guī)則基于程序塊的數(shù)據(jù)構(gòu)造數(shù)據(jù)結(jié)構(gòu),并按照預(yù)定方式確定與程序塊的結(jié)構(gòu)相對應(yīng)的數(shù)值,當(dāng)找到某個程序塊與用戶輸入的秘密信息相匹配(例如用戶輸入的秘密信息對應(yīng)于以該程序塊的預(yù)定對應(yīng)數(shù)值作為輸入的數(shù)學(xué)難題的解)時,確定水印驗證通過。
[0060]接下來,參照圖7和圖8說明根據(jù)本發(fā)明實施例的用戶驗證裝置的配置示例。
[0061]如圖7所示,根據(jù)本發(fā)明實施例的用戶驗證裝置700包括機器碼匹配部分710和驗證確定部分720。
[0062]機器碼匹配部分710被配置為利用用戶所輸入的秘密信息,確定當(dāng)前機器碼是否與利用軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息加密的授權(quán)機器碼相匹配。其中,用戶秘密信息是與嵌入在軟件產(chǎn)品的程序結(jié)構(gòu)中的水印相對應(yīng)的秘密信息。
[0063]例如,機器碼匹配部分710可以包括加密部分和比較部分(圖中未示出),其中,力口密部分可以被配置為以用戶輸入的秘密信息和所讀取的當(dāng)前機器碼作為預(yù)定加密函數(shù)的輸入,以獲得加密的當(dāng)前機器碼,比較部分可以被配置為將加密的當(dāng)前機器碼與預(yù)先已加密的一個或更多個授權(quán)機器碼進行比較。
[0064]或者,機器碼匹配部分710可以包括解密部分和比較部分(圖中未示出),其中,解密部分可以被配置為使用用戶輸入的秘密信息對加密的授權(quán)機器碼進行解密,而比較部分被配置為將當(dāng)前機器碼與解密的授權(quán)機器碼進行比較。
[0065]驗證確定部分720被配置為在當(dāng)前機器碼是授權(quán)機器碼的情況下,允許用戶使用軟件產(chǎn)品,例如允許運行軟件并獲得相應(yīng)的功能輸出。
[0066]另外,根據(jù)本發(fā)明實施例的用戶驗證裝置還可以包括其他部件,以在確定當(dāng)前機器碼不是授權(quán)機器碼的情況下進行相應(yīng)的處理。例如,可以包括用于要求用戶重新輸入秘密信息的部件、用于保存或報告未授權(quán)機器碼的部件、或者用于進行其他驗證過程的部件。
[0067]如圖8所示,根據(jù)本發(fā)明另一個實施例的用戶驗證裝置800包括機器碼匹配部分810、驗證確定部分820、水印匹配部分830。
[0068]機器碼匹配部分810和驗證確定部分820與上面描述的機器碼匹配部分710和驗證確定部分720的配置類似,在此不再贅述。
[0069]水印匹配部分830被配置為在當(dāng)前機器碼不是授權(quán)機器碼的情況下,確定軟件產(chǎn)品的程序結(jié)構(gòu)中是否存在與所輸入的秘密信息相匹配的水印。
[0070]另外,驗證確定部分820還被配置為:在水印匹配部分830確定存在與所輸入的秘密信息相匹配的水印的情況下,允許用戶使用該軟件產(chǎn)品,否則不允許用戶使用該軟件產(chǎn)品O
[0071]具體地,水印匹配部分830可以被配置為在軟件產(chǎn)品的程序結(jié)構(gòu)中搜索所嵌入的水印以查找是否存在與用戶輸入的秘密信息相匹配的水印。其中,用于嵌入水印的程序結(jié)構(gòu)可以包括程序的拓?fù)浣Y(jié)構(gòu)和基于程序塊中的數(shù)據(jù)構(gòu)造的數(shù)據(jù)結(jié)構(gòu)。例如,水印可以被嵌入在根據(jù)預(yù)定規(guī)則、由程序塊中的數(shù)據(jù)構(gòu)造的數(shù)據(jù)結(jié)構(gòu)中,其中數(shù)據(jù)結(jié)構(gòu)例如包括數(shù)組、鏈表、隊列、樹、堆或者圖,但不限于此。在程序結(jié)構(gòu)中嵌入的水印可以是通過對原始程序?qū)嵤┗煜鴺?gòu)建的,其中可以采用多種混淆手段,例如,插入支路、增加冗余操作數(shù)以及拆分變量或者拆分循環(huán)等,但不限于此。相應(yīng)地,根據(jù)本發(fā)明的一個實施例,水印匹配部分830被配置為基于程序塊中的數(shù)據(jù)、按照預(yù)定規(guī)則構(gòu)造數(shù)據(jù)結(jié)構(gòu)并且在所構(gòu)造的數(shù)據(jù)結(jié)構(gòu)與用戶輸入的秘密信息具有預(yù)定對應(yīng)關(guān)系的情況下,確定存在匹配的水印。此外,水印匹配部分830可以逐個程序塊地查找水印,直到找到匹配的水印或查遍所有程序塊為止。
[0072]與所嵌入的水印相對應(yīng)的秘密信息是根據(jù)預(yù)定方式確定的。例如,可以以水印信息作為預(yù)定數(shù)學(xué)難題的輸入,并將該數(shù)學(xué)難題的解作為用戶秘密信息。所應(yīng)用的數(shù)學(xué)難題例如可以包括大數(shù)因子分解問題、離散對數(shù)問題、橢圓曲線離散對數(shù)問題或者冪因子分解問題,但不限于此。相應(yīng)地,根據(jù)本發(fā)明的一個實施例,水印匹配部分830可以被配置為根據(jù)由程序塊的數(shù)據(jù)構(gòu)造的數(shù)據(jù)結(jié)構(gòu)與用戶輸入的秘密信息之間是否滿足預(yù)定對應(yīng)關(guān)系來進行水印匹配,其中該預(yù)定對應(yīng)關(guān)系可以為:按照預(yù)定規(guī)則由數(shù)據(jù)結(jié)構(gòu)得到相應(yīng)的值,秘密信息是以該值為結(jié)果的預(yù)定數(shù)學(xué)難題的解。
[0073]具體的水印可以是通過與前面結(jié)合圖3至圖6描述的方式類似的方式構(gòu)造的,但不限于此。相應(yīng)地,根據(jù)本發(fā)明實施例的水印匹配部分可以采用相應(yīng)方式查找匹配的水印,在此不再贅述。
[0074]可選地,根據(jù)本發(fā)明實施例的用戶驗證裝置800還可以包括授權(quán)機器碼添加裝置840,被配置為在水印匹配部分810確定存在與所輸入的秘密信息相匹配的水印的情況下,將當(dāng)前機器碼添加為授權(quán)機器碼。
[0075]例如,授權(quán)機器碼添加裝置840可以通過與已有授權(quán)機器碼的加密方式相同的方式、使用用戶秘密信息對當(dāng)前機器碼進行加密并保存。
[0076]根據(jù)本發(fā)明實施例的用戶驗證裝置通過使用與嵌入在軟件產(chǎn)品的程序結(jié)構(gòu)中的水印相對應(yīng)的秘密信息作為授權(quán)機器碼的加密密鑰,并使用用戶輸入的由軟件發(fā)行方提供的用戶秘密信息來進行機器碼的匹配,使得不需要軟件產(chǎn)品中特別設(shè)置有安全存儲區(qū)以保存授權(quán)機器碼的加密密鑰。此外,在需要進行進一步的水印驗證的情況下,由于用戶所輸入的該秘密信息也可以用于水印驗證,因此不會額外地增加用戶的操作負(fù)擔(dān)。
[0077]接下來,參照圖9和圖10說明根據(jù)本發(fā)明另一實施例的基于水印的盜版追蹤方法和裝置。盜版追蹤的目的是,在發(fā)現(xiàn)了盜版軟件的情況下,確定非法復(fù)制和傳播軟件拷貝的源頭,例如提供軟件產(chǎn)品以用于制作盜版軟件的授權(quán)用戶。
[0078]如圖9所示,首先,通過對盜版軟件產(chǎn)品的程序結(jié)構(gòu)的分析來查找與正版軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息相匹配的水印(S910)。根據(jù)本發(fā)明的一個實施例,該用戶秘密信息是用于對正版軟件產(chǎn)品的授權(quán)機器碼進行加密的秘鑰信息。
[0079]具體地,可以針對提供給每個授權(quán)用戶的用戶秘密信息,在盜版軟件的程序結(jié)構(gòu)中查找與該授權(quán)用戶的用戶秘密信息相匹配的水印。
[0080]其中,用于嵌入水印的程序結(jié)構(gòu)可以包括程序的拓?fù)浣Y(jié)構(gòu)和基于程序塊中的數(shù)據(jù)構(gòu)造的數(shù)據(jù)結(jié)構(gòu)。例如,水印可以被嵌入在根據(jù)預(yù)定規(guī)則、由程序塊中的數(shù)據(jù)構(gòu)造的數(shù)據(jù)結(jié)構(gòu)中,其中數(shù)據(jù)結(jié)構(gòu)例如包括數(shù)組、鏈表、隊列、樹、堆或者圖,但不限于此。在程序結(jié)構(gòu)中嵌入的水印可以是通過對原始程序?qū)嵤┗煜鴺?gòu)建的,其中可以采用多種混淆手段,例如,插入支路、增加冗余操作數(shù)以及拆分變量或者拆分循環(huán)等,但不限于此。與所嵌入的水印相對應(yīng)的用戶秘密信息是根據(jù)預(yù)定方式確定的。例如,可以以水印信息作為預(yù)定數(shù)學(xué)難題的輸入,并將該數(shù)學(xué)難題的解作為用戶秘密信息。所應(yīng)用的數(shù)學(xué)難題例如可以包括大數(shù)因子分解問題、離散對數(shù)問題、橢圓曲線離散對數(shù)問題或者冪因子分解問題,但不限于此。具體的水印可以是通過與前面結(jié)合圖3至圖6描述的方式類似的方式構(gòu)造的。相應(yīng)地,在根據(jù)本發(fā)明一個實施例的盜版追蹤方法中,查找水印的步驟包括:基于盜版軟件的程序塊中的數(shù)據(jù)、按照預(yù)定規(guī)則構(gòu)造數(shù)據(jù)結(jié)構(gòu),以及在所構(gòu)造的數(shù)據(jù)結(jié)構(gòu)與用戶秘密信息具有預(yù)定對應(yīng)關(guān)系的情況下,確定找到水印。其中,逐個程序塊地查找水印,直到找到水印或窮盡所有程序塊為止。另外,可以將上述預(yù)定對應(yīng)關(guān)系設(shè)置為:按照預(yù)定規(guī)則由數(shù)據(jù)結(jié)構(gòu)得到相應(yīng)的值,用戶秘密信息對應(yīng)于以該值為結(jié)果的預(yù)定數(shù)學(xué)難題的解。
[0081]上述水印的魯棒性使得水印不易被盜版者破壞,從而保證了能夠成功地進行盜版追蹤。
[0082]在找到與用戶秘密信息相匹配的水印的情況下,根據(jù)用戶秘密信息與授權(quán)用戶的對應(yīng)關(guān)系,可以確定盜版者(S920),即確定作為非法復(fù)制和傳播軟件拷貝的源頭的授權(quán)用戶。
[0083]如圖10所示,根據(jù)本發(fā)明實施例的盜版追蹤裝置1000包括水印查找部分1010和盜版者確定部分1020。
[0084]水印查找部分1010被配置為通過對盜版軟件產(chǎn)品的程序結(jié)構(gòu)的分析來查找與正版軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息相匹配的水印。根據(jù)一個實施例,用戶秘密信息是用于對正版軟件產(chǎn)品的授權(quán)機器碼進行加密的秘鑰信息。
[0085]具體地,水印查找部分可以從存儲了提供給授權(quán)用戶的用戶秘密信息的庫(圖中未示出)中逐一提取用戶秘密信息,并且在盜版軟件的程序結(jié)構(gòu)中查找能夠與該用戶秘密信息相匹配的水印。其中,水印可以根據(jù)如上所述的方式嵌入在程序的拓?fù)浣Y(jié)構(gòu)和/或數(shù)據(jù)結(jié)構(gòu)中。相應(yīng)地,根據(jù)一個實施例,水印查找部分被配置為:基于盜版軟件的程序塊中的數(shù)據(jù)、按照預(yù)定規(guī)則構(gòu)造數(shù)據(jù)結(jié)構(gòu),并且在所構(gòu)造的數(shù)據(jù)結(jié)構(gòu)與用戶秘密信息具有預(yù)定對應(yīng)關(guān)系的情況下,確定存在與該用戶秘密信息匹配的水印,并且水印查找部分被配置為逐個程序塊地查找水印,直到找到水印或窮盡所有程序塊為止。另外,可以將上述預(yù)定對應(yīng)關(guān)系設(shè)置為:按照預(yù)定規(guī)則由數(shù)據(jù)結(jié)構(gòu)得到相應(yīng)的值,用戶秘密信息對應(yīng)于以該值為結(jié)果的預(yù)定數(shù)學(xué)難題的解。
[0086]盜版者確定部分1020被配置為在水印查找部分1010找到與用戶秘密信息相匹配的水印的情況下,根據(jù)該用戶秘密信息確定盜版者。
[0087]作為一個示例,上述方法的各個步驟以及上述裝置的各個組成模塊和/或單元可以實施為軟件、固件、硬件或其組合。在通過軟件或固件實現(xiàn)的情況下,可以從存儲介質(zhì)或網(wǎng)絡(luò)向具有專用硬件結(jié)構(gòu)的計算機(例如圖11所示的通用計算機1100)安裝構(gòu)成用于實施上述方法的軟件的程序,該計算機在安裝有各種程序時,能夠執(zhí)行各種功能等。
[0088]在圖11中,運算處理單元(即CPU)1101根據(jù)只讀存儲器(R0M)1102中存儲的程序或從存儲部分1108加載到隨機存取存儲器(RAM) 1103的程序執(zhí)行各種處理。在RAM1103中,也根據(jù)需要存儲當(dāng)CPU1101執(zhí)行各種處理等等時所需的數(shù)據(jù)。CPU1101、ROMl 102和RAM1103經(jīng)由總線1104彼此鏈路。輸入/輸出接口 1105也鏈路到總線1104。
[0089]下述部件鏈路到輸入/輸出接口 1105:輸入部分1106 (包括鍵盤、鼠標(biāo)等等)、輸出部分1107 (包括顯示器,比如陰極射線管(CRT)、液晶顯示器(IXD)等,和揚聲器等)、存儲部分1108 (包括硬盤等)、通信部分1109 (包括網(wǎng)絡(luò)接口卡比如LAN卡、調(diào)制解調(diào)器等)。通信部分1109經(jīng)由網(wǎng)絡(luò)比如因特網(wǎng)執(zhí)行通信處理。根據(jù)需要,驅(qū)動器1110也可鏈路到輸入/輸出接口 1105。可拆卸介質(zhì)1111比如磁盤、光盤、磁光盤、半導(dǎo)體存儲器等等根據(jù)需要被安裝在驅(qū)動器1110上,使得從中讀出的計算機程序根據(jù)需要被安裝到存儲部分1108中。
[0090]在通過軟件實現(xiàn)上述系列處理的情況下,從網(wǎng)絡(luò)比如因特網(wǎng)或存儲介質(zhì)比如可拆卸介質(zhì)1111安裝構(gòu)成軟件的程序。
[0091]本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這種存儲介質(zhì)不局限于圖11所示的其中存儲有程序、與設(shè)備相分離地分發(fā)以向用戶提供程序的可拆卸介質(zhì)1111??刹鹦督橘|(zhì)1111的例子包含磁盤(包含軟盤(注冊商標(biāo)))、光盤(包含光盤只讀存儲器(⑶-ROM)和數(shù)字通用盤(DVD))、磁光盤(包含迷你盤(MD)(注冊商標(biāo)))和半導(dǎo)體存儲器?;蛘?,存儲介質(zhì)可以是R0M1102、存儲部分1108中包含的硬盤等等,其中存有程序,并且與包含它們的設(shè)備一起被分發(fā)給用戶。
[0092]本發(fā)明還提出一種存儲有機器可讀取的指令代碼的程序產(chǎn)品。所述指令代碼由機器讀取并執(zhí)行時,可執(zhí)行上述根據(jù)本發(fā)明實施例的方法。
[0093]相應(yīng)地,用于承載上述存儲有機器可讀取的指令代碼的程序產(chǎn)品的存儲介質(zhì)也包括在本發(fā)明的公開中。所述存儲介質(zhì)包括但不限于軟盤、光盤、磁光盤、存儲卡、存儲棒等坐寸ο
[0094]在上面對本發(fā)明具體實施例的描述中,針對一種實施方式描述和/或示出的特征可以用相同或類似的方式在一個或更多個其它實施方式中使用,與其它實施方式中的特征相組合,或替代其它實施方式中的特征。
[0095]應(yīng)該強調(diào),術(shù)語“包括/包含”在本文使用時指特征、要素、步驟或組件的存在,但并不排除一個或更多個其它特征、要素、步驟或組件的存在或附加。
[0096]在上述實施例和示例中,采用了數(shù)字組成的附圖標(biāo)記來表示各個步驟和/或單元。本領(lǐng)域的普通技術(shù)人員應(yīng)理解,這些附圖標(biāo)記只是為了便于敘述和繪圖,而并非表示其順序或任何其他限定。
[0097]此外,本發(fā)明的方法不限于按照說明書中描述的時間順序來執(zhí)行,也可以按照其他的時間順序地、并行地或獨立地執(zhí)行。因此,本說明書中描述的方法的執(zhí)行順序不對本發(fā)明的技術(shù)范圍構(gòu)成限制。
[0098]盡管上面已經(jīng)通過對本發(fā)明的具體實施例的描述對本發(fā)明進行了披露,但是,應(yīng)該理解,上述的所有實施例和示例均是示例性的,而非限制性的。本領(lǐng)域的技術(shù)人員可在所附權(quán)利要求的精神和范圍內(nèi)設(shè)計對本發(fā)明的各種修改、改進或者等同物。這些修改、改進或者等同物也應(yīng)當(dāng)被認(rèn)為包括在本發(fā)明的保護范圍內(nèi)。
【權(quán)利要求】
1.一種用戶驗證方法,包括: 利用用戶所輸入的秘密信息,確定當(dāng)前機器碼是否與利用軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息加密的授權(quán)機器碼相匹配;以及 在當(dāng)前機器碼是授權(quán)機器碼的情況下,允許所述用戶使用所述軟件產(chǎn)品, 其中,所述用戶秘密信息是與嵌入在所述軟件產(chǎn)品的程序結(jié)構(gòu)中的水印相對應(yīng)的秘密信息。
2.根據(jù)權(quán)利要求1所述的方法,還包括: 在當(dāng)前機器碼不是授權(quán)機器碼的情況下,確定所述軟件產(chǎn)品的程序結(jié)構(gòu)中是否存在與所輸入的秘密信息相匹配的水??;以及 在存在與所輸入的秘密信息相匹配的水印的情況下,允許所述用戶使用所述軟件產(chǎn)品,否則不允許所述用戶使用所述軟件產(chǎn)品。
3.根據(jù)權(quán)利要求2所述的方法,其中,在存在與所輸入的秘密信息相匹配的水印的情況下,將所述當(dāng)前機器碼添加為授權(quán)機器碼。
4.根據(jù)權(quán)利要求2所述的方法,其中,確定是否存在所述水印的步驟包括: 基于程序塊中的數(shù)據(jù)、 按照預(yù)定規(guī)則構(gòu)造數(shù)據(jù)結(jié)構(gòu);以及 在所構(gòu)造的數(shù)據(jù)結(jié)構(gòu)與所述秘密信息具有預(yù)定對應(yīng)關(guān)系的情況下,確定存在所述水印, 其中,逐個程序塊地查找所述水印,直到找到所述水印或窮盡所有程序塊為止。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述數(shù)據(jù)結(jié)構(gòu)包括數(shù)組、鏈表、隊列、樹、堆或者圖。
6.根據(jù)權(quán)利要求4所述的方法,其中,所述預(yù)定對應(yīng)關(guān)系為:按照預(yù)定規(guī)則由所述數(shù)據(jù)結(jié)構(gòu)得到相應(yīng)的值,所述秘密信息對應(yīng)于以所述值為結(jié)果的預(yù)定數(shù)學(xué)難題的解。
7.根據(jù)權(quán)利要求6所述的方法,其中,所述數(shù)學(xué)難題包括大數(shù)因子分解問題、離散對數(shù)問題、橢圓曲線離散對數(shù)問題或者冪因子分解問題。
8.根據(jù)權(quán)利要求1至3中任一項所述的方法,其中,用所述用戶秘密信息加密的授權(quán)機器碼被保存在所述軟件產(chǎn)品的軟件頭中。
9.一種用戶驗證裝置,包括: 機器碼匹配部分,被配置為利用用戶所輸入的秘密信息,確定當(dāng)前機器碼是否與利用軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息加密的授權(quán)機器碼相匹配;以及 驗證確定部分,被配置為在當(dāng)前機器碼是授權(quán)機器碼的情況下,允許所述用戶使用所述軟件產(chǎn)品, 其中,所述用戶秘密信息是與嵌入在所述軟件產(chǎn)品的程序結(jié)構(gòu)中的水印相對應(yīng)的秘密信息。
10.根據(jù)權(quán)利要求9所述的裝置,還包括: 水印匹配部分,被配置為:在所述當(dāng)前機器碼不是授權(quán)機器碼的情況下,確定所述軟件產(chǎn)品的程序結(jié)構(gòu)中是否存在與所輸入的秘密信息相匹配的水印,并且 所述驗證確定部分被配置為:在存在與所輸入的秘密信息相匹配的水印的情況下,允許所述用戶使用所述軟件產(chǎn)品,否則不允許所述用戶使用所述軟件產(chǎn)品。
11.根據(jù)權(quán)利要求10所述的裝置,還包括:授權(quán)機器碼添加部分,被配置為:在所述水印匹配部分確定存在與所輸入的秘密信息相匹配的水印的情況下,將所述當(dāng)前機器碼添加為授權(quán)機器碼。
12.根據(jù)權(quán)利要求10所述的裝置,其中, 所述水印匹配部分被配置為:基于程序塊中的數(shù)據(jù)、按照預(yù)定規(guī)則構(gòu)造數(shù)據(jù)結(jié)構(gòu),并且在所構(gòu)造的數(shù)據(jù)結(jié)構(gòu)與所述秘密信息具有預(yù)定對應(yīng)關(guān)系的情況下,確定存在所述水印, 其中,所述水印匹配部分逐個程序塊地查找所述水印,直到找到所述水印或窮盡所有程序塊為止。
13.一種基于水印的盜版追蹤方法,包括: 通過對盜版軟件產(chǎn)品的程序結(jié)構(gòu)的分析來查找與正版軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息相匹配的水?。灰约? 在找到與所述用戶秘密信息相匹配的水印的情況下,根據(jù)該用戶秘密信息確定盜版者。
14.根據(jù)權(quán)利要求13所述的方法,其中,所述用戶秘密信息是用于對所述正版軟件產(chǎn)品的授權(quán)機器碼進行加密的秘鑰信息。
15.根據(jù)權(quán)利要求13或14所述的方法,其中,查找所述水印的步驟包括: 基于所述盜版軟件的程序塊中的數(shù)據(jù)、按照預(yù)定規(guī)則構(gòu)造數(shù)據(jù)結(jié)構(gòu);以及 在所構(gòu)造的數(shù)據(jù)結(jié)構(gòu)與所述用戶秘密信息具有預(yù)定對應(yīng)關(guān)系的情況下,確定存在所述水印, 其中,逐個程序塊地查找所述水印,直到找到所述水印或窮盡所有程序塊為止。
16.根據(jù)權(quán)利要求15所述的方法,其中,所述數(shù)據(jù)結(jié)構(gòu)包括數(shù)組、鏈表、隊列、樹、堆或者圖。
17.根據(jù)權(quán)利要求15所述的方法,其中,所述預(yù)定對應(yīng)關(guān)系為:按照預(yù)定規(guī)則由所述數(shù)據(jù)結(jié)構(gòu)得到相應(yīng)的值,所述用戶秘密信息對應(yīng)于以所述值為結(jié)果的預(yù)定數(shù)學(xué)難題的解。
18.根據(jù)權(quán)利要求17所述的方法,其中,所述數(shù)學(xué)難題包括大數(shù)因子分解問題、離散對數(shù)問題、橢圓曲線離散對數(shù)問題或者冪因子分解問題。
19.一種用于基于水印進行盜版追蹤的裝置,包括: 水印查找部分,被配置為通過對盜版軟件產(chǎn)品的程序結(jié)構(gòu)的分析來查找與正版軟件產(chǎn)品的發(fā)行方提供的用戶秘密信息相匹配的水??;以及 盜版者確定部分,被配置為:在所述水印查找部分找到與所述用戶秘密信息相匹配的水印的情況下,根據(jù)該用戶秘密信息確定盜版者。
20.根據(jù)權(quán)利要求19所述的裝置,其中,所述用戶秘密信息是用于對所述正版軟件產(chǎn)品的授權(quán)機器碼進行加密的秘鑰信息。
21.根據(jù)權(quán)利要求19或20所述的裝置,其中, 所述水印查找部分被配置為:基于所述盜版軟件的程序塊中的數(shù)據(jù)、按照預(yù)定規(guī)則構(gòu)造數(shù)據(jù)結(jié)構(gòu),并且在所構(gòu)造的數(shù)據(jù)結(jié)構(gòu)與所述用戶秘密信息具有預(yù)定對應(yīng)關(guān)系的情況下,確定存在所述水印,并且 所述水印查找部分被配置為逐個程序塊地查找所述水印,直到找到所述水印或窮盡所有程序塊為止。
【文檔編號】G06F21/31GK104050399SQ201310081014
【公開日】2014年9月17日 申請日期:2013年3月14日 優(yōu)先權(quán)日:2013年3月14日
【發(fā)明者】劉芬 申請人:索尼公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1