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
Application number
JP2001355353A
Other languages
English (en)
Inventor
Abuguraru Jean-Paul
ジャン−ポール・アブグラル
W Baldwin Robert
ロバート・ダブリュ・ボールドウィン
D Burl John
ジョン・ディ・バール
A Casillas Jose
ホセ・エイ・カシリャス
David P Jablon
デイビッド・ピイ・ジャブロン
J Markay Timothy
ティモシー・ジェイ・マーケイ
Kotora Pannaga
パンナガ・コトラ
Wang Kai
カイ・ワング
D Williams Steven
スティーブン・ディ・ウィリアムズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
FIINIKKUSU TECHNOLOGIES Ltd
Original Assignee
FIINIKKUSU TECHNOLOGIES Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by FIINIKKUSU TECHNOLOGIES Ltd filed Critical FIINIKKUSU TECHNOLOGIES Ltd
Publication of JP2002312242A publication Critical patent/JP2002312242A/ja
Pending legal-status Critical Current

Links

Classifications

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

Landscapes

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

Abstract

(57)【要約】 【課題】 保護された不揮発性メモリに保管されるマス
タ鍵を使用するデバイス認証のシステムおよび方法を提
供する。 【解決手段】 マスタ鍵を使用して、コンピュータ・シ
ステムの特権モードのオペレーションでのみアクセス可
能なストレージに転送される機密データを導出する。こ
の機密データおよびマスタ鍵は、特権モードのオペレー
ションで稼動していないプログラムによって直接にアク
セス可能ではない。マスタ鍵は、アプリケーション/デ
バイス対に固有のデータを保護するのに使用される1つ
または複数のアプリケーション鍵を導出するのに使用さ
れる。非特権プログラムは、特権モードで稼動する機能
を要求して、これらのアプリケーション鍵を使用するこ
とができる。特権モード・プログラムは、非特権呼出し
側プログラムの保全性を検査して、それが各要求された
オペレーションを実行する権限および/または保全性を
有することを保証する。1つまたは複数のデバイス・オ
ーソリティ・サーバが、マスタ鍵およびアプリケーショ
ン鍵の両方の発行および管理に使用される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、全般的には、コン
ピュータ・システムおよびソフトウェア方法に関し、具
体的には、コンピュータ・デバイスを認証するシステム
および方法に関する。
【0002】
【従来の技術】パーソナル・コンピューティング・デバ
イスは、我々の世界のますます重要な部分になりつつあ
り、これらのデバイスがインターネットを用いて相互接
続される際に、これらのデバイスを使用するトランザク
ションにかかわる実体を安全に認証することがますます
重要になる。
【0003】オペレーティング・システムの保護された
サブドメイン内で特権オペレーションを実行するセキュ
ア・カーネルという概念は、コンピュータ・セキュリテ
ィでの非常に古い概念である。しかし、現代の市販オペ
レーティング・システムの発展中に、Microsof
t Windowsのさまざまなバージョン、UNIX
(登録商標)、および小型デバイスの組込みオペレーテ
ィング・システムに反映されているように、オペレーテ
ィング・システムの伝統的なセキュリティの境界および
責任が、ぼやけるか、転置されるか、セキュリティ・ホ
ールだらけになってきた。一部の場合に、オペレーティ
ング・システムが、あまりに巨大になり、包括的な形で
システムの安定を保証できることまたはシステムを分析
できることさえほとんど不可能になった。そのような保
証処理は、原理的には可能であるかもしれないが、これ
らのシステムの期待される寿命のうちで現実的に達成す
ることは不可能と思われる。
【0004】一部のシステムが、より大型のシステムに
セキュリティ・クリティカルなデータを含め、セキュリ
ティ・クリティカルな機能を実行するために、物理的ま
たはアーキテクチャ的に別々のCPUを組み込んだ。そ
の一例が、スマート・カード・ベースの認証デバイスで
ある。スマート・カード・デバイスは、1つまたは複数
の組み込まれた暗号鍵へのアクセスだけを有する別のオ
ペレーティング環境を提供する。これを従来のコンピュ
ータに接続して、組み込まれた鍵を用いてディジタル証
明を実行し、ユーザと、コンピュータによって開始され
るトランザクションとを認証することができる。これ
は、比較的総合的な処理でそのセキュリティ特性を分析
されるのに十分に小さく、単純でもある。しかし、スマ
ート・カードおよび他のアドオン・デバイスによって、
環境に追加のコストおよび複雑さが追加され、ユーザお
よびシステム管理者がカード・リーダをインストールす
ることが必要になることがしばしばであり、スマート・
カードをこれらの計算機のユーザに配布することが必要
になる。もう1つの例が、鍵のローカル・プライベート
・ストレージを有する、システム内の副暗号プロセッサ
の使用である。これは、常時挿入されているスマート・
カードに類似する形で機能する。
【0005】これらのハードウェア・アドオン・システ
ムの多数のもう1つの制限が、アドオンCPUが、それ
自体のユーザ入出力デバイスを有しないことである。ユ
ーザI/Oシステムによって、これらのデバイスにさら
にコストおよび複雑さが追加され、しばしば、機能性お
よび便利さが極端に制限される。たとえば、組み込まれ
た鍵を用いて署名されるものおよび処理されるものを知
らせるのに接続されたコンピュータに完全に頼るCPU
を有する暗号アドオン・デバイスは、接続されたコンピ
ュータへのセキュリティ脅威に対して脆弱であり、この
デバイスの封じ込めの価値の一部が失われる。これらの
別のデバイスの分離に起因して、デバイスが、ホスト・
マシンによってそれに提示されるトランザクションが真
正であることを保証することは、一般に困難または不可
能である。したがって、いくつかの点で、このシステム
は、まだ、結局は、ホスト・オペレーティング・システ
ムおよびアプリケーションの保全性に依存する。
【0006】
【発明が解決しようとする課題】本発明の目的は、デバ
イス・アプリケーション・ソフトウェアのネットワーク
認証のための、デバイスの強い暗号的識別を提供するこ
とである。本発明のもう1つの目的は、システムに対す
る最小限の追加ハードウェアを用いる強い保証を提供す
ることである。本発明のもう1つの目的は、日用品クラ
スの市販パーソナル・コンピュータに見られるもの以上
のハードウェアを必要としない、コンピュータ・デバイ
ス認証を可能にするシステムを提供することである。
【0007】本発明のもう1つの目的は、セキュリティ
・カーネルの実装での信頼の分析および確立の処理を容
易にするために、アプリケーションおよびオペレーティ
ング・システムの両方から別のドメインで動作する小さ
いセキュリティ・カーネルを提供することである。本発
明のもう1つの目的は、セキュリティ・カーネル機能を
要求するプログラムの認証性および保全性を確立するた
めに、オペレーティング・システム(OS)およびアプ
リケーション・プログラム(アプリケーション)のメモ
リにセキュリティ・カーネルがアクセスできるようにす
ることである。
【0008】
【課題を解決するための手段】上記および他の目的を達
成するために、本発明に、コンピュータ・デバイス認証
を提供するシステムおよび方法が含まれる。本発明は、
カーネルの実装での信頼の分析および確立の処理を容易
にすると同時に、前述のアドオン・ハードウェア解決策
の制限を除去する、小さいセキュリティ・カーネルを提
供する。理想的には、セキュリティ・カーネルは、ホス
ト計算機で稼働中のアプリケーション・プログラム(ア
プリケーション)およびオペレーティング・システム
(OS)の両方と別のドメインで、それでもOSおよび
アプリケーションのメモリにアクセスできる状態で動作
する。本発明は、伝統的な既存のオペレーティング・シ
ステムの境界内にあり、OSおよびアプリケーションの
保全性を検証でき、これらの代わりにセキュア・オペレ
ーションを実行することができる、小さい内側のセキュ
リティ・カーネルを作成することによって、そのような
セキュリティ・アーキテクチャを提供する。
【0009】本発明の鍵となる態様には、(1)スター
トアップ時にシステム管理モード(SMM)に移動さ
れ、その後、OARロックされた不揮発性メモリが使用
不能にされる、秘密マスタ鍵を含むOARロックされた
不揮発性メモリ(NVM)と、(2)デバイス鍵を特定
のアプリケーションにバインドし、プライバシ/ユーザ
・コントローラビリティ問題を解決するコンテナと、
(3)呼出し側アプリケーションの「オンザフライ」の
保全性のスポット検査が含まれる。
【0010】デバイス鍵は、ユーザ認証を補足するため
のデバイス認証の実行、特定のデバイスだけに配布され
る内容の保護、および/または、たとえば、ローカルに
保管されるかリモートに取り出される信任証(または共
有される信任証)を用いる、仮想スマート・カードの使
用可能化に使用される。鍵コンテナは、デフォルトのC
rypto(暗号)APIコンテナの代わりなどの、シ
ステム・クリティカル鍵に関する保護の強化に使用され
る。
【0011】マスタ暗号鍵を使用し、マスタ暗号鍵への
アクセスを保護する1つの例示的システムに、不揮発性
ストレージと、システム初期化処理であって、システム
初期化処理中に上記不揮発性ストレージから上記マスタ
鍵を読み取り、上記マスタ鍵から導出された機密値を隠
されたストレージ・ロケーションに書き込み、システム
初期化処理の次の開始まで、上記システム内で稼動する
すべてのプログラムによる上記不揮発性ストレージへの
アクセスを不能にするシステム初期化処理と、上記シス
テムの通常動作モードで稼動するプログラムによる上記
隠されたストレージ・ロケーションへのアクセスを防ぐ
手段と、上記システムの制限された動作モードで稼動す
るプログラムによる上記隠されたストレージ・ロケーシ
ョンへのアクセスを許可する手段とが含まれる。
【0012】マスタ暗号鍵をストレージ内に隠蔽するも
う1つの例示的システムに、不揮発性ストレージからマ
スタ鍵を読み取り、次のシステム・リセットまでアクセ
スがもう一度使用可能にならないように、上記不揮発性
ストレージへのアクセスを閉じ、上記マスタ鍵から導出
された機密データを隠されたアドレス・スペースに書き
込むパワーオン・ソフトウェアが含まれ、上記システム
の制限された動作モードで稼動するプログラムだけが、
上記隠されたアドレス・スペース内の上記機密データへ
のアクセスを有する。
【0013】所与のAppCodeDigestを有す
るアプリケーションへの暗号鍵の使用可能性を制限する
ことによって、アプリケーションに対してデータへの読
取および書込のアクセスを制御する例示的方法を提供す
る。この方法には、鍵と、上記アプリケーションがアク
セスを求める、封印された形または開封された形のデー
タを保持するAppContainerと、AppCo
deDigestを計算するために、呼出し側アプリケ
ーションを構成するバイトの部分の暗号ダイジェストを
実行するCryptoGateモジュールと、AppC
ontainerおよびAppCodeDigestを
検査し、上記アプリケーションが所与のAppCont
ainer内のデータを開封することを許可されるかど
うかを判定するために上記マスタ鍵を検査するか、デー
タを封印する時に保全性検査情報を追加するためにそれ
を変更する、保全性検査を含むCryptoEngin
eモジュールとが含まれる。
【0014】本発明は、特定のデバイス上のアプリケー
ションへの暗号鍵の使用可能性を制限することによって
上記アプリケーションに対してデータへのアクセスを制
御する方法も提供する。この方法は、CryptoEn
gineに既知の鍵と、上記アプリケーションがアクセ
スを求める、暗号的に封印された形のデータを含むアプ
リケーション・コンテナ・データ構造体と、Crypt
oGate機能であって、アプリケーションレベル・プ
ログラムと上記CryptoEngineとの間のすべ
てのアクセスをインターセプトし、暗号サービスまたは
データへのアクセスを試みているプログラムの実行可能
インメモリ・イメージのバイトの部分を検査する手段を
含み、上記アプリケーションのAppCodeDige
stを計算するために、呼出し側アプリケーションのイ
ンメモリ・イメージの上記バイトの部分の暗号ダイジェ
ストを計算するCryptoGate機能と、上記Cr
yptoEngineによって実行される保全性検査方
法であって、上記AppContainerおよびAp
pCodeDigestを検査し、上記アプリケーショ
ンが所与のAppContainerの上記データの開
封を許可されるかどうかを判定するために上記マスタ鍵
を検査するか、上記データを封印する時に上記保全性検
査情報を追加するためにそれを変更する保全性検査方法
とが含まれる。
【0015】本発明は、デバイス・オーソリティを含む
別のコンピューティング・マシンの助けを得て認証サー
バを含む別のコンピューティング・マシンに対して識別
されたデバイス上の識別されたアプリケーションを認証
する方法も提供する。この方法には、エンロールメント
方法(enrollment method)、登録方法、および認証方法
が含まれる。
【0016】エンロールメント方法には、a)デバイス
・オーソリティに送られる結果を作る上記デバイス上の
SMI中に実行される第1暗号オペレーションと、b)
上記デバイスによって受け取られる上記デバイス・オー
ソリティによって生成された値を処理する上記デバイス
上のSMI割込み中に実行される第2暗号オペレーショ
ンのステップが含まれる。
【0017】登録方法には、a)上記認証サーバに送ら
れる結果を作る上記デバイス上のSMI割込み中に実行
される第1暗号オペレーションと、b)認証方法中に使
用するために保管される暗号変数を作る上記認証サーバ
によって実行される第2暗号オペレーションと、c)上
記デバイスによって受け取られる上記認証サーバによっ
て生成された値を処理する上記デバイス上のSMI割込
み中に実行される任意選択の第3暗号オペレーションと
のステップが含まれる。
【0018】認証方法には、a)上記認証サーバに送ら
れる認証データを作る上記デバイス上のSMI割込み中
に実行される第1暗号オペレーションと、b)上記認証
の結果を判定するために、少なくとも上記登録方法中に
保管された上記暗号変数を使用して、上記デバイスから
受け取られた上記認証データに対して上記認証サーバに
よって実行される第2暗号オペレーションとのステップ
が含まれる。
【0019】本発明は、識別されたデバイス上の識別さ
れたアプリケーションを認証するか、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)を保管する。
【0020】本発明は、認証、プライバシ、保全性、許
可、監査、またはディジタル権利管理の目的でデバイス
上で1つまたは複数の仮想トークンを作成し、使用する
方法を提供する。この方法には、仮想トークンの種類ご
とのアプリケーションと、特定の種類の仮想トークンご
とのAppContainerと、CryptoEng
ineコンポーネントの暗号サービスを要求している呼
出し側アプリケーションのAppCodeDigest
を計算するCryptoGateコンポーネントとが含
まれる。
【0021】上記CryptoGateコンポーネント
が、1つまたは複数の長寿命の対称鍵を知る。上記Cr
yptoEngineが、CryptoGateコンポ
ーネントを介してアクセスされ、1つまたは複数の長寿
命の対称鍵および1つまたは複数の長寿命の公開鍵を知
り、AppContainerの暗号的封印および暗号
的開封を実行し、上記暗号オペレーションの一部が、S
MI割込み中に実行される。
【0022】上記CryptoGateコンポーネント
が、上記CryptoEngineにロードされた公開
鍵およびAppCodeDigest値を使用して、上
記アプリケーションのコードまたは静的データの一部の
ディジタル署名を検査することによって、上記呼出し側
アプリケーションの保全性を検査する。上記AppCo
deDigest値が、上記呼出し側アプリケーション
のインメモリ・イメージの部分の最近計算された暗号ハ
ッシュを含む。
【0023】上記CryptoGateおよび上記Cr
yptoEngineが、a)上記アプリケーション・
コンテナを開封する鍵を、上記マスタ鍵およびAppC
odeDigestおよび他の任意選択の情報から導出
し、b)上記AppContainerに対する上記メ
ッセージ認証コードを検査するのに上記導出された鍵を
使用し、上記メッセージ認証コードが正しい場合にエラ
ーを返し、c)上記AppContainerデータを
解読するのに上記導出された鍵を使用し、それを上記ア
プリケーションに返す。
【0024】本発明は、デバイスに関連するアプリケー
ションに秘密鍵を安全に関連付ける方法であって、上記
デバイスに関連する対称鍵によって保護される秘密鍵を
含むAppContainerを作成することを含む方
法も提供する。
【0025】本発明のさまざまな特徴および長所は、添
付図面と共に以下の詳細な説明を参照することによっ
て、より簡単に理解できる。添付図面では、同様の符号
が同様の構造要素を示す。
【0026】
【発明の実施の形態】本発明をよりよく理解するため
に、この説明で使用する定義を下に示す。
【0027】デバイスとは、オペレーティング・システ
ムの前に実行され、オペレーティング・システムの稼働
中にアクセス可能であるBIOSレイ・ソフトウェア環
境を含む、デスクトップ、ラップトップ、ハンドヘル
ド、または無線計算機などのコンピューティング・デバ
イスである。
【0028】デバイス・オーソリティには、デバイスの
セキュリティ機能を使用可能にするのを助ける1つまた
は複数のサーバ・コンピューティング・マシンが含まれ
る。
【0029】秘密マスタ鍵(SMK)は、デバイスに既
知であり、いくつかの実施形態で1つまたは複数のデバ
イス・オーソリティ・マシンに既知である暗号変数であ
る。これは、暗号鍵として暗号化または保全性検査に直
接に使用するか、他の暗号変数または暗号鍵を計算する
関数への入力として使用することができる。
【0030】AppCodeDigestまたはアプリ
ケーション・コード・ダイジェストは、プログラムの実
行可能インメモリ・イメージのプログラムおよび/また
は静的データのバイトの部分の一方向暗号変換である。
変換は、SHA1、MD5、RIPEMD160、SH
A−256、SHA−512、またはCBC−MACな
どの関数によって実行することができる。
【0031】AppKey(アプリケーション鍵)は、
暗号鍵として暗号化または保全性検査に直接に使用する
か、他の暗号変数または暗号鍵を計算する関数への入力
として使用することができる暗号変数である。その値
は、装置/アプリケーション対に固有であり、(少なく
とも)マスタ鍵およびAppCodeDigestから
導出される。
【0032】CustSecret(顧客秘密)は、デ
バイス上で稼働中であってもなくてもよいアプリケーシ
ョン・システムのあるコンポーネントによって選択され
る暗号変数である。これは、特定の企業の認証サーバに
関連し、その企業ドメインでそのアプリケーションにつ
いて許可される多数のデバイスに関連付けることができ
る。
【0033】CustAppKey(顧客アプリケーシ
ョン鍵)は、AppKeyおよびCustSecret
から導出される暗号変数であり、暗号鍵として暗号化ま
たは保全性検査に直接に使用するか、他の暗号変数また
は暗号鍵を計算する関数への入力として使用することが
できる。
【0034】AppContainerまたはアプリケ
ーション・コンテナは、CustAppKeyまたはA
ppKeyを使用して暗号的に封印または開封すること
ができるデータ構造体であり、封印オペレーションによ
って、プライバシおよび保全性検査が提供され、任意選
択として、コンテナを封印したアプリケーションの識別
に関する認証性が提供される。
【0035】CryptoEngine(暗号エンジ
ン)は、パワーオン・セルフテスト中およびCrypt
oGateを介してのみアクセス可能な保護された環境
で暗号オペレーションを実行し、高保全性公開鍵の保管
およびリコール、少なくとも1つの長寿命の対称鍵(S
MK)の保管、長寿命の対称鍵からの対称鍵の導出、対
称鍵暗号(保全性プリミティブおよびプライバシ・プリ
ミティブの両方)および公開鍵暗号の実行、擬似乱数生
成、任意選択としての秘密鍵暗号、および任意選択とし
ての、鍵生成、鍵のインポート、および鍵のエクスポー
トなどの他の暗号サポート機能を行うことができる。
【0036】CryptoGate(暗号ゲートキー
パ)は、アプリケーションレベル・プログラムとCry
ptoEngineの間のすべてのアクセスをインター
セプトし、暗号サービスまたはデータへのアクセスを試
みているプログラムの、プログラムの実行可能インメモ
リ・イメージおよび/またはその静的データのバイトの
部分を検査することができる。
【0037】AuthBuffer(認証バッファ)
は、特定のアプリケーションがCryptoGateお
よび/またはCryptoEngineによって提供さ
れるオペレーションの組を実行できるようにするデータ
構造体であり、このデータ構造体には、AppCode
Digestと、アプリケーションのコードおよび静的
データのうちでそのコード・ダイジェストに含まれる部
分を形成する部分の記述が含まれ、CryptoEng
ineによって検証できるディジタル署名が含まれる。
【0038】MAC(メッセージ認証コード)は、広く
知られてはいない暗号変数を必要とする形でメッセージ
のバイトの部分に対して計算されるメッセージまたはデ
ータ構造体の保全性の検査に使用される値である。これ
のための周知のアルゴリズムには、CBC−MAC、D
MAC、およびHMAC(MD5およびSHA1などの
周知のハッシュ関数に基づく)が含まれる。
【0039】SMI(システム管理割込み)は、ほとん
どのCPUによってサポートされる割込み機能であり、
これによって、BIOSレベルのソフトウェアが、CP
Uおよび、SMIモードの外で簡単には使用可能でない
永続的メモリ・アドレス・スペースへの排他的アクセス
を得ることができる。
【0040】本発明の高水準の設計を最初に説明する。
一般に、コンピュータ・デバイス認証システム10のア
ーキテクチャには、1つまたは複数のデバイス・オーソ
リティと、クライアント暗号エンジン(CryptoE
ngine)と、理想的にはBIOSを使用する、ロッ
クされた不揮発性メモリおよびシステム管理モード(S
MM)と、オペレーティング・システム・ドライバ(O
SD)と、使用可能にされたクライアント・アプリケー
ション(Apps)と、認証サーバ(PASS)と、使
用可能にされたサーバ・アプリケーションが含まれる。
【0041】オンライン・エンロールメント処理が、ク
ライアント・デバイスとエンロールメント・サーバの間
で行われる。トランザクション・レベル・アプリケーシ
ョン・プログラム・インターフェース(API)が、拡
張されたデバイス認証機能をクライアント・サーバ・ア
プリケーションに与える。システムは、オンライン・ク
ライアント/サーバ・アプリケーションとオフライン・
スタンド・アローン機能の両方のセキュリティ機能をサ
ポートする。
【0042】認証サーバは、すべての暗号対応サーバ・
アプリケーションのコンポーネントである。その主目的
は、セキュア・デバイス対応アプリケーションに関係す
る暗号機能を実行することである。これらの機能を実行
するために、認証サーバは、必要に応じて1つまたは複
数のデバイス・オーソリティ・サーバの援助を使用し
て、暗号対応クライアントと交換されるコンテナを封印
し、開封する。認証サーバは、鍵ID(KID)値のテ
ーブルを維持する。
【0043】デバイス・オーソリティ・サーバは、主
に、デバイス識別子および鍵の登録を扱う。いくつかの
実施形態では、デバイスの秘密マスタ鍵が、デバイスと
1つまたは複数のデバイス・オーソリティの間で共有さ
れる秘密である。この場合には、デバイス・オーソリテ
ィが、認証サーバおよび他のアプリケーション・サーバ
の代わりに、秘密マスタ鍵へのアクセスを必要とするす
べての暗号オペレーションを実行しなければならない。
【0044】本発明は、AppContainerのサ
ポートを提供する。デバイス・オーソリティは、認証サ
ーバにAppKeyPartを配送する。サーバは、A
ppContainerの作成を可能にするアルゴリズ
ムを実装する。このアルゴリズムは、秘密マスタ鍵(S
MK)およびAppCodeDigest(ACD)へ
のアクセスを必要とし、秘密マスタ鍵が保管される計算
機で呼び出される。デバイス・オーソリティは、クライ
アントPC上でアプリケーションを得る方法と、それを
オペレーティング・システム・ドライバに登録させる方
法を定義する。これは、最初のAppContaine
rがデバイス・オーソリティ・サーバによって作成され
る限り、どのサーバからもオンラインで行われる。
【0045】ユーティリティによって、アプリケーショ
ンのAppCodeDigestが作成される。これら
のユーティリティは、アプリケーションが稼動すると期
待されるものと同一のオペレーティング・システムで稼
動する。アプリケーションのAppCodeDiges
tは、データベース内で、アプリケーションに対する新
しいテーブルに保管される。AppCodeDiges
tは、AppContainerを生成するためにアク
セス可能である。公開鍵/秘密鍵対が、サーバのために
生成される。鍵対は、鍵生成ソフトウェアが理解する標
準規格を使用してインポートされ、エクスポートされ
る。データも、署名用の鍵対を使用して署名される。
【0046】さらに、標準的なパーソナル・コンピュー
タで使用可能なさまざまなハードウェア特徴を利用す
る、本発明で使用されるクライアント暗号エンジン(C
ryptoEngine)の複数の実施形態がある。
【0047】図1は、本発明の原理による、例示的なコ
ンピュータ・デバイス認証システム10のコンポーネン
トを示す簡略化されたブロック図である。本発明の好ま
しい実施形態には、リセット時オープン・ラッチ保護機
構(OARロック)14によって保護された不揮発性メ
モリ(NVM)11、BIOS ROMシステム初期化
モジュール12、および、システム管理割込み(SM
I)を介してシステムのオペレーションの通常モードか
らアクセスされるシステム管理モード(SMM)16が
含まれる。
【0048】保護されたNVM11は、秘密マスタ鍵の
保管に使用される。BIOS ROMシステム初期化モ
ジュール12は、保護されたNVM11から、SMM1
6からのみアドレス可能な保護されたメモリ領域である
SMRAM13に秘密マスタ鍵を安全に転送する責任を
負う。秘密マスタ鍵がSMRAM13に転送された後
に、BIOS ROMシステム初期化モジュール12
が、OARロック14を閉じて、次のシステム・リセッ
トまで、保護されたNVM11をそのシステムで稼動す
るプログラム15からアクセス不能にする。秘密マスタ
鍵は、システムの通常動作中には、隠れたSMM16で
のみ使用可能になる。
【0049】OARロック保護機構14は、保護された
NVM11が、起動時に稼動するBIOS ROMシス
テム初期化モジュール12以外のプログラム15によっ
て読み取られないようにする。保護されたNVM11を
読み取った後に、BIOSROMシステム初期化モジュ
ール12は、ラッチ14を閉じて、次のシステム・リセ
ットまで保護されたNVM11を完全にアクセス不能に
し、次のシステム・リセット時には、BIOS ROM
システム初期化モジュール12が制御を奪還する。
【0050】保護されたNVM11が使用可能でない時
の、これを使用することの代替案が、BIOS ROM
ブート・ブロック内に秘密マスタ鍵の共有を保管するこ
とであり、このBIOS ROMブート・ブロックは、
通常は、BIOS ROMシステム初期化モジュール1
2内でのシステム・スタートアップ時のパワーオン/セ
ルフテスト・オペレーションの後にシステムによってア
ドレス不能になるようにマッピングされるROMの16
Kバイトの領域である。さまざまなレベルの保証を有す
る。システム・スタートアップ後に一般にアプリケーシ
ョンからアクセス可能でなくなる、他のロケーションも
ある。
【0051】SMIモードは、追加の独自の特徴を有す
る、Intel x86互換プロセッサの特殊なモード
である。ソフトウェア・デバッガは、SMIモードでシ
ングル・ステップすることができず、SMIモードであ
る時を除いてSMIメモリを見ることはできない。この
モードは、計算機の通常動作中にクライアントPC上で
秘密マスタ鍵を隠蔽し、計算機の真正の識別にバインド
される必要があるさまざまなセキュリティ目的のために
秘密マスタ鍵を使用するのに使用される。
【0052】前述の特殊な特徴(BIOS ROMコー
ド、保護されたNVM11、およびSMM16)のどれ
もが、コンピュータ・デバイス認証システム10のオペ
レーションに絶対に必要ではないが、これらが一緒にな
って、コンピュータ・デバイス認証システム10に、セ
キュリティ・オペレーションの最高レベルの保証を与え
る。
【0053】代替のソフトウェアのみの実施形態では、
同一の機能性が、より低いレベルの保証と共に提供され
る。この場合のオペレーションの制限されたモードは、
標準の「リング0」オペレーティング・システム保護で
あり、この場合、CryptoEngine機能が、オ
ペレーティング・システム・ドライバと称するシステム
・デバイス・ドライバの内部で実施される。オペレーテ
ィング・システム・ドライバは、SMIモードで稼動す
るのではないので、BIOS拡張製品ほどセキュアでは
ない。したがって、特別な追加の修正技法および不明瞭
化(obfuscation)技法も、発見され、コピ
ーされることから秘密マスタ鍵を保護するために、製品
のソフトウェアのみの形態に含まれる。さらに、秘密マ
スタ鍵が、マザーボードではなくファイル・システムに
保管されるので、追加のデバイス検出をオペレーティン
グ・システム・ドライバに追加して、秘密マスタ鍵をパ
ーソナル・コンピュータにバインドする。
【0054】さらに、ソフトウェアのみのシステムが、
SMIモードで稼動しない実施形態では、コードに、リ
バース・エンジニアリングおよび「ハッキング」をより
困難にする目的の特殊な特徴が含まれる。
【0055】CryptoEngineのさまざまなソ
フトウェア形態では、さまざまな技術を使用して、秘密
マスタ鍵およびコア暗号オペレーションに関する最強の
可能な保護を提供する。
【0056】本発明は、秘密マスタ鍵とデバイスのバイ
ンディングを提供する。秘密マスタ鍵と計算機の間に関
連があり、その結果、秘密マスタ鍵を、ある計算機から
別の計算機に転送できないようになっている。この関連
は、計算機のメトリックスに基づき、ユーザが、秘密マ
スタ鍵を使用する能力を失わずに自分の計算機をゆっく
りとアップグレードできるようなっている。マスタ鍵
が、システム内の特定のハード・ディスク・ドライブに
バインドされている時には、ハード・ドライブの再フォ
ーマットまたは別のシステムとの交換によって、秘密マ
スタ鍵の使用が不可能になる。
【0057】本発明は、秘密マスタ鍵およびセッション
鍵の制限された露出(開示)を提供する。この設計で
は、どのオペレーションについても、秘密マスタ鍵およ
びセッション鍵を使用する時のそれらの露出が制限され
る。
【0058】本発明は、耐ハッキングを提供する。ソフ
トウェアCryptoEngineが、SMIメモリに
秘密マスタ鍵を隠蔽する能力またはBIOSで可能であ
るようにSMIモードでのコード・オペレーションを見
ることを使用不能にする能力を有することができるとい
う事実に起因して、ソフトウェアCryptoEngi
neコードでは、ハッキングを抑止するための追加の方
法が使用される。さらに、ソフトウェアCryptoE
ngineでは、一般的なプログラムが秘密マスタ鍵を
判定できなくする、秘密マスタ鍵を保管する技法が使用
される。
【0059】デバイス・オーソリティの概要をこれから
論ずるが、デバイス・オーソリティ・コンポーネント
は、下記の機能を実行する。デバイス・オーソリティ
は、デバイスをエンロールし、そのSMKmレジスタ・
アプリケーションを、アプリケーション/デバイス対に
固有のAppKeyを提供することによってデバイスに
保管する。デバイス・オーソリティおよびそれに伴うモ
ジュールを、ここで簡単に説明し、後で詳細に説明す
る。
【0060】クライアント・アプリケーションは、通常
はMicrosoft Windowsベースのパーソ
ナル・コンピュータ(PC)で稼動する、暗号対応アプ
リケーションである。クライアント・アプリケーション
を用いて、ユーザは、デバイスがエンロールされたかど
うかのテストと、デバイスのエンロールおよびその鍵I
Dの表示と、デバイス上のアプリケーションの登録と、
作成、編集、および削除を含むAppContaine
rの操作と、認証サーバへのAppContainer
のポストと、認証サーバからのAppContaine
rの取得と、デバイスのエンロール解除を行えるように
なる。
【0061】認証サーバは、クライアント/サーバ暗号
対応アプリケーションのサーバ部分のコンポーネントで
ある。認証サーバは、クライアントから来るものを認証
する責任を負う。認証サーバは、クライアント・デバイ
スから登録に関する要求を受け取り、アプリケーション
登録モジュールにAppKeyを要求し、それを保管
し、AppContainerを作成し、クライアント
・デバイスに送り、ユーザ・インターフェース(UI)
を介してAppContainerを操作(作成、編
集、封印、および開封)するためのUIを提供し、Ap
pContainerをクライアント・デバイスから受
け取る、ソフトウェア・コンポーネントである。
【0062】デバイス・オーソリティは、複数のコンポ
ーネントから構成され、少なくとも下記の機能性を有す
る。エンロールメント・モジュールは、デバイスをエン
ロールする要求を受け取る。このモジュールは、クライ
アントに秘密マスタ鍵の半分を渡し、残りの半分を生成
し、クライアント・デバイスに返す。アプリケーション
登録モジュールは、AppKeyの要求を受け取り、A
ppKeyを作成し、呼出し側に返す。
【0063】通常のユーザ経験をこれから説明する。す
なわち、デバイス・オーソリティを含むシステムをテス
トする時に実行されるとユーザが期待できるオペレーシ
ョンである。基本的な概念は、ユーザが、クライアント
・デバイスをエンロールし(デバイス・オーソリティの
エンロール・モジュールを用いて)、アプリケーション
を登録し、そのデバイスに対するAppContain
erを作成し、編集し、封印し、開封する(デバイス・
オーソリティのアプリケーション登録モジュールを用い
て)ことである。ユーザは、AppContainer
を認証サーバに送ることもでき、この認証サーバでは、
アプリケーション登録モジュールによって生成されたA
ppKeyを使用して、AppContainerを操
作することができる。認証サーバの機能性は、デバイス
・オーソリティによって使用可能にされる。
【0064】通常のセットアップは次の通りである。 クライアントPC<-->アプリケーション登録およびAp
pContainer 転送<-->PASSサーバ クライアントPC<-->エンロールメント<-->デバイス・
オーソリティ・サーバ 下に、システムを用いるためにユーザによって行われる
アクションを示す。
【0065】クライアントでのデバイス・エンロールメ
ントは、次の通りである。デバイスをエンロールするた
めに、ユーザは、クライアント・アプリケーションを使
用して下記のアクションを実行する。
【0066】ユーザは、エンロールメントについてテス
トする。すなわち、Test for enrollm
ent(エンロールメントに関するテスト)オプション
を使用して、デバイスが前にエンロールされていないこ
とを確認する。デバイスがエンロールされており、ユー
ザが再エンロールを望む場合には、アプリケーションで
Un−enroll(エンロール解除)オプションが選
択される。
【0067】ユーザは、デバイス・エンロール・オプシ
ョンを選択する。このオプションでは、エンロールメン
ト・サーバに連絡し、デバイスの秘密マスタ鍵を生成す
る。秘密マスタ鍵が、クライアントPCに返され、保管
される(保管される場所は、暗号システムのどのバージ
ョンが使用されるかに依存する)。ダイアログが表示さ
れ、デバイスがエンロールされたことが示される。
【0068】ユーザは、新しい秘密マスタ鍵が作成され
たことを、デバイス・オーソリティ・ログで検証する。
ユーザは、デバイス・オーソリティのエンロールメント
・ユーザ・インターフェースを使用して検査して、新し
い秘密鍵が作成されたことを示すことができる。
【0069】クライアントでのアプリケーション登録
は、次の通りである。次のアクションに進むために、ユ
ーザは、エンロールされたクライアント・デバイスを有
する必要がある。
【0070】ユーザが、登録を開始する。ユーザは、登
録を開始するために登録オプションを選択する。この時
点で、ユーザに、アプリケーションおよびデバイスの組
み合わせの識別子(ADID)についてプロンプトが出
される。
【0071】登録要求は、認証サーバを介してアプリケ
ーション登録モジュールに送られる。アプリケーション
登録モジュールは、AppKeyを生成し、これが認証
サーバに返される。
【0072】ユーザは、アプリケーション登録モジュー
ルのログを検査することができる。ユーザは、アプリケ
ーション登録モジュール・ユーザ・インターフェースを
使用して、AppKeyがアプリケーションについて生
成されたことを検査する。
【0073】ユーザは、登録について認証サーバのログ
を検査することができる。ユーザは、認証サーバが、現
在、デバイス上で稼動しているアプリケーションのイン
スタンスに関するAppKeyを有することを検査す
る。
【0074】ユーザは、クライアント・デバイス上で、
それが現在AppContainerを有することを検
証することができる。クライアント・デバイスのApp
Containerメニューを介して、ユーザは、自分
がAppContainerを有することの視覚的確認
を見る。
【0075】クライアントでのAppContaine
オペレーションは、次の通りである。以下は、ユーザが
AppContainerを用いてクライアント・デバ
イスで行うことができるものの議論である。登録の後
に、ユーザは、認証サーバによって作成された、デバイ
ス上の1つのAppContainerを有する。
【0076】クライアント側で提供されるオプションを
用いて、ユーザが、サーバにAppContainer
を送ることができ、下で説明する認証サーバにAppC
ontainerを要求することができる。これらのオ
プションの意図は、クライアントと認証サーバの間の通
常のトランザクションを説明する方法を提供することで
ある。説明の最良の方法は、例を用いることである。
【0077】ユーザは、自分のクライアントPC上の自
分の仮想現金入れ引出しに金を追加することを望む。現
在の収支が、AppContainerに保管される。
ユーザは、Cash Drawer(現金入れ引出し)
アプリケーションのAddCash(現金追加)オプシ
ョンを選択し、AppContainerが、共に、認
証サーバ(Cash Drawerプロバイダによって
運営される)で稼動するAddCashスクリプトに送
られる。AppContainerがオープンされ、デ
ータが変更され、ユーザに返され、このすべてが、おそ
らくは同一のトランザクションで行われる。
【0078】このシステムの一実施形態では、デバイス
・オーソリティ顧客が、クライアントと認証サーバの両
方で何がおきているかを見る能力を有し、自分でApp
Containerを操作し、自分のペースで自分自身
のデータを追加し、ログなどを調査して確認する。した
がって、AppContainerがサーバに送られ、
事前に定義されたデータが変更され、その後にクライア
ントに返される1つの原子的トランザクションではな
く、ユーザがクライアント・デバイスからこの作業を開
始できるようにする諸機能が提供される。ユーザは、ク
ライアント側でオプションを選択して、AppCont
ainerをサーバに送ることができる。ユーザは、そ
の後、サーバに行き、それがそこにあることを検査し、
それに含まれるデータを変更し、再封印する。ユーザ
は、その後、クライアントPCに戻り、AppCont
ainerをGETする。
【0079】本発明の好ましい実施形態では、サーバに
コンテナをプッシュさせるのではなく、クライアントが
データをプルする。
【0080】ユーザが、AppContainerのリ
スト、AppContainerの編集、認証サーバへ
のAppContainerの送信、認証サーバからの
AppContainerの取得、AppContai
nerの作成、およびAppContainerの削除
を行えるようにする、クライアント・アプリケーション
側のAppContainerメニューがある。
【0081】List AppContainers
(AppContainerをリストする)。すべての
AppContainersが、アプリケーションによ
って、クライアント・デバイスのデフォルト・ディレク
トリに保管される。ListAppContainer
sオプションを選択することによって、すべてのコンテ
ナを表示することができる(おそらくは、それを作成し
たアプリケーションを識別するデータと共に)。ユーザ
は、リスト内のAppContainerを強調表示
し、次の2つのオプションの1つを選択することができ
る。
【0082】Edit AppContainer(A
ppContainerを編集する)。アプリケーショ
ンは、AppContainerが現在封印されている
ことをユーザに警告し、その開封を試みるオプションを
与える。開封に成功する場合には、AppContai
nerの内容が、テキスト・ボックスに表示され、編集
可能になる。ユーザが、AppContainerのい
ずれかを変更し、そのAppContainerをクロ
ーズする場合に、ユーザに、AppContainer
を封印するオプションが与えられる。
【0083】Send AppContainer t
o the authentication serv
er(認証サーバにAppContainerを送
る)。ユーザは、AppContainerを認証サー
バに送る。これによって、ユーザが、認証サーバに行
き、AppContainerの操作を試みることがで
きるようになる。
【0084】Get AppContainer fr
om the authentication ser
ver(認証サーバからAppContainerを得
る)。ユーザは、認証サーバに特定のファイルを要求す
ることができる。
【0085】Create AppContainer
(AppContainerを作成する)。ユーザは、
自分自身のAppContainerを作成できなけれ
ばならない。ユーザがこのオプションを選択した時に、
上で説明したEdit AppContainerオプ
ションに類似する機能が使用可能になる。
【0086】Delete AppContainer
(AppContainerを削除する)。これは、暗
号機能ではないが、システムを整頓するのを助けるため
に使用可能である。
【0087】認証サーバ上でのAppContaine
rオペレーションを、これから説明する。認証サーバ
は、ユーザがさまざまな作業を実行できるようにする2
つのユーザ・インターフェース(AppKeysログお
よびAppContainers)を提示する。
【0088】AppKeysログは、AppKeyが要
求された時に何かが実際に起こっていることをユーザに
示すのに使用される。これを用いて、ユーザが情報に関
して何かを行うことはできない。これは、AppKey
要求が、識別子を有するクライアント・デバイスから受
け取られたことと、AppKeyが保管されたことを示
すログ・ビューアとすることができる。これは、日付/
時刻、要求元クライアント・デバイスのIPアドレス、
KID、結果のAppKeyなどの情報を示すことがで
きる。
【0089】AppContainersユーザ・イン
ターフェースは、クライアント・デバイス・アプリケー
ションのユーザ・インターフェースに類似するオプショ
ンを提供する。ユーザは、AppContainerの
リスト、AppContainerの作成、およびAp
pContainerの削除を行うことができる。
【0090】List AppContainers
(AppContainerをリストする)では、認証
サーバに保管されたすべてのAppContainer
が、それが属するアプリケーションの識別と共にリスト
される。AppContainerを選択すると、その
AppContainerの内容を編集する能力を提供
するもう1つのページが表示される。
【0091】Create AppContainer
(AppContainerを作成する)を使用して、
ユーザは、クライアント・デバイス用のAppCont
ainerを作成する(デバイスが、その後、それを要
求することができる)。Delete AppCont
ainer(AppContainerを削除する)機
能は、暗号機能ではないが、システムを整頓するのを助
けるために使用可能である。
【0092】エンロールメント・モジュールおよびアプ
リケーション登録モジュールは、要求されたマスタ鍵、
AppKeyなどに関する情報を提供するユーザ・イン
ターフェース/ログ・ビューアを有する。
【0093】暗号サーバの設計を、これから説明する。
サーバは、さまざまなコンポーネントの保護を容易にす
るために、その機能性を分割されている。主な発想は、
鍵が絶対にネットワークに出ないことである。
【0094】コンポーネントには、鍵、暗号ライブラ
リ、およびエンロールメント・コードが含まれる。鍵
(秘密マスタ鍵、サーバのPrivateKey)は、
暗号機能と鍵データベースを組み合わせたセキュア・ボ
ックスに保管されることが好ましい。暗号ライブラリ
は、認証サーバに、さまざまなコンテナに対する生のオ
ペレーション(enc、decなど)を実行するのに必
要なルーチンを与える。エンロールメント機能は、シス
テム内で最も機密性の高いデータである秘密マスタ鍵を
生成する。エンロールメント・コードは、秘密マスタ鍵
を保護し、これらを、エンロールするクライアント・デ
バイスに安全に配送する。
【0095】暗号サーバの論理的配置は次の通りであ
る。
【0096】ファイヤウォールおよびロード・バランサ
の背後にあるものは、次の通りである。 HTTPサーバ−Enrollment.protoc
olHandler(+containerクラス)を
実行するサーバ 許可されないトラフィックが鍵サーバによって受け取ら
れないようにするもう1つの論理的ファイヤウォールの
背後にあるものは、次の通りである。 Enrollment.getSmk(+contai
nerクラス)を実行する鍵DBおよびRSA−Bsa
fe Cryptoライブラリを有する鍵サーバ
【0097】暗号サーバには、コード署名用、通信用、
およびルート鍵という3つの秘密鍵が安全に保管され
る。ルート鍵は、新しい低位鍵に署名するのに使用され
る。これらの鍵は、スタートアップ時に暗号モジュール
がロードする暗号化されたファイルに保管することがで
きる。
【0098】各クライアントのエンロールメントと共に
生成される秘密マスタ鍵は、データベースに保管され
る。デバイス・オーソリティが、秘密マスタ鍵を生成す
る。このコードは、エンロールメントのサーブレット/
プロトコル処理部分からpubic(mkc(clie
ntSeed))を受け取る。
【0099】デバイス・オーソリティの基本的な必要な
機能性は、エンロールメント要求を処理することであ
る。enrollment.protocolHand
ler関数が、ネットワークからコンテナを入手し、そ
れらを暗号サーバに渡し、その結果、enrollme
nt.genSmkコードが、鍵情報を他者に露出せず
に作業を行えるようになる。
【0100】コンポーネントの詳細をこれから説明す
る。
【0101】エンロールメント。エンロールメントの処
理フローは次の通りである。 (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応答
としてクライアントに送る。
【0102】上記のフローは、単純な実施形態に関する
ものである。好ましい実施形態では、肯定応答サーブレ
ットが、クライアント応答を待ち(すなわち、SMKS
erverシードを成功裡に受信した)、その後、永久
的な秘密マスタ鍵についてデータベース・テーブルを更
新する。
【0103】モジュール・コンポーネントの詳細を、こ
れから説明する。
【0104】クライアント・アプリケーションは、通常
はMicrosoft WindowsベースのPC上
で稼動するアプリケーションである。このアプリケーシ
ョンは、暗号機能を使用するために、オペレーティング
・システム・ドライバによって呼び出されるカーネル・
モード・デバイス・ドライバにインターフェースする。
【0105】アプリケーションは、次の機能を提供す
る。初期化、エンロールメントのテスト、デバイスのエ
ンロール、デバイス上のアプリケーションの登録、Ap
pContainerのリスト、AppContain
erの編集、AppContainerの保存、認証サ
ーバへのAppContainerのポスト、認証サー
バからのAppContainerの入手、AppCo
ntainerの新規作成、およびデバイスのエンロー
ル解除。
【0106】初期化については、アプリケーションは、
呼び出された時に、自動的に下記を実行する。オペレー
ティング・システム・ドライバのロードと、登録された
アプリケーションとしてアプリケーションにセット・ア
ップさせるためのOsdRegisterApplic
ationの呼出し。
【0107】エンロールメントのテストでは、OsdG
etCapabilitiesの呼出しによって、返さ
れるCapabilitiesパラメータを検査して、
デバイスが既にエンロールされているかどうかを調べ、
デバイスがエンロールされているか否かを示すダイアロ
グを表示する。
【0108】デバイスをエンロールするには、OsdE
nrollGenerateRequestを呼び出し
て、封印されたPubKContainerを入手し、
デバイス・オーソリティのEnrollment UR
LにHTTP要求を送り、要求の本体でPubKCon
tainerを渡し、応答コードを検査して、オペレー
ションが成功したことを確認する。成功の場合には、返
された内容を、OsdEnrollProcessRe
sponseへの呼出しのMKContainerパラ
メータとして渡し、エンロールメントが成功であったか
否かを示すダイアログを表示する。
【0109】デバイス上のアプリケーションを登録する
には、OsdGetCapabilitiesを呼び出
し、返されるCapabilitiesパラメータを検
査して、デバイスが既にエンロールされているかどうか
を調べる。そうでない場合には、上で定義したようにデ
バイスをエンロールする。ユーザに、アプリケーション
/デバイスの組み合わせを識別する文字列(ADID)
を求めるプロンプトを出す。PubKContaine
rを作成し、これを登録に使用する。デバイス・オーソ
リティのRegisterApp URLにHTTP要
求を送り、要求の本体でPubKContainerお
よびADIDを渡す。応答コードを検査して、オペレー
ションが成功であったことを確認する。成功の場合に
は、結果のデータはAppContainerである。
そのAppContainerをデフォルト・ディレク
トリに保管する。
【0110】ユーザは、デフォルト・ディレクトリに保
管されたAppContainerを表示することがで
き、AppContainerを強調表示する能力を有
する。
【0111】クライアント・アプリケーションは、強調
表示されたAppContainerを編集する能力、
強調表示されたAppContainerを削除する能
力、強調表示されたAppContainerを認証サ
ーバに送る能力、およびAppContainerを新
規作成する能力を(メニュー・オプション、ボタンなど
を介して)提供する。
【0112】AppContainerを編集するに
は、まずAppContainerをUnseal(開
封)するが、これはOsdAppContainerU
nseal関数を呼び出し、AppContainer
ファイルの内容をpContainerBufferパ
ラメータに渡すことによって行われ、OsdAppCo
ntainerUnsealが不成功の場合にはエラー
・ダイアログを表示する。AppContainer構
造体を解析してDataフィールドを入手する。エディ
ット・ボックス内にAppContainerの内容を
表示して、ユーザがデータを変更できるようにする。A
ppContainerに対する変更を保存するか破棄
する能力を提供する。
【0113】AppContainerを保存するに
は、AppContainerを封印し、AppCon
tainer構造体を再構築し、OsdAppCont
ainerSeal関数を呼び出し、開封されたApp
Container構造体の内容をpContaine
rBufferパラメータで渡し、OsdAppCon
tainerSealが不成功の場合にはエラー・ダイ
アログを表示する。封印されたAppContaine
r構造体をファイルに保管する。
【0114】AppContainerを認証サーバに
ポストするには、HeresAnAppContain
erForYa関数のURLにHTTP要求を送り、要
求の本体で強調表示されたAppContainerフ
ァイルの内容を渡し、HTTP要求の状況を検査し、成
功または失敗に関するダイアログを表示する。
【0115】認証サーバからAppContainer
を入手するために、ダイアログ・ボックスを設けて、ユ
ーザが、サーバ側のダウンロードされるファイルを選択
できるようにし、HTTP要求をOiGiveMeAn
AppContainer関数のURLに送り、要求の
本体で要求されたAppContainerファイルの
内容を渡す。HTTP要求の状況を検査し、成功または
失敗に関するダイアログを表示する。ファイルが上書き
されようとしている場合には、元のファイルを上書きす
ることに関するプロンプトをユーザに出す。
【0116】AppContainerを新規作成する
には、既存のAppContainerファイルをオー
プンし、AppContainerを開封し、データブ
ロックを0にし、ユーザがデータを編集できるように
し、その後、Save AppContainer機能
に従う(ファイルを、ユーザによって指定される新しい
ファイル名として保存する)。
【0117】デバイスをエンロール解除するには、Os
dRegisterApplicationを呼び出し
て、アプリケーションに登録済みアプリケーションとし
てセット・アップさせ、OsdGetCapabili
tiesを呼び出して、返されるCapabiliti
esワードを検査して、デバイスが既にエンロールされ
ているかどうかを調べる。デバイスが既にエンロールさ
れている場合には、OsdInvalidateSMK
を呼び出す。
【0118】認証(PASS)サーバによって提供され
る機能性は、次の通りである。認証サーバは、デバイス
/アプリケーションの組合せを登録することができる。
クライアント・デバイスは、要求の本体にPubKCo
ntainerおよびADIDを含む要求を、OiRe
gisterMe関数のURLに送る。認証サーバは、
要求を送り、ARMサーバに転送する。ARMサーバ
は、AppKeyを生成し、返し、このAppKey
が、認証サーバによって、ADIDに対して保管されな
ければならない。その後、認証サーバは、新たに生成さ
れたAppKeyを使用してAppContainer
を作成し、クライアント・デバイスに送り返す。これに
よって、登録が完了する。上記のすべてが、クライアン
ト、認証サーバ、およびアプリケーション登録モジュー
ルの間の単一のトランザクションで行われる。
【0119】認証サーバは、ユーザ・インターフェース
を介してAppConrainerを操作する(作成、
編集、封印、および開封)ユーザ・インターフェースを
提供する。認証サーバは、ユーザがAppContai
nerを操作できるようにするユーザ・インターフェー
スを提供する。これは、HTMLと、Java(登録商
標)で記述されたコードを有するJavaサーブレット
を使用して、AppContainerの封印、開封な
どを行えるようにすることによって行うことができる。
クライアント上で稼動するアプリケーションのセクショ
ンでの定義に従って、List AppContain
ersおよびEdit AppContainersを
行うためにページが必要である。
【0120】認証サーバは、クライアント・デバイスか
らAppContainerを受け取ることができる。
クライアント・デバイスは、AppContainer
を認証サーバに送ることを可能にする機能を有する。こ
れが発生することを可能にするために、エントリ・ポイ
ントが認証サーバ側に存在する。これは、入力ストリー
ムを読み取り、データをファイル名と共にファイルに保
管するサーブレットを使用するか、さらに簡単に、認証
サーバ上でHTTPのPUTメソッドを使用可能にする
ことによって、行うことができる。
【0121】コンテナおよび鍵をこれから説明する。コ
ンテナは、情報を保持するのに使用される構造体であ
る。この情報は、署名するか、暗号化するか、その両方
を行うことができる。セキュリティを高めるために、さ
まざまなタイプのコンテナが使用可能である。これらの
コンテナの一部は、署名されたデータだけに使用され
る。一部のコンテナは、暗号化されたデータを保持す
る。暗号化されたコンテナ内であっても、それらは、使
用された暗号化アルゴリズムに依存する複数のサブタイ
プである。コンテナには4つの種類がある。
【0122】SignedContainerは、秘密
鍵(署名側の鍵対からの)によってディジタル署名さ
れ、揃いの公開鍵(クライアント側では公開鍵がROM
/フラッシュに保管される)を用いて検証することがで
きるデータを保持する。これらは、認証されたデータを
デバイス・オーソリティ・サーバからクライアント計算
機に送り、ソフトウェア・モジュールがデバイス・オー
ソリティ・クライアント・サービスを使用することを許
可するのに使用される。
【0123】AppContainerは、特定の計算
機で稼動する特定のアプリケーション・プログラムによ
ってのみ読取または書込が可能である保護されたコンテ
ナである。これらのコンテナでは、それを封印したプロ
グラムが識別され、別のプログラムがコンテナを開封す
ることを許可することが可能であり、したがって、これ
らのコンテナは、安全な形のプロセス間通信として使用
することもできる。ウィルス変更、ソフトウェア・ライ
センス交付、およびセキュア・ウォレットなどの高水準
セキュリティ機能性は、AppContainerの上
で構築することができる。一般に、AppContai
nerは、暗号化用の秘密マスタ鍵の導出物を使用する
ことによって、所与の計算機にバインドされる。
【0124】PubKContainerは、RSA公
開鍵(通信鍵対からの)を用いてクライアント(OS
D)によって封印され、揃いの秘密鍵を有する受信側
(一般にデバイス・ドライバ・オーソリティ・サーバ)
によってのみ読み取ることができる、ディジタル封筒で
ある。これらは、エンロールメント中およびクライアン
トと認証されたデバイス・オーソリティ・サーバとの間
の暗号化されたチャネルのセット・アップのために使用
される。このコンテナの内部のデータは、オペレーティ
ング・システム・ドライバによってランダムに生成され
る128ビットc暗号鍵(この製品内ではマスタ鍵とも
称する)を用いて暗号化される。RC6鍵(マスタ鍵)
およびクライアントの鍵ID(KID)は、受信側の公
開鍵(サーバの通信PubKey)を用いて暗号化され
る。
【0125】MKContainerは、このコンテナ
を書くものと読むものに既知のマスタ鍵(クライアント
によって作成されPubKContaine内で送られ
る)に基づくディジタル封筒の一部として使用される。
これらは、マスタ鍵がPubKContainerを介
してサーバに送られた後に、クライアントとデバイス・
オーソリティ・サーバの間の安全な通信に使用すること
ができる。これらは、クライアント計算機でデータをロ
ーカルに保護するのに使用することもできる。
【0126】これらのコンテナ構造体は、それらに対し
て実行することができる事前に定義されたオペレーショ
ンの組を有する。このオペレーションが、封印および開
封である。
【0127】封印は、暗号化なしの署名とすることがで
きる(卒業証書に大学の封印があるが、誰もが卒業証書
の内容を読むことができるのと同様に)。封印は、暗号
化とすることもできる(ある賞の勝者を含む封筒が封印
され、その結果、開封しなければ誰も内容を見られない
のと同様に)。
【0128】開封は、封印オペレーションを逆転するこ
とである。これは、封印がオリジナルであることを検証
することとすることができる(ほとんど再生不能であ
り、検証することができる特徴である、卒業証書の封印
と同様に)。開封は、隠された内容の露出とすることも
できる(勝者の場合には、隠された内容に達することが
かなり簡単である)。
【0129】各コンテナ構造体を、下で説明する。コン
テナ構造体を、その開封された版で示し、その後、封印
オペレーションを説明する。その後、封印された構造体
を示し、開封オペレーションを説明する。オペレーショ
ンがなんらかの理由で失敗した場合には、コンテナが0
クリアされる。
【0130】下記のリストに、本発明によって提供され
る機能を明細に記す。小さい組のコンテナ・タイプによ
って、a)通信セキュリティ、b)システム保全性、お
よびc)アプリケーション固有の保護されたコンテナが
サポートされる。本発明によって提供される機能を用い
ると、特定のデバイス上でのみ意味を持つデータ・コン
テナまたはコマンドの作成を可能にするためにクライア
ントとデバイス・オーソリティ・サーバの間で秘密マス
タ鍵を作成し、ユーザではなくプログラムの識別に基づ
いてデータへのアクセスを制御し、許可されたデバイス
・オーソリティ・サーバから来る情報を認証し、特定の
デバイスから来る情報を認証し、タンパ・プルーフな秘
密を保つ必要があるアプリケーション・プログラムの保
護された実行環境をサポートし、特定のプログラムによ
ってのみ上書きすることができるデータ・ストレージ区
域をサポートすることができるようになる。
【0131】本発明の設計の概要を、これから説明す
る。保護されたコンテナは、低水準BIOSコードおよ
びOSレイヤ・ドライバ(OSD)コード(たとえばW
in98のVxD)によって実装される。BIOSコー
ドの一部は、システム管理割込み(SMI)を介して呼
び出されるルーチンによって使用される、システム管理
メモリ(SMM)内の情報をセット・アップするため
に、POST中に稼動する。SMIルーチンは、フラッ
シュROMからの公開鍵を使用するRSAオペレーショ
ンを実行し、したがって、これは、タンパリングが非常
に困難である。SMIルーチンは、そのデバイスとデバ
イス・オーソリティ・サーバに既知の秘密のRC6鍵で
ある秘密マスタ鍵の隠蔽および管理も行う。暗号プリミ
ティブが、この単一の128ビットマスタ鍵から複数の
鍵を導出し、各鍵は、単一の目的に使用される。SMI
ルーチンは、その呼出し元を認証し、許可されたオペレ
ーティング・システム・ドライバ・モジュールに関する
サービスだけを実行する。
【0132】すべてのクライアントが、サーバの公開鍵
を知っており、したがって、サーバがメッセージに署名
したことを検証することができる。というのは、サーバ
が、揃いの秘密鍵を知っている唯一の存在だからであ
る。秘密マスタ鍵は、各デバイスに一意であり、そのデ
バイスとサーバだけに既知である。メッセージが、秘密
マスタ鍵によって正しく保護される場合には、そのメッ
セージは、サーバまたは一意の秘密マスタ鍵を有するク
ライアントのいずれかから来たものでなければならな
い。クライアントは、秘密マスタ鍵のSHA1ダイジェ
ストである20バイトの鍵識別子を使用して、それ自体
を識別する。SHA1関数は、鍵IDを知ることが、攻
撃者が秘密マスタ鍵を見つけるのを助けず、可能なすべ
てのマスタ鍵を試して、観察された鍵IDが作られるか
どうかを調べる以外にないという意味で、一方向であ
る。この手法が実用的になるためには、秘密マスタ鍵の
値が多すぎる(2の128乗)。
【0133】AppContainerは、秘密マスタ
鍵の助けを借りて保護される。各コンテナは、秘密マス
タ鍵およびコンテナを所有するプログラムのコードのダ
イジェストの関数である鍵を用いて暗号化される。この
設計では、SMIレベル・コードが、コンテナを作成し
たプログラム用のコンテナだけを開封することが保証さ
れる。デバイス・オーソリティ・サーバは、特定の計算
機上の特定のプログラムの最初のコンテナの作成に関係
しなければならない。
【0134】中水準オペレーティング・システム・ドラ
イバ・コードは、コンテナ抽象化をサポートし、SMI
ルーチンには不可能なオペレーションを実行する。たと
えば、SMIルーチンは、ページ・フォールトを扱うこ
とができないので、オペレーティング・システム・ドラ
イバ・ルーチンが、SMIルーチンを呼び出す前に、ロ
ックされたメモリにパラメータをコピーしなければなら
ない。オペレーティング・システム・ドライバ・ルーチ
ンは、SMIルーチンよりも長い時間期間にわたって稼
動することもできる。
【0135】コンテナ機能をサポートするオペレーティ
ング・システム・ドライバを、WDLの一部としてシー
ケンサによってダウンロードすることができる。WDL
のインストールおよび初期化の処理には、保護されたコ
ンテナに必要なマスタ鍵のセット・アップが含まれる。
【0136】このリリースでセキュリティ特徴をサポー
トするのに使用されるプロトコルは、この文書で説明す
る4種類のコンテナに大きく頼る。たとえば、マスタ鍵
を作成するエンロールメント・プロトコルは、デバイス
・オーソリティ・サーバとのこれらのコンテナの交換に
基づく。
【0137】このシステムでは、クライアントシステム
自体およびクライアントとデバイス・オーソリティ・サ
ーバの間の両方で、プログラムおよびデータのプライバ
シ、保全性、および認証を提供するのに暗号鍵が使用さ
れる。存在する鍵と、信頼およびセキュリティを確立す
るための鍵の使用法をこれから説明する。
【0138】公開鍵/秘密鍵対が、本発明で使用され
る。公開鍵/秘密鍵対は、特定のクライアント・システ
ムに関連する必要がないデータを安全にやり取りするの
に使用される。これらは、主に、あるクライアントから
デバイス・オーソリティ・サーバにおよびその逆に転送
されるデータが、真正であることを保証するのに使用さ
れ、データがプライベートである(暗号化される)こと
を容易にする。これらの鍵は、製造時にROMに含めら
れる。
【0139】デバイス・オーソリティ・サーバは、3つ
のRSA鍵対の秘密鍵を保持し、これらの秘密鍵は、異
なる目的に使用され、サーバ環境の異なる場所に保管さ
れる。クライアント・システムは、これらの鍵対の公開
鍵を保持し、ROMに保管される。標準の(強い)暗号
について、これらの鍵対のそれぞれの1024ビット版
が使用される。3つの鍵対は次の通りである。
【0140】ルート鍵対。秘密鍵は、インターネットに
接続されていない、デバイス・オーソリティによって制
御される計算機に保管される。揃いの公開鍵は、クライ
アント計算機のROMに保管される。秘密ルート鍵は、
新しい公開鍵に署名するのに使用され、この公開鍵が、
古い公開鍵と置換するためにクライアント計算機に送ら
れる。ROM内の古い鍵を置換する方法は、この文書の
範囲外である。これらのルート鍵は、頻繁には使用され
ない。公開鍵は、署名されたコンテナと共にクライアン
ト計算機で使用される。
【0141】サーバ通信鍵対。これは、封入鍵対とも呼
ばれ、動的データ署名に使用される。秘密鍵は、デバイ
ス・オーソリティ・サーバに保管され、クライアントと
のセキュア通信を確立するのに使用される。秘密鍵は、
クライアントによって送られた鍵(および他のデータ)
を開封するか、クライアントによって検証される動的に
作成されたメッセージに署名するのに使用することがで
きる。これは、PubKContainerと共に使用
される。すべてのクライアントが、そのBIOS RO
Mに保管された揃いの公開鍵のコピーを有する。
【0142】署名用鍵対。この秘密鍵は、インターネッ
トから直接にアクセス可能でないデバイス・オーソリテ
ィ署名計算機に保管される。秘密鍵は、ダウンロードさ
れたファイル(プログラムおよび構成データ)に署名す
るのに使用され、このダウンロードされたファイルは、
その後、デバイス・オーソリティ・サーバに配置され、
最終的にクライアント計算機に送られる。すべてのクラ
イアント計算機が、揃いの公開鍵を有し、したがって、
秘密鍵によって作成された署名を検証することができ
る。署名用鍵対は、ソフトウェア・コンポーネントの新
しいリリースなどの静的情報を強く認証するのに使用さ
れる。秘密鍵は、インターネットからアクセス可能では
ないので、保護が簡単である。
【0143】公開鍵は、クライアント・システム内で、
署名されたコンテナと共に使用される。上記のオペレー
ションのすべてについて1つの鍵対だけを使用すること
が可能である。しかし、異なる目的に複数の鍵対を使用
することは、攻撃がシステム全体を成功裡に破壊する可
能性を減らす、安価で簡単な方法である。
【0144】秘密鍵。下記の鍵は、暗号化と解読の両方
に同一の鍵が使用されるという点で、対称鍵である。
【0145】マスタ鍵は、暗号化/解読に使用される対
称鍵の作成の基礎として使用される。これらの鍵は、一
般に、クライアントとサーバの間の単一の通信中に使用
される。これらは、セッション鍵と同等である。
【0146】秘密マスタ鍵は、特定のクライアント・シ
ステムに関連する必要があるデータを安全にやり取りす
るのに使用される。秘密マスタ鍵は、一意であり、クラ
イアント・システムを認証するのに使用される。秘密マ
スタ鍵は、クライアント・システムを一意に識別するの
で重要である。これは、暗号化/解読アルゴリズムで使
用される他の対称鍵の作成の基礎として使用される。秘
密マスタ鍵は、エンロールメント処理中にデバイス・オ
ーソリティ・サーバによって作成され、クライアントに
送られる。
【0147】マスタ鍵は、デバイス・オーソリティ・サ
ーバおよびクライアント・システム上の暗号ROMコン
ポーネントのみによってアクセス可能である。ROMコ
ンポーネントは、システム管理モード(SMM)で稼動
し、このSMMは、ソフトウェア・デバッガによってト
レースすることができない、x86プロセッサの特殊な
モードである。
【0148】秘密マスタ鍵は、クライアント・システム
上で、AppContainerの封印および開封に使
用される。秘密マスタ鍵は、1つの計算機にバインドさ
れ、転送可能であってはならない(最初にデバイス・オ
ーソリティ・サーバに転送され、その後、別のクライア
ントに転送される場合を除く)。秘密マスタ鍵は、絶対
に通常のシステム・メモリ内で露出されてはならない。
したがって、秘密マスタ鍵は、ハッカーによって取り込
まれ別の計算機に転送される可能性がある、オペレーテ
ィング・システム・ドライバ・レベルに絶対に渡されて
はならない。AppContainerの封印および開
封のオペレーションは、厳密にSMM内で実行されなけ
ればならない。他のすべての封印および開封のオペレー
ションは、オペレーティング・システム・ドライバ・レ
イヤによって実行することができる。
【0149】鍵識別子(KID)は、秘密マスタ鍵の1
方向SHA−1ダイジェストである。鍵IDは、クライ
アントからサーバに送られるメッセージでクライアント
を識別するのに使用される。クライアントからのメッセ
ージのヘッダに、鍵IDが含まれ、サーバが、その鍵I
Dを使用して、秘密マスタ鍵データベース・テーブルを
インデクシングして、そのクライアントのマスタ鍵に対
する対称鍵を見つけ、この対称鍵を使用して、メッセー
ジの残りを解読するのに必要な鍵を導出する。エンロー
ルメント処理でまだ秘密マスタ鍵が割り当てられていな
い時には、真の秘密マスタ鍵によって置換されるまで、
秘密マスタ鍵を一時的な乱数値に置換する。
【0150】ある個数の導出された鍵が、秘密マスタ鍵
および他のマスタ鍵に基づいて生成される。鍵を導出す
るプリミティブによって、これらの導出された鍵が、下
で説明する鍵使用法値に基づいてどのように生成される
かが示される。
【0151】鍵使用法値。この節では、この設計の一部
である鍵使用法値を列挙する。これらの値は、NewK
ey()関数、Enc()関数、およびDec()関数
と共に使用される。これらの関数は、さまざまなコンテ
ナの封印中および開封中に使用される。使用法は、クラ
イアントとサーバについて異なる(これによって、再生
攻撃および自己再生攻撃が複雑になる)。
【0152】使用法名 コメント UsageAppCodeDigest これは、A
ppContainerのAppCodeDigest
フィールドの暗号化鍵を作成するのに使用される UsageAppEncServer これは、サー
バによって作成されるAppContainerの暗号
化鍵を作成するのに使用される UsageAppEncClient これは、クラ
イアントによって作成されるAppContainer
の暗号化鍵を作成するのに使用される UsageAppMacServer これは、サー
バによって作成されるAppContainerのHM
AC鍵を作成するのに使用される UsageAppMacClient これは、クラ
イアントによって作成されるAppContainer
のHMAC鍵を作成するのに使用される UsageMKEncServer これは、サーバ
によって作成されるMKContainerの暗号化鍵
を作成するのに使用される UsageMKEncClient これは、クライ
アントによって作成されるMKContainerの暗
号化鍵を作成するのに使用される UsageMKMacServer これは、サーバ
によって作成されるMKContainerのHMAC
鍵を作成するのに使用される UsageMKMacClient これは、クライ
アントによって作成されるMKContainerのH
MAC鍵を作成するのに使用される
【0153】AppContainerで使用される鍵
は、3つの部分に分割される。AppContaine
rの重要な特徴の1つが、それらを作成するのに使用さ
れるAppKey()が、秘密マスタ鍵(すなわち、ク
ライアント・デバイスの一意の識別子)とアプリケーシ
ョン・コード・ダイジェスト(すなわち、コンテナを
「所有」するソフトウェアの一意の識別子)の両方の関
数であることである。AppContainerは、特
定のデバイス上の特定のアプリケーションにバインドさ
れる。鍵の最後の部分は、デバイス・オーソリティに既
知ではなく(秘密マスタ鍵と異なる)、一般公衆にも既
知ではない(アプリケーション・コード・ダイジェスト
と異なる)。この最後の部分を、CustomerSe
cretと称する。その鍵のどの値でも、AppCon
tainerの封印に使用することができる。しかし、
強い128ビット乱数値(秘密マスタ鍵と同一の強さ)
を使用することが推奨される。
【0154】CustomerSecret部分を用い
ると、会社が、異なるアプリケーション・コード・ダイ
ジェストを作る、アプリケーションの新しいビルドを入
手する必要なしに、危険にさらされたアプリケーション
・コンテナを破棄できるようになる。また、このCus
tomerSecretを用いると、デバイス上のアプ
リケーション(たとえば、セキュア・ログオン・アプリ
ケーション)の所与のインスタンスが、一つ以上のサー
バと安全にデータを共有できるようになる。各サーバ
は、同一デバイス上の同一アプリケーションについて、
一意のCustomerSecretをセットアップす
るはずである。したがって、封印されたAppCont
ainerは、正しいCustomerSecretが
提供された場合に限って解読することができる。
【0155】CustomerSecretは、特定の
クライアント・アプリケーションと、そのクライアント
・アプリケーションが接続される多数のサーバの1つと
の間で共有されることを意図されている。
【0156】デバイス・オーソリティ・サーバが、その
デバイス・オーソリティにエンロールされたデバイスの
AppKey値のリストをソフトウェアの特定のベンダ
に与えることによって、AppContainerを作
成する権限をそのベンダに委譲することが可能である。
AppKeyは、秘密マスタ鍵およびアプリケーション
・コード・ダイジェストの暗号的一方向関数であり、し
たがって、ベンダが他のアプリケーション用のコンテナ
を作成できるようにせずに、また、ベンダが所与のデバ
イスのマスタ鍵を見つけることが簡単にならずに、ベン
ダにこれらの鍵を与えることができる。
【0157】コンテナのオペコードおよびフォーマット
をこれから説明する。すべてのコンテナが、オペコード
・バイト(コマンド・タイプまたはメッセージ・タイ
プ)、フォーマット・バイト、および、それに続く内容
の長さワード(16ビット)を含む共通の4バイト・ヘ
ッダを有する。フォーマット・バイトは、コンテナの4
つのタイプのどれが存在するかを示し、したがって、低
水準ルーチンが、どの種類の暗号オペレーションを実行
する必要があるかを知る。フォーマット・バイトは、将
来のリリースで暗号アルゴリズムが変更された場合に、
変更されるはずである。オペコード・バイトは、コンテ
ナの内部の高水準データの種類を表す。低水準ルーチン
が、オペコード値の一部を使用する(たとえば、エンロ
ールメント・プロトコル中に使用されるコンテナの場
合)が、ほとんどは、高水準コードまたは将来のリリー
スによる使用のために使用可能である。長さフィールド
は、コンテナに属するバイトの数(ヘッダの後の)を識
別する。ヘッダは暗号化されないが、すべてのコンテナ
の一部である暗号チェックサムによって保護される。
【0158】このセクションでは、定義されたコンテナ
・オペコードと、そのオペコードを有するコンテナのフ
ォーマットとを列挙する。現リリースでは各オペコード
は特定のコンテナ・フォーマットを意味するが、これは
将来変更することができる。オペコード・フィールドと
フォーマット・フィールドの両方があるのは、コードの
階層化を単純にし、暗号アルゴリズムのスイートを将来
変更できるように、または特定のオペレーションに必要
なデータの内容を変更できるようにするためである。
【0159】フォーマット・バイトは、以下の値の1つ
を有することができる。 フォーマット・コード 値 記述 FmtSignedContainer 1 コンテナはSigned Containerであ る FmtAppContainer 2 コンテナはApp Containerである FmtPubKContainer 3 コンテナはPubK Conteinerである FmtMKContainer 4 コンテナはMK Containerである
【0160】以下はオペコードの値である。 オペコード名 値 OPC_OSD_AUTHORIZATION 0x01 OPC_OSD_ALLOW_TRANSFER 0x02 OPC_MK_KEY 0x03 OPC_INITIAL_APP_CONTAINER_FROM_SERVER 0x04 OPC_CUSTOM_APP_CONTAINER_DATA 0x05 OPC_CHALLENGE_RESPONSE_FROM_CLIENT 0x06 OPC_SMK_ENROLL_REQUEST_OUTER 0x07 OPC_NEW_CONNECTION 0x08 OPC_SMK_ENROLL_REQUEST_INNER 0x09 OPC_SMK_ENROLL_RESPONSE 0x0a OPC_CLIENT_TO_SERVER_WRITE 0x0b OPC_SERVER_TO_CLIENT_WRITE 0x0c OPC_CHALLENGE_REQUEST_FROM_SERVER 0x0e
【0161】ここで、SignedContainer
に対するオペコードについて論じる。SignedCo
ntainerは、秘密鍵(署名鍵の対からの)でディ
ジタル署名されたデータを保持し、合致する公開鍵で検
証することができる(公開鍵はクライアント側でROM
に記憶してある)。これらは、デバイス・オーソリティ
・サーバからクライアント・マシンに認証済みデータを
送り、クライアント・サービスの利用をソフトウェア・
モジュールに許可するのに使用する。
【0162】オペコード:OpcOsdAuthori
zation コンテナ:FmtSignedCont
ainer このコンテナは、オペレーティング・システム・ドライ
バ・セキュリティ・モジュール中の関数の全部または一
部を使用することをプログラムに許可するのに使用す
る。このコンテナのデータ部分には、以下のフィールド
がある。 フィールド 長さ 記述 NStartOffset 4バイト 呼出しコードの開始オフセット NEndOffset 4バイト 呼出しコードの終了オフセット CodeDigest 20バイト 呼出しコードのコード・ダイジェスト PrivilegeBitVector 8バイト 特権ビット・フィールド。このベクトルは、 アプリケーションがどの関数を呼び出すことができるかを示す。
【0163】オペコード:OpcOsdAllowTr
ansfer コンテナ:FmtSignedCont
ainer このコンテナは、AppContainerをこのマシ
ン上の別のアプリケーションに転送することをプログラ
ムに許可するのに使用する。このコンテナのデータ部に
は、以下のフィールドがある。 フィールド 長さ 記述 CallersAppCodeDigest 20バイト 呼出し元のACD RecipeintsAppCodeDigest 20バイト 受信側のACD
【0164】オペコード:No OpcBiosAut
horization No FmtSignedC
ontainer これはコンテナではないが、サーバの秘密署名鍵によっ
て暗号化されるいくつかのバイトである。これらはどん
な種類のコンテナにも記憶されない。これらのバイト
は、オペレーティング・システム・ドライバがBIOS
RegisterOSD()関数を使用してそれ自体を
BIOSに登録するときに使用する。 フィールド 長さ 記述 NStartOffset 4バイト 呼び出しているコードの開始オフセット NendOffset 4バイト 呼び出しているコードの終了オフセット CodeDigest 20バイト オペレーティング・システム・ドライバのコ ード・ダイジェスト
【0165】次に、AppContainerに対する
オペコードについて論じる。AppContainer
は、特定のアプリケーション・プログラムからしか読取
りまたは書込みができない保護されたコンテナである。
これらのコンテナは、これらを封印したプログラムを識
別し、別のプログラムがコンテナを開封できるようにす
ることが可能である。したがって、これらは安全な形の
プロセス間通信として使用することもできる。AppC
ontainerの最上部には、ウイルス変更の検出、
ソフトウェア・ライセンス供与、セキュア・ウォレット
など、高レベルのセキュリティ機能を構築することがで
きる。一般に、AppContainerは、暗号化用
マスタ鍵の派生物を使用して所与のマシンに結び付けら
れる。
【0166】オペコード:OpcMKKey Fmt
AppContainer このコンテナは、MKContainerオペレーショ
ンで使用できる鍵を保持する。このコンテナは通常、P
ubKContainerの生成中にOsdPubKc
ontainerSeal()によって返される。この
コンテナはMKContainerオペレーションに必
要である。
【0167】オペコード:OpcInitialApp
ContainerFromServer コンテナ:
FmtAppContainer このコンテナは空であり、アプリケーションが他のAp
pContainerを生み出すためのテンプレートと
して使用する。この中にある唯一の重要なフィールド
は、暗号化されたAppCodeDigestである。
sealerscode digestフィールドはこ
の場合ヌルである。このAppContainerを封
印するのに使用されるCustomerSecretの
ビットはすべて0である。
【0168】オペコード:OpcCustomAppC
ontainerData コンテナ:FmtAppC
ontainer このコンテナは空であり、アプリケーションが他のAp
pContainerを生み出すためのテンプレートと
して使用する。この中にある唯一の重要なフィールド
は、暗号化されたAppCodeDigestである。
【0169】オペコード:OpcChallengeR
esponseFromClient コンテナ:Fm
tAppContainer このコンテナは、クライアントからサーバへのチャレン
ジ・レスポンスを保持する。これは、サーバのチャレン
ジ乱数(Rs)を保持する。このコンテナは、OpcC
hallengeRequestFromServer
を伴うMKContainerに応答して使用する。 フィールド 長さ 記述 Rs 16バイト サーバから提供される128ビットのランダムな値。 または、エンロールメントに対する確認として使用する
ときはKID‖MK。
【0170】次に、PubKContainerに対す
るオペコードについて論じる。PubKContain
erは、クライアント(OSD)がRSA公開鍵(通信
鍵の対からの)で封印し、受信側(一般にデバイス・オ
ーソリティ・サーバ)だけが合致する秘密鍵で読むこと
のできるディジタル封筒である。これらは、エンロール
メント中に、クライアントと認証されたデバイス・オー
ソリティ・サーバとの間に暗号化されたチャネルをセッ
トアップするのに使用する。このコンテナの内部のデー
タは、オペレーティング・システム・ドライバによって
ランダムに生成される128ビットのRC6暗号鍵(こ
の製品の内ではマスタ鍵とも呼ばれる)で暗号化され
る。RC6鍵(マスタ鍵)およびクライアントの鍵ID
(KID)は、受信側の公開鍵(サーバの通信公開鍵)
で暗号化される。
【0171】オペコード:OpcSMKEnrollR
equestOuter コンテナ:PmtPubKC
ontainer このコンテナは、エンロールメント中に使用する。
【0172】オペコード:OpcWDLNewConn
ection コンテナ:FmtPubKContai
ner このコンテナは、暗号化された新しいチャネルをセット
アップするためにクライアント・アプリケーションが使
用する。このコンテナの第1部分を再使用して、RSA
オペレーションを回避することができる。これは、内部
MKContainerのデータ部分には、以下のフィ
ールドがある。 フィールド 長さ 記述 MK 16バイト 128ビットのフレッシュ・ランダム接続マスタ鍵
【0173】次に、MKContainerに対するオ
ペコードについて論じる。MKContainerは、
このコンテナの書き手と読み手が知っているマスタ鍵
(クライアントによって生成されPubKContai
ner中で送られる)に基づいて、ディジタル封筒の一
部として使用する。これらを使用して、マスタ鍵がPu
bKContainerを介してサーバに送られた後の
クライアントとデバイス・オーソリティ・サーバとの間
の通信を安全なものにすることができる。これらはま
た、データを保護するためにクライアント・マシン上で
ローカルに使用することもできる。
【0174】オペコード:OpcSMKEnrollR
equestInner コンテナ:FmtMKCon
tainer このコンテナは、エンロールメント中に使用される。こ
のコンテナのデータ部分には、以下のフィールドがあ
る。 フィールド 長さ 記述 SMKClientSeed 20バイト マスタ鍵の生成に使用されるシード
【0175】オペコード:OpcSMKEnrollR
esponse コンテナ:FmtMKContain
er このコンテナは、エンロールメント中に使用される。こ
のコンテナのデータ部分には、以下のフィールドがあ
る。 フィールド 長さ 記述 SMKServerSeed 26バイト マスタ鍵の生成に使用されるサーバ から返されるシード
【0176】オペコード:OpcClientToSe
rverWrite コンテナ:FmtMKConta
iner このコンテナは、何らかのクライアント・アプリケーシ
ョンがサーバへのデータ(すなわちクライアントによっ
て書かれたデータ)を送るのに使用する。 フィールド 長さ 記述 Data 0〜64000バイト クライアント特有のデータ
【0177】オペコード:OpcServerToCl
ientWrite コンテナ:FmtMKConta
iner このコンテナは、何らかのクライアント・アプリケーシ
ョンがサーバからのデータ(すなわちサーバによって書
かれたデータ)を受け取るのに使用する。 フィールド 長さ 記述 Data 0〜64000バイト クライアント特有のデータ
【0178】オペコード:OpcChallengeR
equestFromServerコンテナ:FmtM
KContainer このコンテナは、クライアント・システムの信憑性を確
定するためにサーバから送られる。このコンテナへの応
答は、OpcChallengeResponseFr
omClient中である。 フィールド 長さ 記述 Rs 16バイト サーバから提供される128ビットのランダムな値
【0179】新しいアプリケーションに対してその他の
オペコードを定義することもできる。システム・アプリ
ケーション・プログラム・インターフェースを使用する
アプリケーションは、デバイス・オーソリティから提供
されるオペコードに従って、それらのオペコードを使用
しなければならない。
【0180】次に、AppContainerのフォー
マットおよびこれを生み出すのに使用されるアルゴリズ
ムについて以下に述べる。まず開封されたフォーマット
について述べ、次いでこれを封印および開封するステッ
プについて述べる。
【0181】プログラムが1つのAppContain
erを得た後は、プログラムはこのコンテナのコピーを
生み出し、次いでこれらのコピーを種々の情報で埋める
ことができる。しかし、最初のAppContaine
rを得る唯一の方法は、デバイス・オーソリティ・サー
バがこの特定マシン上のこの特定プログラムのためにそ
れを生み出すようにすることである。これは、AppC
odeDigestに関係する。
【0182】AppContainerは、マスタ鍵と
呼ばれる対称鍵を記憶するのに使用される。次いでこの
コンテナは、マスタ鍵を必要とする封印/開封オペレー
ションを行う関数に渡される。AppContaine
rはまた、エンロールメント中に割り当てられたSha
redMasterKeyで識別される、所与のマシン
特有のアプリケーションに特有の情報を記憶するのにも
使用される。このアプリケーションは、多くのサーバと
一対一で情報を共有することができ、各サーバはそれ自
体のAppContainerだけしか解読できない。
【0183】開封されたAppContainerは、
以下のフォーマットを有する。コンテナの封印に含まれ
るステップによって21〜36バイトの情報が最後に追
加され(MACおよびPadding)、したがって呼
出し元は、バッファがより大きい封印済みフォーマット
を保持するのに十分な大きさであるようにしなければな
らない。さもなければ、封印オペレーションはエラーを
返すことになる。SealerscodeDigest
およびInitialization Vector
(IV、初期化ベクトル)はすべて、封印オペレーショ
ンで埋められる。初期化ベクトルは、暗号ブロック連鎖
で使用される乱数である。CBCでは、平文テキストを
鍵で暗号化する前に、まずIVと平文テキストの第1ブ
ロックとの排他的論理和をとる。AppCodeDig
estは、デバイス・オーソリティから提供される元の
AppContainerからとる。表1に、AppC
ontainer構造を示す。
【0184】AppContainerの封印。マスタ
鍵、AppCodeDigest、およびCustom
erSecretの派生物で暗号化を行う(すべての1
28ビットはほとんどの場合にデフォルトで0をとるこ
とができる)。
【0185】オペレーティング・システム・ドライバ封
印。このオペレーションは、BIOSによって封印され
るデータを準備する。これには、デバイス・オーソリテ
ィから提供された元のAppContainerが必要
である。この元のAppContainerは、この特
定クライアント・システム用のマスタ鍵でこの特定クラ
イアント・システムに対して暗号化された、暗号化済み
AppCodeDigestを含む。
【0186】デバイスが有効な秘密マスタ鍵を有するこ
とを確認する。そうでない場合はエラーを返す。Len
gthが許容できるほど小さいことを確認する。これ
は、AppCodeDigestフィールドから始まり
(このフィールドを含む)、Dataフィールドで終わ
る(このフィールドを含む)コンテナの長さである。F
ormatがFmtAppContainerに等しい
ことを確認する。Initialization Ve
ctorを、オペレーティング・システム・ドライバ・
セキュリティ・モジュールから渡されたランダムな値に
設定する。SealerscodeDigestを、O
sdRegisterApplication()中に
提供された呼出し元の認証情報に基づいてオペレーティ
ング・システム・ドライバ・セキュリティ・モジュール
によって計算された値に設定する。表2に、オペレーテ
ィング・システム・ドライバAppContainer
封印中の構造変更を示す。
【0187】BIOS AppContainer封印
が、データを封印する前の最終段階である。
【0188】DecryptedCodeDigest
=Dec160Bits(AppCodeDiges
t)にする。コンテナ中のAppCodeDigest
は、封印オペレーションによって変更されない。これに
より、アプリケーションが、デバイス・オーソリティか
ら提供された元のAppContainerに基づいて
新しいAppContainerを生み出すことができ
る。
【0189】DecryptedCodeDigest
が、オペレーティング・システム・ドライバ・セキュリ
ティ・モジュールによって決定されたCallersC
odeDigestの値に等しいことを確認する。
【0190】Key=CustomerAppKey
(AppKey(SMK,AppCodeDiges
t),CustomerSecret)にする。Cus
tomerSecretは、オペレーティング・システ
ム・ドライバから渡された値である。
【0191】Payload=Opcode‖Form
at‖Length‖AppCodeDigest‖I
V‖SealersCodeDigest‖Dataに
する。
【0192】Mac=HMAC(NewKey(Ke
y,UsageAppMac),Payload)に設
定する。
【0193】Paddingを1〜16バイトのベクト
ルに設定して、変数Plaintext(以下参照)を
16の倍数のバイト長にする。各パディング・バイト
は、ベクトル中のパディング・バイトの数に等しい値を
有する。
【0194】Plaintext=IV‖Sealer
sCodeDigest‖Data‖Mac‖Padd
ingにする。
【0195】Ciphertext=Enc(Key,
UsageAppenc,Plaintext)にす
る。Ciphertextの長さはPlaintext
と同じになることに留意されたい。
【0196】AppCodeDigestの後のフィー
ルドすべてをCiphertextで上書きする。すな
わち、Plaintextを形成するすべてのバイトを
Ciphertextのバイトで置換する。
【0197】Lengthを、Plaintext中の
バイトの数に20(AppCodeDigestのた
め)を足した数に設定する。
【0198】表3に、SMI AppContaine
r封印中の構造変更を示す。BIOSが封印済みApp
Container構造を封印した後は、この構造は表
4に示すフォーマットを有する。
【0199】次に、AppContainerの開封に
ついて論じる。オペレーティング・システム・ドライバ
の開封オペレーションは、コンテナを開封するためにB
IOSが必要とする情報を収集する。これは、Leng
thが許容できるほど小さいことを確認することによっ
て行う(###すべきこと:正しい値のバイトまたはそ
れ以下のバイトを得る)。このLengthは、Mac
およびパディングを含めたコンテナの長さである。Fo
rmatがFmtAppContainerに等しいこ
とを確認し、OsdRegisterApplicat
ion()中に提供された呼出し元の認証情報に基づい
てCallersCodeDigestを計算する。
【0200】BIOSの開封は、データを開封する働き
をする。BIOS開封オペレーションは、以下のステッ
プを実施する。
【0201】デバイスが有効なマスタ鍵を有することを
確認する。そうでない場合はエラーを返す。
【0202】DecryptedCodeDigest
=Dec160Bits(AppCodeDiges
t)にする。この開封オペレーションでは、コンテナ中
のAppCodeDigestは変更されない。
【0203】DecryptedCodeDigest
が、オペレーティング・システム・ドライバ・セキュリ
ティ・モジュールによって決定されたCallersC
odeDigestの値に等しいことを確認する。
【0204】Key=CustomerAppKey
(AppKey(SMK,AppCodeDiges
t),CustomerSecret)にする。Cus
tomerSecretは、オペレーティング・システ
ム・ドライバから渡された値である。
【0205】Ciphertext=Lengthから
20バイトを引いた長さまでの、AppCodeDig
estの後のデータにする。
【0206】Plaintext=Dec(Key,U
sageAppEnc,Ciphertext)にす
る。
【0207】CiphertextバイトをPlain
textバイトで置換して、開封されたフィールドが見
られるようにする。
【0208】Length=Lengthから20を引
きPaddingの長さを引いた長さにする。
【0209】Payload=Opcode‖Form
at‖Length‖AppCodeDigest‖I
V‖SealersCodeDigest‖Dataに
する。
【0210】ExpectedMac=HMAC(Ne
wKey(Key,UsageAppMac),Pay
load)にする。
【0211】MacがExpectedMacに等しい
ことを確認する。
【0212】次に、MKContainerのフォーマ
ットおよびこれを生み出すのに使用されるアルゴリズム
について論じる。まず開封されたフォーマットについて
述べ、次いでこれを封印および開封するステップについ
て述べる。MKContainerは主に、クライアン
トとサーバがPubKContainerを使用して共
通のマスタ鍵をセットアップした後にこれらの間で送ら
れる大きい(64Kまでの)情報チャンクを保護するの
に使用する。
【0213】MKContainerは主に、データを
暗号化するのに使用する。暗号化は、対称鍵暗号化に基
づく。この鍵はマスタ鍵から導出される。MKCont
ainerは、マスタ鍵から導出された対称鍵を使用し
て大きい(64Kまでの)チャンクを暗号化するのに使
用することができる。特別な場合の用途は、エンロール
メント中にクライアントとサーバとの間の伝送を暗号化
して秘密のマスタ鍵をセットアップできるようにし、何
らかのクライアント・アプリケーションとデバイス・オ
ーソリティ・サーバとの間の伝送を暗号化することであ
る。
【0214】次に、開封されたMKContainer
構造について述べる。MKContainerは、Ap
pContainerに非常に似ている。主な違いは、
AppCodeDigestが、セットアップされたマ
スタ鍵のダイジェストに置き換わることである。サーバ
によって生み出されたMKContainerの場合、
SealedCodeDigestは0となる。クライ
アント上で生み出されたコンテナの場合、Sealer
sCodeDigestは、このコンテナを封印したプ
ログラムを識別する。
【0215】MKContainerに対する暗号オペ
レーションは、SMIモジュールではなくオペレーティ
ング・システム・ドライバ・モジュールによって行われ
る。オペレーティング・システム・ドライバは、SMI
モジュールを使用してマスタ鍵を封印および開封するこ
ともできるが、すべての暗号化および保全性チェックは
OSDコードによって行われる。
【0216】開封されたMKContainerは、以
下のフォーマットを有する。このコンテナの封印に含ま
れるステップによって21〜36バイトの情報が最後に
追加されることになり(MACおよびPaddin
g)、したがって呼出し元は、バッファがより大きい封
印済みフォーマットを保持するのに十分な大きさである
ようにしなければならない。さもなければ、封印オペレ
ーションはエラーを返すことになる。MKDiges
t、SealersCodeDigest、およびIV
はすべて、封印オペレーションによって埋められる。表
5に、MKContainer構造を示す。
【0217】暗号化を行って、AppContaine
r(OSDPubKContainerSeal()を
呼び出したときに生み出されたもの)中で渡されたマス
タ鍵の派生物でMKContainerを封印する。
【0218】OSD MKContainerを封印す
るのに必要なステップは以下のとおりである。これらの
ステップは、適切なバッファに作用し、したがって開封
された平文テキストデータを上書きする。Usageの
値のセクションで説明したように、Usageの値は、
クライアントおよびサーバによって封印されたコンテナ
ごとに違ってくることに留意されたい。
【0219】封印オペレーションでは、マスタ鍵を有す
るAppContainerを使用する必要がある。封
印ステップは以下のとおりである。
【0220】Lengthが許容できることを確認す
る。このオペレーションはオペレーティング・システム
・ドライバによって行われるので、このLengthは
AppContainerよりも長くてよい。これは、
MKDigestフィールドから始まり(このフィール
ドを含む)、Dataフィールドで終わる(このフィー
ルドを含む)コンテナの長さである。
【0221】FormatがFmtMKContain
erに等しいことを確認する。
【0222】MKDigestの値を、MKを保持する
開封されたAppContainerの内容のSHA1
に設定する。
【0223】IVを、オペレーティング・システム・ド
ライバ・セキュリティ・モジュールから渡されたランダ
ムな値に設定する。
【0224】SealersCodeDigestを、
オペレーティング・システム・ドライバ・セキュリティ
・モジュールによって決定された値に設定する。
【0225】Key=オペレーティング・システム・ド
ライバ・セキュリティ・モジュールから渡されたマスタ
鍵にする。
【0226】Payload=Opcode‖Form
at‖Length‖MKDigest‖IV‖Sea
lersCodeDigest‖Dataにする。
【0227】Mac=HMAC(NewKey(Ke
y,UsageMKMac),Payload)に設定
する。
【0228】Paddingを1〜16バイトのベクト
ルに設定して、変数Plaintext(以下参照)を
16バイトの倍数の長さにする。各パディング・バイト
は、ベクトル中のパディングの数に等しい値を有する。
【0229】Plaintext=IV‖Sealer
sCodeDigest‖Data‖Mac‖Padd
ingにする。
【0230】Ciphertext=Enc(Key,
UsageMKEnc,Plaintext)にする。
Ciphertextの長さはPlaintextと同
じになることに留意されたい。
【0231】MKDigestの後のフィールドすべて
をCiphertextで上書きする。すなわち、Pl
aintextを形成するすべてのバイトをCiphe
rtextのバイトで置換する。
【0232】Lengthを、Plaintext中の
バイトの数に20(MKDigestのため)を足した
数に設定する。
【0233】表6に、OSD MKContainer
の封印中の構造変更を示す。
【0234】表7に、封印されたMKContaine
rの構造を示す。
【0235】MKContainerの開封は、オペレ
ーティング・システム・ドライバ開封を含む。
【0236】MKContainerを開封するのに必
要なステップは、以下のとおりである。エラーの場合は
コンテナが0になるべきである。開封オペレーションで
は、マスタ鍵を有するAppContainerを使用
する必要がある。開封ステップは以下のとおりである。
【0237】Lengthが許容できることを確認す
る。これは、MacおよびPaddingを含めたコン
テナの長さである。
【0238】FormatがFmtMKContain
erに等しいことを確認する。
【0239】MKDigestが、オペレーティング・
システム・ドライバ・セキュリティ・モジュールから渡
された値に等しいことを確認する。
【0240】Key=AppContainerを介し
てオペレーティング・システム・ドライバ・セキュリテ
ィ・モジュールから渡されたマスタ鍵にする。
【0241】Ciphertext=Lengthから
20バイトを引いた長さまでの、MKDigestの後
のデータにする。
【0242】Plaintext=Dec(Key,U
sageMKEnc,Ciphertext)にする。
【0243】CiphertextバイトをPlain
textバイトで置換して、開封されたフィールドが見
られるようにする。
【0244】Length=Lengthから20を引
きPaddingの長さを引いた長さにする。
【0245】Payload=Opcode‖Form
at‖Length‖MKDigest‖IV‖Sea
lersCodeDigest‖Dataにする。
【0246】ExpectedMac=HMAC(Ne
wKey(Key,UsageMKMac),Payl
oad)にする。
【0247】MacがExpectedMacに等しい
ことを確認する。
【0248】次に、SignedContainerの
フォーマットおよびこれを処理するのに使用されるアル
ゴリズムについて論じる。まず開封されたフォーマット
について述べ、次いでこれを封印および開封するステッ
プについて述べる。これらのコンテナは主に、認証され
た情報をサーバからクライアントに送るのに使用する。
例えば、これらのコンテナを使用して、オペレーティン
グ・システム・ドライバ・セキュリティ・モジュールの
関数のいくつかを呼び出すことをプログラムに許可する
ことができる。また、これらのコンテナを使用して、フ
ァイル名のリストと各ファイルの予想されるSHA1ダ
イジェストとを送ることもできる(例えばダウンロード
したデータが確かなものであることを確認するため)。
これらはまた、ある種の情報またはコマンドが本当にデ
バイス・オーソリティ・サーバからきたことをクライア
ントが知る必要があるときはいつでも使用することがで
きる。
【0249】SignedContainerを使用し
て、ダウンロードしたデータが確かなものであることを
確認し、データがデバイス・オーソリティ・サーバから
きたものであることを確認し、オペレーティング・シス
テム・ドライバに登録しているアプリケーションに対す
る認証情報を保持する。表8にSignedConta
iner構造を示す。
【0250】次に、SignedContainerの
封印について論じる。暗号化は、サーバが秘密鍵に署名
することによって行われる。SignedContai
nerコンテナを封印するのに必要なステップは以下の
とおりである。これらのステップは、適切なバッファに
作用し、したがって開封された平文テキストデータを上
書きする。開示する実施形態では、デバイス・オーソリ
ティ・サーバがこれらのステップを実施して、Sign
edContainerを封印する。
【0251】選択された秘密鍵がわかっていることを確
認する。そうでない場合はエラーを返す。
【0252】Lengthが許容できることを確認す
る。封印前は、この長さはPublicKeyDige
stおよびDataを含む。
【0253】FormatがFmtSignedCon
tainerに等しいことを確認する。
【0254】PublicKeyDigestを、選択
された秘密鍵に合致する公開鍵のSHA1ダイジェスト
に設定する。
【0255】Payload=Opcode‖Form
at‖Length‖PublicKeyDigest
‖Dataにする。これは開封された長さを含むことに
留意されたい。
【0256】ExpectedDigest=SHA1
(Payload)にする。
【0257】SigRSABlock=108個の0バ
イト‖ExpectedDigestに設定する。
【0258】SigRSABlockに対してPKCS
#1バージョン2署名パディングを実施する。これは、
PKCS#1バージョン1署名パディングと同じであ
る。このパディングで、Digestの値の前に固定の
バイト・シーケンスを追加して、ExpectedDi
gestの値がSHA1オペレーションの結果であるこ
とを示す。このパディングではまた、0パディング・バ
イトのほとんどを0xFFバイトで置換する。
【0259】SigRSABlockを選択された秘密
鍵で暗号化する。
【0260】Length=Lengthに128を加
えてSigRSABlockサイズを含めた長さに設定
する。
【0261】サーバがSignedContainer
構造を封印した後は、この構造は表9に示すフォーマッ
トを有する。
【0262】次に、SignedContainerの
開封について論じる。SignedContainer
コンテナを開封するのに必要なステップは、以下のとお
りである。クライアントは、これらのステップを実施し
て、この種のコンテナに対する署名を検証する。
【0263】選択された公開鍵がSMIルーチンにわか
っていることを確認する(注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は、わかっている公開鍵のハッシュ表を保持して
いてもよい。
【0264】BIOS開封に関しては、BIOSはコン
テナ自体には作用しない。SigRSABLockを解
読するためだけに呼び出される。
【0265】次に、PubKContainerのフォ
ーマットおよびこれを生み出すのに使用されるアルゴリ
ズムについて論じる。まず開封されたフォーマットにつ
いて述べ、次いでこれを封印および開封するステップに
ついて述べる。これらのコンテナは主に、クライアント
とデバイス・オーソリティ・サーバとの間に安全な通信
チャネルをセットアップするのに使用する。PubKC
ontainerの第2部分は、4バイトのヘッダを含
む完全なMKContainerオブジェクトである。
PubKContainerの第1部分は、生成された
マスタ鍵(MK)およびクライアントの鍵ID(KI
D)の値を含み(またはマスタ鍵が割り当てられていな
い場合は0)、これらの値は両方とも、受信側の公開鍵
で暗号化される。
【0266】PubKContainerのフォーマッ
トは、このコンテナの第1部分を変更せずに第2部分を
変更できるように慎重に選択する。これにより、クライ
アントおよびサーバは、いくつかの大きな性能向上を図
ることができる。OSD封印関数が、生成されたマスタ
鍵をAppContainer中にラッピングして返す
ことになる。クライアントは、サーバへの新たな接続を
(例えば新しいダウンロードをフェッチするために)開
始するたびに、MKとPubKContainerの第
1部分とを記憶および再使用することができ、第2部分
は、このセッションを暗号化するための新しいマスタ鍵
を含むMKContainerとなる。これにより、S
MIルーチンで公開鍵オペレーションを実施する必要が
回避され、しかもなお、本物のサーバだけにしか新しい
セッション鍵がわからないことが知られるというセキュ
リティ上の利点が得られる。というのは、本物のサーバ
だけが、保存されたマスタ鍵(新しいセッション鍵を解
読するのに必要)を知っているか、あるいは第1部分を
読むための秘密鍵を知っているからである。サーバにと
って重要な最適化は、PubKContainerの第
1部分から抽出したマスタ鍵をキャッシュし、キャッシ
ュした値に第1部分のハッシュで索引付けすることであ
る。このキャッシュにより、PubKContaine
rの第1部分を再使用するときに秘密鍵オペレーション
を行う必要が回避される。クライアントは常に第1部分
全体を送り、したがってサーバは常にその秘密鍵(サー
バ通信秘密鍵)を使用してマスタ鍵を抽出することがで
きるので、サーバはいつでもキャッシュ・エントリをフ
ラッシュすることができる。このことはまた、クライア
ントとサーバとの間の初期化メッセージ用のフォーマッ
トが1つだけであり、再使用とマスタ鍵の生成のいずれ
かに対処するために2つの別個のフォーマットがあるの
ではないことを意味する。
【0267】PubKContainerの用途は、エ
ンロールメント中にクライアントとサーバとの間の伝送
をセットアップして秘密マスタ鍵をセットアップできる
ようにし、何らかのクライアント・アプリケーションと
オーソリティ・サーバとの間の伝送をセットアップする
ことである。
【0268】開封されたPubKContainer
は、表10に示すフォーマットを有する。コンテナの封
印に含まれるステップによって21〜36バイトの情報
が最後に追加されることになり(MACおよびPadd
ing)、したがって呼出し元は、バッファがより大き
い封印済みフォーマットを保持するのに十分な大きさで
あるようにしなければならない。さもなければ、封印オ
ペレーションはエラーを返すことになる。Sealed
CodeDigestおよびInitializati
on Vector(IV)はすべて、封印オペレーシ
ョンによって埋められる。
【0269】次に、PubKContainerの封印
について論じる。暗号化は、オペレーティング・システ
ム・ドライバによって実行中に生み出されたマスタ鍵の
派生物と、サーバの通信公開鍵を使用して行う。
【0270】オペレーティング・システム・ドライバの
封印は、BIOSレイヤへの2つの呼出しを含む。第1
の呼出しはMKContainerに対するものであ
り、OsdMKContainerSeal()を使用
し、次いで、BIOSRawRSAPublic()を
使用して、MKContainer封印オペレーション
で使用したばかりのMKを暗号化する。このコンテナを
封印するのに必要なステップは以下のとおりである。こ
れらのステップは、適切なバッファに作用し、したがっ
て開封された平文テキストデータを上書きする。Usa
geの値のセクションで説明したように、Usageの
値は、クライアントおよびサーバによって封印されたコ
ンテナごとに違ってくる。
【0271】選択された公開鍵がわかっていることを確
認する。そうでない場合はエラーを返す。Length
が許容できることを確認する。封印前は、この長さは、
第1部分と開封された第2部分とを含む。封印後は、第
2部分を封印することによって追加される追加データを
含む。FormatがFmtPubKContaine
rに等しいことを確認する。オペレーティング・システ
ム・ドライバ・セキュリティ・モジュールから渡された
MKと、MKContainerに関して述べたステッ
プとを用いて、第2部分を封印する。
【0272】マスタ鍵は、PubKContainer
が最初に作成されたときにオペレーティング・システム
・ドライバによってランダムに生成されることになる。
このマスタ鍵を再使用できるように、マスタ鍵に対する
ハンドルがオペレーティング・システム・ドライバの呼
出し元に返される。前のステップで追加されたMacお
よびPaddingを含むようにLengthフィール
ドをインクリメントする。PublicKeyDige
stを、選択された公開鍵のSHA1に設定する。Pu
bKRSABlockのOpcodeおよびForma
tの部分を、ヘッダの値に合致するように設定する。残
りのブロックは、これらのステップを行う前にOSDル
ーチンによって埋められる。オペレーティング・システ
ム・ドライバ・モジュールによって選択されたランダム
OAEPシード値を使用して、PubKRSABloc
kのOAEPパディングを実施する。BIOSRawR
SAPublicを呼び出して、選択された鍵でRSA
オペレーションを行う。オペレーティング・システム・
ドライバがPubKContainer構造を封印した
後は、この構造は表11に示すフォーマットを有する。
【0273】次に、PubKContainerの開封
について論じる。開示する本発明の実施形態では、デバ
イス・オーソリティ・サーバが開封を行う。サーバから
の返信は、MKコンテナの形をとることになる。クライ
アントは、MKコンテナ・オペレーションを使用してサ
ーバ応答を開封する。
【0274】ここで、サーバの開封について論じる。P
ubKContainerを開封するのに必要なステッ
プは以下のとおりである。エラーの場合はコンテナが0
になる。
【0275】Lengthが許容できることを確認す
る。これは、封印された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を開封する。
【0276】次に、暗号プリミティブおよび共通の値に
ついて論じる。
【0277】鍵の導出は、AppKey()、NewK
ey()、およびCustomerAppKey()を
含み、これらはすべて以下の同じ関数とすることができ
る。XxxKey(bufferOf128bits,
bufferOf160bitsWithTheHig
hOrderBitsZeroedIfDataWas
LessThan160bits).
【0278】AppKey(Key,CodeDige
st)=TruncateTo128bits(SHA
−1(Key‖codeDigest)) AppContainerを保護するための鍵は、この
コンテナを所有するプログラムに対するコードの160
ビット・ダイジェストを使用して、秘密マスタ鍵から導
出される。得られる鍵は128ビット長である(ほとん
どの暗号化アルゴリズムにとって128ビットがより一
般的である)。Key‖CodeDigestをハッシ
ングするのは、ルートでないデバイス・オーソリティ・
サーバが、実際のマスタ鍵が何であるかを知らされず
に、それら自体のAppContainerを生み出す
ことができるようにするためである。実際の秘密マスタ
鍵が知られると、他のすべてのAppContaine
rに障害が生じる。
【0279】NewKey(Key,Usage)=T
runcateTo128bits(SHA−1(Ke
y‖Usage)) Usageパラメータは32ビットの値である。New
Key()の場合、得られる鍵が見えるようにする必要
はないので、ハッシングおよび切捨てを用いてコードを
単純にする。NewKey()はまた、AppKe
y()の結果を引数としてとることもある。
【0280】CustomerAppKey(Key,
CustomerSecret)=TruncateT
o128bits(SHA−1(Key‖Custom
erSecret) CustomerSecretは128ビットの値であ
る。この関数は、CustomerSecret部分を
有するAppcontainerに対する鍵を生成する
のに使用する。
【0281】AppCodeDigest=Enc16
0Bits(SMK,DecryptedCodeDi
gest)およびDecryptedCodeDige
st=Dec160Bits(SMK,Appcode
Digest)は、秘密マスタ鍵を使用して160ビッ
トのダイジェスト値を暗号化および解読するのに使用
し、特定デバイス上の特定プログラムに対して第1のA
ppContainerを生み出す際にデバイス・オー
ソリティ・サーバを使用する必要のあるこの機構の極め
て重要な部分である。サーバはEnc160Bits関
数を実施し、クライアント・マシンはDec160Bi
ts関数を実施する。
【0282】Enc160Bits関数は、以下のステ
ップを実施する。DecryptedCodeDige
stをAppCodeDigestバッファにコピーす
る。Key=NewKey(SMK,UsageApp
CodeDigest)にする。Plaintext1
=AppCodeDigestの最初の16バイトにす
る。これは、DecryptedCodeDigest
no最初の16バイトである。Ciphertext1
=RC6CBCEncrypt(Key,Plaint
ext1)にする。平文テキストの長さが1ブロックし
かないので、これはECBモードに相当する。
【0283】AppCodeDigestの最初の16
バイトを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で置換する。
【0284】Dec160Bits関数は、以下のステ
ップを実施する。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で置換する。
【0285】Enc(Key,Usage,Messa
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年に定義されている。
【0286】RC6は、NIST AES(Advan
ced Encryption Standard)の
要件を特に満たすように設計されたものである。RC6
は、可変長の鍵サイズに対するサポートを含み、RC5
以降のCPUの進歩を利用するように最適化されてい
る。
【0287】このプリミティブが大部分のコンテナと共
に使用されると、Messageは16バイトのランダ
ムな値(IVと呼ぶ)で始まり、最後に1〜16バイト
でパディングされて、Messageは暗号のブロック
・サイズ(16バイト)の倍数になる。この16バイト
IVは、後続の平文テキスト・ブロックと直接に排他的
論理和をとられることがないので、従来のCBCモード
では使用されないことに留意されたい。そうではなく、
暗号化中は、0との排他的論理和がとられ(何もなされ
ない)、次いで、鍵で暗号化されて暗号テキストの第1
ブロックが生成される。次いで第1の暗号テキスト・ブ
ロックは、次の平文テキスト・ブロックが暗号化される
前にそのブロックと排他的論理和をとられる。解読中
は、第1ブロックが解読され、0との排他的論理和がと
られて(何もなされない)、元のランダムなIVブロッ
クが生成される。第2の暗号テキスト・ブロックが解読
され、暗号テキストの第1ブロックとの排他的論理和が
とられて、第2の平文テキスト・ブロックが生成され
る。
【0288】EncおよびDecに対するパディング
は、一連の同一バイトであり、この値はパディングされ
るバイトの数に等しい。例えば、2バイトのパディング
が追加される場合、各バイトは値0x02を有する。常
に少なくとも1バイトのパディングがあり、したがっ
て、平文テキストがすでに16の倍数のバイト長である
場合は、16バイトのパディングが追加され、これらの
バイトはそれぞれ値0x16を有する。ランダムなバイ
ト対予測可能バイトの長所をめぐって宗教戦争が行われ
る。この構成では、予測可能パディング・バイトが必要
である。解読されたデータの最後のバイトを調べること
により、どれだけのパディングが追加されたかが容易に
決定されることに留意されたい。
【0289】HMAC(Key,Message)プリ
ミティブ。基本的な保全性プリミティブは、Hugoの
メッセージ認証コード(HMAC)と呼ばれており、こ
れはどんな暗号ダイジェスト関数に基づくこともでき
る。本発明ではSHA−1に基づくが、これはNIST
&NSAによる「Secure Hash Stand
ard」1995年4月17日に定義されている。HM
ACプリミティブに関する出版文書には、これがダイジ
ェスト関数の潜在的な弱点を補う優れたセキュリティ特
性を有することが示されている。SHA−1は、メッセ
ージまたはデータ・ファイルの圧縮表現を計算するため
の安全なハッシュ・アルゴリズム用に米国商務省によっ
て採用されている標準仕様である。264ビット未満の
任意の長さのメッセージが入力されると、SHA−1
は、メッセージ・ダイジェストと呼ばれる160ビット
の出力を生成する。次いで、このメッセージ・ダイジェ
ストをディジタル署名アルゴリズム(DSA)に入力す
ることができ、ディジタル署名アルゴリズムは、メッセ
ージに対する署名を生成または検証する。
【0290】HMAC(Key,Message)=S
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回必要であ
る。これは、優れたセキュリティ特性の割に合う低いオ
ーバーヘッドである。
【0291】HMACは、暗号ハッシュ関数を使用する
メッセージ認証のための機構である。HMACは、任意
の反復的な暗号ハッシュ関数、例えばMD5やSHA−
1で、秘密の共有鍵と組み合わせて使用することができ
る。HMACの暗号強度は、基礎となるハッシュ関数の
特性によって決まる。
【0292】RSAオペレーションは、RSAからライ
センス供与されたコードを使用してBIOS中で行われ
る。
【0293】Ciphertext=RSAOaepE
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の連結である。
【0294】PKCSは、バイナリ・データとASCI
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に電子メールを送ることによってアクセス
可能)で入手することができる。
【0295】以下は公開鍵暗号標準(PKCS)であ
る。
【0296】PKCS#1は、RSA公開鍵暗号システ
ムを用いてデータを暗号化しデータに署名するための機
構を定義する。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は、擬似乱数生成の
ための標準を提供する。
【0297】SigBlock=RSASigEncr
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ダイジェストを計算または検証すること
を含む。
【0298】AppCodeDigestは、コンテナ
を所有するアプリケーションを識別するのに使用される
データである。これは、すべてのコンテナには適用され
ない。このデータは、暗号関数を呼び出しているコード
に基づいて生成される。このデータは通常、デバイス・
オーソリティによって生成、暗号化、および署名され
る。ほとんどの場合、解読されたAppCodeDig
est(ACD)が、実行時にBIOSによってCal
lerCodeDigestと比較される。サーバに属
するCodeDigestは常に0である。
【0299】SealerCodeDigest/Ca
llerCodeDigestは、関数の呼出し元に基
づく関数中で計算されるデータである。このダイジェス
トを計算するのに使用される情報は、BIOSへの登録
やオペレーティング・システム・ドライバへの登録など
の登録中に、コンテナ・オペコードとしてOpaacO
sdAuthorizationを伴うSignedC
ontainer中で提供される。
【0300】エンロールメントは、クライアント・シス
テムが通過する初期段階である。この段階の間に、マス
タ鍵が生成され、クライアント・システムとデバイス・
オーソリティ・サーバとの間で交換される。このステッ
プは、PubKContainerを使用する。エンロ
ールメント・プロセスによってまだマスタ鍵が割り当て
られていないときは、マスタ鍵は、本物のマスタ鍵が取
って代わるまで一時的なランダム値で置き換えられる。
【0301】BIOSもオペレーティング・システム・
ドライバ(OSD)も両方とも、コンテナ・オペレーシ
ョンに参与する。封印に関係するコンテナ関数には、O
SDAppContainerSeal()、OSDM
KContainerSeal()、OSDPubKC
ontainerSeal()、およびBIOSApp
ContainerSeal()が含まれる。
【0302】OSDPubKContainerSea
l()関数は、ランダムなセッション鍵(Master
Key)を生成し、これをAppContainer
内で呼出し元に返す。次いでこのAppContain
erは、他のMKContainer()オペレーショ
ンを呼び出すのに使用される。図 に、例示的なPub
KContainerアルゴリズムを示す。
【0303】開封に関係するコンテナ関数には、OSD
AppContainerUnseal()、OSDM
KContainerUnseal()、OSDSig
nedContainerUnseal()、OSDP
ubKContainerUnseal()、およびB
IOSAppContainerUnseal()が含
まれる。
【0304】次に、Containerクラスの実装の
詳細について論じる。これらのクラスには、PubkC
ontainerおよびMKContainerが含ま
れる。
【0305】以下は、PubKContainerのフ
ォーマットと、封印および開封で使用されるクラスにお
けるメソッドについての記述である。これらのコンテナ
は主に、クライアントとデバイス・オーソリティ・サー
バとの間に安全な通信チャネルをセットアップするのに
使用する。PubKContainerの第2部分は、
4バイトのヘッダを含む完全なMKContainer
オブジェクトである。PubKContainerの第
1部分は、生成されたマスタ鍵(MK)およびクライア
ントの鍵ID(KID)の値を含み(またはマスタ鍵が
割り当てられていない場合は0)、これらの値は両方と
も、受信側の公開鍵で解読される。
【0306】PubKContainerのフォーマッ
トは、このコンテナの第1部分を変更せずに第2部分を
変更できるように慎重に選択する。これにより、クライ
アントおよびサーバは、いくつかの大きな性能向上を図
ることができる。OSD封印関数が、生成されたマスタ
鍵をAppContainer中にラッピングして返す
ことになる。クライアントは、サーバへの新たな接続を
(例えば新しいダウンロードをフェッチするために)開
始するたびに、MKとPubKContainerの第
1部分とを記憶および再使用することができ、第2部分
は、このセッションを暗号化するための新しいマスタ鍵
を含むMKContainerとなる。これにより、S
MIルーチンで公開鍵オペレーションを実施する必要が
回避され、しかもなお、本物のサーバだけにしか新しい
セッション鍵がわからないことが知られるというセキュ
リティ上の利点が得られる。というのは、本物のサーバ
だけが、保存されたマスタ鍵(新しいセッション鍵を解
読するのに必要)を知っているか、あるいは第1部分を
読むための秘密鍵を知っているからである。サーバにと
って重要な最適化は、PubKContainerの第
1部分から抽出したマスタ鍵をキャッシュし、キャッシ
ュした値に第1部分のハッシュで索引付けすることであ
る。このキャッシュにより、PubKContaine
rの第1部分を再使用するときに秘密鍵オペレーション
を行う必要が回避される。クライアントは常に第1部分
全体を送り、したがってサーバは常にその秘密鍵(サー
バ通信秘密鍵)を使用してマスタ鍵を抽出することがで
きるので、サーバはいつでもキャッシュ・エントリをフ
ラッシュすることができることに留意されたい。このこ
とはまた、クライアントとサーバとの間の初期化メッセ
ージ用のフォーマットが1つだけであり、再使用とマス
タ鍵の生成のいずれかに対処するために2つの別個のフ
ォーマットがあるのではないことを意味する。
【0307】PubkContainerは、エンロー
ルメント中にクライアントとサーバとの間の伝送をセッ
トアップして秘密のマスタ鍵をセットアップできるよう
にし、何らかのクライアント・アプリケーションとデバ
イス・オーソリティ・サーバとの間の伝送をセットアッ
プするために使用される。表11に、最終的な封印され
たPubKContainer構造を示す。
【0308】PubkContainerに関係するコ
ンストラクタおよびメソッドは以下のとおりである。
【0309】public PubkContaine
r()は、ロガー・オブジェクトを初期化する空のコン
テナである。このpublic PubKContai
ner(InputStream in)に関しては、
コンテナは入力ストリームで初期化され、次いでこれは
バイト・アレイとしてバッファに読み込まれる。次いで
バッファは、parseBufferメソッドを使用し
て解析される。ロガー・オブジェクトもまた初期化され
る。
【0310】publicPubkContainer
(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メソッドを
使用して、連結アレイを構築する。
【0311】private void unseal
()は、RsaLibException、Conta
inerExceptionを投げる。
【0312】invalidOpcode、inval
idFormat、またはinvalidLenがfa
lseかどうかチェックし、ContainerExc
eptionを投げる。これらは、いずれかが予想どお
りでない場合にはparseBufferにおいてfa
lseに設定される。
【0313】RSAlibに対するJNIラッパを介し
てrsaOaepDecrypt(PubKDiges
t,PubKRSABlock)でPubKRSABl
ockを解読することにより、opcode‖form
at‖reserved‖KID‖MKであるPubK
Blockを得る。
【0314】PubKBlock、opcode、fo
rmat、KID、およびマスタ鍵に対して妥当性およ
び長さをチェックする。
【0315】private void parseB
uffer(byte[]buffer)は、到来して
バッファに記憶された封印されたコンテナを解析するた
めのヘルパ関数であり、このバッファは、opcode
‖format‖reserved‖length‖P
ubKDigest‖PubKRSABlock‖Se
aledMKCである。
【0316】予想どおりでない場合は、invalid
Opcode、invalidFormat、inva
lidLenを設定する。
【0317】public byte[]getRaw
ForNet()は、ContainerExcept
ionを投げる。データおよびMKDigestがヌル
でないことをチェックし、次いでsealメソッドを呼
び出す。封印オペレーションで構築される以下のような
バッファを返す。 opcode‖format‖reserved‖le
ngth‖PubKDigest‖PubKRSABl
ock‖SealedMKC
【0318】public byte getOpco
de()は、コンテナのオペコードを返す。
【0319】public byte[]getPub
KDigest()は、コンテナからのPubKDig
estを返す。
【0320】public byte[]getKID
()は、コンテナからのKIDを、必要なら開封して返
す。
【0321】public byte[]getM
K()は、ConteinerExceptionを投
げ、コンテナからのMKを、必要なら開封して返す。
【0322】public MKContainer
getMkContainer()は、Contain
erExceptionを投げる−Pubkに埋め込ま
れた封印されたMKコンテナを抽出し(これはpars
eBufferによって行う)、Pubk部分を開封し
てMKを得て、それをMKコンテナに対して設定する。
【0323】public void setOpco
de(byte Opcode)は、Containe
rExceptionを投げる−有効範囲内にあるかど
うかチェックした後でコンテナに対するオペコードを割
り当てる。
【0324】public void setPubK
Digest(byte[]digest)は、Con
tainerExceptionを投げる−ヌルが渡さ
れた場合またはlengthが20に等しくない場合は
例外を投げ、PubKDigestを設定する。
【0325】public void setKID
(byte[]Kid)は、ContainerExc
eptionを投げる−ヌルが渡された場合またはle
ngthが20に等しくない場合は例外を投げ、鍵ID
を設定する。
【0326】public void setMK(b
yte[]Mk)は、ContainerExcept
ionを投げる−ヌルが渡された場合またはlengt
hが16に等しくない場合は例外を投げ、MKを設定す
る。
【0327】public void setMKCo
ntainer(byte[]Mkc)は、Conta
inerExceptionを投げる−PubKCon
tainerに埋め込むべき封印されたMKConta
inerを設定する。
【0328】private void log(in
t aWarningLevel,String me
ssage)−パラメータとして渡された警告レベルを
現在の警告レベルと比較し、より緊急である場合はそれ
を出力する。
【0329】MKContainerに関係するコンス
トラクタおよびメソッドは、以下のとおりである。
【0330】ここで、MKContainerのフォー
マットおよびそれを生み出すのに使用されるアルゴリズ
ムについて論じる。ます開封されたフォーマットについ
て述べ、次いでこれを封印および開封するステップにつ
いて述べる。MKContainerは主に、クライア
ントとサーバがPubKContainerを使用して
共通のマスタ鍵をセットアップした後にこれらの間で送
られる大きい(64Kまで)の情報チャンクを保護する
のに使用する。
【0331】MKContainerは主に、データを
暗号化するのに使用する。暗号化は、対称鍵暗号化に基
づく。この鍵はマスタ鍵から導出される。MKCont
ainerは、マスタ鍵から導出された対称鍵を使用し
て大きい(64Kまでの)チャンクを暗号化するのに使
用される。特別な場合の用途は、エンロールメント中に
クライアントとサーバとの間の伝送を暗号化して秘密の
マスタ鍵をセットアップできるようにし、何らかのクラ
イアント・アプリケーションとデバイス・オーソリティ
・サーバとの間の伝送を暗号化することである。表13
に最終的な封印された構造を示す。
【0332】public MkContaine
r()は、ロガー・オブジェクトをちょうど初期化する
空のコンテナである。
【0333】public MkContainer
(InputStream in)−コンテナは入力ス
トリームで初期化され、次いでこれはバイト・アレイと
してバッファに読み込まれる。次いでバッファは、pa
rseBufferメソッドを使用して解析される。ロ
ガー・オブジェクトもまた初期化される。
【0334】publicMkContainer(b
yte[]buf)−コンテナはバイト・アレイで初期
化され、次いでこれはバイト・アレイとしてバッファに
読み込まれる。次いでバッファは、parseBuff
erメソッドを使用して解析される。ロガー・オブジェ
クトもまた初期化される。
【0335】private void seal()
は、RsaLibExceptionを投げる。
【0336】MKContainerを封印するため
に、以下のものを設定する。これらのopcode、M
KDigest、およびdataに対するsetメソッ
ドを呼び出す。
【0337】Formatを、3=FmtPubKCo
ntainerに設定する。
【0338】長さを、データ長+56(20−KDig
est+16−iv+20−scd)として設定する。
【0339】長さを2バイト・アレイに変換する。
【0340】ivを乱数発生器から16バイト・アレイ
として得て、cryptoPrimitives ge
nerateRandomNumber(16)メソッ
ドを呼び出す。
【0341】セキュリティ・ユーティリティのaddT
oArrayメソッドを使用して、以下のペイロードを
構築する。 opcode‖format‖reserved‖le
ngth‖MKDigest‖iv‖scd‖data
【0342】newKeyを、NKeyForSeal
ing=CryptoPrimitive.newKe
y(MKDigest,ctnrConstants.
UsageMKMacServer)として構築する。
【0343】次いでcryptoPrimitive呼
出しから以下のMacが得られる。 Mac=CryptoPrimitive.getHm
ac(NKeyForSealing,payloa
d)
【0344】Plaintextを、iv‖scd‖d
ata‖macとして構築する。
【0345】Paddingを1〜16バイトのベクト
ルに設定して、変数Plaintext(以下参照)を
16の倍数のバイト長にする。各パディング・バイト
は、ベクトル中のパディング・バイトの数に等しい値を
有する。これは、SecurityUtilsクラス中
のadjustPadメソッドを使用して行われる。
【0346】パディングをPlaintextに加え
る。このときPlaintextは以下のようになる。 iv‖SealersCodeDigest‖Data
‖Mac‖Padding
【0347】Ciphertext=Enc(Key,
UsageMKEnc,Plaintext)にする。
Ciphertextの長さはPlaintextと同
じになる。
【0348】Lengthを、Plaintext中の
バイトの数に20(MKDigestのため)を足した
数に設定し、この値を2バイト・アレイに記憶する。
【0349】封印されたMKContainerを、以
下のものを有するバッファとして構築する。 opcode‖format‖reserved‖le
ngth‖MKDigest‖ciphertext
【0350】private void unseal
()は、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)として呼び出される。
【0351】平文テキストの最後のバイトからパッド・
バイトがわかるが、これは、パッド・バイトがいくつ追
加されたかを示す。パッド・バイトは平文テキストから
除去され、macの長さおよびパッド・バイトの数を平
文テキストの長さから除くことによってデータ・サイズ
が計算される。
【0352】iv、sd、およびdataの長さを計算
し、2バイト・アレイとして記憶する。dataの長さ
が計算され、iv、scd、およびmacの長さが所定
なので、これらはすべて平文テキストから抽出される。
【0353】Length=Lengthから20を引
きPadding長を引いた長さに変更する。
【0354】ペイロードを、Opcode‖Forma
t‖reserved‖length‖MKDiges
t‖iv‖scd‖dataとして構築する。newK
eyを、NKeyForSealing=Crypto
Primitive.newKey(MKDiges
t,ctnrConstants.UsageMKMa
cServer)として構築する。
【0355】次いで、cryptoPrimitive
呼出しから以下のようにExpectedMacが得ら
れる。 expectedMac=CryptoPrimiti
ve.getHmac(NKeyForSealin
g,payload) macとexpectedMacが等しくない場合はC
ontainerExceptionを投げる。
【0356】private void parseB
uffer(byte[]buffer)は、到来して
バッファに記憶された封印されたコンテナを解析するた
めのヘルパ関数であり、このバッファは、opcode
‖format‖reserved‖length‖M
KDigest‖chpheredTextであり、c
iphered textは、暗号化された形の‖IV
‖SealersCodeDigest‖Dataから
なる。
【0357】予想どおりでない場合は、invalid
Opcode、invalidFormat、inva
lidLenを設定する。
【0358】public byte[]getRaw
ForNet()は、鍵ID、MK、および封印された
MkC(MkBuff)がヌルではないことをチェック
し、次いでsealメソッドを呼び出す。封印オペレー
ションで構築される以下のようなバッファを返す。 Opcode‖Format‖Length‖MKDi
gest‖IV‖SealersCodeDigest
‖Data‖mac‖pad
【0359】public byte getOpco
de()−コンテナのオペコードを返す。
【0360】public byte[]getMKD
igest()は、ContainerExcepti
onを投げる−コンテナからのPubMKDigest
を返す。
【0361】public byte[]getDat
a()は、ContainerExceptionを投
げる−コンテナからのデータを、必要なら開封して返
す。
【0362】public byte[]getM
K()は、ConteinerExceptionを投
げる−コンテナからのMKを返す。
【0363】public void setOpco
de(byte Opcode)は、Containe
rExceptionを投げる−有効範囲内にあるかど
うかチェックした後でコンテナに対するオペコードを割
り当てる。
【0364】public void setMKDi
gest(byte[]digest)は、Conta
inerExceptionを投げる−ヌルが渡された
場合またはlengthが20に等しくない場合は例外
を投げ、MKDigestを設定する。
【0365】public void setData
(byte[]Kid)は、ContainerExc
eptionを投げる−ヌルが渡された場合は例外を投
げ、データを設定する。
【0366】public void setMK(b
yte[]Mk)は、ContainerExcept
ionを投げる−ヌルが渡された場合またはlengt
hが16に等しくない場合は例外を投げ、MKを設定す
る。
【0367】private void log(in
t aWarningLevel,String me
ssage)は、パラメータとして渡された警告レベル
を現在の警告レベルと比較し、より緊急である場合はそ
れを出力する。
【0368】次に、OSDソフトウェアについて論じ
る。オペレーティング・システム・ドライバ(OSD)
は、システム10のコア・コンポーネントの1つであ
る。これは、動的にシステムにロードされるカーネル・
モード・ドライバである。この上端は、セキュリティ・
アプリケーションにセキュリティ・サービスを提供す
る。この下端は、低レベルのセキュリティ機能を提供す
るセキュリティBIOSとインターフェースする。オペ
レーティング・システム・ドライバが提供するサービス
には、RSAおよびRC6暗号関数、アプリケーション
保全性チェック、および乱数生成が含まれる。
【0369】このソフトウェア・オペレーティング環境
は、WDM Windows(登録商標)デバイス・ド
ライバなどのオペレーティング・システム・ドライバを
採用する。このデバイス・ドライバはまた、Windo
ws98、WindowsME、Windows200
0、および将来のMicrosoft Windows
オペレーティング・システムの元でも稼動する。
【0370】次に、オペレーションの理論について論
じ、OSDオペレーションのプロシージャについて概説
する。図2にクライアント・コンポーネント階層を示
す。
【0371】ここで、初期化について論じる。アプリケ
ーションは、OSD関数を呼び出す前に、OsdReg
isterApplication関数を呼び出すこと
によってそれ自体をオペレーティング・システム・ドラ
イバに登録する。オペレーティング・システム・ドライ
バは、アプリケーションを登録するために以下のことを
行う。プロセスIDなどのアプリケーション識別情報を
得る。
【0372】パラメータとして渡されるSignedC
ontainer中の鍵ダイジェストに基づいて、公開
鍵インデックスを得る。初期化中にオペレーティング・
システム・ドライバが生み出す鍵テーブルが、鍵ダイジ
ェストを鍵インデックスにマッピングする。BIOSR
awRSAPublicルーチンを呼び出して、Sig
nedContainer中のデータ・ブロックを開封
する。このデータ・ブロックは、アドレス範囲と、予想
されるコード・ダイジェストおよびPrivilege
BitVectorと、保全性チェックの頻度とを含
む。
【0373】アドレス範囲に基づいて、呼出し元アプリ
ケーションの部分のコード・ダイジェストを生み出す。
アプリケーションは、すべてのOSD関数呼出しが共に
近くなるように実装すべきであり、これはOSDサービ
ス呼出しブロック(SIB、Service Invo
cation Block)と呼ばれる。OSDサービ
ス呼出しブロックは、他のアプリケーションがそのSI
Bにジャンプしてそれ自体の目的にOSDのAPIを使
用することを防止するために、非総称的でなければなら
ない(そうであることが正式に必要とされる)。このS
IBは、呼出し側アプリケーションに特有の付加価値A
PIのセットである。
【0374】生み出したコード・ダイジェストと予想さ
れるコード・ダイジェストを比較する。これらが同じで
ある場合はアプリケーションを認証し、そうでない場合
はエラーを返す。アプリケーションが認証される場合、
登録済みアプリケーション・テーブルにエントリを追加
する。このエントリは、アプリケーションの識別情報
(プロセスID)、OSDサービス呼出しブロックのア
ドレス範囲、OSDサービス呼出しブロックおよびPr
ivilegeBitVectorのコード・ダイジェ
スト、保全性チェック頻度を含む。
【0375】次にサービス呼出しについて論じる。アプ
リケーションは、オペレーティング・システム・ドライ
バに登録した後、OSDサービスを要求することができ
る。オペレーティング・システム・ドライバは、その関
数が呼び出されるたびに以下のことを行う。
【0376】アプリケーションの保全性をチェックす
る。登録済みアプリケーション・テーブルからの保全性
チェック頻度に基づく。オペレーティング・システム・
ドライバは、アプリケーションのOSDサービス呼出し
ブロックのコード・ダイジェストを生み出すことによっ
てこれを行う。次いで、予想されるコード・ダイジェス
トと比較する。これらが同じであればアプリケーション
保全性はとれている。そうでない場合はエラーを返す。
【0377】Privilege Bit Vecto
rをチェックして、アプリケーションが特にこの関数を
呼び出す権限を有するかどうか調べる。OSDコードの
実行を継続して、要求を満たす。オペレーティング・シ
ステム・ドライバは、要求されたサービスに応じてセキ
ュリティBIOSルーチンを呼び出すこともできる。O
sdRandomAddNoise関数を呼び出す。こ
れは、PRNGの予測不能性を高めることになる。
【0378】次に、アプリケーションの登録解除につい
て論じる。アプリケーションは、適切に終了する前にO
sdUnregisterApplicationを呼
び出して、オペレーティング・システム・ドライバから
それ自体の登録を解除する。OSDドライバは、登録済
みアプリケーション・テーブル中のそのアプリケーショ
ンのエントリを除去する。
【0379】以下は、オペレーティング・システム・ド
ライバ(OSD)の機能についての詳細な記述である。
オペレーティング・システム・ドライバは、Windo
ws98、WindowsME、およびWindows
2000の元で稼動することのできるWDMカーネル・
モード・ドライバである。WDMは、WindowsN
Tによって階層化された32ビット・デバイス・ドライ
バ・モデルに基づいており、PNPおよび電力管理に対
するサポートが追加されている。オペレーティング・シ
ステム・ドライバはどんな物理デバイスも管理しないの
で、ハードウェア・リソースは割り振られない。オペレ
ーティング・システム・ドライバは1つのモジュールと
して実装される。クラス/ミニクラスのドライバの対は
ない。オペレーティング・システム・ドライバがシステ
ムにロードされると、機能デバイス・オブジェクト(F
DO)が生み出される。図3に、オペレーティング・シ
ステム・ドライバ・コンポーネントの対話を示す。
【0380】次に、登録済みアプリケーション・テーブ
ルの生成について論じる。オペレーティング・システム
・ドライバは、登録済みアプリケーションのテーブルを
維持する。登録済みアプリケーション・テーブルからの
アプリケーション・チェック頻度に基づき、オペレーテ
ィング・システム・ドライバは、呼出し元の保全性を定
期的にチェックする。呼出し元のOSDサービス呼出し
ブロックのアドレス範囲を得て、コード・ダイジェスト
を生み出す。次いで、登録済みアプリケーション・テー
ブルからの予想されるコード・ダイジェストを再度チェ
ックする。
【0381】次に、RSA暗号機能について論じる。オ
ペレーティング・システム・ドライバは、PubKco
ntainer封印を行うための(ただしエンロールメ
ントのためではない)インターフェース関数を実装し、
PubKContainerは、BIOS、AppCo
ntainer封印/開封、およびSignedCon
tainer開封において生み出される。しかし、セキ
ュリティBIOSには、すべてのRSA公開鍵/秘密鍵
アルゴリズムが実装される。オペレーティング・システ
ム・ドライバは、BIOSルーチンを呼び出して、コン
テナオペレーションを完了する。
【0382】オペレーティング・システム・ドライバ
は、MKContainerを封印/開封するためのR
C6アルゴリズム関数を実装する。これは、エンロール
メント中を除いては、BIOS中ではなくオペレーティ
ング・システム・ドライバ自体の中で行われ、BIOS
は、MKContainerを処理してマスタ鍵を保護
する。
【0383】次に、OSDインターフェースおよびAP
Iについて論じる。
【0384】このセクションでは、オペレーティング・
システム・ドライバの、システム・カーネルとのインタ
ーフェースおよびセキュリティBIOSとのインターフ
ェースについて述べる。このセクションはまた、ユーザ
モード・アプリケーションがOSDセキュリティ・サー
ビスを得るために呼び出すことのできるOSD API
関数も定義する。ここではまた、オペレーティング・シ
ステム・ドライバが実装すべき内部関数についても述べ
る。
【0385】オペレーティング・システム・ドライバの
上端インターフェースは、以下のように機能する。WD
Mモデルの元で、システムI/Oマネージャは、I/O
要求パケット(IRP)を生み出してデバイス・ドライ
バに送ることにより、デバイス・ドライバにI/O要求
を出す。OSDセキュリティ・サービスは、DEVIC
E_IO_CONTROLのIRPを送ることによって
呼び出すことができる。Device_IO_Cont
rolコードに対する各ハンドラ・ルーチンは、特定の
関数を提供する。オペレーティング・システム・ドライ
バIO_CONTROLコードは、以下のように定義さ
れる。
【0386】IOCTL_OSD_REGISTER_
APPLICATION:ハンドラ・ルーチンがアプリ
ケーションをオペレーティング・システム・ドライバに
登録して、BIOSルーチンを呼び出す。
【0387】IOCTL_OSD_UNREGISTE
R_APPLICATION:ハンドラ・ルーチンがア
プリケーションの登録をオペレーティング・システムか
ら解除する。
【0388】IOCTL_OSD_GET_PUBLI
C_KEY:ハンドラ・ルーチンが、鍵インデックスを
パラメータとして使用してBIOSから公開鍵をフェッ
チし、BIOSルーチンを呼び出す。
【0389】IOCTL_OSD_VERIFY_SI
GNED_DIGEST:ハンドラ・ルーチンがデータ
・ブロックのRASディジタル署名を検証する。BIO
Sルーチンを呼び出す必要がある。
【0390】IOCTL_OSD_RANDOM_GE
NERATE:ハンドラがPRNGを使用して乱数を生
成する。このハンドラは、PRNG実装に応じてBIO
Sルーチンを使用する場合もあり使用しない場合もあ
る。
【0391】IOCTL_OSD_PUBK_CONT
AINER_SEAL:ハンドラが、鍵インデックスで
指定された公開鍵を使用してコンテナ中のデータ・ブロ
ックを暗号化し、BIOSルーチンを呼び出す。
【0392】IOCTL_OSD_SIGNED_CO
NTAINER_UNSEAL:ハンドラ・ルーチン
が、許可されたサーバによって本当にコンテナが署名さ
れているかどうかを検証し、BIOSルーチンを呼び出
す。
【0393】IOCTL_OSD_APP_CONTA
INER_SEAL:ハンドラ・ルーチンが、マスタ鍵
から導出した鍵でAppContainerを封印し、
BIOSルーチンを呼び出す。
【0394】IOCTL_OSD_APP_CONTA
INER_UNSEAL:ハンドラ・ルーチンが、マス
タ鍵から導出した鍵でAppContainerを開封
し、BIOSルーチンを呼び出す。
【0395】IOCTL_OSD_APP_CONTA
INER_TRANSFER:ハンドラ・ルーチンが、
同じプラットフォームまたは異なるプラットフォーム上
で稼動する別のプログラムでしか開封できないAppC
ontainerを封印する。BIOSルーチンを呼び
出して、認証情報を含むSignedContaine
rを開封する。
【0396】IOCTL_OSD_MK_CONTAI
NER_SEAL:ハンドラ・ルーチンがマスタ鍵でコ
ンテナを封印する。実際の封印は、オペレーティング・
システム・ドライバ内部で行われる。BIOSルーチン
を呼び出して、マスタ鍵を得るためにAppConta
inerを開封する。
【0397】IOCTL_OSD_MK_CONTAI
NER_UNSEAL:ハンドラ・ルーチンがマスタ鍵
でコンテナを開封する。開封は、オペレーティング・シ
ステム・ドライバ内部で行われる。BIOSルーチンを
AppContainerに呼び出して、マスタ鍵を得
る。
【0398】IOCTL_OSD_ENROLL_GE
NERATE_REQUEST:ハンドラ・ルーチンが
BIOSルーチンを呼び出して、擬似SMK、メッセー
ジ鍵、およびSMKクライアント・シードを生成する。
【0399】IOCTL_OSD_ENROLL_PR
OCESS_RESPONSE:ハンドラ・ルーチンが
BIOSルーチンを呼び出して、このプラットフォーム
用のマスタ鍵を生成する。
【0400】IOCTL_OSD_INVALIDAT
E_SMK:ハンドラ・ルーチンがBIOS関数を呼び
出して、前のエンロールメントによって生成されたマス
タ鍵を無効にする。
【0401】IOCTL_OSD_SET_PUBLI
C_KEY:ハンドラ関数が追加のRSA公開鍵をBI
OS鍵テーブルにインストールする。
【0402】次に、オペレーティング・システム・ドラ
イバの下端インターフェースについて論じる。オペレー
ティング・システム・ドライバの下端インターフェース
上で、オペレーティング・システム・ドライバは、セキ
ュリティBIOSインターフェース・ルーチンを呼び出
して、低レベルのBIOSから提供されるセキュリティ
・サービスを得る。セキュリティBIOSインターフェ
ースは、32ビットのディレクトリ・サービス・インタ
ーフェースに基づいて実装されることになる。セキュリ
ティBIOSが提供するすべてのサービスに対して、関
数インデックスを定義すべきである。オペレーティング
・システム・ドライバは、システムにロードされるとき
に、セキュリティBIOSエントリ・ポイントを探索す
る必要がある。各ルーチン呼出しの前に、ペレーティン
グ・システム・ドライバは、セキュリティBIOS仕様
に基づいてレジスタ・コンテキストをセットアップする
必要がある。
【0403】次に、ユーザ・モードAPI関数について
論じる。ユーザ・モードAPIライブラリが実装され
る。セキュリティ・アプリケーションは、このライブラ
リ中の関数を呼び出すことにより、オペレーティング・
システム・ドライバが提供するセキュリティ・サービス
にアクセスすることができる。以下にAPI関数を記述
する。
【0404】int OsdRegisterAppl
ication(IN unsigned char*
pAuthorizationBuffer,IN u
nsigned int*pAuthorizatio
nBufferLength)
【0405】この関数は、アプリケーションをOSDコ
ードに登録する。これは、アプリケーションが認証され
ていることを検証し、OSDの維持する登録済みアプリ
ケーション・テーブルにアプリケーション情報を保存す
る。他のOSD呼出しは、登録済みアプリケーション内
のある位置または別のOSD関数から呼び出されたとき
しか機能しないことになる。この関数は、登録が成功し
た場合は0を返す。そうでない場合はエラーを返す。p
AuthorizationBufferおよびpAu
thorizationBufferLengthのパ
ラメータは、デバイス・オーソリティ・サーバによって
生み出されたSignedContainerの位置お
よび長さを指定する。
【0406】この関数は、IOCTL_OSD_REG
ISTER_APPLICATIONを使用してOSD
サービスを呼び出す。
【0407】int OsdGetCapabilit
ies(OUT unsigned short*pV
ersion,OUT unsigned short
*pCapabilities)
【0408】この関数は、OSDバージョン番号および
OSD CR能力およびシステム状況を返す。
【0409】バージョン番号は以下のように定義され
る。 第1バイト 第2バイト マイナー・バージョン メジャー・バージョン
【0410】CapabilitiesのWORDは、
15ビットを有すると定義される。ビット0は、システ
ムがすでに首尾よくエンロールしたことを示す。1は成
功、0は失敗である。ビット1はエンロールメント・タ
イプを示す。0はオフライン・エンロールメント、1は
オンライン・エンロールメントである。ビット2〜15
は予約されている。
【0411】この関数は、IOCTL_OSD_GET
_CAPABILITIESを使用してOSDサービス
を呼び出す。
【0412】int OsdUnregisterAp
plication()関数は、呼出し元のエントリを
登録済みアプリケーション・テーブルから除去すること
によって、呼出し元の登録を解除する。この関数は、I
OCTL_OSD_UNREGISTER_APPLI
CATIONを使用してOSDサービスを呼び出す。
【0413】int OsdGetPublicKey
(IN int nKeyIndex,OUT uns
igned char*pModulusBuffe
r,IN/OUT unsigned int*pMo
dulusBufferLength,OUT uns
igned int*pExponent)
【0414】この関数は、鍵テーブルのnKeyInd
ex行に位置するRSA公開鍵を首尾よくフェッチした
場合に0を返す。公開鍵の法(1024ビットの数)を
指定バッファ中に返し、公開鍵の指数(3と65537
のいずれか)をpExponentで識別される位置に
置く。pMudulusBufferLengthで識
別される位置は、最初にpModulusBuffer
の最大長さにバイトで設定され、呼出しが返った後、実
際に使用されるバイト数に設定される。0以外の戻り値
はエラーを示す。鍵の法は、最上位バイト(MSB)を
先にしてバッファにコピーされる。nKeyIndex
の値は、0で始まり、フラッシュROMからロードされ
る鍵に対して順次増加する。負のnKeyIndexの
値は、OSが稼動した後でWDLのOSDセキュリティ
・モジュールによってSMM公開鍵テーブルにロードさ
れる鍵を参照する。
【0415】このルーチンは、アプリケーションがX.
509証明書から知る公開鍵に対応するnKeyInd
exをアプリケーションが突き止めるのに使用すること
ができる。
【0416】この関数は、呼出し元が登録済みアプリケ
ーションまたは別のOSDルーチンででない場合はエラ
ーを返す。この関数は、呼出し元コードのSHA1ダイ
ジェストが登録時から変化していないことを定期的に検
証する。
【0417】この関数は、IOCTL_OSD_GET
_PUBLIC_KEYを使用してOSDサービスを呼
び出す。
【0418】int OsdRSAVerifySig
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)
【0419】この関数は、RSAディジタル署名を検証
する。これは、PKCS#1フォーマットされたRSA
公開鍵オペレーションを行い、pSignedDige
stBufferおよびpSignedDigestB
ufferLengthで指定されるデータ・バッファ
を、nKeyIndexで指定される公開鍵を使用して
解読して、合致する秘密鍵を使用して暗号化された予想
ダイジェスト値を抽出する。この予想ダイジェスト値
を、pDigestBufferおよびpDigest
BufferLengthのパラメータで指定される値
と比較する。これらが等しい場合は0を返す。そうでな
い場合は0以外のエラー・コードを返す。このルーチン
はまた、nKeyIndexが無効である場合にもエラ
ーを返す。pDigestBufferおよびpDig
estBufferLengthの値は、OsdSHA
1Finalルーチンを呼び出すことで得られる。
【0420】pSignedDigestBuffer
中のデータはMSBから先に記憶され、これは選択され
た公開鍵に対する法とちょうど同じ長さにならなければ
ならない。
【0421】この関数は、呼出し元が登録済みアプリケ
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。
【0422】この関数は、IOCTL_OSD_VER
IFY_SIGNED_DIGESTを使用してOSD
サービスを呼び出す。
【0423】int OsdDigestInit(O
UT DigestContext*pDigestC
ontext)
【0424】この関数は、どんなアプリケーションから
でも呼び出すことができる。これは、SHA1ダイジェ
スト値を計算するのに使用される呼出し元アドレス空間
中のデータ構造を初期化する。
【0425】呼出し元はこのデータ構造を変更すること
ができ、したがってOSDモジュールは、結果が正しい
ことに依拠することはできない。アプリケーションがこ
れらのSHA1ルーチンを使用して署名を検証すると
き、アプリケーションは、それ自体を信用して正しいダ
イジェスト値を計算し、次いで、オペレーティング・シ
ステム・ドライバを(かつBIOS SMIセキュリテ
ィ・モジュールを)信用して正しいRSA公開鍵で計算
する。OSDレイヤが新しいアプリケーションを登録し
ているとき、データ構造はオペレーティング・システム
・ドライバのメモリ中に保持され、したがってオペレー
ティング・システム・ドライバは結果を信用することが
できる。DigestContextデータ構造の定義
については、セクション8を参照されたい。
【0426】int OsdDigestUpdate
(IN DigestContext*pDigest
Context,IN unsigned char*
pBuffer,IN unsigned int*p
BufferLength)
【0427】この関数は、どんなアプリケーションから
でも呼び出すことができる。これは、呼出し元のアドレ
ス空間中のデータ構造を使用して、pBufferおよ
びpBufferLengthのパラメータで指定され
るデータ・バイトをそれにフィードすることにより、S
HA1ダイジェスト・オブジェクトの状態を更新する。
【0428】pBufferLengthは、このルー
チンを呼び出す前にバッファ中のバイト数のカウントで
埋めなければならない位置へのポインタである。このル
ーチンがこの位置を変更することはなく、したがってこ
の長さは、参照によってではなく直接に渡すこともでき
る。しかしこの設計では、インターフェースをより一様
なものにするために、すべてのバッファ長の値を参照に
よって渡す。
【0429】int OsdDigestFinal
(IN DigestContext*pDigest
Context,OUT unsigned char
*pDigestBuffer,IN/OUT uns
igned int*pDigestBufferLe
ngth)
【0430】この関数は、どんなアプリケーションから
でも呼び出すことができる。これは、呼出し元のアドレ
ス空間中のデータ構造を使用して、OsdDigest
Updateルーチンへの0回またはそれ以上の呼出し
において渡される場合のあるデータ・ブロックのSHA
1ダイジェストの最終結果を計算する。これは、パディ
ングおよび全長を(ビットで)付加して最終的なダイジ
ェスト・オペレーションを行うことにより、データ構造
のバッファ中に残っているどんなバイトも処理する。結
果は、pDigestBufferおよびpDiges
tBufferLengthのパラメータで指定される
バッファ中に配置する。この関数を呼び出す前は、pD
igestBufferLengthは、最大サイズの
pDigestBufferを指定する位置を指し、首
尾よく完了した後は、この位置はバッファ中に配置され
たバイトの数に設定される。SHA1ダイジェストの場
合、結果は20バイト長になる。
【0431】int OsdRandomGenera
te(OUT unsigned char*pDat
aBuffer,IN unsigned int*p
DataBufferLength)
【0432】この関数は、オペレーティング・システム
・ドライバの擬似乱数発生器を使用して、pDataB
ufferLengthパラメータで指定されるバイト
数で指定のデータ・バッファを埋める。
【0433】pDataBufferLengthが2
0バイト以下の場合は、以下のステップを1回行い、R
esultBlockの先頭バイトをpDataBuf
ferにコピーして、残りは廃棄する。20バイトより
多く必要な場合は、以下のステップを必要なだけ繰り返
す。StateBlockおよびResultBloc
kは、両方とも20バイトの値である。StateBl
ockは、PRNGのグローバル状態を表す。
【0434】ResultBlock=SHA1(St
ateBlock‖StateBlock) StateBlock=StateBlock xor
SHA1(StateBlock‖ResultBl
ock) pDataBufferが埋められているときは、Os
dRandomAddNoiseを呼び出すことによっ
て終了する
【0435】この関数は、呼出し元が登録済みアプリケ
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。
【0436】この関数は、IOCTL_OSD_RAN
DOM_GENERATEを使用してOSDサービスを
呼び出す。
【0437】int OsdPubKContaine
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)
【0438】この関数は、デバイス・オーソリティ・サ
ーバから送られたデータが他のクライアントには読めな
いことを確実にするために使用する。このコンテナを開
封するのに必要な秘密鍵は、デバイス・オーソリティ・
サーバだけが知っている。pContainerBuf
ferパラメータは、開封されたPubKContai
ner構造を保持するメモリ・ブロックを指す。呼出し
元は、PubKContainerのセクションで述べ
た様々なフィールドを埋めるべきである。このセクショ
ンにはまた、この関数によって行われるステップも述べ
てある。nKeyIndexは、このコンテナを封印す
るのに使用すべき公開鍵を識別する。
【0439】pContainerBufferLen
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
【0440】pMKBufferおよびpMKBuff
erLengthのパラメータは、このPubKCon
tainer用に生成されたマスタ鍵を保護するApp
Containerで埋められるバッファを指定する。
この情報を使用して、同じマスタ鍵を有するMKCon
tainerを生み出す。
【0441】このルーチンは、OsdRandomAd
dNoise()を呼び出すことによって終了する。こ
の関数は、呼出し元が登録済みアプリケーションまたは
別のOSDルーチンでない場合はエラーを返す。この関
数は、呼出し元コードのSHA1ダイジェストが登録時
から変化していないことを定期的に検証する。この関数
は、IOCTL_OSD_PUBK_CONTAINE
R_SEALを使用してOSDサービスを呼び出す。
【0442】int OsdSignedContai
nerUnseal(IN/OUT unsigned
char*pContainerBuffer,IN
/OUT unsigned int*pContai
nerBufferLength)
【0443】この関数は、コンテナが本当にサーバによ
って署名されたことを検証するのに使用する。これは、
署名が有効でない場合はエラーを返す。SignedC
onntainerのフォーマットおよびこの関数によ
って行われるステップについては、SignedCon
tainerのセクションに述べてある。
【0444】pContainerBufferLen
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
【0445】このルーチンは、OsdRandomAd
dNoise()を呼び出すことによって終了する。こ
の関数は、呼出し元が登録済みアプリケーションまたは
別のOSDルーチンでない場合はエラーを返す。この関
数は、呼出し元コードのSHA1ダイジェストが登録時
から変化していないことを定期的に検証する。この関数
は、IOCTL_OSD_SIGNED_CONTAI
NER_UNSEALを使用してOSDサービスを呼び
出す。
【0446】int OsdMKContainerS
eal(IN/OUT unsigned char*
pContainerBuffer,IN/OUT u
nsigned int*pContainerBuf
ferLength,IN unsigned cha
r*pMKBuffer,IN unsigned i
nt*pMKBufferLength)
【0447】この関数は、マスタ鍵を知っている他者だ
けしかコンテナを開封できないようにコンテナを封印す
ることになる。この鍵は、デバイスおよびサーバが知っ
ているマスタ鍵としてもよく、あるいは、クライアント
によって生成されてPubKeyContainer中
でサーバに送られる新しい鍵としてもよい。入力時は、
pContainerBufferパラメータは、開封
されたMKContainer構造を保持するメモリ・
ブロックを指す。出力時は、コンテナは封印される。呼
出し元は、MKContainerに関するセクション
で述べた様々なフィールドを埋めるべきである。このセ
クションにはまた、この関数によって行われるステップ
も述べてある。この関数は、鍵使用に対するクライアン
ト定数も使用する。
【0448】pContainerBufferLen
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
【0449】pMKBufferおよびpMKBuff
erLengthのパラメータは、OsdPubKCo
ntainerSeal関数への呼出しによって生成さ
れたマスタ鍵を保護するAppContainerを保
持するバッファを指定する。このルーチンは、OsdR
andomAddNoise()を呼び出すことによっ
て終了する。この関数は、呼出し元が登録済みアプリケ
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。この関数は、IOCTL_OSD_MK_CON
TAINER_SEALを使用してOSDサービスを呼
び出す。
【0450】int OsdMKContainerU
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)
【0451】この関数は、別のエンティティによって所
与のマスタ鍵を使用して封印されたコンテナを開封する
ためのものである。入力時は、pContainerB
ufferパラメータは、封印されたMKContai
ner構造を保持するメモリ・ブロックを指す。出力時
は、コンテナは開封される。開封されたフォーマットに
ついては、MKContainerに関するセクション
を参照されたい。このセクションにはまた、この関数に
よって行われるステップも述べてある。パラメータwa
sSealedByServerが0の場合は、このル
ーチンによって使用される鍵使用定数はクライアント定
数である。そうでない場合は、これらはサーバ定数であ
る。詳細については鍵使用定数に関するセクションを参
照されたい。
【0452】pContainerBufferLen
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
【0453】pMKBufferおよびpMKBuff
erLengthのパラメータは、OsdPubKCo
ntainerSeal関数への呼出しによって生成さ
れたマスタ鍵を保護するAppContainerを保
持するバッファを指定する。
【0454】このルーチンは、OsdRandomAd
dNoise()を呼び出すことによって終了する。こ
の関数は、呼出し元が登録済みアプリケーションまたは
別のOSDルーチンでない場合はエラーを返す。この関
数は、呼出し元コードのSHA1ダイジェストが登録時
から変化していないことを定期的に検証する。この関数
は、IOCTL_OSD_MK_CONTAINER_
UNSEALを使用してOSDサービスを呼び出す。
【0455】int OsdAppContainer
Seal(IN/OUT unsigned char
*pContainerBuffer,IN/OUT
unsigned int*pContainerBu
fferLength)
【0456】この関数は、同じデバイス上で稼動してい
る同じプログラムによってしか開封できないようにコン
テナを封印するためのものである。入力時は、pCon
tainerBufferパラメータは、開封されたA
ppContainer構造を保持するメモリ・ブロッ
クを指す。出力時は、コンテナは封印される。呼出し元
は、AppContainerに関するセクションで述
べた様々なフィールドを埋めるべきである。このセクシ
ョンにはまた、この関数によって行われるステップも述
べてある。この関数は、鍵使用に対するクライアント定
数も使用する。
【0457】pContainerBufferLen
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
【0458】このルーチンは、OsdRandomAd
dNoise()を呼び出すことによって終了する。こ
の関数は、呼出し元が登録済みアプリケーションまたは
別のOSDルーチンでない場合はエラーを返す。この関
数は、呼出し元コードのSHA1ダイジェストが登録時
から変化していないことを定期的に検証する。この関数
は、IOCTL_OSD_APP_CONTAINER
_SEALを使用してOSDサービスを呼び出す。
【0459】int OsdAppContainer
Unseal(IN/OUT unsigned ch
ar*pContainerBuffer,IN/OU
T unsigned int*pContainer
BufferLength,IN int wasSe
aledByServer)
【0460】この関数は、このマシン上で稼動するこの
アプリケーションによって、または特にこのマシン上の
このアプリケーションのためにサーバによって封印され
たコンテナを開封するためのものである。入力時は、p
ContainerBufferパラメータは、封印さ
れたAppContainer構造を保持するメモリ・
ブロックを指す。出力時は、コンテナは開封される。開
封されたフォーマットについては、AppContai
nerに関するセクションを参照されたい。このセクシ
ョンにはまた、この関数によって行われるステップも述
べてある。パラメータwasSealedByServ
erが0の場合は、このルーチンによって使用される鍵
使用定数はクライアント定数である。そうでない場合
は、これらはサーバ定数である。
【0461】pContainerBufferLen
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
このルーチンは、OsdRandomAddNoise
()を呼び出すことによって終了する。この関数は、呼
出し元が登録済みアプリケーションまたは別のOSDル
ーチンでない場合はエラーを返す。この関数は、呼出し
元コードのSHA1ダイジェストが登録時から変化して
いないことを定期的に検証する。この関数は、IOCT
L_OSD_APP_CONTAINER_UNSEA
Lを使用してOSDサービスを呼び出す。
【0462】int OsdAppContainer
Transfer(IN/OUT unsigned
char*pContainerBuffer,IN/
OUT unsigned int*pContain
erBufferLength,IN unsigne
d char*pAuthorizationBuff
er,IN unsigned int*pAutho
rizationBufferLength)
【0463】この関数は、同じデバイス上で稼動する異
なるプログラムによって開封できるようにコンテナを封
印するのに使用する。コンテナの元の所有者は、それを
開く能力を開放する。元の所有者は当然、コンテナのコ
ピーを作成してそのコピーを開閉し続けることができる
が、転送されるコンテナは異なる鍵で暗号化されること
になり、したがって新しい所有者だけしかそれを開ける
ことはできない。この機能は、安全なキーボード・リー
ダ・モジュールを使用してキーストロークを取り込み、
それらを正しいアプリケーションに安全に転送すること
によって使用することができる。
【0464】入力時は、pContainerBuff
erパラメータは、開封されたAppContaine
r構造を保持するメモリ・ブロックを指す。出力時は、
コンテナは封印される。呼出し元は、AppConta
inerに関するセクションで述べた様々なフィールド
を埋めるべきである。このセクションにはまた、この関
数によって行われるステップも述べてある。この関数
は、鍵使用に対するクライアント定数も使用する。この
関数は、新しい所有者に使用されるようにコンテナを封
印する前に、呼出し元が現在そのコンテナを所有するこ
とを(DecryptedCodeDegestをチェ
ックして)確認する。
【0465】pAuthorizationBuffe
rおよびpAuthorizationBufferL
engthのパラメータは、デバイス・オーソリティ・
サーバによって生み出されたSignedContai
nerの位置および長さを指定する。詳細については、
保護されたコンテナに関する設計文書を参照されたい。
オペコードはOpcOsdAllowTransfer
であり、このコンテナの中のデータは、この関数を呼び
出しているプログラムのAppCodeDigest
と、このコンテナを開封できるプログラムのAppCo
deDigestとを指定する。コンテナのSeale
rsCodeDigestフィールドは、この関数を呼
び出したプログラムを識別することになる。
【0466】pContainerBufferLen
gthは、入力時は、コンテナ・バッファにちょうど収
まる最大バイト数を含む位置を指す。出力時は、pCo
ntainerBufer中で使用される実際のバイト
数を含む。pContainerBuffer中の情報
は、保護しなければならないデータの長さを記述する。
このルーチンは、OsdRandomAddNoise
()を呼び出すことによって終了する。この関数は、呼
出し元が登録済みアプリケーションまたは別のOSDル
ーチンでない場合はエラーを返す。この関数は、呼出し
元コードのSHA1ダイジェストが登録時から変化して
いないことを定期的に検証する。
【0467】int OsdEnrollGenera
teRequest(OUT unsigned ch
ar*pPubKContainerBuffer,I
N/OUT unsigned int*pPubKC
ontainerBufferLength)
【0468】この関数は、擬似SMK、マスタ鍵のクラ
イアント・シード、およびセッション・マスタ鍵を生成
することになる。これは、マスタ鍵のクライアント・シ
ードおよびセッション・マスタ鍵を有する封印されたP
ubKContainerと、セッション・マスタ鍵を
有する封印されたAppContainerとを返す。
PubKContainerは、デバイス・オーソリテ
ィ・サーバに送られる。BIOSは、クライアント・シ
ードおよびマスタ鍵をSMRAMに保存する。入力時、
pPubKcontainerBufferおよびpA
ppContainerBufferは、バッファを指
す。pPubKContainerBufferLen
gthおよびpAppContainerBuffer
Lengthは、これらのバッファの長さを有する位置
を指す。出力時、返されたContainerでバッフ
ァを埋めるべきである。
【0469】この関数は、成功の場合は返し、そうでな
い場合はエラーを返す。この関数は、IOCTL_OS
D_ENROLL_GENERATE_REQUEST
を使用してOSDサービスを呼び出す。
【0470】int OsdEnrollProces
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)
【0471】この関数は、SMIルーチンを呼び出して
マスタ鍵を生成し、それをSMRAMに保存する。この
ルーチンは、鍵ID(SMKのハッシュ)とその他のデ
ータとを有するSealedAppContainer
を生み出すことになる。
【0472】入力時、pContainerBuffe
rは、オンライン・エンロールメント中はデバイス・オ
ーソリティ・サーバから送られたMKContaine
rを記憶するバッファを指し、あるいはオフライン・エ
ンロールメント中は擬似サーバ・シードを有するSig
nedContainerを記憶するバッファを指す。
pContainerBufferLengthは、こ
のバッファの長さを指定する。出力時、pAppCon
tainerBufferは、鍵IDを含む封印された
AppConainerを記憶する。pPubCont
ainerBufferは、オフライン・エンロールメ
ント中はサーバ・シードおよびクライアント・シードを
含むバッファを指す。このポインタは、オンライン・エ
ンロールメント中はNULLとすることができる。
【0473】この関数は、IOCTL_OSD_ENR
OLL_PROCESS_RESPONSEを使用して
OSDサービスを呼び出す。
【0474】int OsdInvalidateSM
K()
【0475】この関数は、前のエンロールメントによっ
て生成されたマスタ鍵を無効にする。この関数は、IO
CTL_OSD_INVALIDATE_SMKを使用
してOSDサービスを呼び出す。
【0476】int OsdSetPublicKey
(IN unsigned int nKeyInde
x,IN unsigned char*pKeyBu
ffer,IN unsigned int*pKey
BufferLength)
【0477】この関数は、nKeyIndexで指定さ
れるRSA公開鍵を置換するか、あるいはBIOS鍵テ
ーブルに新しい鍵を追加する。入力時、nKeyInd
exは、置換または追加する鍵を指定する。pKeyB
ufferは鍵バッファを指定する。pKeyBuff
erLengthはバッファ長を示す。
【0478】次に、内部関数について論じる。以下の関
数は、OSDドライバから内的に呼び出される。これら
はユーザ・アプリケーションには見えない。
【0479】int OsdInitialize(v
oid) この関数は、オペレーティング・システム・ドライバの
状態を初期化する。オペレーティング・システム・ドラ
イバがシステムにロードされた後、オペレーティング・
システム・ドライバはこの関数を呼び出す。この関数
は、BIOSレイヤに登録し、PRNGを初期化する。
PRNGは、StateBlockを0にし、保存され
ているエントロピーをセマフォ・ファイルから読み、そ
れをバイナリに変換してOsdRandomAddSe
ed関数に渡すことによって初期化される。エントロピ
ーが保存されていない場合は、オペレーティング・シス
テム・ドライバは、エントロピー・バイトを集め、Os
dRandormAddSeedを呼び出し、次いでO
sdRandomSaveEntropyを使用してエ
ントロピーをセマフォ・ファイルに保存するという、ス
ロー・プロセスを行う。
【0480】int OsdRandomAddNoi
se(void) この関数は、WDLのOSD Securityルーチ
ンそれぞれの最後に呼び出される。これは、攻撃者にと
っていくぶん予測不能なグローバル情報を追加すること
により、グローバルPRNGの予測不能性を高めるのに
役立つ。
【0481】新しいコンテキストでOsdDigest
Initを呼び出す。OsdDigestUpdate
を呼び出してStateBlockを渡す各クイック・
エントロピー・ソースごとに;OsdDigestUp
dateを呼び出して、クイック・エントロピーの値
(32ビットまたは64ビットの値)を渡す。最後のク
イック・エントロピー・ソースを処理した後、OsdD
igestFinalを呼び出してResultBlo
ckを生成する。
【0482】State Block=StateBl
ock xor ResultBlock
【0483】クイック・エントロピー・ソースは、CP
Uサイクル・カウンタと、キャッシュ・ミス・カウント
などのCPU統計と、システム・クロックのすべてのビ
ットを含む。新しいStateBlockは、古いブロ
ックとダイジェスト値との排他的論理和の結果である。
排他的論理和によって古いブロックを新しいブロックに
混ぜることにより、新しい状態の予測不能性が古い状態
に劣らないことを保証する(ダイジェスト関数に対して
適度な特性を仮定した場合)。対照的に、式State
Block=SHA1(StateBlock)は、予
測不能性の程度を低くする場合がある。これは、SHA
1がランダム関数のように挙動し、それにより2つの入
力値が同じ出力値にマッピングされる可能性があるから
である。各反復で、可能性のある出力はより少ない。
【0484】マザーボードまたはCPUがハードウェア
RNGをサポートする場合、このハードウェア値を含め
るべきである。すぐに利用可能な程度のランダム性だけ
を追加する。
【0485】この関数は、呼出し元が登録済みアプリケ
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。
【0486】int OsdRandomAddSee
d(IN unsigned char*pDataB
uffer,IN unsigned int*pDa
taBufferLength) この関数は、オペレーティング・システム・ドライバの
PRNGの状態を更新する。これは以下のステップを行
う。
【0487】StateBlock=StateBlo
ck xor SHA1(StateBlock‖pD
ataBuffer) すなわち、SHA1コンテキストを初期化し、それをS
tateBlockと所与のバッファ中のバイトとで更
新する。
【0488】OsdRandomAddNoise()
を呼び出す。この関数は、呼出し元が登録済みアプリケ
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。
【0489】int OsdRandomSaveEn
tropy() この関数は、オペレーティング・システム・ドライバの
グローバルPRNGからの情報をセマフォ・ファイルの
フィールドに保存する。これは、生のStateBlo
ckは保存しない。そうすると、オペレーティング・シ
ステム・ドライバが同じシーケンスのランダム・バイト
を再使用することを引き起こす可能性があるからであ
る。そうではなく、現在の(160ビット)の状態から
生成された32バイト(256ビット)の値を保存す
る。値からPRNGを再開しても同じバイトは再生され
ない。基本的なステップは以下のとおりである。
【0490】OsdRandomGenerateを呼
び出して、ランダム・バイトの32バイト・バッファを
要求する これらのバイナリ・バイトを64個の16進数ASCI
I文字にエンコードする これらの文字をセマフォ・ファイルのフィールドに保存
する OsdRandomAddNoise()を呼び出す
【0491】この関数は、呼出し元が登録済みアプリケ
ーションまたは別のOSDルーチンでない場合はエラー
を返す。この関数は、呼出し元コードのSHA1ダイジ
ェストが登録時から変化していないことを定期的に検証
する。
【0492】次に、データ・フォーマットについて論じ
る。以下は、本発明で使用されるデータ構造およびフォ
ーマットについての記述である。
【0493】Authorization Buffe
rはSignedContainerである。表14
に、このコンテナ中のデータ・ブロックを定義する。表
15に、登録済みアプリケーション・テーブルのエント
リを定義する。このテーブルは、リンク・リストとして
実装することができる。
【0494】本発明は、以下の問題に対処する。問題の
1つは、アプリケーション・コードをオペレーティング
・システム・ドライバからどのように読み取るかという
ことである。カーネル・モードのOSDがトップ・レベ
ルのドライバとしてPASSIVE_LEVELで稼動
する限り、これは、ユーザ・モードのアドレス空間を読
み取ることができる。
【0495】もう1つの問題は、呼び出し側のエントリ
・ポイントを得る方法である。appがDeviceI
OControlシステム関数を呼び出したとき、これ
はリング3からリング0へ切り換える。異なるリングに
対して、ハードウェアが異なるスタックを実施する。オ
ペレーティング・システム・ドライバが、ユーザ・モー
ド・スタックまで戻って追跡して、エントリ・ポイント
を得る。これは、DeviceIOControlの実
施、すなわち、これが有するスタック・フレーム(関数
呼び出し)の数に依拠する。以下の4つの可能なソリュ
ーションが使用可能である。すなわち、(1)たとえば
例外を通じて、命令をエミュレートする。(2)BIO
Sルーチンを、ドライバを介して行うのではなく、ユー
ザ・モードから直接呼び出す。(3)INTゲートをセ
ットアップする。割込みハンドラをセットアップし、す
べての関数がソフト割込みによる呼び出し側となる。
(4)OSD空間におけるユーザ・コードを検証し、実
行する。このソリューションには、Win32 API
と同じ問題がある。
【0496】以下に提示したものは、MFCA VPN
製品におけるアプリケーション登録モジュール(AR
M)コンポーネントの説明である。このアプリケーショ
ン登録モジュールは、Strong Authenti
cation Module(SAM)を、クライアン
ト・デバイスと暗号化可能なサーバの間で交換される安
全なAppContainerへのアクセスを提供する
ことにおいて支援する。
【0497】アプリケーション登録モジュールは、Ap
pContainer鍵を、VPNなどのサーバ・アプ
リケーションへのアクセスが可能とされているクライア
ント・デバイスに提供することを担う。アプリケーショ
ン登録モジュールはSAMと、SSLなどの安全な通信
チャネルを介して通信する。
【0498】図4は、多元的クライアント認証(MFC
A)登録を例示するブロック図である。図4は、様々な
モジュールがアプリケーション登録モジュールと相互作
用する方法を示す。
【0499】SAMおよびアプリケーション登録モジュ
ールは、クライアント/サーバ関係を有する。アプリケ
ーション登録モジュールはインターネット・サーバであ
り、いくつかのサービスを異なる企業のSAMへ公開す
る。この目的は、クライアントおよびSAMを特定の企
業への特定のデバイスの登録中に助けることである。最
終的な結果は、SAMに適切なApp鍵を提供して、登
録中のデバイスにおけるコンテナを封印かつ開封するこ
とである。このオペレーションは、各デバイス/企業の
組み合わせにつき一度のみ実行される。
【0500】コンポーネントは、以下の順序で呼び出さ
れる。SSL接続ベリファイヤが、正当なSAMがアプ
リケーション登録モジュールへ、SSL接続を介して通
信中であることをチェックする。アプリケーション登録
モジュールへの他のすべての形式の接続が再検出される
べきである。AppContainer鍵プロバイダ
は、受信されたpubKContainerを使用し
て、第1にいくつかのチェックを企業において実行し、
次いで第2にAppContainerKeyを準備
し、最後にこれがSAMへ送信され戻される。
【0501】アプリケーション登録モジュールへのエン
トリ・ポイントは、AppContainerKeyR
equestなど、特定のURLを含む。
【0502】たとえば、https://arms.D
eviceAuthority.com/arm/Ap
pContainerKeyRequestというUR
Lは、その本体において、クライアント・システムによ
って生成されたPubKContainer()、およ
び、SAMによって提供されたいくつかの特別の情報を
有する。
【0503】ClientCert処理/認証/権限付
与のオペレーションの理論を以下に論じる。アプリケー
ション登録モジュールの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
のチェックをうまく終了する。
【0504】この証明パスのチェック中に、mod_s
slが、構成された証明書取り消しリスト(CRL)を
調べる。CRLは、サブスクリプション・マネージャが
SAMを取り消す(たとえば、SAMを購入した会社が
廃業する)たびに、更新されなければならない。サブス
クリプション・マネージャは、そのCRLを格納するU
RLを有する。このURLは、SAM.ClientC
ertの内部に格納される。アプリケーション登録モジ
ュールは、このファイルをこのURLから定期的に得
る。
【0505】認証は、デバイス・オーソリティRoot
CAおよびSubscription Manage
r.CAの組み合わせによって提供され、SAM.Cl
ientCertは、構造により、SAMの証明書であ
る。これは、VerisignをRootCAとして使
用していた場合、当てはまらない。
【0506】権限付与は、デバイス・オーソリティRo
otCA、Subscription Manage
r.CA、およびSubscription Mang
er.CRLの組み合わせによって提供され、SAM
は、アプリケーション登録モジュールがSAM.Cli
entCertを有しており、かつ、これがSubsc
ription Manager.Certifica
teRevocationList上にない場合、この
アプリケーション登録モジュールに接触するための権限
を付与される。
【0507】SSL接続ベリファイヤ。これは、サーブ
レットから呼び出されるjavaクラスである。これは
所与の接続の認証情報を確認するため、サーブレットに
APIを提供する。このサーブレットが、ssl接続に
ついての情報を保持するように、少なくとも要求オブジ
ェクトにそれを渡す。この情報を使用して、SslCo
nnectionVerifierは、接続したクライ
アントが先に登録されたものであるかどうかを決定す
る。
【0508】接続ベリファイヤは、いかなる失敗した試
みも記録する。成功した試みは、デバッギングのために
記録される。ベリファイヤがオブジェクトを返し、これ
が、接続中のクライアント(SAM)についての情報を
提供する。ベリファイヤはまた、要求から入手可能ない
かなるユーザ名情報も取り込む。これをClientC
ertマネージャ・サーブレットが使用する。
【0509】入力は、サーブレット要求オブジェクトで
ある。これは、SSLクライアント証明書情報、およ
び、ユーザ名/パスワードが使用されてこの要求が行わ
れた場合、ユーザについての情報を保持する。出力は、
SslConnectionVerifierオブジェ
クトであり、これは、IsSslOk()、GetCe
rtInfo()、IsUserAuthentica
ted()、GetUserInfo()などのメソッ
ドを有する。SslConnectionVerifi
erは、x509クライアント証明書のすべてのフィー
ルドへのアクセスを有する。
【0510】AppContainerKeyプロバイ
ダ・サーブレットが、アプリケーション登録モジュール
用の鍵を分配する。これは、ARMモジュールのメイン
・エントリ・ポイントである。これは、SslConn
ectionVerifierを呼び出す。この入力ス
トリームから、これはpubkc()を受信し、これ
が、クライアント・デバイスのpubkc()を転送し
たSAMについての情報を保持する。このSAM情報は
企業フィールドを有し、これはSslConnecti
onVerifierオブジェクトが知っている情報と
無矛盾である。Enforcerを呼び出し、これに、
SslVerifierからのすべての情報、およびp
ubkc()からの情報も渡す。Enforcerの結
果に基づいて、次いで、このサーブレットがAppCo
ntainerKeyを暗号エンジンから要求する。p
ubkc()内にあった鍵ID+ACDが、暗号エンジ
ンに渡される。AppContainerKeyが、S
SL接続を介してSAMに返される。
【0511】入力はInputStream(サーブレ
ットAPIから)に鍵ID、企業情報およびACDを保
持するPubKC()が付いたものである。要求オブジ
ェクト(サーブレットAPIから)が、現在の接続(S
SLなど)についての情報を保持する。出力は、App
ContainerKeyをoutputStream
(サーブレットAPIから)に返し、データベースにお
いて使用されたライセンスの数を修正する。
【0512】サブスクリプション・マネージャは、St
rong Authentication Modul
e(SAM)がライセンスを管理するために必要とされ
る情報を収集する。これらのライセンスは、MFCA製
品におけるアプリケーション登録モジュール(ARM)
からSAMによって要求することができるAppCon
tainerKeyの数を制御する。アプリケーション
登録モジュールは、AppContainer鍵を、V
PNへのアクセスが可能にされているクライアント・デ
バイスに提供することを担う。
【0513】SAMを購入する会社にライセンスを販売
することが許可されている販売員は、通常、サブスクリ
プション・マネージャへのWebユーザ・インターフェ
ースを使用する。このインターフェースは、会社につい
ての情報、ライセンスの数、それらの有効期限日、販売
員ID、およびSAM識別(クライアント証明書署名要
求)を収集し、後にこれらをアプリケーション登録モジ
ュールが使用して、何のSAMがAppContain
erKeyを要求中であるかを決定する。
【0514】サブスクリプション・マネージャが、不正
操作防止(署名付きおよび/または暗号化済みの)ファ
イルを生成し、これをSAMが後にロードし、検証す
る。このファイルは、サブスクリプション情報(すなわ
ち、使用中することができるライセンスの数、SAMの
可能とされたIPアドレスなど)を含む。サブスクリプ
ション情報ファイル(SIF)に加えて、サブスクリプ
ション・マネージャは、署名付きのSAMの識別も返
す。
【0515】サブスクリプション・マネージャは、ライ
センス情報およびクライアント証明書のデータベースへ
のフロントエンドである。webユーザ・インターフェ
ースがライセンス再販業者を、クライアント証明書を使
用して認証する。これは、再販業者がライセンスを得て
いる会社についての以下の情報を要求する。すなわち、
会社名、会社連絡先情報、ライセンスの数、ライセンス
有効日(開始日から終了日まで)、SAMのIPまたは
MACアドレス(サブスクリプション・ファイルをその
SAMへバインドするためのもの)、SAMのクライア
ント証明書要求(CSR)、および再販業者識別であ
る。
【0516】サブスクリプション・マネージャは以下の
アイテムを生成し、これらが安全に、SAMをインスト
ール中の者に転送される。すなわち、署名付きのクライ
アント証明書、および不正操作防止サブスクリプション
情報ファイル(SIF)である。SIFに、SIF署名
ユーティリティ(SSU)によって署名しておくことに
より、不正操作防止を行う。
【0517】内部では、サブスクリプション・マネージ
ャがデータベースを以下の情報により更新する。すなわ
ち、SAMのクライアント証明書を取り消すために必要
とされる情報、SAMについての情報(ライセンスの
数、有効期限日、ライセンス更新用の連絡先情報な
ど)、および、SAMを購入した会社についての情報で
あり、これは、これがこの会社が所有する唯一のSAM
でない可能性があるためである。
【0518】サブスクリプション・マネージャのオペレ
ーションの理論は以下の通りである。最初に、契約が、
再販業者/チャネルパートナとデバイス・オーソリティ
の間で確立される。次いで、ライセンス再販業者情報エ
ディタ/ビューワを、デバイス・オーソリティの者が使
用して、最初の再販業者/チャネルパートナ・アカウン
トを作成し、これが、ライセンスをSAMに販売するた
めの権限を付与される。
【0519】これによりユーザ/パスワードが生成さ
れ、これが再販業者/チャネルパートナに送られる。再
販業者/チャネルパートナが、SAMをある会社にイン
ストールするための手配を行う。再販業者/チャネルパ
ートナがSAM情報エディタ/ビューワにログインし、
会社情報およびライセンシング情報を入力する。
【0520】会社がSAMのインストールを終了する。
会社はIPアドレスをSAMに割り当てており、クライ
アント証明書署名要求を生成している。この情報が再販
業者に渡される。次いで、再販業者(または、OTPを
有する会社)がSAM情報エディタ/ビューワに戻り、
SAMのIPアドレスおよびCSRを入力する。
【0521】サーバが無署名のSIFを生成し、これを
SIF署名ユーティリティへ送信する。SSUが即時に
署名付きのSIFを返す。SAMのCSRが、ルート・
デバイス・オーソリティに代って中間CAとして動作中
のサブスクリプション・マネージャによって署名され
た、実際のクライアント証明書に向けられる。
【0522】OTPソリューションを使用することな
く、再販業者がSIFおよびクライアント証明書を会社
へ送る。次いで、会社がSIFを、SAMによって知ら
れているディレクトリにインストールする。証明書が、
それらのSSLモジュールにインストールされる。会社
はこのとき、AppContainerKeyを要求す
る準備ができる。
【0523】モジュール・コンポーネントの詳細を以下
で論じる。SSL接続ベリファイヤは、サーブレットか
ら呼び出されるjavaクラスである。これはサーブレ
ットに、所与の接続の認証情報を確認するためのAPI
を提供する。このサーブレットが、少なくとも要求オブ
ジェクトにssl接続についての情報を保持するように
それを渡す。
【0524】この情報を使用して、SslConnec
tionVerifierは、接続したクライアントが
先に登録されたものであるかどうかを決定する。場合に
よっては、この検証は、接続がSSLを介しているこ
と、および、クライアントが証明書を有していることを
チェックすることに限定される。この簡素さは、Apa
che+mod_sslが構成される方法による。すな
わち、これらは、知られている証明書を有するクライア
ントからの接続のみを受け入れる。
【0525】接続ベリファイヤは、いかなる失敗した試
みも記録する。成功した試みは、デバッギングのために
記録される。ベリファイヤが、接続中のクライアント
(再販業者のコンピュータ)についての情報を提供する
オブジェクトを返す。ベリファイヤはまた、要求から入
手可能ないかなるユーザ名情報も取り込む。これを使用
して、実際に権限のある再販業者が自分のコンピュータ
を使用中であり、あるコンピュータがこれを使用中では
ないことを検証する。
【0526】入力は、サーブレット要求オブジェクトで
あり、これが、SSLクライアント証明書情報、およ
び、ユーザ名/パスワードが使用されてこの要求が行わ
れた場合、ユーザについての情報を保持する。出力は、
SslConnectionVerifierオブジェ
クトであり、これは、IsSslOk()、GetCe
rtInfo()、IsUserAuthentica
ted()、GetUserInfo()などのメソッ
ドを有する。
【0527】SAM情報エディタ/ビューワ・モジュー
ルにより、ライセンシング情報の追加/編集/除去など
を行うことができる。これによりレポートの生成を、た
とえば、会社毎、SAM IP/MACアドレス毎、期
限切れ間近のライセンス毎に行うことができる。すべて
のアクションが、有効な再販業者情報(ユーザ名/パス
ワード、クライアント証明書)により認証される。
【0528】SIFジェネレータ・モジュールは、サブ
スクリプション情報ファイルを生成する。生成されたS
IFが、SIF署名ユーティリティ(SSU)に送信さ
れる。SSUが、合致する公開鍵がSAMソフトウェア
と共に出荷される秘密鍵を使用してファイルに署名す
る。鍵の対に署名するものは、ただ1つのSIFのみで
ある。
【0529】SIFは、人が読むことのできるファイル
である。これにより、IT部門の人員が直ちに、連絡先
情報ならびに日付、IPアドレスなどへ、サポート中に
アクセスすることができる。SIFには、会社名、会社
連絡先情報、期限切れのライセンスについての連絡先、
ライセンスの数、ライセンス有効日(開始日から終了日
まで)、再販業者情報、SAMのIPまたはMACアド
レス(サブスクリプション・ファイルをそのSAMへバ
インドするためのもの)が含まれている。
【0530】証明書署名要求(CSR)ハンドラ・モジ
ュールは、ルート・デバイス・オーソリティの鍵により
署名された、X509準拠の証明書を作成することを担
う。これは、要求を提出した再販業者が正しく認証され
る(ユーザ名/パスワードおよびクライアント証明書に
権限が付与される)場合にのみ、証明書に署名する。こ
れは、SAM情報、対応するCSR、および、SAMの
クライアント証明書の期限切れを気付かせるための連絡
先情報を必要とする。CSRは、フィールドの1つにお
けるマシンのIPアドレスを含む。したがって、クライ
アント証明書をフィールドの1つにおけるIPアドレス
により生成することは、SAMをインストールする側の
責任である。
【0531】出力は、SAMマシン上で使用可能なx5
09クライアント証明書である。opensslはその
下にあるツールであり、SAMおよびサブスクリプショ
ン・マネージャ上の証明書の事柄を処理する。このモジ
ュールは、発行されたSAM.ClientCerti
ficateの取り消しも処理する。取り消し情報は、
証明書取り消しリスト(CRL)に入れられる。このリ
ストを、opensllを使用して操作することができ
る。このCRLファイルは、このサーバ上でHTTPを
介して誰でもダウンロードすることができる。
【0532】ライセンス満期ディテクタが定期的にライ
センスのデータベースを走査し、eメールを、サブスク
リプション中に提供された連絡先へ送信する。SAM証
明書満期ディテクタが定期的に、生成されたSAMクラ
イアント証明書のデータベースを走査し、CSR中に提
供された連絡先へeメールを送信する。
【0533】ライセンス再販業者情報エディタ/ビュー
ワが、再販業者をシステムに登録し、これらに、それら
のブラウザ、または単にユーザ名およびパスワード、あ
るいはその両方用のクライアント証明書を提供する。こ
れにより、再販業者が販売においてどの程度よくやって
いるかを追跡することもできる。
【0534】SIF署名ユーティリティ(SSU)が、
デバイス・オーソリティがサブスクリプション情報への
アクセスを得るための簡単な方法を提供する。最低で
も、SSUがSIFに署名する。
【0535】アプリケーション:多元的クライアント認
証を以下に論じる。システムの1つのアプリケーション
が、多元的クライアント認証(MFCA)アプリケーシ
ョンであり、これは仮想プライベート・ネットワーク
(VPN)にアクセスするためのものである。認証プロ
セスの第1の部分は、ユーザ名/パスワードの対(ユー
ザが知っているもの)である。第2の部分は、BIOS
ベース、または、ソフトウェア(ユーザが有しているも
の)使用による、暗号化可能デバイスの認証となる。
【0536】簡素なバージョンのMFCAでは、パスワ
ード検証が、RADIUSを介した、レガシー・パスワ
ード・データベースを使用する認証サーバへの従来の伝
送によって達成される。好ましい実施形態では、このプ
ロセスが、SPEKEパスワード認証プロトコルを使用
して拡張され、これは米国特許第 号において開示
されている。いずれの場合も、MFCAがデバイス認証
のための新しい機構を提供する。
【0537】システムは、以下のソフトウェア・コンポ
ーネントを含む。VPNサーバに対して認証するクライ
アント・デバイスにおいて動作するクライアント・ソフ
トウェアコンポーネント。ソフトウェアは暗号化可能に
されなければならない。
【0538】保護中であるVPNの1つまたは複数のサ
ーバ・マシン上で動作するソフトウェア・コンポーネン
ト。これは企業が保護するネットワーク内部である。こ
れは、VPN製品を購入する会社のIT部門によって管
理される。
【0539】インターネットに接続されたデバイス・オ
ーソリティ・サーバ(これを、企業以外のオーソリティ
によって管理することができる)上で動作するソフトウ
ェア・コンポーネント。これはKID/SMKの対のデ
ータベースへのアクセスを有する。
【0540】MFCAの概観が、拡張VPNクライアン
トを論じることにより提供される。クライアント・デバ
イスは通常、Windowsマシンであり、これはデバ
イス・オーソリティにエンロールする。エンロールメン
トの後、クライアント・デバイスは有効なマスタ鍵を有
する。好ましい実施形態では、これがファームウェア・
サポートを有し、本発明の暗号化機能がBIOS RO
Mにおいて実施されるが、ソフトウェアのみのバージョ
ンを使用することができる。マシンは通常、自社の制限
されたネットワークへ、VPNゲートウェイを介してア
クセスすることを望む、クライアントVPNソフトウェ
アのユーザによって所有される。
【0541】クライアントは通常、通常のインターネッ
ト・サービス・プロバイダ(ISP)を介してインター
ネットにアクセスする。このISPとVPNゲートウェ
イの間のネットワークは信用できるものではなく、その
ため、これらの2者の間の通信を保護しなければならな
い。VPNソリューションの主な目的は、クライアント
・デバイスからVPNゲートウェイまで、エンドトゥエ
ンドの暗号セキュリティを提供することである。
【0542】MFCAクライアントは、本発明によって
実施された暗号コア技術、および、サーバとの安全なリ
ンクを確立するための標準のVPNクライアント・ソフ
トウェアと協調するクライアント・アプリケーションを
含む。MFCAアーキテクチャは、マシンがVPNログ
インの前にエンロールされることを必要とする。クライ
アント・アプリケーションは、最初にそれが動作する間
に、クライアントが先にエンロールされているかどうか
を発見する。これが先にエンロールされていなかった場
合、クライアント・アプリケーションがエンロールメン
トを実行し、これが完了された後にのみ、残りのMFC
Aオペレーションを継続する。
【0543】エンタープライズVPNゲートウェイおよ
びStrong Authentication Mo
dule(SAM)が、本発明によって提供される。M
FCA使用可能な企業は、インターネットと、企業の保
護されたネットワークの間に接続された、VPNゲート
ウェイ・サーバを有する。
【0544】VPNは通常、いくつかのマシンを含み、
これらが互いに協調してアクセスを認可し、信用できな
いトラフィックをブロックする。標準的には、これらは
ファイアウォールと共に動作する。重要なマシンは、V
PNゲートウェイおよびStrong Authent
ication Module(SAM)サーバであ
る。
【0545】SAMは、会社のネットワーク内部に存在
し、本質的に信用できる。いくつかの場合、これは、V
PNゲートウェイとSAMサーバの間の通信を暗号化す
る必要がないことを意味する。この2つのマシンのため
の単純なセキュリティ・チェックは、会社のネットワー
ク内部で行われる経路指定がトラステッドである、他方
のIPアドレス上をチェックすることである。
【0546】SAMは、サーバ・ソフトウェアであり、
これが、特定のユーザおよびデバイスのための内部ネッ
トワークへのアクセスの認可において、VPNゲートウ
ェイと相互作用する。これは、登録されたデバイスの
「データベース」へアクセスし、アクセスが許可され
る。SAMコードとデータベースの間のインターフェー
スを可能な限りオープンにして、異なるデータベース実
装を配置できるようにすべきである(たとえば、ODB
CまたはLDAPの使用による)。セキュア・ソケット
・レイヤ(SSL)プロトコルを使用して実装すること
ができるSAMとデータベースの接続には、気をつける
べきである。
【0547】SAMは、Appコンテナを封印かつ開封
するコードを含む。SAMサーバは、ライセンシング・
ポリシー(ネットワークにアクセスするためのデバイス
の権利の期限切れ、可能とされるデバイスの数など)の
追跡も組み込むことができる。暗号化機能を、BIOS
−ROMおよびソフトウェアのみの形式において提供す
ることができる。
【0548】これらのマシンに加えて、追加のハードウ
ェアおよび/またはソフトウェアが、デバイス/ユーザ
の対にアクセスを認可するべきであるかどうかを決定す
る(二元的認証の第1の部分)際に、ゲートウェイおよ
びSAMと協調することができる。この機能を実行する
ための様々な標準および製品が当業界において使用され
ており、これには、ユーザ名およびパスワードのデータ
ベースへのアクセスを有するRADIUSサーバ、およ
び、ポリシーベースのアクセス権を決定するための様々
なシステムが含まれる。
【0549】SAMコンポーネントを使用して、ソフト
ウェア・ライセンシング・スキームを実施することもで
きる。SAMコンポーネントは通常、VPNを所有する
企業のIT部門によって管理され、他のいかなるオーソ
リティによっても管理されない。しかし、これは、企業
にMFCAソフトウェアを使用する権利を販売した別の
オーソリティとの信頼関係を有することができる。
【0550】ライセンシング・ポリシーは、企業のアカ
ウント全体のための、あるいは、個別のクライアント・
アカウントのための期限切れ時間を考慮に入れる(たと
えば、何者かが自分のラップトップを失う可能性があ
り、このデバイスを削除しなければならない)。SAM
はこれらの取り消しおよび期限切れを、システム管理者
によって設定されたポリシーに従って実施する。
【0551】ライセンスを、データベースへのアクセス
が認可されるデバイスの最大数に基づくようにすること
ができる。ライセンス機能は周期的に、何が起こってい
るかを監査し、追跡する。これは、SAMが情報をベン
ダ固有の場所へ定期的に送信することを含むことができ
る。ライセンス管理は、リモートのWebベースのツー
ルから行われることが好ましい。
【0552】アプリケーション登録モジュール(AR
M)はインターネット・サーバであり、サービスを異な
る企業のSAMへ公開する。この目的は、クライアント
およびSAMを、特定の企業への特定のデバイスの登録
中に助けることである。最終的な結果は、SAMに適切
なApp鍵を提供して、登録中のデバイスにおけるコン
テナを封印かつ開封することである。
【0553】このオペレーションは、「MFCA登録」
と呼ばれるプロセス中に、各デバイス/企業の組み合わ
せにつき一度のみ実行されることが必要である。アプリ
ケーション登録モジュール・サーバは、いくつかのフロ
ントエンド・サーバからなり、これは場合によっては、
しかし必然的ではないが、Webサーバであり、その時
点で異なる会社のための有効なライセンス、それらの予
想される証明書が何であるか、などを記述する情報を保
持するバックエンド・データベースと通信するものであ
る。
【0554】ライセンス実施をここで行うことができ
る。特定の企業について登録されたユーザの数の基本的
な追跡が、一例である。アプリケーション登録モジュー
ル・サーバがライセンス実施、および、ライセンス・ロ
ギングおよび監査を実行するが、個別のログインの追跡
は行わない。アプリケーション登録モジュールは、デバ
イス・オーソリティ「暗号化サーバ(Encrypti
on Server)」へのアクセスも有し、これが、
エンロールメントの処理中に生成されたKID/SMK
テーブルを格納する。Webベースのリモート・インタ
ーフェースが、これらの企業アカウントを処理する。ア
プリケーション登録モジュールのための拡張ユーティリ
ティとして、データ・エントリがWebインターフェー
ス(サブスクリプション・マネージャ)によって自動化
され、これにより、再販業者、チャネル・パートナおよ
びIT管理者が適切な情報を入力して、SAMが中央の
ARMデータベースと相互運用できるようにすることが
できる。以下の表に挙げたプロセスが、含まれるもので
ある。
【0555】プロセス名 MFCAサブスクリプション 説明 SAMのためのライセンシング情報を生成するプロセ
ス。ライセンスを販売する販売員が、サブスクリプショ
ン・マネージャと呼ばれる、デバイス・オーソリティ所
有のサーバにログインすることによって、サブスクリプ
ション・プロセスを開始する。販売員は、SAMを購入
した会社についての情報を入力する。すなわち、いくつ
のライセンスが要求されているか、SAMクライアント
証明書、および他の情報などである。このプロセスの出
力は、サブスクリプション情報ファイル(SIF)およ
びクライアント証明書(証明書を参照)である。
【0556】プロセス名 エンロールメント 説明 クライアント・デバイスがSMKを獲得し、暗号サービ
スを使用できるプロセス。このプロセスは、クライアン
ト・デバイスおよびデバイス・オーソリティ・エンロー
ルメント・サーバを含む。エンロールメントでは、クラ
イアント・デバイスが、BIOSにおいて、あるいはエ
ミュレーションAPIにおいて、暗号コア機能を含むこ
とが必要である。
【0557】プロセス名 MFCA登録 説明 クライアント・デバイスが、特定の企業のVPNのサー
ビスを使用するために登録されるプロセス。これは、ク
ライアント、SAMサーバ、およびARMサーバとのい
くつかの相互作用を含む。登録には、クライアント・デ
バイスが先にデバイス・オーソリティへのエンロールメ
ントを実行していることが必要である。この登録の最終
的な目的は、SAMに適切なApp鍵を提供して、Ap
pクライアント・デバイスを交換されるコンテナを封印
かつ開封することである。
【0558】プロセス名 ログイン 説明 クライアント・デバイスが企業の内部ネットワークへの
アクセスを得るプロセス。これは、MFCAが達成を望
む最後のサービスである。ログインは、クライアント・
デバイスとSAMサーバの間のいくつかの相互作用を含
むが、デバイス・オーソリティとの追加の相互作用は必
要ではない。SAMサーバは、VPNゲートウェイによ
る二元的認証の第2の段階として、クライアント・デバ
イスを認証しなければならない。これは、Appコンテ
ナを使用してこれを実行する。
【0559】上記に加えて、VPNクライアント、SA
MサーバおよびARMサーバを、適切なApp鍵をうま
く分配できるように構成しなければならない。
【0560】登録のプロセスは、以下の2つのステップ
を含む。すなわち、(1)特定のマシンと共に動作する
App鍵の、デバイス・オーソリティから自社のSAM
サーバへの伝送、および(2)顧客App鍵を生成する
顧客秘密のSAMサーバからクライアントへの伝送であ
る。
【0561】App鍵は、以下の機能を果たす。すなわ
ち、(1)登録中のマシンの秘密マスタ鍵(デバイス・
オーソリティおよびマシン自体のみによって知られ
る)、および(2)アプリケーションのオペレーティン
グ・システム・ドライバ(この場合、VPNクライアン
ト・アプリケーション)である。
【0562】App鍵は、以下の暗号演算の結果であ
る。 ApKey=trunc128(SHA1(SMK‖A
CD))
【0563】SAMサーバが、追加の128ビットの秘
密、顧客秘密を生成し、これが、他のデバイス・オーソ
リティから秘密に保たれ、顧客App鍵を以下の演算に
より計算する。 CustomerAppKey=trunc128(S
HA1(AppKey‖CustomerSecre
t))
【0564】SAMサーバがこの値を格納し(あるいは
任意選択で、App鍵および顧客秘密を別々に格納
し)、顧客秘密をクライアントに送信する。クライアン
トがこの秘密を記録する(しかし、これは秘密マスタ鍵
のような「大きな秘密」ではない)。SAMはクライア
ントに封印されたAppコンテナも送信し、これがログ
イン・カウンタ機構のための初期値を格納することがで
きる。代替実施形態では、安全なチャレンジ/レスポン
ス機構が、ログイン・カウンタ機構と置き換わる。
【0565】ログインのプロセスは、Appコンテナに
基づく。クライアントが、先に受信しているAppコン
テナを開封し、ログイン・カウンタを増分し、コンテナ
を再封印し、これをVPNゲートウェイへ、VPN認証
プロトコルの一部として送信する。SAMサーバがこの
コンテナを得て、これを開き、ログイン・カウンタを最
後に記録された値と比較する。これが受け入れ可能な範
囲内であった場合、これが呼び出し側クライアントに、
企業の内部ネットワークへのアクセスを認可する。
【0566】ログインの代替プロセスでは、クライアン
トがランダムなチャレンジ値をVPNゲートウェイから
受信し、先に受信しているAppコンテナを開封し、顧
客秘密およびチャレンジ値を一方向関数(通常は、SH
A1のような暗号ハッシュ関数を使用する)と結合さ
せ、一方向関数の結果をVPNゲートウェイへ、VPN
認証プロトコルの一部として返す。
【0567】SAMサーバがこの結果を得て、これを、
それ自体のチャレンジ値および顧客秘密の一方向関数の
計算結果と比較する。SAMサーバの計算結果がクライ
アントの結果と合致した場合、VPNゲートウェイが呼
び出し側クライアントに、企業の内部ネットワークへの
アクセスを認可する。
【0568】MFCAの特定の実施が、特定のVPNソ
フトウェア製品を目標にすることができる。いくつかの
VPNベンダが、他の会社がその製品をクライアントに
おいて、ならびにサーバにおいてカスタマイズできるよ
うにするAPIを提供する。これらのベンダは、これら
のAPIと相互作用するように書かれているソフトウェ
ア用の証明プログラムも有することができる。MFCA
を、アドオン形式において、あるいは、VPNベンダ製
品と共に統合された形式において、引き渡すことができ
る。
【0569】含まれるプロセスを以下に詳細に論じる。
【0570】エンロールメントは、MFCAインストレ
ーションにあらかじめ必要である。クライアント・デバ
イスは、オペレーティング・システム・ドライバ(OS
D)、BIOSにアクセスする低レベルのドライバ・プ
ログラム、およびハードウェアを含むコア暗号化システ
ムを有していなければならず、デバイスはすでにエンロ
ールされていなければならず、有効なマスタ鍵を格納し
ていなければならない。
【0571】エンロールメント・オペレーションは、V
PNソフトウェア・インストレーションの一部として実
行することができる。つまり、クライアントがVPNに
初めてアクセス試みたとき、クライアント・デバイスが
まだエンロールされていなかった場合、これはこのとき
そこでエンロールメントを実行することができる。これ
は、ユーザがクライアント・アプリケーションを初めて
起動したとき、最初のユーザ経験の一部として起こる。
ユーザからの入力は必要ではない。
【0572】クライアントのセットアップは、MFCA
VPNクライアントを含むソフトウェアを受信するユ
ーザを含み、これを既存のVPNクライアントの拡張形
式にすることができ、これはMFCAセットアップおよ
びMFCA拡張ログイン認証のための追加コードを含
む。VPNベンダのクライアントSDKによって提供さ
れたAPIにより、MFCAコードがそれらのライブラ
リと静的にリンクできるようにすべきであることが好ま
しい。理想的には、MFCA製品の関連した部分のすべ
てが、ACDが計算される範囲内である。
【0573】サーバ・セットアップ・プロセスを以下で
論じる。Strong Authentication
Module(SAM)構成は、ユーザ/デバイス・
アカウントをセットアップすることである。これは通
常、企業のシステム管理者によって実行される。SAM
はVPNと、かつ/または、認証サーバと相互作用す
る。ここで使用可能ないくつかのオプションは、以下の
通りである。
【0574】SAMを、既存の認証サーバ用のプラグイ
ンにすることができる。認証サーバとSAMの間のイン
ターフェースはAPIである。SAMは、あるポートを
リスンするサーバであり、カスタム・プロトコルまたは
RADIUSを理解する。認証サーバとSAMの間のイ
ンターフェースは、ネットワーク・プロトコルである。
【0575】VPNおよびRADIUSサーバも高度に
構成可能であり、いくつかの構成を可能にする。RAD
IUSサーバ(存在する場合)がクライアントを、ポリ
シー、ユーザ名およびパスワードなどに応じて認証す
る。
【0576】SAMは、デバイスの認証を取り計らう。
簡素な実施形態は、スタンドアロンのRADIUSサー
バを含み、これを使用して直接ゲートウェイと、あるい
は、プロキシとして動作する別の認証サーバと通信する
ことができる。構成ユーザ・インターフェース(UI)
は、他のいかなる認証サーバからも独立している。
【0577】VPNゲートウェイ/RADIUSサーバ
構成。管理者がユーザ名/パスワードの対を構成する。
これは、ユーザがログインするための「永続的な」ユー
ザ名/パスワードの対となる。このプロセスは、いかな
るデバイス・オーソリティも含まず、MFCAから独立
した「通常の」一元的構成である。
【0578】SAM構成。管理者がユーザ名、アプリケ
ーション・デバイスID(ADID)、および登録パス
ワードを構成する。代替実施形態では、管理者が、ユー
ザとデバイスの間の関連付けも作成して、有効な組み合
わせを指示し、ユーザが特定のマシンから認証するよう
に制限することもできる。
【0579】アプリケーション・デバイスID(ADI
D)は、人が読むことのできる公開名であり、各企業内
の一意の値であるが、必ずしも企業全体のものではな
い。登録パスワードは、システム管理者によって生成さ
れる。これは、真に乱数でなければならない。
【0580】代替実施形態では、鍵IDを、ADIDの
代りに動作するための一意の識別子として使用すること
ができる。しかし、実際には、人々が汎用の「一意の識
別子」の考えを信用しないので、好ましい実施形態で
は、IT管理者によって選択された別のADIDを使用
する。SAMデータベースに格納されるすべてのパスワ
ードがハッシュされる。
【0581】このアーキテクチャにおいて記載したモデ
ルは、ユーザのデータベースおよびデバイスのデータベ
ースが分離されていることを意味している。これは、ユ
ーザ・データベースにおいて存在するいかなるユーザ
も、デバイス・データベースにおいて存在するいかなる
デバイスにより認証されるという結果を有する。特定の
ユーザが特定のマシンにリンクされる際に、制限が実施
されることはない。
【0582】MFCA登録(最初の接続)。ユーザがユ
ーザ名/パスワードの対およびADID/登録パスワー
ドの対を自分の企業のIT部門から得る。ユーザの経験
は、以下の通りである。
【0583】ユーザがインストレーション・アプリケー
ションを動作させる。これは、汎用のWindowsイ
ンストールである。クライアントがエンロールされなか
った場合、エンロールメント・オペレーションが実行さ
れる。インストレーション・プログラムがユーザに、ユ
ーザをVPNに対して識別するデータのピースの入力を
促す。通常ログイン用のユーザ名/パスワード、およ
び、登録用のADID/登録パスワードである。
【0584】ユーザが最初に接続し、VPNゲートウェ
イ/RADIUSがユーザ名/パスワードの対を認証
し、現在のポリシーをチェックしてユーザを許可する。
SAMがデバイスを外部ARMサーバに登録し、それ自
体を構成する。すべてが成功した場合、ユーザがVPN
に入る。
【0585】後続のログインでは、ユーザが自分のAD
ID/登録パスワードをそれ以上入力する必要がなくな
る。クライアントVPN Appは、ユーザにユーザ名
およびパスワードの入力のみを促すべきである。クライ
アントは、ADID、Appコンテナの場所、および、
サーバから受信した顧客秘密を記憶している。
【0586】全体のサーバの相互作用の流れは、以下の
通りである。図4を参照し、これはMFCA登録を例示
するブロック図である。
【0587】クライアント・アプリケーションが最初の
要求をVPNゲートウェイに対して、あらかじめ存在し
ているVPNプロトコルを使用して行う。VPNゲート
ウェイがユーザ名およびパスワードの対を、RADIU
Sサーバによる通常の方法で、あらかじめ存在している
認証の方法を使用してチェックする。次いで、VPNゲ
ートウェイが、クライアントがSAMサーバへの登録を
必要とすることを決定する。VPNゲートウェイが、こ
の要求をSAMサーバへ転送する。
【0588】この要求には以下が含まれている。すなわ
ち、(1)開く際のADID、(2)企業名/URL、
およびApp用のACD(またはARMデータベースに
おいてACDを識別するID)を含む、適切なデバイス
・オーソリティ・サーバの通信公開鍵により暗号化され
たPubKコンテナである。
【0589】SAMは、PubKを解読することはでき
ず、そのためこれをARMサーバへ渡す。この接続が、
ある種類のSAMの認証を、アプリケーション登録モジ
ュールに提供しなければならない。HTTPS実施で
は、デバイス・オーソリティが発行した証明書がSAM
サーバに提示され、SAMサーバが発行した証明書がデ
バイス・オーソリティに提示され、証明書は、デバイス
・オーソリティとのアカウントを開くプロセス中に確立
される。
【0590】アプリケーション登録モジュールがPub
Kコンテナを、通信鍵の秘密ビットを使用して開き、必
要な場合、その内部テーブルを新しいデバイスADID
により更新する。アプリケーション登録モジュールが企
業をそのデータベースに対してチェックして、これが有
効なライセンスを有しているかどうかを発見する。すべ
てが良好であった場合、アプリケーション登録モジュー
ルがクライアント・デバイスの鍵IDを有しており、そ
のため、これが秘密マスタ鍵を発見し、所与のACD用
のApp鍵を計算する。次いで、これがこのApp鍵を
SAMへ、安全な方法で伝送して戻す(場合によって
は、HTTPS接続の応答を使用する)。
【0591】SAMがADIDに対するApp鍵を格納
し、顧客App鍵を、App鍵および顧客秘密用の新し
いランダム値により構築し(あるいは別法として、SA
Mが直接この顧客App鍵を格納し、App鍵のことを
忘れる)、初期Appコンテナを構築し、そこに初期の
128ビットのログイン・カウンタ(その初期値を登録
パスワードにすることができる)および企業名/URL
を格納する。
【0592】SAMがAppContainerを封印
し、これおよび顧客秘密を(場合によっては、VPNゲ
ートウェイ経由で)クライアントに渡して戻す。このA
ppコンテナを、暗号化されたクライアントに送信する
必要はない。この可視性はいかなるものも損なわない。
盗聴者がこれを記録し、これをサーバへ送信してVPN
へのアクセスを得ようと試行することはできないが、こ
れは、コンテナがカウンタの誤った値を有するからであ
る。
【0593】VPNゲートウェイがSAMサーバからO
kを受信し、このときクライアントに、内部の企業ネッ
トワークへのアクセスを認可する。クライアントが、A
ppコンテナおよび顧客秘密を、よく知られた場所に格
納する。
【0594】アプリケーション登録モジュールがApp
鍵を分配するが、顧客秘密およびログイン・カウンタの
初期値は知られず、これらはSAMのみに知られる。こ
れにより、MFCA使用可能な企業は、デバイス・オー
ソリティがセキュリティを提供する助けとなるが、クラ
イアント・デバイスのふりをすることはできず、認証な
しに企業に入ることができない。
【0595】クライアント・デバイス。ダイアログ・ウ
ィンドウが、ユーザ名およびパスワード、および企業/
URL識別を求める。ユーザがADIDを再度入力する
必要はなく、これは、システムがこれを覚えているから
である。クライアントのマシンがVPNゲートウェイに
接触し、ユーザ名/パスワードの対を標準の方法で(R
ADIUSなどを経由して)認証する。
【0596】VPNゲートウェイが、クライアントが追
加の認証を必要としており、それ自体を認証するために
それを必要とすることを発見する。クライアントがその
Appコンテナを開封し(顧客App鍵、App鍵から
のコンピュータ、および格納された顧客秘密を使用す
る)、ログイン・カウンタ(128ビット、負にはでき
ない)を増分し、これを再度封印し、これをゲートウェ
イへ、開く際のADIDを添付して送信する。VPNゲ
ートウェイがAppコンテナを有した後、これをSAM
サーバへ認証のために渡す。クライアントが、完了まで
待機する。ゲートウェイがエラーを返した場合、これは
ユーザにそれ自体の言語でプロンプトを表示する。すべ
てがOkであった場合、VPNソフトウェアが動作を開
始することができる。
【0597】Strong Authenticati
on Module(SAM)が、認証のための要求を
VPNゲートウェイから受信し、これにクライアントの
ADIDおよびそのAppコンテナが添付される。これ
が顧客App鍵およびカウンタの予想値を、ADIDを
インデックスとして使用してルック・アップする。これ
がAppコンテナを、顧客App鍵を使用して開封す
る。
【0598】これがカウンタおよび特別の情報をチェッ
クする。SAMが、ある範囲のカウンタを可能にするべ
きである。(Cexpected<=Cactual<
Cexpected+10)の場合、認証はOkとな
る。この目的は、パケットがクライアントからサーバま
でに失われた(たとえば、ユーザが「リトライ」ボタン
を何度も打つ)場合をカバーすることである。
【0599】チェックが範囲外であった場合、エラーが
生じる。これがエラー・コードおよびエラー・パラメー
タを送信する。これが成功した場合、これが新しいカウ
ンタを格納し、「権限付与Ok」のメッセージをVPN
ゲートウェイに送信する。エラーは記録され、レポート
がシステム管理者に定期的に提示される。SAMが管理
者に特殊な状況において警告することができ、これは接
続の試みが多数失敗した場合などであり、何者かが攻撃
を試行中であることを示す可能性がある。
【0600】システム10は、システムおよび/または
システムの秘密鍵の破損または誤用を引き起こす、信用
できないソフトウェア・アプリケーションの主な脅威モ
デルに対して防御するように設計されている。5MIお
よび他の関係付けられたハードウェア機構を利用する、
好ましい実施形態では、脅威モデルが拡張され、システ
ムが鍵をさらに、「リング・ゼロ」という、本質的には
オペレーティング・システム自体の一部において動作す
る、信用できないプログラムに対して保護する。
【0601】脅威モデル、攻撃および回復。以下は、識
別されたいくつかの脅威、それらの範囲、およびシステ
ム10によるそれらの対処法の説明である。
【0602】App鍵を盗む盗聴者。盗聴者は、ARM
/SAM通信をリスンすることができ、App鍵を盗
む。しかし、盗聴者はクライアントのふりをすることは
できない。これは、盗聴者も少なくとも顧客秘密および
VPNカウンタの初期値を必要とするからである。
【0603】盗まれたApp鍵および顧客秘密。ハッカ
ーがApp鍵および顧客秘密を盗むと仮定する。これは
おそらく、ハッカーが会社に侵入し、ADIDデータベ
ース内部のすべてのデータを盗んだからである。窃盗が
検出された場合、マシンを再登録して新しい顧客秘密を
生成することによって、解決することができる(しか
し、App鍵を変更することはできない)。企業がAp
p鍵を保持していた場合、これを再度再登録する必要が
ないであろう。
【0604】脅威による低速化。本発明の好ましい実施
形態が有するハードウェアベースのセキュリティのチェ
ーンの利点は、ソフトウェアのみの実施形態では存在す
る可能性がない。
【0605】本発明の好ましい実施形態は、ソフトウェ
アベースのリバース・エンジニアリング・ツールがこれ
をハッキングできないように設計されている。さらに、
ハードウェアベースの攻撃により、敵が他の物理的にリ
モートのマシンをクラックすることはできない。この保
護は、CPUのシステム管理モード(SMM)を使用す
ることによって達成される。
【0606】SMM内部から、ソフトウェアの次の層
(すなわち、暗号化可能なBIOSを使用したオペレー
ティング・システム・ドライバ(OSD))が、不正操
作について検証される。このOSDコードは不正操作防
止にされる。これを修正して、不正を働くアプリケーシ
ョンに、SMMコードにより検出されることなくこれを
使用させることはできない。この検証されたオペレーテ
ィング・システム・ドライバは、アプリケーションが修
正されていないことをチェックする。
【0607】マスタ鍵のための安全な記憶位置が使用可
能でないとき、あるいは、安全な記憶機構は使用可能で
あるが、すべてが高レベルの保証を受けているわけでは
ないとき、攻撃を失敗させるために、秘密マスタ鍵がシ
ェアに分割され、これらが多数の場所に格納される。ま
た、限られた数のシェアのみを、秘密マスタ鍵を取り戻
すために必要とすることができ、これにはシャミールの
秘密共有スキームを使用する。
【0608】さらに、鍵シェアを、デバイス・バインデ
ィング特性(たとえば、ドライブのシリアル番号、グラ
フィックス・カード・ドライバのバージョンなど)の1
つに基づいた鍵を使用して、暗号化することができる。
デバイス特性鍵を小型または予測可能にすることがで
き、暗号化が、それが鍵のサイズに基づいて解読するた
めに大量の時間を要するように選択され、これには反復
の暗号演算を使用する。
【0609】秘密マスタ鍵シェアは、秘密マスタ鍵が必
要とされるたびに再コンパイルされる。結合された秘密
マスタ鍵が、メモリにおいて、各結合での新しい記憶場
所を参照するポインタにより参照される。秘密マスタ鍵
のピースが結合されるたびに、チェックが行われて、い
くつかのピースが不良であるかどうかが調べられる。デ
バイス・バインディング情報の以前の値を追跡すること
により、不良のシェアの検出が可能となる。無効にされ
たシェアの場合、秘密マスタ鍵が再シェアされる。
【0610】SMK/デバイス・バインディング。本発
明のソフトウェアのみの実施形態の要件の1つが、マス
タ鍵およびそのAppコンテナを新しいマシンに移動し
ようとする試みが行われたときを検出するための能力で
ある。この移動を検出するために、マシンのある特性が
記録される。これらの特性の少数が同時に変化したと
き、ソフトウェアのみのシステム10がこれを検出し、
これに基づいて動作する。
【0611】マスタ鍵およびセッション鍵の公開の制
限。この設計は、秘密マスタ鍵およびセッション鍵の公
開を、これらをいずれかのオペレーションに使用してい
るときに制限する。好ましい実施形態では、このような
すべてのオペレーションがSMMにおいて実行され、こ
れには、SMMの外部で動作するときに使用不可能であ
るメモリが使用される。
【0612】公開鍵の保全性。簡素な実施形態では、公
開鍵がオペレーティング・システム・ドライバに含ま
れ、コンパイルされる。これらを、BIOSに含まれる
公開鍵と同じものにすることができる。
【0613】VPNクライアントおよびTCP/IPス
タックの相互作用は、以下の通りである。クライアント
VPNが以下のサービスを担う。すなわち、VPNクラ
イアントの構成、VPNゲートウェイへの認証、およ
び、内部の企業ネットワークに送信されたパケットの暗
号化である。VPNクライアントの主な仕事は、ログイ
ン・プロセスが終了された後、ネットワークへ送信され
るパケットを検査して、それらが標準のインターネット
・マシンに向けて送られているのか、企業ネットワーク
に向けて送られているのかを発見することである。
【0614】クライアントが宛先IPアドレスを検査す
る。パケットがインターネットにおけるマシン向けのも
のであった場合、これは修正せずに進む。パケットがV
PNゲートウェイの後ろの企業ネットワーク向けであっ
た場合、クライアントがこれを暗号化し、(場合によっ
ては)ある種類のアドレス変換を実行する。
【0615】クライアント・スタックは階層化構造であ
り、TCP Stack/UDPStack、NDIS
インターフェース(セットアップがこれを構成する)、
IPSec(通常、ある初期ネゴシエーションの後に対
称確立された、DESおよび3DESを使用する)、お
よび再度NDISなどである。パケットを受信するVP
Nゲートウェイが暗号を除去し、次いでこれらがネット
ワーク内部で明確になる。
【0616】SPEKEを使用する好ましい実施形態で
は、クライアントおよびゲートウェイが新しい鍵を生成
し、これが認証されたユーザ識別に結び付けられる。こ
の鍵を使用して、VPNセッション鍵への認証の動作の
バインディングを強化することができる。
【0617】上記の記載のいくつかの場所では、いくつ
かの変形形態が記載されており、これを本発明のアーキ
テクチャ内で使用することができる。これらには、
(1)ユーザをデバイスにバインドすることであり、こ
れは管理者が有効な特定のユーザおよびデバイスの組み
合わせを定義するための拡張ポリシーを使用する、
(2)クライアントとゲートウェイの間、ゲートウェイ
と認証サーバの間、および、認証サーバと強力認証モジ
ュールの間のパスワードの暗号化、(3)チャレンジ/
レスポンス機構を、ログイン・カウンタを使用する代り
に使用する、および(4)クライアントのインストレー
ションを、webサイトからインストールすることがで
きる統合されたパッケージ内部にラッピングすることが
含まれる。
【0618】したがって、コンピュータ・デバイス認証
に備えたシステムおよび方法を開示した。上述の実施形
態は、本発明の原理の応用例を表す、多数の特定の実施
形態のうちのいくつかを例示するのみであることを理解
されたい。多数および他の構成を、当業者によって、本
発明の範囲から逸れることなく容易に考案することがで
きることは明らかである。
【0619】本発明は、不揮発性ストレージと、システ
ム初期化処理であって、システム初期化処理中に不揮発
性ストレージからマスタ鍵を読み取り、マスタ鍵から導
出された機密値を隠されたストレージ・ロケーションに
書き込み、システム初期化処理の次の開始まで、システ
ム内で稼動するすべてのプログラムによる不揮発性スト
レージへのアクセスを不能にするシステム初期化処理
と、システムの通常動作モードで稼動するプログラムに
よる隠されたストレージ・ロケーションへのアクセスを
防ぐ手段と、システムの制限された動作モードで稼動す
るプログラムによる隠されたストレージ・ロケーション
へのアクセスを許可する手段とを含むマスタ暗号鍵を使
用し、マスタ暗号鍵へのアクセスを保護するシステムで
ある。
【0620】機密データは、マスタ鍵であるか、マスタ
鍵から導出されることが望ましい。また、機密データ
は、ディスクに保管された暗号化されたデータから取り
出される第2鍵であり、保管されたデータが、マスタ鍵
を用いて暗号化されることが望ましい。
【0621】BIOS ROM内のソフトウェアが、パ
ワーオンまたはリセット信号に応答して開始されるシス
テム初期化処理中にシステムを制御する。
【0622】不揮発性ストレージが、読取および書込の
アクセスをラッチによって制御される不揮発性ランダム
・アクセス・メモリであり、ラッチが、パワーオンまた
はリセット・イベントに応答するハードウェア機能に起
因してシステム初期化処理の開始時に開かれ、これによ
って、不揮発性ランダム・アクセス・メモリへのシステ
ム・アクセスが可能になり、ラッチが、システム初期化
処理中に閉じられ、これによって、システム初期化の次
の開始まで、不揮発性ランダム・アクセス・メモリへの
システム・アクセスが拒否される。
【0623】隠されたストレージは、システムの通常動
作モードで稼動するどのプログラムによってもアクセス
できないシステム管理ランダム・アクセス・メモリであ
り、制限された動作モードは、システム管理ランダム・
アクセス・メモリへのアクセスが許可されるシステム管
理モードでよい。
【0624】隠されたストレージは、オペレーティング
・システムだけによるアクセスのために制限され、シス
テムの通常動作モードで稼動するどのアプリケーション
・プログラムによってもアクセス可能ではなく、制限さ
れた動作モードが、オペレーティング・システム・ソフ
トウェアによる使用のために予約されたCPU保護リン
グによって制限されるてもよい。
【0625】マスタ暗号鍵をストレージ内に隠蔽するシ
ステムが開示されている。そのシステムは、不揮発性ス
トレージからマスタ鍵を読み取り、次のシステム・リセ
ットまでアクセスがもう一度使用可能にならないよう
に、不揮発性ストレージへのアクセスを閉じ、マスタ鍵
から導出された機密データを隠されたアドレス・スペー
スに書き込むパワーオン・ソフトウェアを含み、システ
ムの制限された動作モードで稼動するプログラムだけ
が、隠されたアドレス・スペース内の機密データへのア
クセスする。
【0626】アプリケーションへの暗号鍵の使用可能性
を制限することによって、アプリケーションに対してデ
ータへの読取および書込のアクセスを制御する方法も開
示されている。その方法は、マスタ鍵と、アプリケーシ
ョンがアクセスを求める、封印された形または開封され
た形のデータを保持するアプリケーション・コンテナ
と、暗号変換を計算するために、呼出し側アプリケーシ
ョンを構成するバイトの部分の暗号ダイジェストを実行
する暗号ゲートキーピング・モジュールと、アプリケー
ション・コンテナおよび暗号変換を検査し、アプリケー
ションが所与のアプリケーション・コンテナ内のデータ
を開封することを許可されるかどうかを判定するために
マスタ鍵を検査するか、データを封印する時に保全性検
査情報を追加するためにそれを変更する保全性検査を含
む暗号処理モジュールとを含む。
【0627】プライバシ方法も開示されている。その方
法は、少なくともマスタ鍵および暗号変換から導出され
る鍵を使用してアプリケーション・コンテナ内のデータ
を解読する暗号処理モジュールによって実行される。さ
らに、少なくともマスタ鍵および暗号変換から導出され
る鍵を使用してアプリケーション・コンテナ内のデータ
を暗号化する暗号処理モジュールによって実行されるて
もよい。また、プライバシ方法は暗号化が実行される前
に、アプリケーション・コンテナに暗号変換を追加する
してもよい。
【0628】特定のデバイス上のアプリケーションへの
暗号鍵の使用可能性を制限することによってアプリケー
ションに対してデータへのアクセスを制御する方法も開
示されている。その方法は、暗号処理モジュールに既知
の鍵と、アプリケーションがアクセスを求める、暗号的
に封印された形のデータを含むアプリケーション・コン
テナ・データ構造体と、暗号ゲートキーピング機能であ
って、アプリケーションレベル・プログラムと暗号処理
モジュールとの間のすべてのアクセスをインターセプト
し、暗号サービスまたはデータへのアクセスを試みてい
るプログラムの実行可能インメモリ・イメージのバイト
の部分を検査する手段を含み、アプリケーションの暗号
変換を計算するために、呼出し側アプリケーションのイ
ンメモリ・イメージのバイトの部分の暗号ダイジェスト
を計算する暗号ゲートキーピング機能と、暗号処理モジ
ュールによって実行される保全性検査方法であって、ア
プリケーション・コンテナ・データ構造体および暗号変
換を検査し、アプリケーションが所与のアプリケーショ
ン・コンテナ・データ構造体内のデータの開封を許可さ
れるかどうかを判定するためにマスタ鍵を検査するか、
データを封印する時に保全性検査情報を追加するために
それを変更する保全性検査方法とを含む。
【0629】上記方法は、少なくともマスタ鍵および暗
号変換から導出される鍵を使用してアプリケーション・
コンテナ・データ構造体内のデータを暗号化または解読
し、データが暗号化される時に、任意選択として、暗号
化が実行される前に暗号変換をアプリケーション・コン
テナ・データ構造体に追加する、暗号処理モジュールに
よって実行されるプライバシ方法をさらに含んでもよ
い。
【0630】暗号ゲートキーピング機能は、アプリケー
ションについて許可されるオペレーションを指定する許
可バッファを同時にまたは前に与えられ、暗号ゲートキ
ーピング機能が、要求オペレーションが許可されること
を確認するものである。
【0631】保全性検査方法は、暗号変換およびマスタ
鍵から暗号変数を導出するステップ、または、暗号変
換、マスタ鍵、およびアプリケーションのコンポーネン
トによって選択される暗号変数から第2暗号変数を導出
するステップを含み、この導出される鍵が、アプリケー
ション・コンテナ・データ構造体に保管されたメッセー
ジ認証コードを検査するのに使用されるようにしてもよ
い。
【0632】また、保全性検査方法は、マスタ鍵から導
出された鍵を使用し、結果の値の部分を暗号変換の部分
と比較し、2つの部分が同一である場合にアクセスを許
可することによって、アプリケーション・コンテナ・デ
ータ構造体の部分を解読するようにしてもよい。
【0633】プライバシ・ステップは、暗号変換とマス
タ鍵と任意選択として他の情報とから暗号変数を導出す
るステップ、または暗号変換とマスタ鍵とアプリケーシ
ョンのコンポーネントによって選択された暗号変数と任
意選択としての他の情報とから第2暗号変数を導出する
ステップを含み、この導出された鍵が、アプリケーショ
ン・コンテナ・データ構造体の部分の解読または暗号化
に使用されるようにしてもよい。
【0634】鍵導出は、依存する値を同一の順序で連結
することによって、MD5またはSHA1またはSHA
−256ハッシュ関数の1つまたは複数の適用を用いて
実行される。また、暗号処理モジュールの部分が、シス
テム管理割込み中に実行される。
【0635】デバイス・オーソリティを含む別のコンピ
ューティング・マシンの助けを得て認証サーバを含む別
のコンピューティング・マシンに対して識別されたデバ
イス上の識別されたアプリケーションを認証する方法も
開示されている。その方法は、a)デバイス・オーソリ
ティに送られる結果を作るデバイス上のシステム管理割
込み(SMI)中に実行される第1暗号オペレーション
と、b)デバイスによって受け取られるデバイス・オー
ソリティによって生成された値を処理するデバイス上の
SMI割込み中に実行される第2暗号オペレーションの
ステップを含むエンロールメント処理と、a)認証サー
バに送られる結果を作るデバイス上のSMI割込み中に
実行される第1暗号オペレーションと、b)認証方法中
に使用するために保管される暗号変数を作る認証サーバ
によって実行される第2暗号オペレーションと、c)デ
バイスによって受け取られる認証サーバによって生成さ
れた値を処理するデバイス上のSMI割込み中に実行さ
れる任意選択の第3暗号オペレーションとのステップを
含む登録処理と、a)認証サーバに送られる認証データ
を作るデバイス上のSMI割込み中に実行される第1暗
号オペレーションと、b)認証の結果を判定するため
に、少なくとも登録方法中に保管された暗号変数を使用
して、デバイスから受け取られた認証データに対して認
証サーバによって実行される第2暗号オペレーションと
のステップを含む認証処理とを含む。
【0636】識別されたデバイス上の識別されたアプリ
ケーションを認証するか、PASSサーバを含む別のコ
ンピューティング・マシンに対して識別されたデバイス
のユーザを識別するための第2要因を提供する方法も開
示されている。この方法は、アプリケーションであっ
て、a)デバイス上の、暗号的にアプリケーションと関
連したアプリケーション・コンテナ・データ構造体を作
成するためにデバイス・オーソリティおよび認証サーバ
との通信を含むエンロールメント方法を実行し、b)信
任証情報を保管し、認証サーバが、アプリケーション・
コンテナ・データ構造体の暗号変数を保管するアプリケ
ーションと、認証方法を実行する識別されたデバイス上
で稼動するアプリケーションであって、a)信任証を保
管するアプリケーション・コンテナ・データ構造体を開
封するステップと、b)信任証を修正するステップと、
c)アプリケーション・コンテナ・データ構造体を再封
印するステップと、d)識別情報および再封印されたA
ppContainerの少なくとも一部を認証サーバ
に送るステップとを含み、再封印オペレーションの少な
くとも一部が、アプリケーションのコードを実行するも
のと同一のCPU上のSMI中に行われる認証方法を実
行する識別されたデバイス上で稼動するアプリケーショ
ンとを含み、認証サーバが、a)識別情報とアプリケー
ション・コンテナ・データ構造体の少なくとも一部とを
受け取り、b)アプリケーション・コンテナ・データ構
造体を開封するために暗号変数をルックアップまたは計
算するために識別情報を使用し、c)開封されたアプリ
ケーション・コンテナが許容可能な値を有する場合に、
特定のデバイス上の特定のアプリケーションが認証され
たとみなされ、d)アプリケーション・コンテナ・デー
タ構造体に関連する鍵を保管する。
【0637】認証、プライバシ、保全性、許可、監査、
またはディジタル権利管理の目的でデバイス上で1つま
たは複数の仮想トークンを作成し、使用する方法も開示
されている。本方法は仮想トークンの種類ごとのアプリ
ケーションと、特定の種類の仮想トークンごとのアプリ
ケーション・コンテナと、暗号処理コンポーネントの暗
号サービスを要求している呼出し側アプリケーションの
暗号変換を計算する暗号ゲートキーピング・コンポーネ
ントとを含み、暗号ゲートキーピング・コンポーネント
が、1つまたは複数の長寿命の対称鍵を知り、暗号処理
コンポーネントが、CryptoGateコンポーネン
トを介してアクセスされ、暗号処理コンポーネントが、
1つまたは複数の長寿命の対称鍵および1つまたは複数
の長寿命の公開鍵を知り、暗号処理コンポーネントが、
アプリケーション・コンテナ・データ構造体の暗号的封
印および暗号的開封を実行し、暗号オペレーションの一
部が、システム管理割込み(SMI)中に実行され、暗
号処理コンポーネントが、CryptoEngineに
ロードされた公開鍵および暗号変換値を使用して、アプ
リケーションのコードまたは静的データの一部のディジ
タル署名を検査することによって、呼出し側アプリケー
ションの保全性を検査し、暗号変換値が、呼出し側アプ
リケーションのインメモリ・イメージの部分の最近計算
された暗号ハッシュを含み、暗号ゲートキーピング・コ
ンポーネントおよび暗号処理コンポーネントが、 a)
アプリケーション・コンテナ・データ構造体を開封する
鍵を、マスタ鍵および暗号変換から導出し、b)アプリ
ケーション・コンテナ・データ構造体に対するメッセー
ジ認証コードを検査するのに導出された鍵を使用し、メ
ッセージ認証コードが正しい場合にエラーを返し、c)
アプリケーション・コンテナ・データ構造体内のデータ
を解読するのに導出された鍵を使用し、それをアプリケ
ーションに返す。
【0638】付ける方法も開示されており、この方法は
デバイスに関連する対称鍵によって保護される秘密鍵を
含むアプリケーション・コンテナを作成する。
【図面の簡単な説明】
【図1】本発明の原理による、例示的なコンピュータ・
デバイス認証システムのコンポーネントを示す簡略化さ
れたブロック図である。
【図2】クライアント・コンポーネント階層を示す図で
ある。
【図3】OSDコンポーネントの相互作用を示す図であ
る。
【図4】マルチファクタ・クライアント認証(MFC
A)登録を示すブロック図である。
【図5】本発明の原理による、第1の例示的な方法を示
す流れ図である。
【図6】本発明の原理による、第1の例示的な方法を示
す流れ図である。
【図7】本発明の原理による、第2の例示的な方法を示
す流れ図である。
【図8】本発明の原理による、第3の例示的な方法を示
す流れ図である。
【図9】本発明の原理による、第4の例示的な方法を示
す流れ図である。
【図10】表1を示す図である。
【図11】表2を示す図である。
【図12】表1を示す図である。
【図13】表4を示す図である。
【図14】表5を示す図である。
【図15】表6を示す図である。
【図16】表7を示す図である。
【図17】表8を示す図である。
【図18】表9を示す図である。
【図19】表10を示す図である。
【図20】表11を示す図である。
【図21】表12を示す図である。
【図22】表13を示す図である。
【図23】表14、表15を示す図である。
【符号の説明】
10 コンピュータ・デバイス認証システム 11 不揮発性メモリ(NVM) 12 BIOS ROMシステム初期化モジュール 13 SMRAM 14 リセット時オープン・ラッチ保護機構(OARロ
ック) 15 プログラム 16 システム管理モード(SMM)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロバート・ダブリュ・ボールドウィン アメリカ合衆国・94303・カリフォルニア 州・パロ アルト・アマリージョ アヴェ ニュ・990 (72)発明者 ジョン・ディ・バール アメリカ合衆国・95123・カリフォルニア 州・サン ホゼ・ブライアー リッジ ド ライブ・47 (72)発明者 ホセ・エイ・カシリャス アメリカ合衆国・95133・カリフォルニア 州・サン ホゼ・ノース キング ロー ド・750・ナンバー 1209 (72)発明者 デイビッド・ピイ・ジャブロン アメリカ合衆国・01581・マサチューセッ ツ州・ウエストボロ・バックスキン ドラ イブ・7 (72)発明者 ティモシー・ジェイ・マーケイ アメリカ合衆国・95123・カリフォルニア 州・サン ホゼ・スイス ドライブ・571 (72)発明者 パンナガ・コトラ アメリカ合衆国・94086・カリフォルニア 州・サニイベイル・アイアリス アヴェニ ュ・641・アパートメント ナンバー 17 (72)発明者 カイ・ワング アメリカ合衆国・95051・カリフォルニア 州・サンタ クララ・トレイシー ドライ ブ・3410 (72)発明者 スティーブン・ディ・ウィリアムズ アメリカ合衆国・95062・カリフォルニア 州・サンタ クルズ・メイシール アヴェ ニュ・2015 Fターム(参考) 5B017 AA07 BA03 BA07 5B085 AE00 AE29

