TW589569B - Systems and methods for computer device authentication - Google Patents

Systems and methods for computer device authentication Download PDF

Info

Publication number
TW589569B
TW589569B TW090129539A TW90129539A TW589569B TW 589569 B TW589569 B TW 589569B TW 090129539 A TW090129539 A TW 090129539A TW 90129539 A TW90129539 A TW 90129539A TW 589569 B TW589569 B TW 589569B
Authority
TW
Taiwan
Prior art keywords
key
application
data
encryption
encrypted
Prior art date
Application number
TW090129539A
Other languages
English (en)
Inventor
Jean-Paul Abgrall
Robert W Baldwin
John D Barr
Jose A Casillas
David P Jablon
Original Assignee
Phoenix Tech Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phoenix Tech Ltd filed Critical Phoenix Tech Ltd
Application granted granted Critical
Publication of TW589569B publication Critical patent/TW589569B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/86Secure or tamper-resistant housings
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • H04L9/0844Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols with user authentication or key authentication, e.g. ElGamal, MTI, MQV-Menezes-Qu-Vanstone protocol or Diffie-Hellman protocols using implicitly-certified keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2129Authenticate client device independently of the user
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2145Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2147Locking files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/603Digital right managament [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/061Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying further key derivation, e.g. deriving traffic keys from a pair-wise master key

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Description

589569 玖、發明說明: 背景 本發明概言之# Βί!、人々 《係關於電腦系統與軟 法 文全性、完整性與驗證之系統與方 個人叶算裝置正逐漸變成 ^ ^ ^ ^ ^ 的世界<一重要部份,且 裔该寺裝置連接至網際 來參盥y 文全地驗證使用該等裝置 來.....動<個體變得愈來愈重要。 丨業1叙文縣護副域㈣行特許ϋ作之安全性 :心的概念是電腦安全性之„非常老 代商用作業系統之涫化 疋在見 ^ 救中,如微軟視窗之各種版本, ,人小型裝置之嵌人式作業系統所反映 傳統安全性界限與責任已你夺 杲乐、,·无《 、、 貝任已史仵挺糊,移位,及/或充滿安全 漏’同在些h科,作業系統已成長大至使得幾乎A法 保證系統,或甚至無法以任何詳盡方式來分析系統。料 此種保證程序在理論上是可能的,但是,在該等系統之預 期可〒以内,其之達成似乎是不切實際的。 —一些系統已融入實體或架構上分離之週邊與裝置,其中 母-週邊與裝置皆包含不同之CPU,以在一較大系統中包 含安全性關鍵資料,及執行安全性關鍵函式。一範例是以 智慧卡為基礎之驗證裝置。智慧卡裝置提供一分離之運作 環境,且只有該運作環境可對於一或更多嵌入式加密金鑰 進行存取。其可附著於一利用嵌入式金鑰來執行數位簽章 <傳統電腦,以驗證使用者與該電腦所啟始之異動。其也
O:\75\7506 丨、920519. DOC -6 - 589569 小與簡單至足以使得其之安全性可藉由一相當詳盡程序來 加以分析。但是,智慧卡與其他附加裝置具有一重要限制: 他們會造成该環境之成本與複雜度之增加,而此通常要求 項卡裔由使用者與系統管理者來安裝,且要求智慧卡必須 配送至該等機器之使用者。 以硬體為基礎之解決方案之另一範例是在系統中使用一 副加密處理器,且該副加密處理器具有用於該等金鑰之本
地私用儲存器。此範例之運作方式類似於一永遠插入之智 慧卡。 在使用者驗證之領域,多種機制已受到使用,以儲存及 或記憶之金鑰,密碼(包含PIN碼與通關片語,以“仏“等 與生物測足為基礎。不同種類之因數,例如你擁有的某^ 東西’你知道的某件事,與你是某種人,皆有其之優點! 弱點。-優良之慣例是使用所謂之多因數使用者驗證來* 合該等技術’其中不同類別之多重技術-起受到使用以 化用於驗證使用者之動作。
、許多該等硬體附加系統之另—限制,除了增加之成本岁 複雜度以外’是可能包含—CPU之附加裝置未具有其本』 〈使用者輸入與輸出裝置。智慧卡可依賴其他元件來執; =用者輸人與u錢。提供可靠之❹者之特殊化硬骨 =入/輸出I统可能増加額外之成本與複雜度至該等袁 山,且他們之功能與便利性經f受到極端限制。—具 嵌入式CPU之加密附加裝置很容易 ’、 安全威脅的影響,而此會移㈣裝;乂附…腦之w 曰秒^裝置〈-些包含值,其: O:\75\7506U9205 i9.D〇c Θ CPU A附著之電腦來告訴它應利用嵌人式金瑜來 簽署及處理什麼。由於該等分離裝置之隔絕性,該裝置通 常很難或無法保證主機器傳送給其之異動是真實的。因 此’在某些方面,該等系統最終仍然決定於主機器作業系 統與應用之完整性。 發明目標 本發月之一目標是提供一強力加密金鑰包含與管理系 統,以供用於致能裝置驗證與其他安全性應用。 本發月之另一目標是藉由增加最少量硬體至電腦來提供 高度保證。 本發明之另一目標是提供一允許電腦裝置驗證之系統, 其中絕對無需商品級商用個人電腦未具有之硬體。 本發明之另一目標是提供一小安全性核心,該安全性核 心運作於一分離於應用與作業系統之域,以便利下列程 序:分析及建立信任於安全性核心之建構。 本發明之另一目標是允許安全性核心存取作業系統(os) 與應用程式(應用)之記憶體的一部份,以建立該等程式, 尤其是請求安全性核心函式之該等程式,之真實性與完整 性。 發明摘要 為達成前述與其他目標,本發明包含提供電腦裝置驗誤 與應用及作業系統軟體之驗證之系統與方法。本發明提供 一小安全性核心,以便利分析及建立信任於核心之建構之 程序,且同時去除前所提及之附加硬體解決方案之限制。 O:\75\75061-920519.DOC • 8 - 589569 理想上,安全性核心運作於一不同於應用程式(應用)與作 業系統(0S)之域,但仍可存取0S與應用金鑰之記憶體,其 中應用與作業系統執行於主機器。本發明藉由產生一小内 部安全性核心於一傳統現有作業系統之邊界内來提供此種 安全性架構,且該安全性架構可驗證0S與應用之完整性, 及代表0S與應用來執行安全運作。 本發明之另一方面是,其致能安全性核心可連接至一基 礎架構,其中該基礎架構在一些實例中,藉由一共享之對 稱性金鑰,可建立二裝置之間之信任(例如從屬裝置與 DSS)。 本發明之其他方面包含 (1) 一私密主金鑰之重置開啟可鎖定型(OAR鎖定型)非揮 發性記憶體(NVM),其中該私密主金鑰稱為裝置主金鑰或 DMK,且其對於裝置是唯一的。當啟始時DMK移入 SMRAM,其中SMRAM是在系統管理模式(SMM)之下方可 存取之一特殊受控記憶體區域,且然後OAR鎖定型非揮發 性記憶體受到去能, (2) 包含器,以結合DMK與特定應用,且此解決隱私性/ 使用者可控制性問題,與 (3) —呼叫應用之完整性之“動態”點檢查。 在一實例中,本發明也提供結合至裝置及應用,與任選 地,應用所提供之顧客秘密之應用金鑰。一給定應用可具 有對應於之不同顧客秘密值之許多不同金鑰。 結合至裝置之該等金鑰是用以執行裝置驗證以供用於補 O:\75\75061-920519.DOC -9 - 589569 強使用者驗證,以供用於保護内容以致内容只配送至特定 裝置,與以供祕建構或增強虛擬智慧卡。該等應用可使 用本地儲存及/或遠端擷取之憑據(或共享憑據),其中該等 憑據置於公開/私密金鑰或共享憑據之型態,例如金餘與密 碼。金鑰包含器是用以強化關鍵系統金鑰之保護,例如在 預設之Crypto API包含器之取代期間。 ⑴-使用裝置主加密金鑰及保護—主加密金鑰之存取 之系統範例包含: (a) 非揮發性儲存器; (b) —系統啟始化程序,以在一系統啟始化程序中 自非揮發性儲存器讀取主金鑰,窝入一自主金 鑰推導而得之敏感值於一隱藏之儲存位置,及 使得執行於系統之任何程式皆無法存取非揮發 陧儲存态,直到系統啟始化程序下一次開始為 止; ⑷裝置’以使得執行於系統之正常運作模式之程 式無法存取該隱藏儲存位置;與 ⑷裝置,以使-執行於系統之限制運作模式之程 式可存取該隱藏儲存位置。 (2)隱藏一主加密金鑰於儲左哭 撕於墦存态 < 另一系統範例包含啟 動軟體,以自非探發性德左$ ^ 非俾贫r生儲存m一主金鑰,_對於非 揮發性儲存器之存取,以致力 、 ^ 致在下一次系統重置之前存取無 法再變為可供使用,盘宜 、 自王至餘推導而得之敏感資料 於一隱藏位址空間,且其中口 拥一、λ < 丫,、有一執仃於系統之受限運作
O:\75\75061 -920519. D0C -10- 模式之程式可存取該隱藏位址空間之敏感資料。 (3) —示範方法受到提供以藉由下列方式來控制對於應 用資料之讀取與寫入存取:限制一包含特定軟體碼之應用 對於加密金鍮之可用性。此方法包含(a) —主金鑰,(b) —應 用包含器資料結構(AppContainer),以保存該應用想要存取 之一密封或解開型態之資料;(c) 一加密守護器模組 (CryptoGate),以執行一構成該呼叫應用之碼位元紅之一部 份的加密摘要,稱為應用碼摘要(AppCodeDigest).與(d) 一包含完整性檢查函式之加密模組(CryptoEngine) ·以檢視 AppContainer與AppCodeDigest ;與主金餘,以⑴決定是否 該應用可解開給定之AppContainer之資料,或(ii)當密封資 料時,修改資料以增加完整性檢查資訊至AppContainer。 此項作法之一好處是其致能產生系統,其中應用必須接觸 一中央伺服器以取得其之第一 AppContainer。 (4) 本發明也提供一種藉由下列方式來控制一應用對於 資料之存取之方法:限制一特定裝置之一特定應周對於一 加密金鑰之可用性。此方法包含(a) —主金输,該主金鑰為 一 CryptoEngine所知;,(b) — AppContainer應用其中包含該 應用想要存取之一加密密封型態之資料;(c)一 CryptoGate 函式,以截收應用層次程式與CryptoEngine間之所有存 取,其中包含(d)—裝置,以檢視正試圖存取加密股務或資 料之一應用程式之一可執行記憶體内影像的一部汾位元 組,與計算位元組之該部份之一加密摘要,來計算該應用 之AppCodeDigest ;與(e)—由CryptoEngine來執行之完整性 O:\75\75061-920519.DOC -11 - 才议查方法’以(i)檢視AppContainer與AppCodeDigest;與主 金瑜’以決定是否該應用可解開給定之AppContainer之資 料’或(ii)當密封資料時,修改該資料以加入完整性檢查資 訊。 (5) 本發明也提供一種方法,以在稱為授權裝置(Device
Authority)之另一計算元件之協助之下,替另一計算元件, 例如驗證伺服器或應用註冊伺服器,來驗證一辨識裝置之 一辨識應用。此方法包含一登記方法,一註冊方法與一驗 證方法。 孩等伺服器可執行裝置之驗證及/或裝置之應用軟體之 軟體執照之執行與管理的函式。 (6) 該登記方法包含下列步騾a)在該裝置之一特許模式 處理期間雙到執行之第一序列之加密運作,以產生一傳送 至孩授權裝置之結果;與!^在該裝置之該特許處理模式期 間又到執行之第二序列之加密運作,以處理該授權裝置所 產生之一值,且該值受到該裝置之接收。一特許處理模式 之範例是英特爾x86相容型處理器之運作之系統管理模式 (SMM) ’其中當處理一系、统管理中斷(smi)時3廳受到啟 動,藉由使用一 SMI中斷服務函式。 本發明可以4多方式藉由使用對稱型與非對稱型加密之 組口來實現·例如(1)裝置具有一用於授權裝置之非對稱型 (公開)金鑰,或⑺裝置具有一用於授權裝置之對稱型金 鑰,或(3)裝置具有自己之一對非對稱型金鑰,與或許憑 據,與前述情形之組合。 O:\75\75061-920519.DOC Ί2- 589569 (7) 該註冊方法包含下列步驟(a)在該裝置之特許處理模 式期間受到執行之第一加密運作,以產生一傳送至該驗證 伺服器之結果;與(b)該驗證伺服器所執行之第二加密運 作,以產生一加密變數,且該加密變數受到儲存以供用於 該驗證方法期間;與(c)在裝置之特許處理模式期間受到執 行之一任選第三加密運作,以處理該驗證伺服器所產生之 一值,且該值受到該裝置之接收。 (8) 該裝置驗證方法包含下列步驟(a)在該裝置之一特許 處理模式期間受到執行之第一加密運作,以產生傳送至該 驗證伺服器之驗證資料;與(b)藉由使用至少在該註冊方法 期間所儲存之加密變數,驗證伺服器對於自該裝置所接收 之驗證資料所執行之第二加密運作,以決定該驗證之結果。 該等加密運作可使用以事件或計數器為基礎之驗證,紀 錄驗證,與挑戰/回應驗證。 (9) 本發明也提供一種驗證一辨識裝置之一辨識應用之 方法,或提供第二因數,以替包含一驗證伺服器之另一計 算機器來辨識該辨識裝置之一使用者。此方法包含一登記 應用,以(a)執行一登記方法,該登記方法涉及與一授權裝 置及一驗證伺服器進行通訊,以產生一 AppContainer於該 裝置,其中該AppContainer是一在加密方面關聯於該應用 之資料結構,與(b)儲存憑據資訊,其中驗證伺服器儲存 AppContainer之一應用金瑜。AppKey與 CustAppKey是說明 於下文之二種應用金输。一應用執行於該辨識裝置,以執 行一驗證方法,其中包含下列步驟··(a)解開儲存該等憑據 O:\75\75061-920519.DOC -13- 之AppContainer,(b)修改該等憑據;(c)重新密封 AppContainer ; (d)傳送辨識資訊與重新密封之
AppContainer之至少一部份至驗證飼服器,且其中重新密 封運作之至少一部份發生於執行該應用之程式碼之同一 CPU的一 SMI期間。該驗證伺服器(a)接收辨識資訊與 AppContainer之至少一部份;(b)使用辨識資訊來尋找或計 算一應用金鑰以解開該包含器;(c)如果解開之 AppContainer具有可接受值,則一特定裝置之特定應用視 為獲得驗證;與(d)儲存一關聯於該AppContainer之應用金 瑜。 本發明不一定,或通常不,需要為每一驗證而與一驗證 伺服器進行通訊。 (10)本發明提供一種產生及運用一或更多虛擬符記於一 裝置之方法,以供用於例如驗證,隱私性,完整性,授權, 審核,或數位權利管理。該方法包含一處理特定種類之虛 擬符記之應用,針對每一種虛擬符記之一 AppContainer, 與一 CryptoGate元件,以計算一呼叫應用之一 AppCodeDigest ,其中該呼叫應用正在請求一 CryptoEngine 元件之加密服務。
CryptoEngine是藉由CryptoGate元件來受到存取,知道一 或更多長壽之對稱型金鑰,與一或更多之長壽公開金鑰, 並執行AppContainer之加密密封與解開,其中加密運作之 一部份是在一特許處理模式,例如一 SMI中斷之情況,期 間受到執行。 O:\75\75061-920519.DOC -14-
CryptoGate元件本身可能或可能不知道一或更多長壽之 對稱型金鑰。Crypto Gate元件藉由下列方式來檢查該呼叫 應用之完整性:使用已載入該CryptoEngine之公開金瑜與 一 AppCodeDigest參考值,以檢查該應用之碼或靜態資料之 一部份之一數位簽章(通常是數位簽署之加密摘要或雜 湊)。該AppCodeDigest值包含該呼叫應用之記憶體内影像 之一部份的新近計算加密雜凑。
CryptoGate與CryptoEngine (a)推導一金鍮,以藉由主金 餘與AppCodeDigest與其他任選資訊來解開應用包含器;(b) 使用推導之金瑜來檢查AppContainer之訊息驗證碼,且(c) 如果該訊息驗證碼是正確的,則使用推導之金鑰來解密 AppContainer,且送回 AppContainer至應用。 (11)本發明也提供一種安全關聯一私密金鑰與一應用及 一裝置之方法,其中包含產生一 AppContainer,且該 AppContainer包含藉由一關聯於該裝置之金瑜來保護之私 密金鑰。 附圖簡述 當參照附圖來閱讀下列詳細說明時,應可較易瞭解本發 明之各種特點與優點,其中類似之參考號碼表示類似之結 構組件,且其中: 圖1是一展示一根據本發明原理之示範電腦裝置驗證系 統之元件的簡化方塊圖; 圖2展示一從屬元件階層; 圖3展示0S驅動程式(OSD)元件互動; O:\75\75061-920519.DOC -15- θ疋展^多因數從屬驗證(mfca)註冊之方塊圖; 一三5疋-展不根據本發明原理解開—應用之資料一 不範方法之流程圖; ^是-展示根據本發明原理密封—應用之資料之第二 方法的流程圖; 圖 ^是-展示根據本發明原理之第三示範方法之流程圖; 圖8是-展示根據本發明原理之第四示範方法之流程 圖9是-展示根據本發明原理之第五示範方法之 ι·定義 =較易瞭解本發明’一些用於本發明之定義展現於下文。 > —裝置是一計算裝置,例如桌上型,膝上型,掌上型或 ^泉機器’其中包含— BIOS層’以在啟始時,例如當第一 可欠%源時,控制機器之啟動運作。該BIOS層軟體環境 ^在作業系統與應用受到執行之前執行,且當作業系統與 怎用在執行時可間斷地受到存取。 —常駐於一或更多伺服計算機器之軟體,以協助致能一 裝置《安全性特點。-授權裝置藉由允許其他組織信任其 <仃為之程序來運作於一安全環境。 八 T裝置主金鑰(DMK)是一只為裝置所知之私密加密變 。,且在—些實例中,為一或更多授權裝置機器所知。其 可直接做為加密或完整性檢查之加密金鑰,或做為—推導 ,、他加达變數或金鑰之函式之輸入。
O:\75\75061 -920519.D0C 一應用碼摘要(AppCodeDigest)是一程式及/或其靜態資 料之一可執行記憶體内影像之一部份位元組的單向加密轉 換。該轉換可藉由下列函數來執行:SHA1,MD5, RIPEMD160,SHA-256,SHA-512或 CBC-MAC。 一應用金鑰(AppKey)是一加密變數,且該加密變數可直 接做為加密或完整性檢查之一加密金瑜,或做為一計算其 他加密變數或金鑰之函式之輸入。其之值專屬於一裝置與 應用對,且是藉由一應用金瑜部份(AppKeyPart)與一任選 顧客秘密(CustSecret)來推導。 一顧客秘密(CustSecret)是一由一應用系統之某一元件 來選擇之加密變數,且該應用系統可或可不執行於該裝 置。其關聯於一特定企業之一驗證伺服器,且可關聯於該 企業範疇之獲得授權使用該應用之許多裝置。 一顧客應用金瑜(CustAppKey)是一藉由一 CustSecret,一 AppCodeDigest與一 DMK來推導之加密變數,且可直接做為 加密或完整性檢查之一加密金餘,或做為一計算其他加密 變數或金鑰之函式之輸入。 一應用包含器(AppContainer)是一可利用一 CustAppKey 或AppKey來加密密封或解開之資料結構,其中密封運作提 供隱私性與完整性檢查,與任選地,密封該包含器之應用 之識別的真實性檢查。 加密引擎(CryptoEngine)在一限制糢式中執行加密運 作,且該限制模式只可在正常運作期中藉由CryptoGate轉 移控制自處理器之一正常模式至處理器之限制模式來存 O:\75\75061-920519.DOC -17- 取。限制模式運作也可包含一些運作,其中敏感資料可在 安全啟動與自我測試運作期間供處理器使用。 CryptoEngine能夠儲存及召回高完整性公開金输,能夠儲 存至少一長壽對稱型金鑰(DMK),能夠藉由該(等)長壽對 稱型金鑰來推導對稱型金鑰,能夠執行對稱型加密(完整性 與隱私性原始指令)與公開金鑰加密,能夠產生虛擬隨機數 字,任選地能夠執行私密金鑰加密,及任選地能夠執行其 他加密支援函式,例如金鑰產生與輸入及輸出金鑰。 請參看圖1所示之一示範實例,一加密守護器模組 (CryptoGate) 17截收應用層次程式與CryptoEngine 18間之 所有存取,且能夠檢視一程式及/或其靜態資料之可執行記 憶體内影像之一部份位元組,其中該程式正試圖存取加密 服務或資料。CryptoGate可執行存取控制決策及提供額外 參數(例如 AppCodeDigest)給 CryptoEngine 〇 授權緩衝區(AuthBuffer)是一允許一特定應用執行 Crypto Gate及/或Crypto Engine所提供之一組運作之資料結 構,其中該資料結構包含AppCodeDigest與一應用程式碼及 靜態資料之一部份的描述,其構成包含於碼摘要之該部 份,且其包含一可由CryptoEngine來驗證之數位簽章。 訊息驗證碼(MAC)是一用以檢查一訊息或資料結構之完 整性之值,且該值是以一方式藉由該訊息之一部份位元組 來計算,其中該方式需要一不為眾所知之加密變數。可用 以執行此工作之為眾所知之演算法包含CBC-MAC, DMAC,與HMAC (以為眾所知之雜湊函數為基礎,例如 O:\75\75061-920519.DOC -18- 589569 MD5 與 SHA1)。 系統管理中斷(SMI)是一包含於系統管理模式之中斷特 點,其中系統管理模式受到許多CPU之支援。一 SMI允許 BIOS層次軟體獲得CPU與一 SMRAM,一持續型記憶體位址 空間之專屬存取,其中該記憶體位址空間在SMM以外不易 取得。 2.設計架構 本發明之一高階設計首先受到說明。通常,電腦裝置驗 證系統之較佳實例之架構包含一或更多授權裝置,一從屬 加密引擎(CryptoEngine),其中在一使用BIOS之實例中,鎖 定之非揮發性記憶體與特許處理模式(例如SMM),一作業 系統驅動程式(OSD),一執行構成呼叫應用程式碼位元組之 一部份之加密摘要的加密守護器模組(CryptoGate),致能之 從屬應用(Apps),一驗證伺服器(PASS伺服器),與致能之 伺服器應用。 一線上登記程序提供於一從屬裝置與一登記伺服器之 間。異動層次應用程式介面(API)提供具有延伸裝置驗證函 式之從屬/伺服器應用。系統支援用於線上從屬/伺服器應用 之安全性函式,與離線獨立函式。登記可經由硬拷貝郵件 或電子郵件或甚至在製造(例如用於音樂播放器)期間來進 行。 驗證伺服器是任何加密致能之伺服器應用之一元件。其 之主要目標是執行相關於安全裝置致能應用之加密函式。 為執行該等函式,藉由依照需要來使用一或更多授權裝置 O:\75\75061-920519.DOC -19- 589569 伺服器之協助,驗證伺服器密封及解開與一加密致能從屬 裝置互換之包含器。該驗證伺服器維持一金鑰識別(KID) 值表。 授權裝置伺服器主要係處理裝置辨識碼與金鑰之註冊。 在一些實例中裝置主金鑰(DMK )是該裝置與一或更多授 權裝置間之一共享秘密。在此種情形之下,授權裝置必須 代表驗證伺服器與其他應用伺服器來執行所有需要存取裝 置主金瑜之加密運作。 本發明提供AppContainer之支援。授權裝置傳送一 AppKeyPart至驗證伺服器。該飼服器建構一允許 AppContainer之產生之演算法。此演算法需要存取DMK與 AppCodeDigest(ACD)且因此只可在一些機器上受到啟 動,其中DMK受到儲存,例如擁有裝置或一適當之授權裝 置伺服器。授權裝置定義如何關聯一應用至從屬個人電 腦,與如何使用作業系統驅動程式來註冊該應用。只要第 一 AppContainer是由一授權裝置伺服器來產生,則這可自 任何伺服器使用任何適當之通訊方法在線上進行。 公用程式產生應用之AppCodeDigest。該等公用程式可執 行於相同於預期要執行該等應用之作業系統。 另外,存在可用於本發明之從屬加密引擎(CryptoEngine) 之許多實例,且該等實例善用在所有通用個人電腦可供使 用,或很快可供使用之各種硬體特點。 一主金鑰包含器資料結構(MKContainer)是用以傳送加 密之訊息於不同機器之間。MKContainer之内容是利用一會 O:\75\75061-920519.DOC -20- 議金鑰以對稱方式來加密。 一公開金鑰包含器(PubKContainer)是用以傳送加密之訊 息於一從屬與一伺服器之間,其中訊息資料是利用伺服器 之公開金输來加密。 一簽章包含器(SignedContainer)是利用一方之私密金鑰 來加密。 一授權缓衝區(AuthBuf)是一種特別SignedContainer ,以用於驗證是否應用獲得授權可存取Crypto Engine。 3.較佳實例圖1是一展示根據本發明原理之示範電腦裝 置辨識系統之元件的簡化方塊圖。本發明之一較佳實例包 含一非揮發性記憶體(NVM) 11,其中NVM 11是由一重置開 啟-鎖定保護機制(〇AR-lock) 14來保護;一 BIOS ROM系統 啟始化模組12 ;與一系統管理模式(SMM) 16,其中SMM 16 可自系統之正常運作模式藉由一系統管理中斷(SMI)受到 存取。 受到保護之非揮發性記憶體11是用以儲存私密裝置主金 鑰。BIOS系統啟始化模組12負責安全轉移私密DMK自非揮 發性記憶體11至SMRAM 13,而SMRAM 13是一只可自 SMM16來定址之受到保護記憶體區域。在DMK轉移至 SMRAM 13之後,系統啟始化模組12關閉OAR-鎖定鎖存器 14,以使執行於此系統之程式15無法存取非揮發性記憶體 11,直到下一系統重置為止。DMK只有在系統正常運作期 間方可自隱藏SMRAM 1 3中取得。 除了當啟動時執行之ROM系統啟始化模組12以外,重置 O:\75\7506l-920519.DOC -21 - 開啟-鎖定保護機制14使得任何程式14皆無法讀取非揮發 陡记te 11。在讀取非揮發性記憶體丨丨之後,系統啟始化 杈組12關閉鎖存器14,以使非揮發性記憶體11完全無法受 到存取直到下一次系統重置為止,且在其時系統啟始化模 組12會重新取得控制。 4·第二實例 當重置開啟-鎖定之非揮發性記憶體丨丨不可供使用時,其 之替代方案是儲存DMK之一部份於BI〇s R〇M啟動區 塊,其中BIOS ROM啟動區塊通常是一 16κ位元組之R〇M 區,且該區是在BI0S系統啟始化模組12之系統啟動之啟動 /自我測試運作之後由系統對映至無法定址之區域。在以各 種保澄位準啟動系統之後,&有—些其他位置通常無法受 到應用之存取。 SMM是一具有額外獨特特點之英代爾χ86相容處理器之 運作之一特殊限制模式,其中該等獨特特點展現一保護執 行模式之優點。一晋通軟體除錯器無法在單一步驟中通過 SMM碼,且除非是在SMM之下,否則系統管理記憶體 (SMRAM)也無法方便受到觀看。這模式是用以在機器之正 苇運作期間隱藏DMK於一從屬pc,且使用DMK於需要驗證 機器之真實識別之多種安全性用途。 前所提及之特殊特點(BIOSR〇M碼,重置開啟_鎖定非揮 發性記憶體11,與系統管理模式16)皆非系統之運作所絕對 必需,但是他們一起可提供較高位準之安全運作保證給系 統0 O:\75\75061-920519.DOC -22- 5.第三實例 在另一純軟體CryptoEngine實例中,相同之功能是以較 低之竄改預防之保證位準受到提供。此種情形之運作限制 模式是標準之“零環”作業系統保護,其中CryptoEngine函式 是建構於一稱為作業系統驅動程式之系統裝置驅動程式以 内。因為作業系統驅動程式未執行於SMM,所以其之安全 性不如BIOS強化型產品。因此特殊額外修改與困惑技術也 包含於實例之純軟體型態,以保護DMK不會受到發現與拷 貝。除此之外,因為DMK是儲存於檔案系統,而非主機板, 所以增加額外之裝置偵測至作業系統驅動程式以結合 DMK與個人電腦。 另外,在純軟體系統未執行於一限制模式之實例中,該 碼包含一些特殊特點,其中該等特點意欲使得逆向推導與 “破解”更為困難。 在CryptoEngine之各種純軟體型態中,多種技術是用以 提供DMK與核心加密運作之最強保護。 本發明結合一裝置至一私密主金鑰,稱為裝置主金鑰 (DMK)。在DMK與機器之間存在一關聯,以致DMK無法藉 由未經授權之裝置自一機器轉移至另一機器。在未執行於 一限制模式之系統之一純軟體實例中,裝置與DMK之間之 關聯是以一使用多重機器辨識量度之臨限秘密分裂方法為 基礎。此方法允許使用者藉由下列方式遞增地升級他們之 機器:執行一系列之硬體改變以產生相當小之變更於該組 量度,以致該系統不會失去使用DMK之能力。當DMK緊密 O:\75\75061-920519.DOC -23- 結合系統之一特定磁碟機時,重新格式化硬碟機或將其與 另一系統互換將導致無法使用DMK。 本發明提供受限之DMK與會議金鑰曝露。當使用DMK與 會議金鑰於任何運作時,此設計限制他們之曝露。 本發明提供破解抗拒。由於下列事實:一純軟體 CryptoEngine可不具有下列能力:(1)隱藏DMK於一特許位 置(例如SMRAM)或(2)使得無法如同韌體(例如BIOS) —般 在限制模式(例如SMM)下觀看碼運作,所以純軟體 CryptoEngine碼運用額夕卜方法來抵制破解。除此之外,軟 體CryptoEngine運用技術以儲存DMK,以使一通用程式無 法決定DMK。 6.授權裝置之概論 授權裝置元件執行下列功能授權裝置藉由提供一專屬於 一應用與裝置對之AppKey來登記一裝置,並儲存其之DMK 之一拷貝,與註冊裝置之應用。授權裝置與伴隨之模組在 此受到簡短解釋,且將更詳細解釋於下文。一授權裝置可 提供服務給其他授權裝置,例如產生AppContainer與 AppKeyPart 0 從屬應用是一加密致能應用,且通常執行於一微軟視窗 型個人電腦(PC)。從屬應用允許一使用者測試是否該裝置 已受到登記,登記該裝置及顯示一金鑰識別(如果需要的 話),註冊一應用於該裝置,證實應用之諸部份之完整性, 操作AppContainer-包含產生,編輯,刪除,傳送 AppContainer至驗證伺服器,自驗證伺服器取得 O:\75\75061-920519.DOC -24- 589569
AppContainer,與解登記該裝置。 驗證伺服器是一從屬/伺服器加密致能應用之伺服器部 份之一元件。其負責驗證來自從屬之事物。驗證伺服器是 一軟體元件,其中接收來自一從屬裝置之註冊請求,向應 用註冊模組請求一 AppKey並儲存該AppKey,產生一 AppContainer並傳送其至從屬裝置,提供一使用者介面(UI) 以經由一UI來操作AppContainer (產生,編輯,密封與解 開),與接收來自從屬裝置之AppContainer。 授權裝置是由許多元件所組成,且具有至少下列功能。 一登記模組接收請求以登記一裝置。其傳送DMK之一半至 從屬,並產生另一半以送回至從屬裝置。一應用註冊模組 接收針對AppKey之請求,建立AppKey,及送回AppKey至 呼叫者。 7.使用者經驗 此節討論一些運作,其中當測試一包含授權裝置之系統 時,使用者可預期執行之運作。基本概念是使用者將登記 一從屬裝置(執行授權裝置之登記模組),註冊一應用,且 接著產生,編輯,密封及解開該裝置之APPcontainer (執行 授權裝置之應用註冊模組)。使用者也可傳送APPcontainer 至驗證伺服器,其中他們可藉由使用應用註冊模組所產生 之AppKey來受到操作。驗證伺服器功能是由授權裝置來致 能。 一典型設定是: 從屬PC <--〉應用註冊與AppC〇ntainer轉移<—〉PASS伺 O:\75\75061-920519.DCX: -25- 589569 服器從屬Pc<•◊登記 <--〉授權裝置飼服器。 使用者執行系統所採取之動作展現如下。 登記於從屬展示如下。若要登記裝置,使用者 :用仗屬應用來執行下列動作。-般而言,裝置登記很少 發生,例如每—次當裝置取得—新擁有者時發生一次。 使用者可測4登§己。11是為了確保裝置先前未使用測試 於登記選項來受到登記。如果裝置已受到登記且使用者想 要重新登記’則應用之解登記選項受到選擇。
使用者可選擇-裝置登記選項。此選項接觸—充當登記 祠服器之授權裝置’並產生裝置之—DMK。該DMK將送回 至從屬PC並受到儲存。錢存之處決定於目前使用之加密 系統為何種版本。-對話接著出現以顯示該裝置已受到登 記0
使用者可能能夠使用授權裝置之紀錄來證實一新DMK 已受到產生。使用者可使用㈣裝置之登記使用者介面來 檢查’以展示一新DMK已受到產生。 應用如何註冊於從屬展示如下。為繼續下列動作,使用 者必須具有一登記之從屬裝置。 使用者首先啟始註冊。使用者選擇註冊選項以啟始註 冊。使用者在此時受到提示應輸入應用與裝置之組合之一 應用/裝置辨識碼(ADID)。 註冊請求是經由驗證伺服器傳送至應用註冊模組。應用 5主冊模組產生一 AppKey,且該AppKey接著返回至驗證伺服 器。 O:\75\75061-920519.DOC -26- 使用者可檢查該等應用註冊模組紀錄。使用者使用應用 註冊模組使用者介面來檢查是否一針對應用之AppKey已 受到產生。 使用者可檢查驗證伺服器之註冊紀錄。使用者檢查是否 驗證伺服器現在具有一針對目前執行於裝置之應用實例之 AppKey 0 使用者可在一從屬裝置上驗證是否其現在具有一 AppContainer 0藉由從屬裝置之AppContainer選單,使用者 可看見他具有一 AppContainer之可見確認。
AppContainer 運作 從屬之AppContainer運作展示如下。下文是一使用者在 從屬裝置可利用AppContainer做何事之討論。在註冊之 後,使用者將在一裝置上具有驗證伺服器所產生之一 AppContainer 〇 從屬所提供之選項允許使用者傳送一 AppContainer,及 向驗證伺服器請求一 AppContainer,如下所述。該等選項 提供一方法以展示從屬與驗證伺服器間之一典型異動。最 佳之解釋方式是藉由一範例。 一使用者想要增加金錢至他的從屬PC之他的虛擬現金 抽屜。目前餘額儲存於一 AppContainer。使用者選擇現金 抽展(Cash Drawer)應用之一增加現金(Add Cash)選項,且 連同App Container—起傳送至執行於驗證伺服器(由一現金 抽展提供者來執行)之一 AddCash腳本。AppContainer受到 開啟,資料受到改變且送回至使用者,其中此項動作之全 O:\75\75061-920519.DOC -27- 部可能皆屬於同一異動。 在系統之一實例中,授權裝置之顧客能夠看見發生於從 屬與伺服器之事,且自己操作AppContainer,增加他自己 之資料,與以他自己之速度來檢查紀錄等。所以函式受到 提供以使此項工作可由使用者自從屬裝置來啟動,而非一 原子異動,其中一 AppContainer傳送至伺服器,預先定義 之資料受到改變,且接著送回至從屬。使用者可選擇從屬 之一選項以傳送一 AppContainer至祠服器。使用者接著可 前往伺服器,檢查是否該AppContainer在該處,改變該 AppContainer之一些資料並解開該AppContainer。使用者接 著可回到從屬PC,且取回(GET)該AppContainer 〇 在本發明之較佳實例中,從屬拉回資料,而非使得伺服 器推回該等包含器。 從屬應用具有一 AppContainer選單,以允許使用者列出 (List)AppContainer,編輯(Edit) — AppContainer,傳送(Send) 一 AppContainer至驗證伺服器,自驗證伺服器取得(〇6〇 — AppContainer,產生(Create) — AppContainer,與刪除(Delete) 一 AppContainer 〇 列出AppContainer。所有AppContainer皆是由應用儲存於 從屬裝置之一預設目錄。選擇List AppContainer選項允許所 有包含器受到顯示(可能連同用以辨識產生他們之應用之 一些資料)。使用者可強調該表列之一 AppContainer,且接 著選擇下列二選項其中之一: 編輯AppContainer。應用警告使用者該AppContainer目前 O:\75\75061-920519.DOC -28- 受到密封,並給與其嘗試及解開該AppContainer之選項。 如果解開成功,則AppContainer之内容顯示於一本文區塊 且是可編輯的。如果使用者改變AppContainer之任何部份 並接著關閉AppContainer ’則其將獲得密封 (Seal)AppContainer之選項。 傳送AppContainer至驗證伺服器。使用者傳送一 AppContainer至驗證伺服器。這使得使用者可前往驗證伺 服器,及嘗試操作該AppContainer。 自驗證伺服器取得AppContainer。使用者可向驗證伺服 器請求一特定檔案。一隨後之Unseal運作驗證是否 AppContainer未經改變地抵達,且是由驗證伺服器所產生。 產生AppContainer。使用者應能夠產生其自己之 AppContainer。當使用者選擇此選項時,如前所述類似於 編輯AppContainer選項之功能可供使用。 删除AppContainer。這不是一加密功能,但可供用以協 助清理系統。 8.驗證伺服器之AppContainer運作 驗證飼服器展現二使用者介面(AppKey紀錄與 AppContainer),以允許使用者執行各種工作。
AppKey紀錄是用以顯示當一 AppKey受到請求時某事真 的正在發生給使用者。其不允許使用者修改資訊。其可為 一紀錄觀看器,以展示來自一從屬裝置之一 AppKey請求與 一辨識碼受到接收,且該AppKey受到儲存。其可顯示一些 資訊,例如日期/時間,請求從屬裝置之IP位址:KID,合 O:\75\75061-920519.DOC -29- 成之AppKey等。
AppContainer使用者介面提供類似於從屬裝置應用之選 項。使用者可列出(List) AppContainer,產生(Create)或刪 除(Delete) — AppContainer,密封(Seal)或解開(Unseal) — AppContainer,與同意或不同意應用註冊。
List AppContainer列出儲存於驗證飼服器之所有 AppContainer以及他們所屬之應用之辨識碼。選擇一 AppContainer會引出另一頁,以提供用以編輯AppContainer 之内容之能力。 藉由使用Create AppContainer,使用者可產生從屬裝置 之AppContainer (該裝置可接著請求該等AppContainer)。 Delete AppContainer功能不是一加密功能,但是可供用以 協助清理系統。 登記與應用註冊模組具有一使用者介面/紀錄觀看器,以 提供關於請求之主金鑰,AppKey等之資訊。 9.授權裝置伺服器之加密設計 裝置,驗證伺服器,與授權裝置伺服器皆具有加密服務 模組。此節主要著重於授權裝置伺服器之需求。 授權裝置伺服器使得其之功能分散以易於保護各種元 件。主要之理念是未受到保護之金鑰絕不傳送至任何網 路。其之元件包含:金鑰,加密庫,與一登記碼。該等金 鑰((DMK,伺服器PrivateKey)最好儲存於一使用某種安全 硬體裝置之宿主安全模組。安全裝置結合加密函式與一金 鑰資料庫,其中該金鑰資料庫或許針對來自加密函式之安 O:\75\75061-920519.DOC • 30 - 589569 全存取受到最佳化。加密庫提供必要常式給驗證伺服器以 執行原始運作(加密,解密等)於各種包含器。登記函式產 生DMK,而這些DMK是屬於系統之最敏感資料之秘密。登 記碼保護該等DMK,並安全傳送他們至登記從屬裝置。 加密伺服器之邏輯佈置展示如下。 存在於一防火牆與負載平衡器之後的是: HTTP 飼月艮器一執行 Enrol lment. pro toe olHandler (+ 包含器 類別)之伺服器。 在另一邏輯防火牆之後,用以防止未經授權之流量為金 瑜伺服器所接收的是: 具有執行Enrollment.getDMK (+包含器類別)與 RSA-Bsafe Crypto Lib之金鑰資料庫之金鑰伺服器。 加密伺服器安全地儲存三私密金鑰,以分別用於簽署, 通訊與一根金鑰。根金鑰是用以簽署新的較低位準金鑰。 該等金鑰可儲存於一加密模組在啟動時載入之加密樓案。 每一從屬之登記所產生之DMK儲存於一資料庫。一授權 裝置產生該DMK。此碼接收一來自登記之一 servlet/協定處 理 部 份之一 PubKContainer 的 clientSeed 與 enrollmentMKKey(簡寫成為 pubic(mkc(clientSeed)) ° ClientSeed是藉由一加密函式,例如SHA1,與一 serverSeed 結合以產生DMK。DMK傳回至一 MKContainer内之裝置’ 其中DMK是以enrollmentMKKey來加密密封。 授權裝置之基本必需功能是處理登記請求。一登記協定 處理函式(簡寫成為enrollment.protocolHandler)自網路取 O:\75\75061-920519.DOC -31 - 得包含器,並傳送該等包含器至加密伺服器,以致登記 DMK產生函式(enrollment.genDMK)可執行其工作,且不會 曝露任何關鍵資訊給任何其他人。 10 ·元件細節 此節說明許多可能實例之一。 登記。自授權裝置之觀點來看,登記之處理流程展示如 下。 (1) 一登記servlet是由一從屬來啟動。 (2) 該登記servlet經由RMI來實現登記類別於安全伺服 器。InputStream是當作一引數來傳送至安全伺服器之一登 記物件。 (3) 安全伺服器之登記物件接著繼續: 利用接收之InputStream做為一建造器引數來建造一 PubKContainer類別; 自 PubKContainer取得 MKContainer之一實例。 自MK Container擷取DMK從屬種子; 產生一隨機DMK伺服器種子(亦即DMK之伺服器部份); 連接SMClientSeed與DMKServerSeed以產生主金鑰。該 連接是依照下列順序:DMKClientSeed||DMKServerSeed ; 設定適當之運作碼與資料 (DMKServerSide)於MK Container物件; 藉由執行一 SHA1於前一步驟所構成之主金鑰來產生一 金鑰識別。此步驟也可確保金鑰識別是獨特的; 轉換主金鑰與金鑰識別成為Biglnteger,並儲存他們於資 O:\75\75061-920519.DOC -32- 料庫。密封取得之MK Container物件; 以位元組陣列之型態取得原始資料,其中該等原始資料 要自安全伺服器傳送至一網路伺服器(亦即至呼叫登記 servlet);與 登記servlet轉換該等原始位元組成為InputStream,並傳 送其至從屬以做為一 Http回應。 前述流程是用於一簡單實例。在一較佳實例中,一確認 servle等候一從屬回應(從屬已成功接收DMKServer種子), 且接著更新資料庫之永久DMK。 11.模組元件細節 從屬應用是一通常執行於一微軟視窗型PC之應用。為使 此應用可使用加密函式,其界接一由作業系統驅動程式來 呼叫之核心模式裝置驅動程式。 此應用提供下列函式:啟始化,登記測試,登記裝置, 註冊一應用於裝置,列出AppContainer,編輯 AppContainer,儲存 AppContainer,傳送 AppContainer至驗 證伺服器,自驗證祠服器取得AppContainer,產生一新 AppContainer,與解登記裝置。 關於啟始化,當應用受到啟動時,其自動執行下列工作: 載入作業系統驅動程式,與呼叫OsdRegisterApplication以 使應用設定成為註冊之應用。 在測試登記方面,呼叫OsdGetCapabilities檢查一送回之 功能(Capabilities)參數以查看是否該裝置已受到登記,且 展示一對話以顯示是否該裝置受到登記。 O:\75\75061-920519.DOC -33- 若要登記裝置,呼叫OsdEnrollGenerateRequest以取得一 密封之PubKContainer,且傳送一 HTTP請求至授權裝置登 記URL,傳送PubKContainer於該請求之主體’檢查回應碼 以確定該運作是成功的。如果成功,則傳送作為 MKContainer 參數送回之内 容於一對於 OsdEnrollProcessResponse之呼叫,且展示一對話以顯示是 否登記是成功的。 若要註冊一應用於該裝置,呼叫OsdGetCapabilities並檢 查送回之功能參數以查看是否該裝置已受到登記。如果答 案是否定的,則如前所定義來登記該裝置。提示使用者要 輸入一字串,以辨識應用/裝置組合(ADID)。產生一將用於 註冊PubContainer。傳送一 HTTP請求至授權裝置 RegisterApp URL,且傳送PubKContainer與 ADID於該請求 之主體。檢查回應碼以確保該運作是成功的。如果成功, 則合成之資料應是一 AppContainer。儲存該AppContainer 於一預設之目錄。 使用者可顯示一儲存於預設目錄之AppContainer表列, 並具有強調一 AppContainer之能力。 從屬應用提供下列能力(經由選單選項,按鈕等):編輯 強調之AppContainer,刪除強調之AppContainer,傳送強調 之AppContainer至驗證伺服器,與產生一新AppContainer。 若要編輯一 AppContainer,首先解開該AppContainer,藉 由呼叫一 OsdAppContainerUnseal 函式,傳送 AppContainer 樓案pContainerBuffer參數之内容,且如果 O:\75\7506l-920519.DOC -34-
OsdAppContainerUnseal不成功,則顯示一錯誤對話。解析 AppContainer結構以達到資料(Data)欄位。顯示 AppContainer之内容於一編輯區塊,以允許使用者改變資 料。提供儲存或捨棄AppContainer之該等改變之能力。 若要儲存一 AppContainer,則密封該AppContainer,重新 建造該 AppContainer 結構,呼叫 OsdAppContainerSeal 函 式,傳送解開之AppContainer結構之内容於 pContainerBuffer 參數,且如果 OsdAppContainerSeal 不成 功,則顯示一錯誤對話。儲存密封之AppContainer結構於 檔案。 若要傳送一 AppContainer至驗證伺服器,則傳送一HTTP 請求至1^代3八11八00€;〇1^3丨1^1?〇1丫3函式之11尺乙,以傳送強調 之AppContainer樓案之内容於該請求之主體,且檢查該 HTTP請求之狀態及顯示一成功或失敗對話。 若要自驗證伺服器取得一 AppContainer,則一對話區塊 受到提供以允許使用者選擇要下載之伺服器之檔案。一 HTTP請求傳送至 OiGiveMeAnAppContainer 函式之 URL, 以傳送請求之AppContainer樓案之内容於該請求之主體。 該HTTP請求之狀態受到檢查且顯示一成功或失敗對話。如 果一檔案將要受到覆窝,則提示使用者要覆寫原始檔案。 若要產生一新AppContainer,則開啟一現存之 AppContainer樓案,解開該AppContainer並使資料區塊歸 零,且允許使用者編輯該資料並接著遵循儲存 AppContainer函式(以儲存該樓案成為使用者所指定之一新 O:\75\75061-920519.DOC -35- 589569 檔案名稱)。 若要解登記該裝置,則呼叫OsdRegisterApplication以使 應用設定成為一註冊之應用。呼叫OsdGetCapabilities以檢 查送回之功能字組(Capabilities Word),來查看是否該裝置 已受到登記。如果該裝置已受到登記,則呼叫 OsdlnvalidateDMK 〇 驗證(PASS)伺服器所提供之功能展示如下。驗證伺服器 可註冊一裝置/應用組合。從屬裝置傳送一請求至 OiRegisterMe 函式之 URL,其中一 PubKContainer與 ADID位 於該請求之主體。驗證伺服器傳送及轉送該請求至ARM伺 服器。ARM伺服器產生及送回一 AppKey,其中驗證伺服器 應相對於ADID來儲存該AppKey。驗證伺服器接著利用新 產生之AppKey來產生一 AppContainer,且傳回該 AppContainer至從屬裝置。這將完成註冊。所有前述動作 皆是在從屬,驗證伺服器與應用註冊模組間之單一異動中 完成。 驗證伺服器提供一使用者介面,以藉由一使用者介面來 操作AppContainer (產生,編輯,密封與解開)。驗證伺服 器提供一使用者介面’以允許使用者操作AppContainer。 這可藉由使用HTML與具有以Java來撰寫之Java Servlet來 執行,以允許AppContainer受到密封,解開等。列出與編 輯AppContainer需要網頁,如關於執行於從屬之應用之節 所定義。 驗證伺服器可接收來自從屬裝置之AppContainer。從屬 O:\75\7506l-920519.DOC -36- 589569 裝置具有一允許其傳送AppContainer至驗證伺服器之函 式。一輸入點存在於驗證伺服器以允許此件事發生。這可 藉由下列方式使用一 servlet來完成,其中該servlet讀取輸入 流之資料,並儲存資料以及一檔案名稱於一檔案,或甚至 更簡單只是致能HTTP之PUT方法於驗證伺服器。 12.包含器與金鑰 一包含器是一用以保存資訊之結構。此資訊可受到簽署 及/或加密。為增加安全性,各種型式之包含器皆可供使 用。該等包含器之一些包含器只用於簽署之資料。一些包 含器保存加密之資料。即使在加密之包含器以内,他們仍 具有許多副型式,且該等副型式決定於所用之加密演算 法。有四種包含器。 一 SignedContainer保存下列資料··藉由一私密金論(來自 簽署金鑰對)受到數位簽署,且可利用匹配之公開金鑰(在 從屬上公開金鑰儲存於ROM/快閃記憶體)來驗證之資料。 該等資料是用以傳送驗證之資料自授權裝置伺服器至從屬 機器,且用以授權軟體模組可使用授權裝置之從屬服務。 一 AppContainer是一受到保護之包含器,且只可藉由一 執行於一特定機器之特定應用程式來讀取或寫入。該等包 含器辨識密封他們之程式,且可允許另一程式來解開一包 含器,以致他們也可做為一安全型態之程序間通訊。高階 安全性功能,例如偵、測病毒修改,軟體執照與安全錢包, 可建構於AppContainer之上。通常,AppContainer是藉由 使用一用於加密之DMK之衍生物來結合至一給定機器。 O:\75\75061-9205I9.DOC -37- 一 PubKContainer是一數位信封,且該數位信封是由從屬 (OSD)利用一 RSA公開金鑰(來自通訊金鑰對)來加以密 封,且只可由一具匹配之私密金鑰之接收者來讀取(通常是 授權裝置伺服器)。該等金鑰是用於登記期間,及用以設立 一加密通道於從屬與一驗證之授權裝置伺服器之間。此包 含器内之資料是利用一 128-位元加密金鑰(也稱為此產品 之一主金鑰)來加密,其中該加密金鑰是由作業系統驅動程 式隨機產生。RC6金鑰(主金鑰)與從屬之金鑰識別(KID)是 利用接收者之公開金鑰(伺服器之通訊金鑰)來加密。 一 MKContainer是基於一主金輪來做為一數位信封之一 部份,其中該主金鑰是由從屬來產生,傳送於一 PubKContainer ,且只有此包含器之寫入者與讀取者知道該 主金鑰。在主金瑜經由一 PubKContainer傳送至祠服器之 後,該等MKContainer可用以保護從屬與授權裝置伺服器間 之通訊。該等MKContainer也可用以保護從屬機器本地之資 料。 該等包含器結構具有可在他們之上執行之一組預先定義 之運作。該等運作是密封與解開。 密封可為沒有加密之簽署(正如同一文憑具有一大學之 印章,但任何人皆可讀取該文憑之内容)。密封也可為加密 (正如同包含一獎項之獲勝者之信封受到密封,以致沒有人 可在不解開之下觀看内容)。 解開是用以逆轉密封運作。這可藉由驗證密封是原封不 動的(正如同文憑之印章,他們是幾乎無法複製並可受到驗 O:\75\75061-920519.DOC -38- 589569 證之某些特點)。解開也可用以曝露隱藏之内容(以獎項為 例,取得隱藏之内容非常容易)。 每一包含器結構皆說明於下文。在密封運作之說明之 後,包含器結構是以其之解開版本來展示。在解開運作之 說明之後,接著密封結構受到展示。如果一運作由於任何 原因而失敗,則其使得包含器設為零。 下面表列逐項列出本發明所提供之函式。一小集合之包 含器型式支援:(a)通訊安全性,(b)系統完整性,與(c)應用 專屬保護包含器。本發明所提供之函式允許在從屬與授權 裝置伺服器之間產生一 DMK,以允許只對於一特定裝置有 意義之資料包含器或指令之產生,基於程式而非使用者之 識別來控制對於資料之存取,驗證是否資訊來自一經授權 之授權裝置伺服器,驗證是否資訊來自一特定裝置,支援 需要保存無法竄改之秘密之應用程式的受保護執行環境, 與支援只可由特定程式來覆寫之資料儲存區。 1 3.本發明之設計之概論 受保護之包含器是藉由低階BIOS碼與0S層驅動程式 (OSD)碼(例如在Win98下之VXD)來建構。BIOS碼之一部份 在POST期間執行以設定系統管理記憶體(SMPAM)之資 訊,且該等資訊是供藉由系統管理中斷(SMI)所啟動之常式 來使用。SMI常式使用來自快閃ROM之公開金鑰來執行 RS A運作,因此該等運作很難受到竄改。SMI常式也隱藏及 管理DMK,而DMK是裝置與授權裝置伺服器知道之一私密 RC6金鑰。加密原始指令利用此單一 128-位元主金鑰來推導 O:\75\75061-920519.DOC -39- 589569 多重金鑰,其中每一金鑰是用於單一用途。SMI常式驗證 他們之呼叫者,並將只執行一經授權之作業系統驅動程式 模組之服務。 所有從屬皆知道該伺服器之公開金鑰,所以他們可驗證 是否該伺服器簽署一訊息,因為只有該伺服器知道匹配之 私密金鑰。每一裝置之DMK皆是獨特的,且只有該裝置與 伺服器知道該DMK。如果一訊息是藉由DMK來受到適當保 護,則該訊息一定來自具有該獨特DMK之伺服器或從屬。 從屬使用一 20位元組金鑰辨識碼來辨識他們自己,其中該 金鑰辨識碼是DMK之SHA1摘要。SHA1函數就下列意義而 言是單向:除了嘗試每一可能之主金鑰以查看是否其產生 觀察到之金鑰識別以外,知道金鑰識別無助於攻擊者尋找 DMK。由於存在太多DMK值(2的128次方),所以此種作法 並不實際。
AppContainer是藉助於DMK來受到保護。每一包含器是 利用一金鑰來加密,其中該金鑰是擁有該包含器之程式碼 之DMK與摘要的函數。此設計確保SMI位準碼將只解開一 程式之一包含器,其中該程式產生該包含器。授權裝置伺 服器必須參與一特定機器之一特定程式之第一包含器的產 生。 中間位準作業系統驅動程式碼支援包含器抽象化,及執 行SMI常式無法執行之運作。例如,SMI常式無法取得頁錯 誤,所以在呼叫SMI常式之前,作業系統驅動常式必須拷 貝參數至鎖定之記憶體。作業系統驅動常式也可執行一段 O:\75\75061-920519.DOC -40- 長於SMI常式之時間。 用以支援此版本之安全性牿 .絲—人 特點又協疋非常依賴本文所述 <四種包含器。例如,產生 、奉又所 本哭盥浐n ^ 生王金餘《登記協定是以該等包 σ °。,、技柘裝置伺服器之互換為基礎。 14 ·金鑰之使用 存在之金鑰與該等金鑰如何用以建立 將受到討論。 ,、文王f生現在 ::用加密金鑰來提供從屬系統本身,與從屬及授權 裝^服器之間,之程式及資料之隱私性,完整性與驗證。 、本發明使用公開/私密金鑰對。公開/私密金鑰對是用以 女全傳輸播需關聯於一特定從屬系統之資料。該等金输主 要是用以確保自任何從屬轉移至授權裝置飼服器,與自授 扭裝置飼服器轉移至任何從屬,之資料是真實的,且將易 於達成貝料疋私密的(受到加密)。該等金鑰是在製造期間 置入ROM 〇 授權裝置伺服器保存三RSA金鑰對之私密金鑰,其中該 等金鑰是用於不同用途且儲存於㈣器環境之不同位置。 從屬系統保存該三金鑰對之公開金鑰,且該等金鑰儲存於 R〇M。對於標準(強大)之加密,每一該等金鑰對之1024位 元版本受到使用。該三金鑰對是: 根金鑰對。私密金鑰儲存於一機器,且該機器受到一未 連接至網際網路之授權裝置之控制。匹配之公開金鑰儲存 於從屬機器之ROM。私密根金鑰是用以簽署新的公開金 餘其中該等公開金鑰接著傳送至從屬機器以取代失效之 O:\75\75061-920519.DOC -41 - 589569 公開金鑰。取代R〇^f金鑰之方法不屬於本文之範轉。 該等根金鑰將不頻繁地受到使用。公開金鑰是用於具有簽 署之包含器之從屬系統。 祠服器通訊金鑰對。這也稱為—封裝金鑰對且是用於動 態資料簽署。私密金鑰儲存於授權裝置伺服器,且是用以 建立與-從屬之安全通訊。私密金鑰可用以解開從屬所傳 送之金鑰(與任何其他資料),或簽署動態產生之訊息,其 中該等訊息將受到從屬之驗證。私密金鑰與㈣⑽恤腿 (又到使用。所有彳文屬皆具有儲存於他們之bi〇s 之匹配公開金鑰之一拷貝。 簽署金鑰對。私密金鑰儲存於一無法自網際網路直接存 取I授權裝置簽署機器。私密金鑰是用以 ㈣與組態資料),其中該等標案接著置於授權;置= 器且最終傳送至從屬機器。所有從屬機器皆具有匹配之公 開至鑰所以他們可驗逢藉由私密金鑰所產生之簽章。簽 署金鑰對是用以強力驗證靜態資訊,例如軟體元件之新版 本。因為無法自網際網路存取私密金鑰,所以其較易受到 保護。 公開金鑰是用於具有簽署之包含器之從屬系統。對於所 有前述運作可只使用一金鑰對。但是’使用許多金鑰於不 同用途是一降低攻擊者成功破解整個系統之機會之一便宜 與容易方法。 私密金鑰。下列金鑰是對稱型金鑰,其中加密與解密使 用相同之金鑰。 O:\75\75061-920519.DOC -42- 一主金鑰(MK)是做為產生用於加密/解密之對稱型金鑰 之基礎。該等金鑰通常用於從屬與伺服器間之單一通訊。 他們等效於會議金鑰。 一 DMK是用以安全轉移需要關聯於一特定從屬系統之 資料。DMK是獨特的且是用以驗證從屬系統。因為DMK獨 特辨識從屬系統,所以DMK很重要。其可做為用以產生加 密/解密演算法所用之其他對稱型金鑰之基礎。DMK是在登 記程序中由授權裝置伺服器來產生及傳送至從屬。 只有授權裝置伺服器與從屬系統之加密ROM元件可存取 主金鑰。ROM元件執行於SMM,且SMM是一無法藉由軟體 除錯器來追蹤之x86處理器之特殊模式。 DMK是用於從屬系統以密封及解開AppContainer。DMK 結合至一機器,且絕對不可受到轉移(除非首先轉移至授權 裝置伺服器,且接著轉移至另一從屬)。DMK應絕不曝露於 一般之系統記憶體。因此應絕不上傳至作業系統驅動程式 位準,其中其可為一駭客所捕捉及轉移至另一機器。密封 及解開AppContainer之運作必須完全執行於SMRAM。密封 與解開之所有其他運作可由作業系統驅動程式層來執行。
一金鑰辨識碼(KID)是DMK之一單向SHA-1摘要。金鑰識 別碼是用以辨識一自從屬傳送至伺服器之訊息内之從屬。 一來自從屬之訊息之標頭將包含金鑰辨識碼,且伺服器將 使用該金鑰辨識碼來索引DMK資料庫表,以尋找從屬之主 金鑰之對稱型金鑰,且該對稱型金鑰接著是用以推導解密 訊息之其餘部份所需之金鑰。當登記程序尚未指配DMK O:\75\75061-920519.DOC -43- 時,利用一暫時隨機值來取代DMK,直到真正之DMK取代 該隨機值為止。 一些推導之金鑰是以DMK與其他主金鑰為基礎來產 生。推導該等金鑰之原始指令展示如何以下文所述之金鑰 使用值為基礎來產生該等推導之金鑰。 金瑜使用值。此節列舉金瑜使用值,且該等金鑰使用值 是本設計之一部份。該等值與NewKey()函式與Enc()Dec() 函式一起受到使用。該等函式是在各種包含器之密封與解 開期間受到使用。從屬與伺服器之用途不同(此使得播放與 自我播放攻擊變得複雜)。 使用名稱 註解
UsageAppCodeDigest 這是用以產生一 AppContainer之
AppCodeDigest欄位之加密金鑰 UsageAppEncServer 這是用以產生祠服器所產生之 一 AppContainer之加密金鑰 UsageAppEncClient 這是用以產生從屬所產生之一
AppContainer之加密金鑰
UsageAppMacServer這是用以產生伺服器所產生之 一 AppContainer 之 HMAC 金瑜 UsageAppMacClient 這是用以產生從屬所產生之一
AppContainer之 HMAC 金鑰 UsageMKEncServer 這是用以產生伺服器所產生之 一 MKContainer之加密金鑰 UsageMKEncClient 這是用以產生從屬所產生之一 O:\75\75061-920519.DOC -44- MKContainer之加密金鑰
UsageMKMacServer 這是用以產生伺服器所產生之 一 MKContainer之 HMAC 金输 UsageMKMacClient 這是用以產生從屬所產生之一 MKContainer之 HMAC 金鑰 用於AppContainer之金瑜分割成為三部份。AppContainer 之一重要特點是用以產生他們之AppKey()是DMK(亦即從 屬裝置之一獨特辨識碼)與應用碼摘要(亦即“擁有”包含器 之軟體之一獨特辨識碼)之函數。AppContainer結合至一特 定裝置之一特定程式。授權裝置(不同於DMK)與一般大眾 (不同於應用碼摘要)皆不知道該金鑰之最後一部份。這最 後一部份稱為顧客秘密(Customerseeret)。該金鍮之任何值 皆可用以密封AppContainer。但是最好使用強力之128位元 隨機值(如同DMK—樣強力)。
CustomerSecret部份允許一公司捨棄受到破壞之應用包 含器,且無需取得該應用之一新建構,其中該新建構會產 生一不同應用碼摘要。同時,此Customer Secret允許一裝置 之一應用(例如安全登錄應用)之一給定實例與多於一伺服 器安全共享資料。每一伺服器會為同一裝置之同一應用設 定一獨特CustomerSecret。因此,只有在正確之 CustomerSecret受到提供之下,密封之AppContainer方可受 到解密。
CustomerSecret是意欲在特定從屬應用與從屬應用所連 接之許多伺服器之一伺服器之間受到共享。 O:\75\75061-920519.DOC -45- 589569 授權裝置伺服器可藉由下列方式來授權—特定軟體販售 者可產生APPC〇ntainer :給與該販售者登記於授權裝置之 該等裝置之-AppKey值表I AppKey是DMK與應用碼摘 要之一加密單向函數,所以販售者可獲得該等金鑰,且血 需使得販售者可產生其他應用之包含器,或無需使得販售 者容易找出一給定裝置之主金鑰。 15.包含器運作碼格式 所有包含器皆具有-相同4位元組標頭,其中包含隨後内 容之一運作碼位元組(指令或訊息型式),一格式位元組,
與一長度字組(16位元)。格式位元组顯示存在四種包含器 之那-包含器,以致低階常式可知道那—種加密運作需要 受到執行。如果加密演算法在一未來版本中受到改變,則 格式位元組會改變。運作碼位元組表示那一種較高階之資 料存在於包含器》低階常式使用一些運作碼值(例如,用於 登記協定期賴用之包含器),但是大乡數運作碼值可供用 於高階碼或未來版本。長度欄位辨識屬於包含器(在標頭之 後)之位元組之數目。標頭未受到加密, 密檢查和來保護,其中該檢查和是每一
但是其可藉由一加 包含4之一部份。 本節列舉定義之包含器運作碼,與具有該運作碼之包含 器之格式。在目前之版本中,雖然未來可能改變,但是每 —運作碼意謂-狀包含器格式。同時具有—運作碼爛位 與—格式欄位之目的是簡化碼之層化,且允許加密演算法 集之未來改變,或允許一特定運作所需之資料之内容改 變。 O:\75\75061-9205i9 -46 - 格式位元組可具有下列值之一值: 格式碼 值 說明 FmtSignedContainer 1 包含器是一 Signed包含器 FmtApp Container 2 包含器是一 App包含器 FmtPubKContainer 3 包含器是一PubK包含器 FmtMKContainer 4 包含器是一MK包含器 下列是運作碼之值: 運作碼名稱 值 OPC_OSD_AUTHORIZATION 0x01 OPC_OSD_ALLOW_TRANSFER 0x02 OPC_MK_KEY 0x03 OPC_INITIAL_APP_CONTAINER_FROM_SERVER 0x04 OPC_CUSTOM_APP_CONTAINER_DATA 0x05 OPC_CHALLENGE_RESPONSE_FROM_CLIENT 0x06 OPC_SMK_ENROLL_REQUEST_OUTER 0x07 OPC_NEW_CONNECTION 0x08 OPC_SMK_ENROLL_REQUEST_INNER 0x09 OPC_SMK_ENROLL_RESPONSE 0x0a OPC_CLIENT_TO_SERVER_WRITE 0x0b OPC_SERVER_TO_CLIENT_WRITE 0x0c OPC_CHALLENGE_REQUEST_FROM_SERVER OxOe 1 6.SignedContainer 之運作碼
SignedContainer保存資料.,其中資料是藉由一私密金鑰 O:\75\75061-920519.DOC -47- (來自簽署金鑰對)來受到數位簽署,且可利用匹配之公開 金鑰(在從屬上公開金鑰儲存於ROM)來驗證。該等金鑰是 用以傳送驗證之資料自授權裝置伺服器至從屬機器,與授 權軟體模組可使用從屬服務。 16.1 運作碼:OpcOsdAuthorization 包含器: FmtSignedContainer 此包含器是用以授權一程式可使用作業系統驅動程式安 全模組之一些或全部函式。其在包含器之資料部份具有下 列欄位; 欄位 長度 說明 NStartOffset 4位元組 呼叫碼之啟始偏移 NEndOffset 4位元組 呼叫碼之結束偏移 CodeDigest 20位元組 呼叫碼之碼摘要 PrivalegeB it Vector 8位元組 特權位元欄位。此向量顯 示應用獲准啟動那些函式 16.2 運作碼:OpcOsdAllowTransfer 包含器 FmtSignedContainer 此包含器是用以授權一程式可轉移一 AppContainer至此 機器之另一應用。其在包含器之資料部份具有下列欄位:
欄位 長度 說明 C all ersApp CodeDigest 20位元組 呼叫者之ACD Re cipientsApp CodeDigest 20位元組 接收者之ACD 16.3 運 作 碼 : 無 OpcBiosAuthorization 無 FmtSignedContainer O:\75\75061-920519.DOC -48- 這不是一包含器,而是一些藉由伺服器之私密簽署金鑰 來加密之位元組。他們未儲存於任何種類之包含器。當其 利用BI〇SRegisterOSD()函式來註冊其本身於BIOS時,該等 位元組受到作業系統驅動程式之使用。 欄位 長度 說明 NstartOffset 4位元組 呼叫碼之啟始偏移 NendOffset 4位元組 呼叫碼之結束偏移 CodeDigest 20位元組 作業系統驅動程式之碼摘 要 17.AppContainer之運作碼
AppContainer是只可供一特定應用程式讀取或寫入之受 到保護之包含器。該等包含器辨識密封他們之程式,且可 允許另一程式解開一包含器,以致他們也可做為一安全型 態之程序間通訊。高階安全功能,例如偵測病毒修改,軟 體執照與安全錢包,可建造於AppContainer之上。通常 AppContainer是藉由使用用於加密之主金鑰之一衍生物來 結合於一給定機器。 17.1運作碼:OpcMKKeyFmtAppContainer 此包含器保存一可用於MKContainer運作之金瑜。此包含 器通常是在一 PubKContainer之產生期間藉由 OsdPubKcontainerSeal()送回。MKContainer運作需要此包 含器。 17.2運作碼:OpcInitialAppContainerFromServer 包含器·· FmtAppContainer O:\75\7506l-9205I9.DOC -49- 此包含器是空的,且是做為一模板以供應用來產生其他 AppContainer。其之唯一重要欄位是加密之 AppCodeDigest。此種情形之密封者碼摘要欄位是空的。用 以密封AppContainer之Customersecret之所有位元皆是零。 17.3運作碼·· OpcCustomAppContainerData 包含器:FmtAppContainer 此包含器是空的,且是做為一模板以供應用來產生其他 AppContainer。其之唯一重要欄位是加密之 AppCodeDigest 〇 17.4運作碼:OpcChallengeResponseFromClient 包含器:FmtAppContainer 此包含器保存自從屬至伺服器之挑戰回應。其保存伺服 器之挑戰隨機數字(Rs)。此包含器是用以回應一具有 OpcChallengeRequestFromServer^ MKContainer ° 攔位 長度 說明 Rs 16位元組 伺服器所提供之128位元之隨機值。 或當做為登記之一確認時之 KID||MK。 18. PubKContainer之運作碼
PubKContainer是一數位信封,且是由從屬(〇SD)利用一 RS A公開金鑰(來自通訊金鑰對)來密封,並只可由具有匹配 私密金鑰之接收者(通常是授權裝置伺服器)來讀取。該等 金鑰是用於登記期間,且是用以設定一從屬與一驗證之授 權裝置伺服器之間之加密通道。此包含器之資料是利用— O:\75\75061-920519.DOC -50- 128位元之RC6加密金鑰(也稱為此產品之主金鑰)來加密, 且該加密金鍮是由作業系統驅動程式來隨機產生。RC 6金 鑰(主金鑰)與從屬之金鑰識別(KID)是利用接收者之公開 金鑰(伺服器之通訊PubKey)來加密。 18.1 運作碼:OpcSMKEnrollRequestOuter 包含器: FmtPubKContainer 此包含器是用於登記期間。 18.2 運作碼:OpcWDLNewConnection 包含器: FmtPubKContainer 此包含器是由從屬應用用以設定一新加密之通道。此包 含器之第一部份可受到重新使用以免除RSA運作。内部 MKContainer之資料部份具有下列攔位。 欄位 長度 說明 MK 16位元組 128位元之新隨機連結主金鑰。 19. MKContainer之運作碼 MKContainer是做為一數位信封之一部份,且該數位信封 是以一主金鑰為基礎,其中該主金鑰是由從屬所產生,以 一 PubKContainer來傳送,且只有此包含器之撰寫者及讀取 者知道該主金鑰。這些數位信封可用以,在主金鑰藉由一 PubKContainer傳送至伺服器之後,保護從屬與授權裝置伺 服器間之通訊。該等數位信封也可用以保護從屬機器之當 地資料。 19·1 運作碼: OpcDMKEnrollRequestlnne 包含器: FmtMKContainer O:\75\75061-920519.DOC -51 - 589569 此包含器是用於登記期間。包含器之資料部份具有下列 欄位。 欄位 長度 說明 DMKClientSeed 20位元組 用以產生主金鑰之種子 19.2 運作碼:OpcDMKEnrollResponse 包含器: FmtMKContainer 此包含器是用於登記期間。此包含器之資料部份具有下 列欄位。 搁位 長度 —---1 說明 DMKServerSeed 26位元 組 自伺服器送回並用以產生主金 鑰之種子 19.3 運作碼:OpcClientToServerWrite 包含器: FmtMKContainer 此包含器是由某一從屬應用用以傳送資料至伺服器(亦 即由從屬寫入之資料)。 欄位 長度 說明 資料 0-64000位元組 從屬專屬資料 19.4 運作碼·· OpcServerToClientWrite 包含器: FmtMKContainer 此包含器是由某一從屬應用用以接收來自伺服器之資料 (亦即伺服器寫入之資料)。 欄位 長度 說明 資料 0-64000位元組 從屬專屬資料 19.5運作碼:OpcChallengeRequestFromServer O:\75\75061-920519.DOC -52- 包含器:FmtMKContainer 此包含器是由伺服器傳送以建立從屬系統之真實性。此 包含器之回應位於一 OpcChallengeResponseFromClient。 欄位 長度 說明 Rs 16位元組 伺服器所提供之128位元隨機值 新應用之其他運作碼可受到定義。使用系統應用程式介 面之應用可能必須符合及使用一授權裝置提供給他們之運 作碼。 20.AppContainer之格式與產生 一旦一程式具有一 AppContainer,則其可產生該包含器 之拷貝,且接著利用不同資訊來充填該等拷貝。但是,取 得第一 AppContainer之唯一方式是使得授權裝置伺服器產 生此特定程式之一拷貝於此特定機器上。這係相關於 AppCodeDigest 〇
AppContainer是用以儲存一稱為主金鍮之對稱型金輪。 此包含器接著傳送至一些函式,其中該等函式執行需要一 主金鑰之密封/解開運作。此AppContainer也是用以儲存專 屬於一應用之資訊,其中該應用專屬於一給定機器,且該 給定機器是藉由在登記期間指配之其SharedMasterKey來 辨識。此應用可與許多伺服器依照一對一之方式來共享資 訊,其中每一伺服器只可解密其本身之AppContainer。 一解開之AppContainer具有下列格式。涉及密封包含器 之步驟增加21至36位元組之資訊至末端(MAC與墊充),以 致呼叫者必須確保緩衝區大至足以保存較大之密封格式, O:\75\75061-920519.DOC -53- 否則密封運作將送回一錯誤。SealerscodeDigest與啟始化向 量(IV)皆是藉由密封運作來充填。啟始化向量是一用於加 密區塊鏈結之隨機數目。在CBC中,在運用金鑰來加密IV 之前,IV首先與明文之第一區塊進行互斥或運作。 AppCodeDigest是自一授權裝置所提供之原始 AppContainer取得。AppContainer之結構展示於表1。 密封一 AppContainer。加密是藉由主金瑜, AppCodeDigest,與 CustomerSecret (所有 128位元在大多數 時間皆可預設為零)之衍生物來執行。 作業系統驅動程式密封。此運作準備要由BIOS來密封之 資料。其需要一授權裝置所提供之一原始AppContainer。 此原始AppContainer包含一加密之AppCodeDigest,其中該 AppCodeDigest已使用此特定從屬系統之主金鑰來為此特 定從屬系統執行加密。 確認該裝置具有一有效之DMK。如果答案是否定的,則 送回一錯誤。確認該長度(length)是小至可以接受。這是包 含器自AppCodeDigest欄位算起(包含AppCodeDigest攔位) 至資料欄位(包含資料欄位)之長度。確認格式(Format)等於 FmtAppContainer 〇 設定啟始化向量(Initialization Vector) 成為作業系統驅動程式安全模組所傳送之隨機值。設定 SealerscodeDigest成為作業系統驅動程式安全模組基於在 OsdRegisterApplication()期間所提供之呼叫者授權資訊來 計算之一值。在作業系統驅動執行AppContainer密封期間 之結構修改展示於表2。 O:\75\75061-920519.DOC -54- BIOS AppContainer密封是在資料受到密封之前之最後 一階段。 令 DecryptedCodeDigest=Decl60Bits (AppCodeDigest) 〇 包含器之AppCodeDigest未受到密封運作之改變。這使得一 應用可基於一授權裝置所提供之原始AppContainer來產生 新 AppContainer 〇 確認DecryptedCodeDigest等於作業系統驅動程式安全模 組所決定之CallersCodeDigest值。 令 Key=CustomerAppKey(AppKey(DMK,AppCodeDigest),
CustomerSecret),其中CustomerSecret是作業系統驅動程 式所傳下之值。 令 Payload=Opcode||Format||Length||AppCodeDigest||IV|| SealersCodeDigest||Data 〇 設定 Mac=HMAC(NewKey(Key,UsageAppMac),Payload)。 設定墊充(Padding)成為一包含1至16位元組之向量,以使 變數,明文(Plaintext)(說明於下文),之長度成為16位元組 之整數倍。每一墊充位元組皆具有一等於該向量之墊充位 元組數目之值。 令 Plaintext=IV||SealersCodeDigest| |Data||Mac||Padding。 令 Ciphertext=Enc(Key,UsageAppenc,Plaintext) 〇 請注 意密文(Ciphertext)之長度等於明文。 在AppCodeDigest之後利用密文來覆寫所有欄位。換句話 說,利用密文之位元組來取代所有構成明文之位元組。 設定長度(Length)成為明文之位元組數目加上20 (針對 O:\75\75061-920519.DOC -55-
AppCodeDigest) 〇 在SMI AppContainer密封期間之結構修改展示於表3。在 BIOS密封Sealed AppContainer結構之後,其具有表4所示之 格式。 解開一 AppContainer現在受到討論。作業系統驅動程式 解開運作收集BIOS解開包含器所需之資訊。長度欄位受到 證實以確保其屬於可接受之範圍,且其表示包含Mac與墊 充之包含器之長度。OSD確認格式(Format)等於 FmtAppContainer,與基於在 〇sdRegisterApplication()期間 所提供之呼叫者之授權資訊來計算CallersCodeDigest。 BIOS解開運作以解開資料。BIOS解開運作執行下列步 驟。 確認該裝置具有一有效主金鑰。如果答案是否定的,則 送回一錯誤。 令 DecryptedCodeDigest=Dec 160Bits(AppCodeDigest)。包 含器之AppCodeDigest未受到解開運作之改變。 確認DecryptedCodeDigest等於作業系統驅動程式安全模 組所決定之CallersCodeDigest值。 令Key=CustomerAppKey(AppKey(DMK,AppCodeDigest),
CustomerSecret),其中CustomerSecret是作業系統驅動程 式所傳下之值。 令Ciphertext=在AppCodeDigest與長度之間之資料,再減 去20位元組。 令 Plaintext=Dec(Key,UsageAppEnc,Ciphertext) ° O:\75\75061-9205t9.DOC -56- 589569 利用明文位元組來取代密文位元組,以透露解開之欄位。 設定Length=Length減去20,再減去墊充長度。 令 Payload=Opcode||Format||Length|| AppCodeDigest||IV|| SealersCodeDigest||Data 0 令 ExpectedMac=HMAC(NewKey(Key,UsageAppMac),
Payload) ° 確認 Mac 等於 ExpectedMac。 21. MKContainer之格式與產生 首先解開之格式將受到說明,且接著密封及解開該格式 之步驟將受到說明。MKContainer主要是用以,在從屬與伺 服器使用一 PubKContainer來設定一共用主金鑰之後,保護 在從屬與伺服器之間傳送之大量資訊(最多64千)。 MKContainer主要是用以加密資料。加密是以一對稱型金 鑰加密為基礎。此金鑰是利用一主金鍮來推導。 MKContainer可用以加密大量資料(最多64千),其中該加密 是藉由一對稱型金鑰來達成,且該對稱型金鑰是利用一主 金鑰來推導。特殊用途是加密在登記期間之從屬與伺服器 間之傳輸,以允許DMK之設定,與加密某一從屬應用及授 權裝置伺服器間之傳輸。 解開之MKContainer結構現在受到討論。此MKContainer 非常類似於AppContainer。主要之差異在於AppCodeDigest 是利用已設定之一主金鑰之摘要來取代。伺服器產生之 MKContainer之SealedCodeDigest將為零。對於產生於從屬 之包含器,SealersCodeDigest辨識密封此包含器之程式。 O:\75\75061-920519.DOC -57- 一 MKContainer之該等加密運作是由作業系統驅動程式 模組,而非SMI模組,來執行。作業系統驅動程式可使用 SMI模組來密封及解開主金鑰,但是所有加密與完整性檢 查皆是由0 S D碼來執行。 一解開之MKContainer具有下列格式。涉及密封包含器之 步驟將增加21至36位元組之資訊至末端(Mac與Padding), 以致呼叫者必須確保緩衝區大至足以保存較大之密封格 式,否則密封運作將送回一錯誤。MKDigest, SealersCodeDigest與IV皆是藉由密封運作來充填。表5展 示 MKContainer結構。 加密受到執行以利用主金鑰之衍生物來密封一 MKContainer,其中該等衍生物是以一 AppContainer來傳送 (該 AppContainer產生於當呼叫 OSDPubKContainerSeal() 時)。 密封OSD MKContainer包含器所需之步驟展示如下。該 等步騾運作於當地之緩衝區,且因此覆寫解開之明文資 料。請注意從屬與伺服器所密封之包含器之使用(usage)值 將有所不同,如關於使用值之節所解釋。 密封運作要求一具有一主金鑰之AppContainer受到使 用。密封步驟展示如下。 確認Length是可接受的。因為此運作是由作業系統驅動 程式來執行,所以此長度可大於AppContainer。這是自 MKDigest欄位算起(包含MKDigest)至Data欄位(包含Data 欄位)之包含器之長度。 O:\75\75061-920519.DOC -58- 確認 Format等於 FmtMKContainer。 設定MKDigest值成為保存MK之解開AppContainer之内 容的SHA1。 設定IV成為作業系統驅動程式安全模組所傳入之隨機 值。 設定SealersCodeDigest成為作業系統驅動程式安全模組 所決定之值。 令Key=作業系統驅動程式安全模組所傳送之主金输。 令 Payload=Opcode||Format||Length||MKDigest||IV|| SealersCodeDigest||Data 0 令 Mac=HMAC(NewKey(Key,UsageMKMac),Payload) 〇 設定Padding成為一包含1至16位元組之向量,以使變 數,Plaintext (說明於下文),之長度成為16位元組之整數 倍。每一塾充位元組皆具有一等於該向量之墊充位元組數 目之值。 令 Plaintext=IV| | SealersCodeDigest| |Data| |Mac| |Padding。 令 Ciphertext=Enc(Key,UsageMKEnc,Plaintext)。請注 意 Ciphertext之長度等於 Plaintext。 在MKDigest之後利用Ciphertext來覆寫所有欄位。換句話 說,利用Ciphertext之位元組來取代所有構成Plaintext之位 元組。 設定Length成為Plaintext之位元組數目加上20 (針對 MKDigest) 〇 圖6展示在OSD MKContainer密封期間之結構修改。 O:\75\75061-920519.DOC -59- 589569 密封之MKContainer之結構展示於表7。 解開一 MKContainer涉及作業系統驅動程式解開。 解開一 MKContainer包含器所需之步驟展示如下。錯誤應 使包含器歸零。解開運作要求一具有一主金鍮之 AppContainer受到使用。解開步驟展示如下。 確認Length是可接受的。這是包含Mac與Padding之包含 器之長度。 確認 Format等於 FmtMKContainer。 確認MKDigest等於作業系統驅動程式模組所傳送之值。 令Key==藉由一 AppContainer利用作業系統驅動程式安全 模組來傳送之主金输。 令Ciphertext=在MKDigest與Length之間之資料,再減去 20位元組。 令 Plaintext=Dec(Key,UsageMKEnc,Ciphertext) 0 利用Plaintext位元組來取代Ciphertext位元組以透露解開 之欄位。 設定Length=Length減去20,再減去墊充之長度。 令 Payload=Opcode||Format||Length||MKDigest||IV|| SealersCodeDigest||Data 〇 令 ExpectedMac=HMAC(NewKey(Key,UsageMKMac), Payload) 〇 確認 Mac 等於 ExpectedMac。 22. SignedContainer之格式與處理 首先,解開之格式將受到說明,且接著密封及解開格式 O:\75\75061-920519.DOC -60 - 之步驟將受到說明。該等包含器主要是用以傳送驗證之資 訊自伺服器至從屬。例如,該等包含器是用以授權一程式 可呼叫作業系統驅動程式安全模組之一些函式。他們也可 用以傳送一表列之檔案名稱與每一檔案之預期SHA1摘要 (例如以確認下載之資料是真實的)。無論何時當從屬需要 知道是否某些資訊或指令的確來自授權裝置伺服器時,即 可使用他們。
SignedContainer是用以確認下載之資料是真實的,確認 資料的確來自授權裝置伺服器,及保存一登記於作業系統 驅動程式之應用之授權資訊。表8展示SignedContainer結 構。 密封一 SignedContainer現在受到討論。加密是利用伺服 器簽署私密金瑜來完成。密封SignedContainer包含器所需 之步驟展示如下。該等步驟運作於當地之緩衝區,且因而 覆寫解開之明文資料。在揭示之實例中,授權裝置伺服器 執行該等步驟以密封一 SignedContainer。 確認選擇之私密金鑰為已知。如果答案是否定的,則送 回一錯誤。 確認Length是可接受的。在密封之前,該長度包含 PublicKeyDigest與 Data 〇 確認 Format 等於 FmtSignedContainer。 設定PublicKeyDigest成為匹配選擇之私密金鑰之公開金 鑰的SHA1摘要。 令 Payload=Opcode||Format||Length||PublicKeyDigest| | O:\75\75061-9205I9.DOC -61 -
Data。請注意這包含解開之長度。 令 ExpectedDigest=SHAl (Payload)。 設定 SigRSABlock=l08零位元組 ||ExpectedDigest。 執行PKCS#1第二版之簽章墊充於SigRSABlock。這相同 於PKCS#1第一版之簽章墊充。這墊充增加一固定序列之位 元組於摘要值之前,以顯示ExpectedDigest值是一 SHA1運 作之結果。其也利用OxFF位元組來取代大多數之零墊充位 元組。 利用選擇之私密金鑰來加密SigRSABlock。 設定 Length=Length 減去 128 以包含 SigRSABlock 大小。 在伺服器密封8丨8116(1(^〇1^&丨1161*結構之後,其具有表9所示 之格式。 解開一 SignedContainer現在將受到討論。解開 SignedContainer包含器所需之步驟展示如下。從屬將執行 該等步驟以驗證此種包含器之簽章。 確認選擇之公開金鑰為SMI常式所知。如果答案是否定 的,則送回一錯誤。確認Length是可接受的。在解開之前, 該長度包含 PublicKeyDigest,Data與 SigRSABlock。確認 Format等於FmtSignedContainer。呼叫BIOS以利用選擇之公 開金鑰來解密SigRSABlock。利用SHA1摘要函式來確認一 簽章之PKCS#1墊充是正確的。令ExpectedDigest=解密之 SigRSABlock之最後20位元組。設定Length=Length減去128 以移除 SigRSABlock 大小。令 Payload=Opcode||Format|| Length||PublicKeyDigest||Data。這包含解開之長度。令 O:\75\75061-920519.DOC -62-
Digest=SHAl (Payload)。確認 Digest 等於 ExpectedDigest。 至於BIOS解開,BIOS未執行於包含器本身。其只是受到 啟動以解密SigRSABlock。 23. PubKContainer之格式與產生 首先,解開之格式將受到說明,且接著密封及解開其之 步驟將受到說明。該等包含器主要是用以設定從屬與授權 裝置祠服器間之一安全通訊通道。PubKContainer之第二部 份是一完整之MKContainer物件,其中包含4位元組之標 頭。PubContainer之第一部份包含產生之主金输(MK)與從 屬之金鑰識別(KID)之值(或零,如果主金鑰尚未受到指 配),且該二值是利用接收者之公開金鑰來加密。
PubKContainer之格式受到仔細選擇,以允許此包含器之 第二部份之改變,但不改變第一部份。這允許從屬與伺服 器建構某種重要之性能改善。OSD密封函式將送回包裹於 一 AppContainer之產生之主金鑰。每一次當從屬啟始一通 往祠服器之新連結(例如以擴取一新下載)時,從屬可儲存 及重新使用MK與PubKContainer之第一部份,且第二部份 將是一 MKContainer,且該MKContainer包含一用以加密此 會議之新主金鑰。這無需利用SMI常式來執行一公開金鑰 運作,且仍可獲得下列安全性好處:知道只有真正伺服器 將知道新會議金鑰,因為只有真正之词服器知道儲存之主 金鑰(解密新會議金鑰所必需),或知道私密金鑰以讀取第 一部份。伺服器之重要最佳化是快取其自PubKContainer之 第一部份取得之主金瑜,及藉由第一部份之雜凑來索引該 O:\75\75061-920519.DOC -63- 快取值。當PubKContainer之第一部份受到重新使用時,這 快取無需執行一私密金鑰運作。因為從屬總是傳送整個第 一部份,且因而伺服器可總是使用其之私密金鑰(伺服器通 訊私密金鑰)來擷取主金鑰,所以伺服器可在任何時間排除 快取輸入項。這也意謂從屬與伺服器間之啟始化訊息只有 一種格式,而非二不同格式,以處理一主金鑰之重新使用 或產生。
PubKContainer之用途是在登記期間設定從屬與一伺服 器間之傳輸,以允許DMK之設定,與設定某一從屬應用及 授權裝置伺服器間之傳輸。 一解開之PubKContainer具有表10所示之格式。涉及密封 包含器之步騾將增加21至36位元組之資訊至末端(Mac與 Padding),以致呼叫者必須確保緩衝區必須大至足以保存 較大之密封格式,否則密封運作將送回一錯誤。 SealedCodeDigest與啟始化向量(IV)是由密封運作來填充。 密封一 PubKContainer現在將受到討論。加密是利用作業 系統驅動程式動態產生之一主金鑰之衍生物,與伺服器之 通訊公開金瑜,來完成。 作業系統驅動程式密封涉及對於BIOS層之二呼叫。第一 呼叫是針對使用 OsdMKContainerSeal(),然後 BIOSRaw RSAPublic()之 MKContainer,以加密剛用於MKContainer 密 封運作之MK。密封此包含器所需之步驟展示如下。該等步 驟運作於當地之緩衝區,且因而覆寫解開之明文資料。如 關於使用值之節所解釋,從屬與伺服器所密封之該等包含 O:\75\75061-920519.DOC -64- 器之該等使用值將有所不同。 確認選擇之公開金鑰為SMI常式所知。如果答案是否定 的,則送回一錯誤。確認Length是可接受的。在密封之前, 這是第一部份與解開之第二部份之長度。在密封之後,其 包含密封第二部份所增加之額外資料。確認Format等於 FmtPubKContainer 〇利用作業系統驅動程式安全模組所傳 送之MK,與針對MKContainer所述之步驟來密封第二部份。 當PubKContainer最初受到產生時,主金鑰將由作業系統 驅動程式隨機產生。關於此主金鑰之一處理送回至作業系 統驅動程式之呼叫者,以致其可受到再使用。增加Length 欄位以包含前一步驟所增加之Mac與Padding。設定 PublicKeyDigest成為選擇之公開金鑰之SHA1摘要。設定 PubKRSABlock之Opcode與Format部份以匹配標頭值。此區 塊之剩餘部份是在該等步驟執行之前由OSD常式來填充。 使用作業系統驅動程式模組所選之一隨機OAEP種子值來 執行 PubKRSABlock之 OAEP墊充。呼叫 BIOSRawRSAPublic 以利用選擇之金鑰來執行RS A運作。在作業系統驅動程式 密封PubKContainer結構之後,其具有表11所示之格式。 解開一 PubKContainer現在將受到討論。在本發明之揭示 實例中,授權裝置伺服器執行解開。來自伺服器之回答將 處於一 MK包含器之型態。從屬將使用MK包含器運作來解 開伺服器回應。 解開伺服器之PubKContainer所需之步驟展示如下。錯誤 將使包含器歸零。 O:\75\75061-920519.DOC -65- 確認Length是可接受的。這是第一部份與第二部份之長 度,其中包含密封之MKContainer。確認Format等於 FmtPubcontainer。確認 PublicKeyDigest對應於匹配選擇之 私密金鍮之公開金鑰。利用選擇之私密金瑜來執行一原始 RSA解密運作於PubKRSABlock。移除OAEP墊充,及確認 OAEP冗餘是正確的(亦即該區塊在傳輸中未受到修改)。這 使得呼叫者可看見Opcode ’ Format,KID與K。確認Format 是FmtPubKContainer。呼叫者將檢查是否Opcode是可接受 的。令Key是來自解密之PubKRS ABlock之MK。利用Key與 針對MKContainer所述之步驟來解開MKContainer。 24.加密原始指令與共用值 推導金输,其中包含AppKey〇,NewKey(),與 CustomerAppKey(),且前述皆可為相同之函式:
XxxKey(bufferOfl28bits, bufferOf 160bitsWithTheHighOrderBitsZeroedIfDataWasL essThanl60bits) °
AppKey(Key,CodeDigest)=TruncateTol28bits (SHA-1 (Key||CodeDigest)) 用以保護AppContainer之金餘是使用擁有此包含器之程 式碼之一 160位元摘要藉由DMK來推導。合成之金鑰之長 度是128位元128位元常用於及適合許多加密演算法)。雜湊 Key||CodeDigest之原因是允許一非根授權裝置伺服器產生 他們本身之AppContainer,且使得他們不知道實際之主金 鑰為何。知道實際之DMK會危害其他AppContainer。 O:\75\75061-920519.DOC -66- 589569
NewKey(Key J Usage)=TruncateTol28bits(SHA-l(Key||Usage)) 其中Usage參數是一 32位元值。因為在NewKey()之情形 中無需曝露合成之金鑰,所以雜湊與截位是用以簡化碼。 同時NewKey()有時候採用AppKey()之結果做為一引數。 CustomerAppKey(Key,Customersecret)=
Truncate To 128bits (SHA-1 (Key| I Customers ecret))
其中CustomerSecret是一 128位元值。此函式是用以產生包 含一 Customer Secret部份之 AppContainer之金瑜。
AppCodeDigest=Encl60Bits (DMK,DecryptedCodeDigest)與 DecryptedCodeDigest=Decl60Bits (DMK,AppcodeDigest)是使 用DMK來加密及解密一 160位元摘要值,且是一機制之一 關鍵部份,該機制要求授權裝置伺服器參與產生一特定程 式之第一 AppContainer於一特定裝置。伺服器執行 Encl60Bits函式且從屬機器執行Decl60Bits函式。
Encl60Bits 函式執行下列步驟。拷貝 DecryptedCodeDigest 至 AppCodeDigest 緩衝區。令 Key=NewKey(DMK , Us age AppcodeDigest) 〇 令
Plaintextl=AppCodeDigest 之最先 16 位元組。這是 DecryptedCodeDigest 之最先 16 位元組。令 Ciphertextl = RC6CBCEncrypt(Key,Plaintextl)。因為明文只有一區塊 長,所以這等效於ECB模式。 利用Ciphertextl來取代AppcodeDigest之最先16位元 組。令Plaintext2=AppCodeDigest之最後16位元組。此值之 O:\75\75061-920519.DOC -67- 589569 最先12位元組是Ciphertextl之最後12位元組,且此值之最 後4位元組是DecryptedCodeDigest之最後4位元組。令 Ciphertext2=RC6CBCEncrypt(Key,Plaintext2)。因為明文 只有一區塊長,所以這等效於ECB模式。利用Ciphertext2 來取代AppCodeDigest之最後16位元組。
Decl60Bits函式執行下列步驟。拷貝AppCodeDigest至 DecryptedCodeDigest 緩衝區。令 Key=NewKey(DMK, Us age AppCodeDigest) 〇 令 Ciphertext2 =
DecryptedCodeDigest之最後 16位元組。這是 AppCodeDigest 之最後 16 位元組。令 Plaintext2=RC6CBCDecrypt(Key, Ciphertext2)。因為密文只有一區塊長,所以這等效於ECB 模式。利用Plaintext2來取代 DecryptedCodeDigest之最後 16 位元組。DecryptedCodeDigest之最後4位元組現在具有他們 之正確值。令 Ciphertextl=DecryptedCodeDigest之最先 16 位元組。這包含AppCodeDigest之最先4位元組與Plaintext2 之最先12位元組。因為密文只有一區塊長,所以這等效於 ECB模式。利用Plaintextl 來取代DecryptedCodeDigest 之最 先16位元組。
Enc(Key,Usage,Message)=RC6CBCEncrypt(NewKey (Key,Usage),Messgae)
Dec(Key,Usage,Message)=RC6CBCDecrypt(NewKey (Key,Usage),Message) 其中加密區塊鏈結(CBC)模式之啟始化向量是16位元組 之零,且Usage值是32位元長。加密區塊鏈結是一區塊加密 O:\75\7506t-920519.DOC -68- 模式,以在加密明文之前,結合密文之前一區塊與明文之 目前區塊。Key將是128位元或288位元長。Message參數指 定一區塊之資料,且該資料之長度是16位元組之整數倍。 RC6 力口密定義於Ronald L. Rivest,M. J. B. Robshaw,R. Sidney 與 Y. L· Yin 於 1998 年 8月 20 日所著之 “The RC6™ Block Cipher”,且 CBC模式定義於Bruce Schneier所著之 “Applied Cryptography Second Edition”,而此書是由位於 紐約州,紐約市之Wiley & Sons於1995年發行。 RC6是設計成為明確符合NIST AES (先進加密標準)之需 求。RC6包含可變長度金鑰大小之支援,且受到最佳化以 善用在RC5以後之CPU之進步。 當此原始指令用於大多數包含器時,Message開始於一 16 位元組之隨機值(稱為IV),且是利用1至16位元組在末端受 到塾充,以使Message成為加密區塊大小(16位元組)之整數 倍。請注意,因為16位元組IV未與隨後之明文區塊直接進 行互斥或(XOR)運作,所以其未如同傳統之CBC模式一般受 到使用。相反地,在加密期間,其與零進行互斥或運作(而 此未做任何事),且接著利用金鑰來加密以產生密文之第一 區塊。在加密下一明文區塊之前,第一密文區塊接著與該 區塊進行互斥或運作。在解密期間,第一區塊受到解密及 與零進行互斥或運作(而此未做任何事),以產生原始之隨 機IV區塊。第二密文區塊受到解密,且與密文之第一區塊 進行互斥或運作,以產生明文之第二區塊。
Enc與Dec之塾充是一系列之相同位元組,且該等位元組 O:\75\75061-920519.DOC -69- 589569 之值等於蟄充之位元組之數目。例如’如果二位元組之整 充受到增加,每一位元組將具有值。總是存在至少一 位元組之墊充,所以如果明文已是16位元組之整數倍長, 則16位元組之塾充受到增加,且每一該等位元組將具有值 0x10。隨機型相對於可預測型墊充位元組之好處已進行過 信仰戰爭。此設計要求可預測型墊充位元組。請注意藉由 檢視解密之資料之最後一位元組可輕易決定多少墊充受到 增加。 HMAC(Key,Message)原始指令。基本之完整性原始指 令稱為HMAC,且此原始指令是定義於網際網路工程工作 小組RFC2104之以雜湊為基礎之訊息驗證碼,其中RFC2104 是 Η· Krawczyk,Μ· Bellare 與 R.Canetti 所著之 “HMAC: Keyed-Hashing for Message Authentication”。HMAC可以任 何加密雜湊(摘要)函式為基礎。在本發明中其是以SHA-1 為基礎,SHA-1定義於美國標準與技術協會於FIPS 180-1 於1995年4月17日所發表之“Secure Hash Standard”。關於 HMAC原始指令之發表論文展示其具有可彌補摘要函式之 潛在弱點之絕佳安全特性。SHA-1是一安全雜湊演算法, 以計算訊息或資料檔案之濃縮表示。當任何長度短於264 位元之訊息受到輸入時,SHA-1產生一稱為訊息摘要之160 位元輸出。此訊息摘要接著可輸入至數位簽章演算法 (DSA),以產生或驗證該訊息之簽章。 HMAC(Key,Message)=SHA-l(Key X〇R 〇pad || SHA-l(Key XOR IPad || Message)) O:\75\75061-920519.DOC -70-
Opad與Ipad值是不同之常數,且是512位元長以匹配 SHA-1之内部壓縮函式之區塊大小。在此設計中Key之長度 必須短於5 12位元。Opad與Ipad值與HMAC之其他細節定義 於RFC2104。相較於訊息之直接摘要,HMAC原始指令需要 多執行二次疊代之SHA-1壓縮函式。這是為了達成絕佳安 全特性所付出之低架空。 HMAC是一使用加密雜湊函數之訊息驗證之機制。HMAC 可用於任何疊代式加密雜湊函數,例如MD5,SHA-1,以 及一私密共用金鑰。HMAC之加密強度決定於其下之雜湊 函數之特性。 RSA運作執行於BIOS。
Ciphertext=RSAOaepEncrypt(PublicKey , OaepSeed , Message)
Message=RSAOaepDecrypt(PrivateKey,Ciphertext) 該等原始指令使用RSA演算法來執行加密與解密。對於 加密原始指令,Message首先使用OAEP (最佳非對稱加密墊 充)來墊充,其中OAEP定義於RSA實驗室所發表之“PKCS#1 ν2·0 : RSA CryptographyStandard”,且接著根據 PublicKey 來執行指數化與模化簡。OAEP所需之隨機種子值是以一參 數來傳送至此函式。對於解密原始指令,在密文根據 PrivateKey執行指數化及模化簡之後,OAEP墊充受到驗證 及移除。在大多數之情形中,Mess age是一 128位元金論與 一 160位元DMK KID之結合。 PKCS是針對二進位與ASCII資料來設計;PKCS也相容於 O:\75\75061-920519.DOC -71 - 589569 ITU-T X.509 標準。公佈之標準是 PKCS #1,#3,#5,#7, #8,#9,#10,#11 與 #12 ; PCKS #13 與 #14 目前正在開發中。 PKCS包含演算法專屬與無關於演算法之建構標準。許多演 算法受到支援,其中包含RSA與DifHe-Hellman金鑰互換, 但是,只有後二者受到明確描述。PKCS也定義數位簽章, 數位信封,與延伸憑證之無關於演算法之語法;這使得建 構任何加密演算法之任何人可符合一標準語法,且因而達 成互通性。詳細描述PKCS標準之文件可自RSA Data Security之 FTP伺服器取得(可自 http : //www.rsa·com,或經 由匿名ftp至ftp.rsa.com,或藉由傳送電子郵件至 pkcs@rsa.com,來存取)。 下列文件是公開金鑰加密標準(PKCS): PKCS #1定義使用RSA公開金鑰加密系統來加密及簽署 資料之機制。 PKCS #3定義一 Diffie-Hellman金鑰同意協定。 PKCS #5描述利用一私密金鑰來加密一字串之方法,其中 該私密金输是藉由一密碼來推導。 PKCS #6正逐漸受到X.509之第三版之取代。 PKCS #7定義訊息之一般語法,其中包含加密強化,例 如數位簽章與加密。 PKCS #8描述私密金鑰資訊之一格式。此資訊包含一用 於某種公開金鑰演算法之私密金鑰,與任選地一組屬性。 PKCS #9定義用於其他PKCS標準之選擇之屬性種類。 PKCS #10描述憑證請求之語法。 O:\75\75061-920519.DOC -72- 589569 PKCS #11定義一用於加密裝置之無關於技術之程式設計 介面,稱為Cryptoki,其中該等加密裝置可為智慧卡與 PCMCIA 卡。 PKCS #12指定一用以儲存或傳輸一使用者之私密金 鑰,憑證,各種秘密等之可攜格式。 PKCS #13定義使用橢圓曲線加密法來加密及簽署資料 之機制。 PKCS #14提供一用於虛擬隨機數字產生之標準。
SigBlock=RSASigEncrypt(PrivateKey,Digest)與 Digest= RSASigDecrypt(PublicKey,SigBlock)原始指令使用 RSA演 算法來執行加密與解密。對於加密原始指令,160位元之 SHA-1摘要值首先使用簽章墊充來墊充,其中簽章墊充定 義於“ PKCS #1ν2·0: RSA Cryptography Standard,,,且接著 根據PublicKey來執行指數化與模化簡。對於解密原始指 令,在密文根據PrivateKey執行指數化及模化簡之後,墊充 受到驗證及移除。墊充編碼摘要演算法之識別,且該等原 始指令只支援SHA1演算法。該等原始指令是產生及驗證數 位簽章之程序之一部份。其他步驟涉及計算或驗證受到簽 署之資料之實際SHA1摘要。
AppCodeDigest是用以辨識擁有一包含器之應用之資 料。其未適用於所有包含器。此資料是以啟動加密函式之 碼為基礎來產生。此資料通常是由授權裝置來產生,加密 與簽署。大多數時間BIOS在執行期間比較解密之 AppCodeDigest(ACD)與 CallerCodeDigest。一 屬於伺服器之 O:\75\75061-920519.DOC -73-
CodeDigest永遠是零。
SealerCodeDigest/CallerCodeDigest是在以函式之呼叫者 為基礎之函式中受到計算。用以計算此摘要之資訊是在註 冊期間,例如註冊於BIOS,與註冊於作業系統驅動程式, 提供於一 SignedContainer,其中 OpaacOsdAuthorization做 為包含器運作碼。 登記是從屬系統經歷之一早期階段。在此階段中,主金 鑰在從屬系統與授權裝置伺服器之間受到產生及互換。此 步驟涉及PubKContainer。當登記程序尚未指配主金鑰時, 主金鑰是利用一暫時隨機值來取代,直到真正之主金鑰取 代其為止。 BIOS與作業系統驅動程式(OSD)參與包含器運作。相關 於密封之包含器函式包含OSDAppContainerSeal(), OSDMKContainerSeal(),OSDPubKContainerSeal〇,與 BIOSAppContainerSeal()。 OSDPubKContainerSeal〇函式產生一隨機會議金鑰(主金 鑰),且其送回該主金输至一 AppContainer内之呼叫者。 AppContainer接著是用以啟動其他MKContainer()運作。圖_ 展示一示範PubKContainer演算法。 相 關於解開之包含器函式包含 OSDAppContainerUnseal(),OSDMKContainerUnseal(), OSDSignedContainerUnseal(),OSDPubKContainerUneal(), 與 BIOSAppContainerUnseal() 〇 25.包含器類別建構細節 O:\75\75061-920519.DOC -74- 589569 該等類別包含 PubKContainer與 MKContainer 〇 下列是一 PubKContainer之格式與用於密封及解開之類 別之方法的說明。該等包含器主要是用以設定從屬與授權 裝置伺服器間之一安全通訊通道。PubKContainer之第二部 份是一包含4位元組標頭之完整MKContainer物件。 PubKContainer之第一部份包含產生之主金餘(MK)與從屬 之金鑰識別(KID)之值,(如果主金鑰尚未受到指配,則為 零),且該二值皆是利用接收者之公開金鑰來加密。
PubKContainer之格式受到仔細選擇,以允許改變此包含 器之第二部份,但不改變第一部份。這使得從屬與伺服器 可建構某種重大之性能改良。OSD密封函式將送回產生之 主金鑰,其中該主金鑰包裹於一 AppContainer。每一次當 從屬啟始一通往伺服器之新連結時(例如擷取一新下載), 從屬可儲存與再使用主金鑰與PubKContainer之第一部 份,且第二部份將是一 MKContainer,其中包含一用以加密 此會議之新主金鑰。這無需藉由SMI常式來執行一公開金 鑰運作,且仍能獲得下列安全好處:知道只有真正之伺服 器將知道新會議金鑰,因為只有真正之伺服器知道儲存之 主金鑰(解密新會議金鑰所必需),或知道私密金鑰以讀取 第一部份。伺服器之重要最佳化是快取其自PubKContainer 之第一部份取得之主金鑰,及藉由第一部份之雜湊來索引 該快取值。當PubKContainer之第一部份受到再使用時,這 快取無需執行一私密金瑜運作。因為從屬總是傳送整個第 O:\75\75061-920519.DOC -75- 一邵份,且因而伺服器可總是使用其之私密金鑰來掏取主 金鑰,所以伺服器可在任何時間排除快取輸入項。這也意 謂從屬與伺服器間之啟始化訊息只有一種格式,而非二不 同格式,以處理一主金鑰之再使用或產生。
PubKContainer是用以在登記期間設定從屬與一伺服器 間之傳輸,以允許DMK之設定,與設定某些從屬應用及— 授權裝置伺服器間之傳輸。表11展示最終之密封 PubKContainer結構。 相關於PubKContainer之建造器與方法展示如下。 public PubKContainer()是一啟始化紀錄者物件之空白包 含器。至於public PubKContainer(InputStream in),包含器 是藉由輸入流來受到啟始化,其中該輸入流接著讀入於一 緩衝區以做為一陣列之位元組。該緩衝區接著是利用 parseBuffer方法來受到解析。一紀錄物件也受到啟始化。 public PubkContainer(byte [] buf) 〇 包含器是啟始化之位元組陣列,且該陣列接著讀入於一 緩衝區以做為一陣列之位元組。該緩衝區接著是藉由使用 一 parseBuffer方法來解析。一紀錄物件也受到啟始化。 private void seal()發出 RsaLibException。下列受到設定以 密封一 PubKContainer :運作碼,KID,MK,PubKDigest, SealedMKContainer 。 設 定 Format 成 為 3=FmtPubKContainer。利用運作碼,格式,預留,KID與 MK來建造PubKBlock。運作碼,KID與主金鍮是由呼叫者 來設定。呼叫RSA lib之JNI包裹器於一嘗試區塊, O:\75\75O61-920519.DOC -76- rsaOaepEncrypt(PubKDigest,PubKBlock)以建造加密之 PubKRSABlock 〇 設定長度成為密封之 MKContainer(MkC) 之長度加上 148 (128-PubKRSABlock,20-PubKDigest)。此 長度表示來自PubKDigest之位元組計數,其中包含密封之 MkContainer。建造密封之PubKContainer成為位元組陣列以 符合 Opcode || format | |reserved| |1 eng th| |PubkDigest || PubKRSABlock||sealedMkC。 使用安全性公用程式類別之add Array方法來建造串連之 陣列。 private void unseal()發 出 RsaLibException , ContainerException 〇 檢查是否 invalidOpcode,invalidFormat,或 invalidLen是 偽(false),並發出一 ContainerException。如果他們之任一 未如預期,則他們是在parseBuffer中設定為偽。 藉由解密PubKRSABlock來取得PubKBlock。且 PubKBlock是 opcode||format|reserved||KID||MK,其中該解 密是經由 RSA lib 之 JNI 包裹 器藉由 rsaOaepDecrypt(PubKDigest,PubKRSABlock)來達成。 執行PubKBlock,運作碼,格式,KID與主金鑰之有效性 與長度檢查。 private void parseBuffer(byte[]buffer)是一協助函式,以 解析儲存於一緩衝區之輸入密封包含器,且其是 opcode 11 format ||reserved||length|| PubKDigest || PubKRSABlock ||Sealed MKC。 O:\75\75061-920519.DOC -77- 如果 invalidOpcode,invalidFormat,invalidLen 未如預 期,則設定他們。 public byte[]getRawForNet()發出 ContainerException 〇 檢查是否資料與MKDigest不是空的,且接著呼叫密封方 法。 送回緩衝區,其中緩衝區是在密封運作中建造成為 opcode || format ||reserved|| length] |PubKDigest||PubKRSABlock ||SealedMKC。 public byte getOpcode()送回包含器之運作碼。 public byte[] getPubKDigest()送回來自包含器之 PubKDigest 〇 public byte[] getKID()送回來自包含器之KID,且如果必 要的話可執行解開。 public byte[] getMK()發出 ContainerException。 送回來自包含器之MK,且如果必要的話,可執行解開。 public MkContainer getMkContainer() 發 出 ContainerException-擴取彼入於Pubk之密封MK包含器,而 此是由parseBuffer來完成;解開Pubk部份以取得MK,並為 MK Container設定該部份。 public void setOpcode(byte Opcode) 發出 ContainerException-在檢查是否其屬於合法範圍之後,指配 包含器之運作碼。 public void setPubKDigest(byte[] digest)發 出 Container Exception-如果空白受到傳送或長度不等於20,則 O:\75\75O6l-920519.DOC -78- 發出例外,設定PubKDigest。 public void setKID(byte[] Kid)發出 ContainerException-如果空白受到傳送或長度不等於20,則發出例外,設定金 鑰識別。 public void setMK(byte[] MK)發出 ContainerException-如 果空白受到傳送或長度不等於16,則發出例外,設定MK。 public void setMKContainer(byte[] Mkc)發 出 ContainerException-設定密封之MkContainer成為彼入於 PubKContainer 〇 private void log(int aWarningLevel,String message)-比 較以一參數來傳送之警告位準與目前位準,且如果其更為 緊急,則輸出該警告位準。 相關於MKContainer之建造器與方法展示如下。 public MkContainer()是一岡J啟始化紀錄物件之空白包含 器。 public MkContainer(InputStream in)-包含器是藉由輸入 流來受到啟始化,其中該輸入流接著讀入於緩衝區以做為 一陣列之位元組。該緩衝區接著是利用parseBuffer方法來 受到解析。一紀錄物件也受到啟始化。 public MKContainer(byte[] buf)-包含器是啟始化之位元 組陣列,其中該陣列接著讀入於緩衝區以做為一陣列之位 元組。該緩衝區接著是利用parseBuffer方法來受到解析。 一紀錄物件也受到啟始化。 private void seal()發出 RsaLibException 〇 O:\75\75061-920519.DOC -79- 下列受到設定以密封一 MKContainer,呼叫設定方法於該 等運作碼,MKDigest,資料。 設定 Format成為 3 以等於 FmtPubKContainer。 設定scd成為20位元組之零陣列。 建造長度成為資料長度加上56(20-MKDigest+16-iv+ 20-scd) ° 轉換長度成為一 2位元組陣列。 自隨機數字產生器取得iv以做為16位元組陣列,呼叫 cryptoPrimitivesgenerateRandomNumber( 16)方法。 使用安全公用程式之addToArray方法來建造酬載成為 opcode||format丨|reserved||length||MKDigest||iv||scd||data 〇 建造 newKey 成為 NKeyForSealing=CryptoPrimitive. newKey (MKDigest,ctnrConstants.UsageMKMacServer); 接著自cryptoPrimitive呼叫取得Mac成為
Mac = CryptoPrimitive.getHmac(NKeyForSealing , payload); 建造 Plaintext成為 iv||scd||data||mac。 設定墊充成為1至1 6位元組之一向量以使得變數, Plaintext,(請參看下文)之長度成為16位元組之整數倍。每 一塾充位元組具有一等於該向量之塾充位元組數目之值。 這是藉由使用SecurityUtils類別之adjustPad方法來達成。 增加整充至Plaintext。現在Plaintext是 iv||SealersCodeDigest||Data||Mac||Padding。 令 Ciphertext=Enc (Key,UsageMKEnc,Plaintext) 0 O:\75\75061-920519.DOC -80· 589569
Ciphertext之長度將相同於Plaintext。 設定Length成為Plaintext之位元組數目加上20 (針對 MKDigest),且儲存該值於一 2位元組陣列。 建造一密封之MkContainer成為一緩衝區,且該緩衝區具 有 opcode || format ||reserved||length||MKDigest|| ciphertext
private void unseal() 發 出 RsaLibException , ContainerException 〇 檢 查是否 invalidOpcode , invalidFormat , 或 invaUdLen 是偽 , 並發出一 ContainerException。如果他們之任一未如預期,則他們是 在 parseBuffer中設定為偽。自 parseBuffer擴取之 Ciphertext 傳送至CryptoPrimitive解密方法以取得解密之明文。Dec方 法是以 dec(MKDigest,ctnrConstants· UsageMKEncServer, ciphertext)來受到呼叫。
因為最後一位元組提供多少墊充位元組受到增加,所以 塾充位元組是藉由明文之最後一位元組得知。塾充位元組 受到移除,且資料大小是藉由自明文之長度移除mac長度與 墊充位元組數目來計算。 iv,scd與資料之長度受到計算且儲存於一 2位元組陣 列。因為資料之長度受到計算,且iv,scd與mac之長度受 到預先決定,所以所有長度皆可自明文中擷取。 修改Length=Length減去20,並再減去整充之長度。 建造酬載成為 〇pcode||Format||reserved||length|| MKDigest|| iv||scd||data。建造 newKey 成為 NKeyForSealing= CryptoPromitive。newKey(MKDigest,ctnrConstants o O:\75\7506l-920519.DOC -81 -
UsageMKMacServer);
ExpectedMac接著是自cryptoPrimitive呼叫取得成為 e xp e c tedMac=Cryp toPr i mi tive.getHmac(NKey For Sealing , payload);如果mac與expectedMac不相等,則發出 ContainerException 〇 private void parseBuffer(byte[]buffer)是一協助函式,以 解析儲存於一緩衝區之輸入密封包含器,且其是 opcode||format||reserved||length||MKDigest||cipheredText 〇 加密之本文包含||IV||SealersCodeDigest||處於加密型態 之資料。 如果 invalidOpcode,invalidFormat,invalidLen 未如預 期,則設定他們。 public byte[]getRawForNet()發出 ContainerException,以 檢查是否金鑰識別,MK與密封之MkC(MkBuff)不是空的, 且接著呼叫密封方法。其送回緩衝區,其中緩衝區是在密 封運作中建造成為 Opcode||Format||Length||MKDigest||IV|| SealersCodeDigest||Data||mac|丨pad 〇 public byte getOpcode()_送回包含器之運作碼。 public byte[] getMKDigest()發出 ContainerException-送 回來自包含器之MKDigest。 public byte[] getData()發出 ContainerException-送回來自 包含器之資料,且如果必要的話可執行解開。 public byte[] getMK〇發出 ContainerException-送回來自 包含器之MK。 O:\75\75061 -920519.DOC -82- 589569 public void setOpcode(byte Opcode) 發 出 ContainerException-在檢查是否其屬於合法範圍之後,指配 包含器之運作碼。 public void setMKDigest(byte[] digest)發 出 ContainerException-如果空白受到傳送或長度不等於20,則 發出例外,設定MKDigest。 public void setData(byte[] Kid)發出 ContainerException-如果空白受到傳送,則發出例外,設定資料。 public void setMK(byte[] MK)發出 ContainerException-如 果空白受到傳送或長度不等於16,則發出例外,設定MK。 private void log(int aWarningLevel ^ String message)-^匕 較以一參數來傳送之警告位準與目前位準,且如果其更為 緊急,則輸出該警告位準。 26. OSD軟體 作業系統驅動程式(OSD)是系統10之一核心元件。其是動 態載入於系統之核心模式驅動程式。其之上緣提供安全服 務給安全應用。其之下緣界接安全BIOS,而安全BIOS提供 低階安全功能。作業系統驅動程式所提供之服務包含RS A 與RC6加密函式,應用完整性檢查與隨機數字產生。 軟體作業環境運用一作業系統驅動程式,例如一 WDM視 窗裝置驅動程式。裝置驅動程式也在Windows 98,Windows ME,Windows 2000與未來之微軟視窗作業系統之下執行。 下文是作業系統驅動程式(OSD)功能之詳細說明。作業系 統驅動程式是一 WDM核心模式驅動程式,且可在windows O:\75\75061-920519.DOC -83- 98,Windows ME 與 Windows 2000之下執行。WDM 是以 Windows NT-層化32位元裝置驅動程式模型為基礎,並具有 PNP與功率管理之額外支援。因為作業系統驅動程式未管 理任何實體裝置,所以沒有獲得分配任何硬體資源。作業 系統驅動程式是建構成為一模組。沒有類別/迷你類別驅動 程式對。當作業系統驅動程式載入至系統時,一功能裝置 物件(FDO)受到產生。圖3展示作業系統驅動程式元件互動。 運作之原理現在將受到討論且將概述OSD運作之程序。 圖2展示一從屬元件階層。 26.1 OSD啟始化 在一應用呼叫OSD函式之前,其藉由呼叫 OsdRegisterApplication函式來註冊本身於作業系統驅動程 式。作業系統驅動程式執行下列工作以註冊一應用。取得 應用識別資訊,例如程序識別。 以做為參數來傳送之SignedContainer之金鑰摘要為基礎 來取得公開金鑰索引。作業系統驅動程式在啟始化期間產 生之金餘表對映金餘摘要至金鑰索引。呼叫 BIOSRawRSAPublic 常式來解開 SignedContainer之資料區 塊。該資料區塊包含位址範圍,預期之碼摘要, PrivilegeBitVector與完整性檢查之頻率。 以位址範圍為基礎來產生呼叫應用之部份之碼摘要。該 應用應建構成為所有OSD函式啟動皆很接近,而該等OSD 函式啟動稱為一 OSD服務啟動區塊(SIB)。OSD服務啟動區 塊必須(合法性需求)為非通屬,以防止其他應用跳入SIB及 O:\75\75061-920519.DOC -84- 使用OSD之API於其本身之用途。此SIB是專屬於呼叫應用 之一組加值API。
比較產生之碼摘要與預期之碼摘要。如果他們相同,則 應用獲彳于授權’否則就送回一錯誤。如果應用獲得授權, 則增加一輸入項於註冊之應用表。該輸入項包含應用之識 別資訊(程序識別),QSD服務啟動區塊之位址範圍,〇SD 服務啟動區塊之碼摘要,Privile(jgeBitVector與完整性檢杏 頻率。 26.2 OSD服務啟動 在一應用註冊於作業系統驅動程式之後,其可請求〇sd 服務。每一次當作業系統驅動程式之功能受到啟動時,作 業系統驅動程式執行下列工作。 檢查應用之7〇整性。其是以來自註冊應用表之完整性檢 查頻率基礎。作業系、统驅動程式藉由產生應用之嶋服務 啟動區塊之碼摘要來執行該&查。&著該碼摘彡與預期之 碼摘要相比較。如果他們是相同的,則應用之完整性沒問 題。否則就送回一錯誤。 檢查特權位元向量(Privilege Bit Vec⑽以查看是否應用 具有啤叫此特定函式之授權。繼續執行⑽碼以服務該請 求。作業系統驅動程式可視請求之服務而定來呼叫安全 則s常式。呼叫〇sdRandomAddN〇ise函式。這將增加prng 之不可預測性。 26.3應用解註冊 在一應用優雅終止之前,其呼叫
O:\75\75061 -920519.D0C -85 - 0 sdUnregis ter Application以解註冊本身於作業系統驅動程 式。OSD驅動程式移除應用之註冊應用表之輸入項。 註冊應用表之產生現在將受到討論。作業系統驅動程式 維持一註冊應用表。以來自註冊應用表之應用檢查頻率為 基礎,作業系統驅動程式週期性檢查呼叫者之完整性。其 取得呼叫者之OSD服務啟動區塊之位址範圍,並產生碼摘 要。接著再度檢查註冊應用表之預期碼摘要。 RS A加密功能現在將受到討論。作業系統驅動程式建構 介面函式以執行PubKContainer密封(但是不是為了登記,其 中 PubKContainer產生於 BIOS,AppContainer 密封 /解開與 SignedContainer解開)。但是,所有RS A公開/私密金鑰演算 法皆是建構於安全BIOS。作業系統驅動程式呼叫BIOS常式 以完成包含器運作。 作業系統驅動程式建構RC6演算法函式以密封/解開 MKContainer。這是執行於作業系統驅動程式本身,而非 BIOS,除了在登記期間以夕卜,其中BIOS執行MKContainer 處理以保護主金鑰。
26.4 OSD介面與 API 這一節描述作業系統驅動程式如何界接系統核心及界接 安全BIOS。這一節也定義一些OSD API函式,其中使用者 模式應用可呼叫該等函式以取得OSD安全服務。這一節也 描述作業系統驅動程式應建構之内部函式。 作業系統驅動程式函式之上緣介面展示如下。在WDM模 型之下,系統輸入/輸出管理器藉由下列方式向一裝置驅動 O:\75\75061-920519.DOC -86 - 程式提出一輸入/輸出請求:產生一輸入/輸出請求封包 (IRP),並向下傳送該封包至裝置驅動程式。OSD安全服務 可藉由傳送DEVICE_IO_CONTROL IRP來啟動。一 Device__IO—Control碼之每一處理常式提供一特定函式。作 業系統驅動程式10—CONTROL碼定義如下。 I0CTL_0SD_REGISTER_APPLICATI0N 〇 此處理常式註 冊應用於作業系統驅動程式,並呼叫BIOS常式。 I0CTL_0SD_UNREGISTER_APPLICATI0N。此處理常式 解註冊應用於作業系統驅動程式。 I0CTL—0SD_GET—PUBLIC—KEY。at匕處理常式藉由使用 金鑰索引做為參數以自BIOS擷取公開金鑰,並呼叫BIOS 常式。 I0CTL_0SD—VERIFY_SIGNED—DIGEST。此處理常式驗 證一資料區塊之RS A數位簽章。必需呼叫BIOS常式。 I0CTL—0SD—RANDOM—GENERATE。此處理常式使用 PRNG來產生一隨機數字。視PRNG建構而定,此處理常式 可或可不呼叫BIOS常式。 I0CTL—0SD—PUBK—CONTAINER—SEAL。此處理常式使 用金鑰索引所指定之公開金鑰來加密一包含器之一資料區 塊,並呼叫BIOS常式。 IOCTL—OSD_SIGNED_CONTAINER_UNSEAL。此處理常 式驗證是否一包含器是真正由一經授權之伺服器來簽署, 並呼叫BIOS常式。 I0CTL—0SD一APP—CONTAINER SEAL。此處理常式使用 O:\75\7506l-920519.DOC -87- 藉由主金鑰所推導之一金瑜來密封一 AppContainer,並呼 叫BIOS常式。 IOCTL_OSD_APP_CONTAINER_UNSEAL。此處理常式 使用藉由主金瑜所推導之一金鑰來解開一 AppContainer, 並呼叫BIOS常式。 IOCTL_OSD_APP_CONTAINER_TRANSFER。此處理常 式密封一只可由執行於相同平台或不同平台之另一程式來 解開之AppContainer。呼叫BIOS常式以解開包含授權資訊 之 SignedContainer 0 IOCTL_OSD_MK_CONTAINER_SEAL。此處理常式藉由 一主金鑰來密封一包含器。實際之密封是執行於作業系統 驅動程式以内。呼叫BIOS常式以解開AppContainer來取得 主金鑰。 IOCTL_OSD JV1K_C0NTAINER_UNSEAL。此處理常式藉 由一主金鑰來解開一包含器。解開是執行於作業系統驅動 程式以内。針對AppContainer BIOS常式受到呼叫以取得主 金綸。 IOCTL_OSD_ENROLL__GENERATE_REQUEST。此處理 常式呼叫BIOS常式以產生虛擬DMK,訊息金鑰與DMK從屬 種子。 IOCTL_OSD_ENROLLJPROCESS_RESPONSE。此處理常 式呼叫BIOS常式以產生此平台之主金鑰。 IOCTL__OSD—INVALIDATE_DMK。此處理常式呼叫一 BIOS常式以使前一登記所產生之主金鑰無效化。 O:\75\75061-920519.DOC -88- IOCTL一OSD一SET—PUBLIC—KEY。此處理常式安裝額外 之RSA公開金鑰於BIOS金鑰表。 作業系統驅動程式之下緣介面現在將受到討論。在作業 系統驅動程式之下緣介面上,作業系統驅動程式呼叫安全 BIOS介面常式以取得下層BIOS所提供之安全服務。安全 BIOS介面將以32位元之目錄服務介面為基礎來建構。安全 BIOS提供之所有服務之函式索引皆應受到定義。當作業系 統驅動程式載入於系統時,其需要搜尋安全BIOS輸入點。 在每一常式呼叫之前,作業系統驅動程式需要以安全BIOS 規格為基礎來設定註冊本文。 27.使用者模式API函式 一使用者模式API庫受到建構。一安全應用可藉由呼叫此 庫之函式來存取作業系統驅動程式提供之安全服務。API 函式說明如下。 int OsdRegisterApplication ( IN unsigned char *pAuthorizationBuffer, IN unsigned int *pAuthorizationBufferLength) 此函式藉由OSD碼來註冊一應用。其驗證是否該應用已 受到授權,且儲存應用資訊於OSD維持之註冊應用表。只 有當其他OSD呼叫是自一註冊應用内之一位置,或另一 OSD函式受到呼叫時,他們方可運作。如果註冊成功,則 其送回零。否則其送回一錯誤。pAuthorizationBuffer與 pAuthorizationBufferLength參數指定一 SignedContainer之 位置與長度,其中該SignedContainer是由授權裝置伺服器 O:\75\75061-920519.DOC -89 - 589569 來產生。 此函式使用 IOCTL_OSD_REGISTER_APPLICATION 來 啟動OSD服務。 int OsdGetCapabilities( OUT unsigned short *pVersion j OUT unsigned short *pCapabilities) 此函式送回OSD版本號碼與OSD CR功能與系統狀態。 版本號碼定義如下。 第一位元組 第二位元組 次要版本 主要版本 功能WORD定義成為具有15位元。位元0顯示系統是否已 成功登記,其中1表示成功,而0表示失敗;位元1顯示登記 型式,其中0表示離線登記,而1表示線上登記;且位元2-15 受到預留。 此函式使用 IOCTL—OSD—GET—CAPABILITIES 來啟動 OSD服務。 int OsdUnregisterApplication()函式藉由自註冊應用表移 除呼叫者之輸入項來解註冊呼叫者。此函式使用 IOCTL—OSD—UNREGISTER—APPLICATION 來啟動 OSD 月艮 務。 int OsdGetPublicKey( IN int nKeylndex, OUT unsigned char *pModulusBuffer j IN/OUT unsigned int *pModulusBufferLength » O:\75\75061-920519.DOC -90- OUT unsigned int *pExponent) 如果此函式成功擴取位於金鑰表之nKeyIndex列之RS A 公開金鑰,則其送回零。公開金鑰之模數(一 1024位元之數 字)送回至指定之緩衝器,且公開金鑰之指數(3或65537)置 放於pExponent所辨識之位置。pModulusBufferLength辨識 之位置最初設定成為pModulusBuffer以位元組為單位之最 大長度,且在呼叫返回之後,其是設定成為實際使用之位 元組之數目。一非零送回值顯示一錯誤。金鑰之模數拷貝 至緩衝區,自最高有效位元組(MSB)開始。nKeylndex值開 始於零,且對於自快閃ROM載入之金鑰依序遞增。負 nKeylndex值表示在OS執行之後由OSD安全模組載入於 SMRAM公開金鑰表之金鑰。 此常式可由一應用用以定址一 nKeylndex,其中該 nKeylndex對應於該應用藉由一 X.509憑證所得知之公開金 綸。 如果呼叫者不是一註冊應用或另一 OSD常式,則此函式 送回一錯誤。此函式將週期性驗證是否呼叫者之碼之SHA1 摘要在其受到註冊之後尚未改變。 此函式使用 IOCTL_OSD一GET—PUBLIC—KEY來啟動 0SD 服務。 int OsdRSAVerifySignedDigest( IN int nKeylndex, IN unsigned char *pSignedDigestBuffer » IN unsigned int *pSignedDigestBufferLength, O:\75\75061-920519.DOC -91 - IN unsigned char *pDigestBuffer 〇 IN unsigned int *pDigestBufferLength) 此函式驗證一 RSA數位簽章。其執行一 PKCS #1格式之 RSA公開金鑰運作,以使用一公開金鑰來解密 pSignedDigestBuffer 與 pSignedDigestBufferLength 來取得 預期之摘要值,其中該公開金鑰是由nKeylndex來指定,且 預期之摘要值是使用匹配之私密金鑰來加密。其比較預期 之摘要與 pDigestBuffer 及 pDigestBufferLength 參數所指定 之值。如果他們是相同的,則其送回零;否則其送回一非 零之錯誤碼。如果nKeylndex是無效的,則此常式也將送回 一錯誤。pDigestBuffer與 pDigestBufferLength值可起因於呼 叫 OsdSHAlFinal常式。 pSignedDigestBuffer之資料是以開始於MSB之方式受到 儲存,且其之長度必須正好等於選擇之公開金鑰之模數。 如果呼叫者不是一註冊應用或另一 OSD常式,則此函式 送回一錯誤。此函式將週期性驗證是否呼叫者之碼之SHA1 摘要在其受到註冊之後尚未改變。 此函式使用 IOCTL一OSD一VERIFY一SIGNED一DIGEST 來 啟動OSD服務。 int OsdDigestInit( OUT DigestContext *pDigestContext) 此函式可由任何應用來呼叫。其啟始化呼叫者之位址空 間之一資料結構,其中該資料結構將用以計算SHA1摘要 值0 O:\75\75061-920519.DOC •92- 呼叫者可修改此資料結構,以致OSD模組無法依賴結果 之正確性。當一應用使用該等SHA1常式來驗證簽章時,該 應用信任自己來計算正確之摘要值,且接著信任作業系統 驅動程式(與因而信任BIOS SMI安全模組)來計算正確之 RS A公開金鑰。當OSD層正在註冊一新應用時,該資料結 構保存於作業系統驅動程式之記憶體内,所以作業系統驅 動程式可信任該結果。請參看第8節之DigestContext之資料 結構定義。 int OsdDigestUpdate( IN DigestContext *pDigestContext, IN unsigned char *pBuffer, IN unsigned int *pBufferLength) 此函式可由任何應用來呼叫。其使用呼叫者之位址空間 之一資料結構以藉由下列方式來更新一 SHA1摘要物件之 狀態:饋送pBuffer與pBufferLength參數所指定之資料位元 組至該狀態。 pBufferLength是一指向一位置之指標,其中在呼叫此常 式之前該位置必須填入緩衝區之位元組之數目的計數。此 常式不會改變該位置,所以長度可直接受到傳送,而非藉 由參考。但是,此設計之所有緩衝區長度值皆是藉由參考 來傳送,以使該等介面更為均勻。 • int OsdDigestFinal( IN DigestContext *pDigestContext, OUT unsigned char *pDigestBuffer, O:\75\75061-920519.DOC -93- IN/OUT unsigned int *pDigestBufferLength) 此函式可由任何應用來呼叫。其使用呼叫者之位址空間 之一資料結構來計算一資料區塊之一 SHA1摘要之最終結 果,且該最終結果可由零或更多呼叫來傳送至 OsdDigestUpdate常式。其藉由下列方式來處理保留於資料 結構之緩衝區之任何位元組··附加墊充與總長度(以位元為 單位),且執行該(等)最終摘要運作。結果置於pDigestBuffer 與pDigestBufferLength參數所指定之緩衝區。在呼叫此函 式之前,pDigestBufferLength指向一位置,以指定 pDigestBuffer之最大大小,且在成功完成之後,該位置設 定成為置於緩衝區之位元組之數目。對於SHA1摘要,結果 將是20位元組長。 int OsdRandomGenerate( OUT unsigned char *pDataBuffer 5 IN unsigned int *pDataBufferLength) 此函式使用作業系統驅動程式之虛擬隨機數字產生器來 填入pDataBufferLength參數所指定之位元組數目於指定之 資料緩衝區。 如果pDataBufferLength是20位元組或更少,則下列步驟 受到執行一次,且ResultBlock之領先位元組拷貝至 pDataBuffer,而剩餘部份則受到捨棄。如果需要多於20位 元組,則下列步驟依需要而定受到重複。StateBlock與 ResultBlock皆是20位元組之值。StateBlock代表PRNG之總 體狀態。 O:\75\75061-920519.DOC -94-
ResultBlock=SHA 1 (StateBlock||StateBlock) StateBlock=StateBlock XOR SHA1 (StateBlock||ResultBlock) 當pDataBuffer已受到填充時,藉由呼叫 OsdRandomAddNoise()來結束。 如果呼叫者不是一註冊應用或另一 OSD常式,則此函式 送回一錯誤。此函式週期性驗證是否在其受到註冊之後呼 叫者之碼之SHA1摘要尚未改變。 此函式使用 IOCTL_OSD_RANDOM—GENERATE 來啟動 OSD服務。 int OsdPubKContainerSeal( IN int nKeylndex, IN/OUT unsigned char *pContainerBuffer, IN/OUT unsigned int *pContainerBufferLength » OUT unsigned char *pMKBuffer, IN/OUT unsigned int *pMKBufferLength) 此函式是用以確保傳送至授權裝置伺服器之資料無法為 其他從屬所讀取。只有授權裝置伺服器知道解開此包含器 所必需之私密金鑰。pContainerBuffer參數指向一保存一解 開之PubKContainer結構之記憶體區塊。呼叫者應如關於 PubKContainer之節所述填入各種攔位。該節也描述此函式 所執行之步驟。nKeylndex辨識應用以密封包含器之公開金 鑰。 一旦輸入,pContainerBufferLength指向一位置,其中兮 O:\75\75061-920519.DOC -95- 位置包含可放入包含器緩衝區之位元組之最大數目。一旦 輸出,其包含pContainerBuffer實際使用之位元組數目。 pContainerBuffer之資訊描述必須受到保護之資料之長度。 pMKBuffer與pMKBufferLength參數指定一緩衝區,其中 該緩衝區是由一 AppContainer來填充,以保護為此 PubKContainer所產生之主金鑰。此資訊是用以藉由相同之 主金鑰來產生MKContainer。 此常式藉由呼叫〇sdRandomAddNoise()來結束。如果呼 叫者不是一註冊應用或另一 OSD常式,則此函式送回一錯 誤。此函式週期性驗證是否呼叫者之碼之SHA1摘要在其受 到註冊之後尚未改變。此函式使用IOCTL—OSD—PUBK— CONTAINER_SEAL來啟動 OSD服務。 int OsdSignedContainerUnseal( IN/OUT unsigned char *pContainerBuffer, IN/OUT unsigned int *pContainerBufferLength) 此函式是用以驗證是否一包含器真正是由一伺服器來簽 署。如果簽章不是有效的,則其送回一錯誤。 SignedContainer之格式與此函式所執行之步驟說明於關於 SignedContainer之節。 一旦輸入,pContainerBufferLength指向一位置,其中該 位置包含可放入包含器緩衝區之位元組之最大數目。一旦 輸出,其包含pContainerBuffer實際使用之位元組數目。 pContainerBuffer之資訊描述必須受到保護之資料之長度。 此常式藉由呼叫OsdRandomAddNoise()來結束。如果呼 O:\75\75061-920519.DOC -96- 589569 叫者不是一註冊應用或另一 OSD常式,則此函式送回一錯 誤。此函式週期性驗證是否呼叫者之碼之SHA1摘要在其受 到註冊之後尚未改變。此函式使用 IOCTL_OSD_SIGNED_CONTAINER_UNSEAL 來啟動 OSD 服務。 int OsdMKContainerSeal( IN/OUT unsigned char *pContainerBuffer, IN/OUT unsigned int *pContainerBufferLength, IN unsigned char *pMKBuffer, IN unsigned int *pMKBufferLength) 此函式是用以密封一包含器,以致其只可為知道主金鑰 之其他人所解開。此金鑰可為裝置及伺服器所知之主金 鑰,或從屬所產生及以一 PubKContainer傳送至伺服器之一 新金输。一旦輸入,pContainerBuffer參數指向一保存一解 開之MKContainer結構之記憶體區塊。一旦輸出,包含器受 到密封。呼叫者應如關於MKContainer之節所述填入各種欄 位。該節也描述此函式所執行之步騾。此函式使用從屬常 數於金鑰使用。 一旦輸入,pContainerBufferLength指向一位置,其中該 位置包含可放入包含器緩衝區之位元組之最大數目。一旦 輸出,其包含pContainerBuffer實際使用之位元組數目。 pContainerBuffer之資訊描述必須受到保護之資料之長度。 pMKBuffer與pMKBufferLength參數指定一緩衝區,其中 該緩衝區保存一 AppContainer,以保護藉由呼叫 O:\75\75061-920519.DOC -97-
OsdPubKContainerSeal函式所產生之主金鑰。此常式藉由呼 叫OsdRandomAddNoise()來結束。如果呼叫者不是一註冊 應用或另一 OSD常式,則此函式送回一錯誤。此函式週期 性驗證是否呼叫者之碼之SHA1摘要在其受到註冊之後尚 未改變。此函式使用 IOCTL_OSD_MK_CONTAINER—SEAL 來啟動OSD服務。 int OsdMKContainerUnseal( IN/OUT unsigned char *pContainerBuffer j IN/OUT unsigned int *pContainerBufferLength » IN unsigned char *pMKBuffer, IN unsigned int *pMKBufferLength, IN int wasSealedByServer) 此函式是用以解開一包含器,其中該包含器是由另一個 體使用給定之主金鑰來密封。一旦輸入,pContainerBuffer 參數指向一保存一密封之MKContainer結構之記憶體區 塊。一旦輸出,包含器受到解開。欲瞭解解開格式請參看 關於MKContainer之節。該節也描述此函式所執行之步驟。 如果參數,wasSealedByServer,是零,則此常式所用之金 鑰使用常數是從屬常數;否則他們是伺服器常數。欲瞭解 細節請參看關於金鑰使用常數之節。 一旦輸入,pContainerBufferLength指向一位置,其中該 位置包含可放入包含器緩衝區之位元組之最大數目。一旦 輸出,其包含pContainerBuffer實際使用之位元組數目。 pContainerBuffer之資訊描述必須受到保護之資料之長度。 O:\75\75061-920519.DOC -98 - pMKBuffer與pMKBufferLength參數指定一緩衝區,其中 該緩衝區保存一 AppContainer,以保護藉由呼叫 OsdPubKContainerSeal函式所產生之主金鑰。 此常式藉由呼叫OsdRandomAddNoise()來結束。如果呼 叫者不是一註冊應用或另一 OSD常式,則此函式送回一錯 誤。此函式週期性驗證是否呼叫者之碼之SHA1摘要在其受 到註冊之後尚未改變。此函式使用I0CTL_0SD_MK_ CONTAINER_UNSEAL來啟動 OSD服務。 int OsdAppContainerSeal( IN/OUT unsigned char *pContainerBuffer 5 IN/OUT unsigned int *pContainerBufferLength) 此函式是用以密封一包含器,以致其只可為執行於相同 裝置之相同程式來解開。一旦輸入,pContainerBuffer參數 指向一保存一解開之AppContainer結構之記憶體區塊。一 旦輸出,包含器受到密封。呼叫者應如關於AppContainer 之節所述填入各種欄位。該節也描述此函式所執行之步 驟。此函式使用從屬常數於金鑰使用。 一旦輸入,pContainerBufferLength指向一位置,其中該 位置包含可放入包含器緩衝區之位元組之最大數目。一旦 輸出,其包含pContainerBuffer實際使用之位元組數目。 pContainerBuffer之資訊描述必須受到保護之資料之長度。 此常式藉由呼叫OsdRandomAddNoise()來結束。如果呼 叫者不是一註冊應用或另一 OSD常式,則此函式送回一錯 誤。此函式週期性驗證是否呼叫者之碼之SHA1摘要在其受 O:\75\75061-920519.DOC -99- 到註冊之後尚未改變。此函式使用IOCTL—OSD—APP_ CONTAINER_SEAL來啟動OSD月艮務。 int OsdAppContainerUnseal( IN/OUT unsigned char *pContainerBuffer j IN/OUT unsigned int *pContainerBufferLength 5 IN int wasSealedByServer) 此函式是用以解開一包含器,其中該包含器是由執行於 此機器之此應用,或特定針對此機器之此應用之伺服器來 密封。一旦輸入,pContainerBuffer參數指向一保存一密封 之AppContainer結構之記憶體區塊。一旦輸出,包含器受 到解開。欲瞭解解開格式請參看關於AppContainer之節。 該節也描述此函式所執行之步驟。如果參數, wasSealedByServer,是零,則此常式所用之金输使用常數 是從屬常數;否則他們是伺服器常數。 一旦輸入,pContainerBufferLength指向一位置,其中該 位置包含可放入包含器緩衝區之位元組之最大數目。一旦 輸出,其包含pContainerBuffer實際使用之位元組數目。 pContainerBuffer之資訊描述必須保護之資料之長度。此常 式藉由呼叫OsdRandomAddNoise()來結束。如果呼叫者不 是一註冊應用或另一 OSD常式,則此函式送回一錯誤。此 函式週期性驗證是否呼叫者之碼之SHA1摘要在其受到註 冊 之後尚 未改變 。 此函 式使用 IOCTL_OSD_APP_CONTAINER_ UNSEAL 來啟動 〇SD 服 務0 O:\75\75061-920519.DOC -100- int OsdAppContainerTransfer( IN/OUT unsigned char *pContainerBuffer » IN/OUT unsigned int *pContainerBufferLength, IN unsigned char *pAuthorizationBuffer j IN unsigned int *pAuthorizationBufferLength) 此函式是用以密封一包含器,以致其只可為一執行於相 同裝置之不同程式來解開。該包含器之原始擁有者喪失開 啟其之能力。當然,原始擁有者可拷貝該包含器,並繼續 開啟及關閉該拷貝,但是轉移之包含器將利用一不同金鑰 來加密,所以只有新的擁有者可開啟它。一安全鍵盤讀取 模組可使用此特點來捕捉鍵入,及安全地轉移他們至正確 之應用。 一旦輸入,pContainerBuffer參數指向一保存一解開 AppContainer結構之記憶體區塊。一旦輸出,包含器受到 密封。呼叫者應如關於AppContainer之節所述填入各種欄 位。該節也描述此函式所執行之步驟。此函式使用從屬常 數於金鑰使用。在密封此包含器以供新擁有者使用之前, 此函式確認呼叫者目前擁有此包含器(藉由檢查 DecryptedCodeDigest) 〇 pAuthorizationBuffer 與 pAuthorizationBufferLength 參數 指定一授權裝置伺服器所產生之SignedContainer之位置與 長度。欲瞭解細節請參看保護之包含器之設計文件。運作 碼是OpcOsdAllowTransfer且該包含器内之資料指定正在 啟動此函式之程式之AppCodeDigest,與將能夠解開此包含 O:\75\75061-920519.DOC -101 - 器之程式之 AppCodeDigest。包含器之 SealersCodeDigest欄 位將辨識呼叫此函式之程式。 一旦輸入,pContainerBufferLength指向一位置,其中該 位置包含可放入包含器緩衝區之位元組之最大數目。一旦 輸出,其包含pContainerBuffer實際使用之位元組數目。 pContainerBuffer之資訊描述必須保護之資料之長度。此常 式藉由呼叫〇sdRandomAddNoise()來結束。如果呼叫者不 是一註冊應用或另一 OSD常式,則此函式送回一錯誤。此 函式週期性驗證是否呼叫者之碼之SHA1摘要在其受到註 冊之後尚未改變。 int OsdEnrollGenerateRequest( OUT unsigned char *pPubKContainerBuffer, IN/OUT unsigned int *pPubKContainerBufferLength) 此函式將產生一虛擬DMK,主金鑰之從屬種子與會議主 金鑰。其送回一具有主金鑰之從屬種子及會議主金鑰之密 封PubKContainer,與一具有會議主金鑰之密封 AppContainer。 PubKContainer將傳送至授權裝置飼月良器。 BIOS將儲存從屬種子與主金鑰於SMRAM。一旦輸入, pPubKContainerBuffer 與 pAppContainerBuffer 指向緩衝 區。pPubKContainerBufferLength 與 pAppContainerBufferLength 指向一些具有緩衝區之長度之位置。一旦輸出,該等緩衝 區應利用送回之包含器來填充。 如果成功’則此函式返回;否則送回一錯誤。此函式使 用 IOCTI^OSD+ENROLI^GENERATE+REQUEST 來啟動 O:\75\75061-920519.DOC -102- OSD服務〇 int OsdEnrollProcessResponse( IN unsigned char *pContainerBuffer j IN unsigned int *pContainerBufferLength, OUT unsigned char *pAppContainerBuffer 5 IN/OIJT unsigned int *pAppContainerBufferLength 5 OUT unsigned char *pPubKContainerBuffer, IN/OUT unsigned int *pPubKContainerBufferLength) 此函式呼叫SMI常式以產生主金鑰,並儲存其於 SMRAM。此常式將產生一具有金鑰識別(DMK之一雜湊) 與其他資料之 Sealed AppContainer。 一旦輸入,pContainerBuffer指向一儲存MKContainer或 SignedContainer之緩衝區,其中該MKContainer是在線上登 記期間由授權裝置伺服器送回,且該SignedContainer在離 線登記期間具有虛擬伺服器種子。一旦輸出, pAppContainerBuffer儲存包含金鑰識別之密封 AppContainer。pPubKContainerBuffer指向一緩衝區,且該 緩衝區在離線登記期間具有伺服器種子與從屬種子。此指 標在線上登記期間可為空(NULL)。 此函式使用 IOCTL_OSDJENROLLJPROCESS_RESPONSE 來啟 動OSD服務。 int OsdInvalidateDMK() 此函式使得前一登記所產生之主金鑰無效化。此函式使 用 IOCTL_OSD—INVALIDATE_DMK來啟動 OSD服務。 O:\75\75061-920519.DOC -103- int OsdSetPublicKey( IN unsigned int nKeylndex J IN unsigned char *pKeyBuffer 5 IN unsigned int *pKeyBufferLength) 此函式取代nKeylndex所指定之RS A公開金输,或增加一 新金鑰於BIOS金瑜表。一旦輸入,nKeylndex指定要取代 或增加之金鑰。pKeyBuffer指向該金瑜緩衝區。 pKeyBufferLength顯示緩衝區長度。 OSD内部函式 下列函式是由OSD驅動程式在内部呼叫。他們未曝露給 使用者應用。 int Osdlnitialize(void) 此函式啟始化作業系統驅動程式之狀態。在作業系統驅 動程式載入於系統之後,其呼叫此函式。此函式註冊於 BIOS層並啟始化PRNG。PRNG是藉由下列方式來啟始化: 使得StateBlock歸零,自信號檔案讀取儲存之熵,轉換該熵 成為二進位,並傳送其至OsdRandomAddSeed函式。如果沒 有儲存之熵,則作業系統驅動程式執行一收集熵位元組之 緩慢程序,呼叫OsdRandomAddSeed且接著使用 OsdRandomSaveEntropy來儲存摘於信號樓案。 int OsdRandomAddNoise(void) 此函式是在每一 OSD安全常式之末端受到呼叫。其藉由 增加對於攻擊者而言有些不可預測之總體資訊,來協助增 加總體PRNG之不可預測性。 O:\75\75061-920519.DOC -104- 利用新本文來呼叫OsdDigestlnit。 呼叫 OsdDigestUpdate 以傳送 StateBlock。 對於每一快速摘來源: 呼叫OsdDigestUpdate以傳送快速搞值(32位元或64位元 值)。在最後一快速熵來源受到處理之後,呼叫 OsdDigestFinal 以產生 ResultBlock。
StateBlock=StateBlock 與 ResultBlock 進行互斥或(XOR) 運作 快速熵來源包含CPU循環計數器,CPU統計值,例如快 取記憶體不中計數,與系統時脈之所有位元。新StateBlock 是舊區塊與一摘要值之互斥或之結果。藉由互斥或來混合 舊區塊與新區塊,我們確保新狀態之不可預測性不低於舊 狀態(假設摘要函式具有溫和特性)。相對地,因為SHA1表 現如同一可導致二輸入值對映至相同輸出值之隨機函式, 所以方程式StateBlock=SHAl(StateBlock)可導致不可預測 性之程度下降。 如果主機板或CPU支援一硬體RNG,則此硬體值應受到 包含。只增加可快速供使用之隨機性之程度。 如果呼叫者不是一註冊應用或另一 OSD常式,則此函式 送回一錯誤。此函式週期性驗證是否呼叫者之碼之SHA1摘 要在其受到註冊之後尚未改變。 int OsdRandomAddSeed( IN unsigned char *pDataBuffer 5 IN unsigned int *pDataBufferLength) O:\75\75061-920519.DOC -105- 此函式更新作業系統驅動程式之PRNG之狀態。其執行下 列步驟。
StateBlock=StateBlock XOR SHA1 (StateBlock|| pDataBuffer) 換句話說,啟始化一 SHA1本文,並利用StateBlock與給 定緩衝區之位元組來更新該本文。 呼叫 OsdRandomAddNoise() 如果呼叫者不是一註冊應用或另一 OSD常式,則此函式 送回一錯誤。此函式週期性驗證是否呼叫者之碼之SHA1摘 要在其受到註冊之後尚未改變。 int OsdRandomSaveEntropy() 此函式儲存資訊自作業系統驅動程式之總體PRNG至信 號檔案之一欄位。其不儲存原始之StateBlock,因為這樣可 能導致作業系統驅動程式再使用相同序列之隨機位元組。 相對地,其儲存一藉由目前(160位元)狀態所產生之32位元 組(256位元)值。自該值開始重新啟始PRNG將不會導致其 再產生相同之位元組。基本步驟是: 呼叫OsdRandomGenerate以請求一隨機位元組之32位元 組緩衝區。 編碼該等二進位位元組成為64十六進位ASCII字元。 儲存該等字元於信號檔案之一欄位。 呼叫 OsdRandomAddNoise()。 如果呼叫者不是一註冊應用或另一 0SD常式,則此函式 送回一錯誤。此函式週期性驗證是否呼叫者之碼之SHA1摘 O:\75\75061-920519.DOC -106- 要在其受到註冊之後尚未改變。 資料格式(Data Format)現在將受到討論。下文是本發明 所用之資料結構與格式之說明。 授 權 緩衝區(Authorization Buffer)是一 SignedContainer。此包含器之資料(Data)區塊定義於表12。 註冊應用表之輸入項展示於表13。該表可建構成為一鏈接 表列。 本發明探討下列議題。一項議題是如何讀取作業系統驅 動程式之應用碼。只要核心模式OSD執行成為一頂級位準 驅動程式及於PASSIVE—LEVEL,則其可讀取使用者模式位 址空間。 另一議題是如何取得呼叫者之輸入點。當一應用呼叫 DevicelOControl系統函式時,其將自ring3切換至ringO。而 且對於不同之環,硬體建構不同之堆疊。作業系統驅動程 式必須追蹤使用者模式堆疊以取得輸入點。此依賴 DevicelO Control之建構,亦即其具有多少堆疊結構(函式呼 叫)。下列四種可能之解決方案可供使用。(1)模仿指令,例 如藉由例外。(2)直接自使用者模式,而非經由驅動程式, 呼叫BIOS常式。(3)設定INT閘。設定一中斷處理程式。所 有該等函式皆將藉由軟性中斷來呼叫。(4)驗證及執行使用 者碼於OSD空間。此解決方案將具有相同於Win32 API之問 題。 下文展現MFC A VPN產品之應用註冊模組(ARM)元件之 說明。應用註冊模組協助一強力驗證模組(SAM)來提供安 O:\75\75061-920519.DOC -107- 589569 全AppContainer之存取’其中該等AppContainer互換於從屬 裝置與加密致能之伺服器之間。 應用註冊模組負責提供從屬裝置之AppContainer金鑰, 其中該等從屬裝置已受到致能可存取一伺服器應用,例如 VPN。應用註冊模組將與SAM經由一安全通訊通道,例如 SSL,來進行通訊。 圖4是一展示多因數從屬驗證(MFCA)註冊之方塊圖。圖4 展示各種模組如何與應用註冊模組進行互動。 SAM與應用註冊模組具有一從屬/伺服器關係。應用註冊 模組是一將曝露一些服務給不同企業之SAM之網際網路伺 服器。其之目標是在註冊一特定裝置於一特定企業期間協 助從屬與S AM。最終之結果是提供適當之AppKey給S AM, 以密封及解開正受到註冊之裝置之包含器。對於每一裝置/ 企業組合,這運作只會執行一次。 該等元件是依照下列順序來啟動。SSL連結驗證器檢查 是否一合法SAM正經由一 SSL連結來與應用註冊模組進行 對話。通往應用註冊模組之所有其他型態之連結皆應受到 再偵測。AppContainer金鍮提供者將使用接收之 pubKContainer來首先執行企業之一些檢查,接著準備最終 將傳回至 SAM之 AppContainerKey。 應用註冊模組之輸入點包含特定之URL,例如 AppContainerKeyRequest 〇 https ·· //arms.DeviceAuthority.com/arm/ AppContainerKeyRequest,例 如,是一 URL,且在其之主體中具有從屬系統所產生之 O:\75\75061 -920519. D0C -108-
PubKContainerQ,與S AM所提供之一些額夕卜資訊。
ClientCertificate 之運作原理 應用註冊模組網路伺服器之mod_ssl是配置成為知道授 權裝置之RootCA憑證。Mod_ssl檢查是否展現之SAM。 ClientCertificate具有一通往授權裝置,RootCA,之憑證路 徑。例如:SAM.ClientCertificate是由 SubscriptionManager· CA.cert來發出,而此Subscription Manager.CA.cert是由授 權裝置Root CA憑證來發出。配置成為mod__ssl之此最後一 cert將成功終止SAM.ClientCert之檢查。 在憑證路徑之此檢查期間,mod_ssl將查詢已受到配置之 憑證啟動表列(CRL)。每一次當一訂購管理器 (SubscriptionManager)啟動一 SAM(例如購買該SAM之公司 正結束營業)時,CRL將必須受到更新。訂購管理器將具有 一儲存其之CRL之URL。此URL儲存於SAM.ClientCert.應用 註冊模組將週期性自此URL取得檔案。 驗證是由授權裝置RootCA與Subscription Manager.CA之 組合來提供:一 SAM.ClientCert就構造而言是一 SAM之憑 證。如果我們使用Verisign做為RootCA,則情形將不會是 這樣。 驗證是由授權裝置 RootCA,Subscription Manager.CA 與 Subscription Manager.CRL之組合來提供:如果一 SAM具有 一 SAM.ClientCert,且其未在 Subscription Manager 〇 CertilficateRevocationList上,貝丨J該SAM受到授權可接觸應 O:\75\75061-920519.DOC -109- 用註冊模組。 SSL連結驗證器。這是一藉由serviet來啟動之java類別。 其提供一 API給servlet以確認給定連結之驗證資訊。servlet 將傳送至少請求物件給它,因為其保有關於SS1連結之資 訊。藉由使用該資訊,SslConnectionVerifier將決定是否受 到連接之從屬是一先前註冊之從屬。 連結驗證器記錄任何失敗之嘗試。成功之嘗試受到記錄 以用於除錯。驗證器送回一將提供關於正在連接之從屬 (SAM)之資訊的物件。驗證器也捕捉可自該請求獲得之任 何使用者名稱(username)資訊。這是供ClientCert管理者 servlet使用。 輸入是一 servlet請求物件:如果一使用者名稱/密碼是用 以提出此請求,則其保存SSL從屬憑證資訊與關於使用者 之資訊。輸出是一 SslConnectionVerifier物件··具有方法, 例如 IsSslOk(),GetCertInfo(),IsUserAuthenticated(), GetUserInfo()。SslConnectionVerifier可存取 x509從屬憑證 之所有欄位。
AppContainerKey提供者servlet傳出應用註冊模組之金 鑰。其是ARM模組之主要輸入點。其啟動 SslConnectionVerifier。藉由其之輸入流,其接收一保存關 於一 SAM之資訊之pubkc(),其中該SAM轉送從屬裝置之 pubkc()。此 SAM資訊具有一符合 SslConnectionVerifier 物 件所知道之資訊之企業欄位。啟動執行器(Enforcer·),並傳 送來自SslVerifier之所有資訊以及來自pubkc〇之資訊至執 O:\75\7506l-920519.DOC -110- 行器。以執行器之結果為基礎,此servlet接著將向加密引 擎請求一 AppContainerKey。位於pubkc()之金瑜識別與ACD 將傳送至加密引擎。AppContainerKey是經由SSL連結送回 至 SAM。 輸入是一 InputStream(來自 servletAPI),其中 PubKC()保 存一金鑰識別,企業資訊,與一 ACD。一請求物件(來自 servlet API)保存關於目前連結之資訊(SSL等)。輸出以 outputStream (來自 servlet API)送回一 AppContainerKey,且 修改資料庫之使用執照之數目。 28.訂購管理器 訂購管理器收集強力驗證模組(SAM)管理執照所需之資 訊。該等執照控制來自MFCA產品之應用註冊模組(ARM) 之SAM所能請求的AppContainer Key數目。應用註冊模組 負責提供AppContainer Key給已受到致能可存取VPN之從 屬裝置。 獲准販賣執照給購買SAM之公司之業務人員通常使用一 通往訂購管理器之網路使用者介面。此介面收集關於該公 司,執照數目,他們之到期日期,業務人員識別,與SAM 識別(從屬憑證簽署請求)之資訊,而應用註冊模組將使用 SAM識別來決定那一 SAM正在請求一 AppContainerKey。 訂購管理器產生一 SAM將載入及驗證之無法竄改(簽署 及/或加密)之檔案。此檔案包含訂購資訊(亦即允許使用之 執照數目,SAM之允許IP位址等)。除了訂購資訊檔案(SIF) 之外,訂購管理器也送回簽署之SAM識別。 O:\75\75061-920519.DOC -111 - 589569 訂購管理器是執照資訊與從屬憑證之一資料庫之前端裝 置。網路使用者介面使用從屬憑證來驗證執照轉賣者。其 請求關於轉賣者獲得執照之公司之資訊,其中包含:公司 名稱,公司聯絡資訊,執照數目,執照有效日期(自啟始日 期至結束日期),SAM之IP或MAC位址(以結合訂購檔案與 該SAM),SAM之從屬憑證請求(CSR),與轉賣者識別。 訂購管理器產生下列安全轉送至安裝SAM之人員之事 項:一簽署之從屬憑證,與一無法竄改之訂購資訊檔案 (SIF)。具有藉由一 SIF簽署公用程式(SSU)來簽署之SIF可達 成無法竄改之目標。 在内部訂購管理器將利用下列資訊來更新一資料庫:啟 動SAM之從屬憑證所需之資訊,關於SAM之資訊(執照數 目,到期曰期,執照續約之聯絡資訊等),與關於購買SAM 之公司之資訊,因為其可能不是該公司所擁有之唯一 SAM。 訂購管理器之運作原理展示如下。首先在一轉賣者/通路 夥伴與一授權裝置之間建立一契約。接著在授權裝置之某 人使用執照轉賣者資訊編輯器/觀看器來產生一啟始轉賣 者/通路夥伴帳戶,其中該帳戶將獲得授權可販賣執照給 SAM 〇 這產生一傳送至轉賣者/通路夥伴之使用者/密碼。轉賣 者/通路夥伴安排使得一 SAM安裝於某一公司。他登錄SAM 資訊編輯器/觀看器並輸入公司資訊及執照資訊。 公司完成安裝SAM :公司指配一 IP位址給SAM,並產生 一從屬憑證簽署請求。此資訊傳送至轉賣者。轉賣者(或具 O:\75\75061-920519.DOC -112- 589569 有OTP之公司)接著返回至SAM資訊編輯器/觀看器,並輸入 SAM之IP位址與CSR。 伺服器產生未簽署之SIF,並傳送該SIF至一 SIF簽署公用 程式。SSU立即送回簽署之SIF。SAM之CSR轉換成為一訂 購管理器簽署之實際從屬憑證(Ce:rt),其中該訂購管理器正 代表根授權裝置來充當一立即C A。 若無OTP解決方案,則轉賣者傳送SIF與從屬憑證至公 司。公司接著安裝SIF於一 SAM所知之目錄。憑證受到安裝 於他們之SSL模組。公司現在準備就緒可請求 AppContainerKey 〇 28.1 SAM模組元件細節 一 SSL連結驗證器是一藉由servlet來啟動之java類別。其 提供一 API給servlet以確認給定連結之驗證資訊。servlet將 傳送至少請求物件給其,因為其保有關於ssl連結之資訊。 藉由使用該資訊,SslConnectionVerifier決定是否受到連 接之從屬是一先前註冊之從屬。此驗證可能將受限於檢查 是否連結是經由SSL,與是否從屬具有一憑證。這種簡單 化是由於Apache+mod_ssl將如何受到配置:他們只接受來 自具有一已知憑證之從屬之連結。 連結驗證器記錄任何失敗之嘗試。成功之嘗試受到記錄 以用於除錯。驗證器送回一提供關於正在連接之從屬(轉賣 者電腦)之資訊的物件。驗證器也捕捉可自請求取得之任何 使用者名稱資訊。這將用以驗證實際獲得授權之轉賣者正 在使用他的電腦,而非其他電腦。 O:\75\75061-920519.DOC -113- 輸入是一 servlet請求物件:如果一使用者名稱/密碼是用 以提出此請求,則其保存SSL從屬憑證資訊與關於使用者 之資訊。輸出是一 SslConnectionVerifier物件··具有方法, 例如 IsSslOk(),GetCertInfo(),IsUserAuthenticated(), GetUserInfo() 〇 SAM資訊編輯器/觀看器模組允許執照資訊受到增加/編 輯/移除等。其允許產生,例如,每一公司,每一 S AMIP/MAC 位址,每一即將到期執照之報告。所有動作皆將藉由有效 之轉賣者資訊(使用者名稱/密碼,從屬憑證)來驗證。 SIF產生器模組產生一訂購資訊檔案。產生之SIF傳送至 SIF簽署公用程式(SSU)。SSU將利用私密金鑰來簽署檔 案,其中私密金鑰之匹配公開金鑰是與SAM軟體一起送 達。只有一SIF簽署金鑰對。 SIF是一人員可讀取之檔案。這允許IT部門人員可在支援 期間立即存取聯絡資訊以及日期,IP位址等。SIF包含:公 司名稱,公司聯絡資訊,到期執照之聯絡人員,執照數目, 執照有效曰期(自啟始曰期至結束曰期),與轉賣者識別, SAM之IP或MAC位址(以結合訂購檔案與該SAM)。 一憑證簽署請求(CSR)處理模組負責產生藉由根授權裝 置之金鑰來簽署之X509相容憑證。如果已遞交請求之轉賣 者受到正確驗證(使用者名稱/密碼與從屬憑證獲得授權), 則其只簽署憑證。其需要SAM資訊,對應之CSR,與聯絡 資訊來提醒SAM之從屬憑證之到期。CSR包含機器之IP位 址於諸欄位之一。因此,產生一具有IP位址於諸欄位之一 O:\75\75061-920519.DOC -114- 之從屬憑證是SAM安裝者之責任。 輸出是一可用於SAM機器之x509從屬憑證。Openssl是其 下之工具,以處理關於SAM與訂購管理器之憑證事務。此 模組也處理發出之SAM。ClientCertificate之啟動。啟動資 訊將置於一憑證啟動表列(CRL)。這表列可使用opensll來操 作。此CRL檔案可供任何人藉由此伺服器之HTTP來下載。 一執照到期偵測器週期性掃描執照之資料庫,並傳送一 電子郵件至訂購期間所提供之聯絡人員。一 SAM憑證到期 偵測器週期性掃描產生之SAM從屬憑證之資料庫,並傳送 一電子郵件至在CSR期間所提供之聯絡人員。 一執照轉賣者資訊編輯器/觀看器註冊轉賣者於系統,並 提供一從屬憑證或只是一使用者名稱與密碼,或以上二 者,給他們之瀏覽器。其也允許追蹤一轉賣者在業務上表 現得有多好。 一 SIF簽署公用程式(SSU)提供一容易存取訂購資訊之方 式給一授權裝置。至少,SSU簽署SIF。 29.應用:多因數從屬驗證 系統之一應用是一存取一虛擬私有網路(VPN)之多因數 從屬驗證(MFC A)應用。驗證程序之第一部份是一使用者名 稱/密碼對(有時候使用者知道此對)。第二部份將是一加密 致能裝置之驗證,無論是以BIOS為基礎或使用軟體(有時候 使用者具有此軟體)。 在MFC A之一簡單版本中,密碼驗證是藉由透過RADIUS 之一傳統傳輸至一驗證伺服器來達成,其中該驗證伺服器 O:\75\7506l-920519.DOC -115- 使用一傳統密碼資料庫。在較佳之實例中,此程序是使用 一揭示於美國專利第 6,226,383號之SPEKE密碼驗證協定 來強化。在該二種情形中,MFC A提供一用於裝置驗證之 新機制。 系統包含下列軟體元件。一執行於從屬裝置之從屬軟體 元件,以對一 VPN驗證進行驗證。該軟體必須是加密致能。 一執行於我們正在保護之VPN之一或更多伺服機器的軟 體元件,其中VPN位於企業保護網路内。這是由購買VPN 產品之一公司之IT部門來管理。 一執行於一授權裝置伺服器(可由除了該企業以外之單 位來管理)之軟體元件,其中該授權裝置伺服器連接至網際 網路,並可存取KID/DMK對之一資料庫。 一 MFCA概論受到提供以討論一強化之VPN從屬。從屬裝 置通常是一登記於一授權裝置之視窗機器。在登記之後, 從屬裝置具有一有效主金鑰。在一較佳實例中,雖然可使 用一純軟體之版本,但其具有韌體支援,其中本發明之加 密特點建構於BIOS ROM。此機器通常是由從屬VPN軟體之 使用者所擁有,其中該使用者想要經由VPN閘道器來存取 他公司之限制網路。 從屬通常經由一正規網際網路服務提供者(ISP)來存取 網際網路。此ISP與VPN閘道器間之網路不可信賴,所以該 二方間之通訊必須受到保護。VPN解決方案之主要目標是 提供自從屬裝置至VPN閘道器之端至端加密安全性。 MFCA從屬包含本發明所建構之加密核心技術與一從屬 O:\75\75061-920519.DOC -116- 589569 應用,其中該從屬應用與標準之VPN從屬軟體合作以建立 通往伺服器之安全鏈結。MFC A架構要求在VPN登錄之前機 器必須受到登記。從屬應用在其第一次執行期間查出是否 該從屬先前已受到登記。如果其先前未受到登記,則從屬 應用執行登記,且只有在此完成之後,其方繼續MFCA運 作之剩餘部份。 本發明提供一企業VPN閘道器與強力驗證模組(SAM)。 MFCA致能之企業具有一附著於網際網路與企業保護網路 間之VPN閘道伺服器。 VPN通常包含一些機器,其中該等機器彼此合作以許可 存取及阻塞不可信任之流量。通常他們與一防火牆一起工 作。重要之機器是VPN閘道器與強力驗證模組(SAM)伺服 器。 SAM位於公司網路以内,且基本上是可信任的。在某些 情形中,這意謂VPN閘道器與SAM伺服器間之通訊無需受 到加密。該二機器之一簡單安全檢查是檢查另一機器之IP φ 位址,其中公司網路内所執行之選徑是可信任的。 SAM是與VPN閘道器進行互動之伺服器軟體,以許可一 特定使用者與裝置對於内部網路之存取。其可存取註冊裝 置之一“資料庫”,其中該等註冊裝置將獲准進行存取。SAM 碼與資料庫間之介面應儘量開放,以允許置放不同之資料 庫建構於其之下(例如藉由使用ODBC或LDAP)。應注意 SAM與資料庫之連結,其中該連結可使用安全插孔層(SSL) 協定來建構。 O:\75\75061-920519.DOC -117- 589569 SAM包含密封及解開AppContainer之碼。SAM伺服器也 可包含執照策略之追蹤(裝置存取網路權利之到期,允許進 入之裝置之數目等)。加密函式可藉由BIOS-ROM與純軟體 型態來提供。 除了該等機器以外,額外之硬體及/或軟體可與閘道器與 SAM合作以決定是否一裝置/使用者對是否應獲准進行存 取(二因數驗證之第一部份)。業界使用多種標準與產品以 執行此函式,其中包含RADIUS伺服器,RADIUS伺服器可 存取使用者名稱及密碼之資料庫,與各種系統,來決定以 策略為基礎之存取權利。 SAM元件也可用以實施一軟體發照方法。SAM元件通常 是由擁有VPN之企業之IT部門,而非任何其他單位,來管 理。但是,其可與另一單位具有一信任關係,其中該單位 販賣使用MFCA軟體之權利給該企業。 發照策略將企業之總體帳戶,或個別從屬帳戶(例如某人 可能遺失他的膝上型電腦,且我們必須刪除該裝置),之到 期日期列入考慮。SAM根據系統管理者所設定之策略來建 構該等啟動與到期。 執照可以將獲准存取資料庫之裝置之最大數目為基礎。 執照函式週期性審核及追蹤何事發生。這可能包含SAM以 週期性之方式傳送資訊至一廠商專屬位置。執照管理最好 是藉由一遠端網路型工具來執行。 應用註冊模組(ARM)是一曝露服務給不同企業之SAM之 網際網路伺服器。其之目標是在一特定裝置註冊於一特定 O:\75\75061-920519.DOC -118- 企業期間協助該從屬與SAM。最終之結果是提供適當之 App Key給SAM,以密封及解開正受到註冊之裝置之包含 器。 對於每一種裝置/企業組合,在一稱為“MFCA註冊”之程 序中此運作只需執行一次。應用註冊模組伺服器包含與一 後端資料庫進行通訊之一些前端伺服器-假設,但不一定, 是網路伺服器-其中該後端資料庫保存資訊以描述當時之 不同公司之有效執照,他們之預期憑證為何等。 執照實施可在此處執行。一特定企業之註冊使用者數目 之基本追蹤是一範例。應用註冊模組伺服器執行執照實施 與執照記錄及審核,但不追蹤個別登錄。應用註冊模組也 可存取一授權裝置“加密伺服器”,其中加密伺服器儲存在 登記程序中所產生之KID/DMK表。一網路型遠端介面處理 該等企業帳戶。 做為應用註冊模組之一強化公用程式,資料輸入項是藉 由一網路介面(訂購管理器)來自動化,以允許轉賣者,通 路夥伴,與IT管理者輸入適當之資訊,來致能SAM與中央 ARM資料庫之相互合作。列於下表之該等程序參與前述工 作0 程序名稱 說明 MFCA訂購 產生一 SAM之執照資訊之 程序。販售執照之業務人 員藉由登錄於一授權裝置 擁有之伺服器來啟始訂購 O:\75\75061-920519.DOC -119- 程序,其中該伺服器稱為 訂購管理器。業務人員輸 入關於購買SAM之公司之 資訊··需要多少SAM,SAM 從屬憑證,與其他資訊等。 此程序之輸出是一訂購資 訊檔案(SIF)與一從屬憑證 (請參看憑證)。 登記 一從屬裝置藉由此程序來 獲得一 SMK及能夠使用加 密服務。此程序涉及從屬裝 置與授權裝置登記伺服器。 登記要求從屬裝置包含加 密核心函式,於BIOS或模 仿 API。 MFCA註冊 一從屬裝置藉由此程序來 受到註冊以使用一特定企 業之VPN之服務。這涉及從 屬,SAM伺服器,及一些 與ARM伺服器之互動。 註冊要求從屬裝置已先前 執行登記於授權裝置。 此註冊之最終目標是提供 適當之App Key給S AM,以 O:\75\75061-920519.DOC -120- 密封及解開該等將與從屬 裝置 互換之 App Container ° 登錄 一從屬裝置藉由此程序來 存取一企業之内部網路。這 是MFCA想要達成之最終 服務。登錄涉及從屬裝置與 SAM伺服器間之一些互 動,但是無需與授權裝置進 行額外互動。 SAM伺服器必須驗證從屬 裝置,以做為一與VPN閘通 道之二因數驗證之第二階 段。其使用 App Container 來執行此項工作。 589569 除了前述程序以外,VPN從屬,SAM伺服器,與ARM伺 服器必須配置成為能夠成功傳出適當之App Key。 註冊程序涉及下列二步驟:(1) 一 App Key自授權裝置傳 送至我們之公司之SAM,其中該App Key與一特定機器合 作;與(2)傳送顧客秘密(Customer Secret)自SAM祠服器至 從屬,其中顧客秘密產生顧客App Key。
App Key是下列事項之一函數:(1)正受到註冊之機器之 DMK(只有授權裝置與機器本身知道私密主金鑰);與(2)應 用(在此情形中是VPN從屬應用)之作業系統驅動程式。 O:\75\75061-920519.DOC -121 - 589569
App Key是下列加密運作之結果:
AppKey=truncl28(SHAl(DMK||ACD))。 SAM伺服器產生一額外之128位元秘密,顧客秘@,其中 顧客秘密不為其他授權裝置所知,並利用下^ ^ _ m 顧客 App Key :
Customer AppKey=trunc 128(SHA 1 (^PP^eY | (Customers ecr et))。 SAM飼服器儲存此值(或任選地,分別儲存App Key與顧 客秘密),且傳送顧客秘密至從屬。從屬記錄此秘密(雖然 這不是如同DMK —般之“大秘密”)。SAM也傳送一密封之 App Container至從屬,其中可儲存一用於登錄計數器機制 之啟始值。在另一實例中,一安全挑戰/回應機制取代登錄 計數器機制。 登錄之程序是以App Container為基礎。從屬解開其先前 接收之App Container,遞增登錄計數器,解開包含器,並 傳送包含器至VPN閘道器以做為VPN驗證協定之一部份。 SAM伺服器取得此包含器,開啟該包含器,比較登錄計數 器與最後一記錄值。如果其屬於可接受之範圍,則其將允 許呼叫之從屬存取企業之内部網路。 在登錄之另一程序中,從屬接收一來自VPN閘道器之隨 機挑戰值,解開其先前接收之App Container,藉由一單向 函數(通常使用一加密雜湊函數,例如SHA1)來結合顧客秘 密及挑戰值,並送回該單向函數之結果至VPN閘道器以做 為VPN驗證協定之一部份。 O:\75\75061-920519.DOC -122- SAM伺服器取得此結果,並比較其與其本身之挑戰值及 顧客秘密之單向函數的計算結果。如果SAM伺服器之計算 結果匹配從屬之結果,則VPN閘道器將允許呼叫之從屬可 存取公司之内部網路。 MFC A之特定建構可針對特定之VPN軟體產品。一些VPN 廠商提供API以允許其他公司特製他們之產品於從屬,以及 於伺服器。該等廠商也可具有已受到撰寫以與該等API進行 互動之軟體之憑證程式。MFCA可藉由VPN廠商產品之一附 加型態或整合型態來傳遞。 30.詳細登記程序 登記是MFCA安裝之一先決條件。從屬裝置必須具有核 心加密系統,其中包含作業系統驅動程式(OSD),一存取 BIOS及硬體之低階驅動程式,且該裝置必須已受到登記及 已儲存一有效主金瑜。 登記運作可受到執行以做為VPN軟體安裝之一部份。換 句話說,如果當從屬第一次嘗試存取VPN時從屬裝置尚未 登記,其可在該處及在該時執行登記。當他第一次啟始從 屬應用時,這將發生以做為最初使用者經驗之一部份。無 需來自使用者之輸入。 從屬設定涉及使用者接收軟體,該軟體包含MFCA VPN 從屬,且該MFCA VPN從屬可為一現存VPN從屬之強化型 態,其中包含用於MFC A設定及MFC A致能登錄驗證之額外 碼。最好VPN廠商之從屬SDK所提供之API應允許MFC A碼 靜態鏈接他們之各種庫。理想上,MFCA產品之所有相關 O:\75\75061-920519.DOC -123- 部份皆是屬於其之ACD受到計算之範圍。 伺服器設定程序現在將受到討論。強力驗證模組(SAM) 組態:設定使用者/裝置帳戶。這通常是由企業系統管理者 來執行。SAM與VPN及/或與驗證伺服器進行互動。在此處 一些選項可供選擇。 SAM可為一現存之驗證伺服器之插入器。驗證伺服器與 SAM間之介面是一 API。SAM是一傾聽某一埠之伺服器,以 瞭解一特製協定或RADIUS。驗證伺服器與SAM間之介面是 一網路協定。 VPN與RADIUS伺服器也是高度可供配置,以允許一些組 態。視策略,使用者名稱與密碼等而定,RADIUS伺服器(如 果存在的話)驗證從屬。 SAM負責裝置之驗證。一簡單實例包含一獨立之 RADIUS伺服器,且可用以與閘道器,或充當代理器之另一 驗證伺服器,直接對話。組態使用者介面(UI)將無關於任 何其他驗證伺服器。 VPN閘道器/RADIUS伺服器組態。管理者配置一使用者 名稱/密碼對。這將是使用者用以登錄之“永久”使用者名稱 /密碼對。此程序未涉及任何授權裝置,且是無關於MFCA 之“一般”單因數組態。 SAM組態。管理者配置一使用者名稱,應用裝置識別 (ADID),與註冊密碼。在其他實例中,管理者也可產生使 用者與裝置間之關聯性以顯示有效組合,並限制使用者自 特定機器執行驗證。 O:\75\75061-920519.DOC -124- 589569 應用裝置識別(ADID)是一人員可讀取型公開名稱,在每 一企業内是一獨特值,但跨企業則不一定是獨特的。註冊 密碼是由系統管理者來產生。其必須是一真正之隨機號碼。 在另一實例中,吾人可使用金鑰識別以做為一獨特之辨 識碼來取代ADID。但是,實際上吾人誤信一通用“獨特辨 識碼”之概念,所以較佳實例使用一 IT管理者所選擇之一分 別ADID。所有儲存於SAM資料庫之密碼皆受到雜湊化。 此架構所述之模型意謂使用者之資料庫與伺服器之資料 庫是分離的。這具有下列結果:存在於使用者資料庫之任 何使用者將可利用存在於裝置之資料庫之任何裝置來驗 證。未對於特定使用者與特定機器之鏈接實施限制。 MFCA註冊(第一連結)。使用者自其之企業之IT部門取得 一使用者名稱/密碼對與一 ADID/註冊密碼對。使用者之經 歷展示如下。 使用者執行一安裝應用。這是一通屬之視窗安裝。如果 從屬未受到登記,則登記運作受到執行。安裝程式提示一 些資料給使用者,其中該等資料將向VPN表明該使用者。 使用者名稱/密碼是用於正常登錄,而ADID/註冊密碼則是 用於註冊。 使用者第一次進行連接,VPN閘道器/RADIUS驗證使用 者名稱/密碼對,並檢查目前之策略以允許他進入。SAM註 冊該裝置於外部ARM伺服器,並配置其本身。如果每一件 事皆成功,則使用者將進入VPN。 在後續之登錄中,使用者將不再需要輸入他的ADID/註 O:\75\75061-920519.DOC -125- 589569 冊密碼。從屬VPN App應只提示一使用者名稱與密碼給使 用者。從屬記住ADID,App Container之位置,與其自伺服 器所接收之顧客秘密。 總體伺服器互動流程展示如下。請參看圖4,其是一展示 MFCA註冊之方塊圖。 從屬應用使用已存在之VPN協定來向VPN閘道器提出第 一個請求。VPN閘道器以一般方式利用RADIUS伺服器來檢 查使用者名稱與密碼對,其中RADIUS伺服器使用已存在之 驗證方法。VPN閘道器接著決定是否從屬需要註冊於S AM 伺月艮器。VPN閘道器轉送該請求至SAM伺月艮器。 該請求包含:(1)未加密之ADID,(2)利用適當授權裝置 伺服器之通訊公開金鑰來加密之一 PubK Container,其中包 含企業名稱/URL,與App之ACD (或辨識ARM資料庫之ACD 之一識別)。 SAM無法解密PubK,所以其傳送PubK至ARM伺服器。此 連結必須提供SAM之某種驗證給應用註冊模組。在一 HTTPS建構中,一授權裝置發出之憑證呈現給SAM伺服 器,且反之亦然,其中憑證是在開啟授權裝置之帳戶之程 序期間受到建立。 應用註冊模組使用通訊金鑰之私密位元來開啟PubK Container,並利用新裝置ADID來更新其之内部表,如果必 要的話。應用註冊模組利用其之資料庫來檢查該企業,以 找出是否其具有一有效執照。如果每一件事都成功,則應 用註冊模組具有從屬裝置之金鑰識別,所以其找到DMK, O:\75\75061-920519.DOC -126- 589569 且計算給定之ACD之App Key。其接著傳回此App Key至 SAM,以一安全方式(可能使用HTTPS連結之回應)。 SAM相對於ADID來儲存App Key,利用App Key與顧客 秘密之一新隨機值來建造顧客App Key (或另外SAM可直 接儲存此顧客App Key並忘記此App Key),並建造最初之 App Container,以儲存最初之128位元登錄計數器(其之最 初值可為註冊密碼)與企業名稱/URL於該處。 S AM密封AppContrainer,並傳送其與顧客秘密回到(可能 藉由VPN閘道器)從屬。此App Container無需以加密方式傳 送至從屬。其之可見與否並不會造成任何傷害。因為包含 器將具有錯誤之計數器值,所以一竊聽者無法記錄其並傳 送其至祠服器以嘗試及存取VPN。 VPN閘道器接收來自SAM伺服器之許可,且現在允許從 屬存取内邵企業網路。從屬儲存App Container與顧客秘密 於一為眾所知之處。 應用注冊模組傳出App Key,但是我們不知道顧客秘密與 登錄計數器之最初值―只有SAm知道他們。這可使MFCA致 能之企業確保,雖然一授權裝置有助於提供安全性,但是 其播法假裝成為—從屬裝置,並在無授權之下進入企業。 從屬裝置。一對話視窗要求使用者名稱與密碼,與企業 /URL識別。因為系統記住ADID,所以使用者無需再度輸入 ADID °從屬機器以正常方式來接觸vPN閘道器,及驗證使 用者名稱/密碼(藉由RADIUS或任何方式)。 VPN閘道器發現從屬要求額外驗證,且要求其驗證本 O:\75\75061-920519.DOC •127- 589569 身。從屬解開其之App Container (藉由使用顧客App Key, 其中顧客App Key是利用App Key與儲存之顧客秘密來計 算),遞增登錄計數器(128位元,不可為負的),再度密封其 並傳送其至閘道器,伴隨著未加密之ADID。一旦VPN閘道 器具有App Container,則其傳送App Container至SAM祠服 器以進行驗證。從屬等候完成。如果閘道器送回一錯誤, 則其將以使用者之語了來提示使用者。如果每一件事皆成 功,VPN軟體可開始運作。 強力驗證模組(SAM)接收一來自VPN閘道器之驗證請 求’伴隨著從屬之ADID與其之App Container。其使用AD ID 做為索引來尋找顧客App Key與計數器之預期值。其使用顧 客 App Key來解開 App Container。 其檢查一計數器與額外資訊。SAM應允許一範圍之計數 态。如果(Cexpected <= Cactual < Cexpected + 10),則驗證 成功。此項工作之目標是涵蓋下列情形:當封包自從屬至 伺服器期間遺失(例如一使用者輸入“retry,,按鈕許多次)。 如果此檢查逸出範園,則一錯誤發生。其傳送一錯誤碼, 與錯誤參數。如果其是一成功,則其儲存新計數器,並傳 送“驗證成功”訊息至VPN閘道器。錯誤受到記錄,且一報 告週期性呈現給系、统管運纟。SAM可在特殊情況下警示管 理者例如u ^ &旨試連接失敗之情形中,而此可能顯 示某人正在嘗試攻擊。 系統是设计成為防衛—主要之威脅模型,其中一不可信 任之軟體應用導致W及/或㈣之私密金鑰之損壞或激
O:\75\75061-920519.DOC -128- 用。在運用SMI與其他相關硬體機制之較佳實例中,此威 脅模型受到延伸,且系統進一步保護金鑰以防備執行於“零 環”之不可信任程式,基本上是作業系統本身之某些部份。 威脅模型,攻擊與回復。下文是一些辨識之威脅,他們 之範圍,與系統如何解決他們之討論。 一竊聽者偷竊App Key。一竊聽者可傾聽ARM/SAM通訊 及偷竊App Key。但是,其將無法假裝成為一從屬,因為其 也需要至少顧客秘密與VPN計數器之啟始值。 遭竊之App Key與顧客秘密。假設駭客竊取App Key與顧 客秘密,可能是因為他已潛入一公司並偷取ADID資料庫内 之所有資料。如果該偷竊受到偵出,則此可藉由再註冊機 器以產生一新顧客秘密(雖然App Key無法更改)來解決。如 果企業保留App Key,則其可能無需再度註冊。 威脅減緩。本發明之較佳實例之安全好處的硬體型鏈在 純軟體之實例中可能不存在。 本發明之較佳實例是設計成為沒有以軟體為基礎之逆向 推導工具可破解他。另外,一以硬體為基礎之攻擊無法使 得可敵人破解其他實體上位於遠端之機器。此保護是藉由 使用CPU之系統管理模式(SMM)來達成。 自SMM以内,軟體之下一層(亦即使用加密致能BIOS之 作業系統驅動程式(OSD))受到驗證是否受到竄改。此OSD 碼是設計成為竄改突顯--在不被SMM碼偵出之下,OSD碼 無法受到修改以使一惡性應用可使用OSD碼。此驗證之作 業系統驅動程式接著檢查是否應用尚未受到修改。 O:\75\75061-920519.DOC -129- 589569 若要當主金鑰之安全儲存位置不可供使用時,或當安全 儲存機制可供使用,但未皆具有高度之保證時,使得攻擊 氣餒,則DMK將分裂成為許多部份以儲存於多個位置。同 時,藉由使用Shamir之私密共享方法,得到DMK可能只需 要一有限數目之部份。 另外,金鑰部份可利用一金鑰來加密,其中該金鑰是以 裝置結合特性之一為基礎(例如驅動程式序列號碼,圖形卡 驅動程式版本等)。因為裝置特性金鑰可很小或可以預測, 所以加密是選擇成為基於金瑜之大小,藉由疊代式加密運 作,解密需要花費大量時間。 每一次當DMK受到要求時,DMK部份皆受到重新檢視。 接合之DMK將藉由一指標在記憶體中受到參考,其中該指 標在每一次接合中參考一新記憶體位置。每一次當DMK部 份受到接合時,必須檢查以查看是否該等部份之一些部份 是不良的。追蹤裝置結合資訊之先前值允許一不良部份之 偵出。如果發現一無效之部份,則DMK受到重新分配。 DMK/裝置結合。本發明之純軟體實例之一要求是能夠偵 測何時已嘗試移動一主金瑜與其之App Container至一新機 器。若要偵出此種移動,該機器之某些特徵受到記錄。當 該等特徵之一些特徵同時改變時,純軟體系統偵出此變化 並對其採取行動。 限制之主金鑰與會議金鑰曝露。當使用DMK與會議金鑰 於任何運作時,此設計限制該等金鑰之曝露。在較佳實例 中,藉由使用當在SMM以外執行時不可使用之記憶體,所 O:\75\75061-920519.DOC -130- 有此種運作皆是在SMM中執行。 公開金鑰完整性。在簡單之實例中,公開金鑰受到包含 及編譯於作業系統驅動程式。該等公開金鑰是相同於BIOS 所包含之公開金鑰。 VPN從屬與TCP/IP堆疊之互動如下。從屬VPN負責下列 服務:VPN從屬之組態,VPN閘道器之驗證,與傳送至内 部企業網路之封包之加密。VPN從屬之主要工作,一旦登 錄程序完成,是檢視傳送至網路之封包,以找出是否他們 係針對一正常之網際網路機器,或針對企業網路。 從屬檢視目的地IP位址。如果封包係針對網際網路之一 機器,則其繼續且未受到修改。如果封包係針對VPN閘道 器後之企業網路,則從屬加密封包,並(有時候)執行某種 位址轉譯。 從屬堆疊是一層化結構,例如TCP堆疊/UDP堆疊,NDIS 介面(設定會配置此介面),IPSec (通常使用DES與3DES, 而前述加密是在某種啟始協商之後建立之對稱型加密),與 再一次NDIS。接收封包之VPN閘道器將移除加密,且接著 該等封包在網路以内將是未加密的。 在一使用SPEKE之較佳實例中,從屬與閘道器皆產生一 新金鑰,其中該新金鑰關聯於驗證之使用者識別。此金鑰 可用以增強驗證動作與VPN會議金鑰之結合性。 在前文之許多地方,可用於本發明之架構之許多變型受 到描述。該等變型包含(1)結合使用者至裝置,且其使用管 理者之強化策略以定義使用者與裝置之有效特定組合;(2) O:\75\75061-920519.DOC -131 - 589569 從屬及閘道器之間,閘道器及驗證伺服器之間,與驗證伺 服器及強力驗證模組之間,之密碼的加密;(3)使用一挑戰 /回應機制,而非使用一登錄計數器;與(4)包裝從屬安裝於 一整合包裹以内,且其可自一網站受到安裝。 因此’提供電腦裝置驗證之系統與方法已受到揭示。應 可瞭解前述實例只是用以展示許多特定實例之一些實例, 中乂等只例代表本發明之原理之應用。明顯地,在不脫 離本發月之_之下,熟悉本技術領域者可輕易設計極多 其他配置。
O:\75\75061-920519.DOC 132- 表1
AppContainer 結構 偏移 大小 欄位名稱 說明 0x00 1位元組 OpCode 顯示資料欄位之内容與格式。 0x01 1位元組 Format FmtAppContainer=2 0x02 4位元組 Reserved 0。這將用於未來之延伸運作碼資 訊。 0x06 2位元組 Length 自AppCodeDigest欄位至(包含)資 料欄位之位元組之計數。在密封運 作之後但在密文置換之前之位元 組計數。包含自ACD至(包含)Pad 欄位之欄位之計數。 0x08 20位元 組 AppCodeDiges t (ACD) 已藉由Encl60Bits原始指令來加密 之擁有碼之SHA-1摘要的結果。 Oxlc 16位元 組 Initialization Vector 加密區塊鏈接(CBC)模式乏'啟 始化向量。IV是由OSD安全模組來 傳送。 、 0x2c 20位元 組 SealerCode Digest(SCD) 密封此包含器之程式碼之SHA1摘 要的結果,其中該程式密封此包含 器。如果包含器是由授權裝置伺服 器來密封,則SCD設定成為零。如 果程式獲得授權可轉移包含器至 此結果,則其也可為另一程式之摘 要。SCD是由OSD安全模組來傳 送。 0x40 0-4096 位元組 Data 具有OpCode決定之一格式之資料。 可變 20位元 組 MAC HMAC加密原始指令 =HMAC(NewKey (Key , UsageAppMac),Payload) 可變 1-16[1] 位元組 Pad Pad位元組之數目是設定成為確保 Plaintext是16位元組之整數倍。每 一墊充位元組具有一等於Pad緩衝 區之塾充位元組數目之值。 --------—----——------- O:\75\75061-920519.DOC -133- 589569 表2 在OSD Ap^Container密封期間之結j修改 爛位名稱 在傳送至SMI層之前之 OpCode 顯TF資料欄位之内容與格式 -- Format FmtAppContainer=2 Reserved 0。這將用於未來之延伸運作碼資訊。 Length 自AppCodeDigest搁位至(包含)資料欄位之 位元組之計數。 、 AppCodeDigest(AC D) 已藉由Encl60Bits原始指令來加密之擁有 碼之SHA1摘要的結果 Initialization Vector(IV) 加密區塊鏈接(CBC)模式之隨機啟始化向 量。 SealersCode Digest(SCD) 密封此包含器之程式碼之SHA1摘要的妹 果。通常SCD等於ACD。如果程式獲得授;^ 可轉移包含器至此結果,則其也可為另一程 式之摘要。 Data 具有OpCode所決定之一格式之資料。 MAC 空白。 Pad 空白。 表3 在SMI AppContainer密封期間之結構修改 欄位名稱 SMI密封階段I。 OpCode 顯示資料攔位之内容與格式。 Format FmtAppContainer=2 〇 Reserved 0。這將用於未來之延伸運作碼資訊。 Length 在密封運作之後但在密文置換之前之位 元組計數。包含自ACD至(包含)Pad欄位 之計數。 AppCodeDigest(ACD) 已藉由Enc 160Bits原始指令來加密之擁有 碼之SHA1摘要的結果。 Initialization Vector(IV) 加密區塊鏈接(CBC)模式之隨機啟始化向 量。 SealersCodeDigest(SC D) 密封此包含器之程式碼之SHA1摘要的結 果。通常SCD等於ACD。如果程式獲得授 權可轉移包含器至此結果,則其也可為 另一程式之摘要。 Data 具有OpCode所決定之一格式之資料。 O:\75\75061-920519.DOC -134- 589569 MAC HMAC 加 密 原 始 指 令 =HMAC(NewKey(Key,UsageAppMac), Payload) Pad Pad位元組之數目是設定成為確保 Plaintext是16位元組之整數倍。每一墊充 位元組具有一等於Pad緩衝區之墊充位元 組數目之值。 表4 最終密封結構 欄位名稱 SMI密封最後階段。 OpCode 顯示資料欄位之内容與格式。 Format FmtAppContainer=2 〇 Reserved 0。這將用於未來之延伸運作碼資訊。 Length 在密封運作之後但在密文置換之前之位 元組計數。包含自ACD至(包含)Pad欄位 之計數。 AppCodeDigest(ACD) 已藉由Enc 160Bits原始指令來加密之擁有 碼之SHA1摘要的結果。 Initialization 加密區塊鏈接(CBC)模式之隨機啟始化向 Vector(IV) 量0 SealesrCodeDigest(SC 密封此包含器之程式碼之S H A1摘要的結 D) 果。通常SCD等於ACD。如果程式獲得授 權可轉移包含器至此結果,則其也可為另 一程式之摘要。 Data 具有OpCode所決定之一格式之資料。 MAC HMAC 加 密 原 始 指 令 =HMAC(NewKey(Key,UsageAppMac), Payload) Pad Pad位元組之數目是設定成為確保 Plaintext是16位元組之整數倍。每一塾充 位元組具有一等於Pad緩衝區之塾充位元 組數目之值。
O:\75\75061-920519.DOC -135- 表5 MKContainer 結構 偏移 大小 欄位名稱 說明 0x00 1位元組 OpCode 顯示資料欄位之内容與格式。 0x01 1位元組 Format FmtMKContainer 0x02 4位元組 Reserved 0。這將用於未來之延伸運作碼資 訊。 0x06 2位元組 Length 剩餘位元組之計數,自MSB開始。 在密封之包含器中,這包含Mac與 Padding位元組之長度。在解開之包 含器中,其未包含Mac或Padding位 元組長度(亦即其指定MKDigest至 Data之項目之總位元組長度)。 0x08 20位元 組 MKDigest 主金鑰之SHA1摘要之20位元組結 果。 Oxlc 16位元 組 Initialization Vector(IV) 加密區塊鏈接(CBC)模式之隨機啟 始化向量。IV是由OSD安全模組來 傳送。 0x2c 20位元 組 SealersCode Digest(SCD) 密封此包含器之程式碼之SHA1摘 要的結果’其中該程式密封此包含 器。如果包含器是由授權裝置伺服 器來密封,則SCD設定成為零。SCD 是由OSD安全模組來傳送。 0x40 0-64000 位元組 Data 具有OpCode決定之一格式之資料。 可變 20位元 組 MAC HMAC 加密原始指令 =HMAC(NewKey (Key , UsageMKMac),Payload) 可變 1-16 位 元組 Pad位元組之數目是設定成為確保 Plaintext是16位元組之整數倍。每 一墊充位元組具有一等於Pad緩衝 區之塾充位元組數目之值。 O:\75\75061-920519.DOC -136- 589569 表6 在OSD MKContainer密封期間之結構修改 欄位名稱 在傳送至SMI層之前之〇SD密封階段。 OpCode 顯示資料欄位之内容與格式。 Format FmtAppContainer Reserved 0。這將用於未來之延伸運作碼資訊。 Length 在密封運作之後但在密文置換之前之 位元組計數。包含自MKDigest至(包含) Pad欄位之計數。 MKDigest 主金鑰之SHA1摘要之20位元組結果。 Initialization Vector(IV) 加密區塊鏈接(CBC)模式之隨機啟始化 向量。 SealersCodeDigest(SCD) 密封此包含器之程式碼之SHA1摘要的 結果。 Data 具有OpCode所決定之一格式之資料。 MAC HMAC 加 密 原 始 指 令 =HMAC(NewKey(Key , UsageAppMac),Payload) Pad Pad位元組之數目是設定成為確保 Plaintext是16位元組之整數倍。每一勢 充位元組具有一等於Pad緩衝區之墊充 位元組數目之值。 表7 最終密封結構 搁位名稱 SMI密封最後階段。 OpCode 顯示資料欄位之内容與格式。 Format FmtMKContainer Reserved 0。這將用於未來之延伸運作碼資訊。 Length 在密封運作之後但在密文置換之前之 位元組計數。包含自MKDigest至(包含) Pad欄位之計數。 MKDigest 主金鑰之SHA1摘要之20位元組結果 Initialization Vector(IV) 加密區塊鏈接(CBC)模式之隨機啟始化 向量。 SealersCodeDigest(SCD) 密封此包含器之程式碼之S H A1摘要的 結果。 Data 具有OpCode所決定之一格式之資料。 O:\75\75061-920519.DOC -137- MAC HMAC 加 密 原 始 指 令 =HMAC(NewKey(Key , UsageAppMac),Payload) Pad Pad位元組之數目是設定成為確保 Plaintext是16位元組之整數倍。每一墊 充位元組具有一等於Pad緩衝區之塾充 位元組數目之值。 表8
SignedContainer結構 偏移 大小 欄位名稱 說明。 0x00 1位元組 OpCode 顯示資料欄位之内容與格式。 0x01 1位元組 Format FmtMKContainer 0x02 4位元組 Reserved 0。這將用於未來之延伸運作碼資訊。 0x06 2位元組 Length 剩餘位元組之計數,自MSB開始。在 密封之包含器中,這包含Mac與 Padding位元組之長度。在解開之包含 器中’其未包含Mac或Padding位元組 長度(亦即其指定MKDigest至Data之 項目之總位元組長度)。 0x08 20 位元組 PublicKeyDigest應用以驗證簽章區塊 之公開金鑰之SHA1摘要加密區塊鏈 接(CBC)模式之隨機啟始化向量。iv 是由OSD安全模組來傳送。 0x28 0-64000 位元組 Data 具有OpCode決定之一格式之資料。 可變 128位元組 SigRSABlo ck 當受到解開時,此欄位開始於設定成 為零之墊充,並結束於一20位元組摘 要值。此摘要是 Opcode||Format||Unsealed-Length||Publ ic KeyDigest||Data之SHA1摘要。此欄位 之密封版本是利用一私密金鑰來執行 RSA加密。 O:\75\75061-920519.DOC -138- 589569 表9 欄位名稱 nm~ ' -- OpCode 顯示資料搁位之内容與格式。 Format FmtSignedContainer Reserved 〇。這將用於未來之延伸運作碼資訊。 Length 剩餘位元組之計數,自MSB開始。解開之長度包含 PublicKeyDigest與Data,但不包含SigRSABlock。密 封之長度包含128位元組之SigRSABlock。 PublicKeyDigest 應用以驗證簽章區塊之公開金鑰之SHA1摘要。 Data 具有OpCode所決定之一格式之資料。 SigRSABlock 當受到解開時,此欄位開始於設定成為零之墊充, 並結束於一20位元組摘要值。此摘要是 Opcode||Format||Unsealed-Length||PublicKeyDigest|| Data之SHA1摘要。此欄位之密封版本是利用一私密 金鑰來執行RSA加密。
表10 具有嵌入之MKContainer之PubKContainer結構 偏移 大小 欄位名稱 說明 0x00 1位元組 OpCode 顯示資料欄位之内容與格式 0x01 1位元組 Format FmtPubKContainer 0x02 4位元組 Reserved 0。這將用於未來之延伸運作 訊。 、 0x06 2位元組 Length 剩餘位元組之計數,自 始。在密封之包含器中,這包含 Mac與Padding位元組之長度。在 解開之包含器中,其未包含Mae 或Padding位元組長度(亦即其栺 定在偏移###todo : get偏移之,目 之總位元組長度)。 0x08 5〇位元 組 PublicKeyDig est 公開金鑰(通常是伺服器通 鑰)之SHA1摘要之結果。 Oxlc 128位元 組 PubKRSABloc k 當受到解開時,此欄位開始 定成為零之塾充,並結束;^ Opcode||Format ||KID||MK。該等 欄位具有固定長度。當受到密_ 時,這是一 RSA加密值。Opc〇de 是前述之項目1 ,而#
O:\75\75061-920519.DOC -139- MKContainer之Opcode。如果第一 部份受到再使用,則 PubKRSABlock^. Opcode T tb ^ 匹配項目1,但是相對地可為一些 可接受之替代值之一,其中該等 替代值顯示該區塊之再使用。 開 始於偏移0x98之嵌入MKContainer +0x0 0 1位元組 OpCode 顯示資料欄位之内容與格式。 +0x0 1 1位元組 Format FmtMKContainer +0x0 2 4位元組 Reserved 0。這將用於未來之延伸運作碼資 訊。 +0x0 6 2位元組 Length 剩餘位元組之計數,自MSB開 始。解開之長度包含在偏移+0x04 至+0x3C之項目,然而密封之長度 包含在偏移之項目。 +0x0 8 20位元 組 MKDigest 儲存於PubKRSABlock第一部份 之主金鑰之SHA1摘要之20位元組 結果。 +0xlc 16位元 組 Initialization Vector(IV) 加密區塊鏈接(CBC)模式之隨機 啟始化向量。IV是由OSD安全模 組來傳送。 +0x2c 20位元 組 SealersCode Digest(SCD) 密封此包含器之程式碼之SHA1摘 要的結果,其中該程式密封此包 含器。如果包含器是由授權裝置 伺服器來密封,則SCD設定成為 零。SCD是由OSD安全模組來傳 送。 +0x4 0 0-64000 位元組 Data 具有OpCode決定之一格式 料。 可變 20位元 組 MAC HMAC加密原始指 =HMAC(NewKey (Key , UsageMKMac),Payload) 可變 1-16位元 組 Pad位元組之數目是設定成為確 保Plaintext是16位元組之整數 倍。每一墊充位元組具有一等於 Pad緩衝區之蟄充位元組數目之 值。 "—-. O:\75\75061-920519.DOC -140- 表11 取終密封PubKContainer結構 爛位名稱 說明 OpCode 顯示資料欄位之内容與格式。 Format FmtPubKContainer Reserved 0。這將用於未來之延伸運作碼資訊。 Length 剩餘位元組之計數,自MSB開始。在密封 之包含器中,這包含Mac與Padding位元組 之長度。在解開之包含器中,其未包含 Mac或Padding位元組長度(亦即其指定在 偏移###todo : get偏移之項目之總位元組 長度)。 PublicKeyDigest 公開金鑰(通常是伺服器通訊金鑰)之 SHA1摘要之結果。 PubKRSABlock 當受到解開時,此欄位開始於設定成為零 之墊充 , 並 結束於 Opcode||Format||KID||MK。該等欄位具有 固定長度。當受到密封時,這是一 RSA 加密值。Opcode是前述之項目1,而非 MKContainer之Opcode。如果第一部份受 到再使用,則PubKRSABlock之Opcode可 能不匹配項目1,但是相對地可為一些可 接受之替代值之一,其中該等替代值顯示 該區塊之再使用。 開始於偏移0x98之嵌入MKContainer OpCode 顯示資料欄位之内容與格式。 Format FmtMKContainer Reserved 0。這將用於未來之延伸運作碼資訊。 Length 剩餘位元組之計數,自MSB開始。解開之 長度包含在偏移+0x04至+0x3C之項目,然 而密封之長度包含在偏移之項目。..... MKDigest 儲存於PubKRSABlock第一部份之主金餘 之SHA1摘要之20位元組結果。 Initialization Vector(IV) 加密區塊鍵接(CBC)模式之隨機啟始化向 量。IV是由OSD安全模組來傳送。 SealersCodeDigest(SC D) 密封此包含器之程式碼之SHA1摘要的結 果,其中該程式密封此包含器。如果包: 器是由授權裝置伺服器來密封,貝ijSCD^ 定成為零。SCD是由OSD安全模組來^ O:\75\75061-920519.DOC -141 - 589569 送0 Data 具有OpCode決定之一格式之資料。 MAC HMAC 加密原 始指令 =HMAC(NewKey(Key,UsageMKMac), Payload) Pad Pad位元組之數目是設定成為確保 Plaintext是16位元組之整數倍。每一墊充 位元組具有一等於Pad緩衝區之塾充位元 組數目之值。 表12 最終密封PubKContainer結構 搁位名稱 說明 OpCode 顯示資料爛位之内容與格式。 Format FmtPubKContainer Reserved 0。這將用於未來之延伸運作碼資訊。 Length 剩餘位元組之計數,自MSB開始。在密封 之包含器中,這包含Mac與Padding位元組 之長度。在解開之包含器中,其未包含 Mac或Padding位元組長度(亦即其指定在 偏移###todo : get偏移之項目之總位元組 長度)。 PublicKeyDigest 公開金鑰(通常是祠服器通訊金鑰)之 SHA1摘要之結果。 PubKRSABlock 當受到解開時,此欄位開始於設定成為零 之墊充 , 並 結束於 Opcode||Format||KID||MK。該等欄位具有 固定長度。當受到密封時,這是一RSA加 密值。Opcode是前述之項目1,而非 MKContainer之Opcode。如果第一部份受 到再使用,則PubKRSABlock之Opcode可 能不匹配項目1 ’但是相對地可為一些可 接受之替代值之一,其中該等替代值顯示 該區塊之再使用。 開始於偏移0x98之嵌入MKContainer OpCode 顯示資料欄位之内容與格式。 Format FmtMKContainer Reserved 0。這將用於未來之延伸運作碼資訊。 Length 剩餘位元組之計數,自MSB開始。解開之 O:\75\75061-920519.DOC -142- 589569 長度包含在偏移+0x04至+0x3C之項目,然 而密封之長度包含在偏移之項目。 MKDigest 儲存於PubKRSABlock第一部份之主金鑰 之SHA1摘要之20位元組結果。 Initialization Vector(IV) 加密區塊鏈接(CBC)模式之隨機啟始化向 量。IV是由OSD安全模組來傳送。 SealersCodeDigest(SC D) 密封此包含器之程式碼之SHA1摘要的結 果,其中該程式密封此包含器。如果包含 器是由授權裝置伺服器來密封,則SCD設 定成為零。SCD是由OSD安全模組來傳 送。 Data 具有OpCode決定之一格式之資料。 — MAC HMAC 加 密 原 始 指 令 =HMAC(NewKey(Key,UsageMKMac), Payload) Pad Pad位元組之數目是設定成為確保 Plaintext是16位元組之整數倍。每一塾充 位元組具有一等於Pad緩衝區之墊充位元 組數目之值。
表13 最終密封結構 欄位名稱 SMI密封最後階段。 OpCode 顯示資料欄位之内容與格式。 Format FmtMKContainer Reserved 0。這將用於未來之延伸運作碼資訊。 Length 在密封運作之後但在密文置換之前之位 元組計數。包含自MKDigest至(包含)Pad 欄位之計數。 MKDigest 主金鑰之SHA1摘要之20位元組結果。 Initialization 加密區塊鏈接(C B C )模式之隨機啟始化向 Vector(IV) 量。 SealersCodeDigest(SC 密封此包含器之程式碼之SHA1摘要的結 D) 果。 Data 具有OpCode所決定之一格式之資料。 MAC HMAC 加 密 原 始 指 令 =HMAC(NewKey(Key,UsageAppMac), Payload)
O:\75\75061-920519.DOC -143- 589569
Pad Pad位元組之數目是設定成為確保 Plaintext是16位元組之整數倍。每一墊充 位元組具有一等於Pad緩衝區之墊充位元 組數目之值。 表14 12.5.2授權緩衝區 32位元 32位元 160位元 64位元 8位元 OSD服務啟 動之啟始位 址 OSD服務啟 動之區塊結 束位址 OSD服務啟 動區塊之區 塊碼摘要 特權向 量 完整性檢查 之頻率
表15 註冊應用表 32位元 32位元 160位元 64位元 程序識別 OSD服務啟動OSD服務啟動 區塊之啟始位區塊之碼摘要 OSD服務啟動 區塊之碼摘要 址
O:\75\75061-920519.DOC -144 -

Claims (1)

  1. 589569 I淨 頁 第090129539號專利申請案 中文申請專利範圍替換本(93年1月) 拾、申請專利範圍· 1. 一種用以儲存、使用及保護敏感資料之存取之系 統,包含: 非揮發性儲存器; 一.: 一隱藏之儲存位置; > 利用該敏感資料來推導之第一金鑰; 裝置,以阻止藉由執行於系統之正常運作模式 之程式來使用第一金鑰;與 裝置,以允許藉由執行於系統之一限制運作模 式之程式來使用第一金鑰。 HL援 。之 2.如申請專利範圍第1項之系統,其中敏感資料是 第一金输。 3. 如申請專利範圍第1項之系統,其中敏感資料是 藉由使用第一金鑰之一單向加密摘要函式之應用 來推導。 4. 如申請專利範圍第3項之系統,其中敏感資料是 自儲存於一儲存媒體之加密資料所擷取之第二 金鑰,其中加密之資料是利用一金鑰來加密,且 該金鑰是利用第一金瑜來推導。 5. 如申請專利範圍第1項之系統,其中一 ROM或快閃 ROM之韌體在系統啟始化程序中控制系統,其中 系統啟始化程序開始以回應一啟動或重置信號。 6. 如申請專利範圍第1項之系統,其中 非揮發性儲存器是非揮發性隨機存取記憶體,其 O:\75\75061 -930107. DOOLAN 589569
    中讀取與寫入存取是由一鎖存器來控制; 由於一回應啟動或重置事件之硬體函式,該鎖 存器在該系統啟始化程序之開端受到開啟,因而 致能系統對於非揮發性隨機存取記憶體之存 取;且 該鎖存器在系統啟始化程序之中受到關閉,因 而使得系統無法對於非揮發性隨機存取記憶體 進行存取,直到系統啟始化之下一次開始為止。 7. 如申請專利範圍第1項之系統,其中 該隱藏之儲存器位置是位於一系統管理隨機 存取記憶體,且執行於系統之正常運作模式之任 何程式皆無法存取該記憶體;且 該限制之運作模式是一系統管理模式,其中對 於系統管理隨機存取記憶體之存取受到允許。 8. 如申請專利範圍第1項之系統,其中 隱藏之儲存器限制成為只可由作業系統來存 取,且執行於系統之正常運作模式之任何應用程 式皆無法存取該儲存器;且 限制之運作模式是由一 CPU保護環來控制,以 預留來供作業系統軟體使用。 9. 一種用以隱藏一加密金鑰於儲存器之系統,其中 包含啟動軟體以: 自非揮發性儲存器讀取一金鑰; 關閉對於非揮發性儲存器之存取,以致存取無 O:\75\7506I-930107.DOOLAN 589569 法供使用直到下一系統重置為止;與 寫入藉由該加密金鑰來推導之敏感資料於一 隱藏之位址空間;且 其中只有執行於系統之一限制運作模式之一 程式可存取隱藏之位址空間之敏感資料。 10. —種藉由限制一裝置之應用程式之加密金鑰的 使用來控制該應用程式對於資料之存取之方 法,該方法包含: 提供為一加密處理模組所知之第一金鑰; 提供應用包含器資料結構,其中保存該應用要 存取之一加密密封型態之資料; 執行一加密守護函式,以計算該應用程式之一記 憶體内影像之一部份的一加密摘要,以計算該應用 之一加密摘要;與 藉由下列方式來執一加密處理模組之完整性檢 查:檢視應用包含器資料結構,加密摘要,與第 一金鑰,來決定是否該應用程式獲准解開資料之 加密密封型態。 11. 如申請專利範圍第10項之方法,進一步包含加密 處理模組執行一隱私運作,其中該隱私運作使用 一金鑰來加密或解密應用包含器資料結構之資 料之加密密封型態,該金鑰是藉由至少第一金鑰 與加密摘要來推導,且當資料之加密密封型態要 受到加密時,在加密受到執行之前,加密處理模 O:\75\7506l-930l07.DOaLAN -3- 589569 X .:多 ¥ 一:、」 組增加加密摘要至應用包含器資料結構。 12. 如申請專利範圍第10項之方法,進一步包含提供 一授權緩衝區,該授權緩衝區指定完整性檢查之 結果,且其中加密守護函式確認該應用程式獲得 允許可解開資料之加密密封型態。 13. 如申請專利範圍第10項之方法,其中完整性檢查 包含: 藉由加密摘要及第一金瑜來推導一加密變 數;與 使用該加密變數來檢查一儲存於應用包含器資 料結構之訊息驗證碼。 14. 如申請專利範圍第10項之方法,其中完整性檢查 包含: 使用一金鑰來解密該應用包含器資料結構所 推導之資料,其中該金鑰是利用第一金鑰來推導 以產生一合成值,與比較合成值及藉由加密摘要 所推導之資料;與 如果合成值相同於藉由加密摘要所推導之資 料,則允許存取資料之加密密封型態。 15. 如申請專利範圍第15項之方法,其中隱私運作包 含: 藉由加密摘要與第一金输來推導一加密變 數,其中該加密變數是用以解密或加密該應用包 含器資料結構之一部份。 O:\75\7506l-930I07.DOCVLAN 589569 16. 如申請專利範圍第15項之方法,其中加密變 藉由一雜湊函數之一或更多應用來推導,其 照一特定順序來申連該等相依值。 17. 如申請專利範圍第10項之方法,其中加密處 組之一部份在一系統管理中斷期間執行。 18. —種藉助於第二計算機器來為第一計算機 證一辨識裝置之一辨識應用程式之方法,其 一計算機器包含一驗證伺服器,且第二計算 包含一授權裝置,該方法包含: 在該辨識裝置之一系統管理中斷期間執 一加密登記運作,以產生一結果,且該結果 至該授權裝置; 在該辨識裝置之一系統管理中斷期間執 二加密登記運作,以處理該授權裝置所產生 值,且該值為該辨識裝置所接收; 在該辨識裝置之系統管理中斷期間執行 加密註冊運作,以產生一結果,且該結果傳 該驗證伺服器; 驗證伺服器執行第二加密註冊運作,以 一加密變數,且該變數受到儲存以用於驗證 期間; 在該辨識裝置之系統管理中斷期間執行 加密驗證運作,以產生驗證資料,且該驗證 傳送至該驗證伺服器;與 數是 中依 理模 器驗 中第 機器 行第 傳送 行第 之一 第一 送至 產生 方法 第一 資料 O:\75\75061 -930107. DOQLAN 589569 ' _他U 驗證伺服器使用至少加密變數對於驗證資料 所執行第二加密驗證運作,其中驗證資料是自該 辨識裝置接收,以決定驗證之結果。 19 一種為包含一驗證伺服器之另一計算機器進行下 列工作之方法,驗證一辨識裝置之一辨識應用程 式,或提供一第二因數以辨識該辨識裝置之一使 用者,該方法包含: 執行一登記程序,其中該登記程序包含與一授 權裝置及一驗證伺服器進行通訊,以產生一應用 包含器資料結構於該裝置,其中該應用包含器資 料結構在加密上關聯於該應用程式;儲存憑據資 訊,其中驗證伺服器儲存該應用包含器資料結構 之一加密變數; 解開儲存該等憑據之該應用包含器資料結 構; 修改該等憑據;重新密封該應用包含器資料結 構,其中該重新密封之至少一部份在執行該應用程 式之程式碼之相同CPU上發生於一 SMI期間; 傳送辨識資訊與重新密封之應用包含器資料 結構所推導之資料至驗證伺服器; 接收該辨識資訊與該應用包含器資料結構所 推導之資料; 使用該辨識資訊來尋找或計算一加密變數, 以解開該應用包含器資料結構; 0 ;\75\75061 -930107. CX)OLAN -6 - 589569 如果解開之應用包含器具有可接受之值,則驗 證該辨識應用程式與該辨識裝置;與 儲存一關聯於該應用包含器資料結構之金鑰。 20. —種產生及運用一或更多虛擬符記於一裝置之 系統,以達成下列目標至少其中之一:驗證,隱 私性,完整性,授權,審核,與數位權利管理, 其中該一或更多虛擬符記之每一符記皆具有一對應 之種類,且該系統包含: 針對每一該對應種類之虛擬符記之一應用程 式; 針對該對應種類之虛擬符記之每一虛擬符記之 一應用包含器;與 一加密守護元件,以計算一呼叫應用之一加密 摘要,其中該呼叫應用正在請求一加密處理元件 之加密服務; 其中加密處理元件是經由加密守護元件來存 取; 其中加密處理元件知道第一金鑰與一公開金鑰; 其中加密處理元件執行應用包含器資料結構 之加密密封及解密,其中加密運作之一部份是在 一系統管理中斷期間受到執行; 其中加密處理元件,藉由使用公開金鑰及一加 密轉摘要,檢查呼叫應用之碼或靜態資料之一部 0 :\75\75061-930107. DOQL AN 589569 份之數位簽章來檢查該呼叫應用之完整性,其中 該公開金鑰為加密處理元件所知; 其中加密摘要值包含該呼叫應用之記憶體内 影像之一部份的一新近計算加密雜湊;與 其中加密守護與加密處理元件 a) 利用第一金論與加密摘要來推導一金瑜, 以解開應用包含器資料結構; b) 使用推導之金鑰來檢查應用包含器資料結 構之訊息驗證碼,且如果訊息驗證碼是正確的, 則送回一錯誤;與 c) 使用推導之金鑰來解密應用包含器資料結 構之資料,並送回該資料至應用。 21. —種安全關聯一私密金鑰與一應用程式之方 法,其中該應用關聯於一裝置,且該方法包含: 產生一應用包含器,且該應用包含器包含藉由一 關聯於該應用程式與該裝置之金鑰來保護之私密金 瑜。 22. —種限制一電腦之一應用程式對於密封資料之存取 之系統,該系統包含: 位於該電腦之隱藏儲存器之第一金鑰; 一加密守護模組,且該模組執行於一限制模式及 計算該應用程式之一部份之一加密摘要; 一包含密封資料之應用包含器資料結構;與 一裝置,以決定是否允許該應用程式使用第一金 O:\75\7506I-930107.DOOLAN 589569 曹正#換頁 i 年3 日 鑰與加密摘要來存取密封資料。 23. 如申請專利範圍第22項之系統,其中該應用程式是 一作業系統核心之一部份。 24. 如申請專利範圍第22項之系統,其中在允許存取密 封資料之前,藉由應用包含器資料結構所推導之資 料是使用第一金鑰來驗證。 25. 如申請專利範圍第22項之系統,進一步包含一加密 處理模組,以藉由使用一金鑰加密或解密該密封資 料來執行一隱私運作,其中該金鑰是利用第一金鑰 與加密摘要來推導。 26. 如申請專利範圍第25項之系統,其中隱私運作,在 加密或解密該密封資料之前,增加加密摘要至該應 用包含器資料結構。 27. 如申請專利範圍第22項之系統,進一步包含一加密 處理模組,藉由以一加密金輪為基礎計算一訊息驗 證碼來執行一竄改偵測運作,其中該金鑰是利用第 一金鑰與加密摘要來推導。 28. 如申請專利範圍第27項之系統,其中加密金鑰是利 用自一群組選出之多個資料項目來推導,且該群組 包含: 第一金鑰; 加後、摘要, 一密碼;與 傳送至加密守護函式之一些值。 0 :\75\75061 -930107. DOOLAN -9 -
    589569 29. 如申請專利範圍第2 8項之系統,其是利 用一雜湊函式來推導。 30. —種強化之計算裝置,包含: 一處理器,且該處理器在一正常模式之下執行多個 應用程式; 一安全性核心,且該安全性核心執行於一限制模 式; 一金鑰,且當該處理器在限制模式之下執行時, 安全性核心方可存取該金鑰,其中安全性核心使用 該金鑰來驗證一計算裝置之一應用程式,及提供加 密安全資料以供該應用程式使用。 31. 如申請專利範圍第30項之強化計算裝置,其中該金 鑰關聯於該裝置。 32. 如申請專利範圍第3 1項之強化計算裝置,其中當該 加密安全資料移動至一不同裝置時,其將不可受到 存取。 33. 如申請專利範圍第30項之強化計算裝置,其中當該 包含器移動至一不同裝置時,其將無法正常運作。 34·如申請專利範圍第3 0項之強化計算裝置,其中該限 制模式是SMM。 35·如申請專利範圍第1項之系統,其中第一金瑜是一 供用於對稱型金鑰加密系統之共享金鑰。 36·如申請專利範圍第1項之系統,其中第一金鑰是一 供用於公開金鑰加密系統之私密金鑰。 Ο ;\75\75061 -930107. DOOLAN -10- 589569
    37. 如申請專利範圍第1項之系統,其中在3 2位元作業 系統環境中,正常運作模式是一核心模式與一使用 者模式之一。 38. 如申請專利範圍第1項之系統,其中限制運作模式 是系統管理模式。 39. —種存取一程式之一可執行記憶體内影像之完整性 的方法,其中該方法檢視該程式之位元組之一部 份,及使用完整性評估之結果來限制該程式對於加 密服務或資料之存取。 40. 如申請專利範圍第10項之方法,其中限制模式是 3 2位元作業系統之核心模式。 41. 如申請專利範圍第1 0項之方法,其中加密金鑰是利 用自一群組選出之多個資料項目來推導,且該群組 包含: 第一金餘; 加密摘要; 一密碼;與 傳送至加密守護函式之一些值。 42. 如申請專利範圍第3 0項之強化計算裝置,其中當該 包含器移動至一不同裝置時,其將無法正常運作。 43. 如申請專利範圍第3 0項之強化計算裝置,其中該限 制模式是SMM。 〇:\75\7506l-930!07.tX)aLAN -11 -
TW090129539A 2001-04-09 2001-11-29 Systems and methods for computer device authentication TW589569B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/829,074 US20030037237A1 (en) 2001-04-09 2001-04-09 Systems and methods for computer device authentication

Publications (1)

Publication Number Publication Date
TW589569B true TW589569B (en) 2004-06-01

Family

ID=25253451

Family Applications (1)

Application Number Title Priority Date Filing Date
TW090129539A TW589569B (en) 2001-04-09 2001-11-29 Systems and methods for computer device authentication

Country Status (5)

Country Link
US (2) US20030037237A1 (zh)
JP (1) JP2002312242A (zh)
KR (1) KR100879907B1 (zh)
CN (2) CN101114326A (zh)
TW (1) TW589569B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8155310B2 (en) 2004-08-12 2012-04-10 Cmla, Llc Key derivation functions to enhance security
TWI401583B (zh) * 2009-08-06 2013-07-11 Phison Electronics Corp 資料擾亂/解擾亂與資料處理方法及其控制器與儲存系統
TWI411933B (zh) * 2005-09-14 2013-10-11 Sandisk Technologies Inc 記憶卡控制韌體的硬碟機完整性確認
US8677504B2 (en) 2005-07-14 2014-03-18 Qualcomm Incorporated Method and apparatus for encrypting/decrypting multimedia content to allow random access
TWI659640B (zh) * 2017-11-16 2019-05-11 中華電信股份有限公司 結合區塊鏈技術之簽章系統、簽章方法及簽章驗證方法
TWI691858B (zh) * 2018-12-26 2020-04-21 技嘉科技股份有限公司 應用程式的驗證方法、電腦裝置及其主機板
US10778427B2 (en) 2017-11-23 2020-09-15 Alibaba Group Holding Limited Method and apparatus for encrypting and decrypting product information
TWI726573B (zh) * 2019-04-30 2021-05-01 開曼群島商創新先進技術有限公司 基於區塊鏈的資料壓縮、查詢方法及裝置和電子設備

Families Citing this family (415)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7103574B1 (en) * 1999-03-27 2006-09-05 Microsoft Corporation Enforcement architecture and method for digital rights management
EP1055990A1 (en) 1999-05-28 2000-11-29 Hewlett-Packard Company Event logging in a computing platform
EP1056010A1 (en) 1999-05-28 2000-11-29 Hewlett-Packard Company Data integrity monitoring in trusted computing entity
US6629822B2 (en) * 2000-11-10 2003-10-07 Parker Hannifin Corporation Internally supercharged axial piston pump
GB2376763B (en) * 2001-06-19 2004-12-15 Hewlett Packard Co Demonstrating integrity of a compartment of a compartmented operating system
GB2372592B (en) 2001-02-23 2005-03-30 Hewlett Packard Co Information system
GB2372595A (en) * 2001-02-23 2002-08-28 Hewlett Packard Co Method of and apparatus for ascertaining the status of a data processing environment.
GB2372594B (en) * 2001-02-23 2004-10-06 Hewlett Packard Co Trusted computing environment
US7068998B2 (en) * 2001-04-13 2006-06-27 Northrop Grumman Corp. Methodology for the detection of intrusion into radio frequency (RF) based networks including tactical data links and the tactical internet
US8218555B2 (en) * 2001-04-24 2012-07-10 Nvidia Corporation Gigabit ethernet adapter
KR100813944B1 (ko) * 2001-07-11 2008-03-14 삼성전자주식회사 디지털 권리 운영을 수행하기 위하여 휴대용 기기와컴퓨터 사이의 통신을 제어하는 방법
GB2378013A (en) * 2001-07-27 2003-01-29 Hewlett Packard Co Trusted computer platform audit system
US7181530B1 (en) * 2001-07-27 2007-02-20 Cisco Technology, Inc. Rogue AP detection
EP1282023A1 (en) * 2001-07-30 2003-02-05 Hewlett-Packard Company Trusted platform evaluation
GB2378272A (en) * 2001-07-31 2003-02-05 Hewlett Packard Co Method and apparatus for locking an application within a trusted environment
FR2829645A1 (fr) * 2001-09-10 2003-03-14 St Microelectronics Sa Protocole d'authentification a verification d'integrite de memoire
US20030053630A1 (en) * 2001-09-20 2003-03-20 International Business Machines Corporation Method and system for key usage control in an embedded security system
US7844683B2 (en) * 2001-10-10 2010-11-30 Juniper Networks, Inc. String matching method and device
US8935297B2 (en) * 2001-12-10 2015-01-13 Patrick J. Coyne Method and system for the management of professional services project information
US20030144970A1 (en) * 2001-12-10 2003-07-31 Coyne Patrick J. Project management database and method of managing project related information
US7681034B1 (en) 2001-12-12 2010-03-16 Chang-Ping Lee Method and apparatus for securing electronic data
USRE41546E1 (en) 2001-12-12 2010-08-17 Klimenty Vainstein Method and system for managing security tiers
US8065713B1 (en) 2001-12-12 2011-11-22 Klimenty Vainstein System and method for providing multi-location access management to secured items
US7921288B1 (en) * 2001-12-12 2011-04-05 Hildebrand Hal S System and method for providing different levels of key security for controlling access to secured items
US7380120B1 (en) 2001-12-12 2008-05-27 Guardian Data Storage, Llc Secured data format for access control
US7930756B1 (en) 2001-12-12 2011-04-19 Crocker Steven Toye Multi-level cryptographic transformations for securing digital assets
US7921284B1 (en) 2001-12-12 2011-04-05 Gary Mark Kinghorn Method and system for protecting electronic data in enterprise environment
US7783765B2 (en) * 2001-12-12 2010-08-24 Hildebrand Hal S System and method for providing distributed access control to secured documents
US10033700B2 (en) 2001-12-12 2018-07-24 Intellectual Ventures I Llc Dynamic evaluation of access rights
US10360545B2 (en) 2001-12-12 2019-07-23 Guardian Data Storage, Llc Method and apparatus for accessing secured electronic data off-line
US7631184B2 (en) * 2002-05-14 2009-12-08 Nicholas Ryan System and method for imposing security on copies of secured items
US7260555B2 (en) * 2001-12-12 2007-08-21 Guardian Data Storage, Llc Method and architecture for providing pervasive security to digital assets
US7562232B2 (en) * 2001-12-12 2009-07-14 Patrick Zuili System and method for providing manageability to security information for secured items
US7178033B1 (en) 2001-12-12 2007-02-13 Pss Systems, Inc. Method and apparatus for securing digital assets
US7921450B1 (en) 2001-12-12 2011-04-05 Klimenty Vainstein Security system using indirect key generation from access rules and methods therefor
US8006280B1 (en) 2001-12-12 2011-08-23 Hildebrand Hal S Security system for generating keys from access rules in a decentralized manner and methods therefor
US7565683B1 (en) * 2001-12-12 2009-07-21 Weiqing Huang Method and system for implementing changes to security policies in a distributed security system
US7950066B1 (en) 2001-12-21 2011-05-24 Guardian Data Storage, Llc Method and system for restricting use of a clipboard application
US20030126453A1 (en) * 2001-12-31 2003-07-03 Glew Andrew F. Processor supporting execution of an authenticated code instruction
CA2369304A1 (en) * 2002-01-30 2003-07-30 Cloakware Corporation A protocol to hide cryptographic private keys
US8176334B2 (en) 2002-09-30 2012-05-08 Guardian Data Storage, Llc Document security system that permits external users to gain access to secured files
US20030177364A1 (en) * 2002-03-15 2003-09-18 Walsh Robert E. Method for authenticating users
AUPS169002A0 (en) 2002-04-11 2002-05-16 Tune, Andrew Dominic An information storage system
US7487365B2 (en) * 2002-04-17 2009-02-03 Microsoft Corporation Saving and retrieving data based on symmetric key encryption
US7748045B2 (en) * 2004-03-30 2010-06-29 Michael Frederick Kenrich Method and system for providing cryptographic document retention with off-line access
US8613102B2 (en) * 2004-03-30 2013-12-17 Intellectual Ventures I Llc Method and system for providing document retention using cryptography
US20070253430A1 (en) * 2002-04-23 2007-11-01 Minami John S Gigabit Ethernet Adapter
US7366915B2 (en) * 2002-04-30 2008-04-29 Microsoft Corporation Digital license with referral information
KR20030087873A (ko) * 2002-05-10 2003-11-15 주식회사 마이엔진 컴퓨팅 장치의 인증/접근 제어에 사용되는 중요 상수값의보안 방법 및 그를 이용한 인증/접근 제어 방법
US7203844B1 (en) 2002-06-20 2007-04-10 Oxford William V Method and system for a recursive security protocol for digital copyright control
US8438392B2 (en) * 2002-06-20 2013-05-07 Krimmeni Technologies, Inc. Method and system for control of code execution on a general purpose computing device and control of code execution in a recursive security protocol
JP4007873B2 (ja) * 2002-07-09 2007-11-14 富士通株式会社 データ保護プログラムおよびデータ保護方法
US7512810B1 (en) * 2002-09-11 2009-03-31 Guardian Data Storage Llc Method and system for protecting encrypted files transmitted over a network
US7426382B2 (en) * 2002-10-09 2008-09-16 Motorola, Inc. Contact validation and trusted contact updating in mobile wireless communications devices
US7836310B1 (en) 2002-11-01 2010-11-16 Yevgeniy Gutnik Security system that uses indirect password-based encryption
US7698550B2 (en) * 2002-11-27 2010-04-13 Microsoft Corporation Native wi-fi architecture for 802.11 networks
US20040117318A1 (en) * 2002-12-16 2004-06-17 Grawrock David W. Portable token controlling trusted environment launch
US7890990B1 (en) 2002-12-20 2011-02-15 Klimenty Vainstein Security system with staging capabilities
US20040139198A1 (en) * 2003-01-15 2004-07-15 Jose Costa-Requena Method and apparatus for manipulating data with session initiation protocol
US7210034B2 (en) * 2003-01-30 2007-04-24 Intel Corporation Distributed control of integrity measurement using a trusted fixed token
ATE391990T1 (de) * 2003-01-31 2008-04-15 Nds Ltd Vorrichtung zur benutzung einer virtuellen chipkarte
US7379548B2 (en) * 2003-01-31 2008-05-27 Nds Limited Virtual smart card device, method and system
US7017051B2 (en) * 2003-02-24 2006-03-21 Bea Systems, Inc. System and method for enterprise authentication
US7370212B2 (en) 2003-02-25 2008-05-06 Microsoft Corporation Issuing a publisher use license off-line in a digital rights management (DRM) system
US7574604B2 (en) * 2003-03-04 2009-08-11 Sony Corporation Network device registration
US20040257219A1 (en) * 2003-04-16 2004-12-23 Spiess David M. Computer security alert system
GB0310411D0 (en) * 2003-05-07 2003-06-11 Koninkl Philips Electronics Nv Electronic device provided with cryptographic circuit and method of establishing the same
US8095783B2 (en) 2003-05-12 2012-01-10 Phoenix Technologies Ltd. Media boot loader
US8707034B1 (en) 2003-05-30 2014-04-22 Intellectual Ventures I Llc Method and system for using remote headers to secure electronic files
US7475254B2 (en) * 2003-06-19 2009-01-06 International Business Machines Corporation Method for authenticating software using protected master key
US20050010752A1 (en) * 2003-06-23 2005-01-13 Nokia, Inc. Method and system for operating system anti-tampering
US7730543B1 (en) 2003-06-30 2010-06-01 Satyajit Nath Method and system for enabling users of a group shared across multiple file security systems to access secured files
US8271797B2 (en) * 2003-07-14 2012-09-18 Sony Corporation Service use method and management method
US7590837B2 (en) * 2003-08-23 2009-09-15 Softex Incorporated Electronic device security and tracking system and method
EP3043232A1 (en) 2003-08-26 2016-07-13 Panasonic Intellectual Property Corporation of America Program execution device
US8127366B2 (en) * 2003-09-30 2012-02-28 Guardian Data Storage, Llc Method and apparatus for transitioning between states of security policies used to secure electronic documents
US7703140B2 (en) * 2003-09-30 2010-04-20 Guardian Data Storage, Llc Method and system for securing digital assets using process-driven security policies
US20050086531A1 (en) * 2003-10-20 2005-04-21 Pss Systems, Inc. Method and system for proxy approval of security changes for a file security system
US20050091494A1 (en) * 2003-10-23 2005-04-28 Hyser Chris D. Method and system for providing an external trusted agent for one or more computer systems
US8037515B2 (en) * 2003-10-29 2011-10-11 Qualcomm Incorporated Methods and apparatus for providing application credentials
CH716409B1 (de) * 2003-11-12 2021-01-29 Legic Identsystems Ag Verfahren zum Einschreiben einer Datenorganisation in Identifikationsmedien und zum Einschreiben und Ausführen von Applikationen in der Datenorganisation.
US20050129244A1 (en) * 2003-12-16 2005-06-16 International Business Machines Corporation System and method for mitigating denial of service attacks on trusted platform
US20050137889A1 (en) * 2003-12-18 2005-06-23 Wheeler David M. Remotely binding data to a user device
US20050138371A1 (en) * 2003-12-19 2005-06-23 Pss Systems, Inc. Method and system for distribution of notifications in file security systems
US8176545B1 (en) * 2003-12-19 2012-05-08 Nvidia Corporation Integrated policy checking system and method
US7702909B2 (en) * 2003-12-22 2010-04-20 Klimenty Vainstein Method and system for validating timestamps
US20050182971A1 (en) * 2004-02-12 2005-08-18 Ong Peng T. Multi-purpose user authentication device
US20050182925A1 (en) * 2004-02-12 2005-08-18 Yoshihiro Tsukamura Multi-mode token
US7802085B2 (en) 2004-02-18 2010-09-21 Intel Corporation Apparatus and method for distributing private keys to an entity with minimal secret, unique information
WO2005086940A2 (en) * 2004-03-11 2005-09-22 Interdigital Technology Corporation Control of device operation within an area
KR100636906B1 (ko) * 2004-03-22 2006-10-19 엘지전자 주식회사 미디 재생 장치 그 방법
US20050213768A1 (en) * 2004-03-24 2005-09-29 Durham David M Shared cryptographic key in networks with an embedded agent
US7653727B2 (en) * 2004-03-24 2010-01-26 Intel Corporation Cooperative embedded agents
US8539608B1 (en) * 2004-03-25 2013-09-17 Verizon Corporate Services Group Inc. Integrity checking at high data rates
US9003548B2 (en) 2004-04-13 2015-04-07 Nl Systems, Llc Method and system for digital rights management of documents
US7330981B2 (en) * 2004-04-23 2008-02-12 Microsoft Corporation File locker and mechanisms for providing and using same
US20060242406A1 (en) 2005-04-22 2006-10-26 Microsoft Corporation Protected computing environment
US7765600B2 (en) * 2004-05-04 2010-07-27 General Instrument Corporation Methods and apparatuses for authorizing features of a computer program for use with a product
DE102004024648A1 (de) * 2004-05-18 2005-12-22 Siemens Ag Verfahren zur Authentifizierung einer Kommunikationseinheit
US7526792B2 (en) * 2004-06-09 2009-04-28 Intel Corporation Integration of policy compliance enforcement and device authentication
US7774824B2 (en) * 2004-06-09 2010-08-10 Intel Corporation Multifactor device authentication
US7475431B2 (en) * 2004-06-10 2009-01-06 International Business Machines Corporation Using security levels to improve permission checking performance and manageability
US20060005031A1 (en) * 2004-06-15 2006-01-05 Apostolopoulos John G Methods and systems for utilizing a single cryptographic integrity check to generate multiple cryptographic integrity check values for components of transcodable content
US20050289311A1 (en) 2004-06-29 2005-12-29 David Durham System and method for secure inter-platform and intra-platform communications
US20060005015A1 (en) * 2004-06-30 2006-01-05 David Durham System and method for secure inter-platform and intra-platform communications
US7792303B2 (en) * 2004-07-14 2010-09-07 Intel Corporation Method of delivering direct proof private keys to devices using a distribution CD
US7571329B2 (en) * 2004-07-14 2009-08-04 Intel Corporation Method of storing unique constant values
US7693286B2 (en) * 2004-07-14 2010-04-06 Intel Corporation Method of delivering direct proof private keys in signed groups to devices using a distribution CD
US7697691B2 (en) * 2004-07-14 2010-04-13 Intel Corporation Method of delivering Direct Proof private keys to devices using an on-line service
US7707427B1 (en) * 2004-07-19 2010-04-27 Michael Frederick Kenrich Multi-level file digests
US8661420B2 (en) * 2004-08-03 2014-02-25 Oracle International Corporation System and method for runtime interface versioning
EP2487827A3 (en) * 2004-08-12 2013-03-27 Cmla, Llc. Permutation data transform to enhance security
US7664109B2 (en) * 2004-09-03 2010-02-16 Microsoft Corporation System and method for distributed streaming of scalable media
US7711952B2 (en) * 2004-09-13 2010-05-04 Coretrace Corporation Method and system for license management
US7561515B2 (en) * 2004-09-27 2009-07-14 Intel Corporation Role-based network traffic-flow rate control
JP4411173B2 (ja) * 2004-09-30 2010-02-10 富士通株式会社 コンピュータシステムの管理方法およびコンピュータ管理システムおよびコンピュータ管理プログラム
US8347078B2 (en) * 2004-10-18 2013-01-01 Microsoft Corporation Device certificate individualization
US20060089917A1 (en) * 2004-10-22 2006-04-27 Microsoft Corporation License synchronization
US7594269B2 (en) * 2004-10-29 2009-09-22 Intel Corporation Platform-based identification of host software circumvention
US7502928B2 (en) * 2004-11-12 2009-03-10 Sony Computer Entertainment Inc. Methods and apparatus for secure data processing and transmission
US8176564B2 (en) * 2004-11-15 2012-05-08 Microsoft Corporation Special PC mode entered upon detection of undesired state
US8336085B2 (en) 2004-11-15 2012-12-18 Microsoft Corporation Tuning product policy using observed evidence of customer behavior
US8464348B2 (en) * 2004-11-15 2013-06-11 Microsoft Corporation Isolated computing environment anchored into CPU and motherboard
US20060107323A1 (en) * 2004-11-16 2006-05-18 Mclean Ivan H System and method for using a dynamic credential to identify a cloned device
US20060137018A1 (en) * 2004-11-29 2006-06-22 Interdigital Technology Corporation Method and apparatus to provide secured surveillance data to authorized entities
US7457960B2 (en) * 2004-11-30 2008-11-25 Analog Devices, Inc. Programmable processor supporting secure mode
US8924728B2 (en) * 2004-11-30 2014-12-30 Intel Corporation Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information
US20060227640A1 (en) * 2004-12-06 2006-10-12 Interdigital Technology Corporation Sensing device with activation and sensing alert functions
US7574220B2 (en) * 2004-12-06 2009-08-11 Interdigital Technology Corporation Method and apparatus for alerting a target that it is subject to sensing and restricting access to sensed content associated with the target
TWI285742B (en) * 2004-12-06 2007-08-21 Interdigital Tech Corp Method and apparatus for detecting portable electronic device functionality
US7818585B2 (en) * 2004-12-22 2010-10-19 Sap Aktiengesellschaft Secure license management
US7895124B2 (en) * 2004-12-23 2011-02-22 International Business Machines Corporation Method for protecting sensitive data during execution
US7480761B2 (en) * 2005-01-10 2009-01-20 Microsoft Corporation System and methods for an overlay disk and cache using portable flash memory
US7770205B2 (en) * 2005-01-19 2010-08-03 Microsoft Corporation Binding a device to a computer
US7600256B2 (en) * 2005-02-04 2009-10-06 Microsoft Corporation Security critical data containers
MX2007009705A (es) * 2005-02-11 2007-10-04 Nokia Corp Metodo y aparato para proporcionar procedimientos de carga inicial en una red de comunicacion.
US20060198515A1 (en) * 2005-03-03 2006-09-07 Seagate Technology Llc Secure disc drive electronics implementation
US8086853B2 (en) * 2005-03-18 2011-12-27 Microsoft Corporation Automatic centralized authentication challenge response generation
US7890634B2 (en) 2005-03-18 2011-02-15 Microsoft Corporation Scalable session management
EP1866825A1 (en) 2005-03-22 2007-12-19 Hewlett-Packard Development Company, L.P. Methods, devices and data structures for trusted data
US20060218649A1 (en) * 2005-03-22 2006-09-28 Brickell Ernie F Method for conditional disclosure of identity information
US8438645B2 (en) 2005-04-27 2013-05-07 Microsoft Corporation Secure clock with grace periods
US7779462B2 (en) * 2005-04-11 2010-08-17 Microsoft Corporation Switching an application, user and security context based on device orientation
US8725646B2 (en) 2005-04-15 2014-05-13 Microsoft Corporation Output protection levels
US7469362B2 (en) * 2005-04-15 2008-12-23 Microsoft Corporation Using a call stack hash to record the state of a process
KR101265887B1 (ko) * 2005-04-22 2013-05-20 마이크로소프트 코포레이션 보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법
US9363481B2 (en) 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US9436804B2 (en) 2005-04-22 2016-09-06 Microsoft Technology Licensing, Llc Establishing a unique session key using a hardware functionality scan
US20060265758A1 (en) 2005-05-20 2006-11-23 Microsoft Corporation Extensible media rights
CN100358050C (zh) * 2005-05-25 2007-12-26 深圳兆日技术有限公司 一种防止存储器攻击的隐藏rom的方法
US8353046B2 (en) * 2005-06-08 2013-01-08 Microsoft Corporation System and method for delivery of a modular operating system
CA2510366C (en) * 2005-06-14 2013-02-26 Certicom Corp. System and method for remote device registration
US8639946B2 (en) * 2005-06-24 2014-01-28 Sigmatel, Inc. System and method of using a protected non-volatile memory
US7614082B2 (en) * 2005-06-29 2009-11-03 Research In Motion Limited System and method for privilege management and revocation
US20070006307A1 (en) * 2005-06-30 2007-01-04 Hahn Scott D Systems, apparatuses and methods for a host software presence check from an isolated partition
US7669242B2 (en) * 2005-06-30 2010-02-23 Intel Corporation Agent presence monitor configured to execute in a secure environment
US7953980B2 (en) * 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
US8839450B2 (en) * 2007-08-02 2014-09-16 Intel Corporation Secure vault service for software components within an execution environment
KR100736047B1 (ko) * 2005-07-28 2007-07-06 삼성전자주식회사 무선 네트워크 장치 및 이를 이용한 인증 방법
US7895651B2 (en) * 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8984636B2 (en) * 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US20070028291A1 (en) * 2005-07-29 2007-02-01 Bit 9, Inc. Parametric content control in a network security system
US8272058B2 (en) * 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
JP2007072605A (ja) * 2005-09-05 2007-03-22 Canon Inc 情報処理装置および情報処理方法
US7748037B2 (en) * 2005-09-22 2010-06-29 Intel Corporation Validating a memory type modification attempt
US20070067590A1 (en) * 2005-09-22 2007-03-22 Uday Savagaonkar Providing protected access to critical memory regions
US8239682B2 (en) 2005-09-28 2012-08-07 Nl Systems, Llc Method and system for digital rights management of documents
US20070097934A1 (en) * 2005-11-03 2007-05-03 Jesse Walker Method and system of secured direct link set-up (DLS) for wireless networks
US8183863B2 (en) * 2005-11-10 2012-05-22 Halliburton Energy Services, Inc. Displaced electrode amplifier
US7925801B2 (en) * 2006-01-17 2011-04-12 International Business Machines Corporation Method and system for protection and security of IO devices using credentials
US7624283B2 (en) * 2006-02-13 2009-11-24 International Business Machines Corporation Protocol for trusted platform module recovery through context checkpointing
US8214296B2 (en) * 2006-02-14 2012-07-03 Microsoft Corporation Disaggregated secure execution environment
WO2008054456A2 (en) * 2006-02-22 2008-05-08 Luna Innovations Inc. Hardware-facilitated secure software execution environment
US7978698B2 (en) * 2006-03-16 2011-07-12 Panasonic Corporation Terminal for performing multiple access transmission suitable to a transmission path having varied characteristics
US7779252B2 (en) * 2006-03-21 2010-08-17 Harris Corporation Computer architecture for a handheld electronic device with a shared human-machine interface
US8014530B2 (en) 2006-03-22 2011-09-06 Intel Corporation Method and apparatus for authenticated, recoverable key distribution with no database secrets
US8060744B2 (en) * 2006-03-23 2011-11-15 Harris Corporation Computer architecture for an electronic device providing single-level secure access to multi-level secure file system
US8041947B2 (en) * 2006-03-23 2011-10-18 Harris Corporation Computer architecture for an electronic device providing SLS access to MLS file system with trusted loading and protection of program execution memory
US8127145B2 (en) * 2006-03-23 2012-02-28 Harris Corporation Computer architecture for an electronic device providing a secure file system
US20070226150A1 (en) * 2006-03-27 2007-09-27 Brent Pietrzak Distribution of digital licenses and software via license tokens
US9313248B2 (en) * 2006-04-13 2016-04-12 Johnny Stuart Epstein Method and apparatus for delivering encoded content
DE602006014801D1 (de) * 2006-04-24 2010-07-22 Ericsson Telefon Ab L M Prüfung der Berechtigung der Installation einer Softwareversion
FI20065288A (fi) * 2006-05-03 2007-11-04 Emillion Oy Autentikointi
US8032761B2 (en) 2006-05-09 2011-10-04 Broadcom Corporation Method and system for memory attack protection to achieve a secure interface
US8560829B2 (en) * 2006-05-09 2013-10-15 Broadcom Corporation Method and system for command interface protection to achieve a secure interface
US8285988B2 (en) 2006-05-09 2012-10-09 Broadcom Corporation Method and system for command authentication to achieve a secure interface
US7979714B2 (en) * 2006-06-02 2011-07-12 Harris Corporation Authentication and access control device
US8826023B1 (en) * 2006-06-30 2014-09-02 Symantec Operating Corporation System and method for securing access to hash-based storage systems
CA2662166A1 (en) * 2006-09-06 2008-03-13 Sslnext, Inc. Method and system for establishing real-time authenticated and secured communications channels in a public network
WO2008039227A1 (en) * 2006-09-27 2008-04-03 Multifactor Corporation System and method for facilitating secure online transactions
US8127135B2 (en) * 2006-09-28 2012-02-28 Hewlett-Packard Development Company, L.P. Changing of shared encryption key
US8099789B2 (en) * 2006-09-29 2012-01-17 Lenovo (Singapore) Pte. Ltd. Apparatus and method for enabling applications on a security processor
US7882318B2 (en) * 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US7802050B2 (en) * 2006-09-29 2010-09-21 Intel Corporation Monitoring a target agent execution pattern on a VT-enabled system
US8245284B2 (en) * 2006-10-05 2012-08-14 Microsoft Corporation Extensible network discovery
KR100843701B1 (ko) * 2006-11-07 2008-07-04 소프트캠프(주) 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법
US8190918B2 (en) * 2006-11-13 2012-05-29 Disney Enterprises, Inc. Interoperable digital rights management
US20080148046A1 (en) * 2006-12-07 2008-06-19 Bryan Glancey Real-Time Checking of Online Digital Certificates
US8370261B2 (en) * 2007-01-10 2013-02-05 Amnon Nissim System and a method for access management and billing
WO2008147577A2 (en) 2007-01-22 2008-12-04 Spyrus, Inc. Portable data encryption device with configurable security functionality and method for file encryption
US20100095132A1 (en) * 2007-01-26 2010-04-15 Safenet, Inc. Protecting secrets in an untrusted recipient
US8254579B1 (en) * 2007-01-31 2012-08-28 Hewlett-Packard Development Company, L.P. Cryptographic key distribution using a trusted computing platform
US7831051B2 (en) * 2007-03-13 2010-11-09 Aladdin Europe Gmbh Secure communication between a hardware device and a computer
TWI402715B (zh) * 2007-03-23 2013-07-21 Via Tech Inc 應用程式保護系統及方法
CA2686498C (en) * 2007-05-07 2016-01-26 Archivas, Inc. Method for data privacy in a fixed content distributed data storage
EP2153365A1 (en) * 2007-05-22 2010-02-17 Koninklijke Philips Electronics N.V. Data security
CA2590387A1 (en) * 2007-05-29 2008-11-29 Sal Khan A system and method for creating a virtual private network (vpn) over a computer network using multi-layered permissions-based access control
KR101495535B1 (ko) * 2007-06-22 2015-02-25 삼성전자주식회사 컨텐츠 디바이스의 폐기 여부를 확인하여 데이터를전송하는 전송 방법과 시스템, 데이터 서버
US7657722B1 (en) * 2007-06-30 2010-02-02 Cirrus Logic, Inc. Method and apparatus for automatically securing non-volatile (NV) storage in an integrated circuit
EP2168299A4 (en) * 2007-07-17 2011-10-05 Certicom Corp METHOD OF COMPRESSING CRYPTOGRAPHIC VALUE
WO2009014971A1 (en) * 2007-07-20 2009-01-29 Bigfoot Networks, Inc. Client authentication device and methods thereof
US8769291B2 (en) * 2007-07-23 2014-07-01 Red Hat, Inc. Certificate generation for a network appliance
CN100454324C (zh) * 2007-09-21 2009-01-21 武汉大学 一种可信机制上的嵌入式平台引导方法
US8724819B2 (en) * 2007-10-16 2014-05-13 Nokia Corporation Credential provisioning
US8099718B2 (en) 2007-11-13 2012-01-17 Intel Corporation Method and system for whitelisting software components
US8621027B2 (en) 2007-11-16 2013-12-31 Red Hat, Inc. Automatically providing identity information for a network appliance
US8191122B2 (en) * 2007-11-27 2012-05-29 Red Hat, Inc. Provisioning a network appliance
US8191123B2 (en) * 2007-11-27 2012-05-29 Red Hat, Inc. Provisioning a network appliance
US8532303B2 (en) 2007-12-14 2013-09-10 Intel Corporation Symmetric key distribution framework for the internet
US8474037B2 (en) 2008-01-07 2013-06-25 Intel Corporation Stateless attestation system
US8266707B2 (en) 2008-02-28 2012-09-11 Intel Corporation Tamper resistant method, apparatus and system for secure portability of digital rights management-protected content
US8855318B1 (en) * 2008-04-02 2014-10-07 Cisco Technology, Inc. Master key generation and distribution for storage area network devices
US8352740B2 (en) * 2008-05-23 2013-01-08 Microsoft Corporation Secure execution environment on external device
US7522723B1 (en) * 2008-05-29 2009-04-21 Cheman Shaik Password self encryption method and system and encryption by keys generated from personal secret information
US20100031316A1 (en) * 2008-07-30 2010-02-04 International Business Machines Corporation System access log monitoring and reporting system
US8510352B2 (en) * 2008-10-24 2013-08-13 Microsoft Corporation Virtualized boot block with discovery volume
US20100106977A1 (en) * 2008-10-24 2010-04-29 Jan Patrik Persson Method and Apparatus for Secure Software Platform Access
US8661056B1 (en) * 2008-11-03 2014-02-25 Salesforce.Com, Inc. System, method and computer program product for publicly providing web content of a tenant using a multi-tenant on-demand database service
US20100153709A1 (en) * 2008-12-10 2010-06-17 Qualcomm Incorporated Trust Establishment From Forward Link Only To Non-Forward Link Only Devices
US8364601B2 (en) * 2008-12-31 2013-01-29 Intel Corporation Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain
US8768843B2 (en) 2009-01-15 2014-07-01 Igt EGM authentication mechanism using multiple key pairs at the BIOS with PKI
US8417969B2 (en) * 2009-02-19 2013-04-09 Microsoft Corporation Storage volume protection supporting legacy systems
US8073886B2 (en) 2009-02-20 2011-12-06 Microsoft Corporation Non-privileged access to data independent of filesystem implementation
EP2401835A4 (en) 2009-02-27 2014-04-23 Certicom Corp SYSTEM AND METHOD FOR SECURE COMMUNICATION WITH ELECTRONIC COUNTERS
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
GB201000288D0 (en) * 2010-01-11 2010-02-24 Scentrics Information Security System and method of enforcing a computer policy
US8924733B2 (en) * 2010-06-14 2014-12-30 International Business Machines Corporation Enabling access to removable hard disk drives
US8874896B2 (en) * 2010-06-18 2014-10-28 Intertrust Technologies Corporation Secure processing systems and methods
US9444620B1 (en) * 2010-06-24 2016-09-13 F5 Networks, Inc. Methods for binding a session identifier to machine-specific identifiers and systems thereof
CN102436559B (zh) * 2010-09-29 2016-06-01 联想(北京)有限公司 一种状态切换方法及系统
JP2012084071A (ja) 2010-10-14 2012-04-26 Toshiba Corp デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置
EP2453377A1 (en) * 2010-11-15 2012-05-16 Gemalto SA Method of loading data into a portable secure token
US8745716B2 (en) 2010-11-17 2014-06-03 Sequent Software Inc. System and method for providing secure data communication functionality to a variety of applications on a portable communication device
US8776190B1 (en) * 2010-11-29 2014-07-08 Amazon Technologies, Inc. Multifactor authentication for programmatic interfaces
US8943570B1 (en) * 2010-12-02 2015-01-27 Cellco Partnership Techniques for providing enhanced network security
US8817984B2 (en) 2011-02-03 2014-08-26 mSignia, Inc. Cryptographic security functions based on anticipated changes in dynamic minutiae
US11063920B2 (en) 2011-02-03 2021-07-13 mSignia, Inc. Cryptographic security functions based on anticipated changes in dynamic minutiae
US9251337B2 (en) 2011-04-27 2016-02-02 International Business Machines Corporation Scalable, highly available, dynamically reconfigurable cryptographic provider with quality-of-service control built from commodity backend providers
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US20120303533A1 (en) * 2011-05-26 2012-11-29 Michael Collins Pinkus System and method for securing, distributing and enforcing for-hire vehicle operating parameters
US9213829B2 (en) * 2011-07-12 2015-12-15 Hewlett-Packard Development Company, L.P. Computing device including a port and a guest domain
US8949813B2 (en) * 2011-07-29 2015-02-03 Dell Products Lp Systems and methods for facilitating activation of operating systems
US8661527B2 (en) 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
US9037852B2 (en) 2011-09-02 2015-05-19 Ivsc Ip Llc System and method for independent control of for-hire vehicles
US20130060721A1 (en) 2011-09-02 2013-03-07 Frias Transportation Infrastructure, Llc Systems and methods for pairing of for-hire vehicle meters and medallions
US9118686B2 (en) 2011-09-06 2015-08-25 Microsoft Technology Licensing, Llc Per process networking capabilities
US8990561B2 (en) 2011-09-09 2015-03-24 Microsoft Technology Licensing, Llc Pervasive package identifiers
US9773102B2 (en) 2011-09-09 2017-09-26 Microsoft Technology Licensing, Llc Selective file access for applications
US9800688B2 (en) 2011-09-12 2017-10-24 Microsoft Technology Licensing, Llc Platform-enabled proximity service
KR101986312B1 (ko) * 2011-11-04 2019-06-05 주식회사 케이티 신뢰관계 형성 방법 및 이를 위한 내장 uⅰcc
WO2013066016A1 (ko) * 2011-11-04 2013-05-10 주식회사 케이티 신뢰관계 형성 방법 및 이를 위한 내장 uⅰcc
ES2691046T3 (es) * 2011-11-11 2018-11-23 Soprano Design Limited Mensajería segura
JP5275432B2 (ja) 2011-11-11 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
KR101878682B1 (ko) * 2011-11-14 2018-07-18 삼성전자주식회사 컨텐츠를 보호하기 위한 방법 및 저장 매체
US8953790B2 (en) * 2011-11-21 2015-02-10 Broadcom Corporation Secure generation of a device root key in the field
JP5204290B1 (ja) * 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、システム、及び装置
JP5112555B1 (ja) 2011-12-02 2013-01-09 株式会社東芝 メモリカード、ストレージメディア、及びコントローラ
JP5100884B1 (ja) 2011-12-02 2012-12-19 株式会社東芝 メモリ装置
JP5204291B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、装置、システム
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9389933B2 (en) * 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
JP5275482B2 (ja) 2012-01-16 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
US9043878B2 (en) * 2012-03-06 2015-05-26 International Business Machines Corporation Method and system for multi-tiered distributed security authentication and filtering
US9948695B2 (en) * 2012-03-16 2018-04-17 Alcatel Lucent Enabling delivery of protected content using unprotected delivery services
WO2013142517A1 (en) 2012-03-20 2013-09-26 Krimmeni Technologies, Inc. Method and system for process working set isolation
US20130253999A1 (en) 2012-03-22 2013-09-26 Frias Transportation Infrastructure Llc Transaction and communication system and method for vendors and promoters
US9628473B1 (en) * 2012-04-06 2017-04-18 Wayne Odom System, method, and device for delivering communications and storing and delivering data
US9773099B2 (en) * 2012-04-06 2017-09-26 Wayne Odom System, method, and device for delivering communications and storing and delivering data
US9590981B2 (en) * 2012-04-06 2017-03-07 Wayne Odom System, method, and device for delivering communications and storing and delivering data
US9378339B2 (en) * 2012-04-06 2016-06-28 Wayne Odom System, method, and device for delivering communications and storing and delivering data
US9690635B2 (en) 2012-05-14 2017-06-27 Qualcomm Incorporated Communicating behavior information in a mobile computing device
US9609456B2 (en) 2012-05-14 2017-03-28 Qualcomm Incorporated Methods, devices, and systems for communicating behavioral analysis information
US9298494B2 (en) 2012-05-14 2016-03-29 Qualcomm Incorporated Collaborative learning for efficient behavioral analysis in networked mobile device
US9324034B2 (en) 2012-05-14 2016-04-26 Qualcomm Incorporated On-device real-time behavior analyzer
US9202047B2 (en) 2012-05-14 2015-12-01 Qualcomm Incorporated System, apparatus, and method for adaptive observation of mobile device behavior
US10075471B2 (en) 2012-06-07 2018-09-11 Amazon Technologies, Inc. Data loss prevention techniques
US10084818B1 (en) 2012-06-07 2018-09-25 Amazon Technologies, Inc. Flexibly configurable data modification services
US8995657B2 (en) * 2012-06-14 2015-03-31 Kabushiki Kaisha Toshiba Device and method for certifying one's own authenticity
US20130336475A1 (en) * 2012-06-14 2013-12-19 Kabushiki Kaisha Toshiba Device
US8938616B2 (en) * 2012-06-14 2015-01-20 Kabushiki Kaisha Toshiba Authentication method
US8726024B2 (en) * 2012-06-14 2014-05-13 Kabushiki Kaisha Toshiba Authentication method
US8751814B2 (en) * 2012-06-14 2014-06-10 Kabushiki Kaisha Toshiba Device
US8898463B2 (en) * 2012-06-15 2014-11-25 Kabushiki Kaisha Toshiba Device
US8948400B2 (en) * 2012-06-15 2015-02-03 Kabushiki Kaisha Toshiba Host device
US8762717B2 (en) * 2012-06-15 2014-06-24 Kabushiki Kaisha Toshiba Authentication device
US8989374B2 (en) * 2012-06-15 2015-03-24 Kabushiki Kaisha Toshiba Cryptographic device for secure authentication
US9654968B2 (en) * 2012-07-17 2017-05-16 Texas Instruments Incorporated Certified-based control unit-key fob pairing
CN102843681A (zh) * 2012-08-15 2012-12-26 腾讯科技(深圳)有限公司 信息交互方法和装置
US9495537B2 (en) 2012-08-15 2016-11-15 Qualcomm Incorporated Adaptive observation of behavioral features on a mobile device
US9330257B2 (en) 2012-08-15 2016-05-03 Qualcomm Incorporated Adaptive observation of behavioral features on a mobile device
US9747440B2 (en) 2012-08-15 2017-08-29 Qualcomm Incorporated On-line behavioral analysis engine in mobile device with multiple analyzer model providers
US9319897B2 (en) 2012-08-15 2016-04-19 Qualcomm Incorporated Secure behavior analysis over trusted execution environment
GB2525742A (en) * 2012-09-18 2015-11-04 Cryptomathic Ltd CRM Security core
US9275223B2 (en) 2012-10-19 2016-03-01 Mcafee, Inc. Real-time module protection
GB2507497B (en) 2012-10-30 2015-01-14 Barclays Bank Plc Device and method for secure memory access
DE102012220990B3 (de) * 2012-11-16 2014-01-23 Siemens Aktiengesellschaft Verfahren und Anordnung zur sicheren Kommunikation zwischen Netzwerkeinrichtungen in einem Kommunikationsnetzwerk
US10356204B2 (en) 2012-12-13 2019-07-16 Microsoft Technology Licensing, Llc Application based hardware identifiers
RU2535175C2 (ru) 2012-12-25 2014-12-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносного программного обеспечения путем создания изолированной среды
RU2541895C2 (ru) 2012-12-25 2015-02-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ повышения защищенности данных организации путем создания изолированной среды
US9686023B2 (en) 2013-01-02 2017-06-20 Qualcomm Incorporated Methods and systems of dynamically generating and using device-specific and device-state-specific classifier models for the efficient classification of mobile device behaviors
US9684870B2 (en) 2013-01-02 2017-06-20 Qualcomm Incorporated Methods and systems of using boosted decision stumps and joint feature selection and culling algorithms for the efficient classification of mobile device behaviors
US10089582B2 (en) 2013-01-02 2018-10-02 Qualcomm Incorporated Using normalized confidence values for classifying mobile device behaviors
US9742559B2 (en) * 2013-01-22 2017-08-22 Qualcomm Incorporated Inter-module authentication for securing application execution integrity within a computing device
US9367697B1 (en) * 2013-02-12 2016-06-14 Amazon Technologies, Inc. Data security with a security module
US9608813B1 (en) 2013-06-13 2017-03-28 Amazon Technologies, Inc. Key rotation techniques
US9705674B2 (en) 2013-02-12 2017-07-11 Amazon Technologies, Inc. Federated key management
US10467422B1 (en) 2013-02-12 2019-11-05 Amazon Technologies, Inc. Automatic key rotation
US9264228B2 (en) * 2013-02-14 2016-02-16 BBPOS Limited System and method for a secure display module
US9201811B2 (en) 2013-02-14 2015-12-01 Kabushiki Kaisha Toshiba Device and authentication method therefor
US9491187B2 (en) 2013-02-15 2016-11-08 Qualcomm Incorporated APIs for obtaining device-specific behavior classifier models from the cloud
US8984294B2 (en) 2013-02-15 2015-03-17 Kabushiki Kaisha Toshiba System of authenticating an individual memory device via reading data including prohibited data and readable data
US9443107B2 (en) * 2013-02-19 2016-09-13 Qualcomm Incorporated Method for protecting the integrity of a group of memory elements using an aggregate authentication code
US9954843B2 (en) * 2013-02-28 2018-04-24 Microsoft Technology Licensing, Llc Web ticket based upon a symmetric key usable for user authentication
KR102015108B1 (ko) * 2013-03-12 2019-10-22 한국전자통신연구원 이종 서비스 간 서비스 제공 방법과 사용자 단말 및 웹 서버
US9858247B2 (en) 2013-05-20 2018-01-02 Microsoft Technology Licensing, Llc Runtime resolution of content references
EP2808818B1 (en) * 2013-05-29 2016-07-13 Nxp B.V. Processing system
US10181124B2 (en) * 2013-05-30 2019-01-15 Dell Products, L.P. Verifying OEM components within an information handling system using original equipment manufacturer (OEM) identifier
JP2016513840A (ja) * 2013-06-05 2016-05-16 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. データセキュリティを保護するための方法、サーバ、ホスト、およびシステム
EP2854066B1 (en) * 2013-08-21 2018-02-28 Nxp B.V. System and method for firmware integrity verification using multiple keys and OTP memory
CN104463006B (zh) * 2013-09-25 2017-12-29 联想(北京)有限公司 一种分区访问方法及电子设备
EP2854332A1 (en) * 2013-09-27 2015-04-01 Gemalto SA Method for securing over-the-air communication between a mobile application and a gateway
US10013563B2 (en) * 2013-09-30 2018-07-03 Dell Products L.P. Systems and methods for binding a removable cryptoprocessor to an information handling system
GB2519080B (en) 2013-10-08 2021-04-14 Arm Ip Ltd Scheduling function calls
ES2807547T3 (es) * 2013-10-14 2021-02-23 Cryptomathic Ltd Núcleo de seguridad CRM
KR102183852B1 (ko) * 2013-11-22 2020-11-30 삼성전자주식회사 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치
DE102013019870B4 (de) * 2013-11-28 2019-08-08 Friedrich Kisters Authentifizierungs- und/oder Identifikationsverfahren in einem Kommunikationsnetzwerk
US20150156200A1 (en) * 2013-11-29 2015-06-04 Samsung Electronics Co., Ltd. Apparatus and method for secure and silent confirmation-less presence for public identities
GB2512502B (en) * 2014-02-25 2015-03-11 Cambridge Silicon Radio Ltd Device authentication
GB2515853B (en) 2014-02-25 2015-08-19 Cambridge Silicon Radio Ltd Latency mitigation
GB2523759A (en) * 2014-03-04 2015-09-09 Ibm Method for processing of restricted data
CN104951405B (zh) * 2014-03-28 2019-09-06 三星电子株式会社 存储系统以及对存储系统执行和验证写保护的方法
GB2525596B (en) * 2014-04-28 2021-05-26 Arm Ip Ltd Access control and code scheduling
WO2015175942A1 (en) * 2014-05-15 2015-11-19 Carnegie Mellon University Method and apparatus for on-demand i/o channels for secure applications
US9397835B1 (en) 2014-05-21 2016-07-19 Amazon Technologies, Inc. Web of trust management in a distributed system
US9438421B1 (en) 2014-06-27 2016-09-06 Amazon Technologies, Inc. Supporting a fixed transaction rate with a variably-backed logical cryptographic key
US10032029B2 (en) * 2014-07-14 2018-07-24 Lenovo (Singapore) Pte. Ltd. Verifying integrity of backup file in a multiple operating system environment
US10606965B2 (en) * 2014-07-18 2020-03-31 Leviathan Security Group, Inc. System and method for emulation of unprivileged code in a simulated environment
US10185669B2 (en) * 2014-08-04 2019-01-22 Oracle International Corporation Secure key derivation functions
US9866392B1 (en) 2014-09-15 2018-01-09 Amazon Technologies, Inc. Distributed system web of trust provisioning
US9626304B2 (en) * 2014-10-21 2017-04-18 Sandisk Technologies Llc Storage module, host, and method for securing data with application information
US10769315B2 (en) * 2014-12-01 2020-09-08 T-Mobile Usa, Inc. Anti-theft recovery tool
US10318762B1 (en) * 2015-03-06 2019-06-11 United Services Automobile Association (Usaa) Third-party platform for tokenization and detokenization of network packet data
US9740492B2 (en) * 2015-03-23 2017-08-22 Intel Corporation System management mode trust establishment for OS level drivers
US10484339B2 (en) * 2015-03-24 2019-11-19 Global Data Sentinel, Inc. Pervasive data security
US9792229B2 (en) * 2015-03-27 2017-10-17 Intel Corporation Protecting a memory
US9916458B2 (en) * 2015-03-31 2018-03-13 EMC IP Holding Company LLC Secure cloud-based storage of data shared across file system objects and clients
US10191914B2 (en) 2015-03-31 2019-01-29 EMC IP Holding Company LLC De-duplicating distributed file system using cloud-based object store
US20160292431A1 (en) * 2015-04-02 2016-10-06 defend7, Inc. Management of encryption keys in an application container environment
US9954832B2 (en) 2015-04-24 2018-04-24 Encryptics, Llc System and method for enhanced data protection
US10374802B2 (en) 2015-04-24 2019-08-06 Red Hat, Inc. Multi-factor simple password exponential key exchange (SPEKE) authentication
US9773432B2 (en) * 2015-06-27 2017-09-26 Intel Corporation Lightweight cryptographic engine
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US10867045B2 (en) * 2015-09-30 2020-12-15 Hewlett-Packard Development Company, L.P. Runtime verification using external device
US10079684B2 (en) * 2015-10-09 2018-09-18 Intel Corporation Technologies for end-to-end biometric-based authentication and platform locality assertion
GB2545250B (en) * 2015-12-10 2019-06-12 Advanced Risc Mach Ltd Devices and method of operation thereof
EP3179690A1 (en) * 2015-12-11 2017-06-14 Gemalto Sa Mobile device having trusted execution environment
US10594491B2 (en) * 2015-12-24 2020-03-17 Intel Corporation Cryptographic system memory management
JP6700815B2 (ja) * 2016-01-29 2020-05-27 キヤノン株式会社 ライセンス管理システム、クライアント装置、アプリケーションプログラム
EP3356987B1 (en) * 2016-02-19 2021-02-17 Hewlett-Packard Development Company, L.P. Securely writing data to a secure data storage device during runtime
JP6656014B2 (ja) * 2016-02-19 2020-03-04 キヤノン株式会社 ライセンスシステム、ライセンス管理サーバ、方法、およびプログラム
US10341309B1 (en) 2016-06-13 2019-07-02 Allstate Insurance Company Cryptographically protecting data transferred between spatially distributed computing devices using an intermediary database
US10148444B2 (en) 2016-08-04 2018-12-04 Dell Products L.P. Systems and methods for storing administrator secrets in management controller-owned cryptoprocessor
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10331410B2 (en) * 2016-11-09 2019-06-25 Google Llc Hardened random number generator with ring oscillator collapse time random truncation
US10387333B2 (en) * 2017-01-05 2019-08-20 Qualcomm Incorporated Non-volatile random access memory with gated security access
US20180260556A1 (en) * 2017-03-09 2018-09-13 Meir Avganim Secure data and password storage and recall system
US10749690B2 (en) * 2017-03-10 2020-08-18 Samsung Electronics Co., Ltd. System and method for certificate authority for certifying accessors
KR102322605B1 (ko) * 2017-07-12 2021-11-05 덕성여자대학교 산학협력단 사물인터넷 환경에서의 비밀키 설정 및 상호 기기 인증 방법
US10346608B2 (en) * 2017-12-12 2019-07-09 John Almeida Virus immune computer system and method
US10990371B2 (en) 2018-01-17 2021-04-27 Crowdstrike, Inc. Device driver non-volatile backing-store installation
US11423186B2 (en) * 2018-01-17 2022-08-23 Crowdstrike, Inc. Verified inter-module communications interface
US11301847B1 (en) 2018-02-15 2022-04-12 Wells Fargo Bank, N.A. Systems and methods for an authorized identification system
EP3766204A4 (en) * 2018-03-15 2021-12-15 tZERO IP, LLC DIVISION OF ENCRYPTED KEY AND ENCRYPTION KEY FOR ENCRYPTING A KEY INTO KEY ELEMENTS ALLOWING ASSEMBLY WITH A SUBSET OF KEY ELEMENTS TO ENCRYPT AN ENCRYPTED KEY
CN110532766B (zh) * 2018-05-25 2023-09-08 华为技术有限公司 一种基于多容器的可信应用程序的处理方法及相关设备
CN109029254B (zh) * 2018-07-03 2020-06-16 秦皇岛燕大燕软信息系统有限公司 一种基于点云数据处理的列车车厢载货体积及体密度质量检测方法
US11601264B2 (en) 2018-10-12 2023-03-07 Tzero Ip, Llc Encrypted asset encryption key parts allowing for assembly of an asset encryption key using a subset of the encrypted asset encryption key parts
US11316668B2 (en) 2018-11-16 2022-04-26 Safetech Bv Methods and systems for cryptographic private key management for secure multiparty storage and transfer of information
US11349671B2 (en) * 2019-01-24 2022-05-31 Salesforce.Com, Inc. Authenticating communication
US11218307B1 (en) 2019-04-24 2022-01-04 Wells Fargo Bank, N.A. Systems and methods for generation of the last obfuscated secret using a seed
CN110177134B (zh) * 2019-05-10 2021-12-07 东南大学 一种基于多云存储的安全密码管理器及其使用方法
US11240024B2 (en) * 2019-07-29 2022-02-01 EMC IP Holding Company LLC Cryptographic key management using key proxies and generational indexes
JP2022550983A (ja) * 2019-10-09 2022-12-06 マイクロン テクノロジー,インク. データ保護スキームを備えるメモリデバイス
US11356367B2 (en) * 2019-11-22 2022-06-07 Red Hat, Inc. Secure preloading of serverless function sequences
CN111159726B (zh) * 2019-12-10 2022-09-13 中国电子科技网络信息安全有限公司 一种基于uefi环境变量的全盘加解密方法及系统
CN111212048A (zh) * 2019-12-26 2020-05-29 北京安码科技有限公司 https协议实时监控方法、系统、电子设备及存储介质
AU2021227543A1 (en) 2020-02-26 2022-10-06 Tzero Ip, Llc Secret splitting and metadata storage
US20220103354A1 (en) * 2020-09-25 2022-03-31 Renesas Electronics Corporation Secure encryption key generation and management in open and secure processor environments
US11522683B2 (en) 2020-12-04 2022-12-06 International Business Machines Corporation Multi-phase protection for data-centric objects
US11659005B2 (en) * 2020-12-16 2023-05-23 Dell Products, L.P. Systems and methods for self-protecting and self-refreshing workspaces
US11171964B1 (en) * 2020-12-23 2021-11-09 Citrix Systems, Inc. Authentication using device and user identity
CN112948773B (zh) * 2021-02-07 2024-05-24 深圳市大梦龙途文化传播有限公司 脚本加密与解密方法、终端设备及可读存储介质
JP2022122553A (ja) * 2021-02-10 2022-08-23 キヤノン株式会社 画像形成装置、その制御方法、およびプログラム
US11418331B1 (en) 2021-02-25 2022-08-16 EMC IP Holding Company LLC Importing cryptographic keys into key vaults
CN113179513B (zh) * 2021-04-16 2022-08-09 中国人民解放军国防科技大学 基于智能反射面相位辅助的无线信道密钥生成方法和设备
US11829482B2 (en) * 2021-06-08 2023-11-28 Dell Products L.P. Pre-boot authentication for virtual machines using credentials stored in virtual trusted platform modules
US11994900B2 (en) * 2021-07-28 2024-05-28 Dell Products L.P. System management mode emulation of the real-time clock
CN113904848B (zh) * 2021-10-09 2023-08-04 天翼物联科技有限公司 物联网终端的证书与密钥下载方法及系统
CN114282250B (zh) * 2021-12-28 2024-04-09 航天科工智能运筹与信息安全研究院(武汉)有限公司 一种模型容器加密与部署系统
CN114840231A (zh) * 2022-04-07 2022-08-02 重庆金康赛力斯新能源汽车设计院有限公司 一种程序包的验算方法、系统、计算机设备和存储介质
CN116055032B (zh) * 2022-05-11 2023-09-22 荣耀终端有限公司 一种密钥生成方法及电子设备
TWI829250B (zh) * 2022-07-19 2024-01-11 群聯電子股份有限公司 簽章驗證方法、記憶體儲存裝置及記憶體控制電路單元
TWI841124B (zh) * 2022-12-19 2024-05-01 新唐科技股份有限公司 安全啟動裝置、方法與使用其的電子系統

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5022077A (en) * 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
US5210795A (en) * 1992-01-10 1993-05-11 Digital Equipment Corporation Secure user authentication from personal computer
US5675649A (en) * 1995-11-30 1997-10-07 Electronic Data Systems Corporation Process for cryptographic key generation and safekeeping
US6157985A (en) * 1997-10-16 2000-12-05 Seagate Technology Llc Single-cycle variable period buffer manager for disk controllers
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US7174457B1 (en) * 1999-03-10 2007-02-06 Microsoft Corporation System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6775779B1 (en) * 1999-04-06 2004-08-10 Microsoft Corporation Hierarchical trusted code for content protection in computers
KR20020004128A (ko) * 2000-07-03 2002-01-16 김월영 하드웨어락에 의한 보안 및 원격관리 시스템에서서버컴퓨터에서 클라이언트 컴퓨터의 하드웨어락에 저장된알고리즘을 제어하는 방법

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8155310B2 (en) 2004-08-12 2012-04-10 Cmla, Llc Key derivation functions to enhance security
US8737608B2 (en) 2004-08-12 2014-05-27 Cmla, Llc Exponential data transform to enhance security
US8677504B2 (en) 2005-07-14 2014-03-18 Qualcomm Incorporated Method and apparatus for encrypting/decrypting multimedia content to allow random access
US9167280B2 (en) 2005-07-14 2015-10-20 Qualcomm Incorporated Method and apparatus for encrypting/decrypting multimedia content to allow random access
TWI411933B (zh) * 2005-09-14 2013-10-11 Sandisk Technologies Inc 記憶卡控制韌體的硬碟機完整性確認
US8966284B2 (en) 2005-09-14 2015-02-24 Sandisk Technologies Inc. Hardware driver integrity check of memory card controller firmware
TWI401583B (zh) * 2009-08-06 2013-07-11 Phison Electronics Corp 資料擾亂/解擾亂與資料處理方法及其控制器與儲存系統
TWI659640B (zh) * 2017-11-16 2019-05-11 中華電信股份有限公司 結合區塊鏈技術之簽章系統、簽章方法及簽章驗證方法
US10778427B2 (en) 2017-11-23 2020-09-15 Alibaba Group Holding Limited Method and apparatus for encrypting and decrypting product information
TWI691858B (zh) * 2018-12-26 2020-04-21 技嘉科技股份有限公司 應用程式的驗證方法、電腦裝置及其主機板
TWI726573B (zh) * 2019-04-30 2021-05-01 開曼群島商創新先進技術有限公司 基於區塊鏈的資料壓縮、查詢方法及裝置和電子設備

Also Published As

Publication number Publication date
US20030037237A1 (en) 2003-02-20
CN101114326A (zh) 2008-01-30
JP2002312242A (ja) 2002-10-25
KR100879907B1 (ko) 2009-01-21
KR20020079349A (ko) 2002-10-19
CN1273901C (zh) 2006-09-06
US20040039924A1 (en) 2004-02-26
CN1380610A (zh) 2002-11-20

Similar Documents

Publication Publication Date Title
TW589569B (en) Systems and methods for computer device authentication
US10491379B2 (en) System, device, and method of secure entry and handling of passwords
RU2756048C2 (ru) Адресация доверенной среды исполнения с использованием ключа шифрования
KR101067399B1 (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
KR100996784B1 (ko) 공개 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
RU2762141C2 (ru) Абстрактная идентификация анклава
US7568114B1 (en) Secure transaction processor
US8171295B2 (en) Information processing apparatus, a server apparatus, a method of an information processing apparatus, a method of a server apparatus, and an apparatus executable process
TW202109320A (zh) 基於可信執行環境的應用程式啟動方法及裝置
JP6590807B2 (ja) プライバシー機密情報の交換を制御するための方法およびシステム
JP2004508619A (ja) トラステッド・デバイス
JP2013514587A (ja) 証明書失効リストを用いたコンテンツ管理方法
KR20220079648A (ko) 생체인식 지불 디바이스를 인증하기 위한 방법 및 장치, 컴퓨터 디바이스, 및 저장 매체
Cooijmans et al. Secure key storage and secure computation in Android
JP2021170228A (ja) 認可に基づくリソースアクセス制御システム、セキュアなコンポーネント、デバイス及び認可に基づくリソースアクセス制御方法
Baghdasaryan et al. FIDO UAF Authenticator Commands
Sharma Onboard credentials: Hardware assisted secure storage of credentials
Lindemann et al. FIDO UAF Authenticator Commands v1. 0

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees