麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

用于產品驗證和激活的安全軟件產品標識符的制作方法

文檔序號:6438786閱讀:254來源:國知局
專利名稱:用于產品驗證和激活的安全軟件產品標識符的制作方法
CN 102426640 A
說明書
1/14 頁
用于產品驗證和激活的安全軟件產品標識符
背景技術
諸如操作系統和應用程序之類的軟件產品經常包含受版權法保護的材料,版權法授予原創作品(例如軟件代碼)的作者對作品的使用和分發的專有權。為了從擁有對軟件產品的權利的賣方那里獲取軟件產品拷貝,用戶典型地會與賣方訂立許可協議,該協議規定了用戶可以如何使用和/或分發軟件產品。例如,許可協議可以限制用戶可以安裝軟件的次數和/或可以安裝該軟件的計算機的數量。軟件產品的非授權拷貝可能對銷售這些產品許可的賣方造成極大損害。為了防止使用非授權拷貝,軟件賣方通常要求在嘗試安裝軟件產品拷貝的時候完成“激活”過程。 該過程可以被設計成確定拷貝是否被授權安裝(例如用戶是否以合法方式購買該拷貝)和/ 或所述安裝是否符合一個或多個適用的許可協議(例如用戶是否超出了最大的許可安裝次數)。在軟件產品是以多個版本的形式(例如專業版和家庭版)提供的情況下,該激活過程還可以識別用戶購買的版本,并且根據識別的版本來有選擇地啟用軟件產品中的一個或多個特征。一些常規的軟件激活技術使用了所謂的“產品密鑰”,這種產品密鑰是用戶可以在以合法方式購買或以其他方式合法獲取軟件產品拷貝的時候得到的一條信息。在激活過程期間,用戶提供產品密鑰作為合法性“證明”。在這種證明被接受或驗證了時,用戶得到允許來完成安裝,并且根據針對該特定安裝而授予用戶的一個或多個許可來啟用軟件產品中的適當特征。

發明內容
發明人業已認識并了解到軟件產品驗證和激活系統中的顯著的設計限制,也就是說,產品密鑰可局限于能被人類用戶容易操縱(例如讀取和/或拷貝)的大小(或長度)。發明人還認識并了解到與較短的產品密鑰的使用相關的現有產品密鑰實現方式的限制,例如安全性、性能、擴展性和/或可管理性方面的妥協。相應地,在一些實施例中提供了用于軟件產品驗證和激活的改進系統、方法和設備,其并入了產品密鑰附加標識信息(例如除序列號之外的信息),該信息可以用于促進產品密鑰驗證。例如,附加標識信息可以充當一個或多個索引,以便識別在驗證產品密鑰的過程中使用的加密算法和/或加密算法的參數。此類系統可更高效且更易于擴展,因為所述特定的加密算法和/或參數不需要被硬編碼到產品密鑰驗證組件中。發明人還認識并了解到,在將附加標識信息并入產品密鑰時,激活系統和軟件產品驗證的安全性可以得到保持乃至增強。例如,通過至少部分在遠程激活服務器上執行產品密鑰驗證,可以實現足夠的安全等級,使得可以通過網絡請求來減慢所企圖的暴力攻擊。 這種激活服務器可能還能夠記錄每一個單獨的產品密鑰使用的次數。發明人還認識并了解到,激活服務器可能是易受攻擊的,因為激活服務器是可以從因特網訪問的(例如,激活服務器可以接受web請求形式的激活請求)。由此,期望的是引入附加的安全層,例如通過把將要由除激活服務器之外的實體核實的附加安全信息并入到
4產品密鑰中來引入附加安全層。相應地,在一些實施例中,除了激活服務器之外還可以提供用于驗證產品密鑰的增強的安全服務器。所述增強的安全服務器使用的信息可能對激活服務器而言是不可訪問的,由此,即使當激活服務器被成功攻擊時,所述增強的安全服務器也可以保持安全。如果在激活服務器處受到破壞,這種附加安全機制可以防止系統完全失效, 由此給予系統開發人員更多時間來對所述破壞做出響應。應該了解到的是,在下文中更詳細論述的前述概念以及附加概念的所有組合(只要這些概念不是相互不一致的)都被認為是這里公開的發明主題的一部分。特別地,在本公開結尾出現的要求保護的主題的所有組合都被認為是這里公開的發明主題的一部分。


