两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

保護信息及私人權利的方法和設備的制作方法

文檔序號:6475309閱讀:267來源:國知局
專利名稱:保護信息及私人權利的方法和設備的制作方法
背景技術
軟件盜版或信息盜用是在未取得軟件或信息的發(fā)明者或合法擁有者的授權情況下對軟件或信息的復制及使用活動。盜版現象在計算機軟件應用行業(yè)中十分普遍,人們經常對應用軟件進行未經許可的非法復制。軟件可在熟人圈中復制,或者為了再生產和商業(yè)利益而復制。其他的盜版活動包括諸如復制音樂錄音、電子版本的可讀文件或電子書籍這樣的行為。在所有的盜版情況中,每年給合法生意造成的利益損失數以十億美元計。
軟件和信息技術行業(yè)已經使用鎖碼方式來對付盜版造成的威脅。鎖碼方法中包括軟件鎖碼機理、許可證以及專用的硬件裝置,這些可防止對軟件、信息或整個電子裝置的非授權使用。這些方法目的在于防止對手能夠自由地復制軟件。
軟件鎖碼的方式有多種類型。舉例而言,生產者可使用專門與某一拷貝件相關的密碼鑰匙對軟件程序拷貝件的部分進行加密。購買該軟件的用戶會獲得相應的解碼鑰匙,這一鑰匙可允許對這一軟件進行解密和使用。保護軟件的另一種方式是隨購買的軟件拷貝一起提供一份“授權證書”。該授權證書含有專門用于這一拷貝件的一組數碼。在安裝軟件的拷貝件時,需要使用這一數碼,用戶必須正確地輸入這一數碼。如果輸入的數碼與要裝程序所需的相一致,則該軟件的拷貝件被認為是合法的,該軟件拷貝件可以合法地進行安裝和運行。如果輸入的數碼不正確,則軟件不能進行正確的安裝。然而,上述方法中沒有一種可以完全保護軟件不受非法的復制和使用。對于使用加密的方法而言,如果最初的購買者有意非法散布復制軟件的話,該購買者只需將軟件與解密鑰匙一起輸出即可。同樣的是,軟件的最初購買者通過將軟件連同授權證書一起交于其他用戶可以繞過授權證書所提供的保護作用。
防止盜版的方法經常利用到用戶裝置操作系統中的某些特性。因此,保護操作系統不被修改非常重要,對操作系統的修改會繞過保護作用。通過硬件方式可以確保操作系統不能加以修改。美國3,996,449號專利給出了一個保持操作系統完整性的硬件保護方式實例,該專利介紹了一種判定當一個程序或程序的某一部分在計算機上運行時是否是不可修改的方法。在該系統中,一個隨機函數隨同專用防破壞硬件檢驗裝置中的該程序文本一起用于用戶的標識碼或鑰匙。檢驗裝置將隨機函數所產生的值與校驗值進行比較以驗證該程序文本是否是正確的。如果該文本是正確的,則允許該程序在這一裝置上運行。
使用硬件來防止盜版的方式必然會使裝置與處理器發(fā)生聯系,這一聯系通常是通過用戶裝置的通訊端口實現的。這些類型的硬件裝置經常被稱為“軟件鎖”。保護方法可通過多種方式來使用軟件鎖。舉例而言,軟件可帶有與軟件相關的專用軟件鎖,該軟件鎖中儲存有專門對應于這一軟件的信息或數碼。軟件將定期地通過索取這一信息或數碼來校驗通訊端口是否存在軟件鎖。一個軟件鎖隨一套軟件一同售出。由于假定軟件鎖不能被復制,所以可運行的軟件數量與售出的軟件鎖數量相同。在軟件鎖防止軟件盜版的其他應用中,軟件鎖是一個附屬處理器,該軟件鎖執(zhí)行該用戶不可訪問的某些應用程序。再者,沒有與用戶裝置相連的軟件鎖,該程序就不可能被執(zhí)行。但通過軟件鎖進行的保護有諸多嚴重的缺陷。第一,對于每個受保護的程序用戶都需要一個軟件鎖,并且需要在轉換程序時連接及更換軟件鎖。第二,只有當軟件鎖是抗破壞以及破壞者接觸不到軟件鎖內部的算法和數據時,軟件鎖才是有效的。在以往的許多情況中,狡猾的蓄意盜版者侵犯了這些規(guī)定。第三,在許多情況下,通過軟件鎖防盜版的軟件被做了手腳,從而除去了對軟件鎖的查詢并由此繞過了保護功能。最后,在未來的年代中,軟件更多的是通過互聯網下載到用戶那里,但與軟件相伴的物理裝置,如軟件鎖是不可能被下載的,因此軟件鎖成為了軟件銷售的一個負擔。
另一種與硬件相關的方法是給執(zhí)行軟件的每個處理器賦予一個專用的標識。為某一用戶裝置所購買的軟件包括該裝置處理器的標識。當用戶的裝置執(zhí)行這一軟件時,軟件中所含的標識會與裝置處理器中的標識進行比較。只有當這二個標識一致時,操作才可以執(zhí)行。這種方法有諸多不便之處。盜版者或其非法的用戶可用安裝軟件的處理器標識來替換原始的標識,這樣可以對合法的軟件進行改變,而在軟件的基礎版本中,卻沒有防止盜版者這樣做的功能。此外,這種方法不可避免地將軟件的拷貝件與用戶的某一單一裝置連接起來。這就使軟件不可能改裝到用戶的另一裝置上;例如,當用戶對其計算機升級時,這種方法使用戶不能將軟件從原來的機器上挪到新機器上。最后,對用戶的裝置使用專一的處理器標識還招致了對用戶私人權利受到侵害的嚴重擔憂,因為用戶所購軟件使用同一數碼進行識別,而對所購軟件的監(jiān)控有可能侵害用戶的私人權利。
數字波紋標記是一種將不可見或不可聽的識別數據放入某些類型存儲信息中的一種技術,這些存儲信息可從根本上對存儲信息售予的用戶進行識別。如果在別處發(fā)現相同的存儲信息,則最初的購買者涉嫌參與盜版活動。
在理想情況下,波紋標記是持久不變的,如果不對存儲信息進行降級,波紋標記是不能被移動或更改的。雖然這些技術有助于發(fā)現盜竊行為,但這些技術并不能防止存儲信息被復制;所以這些方法需要合法的干涉以防止版權受到不斷地侵犯。此外,對這樣的系統也有許多攻擊存在。
發(fā)明概述在本發(fā)明中提供了某種將第一軟件模塊與第二軟件模塊連接起來的方法。在第一軟件模塊中儲存有一個公用鑰匙。擁有者使用數字標注的公用鑰匙的存根部分,這一存根部分與第二軟件模塊相連。第二軟件模塊計算出一個隨機函數值,一旦使用所述的公用鑰匙確認了存根部分上的數字特征以及確認計算出的隨機函數值后,則第一軟件模塊與第二軟件模塊相連在一起。
第二軟件模塊是多個被連接軟件模塊中的一個,第一軟件模塊含有多個預先連接的軟件模塊。隨機函數值的計算和校驗可由一個專用的處理器執(zhí)行。
此外,通過將第一隨機函數值儲存在第一軟件模塊中,并計算出第二軟件模塊某部分內容的第二隨機函數值,一旦確認第二隨機函數值與第一隨機函數值相等,則將第一軟件模塊與第二軟件模塊連接起來。第二軟件模塊是多個被連接的軟件模塊之一。第一軟件模塊含有多個預先連接的軟件模塊。隨機函數值的計算及校驗可由專用的處理器執(zhí)行。
在某一實施方案中,用戶的裝置含有第一存儲模塊和第二存儲模塊,軟件模塊儲存在這二個存儲模塊之中。檢驗軟件儲存在第一存儲模塊中。檢驗軟件通過計算軟件模塊某一部分的隨機函數值,并將計算所得的隨機函數值與存儲在檢驗軟件中的隨機函數值進行比較來檢驗所述的軟件模塊是否是經過授權的。
通過軟件工具很難對第一存儲模塊進行修改。用戶的裝置還可以在第一存儲模塊中含有一個公用鑰匙以及另外一個檢驗軟件;在第二存儲模塊中可含有與公用鑰匙相銜接的具有數字特征的存根部分。具有數字特征的存根部分與第二軟件模塊相連。附加的檢驗軟件計算出所述第二軟件模塊某一部分的隨機函數值,并使用所述的公用鑰匙檢證具有數字特征的存根部分含有計算出的隨機函數值的數字特征。
在另一實施方案中,用戶裝置包括第一存儲模塊。公用鑰匙和檢驗軟件存儲在第一存儲模塊中。該用戶裝置還包括第二存儲模塊,軟件模塊存儲于該第二存儲模塊中。檢驗軟件對所述軟件模塊的某一部分計算一個隨機函數值,并使用所述的公用鑰匙確認與所述第二軟件模塊相連的具有數字特征的存根部分含有計算出的隨機函數值的數字特征。用戶裝置在第一存儲模塊內還含有一個隨機函數值。檢驗軟件還通過計算第二軟件模塊某一部分的隨機函數值并將計算出的隨機函數值與存儲在檢驗軟件中的隨機函數值進行比較來確認所述的第二軟件模塊的這一部分是否是經過授權批準的。
軟件鎖程序含有某一數值、某一計算函數以及通過對軟件模塊中的地址序列函數進行計算并將計算結果與這一數值進行比較來確認存儲在內存中軟件模塊的工具。
該函數可以是隨機函數,確認工具計算出地址序列的隨機函數值并將計算結果與所存儲的值進行比較。
軟件鎖程序含有監(jiān)控操作以及根據比較結果執(zhí)行所述監(jiān)控操作的方法。監(jiān)控操作可中斷軟件鎖程序正在其上面運行的用戶裝置的操作。
軟件鎖程序可包括多個監(jiān)控操作和工具,這些工具根據比較產生的結果來執(zhí)行至少一項監(jiān)控操作。
軟件鎖程序可包括執(zhí)行必備檢驗測試的工具以及根據必備檢驗測試的結果來確定是否執(zhí)行軟件模塊中地址序列函數的工具。
軟件鎖程序可包括多個地址序列、多個存儲值、多個監(jiān)控操作以及工具;這些工具根據多個地址序列函數計算結果與存儲值的比較結果來執(zhí)行至少一種監(jiān)控操作。軟件鎖程序還包括多個內存地址、選擇軟件模塊的工具以及將所述軟件模塊的執(zhí)行開始時間以及執(zhí)行結束時間儲存在所述內存地址的工具。
軟件鎖程序可以是存儲在另一程序內監(jiān)控區(qū)中的子程序。這一子程序根據所述的另一程序被加載時的條件而被放置在某一地址監(jiān)控區(qū)內。在所述子程序加載之后,所述子程序的地址發(fā)生改變。這一子程序的調用地址根據所述另一程序被加載時的條件而定。在所述子程序加載之后,該子程序的調用地址發(fā)生變化。監(jiān)控操作包括在監(jiān)控區(qū)內移動其他監(jiān)控了程序。
標識表含有標識表標志、某一軟件拷貝的標識以及具有數字特征的信息;其中標識表標志帶有某一數值。軟件拷貝標識包含所述標識表的標識值、所述軟件拷貝某一部分的隨機函數值以及由標識表標識值和隨機函數值構成的數字特征信息。該標識還包括使用規(guī)定,所述的數字特征信息也包括使用規(guī)定。該標識還包括名稱,所述的數字特征信息也包括名稱。標識表還包括中央防護單元在以前呼叫中所發(fā)出的標識表的隨機函數值。該標識表還包括一個集中區(qū),該集中區(qū)含有中央防護單元在以前呼叫中所發(fā)出的連續(xù)信息。該標識表還可包括軟件拷貝的使用統計數字。
現在說明購買軟件的方法。購買者建立一個數據結構。該數據結構包括與用戶裝置中標識表相關的標識值以及該軟件的標識。購買者計算出該數據結構的隨機函數值,并向出售者發(fā)送一個信息。該信息包含這一隨機函數值以及該軟件的標識。
一旦收到這一信息,出售者對這一信息進行數字特征標注,并將標注的信息返給購買者。一個對用戶裝置進行監(jiān)督的程序使用出售方的公用鑰匙對該標注信息上的數字特征進行確認,并確認標注的信息含有購買者發(fā)出的信息。軟件某一部分的隨機函數值可以存儲在該軟件的標識中。監(jiān)督程序檢證軟件標識中的隨機函數值是否等于該軟件某一部分的隨機函數值。監(jiān)督程序可在標識表中存儲該軟件的標識。該標識含有標識表標識值、購買者創(chuàng)建的數據結構以及出售者標注的信息。在發(fā)送信息前,可在購買者和出售者之前建立一個安全的通訊通道。數據結構可含有使用規(guī)定,信息也含有該使用規(guī)定。用戶創(chuàng)建的數據結構可含有隨機選擇的只出現一次的數值。信息中可含有對該軟件進行付款的證明。
現在說明將用戶裝置中的軟件拷貝件作廢的方法。監(jiān)督程序可從用戶裝置的標識表中刪除與該軟件拷貝件相關的標識。該標識包括數字特征部分以及標識表標識值。在用戶裝置和出售方之間有通訊通道存在。用戶裝置通過該通訊通道將該標識發(fā)送給出售方。出售方使用出售方的公用鑰匙對數字標注部分上的數字特征進行確認,出售方讀取標識表的標識值。
出售方向標識的購買方發(fā)出信用證書。出售方向中央防護單元發(fā)送標識的數字標注部分以及標識表的標識值。中央防護單元將該標識的數字標注部分存儲起來,并將該標識的數字標注部分與標識表的標識值連接起來。
中央防護單元向用戶裝置中的監(jiān)督程序發(fā)送繼續(xù)信息,該繼續(xù)信息含有該標識的數字標注部分以及標識表的標識值。監(jiān)督程序確認帶有標識表標識值的該標識的數字標注部分沒有存儲在該標識表中。
現在說明對軟件在用戶裝置上的使用進行監(jiān)督的方法。用戶裝置上的監(jiān)督程序計算出標識表的第一隨機函數值,并向中央防護單元發(fā)出呼叫信息。該呼叫信息含有第一隨機函數值、該標識表的標識值以及前一次呼叫信息中所發(fā)出的該標識表的第二隨機函數值。中央防護單元確認前一次呼叫信息中發(fā)出的該標識表的隨機函數值是中央防護單元在隨機函數數值表中最近一次所存儲的值,并確認這一值與該標識表的標識值相關。一旦確認成功,則中央防護單元將所收到的標識表第一隨機函數值附加在與標識表標識值相關的隨機函數表中,并向監(jiān)督程序發(fā)出一個數字標注的繼續(xù)信息,該繼續(xù)信息是呼叫信息組成部分。
監(jiān)督程序確認中央防護單元繼續(xù)信息的數字標注部分與呼叫信息中發(fā)送的相應部分相一致。如果確認過程失敗,則該監(jiān)督程序向中央防護單元發(fā)出新的呼叫。中央防護單元將最后收到的呼叫信息以及最后發(fā)送的繼續(xù)信息存儲起來,并將存儲的信息與標識表的標識值相關聯。一旦中央防護單元收到來自監(jiān)督程序的呼叫信息,則中央防護單元在確認所收到的呼叫信息與所存儲的呼叫信息相等后發(fā)送所儲存的繼續(xù)信息。
一旦確認失敗,則防護中央單元向正在發(fā)出呼叫的監(jiān)督程序發(fā)送一個數字標注的信息以表明確認失敗。一旦收到來自防護中央單元的數字標注信息,則監(jiān)督程序將標識表作廢。
一旦確認失敗,中央防護單元將拒絕含有該標識表標識值的再次呼叫。
在標識表中,監(jiān)督程序使用當前呼叫信息所發(fā)出的標識表隨機函數值來取代前一次呼叫信息所發(fā)出的標識表隨機函數值。監(jiān)督程序將標識表中前一次呼叫所收到的繼續(xù)信息替換為當前呼叫所收到的繼續(xù)信息。
每當操作系統和監(jiān)督程序加載到用戶裝置的內存上時,都有可能向中央防護單元發(fā)出呼叫。
監(jiān)督程序使用一個或多個事件記數器測定第一次呼叫中央防護單元和第二次呼叫中央防護單元之間的時間間隔。正如時鐘所記錄的,事項記數器定期進行更新。中央防護單元將當前時間值存儲在繼續(xù)信息中,監(jiān)督程序將事項記數器設定為所述繼續(xù)信息中所收到的當前時間。
用戶裝置表征值可存儲在標識表中。監(jiān)督程序可存儲多個標識表。該標識表含有該標識表的標識值,其隨機函數值在最近多次的呼叫中發(fā)送給中央防護單元。中央防護單元將最近多次呼叫中所接收到的多個標識表隨機函數值儲存在繼續(xù)信息中。一旦收到這一繼續(xù)信息,則監(jiān)督程序計算出所儲存的多個標識表的隨機函數值,并進一步確認該隨機函數值是否與繼續(xù)信息中的相應值相等。監(jiān)督程序檢查最近多次呼叫所發(fā)送的用戶裝置表征值是否屬于多個用戶裝置,并在多個標識表中搜尋兩個連續(xù)的標識表,這兩個標識表含有用戶裝置表征值,這些值在相應值的特定數字上有所不同。監(jiān)督程序通過在標識表中搜尋第一標識表、第二標識表和第三標識表來進行檢驗。發(fā)送第二標識表的呼叫位于發(fā)送第一標識表的呼叫之后。發(fā)送第三標識表的呼叫位于發(fā)送第二標識表的呼叫之后。第一標識表和第二標識表中所儲存的用戶裝置表征值的不同之處大于相應數值的特定數字,第一標識表和.第三標識表所存儲的用戶裝置表征值的不同之處小于相應數值的特定數字。監(jiān)督程序向中央防護單元提交確認的結果,中央防護單元在確定最近的多次呼叫所發(fā)送的標識表屬于多個用戶裝置的基礎上取消含有標識表標識值的未來呼叫信息。呼叫信息含有只出現一次的新的隨機選取值。繼續(xù)信息含有一個超級校驗程序。
中央防護單元計算出超級校驗程序某一部分的隨機函數值,該超級校驗程序存儲在以前的呼叫發(fā)送到監(jiān)督程序的繼續(xù)信息以及該繼續(xù)信息中。中央防護單元將該隨機函數值存儲在發(fā)往監(jiān)督程序的繼續(xù)信息中。監(jiān)督程序確認存儲在該用戶裝置中超級校驗程序相應部分的隨機函數值以及繼續(xù)信息中所含有的隨機函數值與所收到的隨機函數值是否相等。監(jiān)督程序將新的超級校驗程序附加到用戶裝置所存儲的超級校驗程序上。中央防護單元還確認收到的時間在中央防護單元時鐘的指定誤差之內,并確認此次發(fā)出的呼叫信息的到達時間與前次呼叫信息到達時間之間的間隔是否超過了規(guī)定的最大間隔值;或者此次發(fā)出的呼叫信息的到達時間與前次呼叫信息到達時間之間的間隔是否低于規(guī)定的最小間隔值。
一旦接收到繼續(xù)信息,監(jiān)督程序將確認當前標識表中所有各項的時間總用量是否超過以前呼叫信息的標識表中所有各項的時間總用量。
用戶裝置中含有用戶裝置表征值以及監(jiān)督程序。監(jiān)督裝置記錄該用戶裝置的表征值。
用戶裝置表征值可含有處理器識別信息、非易失存儲裝置識別信息、目錄結構識別信息或文件識別信息。
現在介紹軟件檢驗程序,該檢驗程序包括超級校驗程序、中央防護單元和監(jiān)督程序。超級校驗程序含有數據和計算機程序。中央防護單元向用戶裝置發(fā)送某一軟件拷貝的多個超級校驗程序。用戶裝置將這些超級校驗程序存儲起來。監(jiān)督程序在用戶裝置上運行。
超級校驗程序含有軟件拷貝的名稱。該軟件拷貝的名稱表明了要被檢驗的軟件拷貝。超級校驗程序含有一個加權值,該加權值決定了使用超級校驗程序對軟件拷貝進行檢驗的頻率。超級校驗程序含有軟件拷貝某一部分的隨機函數值表以及某一隨機函數。超級校驗程序含有解密程序。超級校驗程序含有監(jiān)控程序,該監(jiān)控程序監(jiān)控軟件拷貝的操作特性。超級校驗程序還含有銷售者提供的與該軟件拷貝相關的公用鑰匙。
中央防護單元將數字標注信息中的超級校驗程序發(fā)送給監(jiān)督程序。監(jiān)督程序對數字特征進行確認,并在確認成功后將超級校驗程序存儲起來。
現在介紹對用戶裝置中所用的軟件拷貝進行檢驗的方法。本發(fā)明中提供多個超級校驗程序。每個超級校驗程序含有一個數值、一個程序、一種條件以及地址信息。該程序在軟件拷貝的某一部分上執(zhí)行。這一部分以軟件拷貝內容的地址信以及超級校驗程序中的數值為基礎。對計算值和含有值進行確認以決定它們是否滿足超級校驗程序中的條件。
在超級校驗程序中存有一個加權值。根據該加權值來選擇進行測試的超級校驗程序。出售方至少提供一個標識,該標識由出售方用數字進行標注。這一與用戶裝置所用軟件拷貝相關的標識被加以確認。
在超級校驗程序中的條件確認成功以及相關的標識確認失敗后,可以采取處罰性操作?;蛘?,在超級校驗程序中的條件確認成立以及用戶裝置上沒有任何標識的情況下可采取懲罰性操作。相關的標識含有軟件拷貝的名稱或者該軟件拷貝某一部分的隨機函數值。
該程序含有隨機函數,該數值是隨機函數值表,對超級校驗程序中條件的確認還包括對通用地址隨機函數值時行檢驗。
超級校驗程序中的程序可以是某一隨機函數,超級校驗程序中的數值是隨機函數值表,對超級校驗程序中條件的確認還包括對同一地址隨機函數值的核對。
超級校驗程序中的程序可以對所用軟件拷貝的操作進行監(jiān)控,這一數值含有操作表,對條件的確認還包括將監(jiān)控的操作與該操作表進行比較。
該程序可對軟件產生的中間結果進行評價,該值包括結果表,對條件的確認還包括將評價的中間結果與該表進行比較。
軟件的拷貝可以是某一計算機程序,地址信息規(guī)定了從該計算機程序起始處開始的字節(jié)計數順序。
軟件拷貝可以是某個計算機程序,該數值是含有指令的表。非操作指令不在計數之列。超級校驗程序中的地址信息可以不包括某些部分的指令。被排除在外的指令部分可含有內存地址或注冊地址。
本文對檢驗用戶裝置所用軟件拷貝的方法進行說明,并對超級校驗程序進行說明。超級校驗程序含有使用軟件拷貝的程序。該程序對軟件拷貝進行追蹤并記錄下使用的日期。
本文對允許使用軟件拷貝的方法進行說明,其中的軟件拷貝含有用戶裝置的標識。該標識從用戶裝置中的標識表中獲得。該軟件拷貝的某一部分的隨機函數值被計算出來,計算出來的隨機函數值與該標識中的隨機函數值進行比較。如果確認這二個隨機函數相等,則允許對軟件拷貝進行使用。隨機函數值的比較過程還包括另一檢查步驟,即通過將軟件拷貝的使用與標識中存儲的使用規(guī)定進行比較而決定是否允許使用軟件拷貝,確認過程包括檢查的成功完成。比較過程還包括將標識中含有的標識表標識值同標識表的標識值進行比較。允許使用軟件的過程包括對軟件使用的統計數字進行記錄。
用戶裝置中存儲超級校驗程序被檢驗是否與軟件拷貝相匹配。一旦確認是相配的,則確定超級校驗程序中含有的出售方名稱和公用鑰匙是否與標識中含有的出售方名稱及公用鑰匙相一致。如果確定失敗的話,則取消對軟件拷貝的使用許可。
用戶裝置中存儲的超級校驗程序被檢驗是否與軟件的拷貝相配。一旦確認不相配,則允許使用該軟件拷貝。
本文對在用戶裝置上運行軟件的監(jiān)督方法進行說明。用戶裝置中含有標識表。該標識表含有標識表的標識值。用戶裝置向中央防護單元發(fā)出呼叫信息。該呼叫信息含有標識表的標識值。中央防護單元確認此次呼叫信息時間與上次呼叫信息時間之間的間隔是否超過規(guī)定的最小間隔值;其中的呼叫信息含有標識表的標識值。
一旦確認成功,中央防護單元則生成一個數字標注的繼續(xù)信息。該數字標注的繼續(xù)信息含有呼叫信息。中央防護單元對呼叫信息進行儲存,并向用戶裝置發(fā)出該數字標注的繼續(xù)信息。中央防護單元通過計算用戶裝置上記錄的呼叫信息時間與中央防護單元所記錄的時間之間的間隔來進行確認過程。
中央防護單元所發(fā)出的數字標注繼續(xù)信息含有超級校驗程序某一部分的隨機函數值,該隨機函數值是中央防護單元在回應以往的呼叫信息時發(fā)出的,其中呼叫信息含有標識表的標識值。繼續(xù)信息含有中央防護單元新提供的超級校驗程序。用戶裝置對中央防護單元的特征以及繼續(xù)信息所含有的標識表標識值進行確認。
用戶裝置上所記錄的用戶裝置時間存儲在呼叫信息中。該時間存儲在繼續(xù)信息中,這一時間被確認早于用戶裝置接收繼續(xù)信息的時間,且該時間小于規(guī)定的值。
用戶裝置確認超級校驗程序以前所發(fā)送的該部分的隨機函數值等于繼續(xù)信息中含有的隨機函數值,其中超級校驗程序存儲在用戶裝置中。
中央防護單元所發(fā)送的數字標注繼續(xù)信息還包括超級校驗程序某一部分的隨機函數值,該隨機函數值是中央防護單元在回答以往呼叫信息時發(fā)出的;其中呼叫信息含有標識表的標識值以及繼續(xù)信息所發(fā)出的超級校驗程序。用戶裝置確認中央防護單元以往發(fā)送的超級校驗程序某一部分的隨機函數值以及用戶裝置中所存儲的隨機函數值與繼續(xù)信息中所含有的了隨機函數值相等。
用戶裝置將新的超級校驗程序安裝在標識表中。
本文對確保用戶指定的用戶裝置標識值只出現在一個用戶裝置上的方法進行說明。信息從用戶裝置發(fā)送到某一接收方。該信息包括與用戶相關的裝置標識值。某一識別檢驗過程確定該用戶裝置標識值是否儲存在另一用戶裝置上。一旦確定某一用戶裝置標識值出現在多個用戶裝置上,則上面提到的接收方將該用戶裝置的標識值作廢。
圖示簡介前面所述的及本發(fā)明其他的目的、特點及優(yōu)勢通過以下優(yōu)選實施方案的更具體說明將會十分明確,這些優(yōu)選實施方案附有圖示加以說明,在這些圖示中相同的參考字符在不同的圖形中表示相同的部分。這些圖形不一定是按比例繪制的,為了表明本發(fā)明的基本原理,在某些地方進行了強調。


