JP2002312242A - コンピュータ・デバイス認証のシステムおよび方法 - Google Patents
コンピュータ・デバイス認証のシステムおよび方法Info
- Publication number
- JP2002312242A JP2002312242A JP2001355353A JP2001355353A JP2002312242A JP 2002312242 A JP2002312242 A JP 2002312242A JP 2001355353 A JP2001355353 A JP 2001355353A JP 2001355353 A JP2001355353 A JP 2001355353A JP 2002312242 A JP2002312242 A JP 2002312242A
- Authority
- JP
- Japan
- Prior art keywords
- key
- cryptographic
- application
- container
- data
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/73—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/74—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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/79—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/86—Secure or tamper-resistant housings
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/062—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key 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/0841—Key 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/0844—Key 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2105—Dual mode as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2129—Authenticate client device independently of the user
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2145—Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2147—Locking files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2149—Restricted operating environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2153—Using hardware token as a secondary aspect
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding or coding, e.g. Huffman coding or error correction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
- H04L2209/603—Digital right managament [DRM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/061—Additional 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)
Abstract
タ鍵を使用するデバイス認証のシステムおよび方法を提
供する。 【解決手段】 マスタ鍵を使用して、コンピュータ・シ
ステムの特権モードのオペレーションでのみアクセス可
能なストレージに転送される機密データを導出する。こ
の機密データおよびマスタ鍵は、特権モードのオペレー
ションで稼動していないプログラムによって直接にアク
セス可能ではない。マスタ鍵は、アプリケーション/デ
バイス対に固有のデータを保護するのに使用される1つ
または複数のアプリケーション鍵を導出するのに使用さ
れる。非特権プログラムは、特権モードで稼動する機能
を要求して、これらのアプリケーション鍵を使用するこ
とができる。特権モード・プログラムは、非特権呼出し
側プログラムの保全性を検査して、それが各要求された
オペレーションを実行する権限および/または保全性を
有することを保証する。1つまたは複数のデバイス・オ
ーソリティ・サーバが、マスタ鍵およびアプリケーショ
ン鍵の両方の発行および管理に使用される。
Description
ピュータ・システムおよびソフトウェア方法に関し、具
体的には、コンピュータ・デバイスを認証するシステム
および方法に関する。
イスは、我々の世界のますます重要な部分になりつつあ
り、これらのデバイスがインターネットを用いて相互接
続される際に、これらのデバイスを使用するトランザク
ションにかかわる実体を安全に認証することがますます
重要になる。
サブドメイン内で特権オペレーションを実行するセキュ
ア・カーネルという概念は、コンピュータ・セキュリテ
ィでの非常に古い概念である。しかし、現代の市販オペ
レーティング・システムの発展中に、Microsof
t Windowsのさまざまなバージョン、UNIX
(登録商標)、および小型デバイスの組込みオペレーテ
ィング・システムに反映されているように、オペレーテ
ィング・システムの伝統的なセキュリティの境界および
責任が、ぼやけるか、転置されるか、セキュリティ・ホ
ールだらけになってきた。一部の場合に、オペレーティ
ング・システムが、あまりに巨大になり、包括的な形で
システムの安定を保証できることまたはシステムを分析
できることさえほとんど不可能になった。そのような保
証処理は、原理的には可能であるかもしれないが、これ
らのシステムの期待される寿命のうちで現実的に達成す
ることは不可能と思われる。
セキュリティ・クリティカルなデータを含め、セキュリ
ティ・クリティカルな機能を実行するために、物理的ま
たはアーキテクチャ的に別々のCPUを組み込んだ。そ
の一例が、スマート・カード・ベースの認証デバイスで
ある。スマート・カード・デバイスは、1つまたは複数
の組み込まれた暗号鍵へのアクセスだけを有する別のオ
ペレーティング環境を提供する。これを従来のコンピュ
ータに接続して、組み込まれた鍵を用いてディジタル証
明を実行し、ユーザと、コンピュータによって開始され
るトランザクションとを認証することができる。これ
は、比較的総合的な処理でそのセキュリティ特性を分析
されるのに十分に小さく、単純でもある。しかし、スマ
ート・カードおよび他のアドオン・デバイスによって、
環境に追加のコストおよび複雑さが追加され、ユーザお
よびシステム管理者がカード・リーダをインストールす
ることが必要になることがしばしばであり、スマート・
カードをこれらの計算機のユーザに配布することが必要
になる。もう1つの例が、鍵のローカル・プライベート
・ストレージを有する、システム内の副暗号プロセッサ
の使用である。これは、常時挿入されているスマート・
カードに類似する形で機能する。
ムの多数のもう1つの制限が、アドオンCPUが、それ
自体のユーザ入出力デバイスを有しないことである。ユ
ーザI/Oシステムによって、これらのデバイスにさら
にコストおよび複雑さが追加され、しばしば、機能性お
よび便利さが極端に制限される。たとえば、組み込まれ
た鍵を用いて署名されるものおよび処理されるものを知
らせるのに接続されたコンピュータに完全に頼るCPU
を有する暗号アドオン・デバイスは、接続されたコンピ
ュータへのセキュリティ脅威に対して脆弱であり、この
デバイスの封じ込めの価値の一部が失われる。これらの
別のデバイスの分離に起因して、デバイスが、ホスト・
マシンによってそれに提示されるトランザクションが真
正であることを保証することは、一般に困難または不可
能である。したがって、いくつかの点で、このシステム
は、まだ、結局は、ホスト・オペレーティング・システ
ムおよびアプリケーションの保全性に依存する。
イス・アプリケーション・ソフトウェアのネットワーク
認証のための、デバイスの強い暗号的識別を提供するこ
とである。本発明のもう1つの目的は、システムに対す
る最小限の追加ハードウェアを用いる強い保証を提供す
ることである。本発明のもう1つの目的は、日用品クラ
スの市販パーソナル・コンピュータに見られるもの以上
のハードウェアを必要としない、コンピュータ・デバイ
ス認証を可能にするシステムを提供することである。
・カーネルの実装での信頼の分析および確立の処理を容
易にするために、アプリケーションおよびオペレーティ
ング・システムの両方から別のドメインで動作する小さ
いセキュリティ・カーネルを提供することである。本発
明のもう1つの目的は、セキュリティ・カーネル機能を
要求するプログラムの認証性および保全性を確立するた
めに、オペレーティング・システム(OS)およびアプ
リケーション・プログラム(アプリケーション)のメモ
リにセキュリティ・カーネルがアクセスできるようにす
ることである。
成するために、本発明に、コンピュータ・デバイス認証
を提供するシステムおよび方法が含まれる。本発明は、
カーネルの実装での信頼の分析および確立の処理を容易
にすると同時に、前述のアドオン・ハードウェア解決策
の制限を除去する、小さいセキュリティ・カーネルを提
供する。理想的には、セキュリティ・カーネルは、ホス
ト計算機で稼働中のアプリケーション・プログラム(ア
プリケーション)およびオペレーティング・システム
(OS)の両方と別のドメインで、それでもOSおよび
アプリケーションのメモリにアクセスできる状態で動作
する。本発明は、伝統的な既存のオペレーティング・シ
ステムの境界内にあり、OSおよびアプリケーションの
保全性を検証でき、これらの代わりにセキュア・オペレ
ーションを実行することができる、小さい内側のセキュ
リティ・カーネルを作成することによって、そのような
セキュリティ・アーキテクチャを提供する。
トアップ時にシステム管理モード(SMM)に移動さ
れ、その後、OARロックされた不揮発性メモリが使用
不能にされる、秘密マスタ鍵を含むOARロックされた
不揮発性メモリ(NVM)と、(2)デバイス鍵を特定
のアプリケーションにバインドし、プライバシ/ユーザ
・コントローラビリティ問題を解決するコンテナと、
(3)呼出し側アプリケーションの「オンザフライ」の
保全性のスポット検査が含まれる。
のデバイス認証の実行、特定のデバイスだけに配布され
る内容の保護、および/または、たとえば、ローカルに
保管されるかリモートに取り出される信任証(または共
有される信任証)を用いる、仮想スマート・カードの使
用可能化に使用される。鍵コンテナは、デフォルトのC
rypto(暗号)APIコンテナの代わりなどの、シ
ステム・クリティカル鍵に関する保護の強化に使用され
る。
アクセスを保護する1つの例示的システムに、不揮発性
ストレージと、システム初期化処理であって、システム
初期化処理中に上記不揮発性ストレージから上記マスタ
鍵を読み取り、上記マスタ鍵から導出された機密値を隠
されたストレージ・ロケーションに書き込み、システム
初期化処理の次の開始まで、上記システム内で稼動する
すべてのプログラムによる上記不揮発性ストレージへの
アクセスを不能にするシステム初期化処理と、上記シス
テムの通常動作モードで稼動するプログラムによる上記
隠されたストレージ・ロケーションへのアクセスを防ぐ
手段と、上記システムの制限された動作モードで稼動す
るプログラムによる上記隠されたストレージ・ロケーシ
ョンへのアクセスを許可する手段とが含まれる。
う1つの例示的システムに、不揮発性ストレージからマ
スタ鍵を読み取り、次のシステム・リセットまでアクセ
スがもう一度使用可能にならないように、上記不揮発性
ストレージへのアクセスを閉じ、上記マスタ鍵から導出
された機密データを隠されたアドレス・スペースに書き
込むパワーオン・ソフトウェアが含まれ、上記システム
の制限された動作モードで稼動するプログラムだけが、
上記隠されたアドレス・スペース内の上記機密データへ
のアクセスを有する。
るアプリケーションへの暗号鍵の使用可能性を制限する
ことによって、アプリケーションに対してデータへの読
取および書込のアクセスを制御する例示的方法を提供す
る。この方法には、鍵と、上記アプリケーションがアク
セスを求める、封印された形または開封された形のデー
タを保持するAppContainerと、AppCo
deDigestを計算するために、呼出し側アプリケ
ーションを構成するバイトの部分の暗号ダイジェストを
実行するCryptoGateモジュールと、AppC
ontainerおよびAppCodeDigestを
検査し、上記アプリケーションが所与のAppCont
ainer内のデータを開封することを許可されるかど
うかを判定するために上記マスタ鍵を検査するか、デー
タを封印する時に保全性検査情報を追加するためにそれ
を変更する、保全性検査を含むCryptoEngin
eモジュールとが含まれる。
ションへの暗号鍵の使用可能性を制限することによって
上記アプリケーションに対してデータへのアクセスを制
御する方法も提供する。この方法は、CryptoEn
gineに既知の鍵と、上記アプリケーションがアクセ
スを求める、暗号的に封印された形のデータを含むアプ
リケーション・コンテナ・データ構造体と、Crypt
oGate機能であって、アプリケーションレベル・プ
ログラムと上記CryptoEngineとの間のすべ
てのアクセスをインターセプトし、暗号サービスまたは
データへのアクセスを試みているプログラムの実行可能
インメモリ・イメージのバイトの部分を検査する手段を
含み、上記アプリケーションのAppCodeDige
stを計算するために、呼出し側アプリケーションのイ
ンメモリ・イメージの上記バイトの部分の暗号ダイジェ
ストを計算するCryptoGate機能と、上記Cr
yptoEngineによって実行される保全性検査方
法であって、上記AppContainerおよびAp
pCodeDigestを検査し、上記アプリケーショ
ンが所与のAppContainerの上記データの開
封を許可されるかどうかを判定するために上記マスタ鍵
を検査するか、上記データを封印する時に上記保全性検
査情報を追加するためにそれを変更する保全性検査方法
とが含まれる。
別のコンピューティング・マシンの助けを得て認証サー
バを含む別のコンピューティング・マシンに対して識別
されたデバイス上の識別されたアプリケーションを認証
する方法も提供する。この方法には、エンロールメント
方法(enrollment method)、登録方法、および認証方法
が含まれる。
・オーソリティに送られる結果を作る上記デバイス上の
SMI中に実行される第1暗号オペレーションと、b)
上記デバイスによって受け取られる上記デバイス・オー
ソリティによって生成された値を処理する上記デバイス
上のSMI割込み中に実行される第2暗号オペレーショ
ンのステップが含まれる。
れる結果を作る上記デバイス上のSMI割込み中に実行
される第1暗号オペレーションと、b)認証方法中に使
用するために保管される暗号変数を作る上記認証サーバ
によって実行される第2暗号オペレーションと、c)上
記デバイスによって受け取られる上記認証サーバによっ
て生成された値を処理する上記デバイス上のSMI割込
み中に実行される任意選択の第3暗号オペレーションと
のステップが含まれる。
れる認証データを作る上記デバイス上のSMI割込み中
に実行される第1暗号オペレーションと、b)上記認証
の結果を判定するために、少なくとも上記登録方法中に
保管された上記暗号変数を使用して、上記デバイスから
受け取られた上記認証データに対して上記認証サーバに
よって実行される第2暗号オペレーションとのステップ
が含まれる。
れたアプリケーションを認証するか、PASSサーバを
含む別のコンピューティング・マシンに対して上記識別
されたデバイスのユーザを識別するための第2要因を提
供する方法も提供する。この方法には、アプリケーショ
ンであって、a)上記デバイス上のAppContai
nerを作成するためにデバイス・オーソリティおよび
認証サーバとの通信を含むエンロールメント方法を実行
し、上記AppContainerが、暗号的に上記ア
プリケーションと関連するデータ構造体であり、b)信
任証情報を保管し、上記認証サーバが、上記AppCo
ntainerのAppKeyまたはCustAppK
eyを保管するアプリケーションが含まれる。a)上記
信任証を保管する上記AppContainerを開封
するステップと、b)上記信任証を修正するステップ
と、c)上記AppContainerを再封印するス
テップと、d)識別情報および上記再封印されたApp
Containerの少なくとも一部を上記認証サーバ
に送るステップとを含み、上記再封印オペレーションの
少なくとも一部が、上記アプリケーションのコードを実
行するものと同一のCPU上のSMI中に行われる認証
方法を実行するアプリケーションが、上記識別されたデ
バイス上で稼動する。上記認証サーバが、a)上記識別
情報と上記AppContainerの少なくとも一部
とを受け取り、b)上記コンテナを開封するためにAp
pKeyまたはCustAppKeyをルックアップま
たは計算するために上記識別情報を使用し、c)開封さ
れたAppContainerが許容可能な値を有する
場合に、特定のデバイス上の上記特定のアプリケーショ
ンが、認証されたとみなされ、d)上記AppCont
ainerに関連する鍵(AppKeyまたはCust
AppKey)を保管する。
可、監査、またはディジタル権利管理の目的でデバイス
上で1つまたは複数の仮想トークンを作成し、使用する
方法を提供する。この方法には、仮想トークンの種類ご
とのアプリケーションと、特定の種類の仮想トークンご
とのAppContainerと、CryptoEng
ineコンポーネントの暗号サービスを要求している呼
出し側アプリケーションのAppCodeDigest
を計算するCryptoGateコンポーネントとが含
まれる。
が、1つまたは複数の長寿命の対称鍵を知る。上記Cr
yptoEngineが、CryptoGateコンポ
ーネントを介してアクセスされ、1つまたは複数の長寿
命の対称鍵および1つまたは複数の長寿命の公開鍵を知
り、AppContainerの暗号的封印および暗号
的開封を実行し、上記暗号オペレーションの一部が、S
MI割込み中に実行される。
が、上記CryptoEngineにロードされた公開
鍵およびAppCodeDigest値を使用して、上
記アプリケーションのコードまたは静的データの一部の
ディジタル署名を検査することによって、上記呼出し側
アプリケーションの保全性を検査する。上記AppCo
deDigest値が、上記呼出し側アプリケーション
のインメモリ・イメージの部分の最近計算された暗号ハ
ッシュを含む。
yptoEngineが、a)上記アプリケーション・
コンテナを開封する鍵を、上記マスタ鍵およびAppC
odeDigestおよび他の任意選択の情報から導出
し、b)上記AppContainerに対する上記メ
ッセージ認証コードを検査するのに上記導出された鍵を
使用し、上記メッセージ認証コードが正しい場合にエラ
ーを返し、c)上記AppContainerデータを
解読するのに上記導出された鍵を使用し、それを上記ア
プリケーションに返す。
ションに秘密鍵を安全に関連付ける方法であって、上記
デバイスに関連する対称鍵によって保護される秘密鍵を
含むAppContainerを作成することを含む方
法も提供する。
付図面と共に以下の詳細な説明を参照することによっ
て、より簡単に理解できる。添付図面では、同様の符号
が同様の構造要素を示す。
に、この説明で使用する定義を下に示す。
ムの前に実行され、オペレーティング・システムの稼働
中にアクセス可能であるBIOSレイ・ソフトウェア環
境を含む、デスクトップ、ラップトップ、ハンドヘル
ド、または無線計算機などのコンピューティング・デバ
イスである。
セキュリティ機能を使用可能にするのを助ける1つまた
は複数のサーバ・コンピューティング・マシンが含まれ
る。
知であり、いくつかの実施形態で1つまたは複数のデバ
イス・オーソリティ・マシンに既知である暗号変数であ
る。これは、暗号鍵として暗号化または保全性検査に直
接に使用するか、他の暗号変数または暗号鍵を計算する
関数への入力として使用することができる。
ケーション・コード・ダイジェストは、プログラムの実
行可能インメモリ・イメージのプログラムおよび/また
は静的データのバイトの部分の一方向暗号変換である。
変換は、SHA1、MD5、RIPEMD160、SH
A−256、SHA−512、またはCBC−MACな
どの関数によって実行することができる。
暗号鍵として暗号化または保全性検査に直接に使用する
か、他の暗号変数または暗号鍵を計算する関数への入力
として使用することができる暗号変数である。その値
は、装置/アプリケーション対に固有であり、(少なく
とも)マスタ鍵およびAppCodeDigestから
導出される。
バイス上で稼働中であってもなくてもよいアプリケーシ
ョン・システムのあるコンポーネントによって選択され
る暗号変数である。これは、特定の企業の認証サーバに
関連し、その企業ドメインでそのアプリケーションにつ
いて許可される多数のデバイスに関連付けることができ
る。
ョン鍵)は、AppKeyおよびCustSecret
から導出される暗号変数であり、暗号鍵として暗号化ま
たは保全性検査に直接に使用するか、他の暗号変数また
は暗号鍵を計算する関数への入力として使用することが
できる。
ーション・コンテナは、CustAppKeyまたはA
ppKeyを使用して暗号的に封印または開封すること
ができるデータ構造体であり、封印オペレーションによ
って、プライバシおよび保全性検査が提供され、任意選
択として、コンテナを封印したアプリケーションの識別
に関する認証性が提供される。
ン)は、パワーオン・セルフテスト中およびCrypt
oGateを介してのみアクセス可能な保護された環境
で暗号オペレーションを実行し、高保全性公開鍵の保管
およびリコール、少なくとも1つの長寿命の対称鍵(S
MK)の保管、長寿命の対称鍵からの対称鍵の導出、対
称鍵暗号(保全性プリミティブおよびプライバシ・プリ
ミティブの両方)および公開鍵暗号の実行、擬似乱数生
成、任意選択としての秘密鍵暗号、および任意選択とし
ての、鍵生成、鍵のインポート、および鍵のエクスポー
トなどの他の暗号サポート機能を行うことができる。
パ)は、アプリケーションレベル・プログラムとCry
ptoEngineの間のすべてのアクセスをインター
セプトし、暗号サービスまたはデータへのアクセスを試
みているプログラムの、プログラムの実行可能インメモ
リ・イメージおよび/またはその静的データのバイトの
部分を検査することができる。
は、特定のアプリケーションがCryptoGateお
よび/またはCryptoEngineによって提供さ
れるオペレーションの組を実行できるようにするデータ
構造体であり、このデータ構造体には、AppCode
Digestと、アプリケーションのコードおよび静的
データのうちでそのコード・ダイジェストに含まれる部
分を形成する部分の記述が含まれ、CryptoEng
ineによって検証できるディジタル署名が含まれる。
知られてはいない暗号変数を必要とする形でメッセージ
のバイトの部分に対して計算されるメッセージまたはデ
ータ構造体の保全性の検査に使用される値である。これ
のための周知のアルゴリズムには、CBC−MAC、D
MAC、およびHMAC(MD5およびSHA1などの
周知のハッシュ関数に基づく)が含まれる。
どのCPUによってサポートされる割込み機能であり、
これによって、BIOSレベルのソフトウェアが、CP
Uおよび、SMIモードの外で簡単には使用可能でない
永続的メモリ・アドレス・スペースへの排他的アクセス
を得ることができる。
一般に、コンピュータ・デバイス認証システム10のア
ーキテクチャには、1つまたは複数のデバイス・オーソ
リティと、クライアント暗号エンジン(CryptoE
ngine)と、理想的にはBIOSを使用する、ロッ
クされた不揮発性メモリおよびシステム管理モード(S
MM)と、オペレーティング・システム・ドライバ(O
SD)と、使用可能にされたクライアント・アプリケー
ション(Apps)と、認証サーバ(PASS)と、使
用可能にされたサーバ・アプリケーションが含まれる。
ライアント・デバイスとエンロールメント・サーバの間
で行われる。トランザクション・レベル・アプリケーシ
ョン・プログラム・インターフェース(API)が、拡
張されたデバイス認証機能をクライアント・サーバ・ア
プリケーションに与える。システムは、オンライン・ク
ライアント/サーバ・アプリケーションとオフライン・
スタンド・アローン機能の両方のセキュリティ機能をサ
ポートする。
アプリケーションのコンポーネントである。その主目的
は、セキュア・デバイス対応アプリケーションに関係す
る暗号機能を実行することである。これらの機能を実行
するために、認証サーバは、必要に応じて1つまたは複
数のデバイス・オーソリティ・サーバの援助を使用し
て、暗号対応クライアントと交換されるコンテナを封印
し、開封する。認証サーバは、鍵ID(KID)値のテ
ーブルを維持する。
に、デバイス識別子および鍵の登録を扱う。いくつかの
実施形態では、デバイスの秘密マスタ鍵が、デバイスと
1つまたは複数のデバイス・オーソリティの間で共有さ
れる秘密である。この場合には、デバイス・オーソリテ
ィが、認証サーバおよび他のアプリケーション・サーバ
の代わりに、秘密マスタ鍵へのアクセスを必要とするす
べての暗号オペレーションを実行しなければならない。
ポートを提供する。デバイス・オーソリティは、認証サ
ーバにAppKeyPartを配送する。サーバは、A
ppContainerの作成を可能にするアルゴリズ
ムを実装する。このアルゴリズムは、秘密マスタ鍵(S
MK)およびAppCodeDigest(ACD)へ
のアクセスを必要とし、秘密マスタ鍵が保管される計算
機で呼び出される。デバイス・オーソリティは、クライ
アントPC上でアプリケーションを得る方法と、それを
オペレーティング・システム・ドライバに登録させる方
法を定義する。これは、最初のAppContaine
rがデバイス・オーソリティ・サーバによって作成され
る限り、どのサーバからもオンラインで行われる。
ンのAppCodeDigestが作成される。これら
のユーティリティは、アプリケーションが稼動すると期
待されるものと同一のオペレーティング・システムで稼
動する。アプリケーションのAppCodeDiges
tは、データベース内で、アプリケーションに対する新
しいテーブルに保管される。AppCodeDiges
tは、AppContainerを生成するためにアク
セス可能である。公開鍵/秘密鍵対が、サーバのために
生成される。鍵対は、鍵生成ソフトウェアが理解する標
準規格を使用してインポートされ、エクスポートされ
る。データも、署名用の鍵対を使用して署名される。
タで使用可能なさまざまなハードウェア特徴を利用す
る、本発明で使用されるクライアント暗号エンジン(C
ryptoEngine)の複数の実施形態がある。
ンピュータ・デバイス認証システム10のコンポーネン
トを示す簡略化されたブロック図である。本発明の好ま
しい実施形態には、リセット時オープン・ラッチ保護機
構(OARロック)14によって保護された不揮発性メ
モリ(NVM)11、BIOS ROMシステム初期化
モジュール12、および、システム管理割込み(SM
I)を介してシステムのオペレーションの通常モードか
らアクセスされるシステム管理モード(SMM)16が
含まれる。
保管に使用される。BIOS ROMシステム初期化モ
ジュール12は、保護されたNVM11から、SMM1
6からのみアドレス可能な保護されたメモリ領域である
SMRAM13に秘密マスタ鍵を安全に転送する責任を
負う。秘密マスタ鍵がSMRAM13に転送された後
に、BIOS ROMシステム初期化モジュール12
が、OARロック14を閉じて、次のシステム・リセッ
トまで、保護されたNVM11をそのシステムで稼動す
るプログラム15からアクセス不能にする。秘密マスタ
鍵は、システムの通常動作中には、隠れたSMM16で
のみ使用可能になる。
NVM11が、起動時に稼動するBIOS ROMシス
テム初期化モジュール12以外のプログラム15によっ
て読み取られないようにする。保護されたNVM11を
読み取った後に、BIOSROMシステム初期化モジュ
ール12は、ラッチ14を閉じて、次のシステム・リセ
ットまで保護されたNVM11を完全にアクセス不能に
し、次のシステム・リセット時には、BIOS ROM
システム初期化モジュール12が制御を奪還する。
の、これを使用することの代替案が、BIOS ROM
ブート・ブロック内に秘密マスタ鍵の共有を保管するこ
とであり、このBIOS ROMブート・ブロックは、
通常は、BIOS ROMシステム初期化モジュール1
2内でのシステム・スタートアップ時のパワーオン/セ
ルフテスト・オペレーションの後にシステムによってア
ドレス不能になるようにマッピングされるROMの16
Kバイトの領域である。さまざまなレベルの保証を有す
る。システム・スタートアップ後に一般にアプリケーシ
ョンからアクセス可能でなくなる、他のロケーションも
ある。
る、Intel x86互換プロセッサの特殊なモード
である。ソフトウェア・デバッガは、SMIモードでシ
ングル・ステップすることができず、SMIモードであ
る時を除いてSMIメモリを見ることはできない。この
モードは、計算機の通常動作中にクライアントPC上で
秘密マスタ鍵を隠蔽し、計算機の真正の識別にバインド
される必要があるさまざまなセキュリティ目的のために
秘密マスタ鍵を使用するのに使用される。
ド、保護されたNVM11、およびSMM16)のどれ
もが、コンピュータ・デバイス認証システム10のオペ
レーションに絶対に必要ではないが、これらが一緒にな
って、コンピュータ・デバイス認証システム10に、セ
キュリティ・オペレーションの最高レベルの保証を与え
る。
同一の機能性が、より低いレベルの保証と共に提供され
る。この場合のオペレーションの制限されたモードは、
標準の「リング0」オペレーティング・システム保護で
あり、この場合、CryptoEngine機能が、オ
ペレーティング・システム・ドライバと称するシステム
・デバイス・ドライバの内部で実施される。オペレーテ
ィング・システム・ドライバは、SMIモードで稼動す
るのではないので、BIOS拡張製品ほどセキュアでは
ない。したがって、特別な追加の修正技法および不明瞭
化(obfuscation)技法も、発見され、コピ
ーされることから秘密マスタ鍵を保護するために、製品
のソフトウェアのみの形態に含まれる。さらに、秘密マ
スタ鍵が、マザーボードではなくファイル・システムに
保管されるので、追加のデバイス検出をオペレーティン
グ・システム・ドライバに追加して、秘密マスタ鍵をパ
ーソナル・コンピュータにバインドする。
SMIモードで稼動しない実施形態では、コードに、リ
バース・エンジニアリングおよび「ハッキング」をより
困難にする目的の特殊な特徴が含まれる。
フトウェア形態では、さまざまな技術を使用して、秘密
マスタ鍵およびコア暗号オペレーションに関する最強の
可能な保護を提供する。
ンディングを提供する。秘密マスタ鍵と計算機の間に関
連があり、その結果、秘密マスタ鍵を、ある計算機から
別の計算機に転送できないようになっている。この関連
は、計算機のメトリックスに基づき、ユーザが、秘密マ
スタ鍵を使用する能力を失わずに自分の計算機をゆっく
りとアップグレードできるようなっている。マスタ鍵
が、システム内の特定のハード・ディスク・ドライブに
バインドされている時には、ハード・ドライブの再フォ
ーマットまたは別のシステムとの交換によって、秘密マ
スタ鍵の使用が不可能になる。
鍵の制限された露出(開示)を提供する。この設計で
は、どのオペレーションについても、秘密マスタ鍵およ
びセッション鍵を使用する時のそれらの露出が制限され
る。
トウェアCryptoEngineが、SMIメモリに
秘密マスタ鍵を隠蔽する能力またはBIOSで可能であ
るようにSMIモードでのコード・オペレーションを見
ることを使用不能にする能力を有することができるとい
う事実に起因して、ソフトウェアCryptoEngi
neコードでは、ハッキングを抑止するための追加の方
法が使用される。さらに、ソフトウェアCryptoE
ngineでは、一般的なプログラムが秘密マスタ鍵を
判定できなくする、秘密マスタ鍵を保管する技法が使用
される。
論ずるが、デバイス・オーソリティ・コンポーネント
は、下記の機能を実行する。デバイス・オーソリティ
は、デバイスをエンロールし、そのSMKmレジスタ・
アプリケーションを、アプリケーション/デバイス対に
固有のAppKeyを提供することによってデバイスに
保管する。デバイス・オーソリティおよびそれに伴うモ
ジュールを、ここで簡単に説明し、後で詳細に説明す
る。
はMicrosoft Windowsベースのパーソ
ナル・コンピュータ(PC)で稼動する、暗号対応アプ
リケーションである。クライアント・アプリケーション
を用いて、ユーザは、デバイスがエンロールされたかど
うかのテストと、デバイスのエンロールおよびその鍵I
Dの表示と、デバイス上のアプリケーションの登録と、
作成、編集、および削除を含むAppContaine
rの操作と、認証サーバへのAppContainer
のポストと、認証サーバからのAppContaine
rの取得と、デバイスのエンロール解除を行えるように
なる。
対応アプリケーションのサーバ部分のコンポーネントで
ある。認証サーバは、クライアントから来るものを認証
する責任を負う。認証サーバは、クライアント・デバイ
スから登録に関する要求を受け取り、アプリケーション
登録モジュールにAppKeyを要求し、それを保管
し、AppContainerを作成し、クライアント
・デバイスに送り、ユーザ・インターフェース(UI)
を介してAppContainerを操作(作成、編
集、封印、および開封)するためのUIを提供し、Ap
pContainerをクライアント・デバイスから受
け取る、ソフトウェア・コンポーネントである。
ーネントから構成され、少なくとも下記の機能性を有す
る。エンロールメント・モジュールは、デバイスをエン
ロールする要求を受け取る。このモジュールは、クライ
アントに秘密マスタ鍵の半分を渡し、残りの半分を生成
し、クライアント・デバイスに返す。アプリケーション
登録モジュールは、AppKeyの要求を受け取り、A
ppKeyを作成し、呼出し側に返す。
なわち、デバイス・オーソリティを含むシステムをテス
トする時に実行されるとユーザが期待できるオペレーシ
ョンである。基本的な概念は、ユーザが、クライアント
・デバイスをエンロールし(デバイス・オーソリティの
エンロール・モジュールを用いて)、アプリケーション
を登録し、そのデバイスに対するAppContain
erを作成し、編集し、封印し、開封する(デバイス・
オーソリティのアプリケーション登録モジュールを用い
て)ことである。ユーザは、AppContainer
を認証サーバに送ることもでき、この認証サーバでは、
アプリケーション登録モジュールによって生成されたA
ppKeyを使用して、AppContainerを操
作することができる。認証サーバの機能性は、デバイス
・オーソリティによって使用可能にされる。
pContainer 転送<-->PASSサーバ クライアントPC<-->エンロールメント<-->デバイス・
オーソリティ・サーバ 下に、システムを用いるためにユーザによって行われる
アクションを示す。
ントは、次の通りである。デバイスをエンロールするた
めに、ユーザは、クライアント・アプリケーションを使
用して下記のアクションを実行する。
トする。すなわち、Test for enrollm
ent(エンロールメントに関するテスト)オプション
を使用して、デバイスが前にエンロールされていないこ
とを確認する。デバイスがエンロールされており、ユー
ザが再エンロールを望む場合には、アプリケーションで
Un−enroll(エンロール解除)オプションが選
択される。
ョンを選択する。このオプションでは、エンロールメン
ト・サーバに連絡し、デバイスの秘密マスタ鍵を生成す
る。秘密マスタ鍵が、クライアントPCに返され、保管
される(保管される場所は、暗号システムのどのバージ
ョンが使用されるかに依存する)。ダイアログが表示さ
れ、デバイスがエンロールされたことが示される。
たことを、デバイス・オーソリティ・ログで検証する。
ユーザは、デバイス・オーソリティのエンロールメント
・ユーザ・インターフェースを使用して検査して、新し
い秘密鍵が作成されたことを示すことができる。
は、次の通りである。次のアクションに進むために、ユ
ーザは、エンロールされたクライアント・デバイスを有
する必要がある。
録を開始するために登録オプションを選択する。この時
点で、ユーザに、アプリケーションおよびデバイスの組
み合わせの識別子(ADID)についてプロンプトが出
される。
ーション登録モジュールに送られる。アプリケーション
登録モジュールは、AppKeyを生成し、これが認証
サーバに返される。
ルのログを検査することができる。ユーザは、アプリケ
ーション登録モジュール・ユーザ・インターフェースを
使用して、AppKeyがアプリケーションについて生
成されたことを検査する。
を検査することができる。ユーザは、認証サーバが、現
在、デバイス上で稼動しているアプリケーションのイン
スタンスに関するAppKeyを有することを検査す
る。
それが現在AppContainerを有することを検
証することができる。クライアント・デバイスのApp
Containerメニューを介して、ユーザは、自分
がAppContainerを有することの視覚的確認
を見る。
オペレーションは、次の通りである。以下は、ユーザが
AppContainerを用いてクライアント・デバ
イスで行うことができるものの議論である。登録の後
に、ユーザは、認証サーバによって作成された、デバイ
ス上の1つのAppContainerを有する。
用いて、ユーザが、サーバにAppContainer
を送ることができ、下で説明する認証サーバにAppC
ontainerを要求することができる。これらのオ
プションの意図は、クライアントと認証サーバの間の通
常のトランザクションを説明する方法を提供することで
ある。説明の最良の方法は、例を用いることである。
分の仮想現金入れ引出しに金を追加することを望む。現
在の収支が、AppContainerに保管される。
ユーザは、Cash Drawer(現金入れ引出し)
アプリケーションのAddCash(現金追加)オプシ
ョンを選択し、AppContainerが、共に、認
証サーバ(Cash Drawerプロバイダによって
運営される)で稼動するAddCashスクリプトに送
られる。AppContainerがオープンされ、デ
ータが変更され、ユーザに返され、このすべてが、おそ
らくは同一のトランザクションで行われる。
・オーソリティ顧客が、クライアントと認証サーバの両
方で何がおきているかを見る能力を有し、自分でApp
Containerを操作し、自分のペースで自分自身
のデータを追加し、ログなどを調査して確認する。した
がって、AppContainerがサーバに送られ、
事前に定義されたデータが変更され、その後にクライア
ントに返される1つの原子的トランザクションではな
く、ユーザがクライアント・デバイスからこの作業を開
始できるようにする諸機能が提供される。ユーザは、ク
ライアント側でオプションを選択して、AppCont
ainerをサーバに送ることができる。ユーザは、そ
の後、サーバに行き、それがそこにあることを検査し、
それに含まれるデータを変更し、再封印する。ユーザ
は、その後、クライアントPCに戻り、AppCont
ainerをGETする。
コンテナをプッシュさせるのではなく、クライアントが
データをプルする。
スト、AppContainerの編集、認証サーバへ
のAppContainerの送信、認証サーバからの
AppContainerの取得、AppContai
nerの作成、およびAppContainerの削除
を行えるようにする、クライアント・アプリケーション
側のAppContainerメニューがある。
(AppContainerをリストする)。すべての
AppContainersが、アプリケーションによ
って、クライアント・デバイスのデフォルト・ディレク
トリに保管される。ListAppContainer
sオプションを選択することによって、すべてのコンテ
ナを表示することができる(おそらくは、それを作成し
たアプリケーションを識別するデータと共に)。ユーザ
は、リスト内のAppContainerを強調表示
し、次の2つのオプションの1つを選択することができ
る。
ppContainerを編集する)。アプリケーショ
ンは、AppContainerが現在封印されている
ことをユーザに警告し、その開封を試みるオプションを
与える。開封に成功する場合には、AppContai
nerの内容が、テキスト・ボックスに表示され、編集
可能になる。ユーザが、AppContainerのい
ずれかを変更し、そのAppContainerをクロ
ーズする場合に、ユーザに、AppContainer
を封印するオプションが与えられる。
o the authentication serv
er(認証サーバにAppContainerを送
る)。ユーザは、AppContainerを認証サー
バに送る。これによって、ユーザが、認証サーバに行
き、AppContainerの操作を試みることがで
きるようになる。
om the authentication ser
ver(認証サーバからAppContainerを得
る)。ユーザは、認証サーバに特定のファイルを要求す
ることができる。
(AppContainerを作成する)。ユーザは、
自分自身のAppContainerを作成できなけれ
ばならない。ユーザがこのオプションを選択した時に、
上で説明したEdit AppContainerオプ
ションに類似する機能が使用可能になる。
(AppContainerを削除する)。これは、暗
号機能ではないが、システムを整頓するのを助けるため
に使用可能である。
rオペレーションを、これから説明する。認証サーバ
は、ユーザがさまざまな作業を実行できるようにする2
つのユーザ・インターフェース(AppKeysログお
よびAppContainers)を提示する。
求された時に何かが実際に起こっていることをユーザに
示すのに使用される。これを用いて、ユーザが情報に関
して何かを行うことはできない。これは、AppKey
要求が、識別子を有するクライアント・デバイスから受
け取られたことと、AppKeyが保管されたことを示
すログ・ビューアとすることができる。これは、日付/
時刻、要求元クライアント・デバイスのIPアドレス、
KID、結果のAppKeyなどの情報を示すことがで
きる。
ターフェースは、クライアント・デバイス・アプリケー
ションのユーザ・インターフェースに類似するオプショ
ンを提供する。ユーザは、AppContainerの
リスト、AppContainerの作成、およびAp
pContainerの削除を行うことができる。
(AppContainerをリストする)では、認証
サーバに保管されたすべてのAppContainer
が、それが属するアプリケーションの識別と共にリスト
される。AppContainerを選択すると、その
AppContainerの内容を編集する能力を提供
するもう1つのページが表示される。
(AppContainerを作成する)を使用して、
ユーザは、クライアント・デバイス用のAppCont
ainerを作成する(デバイスが、その後、それを要
求することができる)。Delete AppCont
ainer(AppContainerを削除する)機
能は、暗号機能ではないが、システムを整頓するのを助
けるために使用可能である。
リケーション登録モジュールは、要求されたマスタ鍵、
AppKeyなどに関する情報を提供するユーザ・イン
ターフェース/ログ・ビューアを有する。
サーバは、さまざまなコンポーネントの保護を容易にす
るために、その機能性を分割されている。主な発想は、
鍵が絶対にネットワークに出ないことである。
リ、およびエンロールメント・コードが含まれる。鍵
(秘密マスタ鍵、サーバのPrivateKey)は、
暗号機能と鍵データベースを組み合わせたセキュア・ボ
ックスに保管されることが好ましい。暗号ライブラリ
は、認証サーバに、さまざまなコンテナに対する生のオ
ペレーション(enc、decなど)を実行するのに必
要なルーチンを与える。エンロールメント機能は、シス
テム内で最も機密性の高いデータである秘密マスタ鍵を
生成する。エンロールメント・コードは、秘密マスタ鍵
を保護し、これらを、エンロールするクライアント・デ
バイスに安全に配送する。
る。
の背後にあるものは、次の通りである。 HTTPサーバ−Enrollment.protoc
olHandler(+containerクラス)を
実行するサーバ 許可されないトラフィックが鍵サーバによって受け取ら
れないようにするもう1つの論理的ファイヤウォールの
背後にあるものは、次の通りである。 Enrollment.getSmk(+contai
nerクラス)を実行する鍵DBおよびRSA−Bsa
fe Cryptoライブラリを有する鍵サーバ
およびルート鍵という3つの秘密鍵が安全に保管され
る。ルート鍵は、新しい低位鍵に署名するのに使用され
る。これらの鍵は、スタートアップ時に暗号モジュール
がロードする暗号化されたファイルに保管することがで
きる。
生成される秘密マスタ鍵は、データベースに保管され
る。デバイス・オーソリティが、秘密マスタ鍵を生成す
る。このコードは、エンロールメントのサーブレット/
プロトコル処理部分からpubic(mkc(clie
ntSeed))を受け取る。
機能性は、エンロールメント要求を処理することであ
る。enrollment.protocolHand
ler関数が、ネットワークからコンテナを入手し、そ
れらを暗号サーバに渡し、その結果、enrollme
nt.genSmkコードが、鍵情報を他者に露出せず
に作業を行えるようになる。
る。
理フローは次の通りである。 (1)エンロールメント・サーブレットが、クライアン
トによって呼び出される。 (2)エンロールメント・サーブレットが、RMIを介
してセキュア・サーバ上でEnrollmentクラス
をインスタンス化する。InputStreamが、セ
キュア・サーバ上のEnrollmentオブジェクト
に引数として渡される。 (3)セキュア・サーバ上のEnrollmentオブ
ジェクトが、以下の処理に進む。 受け取ったInputStreamをコンストラクタ引
数として用いて、PubKContainerクラスを
構築する。PubKコンテナからMKコンテナのインス
タンスを得る。MKコンテナからSMKクライアント・
シードを抽出する。ランダムSMKサーバ・シード(す
なわちSMKのサーバ部分)を生成する。SMClie
ntSeedをSMKServerSeedに連結し
て、マスタ鍵を生成する。連結は、SMKClient
Seed + SMKServerSeedでこの順番
である。MKコンテナ・オブジェクトの適当なオペコー
ドおよびデータ(SMKServerSide)をセッ
トする。前のステップで形成されたマスタ鍵に対してS
HA1を実行することによって鍵IDを生成する。マス
タ鍵および鍵IDをBigIntegerに変換し、デ
ータベースに保管する。得られたMKContaine
rオブジェクトを封印する。セキュア・サーバからウェ
ブ・サーバ(すなわち、呼出し元のエンロールメント・
サーブレット)に送られるバイトのアレイの形で生デー
タを得る。エンロールメント・サーブレットが、生のバ
イトをInputStreamに変換し、Http応答
としてクライアントに送る。
ものである。好ましい実施形態では、肯定応答サーブレ
ットが、クライアント応答を待ち(すなわち、SMKS
erverシードを成功裡に受信した)、その後、永久
的な秘密マスタ鍵についてデータベース・テーブルを更
新する。
れから説明する。
はMicrosoft WindowsベースのPC上
で稼動するアプリケーションである。このアプリケーシ
ョンは、暗号機能を使用するために、オペレーティング
・システム・ドライバによって呼び出されるカーネル・
モード・デバイス・ドライバにインターフェースする。
る。初期化、エンロールメントのテスト、デバイスのエ
ンロール、デバイス上のアプリケーションの登録、Ap
pContainerのリスト、AppContain
erの編集、AppContainerの保存、認証サ
ーバへのAppContainerのポスト、認証サー
バからのAppContainerの入手、AppCo
ntainerの新規作成、およびデバイスのエンロー
ル解除。
呼び出された時に、自動的に下記を実行する。オペレー
ティング・システム・ドライバのロードと、登録された
アプリケーションとしてアプリケーションにセット・ア
ップさせるためのOsdRegisterApplic
ationの呼出し。
etCapabilitiesの呼出しによって、返さ
れるCapabilitiesパラメータを検査して、
デバイスが既にエンロールされているかどうかを調べ、
デバイスがエンロールされているか否かを示すダイアロ
グを表示する。
nrollGenerateRequestを呼び出し
て、封印されたPubKContainerを入手し、
デバイス・オーソリティのEnrollment UR
LにHTTP要求を送り、要求の本体でPubKCon
tainerを渡し、応答コードを検査して、オペレー
ションが成功したことを確認する。成功の場合には、返
された内容を、OsdEnrollProcessRe
sponseへの呼出しのMKContainerパラ
メータとして渡し、エンロールメントが成功であったか
否かを示すダイアログを表示する。
には、OsdGetCapabilitiesを呼び出
し、返されるCapabilitiesパラメータを検
査して、デバイスが既にエンロールされているかどうか
を調べる。そうでない場合には、上で定義したようにデ
バイスをエンロールする。ユーザに、アプリケーション
/デバイスの組み合わせを識別する文字列(ADID)
を求めるプロンプトを出す。PubKContaine
rを作成し、これを登録に使用する。デバイス・オーソ
リティのRegisterApp URLにHTTP要
求を送り、要求の本体でPubKContainerお
よびADIDを渡す。応答コードを検査して、オペレー
ションが成功であったことを確認する。成功の場合に
は、結果のデータはAppContainerである。
そのAppContainerをデフォルト・ディレク
トリに保管する。
管されたAppContainerを表示することがで
き、AppContainerを強調表示する能力を有
する。
表示されたAppContainerを編集する能力、
強調表示されたAppContainerを削除する能
力、強調表示されたAppContainerを認証サ
ーバに送る能力、およびAppContainerを新
規作成する能力を(メニュー・オプション、ボタンなど
を介して)提供する。
は、まずAppContainerをUnseal(開
封)するが、これはOsdAppContainerU
nseal関数を呼び出し、AppContainer
ファイルの内容をpContainerBufferパ
ラメータに渡すことによって行われ、OsdAppCo
ntainerUnsealが不成功の場合にはエラー
・ダイアログを表示する。AppContainer構
造体を解析してDataフィールドを入手する。エディ
ット・ボックス内にAppContainerの内容を
表示して、ユーザがデータを変更できるようにする。A
ppContainerに対する変更を保存するか破棄
する能力を提供する。
は、AppContainerを封印し、AppCon
tainer構造体を再構築し、OsdAppCont
ainerSeal関数を呼び出し、開封されたApp
Container構造体の内容をpContaine
rBufferパラメータで渡し、OsdAppCon
tainerSealが不成功の場合にはエラー・ダイ
アログを表示する。封印されたAppContaine
r構造体をファイルに保管する。
ポストするには、HeresAnAppContain
erForYa関数のURLにHTTP要求を送り、要
求の本体で強調表示されたAppContainerフ
ァイルの内容を渡し、HTTP要求の状況を検査し、成
功または失敗に関するダイアログを表示する。
を入手するために、ダイアログ・ボックスを設けて、ユ
ーザが、サーバ側のダウンロードされるファイルを選択
できるようにし、HTTP要求をOiGiveMeAn
AppContainer関数のURLに送り、要求の
本体で要求されたAppContainerファイルの
内容を渡す。HTTP要求の状況を検査し、成功または
失敗に関するダイアログを表示する。ファイルが上書き
されようとしている場合には、元のファイルを上書きす
ることに関するプロンプトをユーザに出す。
には、既存のAppContainerファイルをオー
プンし、AppContainerを開封し、データブ
ロックを0にし、ユーザがデータを編集できるように
し、その後、Save AppContainer機能
に従う(ファイルを、ユーザによって指定される新しい
ファイル名として保存する)。
dRegisterApplicationを呼び出し
て、アプリケーションに登録済みアプリケーションとし
てセット・アップさせ、OsdGetCapabili
tiesを呼び出して、返されるCapabiliti
esワードを検査して、デバイスが既にエンロールされ
ているかどうかを調べる。デバイスが既にエンロールさ
れている場合には、OsdInvalidateSMK
を呼び出す。
る機能性は、次の通りである。認証サーバは、デバイス
/アプリケーションの組合せを登録することができる。
クライアント・デバイスは、要求の本体にPubKCo
ntainerおよびADIDを含む要求を、OiRe
gisterMe関数のURLに送る。認証サーバは、
要求を送り、ARMサーバに転送する。ARMサーバ
は、AppKeyを生成し、返し、このAppKey
が、認証サーバによって、ADIDに対して保管されな
ければならない。その後、認証サーバは、新たに生成さ
れたAppKeyを使用してAppContainer
を作成し、クライアント・デバイスに送り返す。これに
よって、登録が完了する。上記のすべてが、クライアン
ト、認証サーバ、およびアプリケーション登録モジュー
ルの間の単一のトランザクションで行われる。
を介してAppConrainerを操作する(作成、
編集、封印、および開封)ユーザ・インターフェースを
提供する。認証サーバは、ユーザがAppContai
nerを操作できるようにするユーザ・インターフェー
スを提供する。これは、HTMLと、Java(登録商
標)で記述されたコードを有するJavaサーブレット
を使用して、AppContainerの封印、開封な
どを行えるようにすることによって行うことができる。
クライアント上で稼動するアプリケーションのセクショ
ンでの定義に従って、List AppContain
ersおよびEdit AppContainersを
行うためにページが必要である。
らAppContainerを受け取ることができる。
クライアント・デバイスは、AppContainer
を認証サーバに送ることを可能にする機能を有する。こ
れが発生することを可能にするために、エントリ・ポイ
ントが認証サーバ側に存在する。これは、入力ストリー
ムを読み取り、データをファイル名と共にファイルに保
管するサーブレットを使用するか、さらに簡単に、認証
サーバ上でHTTPのPUTメソッドを使用可能にする
ことによって、行うことができる。
ンテナは、情報を保持するのに使用される構造体であ
る。この情報は、署名するか、暗号化するか、その両方
を行うことができる。セキュリティを高めるために、さ
まざまなタイプのコンテナが使用可能である。これらの
コンテナの一部は、署名されたデータだけに使用され
る。一部のコンテナは、暗号化されたデータを保持す
る。暗号化されたコンテナ内であっても、それらは、使
用された暗号化アルゴリズムに依存する複数のサブタイ
プである。コンテナには4つの種類がある。
鍵(署名側の鍵対からの)によってディジタル署名さ
れ、揃いの公開鍵(クライアント側では公開鍵がROM
/フラッシュに保管される)を用いて検証することがで
きるデータを保持する。これらは、認証されたデータを
デバイス・オーソリティ・サーバからクライアント計算
機に送り、ソフトウェア・モジュールがデバイス・オー
ソリティ・クライアント・サービスを使用することを許
可するのに使用される。
機で稼動する特定のアプリケーション・プログラムによ
ってのみ読取または書込が可能である保護されたコンテ
ナである。これらのコンテナでは、それを封印したプロ
グラムが識別され、別のプログラムがコンテナを開封す
ることを許可することが可能であり、したがって、これ
らのコンテナは、安全な形のプロセス間通信として使用
することもできる。ウィルス変更、ソフトウェア・ライ
センス交付、およびセキュア・ウォレットなどの高水準
セキュリティ機能性は、AppContainerの上
で構築することができる。一般に、AppContai
nerは、暗号化用の秘密マスタ鍵の導出物を使用する
ことによって、所与の計算機にバインドされる。
開鍵(通信鍵対からの)を用いてクライアント(OS
D)によって封印され、揃いの秘密鍵を有する受信側
(一般にデバイス・ドライバ・オーソリティ・サーバ)
によってのみ読み取ることができる、ディジタル封筒で
ある。これらは、エンロールメント中およびクライアン
トと認証されたデバイス・オーソリティ・サーバとの間
の暗号化されたチャネルのセット・アップのために使用
される。このコンテナの内部のデータは、オペレーティ
ング・システム・ドライバによってランダムに生成され
る128ビットc暗号鍵(この製品内ではマスタ鍵とも
称する)を用いて暗号化される。RC6鍵(マスタ鍵)
およびクライアントの鍵ID(KID)は、受信側の公
開鍵(サーバの通信PubKey)を用いて暗号化され
る。
を書くものと読むものに既知のマスタ鍵(クライアント
によって作成されPubKContaine内で送られ
る)に基づくディジタル封筒の一部として使用される。
これらは、マスタ鍵がPubKContainerを介
してサーバに送られた後に、クライアントとデバイス・
オーソリティ・サーバの間の安全な通信に使用すること
ができる。これらは、クライアント計算機でデータをロ
ーカルに保護するのに使用することもできる。
て実行することができる事前に定義されたオペレーショ
ンの組を有する。このオペレーションが、封印および開
封である。
きる(卒業証書に大学の封印があるが、誰もが卒業証書
の内容を読むことができるのと同様に)。封印は、暗号
化とすることもできる(ある賞の勝者を含む封筒が封印
され、その結果、開封しなければ誰も内容を見られない
のと同様に)。
とである。これは、封印がオリジナルであることを検証
することとすることができる(ほとんど再生不能であ
り、検証することができる特徴である、卒業証書の封印
と同様に)。開封は、隠された内容の露出とすることも
できる(勝者の場合には、隠された内容に達することが
かなり簡単である)。
テナ構造体を、その開封された版で示し、その後、封印
オペレーションを説明する。その後、封印された構造体
を示し、開封オペレーションを説明する。オペレーショ
ンがなんらかの理由で失敗した場合には、コンテナが0
クリアされる。
る機能を明細に記す。小さい組のコンテナ・タイプによ
って、a)通信セキュリティ、b)システム保全性、お
よびc)アプリケーション固有の保護されたコンテナが
サポートされる。本発明によって提供される機能を用い
ると、特定のデバイス上でのみ意味を持つデータ・コン
テナまたはコマンドの作成を可能にするためにクライア
ントとデバイス・オーソリティ・サーバの間で秘密マス
タ鍵を作成し、ユーザではなくプログラムの識別に基づ
いてデータへのアクセスを制御し、許可されたデバイス
・オーソリティ・サーバから来る情報を認証し、特定の
デバイスから来る情報を認証し、タンパ・プルーフな秘
密を保つ必要があるアプリケーション・プログラムの保
護された実行環境をサポートし、特定のプログラムによ
ってのみ上書きすることができるデータ・ストレージ区
域をサポートすることができるようになる。
る。保護されたコンテナは、低水準BIOSコードおよ
びOSレイヤ・ドライバ(OSD)コード(たとえばW
in98のVxD)によって実装される。BIOSコー
ドの一部は、システム管理割込み(SMI)を介して呼
び出されるルーチンによって使用される、システム管理
メモリ(SMM)内の情報をセット・アップするため
に、POST中に稼動する。SMIルーチンは、フラッ
シュROMからの公開鍵を使用するRSAオペレーショ
ンを実行し、したがって、これは、タンパリングが非常
に困難である。SMIルーチンは、そのデバイスとデバ
イス・オーソリティ・サーバに既知の秘密のRC6鍵で
ある秘密マスタ鍵の隠蔽および管理も行う。暗号プリミ
ティブが、この単一の128ビットマスタ鍵から複数の
鍵を導出し、各鍵は、単一の目的に使用される。SMI
ルーチンは、その呼出し元を認証し、許可されたオペレ
ーティング・システム・ドライバ・モジュールに関する
サービスだけを実行する。
を知っており、したがって、サーバがメッセージに署名
したことを検証することができる。というのは、サーバ
が、揃いの秘密鍵を知っている唯一の存在だからであ
る。秘密マスタ鍵は、各デバイスに一意であり、そのデ
バイスとサーバだけに既知である。メッセージが、秘密
マスタ鍵によって正しく保護される場合には、そのメッ
セージは、サーバまたは一意の秘密マスタ鍵を有するク
ライアントのいずれかから来たものでなければならな
い。クライアントは、秘密マスタ鍵のSHA1ダイジェ
ストである20バイトの鍵識別子を使用して、それ自体
を識別する。SHA1関数は、鍵IDを知ることが、攻
撃者が秘密マスタ鍵を見つけるのを助けず、可能なすべ
てのマスタ鍵を試して、観察された鍵IDが作られるか
どうかを調べる以外にないという意味で、一方向であ
る。この手法が実用的になるためには、秘密マスタ鍵の
値が多すぎる(2の128乗)。
鍵の助けを借りて保護される。各コンテナは、秘密マス
タ鍵およびコンテナを所有するプログラムのコードのダ
イジェストの関数である鍵を用いて暗号化される。この
設計では、SMIレベル・コードが、コンテナを作成し
たプログラム用のコンテナだけを開封することが保証さ
れる。デバイス・オーソリティ・サーバは、特定の計算
機上の特定のプログラムの最初のコンテナの作成に関係
しなければならない。
イバ・コードは、コンテナ抽象化をサポートし、SMI
ルーチンには不可能なオペレーションを実行する。たと
えば、SMIルーチンは、ページ・フォールトを扱うこ
とができないので、オペレーティング・システム・ドラ
イバ・ルーチンが、SMIルーチンを呼び出す前に、ロ
ックされたメモリにパラメータをコピーしなければなら
ない。オペレーティング・システム・ドライバ・ルーチ
ンは、SMIルーチンよりも長い時間期間にわたって稼
動することもできる。
ング・システム・ドライバを、WDLの一部としてシー
ケンサによってダウンロードすることができる。WDL
のインストールおよび初期化の処理には、保護されたコ
ンテナに必要なマスタ鍵のセット・アップが含まれる。
トするのに使用されるプロトコルは、この文書で説明す
る4種類のコンテナに大きく頼る。たとえば、マスタ鍵
を作成するエンロールメント・プロトコルは、デバイス
・オーソリティ・サーバとのこれらのコンテナの交換に
基づく。
自体およびクライアントとデバイス・オーソリティ・サ
ーバの間の両方で、プログラムおよびデータのプライバ
シ、保全性、および認証を提供するのに暗号鍵が使用さ
れる。存在する鍵と、信頼およびセキュリティを確立す
るための鍵の使用法をこれから説明する。
る。公開鍵/秘密鍵対は、特定のクライアント・システ
ムに関連する必要がないデータを安全にやり取りするの
に使用される。これらは、主に、あるクライアントから
デバイス・オーソリティ・サーバにおよびその逆に転送
されるデータが、真正であることを保証するのに使用さ
れ、データがプライベートである(暗号化される)こと
を容易にする。これらの鍵は、製造時にROMに含めら
れる。
のRSA鍵対の秘密鍵を保持し、これらの秘密鍵は、異
なる目的に使用され、サーバ環境の異なる場所に保管さ
れる。クライアント・システムは、これらの鍵対の公開
鍵を保持し、ROMに保管される。標準の(強い)暗号
について、これらの鍵対のそれぞれの1024ビット版
が使用される。3つの鍵対は次の通りである。
接続されていない、デバイス・オーソリティによって制
御される計算機に保管される。揃いの公開鍵は、クライ
アント計算機のROMに保管される。秘密ルート鍵は、
新しい公開鍵に署名するのに使用され、この公開鍵が、
古い公開鍵と置換するためにクライアント計算機に送ら
れる。ROM内の古い鍵を置換する方法は、この文書の
範囲外である。これらのルート鍵は、頻繁には使用され
ない。公開鍵は、署名されたコンテナと共にクライアン
ト計算機で使用される。
ばれ、動的データ署名に使用される。秘密鍵は、デバイ
ス・オーソリティ・サーバに保管され、クライアントと
のセキュア通信を確立するのに使用される。秘密鍵は、
クライアントによって送られた鍵(および他のデータ)
を開封するか、クライアントによって検証される動的に
作成されたメッセージに署名するのに使用することがで
きる。これは、PubKContainerと共に使用
される。すべてのクライアントが、そのBIOS RO
Mに保管された揃いの公開鍵のコピーを有する。
トから直接にアクセス可能でないデバイス・オーソリテ
ィ署名計算機に保管される。秘密鍵は、ダウンロードさ
れたファイル(プログラムおよび構成データ)に署名す
るのに使用され、このダウンロードされたファイルは、
その後、デバイス・オーソリティ・サーバに配置され、
最終的にクライアント計算機に送られる。すべてのクラ
イアント計算機が、揃いの公開鍵を有し、したがって、
秘密鍵によって作成された署名を検証することができ
る。署名用鍵対は、ソフトウェア・コンポーネントの新
しいリリースなどの静的情報を強く認証するのに使用さ
れる。秘密鍵は、インターネットからアクセス可能では
ないので、保護が簡単である。
署名されたコンテナと共に使用される。上記のオペレー
ションのすべてについて1つの鍵対だけを使用すること
が可能である。しかし、異なる目的に複数の鍵対を使用
することは、攻撃がシステム全体を成功裡に破壊する可
能性を減らす、安価で簡単な方法である。
に同一の鍵が使用されるという点で、対称鍵である。
称鍵の作成の基礎として使用される。これらの鍵は、一
般に、クライアントとサーバの間の単一の通信中に使用
される。これらは、セッション鍵と同等である。
ステムに関連する必要があるデータを安全にやり取りす
るのに使用される。秘密マスタ鍵は、一意であり、クラ
イアント・システムを認証するのに使用される。秘密マ
スタ鍵は、クライアント・システムを一意に識別するの
で重要である。これは、暗号化/解読アルゴリズムで使
用される他の対称鍵の作成の基礎として使用される。秘
密マスタ鍵は、エンロールメント処理中にデバイス・オ
ーソリティ・サーバによって作成され、クライアントに
送られる。
ーバおよびクライアント・システム上の暗号ROMコン
ポーネントのみによってアクセス可能である。ROMコ
ンポーネントは、システム管理モード(SMM)で稼動
し、このSMMは、ソフトウェア・デバッガによってト
レースすることができない、x86プロセッサの特殊な
モードである。
上で、AppContainerの封印および開封に使
用される。秘密マスタ鍵は、1つの計算機にバインドさ
れ、転送可能であってはならない(最初にデバイス・オ
ーソリティ・サーバに転送され、その後、別のクライア
ントに転送される場合を除く)。秘密マスタ鍵は、絶対
に通常のシステム・メモリ内で露出されてはならない。
したがって、秘密マスタ鍵は、ハッカーによって取り込
まれ別の計算機に転送される可能性がある、オペレーテ
ィング・システム・ドライバ・レベルに絶対に渡されて
はならない。AppContainerの封印および開
封のオペレーションは、厳密にSMM内で実行されなけ
ればならない。他のすべての封印および開封のオペレー
ションは、オペレーティング・システム・ドライバ・レ
イヤによって実行することができる。
方向SHA−1ダイジェストである。鍵IDは、クライ
アントからサーバに送られるメッセージでクライアント
を識別するのに使用される。クライアントからのメッセ
ージのヘッダに、鍵IDが含まれ、サーバが、その鍵I
Dを使用して、秘密マスタ鍵データベース・テーブルを
インデクシングして、そのクライアントのマスタ鍵に対
する対称鍵を見つけ、この対称鍵を使用して、メッセー
ジの残りを解読するのに必要な鍵を導出する。エンロー
ルメント処理でまだ秘密マスタ鍵が割り当てられていな
い時には、真の秘密マスタ鍵によって置換されるまで、
秘密マスタ鍵を一時的な乱数値に置換する。
および他のマスタ鍵に基づいて生成される。鍵を導出す
るプリミティブによって、これらの導出された鍵が、下
で説明する鍵使用法値に基づいてどのように生成される
かが示される。
である鍵使用法値を列挙する。これらの値は、NewK
ey()関数、Enc()関数、およびDec()関数
と共に使用される。これらの関数は、さまざまなコンテ
ナの封印中および開封中に使用される。使用法は、クラ
イアントとサーバについて異なる(これによって、再生
攻撃および自己再生攻撃が複雑になる)。
ppContainerのAppCodeDigest
フィールドの暗号化鍵を作成するのに使用される UsageAppEncServer これは、サー
バによって作成されるAppContainerの暗号
化鍵を作成するのに使用される UsageAppEncClient これは、クラ
イアントによって作成されるAppContainer
の暗号化鍵を作成するのに使用される UsageAppMacServer これは、サー
バによって作成されるAppContainerのHM
AC鍵を作成するのに使用される UsageAppMacClient これは、クラ
イアントによって作成されるAppContainer
のHMAC鍵を作成するのに使用される UsageMKEncServer これは、サーバ
によって作成されるMKContainerの暗号化鍵
を作成するのに使用される UsageMKEncClient これは、クライ
アントによって作成されるMKContainerの暗
号化鍵を作成するのに使用される UsageMKMacServer これは、サーバ
によって作成されるMKContainerのHMAC
鍵を作成するのに使用される UsageMKMacClient これは、クライ
アントによって作成されるMKContainerのH
MAC鍵を作成するのに使用される
は、3つの部分に分割される。AppContaine
rの重要な特徴の1つが、それらを作成するのに使用さ
れるAppKey()が、秘密マスタ鍵(すなわち、ク
ライアント・デバイスの一意の識別子)とアプリケーシ
ョン・コード・ダイジェスト(すなわち、コンテナを
「所有」するソフトウェアの一意の識別子)の両方の関
数であることである。AppContainerは、特
定のデバイス上の特定のアプリケーションにバインドさ
れる。鍵の最後の部分は、デバイス・オーソリティに既
知ではなく(秘密マスタ鍵と異なる)、一般公衆にも既
知ではない(アプリケーション・コード・ダイジェスト
と異なる)。この最後の部分を、CustomerSe
cretと称する。その鍵のどの値でも、AppCon
tainerの封印に使用することができる。しかし、
強い128ビット乱数値(秘密マスタ鍵と同一の強さ)
を使用することが推奨される。
ると、会社が、異なるアプリケーション・コード・ダイ
ジェストを作る、アプリケーションの新しいビルドを入
手する必要なしに、危険にさらされたアプリケーション
・コンテナを破棄できるようになる。また、このCus
tomerSecretを用いると、デバイス上のアプ
リケーション(たとえば、セキュア・ログオン・アプリ
ケーション)の所与のインスタンスが、一つ以上のサー
バと安全にデータを共有できるようになる。各サーバ
は、同一デバイス上の同一アプリケーションについて、
一意のCustomerSecretをセットアップす
るはずである。したがって、封印されたAppCont
ainerは、正しいCustomerSecretが
提供された場合に限って解読することができる。
クライアント・アプリケーションと、そのクライアント
・アプリケーションが接続される多数のサーバの1つと
の間で共有されることを意図されている。
デバイス・オーソリティにエンロールされたデバイスの
AppKey値のリストをソフトウェアの特定のベンダ
に与えることによって、AppContainerを作
成する権限をそのベンダに委譲することが可能である。
AppKeyは、秘密マスタ鍵およびアプリケーション
・コード・ダイジェストの暗号的一方向関数であり、し
たがって、ベンダが他のアプリケーション用のコンテナ
を作成できるようにせずに、また、ベンダが所与のデバ
イスのマスタ鍵を見つけることが簡単にならずに、ベン
ダにこれらの鍵を与えることができる。
をこれから説明する。すべてのコンテナが、オペコード
・バイト(コマンド・タイプまたはメッセージ・タイ
プ)、フォーマット・バイト、および、それに続く内容
の長さワード(16ビット)を含む共通の4バイト・ヘ
ッダを有する。フォーマット・バイトは、コンテナの4
つのタイプのどれが存在するかを示し、したがって、低
水準ルーチンが、どの種類の暗号オペレーションを実行
する必要があるかを知る。フォーマット・バイトは、将
来のリリースで暗号アルゴリズムが変更された場合に、
変更されるはずである。オペコード・バイトは、コンテ
ナの内部の高水準データの種類を表す。低水準ルーチン
が、オペコード値の一部を使用する(たとえば、エンロ
ールメント・プロトコル中に使用されるコンテナの場
合)が、ほとんどは、高水準コードまたは将来のリリー
スによる使用のために使用可能である。長さフィールド
は、コンテナに属するバイトの数(ヘッダの後の)を識
別する。ヘッダは暗号化されないが、すべてのコンテナ
の一部である暗号チェックサムによって保護される。
・オペコードと、そのオペコードを有するコンテナのフ
ォーマットとを列挙する。現リリースでは各オペコード
は特定のコンテナ・フォーマットを意味するが、これは
将来変更することができる。オペコード・フィールドと
フォーマット・フィールドの両方があるのは、コードの
階層化を単純にし、暗号アルゴリズムのスイートを将来
変更できるように、または特定のオペレーションに必要
なデータの内容を変更できるようにするためである。
を有することができる。 フォーマット・コード 値 記述 FmtSignedContainer 1 コンテナはSigned Containerであ る FmtAppContainer 2 コンテナはApp Containerである FmtPubKContainer 3 コンテナはPubK Conteinerである FmtMKContainer 4 コンテナはMK Containerである
に対するオペコードについて論じる。SignedCo
ntainerは、秘密鍵(署名鍵の対からの)でディ
ジタル署名されたデータを保持し、合致する公開鍵で検
証することができる(公開鍵はクライアント側でROM
に記憶してある)。これらは、デバイス・オーソリティ
・サーバからクライアント・マシンに認証済みデータを
送り、クライアント・サービスの利用をソフトウェア・
モジュールに許可するのに使用する。
zation コンテナ:FmtSignedCont
ainer このコンテナは、オペレーティング・システム・ドライ
バ・セキュリティ・モジュール中の関数の全部または一
部を使用することをプログラムに許可するのに使用す
る。このコンテナのデータ部分には、以下のフィールド
がある。 フィールド 長さ 記述 NStartOffset 4バイト 呼出しコードの開始オフセット NEndOffset 4バイト 呼出しコードの終了オフセット CodeDigest 20バイト 呼出しコードのコード・ダイジェスト PrivilegeBitVector 8バイト 特権ビット・フィールド。このベクトルは、 アプリケーションがどの関数を呼び出すことができるかを示す。
ansfer コンテナ:FmtSignedCont
ainer このコンテナは、AppContainerをこのマシ
ン上の別のアプリケーションに転送することをプログラ
ムに許可するのに使用する。このコンテナのデータ部に
は、以下のフィールドがある。 フィールド 長さ 記述 CallersAppCodeDigest 20バイト 呼出し元のACD RecipeintsAppCodeDigest 20バイト 受信側のACD
horization No FmtSignedC
ontainer これはコンテナではないが、サーバの秘密署名鍵によっ
て暗号化されるいくつかのバイトである。これらはどん
な種類のコンテナにも記憶されない。これらのバイト
は、オペレーティング・システム・ドライバがBIOS
RegisterOSD()関数を使用してそれ自体を
BIOSに登録するときに使用する。 フィールド 長さ 記述 NStartOffset 4バイト 呼び出しているコードの開始オフセット NendOffset 4バイト 呼び出しているコードの終了オフセット CodeDigest 20バイト オペレーティング・システム・ドライバのコ ード・ダイジェスト
オペコードについて論じる。AppContainer
は、特定のアプリケーション・プログラムからしか読取
りまたは書込みができない保護されたコンテナである。
これらのコンテナは、これらを封印したプログラムを識
別し、別のプログラムがコンテナを開封できるようにす
ることが可能である。したがって、これらは安全な形の
プロセス間通信として使用することもできる。AppC
ontainerの最上部には、ウイルス変更の検出、
ソフトウェア・ライセンス供与、セキュア・ウォレット
など、高レベルのセキュリティ機能を構築することがで
きる。一般に、AppContainerは、暗号化用
マスタ鍵の派生物を使用して所与のマシンに結び付けら
れる。
AppContainer このコンテナは、MKContainerオペレーショ
ンで使用できる鍵を保持する。このコンテナは通常、P
ubKContainerの生成中にOsdPubKc
ontainerSeal()によって返される。この
コンテナはMKContainerオペレーションに必
要である。
ContainerFromServer コンテナ:
FmtAppContainer このコンテナは空であり、アプリケーションが他のAp
pContainerを生み出すためのテンプレートと
して使用する。この中にある唯一の重要なフィールド
は、暗号化されたAppCodeDigestである。
sealerscode digestフィールドはこ
の場合ヌルである。このAppContainerを封
印するのに使用されるCustomerSecretの
ビットはすべて0である。
ontainerData コンテナ:FmtAppC
ontainer このコンテナは空であり、アプリケーションが他のAp
pContainerを生み出すためのテンプレートと
して使用する。この中にある唯一の重要なフィールド
は、暗号化されたAppCodeDigestである。
esponseFromClient コンテナ:Fm
tAppContainer このコンテナは、クライアントからサーバへのチャレン
ジ・レスポンスを保持する。これは、サーバのチャレン
ジ乱数(Rs)を保持する。このコンテナは、OpcC
hallengeRequestFromServer
を伴うMKContainerに応答して使用する。 フィールド 長さ 記述 Rs 16バイト サーバから提供される128ビットのランダムな値。 または、エンロールメントに対する確認として使用する
ときはKID‖MK。
るオペコードについて論じる。PubKContain
erは、クライアント(OSD)がRSA公開鍵(通信
鍵の対からの)で封印し、受信側(一般にデバイス・オ
ーソリティ・サーバ)だけが合致する秘密鍵で読むこと
のできるディジタル封筒である。これらは、エンロール
メント中に、クライアントと認証されたデバイス・オー
ソリティ・サーバとの間に暗号化されたチャネルをセッ
トアップするのに使用する。このコンテナの内部のデー
タは、オペレーティング・システム・ドライバによって
ランダムに生成される128ビットのRC6暗号鍵(こ
の製品の内ではマスタ鍵とも呼ばれる)で暗号化され
る。RC6鍵(マスタ鍵)およびクライアントの鍵ID
(KID)は、受信側の公開鍵(サーバの通信公開鍵)
で暗号化される。
equestOuter コンテナ:PmtPubKC
ontainer このコンテナは、エンロールメント中に使用する。
ection コンテナ:FmtPubKContai
ner このコンテナは、暗号化された新しいチャネルをセット
アップするためにクライアント・アプリケーションが使
用する。このコンテナの第1部分を再使用して、RSA
オペレーションを回避することができる。これは、内部
MKContainerのデータ部分には、以下のフィ
ールドがある。 フィールド 長さ 記述 MK 16バイト 128ビットのフレッシュ・ランダム接続マスタ鍵
ペコードについて論じる。MKContainerは、
このコンテナの書き手と読み手が知っているマスタ鍵
(クライアントによって生成されPubKContai
ner中で送られる)に基づいて、ディジタル封筒の一
部として使用する。これらを使用して、マスタ鍵がPu
bKContainerを介してサーバに送られた後の
クライアントとデバイス・オーソリティ・サーバとの間
の通信を安全なものにすることができる。これらはま
た、データを保護するためにクライアント・マシン上で
ローカルに使用することもできる。
equestInner コンテナ:FmtMKCon
tainer このコンテナは、エンロールメント中に使用される。こ
のコンテナのデータ部分には、以下のフィールドがあ
る。 フィールド 長さ 記述 SMKClientSeed 20バイト マスタ鍵の生成に使用されるシード
esponse コンテナ:FmtMKContain
er このコンテナは、エンロールメント中に使用される。こ
のコンテナのデータ部分には、以下のフィールドがあ
る。 フィールド 長さ 記述 SMKServerSeed 26バイト マスタ鍵の生成に使用されるサーバ から返されるシード
rverWrite コンテナ:FmtMKConta
iner このコンテナは、何らかのクライアント・アプリケーシ
ョンがサーバへのデータ(すなわちクライアントによっ
て書かれたデータ)を送るのに使用する。 フィールド 長さ 記述 Data 0〜64000バイト クライアント特有のデータ
ientWrite コンテナ:FmtMKConta
iner このコンテナは、何らかのクライアント・アプリケーシ
ョンがサーバからのデータ(すなわちサーバによって書
かれたデータ)を受け取るのに使用する。 フィールド 長さ 記述 Data 0〜64000バイト クライアント特有のデータ
equestFromServerコンテナ:FmtM
KContainer このコンテナは、クライアント・システムの信憑性を確
定するためにサーバから送られる。このコンテナへの応
答は、OpcChallengeResponseFr
omClient中である。 フィールド 長さ 記述 Rs 16バイト サーバから提供される128ビットのランダムな値
オペコードを定義することもできる。システム・アプリ
ケーション・プログラム・インターフェースを使用する
アプリケーションは、デバイス・オーソリティから提供
されるオペコードに従って、それらのオペコードを使用
しなければならない。
マットおよびこれを生み出すのに使用されるアルゴリズ
ムについて以下に述べる。まず開封されたフォーマット
について述べ、次いでこれを封印および開封するステッ
プについて述べる。
erを得た後は、プログラムはこのコンテナのコピーを
生み出し、次いでこれらのコピーを種々の情報で埋める
ことができる。しかし、最初のAppContaine
rを得る唯一の方法は、デバイス・オーソリティ・サー
バがこの特定マシン上のこの特定プログラムのためにそ
れを生み出すようにすることである。これは、AppC
odeDigestに関係する。
呼ばれる対称鍵を記憶するのに使用される。次いでこの
コンテナは、マスタ鍵を必要とする封印/開封オペレー
ションを行う関数に渡される。AppContaine
rはまた、エンロールメント中に割り当てられたSha
redMasterKeyで識別される、所与のマシン
特有のアプリケーションに特有の情報を記憶するのにも
使用される。このアプリケーションは、多くのサーバと
一対一で情報を共有することができ、各サーバはそれ自
体のAppContainerだけしか解読できない。
以下のフォーマットを有する。コンテナの封印に含まれ
るステップによって21〜36バイトの情報が最後に追
加され(MACおよびPadding)、したがって呼
出し元は、バッファがより大きい封印済みフォーマット
を保持するのに十分な大きさであるようにしなければな
らない。さもなければ、封印オペレーションはエラーを
返すことになる。SealerscodeDigest
およびInitialization Vector
(IV、初期化ベクトル)はすべて、封印オペレーショ
ンで埋められる。初期化ベクトルは、暗号ブロック連鎖
で使用される乱数である。CBCでは、平文テキストを
鍵で暗号化する前に、まずIVと平文テキストの第1ブ
ロックとの排他的論理和をとる。AppCodeDig
estは、デバイス・オーソリティから提供される元の
AppContainerからとる。表1に、AppC
ontainer構造を示す。
鍵、AppCodeDigest、およびCustom
erSecretの派生物で暗号化を行う(すべての1
28ビットはほとんどの場合にデフォルトで0をとるこ
とができる)。
印。このオペレーションは、BIOSによって封印され
るデータを準備する。これには、デバイス・オーソリテ
ィから提供された元のAppContainerが必要
である。この元のAppContainerは、この特
定クライアント・システム用のマスタ鍵でこの特定クラ
イアント・システムに対して暗号化された、暗号化済み
AppCodeDigestを含む。
とを確認する。そうでない場合はエラーを返す。Len
gthが許容できるほど小さいことを確認する。これ
は、AppCodeDigestフィールドから始まり
(このフィールドを含む)、Dataフィールドで終わ
る(このフィールドを含む)コンテナの長さである。F
ormatがFmtAppContainerに等しい
ことを確認する。Initialization Ve
ctorを、オペレーティング・システム・ドライバ・
セキュリティ・モジュールから渡されたランダムな値に
設定する。SealerscodeDigestを、O
sdRegisterApplication()中に
提供された呼出し元の認証情報に基づいてオペレーティ
ング・システム・ドライバ・セキュリティ・モジュール
によって計算された値に設定する。表2に、オペレーテ
ィング・システム・ドライバAppContainer
封印中の構造変更を示す。
が、データを封印する前の最終段階である。
=Dec160Bits(AppCodeDiges
t)にする。コンテナ中のAppCodeDigest
は、封印オペレーションによって変更されない。これに
より、アプリケーションが、デバイス・オーソリティか
ら提供された元のAppContainerに基づいて
新しいAppContainerを生み出すことができ
る。
が、オペレーティング・システム・ドライバ・セキュリ
ティ・モジュールによって決定されたCallersC
odeDigestの値に等しいことを確認する。
(AppKey(SMK,AppCodeDiges
t),CustomerSecret)にする。Cus
tomerSecretは、オペレーティング・システ
ム・ドライバから渡された値である。
at‖Length‖AppCodeDigest‖I
V‖SealersCodeDigest‖Dataに
する。
y,UsageAppMac),Payload)に設
定する。
ルに設定して、変数Plaintext(以下参照)を
16の倍数のバイト長にする。各パディング・バイト
は、ベクトル中のパディング・バイトの数に等しい値を
有する。
sCodeDigest‖Data‖Mac‖Padd
ingにする。
UsageAppenc,Plaintext)にす
る。Ciphertextの長さはPlaintext
と同じになることに留意されたい。
ルドすべてをCiphertextで上書きする。すな
わち、Plaintextを形成するすべてのバイトを
Ciphertextのバイトで置換する。
バイトの数に20(AppCodeDigestのた
め)を足した数に設定する。
r封印中の構造変更を示す。BIOSが封印済みApp
Container構造を封印した後は、この構造は表
4に示すフォーマットを有する。
ついて論じる。オペレーティング・システム・ドライバ
の開封オペレーションは、コンテナを開封するためにB
IOSが必要とする情報を収集する。これは、Leng
thが許容できるほど小さいことを確認することによっ
て行う(###すべきこと:正しい値のバイトまたはそ
れ以下のバイトを得る)。このLengthは、Mac
およびパディングを含めたコンテナの長さである。Fo
rmatがFmtAppContainerに等しいこ
とを確認し、OsdRegisterApplicat
ion()中に提供された呼出し元の認証情報に基づい
てCallersCodeDigestを計算する。
をする。BIOS開封オペレーションは、以下のステッ
プを実施する。
確認する。そうでない場合はエラーを返す。
=Dec160Bits(AppCodeDiges
t)にする。この開封オペレーションでは、コンテナ中
のAppCodeDigestは変更されない。
が、オペレーティング・システム・ドライバ・セキュリ
ティ・モジュールによって決定されたCallersC
odeDigestの値に等しいことを確認する。
(AppKey(SMK,AppCodeDiges
t),CustomerSecret)にする。Cus
tomerSecretは、オペレーティング・システ
ム・ドライバから渡された値である。
20バイトを引いた長さまでの、AppCodeDig
estの後のデータにする。
sageAppEnc,Ciphertext)にす
る。
textバイトで置換して、開封されたフィールドが見
られるようにする。
きPaddingの長さを引いた長さにする。
at‖Length‖AppCodeDigest‖I
V‖SealersCodeDigest‖Dataに
する。
wKey(Key,UsageAppMac),Pay
load)にする。
ことを確認する。
ットおよびこれを生み出すのに使用されるアルゴリズム
について論じる。まず開封されたフォーマットについて
述べ、次いでこれを封印および開封するステップについ
て述べる。MKContainerは主に、クライアン
トとサーバがPubKContainerを使用して共
通のマスタ鍵をセットアップした後にこれらの間で送ら
れる大きい(64Kまでの)情報チャンクを保護するの
に使用する。
暗号化するのに使用する。暗号化は、対称鍵暗号化に基
づく。この鍵はマスタ鍵から導出される。MKCont
ainerは、マスタ鍵から導出された対称鍵を使用し
て大きい(64Kまでの)チャンクを暗号化するのに使
用することができる。特別な場合の用途は、エンロール
メント中にクライアントとサーバとの間の伝送を暗号化
して秘密のマスタ鍵をセットアップできるようにし、何
らかのクライアント・アプリケーションとデバイス・オ
ーソリティ・サーバとの間の伝送を暗号化することであ
る。
構造について述べる。MKContainerは、Ap
pContainerに非常に似ている。主な違いは、
AppCodeDigestが、セットアップされたマ
スタ鍵のダイジェストに置き換わることである。サーバ
によって生み出されたMKContainerの場合、
SealedCodeDigestは0となる。クライ
アント上で生み出されたコンテナの場合、Sealer
sCodeDigestは、このコンテナを封印したプ
ログラムを識別する。
レーションは、SMIモジュールではなくオペレーティ
ング・システム・ドライバ・モジュールによって行われ
る。オペレーティング・システム・ドライバは、SMI
モジュールを使用してマスタ鍵を封印および開封するこ
ともできるが、すべての暗号化および保全性チェックは
OSDコードによって行われる。
下のフォーマットを有する。このコンテナの封印に含ま
れるステップによって21〜36バイトの情報が最後に
追加されることになり(MACおよびPaddin
g)、したがって呼出し元は、バッファがより大きい封
印済みフォーマットを保持するのに十分な大きさである
ようにしなければならない。さもなければ、封印オペレ
ーションはエラーを返すことになる。MKDiges
t、SealersCodeDigest、およびIV
はすべて、封印オペレーションによって埋められる。表
5に、MKContainer構造を示す。
r(OSDPubKContainerSeal()を
呼び出したときに生み出されたもの)中で渡されたマス
タ鍵の派生物でMKContainerを封印する。
るのに必要なステップは以下のとおりである。これらの
ステップは、適切なバッファに作用し、したがって開封
された平文テキストデータを上書きする。Usageの
値のセクションで説明したように、Usageの値は、
クライアントおよびサーバによって封印されたコンテナ
ごとに違ってくることに留意されたい。
るAppContainerを使用する必要がある。封
印ステップは以下のとおりである。
る。このオペレーションはオペレーティング・システム
・ドライバによって行われるので、このLengthは
AppContainerよりも長くてよい。これは、
MKDigestフィールドから始まり(このフィール
ドを含む)、Dataフィールドで終わる(このフィー
ルドを含む)コンテナの長さである。
erに等しいことを確認する。
開封されたAppContainerの内容のSHA1
に設定する。
ライバ・セキュリティ・モジュールから渡されたランダ
ムな値に設定する。
オペレーティング・システム・ドライバ・セキュリティ
・モジュールによって決定された値に設定する。
ライバ・セキュリティ・モジュールから渡されたマスタ
鍵にする。
at‖Length‖MKDigest‖IV‖Sea
lersCodeDigest‖Dataにする。
y,UsageMKMac),Payload)に設定
する。
ルに設定して、変数Plaintext(以下参照)を
16バイトの倍数の長さにする。各パディング・バイト
は、ベクトル中のパディングの数に等しい値を有する。
sCodeDigest‖Data‖Mac‖Padd
ingにする。
UsageMKEnc,Plaintext)にする。
Ciphertextの長さはPlaintextと同
じになることに留意されたい。
をCiphertextで上書きする。すなわち、Pl
aintextを形成するすべてのバイトをCiphe
rtextのバイトで置換する。
バイトの数に20(MKDigestのため)を足した
数に設定する。
の封印中の構造変更を示す。
rの構造を示す。
ーティング・システム・ドライバ開封を含む。
要なステップは、以下のとおりである。エラーの場合は
コンテナが0になるべきである。開封オペレーションで
は、マスタ鍵を有するAppContainerを使用
する必要がある。開封ステップは以下のとおりである。
る。これは、MacおよびPaddingを含めたコン
テナの長さである。
erに等しいことを確認する。
システム・ドライバ・セキュリティ・モジュールから渡
された値に等しいことを確認する。
てオペレーティング・システム・ドライバ・セキュリテ
ィ・モジュールから渡されたマスタ鍵にする。
20バイトを引いた長さまでの、MKDigestの後
のデータにする。
sageMKEnc,Ciphertext)にする。
textバイトで置換して、開封されたフィールドが見
られるようにする。
きPaddingの長さを引いた長さにする。
at‖Length‖MKDigest‖IV‖Sea
lersCodeDigest‖Dataにする。
wKey(Key,UsageMKMac),Payl
oad)にする。
ことを確認する。
フォーマットおよびこれを処理するのに使用されるアル
ゴリズムについて論じる。まず開封されたフォーマット
について述べ、次いでこれを封印および開封するステッ
プについて述べる。これらのコンテナは主に、認証され
た情報をサーバからクライアントに送るのに使用する。
例えば、これらのコンテナを使用して、オペレーティン
グ・システム・ドライバ・セキュリティ・モジュールの
関数のいくつかを呼び出すことをプログラムに許可する
ことができる。また、これらのコンテナを使用して、フ
ァイル名のリストと各ファイルの予想されるSHA1ダ
イジェストとを送ることもできる(例えばダウンロード
したデータが確かなものであることを確認するため)。
これらはまた、ある種の情報またはコマンドが本当にデ
バイス・オーソリティ・サーバからきたことをクライア
ントが知る必要があるときはいつでも使用することがで
きる。
て、ダウンロードしたデータが確かなものであることを
確認し、データがデバイス・オーソリティ・サーバから
きたものであることを確認し、オペレーティング・シス
テム・ドライバに登録しているアプリケーションに対す
る認証情報を保持する。表8にSignedConta
iner構造を示す。
封印について論じる。暗号化は、サーバが秘密鍵に署名
することによって行われる。SignedContai
nerコンテナを封印するのに必要なステップは以下の
とおりである。これらのステップは、適切なバッファに
作用し、したがって開封された平文テキストデータを上
書きする。開示する実施形態では、デバイス・オーソリ
ティ・サーバがこれらのステップを実施して、Sign
edContainerを封印する。
認する。そうでない場合はエラーを返す。
る。封印前は、この長さはPublicKeyDige
stおよびDataを含む。
tainerに等しいことを確認する。
された秘密鍵に合致する公開鍵のSHA1ダイジェスト
に設定する。
at‖Length‖PublicKeyDigest
‖Dataにする。これは開封された長さを含むことに
留意されたい。
(Payload)にする。
イト‖ExpectedDigestに設定する。
#1バージョン2署名パディングを実施する。これは、
PKCS#1バージョン1署名パディングと同じであ
る。このパディングで、Digestの値の前に固定の
バイト・シーケンスを追加して、ExpectedDi
gestの値がSHA1オペレーションの結果であるこ
とを示す。このパディングではまた、0パディング・バ
イトのほとんどを0xFFバイトで置換する。
鍵で暗号化する。
えてSigRSABlockサイズを含めた長さに設定
する。
構造を封印した後は、この構造は表9に示すフォーマッ
トを有する。
開封について論じる。SignedContainer
コンテナを開封するのに必要なステップは、以下のとお
りである。クライアントは、これらのステップを実施し
て、この種のコンテナに対する署名を検証する。
っていることを確認する(注1)。そうでない場合はエ
ラーを返す。Lengthが許容できることを確認す
る。封印前は、この長さはPublicKeyDige
st、Data、およびSigRSABlockを含
む。FormatがFmtSignedcontain
erに等しいことを確認する。BIOSを呼び出して、
選択された公開鍵でSigRSABlockを解読す
る。SHA1ダイジェスト関数を使用して、PKCS#
1パディングが署名に対して正しいことを確認する。E
xpectedDigest=解読したSigRSAB
lockの最後の20バイトにする。Length=L
engthから128を引いてSigRSABlock
サイズを除いた長さに設定する。Payload=Op
code‖Format‖Length‖Public
KeyDigest‖Dataにする。これは開封され
た長さを含む。Digest=SHA1(Payloa
d)にする。DigestがExpectedDige
stに等しいことを確認する。(注1)実装の選択肢:
OSDは、わかっている公開鍵のハッシュ表を保持して
いてもよい。
テナ自体には作用しない。SigRSABLockを解
読するためだけに呼び出される。
ーマットおよびこれを生み出すのに使用されるアルゴリ
ズムについて論じる。まず開封されたフォーマットにつ
いて述べ、次いでこれを封印および開封するステップに
ついて述べる。これらのコンテナは主に、クライアント
とデバイス・オーソリティ・サーバとの間に安全な通信
チャネルをセットアップするのに使用する。PubKC
ontainerの第2部分は、4バイトのヘッダを含
む完全なMKContainerオブジェクトである。
PubKContainerの第1部分は、生成された
マスタ鍵(MK)およびクライアントの鍵ID(KI
D)の値を含み(またはマスタ鍵が割り当てられていな
い場合は0)、これらの値は両方とも、受信側の公開鍵
で暗号化される。
トは、このコンテナの第1部分を変更せずに第2部分を
変更できるように慎重に選択する。これにより、クライ
アントおよびサーバは、いくつかの大きな性能向上を図
ることができる。OSD封印関数が、生成されたマスタ
鍵をAppContainer中にラッピングして返す
ことになる。クライアントは、サーバへの新たな接続を
(例えば新しいダウンロードをフェッチするために)開
始するたびに、MKとPubKContainerの第
1部分とを記憶および再使用することができ、第2部分
は、このセッションを暗号化するための新しいマスタ鍵
を含むMKContainerとなる。これにより、S
MIルーチンで公開鍵オペレーションを実施する必要が
回避され、しかもなお、本物のサーバだけにしか新しい
セッション鍵がわからないことが知られるというセキュ
リティ上の利点が得られる。というのは、本物のサーバ
だけが、保存されたマスタ鍵(新しいセッション鍵を解
読するのに必要)を知っているか、あるいは第1部分を
読むための秘密鍵を知っているからである。サーバにと
って重要な最適化は、PubKContainerの第
1部分から抽出したマスタ鍵をキャッシュし、キャッシ
ュした値に第1部分のハッシュで索引付けすることであ
る。このキャッシュにより、PubKContaine
rの第1部分を再使用するときに秘密鍵オペレーション
を行う必要が回避される。クライアントは常に第1部分
全体を送り、したがってサーバは常にその秘密鍵(サー
バ通信秘密鍵)を使用してマスタ鍵を抽出することがで
きるので、サーバはいつでもキャッシュ・エントリをフ
ラッシュすることができる。このことはまた、クライア
ントとサーバとの間の初期化メッセージ用のフォーマッ
トが1つだけであり、再使用とマスタ鍵の生成のいずれ
かに対処するために2つの別個のフォーマットがあるの
ではないことを意味する。
ンロールメント中にクライアントとサーバとの間の伝送
をセットアップして秘密マスタ鍵をセットアップできる
ようにし、何らかのクライアント・アプリケーションと
オーソリティ・サーバとの間の伝送をセットアップする
ことである。
は、表10に示すフォーマットを有する。コンテナの封
印に含まれるステップによって21〜36バイトの情報
が最後に追加されることになり(MACおよびPadd
ing)、したがって呼出し元は、バッファがより大き
い封印済みフォーマットを保持するのに十分な大きさで
あるようにしなければならない。さもなければ、封印オ
ペレーションはエラーを返すことになる。Sealed
CodeDigestおよびInitializati
on Vector(IV)はすべて、封印オペレーシ
ョンによって埋められる。
について論じる。暗号化は、オペレーティング・システ
ム・ドライバによって実行中に生み出されたマスタ鍵の
派生物と、サーバの通信公開鍵を使用して行う。
封印は、BIOSレイヤへの2つの呼出しを含む。第1
の呼出しはMKContainerに対するものであ
り、OsdMKContainerSeal()を使用
し、次いで、BIOSRawRSAPublic()を
使用して、MKContainer封印オペレーション
で使用したばかりのMKを暗号化する。このコンテナを
封印するのに必要なステップは以下のとおりである。こ
れらのステップは、適切なバッファに作用し、したがっ
て開封された平文テキストデータを上書きする。Usa
geの値のセクションで説明したように、Usageの
値は、クライアントおよびサーバによって封印されたコ
ンテナごとに違ってくる。
認する。そうでない場合はエラーを返す。Length
が許容できることを確認する。封印前は、この長さは、
第1部分と開封された第2部分とを含む。封印後は、第
2部分を封印することによって追加される追加データを
含む。FormatがFmtPubKContaine
rに等しいことを確認する。オペレーティング・システ
ム・ドライバ・セキュリティ・モジュールから渡された
MKと、MKContainerに関して述べたステッ
プとを用いて、第2部分を封印する。
が最初に作成されたときにオペレーティング・システム
・ドライバによってランダムに生成されることになる。
このマスタ鍵を再使用できるように、マスタ鍵に対する
ハンドルがオペレーティング・システム・ドライバの呼
出し元に返される。前のステップで追加されたMacお
よびPaddingを含むようにLengthフィール
ドをインクリメントする。PublicKeyDige
stを、選択された公開鍵のSHA1に設定する。Pu
bKRSABlockのOpcodeおよびForma
tの部分を、ヘッダの値に合致するように設定する。残
りのブロックは、これらのステップを行う前にOSDル
ーチンによって埋められる。オペレーティング・システ
ム・ドライバ・モジュールによって選択されたランダム
OAEPシード値を使用して、PubKRSABloc
kのOAEPパディングを実施する。BIOSRawR
SAPublicを呼び出して、選択された鍵でRSA
オペレーションを行う。オペレーティング・システム・
ドライバがPubKContainer構造を封印した
後は、この構造は表11に示すフォーマットを有する。
について論じる。開示する本発明の実施形態では、デバ
イス・オーソリティ・サーバが開封を行う。サーバから
の返信は、MKコンテナの形をとることになる。クライ
アントは、MKコンテナ・オペレーションを使用してサ
ーバ応答を開封する。
ubKContainerを開封するのに必要なステッ
プは以下のとおりである。エラーの場合はコンテナが0
になる。
る。これは、封印されたMKContainerを含め
た第1部分と第2部分の長さである。FormatがF
mtPubContainerに等しいことを確認す
る。PublicKeyDigestが、選択された秘
密鍵に合致する公開鍵に対応することを確認する。Pu
bKRSABlockに対して、選択された秘密鍵で生
のRSA解読オペレーションを行う。OAEPパディン
グを除去し、OAEP冗長性が正しい(すなわちブロッ
クが伝送の際に変更されなかった)ことを確認する。こ
れにより、Opcode、Format、KID、およ
びKが呼出し元に見えるようになる。FormatがF
mtPubKcontainerであることを確認す
る。呼出し元は、Opcodeが許容できるかどうかチ
ェックする。Keyを、解読されたPubKRSABl
ockからのMKにする。Keyと、MKContai
nerに関して述べたステップとを用いて、MKCon
tainerを開封する。
ついて論じる。
ey()、およびCustomerAppKey()を
含み、これらはすべて以下の同じ関数とすることができ
る。XxxKey(bufferOf128bits,
bufferOf160bitsWithTheHig
hOrderBitsZeroedIfDataWas
LessThan160bits).
st)=TruncateTo128bits(SHA
−1(Key‖codeDigest)) AppContainerを保護するための鍵は、この
コンテナを所有するプログラムに対するコードの160
ビット・ダイジェストを使用して、秘密マスタ鍵から導
出される。得られる鍵は128ビット長である(ほとん
どの暗号化アルゴリズムにとって128ビットがより一
般的である)。Key‖CodeDigestをハッシ
ングするのは、ルートでないデバイス・オーソリティ・
サーバが、実際のマスタ鍵が何であるかを知らされず
に、それら自体のAppContainerを生み出す
ことができるようにするためである。実際の秘密マスタ
鍵が知られると、他のすべてのAppContaine
rに障害が生じる。
runcateTo128bits(SHA−1(Ke
y‖Usage)) Usageパラメータは32ビットの値である。New
Key()の場合、得られる鍵が見えるようにする必要
はないので、ハッシングおよび切捨てを用いてコードを
単純にする。NewKey()はまた、AppKe
y()の結果を引数としてとることもある。
CustomerSecret)=TruncateT
o128bits(SHA−1(Key‖Custom
erSecret) CustomerSecretは128ビットの値であ
る。この関数は、CustomerSecret部分を
有するAppcontainerに対する鍵を生成する
のに使用する。
0Bits(SMK,DecryptedCodeDi
gest)およびDecryptedCodeDige
st=Dec160Bits(SMK,Appcode
Digest)は、秘密マスタ鍵を使用して160ビッ
トのダイジェスト値を暗号化および解読するのに使用
し、特定デバイス上の特定プログラムに対して第1のA
ppContainerを生み出す際にデバイス・オー
ソリティ・サーバを使用する必要のあるこの機構の極め
て重要な部分である。サーバはEnc160Bits関
数を実施し、クライアント・マシンはDec160Bi
ts関数を実施する。
ップを実施する。DecryptedCodeDige
stをAppCodeDigestバッファにコピーす
る。Key=NewKey(SMK,UsageApp
CodeDigest)にする。Plaintext1
=AppCodeDigestの最初の16バイトにす
る。これは、DecryptedCodeDigest
no最初の16バイトである。Ciphertext1
=RC6CBCEncrypt(Key,Plaint
ext1)にする。平文テキストの長さが1ブロックし
かないので、これはECBモードに相当する。
バイトをCiphertext1で置換する。Plai
ntext2=AppCodeDigestの最後の1
6バイトにする。この値の最初の12バイトは、Cip
hertext1の最後の12バイトであり、この値の
最後の4バイトは、DecryptedCodeDig
estの最後の4バイトである。Ciphertext
2=RC6CBCEncrypt(Key,Pkain
text2)にする。平文テキストの長さが1ブロック
しかないので、これはECBモードに相当する。App
CodeDigestの最後の16バイトをCiphe
rtext2で置換する。
ップを実施する。AppCodeDigestをDec
ryptedCodeDigestバッファにコピーす
る。Key=NewKey(SMK,UsageApp
CodeDigest)にする。Ciphertext
2=DecryptedCodeDigestの最後の
16バイトにする。これは、AppCodeDiges
tの最後の16バイトである。Plaintext2=
RC6CBCDecrypt(Key,Ciphert
ext2)にする。平文テキストの長さが1ブロックし
かないので、これはECBモードに相当する。Decr
yptedCodeDigestの最後の16バイトを
Plaintext2で置換する。このとき、Decr
yptedCodeDigestの最後の4バイトは、
それらの正しい値を有する。Ciphertext1=
DecryptedCodeDigestの最初の16
バイトにする。これは、AppCodeDigestの
最初の4バイトと、Plaintext2からの最初の
12バイトを含む。Plaintext1=RC6CB
CDecrypt(Key,Ciphertext1)
にする。平文テキストの長さが1ブロックしかないの
で、これはECBモードに相当する。Decrypte
dCodeDigestの最初の16バイトをPlai
ntext1で置換する。
ge)=RC6CBCEncrypt(NewKey
(Key,Usage),Message) Dec(Key,Usage,Message)=RC
6CBCDecrypt(NewKey(Key,Us
age),Message) 暗号ブロック連鎖(CBC)モードの場合の初期化ベク
トルは16バイトの0であり、Usageの値は32ビ
ット長である。暗号ブロック連鎖は、前のブロックの暗
号テキストを暗号化前の現在ブロックの平文テキストと
結合させるブロック暗号モードである。Keyは、12
8ビット長と288ビット長のいずれかとなる。Mes
sageパラメータは、16バイトの倍数の長さのデー
タ・ブロックを指定する。RC6暗号については、Ro
nald L.Rivest、M.J.B.Robsh
aw、R.Sidney、Y.L.Yinによる「Th
eRC6(商標)BlockCipher」1998年
8月20日に定義されており、CBCモードについて
は、Bruce Schneierによる「Appli
ed Cryptography Second Ed
ition」John Wiley&Sons、New
York、NY、1995年に定義されている。
ced Encryption Standard)の
要件を特に満たすように設計されたものである。RC6
は、可変長の鍵サイズに対するサポートを含み、RC5
以降のCPUの進歩を利用するように最適化されてい
る。
に使用されると、Messageは16バイトのランダ
ムな値(IVと呼ぶ)で始まり、最後に1〜16バイト
でパディングされて、Messageは暗号のブロック
・サイズ(16バイト)の倍数になる。この16バイト
IVは、後続の平文テキスト・ブロックと直接に排他的
論理和をとられることがないので、従来のCBCモード
では使用されないことに留意されたい。そうではなく、
暗号化中は、0との排他的論理和がとられ(何もなされ
ない)、次いで、鍵で暗号化されて暗号テキストの第1
ブロックが生成される。次いで第1の暗号テキスト・ブ
ロックは、次の平文テキスト・ブロックが暗号化される
前にそのブロックと排他的論理和をとられる。解読中
は、第1ブロックが解読され、0との排他的論理和がと
られて(何もなされない)、元のランダムなIVブロッ
クが生成される。第2の暗号テキスト・ブロックが解読
され、暗号テキストの第1ブロックとの排他的論理和が
とられて、第2の平文テキスト・ブロックが生成され
る。
は、一連の同一バイトであり、この値はパディングされ
るバイトの数に等しい。例えば、2バイトのパディング
が追加される場合、各バイトは値0x02を有する。常
に少なくとも1バイトのパディングがあり、したがっ
て、平文テキストがすでに16の倍数のバイト長である
場合は、16バイトのパディングが追加され、これらの
バイトはそれぞれ値0x16を有する。ランダムなバイ
ト対予測可能バイトの長所をめぐって宗教戦争が行われ
る。この構成では、予測可能パディング・バイトが必要
である。解読されたデータの最後のバイトを調べること
により、どれだけのパディングが追加されたかが容易に
決定されることに留意されたい。
ミティブ。基本的な保全性プリミティブは、Hugoの
メッセージ認証コード(HMAC)と呼ばれており、こ
れはどんな暗号ダイジェスト関数に基づくこともでき
る。本発明ではSHA−1に基づくが、これはNIST
&NSAによる「Secure Hash Stand
ard」1995年4月17日に定義されている。HM
ACプリミティブに関する出版文書には、これがダイジ
ェスト関数の潜在的な弱点を補う優れたセキュリティ特
性を有することが示されている。SHA−1は、メッセ
ージまたはデータ・ファイルの圧縮表現を計算するため
の安全なハッシュ・アルゴリズム用に米国商務省によっ
て採用されている標準仕様である。264ビット未満の
任意の長さのメッセージが入力されると、SHA−1
は、メッセージ・ダイジェストと呼ばれる160ビット
の出力を生成する。次いで、このメッセージ・ダイジェ
ストをディジタル署名アルゴリズム(DSA)に入力す
ることができ、ディジタル署名アルゴリズムは、メッセ
ージに対する署名を生成または検証する。
HA−1(Key xor Opad‖SHA−1(K
ey xor Ipad‖Message)) OpadおよびIpadの値は、SHA−1の内的な圧
縮関数のブロック・サイズに合致するように512ビッ
ト長である、異なる定数である。Keyは、この設計で
は512ビット長未満としなければならない。Opad
およびIpadの値については、H.Krawczy
k、M.Bellare、R.Canettiによる
「HMAC:Keyed−Hashing for M
essageAuthentication」に、HM
ACの詳細と共に定義されている。メッセージのストレ
ートなダイジェストと比較して、HMACプリミティブ
には、SHA1圧縮関数の反復がさらに2回必要であ
る。これは、優れたセキュリティ特性の割に合う低いオ
ーバーヘッドである。
メッセージ認証のための機構である。HMACは、任意
の反復的な暗号ハッシュ関数、例えばMD5やSHA−
1で、秘密の共有鍵と組み合わせて使用することができ
る。HMACの暗号強度は、基礎となるハッシュ関数の
特性によって決まる。
センス供与されたコードを使用してBIOS中で行われ
る。
ncrypt(PublicKey,OaepSee
d,Message) Message=RSAOaepDecrypt(Pr
ivateKey,Ciphertext) これらのプリミティブは、RSAアルゴリズムを使用し
て暗号化および解読を行う。暗号化プリミティブの場合
は、RSA Laboratoriesによる「PKC
S#1 v2.0:RSA Cryptography
Standard」に定義されているように、Mes
sageはまず、OAEP(optimal asym
metric encryption paddin
g、最適非対称暗号化パディング)を使用してパディン
グされ、次いで、PublicKeyに従って累乗さ
れ、mod還元される(mod-reduced)。OAEPに必要
なランダム・シード値は、パラメータとしてこの関数に
渡される。解読プリミティブの場合は、Private
Keyに従って暗号テキストが累乗されてmod還元さ
れた後、OAEPパディングが検証されて除去される。
ほとんどの場合、Messageは、128ビットの鍵
と160ビットのSMK KIDの連結である。
Iデータに向けて設計されている。PKCSはまた、I
TU−T X.509標準にも適合する。出版されてい
る標準は、PKCS#1、#3、#5、#7、#8、#
9、#10、#11、#12である。PCKS#13お
よび#14は現在策定中である。PKCSは、アルゴリ
ズム特有とアルゴリズム独立の両方の実装標準を含む。
RSAやDiffie−Hellman鍵交換を含めた
多くのアルゴリズムがサポートされるが、RSAおよび
Diffie−Hellman鍵交換だけが具体的に詳
述されている。PKCSはまた、ディジタル署名、ディ
ジタル封筒、および拡張型の証明書のための、アルゴリ
ズム独立の構文も定義している。これにより、どんな暗
号アルゴリズムを実装していても標準的な構文に従うこ
とができ、したがって相互運用性が達成される。PKC
S規格について詳述した文書は、RSA Data S
ecurityのFTPサーバ(http://ww
w.rsa.comから、またはftp.rsa.co
mへのアノニマスftpを介して、またはpkcs@r
sa.comに電子メールを送ることによってアクセス
可能)で入手することができる。
る。
ムを用いてデータを暗号化しデータに署名するための機
構を定義する。PKCS#2は、Diffie−Hel
lman鍵合意プロトコルを定義する。PKCS#5
は、パスワードから導出した秘密の鍵でストリングを暗
号化する方法を記述する。PKCS#6は、X.509
のバージョン3を優先して徐々に廃止されつつある。P
KCS#7は、ディジタル署名やディジタル暗号化など
の暗号の向上を含めた、メッセージに対する一般的な構
文を定義する。PKCS#8は、秘密鍵情報のためのフ
ォーマットを記述する。この情報は、何らかの鍵アルゴ
リズムに対する秘密鍵を含み、オプションで属性のセッ
トを含む。PKCS#9は、他のPKCS標準で使用す
るための、選択された属性タイプを定義する。PKCS
#10は、証明書要求のための構文を記述する。PKC
S#11は、スマート・カードやPCMCIAカードな
どの暗号デバイス用に、Cryptokiと呼ばれる、
技術に依存しないプログラミング・インターフェースを
定義する。PKCS#12は、ユーザの秘密鍵、証明
書、種々の秘密などを記憶または搬送するための可搬性
フォーマットを指定する。PKCS#13は、楕円曲線
暗号を使用してデータを暗号化しデータに署名するため
の機構を定義する。PKCS#14は、擬似乱数生成の
ための標準を提供する。
ypt(PrivateKey,Digest)および
Digest=RSASigDecrypt(Publ
icKey,SigBlock)のプリミティブは、R
SAアルゴリズムを使用して暗号化および解読を行う。
暗号化プリミティブの場合は、「PKCS#1 v2.
0:RSA Cryptography Standa
rd」に定義されている署名パディングを使用して、最
初に160ビットのSHA−1ダイジェスト値がパディ
ングされ、次いで、PublicKeyに従って累乗さ
れ、mod還元される。解読プリミティブの場合は、P
rivateKeyに従って暗号テキストが累乗されて
mod還元された後、パディングが検証されて除去され
る。パディングはダイジェスト・アルゴリズムの識別を
エンコードし、これらのプリミティブだけがSHA1ア
ルゴリズムをサポートする。これらのプリミティブは、
ディジタル署名を生成および検証するプロセスの一部で
ある。その他のステップは、署名されつつあるデータの
実際のSHA1ダイジェストを計算または検証すること
を含む。
を所有するアプリケーションを識別するのに使用される
データである。これは、すべてのコンテナには適用され
ない。このデータは、暗号関数を呼び出しているコード
に基づいて生成される。このデータは通常、デバイス・
オーソリティによって生成、暗号化、および署名され
る。ほとんどの場合、解読されたAppCodeDig
est(ACD)が、実行時にBIOSによってCal
lerCodeDigestと比較される。サーバに属
するCodeDigestは常に0である。
llerCodeDigestは、関数の呼出し元に基
づく関数中で計算されるデータである。このダイジェス
トを計算するのに使用される情報は、BIOSへの登録
やオペレーティング・システム・ドライバへの登録など
の登録中に、コンテナ・オペコードとしてOpaacO
sdAuthorizationを伴うSignedC
ontainer中で提供される。
テムが通過する初期段階である。この段階の間に、マス
タ鍵が生成され、クライアント・システムとデバイス・
オーソリティ・サーバとの間で交換される。このステッ
プは、PubKContainerを使用する。エンロ
ールメント・プロセスによってまだマスタ鍵が割り当て
られていないときは、マスタ鍵は、本物のマスタ鍵が取
って代わるまで一時的なランダム値で置き換えられる。
ドライバ(OSD)も両方とも、コンテナ・オペレーシ
ョンに参与する。封印に関係するコンテナ関数には、O
SDAppContainerSeal()、OSDM
KContainerSeal()、OSDPubKC
ontainerSeal()、およびBIOSApp
ContainerSeal()が含まれる。
l()関数は、ランダムなセッション鍵(Master
Key)を生成し、これをAppContainer
内で呼出し元に返す。次いでこのAppContain
erは、他のMKContainer()オペレーショ
ンを呼び出すのに使用される。図 に、例示的なPub
KContainerアルゴリズムを示す。
AppContainerUnseal()、OSDM
KContainerUnseal()、OSDSig
nedContainerUnseal()、OSDP
ubKContainerUnseal()、およびB
IOSAppContainerUnseal()が含
まれる。
詳細について論じる。これらのクラスには、PubkC
ontainerおよびMKContainerが含ま
れる。
ォーマットと、封印および開封で使用されるクラスにお
けるメソッドについての記述である。これらのコンテナ
は主に、クライアントとデバイス・オーソリティ・サー
バとの間に安全な通信チャネルをセットアップするのに
使用する。PubKContainerの第2部分は、
4バイトのヘッダを含む完全なMKContainer
オブジェクトである。PubKContainerの第
1部分は、生成されたマスタ鍵(MK)およびクライア
ントの鍵ID(KID)の値を含み(またはマスタ鍵が
割り当てられていない場合は0)、これらの値は両方と
も、受信側の公開鍵で解読される。
トは、このコンテナの第1部分を変更せずに第2部分を
変更できるように慎重に選択する。これにより、クライ
アントおよびサーバは、いくつかの大きな性能向上を図
ることができる。OSD封印関数が、生成されたマスタ
鍵をAppContainer中にラッピングして返す
ことになる。クライアントは、サーバへの新たな接続を
(例えば新しいダウンロードをフェッチするために)開
始するたびに、MKとPubKContainerの第
1部分とを記憶および再使用することができ、第2部分
は、このセッションを暗号化するための新しいマスタ鍵
を含むMKContainerとなる。これにより、S
MIルーチンで公開鍵オペレーションを実施する必要が
回避され、しかもなお、本物のサーバだけにしか新しい
セッション鍵がわからないことが知られるというセキュ
リティ上の利点が得られる。というのは、本物のサーバ
だけが、保存されたマスタ鍵(新しいセッション鍵を解
読するのに必要)を知っているか、あるいは第1部分を
読むための秘密鍵を知っているからである。サーバにと
って重要な最適化は、PubKContainerの第
1部分から抽出したマスタ鍵をキャッシュし、キャッシ
ュした値に第1部分のハッシュで索引付けすることであ
る。このキャッシュにより、PubKContaine
rの第1部分を再使用するときに秘密鍵オペレーション
を行う必要が回避される。クライアントは常に第1部分
全体を送り、したがってサーバは常にその秘密鍵(サー
バ通信秘密鍵)を使用してマスタ鍵を抽出することがで
きるので、サーバはいつでもキャッシュ・エントリをフ
ラッシュすることができることに留意されたい。このこ
とはまた、クライアントとサーバとの間の初期化メッセ
ージ用のフォーマットが1つだけであり、再使用とマス
タ鍵の生成のいずれかに対処するために2つの別個のフ
ォーマットがあるのではないことを意味する。
ルメント中にクライアントとサーバとの間の伝送をセッ
トアップして秘密のマスタ鍵をセットアップできるよう
にし、何らかのクライアント・アプリケーションとデバ
イス・オーソリティ・サーバとの間の伝送をセットアッ
プするために使用される。表11に、最終的な封印され
たPubKContainer構造を示す。
ンストラクタおよびメソッドは以下のとおりである。
r()は、ロガー・オブジェクトを初期化する空のコン
テナである。このpublic PubKContai
ner(InputStream in)に関しては、
コンテナは入力ストリームで初期化され、次いでこれは
バイト・アレイとしてバッファに読み込まれる。次いで
バッファは、parseBufferメソッドを使用し
て解析される。ロガー・オブジェクトもまた初期化され
る。
(byte[]buf) コンテナはバイト・アレイで初期化され、次いでこれは
バイト・アレイとしてバッファに読み込まれる。次いで
バッファは、parseBufferメソッドを使用し
て解析される。ロガー・オブジェクトもまた初期化され
る。private void seal()は、Rs
aLibExceptionを投げる。PubKCon
tainerを封印するために、opcode、KI
D、MK、PubkDigest、SealedMKC
ontainerが設定される。Formatを、3=
FmtPubKContainerに設定する。opc
ode、format、reserved、KID、お
よびMKでPubkBlockを構築する。opcod
e、KID、およびマスタ鍵は、呼出し元によって設定
される。tryブロックrsaOaepEncrypt
(PubKDigest,PubKBlock)中でR
SAlibに対してJNIラッパを呼び出して、暗号化
されたPubKRSABlockを構築する。長さを、
封印されたMKContainer(MkC)+148
(128−PubKRSABlock、20−PubK
Digest)の長さに設定する。この長さは、封印さ
れたMkContainerを含めたPubKDige
stからのバイト・カウントを表す。封印されたPub
kContainerを、Opcode‖format
‖reserved‖length‖PubkDige
st‖PubKRSABlock‖sealedMkC
のバイト・アレイとして構築する。セキュリティ・ユー
ティリティ・クラスからのaddArrayメソッドを
使用して、連結アレイを構築する。
()は、RsaLibException、Conta
inerExceptionを投げる。
idFormat、またはinvalidLenがfa
lseかどうかチェックし、ContainerExc
eptionを投げる。これらは、いずれかが予想どお
りでない場合にはparseBufferにおいてfa
lseに設定される。
てrsaOaepDecrypt(PubKDiges
t,PubKRSABlock)でPubKRSABl
ockを解読することにより、opcode‖form
at‖reserved‖KID‖MKであるPubK
Blockを得る。
rmat、KID、およびマスタ鍵に対して妥当性およ
び長さをチェックする。
uffer(byte[]buffer)は、到来して
バッファに記憶された封印されたコンテナを解析するた
めのヘルパ関数であり、このバッファは、opcode
‖format‖reserved‖length‖P
ubKDigest‖PubKRSABlock‖Se
aledMKCである。
Opcode、invalidFormat、inva
lidLenを設定する。
ForNet()は、ContainerExcept
ionを投げる。データおよびMKDigestがヌル
でないことをチェックし、次いでsealメソッドを呼
び出す。封印オペレーションで構築される以下のような
バッファを返す。 opcode‖format‖reserved‖le
ngth‖PubKDigest‖PubKRSABl
ock‖SealedMKC
de()は、コンテナのオペコードを返す。
KDigest()は、コンテナからのPubKDig
estを返す。
()は、コンテナからのKIDを、必要なら開封して返
す。
K()は、ConteinerExceptionを投
げ、コンテナからのMKを、必要なら開封して返す。
getMkContainer()は、Contain
erExceptionを投げる−Pubkに埋め込ま
れた封印されたMKコンテナを抽出し(これはpars
eBufferによって行う)、Pubk部分を開封し
てMKを得て、それをMKコンテナに対して設定する。
de(byte Opcode)は、Containe
rExceptionを投げる−有効範囲内にあるかど
うかチェックした後でコンテナに対するオペコードを割
り当てる。
Digest(byte[]digest)は、Con
tainerExceptionを投げる−ヌルが渡さ
れた場合またはlengthが20に等しくない場合は
例外を投げ、PubKDigestを設定する。
(byte[]Kid)は、ContainerExc
eptionを投げる−ヌルが渡された場合またはle
ngthが20に等しくない場合は例外を投げ、鍵ID
を設定する。
yte[]Mk)は、ContainerExcept
ionを投げる−ヌルが渡された場合またはlengt
hが16に等しくない場合は例外を投げ、MKを設定す
る。
ntainer(byte[]Mkc)は、Conta
inerExceptionを投げる−PubKCon
tainerに埋め込むべき封印されたMKConta
inerを設定する。
t aWarningLevel,String me
ssage)−パラメータとして渡された警告レベルを
現在の警告レベルと比較し、より緊急である場合はそれ
を出力する。
トラクタおよびメソッドは、以下のとおりである。
マットおよびそれを生み出すのに使用されるアルゴリズ
ムについて論じる。ます開封されたフォーマットについ
て述べ、次いでこれを封印および開封するステップにつ
いて述べる。MKContainerは主に、クライア
ントとサーバがPubKContainerを使用して
共通のマスタ鍵をセットアップした後にこれらの間で送
られる大きい(64Kまで)の情報チャンクを保護する
のに使用する。
暗号化するのに使用する。暗号化は、対称鍵暗号化に基
づく。この鍵はマスタ鍵から導出される。MKCont
ainerは、マスタ鍵から導出された対称鍵を使用し
て大きい(64Kまでの)チャンクを暗号化するのに使
用される。特別な場合の用途は、エンロールメント中に
クライアントとサーバとの間の伝送を暗号化して秘密の
マスタ鍵をセットアップできるようにし、何らかのクラ
イアント・アプリケーションとデバイス・オーソリティ
・サーバとの間の伝送を暗号化することである。表13
に最終的な封印された構造を示す。
r()は、ロガー・オブジェクトをちょうど初期化する
空のコンテナである。
(InputStream in)−コンテナは入力ス
トリームで初期化され、次いでこれはバイト・アレイと
してバッファに読み込まれる。次いでバッファは、pa
rseBufferメソッドを使用して解析される。ロ
ガー・オブジェクトもまた初期化される。
yte[]buf)−コンテナはバイト・アレイで初期
化され、次いでこれはバイト・アレイとしてバッファに
読み込まれる。次いでバッファは、parseBuff
erメソッドを使用して解析される。ロガー・オブジェ
クトもまた初期化される。
は、RsaLibExceptionを投げる。
に、以下のものを設定する。これらのopcode、M
KDigest、およびdataに対するsetメソッ
ドを呼び出す。
ntainerに設定する。
est+16−iv+20−scd)として設定する。
として得て、cryptoPrimitives ge
nerateRandomNumber(16)メソッ
ドを呼び出す。
oArrayメソッドを使用して、以下のペイロードを
構築する。 opcode‖format‖reserved‖le
ngth‖MKDigest‖iv‖scd‖data
ing=CryptoPrimitive.newKe
y(MKDigest,ctnrConstants.
UsageMKMacServer)として構築する。
出しから以下のMacが得られる。 Mac=CryptoPrimitive.getHm
ac(NKeyForSealing,payloa
d)
ata‖macとして構築する。
ルに設定して、変数Plaintext(以下参照)を
16の倍数のバイト長にする。各パディング・バイト
は、ベクトル中のパディング・バイトの数に等しい値を
有する。これは、SecurityUtilsクラス中
のadjustPadメソッドを使用して行われる。
る。このときPlaintextは以下のようになる。 iv‖SealersCodeDigest‖Data
‖Mac‖Padding
UsageMKEnc,Plaintext)にする。
Ciphertextの長さはPlaintextと同
じになる。
バイトの数に20(MKDigestのため)を足した
数に設定し、この値を2バイト・アレイに記憶する。
下のものを有するバッファとして構築する。 opcode‖format‖reserved‖le
ngth‖MKDigest‖ciphertext
()は、RsaLibException、Conta
inerExceptionを投げる。invalid
Opcode、invalidFormat、またはi
nvalidLenがfalseかどうかチェックし、
ContainerExceptionを投げる。これ
らは、いずれかが予想どおりでない場合にはparse
Bufferにおいてfalseに設定される。par
seBufferから抽出される暗号テキストは、Cr
yptoPrimitive,decryptメソッド
に渡されて、解読された平文テキストが得られる。de
cメソッドが、dec(MKDigest,ctnrC
ontstants,UsageMKEncServe
r,ciphertext)として呼び出される。
バイトがわかるが、これは、パッド・バイトがいくつ追
加されたかを示す。パッド・バイトは平文テキストから
除去され、macの長さおよびパッド・バイトの数を平
文テキストの長さから除くことによってデータ・サイズ
が計算される。
し、2バイト・アレイとして記憶する。dataの長さ
が計算され、iv、scd、およびmacの長さが所定
なので、これらはすべて平文テキストから抽出される。
きPadding長を引いた長さに変更する。
t‖reserved‖length‖MKDiges
t‖iv‖scd‖dataとして構築する。newK
eyを、NKeyForSealing=Crypto
Primitive.newKey(MKDiges
t,ctnrConstants.UsageMKMa
cServer)として構築する。
呼出しから以下のようにExpectedMacが得ら
れる。 expectedMac=CryptoPrimiti
ve.getHmac(NKeyForSealin
g,payload) macとexpectedMacが等しくない場合はC
ontainerExceptionを投げる。
uffer(byte[]buffer)は、到来して
バッファに記憶された封印されたコンテナを解析するた
めのヘルパ関数であり、このバッファは、opcode
‖format‖reserved‖length‖M
KDigest‖chpheredTextであり、c
iphered textは、暗号化された形の‖IV
‖SealersCodeDigest‖Dataから
なる。
Opcode、invalidFormat、inva
lidLenを設定する。
ForNet()は、鍵ID、MK、および封印された
MkC(MkBuff)がヌルではないことをチェック
し、次いでsealメソッドを呼び出す。封印オペレー
ションで構築される以下のようなバッファを返す。 Opcode‖Format‖Length‖MKDi
gest‖IV‖SealersCodeDigest
‖Data‖mac‖pad
de()−コンテナのオペコードを返す。
igest()は、ContainerExcepti
onを投げる−コンテナからのPubMKDigest
を返す。
a()は、ContainerExceptionを投
げる−コンテナからのデータを、必要なら開封して返
す。
K()は、ConteinerExceptionを投
げる−コンテナからのMKを返す。
de(byte Opcode)は、Containe
rExceptionを投げる−有効範囲内にあるかど
うかチェックした後でコンテナに対するオペコードを割
り当てる。
gest(byte[]digest)は、Conta
inerExceptionを投げる−ヌルが渡された
場合またはlengthが20に等しくない場合は例外
を投げ、MKDigestを設定する。
(byte[]Kid)は、ContainerExc
eptionを投げる−ヌルが渡された場合は例外を投
げ、データを設定する。
yte[]Mk)は、ContainerExcept
ionを投げる−ヌルが渡された場合またはlengt
hが16に等しくない場合は例外を投げ、MKを設定す
る。
t aWarningLevel,String me
ssage)は、パラメータとして渡された警告レベル
を現在の警告レベルと比較し、より緊急である場合はそ
れを出力する。
る。オペレーティング・システム・ドライバ(OSD)
は、システム10のコア・コンポーネントの1つであ
る。これは、動的にシステムにロードされるカーネル・
モード・ドライバである。この上端は、セキュリティ・
アプリケーションにセキュリティ・サービスを提供す
る。この下端は、低レベルのセキュリティ機能を提供す
るセキュリティBIOSとインターフェースする。オペ
レーティング・システム・ドライバが提供するサービス
には、RSAおよびRC6暗号関数、アプリケーション
保全性チェック、および乱数生成が含まれる。
は、WDM Windows(登録商標)デバイス・ド
ライバなどのオペレーティング・システム・ドライバを
採用する。このデバイス・ドライバはまた、Windo
ws98、WindowsME、Windows200
0、および将来のMicrosoft Windows
オペレーティング・システムの元でも稼動する。
じ、OSDオペレーションのプロシージャについて概説
する。図2にクライアント・コンポーネント階層を示
す。
ーションは、OSD関数を呼び出す前に、OsdReg
isterApplication関数を呼び出すこと
によってそれ自体をオペレーティング・システム・ドラ
イバに登録する。オペレーティング・システム・ドライ
バは、アプリケーションを登録するために以下のことを
行う。プロセスIDなどのアプリケーション識別情報を
得る。
ontainer中の鍵ダイジェストに基づいて、公開
鍵インデックスを得る。初期化中にオペレーティング・
システム・ドライバが生み出す鍵テーブルが、鍵ダイジ
ェストを鍵インデックスにマッピングする。BIOSR
awRSAPublicルーチンを呼び出して、Sig
nedContainer中のデータ・ブロックを開封
する。このデータ・ブロックは、アドレス範囲と、予想
されるコード・ダイジェストおよびPrivilege
BitVectorと、保全性チェックの頻度とを含
む。
ケーションの部分のコード・ダイジェストを生み出す。
アプリケーションは、すべてのOSD関数呼出しが共に
近くなるように実装すべきであり、これはOSDサービ
ス呼出しブロック(SIB、Service Invo
cation Block)と呼ばれる。OSDサービ
ス呼出しブロックは、他のアプリケーションがそのSI
Bにジャンプしてそれ自体の目的にOSDのAPIを使
用することを防止するために、非総称的でなければなら
ない(そうであることが正式に必要とされる)。このS
IBは、呼出し側アプリケーションに特有の付加価値A
PIのセットである。
れるコード・ダイジェストを比較する。これらが同じで
ある場合はアプリケーションを認証し、そうでない場合
はエラーを返す。アプリケーションが認証される場合、
登録済みアプリケーション・テーブルにエントリを追加
する。このエントリは、アプリケーションの識別情報
(プロセスID)、OSDサービス呼出しブロックのア
ドレス範囲、OSDサービス呼出しブロックおよびPr
ivilegeBitVectorのコード・ダイジェ
スト、保全性チェック頻度を含む。
リケーションは、オペレーティング・システム・ドライ
バに登録した後、OSDサービスを要求することができ
る。オペレーティング・システム・ドライバは、その関
数が呼び出されるたびに以下のことを行う。
る。登録済みアプリケーション・テーブルからの保全性
チェック頻度に基づく。オペレーティング・システム・
ドライバは、アプリケーションのOSDサービス呼出し
ブロックのコード・ダイジェストを生み出すことによっ
てこれを行う。次いで、予想されるコード・ダイジェス
トと比較する。これらが同じであればアプリケーション
保全性はとれている。そうでない場合はエラーを返す。
rをチェックして、アプリケーションが特にこの関数を
呼び出す権限を有するかどうか調べる。OSDコードの
実行を継続して、要求を満たす。オペレーティング・シ
ステム・ドライバは、要求されたサービスに応じてセキ
ュリティBIOSルーチンを呼び出すこともできる。O
sdRandomAddNoise関数を呼び出す。こ
れは、PRNGの予測不能性を高めることになる。
て論じる。アプリケーションは、適切に終了する前にO
sdUnregisterApplicationを呼
び出して、オペレーティング・システム・ドライバから
それ自体の登録を解除する。OSDドライバは、登録済
みアプリケーション・テーブル中のそのアプリケーショ
ンのエントリを除去する。
ライバ(OSD)の機能についての詳細な記述である。
オペレーティング・システム・ドライバは、Windo
ws98、WindowsME、およびWindows
2000の元で稼動することのできるWDMカーネル・
モード・ドライバである。WDMは、WindowsN
Tによって階層化された32ビット・デバイス・ドライ
バ・モデルに基づいており、PNPおよび電力管理に対
するサポートが追加されている。オペレーティング・シ
ステム・ドライバはどんな物理デバイスも管理しないの
で、ハードウェア・リソースは割り振られない。オペレ
ーティング・システム・ドライバは1つのモジュールと
して実装される。クラス/ミニクラスのドライバの対は
ない。オペレーティング・システム・ドライバがシステ
ムにロードされると、機能デバイス・オブジェクト(F
DO)が生み出される。図3に、オペレーティング・シ
ステム・ドライバ・コンポーネントの対話を示す。
ルの生成について論じる。オペレーティング・システム
・ドライバは、登録済みアプリケーションのテーブルを
維持する。登録済みアプリケーション・テーブルからの
アプリケーション・チェック頻度に基づき、オペレーテ
ィング・システム・ドライバは、呼出し元の保全性を定
期的にチェックする。呼出し元のOSDサービス呼出し
ブロックのアドレス範囲を得て、コード・ダイジェスト
を生み出す。次いで、登録済みアプリケーション・テー
ブルからの予想されるコード・ダイジェストを再度チェ
ックする。
ペレーティング・システム・ドライバは、PubKco
ntainer封印を行うための(ただしエンロールメ
ントのためではない)インターフェース関数を実装し、
PubKContainerは、BIOS、AppCo
ntainer封印/開封、およびSignedCon
tainer開封において生み出される。しかし、セキ
ュリティBIOSには、すべてのRSA公開鍵/秘密鍵
アルゴリズムが実装される。オペレーティング・システ
ム・ドライバは、BIOSルーチンを呼び出して、コン
テナオペレーションを完了する。
は、MKContainerを封印/開封するためのR
C6アルゴリズム関数を実装する。これは、エンロール
メント中を除いては、BIOS中ではなくオペレーティ
ング・システム・ドライバ自体の中で行われ、BIOS
は、MKContainerを処理してマスタ鍵を保護
する。
Iについて論じる。
システム・ドライバの、システム・カーネルとのインタ
ーフェースおよびセキュリティBIOSとのインターフ
ェースについて述べる。このセクションはまた、ユーザ
モード・アプリケーションがOSDセキュリティ・サー
ビスを得るために呼び出すことのできるOSD API
関数も定義する。ここではまた、オペレーティング・シ
ステム・ドライバが実装すべき内部関数についても述べ
る。
上端インターフェースは、以下のように機能する。WD
Mモデルの元で、システムI/Oマネージャは、I/O
要求パケット(IRP)を生み出してデバイス・ドライ
バに送ることにより、デバイス・ドライバにI/O要求
を出す。OSDセキュリティ・サービスは、DEVIC
E_IO_CONTROLのIRPを送ることによって
呼び出すことができる。Device_IO_Cont
rolコードに対する各ハンドラ・ルーチンは、特定の
関数を提供する。オペレーティング・システム・ドライ
バIO_CONTROLコードは、以下のように定義さ
れる。
APPLICATION:ハンドラ・ルーチンがアプリ
ケーションをオペレーティング・システム・ドライバに
登録して、BIOSルーチンを呼び出す。
R_APPLICATION:ハンドラ・ルーチンがア
プリケーションの登録をオペレーティング・システムか
ら解除する。
C_KEY:ハンドラ・ルーチンが、鍵インデックスを
パラメータとして使用してBIOSから公開鍵をフェッ
チし、BIOSルーチンを呼び出す。
GNED_DIGEST:ハンドラ・ルーチンがデータ
・ブロックのRASディジタル署名を検証する。BIO
Sルーチンを呼び出す必要がある。
NERATE:ハンドラがPRNGを使用して乱数を生
成する。このハンドラは、PRNG実装に応じてBIO
Sルーチンを使用する場合もあり使用しない場合もあ
る。
AINER_SEAL:ハンドラが、鍵インデックスで
指定された公開鍵を使用してコンテナ中のデータ・ブロ
ックを暗号化し、BIOSルーチンを呼び出す。
NTAINER_UNSEAL:ハンドラ・ルーチン
が、許可されたサーバによって本当にコンテナが署名さ
れているかどうかを検証し、BIOSルーチンを呼び出
す。
INER_SEAL:ハンドラ・ルーチンが、マスタ鍵
から導出した鍵でAppContainerを封印し、
BIOSルーチンを呼び出す。
INER_UNSEAL:ハンドラ・ルーチンが、マス
タ鍵から導出した鍵でAppContainerを開封
し、BIOSルーチンを呼び出す。
INER_TRANSFER:ハンドラ・ルーチンが、
同じプラットフォームまたは異なるプラットフォーム上
で稼動する別のプログラムでしか開封できないAppC
ontainerを封印する。BIOSルーチンを呼び
出して、認証情報を含むSignedContaine
rを開封する。
NER_SEAL:ハンドラ・ルーチンがマスタ鍵でコ
ンテナを封印する。実際の封印は、オペレーティング・
システム・ドライバ内部で行われる。BIOSルーチン
を呼び出して、マスタ鍵を得るためにAppConta
inerを開封する。
NER_UNSEAL:ハンドラ・ルーチンがマスタ鍵
でコンテナを開封する。開封は、オペレーティング・シ
ステム・ドライバ内部で行われる。BIOSルーチンを
AppContainerに呼び出して、マスタ鍵を得
る。
NERATE_REQUEST:ハンドラ・ルーチンが
BIOSルーチンを呼び出して、擬似SMK、メッセー
ジ鍵、およびSMKクライアント・シードを生成する。
OCESS_RESPONSE:ハンドラ・ルーチンが
BIOSルーチンを呼び出して、このプラットフォーム
用のマスタ鍵を生成する。
E_SMK:ハンドラ・ルーチンがBIOS関数を呼び
出して、前のエンロールメントによって生成されたマス
タ鍵を無効にする。
C_KEY:ハンドラ関数が追加のRSA公開鍵をBI
OS鍵テーブルにインストールする。
イバの下端インターフェースについて論じる。オペレー
ティング・システム・ドライバの下端インターフェース
上で、オペレーティング・システム・ドライバは、セキ
ュリティBIOSインターフェース・ルーチンを呼び出
して、低レベルのBIOSから提供されるセキュリティ
・サービスを得る。セキュリティBIOSインターフェ
ースは、32ビットのディレクトリ・サービス・インタ
ーフェースに基づいて実装されることになる。セキュリ
ティBIOSが提供するすべてのサービスに対して、関
数インデックスを定義すべきである。オペレーティング
・システム・ドライバは、システムにロードされるとき
に、セキュリティBIOSエントリ・ポイントを探索す
る必要がある。各ルーチン呼出しの前に、ペレーティン
グ・システム・ドライバは、セキュリティBIOS仕様
に基づいてレジスタ・コンテキストをセットアップする
必要がある。
論じる。ユーザ・モードAPIライブラリが実装され
る。セキュリティ・アプリケーションは、このライブラ
リ中の関数を呼び出すことにより、オペレーティング・
システム・ドライバが提供するセキュリティ・サービス
にアクセスすることができる。以下にAPI関数を記述
する。
ication(IN unsigned char*
pAuthorizationBuffer,IN u
nsigned int*pAuthorizatio
nBufferLength)
ードに登録する。これは、アプリケーションが認証され
ていることを検証し、OSDの維持する登録済みアプリ
ケーション・テーブルにアプリケーション情報を保存す
る。他のOSD呼出しは、登録済みアプリケーション内
のある位置または別のOSD関数から呼び出されたとき
しか機能しないことになる。この関数は、登録が成功し
た場合は0を返す。そうでない場合はエラーを返す。p
AuthorizationBufferおよびpAu
thorizationBufferLengthのパ
ラメータは、デバイス・オーソリティ・サーバによって
生み出されたSignedContainerの位置お
よび長さを指定する。
ISTER_APPLICATIONを使用してOSD
サービスを呼び出す。
ies(OUT unsigned short*pV
ersion,OUT unsigned short
*pCapabilities)
OSD CR能力およびシステム状況を返す。
る。 第1バイト 第2バイト マイナー・バージョン メジャー・バージョン
15ビットを有すると定義される。ビット0は、システ
ムがすでに首尾よくエンロールしたことを示す。1は成
功、0は失敗である。ビット1はエンロールメント・タ
イプを示す。0はオフライン・エンロールメント、1は
オンライン・エンロールメントである。ビット2〜15
は予約されている。
_CAPABILITIESを使用してOSDサービス
を呼び出す。
plication()関数は、呼出し元のエントリを
登録済みアプリケーション・テーブルから除去すること
によって、呼出し元の登録を解除する。この関数は、I
OCTL_OSD_UNREGISTER_APPLI
CATIONを使用してOSDサービスを呼び出す。
(IN int nKeyIndex,OUT uns
igned char*pModulusBuffe
r,IN/OUT unsigned int*pMo
dulusBufferLength,OUT uns
igned int*pExponent)
ex行に位置するRSA公開鍵を首尾よくフェッチした
場合に0を返す。公開鍵の法(1024ビットの数)を
指定バッファ中に返し、公開鍵の指数(3と65537
のいずれか)をpExponentで識別される位置に
置く。pMudulusBufferLengthで識
別される位置は、最初にpModulusBuffer
の最大長さにバイトで設定され、呼出しが返った後、実
際に使用されるバイト数に設定される。0以外の戻り値
はエラーを示す。鍵の法は、最上位バイト(MSB)を
先にしてバッファにコピーされる。nKeyIndex
の値は、0で始まり、フラッシュROMからロードされ
る鍵に対して順次増加する。負のnKeyIndexの
値は、OSが稼動した後でWDLのOSDセキュリティ
・モジュールによってSMM公開鍵テーブルにロードさ
れる鍵を参照する。
509証明書から知る公開鍵に対応するnKeyInd
exをアプリケーションが突き止めるのに使用すること
ができる。
ーションまたは別のOSDルーチンででない場合はエラ
ーを返す。この関数は、呼出し元コードのSHA1ダイ
ジェストが登録時から変化していないことを定期的に検
証する。
_PUBLIC_KEYを使用してOSDサービスを呼
び出す。
nedDigest(IN int nKeyInde
x,IN unsigned char*pSigne
dDigestBuffer,IN unsigned
int*pSignedDigestBufferL
ength,IN unsigned char*pD
igestBuffer.IN unsigned i
nt*pDigestBufferLength)
する。これは、PKCS#1フォーマットされたRSA
公開鍵オペレーションを行い、pSignedDige
stBufferおよびpSignedDigestB
ufferLengthで指定されるデータ・バッファ
を、nKeyIndexで指定される公開鍵を使用して
解読して、合致する秘密鍵を使用して暗号化された予想
ダイジェスト値を抽出する。この予想ダイジェスト値
を、pDigestBufferおよびpDigest
BufferLengthのパラメータで指定される値
と比較する。これらが等しい場合は0を返す。そうでな
い場合は0以外のエラー・コードを返す。このルーチン
はまた、nKeyIndexが無効である場合にもエラ
ーを返す。pDigestBufferおよびpDig
estBufferLengthの値は、OsdSHA
1Finalルーチンを呼び出すことで得られる。
中のデータはMSBから先に記憶され、これは選択され
た公開鍵に対する法とちょうど同じ長さにならなければ
ならない。
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。
IFY_SIGNED_DIGESTを使用してOSD
サービスを呼び出す。
UT DigestContext*pDigestC
ontext)
でも呼び出すことができる。これは、SHA1ダイジェ
スト値を計算するのに使用される呼出し元アドレス空間
中のデータ構造を初期化する。
ができ、したがってOSDモジュールは、結果が正しい
ことに依拠することはできない。アプリケーションがこ
れらのSHA1ルーチンを使用して署名を検証すると
き、アプリケーションは、それ自体を信用して正しいダ
イジェスト値を計算し、次いで、オペレーティング・シ
ステム・ドライバを(かつBIOS SMIセキュリテ
ィ・モジュールを)信用して正しいRSA公開鍵で計算
する。OSDレイヤが新しいアプリケーションを登録し
ているとき、データ構造はオペレーティング・システム
・ドライバのメモリ中に保持され、したがってオペレー
ティング・システム・ドライバは結果を信用することが
できる。DigestContextデータ構造の定義
については、セクション8を参照されたい。
(IN DigestContext*pDigest
Context,IN unsigned char*
pBuffer,IN unsigned int*p
BufferLength)
でも呼び出すことができる。これは、呼出し元のアドレ
ス空間中のデータ構造を使用して、pBufferおよ
びpBufferLengthのパラメータで指定され
るデータ・バイトをそれにフィードすることにより、S
HA1ダイジェスト・オブジェクトの状態を更新する。
チンを呼び出す前にバッファ中のバイト数のカウントで
埋めなければならない位置へのポインタである。このル
ーチンがこの位置を変更することはなく、したがってこ
の長さは、参照によってではなく直接に渡すこともでき
る。しかしこの設計では、インターフェースをより一様
なものにするために、すべてのバッファ長の値を参照に
よって渡す。
(IN DigestContext*pDigest
Context,OUT unsigned char
*pDigestBuffer,IN/OUT uns
igned int*pDigestBufferLe
ngth)
でも呼び出すことができる。これは、呼出し元のアドレ
ス空間中のデータ構造を使用して、OsdDigest
Updateルーチンへの0回またはそれ以上の呼出し
において渡される場合のあるデータ・ブロックのSHA
1ダイジェストの最終結果を計算する。これは、パディ
ングおよび全長を(ビットで)付加して最終的なダイジ
ェスト・オペレーションを行うことにより、データ構造
のバッファ中に残っているどんなバイトも処理する。結
果は、pDigestBufferおよびpDiges
tBufferLengthのパラメータで指定される
バッファ中に配置する。この関数を呼び出す前は、pD
igestBufferLengthは、最大サイズの
pDigestBufferを指定する位置を指し、首
尾よく完了した後は、この位置はバッファ中に配置され
たバイトの数に設定される。SHA1ダイジェストの場
合、結果は20バイト長になる。
te(OUT unsigned char*pDat
aBuffer,IN unsigned int*p
DataBufferLength)
・ドライバの擬似乱数発生器を使用して、pDataB
ufferLengthパラメータで指定されるバイト
数で指定のデータ・バッファを埋める。
0バイト以下の場合は、以下のステップを1回行い、R
esultBlockの先頭バイトをpDataBuf
ferにコピーして、残りは廃棄する。20バイトより
多く必要な場合は、以下のステップを必要なだけ繰り返
す。StateBlockおよびResultBloc
kは、両方とも20バイトの値である。StateBl
ockは、PRNGのグローバル状態を表す。
ateBlock‖StateBlock) StateBlock=StateBlock xor
SHA1(StateBlock‖ResultBl
ock) pDataBufferが埋められているときは、Os
dRandomAddNoiseを呼び出すことによっ
て終了する
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。
DOM_GENERATEを使用してOSDサービスを
呼び出す。
rSeal(IN int nKeyIndex,IN
/OUT unsigned char*pConta
inerBuffer,IN/OUT unsigne
d int*pContannerBufferLen
gth,OUT unsigned char*pMK
Buffer,IN/OUT unsigned in
t*pMKBufferLength)
ーバから送られたデータが他のクライアントには読めな
いことを確実にするために使用する。このコンテナを開
封するのに必要な秘密鍵は、デバイス・オーソリティ・
サーバだけが知っている。pContainerBuf
ferパラメータは、開封されたPubKContai
ner構造を保持するメモリ・ブロックを指す。呼出し
元は、PubKContainerのセクションで述べ
た様々なフィールドを埋めるべきである。このセクショ
ンにはまた、この関数によって行われるステップも述べ
てある。nKeyIndexは、このコンテナを封印す
るのに使用すべき公開鍵を識別する。
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
erLengthのパラメータは、このPubKCon
tainer用に生成されたマスタ鍵を保護するApp
Containerで埋められるバッファを指定する。
この情報を使用して、同じマスタ鍵を有するMKCon
tainerを生み出す。
dNoise()を呼び出すことによって終了する。こ
の関数は、呼出し元が登録済みアプリケーションまたは
別のOSDルーチンでない場合はエラーを返す。この関
数は、呼出し元コードのSHA1ダイジェストが登録時
から変化していないことを定期的に検証する。この関数
は、IOCTL_OSD_PUBK_CONTAINE
R_SEALを使用してOSDサービスを呼び出す。
nerUnseal(IN/OUT unsigned
char*pContainerBuffer,IN
/OUT unsigned int*pContai
nerBufferLength)
って署名されたことを検証するのに使用する。これは、
署名が有効でない場合はエラーを返す。SignedC
onntainerのフォーマットおよびこの関数によ
って行われるステップについては、SignedCon
tainerのセクションに述べてある。
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
dNoise()を呼び出すことによって終了する。こ
の関数は、呼出し元が登録済みアプリケーションまたは
別のOSDルーチンでない場合はエラーを返す。この関
数は、呼出し元コードのSHA1ダイジェストが登録時
から変化していないことを定期的に検証する。この関数
は、IOCTL_OSD_SIGNED_CONTAI
NER_UNSEALを使用してOSDサービスを呼び
出す。
eal(IN/OUT unsigned char*
pContainerBuffer,IN/OUT u
nsigned int*pContainerBuf
ferLength,IN unsigned cha
r*pMKBuffer,IN unsigned i
nt*pMKBufferLength)
けしかコンテナを開封できないようにコンテナを封印す
ることになる。この鍵は、デバイスおよびサーバが知っ
ているマスタ鍵としてもよく、あるいは、クライアント
によって生成されてPubKeyContainer中
でサーバに送られる新しい鍵としてもよい。入力時は、
pContainerBufferパラメータは、開封
されたMKContainer構造を保持するメモリ・
ブロックを指す。出力時は、コンテナは封印される。呼
出し元は、MKContainerに関するセクション
で述べた様々なフィールドを埋めるべきである。このセ
クションにはまた、この関数によって行われるステップ
も述べてある。この関数は、鍵使用に対するクライアン
ト定数も使用する。
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
erLengthのパラメータは、OsdPubKCo
ntainerSeal関数への呼出しによって生成さ
れたマスタ鍵を保護するAppContainerを保
持するバッファを指定する。このルーチンは、OsdR
andomAddNoise()を呼び出すことによっ
て終了する。この関数は、呼出し元が登録済みアプリケ
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。この関数は、IOCTL_OSD_MK_CON
TAINER_SEALを使用してOSDサービスを呼
び出す。
nseal(IN/OUT unsigned cha
r*pContainerBuffer,IN/OUT
unsigned int*pContainerB
ufferLength,IN unsigned c
har*pMKBuffer,IN unsigned
int*pMKBufferLength,IN i
nt wasSealedByServer)
与のマスタ鍵を使用して封印されたコンテナを開封する
ためのものである。入力時は、pContainerB
ufferパラメータは、封印されたMKContai
ner構造を保持するメモリ・ブロックを指す。出力時
は、コンテナは開封される。開封されたフォーマットに
ついては、MKContainerに関するセクション
を参照されたい。このセクションにはまた、この関数に
よって行われるステップも述べてある。パラメータwa
sSealedByServerが0の場合は、このル
ーチンによって使用される鍵使用定数はクライアント定
数である。そうでない場合は、これらはサーバ定数であ
る。詳細については鍵使用定数に関するセクションを参
照されたい。
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
erLengthのパラメータは、OsdPubKCo
ntainerSeal関数への呼出しによって生成さ
れたマスタ鍵を保護するAppContainerを保
持するバッファを指定する。
dNoise()を呼び出すことによって終了する。こ
の関数は、呼出し元が登録済みアプリケーションまたは
別のOSDルーチンでない場合はエラーを返す。この関
数は、呼出し元コードのSHA1ダイジェストが登録時
から変化していないことを定期的に検証する。この関数
は、IOCTL_OSD_MK_CONTAINER_
UNSEALを使用してOSDサービスを呼び出す。
Seal(IN/OUT unsigned char
*pContainerBuffer,IN/OUT
unsigned int*pContainerBu
fferLength)
る同じプログラムによってしか開封できないようにコン
テナを封印するためのものである。入力時は、pCon
tainerBufferパラメータは、開封されたA
ppContainer構造を保持するメモリ・ブロッ
クを指す。出力時は、コンテナは封印される。呼出し元
は、AppContainerに関するセクションで述
べた様々なフィールドを埋めるべきである。このセクシ
ョンにはまた、この関数によって行われるステップも述
べてある。この関数は、鍵使用に対するクライアント定
数も使用する。
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
dNoise()を呼び出すことによって終了する。こ
の関数は、呼出し元が登録済みアプリケーションまたは
別のOSDルーチンでない場合はエラーを返す。この関
数は、呼出し元コードのSHA1ダイジェストが登録時
から変化していないことを定期的に検証する。この関数
は、IOCTL_OSD_APP_CONTAINER
_SEALを使用してOSDサービスを呼び出す。
Unseal(IN/OUT unsigned ch
ar*pContainerBuffer,IN/OU
T unsigned int*pContainer
BufferLength,IN int wasSe
aledByServer)
アプリケーションによって、または特にこのマシン上の
このアプリケーションのためにサーバによって封印され
たコンテナを開封するためのものである。入力時は、p
ContainerBufferパラメータは、封印さ
れたAppContainer構造を保持するメモリ・
ブロックを指す。出力時は、コンテナは開封される。開
封されたフォーマットについては、AppContai
nerに関するセクションを参照されたい。このセクシ
ョンにはまた、この関数によって行われるステップも述
べてある。パラメータwasSealedByServ
erが0の場合は、このルーチンによって使用される鍵
使用定数はクライアント定数である。そうでない場合
は、これらはサーバ定数である。
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
このルーチンは、OsdRandomAddNoise
()を呼び出すことによって終了する。この関数は、呼
出し元が登録済みアプリケーションまたは別のOSDル
ーチンでない場合はエラーを返す。この関数は、呼出し
元コードのSHA1ダイジェストが登録時から変化して
いないことを定期的に検証する。この関数は、IOCT
L_OSD_APP_CONTAINER_UNSEA
Lを使用してOSDサービスを呼び出す。
Transfer(IN/OUT unsigned
char*pContainerBuffer,IN/
OUT unsigned int*pContain
erBufferLength,IN unsigne
d char*pAuthorizationBuff
er,IN unsigned int*pAutho
rizationBufferLength)
なるプログラムによって開封できるようにコンテナを封
印するのに使用する。コンテナの元の所有者は、それを
開く能力を開放する。元の所有者は当然、コンテナのコ
ピーを作成してそのコピーを開閉し続けることができる
が、転送されるコンテナは異なる鍵で暗号化されること
になり、したがって新しい所有者だけしかそれを開ける
ことはできない。この機能は、安全なキーボード・リー
ダ・モジュールを使用してキーストロークを取り込み、
それらを正しいアプリケーションに安全に転送すること
によって使用することができる。
erパラメータは、開封されたAppContaine
r構造を保持するメモリ・ブロックを指す。出力時は、
コンテナは封印される。呼出し元は、AppConta
inerに関するセクションで述べた様々なフィールド
を埋めるべきである。このセクションにはまた、この関
数によって行われるステップも述べてある。この関数
は、鍵使用に対するクライアント定数も使用する。この
関数は、新しい所有者に使用されるようにコンテナを封
印する前に、呼出し元が現在そのコンテナを所有するこ
とを(DecryptedCodeDegestをチェ
ックして)確認する。
rおよびpAuthorizationBufferL
engthのパラメータは、デバイス・オーソリティ・
サーバによって生み出されたSignedContai
nerの位置および長さを指定する。詳細については、
保護されたコンテナに関する設計文書を参照されたい。
オペコードはOpcOsdAllowTransfer
であり、このコンテナの中のデータは、この関数を呼び
出しているプログラムのAppCodeDigest
と、このコンテナを開封できるプログラムのAppCo
deDigestとを指定する。コンテナのSeale
rsCodeDigestフィールドは、この関数を呼
び出したプログラムを識別することになる。
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
このルーチンは、OsdRandomAddNoise
()を呼び出すことによって終了する。この関数は、呼
出し元が登録済みアプリケーションまたは別のOSDル
ーチンでない場合はエラーを返す。この関数は、呼出し
元コードのSHA1ダイジェストが登録時から変化して
いないことを定期的に検証する。
teRequest(OUT unsigned ch
ar*pPubKContainerBuffer,I
N/OUT unsigned int*pPubKC
ontainerBufferLength)
イアント・シード、およびセッション・マスタ鍵を生成
することになる。これは、マスタ鍵のクライアント・シ
ードおよびセッション・マスタ鍵を有する封印されたP
ubKContainerと、セッション・マスタ鍵を
有する封印されたAppContainerとを返す。
PubKContainerは、デバイス・オーソリテ
ィ・サーバに送られる。BIOSは、クライアント・シ
ードおよびマスタ鍵をSMRAMに保存する。入力時、
pPubKcontainerBufferおよびpA
ppContainerBufferは、バッファを指
す。pPubKContainerBufferLen
gthおよびpAppContainerBuffer
Lengthは、これらのバッファの長さを有する位置
を指す。出力時、返されたContainerでバッフ
ァを埋めるべきである。
い場合はエラーを返す。この関数は、IOCTL_OS
D_ENROLL_GENERATE_REQUEST
を使用してOSDサービスを呼び出す。
sResponse(IN unsigned cha
r*pContainerBuffer,IN uns
igned int*pContainerBuffe
rLength,OUT unsigned char
*pAppContainerBuffer,IN/O
UT unsigned int*pAppConta
inerBufferLength,OUT unsi
gned char*pPubKContainerB
uffer,IN/OUT unsigned int
*pPubKContainerBufferLeng
th)
マスタ鍵を生成し、それをSMRAMに保存する。この
ルーチンは、鍵ID(SMKのハッシュ)とその他のデ
ータとを有するSealedAppContainer
を生み出すことになる。
rは、オンライン・エンロールメント中はデバイス・オ
ーソリティ・サーバから送られたMKContaine
rを記憶するバッファを指し、あるいはオフライン・エ
ンロールメント中は擬似サーバ・シードを有するSig
nedContainerを記憶するバッファを指す。
pContainerBufferLengthは、こ
のバッファの長さを指定する。出力時、pAppCon
tainerBufferは、鍵IDを含む封印された
AppConainerを記憶する。pPubCont
ainerBufferは、オフライン・エンロールメ
ント中はサーバ・シードおよびクライアント・シードを
含むバッファを指す。このポインタは、オンライン・エ
ンロールメント中はNULLとすることができる。
OLL_PROCESS_RESPONSEを使用して
OSDサービスを呼び出す。
K()
て生成されたマスタ鍵を無効にする。この関数は、IO
CTL_OSD_INVALIDATE_SMKを使用
してOSDサービスを呼び出す。
(IN unsigned int nKeyInde
x,IN unsigned char*pKeyBu
ffer,IN unsigned int*pKey
BufferLength)
れるRSA公開鍵を置換するか、あるいはBIOS鍵テ
ーブルに新しい鍵を追加する。入力時、nKeyInd
exは、置換または追加する鍵を指定する。pKeyB
ufferは鍵バッファを指定する。pKeyBuff
erLengthはバッファ長を示す。
数は、OSDドライバから内的に呼び出される。これら
はユーザ・アプリケーションには見えない。
oid) この関数は、オペレーティング・システム・ドライバの
状態を初期化する。オペレーティング・システム・ドラ
イバがシステムにロードされた後、オペレーティング・
システム・ドライバはこの関数を呼び出す。この関数
は、BIOSレイヤに登録し、PRNGを初期化する。
PRNGは、StateBlockを0にし、保存され
ているエントロピーをセマフォ・ファイルから読み、そ
れをバイナリに変換してOsdRandomAddSe
ed関数に渡すことによって初期化される。エントロピ
ーが保存されていない場合は、オペレーティング・シス
テム・ドライバは、エントロピー・バイトを集め、Os
dRandormAddSeedを呼び出し、次いでO
sdRandomSaveEntropyを使用してエ
ントロピーをセマフォ・ファイルに保存するという、ス
ロー・プロセスを行う。
se(void) この関数は、WDLのOSD Securityルーチ
ンそれぞれの最後に呼び出される。これは、攻撃者にと
っていくぶん予測不能なグローバル情報を追加すること
により、グローバルPRNGの予測不能性を高めるのに
役立つ。
Initを呼び出す。OsdDigestUpdate
を呼び出してStateBlockを渡す各クイック・
エントロピー・ソースごとに;OsdDigestUp
dateを呼び出して、クイック・エントロピーの値
(32ビットまたは64ビットの値)を渡す。最後のク
イック・エントロピー・ソースを処理した後、OsdD
igestFinalを呼び出してResultBlo
ckを生成する。
ock xor ResultBlock
Uサイクル・カウンタと、キャッシュ・ミス・カウント
などのCPU統計と、システム・クロックのすべてのビ
ットを含む。新しいStateBlockは、古いブロ
ックとダイジェスト値との排他的論理和の結果である。
排他的論理和によって古いブロックを新しいブロックに
混ぜることにより、新しい状態の予測不能性が古い状態
に劣らないことを保証する(ダイジェスト関数に対して
適度な特性を仮定した場合)。対照的に、式State
Block=SHA1(StateBlock)は、予
測不能性の程度を低くする場合がある。これは、SHA
1がランダム関数のように挙動し、それにより2つの入
力値が同じ出力値にマッピングされる可能性があるから
である。各反復で、可能性のある出力はより少ない。
RNGをサポートする場合、このハードウェア値を含め
るべきである。すぐに利用可能な程度のランダム性だけ
を追加する。
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。
d(IN unsigned char*pDataB
uffer,IN unsigned int*pDa
taBufferLength) この関数は、オペレーティング・システム・ドライバの
PRNGの状態を更新する。これは以下のステップを行
う。
ck xor SHA1(StateBlock‖pD
ataBuffer) すなわち、SHA1コンテキストを初期化し、それをS
tateBlockと所与のバッファ中のバイトとで更
新する。
を呼び出す。この関数は、呼出し元が登録済みアプリケ
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。
tropy() この関数は、オペレーティング・システム・ドライバの
グローバルPRNGからの情報をセマフォ・ファイルの
フィールドに保存する。これは、生のStateBlo
ckは保存しない。そうすると、オペレーティング・シ
ステム・ドライバが同じシーケンスのランダム・バイト
を再使用することを引き起こす可能性があるからであ
る。そうではなく、現在の(160ビット)の状態から
生成された32バイト(256ビット)の値を保存す
る。値からPRNGを再開しても同じバイトは再生され
ない。基本的なステップは以下のとおりである。
び出して、ランダム・バイトの32バイト・バッファを
要求する これらのバイナリ・バイトを64個の16進数ASCI
I文字にエンコードする これらの文字をセマフォ・ファイルのフィールドに保存
する OsdRandomAddNoise()を呼び出す
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。
る。以下は、本発明で使用されるデータ構造およびフォ
ーマットについての記述である。
rはSignedContainerである。表14
に、このコンテナ中のデータ・ブロックを定義する。表
15に、登録済みアプリケーション・テーブルのエント
リを定義する。このテーブルは、リンク・リストとして
実装することができる。
1つは、アプリケーション・コードをオペレーティング
・システム・ドライバからどのように読み取るかという
ことである。カーネル・モードのOSDがトップ・レベ
ルのドライバとしてPASSIVE_LEVELで稼動
する限り、これは、ユーザ・モードのアドレス空間を読
み取ることができる。
・ポイントを得る方法である。appがDeviceI
OControlシステム関数を呼び出したとき、これ
はリング3からリング0へ切り換える。異なるリングに
対して、ハードウェアが異なるスタックを実施する。オ
ペレーティング・システム・ドライバが、ユーザ・モー
ド・スタックまで戻って追跡して、エントリ・ポイント
を得る。これは、DeviceIOControlの実
施、すなわち、これが有するスタック・フレーム(関数
呼び出し)の数に依拠する。以下の4つの可能なソリュ
ーションが使用可能である。すなわち、(1)たとえば
例外を通じて、命令をエミュレートする。(2)BIO
Sルーチンを、ドライバを介して行うのではなく、ユー
ザ・モードから直接呼び出す。(3)INTゲートをセ
ットアップする。割込みハンドラをセットアップし、す
べての関数がソフト割込みによる呼び出し側となる。
(4)OSD空間におけるユーザ・コードを検証し、実
行する。このソリューションには、Win32 API
と同じ問題がある。
製品におけるアプリケーション登録モジュール(AR
M)コンポーネントの説明である。このアプリケーショ
ン登録モジュールは、Strong Authenti
cation Module(SAM)を、クライアン
ト・デバイスと暗号化可能なサーバの間で交換される安
全なAppContainerへのアクセスを提供する
ことにおいて支援する。
pContainer鍵を、VPNなどのサーバ・アプ
リケーションへのアクセスが可能とされているクライア
ント・デバイスに提供することを担う。アプリケーショ
ン登録モジュールはSAMと、SSLなどの安全な通信
チャネルを介して通信する。
A)登録を例示するブロック図である。図4は、様々な
モジュールがアプリケーション登録モジュールと相互作
用する方法を示す。
ールは、クライアント/サーバ関係を有する。アプリケ
ーション登録モジュールはインターネット・サーバであ
り、いくつかのサービスを異なる企業のSAMへ公開す
る。この目的は、クライアントおよびSAMを特定の企
業への特定のデバイスの登録中に助けることである。最
終的な結果は、SAMに適切なApp鍵を提供して、登
録中のデバイスにおけるコンテナを封印かつ開封するこ
とである。このオペレーションは、各デバイス/企業の
組み合わせにつき一度のみ実行される。
れる。SSL接続ベリファイヤが、正当なSAMがアプ
リケーション登録モジュールへ、SSL接続を介して通
信中であることをチェックする。アプリケーション登録
モジュールへの他のすべての形式の接続が再検出される
べきである。AppContainer鍵プロバイダ
は、受信されたpubKContainerを使用し
て、第1にいくつかのチェックを企業において実行し、
次いで第2にAppContainerKeyを準備
し、最後にこれがSAMへ送信され戻される。
トリ・ポイントは、AppContainerKeyR
equestなど、特定のURLを含む。
eviceAuthority.com/arm/Ap
pContainerKeyRequestというUR
Lは、その本体において、クライアント・システムによ
って生成されたPubKContainer()、およ
び、SAMによって提供されたいくつかの特別の情報を
有する。
与のオペレーションの理論を以下に論じる。アプリケー
ション登録モジュールのwebサーバのmod_ssl
が、デバイス・オーソリティRootCA証明書を知る
ように構成される。mod_sslは、提示されたSA
M.ClientCertificateがデバイス・
オーソリティ、RootCAに通じる証明パスを有する
ことをチェックする。たとえば、SAM.Client
Certificateは、Subscription
Manager.CA.certによって発行され、こ
のSubscription Manager.CA.
certはデバイス・オーソリティRootCA証明書
によって発行された。mod_sslに構成されている
この最後のcertが、SAM.ClientCert
のチェックをうまく終了する。
slが、構成された証明書取り消しリスト(CRL)を
調べる。CRLは、サブスクリプション・マネージャが
SAMを取り消す(たとえば、SAMを購入した会社が
廃業する)たびに、更新されなければならない。サブス
クリプション・マネージャは、そのCRLを格納するU
RLを有する。このURLは、SAM.ClientC
ertの内部に格納される。アプリケーション登録モジ
ュールは、このファイルをこのURLから定期的に得
る。
CAおよびSubscription Manage
r.CAの組み合わせによって提供され、SAM.Cl
ientCertは、構造により、SAMの証明書であ
る。これは、VerisignをRootCAとして使
用していた場合、当てはまらない。
otCA、Subscription Manage
r.CA、およびSubscription Mang
er.CRLの組み合わせによって提供され、SAM
は、アプリケーション登録モジュールがSAM.Cli
entCertを有しており、かつ、これがSubsc
ription Manager.Certifica
teRevocationList上にない場合、この
アプリケーション登録モジュールに接触するための権限
を付与される。
レットから呼び出されるjavaクラスである。これは
所与の接続の認証情報を確認するため、サーブレットに
APIを提供する。このサーブレットが、ssl接続に
ついての情報を保持するように、少なくとも要求オブジ
ェクトにそれを渡す。この情報を使用して、SslCo
nnectionVerifierは、接続したクライ
アントが先に登録されたものであるかどうかを決定す
る。
みも記録する。成功した試みは、デバッギングのために
記録される。ベリファイヤがオブジェクトを返し、これ
が、接続中のクライアント(SAM)についての情報を
提供する。ベリファイヤはまた、要求から入手可能ない
かなるユーザ名情報も取り込む。これをClientC
ertマネージャ・サーブレットが使用する。
ある。これは、SSLクライアント証明書情報、およ
び、ユーザ名/パスワードが使用されてこの要求が行わ
れた場合、ユーザについての情報を保持する。出力は、
SslConnectionVerifierオブジェ
クトであり、これは、IsSslOk()、GetCe
rtInfo()、IsUserAuthentica
ted()、GetUserInfo()などのメソッ
ドを有する。SslConnectionVerifi
erは、x509クライアント証明書のすべてのフィー
ルドへのアクセスを有する。
ダ・サーブレットが、アプリケーション登録モジュール
用の鍵を分配する。これは、ARMモジュールのメイン
・エントリ・ポイントである。これは、SslConn
ectionVerifierを呼び出す。この入力ス
トリームから、これはpubkc()を受信し、これ
が、クライアント・デバイスのpubkc()を転送し
たSAMについての情報を保持する。このSAM情報は
企業フィールドを有し、これはSslConnecti
onVerifierオブジェクトが知っている情報と
無矛盾である。Enforcerを呼び出し、これに、
SslVerifierからのすべての情報、およびp
ubkc()からの情報も渡す。Enforcerの結
果に基づいて、次いで、このサーブレットがAppCo
ntainerKeyを暗号エンジンから要求する。p
ubkc()内にあった鍵ID+ACDが、暗号エンジ
ンに渡される。AppContainerKeyが、S
SL接続を介してSAMに返される。
ットAPIから)に鍵ID、企業情報およびACDを保
持するPubKC()が付いたものである。要求オブジ
ェクト(サーブレットAPIから)が、現在の接続(S
SLなど)についての情報を保持する。出力は、App
ContainerKeyをoutputStream
(サーブレットAPIから)に返し、データベースにお
いて使用されたライセンスの数を修正する。
rong Authentication Modul
e(SAM)がライセンスを管理するために必要とされ
る情報を収集する。これらのライセンスは、MFCA製
品におけるアプリケーション登録モジュール(ARM)
からSAMによって要求することができるAppCon
tainerKeyの数を制御する。アプリケーション
登録モジュールは、AppContainer鍵を、V
PNへのアクセスが可能にされているクライアント・デ
バイスに提供することを担う。
することが許可されている販売員は、通常、サブスクリ
プション・マネージャへのWebユーザ・インターフェ
ースを使用する。このインターフェースは、会社につい
ての情報、ライセンスの数、それらの有効期限日、販売
員ID、およびSAM識別(クライアント証明書署名要
求)を収集し、後にこれらをアプリケーション登録モジ
ュールが使用して、何のSAMがAppContain
erKeyを要求中であるかを決定する。
操作防止(署名付きおよび/または暗号化済みの)ファ
イルを生成し、これをSAMが後にロードし、検証す
る。このファイルは、サブスクリプション情報(すなわ
ち、使用中することができるライセンスの数、SAMの
可能とされたIPアドレスなど)を含む。サブスクリプ
ション情報ファイル(SIF)に加えて、サブスクリプ
ション・マネージャは、署名付きのSAMの識別も返
す。
センス情報およびクライアント証明書のデータベースへ
のフロントエンドである。webユーザ・インターフェ
ースがライセンス再販業者を、クライアント証明書を使
用して認証する。これは、再販業者がライセンスを得て
いる会社についての以下の情報を要求する。すなわち、
会社名、会社連絡先情報、ライセンスの数、ライセンス
有効日(開始日から終了日まで)、SAMのIPまたは
MACアドレス(サブスクリプション・ファイルをその
SAMへバインドするためのもの)、SAMのクライア
ント証明書要求(CSR)、および再販業者識別であ
る。
アイテムを生成し、これらが安全に、SAMをインスト
ール中の者に転送される。すなわち、署名付きのクライ
アント証明書、および不正操作防止サブスクリプション
情報ファイル(SIF)である。SIFに、SIF署名
ユーティリティ(SSU)によって署名しておくことに
より、不正操作防止を行う。
ャがデータベースを以下の情報により更新する。すなわ
ち、SAMのクライアント証明書を取り消すために必要
とされる情報、SAMについての情報(ライセンスの
数、有効期限日、ライセンス更新用の連絡先情報な
ど)、および、SAMを購入した会社についての情報で
あり、これは、これがこの会社が所有する唯一のSAM
でない可能性があるためである。
ーションの理論は以下の通りである。最初に、契約が、
再販業者/チャネルパートナとデバイス・オーソリティ
の間で確立される。次いで、ライセンス再販業者情報エ
ディタ/ビューワを、デバイス・オーソリティの者が使
用して、最初の再販業者/チャネルパートナ・アカウン
トを作成し、これが、ライセンスをSAMに販売するた
めの権限を付与される。
れ、これが再販業者/チャネルパートナに送られる。再
販業者/チャネルパートナが、SAMをある会社にイン
ストールするための手配を行う。再販業者/チャネルパ
ートナがSAM情報エディタ/ビューワにログインし、
会社情報およびライセンシング情報を入力する。
会社はIPアドレスをSAMに割り当てており、クライ
アント証明書署名要求を生成している。この情報が再販
業者に渡される。次いで、再販業者(または、OTPを
有する会社)がSAM情報エディタ/ビューワに戻り、
SAMのIPアドレスおよびCSRを入力する。
SIF署名ユーティリティへ送信する。SSUが即時に
署名付きのSIFを返す。SAMのCSRが、ルート・
デバイス・オーソリティに代って中間CAとして動作中
のサブスクリプション・マネージャによって署名され
た、実際のクライアント証明書に向けられる。
く、再販業者がSIFおよびクライアント証明書を会社
へ送る。次いで、会社がSIFを、SAMによって知ら
れているディレクトリにインストールする。証明書が、
それらのSSLモジュールにインストールされる。会社
はこのとき、AppContainerKeyを要求す
る準備ができる。
で論じる。SSL接続ベリファイヤは、サーブレットか
ら呼び出されるjavaクラスである。これはサーブレ
ットに、所与の接続の認証情報を確認するためのAPI
を提供する。このサーブレットが、少なくとも要求オブ
ジェクトにssl接続についての情報を保持するように
それを渡す。
tionVerifierは、接続したクライアントが
先に登録されたものであるかどうかを決定する。場合に
よっては、この検証は、接続がSSLを介しているこ
と、および、クライアントが証明書を有していることを
チェックすることに限定される。この簡素さは、Apa
che+mod_sslが構成される方法による。すな
わち、これらは、知られている証明書を有するクライア
ントからの接続のみを受け入れる。
みも記録する。成功した試みは、デバッギングのために
記録される。ベリファイヤが、接続中のクライアント
(再販業者のコンピュータ)についての情報を提供する
オブジェクトを返す。ベリファイヤはまた、要求から入
手可能ないかなるユーザ名情報も取り込む。これを使用
して、実際に権限のある再販業者が自分のコンピュータ
を使用中であり、あるコンピュータがこれを使用中では
ないことを検証する。
あり、これが、SSLクライアント証明書情報、およ
び、ユーザ名/パスワードが使用されてこの要求が行わ
れた場合、ユーザについての情報を保持する。出力は、
SslConnectionVerifierオブジェ
クトであり、これは、IsSslOk()、GetCe
rtInfo()、IsUserAuthentica
ted()、GetUserInfo()などのメソッ
ドを有する。
ルにより、ライセンシング情報の追加/編集/除去など
を行うことができる。これによりレポートの生成を、た
とえば、会社毎、SAM IP/MACアドレス毎、期
限切れ間近のライセンス毎に行うことができる。すべて
のアクションが、有効な再販業者情報(ユーザ名/パス
ワード、クライアント証明書)により認証される。
スクリプション情報ファイルを生成する。生成されたS
IFが、SIF署名ユーティリティ(SSU)に送信さ
れる。SSUが、合致する公開鍵がSAMソフトウェア
と共に出荷される秘密鍵を使用してファイルに署名す
る。鍵の対に署名するものは、ただ1つのSIFのみで
ある。
である。これにより、IT部門の人員が直ちに、連絡先
情報ならびに日付、IPアドレスなどへ、サポート中に
アクセスすることができる。SIFには、会社名、会社
連絡先情報、期限切れのライセンスについての連絡先、
ライセンスの数、ライセンス有効日(開始日から終了日
まで)、再販業者情報、SAMのIPまたはMACアド
レス(サブスクリプション・ファイルをそのSAMへバ
インドするためのもの)が含まれている。
ュールは、ルート・デバイス・オーソリティの鍵により
署名された、X509準拠の証明書を作成することを担
う。これは、要求を提出した再販業者が正しく認証され
る(ユーザ名/パスワードおよびクライアント証明書に
権限が付与される)場合にのみ、証明書に署名する。こ
れは、SAM情報、対応するCSR、および、SAMの
クライアント証明書の期限切れを気付かせるための連絡
先情報を必要とする。CSRは、フィールドの1つにお
けるマシンのIPアドレスを含む。したがって、クライ
アント証明書をフィールドの1つにおけるIPアドレス
により生成することは、SAMをインストールする側の
責任である。
09クライアント証明書である。opensslはその
下にあるツールであり、SAMおよびサブスクリプショ
ン・マネージャ上の証明書の事柄を処理する。このモジ
ュールは、発行されたSAM.ClientCerti
ficateの取り消しも処理する。取り消し情報は、
証明書取り消しリスト(CRL)に入れられる。このリ
ストを、opensllを使用して操作することができ
る。このCRLファイルは、このサーバ上でHTTPを
介して誰でもダウンロードすることができる。
センスのデータベースを走査し、eメールを、サブスク
リプション中に提供された連絡先へ送信する。SAM証
明書満期ディテクタが定期的に、生成されたSAMクラ
イアント証明書のデータベースを走査し、CSR中に提
供された連絡先へeメールを送信する。
ワが、再販業者をシステムに登録し、これらに、それら
のブラウザ、または単にユーザ名およびパスワード、あ
るいはその両方用のクライアント証明書を提供する。こ
れにより、再販業者が販売においてどの程度よくやって
いるかを追跡することもできる。
デバイス・オーソリティがサブスクリプション情報への
アクセスを得るための簡単な方法を提供する。最低で
も、SSUがSIFに署名する。
証を以下に論じる。システムの1つのアプリケーション
が、多元的クライアント認証(MFCA)アプリケーシ
ョンであり、これは仮想プライベート・ネットワーク
(VPN)にアクセスするためのものである。認証プロ
セスの第1の部分は、ユーザ名/パスワードの対(ユー
ザが知っているもの)である。第2の部分は、BIOS
ベース、または、ソフトウェア(ユーザが有しているも
の)使用による、暗号化可能デバイスの認証となる。
ード検証が、RADIUSを介した、レガシー・パスワ
ード・データベースを使用する認証サーバへの従来の伝
送によって達成される。好ましい実施形態では、このプ
ロセスが、SPEKEパスワード認証プロトコルを使用
して拡張され、これは米国特許第 号において開示
されている。いずれの場合も、MFCAがデバイス認証
のための新しい機構を提供する。
ーネントを含む。VPNサーバに対して認証するクライ
アント・デバイスにおいて動作するクライアント・ソフ
トウェアコンポーネント。ソフトウェアは暗号化可能に
されなければならない。
ーバ・マシン上で動作するソフトウェア・コンポーネン
ト。これは企業が保護するネットワーク内部である。こ
れは、VPN製品を購入する会社のIT部門によって管
理される。
ーソリティ・サーバ(これを、企業以外のオーソリティ
によって管理することができる)上で動作するソフトウ
ェア・コンポーネント。これはKID/SMKの対のデ
ータベースへのアクセスを有する。
トを論じることにより提供される。クライアント・デバ
イスは通常、Windowsマシンであり、これはデバ
イス・オーソリティにエンロールする。エンロールメン
トの後、クライアント・デバイスは有効なマスタ鍵を有
する。好ましい実施形態では、これがファームウェア・
サポートを有し、本発明の暗号化機能がBIOS RO
Mにおいて実施されるが、ソフトウェアのみのバージョ
ンを使用することができる。マシンは通常、自社の制限
されたネットワークへ、VPNゲートウェイを介してア
クセスすることを望む、クライアントVPNソフトウェ
アのユーザによって所有される。
ト・サービス・プロバイダ(ISP)を介してインター
ネットにアクセスする。このISPとVPNゲートウェ
イの間のネットワークは信用できるものではなく、その
ため、これらの2者の間の通信を保護しなければならな
い。VPNソリューションの主な目的は、クライアント
・デバイスからVPNゲートウェイまで、エンドトゥエ
ンドの暗号セキュリティを提供することである。
実施された暗号コア技術、および、サーバとの安全なリ
ンクを確立するための標準のVPNクライアント・ソフ
トウェアと協調するクライアント・アプリケーションを
含む。MFCAアーキテクチャは、マシンがVPNログ
インの前にエンロールされることを必要とする。クライ
アント・アプリケーションは、最初にそれが動作する間
に、クライアントが先にエンロールされているかどうか
を発見する。これが先にエンロールされていなかった場
合、クライアント・アプリケーションがエンロールメン
トを実行し、これが完了された後にのみ、残りのMFC
Aオペレーションを継続する。
びStrong Authentication Mo
dule(SAM)が、本発明によって提供される。M
FCA使用可能な企業は、インターネットと、企業の保
護されたネットワークの間に接続された、VPNゲート
ウェイ・サーバを有する。
これらが互いに協調してアクセスを認可し、信用できな
いトラフィックをブロックする。標準的には、これらは
ファイアウォールと共に動作する。重要なマシンは、V
PNゲートウェイおよびStrong Authent
ication Module(SAM)サーバであ
る。
し、本質的に信用できる。いくつかの場合、これは、V
PNゲートウェイとSAMサーバの間の通信を暗号化す
る必要がないことを意味する。この2つのマシンのため
の単純なセキュリティ・チェックは、会社のネットワー
ク内部で行われる経路指定がトラステッドである、他方
のIPアドレス上をチェックすることである。
これが、特定のユーザおよびデバイスのための内部ネッ
トワークへのアクセスの認可において、VPNゲートウ
ェイと相互作用する。これは、登録されたデバイスの
「データベース」へアクセスし、アクセスが許可され
る。SAMコードとデータベースの間のインターフェー
スを可能な限りオープンにして、異なるデータベース実
装を配置できるようにすべきである(たとえば、ODB
CまたはLDAPの使用による)。セキュア・ソケット
・レイヤ(SSL)プロトコルを使用して実装すること
ができるSAMとデータベースの接続には、気をつける
べきである。
するコードを含む。SAMサーバは、ライセンシング・
ポリシー(ネットワークにアクセスするためのデバイス
の権利の期限切れ、可能とされるデバイスの数など)の
追跡も組み込むことができる。暗号化機能を、BIOS
−ROMおよびソフトウェアのみの形式において提供す
ることができる。
ェアおよび/またはソフトウェアが、デバイス/ユーザ
の対にアクセスを認可するべきであるかどうかを決定す
る(二元的認証の第1の部分)際に、ゲートウェイおよ
びSAMと協調することができる。この機能を実行する
ための様々な標準および製品が当業界において使用され
ており、これには、ユーザ名およびパスワードのデータ
ベースへのアクセスを有するRADIUSサーバ、およ
び、ポリシーベースのアクセス権を決定するための様々
なシステムが含まれる。
ウェア・ライセンシング・スキームを実施することもで
きる。SAMコンポーネントは通常、VPNを所有する
企業のIT部門によって管理され、他のいかなるオーソ
リティによっても管理されない。しかし、これは、企業
にMFCAソフトウェアを使用する権利を販売した別の
オーソリティとの信頼関係を有することができる。
ウント全体のための、あるいは、個別のクライアント・
アカウントのための期限切れ時間を考慮に入れる(たと
えば、何者かが自分のラップトップを失う可能性があ
り、このデバイスを削除しなければならない)。SAM
はこれらの取り消しおよび期限切れを、システム管理者
によって設定されたポリシーに従って実施する。
が認可されるデバイスの最大数に基づくようにすること
ができる。ライセンス機能は周期的に、何が起こってい
るかを監査し、追跡する。これは、SAMが情報をベン
ダ固有の場所へ定期的に送信することを含むことができ
る。ライセンス管理は、リモートのWebベースのツー
ルから行われることが好ましい。
M)はインターネット・サーバであり、サービスを異な
る企業のSAMへ公開する。この目的は、クライアント
およびSAMを、特定の企業への特定のデバイスの登録
中に助けることである。最終的な結果は、SAMに適切
なApp鍵を提供して、登録中のデバイスにおけるコン
テナを封印かつ開封することである。
と呼ばれるプロセス中に、各デバイス/企業の組み合わ
せにつき一度のみ実行されることが必要である。アプリ
ケーション登録モジュール・サーバは、いくつかのフロ
ントエンド・サーバからなり、これは場合によっては、
しかし必然的ではないが、Webサーバであり、その時
点で異なる会社のための有効なライセンス、それらの予
想される証明書が何であるか、などを記述する情報を保
持するバックエンド・データベースと通信するものであ
る。
る。特定の企業について登録されたユーザの数の基本的
な追跡が、一例である。アプリケーション登録モジュー
ル・サーバがライセンス実施、および、ライセンス・ロ
ギングおよび監査を実行するが、個別のログインの追跡
は行わない。アプリケーション登録モジュールは、デバ
イス・オーソリティ「暗号化サーバ(Encrypti
on Server)」へのアクセスも有し、これが、
エンロールメントの処理中に生成されたKID/SMK
テーブルを格納する。Webベースのリモート・インタ
ーフェースが、これらの企業アカウントを処理する。ア
プリケーション登録モジュールのための拡張ユーティリ
ティとして、データ・エントリがWebインターフェー
ス(サブスクリプション・マネージャ)によって自動化
され、これにより、再販業者、チャネル・パートナおよ
びIT管理者が適切な情報を入力して、SAMが中央の
ARMデータベースと相互運用できるようにすることが
できる。以下の表に挙げたプロセスが、含まれるもので
ある。
ス。ライセンスを販売する販売員が、サブスクリプショ
ン・マネージャと呼ばれる、デバイス・オーソリティ所
有のサーバにログインすることによって、サブスクリプ
ション・プロセスを開始する。販売員は、SAMを購入
した会社についての情報を入力する。すなわち、いくつ
のライセンスが要求されているか、SAMクライアント
証明書、および他の情報などである。このプロセスの出
力は、サブスクリプション情報ファイル(SIF)およ
びクライアント証明書(証明書を参照)である。
スを使用できるプロセス。このプロセスは、クライアン
ト・デバイスおよびデバイス・オーソリティ・エンロー
ルメント・サーバを含む。エンロールメントでは、クラ
イアント・デバイスが、BIOSにおいて、あるいはエ
ミュレーションAPIにおいて、暗号コア機能を含むこ
とが必要である。
ビスを使用するために登録されるプロセス。これは、ク
ライアント、SAMサーバ、およびARMサーバとのい
くつかの相互作用を含む。登録には、クライアント・デ
バイスが先にデバイス・オーソリティへのエンロールメ
ントを実行していることが必要である。この登録の最終
的な目的は、SAMに適切なApp鍵を提供して、Ap
pクライアント・デバイスを交換されるコンテナを封印
かつ開封することである。
アクセスを得るプロセス。これは、MFCAが達成を望
む最後のサービスである。ログインは、クライアント・
デバイスとSAMサーバの間のいくつかの相互作用を含
むが、デバイス・オーソリティとの追加の相互作用は必
要ではない。SAMサーバは、VPNゲートウェイによ
る二元的認証の第2の段階として、クライアント・デバ
イスを認証しなければならない。これは、Appコンテ
ナを使用してこれを実行する。
MサーバおよびARMサーバを、適切なApp鍵をうま
く分配できるように構成しなければならない。
を含む。すなわち、(1)特定のマシンと共に動作する
App鍵の、デバイス・オーソリティから自社のSAM
サーバへの伝送、および(2)顧客App鍵を生成する
顧客秘密のSAMサーバからクライアントへの伝送であ
る。
ち、(1)登録中のマシンの秘密マスタ鍵(デバイス・
オーソリティおよびマシン自体のみによって知られ
る)、および(2)アプリケーションのオペレーティン
グ・システム・ドライバ(この場合、VPNクライアン
ト・アプリケーション)である。
る。 ApKey=trunc128(SHA1(SMK‖A
CD))
密、顧客秘密を生成し、これが、他のデバイス・オーソ
リティから秘密に保たれ、顧客App鍵を以下の演算に
より計算する。 CustomerAppKey=trunc128(S
HA1(AppKey‖CustomerSecre
t))
任意選択で、App鍵および顧客秘密を別々に格納
し)、顧客秘密をクライアントに送信する。クライアン
トがこの秘密を記録する(しかし、これは秘密マスタ鍵
のような「大きな秘密」ではない)。SAMはクライア
ントに封印されたAppコンテナも送信し、これがログ
イン・カウンタ機構のための初期値を格納することがで
きる。代替実施形態では、安全なチャレンジ/レスポン
ス機構が、ログイン・カウンタ機構と置き換わる。
基づく。クライアントが、先に受信しているAppコン
テナを開封し、ログイン・カウンタを増分し、コンテナ
を再封印し、これをVPNゲートウェイへ、VPN認証
プロトコルの一部として送信する。SAMサーバがこの
コンテナを得て、これを開き、ログイン・カウンタを最
後に記録された値と比較する。これが受け入れ可能な範
囲内であった場合、これが呼び出し側クライアントに、
企業の内部ネットワークへのアクセスを認可する。
トがランダムなチャレンジ値をVPNゲートウェイから
受信し、先に受信しているAppコンテナを開封し、顧
客秘密およびチャレンジ値を一方向関数(通常は、SH
A1のような暗号ハッシュ関数を使用する)と結合さ
せ、一方向関数の結果をVPNゲートウェイへ、VPN
認証プロトコルの一部として返す。
それ自体のチャレンジ値および顧客秘密の一方向関数の
計算結果と比較する。SAMサーバの計算結果がクライ
アントの結果と合致した場合、VPNゲートウェイが呼
び出し側クライアントに、企業の内部ネットワークへの
アクセスを認可する。
フトウェア製品を目標にすることができる。いくつかの
VPNベンダが、他の会社がその製品をクライアントに
おいて、ならびにサーバにおいてカスタマイズできるよ
うにするAPIを提供する。これらのベンダは、これら
のAPIと相互作用するように書かれているソフトウェ
ア用の証明プログラムも有することができる。MFCA
を、アドオン形式において、あるいは、VPNベンダ製
品と共に統合された形式において、引き渡すことができ
る。
ーションにあらかじめ必要である。クライアント・デバ
イスは、オペレーティング・システム・ドライバ(OS
D)、BIOSにアクセスする低レベルのドライバ・プ
ログラム、およびハードウェアを含むコア暗号化システ
ムを有していなければならず、デバイスはすでにエンロ
ールされていなければならず、有効なマスタ鍵を格納し
ていなければならない。
PNソフトウェア・インストレーションの一部として実
行することができる。つまり、クライアントがVPNに
初めてアクセス試みたとき、クライアント・デバイスが
まだエンロールされていなかった場合、これはこのとき
そこでエンロールメントを実行することができる。これ
は、ユーザがクライアント・アプリケーションを初めて
起動したとき、最初のユーザ経験の一部として起こる。
ユーザからの入力は必要ではない。
VPNクライアントを含むソフトウェアを受信するユ
ーザを含み、これを既存のVPNクライアントの拡張形
式にすることができ、これはMFCAセットアップおよ
びMFCA拡張ログイン認証のための追加コードを含
む。VPNベンダのクライアントSDKによって提供さ
れたAPIにより、MFCAコードがそれらのライブラ
リと静的にリンクできるようにすべきであることが好ま
しい。理想的には、MFCA製品の関連した部分のすべ
てが、ACDが計算される範囲内である。
論じる。Strong Authentication
Module(SAM)構成は、ユーザ/デバイス・
アカウントをセットアップすることである。これは通
常、企業のシステム管理者によって実行される。SAM
はVPNと、かつ/または、認証サーバと相互作用す
る。ここで使用可能ないくつかのオプションは、以下の
通りである。
ンにすることができる。認証サーバとSAMの間のイン
ターフェースはAPIである。SAMは、あるポートを
リスンするサーバであり、カスタム・プロトコルまたは
RADIUSを理解する。認証サーバとSAMの間のイ
ンターフェースは、ネットワーク・プロトコルである。
構成可能であり、いくつかの構成を可能にする。RAD
IUSサーバ(存在する場合)がクライアントを、ポリ
シー、ユーザ名およびパスワードなどに応じて認証す
る。
簡素な実施形態は、スタンドアロンのRADIUSサー
バを含み、これを使用して直接ゲートウェイと、あるい
は、プロキシとして動作する別の認証サーバと通信する
ことができる。構成ユーザ・インターフェース(UI)
は、他のいかなる認証サーバからも独立している。
構成。管理者がユーザ名/パスワードの対を構成する。
これは、ユーザがログインするための「永続的な」ユー
ザ名/パスワードの対となる。このプロセスは、いかな
るデバイス・オーソリティも含まず、MFCAから独立
した「通常の」一元的構成である。
ーション・デバイスID(ADID)、および登録パス
ワードを構成する。代替実施形態では、管理者が、ユー
ザとデバイスの間の関連付けも作成して、有効な組み合
わせを指示し、ユーザが特定のマシンから認証するよう
に制限することもできる。
D)は、人が読むことのできる公開名であり、各企業内
の一意の値であるが、必ずしも企業全体のものではな
い。登録パスワードは、システム管理者によって生成さ
れる。これは、真に乱数でなければならない。
代りに動作するための一意の識別子として使用すること
ができる。しかし、実際には、人々が汎用の「一意の識
別子」の考えを信用しないので、好ましい実施形態で
は、IT管理者によって選択された別のADIDを使用
する。SAMデータベースに格納されるすべてのパスワ
ードがハッシュされる。
ルは、ユーザのデータベースおよびデバイスのデータベ
ースが分離されていることを意味している。これは、ユ
ーザ・データベースにおいて存在するいかなるユーザ
も、デバイス・データベースにおいて存在するいかなる
デバイスにより認証されるという結果を有する。特定の
ユーザが特定のマシンにリンクされる際に、制限が実施
されることはない。
ーザ名/パスワードの対およびADID/登録パスワー
ドの対を自分の企業のIT部門から得る。ユーザの経験
は、以下の通りである。
ションを動作させる。これは、汎用のWindowsイ
ンストールである。クライアントがエンロールされなか
った場合、エンロールメント・オペレーションが実行さ
れる。インストレーション・プログラムがユーザに、ユ
ーザをVPNに対して識別するデータのピースの入力を
促す。通常ログイン用のユーザ名/パスワード、およ
び、登録用のADID/登録パスワードである。
イ/RADIUSがユーザ名/パスワードの対を認証
し、現在のポリシーをチェックしてユーザを許可する。
SAMがデバイスを外部ARMサーバに登録し、それ自
体を構成する。すべてが成功した場合、ユーザがVPN
に入る。
ID/登録パスワードをそれ以上入力する必要がなくな
る。クライアントVPN Appは、ユーザにユーザ名
およびパスワードの入力のみを促すべきである。クライ
アントは、ADID、Appコンテナの場所、および、
サーバから受信した顧客秘密を記憶している。
通りである。図4を参照し、これはMFCA登録を例示
するブロック図である。
要求をVPNゲートウェイに対して、あらかじめ存在し
ているVPNプロトコルを使用して行う。VPNゲート
ウェイがユーザ名およびパスワードの対を、RADIU
Sサーバによる通常の方法で、あらかじめ存在している
認証の方法を使用してチェックする。次いで、VPNゲ
ートウェイが、クライアントがSAMサーバへの登録を
必要とすることを決定する。VPNゲートウェイが、こ
の要求をSAMサーバへ転送する。
ち、(1)開く際のADID、(2)企業名/URL、
およびApp用のACD(またはARMデータベースに
おいてACDを識別するID)を含む、適切なデバイス
・オーソリティ・サーバの通信公開鍵により暗号化され
たPubKコンテナである。
ず、そのためこれをARMサーバへ渡す。この接続が、
ある種類のSAMの認証を、アプリケーション登録モジ
ュールに提供しなければならない。HTTPS実施で
は、デバイス・オーソリティが発行した証明書がSAM
サーバに提示され、SAMサーバが発行した証明書がデ
バイス・オーソリティに提示され、証明書は、デバイス
・オーソリティとのアカウントを開くプロセス中に確立
される。
Kコンテナを、通信鍵の秘密ビットを使用して開き、必
要な場合、その内部テーブルを新しいデバイスADID
により更新する。アプリケーション登録モジュールが企
業をそのデータベースに対してチェックして、これが有
効なライセンスを有しているかどうかを発見する。すべ
てが良好であった場合、アプリケーション登録モジュー
ルがクライアント・デバイスの鍵IDを有しており、そ
のため、これが秘密マスタ鍵を発見し、所与のACD用
のApp鍵を計算する。次いで、これがこのApp鍵を
SAMへ、安全な方法で伝送して戻す(場合によって
は、HTTPS接続の応答を使用する)。
し、顧客App鍵を、App鍵および顧客秘密用の新し
いランダム値により構築し(あるいは別法として、SA
Mが直接この顧客App鍵を格納し、App鍵のことを
忘れる)、初期Appコンテナを構築し、そこに初期の
128ビットのログイン・カウンタ(その初期値を登録
パスワードにすることができる)および企業名/URL
を格納する。
し、これおよび顧客秘密を(場合によっては、VPNゲ
ートウェイ経由で)クライアントに渡して戻す。このA
ppコンテナを、暗号化されたクライアントに送信する
必要はない。この可視性はいかなるものも損なわない。
盗聴者がこれを記録し、これをサーバへ送信してVPN
へのアクセスを得ようと試行することはできないが、こ
れは、コンテナがカウンタの誤った値を有するからであ
る。
kを受信し、このときクライアントに、内部の企業ネッ
トワークへのアクセスを認可する。クライアントが、A
ppコンテナおよび顧客秘密を、よく知られた場所に格
納する。
鍵を分配するが、顧客秘密およびログイン・カウンタの
初期値は知られず、これらはSAMのみに知られる。こ
れにより、MFCA使用可能な企業は、デバイス・オー
ソリティがセキュリティを提供する助けとなるが、クラ
イアント・デバイスのふりをすることはできず、認証な
しに企業に入ることができない。
ィンドウが、ユーザ名およびパスワード、および企業/
URL識別を求める。ユーザがADIDを再度入力する
必要はなく、これは、システムがこれを覚えているから
である。クライアントのマシンがVPNゲートウェイに
接触し、ユーザ名/パスワードの対を標準の方法で(R
ADIUSなどを経由して)認証する。
加の認証を必要としており、それ自体を認証するために
それを必要とすることを発見する。クライアントがその
Appコンテナを開封し(顧客App鍵、App鍵から
のコンピュータ、および格納された顧客秘密を使用す
る)、ログイン・カウンタ(128ビット、負にはでき
ない)を増分し、これを再度封印し、これをゲートウェ
イへ、開く際のADIDを添付して送信する。VPNゲ
ートウェイがAppコンテナを有した後、これをSAM
サーバへ認証のために渡す。クライアントが、完了まで
待機する。ゲートウェイがエラーを返した場合、これは
ユーザにそれ自体の言語でプロンプトを表示する。すべ
てがOkであった場合、VPNソフトウェアが動作を開
始することができる。
on Module(SAM)が、認証のための要求を
VPNゲートウェイから受信し、これにクライアントの
ADIDおよびそのAppコンテナが添付される。これ
が顧客App鍵およびカウンタの予想値を、ADIDを
インデックスとして使用してルック・アップする。これ
がAppコンテナを、顧客App鍵を使用して開封す
る。
クする。SAMが、ある範囲のカウンタを可能にするべ
きである。(Cexpected<=Cactual<
Cexpected+10)の場合、認証はOkとな
る。この目的は、パケットがクライアントからサーバま
でに失われた(たとえば、ユーザが「リトライ」ボタン
を何度も打つ)場合をカバーすることである。
生じる。これがエラー・コードおよびエラー・パラメー
タを送信する。これが成功した場合、これが新しいカウ
ンタを格納し、「権限付与Ok」のメッセージをVPN
ゲートウェイに送信する。エラーは記録され、レポート
がシステム管理者に定期的に提示される。SAMが管理
者に特殊な状況において警告することができ、これは接
続の試みが多数失敗した場合などであり、何者かが攻撃
を試行中であることを示す可能性がある。
システムの秘密鍵の破損または誤用を引き起こす、信用
できないソフトウェア・アプリケーションの主な脅威モ
デルに対して防御するように設計されている。5MIお
よび他の関係付けられたハードウェア機構を利用する、
好ましい実施形態では、脅威モデルが拡張され、システ
ムが鍵をさらに、「リング・ゼロ」という、本質的には
オペレーティング・システム自体の一部において動作す
る、信用できないプログラムに対して保護する。
別されたいくつかの脅威、それらの範囲、およびシステ
ム10によるそれらの対処法の説明である。
/SAM通信をリスンすることができ、App鍵を盗
む。しかし、盗聴者はクライアントのふりをすることは
できない。これは、盗聴者も少なくとも顧客秘密および
VPNカウンタの初期値を必要とするからである。
ーがApp鍵および顧客秘密を盗むと仮定する。これは
おそらく、ハッカーが会社に侵入し、ADIDデータベ
ース内部のすべてのデータを盗んだからである。窃盗が
検出された場合、マシンを再登録して新しい顧客秘密を
生成することによって、解決することができる(しか
し、App鍵を変更することはできない)。企業がAp
p鍵を保持していた場合、これを再度再登録する必要が
ないであろう。
形態が有するハードウェアベースのセキュリティのチェ
ーンの利点は、ソフトウェアのみの実施形態では存在す
る可能性がない。
アベースのリバース・エンジニアリング・ツールがこれ
をハッキングできないように設計されている。さらに、
ハードウェアベースの攻撃により、敵が他の物理的にリ
モートのマシンをクラックすることはできない。この保
護は、CPUのシステム管理モード(SMM)を使用す
ることによって達成される。
(すなわち、暗号化可能なBIOSを使用したオペレー
ティング・システム・ドライバ(OSD))が、不正操
作について検証される。このOSDコードは不正操作防
止にされる。これを修正して、不正を働くアプリケーシ
ョンに、SMMコードにより検出されることなくこれを
使用させることはできない。この検証されたオペレーテ
ィング・システム・ドライバは、アプリケーションが修
正されていないことをチェックする。
能でないとき、あるいは、安全な記憶機構は使用可能で
あるが、すべてが高レベルの保証を受けているわけでは
ないとき、攻撃を失敗させるために、秘密マスタ鍵がシ
ェアに分割され、これらが多数の場所に格納される。ま
た、限られた数のシェアのみを、秘密マスタ鍵を取り戻
すために必要とすることができ、これにはシャミールの
秘密共有スキームを使用する。
ィング特性(たとえば、ドライブのシリアル番号、グラ
フィックス・カード・ドライバのバージョンなど)の1
つに基づいた鍵を使用して、暗号化することができる。
デバイス特性鍵を小型または予測可能にすることがで
き、暗号化が、それが鍵のサイズに基づいて解読するた
めに大量の時間を要するように選択され、これには反復
の暗号演算を使用する。
要とされるたびに再コンパイルされる。結合された秘密
マスタ鍵が、メモリにおいて、各結合での新しい記憶場
所を参照するポインタにより参照される。秘密マスタ鍵
のピースが結合されるたびに、チェックが行われて、い
くつかのピースが不良であるかどうかが調べられる。デ
バイス・バインディング情報の以前の値を追跡すること
により、不良のシェアの検出が可能となる。無効にされ
たシェアの場合、秘密マスタ鍵が再シェアされる。
明のソフトウェアのみの実施形態の要件の1つが、マス
タ鍵およびそのAppコンテナを新しいマシンに移動し
ようとする試みが行われたときを検出するための能力で
ある。この移動を検出するために、マシンのある特性が
記録される。これらの特性の少数が同時に変化したと
き、ソフトウェアのみのシステム10がこれを検出し、
これに基づいて動作する。
限。この設計は、秘密マスタ鍵およびセッション鍵の公
開を、これらをいずれかのオペレーションに使用してい
るときに制限する。好ましい実施形態では、このような
すべてのオペレーションがSMMにおいて実行され、こ
れには、SMMの外部で動作するときに使用不可能であ
るメモリが使用される。
開鍵がオペレーティング・システム・ドライバに含ま
れ、コンパイルされる。これらを、BIOSに含まれる
公開鍵と同じものにすることができる。
タックの相互作用は、以下の通りである。クライアント
VPNが以下のサービスを担う。すなわち、VPNクラ
イアントの構成、VPNゲートウェイへの認証、およ
び、内部の企業ネットワークに送信されたパケットの暗
号化である。VPNクライアントの主な仕事は、ログイ
ン・プロセスが終了された後、ネットワークへ送信され
るパケットを検査して、それらが標準のインターネット
・マシンに向けて送られているのか、企業ネットワーク
に向けて送られているのかを発見することである。
る。パケットがインターネットにおけるマシン向けのも
のであった場合、これは修正せずに進む。パケットがV
PNゲートウェイの後ろの企業ネットワーク向けであっ
た場合、クライアントがこれを暗号化し、(場合によっ
ては)ある種類のアドレス変換を実行する。
り、TCP Stack/UDPStack、NDIS
インターフェース(セットアップがこれを構成する)、
IPSec(通常、ある初期ネゴシエーションの後に対
称確立された、DESおよび3DESを使用する)、お
よび再度NDISなどである。パケットを受信するVP
Nゲートウェイが暗号を除去し、次いでこれらがネット
ワーク内部で明確になる。
は、クライアントおよびゲートウェイが新しい鍵を生成
し、これが認証されたユーザ識別に結び付けられる。こ
の鍵を使用して、VPNセッション鍵への認証の動作の
バインディングを強化することができる。
かの変形形態が記載されており、これを本発明のアーキ
テクチャ内で使用することができる。これらには、
(1)ユーザをデバイスにバインドすることであり、こ
れは管理者が有効な特定のユーザおよびデバイスの組み
合わせを定義するための拡張ポリシーを使用する、
(2)クライアントとゲートウェイの間、ゲートウェイ
と認証サーバの間、および、認証サーバと強力認証モジ
ュールの間のパスワードの暗号化、(3)チャレンジ/
レスポンス機構を、ログイン・カウンタを使用する代り
に使用する、および(4)クライアントのインストレー
ションを、webサイトからインストールすることがで
きる統合されたパッケージ内部にラッピングすることが
含まれる。
に備えたシステムおよび方法を開示した。上述の実施形
態は、本発明の原理の応用例を表す、多数の特定の実施
形態のうちのいくつかを例示するのみであることを理解
されたい。多数および他の構成を、当業者によって、本
発明の範囲から逸れることなく容易に考案することがで
きることは明らかである。
ム初期化処理であって、システム初期化処理中に不揮発
性ストレージからマスタ鍵を読み取り、マスタ鍵から導
出された機密値を隠されたストレージ・ロケーションに
書き込み、システム初期化処理の次の開始まで、システ
ム内で稼動するすべてのプログラムによる不揮発性スト
レージへのアクセスを不能にするシステム初期化処理
と、システムの通常動作モードで稼動するプログラムに
よる隠されたストレージ・ロケーションへのアクセスを
防ぐ手段と、システムの制限された動作モードで稼動す
るプログラムによる隠されたストレージ・ロケーション
へのアクセスを許可する手段とを含むマスタ暗号鍵を使
用し、マスタ暗号鍵へのアクセスを保護するシステムで
ある。
鍵から導出されることが望ましい。また、機密データ
は、ディスクに保管された暗号化されたデータから取り
出される第2鍵であり、保管されたデータが、マスタ鍵
を用いて暗号化されることが望ましい。
ワーオンまたはリセット信号に応答して開始されるシス
テム初期化処理中にシステムを制御する。
アクセスをラッチによって制御される不揮発性ランダム
・アクセス・メモリであり、ラッチが、パワーオンまた
はリセット・イベントに応答するハードウェア機能に起
因してシステム初期化処理の開始時に開かれ、これによ
って、不揮発性ランダム・アクセス・メモリへのシステ
ム・アクセスが可能になり、ラッチが、システム初期化
処理中に閉じられ、これによって、システム初期化の次
の開始まで、不揮発性ランダム・アクセス・メモリへの
システム・アクセスが拒否される。
作モードで稼動するどのプログラムによってもアクセス
できないシステム管理ランダム・アクセス・メモリであ
り、制限された動作モードは、システム管理ランダム・
アクセス・メモリへのアクセスが許可されるシステム管
理モードでよい。
・システムだけによるアクセスのために制限され、シス
テムの通常動作モードで稼動するどのアプリケーション
・プログラムによってもアクセス可能ではなく、制限さ
れた動作モードが、オペレーティング・システム・ソフ
トウェアによる使用のために予約されたCPU保護リン
グによって制限されるてもよい。
ステムが開示されている。そのシステムは、不揮発性ス
トレージからマスタ鍵を読み取り、次のシステム・リセ
ットまでアクセスがもう一度使用可能にならないよう
に、不揮発性ストレージへのアクセスを閉じ、マスタ鍵
から導出された機密データを隠されたアドレス・スペー
スに書き込むパワーオン・ソフトウェアを含み、システ
ムの制限された動作モードで稼動するプログラムだけ
が、隠されたアドレス・スペース内の機密データへのア
クセスする。
を制限することによって、アプリケーションに対してデ
ータへの読取および書込のアクセスを制御する方法も開
示されている。その方法は、マスタ鍵と、アプリケーシ
ョンがアクセスを求める、封印された形または開封され
た形のデータを保持するアプリケーション・コンテナ
と、暗号変換を計算するために、呼出し側アプリケーシ
ョンを構成するバイトの部分の暗号ダイジェストを実行
する暗号ゲートキーピング・モジュールと、アプリケー
ション・コンテナおよび暗号変換を検査し、アプリケー
ションが所与のアプリケーション・コンテナ内のデータ
を開封することを許可されるかどうかを判定するために
マスタ鍵を検査するか、データを封印する時に保全性検
査情報を追加するためにそれを変更する保全性検査を含
む暗号処理モジュールとを含む。
法は、少なくともマスタ鍵および暗号変換から導出され
る鍵を使用してアプリケーション・コンテナ内のデータ
を解読する暗号処理モジュールによって実行される。さ
らに、少なくともマスタ鍵および暗号変換から導出され
る鍵を使用してアプリケーション・コンテナ内のデータ
を暗号化する暗号処理モジュールによって実行されるて
もよい。また、プライバシ方法は暗号化が実行される前
に、アプリケーション・コンテナに暗号変換を追加する
してもよい。
暗号鍵の使用可能性を制限することによってアプリケー
ションに対してデータへのアクセスを制御する方法も開
示されている。その方法は、暗号処理モジュールに既知
の鍵と、アプリケーションがアクセスを求める、暗号的
に封印された形のデータを含むアプリケーション・コン
テナ・データ構造体と、暗号ゲートキーピング機能であ
って、アプリケーションレベル・プログラムと暗号処理
モジュールとの間のすべてのアクセスをインターセプト
し、暗号サービスまたはデータへのアクセスを試みてい
るプログラムの実行可能インメモリ・イメージのバイト
の部分を検査する手段を含み、アプリケーションの暗号
変換を計算するために、呼出し側アプリケーションのイ
ンメモリ・イメージのバイトの部分の暗号ダイジェスト
を計算する暗号ゲートキーピング機能と、暗号処理モジ
ュールによって実行される保全性検査方法であって、ア
プリケーション・コンテナ・データ構造体および暗号変
換を検査し、アプリケーションが所与のアプリケーショ
ン・コンテナ・データ構造体内のデータの開封を許可さ
れるかどうかを判定するためにマスタ鍵を検査するか、
データを封印する時に保全性検査情報を追加するために
それを変更する保全性検査方法とを含む。
号変換から導出される鍵を使用してアプリケーション・
コンテナ・データ構造体内のデータを暗号化または解読
し、データが暗号化される時に、任意選択として、暗号
化が実行される前に暗号変換をアプリケーション・コン
テナ・データ構造体に追加する、暗号処理モジュールに
よって実行されるプライバシ方法をさらに含んでもよ
い。
ションについて許可されるオペレーションを指定する許
可バッファを同時にまたは前に与えられ、暗号ゲートキ
ーピング機能が、要求オペレーションが許可されること
を確認するものである。
鍵から暗号変数を導出するステップ、または、暗号変
換、マスタ鍵、およびアプリケーションのコンポーネン
トによって選択される暗号変数から第2暗号変数を導出
するステップを含み、この導出される鍵が、アプリケー
ション・コンテナ・データ構造体に保管されたメッセー
ジ認証コードを検査するのに使用されるようにしてもよ
い。
出された鍵を使用し、結果の値の部分を暗号変換の部分
と比較し、2つの部分が同一である場合にアクセスを許
可することによって、アプリケーション・コンテナ・デ
ータ構造体の部分を解読するようにしてもよい。
タ鍵と任意選択として他の情報とから暗号変数を導出す
るステップ、または暗号変換とマスタ鍵とアプリケーシ
ョンのコンポーネントによって選択された暗号変数と任
意選択としての他の情報とから第2暗号変数を導出する
ステップを含み、この導出された鍵が、アプリケーショ
ン・コンテナ・データ構造体の部分の解読または暗号化
に使用されるようにしてもよい。
することによって、MD5またはSHA1またはSHA
−256ハッシュ関数の1つまたは複数の適用を用いて
実行される。また、暗号処理モジュールの部分が、シス
テム管理割込み中に実行される。
ューティング・マシンの助けを得て認証サーバを含む別
のコンピューティング・マシンに対して識別されたデバ
イス上の識別されたアプリケーションを認証する方法も
開示されている。その方法は、a)デバイス・オーソリ
ティに送られる結果を作るデバイス上のシステム管理割
込み(SMI)中に実行される第1暗号オペレーション
と、b)デバイスによって受け取られるデバイス・オー
ソリティによって生成された値を処理するデバイス上の
SMI割込み中に実行される第2暗号オペレーションの
ステップを含むエンロールメント処理と、a)認証サー
バに送られる結果を作るデバイス上のSMI割込み中に
実行される第1暗号オペレーションと、b)認証方法中
に使用するために保管される暗号変数を作る認証サーバ
によって実行される第2暗号オペレーションと、c)デ
バイスによって受け取られる認証サーバによって生成さ
れた値を処理するデバイス上のSMI割込み中に実行さ
れる任意選択の第3暗号オペレーションとのステップを
含む登録処理と、a)認証サーバに送られる認証データ
を作るデバイス上のSMI割込み中に実行される第1暗
号オペレーションと、b)認証の結果を判定するため
に、少なくとも登録方法中に保管された暗号変数を使用
して、デバイスから受け取られた認証データに対して認
証サーバによって実行される第2暗号オペレーションと
のステップを含む認証処理とを含む。
ケーションを認証するか、PASSサーバを含む別のコ
ンピューティング・マシンに対して識別されたデバイス
のユーザを識別するための第2要因を提供する方法も開
示されている。この方法は、アプリケーションであっ
て、a)デバイス上の、暗号的にアプリケーションと関
連したアプリケーション・コンテナ・データ構造体を作
成するためにデバイス・オーソリティおよび認証サーバ
との通信を含むエンロールメント方法を実行し、b)信
任証情報を保管し、認証サーバが、アプリケーション・
コンテナ・データ構造体の暗号変数を保管するアプリケ
ーションと、認証方法を実行する識別されたデバイス上
で稼動するアプリケーションであって、a)信任証を保
管するアプリケーション・コンテナ・データ構造体を開
封するステップと、b)信任証を修正するステップと、
c)アプリケーション・コンテナ・データ構造体を再封
印するステップと、d)識別情報および再封印されたA
ppContainerの少なくとも一部を認証サーバ
に送るステップとを含み、再封印オペレーションの少な
くとも一部が、アプリケーションのコードを実行するも
のと同一のCPU上のSMI中に行われる認証方法を実
行する識別されたデバイス上で稼動するアプリケーショ
ンとを含み、認証サーバが、a)識別情報とアプリケー
ション・コンテナ・データ構造体の少なくとも一部とを
受け取り、b)アプリケーション・コンテナ・データ構
造体を開封するために暗号変数をルックアップまたは計
算するために識別情報を使用し、c)開封されたアプリ
ケーション・コンテナが許容可能な値を有する場合に、
特定のデバイス上の特定のアプリケーションが認証され
たとみなされ、d)アプリケーション・コンテナ・デー
タ構造体に関連する鍵を保管する。
またはディジタル権利管理の目的でデバイス上で1つま
たは複数の仮想トークンを作成し、使用する方法も開示
されている。本方法は仮想トークンの種類ごとのアプリ
ケーションと、特定の種類の仮想トークンごとのアプリ
ケーション・コンテナと、暗号処理コンポーネントの暗
号サービスを要求している呼出し側アプリケーションの
暗号変換を計算する暗号ゲートキーピング・コンポーネ
ントとを含み、暗号ゲートキーピング・コンポーネント
が、1つまたは複数の長寿命の対称鍵を知り、暗号処理
コンポーネントが、CryptoGateコンポーネン
トを介してアクセスされ、暗号処理コンポーネントが、
1つまたは複数の長寿命の対称鍵および1つまたは複数
の長寿命の公開鍵を知り、暗号処理コンポーネントが、
アプリケーション・コンテナ・データ構造体の暗号的封
印および暗号的開封を実行し、暗号オペレーションの一
部が、システム管理割込み(SMI)中に実行され、暗
号処理コンポーネントが、CryptoEngineに
ロードされた公開鍵および暗号変換値を使用して、アプ
リケーションのコードまたは静的データの一部のディジ
タル署名を検査することによって、呼出し側アプリケー
ションの保全性を検査し、暗号変換値が、呼出し側アプ
リケーションのインメモリ・イメージの部分の最近計算
された暗号ハッシュを含み、暗号ゲートキーピング・コ
ンポーネントおよび暗号処理コンポーネントが、 a)
アプリケーション・コンテナ・データ構造体を開封する
鍵を、マスタ鍵および暗号変換から導出し、b)アプリ
ケーション・コンテナ・データ構造体に対するメッセー
ジ認証コードを検査するのに導出された鍵を使用し、メ
ッセージ認証コードが正しい場合にエラーを返し、c)
アプリケーション・コンテナ・データ構造体内のデータ
を解読するのに導出された鍵を使用し、それをアプリケ
ーションに返す。
デバイスに関連する対称鍵によって保護される秘密鍵を
含むアプリケーション・コンテナを作成する。
デバイス認証システムのコンポーネントを示す簡略化さ
れたブロック図である。
ある。
る。
A)登録を示すブロック図である。
す流れ図である。
す流れ図である。
す流れ図である。
す流れ図である。
す流れ図である。
ック) 15 プログラム 16 システム管理モード(SMM)
Claims (25)
- 【請求項1】 マスタ暗号鍵を使用し、上記マスタ暗号
鍵へのアクセスを保護するシステムであって、 不揮発性ストレージと、 システム初期化処理であって、 システム初期化処理中に上記不揮発性ストレージから上
記マスタ鍵を読み取り、 上記マスタ鍵から導出された機密値を隠されたストレー
ジ・ロケーションに書き込み、 システム初期化処理の次の開始まで、上記システム内で
稼動するすべてのプログラムによる上記不揮発性ストレ
ージへのアクセスを不能にするシステム初期化処理と、 上記システムの通常動作モードで稼動するプログラムに
よる上記隠されたストレージ・ロケーションへのアクセ
スを防ぐ手段と、 上記システムの制限された動作モードで稼動するプログ
ラムによる上記隠されたストレージ・ロケーションへの
アクセスを許可する手段とを含むシステム。 - 【請求項2】 上記機密データが、上記マスタ鍵である
請求項1に記載のシステム。 - 【請求項3】 上記機密データが、上記マスタ鍵から導
出される請求項1に記載のシステム。 - 【請求項4】 上記機密データが、ディスクに保管され
た暗号化されたデータから取り出される第2鍵であり、
上記保管されたデータが、上記マスタ鍵を用いて暗号化
される請求項3に記載のシステム。 - 【請求項5】 BIOS ROM内のソフトウェアが、
パワーオンまたはリセット信号に応答して開始される上
記システム初期化処理中に上記システムを制御する請求
項1に記載のシステム。 - 【請求項6】 上記不揮発性ストレージが、読取および
書込のアクセスをラッチによって制御される不揮発性ラ
ンダム・アクセス・メモリであり、 上記ラッチが、パワーオンまたはリセット・イベントに
応答するハードウェア機能に起因してシステム初期化処
理の開始時に開かれ、これによって、上記不揮発性ラン
ダム・アクセス・メモリへのシステム・アクセスが可能
になり、 上記ラッチが、上記システム初期化処理中に閉じられ、
これによって、システム初期化の次の開始まで、上記不
揮発性ランダム・アクセス・メモリへのシステム・アク
セスが拒否される請求項1に記載のシステム。 - 【請求項7】 上記隠されたストレージが、上記システ
ムの上記通常動作モードで稼動するどのプログラムによ
ってもアクセスできないシステム管理ランダム・アクセ
ス・メモリであり、 上記制限された動作モードが、システム管理ランダム・
アクセス・メモリへのアクセスが許可されるシステム管
理モードである請求項1に記載のシステム。 - 【請求項8】 上記隠されたストレージが、オペレーテ
ィング・システムだけによるアクセスのために制限さ
れ、上記システムの上記通常動作モードで稼動するどの
アプリケーション・プログラムによってもアクセス可能
ではなく、 上記制限された動作モードが、オペレーティング・シス
テム・ソフトウェアによる使用のために予約されたCP
U保護リングによって制限される請求項1に記載のシス
テム。 - 【請求項9】 マスタ暗号鍵をストレージ内に隠蔽する
システムであって、 不揮発性ストレージからマスタ鍵を読み取り、 次のシステム・リセットまでアクセスがもう一度使用可
能にならないように、上記不揮発性ストレージへのアク
セスを閉じ、 上記マスタ鍵から導出された機密データを隠されたアド
レス・スペースに書き込むパワーオン・ソフトウェアを
含み、上記システムの制限された動作モードで稼動する
プログラムだけが、上記隠されたアドレス・スペース内
の上記機密データへのアクセスを有するシステム。 - 【請求項10】 アプリケーションへの暗号鍵の使用可
能性を制限することによって、アプリケーションに対し
てデータへの読取および書込のアクセスを制御する方法
であって、 マスタ鍵と、 上記アプリケーションがアクセスを求める、封印された
形または開封された形のデータを保持するアプリケーシ
ョン・コンテナと、 暗号変換を計算するために、呼出し側アプリケーション
を構成するバイトの部分の暗号ダイジェストを実行する
暗号ゲートキーピング・モジュールと、 上記アプリケーション・コンテナおよび暗号変換を検査
し、上記アプリケーションが所与のアプリケーション・
コンテナ内のデータを開封することを許可されるかどう
かを判定するために上記マスタ鍵を検査するか、データ
を封印する時に保全性検査情報を追加するためにそれを
変更する、保全性検査を含む暗号処理モジュールとを含
む方法。 - 【請求項11】 プライバシ方法が、少なくとも上記マ
スタ鍵および暗号変換から導出される鍵を使用して上記
アプリケーション・コンテナ内の上記データを解読する
上記暗号処理モジュールによって実行される請求項10
に記載の方法。 - 【請求項12】 さらに、少なくとも上記マスタ鍵およ
び暗号変換から導出される鍵を使用して上記アプリケー
ション・コンテナ内の上記データを暗号化する上記暗号
処理モジュールによって実行されるプライバシ方法を含
む請求項10に記載の方法。 - 【請求項13】 上記プライバシ方法が、上記暗号化が
実行される前に、上記アプリケーション・コンテナに上
記暗号変換を追加する請求項12に記載の方法。 - 【請求項14】 特定のデバイス上のアプリケーション
への暗号鍵の使用可能性を制限することによって上記ア
プリケーションに対してデータへのアクセスを制御する
方法であって、 暗号処理モジュールに既知の鍵と、 上記アプリケーションがアクセスを求める、暗号的に封
印された形のデータを含むアプリケーション・コンテナ
・データ構造体と、 暗号ゲートキーピング機能であって、 アプリケーションレベル・プログラムと上記暗号処理モ
ジュールとの間のすべてのアクセスをインターセプト
し、 暗号サービスまたはデータへのアクセスを試みているプ
ログラムの実行可能インメモリ・イメージのバイトの部
分を検査する手段を含み、 上記アプリケーションの暗号変換を計算するために、呼
出し側アプリケーションのインメモリ・イメージの上記
バイトの部分の暗号ダイジェストを計算する暗号ゲート
キーピング機能と、 上記暗号処理モジュールによって実行される保全性検査
方法であって、上記アプリケーション・コンテナ・デー
タ構造体および暗号変換を検査し、上記アプリケーショ
ンが所与のアプリケーション・コンテナ・データ構造体
内の上記データの開封を許可されるかどうかを判定する
ために上記マスタ鍵を検査するか、上記データを封印す
る時に上記保全性検査情報を追加するためにそれを変更
する、保全性検査方法とを含む方法。 - 【請求項15】 少なくとも上記マスタ鍵および暗号変
換から導出される鍵を使用して上記アプリケーション・
コンテナ・データ構造体内のデータを暗号化または解読
し、データが暗号化される時に、任意選択として、暗号
化が実行される前に上記暗号変換を上記アプリケーショ
ン・コンテナ・データ構造体に追加する、上記暗号処理
モジュールによって実行されるプライバシ方法をさらに
含む請求項14に記載の方法。 - 【請求項16】 暗号ゲートキーピング機能が、上記ア
プリケーションについて許可されるオペレーションを指
定する許可バッファを同時にまたは前に与えられ、上記
暗号ゲートキーピング機能が、上記要求オペレーション
が許可されることを確認する請求項14に記載の方法。 - 【請求項17】 上記保全性検査方法が、上記暗号変換
および上記マスタ鍵から暗号変数を導出するステップ、
または、上記暗号変換、上記マスタ鍵、およびアプリケ
ーションのコンポーネントによって選択される暗号変数
から第2暗号変数を導出するステップを含み、この導出
される鍵が、上記アプリケーション・コンテナ・データ
構造体に保管されたメッセージ認証コードを検査するの
に使用される請求項14に記載の方法。 - 【請求項18】 上記保全性検査方法が、上記マスタ鍵
から導出された鍵を使用し、結果の値の部分を上記暗号
変換の部分と比較し、上記2つの部分が同一である場合
にアクセスを許可することによって、上記アプリケーシ
ョン・コンテナ・データ構造体の部分を解読することを
含む請求項14に記載の方法。 - 【請求項19】 上記プライバシ・ステップが、上記暗
号変換と上記マスタ鍵と任意選択として他の情報とから
暗号変数を導出するステップ、または上記暗号変換と上
記マスタ鍵とアプリケーションのコンポーネントによっ
て選択された暗号変数と任意選択としての他の情報とか
ら第2暗号変数を導出するステップを含み、この導出さ
れた鍵が、上記アプリケーション・コンテナ・データ構
造体の部分の解読または暗号化に使用される請求項14
に記載の方法。 - 【請求項20】 上記鍵導出が、依存する値を同一の順
序で連結することによって、MD5またはSHA1また
はSHA−256ハッシュ関数の1つまたは複数の適用
を用いて実行される請求項19に記載の方法。 - 【請求項21】 上記暗号処理モジュールの部分が、シ
ステム管理割込み中に実行される請求項14に記載の方
法。 - 【請求項22】 デバイス・オーソリティを含む別のコ
ンピューティング・マシンの助けを得て認証サーバを含
む別のコンピューティング・マシンに対して識別された
デバイス上の識別されたアプリケーションを認証する方
法であって、 a)デバイス・オーソリティに送られる結果を作る上記
デバイス上のシステム管理割込み(SMI)中に実行さ
れる第1暗号オペレーションと、 b)上記デバイスによって受け取られる上記デバイス・
オーソリティによって生成された値を処理する上記デバ
イス上のSMI割込み中に実行される第2暗号オペレー
ションのステップを含むエンロールメント処理と、 a)上記認証サーバに送られる結果を作る上記デバイス
上のSMI割込み中に実行される第1暗号オペレーショ
ンと、 b)認証方法中に使用するために保管される暗号変数を
作る上記認証サーバによって実行される第2暗号オペレ
ーションと、 c)上記デバイスによって受け取られる上記認証サーバ
によって生成された値を処理する上記デバイス上のSM
I割込み中に実行される任意選択の第3暗号オペレーシ
ョンとのステップを含む登録処理と、 a)上記認証サーバに送られる認証データを作る上記デ
バイス上のSMI割込み中に実行される第1暗号オペレ
ーションと、 b)上記認証の結果を判定するために、少なくとも上記
登録方法中に保管された上記暗号変数を使用して、上記
デバイスから受け取られた上記認証データに対して上記
認証サーバによって実行される第2暗号オペレーション
とのステップを含む認証処理とを含む方法。 - 【請求項23】 識別されたデバイス上の識別されたア
プリケーションを認証するか、PASSサーバを含む別
のコンピューティング・マシンに対して上記識別された
デバイスのユーザを識別するための第2要因を提供する
方法であって、 アプリケーションであって、 a)上記デバイス上の、暗号的に上記アプリケーション
と関連したアプリケーション・コンテナ・データ構造体
を作成するためにデバイス・オーソリティおよび認証サ
ーバとの通信を含むエンロールメント方法を実行し、 b)信任証情報を保管し、上記認証サーバが、上記アプ
リケーション・コンテナ・データ構造体の暗号変数を保
管するアプリケーションと、 認証方法を実行する上記識別されたデバイス上で稼動す
るアプリケーションであって、 a)上記信任証を保管する上記アプリケーション・コン
テナ・データ構造体を開封するステップと、 b)上記信任証を修正するステップと、 c)上記アプリケーション・コンテナ・データ構造体を
再封印するステップと、 d)識別情報および上記再封印されたAppConta
inerの少なくとも一部を上記認証サーバに送るステ
ップとを含み、上記再封印オペレーションの少なくとも
一部が、上記アプリケーションのコードを実行するもの
と同一のCPU上のSMI中に行われる認証方法を実行
する上記識別されたデバイス上で稼動するアプリケーシ
ョンとを含み、上記認証サーバが、 a)上記識別情報と上記アプリケーション・コンテナ・
データ構造体の少なくとも一部とを受け取り、 b)上記アプリケーション・コンテナ・データ構造体を
開封するために暗号変数をルックアップまたは計算する
ために上記識別情報を使用し、 c)開封されたアプリケーション・コンテナが許容可能
な値を有する場合に、特定のデバイス上の上記特定のア
プリケーションが認証されたとみなされ、 d)上記アプリケーション・コンテナ・データ構造体に
関連する鍵を保管する方法。 - 【請求項24】 認証、プライバシ、保全性、許可、監
査、またはディジタル権利管理の目的でデバイス上で1
つまたは複数の仮想トークンを作成し、使用する方法で
あって、 仮想トークンの種類ごとのアプリケーションと、 特定の種類の仮想トークンごとのアプリケーション・コ
ンテナと、 暗号処理コンポーネントの暗号サービスを要求している
呼出し側アプリケーションの暗号変換を計算する暗号ゲ
ートキーピング・コンポーネントとを含み、上記暗号ゲ
ートキーピング・コンポーネントが、1つまたは複数の
長寿命の対称鍵を知り、 上記暗号処理コンポーネントが、CryptoGate
コンポーネントを介してアクセスされ、 上記暗号処理コンポーネントが、1つまたは複数の長寿
命の対称鍵および1つまたは複数の長寿命の公開鍵を知
り、 上記暗号処理コンポーネントが、アプリケーション・コ
ンテナ・データ構造体の暗号的封印および暗号的開封を
実行し、上記暗号オペレーションの一部が、システム管
理割込み(SMI)中に実行され、 上記暗号処理コンポーネントが、上記CryptoEn
gineにロードされた公開鍵および暗号変換値を使用
して、上記アプリケーションのコードまたは静的データ
の一部のディジタル署名を検査することによって、上記
呼出し側アプリケーションの保全性を検査し、 上記暗号変換値が、上記呼出し側アプリケーションのイ
ンメモリ・イメージの部分の最近計算された暗号ハッシ
ュを含み、 上記暗号ゲートキーピング・コンポーネントおよび上記
暗号処理コンポーネントが、 a)上記アプリケーション・コンテナ・データ構造体を
開封する鍵を、上記マスタ鍵および暗号変換から導出
し、 b)上記アプリケーション・コンテナ・データ構造体に
対する上記メッセージ認証コードを検査するのに上記導
出された鍵を使用し、上記メッセージ認証コードが正し
い場合にエラーを返し、 c)上記アプリケーション・コンテナ・データ構造体内
のデータを解読するのに上記導出された鍵を使用し、そ
れを上記アプリケーションに返す方法。 - 【請求項25】 デバイスに関連するアプリケーション
に秘密鍵を安全に関連付ける方法であって、 上記デバイスに関連する対称鍵によって保護される秘密
鍵を含むアプリケーション・コンテナを作成することを
含む方法。
Applications Claiming Priority (2)
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 |
US09/829074 | 2001-04-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002312242A true JP2002312242A (ja) | 2002-10-25 |
Family
ID=25253451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001355353A Pending JP2002312242A (ja) | 2001-04-09 | 2001-11-20 | コンピュータ・デバイス認証のシステムおよび方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US20030037237A1 (ja) |
JP (1) | JP2002312242A (ja) |
KR (1) | KR100879907B1 (ja) |
CN (2) | CN101114326A (ja) |
TW (1) | TW589569B (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004068493A1 (en) * | 2003-01-31 | 2004-08-12 | Nds Limited | Virtual smart card device, method and system |
JP2005310122A (ja) * | 2004-04-23 | 2005-11-04 | Microsoft Corp | ファイルロッカー、およびファイルロッカーを提供し使用するための機構 |
US7379548B2 (en) | 2003-01-31 | 2008-05-27 | Nds Limited | Virtual smart card device, method and system |
JP2010517449A (ja) * | 2007-01-26 | 2010-05-20 | セーフネット インコーポレイテッド | 信頼できない受信者における秘密の保護 |
JP2010530562A (ja) * | 2007-05-07 | 2010-09-09 | アーカイヴァス インコーポレイテッド | 固定コンテンツ分散型データ記憶システムにおけるデータ機密保持方法 |
JP2016021220A (ja) * | 2014-07-14 | 2016-02-04 | レノボ・シンガポール・プライベート・リミテッド | 退避ファイルの一貫性を検証する方法、コンピュータおよびコンピュータ・プログラム |
Families Citing this family (418)
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 |
EP1056010A1 (en) | 1999-05-28 | 2000-11-29 | Hewlett-Packard Company | Data integrity monitoring in trusted computing entity |
EP1055990A1 (en) | 1999-05-28 | 2000-11-29 | Hewlett-Packard Company | Event logging in a computing platform |
DE10154723A1 (de) * | 2000-11-10 | 2002-10-31 | Parker Hannifin Corp | Axialkolbenpumpe mit interner Vorverdichtung |
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 |
GB2372594B (en) * | 2001-02-23 | 2004-10-06 | Hewlett Packard Co | Trusted computing environment |
GB2372595A (en) * | 2001-02-23 | 2002-08-28 | Hewlett Packard Co | Method of and apparatus for ascertaining the status of a data processing 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 | 삼성전자주식회사 | 디지털 권리 운영을 수행하기 위하여 휴대용 기기와컴퓨터 사이의 통신을 제어하는 방법 |
US7577250B2 (en) * | 2004-08-12 | 2009-08-18 | Cmla, Llc | Key derivation functions to enhance security |
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 |
US20030144970A1 (en) * | 2001-12-10 | 2003-07-31 | Coyne Patrick J. | Project management database and method of managing project related information |
US8935297B2 (en) * | 2001-12-10 | 2015-01-13 | Patrick J. Coyne | Method and system for the management of professional services project information |
US7930756B1 (en) | 2001-12-12 | 2011-04-19 | Crocker Steven Toye | Multi-level cryptographic transformations for securing digital assets |
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 |
US7783765B2 (en) * | 2001-12-12 | 2010-08-24 | Hildebrand Hal S | System and method for providing distributed access control to secured documents |
US7681034B1 (en) | 2001-12-12 | 2010-03-16 | Chang-Ping Lee | Method and apparatus for securing electronic data |
US7921284B1 (en) | 2001-12-12 | 2011-04-05 | Gary Mark Kinghorn | Method and system for protecting electronic data in enterprise environment |
US7631184B2 (en) * | 2002-05-14 | 2009-12-08 | Nicholas Ryan | System and method for imposing security on copies of secured items |
US7565683B1 (en) * | 2001-12-12 | 2009-07-21 | Weiqing Huang | Method and system for implementing changes to security policies in a distributed security system |
US7562232B2 (en) * | 2001-12-12 | 2009-07-14 | Patrick Zuili | System and method for providing manageability to security information for secured items |
US7921450B1 (en) | 2001-12-12 | 2011-04-05 | Klimenty Vainstein | Security system using indirect key generation from access rules and methods therefor |
US7380120B1 (en) | 2001-12-12 | 2008-05-27 | Guardian Data Storage, Llc | Secured data format for access control |
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 |
USRE41546E1 (en) | 2001-12-12 | 2010-08-17 | Klimenty Vainstein | Method and system for managing security tiers |
US10033700B2 (en) | 2001-12-12 | 2018-07-24 | Intellectual Ventures I Llc | Dynamic evaluation of access rights |
US7260555B2 (en) | 2001-12-12 | 2007-08-21 | Guardian Data Storage, Llc | Method and architecture for providing pervasive security to digital assets |
US7178033B1 (en) | 2001-12-12 | 2007-02-13 | Pss Systems, Inc. | Method and apparatus for securing digital assets |
US10360545B2 (en) | 2001-12-12 | 2019-07-23 | Guardian Data Storage, Llc | Method and apparatus for accessing secured electronic data off-line |
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 |
US8613102B2 (en) * | 2004-03-30 | 2013-12-17 | Intellectual Ventures I Llc | Method and system for providing document retention using cryptography |
US7748045B2 (en) * | 2004-03-30 | 2010-06-29 | Michael Frederick Kenrich | Method and system for providing cryptographic document retention with off-line access |
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 | 주식회사 마이엔진 | 컴퓨팅 장치의 인증/접근 제어에 사용되는 중요 상수값의보안 방법 및 그를 이용한 인증/접근 제어 방법 |
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 |
US7203844B1 (en) | 2002-06-20 | 2007-04-10 | Oxford William V | Method and system for a recursive security protocol for digital copyright control |
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 |
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 |
WO2005006203A1 (ja) * | 2003-07-14 | 2005-01-20 | Sony Corporation | サービス利用方法及び管理方法 |
US7590837B2 (en) * | 2003-08-23 | 2009-09-15 | Softex Incorporated | Electronic device security and tracking system and method |
CN1871568B (zh) | 2003-08-26 | 2010-04-28 | 松下电器产业株式会社 | 程序执行设备 |
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 |
US20050182925A1 (en) * | 2004-02-12 | 2005-08-18 | Yoshihiro Tsukamura | Multi-mode token |
US20050182971A1 (en) * | 2004-02-12 | 2005-08-18 | Ong Peng T. | Multi-purpose user authentication device |
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 |
US20050232580A1 (en) * | 2004-03-11 | 2005-10-20 | Interdigital Technology Corporation | Control of device operation within an area |
KR100636906B1 (ko) * | 2004-03-22 | 2006-10-19 | 엘지전자 주식회사 | 미디 재생 장치 그 방법 |
US7653727B2 (en) * | 2004-03-24 | 2010-01-26 | Intel Corporation | Cooperative embedded agents |
US20050213768A1 (en) * | 2004-03-24 | 2005-09-29 | Durham David M | Shared cryptographic key in networks with an embedded agent |
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 |
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 |
US7774824B2 (en) * | 2004-06-09 | 2010-08-10 | Intel Corporation | Multifactor device authentication |
US7526792B2 (en) * | 2004-06-09 | 2009-04-28 | Intel Corporation | Integration of policy compliance enforcement and 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 |
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 |
US7571329B2 (en) * | 2004-07-14 | 2009-08-04 | Intel Corporation | Method of storing unique constant values |
US7792303B2 (en) * | 2004-07-14 | 2010-09-07 | Intel Corporation | Method of delivering direct proof private keys to devices using a distribution CD |
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 |
CN102868518A (zh) * | 2004-08-12 | 2013-01-09 | Cmla有限公司 | 为提高安全性的置换数据变换 |
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 |
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 |
US8176564B2 (en) * | 2004-11-15 | 2012-05-08 | Microsoft Corporation | Special PC mode entered upon detection of undesired state |
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 |
TW200730836A (en) * | 2004-12-06 | 2007-08-16 | Interdigital Tech Corp | Method and apparatus for detecting portable electronic device functionality |
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 |
US20060227640A1 (en) * | 2004-12-06 | 2006-10-12 | Interdigital Technology Corporation | Sensing device with activation and sensing alert functions |
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 |
US9300641B2 (en) * | 2005-02-11 | 2016-03-29 | Nokia Corporation | Method and apparatus for providing bootstrapping procedures in a communication network |
US20060198515A1 (en) * | 2005-03-03 | 2006-09-07 | Seagate Technology Llc | Secure disc drive electronics implementation |
US7890634B2 (en) | 2005-03-18 | 2011-02-15 | Microsoft Corporation | Scalable session management |
US8086853B2 (en) * | 2005-03-18 | 2011-12-27 | Microsoft Corporation | Automatic centralized authentication challenge response generation |
US20060218649A1 (en) * | 2005-03-22 | 2006-09-28 | Brickell Ernie F | Method for conditional disclosure of identity information |
EP1866825A1 (en) | 2005-03-22 | 2007-12-19 | Hewlett-Packard Development Company, L.P. | Methods, devices and data structures for trusted data |
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 |
WO2006115532A2 (en) * | 2005-04-22 | 2006-11-02 | Microsoft Corporation | Renewable and individualizable elements of a protected computing environment |
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 |
US8839450B2 (en) * | 2007-08-02 | 2014-09-16 | Intel Corporation | Secure vault service for software components within an execution environment |
US7669242B2 (en) * | 2005-06-30 | 2010-02-23 | Intel Corporation | Agent presence monitor configured to execute in a secure environment |
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 |
US7953980B2 (en) * | 2005-06-30 | 2011-05-31 | Intel Corporation | Signed manifest for run-time verification of software program identity and integrity |
US8677504B2 (en) | 2005-07-14 | 2014-03-18 | Qualcomm Incorporated | Method and apparatus for encrypting/decrypting multimedia content to allow random access |
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 |
US20070028291A1 (en) * | 2005-07-29 | 2007-02-01 | Bit 9, Inc. | Parametric content control in a network security system |
US8984636B2 (en) * | 2005-07-29 | 2015-03-17 | Bit9, Inc. | Content extractor and analysis 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 | 情報処理装置および情報処理方法 |
US8966284B2 (en) | 2005-09-14 | 2015-02-24 | Sandisk Technologies Inc. | Hardware driver integrity check of memory card controller firmware |
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 |
EP1946152B1 (en) * | 2005-11-10 | 2014-03-12 | 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 |
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 |
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 |
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 |
ATE470909T1 (de) * | 2006-04-24 | 2010-06-15 | 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 |
US8285988B2 (en) | 2006-05-09 | 2012-10-09 | Broadcom Corporation | Method and system for command authentication 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 |
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 |
WO2008030523A2 (en) * | 2006-09-06 | 2008-03-13 | Bsecured Solutions, Llc | Real privacy management authentication system |
EP2070248B1 (en) * | 2006-09-27 | 2018-10-10 | SecureAuth 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 |
US7882318B2 (en) * | 2006-09-29 | 2011-02-01 | Intel Corporation | Tamper protection of software agents operating in a vitual technology environment methods and apparatuses |
US8099789B2 (en) * | 2006-09-29 | 2012-01-17 | Lenovo (Singapore) Pte. Ltd. | Apparatus and method for enabling applications on a security processor |
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 |
WO2008070857A1 (en) * | 2006-12-07 | 2008-06-12 | Mobile Armor, Llc | 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 |
EP2122900A4 (en) | 2007-01-22 | 2014-07-23 | Spyrus Inc | PORTABLE DATA ENCRYPTION DEVICE WITH CONFIGURABLE SAFETY FUNCTIONS AND METHOD FOR FILING ENCRYPTION |
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 | 應用程式保護系統及方法 |
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 | 武汉大学 | 一种可信机制上的嵌入式平台引导方法 |
EP2204008B1 (en) * | 2007-10-16 | 2019-03-27 | Nokia Technologies Oy | 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 |
US8191123B2 (en) * | 2007-11-27 | 2012-05-29 | Red Hat, Inc. | Provisioning a network appliance |
US8191122B2 (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 |
US20100106977A1 (en) * | 2008-10-24 | 2010-04-29 | Jan Patrik Persson | Method and Apparatus for Secure Software Platform Access |
US8510352B2 (en) | 2008-10-24 | 2013-08-13 | Microsoft Corporation | Virtualized boot block with discovery volume |
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 |
TWI401583B (zh) * | 2009-08-06 | 2013-07-11 | Phison Electronics Corp | 資料擾亂/解擾亂與資料處理方法及其控制器與儲存系統 |
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 |
US20120124659A1 (en) | 2010-11-17 | 2012-05-17 | Michael Craft | System and Method for Providing Diverse Secure Data Communication Permissions to Trusted 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 |
CN103620612B (zh) * | 2011-07-12 | 2016-04-13 | 惠普发展公司,有限责任合伙企业 | 包括端口和来宾域的计算设备 |
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 |
US20130060721A1 (en) | 2011-09-02 | 2013-03-07 | Frias Transportation Infrastructure, Llc | Systems and methods for pairing of for-hire vehicle meters and medallions |
US9037852B2 (en) | 2011-09-02 | 2015-05-19 | Ivsc Ip Llc | System and method for independent control of for-hire vehicles |
US9118686B2 (en) | 2011-09-06 | 2015-08-25 | Microsoft Technology Licensing, Llc | Per process networking capabilities |
US9773102B2 (en) | 2011-09-09 | 2017-09-26 | Microsoft Technology Licensing, Llc | Selective file access for applications |
US8990561B2 (en) | 2011-09-09 | 2015-03-24 | Microsoft Technology Licensing, Llc | Pervasive package identifiers |
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 |
JP5100884B1 (ja) | 2011-12-02 | 2012-12-19 | 株式会社東芝 | メモリ装置 |
JP5112555B1 (ja) | 2011-12-02 | 2013-01-09 | 株式会社東芝 | メモリカード、ストレージメディア、及びコントローラ |
JP5204291B1 (ja) | 2011-12-02 | 2013-06-05 | 株式会社東芝 | ホスト装置、装置、システム |
JP5204290B1 (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 |
KR20150011802A (ko) | 2012-03-20 | 2015-02-02 | 크림메니 테크놀로지스, 인크. | 프로세스 작업 세트 격리를 위한 방법 및 시스템 |
US20130253999A1 (en) | 2012-03-22 | 2013-09-26 | Frias Transportation Infrastructure Llc | Transaction and communication system and method for vendors and promoters |
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 |
US9628473B1 (en) * | 2012-04-06 | 2017-04-18 | 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 |
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 |
US9609456B2 (en) | 2012-05-14 | 2017-03-28 | Qualcomm Incorporated | Methods, devices, and systems for communicating behavioral analysis information |
US9202047B2 (en) | 2012-05-14 | 2015-12-01 | Qualcomm Incorporated | System, apparatus, and method for adaptive observation of mobile device behavior |
US10084818B1 (en) | 2012-06-07 | 2018-09-25 | Amazon Technologies, Inc. | Flexibly configurable data modification services |
US10075471B2 (en) | 2012-06-07 | 2018-09-11 | Amazon Technologies, Inc. | Data loss prevention techniques |
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 |
US8751814B2 (en) * | 2012-06-14 | 2014-06-10 | 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 |
US8762717B2 (en) * | 2012-06-15 | 2014-06-24 | Kabushiki Kaisha Toshiba | Authentication device |
US8948400B2 (en) * | 2012-06-15 | 2015-02-03 | Kabushiki Kaisha Toshiba | Host device |
US8898463B2 (en) * | 2012-06-15 | 2014-11-25 | Kabushiki Kaisha Toshiba | Device |
US8989374B2 (en) * | 2012-06-15 | 2015-03-24 | Kabushiki Kaisha Toshiba | Cryptographic device for secure authentication |
US9166958B2 (en) * | 2012-07-17 | 2015-10-20 | Texas Instruments Incorporated | ID-based control unit-key fob pairing |
US9330257B2 (en) | 2012-08-15 | 2016-05-03 | Qualcomm Incorporated | Adaptive observation of behavioral features on a mobile device |
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 |
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 |
US10089582B2 (en) | 2013-01-02 | 2018-10-02 | Qualcomm Incorporated | Using normalized confidence values for classifying 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 |
US9742559B2 (en) * | 2013-01-22 | 2017-08-22 | Qualcomm Incorporated | Inter-module authentication for securing application execution integrity within a computing device |
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 |
US9367697B1 (en) * | 2013-02-12 | 2016-06-14 | Amazon Technologies, Inc. | Data security with a security module |
US10467422B1 (en) | 2013-02-12 | 2019-11-05 | Amazon Technologies, Inc. | Automatic key rotation |
US9201811B2 (en) | 2013-02-14 | 2015-12-01 | Kabushiki Kaisha Toshiba | Device and authentication method therefor |
US9264228B2 (en) * | 2013-02-14 | 2016-02-16 | BBPOS Limited | System and method for a secure display module |
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 |
WO2014194494A1 (zh) * | 2013-06-05 | 2014-12-11 | 华为技术有限公司 | 数据安全的保护方法、服务器、主机及系统 |
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 |
PL3058498T3 (pl) * | 2013-10-14 | 2020-11-02 | Cryptomathic Ltd | Rdzeń bezpieczeństwa 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 |
GB2515853B (en) | 2014-02-25 | 2015-08-19 | Cambridge Silicon Radio Ltd | Latency mitigation |
GB2512502B (en) | 2014-02-25 | 2015-03-11 | Cambridge Silicon Radio Ltd | Device authentication |
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 |
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 |
US10374802B2 (en) | 2015-04-24 | 2019-08-06 | Red Hat, Inc. | Multi-factor simple password exponential key exchange (SPEKE) authentication |
US9954832B2 (en) | 2015-04-24 | 2018-04-24 | Encryptics, Llc | System and method for enhanced data protection |
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 |
CN108139901B (zh) * | 2015-09-30 | 2022-04-26 | 惠普发展公司,有限责任合伙企业 | 使用外部设备的运行时间验证 |
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 | キヤノン株式会社 | ライセンス管理システム、クライアント装置、アプリケーションプログラム |
JP6656014B2 (ja) * | 2016-02-19 | 2020-03-04 | キヤノン株式会社 | ライセンスシステム、ライセンス管理サーバ、方法、およびプログラム |
US11537757B2 (en) | 2016-02-19 | 2022-12-27 | Hewlett-Packard Development Company, L.P. | Securely writing data to a secure data storage device during runtime |
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 | 덕성여자대학교 산학협력단 | 사물인터넷 환경에서의 비밀키 설정 및 상호 기기 인증 방법 |
TWI659640B (zh) * | 2017-11-16 | 2019-05-11 | 中華電信股份有限公司 | 結合區塊鏈技術之簽章系統、簽章方法及簽章驗證方法 |
CN108055125B (zh) | 2017-11-23 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 一种产品信息的加密、解密方法及装置 |
US10346608B2 (en) * | 2017-12-12 | 2019-07-09 | John Almeida | Virus immune computer system and method |
US11423186B2 (en) * | 2018-01-17 | 2022-08-23 | Crowdstrike, Inc. | Verified inter-module communications interface |
US10990371B2 (en) | 2018-01-17 | 2021-04-27 | Crowdstrike, Inc. | Device driver non-volatile backing-store installation |
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 | 秦皇岛燕大燕软信息系统有限公司 | 一种基于点云数据处理的列车车厢载货体积及体密度质量检测方法 |
WO2020076722A1 (en) | 2018-10-12 | 2020-04-16 | Medici Ventures, Inc. | Encrypted asset encryption key parts allowing for assembly of an asset encryption key using a subset of the encrypted asset encryption key parts |
EP3654578B1 (en) | 2018-11-16 | 2022-04-06 | SafeTech BV | Methods and systems for cryptographic private key management for secure multiparty storage and transfer of information |
TWI691858B (zh) * | 2018-12-26 | 2020-04-21 | 技嘉科技股份有限公司 | 應用程式的驗證方法、電腦裝置及其主機板 |
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 |
CN110163755B (zh) * | 2019-04-30 | 2020-11-24 | 创新先进技术有限公司 | 基于区块链的数据压缩、查询方法及装置和电子设备 |
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 |
CN114503082B (zh) | 2019-10-09 | 2024-01-30 | 美光科技公司 | 配备有数据保护方案的存储器装置 |
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协议实时监控方法、系统、电子设备及存储介质 |
EP4111639A4 (en) | 2020-02-26 | 2024-02-28 | tZERO IP, LLC | SECRET DIVISION AND METADATA STORAGE |
US12120225B2 (en) * | 2020-09-25 | 2024-10-15 | Renesas Electronics Corporation | Secure 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 | 新唐科技股份有限公司 | 安全啟動裝置、方法與使用其的電子系統 |
CN118573490B (zh) * | 2024-08-05 | 2024-10-01 | 上海景瑞阳实业有限公司 | 基于组合加密算法的通信验证方法、装置及介质 |
Family Cites Families (9)
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 |
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 |
US6327652B1 (en) * | 1998-10-26 | 2001-12-04 | Microsoft Corporation | Loading and identifying a digital rights management operating system |
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 | 김월영 | 하드웨어락에 의한 보안 및 원격관리 시스템에서서버컴퓨터에서 클라이언트 컴퓨터의 하드웨어락에 저장된알고리즘을 제어하는 방법 |
-
2001
- 2001-04-09 US US09/829,074 patent/US20030037237A1/en not_active Abandoned
- 2001-11-20 JP JP2001355353A patent/JP2002312242A/ja active Pending
- 2001-11-23 CN CNA2006101074099A patent/CN101114326A/zh active Pending
- 2001-11-23 CN CNB011454628A patent/CN1273901C/zh not_active Expired - Fee Related
- 2001-11-29 TW TW090129539A patent/TW589569B/zh not_active IP Right Cessation
- 2001-11-29 KR KR1020010074846A patent/KR100879907B1/ko not_active IP Right Cessation
-
2003
- 2003-01-14 US US10/342,709 patent/US20040039924A1/en not_active Abandoned
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004068493A1 (en) * | 2003-01-31 | 2004-08-12 | Nds Limited | Virtual smart card device, method and system |
US7379548B2 (en) | 2003-01-31 | 2008-05-27 | Nds Limited | Virtual smart card device, method and system |
JP2005310122A (ja) * | 2004-04-23 | 2005-11-04 | Microsoft Corp | ファイルロッカー、およびファイルロッカーを提供し使用するための機構 |
JP2010517449A (ja) * | 2007-01-26 | 2010-05-20 | セーフネット インコーポレイテッド | 信頼できない受信者における秘密の保護 |
JP2010530562A (ja) * | 2007-05-07 | 2010-09-09 | アーカイヴァス インコーポレイテッド | 固定コンテンツ分散型データ記憶システムにおけるデータ機密保持方法 |
US8457317B2 (en) | 2007-05-07 | 2013-06-04 | Hitachi Data Systems Corporation | Method for data privacy in a fixed content distributed data storage |
JP2016021220A (ja) * | 2014-07-14 | 2016-02-04 | レノボ・シンガポール・プライベート・リミテッド | 退避ファイルの一貫性を検証する方法、コンピュータおよびコンピュータ・プログラム |
US10032029B2 (en) | 2014-07-14 | 2018-07-24 | Lenovo (Singapore) Pte. Ltd. | Verifying integrity of backup file in a multiple operating system environment |
Also Published As
Publication number | Publication date |
---|---|
TW589569B (en) | 2004-06-01 |
US20030037237A1 (en) | 2003-02-20 |
KR20020079349A (ko) | 2002-10-19 |
CN1380610A (zh) | 2002-11-20 |
KR100879907B1 (ko) | 2009-01-21 |
CN101114326A (zh) | 2008-01-30 |
US20040039924A1 (en) | 2004-02-26 |
CN1273901C (zh) | 2006-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100879907B1 (ko) | 컴퓨팅 디바이스의 보안을 위한 방법 및 시스템 | |
CN109361668B (zh) | 一种数据可信传输方法 | |
US20190089527A1 (en) | System and method of enforcing a computer policy | |
US9946884B2 (en) | System and method for cryptographic suite management | |
Kostiainen et al. | On-board credentials with open provisioning | |
JP5977292B2 (ja) | 信頼される処理技術を使用したデジタル権利管理 | |
US20220114249A1 (en) | Systems and methods for secure and fast machine learning inference in a trusted execution environment | |
Wang et al. | EIDM: A ethereum-based cloud user identity management protocol | |
Bugiel et al. | TruWalletM: Secure web authentication on mobile platforms | |
EP4145763A1 (en) | Exporting remote cryptographic keys | |
Kumar | J2EE Security for Servlets, EJBs and Web Services: Applying Theory and Standards to Practice | |
Cooijmans et al. | Secure key storage and secure computation in Android | |
Xia et al. | Using secure coprocessors to protect access to enterprise networks | |
Fan et al. | Ucam: A User-Centric, Blockchain-Based and End-to-End Secure Home IP Camera System | |
Liu et al. | Active security support for active networks | |
Hamidy et al. | TC4SE: A High-Performance Trusted Channel Mechanism for Secure Enclave-Based Trusted Execution Environments | |
Fongen et al. | The integration of trusted platform modules into a tactical identity management system | |
Murti et al. | Security in embedded systems | |
US20240283664A1 (en) | Authentication with Cloud-Based Secure Enclave | |
Sharma | Onboard credentials: Hardware assisted secure storage of credentials | |
Joosen | TC4SE: A High-Performance Trusted Channel Mechanism for Secure Enclave-Based Trusted Execution Environments | |
Nielson | Cryptographic Systems Technologies | |
da Silva Rocha | A Mobile Secure Bluetooth-Enabled Cryptographic Provider | |
Foltz et al. | Enterprise Security with Endpoint Agents | |
Kuntur | Security of DaAgent system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081007 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090107 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090113 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090209 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090213 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090512 |