附圖不必按比例繪制。為了清楚起見,并不是每一個組件都會在每一個圖中得到標記。圖1示出根據本公開的一些實施例的用于驗證和激活軟件產品的說明性系統。圖2示出根據本公開的一些實施例的用于驗證和激活軟件產品的另一個說明性系統。圖3A示出根據本公開的一些實施例的用于生成產品密鑰的說明性過程。圖:3B示出根據本公開的一些實施例的可以經由圖3A所示的過程生成的產品密鑰的示例。圖4示出根據本公開的一些實施例的可以由用戶計算機上的安裝程序響應于用戶安裝軟件產品拷貝的嘗試來執行的說明性過程。圖5示出根據本公開的一些實施例的可以由驗證機構響應于接收來自用戶嘗試安裝軟件產品拷貝的計算機的激活請求來執行的說明性過程。圖6示出根據本公開的一些實施例的可以由審計機構響應于接收來自驗證機構的審計請求來執行的說明性過程。圖7示意性示出了可以實現本公開的各種不同的發明方面的說明性計算機。
具體實施例方式發明人認識并了解到在實現用于使用產品密鑰來驗證和激活軟件產品的魯棒且安全的系統的過程中的很多挑戰。這其中的一些挑戰在下文中參考圖1來解釋。圖1示出了一個用于驗證和激活軟件產品的說明性系統100,在該系統中可以實現這里公開的各種不同發明方面。在本示例中,系統100包括產品密鑰生成服務器110,它可以由軟件賣方或是某個其他適當的第三方來操作。當用戶120合法地購買或以其他方式合法獲得諸如操作系統或應用程序之類的軟件產品拷貝時,生成服務器110生成的產品密鑰可以被傳送給用戶。例如,當所述拷貝經由諸如壓縮盤(⑶)之類的物理介質銷售時,該產品密鑰可被印刷在只能在購買之后才能訪問(例如受收縮包裹保護)的包裝材料的一部分上。在一些實現方式中,產品密鑰可以包括兩個組件用于識別軟件產品的特定拷貝 (或者如果是公司許可則是拷貝群組)的標識組件,以及可以用于核實產品密鑰是由某個適當機構(例如軟件賣方)生成和/或在分發過程中沒有受到篡改的安全組件。例如,所述標識組件可以包括序列號,并且所述安全組件可以包括處于序列號之上用軟件賣方的秘密密鑰生成的電子簽名。當用戶120嘗試在用戶計算機130上安裝軟件產品拷貝時,在用戶計算機130上運行的安裝程序可以提示用戶120輸入產品密鑰。一旦接收到產品密鑰,則安裝程序可以處理該產品密鑰,并且基于從處理產品密鑰的過程中導出的信息來向激活服務器140發送激活請求。例如,根據特定的實現方式,安裝程序可以完全或部分驗證該產品密鑰(例如通過使用軟件賣方公鑰來核實安全組件是在標識組件之上的有效簽名)??商娲鼗虼送?,安裝程序可以向激活服務器140發送產品密鑰和/或從中導出的信息(例如作為激活請求的一部分),使得激活服務器140也可以完全或部分驗證該產品密鑰。換句話說,產品密鑰的驗證可以用任何適當的方式分布在用戶計算機130與驗證服務器140之間。為了驗證產品密鑰,用戶計算機130和/或驗證服務器140可以與產品密鑰生成服務器110共享一些驗證信息。在產品密鑰包含序列號和序列號之上的電子簽名的一個示例中,驗證信息可以包括與用于生成電子簽名的秘密密鑰相關聯的公鑰。這個公鑰可以使得用戶計算機130和/或驗證服務器140能夠執行簽名驗證,以便確定電子簽名是否可能使用相關聯的秘密密鑰來正確生成。如果產品密鑰通過驗證,則激活服務器140可以選擇一個或多個適用的許可,并且將選定許可通知給用戶計算機130。例如,這些許可可以基于軟件產品類型、軟件產品版本、軟件產品所屬的軟件產品系列、分發軟件產品拷貝的渠道(例如零售,原始設備制造商或批發)和/或其他適當的信息而被選擇。然后,用戶計算機130可以將這些許可與所安裝的軟件產品拷貝相關聯,并且根據許可來有選擇地啟用軟件產品中的特征。發明人認識并了解到在軟件產品驗證和激活系統中的顯著的設計限制,即產品密鑰的大小(或長度)。例如,參考圖1所示的系統100,如果產品密鑰是通過印刷介質(例如作為印刷在收縮包裝的包裹內部的碼)傳播給用戶120的,那么用戶應該從該印刷介質上讀取產品密鑰,并且手動地將產品密鑰輸入計算機130。該過程可能是耗時的并容易出錯,因此可能期望的是將產品密鑰限制在可管理的大小(例如不超過20、25、30或40個字母數字字符或其他符號)。發明人還認識并了解到與較短產品密鑰的使用相關的現有產品密鑰實現方式的限制。例如,在一些實現方式中,產品密鑰中只有較少比特專用于產品密鑰的安全組件(例如通過使用較短的數字簽名),使得更多的信息可以被編碼到身份(identity)組件。這種方法可能損害產品密鑰的安全性,因為攻擊者可能更易于通過重復嘗試隨機生成的適當長度的字符串來發現碰巧是有效產品密鑰的字符串。在產品密鑰的驗證全都是在本地計算機 (例如圖1所示的用戶計算機130)上進行的情況下,安全風險可能尤其嚴重,因為可以在該設置中實施暴力攻擊而不用發起可能減慢所述攻擊的任何網絡請求。此外,在產品密鑰的驗證完全是在本地計算機上進行的情況下,本地計算機可能只能驗證那些其可以為之使用足夠驗證信息的產品密鑰。例如,在一些實現方式中,只有在本地計算機可以使用相應的簽名驗證算法和/或相應的公鑰的情況下,本地計算機才能夠驗證包含數字簽名的產品密鑰。由此,用于生成產品密鑰的安全機制的升級可涉及向眾多本地計算機傳播新的驗證信息,例如新的加密算法和/或密鑰,這種處理可能成本很高且會很麻煩,并且可能對采用改進的安全機制失去信心。
6
相比之下,在一些其他實現方式中,產品密鑰中有更多的比特是專用于產品密鑰的安全組件的(例如通過使用更長的數字簽名),使得暴力攻擊可能會變得更困難。但是,由于更少的信息被編碼到產品密鑰的標識組件中,因此,安全性的提升是以性能降低為代價的。例如,標識組件可以只攜帶用于軟件產品的特定拷貝的序列號,而沒有其他標識信息。 結果,產品密鑰可以不攜帶在驗證過程中使用的所有信息??梢园诋a品密鑰中的其他標識信息的示例是所謂“組ID”,它標識的是軟件產品的類型、軟件產品的版本、軟件產品所屬的軟件產品系列、用以分發軟件產品的拷貝的渠道和/或軟件產品的其他相關特性。這些標識信息可以充當索引,用于檢索要用以核實產品密鑰中包含的電子簽名的公鑰。在沒有直接訪問此類信息的情況下,可以實施試錯法(trial-and-error)驗證過程以迭代遍歷一組可能的公鑰,直至遇到成功的證實或直到耗盡了這組可能的公鑰(在這種情況下可以將產品密鑰無效化)。這種迭代過程可能導致顯著的性能降級,因為諸如簽名驗證之類的加密運算可能是計算密集型的。由于可能存在可供從中取出有效序列號的一個或多個更小的范圍,因此,限制產品密鑰中攜帶的標識信息量可能具有進一步的缺點。例如,為了簡化代碼開發和數據管理, 軟件賣方可能希望采用某種編號規定,例如通過將一定范圍的數字分配給每一個軟件產品以及進一步通過將子范圍分配給產品的相應版本來編號。如果序列號的大小有限,那么產品管理者可能希望更精密地預測每一個產品和/或版本需要的序列號總數(例如通過預料銷售量),以便減小“被浪費的數字”的數量(例如為產品保留但是實際不與產品的任何拷貝相關聯的潛在的序列號),并且由此接納(accommodate)更多的產品。這種預測有可能是困難的并且本身是不精確的。如果意外地耗盡了分配的范圍,那么可能在依賴于編號規定的不同系統組件上需要(例如,經由服務包)代碼變化,這可能成本很高且非常麻煩。簡而言之,發明人認識并了解到需要用于軟件產品驗證和激活的改進系統,以便增強安全性、性能、可擴展性和/或可管理性。優選地,改進的系統可以是向后兼容的,例如能夠與現有的產品密鑰實現方式同時或聯合部署,并且/或者允許在代碼變化最小的情況下重新使用現有系統組件。在一些實施例中,提供一種用于軟件產品驗證和激活的改進系統,該系統將附加標識信息(例如除序列號之外的信息)并入了產品密鑰,該信息可以用于促進產品密鑰的驗證。例如,附加標識信息可以標識軟件產品類型、軟件產品版本、軟件產品所屬的軟件產品系列、分發軟件產品拷貝的渠道和/或軟件產品的其他相關特性。這樣的信息可以充當一個或多個索引,以用于識別在驗證產品密鑰的過程中要使用的加密算法和/或加密算法的參數。發明人認識并了解到,包含這種附加標識信息可以通過促進驗證信息的容易檢索來明顯加速驗證過程(例如無須常規的試錯法過程)。此外,包含這種附加標識信息可以導致更易于擴展的系統,因為所述特定加密算法和/或參數可以不再被硬編碼到產品密鑰驗證組件中。換言之,加密算法和/或參數的未來變化可以更易于實現,并且產品密鑰驗證組件中的代碼變化很小或者沒有變化。發明人還認識并了解到,在將附加標識信息并入產品密鑰時,軟件產品驗證和激活系統的安全性可以得到保持乃至增強。例如,如上所述,通過與網絡請求相關的延遲,可以減慢暴力攻擊。因此,通過至少部分在遠程激活服務器處執行產品密鑰驗證(例如與完全在嘗試安裝軟件的本地計算機處進行驗證相反),可以實現足夠的安全等級。此外,由于特
7定的加密參數未必為攻擊者所知(例如攻擊者未必能夠有效地將附加標識信息映射到相應的加密參數),因此,攻擊者可能更加難以猜測有效的產品密鑰。由于這種安全性的增強,產品密鑰中的更多比特可被分配給標識組件,而這又可擴大可用產品密鑰的空間并且減小了對于產品密鑰范圍預測的需要或在超出這種預測時出現的問題。例如,在一些實現方式中, 在產品密鑰中有接近一半的比特可被分配給標識組件,從而使可用產品密鑰的數量增加到 IO24 (quadrillion)以上。 發明人還認識并了解到,由于激活服務器是可以從因特網訪問的(例如,激活服務器可以接受web請求形式的激活請求),因此,該激活服務器是容易受到攻擊的。對激活服務器的成功攻擊可能導致可被攻擊者用來生成有效密鑰的信息受損。因此,可能期望的是引入附加的安全層,例如通過向產品密鑰并入要由除激活服務器之外的實體核實的附加安全信息來完成。相應地,在一些實施例中,除了激活服務器之外還可以提供用于驗證產品密鑰的增強的安全服務器。所述增強的安全服務器使用的信息可能對激活服務器而言是不可訪問的,并且因此可以甚至在激活服務器被成功攻擊時也保持安全。如果激活服務器受到破壞,這種附加安全機制可以防止系統完全失效,由此給予系統開發人員更多時間來對所述破壞做出響應。下文中更詳細地描述了與用于軟件產品驗證和激活的本發明的系統、方法和設備相關聯的各種概念及其實施例。應該了解的是,在上文中引入以及在下文中更詳細論述的各種概念可以通過多種方式實現,因為所公開的概念并不局限于任何特定的實現方式。例如,本公開并不局限于各種不同的附圖中示出的組件的特定設置,因為其他設置同樣也是適合的。特定實現方式和應用的這種示例僅僅是出于說明目的而提供的。圖2示出用于驗證和激活軟件產品的說明性系統200的示例,在該系統中可以實現這里公開的各種不同發明的概念。與圖1所示的示例相似,說明性系統200包括產品密鑰生成服務器110、用戶120、用戶計算機130以及激活服務器140。此外,所述說明性系統 200包括用于與激活服務器140協力驗證產品密鑰的增強的安全服務器250。在一些實施例中,產品密鑰生成服務器110可以由軟件賣方或其他某個適當的機構操作,以便生成要分發給軟件產品的合法用戶的產品密鑰。該產品密鑰生成服務器110 可以使用任何適當的技術或技術組合來生成產品密鑰。例如,如上所述,產品密鑰生成服務器110可以在產品密鑰中包括標識組件,該標識組件可以包括將與軟件產品的特定拷貝相關聯的序列號以及標識軟件產品的類型、軟件產品的版本、軟件產品所屬的軟件產品系列、 用以分發軟件產品拷貝的渠道和/或軟件產品的其他相關特性的“組ID”。產品密鑰生成服務器110還可以在產品密鑰中包含安全組件,該安全組件可以用于核實標識組件的完整性和/或真實性。例如,在一些實施例中,安全組件可以包括處于部分或所有標識組件之上的電子簽名,其中該電子簽名是使用產品密鑰生成服務器110的秘密密鑰生成的。在其他的一些實施例中,安全組件可以包括通過使用產品密鑰生成服務器110的秘密密鑰加密部分或全部標識組件而生成的密文。任何適當的加密算法都是可以使用的,這其中包括但不局限于諸如高級加密標準(AES)之類的對稱加密算法、諸如橢圓曲線密碼(ECC)加密算法之類的非對稱加密算法和/或任何適當的算法組合。在其他一些實施例中,安全組件可以包括基于部分或所有標識組件以及產品密鑰生成服務器110的秘密密鑰生成的散列值。 任何適當的散列算法都是可以使用的,這其中包括但不局限于MD4、MD5、SHA-I、SHA-256或SHA-512。在其他的一些實施例中,安全組件可以包括將要與標識組件相關聯的隨機或偽隨機值。為了增強安全性,在一些實現方式中,產品密鑰的安全組件可以包括分別要由兩個或更多單獨的實體核實的兩個或更多的安全值,從而避免系統中的單個故障點。例如,參考圖2,產品密鑰生成服務器110可以在產品密鑰的安全組件中包括兩個分別由激活服務器140和增強的安全服務器250核實的安全值。這兩個安全值可以用任何適當的方式生成。 例如,這些安全值可以使用一種或多種上述技術(例如簽名、加密、散列和/或隨機生成)基于標識組件中的相同部分或不同部分來生成。此外,安全值可以使用不同的技術或使用具有不同參數(例如不同的秘密密鑰)的相同技術來生成。以此方式,即使一個驗證機構(例如激活服務器140)受損,也可以避免完全的系統故障。例如,攻擊者可能不能夠隨意激活軟件產品的非法拷貝,因為未受損害的驗證機構(例如增強的安全服務器250)仍舊能夠使偽造的產品密鑰失效。這可以給予系統開發人員更多時間來開發和分發一個或多個服務補丁,以便關閉攻擊者使用的弱點。以下結合圖3A-B討論用于生成產品密鑰的說明性過程的更進一步的細節。應該了解的是,本公開中與產品密鑰生成相關的方面并不局限于任何特定的生成技術。例如,產品密鑰可以是使用上述技術和/或其他適當技術中的任何一種或是其組合生成的。此外, 上述技術可以根據特定的實現方式而以任何適當的方式適應性調節和/或修改。例如,通過簽名、加密和/或散列處理生成的安全值可以基于產品密鑰中分配給所述安全值的空間量(例如比特數量)而被截短成某個適當的長度。如上文中結合圖1論述的那樣,當用戶120以合法方式購買或以其他方式合法獲取了軟件產品拷貝時,由產品密鑰生成服務器110生成的產品密鑰可以例如作為印刷在受收縮包裹保護的包裝材料上的代碼被傳達給用戶??商娲?,可以給予用戶用于從web鏈接下載產品密鑰的密碼。其他的傳播方法也是適當的。當用戶120嘗試在用戶計算機130上安裝軟件產品拷貝時,在用戶計算機130上運行的安裝程序可以提示用戶120輸入產品密鑰。一旦接收到產品密鑰,安裝程序可以處理該產品密鑰并且基于從處理該產品密鑰導出的信息來向激活服務器140發送激活請求。 如上所述,可以期望的是對除用戶計算機130之外的實體將產品密鑰驗證過程的至少一部分推遲(defer),從而減慢可能的暴力攻擊和/或防止可能會在驗證完全在本地執行的情況下出現的其他攻擊。相應地,在一些實施例中,至少一部分產品密鑰驗證過程可以由激活服務器140執行。用戶計算機130上的安裝程序可以不執行任何驗證,或者可以執行某些初始檢查來捕捉任何排字錯誤(例如通過執行校驗和驗證)。后一種方法可能是有利的,因為用戶往往會在鍵入產品密鑰的時候出錯,并且可能期望的是在招致與激活服務器140的通信進一步延遲之前捕捉這種簡單的錯誤。換言之,用戶計算機130可以不向激活服務器 140發送任何激活請求,除非初始檢查指示產品密鑰很可能已被正確鍵入。對激活服務器140推遲驗證的另一個優點可以是可以更容易地實現和/或保持用戶計算機130上的安裝程序。例如,在圖2的示例中,安裝程序可能不再需要存儲和保持來自產品密鑰生成服務器110的驗證信息。這種驗證信息的示例包括但不限于一種或多種加密算法(例如簽名驗證、解密和/或散列算法)和/或用于這些算法的一個或多個參數(例如在簽名驗證、解密和/或散列處理中要使用的密鑰)。結果,針對驗證信息的任何變化(例如
9更新至更安全的算法和/或刷新密鑰)可以在對安裝程序沒有代碼變化或有少量代碼變化的情況下實現。以下結合圖4討論由用戶計算機上運行的安裝程序執行的說明性過程的進一步細節。再次參考圖2,激活服務器140可以從用戶計算機130接收激活請求,該激活請求可以包括用戶120鍵入的產品密鑰和/或從產品密鑰中導出的信息。例如,在一些實施例中,激活服務器140可以經由激活請求來接收由用戶計算機130從產品密鑰中提取的序列號、組ID以及至少一個安全值。可替代地或此外,激活服務器140可以接收產品密鑰,并且執行它自己的處理來恢復這些信息。如上所述,從產品密鑰中提取的信息(例如序列號和/或組ID)可用于識別和/或檢索那些將要在驗證產品密鑰的過程中使用的驗證信息(例如一個或多個加密算法和/或用于該加密算法的參數)。在圖2所示的示例中,激活服務器140可以使用序列號和/或組 ID來從存儲器260中檢索驗證信息。例如,在基于電子簽名的實現方式中,激活服務器140 可以使用序列號和/或組ID來從存儲器260中檢索簽名驗證算法的標識和/或驗證密鑰。 類似地,在基于加密的實現方式中可以檢索解密密鑰和/或解密算法的標識,在基于散列處理的實現方式中可以檢索秘密密鑰和/或散列算法的標識,以及在基于隨機生成的實現方式中可以檢索與特定產品密鑰相關聯的隨機或偽隨機生成值。以此方式,激活服務器140可能能夠以一種模塊化方式來處理不同類型的安全機制,由此允許軟件賣方更靈活地根據其特定需要來選擇不同安全機制。例如在一些實施例中,不同的軟件賣方可以共享總的產品密鑰實現方式,但卻使用不同的算法和/或參數??商娲鼗虼送?,同一個軟件賣方可以針對不同產品或是不同的版本、系列或其他適當的產品分類使用不同的算法和/或參數。例如,如果產品與高拷貝風險相關聯(例如流行的視頻游戲),那么可以選擇更安全的算法,然而針對預計會生成大量激活請求的產品(例如流行的操作系統),可以選擇更高效的算法。在圖2所示的示例中,產品密鑰生成服務器110可以將一些或所有驗證信息存入存儲器沈0。例如,對于所生成的每一個產品密鑰,產品密鑰生成服務器110可以通過使用被編碼到產品密鑰中的標識信息(例如序列號和/或組ID)促進稍后訪問的方式而將一些或所有相應的驗證信息存入存儲器260??商娲兀鎯ζ?60可以由中央機構管理,所述機構會針對各種不同的軟件產品和/或軟件產品群組選擇適當的安全機制。在此類實施例中,產品密鑰生成信息(例如簽名生成、加密和/或散列算法和/或相關聯的參數)以及驗證信息(例如簽名驗證、解密和/或散列算法,和/或相關聯的參數)可以以與某些標識信息 (例如序列號和/或組ID)關聯的方式存入存儲器沈0,使得產品密鑰生成服務器110可以使用該標識信息來訪問適當的產品密鑰生成信息,并且激活服務器140可以使用該標識信息來訪問適當的驗證信息。存儲器260還可以存儲隨機、偽隨機或以其他方式生成的與產品密鑰的一個或多個標識組件相關聯的值。在下文中結合圖5來討論由激活服務器執行的用于驗證產品密鑰的說明性處過程的進一步細節。如上所述,在一些實施例中,產品密鑰可以包括要由諸如激活服務器140和增強的安全服務器250之類的不同實體單獨核實的多個安全值。在圖2所示的示例中,增強的
10安全服務器250可以實現為由激活服務器140調用的審計服務。例如,一旦成功核實了產品密鑰中的兩個安全值之一,激活服務器140可以決定審計是否是期望的,如果是的話,則其向增強的安全服務器250發送審計請求。作為響應,增強的安全服務器250可以基于這兩個安全值中的另一個值來執行它自己的核實。與激活服務器140 —樣,增強的安全服務器250可以訪問來自存儲器沈0的驗證信息,盡管增強的安全服務器250訪問的驗證信息可能不同于激活服務器140訪問的驗證信息。在一些實施方式中,增強的安全服務器250 可以在線執行審計,并且將結果回送到激活服務器140,所述激活服務器只在這兩個驗證全都成功的情況下才會許可激活請求。在其他實現方式中,當激活服務器140自己的驗證成功時,它可以許可激活請求,而增強的安全服務器250可以離線執行審計,并且可以追溯性地使產品密鑰無效。在下文中結合圖6來論述由增強的安全服務器執行的用于驗證產品密鑰的說明性過程的進一步細節。根據特定的實現方式,激活服務器140可以采用任何適當的方式來選擇用于審計的產品密鑰。例如,激活服務器140可以隨機或偽隨機地進行選擇。另舉一例,激活服務器 140可以基于軟件產品類型、軟件產品版本、軟件產品所屬的軟件產品系列、用以分發軟件產品拷貝的渠道和/或其他那些可以用編碼在產品密鑰的標識組件中的信息訪問的軟件產品的相關特性來進行選擇。作為又一個示例,激活服務器140可以基于如通過用戶輸入或通過自動檢測一個或多個系統活動模式來指示的所感知的安全威脅等級來選擇用于審計的產品密鑰,所述系統活動模式例如是涉及特定產品或產品群組的請求的頻率或者從特定用戶或用戶群組接收的請求的頻率。一旦驗證了產品密鑰(例如由激活服務器140單獨驗證或是由激活服務器140和增強的安全服務器250驗證),激活服務器140可以選擇一個或多個適用的許可,并且將選定的許可告知用戶計算機130。然后,用戶計算機130可以將這些許可與所安裝的軟件產品拷貝相關聯,并且根據這些許可來有選擇地啟用軟件產品中的特征。應該了解的是,圖2所示以及如上所述的特定實現方式僅僅是說明性的,因為這里公開的各種不同的發明概念不限于任何特定的實現方式。例如,在可替代的實現方式中, 產品密鑰生成服務器Iio和激活服務器140可以由同一實體操作和/或在相同的物理服務器上操作。作為另一個示例,增強的安全服務器250可以經由某個適當網絡(企業網或因特網)持續地或在需要時(例如在激活服務器140受損或是因為其他原因不可用時)直接訪問。此外,在一些情況中,用戶120可以是個人用戶,但在其他情況中,該用戶也可以是公司用戶,例如在零售計算設備之前在該設備上安裝軟件產品的原始設備制造商(OEM)。轉到圖3A,該圖示出用于生成產品密鑰的說明性過程300,其中該過程可以由圖2 所示的產品密鑰生成服務器110執行,以便生成產品密鑰。在圖;3B中示出可以經由過程 300生成的產品密鑰350的示例。在圖3A所示的示例中,過程300始于識別軟件產品序列號的動作305。在一些實施例中,該序列號可以從與軟件產品相關聯的號碼范圍中選擇,例如通過在每次將序列號分配給新的軟件產品拷貝時從所述范圍的低端開始且遞增一個(或者可替代地,從所述范圍的高端開始且遞減一個)來選擇。選擇序列號的其他方式也可以是適當的,例如隨機或偽隨機地從一組可用號碼中選擇。
11
如上所解釋,單獨的序列號可以不攜帶關于軟件產品的足夠信息以允許驗證機構 (例如圖2所示的激活服務器)識別驗證過程需要的信息。相應地,在一些實施例中,產品密鑰可以包括可以促進產品密鑰的高效驗證的附加標識信息。例如,所述附加標識信息可以是與軟件產品類型、軟件產品版本、軟件產品所屬的軟件產品系列,用以分發軟件產品拷貝的渠道和/或軟件產品的其它相關特性相關聯的組ID。更一般地,組ID可以標識可以以與出于驗證目的的類似方式(例如使用相同的加密算法和/或參數)處理的軟件產品的任何群組。在動作310處,可以使用適當的安全機制基于序列號和附加標識信息(例如組ID) 生成第一安全值。例如,序列號和/或附加標識信息可用于確定安全機制,該安全機制可以基于簽名、加密、散列、隨機生成和/或其他密碼學技術。作為更具體的示例,序列號和/或附加標識信息可用于確定對稱加密算法和秘密密鑰,并且第一安全值可以至少部分通過使用對稱加密算法和秘密密鑰加密所述序列號和附加標識信息來生成。作為另一個示例,序列號和/或附加標識信息可用于確定散列算法和秘密密鑰,并且第一安全值可以至少部分通過散列所述序列號和附加標識信息生成,其中秘密密鑰可以用作散列處理的參數。在動作315處,可以基于序列號和附加標識信息生成第二安全值。在一些實施例中,第二安全值可以使用與用于生成第一安全值的機制不同的安全機制來生成。例如,第二安全值可以使用不同的加密算法或是具有不同密鑰的相同加密算法生成??商娲兀诙踩蹬c第一安全值可以是用相同的安全機制生成的(例如使用相同的散列算法和秘密密鑰)。在動作320處,可以基于序列號、附加標識信息以及第一和第二安全值生成校驗和。該校驗和可以用循環冗余校驗(CRC)校驗和算法或某種其他適當的算法來生成。如上文結合圖2所述,校驗和可用于確定用戶是否有可能在鍵入產品密鑰時犯了排字錯誤。因此,校驗和不需要安全抵抗暴力攻擊,并且相對較少的比特(例如不超過10個)可能足夠了。在動作325處,可以通過某種適當的方式將序列號、附加標識信息、第一和第二安全值以及校驗和封裝在一起,從而形成產品密鑰。例如,在一些實施例中,使用了字母表 “BCDFGHJKMPQRTVWXY2;346789”的I^aseM編碼可被用于對校驗和、第一和第二安全值、附加標識信息、以及序列號的級聯(concatenation)進行編碼,并且不在用于編碼的字母表中的特殊字符(例如字符“N”)可以被插入編碼的串中的選定位置。然后,所得的產品密鑰可被存儲并且稍后與軟件產品的拷貝相關聯以及傳達給用戶。如下文中結合圖:3B和4更詳細的討論,特殊字符(例如字符“N”)的位置的可被安裝程序用以確定對特定產品密鑰執行常規的還是改進的產品密鑰驗證。所述特殊字符的位置還可以指示產品密鑰具有常規格式還是改進格式。由此,安裝程序可以根據特殊字符的位置來以不同的方式解析產品。在動作330處,與產品密鑰相關聯的驗證信息可以通過促進一個或多個驗證機構 (例如圖2所示的激活服務器140和增強的安全服務器)檢索的方式存儲。例如,驗證信息可以以與產品密鑰的序列號和/或附加標識信息(例如組ID)關聯的方式存儲,以使得驗證機構可以通過提供序列號和/或附加標識信息來檢索驗證信息。這里使用的“驗證信息”通常是指任何可以在驗證產品密鑰時使用的信息。例如, 驗證信息可以包括要被用于驗證產品密鑰的一個或多個加密算法的標識和/或一個或多個相關聯的參數(例如密鑰)。優選地,與第一和第二安全值有關的驗證信息可以作為獨立單元存儲,使得負責核實第一安全值的實體(例如圖2所示的激活服務器140)不能訪問與第二安全值有關的驗證信息。以此方式,即使成功攻擊了負責核實第一安全值的實體,與第二安全值有關的驗證信息也可以保持安全。作為另一個示例,驗證信息可以包括安全值本身,使得可以簡單地通過將提取自產品密鑰的安全值與使用產品密鑰序列號和/或附加標識信息檢索的安全值相比較來執行驗證。在隨機或偽隨機地生成安全值的實現方式中,或者在動作310和315處使用相同安全機制來生成第一和第二安全值的實現方式中,這種存儲安全值本身的方法可能是適當的。在后一種情況中,可能期望的是不向驗證機構(例如圖2所示的激活服務器140)透露安全機制,從而防止在驗證機構被成功的攻擊的情況下損害所述安全機制。圖;3B示出5x5格式的說明性產品密鑰350,其中在25個字符中有M個字符是從具有M個字符“BCDFGHJKMPQRTVWXY2346789”的字母表中提取的,并且在第9個位置插入特殊字符“N”。該格式可以與同樣使用5x5格式的現有產品密鑰的實現方式兼容,并且特殊字符“N”的位置可以被安裝程序用來確定執行常規的產品密鑰處理還是依照本公開的一些實施例的新的產品處理。在一些實施例中,通過移除特殊字符“N”,產品密鑰350可被解碼成如圖:3B中的表 355所示的114比特的串。該比特串中的前50比特可以對應于產品密鑰的標識組件,其中前20個比特表示組ID360且剩余的30比特表示序列號362。接下來的63比特可以對應于產品密鑰的安全組件,其中分別為第一安全值364,第二安全值366以及校驗和368分配了 40、13和10比特。最后一比特370可以指示與產品密鑰相關聯的軟件產品拷貝是經由零售渠道(也被表示為“FPP”)還是升級渠道(也被表示為“CCP”)分發的。應該注意,在圖;3B所示的示例中,在產品密鑰350中有接近一半比特(或是114比特中的50比特,大約45%或是超過40%)被分配給了標識組件。結果,有超出IOm的號碼 (例如0到25°-1)可用于組ID和序列號組合,這極大減小了對于預測精確的產品密鑰范圍的需要。應該了解的是,圖3A所示的過程300以及圖所示的產品密鑰350只是說明性的,因為在本公開的各種不同實施例中也可以使用生成產品密鑰的其他方式和/或產品密鑰的其他格式。例如,一些產品密鑰實現方式可以利用攜帶了用于驗證的足夠信息的“自我核實”產品密鑰,使得驗證機構不必從單獨的來源檢索驗證信息。圖4示出可以由用戶計算機上的安裝程序響應于用戶激活軟件產品拷貝的嘗試而執行的說明性過程400。例如,過程400可以由圖2所示的用戶計算機130在為用戶120 安裝軟件產品拷貝的期間執行。過程400可以始于向用戶提示與所安裝的軟件產品拷貝相關聯的產品密鑰并且經由諸如鍵盤或鼠標之類的輸入設備來接收產品密鑰的動作405。在操作410處,過程400 可以確定是用常規的產品密鑰實現方式還是使用合并了本公開中描述的一個或多個發明概念的新的產品密鑰實現方式來生成產品。例如,在一個實施例中,過程400可以針對諸如字母“N”之類的特殊字符掃描產品密鑰。如果發現字母“N”在預定位置處(例如在產品密鑰的安全組件或有效載荷開始的地方,比特偏移50處或是其附近),那么可以確定該產品密鑰與新的實現方式相關聯。否則,產品密鑰可以與現有的實現方式相關聯,并且該過程400可以作為子過程415來繼續執行常規產品密鑰驗證。在另一個實施例中,僅存在諸如字母 “N”之類的特殊字符可以指示產品密鑰將與新的實現方式相關聯,并且特殊字符在產品密鑰內的位置可以提供能夠用于驗證產品密鑰的附加信息。例如,除了用baseM字母表編碼的比特之外,可以使用特殊字符位置來編碼一個或多個比特,從而有效提高產品密鑰的信息承載能力。如果確定產品密鑰與新的實現方式相關聯,那么過程400可以繼續到動作420,以執行校驗和核實。例如,參考圖3B所示的實施例,該過程400可以將產品密鑰解碼成二進制格式,并且核實產品密鑰中始于比特偏移103的10比特信息是否是產品密鑰中的剩余部分或是其任何適當部分的正確校驗和。例如,所述10比特校驗和可以針對產品密鑰的前103 比特和/或升級比特來核實。如果在動作420處確定校驗和正確,那么用戶有可能正確鍵入了產品密鑰,并且過程400可以繼續到動作425,以向適當的驗證機構(例如圖2所示的驗證服務器140)傳送激活請求。根據特定實施例,該激活請求可以包括產品密鑰本身和/或與產品密鑰的一個或多個組成部分相對應的比特串,例如組ID、序列號、第一安全值和/或第二安全值。另一方面,如果在動作420處確定校驗和不正確,那么該過程可以繼續到動作 430,以提示用戶重新輸入產品密鑰,然后返回動作405,以處理用戶下一次輸入產品密鑰的嘗試ο在動作435處,過程400可以接收來自驗證機構的關于在動作425處傳送的激活請求的狀態的通知。如果該請求被拒絕,則過程400可以繼續到操作445,以向用戶告知未能使用所提供的產品密鑰完成安裝。否則,該過程400可以繼續到動作440,以識別驗證機構給予的一個或多個許可,并且根據所給予的許可來啟用軟件產品中的一個或多個特征。參考圖5,該圖示出說明性過程500,該過程可以由驗證機構(例如圖2所示的驗證服務器140)響應于從用戶嘗試安裝軟件產品拷貝的計算機(例如圖2所示的用戶計算機 130)接收激活請求來執行。在本示例中,過程500始于接收激活請求的動作505,該請求可以包括整個產品密鑰和/或產品密鑰的各種相關部分,例如圖3B所示的組ID、序列號、第一安全值和/或第二安全值。在動作510處,過程500可以使用一些來自產品密鑰的標識信息(例如組ID)來訪問與第一安全值相關的驗證信息。例如,過程500可以使用在內部編碼組ID的統一資源定位符(URL)來與驗證信息的存儲器(例如圖2所示的存儲器沈0)進行聯系。在獲得了相關驗證信息的情況下,過程500可以繼續到動作515,以分析第一安全值。例如,在通過使用秘密密鑰加密序列號和組ID來生成第一安全值的實施例中,過程500 訪問的驗證信息可以包括與所用加密算法相對應的解密算法的標識(或可替代地,實現所述解密算法的程序代碼)以及被用作解密算法參數的秘密密鑰。在該情況下,過程500可以在動作520處使用所訪問的驗證信息來解密第一安全值,并且將結果與序列號和組ID相比較。如果序列號和組ID與經解密的第一安全值匹配,則可以認為產品密鑰有效(至少臨時有效),并且該過程500可以繼續到動作530,以處理可能的審計。另一方面,如果確定序列號和組ID不與經解密的第一安全值相匹配,則過程500可以繼續到動作525,以向發送激活請求的計算機通知所述激活請求已被拒絕。可替代地或此外,過程500訪問的驗證信息可以包括所用加密算法的標識(或可替代地,實現加密算法的程序代碼)以及用作加密算法參數的秘密密鑰。在該情況中,過程 500可以執行自己對于序列號和組ID的加密,并且在動作520處將結果與第一安全值相比較。如果第一安全值與過程500生成的密文匹配,則可以認為產品密鑰有效(至少臨時有效),并且該過程500可以繼續到動作530,以處理可能的審計。另一方面,如果確定第一安全值不與過程500生成的密文相匹配,則過程500可以繼續到動作525,以向發送激活請求的計算機通知所述激活請求已被拒絕。在通過使用秘密密鑰散列(hashing)序列號和組ID來生成第一安全值的另一個實施例中,過程500訪問的驗證信息可以包括所用散列算法的標識(或可替代地,實現該散列算法的程序代碼)以及在生成第一安全值的過程中被用作參數的秘密密鑰。然后,過程 500可以在動作520處執行自己對于序列號和組ID的散列處理,并且將結果與第一安全值相比較。如果第一安全值與過程500生成的序列號及組ID的散列相匹配,則可以認為產品密鑰有效(至少臨時有效),并且該過程500可以繼續到動作530,以處理可能的審計。另一方面,如果確定第一安全值不與過程500生成的序列號及組ID的散列相匹配,則過程500 可以繼續到動作525,以向發送激活請求的計算機通知所述激活請求已被拒絕。如上所述,是否審計特定產品密鑰的決定可以采用各種不同的方式做出,例如通過隨機選擇和/或基于所感知的安全威脅等級。如果在動作530處確定要審計產品密鑰, 則過程500可以繼續到動作M0,以向審計機構(例如圖2所示的增強的安全服務器250)傳送審計請求,并且在動作545處接收審計響應。如果審計成功,或者如果在動作530處確定不必審計,則過程500可以繼續到動作535,以識別將要被授予的一個或多個許可并且將授予的許可通知發送激活請求的計算機。另一方面,如果審計失敗,則過程500可以繼續到動作525,以向發送激活請求的計算機通知所述激活請求已被拒絕。參考圖6,該圖示出說明性過程600,該過程可以由審計機構(例如圖2所示的增強的服務器250)響應于從驗證機構(例如圖2所示的激活服務器140)接收審計請求而執行。在本示例中,過程600始于接收審計請求的動作605,該請求可以包括整個產品密鑰和/或產品密鑰的各種相關部分,例如圖3B所示的組ID、序列號、第一安全值和/或第二安全值。在動作610處,過程600可以使用來自產品密鑰的一些標識信息(例如組ID)來訪問與第二安全值相關的驗證信息。例如,過程600可以使用在內部編碼組ID的統一資源定位符(URL)來與驗證信息的存儲器(例如圖2所示的存儲器260)進行聯系。根據特定的實現方式,過程600可以提供附加證書信息以便訪問與第二安全值相關的驗證信息。這種附加證書信息可能對前端驗證機構(例如圖2所示的可以直接從因特網訪問的激活服務器 140)而言是不可用的,使得即使在前端驗證機構的安全性受到破壞的情況下,與第二安全值相關的驗證信息也可以保持安全。在獲得了相關驗證信息的情況下,過程600可以繼續到動作615,以分析第二安全值。例如,在通過使用秘密密鑰散列所述序列號和組ID生成第二安全值的實施例中,過程 600訪問的驗證信息可以包括與所用散列算法的標識(或可替代地,實現散列算法的程序代碼)以及作為散列算法參數使用的秘密密鑰。在該情況中,過程600可以執行自己對于序列號和組ID的散列處理,并且在動作620中將結果與第二安全值相比較??商娲?,過程600 訪問的驗證信息可以包括隨機或偽隨機地生成的與序列號和/或組ID相關聯的值,在這種情況下,過程600可以簡單地將隨機或偽隨機生成的值與第二安全值相比較。
如果第二安全值匹配該散列值(作為驗證信息的一部分被檢索或由過程600使用檢索到的驗證信息生成),則可以認為產品密鑰通過了審計機構的驗證,并且過程600可以繼續到動作625,以向發送審計請求的驗證機構通知所述審計成功。否則,該過程600可以繼續到動作630,以向驗證機構通知所述審計失敗。圖7示意性示出了可以實現本公開的各種不同發明方面的說明性計算機1000。 例如,在這種計算機上可以實現在這里為圖1-2中的產品密鑰生成服務器110、用戶計算機 130、激活服務器140以及增強的安全服務器250描述的任何功能。計算機1000包括處理器或處理單元1001以及存儲器1002,該存儲器可以包括易失性和/或非易失性存儲器。除了系統存儲器1002之外,計算機1000還可以包括存儲裝置1005 (例如一個或多個盤驅動器)。存儲器1002可以存儲一個或多個指令,以對處理單元1001進行編程來執行這里描述的任何功能。存儲器1002還可以存儲一個或多個應用程序和/或應用編程接口(API)函數。計算機1000可以具有一個或多個輸入設備和/或輸出設備,例如圖7所示的設備 1006和1007。其中,這些設備可以尤其用于呈現用戶接口??捎糜谔峁┯脩艚涌诘妮敵鲈O備的示例包括用于視覺輸出呈現的打印機或顯示屏或用于聽覺輸出呈現的揚聲器或其他聲音生成設備。可用于用戶接口的輸入設備的示例包括鍵盤和指示設備,例如鼠標、觸摸板和數字化板。另舉一例,計算機可以通過語音識別或以其他可聽格式來接收輸入信息。如圖7所示,計算機1000還可以包括一個或多個網絡接口(例如網絡接口 1010), 以便能夠經由各種不同的網絡(例如網絡1020)來進行通信。網絡的示例包括局域網或廣域網,例如企業網或因特網。此類網絡可以基于任何適當的技術,并且可以依照任何適當的協議工作,并且可以包括無線網絡、有線網絡或光纖網絡。在如此描述本發明的至少一個實施例的若干方面之后,應當理解,本領域技術人員將很容易想到各種不同的改變、修改和改進。這些改變、修改和改進被預期是本公開的一部分,并且預期在本發明的精神和范圍內。相應地,以上描述和附圖僅僅作為示例。本發明的上述實施例可以采用多種方式中的任何一種來實現。例如,這些實施例可以使用硬件、軟件或是其組合來實現。在使用軟件實現時,軟件代碼可以在任一適當的處理器或處理器集合上執行,無論所述處理器是在單個計算機上提供還是分布于多個計算機之間。此外,這里概述的各種不同的方法或過程可被編碼成可在使用了多種操作系統中任意一種的一個或多個處理器或平臺上執行的軟件。此外,此類軟件可以用多種適當的編程語言和/或編程或腳本工具中任意一種來編寫,并且還可被編譯成在主機或虛擬機上執行的可執行機器語言代碼或中間代碼。在這個方面,本發明可以體現為使用了一種或多種程序編碼的非瞬時計算機可讀介質(或多個計算機可讀介質)(例如計算機存儲器、一個或多個軟盤、壓縮盤、光盤、磁帶、 閃速存儲器、現場可編程門陣列或其他半導體設備中的電路配置、或其他非瞬時的有形的計算機存儲介質),所述程序在一個或多個計算機或其他處理器上執行時,所述程序將會執行實現如上所述的本發明的各種不同的實施例的方法。一種或多種計算機可讀介質可以是可傳送的,使得其上存儲的一個或多個程序可被載入一個或多個不同計算機或其他處理器中,以便實現如上所述的本發明的各種不同的方面。
這里使用的術語“程序”或“軟件”在一般意義上是指可以用于對計算機或其他處理器進行編程以實現如上所述的本發明的各種不同的方面的任何類型的計算機代碼或計算機可執行指令集。此外,應當理解,根據本發明的一個方面,在被執行時執行本發明的方法的一個或多個計算機程序不必駐留在單個計算機或處理器上,而是可以采用模塊化的方式分布在多個不同的計算機或處理器中,以便實現本發明的各種不同的方面。計算機可執行指令可以采用多種由一個或多個計算機或其他設備執行的形式,例如程序模塊。一般來說,程序模塊包括執行特定的任務或實現特定的抽象數據類型的例程、 程序、對象、組件、數據結構等等。典型地,在各種不同的實施例中可以根據需要來組合和分布程序模塊的功能。此外,數據結構可以通過任何適當的形式而被存入計算機可讀介質。為了簡化說明,數據結構可被示出為具有通過數據結構中的位置來進行關聯的字段。這種關系同樣可以通過為用于字段的存儲裝置分配計算機可讀介質中在字段之間傳遞關系的位置來實現。 但是,任何適當的機制均可用于在數據結構的字段中的信息之間建立關系,這其中包括通過使用在數據元素之間建立關聯的指針、標簽或其他機制。本發明的各種不同方面既可以單獨使用,也可以組合使用,或者采用上述實施例中沒有具體討論的多種設置使用,并且因此本發明并不僅限于被應用于上文的描述闡述的或在附圖中圖示的細節和組件設置。例如,在一個實施例中描述的方面可以采用任何方式與其他實施例中的方面組合。此外,本發明可以體現為方法,并且已經提供了所述方法的示例。作為方法一部分執行的動作可以采用任何適當的方式排序。相應地,所述實施例可以被構造成其中的動作以與所示出的順序不同的順序來執行,其可以包括同時執行某些動作,即使這些動作在說明性實施例中被顯示成順序動作。在權利要求中使用了例如“第一”、“第二”、“第三”等之類的順序術語來修改權利要求要素,但這本身并不意味著任何優先級、優先權、一個權利要求要素超出另一個要素的順序或是執行方法動作的時間順序,而是僅僅用作標簽來將具有某個名稱的一個權利要求要素與另一個具有相同名稱的要素區分開來(而不是用于順序術語),以便區分所要保護的元素。此外,這里使用的措辭和術語是用于描述目的,而不應該將其視為限制。這里使用的“包括”、“包含”、“具有”、“涉及”及其不同變體意指包含了其后列舉的項目,及其等價物和附加項目。
權利要求
1.一種用于驗證產品密鑰(350)的系統(200),包括至少一個處理器(140),該處理器被配置成訪問產品密鑰(350),該產品密鑰包括用于識別軟件產品的至少一個拷貝的標識信息 (360,362,370 ),該產品密鑰(350 )還包括與標識信息(360,362,370 )相關聯的安全信息 (364,366);使用至少一些標識信息(360,362,370 )來訪問來自除了產品密鑰(350 )之外的至少一個來源的驗證信息;以及使用該驗證信息來處理標識信息(360,362,370)和安全信息(364,366),以便確定產品密鑰(350)是否有效。
2.權利要求1的系統(200),其中安全信息(364,366)包括第一部分(364)和第二部分 (366 ),并且其中至少一個處理器(140 )還被配置成將安全信息的第二部分(366 )傳送到至少一個其他處理器(250)以供驗證。
3.權利要求2的系統(200),其中驗證信息是第一驗證信息,并且其中至少一個其他處理器(250)被配置成至少部分基于標識信息(360,362,370)來訪問第二驗證信息;以及使用第二驗證信息來核實安全信息的第二部分(366),其中第二驗證信息不同于第一驗證信息。
4.權利要求1的系統(200),其中產品密鑰(350)包括與軟件產品的至少一個拷貝相關聯的序列號(362)以及不同于序列號(362)的附加標識信息(360),并且其中附加標識信息 (360)被用于訪問驗證信息。
5.權利要求4的系統(200),其中附加標識信息(360)識別從包含下列各項的群組中選出的至少一項軟件產品的類型;軟件產品的版本;軟件產品所屬的軟件產品序列;以及用以分發軟件產品拷貝的渠道。
6.一種用于生成產品密鑰(350)的方法,包括以下動作訪問用于識別軟件產品的至少一個拷貝的標識信息(360,362,370 );生成與標識信息(360,362,370)相關聯的安全信息(364,366);至少部分基于安全信息(364,366)和標識信息(360,362,370)來生成產品密鑰(350);以及在至少一個存儲設備中存儲與至少一些標識信息(360,362,370)相關聯的驗證信息, 所述驗證信息在處理安全信息(364,366)的過程中被用于驗證產品密鑰(350)。
7.權利要求6的方法,其中安全信息(364,366)包括第一部分(364)和第二部分 (366),并且驗證信息是第一驗證信息,以及其中該方法還包括以下動作在至少一個存儲設備中存儲與至少一些標識信息(360,362,370)相關聯的第二驗證信息,所述第二驗證信息在處理安全信息中的第二部分(366)的過程中被用于驗證產品密鑰 (350),所述第一和第二驗證信息分別可以從至少一個存儲設備訪問。
8.權利要求6的方法,其中生成安全信息(364,366)的動作包括基于標識信息(360,·362,370)的至少一部分來生成至少一個散列值,并且其中該驗證信息包括所述至少一個散列值。
9.權利要求6的方法,其中生成安全信息(364,366)的動作包括使用至少一種加密算法以及至少一個秘密密鑰來加密標識信息(360,362,370)的至少一部分,以及其中該驗證信息包括至少一個秘密密鑰以及所述至少一種加密算法的標識。
10.權利要求6的方法,其中標識信息(360,362,370)包括與軟件產品的至少一個拷貝相關聯的序列號(362)以及不同于序列號(362)的附加標識信息(360,370),并且其中驗證信息以與附加標識信息(360,370)關聯的方式被存儲。
全文摘要
用于生成和驗證產品密鑰的系統、方法和設備。在一些實施例中,產品密鑰包括安全信息和用于識別軟件產品的至少一個拷貝的標識信息。該標識信息可以用于訪問來自除了產品密鑰之外的至少一個來源的驗證信息,并且該驗證信息可被用于處理標識信息和安全信息,以便確定產品密鑰是否有效。在其他的一些實施例中,安全信息包括要由第一驗證機構使用第一驗證信息處理的第一部分,以及要由第二驗證機構使用第二驗證信息處理的第二部分,其中第二驗證信息與第一驗證信息分離地存儲。
文檔編號G06F21/22GK102426640SQ20111036780
公開日2012年4月25日 申請日期2011年11月18日 優先權日2010年11月19日
發明者岡亞基 C., D. 貝納羅 J., P. 哈克 J., G. 托謝夫 K., J. 萊森 T., 索拉米 T. 申請人:微軟公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 邵阳市| 疏附县| 曲阳县| 霸州市| 日喀则市| 古蔺县| 山东省| 盈江县| 濮阳县| 巴马| 周口市| 天水市| 陆丰市| 平山县| 孝感市| 普兰县| 疏附县| 太原市| 汽车| 吴川市| 东港市| 通许县| 扎囊县| 巴里| 巨鹿县| 肥西县| 清丰县| 滨州市| 成都市| 屯门区| 梨树县| 密山市| 三河市| 渭源县| 高清| 武功县| 南郑县| 大悟县| 松江区| 海安县| 阳泉市|