圖1表明的是保護信息及私人權利的系統,系統中包括出售方、中央防護單元以及用戶裝置。
圖2表明的是圖1所示的用戶裝置的軟件結構,其中包括用戶空間、操作系統、引導盤以及引導可編程只讀內存。
圖3表明的是在本發(fā)明的某一實施方案中加載過程所使用的部件。
圖4是一個流程圖,它表明了操作系統部分加載過程所執(zhí)行的步驟。
圖5表明的是執(zhí)行操作系統之外某些軟件的加載過程所用的部件。
圖6A表明的是軟件鎖結構圖6B表明的是軟件鎖對操作系統202的模塊和監(jiān)督程序提供的保護。
圖6C表明的是軟件鎖對指定內存地址內容進行檢驗的步驟。
圖6D表明的是圖6B中任一一個軟件鎖的信息組。
圖6E表明的是軟件鎖子程序以及用戶裝置中程序內軟件鎖子程序的調用。
圖7表明的是監(jiān)督程序以及該監(jiān)督程序與標識表的關系。
圖8表明了購買或租用(以下合稱為購買)軟件拷貝的步驟。在購買過程中,購買方的私人權利受到保護。
圖9表明的是廢除某一標識的步驟。
圖10表明的是圖7所示標識表的另一實施方案。
圖11A和圖11B表明的是保護私人權利呼叫的步驟。
圖12表明的是對用戶裝置表征值進行檢驗的流程。
圖13A-B表明的是進行私人權利保護性呼叫的另一種方法。
圖14表明的是時鐘的組件。
圖15表明的是檢驗某一軟件拷貝可否使用的確認步驟。
圖16A-B表明的是進行呼叫的另一種方法中所用到的步驟。
本發(fā)明的詳細說明以下是本發(fā)明優(yōu)選實施方案的說明。
根據本發(fā)明,軟件拷貝應用于用戶裝置上。用戶裝置包括一個或多個通用或專用處理器,或與一個或多個通用或專用處理器相連。這些處理器共同承擔對某一軟件拷貝的執(zhí)行操作以及共同執(zhí)行本發(fā)明的所有保護機制。
圖1表明的是信息及私人權利的保護系統。該系統包括出售方110、中央防護單元130和用戶裝置140。用戶裝置140有多個,這些裝置由企圖對軟件進行盜版的用戶所操作。當用戶裝置140的某一用戶(未在圖中表明)購買軟件時,用戶裝置140向出售方110發(fā)出購買訂單101。如果該購買訂單通過了某些測試,則出售方簽署這一購買訂單,并將簽署后的購買訂單102發(fā)回給用戶裝置140。用戶裝置140將簽署過的購買訂單102以及其他信息做為一個標識安裝到標識表中。該標識表將在本文的后面部分中結合圖2進行說明。
在本文中,軟件被認為是數字信息;軟件包括計算機程序、文本文件、數據文件、數據庫、視頻文件、音頻文件、圖像文件或任何其他可由數字或信號表現出來的信息,但軟件的種類并不局限于此,軟件可被計算機或專用設備所訪問,或者在計算機或專用設備上運行。對軟件拷貝的使用包括閱讀、顯示、存儲、修改、播放或執(zhí)行該軟件,但對軟件的使用并不局限于此。
用戶裝置140定期地發(fā)出呼叫103,在呼叫103中用戶裝置140向中央防護單元130發(fā)送信息。如果呼叫103發(fā)往中央防護單元130的信息通過了本文下面將要說明的一些測試,則中央防護單元130向用戶裝置發(fā)回一個繼續(xù)信息104。在用戶裝置140中所收到的繼續(xù)信息104被用來生成進一步的測試,并在呼叫103之后來防止用戶裝置140在侵犯出售方合法權利的情況下使用軟件拷貝。標識的詳細結構、呼叫信息103、中央防護單元130和用戶裝置140所進行的測試以及繼續(xù)信息的內容將在本文以后的部分進行說明。在本發(fā)明中,當使用“信息”這一詞語時,應該理解的是信息可以分成幾部分發(fā)送,每條標注的信息可分部分進行發(fā)送,每個部分可分別進行標注。
圖2表明的是圖1所示用戶裝置140的軟件結構。用戶裝置140系統中包括用戶空間201、操作系統202、引導盤軟件203以及根引導可編程序只讀內存204。圖2還表明了操作系統202含有的組件。監(jiān)督程序211是操作系統202的一部分,但監(jiān)督程序211不是操作系統202的必須組成部分。同樣,軟件鎖212也包括在操作系統202中。然而,軟件鎖212也可以在用戶空間201中。用戶可對用戶空間201進行任意修改。在本發(fā)明的某一實施方案中,操作系統202還包括一個或多個標識表213和一組超級校驗程序215。在本發(fā)明的另一實施方案中,標識表213和/或超級校驗程序215存儲在用戶空間201中。正常情況下,操作系統202不能被修改,但盜版者試圖使用“補丁”來修改操作系統。補丁可以替代機器語言編碼。補丁可能是一個新的裝置驅動程序、裝置驅動程序的其中一段或者基于用戶命令的操作系統核。本發(fā)明含有消除補丁這種危害的機制。引導可編程序只讀內存204加載引導盤軟件203。引導盤軟件203負責加載操作系統202。
在操作系統202中有核210,它執(zhí)行多種功能,例如安排處理操作、控制文件系統以及其他操作。正如系列號為09/305,572的美國專利申請所說明的,監(jiān)督程序211通過將標識表213所儲存標識中的區(qū)域與軟件拷貝進行比較以及通過進行超級校驗程序檢驗來確認用戶裝置140上所使用的軟件拷貝是否是合法的;超級校驗程序的核對將在以下進行說明。上述美國專利申請是Michael O Rabin等人于1999年5月5日提交的,其標題為“用于私人信息的方法和設備”,該專利申請在此通過引證被并入本文。監(jiān)督程序211被結合到用戶裝置140中去。監(jiān)督程序211具有對在用戶裝置140上運行的軟件拷貝進行監(jiān)督的功能。監(jiān)督程序211是操作系統202的一個組成部分。正如前面所說明的,這并不是強制性的規(guī)定,只要軟件鎖212可以確保監(jiān)督程序211的完整性,并且監(jiān)督程序211可以履行本文所述的功能即可。有可能對軟件進行盜版的盜版者無法控制出售方110或中央防護單元130,這二者完全由防盜版系統所控制。但為了繞開保護,盜版者可能試圖改變用戶裝置140。在用戶裝置140內的保護系統組件包括監(jiān)督程序211、標識表213以及軟件鎖212。
由于防盜版功能涉及對用戶裝置140的操作進行某些監(jiān)測和控制,所以出現了對用戶的私人權利以及可能某些行動自由遭受侵犯的擔心。本發(fā)明提供多種機制確保用戶的私人權利不致受到侵犯。同時,本發(fā)明可防止用戶裝置140使用盜版軟件并可防止用戶裝置140使用合法購買或租用的但與購買或租用協議不一致的軟件。然而,本發(fā)明不對用戶裝置140構成其他的限制。
一個或多個軟件鎖212可確保含有監(jiān)督程序211的操作系統202模塊不被修改。在操作系統202中分散著一個或多個軟件鎖212。軟件鎖212對操作系統202的其他部分進行檢驗。軟件鎖212將在本文的以后部分中進行說明。
在本發(fā)明的某一實施方案中,某些方法涉及到軟件模塊的加載,在使用所加載的軟件模塊時同樣使用到了這些方法。在另一實施方案中,這些方法被某一專用處理器所使用,該專用處理器使用隨機函數值匹配檢驗或存根檢驗來檢查每項連接。正如上面所述的引導可編程序只讀內存204一樣,這一專用處理器將一個或多個公用鑰匙刻在它的硬件中。
根據加載過程來保護操作系統的完整性一致性加載本發(fā)明具有確保儲存在用戶裝置內存中的軟件拷貝是一致性軟件的功能。如果與出售方生產的原始軟件相同,則出售方的軟件是經過授權的。一般而言,軟件的拷貝是從二級存儲裝置或從遠端地址加載到內存中。在本文中,將一致性的拷貝加載到內存中的過程被稱為軟件拷貝的一致性加載。一致性加載軟件的模塊會得到一致性的軟件模塊,即在內存中存儲了經過授權的軟件拷貝。在本段文字中,將對有效執(zhí)行操作系統或其部分一致性加載的機制進行說明。然而,這些機制并不局限于操作系統的一致性加載,這些機制適用于對任何軟件的一致性加載。
圖3表明了本發(fā)明某一實施方案中操作系統202加載過程中的組件。本文將在以后部分中介紹這些組件及其功能。加載過程包括一種被稱為關聯保護的方法,該方法執(zhí)行操作系統202I、202N中一個或多個操作系統的一致性加載。關聯保護方法并不局限于執(zhí)行操作系統202I、202N的一致性加載,該方法還適用于任何其他軟件的一致性加載。
引導程序的起始部分或起始模塊儲存在可編程序只讀內存204中,可編程序只讀內存存在于用戶裝置140之內或與用戶裝置140相連。起始部分還可以儲存在其他類似的存儲裝置中,例如儲存在內存的不可修改部位或儲存在某個處理器中。引導程序是某種軟件,它通過將操作系統202或操作系統202的適當部分加載到內存中來起動用戶裝置140。可編程序只讀內存204是存有數據或程序文本的存儲裝置,這些數據和程序文本只能寫一次,之后只能讀取。就當前的技術而言,可編程序只讀內存被認為是難于通過軟件方式加以修改,從這一意義上講,在用戶裝置140上通常沒有軟件可用來修改可編程序只讀內存中的內容。對可編程序只讀內存的修改只有使用必須與用戶裝置140相連的專用硬件才能實現。
引導可編程序只讀內存204存儲著執(zhí)行引導操作初始階段的軟件。引導操作包括通過加載操作系統或操作系統的一些部分來使用戶裝置140做好操作的準備。引導盤軟件203還含有用于引導操作的軟件,引導盤軟件203從本地或遠程存儲裝置(未表明)加載到內存中。然后,在其內容通過了某些測試后,操作系統202I、202N的一個或多個部分被加載;本文將在以后對這些測試進行說明。操作系統的某一部分或軟件的拷貝是指全部的相應文本或數據、或者是文本各部分的順序或軟件拷貝中數據的順序。這些部分不必是連續(xù)的,相互間可有重疊。
通過隨機函數匹配檢驗、存根檢驗或隨機函數匹配檢驗與存根檢驗相結合的方式可進行一致性的加載過程。軟件模塊是軟件拷貝的一部分。通過隨機函數值匹配檢驗來一致性加載軟件模塊P2可通過使用已經存在于內存中的一致性軟件模塊P1有效地進行。模塊P1至少含有一個隨機函數值,該隨機函數值是通過從所周知的隨機函數計算出來的(在其他實施方案中,該隨機函數值是由P1指定的隨機函數計算出來的)。對模塊P2的檢驗包括計算P2的隨機函數值,或計算P2指定部分的隨機函數值,并將所得到的計算值與P1中存在的至少一個隨機函數值進行比較。只有當兩個值相等時,P2才可以加載,引導操作才可以繼續(xù)進行。
存根檢驗法是另一種用來確保內存中所存儲及加載的軟件模塊P2是一致性軟件模塊的方法。存根檢驗法使用到數字標注的存根,該存根是由軟件制造者或本發(fā)明系統內的某些其他授權方使用數字進行標注的存根。該數字標注的存根與軟件模件P2相連,并含有足以對軟件模塊內容進行專門辯識的信息。該存根的數字特征通過軟件模塊P1中含有的公用鑰匙進行確認,該軟件模塊P1已經一致性地加載或儲存到了可編程序只讀內存或其他不可修改的內存中,其中可編程序只讀內存或其他不可修改的內存存在于用戶裝置之內或與用戶裝置相連。在某一實施方案中,充足的信息是軟件模塊P2中內容的隨機函數值。存根檢驗過程包括計算軟件模塊P2的識別信息、對計算出的信息和P2存根中的信息進行比較以及使用上述一致性軟件模塊P1中的公用鑰匙來確認該存根上的數字特征。在隨機函數值匹配檢驗以及存根檢驗中,如果所有的比較值都是相等的,則確認是成功的;所有數字特征確認證明了所述特征的真實性。
通過存根檢驗進行一致性加載會使一致性軟件系統的擴展或修改具有靈活性。由于合法的軟件模塊P1含有確認制造方或出售方數字特征所需的公用鑰匙,所以制造方或出售方可使用經制造方或出售方同意的合法存根在任何時間創(chuàng)建新的軟件版本或下一個軟件模塊P2。通過存根檢驗過程,使用P1中的公用鑰匙可對新的軟件模塊進行一致性的加載。通過隨機函數值檢驗進行一致性加載的過程通常比通過存根檢驗進行一致性加載的過程快。然而,隨機函數值檢驗法沒有存根檢驗法那樣的靈活性和擴展性。
圖4是一張流程圖,它表明了進行操作系統一致性加載的初始步驟。圖4與圖3結合在一起進行說明。
在步驟401,用戶裝置140或計算機系統被啟動或重新啟動。操作接下來繼續(xù)進行步驟402。
在步驟402,存儲在引導可編程序只讀內存204中的軟件根據儲存的隨機函數316進行隨機函數值匹配檢驗,并通過這一檢驗將引導磁盤軟件203中的數據一致性加載到內存中(未表明)。在本發(fā)明的另一實施方案中,可編程序只讀內存210所存儲的引導程序還含有多個公用鑰匙3181-318N,一個或多個公用鑰匙被用來通過存根檢驗來對引導磁盤程序進行一致性的加載。為了進行軟件的一致性加載,存儲在可編程序只讀內存204中的引導程序確保加載到計算機內存中的軟件模塊是經過授權的合法軟件模塊。由系統或應用軟件出售方提供的合法軟件模塊與出售方110生產的原始軟件模塊是相同的。
引導磁盤軟件203含有多個公用鑰匙3181-318N,每個鑰匙被用于對現有的或未來的操作系統2021-202N進行一致性的加載。此外,引導磁盤程序203含有多個隨機函數值316,通過隨機函數值匹配檢驗,每個隨機函數值被用來對現有的操作系統2021-202N進行一致性的加載,或對其他現有的的軟件模塊進行一致性的加載。軟件出售方110和/或第三安全保證方持有與公用鑰匙3181-318N相對應的私用鑰匙。出售方110使用私用鑰匙建立一個與軟件模塊或系統相關的授權存根。軟件的接收方使用相應的公用鑰匙3181-318N通過存根檢驗來進行軟件的一致性加載。操作接下來繼續(xù)執(zhí)行步驟403。
在步驟403,引導可編程序只讀內存通過隨機函數值匹配檢驗來確定確認過程是否取得成功。如果確認取得成功,則繼續(xù)執(zhí)行步驟404。如果確認不成功,則繼續(xù)執(zhí)行步驟409。
在步驟404,一旦引導磁盤軟件203全部或部分地一致性加載到內存中,則該引導磁盤軟件向用戶裝置140的用戶提供一個選擇,用戶裝置140的用戶可從操作系統2021-202N中選擇一個或多個操作系統,或者通過缺省方式選擇預定的操作系統2021-202N。操作接下來執(zhí)行步驟405。
在步驟405,所選擇的操作系統軟件的模塊被讀入內存中,例如操作系統N202N被讀入內存中。如果這一模塊被表示為OS_N_1310,且這一模塊含有由操作系統出售方OS_N的私用鑰匙所標注的存根322;則在某一實施方案中,存根322的形式為Stub_OS_N_1=SGN_OS_NCHASH(OS_N_1)。SGN_OS_N是與操作系統OS_N202N相關的公用鑰匙數字特征函數。HASH是引導盤軟件203指定的隨機函數316。操作接下來進行步驟406。
在步驟406,引導盤軟件203計算被加載到內存中的OS_N202N中第一模塊OS_N_1310的隨機函數值HASH(OS_N_1)。使用與操作系統OS_N202N相關的公用鑰匙PK_N318來調用隨機函數值H,操作系統OS_N202N儲存在引導盤軟件203中。引導盤軟件203將公用鑰匙應用于H以確認特征值SGN_OS_N(H),這一特征值是從與第一模塊OS_N_1310相關的存根322中讀取的。操作接下來進行步驟407。
在步驟407,引導盤軟件203將檢驗確認過程是否取得成功。
如果確認取得成功,則操作繼續(xù)執(zhí)行步驟408,否則操作繼續(xù)執(zhí)行步驟409。
在步驟408,引導操作的第一相位是成功的。用戶裝置140是否處于可用狀態(tài)取決于指定的操作系統OS_N202N。對某些操作系統而言,要使用戶裝置處于可用狀態(tài)還要再加載另外一些模塊。隨后OS_N310中的某些模塊有可能被使用到,這些模塊的一致性加載是經一致性檢驗過程后由OS_N302N執(zhí)行的。一致性檢驗過程使用到隨機函數值匹配檢驗和存根檢驗。通過在含有多個軟件模塊的軟件系統設計過程中同時加入隨機函數值匹配檢驗和存根檢驗,可使這兩種檢驗方法具有速度及可擴展性方面的優(yōu)勢。OS_N320中的軟件模塊含有多個公用鑰匙PK_N_1、PK_N_2......,以及多個隨機函數值H_1、H_2、......。OS_N中下一個要加載的模塊是OS_N_1_5,這一模塊由用戶或OS_N_1選定。OS_N_1_5的一致性加載即可以通過存根檢驗方法由與軟件模塊OS_N_1_5以及已經一致性加載的OS_N_1中某一公用鑰匙相連的存根執(zhí)行,也可以通過隨機函數值匹配檢驗法由OS_N_1中存在的某一隨機函數值執(zhí)行。在本發(fā)明的另一實施方案中,在軟件模塊一致性加載過程所使用到的某些公用鑰匙以及隨機函數值可存在于引導可編程序只讀內存程序或引導盤程序中。
在步驟409,引導過程失敗。
上述對軟件模塊進行一致性加載的過程可重復進行多次,其中通過使用一致性檢驗過程,利用公用鑰匙或已一致性加載的模塊中含有的隨機函數值來加載每一個另外的模塊OS_N。
因此,引導盤軟件203是經過授權的合法軟件,因為對引導可編程序只讀內存204使用了隨機函數值匹配檢驗。在操作系統中已經合法的模塊所執(zhí)行的一致性性檢驗基礎上,操作系統中其后加載的模塊是一致性的。對于每個操作系統2021_202N而言,操作系統的出售方110仍然持有對任何一個操作系統或全部操作系統進行修改的靈活性,并允許通過一致性性檢驗過程使用已經存在的公用鑰匙3181_318N、存根、隨機函數和/或模塊中含有的隨機函數值來對這些模塊進行一致性的加載。
由于只有出售方才擁有的計算一致性加載過程中所用數字特征函數SGN_OS_N()所需的私用鑰匙PK_N,所以只有操作系統出售方才可確定以一致性方式加載的操作系統中模塊的版本。私用鑰匙是一個私用密碼鑰匙,出售方使用私用鑰匙生成數字特征。如果一個新的出售方要發(fā)售新的操作系統軟件,則新的出售方分配到未被使用過的公用鑰匙,這些公用鑰匙存在于引導盤軟件203中。與公用鑰匙相對應的私用鑰匙存放在可信的第三方手中,并在需要時確保交付給新的出售方。出于工作效率的考慮,在對出售方操作系統的模塊進行一致性性檢驗時可以決定是使用存根檢驗法還是使用隨機函數值匹配檢驗法。
在一致性加載的另一實施方案中,要加載模塊中只對某些子部分進行隨機函數值的計算。這可以使操作系統的出售方在不中斷模塊一致性加載過程的條件下,不時地隨意改變操作系統的某些部分。具體可變的部分比如可以是數據區(qū)。
標準化的操作系統一致性加載過程可對任何軟件或數據(一般是文本)進行一致性的加載。在這種標準化方法中,引導可編程序只讀內存204及其中所存儲的數據可由委托方授權的任何數據和/或程序編碼所替換。其他模塊可以是按本發(fā)明的概念所廣泛認定的隨機軟件模塊。
圖5表明了某些軟件一致性加載過程的組成部分,這些軟件不必是操作系統。文本的引導部分存儲在模塊804中。文本的引導部分要從根本上確保其一致性性。通過隨機函數值匹配檢驗和存根檢驗可實現與模塊804的連接。執(zhí)行隨機函數值匹配檢驗或存根檢驗所需的程序存在于已經一致性加載過的軟件之中。正如所示的,模塊803和802中存儲的文本使用隨機函數值匹配檢驗法,模塊830中存儲的文本使用存根檢驗法。模塊803對模塊810和820中存儲的文本使用存根檢驗法。因此,模塊804可對某些文本使用隨機函數值匹配檢驗法,而對其他文本使用存根檢驗法。此后加載到模塊804上的每個軟件模塊都可以通過使用已一致性加載的軟件模塊中的隨機函數值或公用鑰匙進行一致性的加載。
上述方法的進一步標準化使用到某種協議,在該協議中只有使用已經加載的模塊(未表明)中含有的多個存根和/或隨機函數值進行一致性性檢驗之后,某一模塊M才能被加載。舉例而言,模塊M1含有公用鑰匙P1,可以有某一存根與M相關,該存根由P1的擁有者進行標注。此外,模塊M2含有隨機函數值H2。這兩者都用于模塊M的一致性加載過程。
在使用已加載軟件模塊的過程中,也可以使用到與軟件模塊一致性加載相關的這些方法。舉例而言,某一專用的處理器可使用這些方法,該處理器通過隨機函數值匹配檢驗或存根檢驗定期地對每一連接進行檢查。
在運行過程中保護操作系統的完整性軟件鎖保護即使在使用一致性加載對軟件進行加載之后,在軟件在用戶裝置140運行期間繼續(xù)確保這一軟件是一致性的仍然十分重要,其中軟件存儲在用戶裝置140的內存中。對當前使用的某些操作系統存在著兩種可能的攻擊,這些攻擊包括在系統調用期間強制緩沖寄存裝置過載,或者安裝不正確的核芯驅動程序。
軟件鎖保護功能提供加強型的安全保護。軟件鎖保護包括軟件鎖212和軟件鎖檢驗過程。軟件鎖212是嵌入的程序編碼和數據;在優(yōu)選情況下,這些程序編碼和數據是以難以檢測的方式嵌入到軟件模塊中去的。
圖6A表明的是軟件鎖結構530。軟件鎖結構530含有一個地址序列、多個隨機函數以及多個隨機函數值538;其中地址序列不必是連續(xù)的,該序列用于對534進行檢驗,隨機函數用于地址536中的內容。要被檢驗的地址534可含有絕對內存地址、相對內存地址以及文件名稱。軟件鎖結構530還包括一項可選功能和軟件鎖操作530,這一可選功能可對測試532進行檢驗。
圖6B表明的是用于保護操作系統202的模塊以及用于保護監(jiān)督程序211的軟件鎖。然而,軟件鎖的保護功能并不局限于操作系統,軟件鎖212a-c可用于對任何程序的完整性進行保護,包括對用戶應用程序的保護。
圖6B中所說明的關系檢驗方案可以容易地對含有任何數量軟件模塊、軟件鎖以及檢驗關系的軟件系統進行標準化。
在圖6B中有三個軟件鎖212a-c。軟件鎖212a-c間相互檢驗,并對操作系統202的模塊2021以及監(jiān)督程序211的模塊520進行檢驗以檢測這些模塊是否已被修改過。軟件鎖212a-c的每個箭頭都表示一種檢驗關系。因此,一個軟件鎖可以檢驗一個以上的軟件模塊。正如圖6B中所示的,軟件鎖212a檢驗模塊510和520。軟件鎖之間還相互檢驗。正如圖6B所示的,軟件鎖212b和212c相互檢驗。
圖6c是一張流程圖,它表明了軟件鎖對指定內存地址中內容進行檢驗的步驟。
正如圖6B所示的,軟件鎖對編碼的多個部分進行檢驗。每次檢驗都重復進行圖6c中所說明的過程。
在步驟901,對軟件模塊進行運行。當遇到軟件鎖編碼時,操作繼續(xù)進行步驟903。
在步驟903,軟件鎖協議根據軟件鎖編碼中指定的條件進行必備檢驗532,從而確定是否有哪些地址應該由軟件鎖211進行檢驗。一種可能的情況是,每當遇到軟件鎖編碼時,所有在軟件鎖結構530中列出的地址534都被檢驗。如果必備檢驗確定軟件鎖沒有運行,則操作繼續(xù)執(zhí)行步驟908。舉例而言,只有當裝置的時鐘時間值為偶數并且指定的內存地址在指定的范圍內時軟件鎖212a_c才執(zhí)行檢驗過程。有一種安排具有優(yōu)勢,在這種安排中軟件鎖檢驗次數少,軟件鎖以及它的地址和操作不易被攻擊者所探測到。
在必備檢驗測試532確定了要檢驗的地址534的子集后,操作繼續(xù)執(zhí)行步驟904。
在步驟904,地址子集的內容被讀取,軟件鎖結構530所指定的適當隨機函數536被用來計算地址內容的隨機函數值。操作接下來繼續(xù)執(zhí)行步驟907。
在步驟907,計算出的隨機函數值與軟件鎖子程序530中所列的適當隨機函數值進行比較。如果這些值不相等,則操作繼續(xù)執(zhí)行步驟909。如果這些值相等,則操作繼續(xù)執(zhí)行步驟908。
在步驟908,嵌入的軟件繼續(xù)運行。在另一實施方案中,軟件鎖212a-c并不是檢驗這些值是否相等,軟件鎖檢驗的是兩個內存地址之間是否存在某些關系。舉例而言,設定某些關鍵的過程耗時不到一毫秒。還可設定軟件記錄在MLL1開始執(zhí)行過程的時間以及記錄軟件在MLL2結束該過程的時間。在這種情況下,軟件鎖212a-c可檢驗L2的時間值是否只比L1的時間值高幾毫秒。這些軟件鎖212a-c被稱為數據型軟件鎖。另一種軟件鎖檢測是否存在一致性的編碼。因此,步驟904和907可被其他的步驟所替換,這些步驟確定某些指定內存地址是否含有一致性的數值。
在步驟909,軟件鎖a-c根據軟件鎖各自的作用確定應采取那些操作。舉例而言,軟件鎖a-c在指定的比較過程中發(fā)現有不相等的情況時,軟件鎖對軟件模塊或數據模塊非法修改進行檢測,軟件鎖可以中止嵌入軟件的運行。軟件鎖編碼規(guī)定了在對非法修改或非法編碼檢測的基礎上所采取的操作,這些操作被軟件鎖操作540所調用(圖6A)。
在另一實施方案中,軟件鎖212a-c還可含有執(zhí)行匹配檢驗及比較檢驗之外的檢驗程序。例如,軟件鎖中所含有的這種程序可以監(jiān)視軟件鎖212a-c所保護軟件系統的操作特性,并將所觀察到的特性與軟件鎖中所存儲的數據進行匹配比較。指定的程序庫及子系統的操作特性調用正在操作的程序、調用的頻率以及觸發(fā)這些調用的條件。對于選擇恰當的特征而言,如果監(jiān)視的操作特性偏離軟件鎖中所列的數據超過一個參數值,則軟件鎖采取措施540。
軟件鎖措施的另一個實例是在執(zhí)行編碼中插入一個誤碼,這一誤碼在軟件鎖檢驗完成其運行后發(fā)揮作用。這一措施可以中止程序的運行。
在某一實施方案中,為了躲開檢測,可用操作系統碼分散軟件鎖執(zhí)行的過程。包括英特爾公司生產的奔騰III在內的大多數處理器的指令組中都含有子程序調用指令.這一指令含有子程序碼起始的內存地址,這一地址被稱為調用地址。子程序是某一程序的一部分,該程序執(zhí)行某些功能,然后對子程序調用指令之后的指令進行控制。
許多處理器的指令組同樣含有非操作指令。當非操作指令運行時,非操作指令不改變處理器的狀態(tài)。因此,取消非操作指令不會影響計算所產生的值。
圖6D表明的是軟件鎖212a-c的軟件鎖信息組。軟件鎖子程序630位于軟件鎖信息組620中,軟件鎖信息組620比容納軟件鎖子程序630所需的要大一些。舉例而言,如果軟件鎖子程序630需要100字節(jié),則軟件鎖信息組的大小可以是1000字節(jié)。在加載期間,軟件鎖子程序630被放置在軟件鎖信息組620的某些連續(xù)地址上,例如放置在70字節(jié)至169字節(jié)之間的位置上,放置的位置取決于加載期間的條件,例如取決于加載時間以及某些內存地址的值。軟件鎖信息組620中的其他字節(jié)604、642可以放置非操作指令或完全不加以使用。
圖6E表明的是軟件鎖子程序630以及用戶裝置140中程序202對軟件鎖子程序的調用。相對于軟件鎖子程序630的起始地址而言,對軟件鎖子程序630的所有子程序調用6311、6312在加載期間有它們的調用地址組。在不同的加載過程中,軟件鎖子程序630在軟件鎖信息組620中的位置可以發(fā)生改變,所以軟件鎖202a-c被稱為“滑動裝置”。在操作系統202以及所含的軟件鎖212a-c加載之后,可以實現軟件鎖212a-c的滑動功能。在本發(fā)明的另一實施方案中,軟件鎖含有使軟件鎖212a-c進行滑動并將軟件鎖212a-c拷貝到軟件鎖信息組620中可用連續(xù)地址上的程序。
根據加載時的條件,軟件鎖子程序的子程序調用指令631被放置在可能地址的子集中(圖6D)。在本發(fā)明的某一實施方案中,可能地址的子集即可含有子程序調用指令6311、6312,也可含有非操作指令。
軟件鎖程序212a-c不必放置在要進行檢驗的用戶裝置140上。在本發(fā)明的另一實施方案中,當用戶裝置140向某一位置發(fā)出請求時,該位置的軟件鎖程序要求用戶裝置計算用戶裝置140中某一地址序列的某一函數,并隨后將計算值返回到該位置。該位置然后對返回值與軟件鎖程序212a-c儲存的值進行比較。如果這兩個值不相等,則該位置向用戶裝置140發(fā)出信息,指示該用戶裝置中受保護的程序已被廢棄。此外,在這一實施方案中,該地址上的軟件鎖還可執(zhí)行前面所述的功能以及由軟件鎖212a-c所執(zhí)行的其他功能。
標識表圖7表明的是監(jiān)督程序211及其與標識表601的關系。標識表是一種數據結構,該數據結構中每個軟件拷貝都有自己的標識605(其內容在軟件拷貝的購買過程中指定),其中購買或租用的軟件拷貝在用戶裝置140上運行。對于標識表601中所含的每個標識605而言,標識表601中至少含有一個區(qū)域,這一區(qū)域表明軟件拷貝的使用狀態(tài)。使用狀態(tài)信息組609還可表明與標識605相關的軟件拷貝的使用統計數據。標識表601還含有標識表表頭603,該表頭對標識表601進行特殊的標記。標識表表頭603可含有有關用戶裝置使用統計數據的信息,并可含有繼續(xù)信息104。標識表表頭603還含有標識表標識值ID604。用戶裝置140可有一個或多個標識表,每個標識表都有自己的標識值ID604。標識表601、602儲存有允許軟件拷貝在用戶裝置140運行的信息,并記錄軟件使用的統計數據,軟件的出售方或出租方根據這些統計數據進行收費。
可保護私人權利的購買方式在本發(fā)明中,軟件的購買方、租用方及用戶(以下統稱為購買方)即沒有在軟件的購買過程也沒有在軟件的使用過程中透露過他們的身份,軟件的購買方意在保護他們的隱私權。
標識表601是儲存在用戶裝置140中的表格或文件,它含有與軟件拷貝標識605相關的信息以及與軟件拷貝使相關的信息。
標識表標識值ID604是標識表的識別值(圖8),該識別值儲存在標識表601中。標識表標識值ID604或由硬件生成、或由用戶指定、或由像熱干擾這樣的物理過程生成、或由多種方式結合在一起生成。標識表標識值ID604的特點是第三方無法使這一標識值與軟件拷貝的購買者建立聯系。在本發(fā)明的某一實施方案中,購買方可使用匿名通道進行所有的通訊聯系,并使用匿名通道為用戶裝置140上的標識表601、602建立標識值ID604。例如,購買方可使用加拿大蒙特利爾零知識系統公司提供的產品進行通訊和標識值設定。匿名通道是一個通訊通道,該通道不會泄露使用該通道發(fā)送信息者的身份。
圖8是流程圖,它表明了在保護購買者私人權利的前提下購買或租用(以下統稱為購買)軟件拷貝的步驟。圖9將結合圖8進行說明。購買軟件的交易可由購買者用戶裝置中的監(jiān)督程序211執(zhí)行,或者由購買者用戶裝置或某些用戶裝置140中的專用購買程序205執(zhí)行。
在步驟1101,例如可使用Netscape公司提供的SSL協議在購買者和出售者110之間建立起安全的通訊連接。安全通訊是發(fā)送數值X的一種方法,使用這一方法發(fā)送X時,只有預定的接收者才能以解密方式看到X值,而其他的人員只能觀察到網絡協議或看到傳送X值的數據包。使用可靠的信使程序發(fā)送密封郵件是對郵件內容進行安全傳送的一種方法。通過匿名通道進行通訊101和102可以避免泄露購買者的網絡身份。使用NETSCAPE SSL協議進行信息發(fā)送是在通訊網絡上確保安全通訊的一種方法。購買者可依據使用規(guī)定USAGE POLICY使用任何可接受的付款方式通過安全連接通道來支付購買或租用軟件拷貝的費用,例如使用信用卡(優(yōu)選的私人權利保護方式)或某些匿名現金方式支付購買費用。匿名現金支付方式是一種電子支付方式,這種方式不會泄露支付者的身份。像AmericanExpress Corporation這些信用卡公司提供某些有限形式的匿名信用卡,用這種匿名信用卡付款時,出售方不知道購買方是何身份,但American Express Corporation知道付款者的身份。軟件拷貝SW的使用規(guī)定是出售方或某些組織為管理軟件拷貝的使用方式而制定的一組規(guī)章制度。具體的規(guī)定可包括非限定性使用、200次的使用或從購買之日起為期一個月的使用期限,但具體的規(guī)定并不局限于這些種類。在本發(fā)明中,與軟件拷貝SW相關的使用規(guī)定是由監(jiān)督程序211強制執(zhí)行的。操作接下來執(zhí)行步驟1102。
在步驟1102,購買者建立軟件拷貝識別結構S=(NAME_SW,ID,HASH(SW),USAGE_POLICY,NONCE),但購買者不泄露結構S。NAME_SW是所購或所租用軟件拷貝SW的名稱。ID是標識表標識值604。SW是本發(fā)明特別保護的出售方軟件拷貝;例如,SW是被稱為Spread的程序編碼。HASH(SW)是指定的隨機函數H對軟件SW指定部分計算出的隨機函數值。軟件拷貝SW的部分是指組成SW的文本或數據,或者是這些文本或數據的集合;這些文件的數據不一定是連續(xù)的,并且可以有重疊。NONCE被用來在同一軟件被再次購買時保護購買者的私人權利。一個NONCE是一個隨機選擇的數字或數字串,該數字或數字串只出現一次。這一數字或數字串的選擇要求在足夠大的數據組中進行,這樣就避免了重復的可能性。NONCE可通過諸如英特爾公司奔騰III結構所提供的熱干擾方法來生成,或者NONCE可以取決于用戶裝置中某些內存地址的值。操作接下來執(zhí)行步驟1103。
在步驟1103,購買者向出售方發(fā)出購買軟件SW拷貝的訂單SPO_SW,該訂單包括(HASHCS,NAME_SW,HASH(SW),USAGE_POLICY)。NONCE和標識表標識值ID604被隨機函數值HASH(S)所標注,NONCE和標識表標識值ID604不會泄露給出售方110。操作接下來繼續(xù)執(zhí)行步驟1104。
在步驟1104,出售方110決定是否同意將名稱為NAME_SW的軟件拷貝售出或租出,該軟件拷貝的使用規(guī)定為USAGE_POLICY;在安全通訊過程中,軟件SW為購買方生成隨機函數值HASH(SW)。在本發(fā)明的另一實施方案中,購買方向出售方110發(fā)出付款證明。操作接下來執(zhí)行步驟1105。
在步驟1105,如果確認成立,則接著執(zhí)行步驟1106,否則繼續(xù)執(zhí)行步驟1110。
在步驟1106,出售方110對所收到的信息進行數字標注,由此生成SGN_Vendor(HASH(S),NAME_SW,HASH(SW),USAGE_POLICY),并將數字標注的這一信息發(fā)送給購買方。操作接下來執(zhí)行步驟1107。
在步驟1107,一旦收到出售方110創(chuàng)建的數字標注信息,購買方用戶裝置中的監(jiān)督程序211使用出售方的公用鑰匙318來確認所收到的信息是經出售方數字標注的,并且與發(fā)給出售方的信息是相一致的。如果此前的確認全部成功的話,則監(jiān)督程序211將軟件識別結構S、出售方名稱以及出售方數字標注的信息存儲在標識表601中。與此同時,出售方名稱、出售方標注的信息構成了與用戶裝置中SW的拷貝相關的標識605。對標注信息上數字特征的確認過程是使用標注者的公共特征開關進行的計算過程,當生成指定的結果時,這一確認可以證明這一數字特征是由所述的標注者所生成的,在這種情況下,這一確認過程被認為是成功的。如所有應該產生相等結果和所有應該產生不相等結果的比較分別達到了預期的結果,則兩條信息間相應部分或這些部分的順序間相等性或不等性的狀態(tài)確認被認為是成功的。操作到此全部完成。購買方和出售方之間的安全通訊通道關閉。
在步驟1110,購買協議結束。操作全部完成。在建立的上述保護私人權利性的購買協議中,由于使用的是匿名通道以及匿名的付款方式,所有出售方即不知道購買方的名稱,也不知道用戶裝置140上標識表601中的標識表標識值ID604。由于標識表標識值ID604包含在軟件識別結構S中,而出售方只能收到軟件識別結構的隨機函數值,因此這隱去了標識表標識值ID604,從而保證了出售方不知道標識表標識值ID604。同時,借助于本文下面所描述的機理,出售方可以確保所購的帶有標識605的軟件拷貝將只能在用戶裝置140上運行,因為只有用戶裝置140的標識表標識值ID604與該標識的軟件識別結構中的值相匹配。
廢除和還回軟件拷貝的標識在軟件SW的使用過程中,有可能出現將軟件拷貝還給出售方110,并取回返還軟件的押金。軟件的使用包括在用戶裝置140上安裝、使用、執(zhí)行、運行、連接、閱讀、顯示、觀看、打印、復制、發(fā)送或訪問軟件拷貝,或用軟件拷貝進行游戲,或從存儲介質中檢索信息或對存儲介質進行修改;但軟件的使用并不局限于這些方面。
當軟件拷貝的擁有方希望將該軟件轉移到具有另一標識表標識值604的用戶裝置140上時,該擁有者需要將該軟件返還給出售方。擁有方將軟件返還給出售方110,并獲得可用于購買新一套軟件的信用證。
假定涉及到的軟件被稱為NAME_SW,這一軟件拷貝的相關標識為TAG_SW605。用戶裝置140含有標識表601。標識表601含有標識表標識值ID604。標識TAG_SW存儲在帶有標識表標識值ID604的用戶裝置140的標識表601中。在購買軟件過程中所用的軟件識別結構是S。
圖9表明的是廢除標識605的步驟。
在步驟1201,用戶裝置140中的監(jiān)督程序211從帶有標識表標識值ID604的標識表601中刪除標識TAG_SW605。操作接下來執(zhí)行步驟1202。
在步驟1202,用戶裝置140通過安全通道呼叫出售方110,并發(fā)送標識TAG_SW605以及軟件識別結構S。該呼叫即可由監(jiān)督程序211進行,也可由在用戶裝置140上運行的購買程序205進行。操作接下來繼續(xù)執(zhí)行步驟1203。
在步驟1203,出售方110確認TAG_SW605和軟件識別結構S是否正確地反應了軟件購買過程所創(chuàng)建的數據。出售方對TAG_SW605中儲存的數字特征進行確認,并確認隨機函數值HASH(S)是否等于數字標注的TAG_SW605中所含有的相應值。出售方還將從軟件識別結構S中讀取標識表標識值ID604。
在步驟1204,如果所有這些確認是成功的,則繼續(xù)執(zhí)行步驟1206。如果確認失敗,則繼續(xù)執(zhí)行步驟1205。
在步驟1205,協議被廢除。操作全部完成。
在步驟1206,出售方110向用戶裝置140發(fā)送信用證,該信用證可換取經雙方同意的貨幣數量,或換取某些指定的物品或換取某些服務。操作接下來繼續(xù)執(zhí)行步驟1207。
在步驟1207,將從用戶裝置140收到的TAG_SW604以及標識表標識值ID604發(fā)送給中央防護單元130。中央防單元將TAG_SW605存儲在與標識表標識值ID604相關的表格中。
標識表601含有標識表標識值ID604,用戶裝置140含有標識表601,在用戶裝置140后來發(fā)出的至少一次呼叫中,中央防護單元130將要求監(jiān)督程序211確認標識TAG_SW604是否真的已從標識表601中刪除。本文將在以后對用戶裝置140所發(fā)出的后來呼叫進行說明。如果監(jiān)督程序211的檢驗失敗,則中央防護單元130廢除標識表標識值ID604。
保護私人權利的呼叫由監(jiān)督程序211啟動并執(zhí)行的用戶裝置140對中央防護單元130的呼叫會經常發(fā)生。根據軟件拷貝是否已有一定的使用量,或者自上一次呼叫后是否已過了一定的時間,或者當網絡建立起連接時,或者上述情況共同發(fā)生時,按照呼叫規(guī)定來啟動對中央防護單元130的呼叫。在監(jiān)督程序211起動后,也可很快要求進行呼叫。當絕對時間計數器所測得的時間與SGN(HASH(Immediately Previous Tag Table Time of ImmediatelyPrevious Call-Up,ID)中存儲的時間差值超過了呼叫規(guī)定中所規(guī)定的值后,可以要求進行呼叫。這里的SGN_GC表示中央防護單元130的數字特征函數。HASH(Immediately Previous TT)表示監(jiān)督程序211在最近一次呼叫中發(fā)給中央防護單元130的用戶裝置標識表的隨機函數值。ID是這一標識表的標識表標識值604。
圖10表明的是圖7所示的標識表601的另一實施方案。在這一實施方案中,標識表601含有一個存儲上面數字標注信息SGN_GC(HASH(Immediately Previous Tag Table),Time ofImmediately Previous Call-Up,ID)的區(qū)域(未畫出);這一信息是中央防護單元在最近一次呼叫中發(fā)往用戶裝置140的。上一次的標識表在這里被稱為TT_PREV601a,這一標識表也被存儲起來,并是可以應用的。如果不存在含有標識表601a標識值ID604的上一次標識表,則監(jiān)督程序211執(zhí)行特殊的初始呼叫,該特殊呼叫創(chuàng)建含有標識表標識值ID604的標識表601。標識表頭603還含有表明用戶裝置(內部)環(huán)境特征的區(qū)域,用戶裝置表征值610將規(guī)定這些特征。具體的用戶裝置表征值610包括用戶裝置處理ID的專用系列號、從用戶裝置數據結構衍生出來的特征值和數字值;這些值說明了文件系統的物理結構以及存儲裝置中的其他數據,但具體的用戶裝置表征值并不局限于這些方面。在用戶裝置的使用過程中,用戶裝置表征值610只在慢慢地改變。此外,所選擇的用戶裝置表征值610不可能隨著時間的變化而從一種設置值C變化到另一種差別很明顯的設置值C_1,然后再從C_1變回到設置值C。
為了保護呼叫方網絡地址的隱私權,呼叫可以使用匿名通道,例如使用加拿大蒙特利爾零知識系統公司提供的一種匿名通道進行呼叫。保護隱私權的呼叫絕對不會泄露用戶裝置140所使用的軟件與用戶裝置140擁有者或使用者身份之間的關系。
圖11A-B是表明執(zhí)行保護隱私權呼叫步驟的流程圖。圖11A和圖11B將結合圖10進行說明。
首先參見圖11A,在步驟1500,例如可使用Netscape公司提供的SSL協議在用戶裝置140和中央防護單元130之間建立起安全通訊通道。操作接下來繼續(xù)執(zhí)行步驟1502。
在步驟1502,在用戶裝置140上運行的監(jiān)督程序211C通過安全通訊通道進行呼叫,并向中央防護單元130發(fā)送下列數據當前標識表601的隨機函數值HASH(TT)、上一次呼叫中標識表601的隨機函數值HASH(TT_PREV)以及標識表標識值ID604。操作接下來繼續(xù)執(zhí)行步驟1503。
在步驟1503,中央防護單元130檢驗HASH(TT_PREV)是否與上一次的HASH(TT)值相等,HASH(TT)是中央防護單元130從與標識表標識值ID604相關的用戶裝置140處接收到的數據。如果它們相等,則繼續(xù)執(zhí)行步驟1505。如檢驗結論為“否”,則在不同用戶裝置140上的兩個標識表601共有相同的標識表標識值ID604,這表明有可能出現了盜版,操作接下來執(zhí)行步驟1504。
在步驟1504,中央防護單元130發(fā)出數字標注信息SGN_GC(“present identifier is bad”,HASH(TT_PREV),HASH(TT),ID)。一旦收到這一信息,監(jiān)督程序211將確認中央防護單元的數字特征,并確認數字標識信息中所含的隨機函數值以及標識表標識值ID604是否等于監(jiān)督程序211在當前呼叫中所發(fā)出的相應值。如果確認成功,則監(jiān)督程序211宣布含有標識表標識值ID604的整個標識表601是無效的。在宣布無效后,軟件識別結構中含有標識表標識值ID604的標識605不能用于軟件的使用。中央防護單元130拒絕來自用戶裝置140的任何再次呼叫,該用戶裝置140含有標識表601,標識表601中含有標識表標識值TD604。操作到此全部完成。
在步驟1505,中央防護單元130使用在當前呼叫中接收到的HASH(TT)值替換其儲存的與標識表標識值ID604相關的HASH(TT)值。操作接下來繼續(xù)執(zhí)行步驟1506。
在步驟1506,中央防護單元130向用戶裝置140發(fā)出數字標注的繼續(xù)信息,該繼續(xù)信息含有接收到的信息組SGN_GC(HASH(TT),TIME OF CALL_UP,ID)。操作接下來繼續(xù)執(zhí)行步驟1507。
現在繼續(xù)說明圖11B,監(jiān)督程序211希望在規(guī)定的時間內收到繼續(xù)信息104,例如在1分鐘內收到繼續(xù)信息104。在步驟1511,監(jiān)督程序211檢驗是否在該時間期限內收到繼續(xù)信息104。如果是,則操作繼續(xù)執(zhí)行步驟1507。如果不是,則操作繼續(xù)執(zhí)行步驟1510。
在步驟1507,一旦收到數字標注的繼續(xù)信息,則監(jiān)督程序211確認從中央防護單元130收到的HASH(TT)的值是否等于監(jiān)督程序211在其呼叫信息中所發(fā)出的相應值。監(jiān)督程序211還確認繼續(xù)信息中收到的ID值是否等于標識表601中的標識表標識值ID604。還可以進行其他的檢驗,這些檢驗將結合圖13A-13B進行更詳細的說明。
此外,監(jiān)督程序211使用中央防護單元的公用鑰匙對從中央防護單元130繼續(xù)信息104中收到的數字特征進行確認。公用鑰匙318被數據的接收方用來檢驗和判別這一特征的真?zhèn)巍H绻鲜鏊写_認是成功的,則操作繼續(xù)執(zhí)行步驟1509。如果確認失敗,則操作繼續(xù)執(zhí)行步驟1510。
在步驟1509,監(jiān)督程序211使用HASH(TT)替換HASH(TT_PREV),并允許使用軟件。用戶裝置140中監(jiān)督程序211與中央防護單元130之間的安全通訊通道被關閉。操作全部完成。
在步驟1510,監(jiān)督程序211重新發(fā)送其繼續(xù)信息,操作接下來繼續(xù)執(zhí)行步驟1500。
呼叫有可能沒有完成,例如由于用戶裝置140與中央防護單元130之間的通訊中斷而造成呼叫的停止。在這種情況下,為了正確保存中央防護單元130和監(jiān)督程序211的HASH(TT)以及HASH(TT_PREV),在本發(fā)明的實施方案中采用了如下規(guī)則。一旦中央防護單元130發(fā)出了繼續(xù)信息104,則中央防護單元130就為HASH(TT_PREV)設定一個新的值,不必等待來自監(jiān)督程序211對收到該信息的確認。只有收到繼續(xù)信息104后,監(jiān)督程序211才對用于呼叫的HASH(TT)和HASH(TTPREV)值進行更新。如果監(jiān)督程序211沒有收到繼續(xù)信息104,則監(jiān)督程序211將重新發(fā)出原始呼叫信息1510。一旦收到最近的呼叫信息,則中央防護單元130將重新發(fā)出它已發(fā)過的繼續(xù)信息104。為標識表601進行的呼叫雖已發(fā)出,但這一呼叫并未完成,監(jiān)督程序211是否允許繼續(xù)使用與標識表601中標識相關的軟件在上面的呼叫規(guī)定中指定。
含有標識表標識值ID604的標識605與軟件拷貝之間建立的聯系提供了保護機制,對這些保護機制的攻擊方式是使幾臺用戶裝置同時帶有標識表601,而這些標識表601含有相同的標識表標識值ID604。如果某個潛在的軟件盜版者這樣做的話,該盜版者就可在多臺用戶裝置140上使用與標識605相關的軟件拷貝。圖11A-11B所說明的呼叫過程可阻止這樣的直接攻擊,因為中央防護單元130對監(jiān)督程序211所發(fā)出的隨機函數值HASH(TT_PREV)與中央防護單元130中所存儲的相應值之間的比較可以避免同一標識表標識值ID604從不同用戶裝置140進行的呼叫穿插出現;其中中央防護單元130所存儲的相應值來自于標識表標識值ID604的上一次呼叫。
上述的攻擊方法可通過使上述每一個企圖盜版的用戶裝置140將其隨機函數值傳遞給下一個用戶裝置140來加以改進,而下一個用戶裝置140被要求對同一標識表標識值ID604進行呼叫。本發(fā)明提供多種方法來防止這種方式的攻擊。
在本發(fā)明的某一實施方案中,標識表頭603含有用戶裝置專用表征值610。具體的用戶裝置表征值包括從用戶裝置文件系統衍生出的數據、從用戶裝置B型樹狀結構衍生出的數據或者其他與用戶裝置專用數據結構以及在磁盤或其他存儲介質上數據相關的參數和數據。但具體的表征值610并不局限于這些類型的數據。在生成用戶裝置表征值610中所用到的特征值的性質是這些特征值是用戶裝置專用的,并且變化很慢或根本不發(fā)生改變。如果用戶裝置的處理器或其他硬件或軟件組件含有唯一的系列號或其他唯一的可讀標識,則出現在用戶裝置標識表頭603中的用戶裝置表征值610可含有一些或全部這些系列號或標識。
在這一實施方案中,監(jiān)督程序211在以往K次為標識表標識值ID604所進行的呼叫中發(fā)送了標識表601TT_PREV_1...,TTPREV_K,監(jiān)督程序211在用戶裝置140中儲存并更新標識表601的指定數字K,例如K=5。中央防護單元130存儲并更新相應的隨機函數值H_1=HASH(TT_PREV_1),...,H_K=HASH(TTPREV_K)表。
現在返回到圖11A,在步驟1502,在呼叫期間,監(jiān)督程序211向中央防護單元130發(fā)送下列數據當前標識表601的隨機函數值HASH(TT)、上一次呼叫中標識表601的隨機函數值HASH(TT_PREV_1)以及標識表標識值ID604。操作接下來繼續(xù)執(zhí)行步驟1503。
在步驟1503,一旦接收到來自監(jiān)督程序211的呼叫信息,則中央防護單元130確認所收到的隨機函數值HASH(TT_PREV1)是否等于中央防護單元130存儲的值H_1。如果確認失敗,則操作繼續(xù)執(zhí)行步驟1504。如果上述確認成功,則操作繼續(xù)執(zhí)行步驟1505。
在步驟1505,中央防護單元130通過將當前接收到的值放置在表格的頂端并除去表格中最下面的值來更新隨機函數值表格。操作接下來繼續(xù)執(zhí)行步驟1506。
在步驟1506,中央防護單元130向監(jiān)督程序211發(fā)出數字標注的繼續(xù)信息104,該繼續(xù)信息包括SGN_GC(H_1,...,H_K,TIME OF CALL_UP,ID)。
由于中央防護單元130已經更新了它所接收的隨機函數值表,所以現在的H_1等于在該呼叫中接收到的隨機函數值HASH(TT)。操作接下來繼續(xù)執(zhí)行步驟1511。
現在繼續(xù)參見圖11B,在步驟1507,一旦收到上面的繼續(xù)信息104,則監(jiān)督程序211使用在以往K次呼叫中發(fā)送的標識表確認H_1是否等于HASH(TT),H_2是否等于HASH(TT_PREV1),...,H_K是否等于HASH(TT_PREV_K-1)。如果確認成功,則繼續(xù)執(zhí)行步驟1508;否則,則繼續(xù)執(zhí)行步驟1510。
在步驟1507,中央防護單元130對繼續(xù)信息104上的數字特征進行確認。如果確認失敗,則操作繼續(xù)執(zhí)行步驟1510;否則,操作繼續(xù)執(zhí)行步驟1509。
在步驟1509,監(jiān)督程序211對用戶裝置140儲存的標識表頭TT、TT_PREV_1、TT_PREV_K-1中所含有的用戶裝置表征值610進行確認。然后,監(jiān)督程序211執(zhí)行用戶裝置表征值檢驗。
在步驟1510,所收到的繼續(xù)信息104與當前的呼叫不相符,監(jiān)督程序211重新啟動呼叫過程。
圖12表明的是用戶裝置表征值的檢驗過程。在步驟1000,如果用戶裝置表征值所規(guī)定的某一數值在兩次連續(xù)呼叫的時間間隔中不希望發(fā)生改變,則監(jiān)督程序211不對以往連續(xù)發(fā)送的標識表頭601中所含有的這一規(guī)定值進行檢測,則用戶裝置表征值檢驗失敗。同樣,如果監(jiān)督程序211對以往發(fā)送的三個標識表601檢測,并發(fā)現第一個標識表頭含有的用戶裝置表征值設定值為C,第二個標識表601所存儲的相應值卻是明顯不同的C_1,而第三個標識表601所存儲的相應值又回到了設定值C,則用戶裝置表征值檢驗失敗,確認過程隨之失敗。
在步驟1003,監(jiān)督程序確定是否有其中一種狀態(tài)成立。如果有,則操作繼續(xù)執(zhí)行步驟1004,如果沒有,則操作繼續(xù)執(zhí)行步驟1005。
在步驟1004,用戶裝置表征值檢驗失敗,操作繼續(xù)執(zhí)行步驟1508(圖11B)。
在步驟1005,用戶裝置表征值檢驗成功,操作繼續(xù)執(zhí)行步驟1508(圖11B)。
現在回到圖11B,在步驟1508,如果用戶裝置表征值確認失敗,則操作繼續(xù)執(zhí)行步驟1510。如果用戶裝置表征值成功,則操作繼續(xù)執(zhí)行步驟1509。
在步驟1510,監(jiān)督程序重新發(fā)出呼叫。在本發(fā)明的另一實施方案中,監(jiān)督程序可以宣布含有標識表標識值ID604的整個標識表601無效。有標識表601被宣布無效之后,在軟件識別結構中沒有帶有標識表標識值ID604的標識可被用來批準對軟件拷貝的使用。
加強型的保護私人權利呼叫圖13A-B表明的是另一種進行保護私人權利呼叫的方法。圖16A-B所示的方法在圖11A-B所示的實施方案中加入了其他的機制。
現參見圖13A,在步驟1600,監(jiān)督程序211通過匿名通道啟動呼叫。操作接下來繼續(xù)執(zhí)行步驟1602。
在步驟1602,監(jiān)督程序211發(fā)出呼叫信息,該信息包括當前標識表601中的隨機函數值HASH(TT)、前一次呼叫中標識表601所含的隨機函數值HASH(TT_PREV)、標識表標識值ID604、用戶裝置140中時鐘的當前時間讀數以及其他一些信息組;這些信息組將在以后加以說明。操作接下來繼續(xù)執(zhí)行步驟1603。
在步驟1603,中央防護單元130確定該呼叫信息是否與已經收信的某一信息相同。如果相同,操作繼續(xù)執(zhí)行步驟1604。如果不同,則操作繼續(xù)執(zhí)行步驟1605。
在步驟1604,中央防護單元130重新發(fā)送以往發(fā)送過的繼續(xù)信息。至此,操作全部完成。
在步驟1605,中央防護單元130檢驗所收到的當前時間是否與中央防護單元時鐘的時間相一致。中央防護單元還將檢驗該標識表標識值ID604的當前呼叫時間與上次呼叫時間的時間差是否與中央防護單元所記錄的差值相符,并檢測該時間差值是否超過了呼叫時間規(guī)定允許的最大間隔值,或是是否小于呼叫間規(guī)定允許的最小間隔值。中央防護單元還將檢驗HASH(TT_PREV)是否等于HASH(TT)的最新值;這一最新值是中央防護單元從用戶裝置140接收到到的,并與標識表標識值ID604相關。操作接下來執(zhí)行步驟1606。
在步驟1606,如果所有的確定都成功,則操作繼續(xù)執(zhí)行步驟1608。如果不是,則操作繼續(xù)執(zhí)行步驟1607。
在步驟1607,中央防護單元發(fā)出一則信息,該信息表明正在發(fā)送的標識表標識值ID604是無效的。操作至此全部完成。
在步驟1608,中央防護單元使用它在當前呼叫中接收到的HASH(TT)來替換它存儲的與標識表標識值ID604相關的HASH(TT)。操作接下來繼續(xù)執(zhí)行步驟1609。
在步驟1609,中央防護單元向用戶裝置140發(fā)出數字標注的繼續(xù)信息104,該繼續(xù)信息包括所有當前和以往發(fā)送的超級校驗程序序列的隨機函數值HASH、當前和以往標識表H_1,...,H_K的隨機函數值序列、標識表標識值ID604、中央防護單元時鐘的時間讀數以及標識表標識值TD604的失效標識(如果有);超級校驗程序將在以后進行說明。繼續(xù)信息104的未標注部分是當前發(fā)送的新超級校驗程序表,本文將在以后對此進行說明。
現在繼續(xù)說明圖13B,在步驟1610,一旦收到繼續(xù)信息104,則監(jiān)督程序211將確認在繼續(xù)信息104中所接收到的標識表標識值ID604是否等于此次呼叫中標識表601所含的標識表標識值ID604。監(jiān)督程序211還將使用在以往K次呼叫中發(fā)出的標識表601來確認H_1是否等于HASH(TT),H_2是否等于HASH(TT_PREV_1),...,H_K是否等于HASH(TT_PREV_K_1)。監(jiān)督程序211還將根據這些標識表中的用戶裝置表征值進行用戶裝置表征值檢驗。監(jiān)督程序211還將確認繼續(xù)信息104中所含的失效標識不在當前的標識表TT中。監(jiān)督程序211還檢驗標識表610在時間變化的過程中表明了一個非降低的耗用量,即與每個標識相關的標識表601中的使用值是非降低性的(即或者增加或者保持不變)。最后,監(jiān)督程序211使用用戶裝置140中存儲的中央防護單元公共數字特征鑰匙來對繼續(xù)信息104中標注部分上的中央防護單元數字特征進行確認。操作接下來執(zhí)行步驟1611。
在步驟1611,如果所有確認是成功的,則操作繼續(xù)執(zhí)行步驟1613,如果不是,則操作繼續(xù)執(zhí)行步驟1612。
在步驟1612,呼叫信息被再次發(fā)出。在本發(fā)明的另一實施方案中,可將標識表標識值ID作廢,從而使軟件不能在用戶裝置140上使用。
在步驟1613,監(jiān)督程序211將HASH(TT)賦予HASH(TTPREV),并將超級校驗程序表更新,同時將用戶裝置的時鐘設定為所收到的當前時間。操作至此全部完成。
時鐘圖14表明了時鐘部分的組件。在呼叫過程中所執(zhí)行一個標準,該標準規(guī)定自上一次呼叫發(fā)生之后經過的時間為一特定值。盜版者有時通過重新設置系統時鐘來繞過這一標準。阻止這一攻擊的機理是向多方面?zhèn)魉蜁r鐘的前進情況。舉例而言,可以假定兩次呼叫間的最大時間間隔為N分鐘。每當用戶裝置140中的系統時鐘1420走過這一限度值時就會生成一個事項,該事項將使時間事項計數器1410的計數值增加。在收到繼續(xù)信息104后,時間事項計數器1410被重新設置為0。根據這種方式,即使盜版者將時鐘重新設置成以前的時間,時間事項計數器1410也將記錄下每一分鐘(或最大分鐘數)。可以使用不以分鐘計時的時間間隔來對其他的事項計數器進行更新。
在本發(fā)明的另一實施方案中,中央防護單元發(fā)往用戶裝置140的繼續(xù)信息104包括從中央防護單元時鐘讀取的當前時間值。一旦收到并確認了繼續(xù)信息104,監(jiān)督程序211將用戶裝置140中的時間事項計數器1410設定為所收到的當前時間值。此后時間事項計數器1410按上面所述的向前運行。
超級校驗程序的使用和下載用戶可在用戶裝置140上寫入用戶自己的軟件、接收其他免費的軟件并安裝這些與標識605無關的這些軟件拷貝。但在取消了它們的標識605之后,用戶裝置140有可能在用戶自編或免費軟件的偽裝下安裝某些出售方所生產軟件的盜版軟件。此外,沒有道德的出售商可能對軟件進行盜版,在對軟件進行修改后,將帶有盜版出售商標識的盜版軟件銷售出去。在本文中任何形式的盜版軟件都被稱為“侵權軟件”。除了使用侵權軟件之外,用戶裝置140有可能通過不按照該軟件拷貝標識中所包括的使用規(guī)定使用該軟件拷貝來對合法購買或租用軟件拷貝的使用權進行侵權,這種侵權被稱為“對軟件使用的侵權”。一個具體侵犯使用權的實例是,租來的游戲盤規(guī)定只能玩五次,但用戶裝置140企圖玩六次。侵犯使用權的另一實例是,當軟件拷貝是一幅數字圖像時,該軟件拷貝的使用規(guī)定不允許將該圖像打印成硬拷貝,但用戶裝置140試圖將圖像打印出來。在本發(fā)明中,通過使用超級校驗程序機制可以檢測到所有上述侵權行為。
在本發(fā)明中,超級校驗程序是數據和某些計算機程序的集合體,超級校驗程序的目的在于能對用戶裝置140上的侵權軟件以及侵犯使用權的行為進行檢測并阻止侵權的發(fā)生。在本發(fā)明的某一實施方案中,超級校驗程序還包括地址信息,該地址信息被用來指定軟件拷貝的某些組成部分,而超級校驗程序中所含有的某個程序要對這些指定的部分計算出一個數值。具體的地址信息例如是對含有“加”或“乘”運算符號的每條指令進行的說明。超級校驗程序中所含的程序首先根據地址信息從軟件拷貝中提取軟件拷貝中含有“加”和“乘”運算符號的指令的順序,然后對這一順序執(zhí)行例行程序,但將指令中的地址或注冊部分剔除出來。在本發(fā)明的某一實施方案中,超級校驗程序還含有某一數值或某一條件,該數值或條件將超級校驗程序中程序對軟件拷貝某一部分所計算出的值與超級校驗程序中所含有的某一數值發(fā)生聯系。舉例而言,超級校驗程序中含有的值為15和32,所含的條件是檢測的“加法”指令數量超過15,“乘法”指令的數量超過15但小于32。超級校驗程序中的程序確認所指定的條件是否成立。出售方或出售方的代理方可以發(fā)現在用戶中存在的對出售方權利造成侵犯的軟件拷貝。出售方可對這些侵權軟件的使用實施合法的禁止。使用本文下面將要說明的部分或全部機制,出售方可準備適當的超級校驗程序,并將超級校驗程序存放在中央防護單元中。在用戶裝置140向中央防護單元發(fā)出呼叫期間,中央防護單元向用戶裝置140發(fā)出該超級校驗程序。用戶裝置140中的監(jiān)督程序211執(zhí)行超級校驗程序中指定的計算和檢驗,并檢測是否有侵權軟件的使用。當存在侵權使用的情況時,超級校驗程序將中止該侵權使用。相似的是,出售方可以準備好用于檢測并阻止合法軟件被侵權使用的超級校驗程序,并將它存放在中央防護單元中。用戶裝置140在呼叫期間接收超級校驗程序,用戶裝置140中的監(jiān)督程序211使用該超級校驗程序對軟件拷貝的侵權使用行為進行檢測并中止這些侵權使用行為。
超級校驗程序中所含的一種類型數據就是針對侵權軟件SW某些部分所計算出的隨機函數值表。H是超級校驗程序中指定的隨機函數。LHSH(SW)是用指定的隨機函數H對軟件SW指定部分所計算出的隨機函數值表。軟件SW的某一部分是指構成SW的文本或數據,或者是指構成軟件SW的文本或數據部分的集合,其中這些部分不一定連續(xù)的,它們可以有重疊。
隨機函數F是將數據X影射到數據F(X)上的數學函數,這樣情況下,如果X和Y是相等的,則很可能F(X)和F(Y)是不等的。在一個具體的隨機函數中,X可以是一個字節(jié)序列。P是一個任意選定的64位素數,但選定之后就保持不再改變。字節(jié)序列X被看作是一個數字(寫到基數256,其中字節(jié)是該數字的位數),F(X)=Xmodp。因此,無論X有多長,F(X)都是一個64位的數字串。另一個具體的隨機函數是特征函數I(X)=X,這一函數只是簡單地復制數字串X。
如果LHASH(SW)是中央防護單元發(fā)往用戶裝置140的超級校驗程序中所含有的隨機函數值表,則監(jiān)督程序211使用這一表通過進行隨機函數值檢驗來檢測是否有侵權的軟件或對軟件的侵權使用。在同一地址隨機函數值檢驗中,監(jiān)督程序211使用超級校驗程序中指定的隨機函數H來計算用戶裝置140所使用軟件SW_1中某些部分的隨機函數值,SW_1這些部分與SW的部分是相互對應的,而SW這些部分的隨機函數值在準備LASH(SW)時已被計算過了。舉例而言,如果SW是一個文字矩陣,SW的某一部分被指定是SW某些詞第一個字母組成的序列,這些詞開始于第1000個詞終于第2000詞;則SW_1中相對應的部分是SW_1中始于第1000個詞終于第2000個詞的每個詞第一個字母組成的序列。SW_1被計算出的同一地址隨機函數值表是LHASH(SW_1)。通過比較在相應地址中LHASH(SW)和LHASH(SW_1)所含的隨機函數值可繼續(xù)進行同一地址的隨機函數值檢驗,即LHASH(SW)中的第一值與LHASH(SW_1)中的第一值進行比較,第二個值與第二個值進行比較,以此類推。如果這些比較值的超級校驗程序中所指定的數字有一個以上是相等的,則監(jiān)督程序繼續(xù)操作,并認為SW和SW_1是相等的,或者SW_1是SW稍加改變的形式。
在通用地址隨機函數值檢驗中,監(jiān)督程序211根據超級校驗程序中的規(guī)定選擇用戶裝置140上運行軟件SW_1的某些部分,并使用H計算出所選擇部分的隨機函數值L(SW_1)。舉例而言,所選擇的部分可以是SW_1中一系列連續(xù)單詞的第一個字母組成的序列,其中每個系列由1000個詞組成。通過對LHSAH(SW_1)和L(SW_1)共有的隨機函數值進行計數可以繼續(xù)進行通用地址隨機函數值檢驗;這些共有的隨機函數值與這些表中的地址無關。然后監(jiān)督程序211檢驗所得到的計數是否大于超級校驗程序中所規(guī)定的數值;如果是,則監(jiān)督程序211在假定SW和SW_1是相等的或SW_1只是SW稍加變更的形式的基礎上繼續(xù)執(zhí)行操作。
超級校驗程序還包括加權值和某些規(guī)定,這些規(guī)定表明了監(jiān)督程序211應在何時執(zhí)行超級校驗程序中所含有的各種檢驗。如果用戶裝置140中儲存的兩個超級校驗程序SPT_1和SPT_2分別與加權值W=1和W=7相對應,則該用戶裝置140所含的監(jiān)督程序211每執(zhí)行SPT_2所含的檢驗7次以及運行SPT_2中所含程序7次,監(jiān)督程序211才執(zhí)行SPT_1一次。如果超級校驗程序包括程序P,則超級校驗程序中的規(guī)定可以指定當運行超級校驗程序時監(jiān)督程序要執(zhí)行P所要遵從的條件。一個具體的規(guī)定是,只有當被判別是否是侵權軟件的SW_1大小大于規(guī)定的數值時,才能執(zhí)行P。
超級校驗程序還包括由監(jiān)督程序211調用的計算機程序,監(jiān)督程序211調用該計算機程序是為了檢測用戶裝置140上所用的軟件SW_1是否為侵權軟件,或者是為了檢測用戶裝置140上使用的合法軟件是否沒有按其使用規(guī)定使用。具體的檢測軟件包括以下軟件,但具體的檢測軟件并不局限于此某個實施盜版的出售方通過獲取另一出售方的合法軟件SW并以SW_1的解密版銷售軟件SW來侵犯另一出售方的權利,其中每套安裝的軟件拷貝是由不同的解密鑰匙進行解密。這種攻擊會突破上述隨機函數值檢驗機制。為了反擊這種攻擊,合法的出售方建立某種超級校驗程序,該超級校驗程序含有適當的軟件SW某些部分的隨機函數值表LHASH(SW)以及解密程序。當用戶裝置140使用侵權軟件SW_1時,監(jiān)督程序211調用解密程序,該程序可識別用于將SW_1轉成可執(zhí)行狀態(tài)的解密鑰匙。一旦SW_1被解密,則監(jiān)督程序211按上面所述的方式使用超級校驗程序中所含的LHASH(SW)執(zhí)行隨機函數值檢驗。
超級校驗程序中所含的其他類型的程序對用戶裝置140中所用軟件拷貝SW_1的操作特征進行監(jiān)測,并將觀測到的特征與超級校驗程序中所含的數據進行匹配檢驗。應用程序具體的操作特征包括該應用程序正在實施的專有程序庫調用、這些調用的頻率以及觸發(fā)這些調用的條件。對于選擇適當的特征而言,如果所觀察到的軟件SW_1操作特征比超級校驗程序中規(guī)定的參數值更接近于合法出售方軟件SW的操作特性,則證明SW_1是對SW的侵權軟件。
另一對侵權進行檢測的程序是用于對可視游戲軟件侵權的檢測。在這一實例中,合法的游戲SW含有一幅龍的畫面。侵權的軟件SW_1是游戲SW的改寫版;對用戶而言,這二個軟件看起來是一樣的。因此,SW_1所展現的龍與SW所展現的龍是同樣的,或者幾乎是同樣的。在這一情況下,超級校驗程序所含的侵權檢測程序對在用戶裝置140上運行的游戲軟件SW_1的執(zhí)行過程進行監(jiān)測,并捕捉到SW_1所生成的幀緩沖內容。侵權檢測程序將捕捉到的幀緩沖內容與超級校驗程序中所儲存的像素矩陣進行比較,該像素矩陣代表游戲軟件SW中龍的圖像。如果幀緩沖內容和超級校驗程序中所儲存的像素矩陣相互的接近程度超過了超級校驗程序中所規(guī)定的參數,則侵權檢測程序認定SW_1是侵權軟件,并繼續(xù)進行工作。
在本發(fā)明的另一實施方案中,超級校驗程序可包括另一程序,該程序將檢驗軟件拷貝C是否是受保護軟件SW的變化版本。具體的這種程序可對軟件SW的某些統計性質進行計算,例如對SW的迭代數量、過程數量或浮點指令數量進行計算;然后確定軟件拷貝C是否具有相同的數量。如果有相同的數量,則證明軟件C是受保護軟件SW的異形版本。
中央防護單元在繼續(xù)信息140中發(fā)送超級校驗程序。這些被發(fā)送的超級校驗程序被稱為新超級校驗程序。以前發(fā)送的超級校驗程序或已安裝在用戶裝置中的超級校驗程序被稱為舊超級校驗程序。這二種超級校驗程序被合稱為總超級校驗程序。中央防護單元還計算總超級校驗程序的隨機函數值,這一隨機函數值被標記為HASH(總超級校驗程序)。
不可變隨機函數H是一個校驗函數;該函數的性質是,在給定X的情況下很容易計算H(X),但該函數使難在X與Y不同的情況下產生H(X)=H(Y)的結果。“使難”一詞是指在目前的技術水平下,對X這樣大小的變量進行計算所需的時間實際上是不可行的。聯邦信息處理標準SHA_1可提供具體的不可變隨機函數實例,該標準由國家標準協會出版。在這一實施方案中,公開的不可變隨機函數被簡稱為HASH。
只有當隨機函數值與所接收的超級校驗程序的隨機函數值計算結果以及用戶裝置中已存在的超級校驗程序的隨機函數值計算結果相等時,監(jiān)督程序211才接受繼續(xù)信息104。在本發(fā)明的另一實施方案中,HASH(新超級校驗程序)被發(fā)送,中央防護單元指示用戶裝置140刪除以前儲存的超級校驗程序。在這種情況下,只有當接收到的隨機函數值HASH(總超級校驗程序)與所接收的超級校驗程序的隨機函數值計算結果相等時,監(jiān)督程序211才接受繼續(xù)信息104。
在本發(fā)明中還含有這些機理的其他變化形式。一種變化是在超級校驗程序中略去加權值,這樣監(jiān)督程序211選擇執(zhí)行的所有超級校驗程序具有等同的條件概率。
在另一種變化形式中,用戶裝置上的監(jiān)督程序211可根據軟件拷貝SW正在被侵權的跡象要求中央防護單元發(fā)送用戶裝置140所用軟件拷貝SW的超級校驗程序。這種變化形式只有當被認為不會對私人權利造成侵犯的情況下才可使用,因為這種變化形式識別用戶裝置140正在非法使用的軟件。
在另一種變化形式中,當對某一計算機程序建立超級校驗程序時,隨機函數值計算結果可以處理幾種等同的運算符號。當不同的運算符號基于自變量有基本相同的函數功能時,隨機函數值計算結果的這種功能是十分有用的。此外,與超級校驗程序相關的程序可以忽略某些非操作性指令,或者忽略某些指令的某些部分;比如忽略指令中所含的內存地址或注冊地址。
一旦檢測到用戶裝置上使用了侵權軟件或者檢測到對合法軟件的侵權使用,監(jiān)督程序211可采取行動中止軟件的使用。對用戶裝置140上侵權軟件所采取的行動具有多種方式,在09/305,572號美國專利申請中對這些行動方式做了說明,該美國專利申請于1999年5月5日提交,在此通過引證被并入本文。這些行動包括向用戶裝置140發(fā)出警告信息直至關閉用戶裝置140。一種變化形式是要求中央防護單元進行引導。在本發(fā)明的某一實施方案中,不可能對使用侵權軟件的用戶采取合法的行動,因為在中央防護單元呼叫期間每個用戶裝置140是處于匿名狀態(tài)的。此外,對用戶裝置140存在有侵權軟件的檢測只在用戶裝置140內有效,這一檢測不被泄露給任何外部的實體。
懲罰性措施在某些時間用戶裝置140沒有遇到中央防護單元(中央防護單元是高度分散的,所以當出現網絡故障時可發(fā)生這種情況)。在這些情況下,即使用戶裝置140在應該發(fā)出呼叫時沒能發(fā)出呼叫,監(jiān)督程序211所采取的措施也不能通過增加措施的力度來中止用戶裝置140上的操作過程。監(jiān)督程序211可實施下列懲罰性措施(1)使裝置的硬盤失能;(2)使顯示單元的顏色失效;(3)減少虛擬內存的空間;(4)用許多小文件充滿磁盤。
對于這些懲罰性措施而言,解除懲罰性措施的方法存在被稱為LOCFILE的文件中,該文件使用中央防護單元中的公用鑰匙進行解密。所進行的下一次呼叫中,中央防護單元對LOCFILE進行解密,并將它做為繼續(xù)信息104的一部分發(fā)回。監(jiān)督程序211使用LOCFILE中的解除方法使用戶裝置140回到最大操作負荷狀態(tài)。
批準對軟件拷貝的使用圖15表明的是確認步驟的流程圖,這些步驟將檢驗軟件拷貝是否可以被使用。
在步驟1301,用戶裝置140使用軟件拷貝SW(舉例而言,如果該軟件是一個程序,則用戶裝置140執(zhí)行該程序)。操作接下來繼續(xù)執(zhí)行步驟1302。
在步驟1302,用戶裝置140中的監(jiān)督程序211使用用戶裝置140中所儲存的一個或多個超級校驗程序對軟件拷貝SW進行檢驗。如果超級校驗程序中規(guī)定的隨機函數值檢驗以及超級校驗程序中所含程序的執(zhí)行結果證明SW是一套侵權軟件拷貝或者證明SW是出售方提供的合法軟件,則該超級校驗程序被認為是與軟件拷貝SW相匹配的。如果超級校驗程序不相配,則操作繼續(xù)執(zhí)行步驟1303。
在步驟1303,進行一項檢驗以確定與軟件拷貝SW相關的標識605是否存在于用戶裝置標識表601中。如果不存在,操作繼續(xù)執(zhí)行步驟1306。如果在步驟1303中找到了與軟件拷貝SW相關的標識,則繼續(xù)執(zhí)行步驟1307。
在步驟1304,進行一項檢驗以確定與軟件拷貝SW相關的標識605是否存于用戶裝置標識表601中。如果不存在,則操作繼續(xù)執(zhí)行步驟1305。如找到了與軟件拷貝SW相關的標識,則繼續(xù)執(zhí)行步聚1310。
在步驟1305,監(jiān)督程序批準對軟件拷貝SW的使用。操作過程至此全部完成。
在步驟1306,軟件拷貝被認作是侵權軟件,不允許對此軟件進行使用。操作至此全部完成。
在步驟1307,標識中所含的出售方的名稱(或標識中用于簽署購買訂單的數字特征的擁有方)與所有相匹配的超級校驗程序中所含的出售方名稱進行校驗。如果這些名稱中有任何一個不匹配,則軟件拷貝SW被附上了錯誤的標識,操作接下來繼續(xù)執(zhí)行步驟1306。如果匹配的超級校驗程序中所含有的所有出售方名稱與標識中所含的出售方名稱相等,則操作繼續(xù)執(zhí)行步驟1310。
在步驟1310,要進行幾項測試。首先是計算軟件拷貝SW的隨機函數值,并將計算結果與標識中所含的隨機函數值進行比較。其次是對標識中的使用規(guī)定進行檢驗以確認當前對軟件拷貝的使用是經過允許的。操作接下來繼續(xù)執(zhí)行步驟1315。
在步驟1315,對測試的結果進行確認。如果所有的確認成功,則操作繼續(xù)執(zhí)行步驟1305。如果不是,則操作繼續(xù)執(zhí)行步驟1306。
操作系統之外的監(jiān)督程序在本發(fā)明的某一實施方案中,監(jiān)督程序211或是操作系統的一部分,或是與操作系統相連。在本發(fā)明的另一實施方案中,一個或多個監(jiān)督程序211可寄存在操作系統之外。監(jiān)督程序211必須存在,這可以在用戶裝置140上使用本發(fā)明所保護的軟件拷貝。通過將某些進程加入到軟件拷貝所需的監(jiān)督程序211中即可實現這一點。舉例而言,監(jiān)督程序211中的進程可以執(zhí)行使用軟件拷貝所需的多個操作系統調用。此外,每個監(jiān)督程序211都進行標識檢驗過程。由于購買和收回獨立于操作系統,所以這二事項不會改變。
零信息呼叫圖16A-B是表明另一種呼叫方法步驟的流程圖。
在圖16A-B所示的本發(fā)明另一實施方案中,呼叫期間所發(fā)出的信息量比圖11A-B所示的實施方案中呼叫所發(fā)出的的信息量少。在圖16A-B所示的實施方案中,在呼叫期間用戶裝置140發(fā)向中央防護單元的信息與用戶裝置140中所安裝的軟件以及數據狀態(tài)無關。
該實施方案認定已經存在監(jiān)督程序211可安全讀取的標識表標識值ID604。該標識表標識值ID604來自于稀疏組,其作用是避免對服務攻擊的拒絕。呼叫按上述的呼叫規(guī)定進行。購買、撤回以及軟件拷貝使用的生效均按上述進行。唯一可以改變的協議就是呼叫本身。與保護私人權利的呼叫相似,零信息呼叫也是通過安全的匿名通訊通道進行。
對該協議的一個特殊的概念是“早期呼叫”概念。早期呼叫是在針對同一標識表標識值ID604所發(fā)出的上一次呼叫信息后不到MinDif分鐘內出現的帶有標識表標識值ID604呼叫信息的呼叫,其中MinDif是呼叫規(guī)定中的參數。
現在參見圖16A,在步驟1700,可使用圖11A-B所示的SSL協議在用戶裝置140和中央防護單元之間建立起安全通訊通道。操作接下來繼續(xù)執(zhí)行步驟1702。
在步驟1702,用戶裝置140中的監(jiān)督程序211向中央防護單元發(fā)出標識表標識值ID6014和當前時間值CurT。監(jiān)督程序211保留這一當前時間值CurT。在本發(fā)明的另一實施方案中,監(jiān)督程序211還可發(fā)送NONCE值N。操作接下來繼續(xù)執(zhí)行步驟1703。
在步驟1703,中央防護單元確認時間值CurT是否與中央防護單元中所記錄的時間相近,并確認中央防護單元上一次收到帶有標識表標識值ID604呼叫信息的時間不是太近,即上一次的呼叫時間至少比CurT早MinDif分鐘,其中MinDif是呼叫規(guī)定中的參數。如果是這樣,操作繼續(xù)執(zhí)行步驟1706。如果不是,則操作繼續(xù)執(zhí)行步驟1704。
在本發(fā)明的另一實施方案中,即使當前帶有標識表標識值ID604的呼叫是早期呼叫,操作仍可繼續(xù)執(zhí)行步驟1706。在這一實施方案中,每臺用戶裝置140都會分配到早期呼叫,例如每天分配到5次早期呼叫。如果早期呼叫的次數不超過分配值,則中央防護單元不將其當做早期呼叫處理,中央防護單元繼續(xù)執(zhí)行步驟1706。
在步驟1704,中央防護單元不向用戶裝置140返回繼續(xù)信息104。操作至此全部完成。
在步驟1706,中央防護單元記錄下當前呼叫的時間,并將該時間與標識表標識值ID604相連。中央防護單元生成數字標注信息SGN_GC(ID,CurT,N,HASH(總超級校驗程序)),其中總超級校驗程序是由扇區(qū)超級校驗程序使用和下載方法所規(guī)定。中央防護單元發(fā)往監(jiān)督程序211的繼續(xù)信息包括數字標注信息和新超級校驗程序。操作接下來繼續(xù)執(zhí)行步驟1707。
現在繼續(xù)參見圖16B。在步驟1707,一旦收到繼續(xù)信息104,監(jiān)督程序211使用中央防護單元中的公用鑰匙318來確認在繼續(xù)信息104中所收到的中央防護單元的數字特征。監(jiān)督程序211確認來自中央防護單元的標識表標識值ID604、NONCE值N以及CurT是否等于監(jiān)督程序211在創(chuàng)建其呼叫時創(chuàng)建的相應值。監(jiān)督程序211還可選擇檢驗CurT是否接近于監(jiān)督程序211所記錄的時間。最后,監(jiān)督程序211計算其已收到的所有超級檢驗程序的隨機函數值,其中包括計算當前收到的新超級校驗程序的隨機函數值。監(jiān)督程序211還將確認繼續(xù)信息104中的第4信息組HASH(總超級校驗程序)是否等于計算出的隨機函數值。操作接下來繼續(xù)執(zhí)行步驟1708。
在步驟1708,如果上述確認全部成功,則操作繼續(xù)執(zhí)行步驟1709。如果確認失敗,則操作繼續(xù)執(zhí)行步驟1710。
在步驟1709,監(jiān)督程序211將新超級校驗程序附加在標識表601的現有超級校驗程序上,并繼續(xù)執(zhí)行操作。
在步驟1710,監(jiān)督程序211采取懲罰性措施,監(jiān)督程序211和中央防護單元之間的安全通訊通道被關閉。
如果監(jiān)督程序211從未收到呼叫信息的回應繼續(xù)信息104,則監(jiān)督程序211只是簡單地再發(fā)出帶有當前時間CurT的新呼叫信息(與保護私人權利呼叫方法的情況不同,這里并不是重復以前的呼叫信息)。當使用這種協議時,唯一在呼叫失敗時需要保存的數據是購買方所購買的標識表標識值604和標識605。在這種情況下,下一次的呼叫信息含有一個說明,該說明指出由于所有舊的超級校檢程序已經丟失,監(jiān)督程序211需要全套的超級校驗程序。對于標識表標識值ID604而言,可以分配給一定的呼叫失敗次數。
雖然本發(fā)明是結合優(yōu)選實施方案進行具體說明和描述的,但應該理解的是,在不脫離和超過本文所附權利要求所界定的本發(fā)明范圍的情況下,本技術領域的技術人員可以對本發(fā)明實施方案的形式和細節(jié)做出各種修改。
權利要求
1.一種將第一軟件模塊與第二軟件模塊連接起來的方法,該方法包括以下步驟在所述的第一軟件模塊中存儲公共鑰匙;將所述公共鑰匙擁有方使用數字方式標注的存根與第二軟件模塊關聯起來;計算出所述第二軟件模塊某一部分的隨機函數值;一旦使用所述的公共鑰匙對所述存根上的數字特征進行了確認,并確認所述的隨機函數計算值與所述數字標注存根所含的隨機函數值相等后,將所述第一軟件模塊與所述第二軟件模塊連接起來。
2.如權利要求1中的方法,其中所述的第二軟件模塊是多個要進行連接的軟件模塊中的一個,所述的第一軟件模塊含有多個以前連接的軟件模塊。
3.如權利要求1中的方法,其中計算及確認步驟由專用的處理器執(zhí)行。
4.一種將第一軟件模塊與第二軟件模塊連接起來的方法,該方法包括以下步驟在所述的第一軟件模塊中存儲第一隨機函數值;對所述第二軟件模塊所述內容的某一部分計算出第二隨機函數值;在確認所述的第二隨機函數值與所述的第一隨機函數值相等后,將所述的第一軟件模塊與所述的第二軟件模塊連接起來。
5.如權利要求4中的方法,其中所述的第二軟件模塊是多個要進行連接的軟件模塊中的一個,所述的第一軟件模塊含有多個以前連接的軟件模塊。
6.如權利要求4中的方法,其中計算及確認步驟由專用的處理器執(zhí)行。
7.一種用戶裝置,其包括如下第一存儲模塊;第二存儲模塊,軟件模塊儲存在第二存儲模塊中,檢驗軟件存儲在所述的第一存儲模塊中,檢驗軟件通過計算所述部分的隨機函數值,并將計算出的隨機函數值與檢驗軟件中所存儲的隨機函數值進行比較來確認所述軟件模塊的某一部分是否是經過授權的。
8.如權利要求7中的用戶裝置,其中所述的存儲模塊很難通過軟件工具加以修改。
9.如權利要求7中的用戶裝置,其還包括位于所述第一存儲模塊內的公共鑰匙;位于所述第一存儲模塊內的另一檢驗軟件;位于所述第二存儲模塊內的數字標注存根,該存根與所述的第二軟件模塊相關,所述的另一檢驗軟件使用所述的公共鑰匙對所述第二軟件模塊的某一部分計算出隨機函數值,所述的數字標注存根含有計算隨機函數值上的數字特征。
10.一種用戶裝置,其包括如下第一存儲模塊,其內部儲存有公用鑰匙和檢驗軟件;第二存儲模塊,第二存儲模塊儲存有軟件模塊以及與所述第二軟件模塊相關的數字標注存根。所述的檢驗軟件使用所述的公共鑰匙計算出所述第二軟件模塊某一部分的隨機函數值;與所述第二軟件模塊相關的數字標注存根含有計算出隨機函數值上的數字特征。
11.如權利要求10中的用戶裝置,其還包括位于所述第一存儲模塊中的隨機函數值,其中所述的檢驗軟件還通過計算所述部分的隨機函數值,并將計算出的隨機函數值與所述檢驗軟件中所儲存的隨機函數值進行比較來確認所述第二軟件模塊的某一部分是否是經過授權的。
12.一種軟件鎖程序,其包括如下某個數值;某個進行計算的函數;對內存中所儲存的軟件模塊進行檢驗的工具;這些工具通過使用所述的函數對所述軟件模塊的地址序列進行計算并對計算結果和所述的數值進行比較來執(zhí)行檢驗過程。
13.如權利要求12中的軟件鎖程序,其中所述的函數是隨機函數,所述的檢驗工具計算所述地址序列的隨機函數值,并將計算結果與所述的數值進行比較。
14.如權利要求12中的軟件鎖程序,其還包括軟件鎖措施;實施軟件鎖措施的工具,這些工具根據所述比較的結果來執(zhí)行軟件鎖中的措施。
15.如權利要求14中的軟件鎖程序,其中軟件鎖程序正在用戶裝置上面運行,所述的軟件鎖措施包括中止用戶裝置的操作。
16.如權利要求12中的軟件鎖程序,其還包括多個軟件鎖措施;至少執(zhí)行一種措施的工具,這些工具根據所述比較的結果來執(zhí)行軟件鎖中的措施。
17.如權利要求12中的軟件鎖程序,其還包括執(zhí)行必備檢驗的工具;根據必備檢驗的結果來決定是否對所述軟件模塊的地址序列進行函數計算的工具。
18.如權利要求12中的軟件鎖程序,其還包括多個地址序列;多個存儲的數值。
19.如權利要求18中的軟件鎖程序,其還包括多個軟件鎖措施;至少執(zhí)行一種所述措施的工具,這些工具根據所述函數對所述多個地址序列計算出的值與所述儲存進行比較的結果來執(zhí)行所述的措施。
20.如權利要求18中的軟件鎖程序,其還包括多個內存地址;選擇軟件模塊的工具;對所述內存地址中軟件模塊的運行開始時間和運行結束時間進行存儲的工具。
21.如權利要求12中的軟件鎖程序,其中所述的軟件鎖程序是另一程序的軟件鎖區(qū)域中所存儲的某個子程序。
22.如權利要求21中的軟件鎖程序,其中所述的子程序根據所述另一程序加載時的條件而被存儲在某一地址的軟件鎖扇區(qū)內。
23.如權利要求21中的軟件鎖程序,其中所述子程序的地址在所述的子程序加載之后發(fā)生改變。
24.如權利要求21中的軟件鎖程序,其中對所述子程序的調用取決于所述另一程序加載時的條件。
25.如權利要求21中的軟件鎖程序,其中在所述子程序加載之后,對所述子程序的調用發(fā)生改變。
26.如權利要求14中的軟件鎖措施,其中所述的軟件鎖措施包括在軟件鎖區(qū)域內移動其他的軟件鎖子程序。
27.一種標識表,其包括如下標識表的標識,該標識帶有某個數值;軟件拷貝的標識,所述的標識含有所述的標識表標識值以及所述軟件拷貝某一部分的隨機函數值;數字標注信息,所述的數字標注信息含有所述的標識表標識值和隨機函數值。
28.如權利要求27中的標識表,其中所述的標識還包括使用規(guī)定,所述的數字標注信息還包括使用規(guī)定。
29.如權利要求27中的標識表,其中所述的標識還包括名稱,所述的數字標注信息還包括名稱。
30.如權利要求27中的標識表,其還包括中央防護單元在中央防護單元以前呼叫中發(fā)出的標識表的隨機函數值。
31.如權利要求27中的標識表,其還包括一個表頭,所述的表頭含有中央防護單元在中央防護單元以前呼叫中發(fā)出的繼續(xù)信息。
32.如權利要求27中的標識表,其還包括所述軟件拷貝的使用統計數字。
33.一種購買軟件的方法,該方法包括以下步驟由購買者創(chuàng)建某一數據結構,該數據結構包括與用戶裝置中標識表相關的標識表標識值以及所述軟件的標識;由所述的購買者計算出所述數據結構的隨機函數值;購買者向出售者發(fā)出信息,所述的信息含有隨機函數值以及所述軟件的標識。
34.如權利要求33中的方法,其還包括以下步驟一旦收到所述的信息,所述的出售方使用數字對所述的信息進行標注,并將所標注的信息返回給所述的購買者;監(jiān)督程序使用所述出售方的公用鑰匙對所述標注信息上的數字特征進行確認;監(jiān)督程序確認所述的標注信息含有所述購買者發(fā)出的所述信息。
35.如權利要求33中的方法,其還包括以下步驟在發(fā)送所述信息前,在所述購買方和所述出售方之間建立安全通訊通道。
36.如權利要求34中的方法,其還包括以下步驟在所述軟件標識中存儲所述軟件某一部分的隨機函數值;使用所述的監(jiān)督程序確認所述軟件標識中的所述隨機函數值等于所述軟件所述部分的隨機函數值計算值。
37.如權利要求34中的方法,其還包括以下步驟使用所述的監(jiān)督程序將所述軟件的標識存儲在所述的標識表中;其中所述的標識含有標識表標識值、所述的購買者創(chuàng)建的數據結構以及所述的標注信息。
38.如權利要求33中的方法,其中所述數據結構還包括使用規(guī)定,所述的信息還包括所述的使用規(guī)定。
39.如權利要求33中的方法,其中所述的數據結構還包括只出現一次的新隨機選取值。
40.如權利要求33中的方法,其中所述的信息還包括對所述軟件進行付款的證明。
41.一種取消用戶裝置中軟件拷貝的方法,該方法包括以下步驟使用監(jiān)督程序取消所述用戶裝置內標識表中與所述軟件拷貝相關的標識,所述的標識含有數字標注部分以及標識表標識值;在所述用戶裝置與出售方之間建立通訊通道;所述的用戶裝置通過所述的通訊通道向所述的出售方發(fā)送所述的標識;所述的出售方使用出售方的公用鑰匙對所述數字標注部分上的所述數字特征進行確認;由所述的出售方讀取所述的標識表標識值。
42.如權利要求41中的方法,其還包括以下步驟所述的出售方向所述標識的購買方發(fā)出信用證書。
43.如權利要求41中的方法,其還包括以下步驟所述的出售方向中央防護單元發(fā)送所述的數字標注部分以及所述的標識表標識值;中央防護單元存儲所述標識的數字標注部分;所述的中央防護單元將所述標識的數字標注部分與所述的標識表標識值連接起來。
44.如權利要求43中的方法,其還包括以下步驟所述的中央防護單元向所述的用戶裝置中所述監(jiān)督程序發(fā)送繼續(xù)信息,所述的繼續(xù)信息包括所述標識的所述數字標注部分以及所述的標識表標識值。
45.如權利要求44中的方法,其還包括以下步驟所述的監(jiān)督程序確認帶有所述標識表標識值的標識中的所述數字標注部分不存儲在所述的標識表中。
46.一種對用戶裝置上的軟件使用進行監(jiān)督的方法,該方法包括以下步驟所述用戶裝置中的監(jiān)督程序計算標識表的第一隨機函數值;所述的監(jiān)督程序向中央防護單元發(fā)送呼叫信息,所述的呼叫信息含有所述的第一隨機函數值、所述標識表的標識值以及在以前呼叫信息中發(fā)送的所述標識表的第二隨機函數值;所述的中央防護單元確認在所述以前呼叫信息中所發(fā)送的所述隨機函數值是所述中央防護單元所存儲的隨機函數值表中最近所存儲的值,并確認該隨機函數值與所述標識表的標識值相關;一旦中央防護單元的確認成功,則將所收到的第一標識表隨機函數值附在所述的隨機函數值表后,所述的隨機函數值表與所述標識表的標識值相關;所述的中央防護單元向所述的監(jiān)督程序發(fā)送數字標注的繼續(xù)信息,所述的繼續(xù)信息包括所述的呼叫信息。
47.如權利要求46中的方法,其還包括以下步驟所述的監(jiān)督程序確認所述中央防護單元的數字標注信息與所述呼叫信息中的相應部分是相等的。
48.如權利要求47中的方法,其還包括以下步驟一旦所述的確認失敗,所述的監(jiān)督程序向所述的中央防護單元發(fā)出新的呼叫。
49.如權利要求46中的方法,其中所述的中央防護單元將所收到的呼叫信息和所述的繼續(xù)信息存儲起來,并將所存儲的這些信息與所述的標識表標識值聯系起來。
50.如權利要求49中的方法,其還包括以下步驟一旦收到來自監(jiān)督程序的信息,并在確認所收到的呼叫信息等于所存儲的呼叫信息后,所述的中央防護單元發(fā)出所儲存的繼續(xù)信息。
51.如權利要求46中的方法,其中所述的確認步驟還包括以下步驟一旦所述的確認失敗,所述的中央防護單元向正在發(fā)出呼叫的監(jiān)督程序發(fā)出數字標注的信息以表明確認出現失敗。
52.如權利要求51中的方法,其還包括以下步驟一旦收到來自所述中央防護單元的數字標注信息,監(jiān)督程序將對所述的標識表進行作廢處理。
53.如權利要求46中的方法,其中確認還包括以下步驟一旦所述的確認出現失敗,所述的中央防護單元拒絕含有所述標識表標識值的未來呼叫。
54.如權利要求47中的方法,其還包括以下步驟所述的監(jiān)督程序使用所述當前呼叫信息所發(fā)送標識表中的所述隨機函數值來替換所述標識表中以前呼叫信息所發(fā)送的所述隨機函數值。
55.如權利要求47中的方法,其還包括以下步驟所述的監(jiān)督程序使用在當前呼叫中所收到的所述繼續(xù)信息來替換所述標識表在以前呼叫中所收到的繼續(xù)信息。
56.如權利要求46中的方法,其中所述的發(fā)往中央防護單元的呼叫是在操作系統或所述的監(jiān)督程序每次被加載到所述用戶裝置的內存中時發(fā)生的。
57.如權利要求47中的方法,其還包括以下步驟所述的監(jiān)督程序使用一個或多個事項計數器測定第一次呼叫中央防護單元和第二次呼叫中央防護單元之間的時間間隔。
58.如權利要求57中的方法,其中所述的事項計數器按時鐘的記錄定期進行更新。
59.如權利要求57中的方法,其還包括以下步驟所述的中央防護單元儲存所述繼續(xù)信息中的當前時間值;所述的監(jiān)督程序將事項計數器設定為所述的當前時間。
60.如權利要求47中的方法,其還包括以下步驟在所述的標識表中存儲用戶裝置表征值;所述的監(jiān)督程序存儲多個標識表,所述的標識表含有標識表標識值,這些標識表的隨機函數值是在最近多次的呼叫中發(fā)往所述的中央防護單元;所述的中央防護單元在所述的繼續(xù)信息中存儲所述標識表的多個隨機函數值,這些隨機函數值是在最近多次的呼叫中發(fā)送的;一旦收到所述的繼續(xù)信息,所述的監(jiān)督程序計算出所儲存的多個標識表的隨機函數值,并確認所述的隨機函數值與所述繼續(xù)信息中的相應值是否相等。
61.如權利要求60中的方法,其還包括以下步驟所述的監(jiān)督程序檢驗所述最近多次呼叫中所發(fā)送標識表中的用戶裝置表征值是否屬于多個用戶裝置。
62.如權利要求61中的方法,其中檢驗還包括以下步驟在所述的多個標識表中尋找兩個連續(xù)的標識表,這兩個標識表中所含用戶裝置表征值的差異超過了相應的規(guī)定值。
63.如權利要求62中的方法,其中檢驗還包括以下步驟在所述的標識表中尋找第一標識表、第二標識表和第三標識表,發(fā)送第二標識表的呼叫晚于發(fā)送第一標識表的呼叫,發(fā)送第三標識表的呼叫晚于發(fā)送第二標識表的呼叫。其中存儲在第一標識表和第二標識表中的用戶裝置表征值差異超過了對這一差別的規(guī)定值,存儲在第二標識表和第三標識表中的用戶裝置表征值差異小于對這一差別的規(guī)定值。
64.如權利要求61中的方法,其還包括以下步驟所述的監(jiān)督程序向所述的中央防護單元提交所述確認的結果;一旦確認最近多次呼叫中所發(fā)送的標識表屬于多個用戶裝置,則中央防護單元廢除含有所述標識表標識值的未來呼叫信息。
65.如權利要求47中的方法,其中所述的呼叫信息含有只出現一次的新的隨機選取值。
66.如權利要求46中的方法,其中所述的信息含有超級校驗程序。
67.如權利要求66中的方法,其還包括以下步驟所述中央防護單元計算在以前呼叫中發(fā)往所述監(jiān)督程序的繼續(xù)信息中所含超級校驗程序某一部分的隨機函數值,并計算所述繼續(xù)信息中超級校驗程序某一部分的隨機函數值;所述的中央防護單元將所述的隨機函數值儲存在發(fā)往所述監(jiān)督程序的所述繼續(xù)信息中;所述的中央防護單元確認所述超級校驗程序相應部分的隨機函數值以及所述繼續(xù)信息中所含的隨機函數值與所接收到的隨機函數值相等;所述的監(jiān)督程序將所述新的超級校驗程序附加在所述用戶裝置所存儲的超級校驗程序之后。
68.如權利要求46中的方法,其中所述的呼叫信息包括所述用戶裝置上的當前用戶裝置時間。
69.如權利要求68中的方法,其中確認還包括以下步驟所述的中央防護單元確認所述的當前用戶裝置時間是否在所述中央防護單元時鐘的規(guī)定誤差之內。
70.如權利要求46中的方法,其中確認還包括以下步驟所述的中央防護單元確認所述呼叫信息的到達時間與所述以前呼叫信息到達時間的間隔大于最小規(guī)定值。
71.如權利要求46中的方法,其中確認還包括以下步驟所述的中央防護單元確認所述呼叫信息的到達時間與所述以前呼叫信息到達時間的間隔小于最大規(guī)定值。
72.如權利要求47中的方法,其還包括以下步驟一旦收到所述的繼續(xù)信息,所述的監(jiān)督程序確認標識表中所有項目上列出的總用量超過以前呼叫信息所發(fā)送標識表中所有項目上列出的總用量。
73.一種用戶裝置,該用戶裝置包括用戶裝置表征值;監(jiān)督程序,監(jiān)督程序記錄著所述的用戶裝置表征值。
74.如權利要求73中的用戶裝置,其中所述的用戶裝置表征值含有處理器識別信息。
75.如權利要求73中的用戶裝置,其中所述的用戶裝置表征值含有非易失存儲裝置識別信息。
76.如權利要求73中的用戶裝置,其中所述的用戶裝置表征值含有目錄結構識別信息。
77.如權利要求73中的用戶裝置,其中所述的用戶裝置表征值含有文件識別信息。
78.一種軟件檢驗系統,該檢驗系統包括超級校驗程序,所述的超級校驗程序含有數據和計算機程序;中央防護單元,所述的中央防護單元向用戶裝置發(fā)送用于軟件拷貝的多個超級校驗程序;監(jiān)督程序,該監(jiān)督程序在所述的用戶裝置上運行,用戶裝置存儲有多個超級校驗程序。
79.如權利要求78中的軟件檢驗系統,其中所述的超級校驗程序還包括軟件拷貝的名稱,所述軟件拷貝的名稱表明了要被檢驗的軟件拷貝。
80.如權利要求78中的軟件檢驗系統,其中所述的超級校驗程序還包括一個加權值,所述的加權值決定了所述超級校驗程序在檢驗所述軟件拷貝時的使用頻率。
81.如權利要求78中的軟件檢驗系統,其中軟件拷貝某一部分的隨機函數值表。
82.如權利要求81中的軟件檢驗系統,其中的超級校驗程序還包括一個隨機函數。
83.如權利要求78中的軟件檢驗系統,其還包括存在于所述超級校驗程序中的解密程序。
84.如權利要求78中的軟件檢驗系統,其中所述的超級校驗程序含有一個監(jiān)測程序,該監(jiān)測程序對軟件拷貝的操作特性進行監(jiān)測。
85.如權利要求78中的軟件檢驗系統,其中所述的超級校驗程序還含有出售方的公用鑰匙,該公用鑰匙與所述的軟件拷貝相關。
86.如權利要求78中的軟件檢驗系統,其中所述的中央防護單元在數字標注信息中向所述的監(jiān)督程序發(fā)送超級校驗程序。
87.如權利要求86中的軟件檢驗系統,其中所述的監(jiān)督程序確認所述數字特征,如果確認成功,則所述的監(jiān)督程序儲存所述的超級校驗程序。
88.一種對用戶裝置中使用的軟件拷貝進行檢查的方法,該方法包括以下步驟提供多個超級校驗程序,超級校驗程序含有某個值、某個程序、某個條件以及地址信息;對軟件拷貝內容的某一部分執(zhí)行所述的程序,并計算出某個數值,所述的部分由所述的地址信息指定;確認所述的計算值和所述的存儲值滿足所述的條件。
89.如權利要求88中的方法,其還包括以下步驟在所述的超級校驗程序中儲存一個加權值;根據所述的加權值來選擇執(zhí)行檢測的超級校驗程序。
90.如權利要求88中的方法,其還包括以下步驟提供至少一個標識,該標識由出售方以數字方式加以標注;確認用戶裝置使用的的軟件拷貝含有相關的標識。
91.如權利要求90中的方法,其還包括以下步驟根據所述條件確認的成功以及對含有相關標識的軟件拷貝確認的失敗來采取某種懲罰性措施。
92.如權利要求88中的方法,其還包括以下步驟根據所述條件的成功確認以及確認所述的用戶裝置沒有任何標識來采取懲罰性措施。
93.如權利要求90中的方法,其中所述的相關標識含有所述軟件拷貝的名稱。
94.如權利要求90中的方法,其中所述的相關標識含有所述軟件拷貝某一部分的隨機函數值。
95.如權利要求88中的方法,其中所述的程序含有隨機函數,所述的值是隨機函數值表,對所述條件的確認步驟還包括對通用地址隨機函數值的檢驗。
96.如權利要求88中的方法,其中所述的程序含有隨機函數,所述的值是隨機函數值表,對所述條件的確認步驟還包括對同一地址隨機函數值的檢驗。
97.如權利要求88中的方法,其中所述的程序對所述軟件拷貝的操作進行監(jiān)測,所述的值含有一個措施表,對所述條件的確認還包括將所監(jiān)測到的操作情況與所述的表進行比較。
98.如權利要求88中的方法,其中所述的程序對軟件生成的中間結果進行評估,所述的值含有一個結果表,對所述條件的確認還包括對評估中間結果和所述的表進行比較。
99.如權利要求88中的方法,其中所述的軟件是計算機程序,所述的地址信息指定起始于所述計算機程序開始部分的字節(jié)計數順序。
100.如權利要求88中的方法,其中所述的軟件拷貝是計算機程序,所述的值是含有指令的表。
101.如權利要求99中的方法,其中非操作指令不包括在所述的計數之內。
102.如權利要求100中的方法,其中所述超級校驗程序中的地址信息不含有某些指令。
103.如權利要求102中的方法,其中所述的不被包括在內的指令含有內存地址。
104.如權利要求102中的方法,其中所述的不被包括在內的指令含有注冊地址。
105.一種對用戶裝置中使用的軟件進行檢驗的方法,該方法包括以下步驟提供超級校驗程序,所述的超級校驗程序包括使用所述軟件拷貝的程序;所述的程序對所述軟件拷貝的使用進行追蹤,并記錄下與所述使用相關的數據。
106.一種允許在用戶裝置上使用軟件拷貝的方法,所述的軟件拷貝含有一個標識,該方法包括以下步驟從所述用戶裝置中標識表中獲得所述的標識;計算所述軟件拷貝某一部分的隨機函數值;將計算出的隨機函數值與所述標識中存儲的隨機函數值進行比較;一旦確認所述的隨機函數值相等,則允許對所述的軟件拷貝進行使用。
107.如權利要求106中的方法,其中比較還包括以下步驟通過將所述的使用與所述標識中所存儲的使用規(guī)定進行比較來檢驗是否允許使用該軟件拷貝;所述的確認還包括所述檢驗的成功。
108.如權利要求106中的方法,其中比較還包括以下步驟將所述標識中所含有的標識表標識值與所述標識表的標識表標識值進行比較。
109.如權利要求106中的方法,其中允許還包括以下步驟記錄下所述軟件拷貝的使用統計數據。
110.如權利要求106中的方法,其還包括以下步驟檢驗所述用戶裝置中存儲的超級校驗程序是否與所述的軟件拷貝相匹配;一旦檢驗到是匹配的,則確認所述超級校驗程序中所存儲的出售方名稱以及公共鑰匙是否與所述標識中所含有的出售方名稱以及公共鑰匙相一致;一旦所述的確認失敗,則禁止對所述軟件拷貝的使用。
111.如權利要求106中的方法,其還包括以下步驟檢驗所述用戶裝置中存儲的超級校驗程序是否與所述的軟件拷貝相匹配;一旦發(fā)現不相匹配,則允許對該軟件拷貝的使用。
112.一種對軟件在用戶裝置上的使用進行監(jiān)督的方法,該方法包括以下步驟在所述的用戶裝置中提供標識表,所述的標識表含有標識表標識值;所述的用戶裝置向中央防護單元發(fā)送呼叫信息,所述的呼叫信息含有所述的標識表標識值;所述的中央防護單元確認所述呼叫信息的發(fā)送時間與上次呼叫信息的發(fā)送時間之間的時間差是否超過了所規(guī)定的最小限制值;其中呼叫信息含有標識表標識值。
113.如權利要求112中的方法,其還包括以下步驟一旦中央防護單元的確認成功,則中央防護單元生成一條數字標注的繼續(xù)信息,所述的數字標注繼續(xù)信息包含所述的呼叫信息;所述的中央防護單元存儲所述的呼叫信息;所述的中央防護單元向所述的用戶裝置發(fā)送數字標注的繼續(xù)信息。
114.如權利要求112中的方法,其中確認還包括以下步驟計算所述呼叫信息中含有的用戶裝置時間記錄值與所述中央防護單元時間記錄值之間的差值。
115.如權利要求113中的方法,其中由所述中央防護單元所發(fā)送的數字標注繼續(xù)信息還含有所述中央防護單元在以前回答呼叫信息時所發(fā)出超級校驗程序某一部分的隨機函數值。
116.如權利要求113中的方法,其中所述的繼續(xù)信息包含由所述中央防護單元提供的新超級校驗程序。
117.如權利要求113中的方法,其還包括以下步驟所述的用戶裝置確認所述中央防護單元的數字特征,并對所述繼續(xù)信息中所含的標識表標識值進行確認。
118.如權利要求117中的方法,其還包括以下步驟在所述呼叫信息中存儲所述用戶裝置記錄下的用戶裝置時間值;在所述繼續(xù)信息中存儲所述的用戶裝置時間值;通過檢驗所述的時間是否小于用戶裝置的規(guī)定值來確認所述的時間是否早于開始接收所述繼續(xù)信息的時間。
119.如權利要求115中的方法,其還包括以下步驟所述的用戶裝置確認所述以前發(fā)送的超級校驗程序某一部分的隨機函數值與所述繼續(xù)信息中所含的隨機函數值相一致;所述以前發(fā)送的超級校驗程序某一部分的隨機函數值存儲于用戶裝置中。
120.如權利要求116中的方法,其中所述中央防護單元發(fā)送的所述數字標注繼續(xù)信息還包括所述中央防護單元在以往回答呼叫信息時所發(fā)出的超級校驗程序某一部分的隨機函數值以及所述繼續(xù)信息所發(fā)送的超級校驗程序某一部分的隨機函數值;其中呼叫信息含有標識表標識值。
121.如權利要求120中的方法,其還包括以下步驟所述的用戶裝置確認中央防護單元以往發(fā)送超級校驗程序某一部分的隨機函數值以及儲存在所述用戶裝置中的隨機函數值與所述繼續(xù)信息中所含的隨機函數值相一致。
122.如權利要求116中的方法,其還包括以下步驟所述的用戶裝置在所述的標識表中安裝新的超級校驗程序。
123.一種確保用戶指定的用戶裝置表征值只出現在一個用戶裝置中的方法,該方法包括以下步驟從所述的用戶裝置向接收方發(fā)送信息,所述的信息含有與所述用戶裝置相關的裝置識別值;所述的接收方尋找與每一個可能的用戶裝置識別值相關的數據結構;標識檢驗過程確定所述的用戶裝置識別值是否存儲在另一用戶裝置中。
124.如權利要求123中的方法,其還包括以下步驟一旦確認在多個用戶裝置上存在有同一用戶裝置識別值,則所述的接收方將所述的用戶裝置識別值作廢。
全文摘要
本文涉及購買軟件拷貝標識的機理,這一機理確保所購標識中所含的某一標識表標識值的購買者身份不會被泄漏。本文涉及用戶裝置呼叫中央防護單元的機理,這一機理確保一個標識值只顯現在一個用戶裝置上,并確保標識表中所含的數據以及用戶裝置中儲存的目的在于保護銷售方和擁有者關于軟件權利的其他數據不會被修改。
文檔編號G06F1/00GK1592875SQ01819565
公開日2005年3月9日 申請日期2001年11月1日 優(yōu)先權日2000年11月3日
發(fā)明者邁克爾·O·羅賓, 丹尼斯·E·莎莎 申請人:邁克爾·O·羅賓, 丹尼斯·E·莎莎
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宝清县| 汤原县| 铜陵市| 连云港市| 镇江市| 昆明市| 寿光市| 萝北县| 阳新县| 景谷| 多伦县| 岳西县| 公安县| 汉源县| 汉阴县| 山西省| 进贤县| 乐业县| 梁平县| 大足县| 马尔康县| 陆川县| 康乐县| 福贡县| 乌苏市| 广河县| 平和县| 定襄县| 开鲁县| 和田市| 贵南县| 独山县| 揭东县| 庄河市| 博湖县| 通城县| 冷水江市| 西昌市| 黑龙江省| 囊谦县| 密云县|