Claims (25)

    【特許請求の範囲】
  1. 【請求項1】 マスタ暗号鍵を使用し、上記マスタ暗号
    鍵へのアクセスを保護するシステムであって、 不揮発性ストレージと、 システム初期化処理であって、 システム初期化処理中に上記不揮発性ストレージから上
    記マスタ鍵を読み取り、 上記マスタ鍵から導出された機密値を隠されたストレー
    ジ・ロケーションに書き込み、 システム初期化処理の次の開始まで、上記システム内で
    稼動するすべてのプログラムによる上記不揮発性ストレ
    ージへのアクセスを不能にするシステム初期化処理と、 上記システムの通常動作モードで稼動するプログラムに
    よる上記隠されたストレージ・ロケーションへのアクセ
    スを防ぐ手段と、 上記システムの制限された動作モードで稼動するプログ
    ラムによる上記隠されたストレージ・ロケーションへの
    アクセスを許可する手段とを含むシステム。
  2. 【請求項2】 上記機密データが、上記マスタ鍵である
    請求項1に記載のシステム。
  3. 【請求項3】 上記機密データが、上記マスタ鍵から導
    出される請求項1に記載のシステム。
  4. 【請求項4】 上記機密データが、ディスクに保管され
    た暗号化されたデータから取り出される第2鍵であり、
    上記保管されたデータが、上記マスタ鍵を用いて暗号化
    される請求項3に記載のシステム。
  5. 【請求項5】 BIOS ROM内のソフトウェアが、
    パワーオンまたはリセット信号に応答して開始される上
    記システム初期化処理中に上記システムを制御する請求
    項1に記載のシステム。
  6. 【請求項6】 上記不揮発性ストレージが、読取および
    書込のアクセスをラッチによって制御される不揮発性ラ
    ンダム・アクセス・メモリであり、 上記ラッチが、パワーオンまたはリセット・イベントに
    応答するハードウェア機能に起因してシステム初期化処
    理の開始時に開かれ、これによって、上記不揮発性ラン
    ダム・アクセス・メモリへのシステム・アクセスが可能
    になり、 上記ラッチが、上記システム初期化処理中に閉じられ、
    これによって、システム初期化の次の開始まで、上記不
    揮発性ランダム・アクセス・メモリへのシステム・アク
    セスが拒否される請求項1に記載のシステム。
  7. 【請求項7】 上記隠されたストレージが、上記システ
    ムの上記通常動作モードで稼動するどのプログラムによ
    ってもアクセスできないシステム管理ランダム・アクセ
    ス・メモリであり、 上記制限された動作モードが、システム管理ランダム・
    アクセス・メモリへのアクセスが許可されるシステム管
    理モードである請求項1に記載のシステム。
  8. 【請求項8】 上記隠されたストレージが、オペレーテ
    ィング・システムだけによるアクセスのために制限さ
    れ、上記システムの上記通常動作モードで稼動するどの
    アプリケーション・プログラムによってもアクセス可能
    ではなく、 上記制限された動作モードが、オペレーティング・シス
    テム・ソフトウェアによる使用のために予約されたCP
    U保護リングによって制限される請求項1に記載のシス
    テム。
  9. 【請求項9】 マスタ暗号鍵をストレージ内に隠蔽する
    システムであって、 不揮発性ストレージからマスタ鍵を読み取り、 次のシステム・リセットまでアクセスがもう一度使用可
    能にならないように、上記不揮発性ストレージへのアク
    セスを閉じ、 上記マスタ鍵から導出された機密データを隠されたアド
    レス・スペースに書き込むパワーオン・ソフトウェアを
    含み、上記システムの制限された動作モードで稼動する
    プログラムだけが、上記隠されたアドレス・スペース内
    の上記機密データへのアクセスを有するシステム。
  10. 【請求項10】 アプリケーションへの暗号鍵の使用可
    能性を制限することによって、アプリケーションに対し
    てデータへの読取および書込のアクセスを制御する方法
    であって、 マスタ鍵と、 上記アプリケーションがアクセスを求める、封印された
    形または開封された形のデータを保持するアプリケーシ
    ョン・コンテナと、 暗号変換を計算するために、呼出し側アプリケーション
    を構成するバイトの部分の暗号ダイジェストを実行する
    暗号ゲートキーピング・モジュールと、 上記アプリケーション・コンテナおよび暗号変換を検査
    し、上記アプリケーションが所与のアプリケーション・
    コンテナ内のデータを開封することを許可されるかどう
    かを判定するために上記マスタ鍵を検査するか、データ
    を封印する時に保全性検査情報を追加するためにそれを
    変更する、保全性検査を含む暗号処理モジュールとを含
    む方法。
  11. 【請求項11】 プライバシ方法が、少なくとも上記マ
    スタ鍵および暗号変換から導出される鍵を使用して上記
    アプリケーション・コンテナ内の上記データを解読する
    上記暗号処理モジュールによって実行される請求項10
    に記載の方法。
  12. 【請求項12】 さらに、少なくとも上記マスタ鍵およ
    び暗号変換から導出される鍵を使用して上記アプリケー
    ション・コンテナ内の上記データを暗号化する上記暗号
    処理モジュールによって実行されるプライバシ方法を含
    む請求項10に記載の方法。
  13. 【請求項13】 上記プライバシ方法が、上記暗号化が
    実行される前に、上記アプリケーション・コンテナに上
    記暗号変換を追加する請求項12に記載の方法。
  14. 【請求項14】 特定のデバイス上のアプリケーション
    への暗号鍵の使用可能性を制限することによって上記ア
    プリケーションに対してデータへのアクセスを制御する
    方法であって、 暗号処理モジュールに既知の鍵と、 上記アプリケーションがアクセスを求める、暗号的に封
    印された形のデータを含むアプリケーション・コンテナ
    ・データ構造体と、 暗号ゲートキーピング機能であって、 アプリケーションレベル・プログラムと上記暗号処理モ
    ジュールとの間のすべてのアクセスをインターセプト
    し、 暗号サービスまたはデータへのアクセスを試みているプ
    ログラムの実行可能インメモリ・イメージのバイトの部
    分を検査する手段を含み、 上記アプリケーションの暗号変換を計算するために、呼
    出し側アプリケーションのインメモリ・イメージの上記
    バイトの部分の暗号ダイジェストを計算する暗号ゲート
    キーピング機能と、 上記暗号処理モジュールによって実行される保全性検査
    方法であって、上記アプリケーション・コンテナ・デー
    タ構造体および暗号変換を検査し、上記アプリケーショ
    ンが所与のアプリケーション・コンテナ・データ構造体
    内の上記データの開封を許可されるかどうかを判定する
    ために上記マスタ鍵を検査するか、上記データを封印す
    る時に上記保全性検査情報を追加するためにそれを変更
    する、保全性検査方法とを含む方法。
  15. 【請求項15】 少なくとも上記マスタ鍵および暗号変
    換から導出される鍵を使用して上記アプリケーション・
    コンテナ・データ構造体内のデータを暗号化または解読
    し、データが暗号化される時に、任意選択として、暗号
    化が実行される前に上記暗号変換を上記アプリケーショ
    ン・コンテナ・データ構造体に追加する、上記暗号処理
    モジュールによって実行されるプライバシ方法をさらに
    含む請求項14に記載の方法。
  16. 【請求項16】 暗号ゲートキーピング機能が、上記ア
    プリケーションについて許可されるオペレーションを指
    定する許可バッファを同時にまたは前に与えられ、上記
    暗号ゲートキーピング機能が、上記要求オペレーション
    が許可されることを確認する請求項14に記載の方法。
  17. 【請求項17】 上記保全性検査方法が、上記暗号変換
    および上記マスタ鍵から暗号変数を導出するステップ、
    または、上記暗号変換、上記マスタ鍵、およびアプリケ
    ーションのコンポーネントによって選択される暗号変数
    から第2暗号変数を導出するステップを含み、この導出
    される鍵が、上記アプリケーション・コンテナ・データ
    構造体に保管されたメッセージ認証コードを検査するの
    に使用される請求項14に記載の方法。
  18. 【請求項18】 上記保全性検査方法が、上記マスタ鍵
    から導出された鍵を使用し、結果の値の部分を上記暗号
    変換の部分と比較し、上記2つの部分が同一である場合
    にアクセスを許可することによって、上記アプリケーシ
    ョン・コンテナ・データ構造体の部分を解読することを
    含む請求項14に記載の方法。
  19. 【請求項19】 上記プライバシ・ステップが、上記暗
    号変換と上記マスタ鍵と任意選択として他の情報とから
    暗号変数を導出するステップ、または上記暗号変換と上
    記マスタ鍵とアプリケーションのコンポーネントによっ
    て選択された暗号変数と任意選択としての他の情報とか
    ら第2暗号変数を導出するステップを含み、この導出さ
    れた鍵が、上記アプリケーション・コンテナ・データ構
    造体の部分の解読または暗号化に使用される請求項14
    に記載の方法。
  20. 【請求項20】 上記鍵導出が、依存する値を同一の順
    序で連結することによって、MD5またはSHA1また
    はSHA−256ハッシュ関数の1つまたは複数の適用
    を用いて実行される請求項19に記載の方法。
  21. 【請求項21】 上記暗号処理モジュールの部分が、シ
    ステム管理割込み中に実行される請求項14に記載の方
    法。
  22. 【請求項22】 デバイス・オーソリティを含む別のコ
    ンピューティング・マシンの助けを得て認証サーバを含
    む別のコンピューティング・マシンに対して識別された
    デバイス上の識別されたアプリケーションを認証する方
    法であって、 a)デバイス・オーソリティに送られる結果を作る上記
    デバイス上のシステム管理割込み(SMI)中に実行さ
    れる第1暗号オペレーションと、 b)上記デバイスによって受け取られる上記デバイス・
    オーソリティによって生成された値を処理する上記デバ
    イス上のSMI割込み中に実行される第2暗号オペレー
    ションのステップを含むエンロールメント処理と、 a)上記認証サーバに送られる結果を作る上記デバイス
    上のSMI割込み中に実行される第1暗号オペレーショ
    ンと、 b)認証方法中に使用するために保管される暗号変数を
    作る上記認証サーバによって実行される第2暗号オペレ
    ーションと、 c)上記デバイスによって受け取られる上記認証サーバ
    によって生成された値を処理する上記デバイス上のSM
    I割込み中に実行される任意選択の第3暗号オペレーシ
    ョンとのステップを含む登録処理と、 a)上記認証サーバに送られる認証データを作る上記デ
    バイス上のSMI割込み中に実行される第1暗号オペレ
    ーションと、 b)上記認証の結果を判定するために、少なくとも上記
    登録方法中に保管された上記暗号変数を使用して、上記
    デバイスから受け取られた上記認証データに対して上記
    認証サーバによって実行される第2暗号オペレーション
    とのステップを含む認証処理とを含む方法。
  23. 【請求項23】 識別されたデバイス上の識別されたア
    プリケーションを認証するか、PASSサーバを含む別
    のコンピューティング・マシンに対して上記識別された
    デバイスのユーザを識別するための第2要因を提供する
    方法であって、 アプリケーションであって、 a)上記デバイス上の、暗号的に上記アプリケーション
    と関連したアプリケーション・コンテナ・データ構造体
    を作成するためにデバイス・オーソリティおよび認証サ
    ーバとの通信を含むエンロールメント方法を実行し、 b)信任証情報を保管し、上記認証サーバが、上記アプ
    リケーション・コンテナ・データ構造体の暗号変数を保
    管するアプリケーションと、 認証方法を実行する上記識別されたデバイス上で稼動す
    るアプリケーションであって、 a)上記信任証を保管する上記アプリケーション・コン
    テナ・データ構造体を開封するステップと、 b)上記信任証を修正するステップと、 c)上記アプリケーション・コンテナ・データ構造体を
    再封印するステップと、 d)識別情報および上記再封印されたAppConta
    inerの少なくとも一部を上記認証サーバに送るステ
    ップとを含み、上記再封印オペレーションの少なくとも
    一部が、上記アプリケーションのコードを実行するもの
    と同一のCPU上のSMI中に行われる認証方法を実行
    する上記識別されたデバイス上で稼動するアプリケーシ
    ョンとを含み、上記認証サーバが、 a)上記識別情報と上記アプリケーション・コンテナ・
    データ構造体の少なくとも一部とを受け取り、 b)上記アプリケーション・コンテナ・データ構造体を
    開封するために暗号変数をルックアップまたは計算する
    ために上記識別情報を使用し、 c)開封されたアプリケーション・コンテナが許容可能
    な値を有する場合に、特定のデバイス上の上記特定のア
    プリケーションが認証されたとみなされ、 d)上記アプリケーション・コンテナ・データ構造体に
    関連する鍵を保管する方法。
  24. 【請求項24】 認証、プライバシ、保全性、許可、監
    査、またはディジタル権利管理の目的でデバイス上で1
    つまたは複数の仮想トークンを作成し、使用する方法で
    あって、 仮想トークンの種類ごとのアプリケーションと、 特定の種類の仮想トークンごとのアプリケーション・コ
    ンテナと、 暗号処理コンポーネントの暗号サービスを要求している
    呼出し側アプリケーションの暗号変換を計算する暗号ゲ
    ートキーピング・コンポーネントとを含み、上記暗号ゲ
    ートキーピング・コンポーネントが、1つまたは複数の
    長寿命の対称鍵を知り、 上記暗号処理コンポーネントが、CryptoGate
    コンポーネントを介してアクセスされ、 上記暗号処理コンポーネントが、1つまたは複数の長寿
    命の対称鍵および1つまたは複数の長寿命の公開鍵を知
    り、 上記暗号処理コンポーネントが、アプリケーション・コ
    ンテナ・データ構造体の暗号的封印および暗号的開封を
    実行し、上記暗号オペレーションの一部が、システム管
    理割込み(SMI)中に実行され、 上記暗号処理コンポーネントが、上記CryptoEn
    gineにロードされた公開鍵および暗号変換値を使用
    して、上記アプリケーションのコードまたは静的データ
    の一部のディジタル署名を検査することによって、上記
    呼出し側アプリケーションの保全性を検査し、 上記暗号変換値が、上記呼出し側アプリケーションのイ
    ンメモリ・イメージの部分の最近計算された暗号ハッシ
    ュを含み、 上記暗号ゲートキーピング・コンポーネントおよび上記
    暗号処理コンポーネントが、 a)上記アプリケーション・コンテナ・データ構造体を
    開封する鍵を、上記マスタ鍵および暗号変換から導出
    し、 b)上記アプリケーション・コンテナ・データ構造体に
    対する上記メッセージ認証コードを検査するのに上記導
    出された鍵を使用し、上記メッセージ認証コードが正し
    い場合にエラーを返し、 c)上記アプリケーション・コンテナ・データ構造体内
    のデータを解読するのに上記導出された鍵を使用し、そ
    れを上記アプリケーションに返す方法。
  25. 【請求項25】 デバイスに関連するアプリケーション
    に秘密鍵を安全に関連付ける方法であって、 上記デバイスに関連する対称鍵によって保護される秘密
    鍵を含むアプリケーション・コンテナを作成することを
    含む方法。
JP2001355353A 2001-04-09 2001-11-20 コンピュータ・デバイス認証のシステムおよび方法 Pending JP2002312242A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7103574B1 (en) * 1999-03-27 2006-09-05 Microsoft Corporation Enforcement architecture and method for digital rights management
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5022077A (en) * 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
US5210795A (en) * 1992-01-10 1993-05-11 Digital Equipment Corporation Secure user authentication from personal computer
US5675649A (en) * 1995-11-30 1997-10-07 Electronic Data Systems Corporation Process for cryptographic key generation and safekeeping
US6157985A (en) * 1997-10-16 2000-12-05 Seagate Technology Llc Single-cycle variable period buffer manager for disk controllers
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 김월영 하드웨어락에 의한 보안 및 원격관리 시스템에서서버컴퓨터에서 클라이언트 컴퓨터의 하드웨어락에 저장된알고리즘을 제어하는 방법

Cited By (8)

* Cited by examiner, † Cited by third party
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