(57)【要約】  鍵管理サービス（「ＫＭＳ」）などの暗号鍵の管理のためのネットワークベースのサービスが、ウェブサービスアプリケーションプログラミングインタフェース（「ＡＰＩ」）を提供する。サービスによって管理される暗号鍵は、ネットワーク接続ハードウェアセキュリティモジュール（「ＨＳＭ」）などの１つ以上のネットワーク接続暗号デバイスの中に格納され得る。鍵管理サービスは、暗号鍵と関連付けられたメタデータを維持する。要求が鍵管理サービスによって受け取られると、鍵管理サービスは、要求を実現させるために使用される暗号鍵と関連付けられたメタデータを識別するために、要求とともに提供された識別子を使用する。鍵管理サービスは、メタデータを使用して暗号鍵を含む暗号デバイスを識別する。鍵管理サービスは、コマンドが、識別した暗号デバイスによって実装されるプロトコルに適合するように、要求を実現するためのコマンドの集合を生成し、コマンドの集合は識別した暗号デバイスに送信される。【選択図】図１
2021521718.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のプロセッサ及び実行可能命令を格納するメモリを備えるシステムであって、前記実行可能命令が、前記１つ以上のプロセッサによって実行される結果として、前記システムに、
暗号操作を実行する要求を取得させ、
１つ以上の暗号デバイスを選択するために、前記要求に指定された識別子を使用させ、
前記１つ以上の暗号デバイスに前記暗号操作を実行させる、
システム。
【請求項２】
前記システムが、ウェブベースアプリケーションプログラミングインタフェースを提供し、
前記要求が、前記ウェブベースアプリケーションプログラミングインタフェースを介して受け取られる、
請求項１に記載のシステム。
【請求項３】
前記識別子が暗号鍵を識別し、
前記実行可能命令が、さらに、前記システムに、前記暗号鍵を使用できる暗号デバイスの集合から前記１つ以上の暗号デバイスを選択させる、
請求項１または２に記載のシステム。
【請求項４】
前記実行可能命令が、前記システムに、さらに、
暗号トークンに対するプラットフォーム独立アプリケーションプログラミングインタフェースに従ってコマンドの集合を生成させ、
前記１つ以上の暗号デバイスにコマンドの前記集合を送信させる、
請求項１から３のいずれか一項に記載のシステム。
【請求項５】
前記１つ以上の暗号デバイスがハードウェアセキュリティモジュールであり、
暗号トークンに対する前記プラットフォーム独立アプリケーションプログラミングインタフェースが、ＰＫＣＳ１１に準拠したアプリケーションプログラミングインタフェースである、
請求項４に記載のシステム。
【請求項６】
前記要求がネットワーク上のコンピュータシステムから受け取られ、
前記１つ以上の暗号デバイスが前記ネットワーク上に位置する、
請求項１から５のいずれか一項に記載のシステム。
【請求項７】
前記実行可能命令が、前記システムに、さらに、
前記識別子と関連付けられる暗号化された鍵を取得させ、
前記１つ以上の暗号デバイスに前記暗号化された鍵を提供させる、
請求項１から６のいずれか一項に記載のシステム。
【請求項８】
前記１つ以上の暗号デバイスが、それぞれ
それぞれの暗号プロセッサと、
前記暗号操作を実行するために使用されるエクスポート不可の暗号鍵を格納するそれぞれのメモリと
を含む、請求項１から７のいずれか一項に記載のシステム。
【請求項９】
コンピュータ実装方法であって、
暗号操作を実行する要求を取得することと、
１つ以上の暗号デバイスを選択するために、前記要求に指定された識別子を使用することと、
前記１つ以上の暗号デバイスに前記暗号操作を実行させることと
を含む、コンピュータ実装方法。
【請求項１０】
暗号トークンに対するプラットフォーム独立アプリケーションプログラミングインタフェースに従ってコマンドの集合を生成することと、
前記１つ以上の暗号デバイスにコマンドの前記集合を送信することと
をさらに含む、請求項９に記載のコンピュータ実装方法。
【請求項１１】
前記１つ以上の暗号デバイスがハードウェアセキュリティモジュールであり、
暗号トークンに対する前記プラットフォーム独立アプリケーションプログラミングインタフェースが、Ｊａｖａ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｅｘｔｅｎｓｉｏｎに準拠したアプリケーションプログラミングインタフェースである、
請求項１０に記載のコンピュータ実装方法。
【請求項１２】
前記要求がカスタマネットワーク上のコンピュータシステムから受け取られ、
前記１つ以上の暗号デバイスが前記カスタマネットワーク上に位置する、
請求項９から１１のいずれか一項に記載のコンピュータ実装方法。
【請求項１３】
前記識別子と関連付けられる暗号鍵のためのメタデータを取得することと、
前記１つ以上の暗号デバイスに前記メタデータの少なくとも一部分を提供することと
をさらに含む、請求項９から１２のいずれか一項に記載のコンピュータ実装方法。
【請求項１４】
前記要求が、ネットワークアクセス可能ウェブサービスインタフェースを介して取得される、請求項９から１３のいずれか一項に記載のコンピュータ実装方法。
【請求項１５】
前記暗号操作を実行するために使用可能な暗号鍵を識別することと、
前記暗号鍵と関連付けられたメタデータを取得することと
をさらに含み、
前記１つ以上の暗号デバイスを選択することが、少なくとも部分的に前記メタデータに基づく、
請求項９から１４のいずれか一項に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、その開示が全体として参照により組み込まれる「ＫＥＹ  ＭＡＮＡＧＥＭＥＮＴ  ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ」と題する、２０１８年５月２日に出願された米国特許出願第１５／９６９，６９５号の優先権を主張する。
【背景技術】
【０００２】
データセキュリティは、コンピューティングインフラストラクチャの重要な態様である。データセキュリティを提供する１つの方法は、暗号法によってである。多様な環境では、データを認証し、保護するために、データは暗号化され得る、または暗号で署名され得る。一般に、暗号操作を実行するとき、暗号鍵が使用される。エンティティが特定の暗号鍵を使用できることにより、エンティティは暗号鍵で暗号化される平文データにアクセスし、デジタル署名を手段として特定の暗号鍵を使用するその能力を証明することができる。したがって、暗号鍵へのアクセスを制御することは、サービスプロバイダ及び他が、データの完全性を保証するために相当な努力及びリソースを費やす重要な問題である。
【０００３】
図面を参照して、多様な技術が説明される。
【図面の簡単な説明】
【０００４】
【図１】一実施形態において、ハードウェアセキュリティモジュールに格納される暗号鍵を管理するシステムの実施例を示す。
【図２】一実施形態において、ＨＳＭに格納された鍵を管理する鍵管理サーバの実施例を示す。
【図３】一実施形態において、カスタマネットワークの中のルータを介してＨＳＭと通信する鍵管理サーバの実施例を示す。
【図４】一実施形態において、ＨＳＭプロキシサービスの実施例を示す。
【図５】一実施形態において、クライアントコンピュータシステム、鍵管理サーバ、及びハードウェアセキュリティモジュールによって実行される結果として、ＨＳＭ上に格納された暗号鍵を使用して暗号操作を実行するプロセスの実施例を示す。
【図６】一実施形態において、鍵管理サーバによって実行される結果として、ＨＳＭクラスタに対する論理的な接続を確立するプロセスの実施例を示す。
【図７】一実施形態において、鍵管理サーバによって実行される結果として、ＨＳＭ上で暗号鍵を生成し、鍵管理サービスが使用するための鍵を登録するプロセスの実施例を示す。
【図８】一実施形態において、鍵管理サービスに接続されたＨＳＭのための許容状態遷移の集合の実施例を示す。
【図９】多様な実施形態を実施できるシステムを示す。
【発明を実施するための形態】
【０００５】
本文書は、暗号鍵の管理のためにネットワークベースのサービスを提供するシステムを説明する。一実施形態では、鍵管理サービス（「ＫＭＳ」）は、暗号鍵の管理のためにウェブサービスアプリケーションプログラミングインタフェース（「ＡＰＩ」）を提供する。一実施形態では、暗号鍵は、耐タンパー性のあるメモリを含むネットワーク接続ハードウェアセキュリティモジュール（「ＨＳＭ」）などの１つ以上のネットワーク接続暗号デバイスの中に格納される。一実施形態では、暗号デバイス内に格納された暗号鍵は、それらが暗号化されていない形式で暗号デバイスから抽出され得ないという点でエクスポート不可である。一実施形態では、鍵管理サービスは、サービスによって管理される暗号鍵を記述するメタデータを維持する。一実施形態では、要求が鍵管理サービスによって受け取られると、鍵管理サービスは、要求を実現させるために使用される暗号鍵と関連付けられたメタデータを識別するために、要求とともに提供された識別子を使用する。一実施形態では、メタデータを使用して、鍵管理サービスは、暗号鍵を含む暗号デバイスを識別する。一実施形態では、鍵管理サービスは、コマンドが、識別した暗号デバイスによって実装されるプロトコルに適合するように、要求を実現するためのコマンドの集合を生成する。一実施形態では、鍵管理サービスは、ウェブサービスＡＰＩを介して提出された要求を、公開鍵暗号法規格（ｐｕｂｌｉｃ  ｋｅｙ  ｃｒｙｐｔｏｇｒａｐｈｙ  ｓｔａｎｄａｒｄ）（「ＰＫＣＳ」）＃１１に適合するコマンドの集合に変換し、そのコマンドの集合は次いで識別した暗号デバイスに送信される。
【０００６】
一実施形態では、鍵管理サービスは、鍵管理サービスによって制御されない暗号デバイスの中に格納される暗号鍵の管理及び使用を可能にする。一実施形態では、ネットワーク接続ＨＳＭの集合は、カスタマネットワークに属する暗号鍵を含む。一実施形態では、カスタマネットワークは、仮想プライベートネットワーク（「ＶＰＮ」）またはカスタマによって運用される企業網であってよい。一実施形態では、カスタマの企業用の暗号鍵は、ＨＳＭ上に格納される。一実施形態では、鍵管理サービスは、カスタマの企業の中のユーザーから暗号操作を実行する要求を受け取り、要求を実現させることができるＨＳＭなどの暗号デバイスを識別し、次いで暗号デバイスに、識別したデバイスに適合するコマンドの集合を送信することによって要求を実現させる。多様な実施形態では、暗号デバイスは、カスタマによって制御される仮想ネットワーク、または鍵管理サービスの事業者によって制御されるネットワークに接続されてよい。
【０００７】
一実施形態では、鍵管理サービスから暗号デバイスを分離することによって、カスタマは暗号鍵に対する強化された制御を提供される。一実施形態では、そのような制御は、暗号デバイスがカスタマの企業内に物理的に位置するときの暗号鍵に対する物理的な制御を含む場合がある。一実施形態では、鍵管理サービスによって、カスタマは、異なる通信プロトコル及びコマンドプロトコルを実装する異なるベンダ及びデバイスから、ＨＳＭを含む種々の暗号デバイスを使用できる。一実施形態では、鍵管理サービスは、鍵管理サービスが、暗号鍵が位置する暗号デバイスのために適切なコマンドを生成できるようにするメタデータを維持する。
【０００８】
本開示を鑑みて当業者が理解するように、特定の実施形態は、以下のうちのいくつかまたはすべてを含む、特定の優位点を達成し得る。（１）鍵管理サービスを手段としてネットワーク接続ＨＳＭに格納された鍵を管理できる標準的なウェブベースのＡＰＩを提供することによって異なるＨＳＭを使用することをより容易にすること、（２）鍵管理サービスに鍵の暗号化されたバージョンをエクスポートすることを回避することによって暗号鍵に対するセキュリティを提供すること、及び（３）カスタマのデータセンタまたはカスタマが制御する仮想ネットワークなどの外部ネットワークの中に位置するＨＳＭの中に格納された暗号鍵の管理及び使用を可能にすることによってＨＳＭセキュリティを提供すること。
【０００９】
図１は、一実施形態において、ハードウェアセキュリティモジュールに格納される暗号鍵を管理するシステム１００の実施例を示す。一実施形態では、鍵管理サービス１０２は、そのカスタマの代わりに、カスタマが暗号鍵を作成する、削除する、循環させる（ｒｏｔａｔｅ）、及び使用することを可能にする管理されたサービスである。一実施形態では、カスタマは、暗号化された鍵がＨＳＭの中にインポートされ、鍵管理サーバによって管理されることを要求してよい。一実施形態では、カスタマは、ＨＳＭに格納された鍵が暗号化された形式で鍵管理サーバの中にインポートされ、管理されることを要求してよい。一実施形態では、鍵管理サービス１０２を使用し、カスタマは、鍵管理方針を定義することによって鍵をどのように及びいつ使用できるのかを制御することができる。一実施形態では、コンピューティングリソースサービスプロバイダによって提供される多様なサービスは、鍵管理サービスと対話してそれらのサービス内に格納されたデータを保護するのを助けてよい。一実施形態では、鍵管理サービスは、１つ以上のプロセッサ及び実行可能命令を含むメモリを有するコンピュータシステムであり、実行可能命令は、１つ以上のプロセッサによって実行される結果として、コンピュータシステムに、鍵の循環（ｒｏｔａｔｉｏｎ）、鍵の生成、暗号化、復号、デジタル署名の生成及び検証、鍵の削除、ならびに鍵の使用のロギングなどの多様な鍵管理機能を実行させる。一実施形態では、コンピュータシステムは、コンピュータサーバ、仮想サーバ、サーバクラスタ、コンテナサービス、コンピューティング実行時、または命令処理装置であってよい。
【００１０】
一実施形態では、鍵管理サービス１０２は、クライアントコンピュータシステム１０６を介してユーザー１０４によってアクセスされる。一実施形態では、クライアントコンピュータシステム１０６は、パーソナルコンピュータシステム、サーバコンピュータシステム、仮想コンピュータシステム、ハンドヘルドデバイス、携帯電話、ラップトップコンピュータ、またはコンピューティングアプライアンスである。クライアントコンピュータシステムは、一実施形態では、鍵管理サービス１０２も実行するサービスプロバイダによってホストされる。例えば、一実施形態では、クライアントコンピュータシステムは、仮想コンピュータシステムが対応するカスタマによって遠隔でプログラムで管理される、サービスプロバイダのハードウェア上でホストされる仮想コンピュータシステムである。一実施形態では、クライアントコンピュータシステム１０６は、１つ以上のプロセッサ及び命令を含むメモリを含み、命令は、１つ以上のプロセッサによって実行される結果として、クライアントコンピュータシステムに、コンピュータネットワークを介して要求を送信し、鍵管理サービス１０２から結果を受け取らせる。一実施形態では、クライアントコンピュータシステム１０６によって提出される要求はウェブサービス要求である。
【００１１】
一実施形態では、鍵管理サービス１０２は、クライアントコンピュータシステム１０６から、暗号操作を実行する要求を受け取る。一実施形態では、要求は、鍵管理サービス１０２が、要求を実現させるために使用される暗号鍵を識別できるようにする情報を含む。一実施形態では、情報は、ハンドル、名前、または暗号鍵と関連付けられたトークンもしくは他の識別子である。一実施形態では、識別子は、要求のパラメータによって間接的に識別される。例えば、一実施形態では、データを暗号化する要求は、要求を処理するために適した暗号デバイスを識別するために使用し得る暗号鍵または暗号アルゴリズムを指定してよい。一実施形態では、鍵管理サービス１０２は、情報と関連付けられた暗号鍵を識別し、識別した暗号鍵と関連付けられたメタデータ１１０の集合を取り出すためにデータベース１０８に接続する。一実施形態では、データベース１０８は、リレーショナルデータベース、データストア、データ構造、キー値ストア、またはメタデータを含むメモリであってよい。データベース１０８は、鍵管理サービス１０２をホストするコンピュータシステムの中のメモリ、またはコンピュータネットワークもしくは外部接続を介してアクセス可能である鍵管理サービス１０２をホストするコンピュータシステムにとって外部のストレージデバイスであってよい。
【００１２】
一実施形態では、メタデータ１１０は、暗号鍵が格納されている暗号デバイスを識別するために鍵管理サービス１０２が使用可能な情報を含む。一実施形態では、情報は、ネットワークアドレス、ポート番号、ユニフォームリソースロケータ（「ＵＲＬ」）、及び暗号鍵が格納されている暗号デバイスと関連付けられた識別子の１つ以上を含む。一実施形態では、暗号デバイスはＨＳＭ、暗号プロセッサ、トラステッドプラットフォームモジュール（ＴＰＭ）、耐タンパー性のあるメモリ、エクスポート不可のメモリデバイス、または保護されたメモリである。一実施形態では、情報は、暗号鍵が格納されている暗号デバイスと関連付けられたインタフェースプロトコルを記述する。一実施形態では、情報は、暗号デバイスにアクセスするために鍵管理サービス１０２が使用できる認証情報を記述する。一実施形態では、メタデータは、鍵循環方針、鍵長さ方針、及び暗号鍵の使用制限などの暗号鍵の鍵管理方針を指定する情報を含む。一実施形態では、メタデータは、暗号デバイス上で暗号鍵を識別する識別子、名前、及びハンドルを含む。
【００１３】
一実施形態では、鍵管理サービス１０２は、ユーザー１０４が、要求された暗号操作と関連付けられた暗号鍵を使用することを許されているかどうかを判断するためにメタデータを使用する。一実施形態では、ユーザー１０４が暗号鍵を使用することを許されている場合、鍵管理サービス１０２は、要求を、暗号鍵が格納されている暗号デバイスに適合するコマンドの集合に変換する。一実施形態では、要求はウェブ要求の形式で提出され、コマンドの集合は、暗号鍵が格納されているＨＳＭに適合するＰＫＣＳ１１コマンドの集合である。一実施形態では、メタデータ及び認証情報から抽出したアドレス情報を使用して、鍵管理サービス１０２は、コマンドの集合、及び暗号デバイス上の暗号鍵を識別する識別子を、暗号鍵が格納されている暗号デバイスに提出する。一実施形態では、暗号デバイスは、識別した鍵を使用して暗号操作を実行し、鍵管理サービス１０２に結果を返す。
【００１４】
一実施形態では、暗号デバイスは、ＨＳＭクラスタ１１２として配置された複数のＨＳＭである。一実施形態では、ＨＳＭクラスタは、複数のＨＳＭにわたって複製される暗号鍵の集合を含む。一実施形態では、ロードバランサは、複数のＨＳＭにわたって暗号操作を実行する要求を配信し、暗号操作のスループットの上昇、及びＨＳＭが故障した場合には信頼性の増大を可能にする。一実施形態では、ＨＳＭクラスタ１１２は、第１のＨＳＭ１１４、第２のＨＳＭ１１６、及び第３のＨＳＭ１１８を含む。一実施形態では、ロードバランサは、クラスタの中の個々のＨＳＭにコマンドを転送するハードウェアロードバランサである。一実施形態では、ロードバランサは、少なくとも部分的にクラスタの中の個々のＨＳＭの処理可用性に基づいてＨＳＭを選択する、鍵管理サーバの中に組み込まれたソフトウェアロードバランサである。
【００１５】
一実施形態では、暗号デバイスは、多様なネットワークトポロジまたはカスタマの物理的なセキュリティ要件を容易にするために鍵管理サービスから遠隔に位置する場合がある。一実施形態では、暗号デバイスは、鍵管理サービスと同じネットワーク上に位置する。一実施形態では、暗号デバイスは、カスタマデータセンタ内に位置し、鍵管理サービスはカスタマデータセンタの中のネットワークに接続するトンネルまたはゲートウェイを経由して暗号デバイスにアクセスする。一実施形態では、暗号デバイスは、カスタマ仮想ネットワークに接続され、鍵管理サービスは、コンピューティングリソースサービスプロバイダによってホストされ、鍵管理サービスは、鍵管理サービスが暗号デバイスにアクセスできるようにカスタマ仮想ネットワークを構成する。カスタマが、カスタマの制御下のネットワークに接続された暗号デバイス上で鍵を維持できるようにすることによって、カスタマは、多様な実施形態で、それらのデバイス上に格納された暗号鍵に対するより大きな物理的制御を行使できる。一実施形態では、鍵管理サービスは、デバイスの中に格納された暗号鍵を平文の形式でも、暗号化された形式でも利用できない。一実施形態では、鍵管理サービスは、ＨＳＭクラスタに対する要求とともに暗号鍵の暗号化されたバージョンを提供しない。
【００１６】
図２は、一実施形態において、ＨＳＭに格納された鍵を管理する鍵管理サーバを含むシステム２００の実施例を示す。一実施形態では、鍵管理サーバ２０２は、ネットワークアクセス可能アプリケーションプログラミングインタフェースを提供することによってユーザー２０４に鍵管理サービスを提供する。一実施形態では、鍵管理サーバは、図９に説明するウェブサーバなどのコンピュータシステム上で実装されてよい。一実施形態では、ユーザー２０４は、クライアントコンピュータシステム２０６を介して鍵管理サーバ２０２にアクセスする。一実施形態では、クライアントコンピュータシステム２０６上でホストされるアプリケーションは、暗号操作を実行する要求を生成する。一実施形態では、要求は鍵識別子を含む。一実施形態では、要求は、リプレゼンテーショナルステートトランスファ（ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  ｓｔａｔｅ  ｔｒａｎｓｆｅｒ）（「ＲＥＳＴ」）インタフェース、シンプルオブジェクトアクセスプロトコル（「ＳＯＡＰ」）インタフェース、または拡張マークアップ言語（「ＸＭＬ」）インタフェースなどのウェブサービスインタフェースを介して鍵管理サーバ２０２に提出される。
【００１７】
一実施形態では、鍵識別子を含む要求は、鍵管理サーバ２０２によってホストされる鍵管理サービス２０８で受け取られる。一実施形態では、鍵管理サービス２０８は、鍵管理サーバ２０２上のメモリの中に格納された実行可能命令から成るソフトウェア構成要素である。一実施形態では、本文書において、鍵管理サービス２０８に起因するアクションは、鍵管理サービス２０８と関連付けられた実行可能命令を実行した結果として鍵管理サーバ２０２によって実行される。一実施形態では、鍵管理サービス２０８は、提供された鍵識別子と関連付けられたメタデータ２１２を取り出すためにデータベース２１０に問い合わせを行う。一実施形態では、メタデータは、メタデータ２１２の中で識別されたＨＳＭに提供される結果として、ＨＳＭ上で特定の鍵を識別する鍵ハンドルを含む。
【００１８】
一実施形態では、鍵管理サービス２０８は、ユーザー２０４が要求された操作を実行する権限を与えられていることを確認し、ＨＳＭ２１６と通信しているＨＳＭプロキシ２１４に鍵ハンドルとともに要求を提出する。一実施形態では、ＨＳＭプロキシ２１４は、要求を、ＨＳＭ２１６に適合するプロトコルに変換する。一実施形態では、鍵管理サーバは、複数のＨＳＭプロキシを含み、少なくとも部分的に鍵メタデータ２１２に基づいて特定のプロキシを選択する。一実施形態では、ＨＳＭプロキシは、鍵管理サービス２０８から特定のＨＳＭを識別する情報を受け取り、メタデータ２１２の中の情報を使用し、特定のＨＳＭへのネットワーク経路を識別する。一実施形態では、ＨＳＭ２１６は、鍵管理サーバ２０２と同じネットワークに接続され、要求及び結果は、共有ネットワークを介してＨＳＭプロキシ２１４と鍵管理サーバ２０２との間で単に伝送される。
【００１９】
一実施形態では、ＨＳＭプロキシ２１４は、ＨＳＭ２１６上のＨＳＭサービス２１８に変換した要求を送信する。一実施形態では、ＨＳＭサービス２１８は、鍵管理サーバ２０２が、要求を実現させる前提条件として、認定ユーザーであることを証明する。一実施形態では、ＨＳＭサービス２１８は、ＨＳＭ２１６の暗号プロセッサ上で実行中の実行可能命令のセットである。一実施形態では、ＨＳＭサービス２１８は、ＨＳＭ２１６上の保護されたメモリ２２０から鍵を取り出し、要求された暗号操作を実行する。一実施形態では、ＨＳＭサービス２１８は、ＨＳＭプロキシ２１４に結果を返し、鍵管理サーバ２０２は、クライアントコンピュータシステム２０６に結果を中継して送り返す。
【００２０】
図３は、一実施形態において、カスタマネットワークの中のルータを介してＨＳＭと通信する鍵管理サーバ３００の実施例を示す。一実施形態では、鍵管理サーバ３０２は、ネットワークアクセス可能アプリケーションプログラミングインタフェースを提供することによってユーザー３０４に鍵管理サービスを提供する。一実施形態では、ユーザー３０４は、クライアントコンピュータシステム３０６を介して鍵管理サーバ３０２にアクセスする。一実施形態では、クライアントコンピュータシステム３０６によってホストされたアプリケーションプログラムは、暗号操作を実行する要求を生成する。一実施形態では、要求は鍵識別子を含む。一実施形態では、要求は、リプレゼンテーショナルステートトランスファ（ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  ｓｔａｔｅ  ｔｒａｎｓｆｅｒ）（「ＲＥＳＴ」）インタフェース、または上述の他のウェブインタフェースなどのウェブサービスインタフェースを介して鍵管理サーバ３０２に提出される。
【００２１】
一実施形態では、鍵識別子を含む要求は、鍵管理サーバ３０２によってホストされた鍵管理サービス３０８で受け取られる。一実施形態では、鍵管理サービス３０８は、鍵管理サーバ３０２上のメモリの中に格納された実行可能命令から成るソフトウェア構成要素である。一実施形態では、本文書において、鍵管理サービス３０８に起因するアクションは、鍵管理サービス３０８と関連付けられた実行可能命令を実行した結果として鍵管理サーバ３０２によって実行される。一実施形態では、鍵管理サービス３０８は、提供された鍵識別子と関連付けられたメタデータ３１２を取り出すためにデータベース３１０に問い合わせを行う。一実施形態では、メタデータは、メタデータ３１２の中で識別されたＨＳＭに提供される結果として、ＨＳＭ上で特定の鍵を識別する鍵ハンドルを含む。
【００２２】
一実施形態では、鍵管理サービス３０８は、ユーザー３０４が要求された操作を実行する権限を与えられていることを確認し、ＨＳＭ３１６と通信しているＨＳＭプロキシ３１４に鍵ハンドルとともに要求を提出する。一実施形態では、ＨＳＭプロキシ３１４は、要求を、ＨＳＭ３１６に適合するプロトコルに変換する。一実施形態では、要求は、同等なコマンドのテーブルを使用し、新しいコマンドを生成し、新しいプロトコルの構文に従って新しいコマンドのためのパラメータを生成することによって変換される。一実施形態では、変換によって元のコマンドに同等である複数のコマンドが生成され得る。一実施形態では、鍵管理サーバは、複数のＨＳＭプロキシを含み、少なくとも部分的に鍵メタデータ３１２に基づいて特定のプロキシを選択する。一実施形態では、ＨＳＭプロキシは、鍵管理サービス３０８から特定のＨＳＭを識別する情報を受け取り、メタデータ３１２の中の情報を使用し、特定のＨＳＭへのネットワーク経路を識別する。
【００２３】
一実施形態では、ＨＳＭプロキシ３１４は、ＨＳＭ３１６上のＨＳＭサービス３２０に、変換した要求を送信する。一実施形態では、ＨＳＭサービス３２０は、鍵管理サーバ３０２が、要求を実現させる前提条件として、認定ユーザーであることを証明する。一実施形態では、ＨＳＭサービス３２０は、ＨＳＭ３１６の暗号プロセッサ上で実行中の実行可能命令のセットである。一実施形態では、ＨＳＭサービス３２０は、ＨＳＭ３１６上の保護されたメモリ３２２から鍵を取り出し、要求された暗号操作を実行する。一実施形態では、ＨＳＭサービス３２０は、ＨＳＭプロキシ３１４に結果を返し、鍵管理サーバ３０２は、クライアントコンピュータシステム３０６に結果を中継して送り返す。
【００２４】
一実施形態では、ユーザーに追加のセキュリティ及び制御を与えるために、ＨＳＭは、鍵管理サーバ３０２のネットワークとは異なるネットワーク上に位置する。一実施形態では、異なるネットワークは、異なるサブネット、異なる仮想ネットワーク、または異なるネットワークセグメントであってよい。一実施形態では、ＨＳＭ３１６は、ネットワークなどのカスタマに属するネットワーク、及びカスタマによって制御され、一般的に鍵管理サーバ３０２がアクセスできないカスタマデータセンタまたは仮想ネットワークに接続される。一実施形態では、仮想ネットワークルータ３１８は、ＨＳＭ３１６のネットワークの中に設けられる。一実施形態では、仮想ネットワークルータ３１８は、鍵管理サーバがアクセスできるエンドポイントを提供し、ＨＳＭ３１６と鍵管理サーバ３０２との間で要求及び結果を転送する。一実施形態では、仮想ネットワークルータ３１８は、物理ネットワークルータ、ゲートウェイ、またはＨＳＭ３１６と鍵管理サーバ３０２との間のネットワークトンネルの代わりとなってよい。
【００２５】
図４は、一実施形態において、ＨＳＭプロキシサービスのためのアーキテクチャ図、４００を示す。一実施形態では、鍵管理サービスと関連付けられたクライアント４０２の集合は、ＨＳＭプロキシサービスインスタンス４０４にアクセスできる。一実施形態では、ＨＳＭプロキシサービスインスタンス４０４は、鍵管理サービスがアクセスできるアプリケーションプログラミングインタフェース、ウェブサービスインタフェース、またはサービスインタフェースを提供する。一実施形態では、ＨＳＭプロキシサービスインスタンス４０４は、ドライバの集合にインタフェースをとるプロキシサービス４０６を含む。一実施形態では、ドライバの集合は、第１のドライバ４０８、第２のドライバ４１０、及び第３のドライバ４１２を含む。一実施形態では、ドライバの集合の中の各ドライバは、特定のＨＳＭクラスタとの通信を可能にするプロキシサーバ４０６へのインタフェースを提供する。一実施形態では、ドライバの集合の中の各ドライバによって提供されるインタフェースは、ＰＫＣＳ１１、Ｍｉｃｒｏｓｏｆｔ  ｃｒｙｐｔｏｇｒａｐｈｙ  ＡＰＩ（「ＣＡＰＩ」）、またはＪＣＥインタフェースである。一実施形態では、ドライバの集合の中の各ドライバは、ＨＳＭクラスタドライバ／ロードバランサを介してその関連付けられたＨＳＭクラスタと通信する。一実施形態では、ＨＳＭプロキシサービスインスタンス４０４は、第１のクラスタドライバ４１４、第２のクラスタドライバ４１６、及び第３のクラスタドライバ４１８を含む。一実施形態では、各クラスタドライバは、ドライバの集合からの出力を、特定のＨＳＭクラスタに適合するフォーマット及びプロトコルに変換する。一実施形態では、クラスタドライバは、ネットワークインタフェースを介してその特定のＨＳＭクラスタと通信する。一実施形態では、クラスタドライバは、ＨＳＭクラスタの中の個々のＨＳＭにわたって暗号要求を配信するロードバランシング機能を含む。
【００２６】
一実施形態では、第１のクラスタドライバ４１４は、ＨＳＭクラスタ４２０の中で編成されたＨＳＭの集合にわたって暗号コマンドを配信する。一実施形態では、暗号コマンドは、ラウンドロビン方式で、つまり無作為な方式で配信されてよい。一実施形態では、ＨＳＭクラスタ４２０は、第１のＨＳＭ４２２、第２のＨＳＭ４２４、及び第３のＨＳＭ４２６を含む。一実施形態では、特定のクラスタドライバは、個々のＨＳＭ、ＨＳＭクラスタ、暗号プロセッサ、または暗号デバイスとインタフェースをとってよい。一実施形態では、クラスタドライバは、ＨＳＭベンダに特有であるプロトコルを実装する。一実施形態では、ＨＳＭプロキシサービスインスタンス４０４は、組み合わされて、コマンドを、鍵管理サービスによって生成された標準的なフォーマットからＨＳＭによって理解されるベンダ特有のフォーマット及びプロトコルに変換できる種々のドライバ及びクラスタドライバを含んでよい。一実施形態では、これは、鍵管理システムを実装するときに高められた柔軟性を提供する。
【００２７】
一実施形態では、ＨＳＭプロキシはＪａｖａ（登録商標）サービス、Ｇｏサービス、またはＰｙｔｈｏｎサービスとして実装される。一実施形態では、各ＨＳＭプロキシサービスインスタンスは、その関連付けられたＨＳＭクラスタのアドレス情報を含む情報を維持する。一実施形態では、情報は、ＨＳＭクラスタのための公開鍵を含む。
【００２８】
図５は、一実施形態において、クライアントコンピュータシステム、鍵管理サーバ、及びハードウェアセキュリティモジュールによって実行される結果として、ＨＳＭ上に格納された暗号鍵を使用して暗号操作を実行するプロセス５００の実施例を示す。一実施形態では、プロセスは、クライアントコンピュータシステムが暗号操作を実行する要求を生成するブロック５０２で開始する。一実施形態では、この要求は、平文データを暗号化する要求、暗号文を復号する要求、デジタル署名を生成する要求、暗号鍵を循環させる要求、メッセージ認証コードを生成する要求、デジタル署名を検証する要求、または他の操作であってよい。一実施形態では、要求は、特定の暗号鍵を識別する情報を含む。一実施形態では、情報は識別子、ハンドル、またはトークンであるが、暗号化された形式でも平文形式でも暗号鍵自体を含まない。一実施形態では、情報は、鍵管理サービスが、要求された操作を実行するために必要とされる特定の暗号鍵を識別することを可能にする暗号鍵と関連付けられた識別子である。一実施形態では、ブロック５０４で、クライアントコンピュータシステムは、鍵管理サーバに要求及び暗号鍵と関連付けられた識別情報を送信する。
【００２９】
一実施形態では、ブロック５０６で、鍵管理サーバは要求を受け取り、暗号鍵を識別するために、要求の中で提供された情報を使用する。一実施形態では、ブロック５０８で、鍵管理サーバはデータストアにアクセスし、暗号鍵と関連付けられたメタデータを取り出す。一実施形態では、メタデータは、暗号鍵を含む、ＨＳＭなどの暗号デバイスの集合を識別する情報を含んでよい。一実施形態では、メタデータは、ネットワークアドレス情報、サービスＵＲＬ、ポート番号、または鍵管理サーバが、暗号鍵が格納されているハードウェアセキュリティモジュールにアクセスできるようにする他の情報を含む。一実施形態では、メタデータは、暗号鍵が格納されている暗号デバイスにアクセスするために使用される認証情報を含む。一実施形態では、メタデータは、ハンドル、トークン、または暗号デバイスに対して暗号鍵を識別する関連付けられた識別子を含む。
【００３０】
一実施形態では、ブロック５１０で、鍵管理サーバは、メタデータを使用して暗号鍵を格納する特定のＨＳＭを識別する。一実施形態では、ブロック５１２で、鍵管理サーバは要求を調べ、要求者が要求された暗号操作を実行する権限を与えられているかどうかを判断する。一実施形態では、鍵管理サーバは、メタデータの中の認証情報も調べて、認証情報が要求を暗号デバイスに提出することを可能にするどうかを判断してよい。一実施形態では、要求が鍵管理サーバによっても、ハードウェアセキュリティモジュールによっても許可されていない場合、エラーメッセージがクライアントコンピュータシステムに返される。一実施形態では、要求が鍵管理サーバ及びハードウェアセキュリティモジュールによって許可されている場合、実行はブロック５１４に進む。
【００３１】
一実施形態では、ブロック５１４で、鍵管理サーバは、暗号鍵を含むＨＳＭの集合から特定のＨＳＭを選択する。一実施形態では、メタデータは、暗号鍵が格納されている複数のＨＳＭを識別し、鍵管理サーバは、ロードバランサを使用して、要求を実現させるために複数のＨＳＭのうちの１つを選択する。一実施形態では、特定のＨＳＭは、少なくとも部分的に暗号鍵と関連付けられたメタデータに基づいて選択される。一実施形態では、鍵管理サーバは、選択されたＨＳＭに適合するコマンドの集合を生成する。一実施形態では、ブロック５１６で、コマンドの集合及びメタデータから決定された鍵識別子が、選択されたＨＳＭに提出される。一実施形態では、鍵管理サーバは、コマンドの集合の性能の正当性を認めるためにＨＳＭに認証情報を提供する。
【００３２】
一実施形態では、ブロック５１８で、ＨＳＭはコマンドの集合を受け取る。一実施形態では、ＨＳＭは提供された識別子と関連付けられる暗号鍵を取り出し、コマンドの集合を実行して要求を実現させる。一実施形態では、ブロック５２０で、ハードウェアセキュリティモジュールは、暗号操作から結果の集合を生成する。一実施形態では、操作は暗号化操作であり、結果は、コマンドの集合を備えた平文から生成された暗号文である。一実施形態では、操作は復号操作であり、結果は、コマンドの集合を備えた暗号文から生成された平文である。
【００３３】
一実施形態では、ブロック５２２で、鍵管理サーバは、ＨＳＭから結果を受け取り、クライアントコンピュータシステムに結果を中継する。一実施形態では、ブロック５２４で、クライアントコンピュータシステムは、鍵管理サーバから結果を受け取り、ブロック５０２で提出された要求を実現させる。
【００３４】
図６は、一実施形態において、鍵管理サーバによって実行される結果として、ＨＳＭクラスタに対する論理的なアタッチメントを確立するプロセス６００の実施例を示す。一実施形態では、ＨＳＭクラスタに対する論理的なアタッチメントは、鍵管理サーバのＨＳＭクラスタと通信する機能を確立し、ＨＳＭに、ＨＳＭクラスタに格納された暗号鍵を使用して暗号操作を実行させる。一実施形態では、論理的なアタッチメントは、鍵管理サーバとＨＳＭとの間で、ＴＣＰ接続などの論理ネットワーク接続を確立し、鍵管理サーバがＨＳＭ上で暗号操作を実行する権限を与えられていることを確認する。
【００３５】
一実施形態では、プロセスは、鍵管理サーバがＨＳＭクラスタをアタッチする要求を受け取るブロック６０２で開始する。一実施形態では、要求は、ウェブ要求などのネットワークアクセス可能ＡＰＩに対する呼び出しである。一実施形態では、要求は、鍵管理サーバにアタッチするための特定のＨＳＭ、暗号プロセッサ、または暗号デバイスを指定してよい。一実施形態では、ブロック６０４で、鍵管理サーバは、ＨＳＭクラスタのアクセス認証情報を獲得する。一実施形態では、鍵管理サーバは、鍵管理サーバによって維持されるアクセス認証情報のデータベースからアクセス認証情報を取り出す。一実施形態では、ＨＳＭクラスタにアクセスするための認証情報は、クラスタをアタッチする要求とともに含まれる。一実施形態では、認証情報は、暗号鍵、秘密暗号鍵、ユーザー名及びパスワード、または署名されたトークンである。
【００３６】
一実施形態では、ブロック６０６で、鍵管理サーバは、鍵管理サーバがＨＳＭクラスタにアクセスできるようにネットワークルートを構成する。一実施形態では、ネットワークルートは、カスタマの仮想ネットワークへのアクセスを可能にするために仮想ルータを構成することによって（例えば、ルーティングテーブルに１つ以上のエントリを加えることによって）構成されてよい。一実施形態では、ブロック６０８で、鍵管理サーバは、アタッチメント要求を与えられた認証情報の集合を使用してＨＳＭクラスタに接続する。一実施形態では、鍵管理サーバがＨＳＭクラスタによって権限を与えられた後、ブロック６１０で、鍵管理サーバは、必要な許可がＨＳＭによって付与されていることを検証する。一実施形態では、鍵管理サーバは、鍵管理サーバだけが知っている認証情報の新しい集合に認証情報を循環させる。一実施形態では、認証情報は、認証情報の新しい集合を生成し、既存の認証情報を使用してＨＳＭで変更を許可することによって循環される。一実施形態では、ブロック６１２で、更新された認証情報ならびにネットワークアドレス及びルーティング情報が、鍵管理サーバが後に使用するためにデータベースに格納される。一実施形態では、鍵管理サーバは、周期的に認証情報の追加の新しい集合に認証情報の集合を循環させる。
【００３７】
図７は、一実施形態において、鍵管理サーバによって実行される結果として、ＨＳＭ上で暗号鍵を生成し、鍵管理サービスが使用するための鍵を登録するプロセス７００の実施例を示す。一実施形態では、ブロック７０２で、鍵管理サーバは、鍵、及び鍵管理サーバがアクセスできるＨＳＭを作成するコマンドを受け取る。一実施形態では、コマンドは、識別子を提供することによってその上で暗号鍵を作成するＨＳＭ、暗号デバイス、またはＨＳＭクラスタを指定する。一実施形態では、ブロック７０４で、鍵管理サーバは、少なくとも部分的に識別子に基づいて選択されたＨＳＭを識別し、ＨＳＭにアクセスするためのネットワークアドレス及び認証情報を含むメタデータを取り出す。一実施形態では、ブロック７０６で、鍵管理サーバは、ネットワークアドレス及び認証情報を使用して、新しい暗号鍵を生成するコマンドをＨＳＭに送信する。一実施形態では、暗号鍵は、対称暗号鍵または非対称暗号鍵の対であってよい。
【００３８】
一実施形態では、ブロック７０８で、ＨＳＭは、鍵管理サーバに暗号鍵を参照する際に使用するための鍵識別子を返す。一実施形態では、ブロック７１０で、鍵管理サーバは、暗号鍵のためのラベルを生成し、ブロック７１２で、鍵識別子及びラベルは、鍵管理サーバがアクセス可能なデータストアの中にメタデータとして格納される。一実施形態では、ブロック７１４で、鍵ラベルは要求者に返される。一実施形態では、要求者、つまり他のエンティティは、鍵管理サービスに対してラベル付きの暗号鍵を識別することによって、暗号鍵を使用して暗号操作を実行してよい。
【００３９】
図８は、一実施形態において、鍵管理システムに接続されたＨＳＭのための状態遷移図、８００の実施例を示す。一実施形態では、ＨＳＭ、ＨＳＭクラスタ、または暗号デバイスは開始状態８０２で開始する。一実施形態では、新しいＨＳＭがシステムに加えられ、鍵管理システムがアタッチメントプロセスを開始すると、ＨＳＭは、ＨＳＭに接続するプロセスが動作するのにつれ、アタッチする状態８０４にされる。一実施形態では、アタッチメントプロセスが成功する場合、ＨＳＭは、アタッチされた状態８０６にされる。一実施形態では、ＨＳＭ及びアタッチされた状態８０６は、鍵管理システムとの通信リンクを確立しており、暗号鍵を生成し、使用するために使用されてよい。
【００４０】
アタッチメントプロセスが失敗すると、ＨＳＭは、失敗したアタッチメント状態８０８にされる。一実施形態では、失敗したアタッチメント状態８０８は、アタッチメントが試行されたが、無事に完了しなかったことを示す。一実施形態では、鍵管理システムは、ＨＳＭにアタッチし直そうと試みてよい。一実施形態では、そのような試行がなされると、ＨＳＭはアタッチする状態８０４に戻る。
【００４１】
一実施形態では、鍵管理システムは、以前にアタッチされていたＨＳＭをデタッチしてよく、ＨＳＭはデタッチされた状態８１０にされる。鍵管理システムが、ＨＳＭがアタッチし直されるべきであると判断する場合、ＨＳＭはアタッチする状態８０４に戻る。
【００４２】
図９は、一実施形態に従って鍵管理サーバの態様を実施するための例示的なシステム９００の態様を示す。理解されるように、ウェブベースシステムが説明のために使用されているが、多様な実施形態を実施するために異なるシステムが必要に応じて使用されてよい。一実施形態では、システムは電子クライアントデバイス９０２を含み、電子クライアントデバイス９０２は、適切なネットワーク９０４を介して要求、メッセージ、または情報を送信及び／または受信し、デバイスのユーザーに情報を伝達して戻すよう動作可能な任意の適切なデバイスを含む。そのようなクライアントデバイスの実施例は、パーソナルコンピュータ、セル式携帯電話または他の携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、パーソナルデータアシスタント、埋込式コンピュータシステム、電子ブックリーダなどを含む。一実施形態では、ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワーク、または任意の他のそのようなネットワーク及び／またはそれらの組み合わせを含む任意の適切なネットワークを含み、そのようなシステムのために使用される構成要素は、少なくとも部分的に、選択されたネットワーク及び／またはシステムのタイプに依存する。そのようなネットワークを介して通信するための多くのプロトコル及び構成要素は周知であり、本明細書では詳細に説明しない。一実施形態では、ネットワークを介した通信は、有線接続及び／または無線接続及びそれらの組み合わせによって可能になる。一実施形態では、システムが要求を受け取り、それに応えてコンテンツを提供するためのウェブサーバ９０６を含むので、ネットワークは、インターネット及び／または他の公にアドレス指定可能な通信ネットワークを含む。ただし、他のネットワークについて、当業者に明らかとなるように、類似する目的に適う代替デバイスが使用できるであろう。
【００４３】
一実施形態では、例示的なシステムは、少なくとも１つのアプリケーションサーバ９０８及びデータストア９１０を含み、チェーン接続し得る、またはそれ以外の場合構成し得、適切なデータストアからデータを取得するなどのタスクを実行するために対話できるいくつかのアプリケーションサーバ、レイヤ、または他の要素、プロセスまたは構成要素がある場合があると理解されたい。サーバは、一実施形態では、ハードウェアデバイス、仮想コンピュータシステム、コンピュータシステム上で実行されているプログラミングモジュール、及び／またはネットワークを介して通信（例えば、ウェブサービスアプリケーションプログラミングインタフェース（ＡＰＩ）要求）を受け取り、それに応答するためのハードウェア及び／またはソフトウェアで構成された他のデバイスとして実装される。本明細書で使用するように、特に明記しない限り、または文脈によって明らかでない限り、用語「データストア」は、データを格納し、データにアクセスし、かつデータを取り出すことができる任意のデバイスまたはデバイスの組み合わせを指し、任意の標準的なシステム、分散型システム、仮想システム、またはクラスタ化されたシステムにおいて、任意の組み合わせ及び任意の数のデータサーバ、データベース、データストレージデバイス、及びデータ記憶媒体を含み得る。データストアは、一実施形態では、ブロックレベル及び／またはオブジェクトレベルのインタフェースと通信する。アプリケーションサーバは、必要に応じてデータストアと統合して、クライアントデバイスのための１つ以上のアプリケーションの態様を実行し、データアクセス及びアプリケーションのためのビジネス論理の一部またはすべてを処理するための任意の適切なハードウェア、ソフトウェア、及びファームウェアを含む場合がある。
【００４４】
一実施形態では、アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、テキスト、グラフィックス、音声、ビデオ、及び／または他のコンテンツを含むが、これに限定されるものではないコンテンツを生成し、コンテンツは、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）、拡張マークアップ言語（「ＸＭＬ」）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔ（「ＣＳＳ」）、ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）、及び／または別の適切なクライアント側の言語もしくは他の構造化言語の形式でウェブサーバによってクライアントデバイスと関連付けられたユーザーに提供される。クライアントデバイスに転送されたコンテンツは、一実施形態では、聴覚的に、視覚的に、及び／または他の感覚によりユーザーが認知できる形式を含むが、これに限定されるものではない１つ以上の形式でコンテンツを提供するためにクライアントデバイスによって処理される。すべての要求及び応答の処理、ならびにクライアントデバイス９０２とアプリケーションサーバ９０８との間のコンテンツの配信は、一実施形態では、ＰＨＰ：ハイパーテキストプリプロセッサ（「ＰＨＰ」）、Ｐｙｔｈｏｎ、Ｒｕｂｙ、Ｐｅｒｌ、Ｊａｖａ（登録商標）、ＨＴＭＬ、ＸＭＬ、ＪＳＯＮ、及び／またはこの実施例での別の適切なサーバ側構造化言語を使用してウェブサーバによって処理される。一実施形態では、単一のデバイスによって実行されるとして本明細書に説明する操作は、分散型システム及び／または仮想システムを形成する多数のデバイスによって集合的に実行される。
【００４５】
データストア９１０は、一実施形態では、いくつかの別々のデータテーブル、データベース、データ文書、動的データストレージ方式、及び／または本開示の特定の態様に関係するデータを格納するための他のデータストレージ機構及びデータ記憶媒体を含む。一実施形態では、示されているデータストアは、生産側にコンテンツを提供するために使用される生産データ９１２及びユーザー情報９１６を格納するための機構を含む。また、データストアは、一実施形態では、報告、コンピューティングリソースの管理、分析、または他のそのような目的に使用されるログデータ９１４を記憶するための機構を含むと示される。一実施形態では、ページ画像情報及びアクセス権情報（例えば、アクセス制御方針または許可の他の符号化）などの他の態様は、必要に応じて上記に示す機構のいずれかのデータストアの中に、またはデータストア９１０の追加の機構の中に格納される。
【００４６】
データストア９１０は、一実施形態では、それと関連付けられた論理を通して、アプリケーションサーバ９０８から命令を受け取り、それに応えてデータを取得、更新、またはそれ以外の場合処理するよう作動し、アプリケーションサーバ９０８は、受け取った命令に応えて静的データ、動的データ、または静的データと動的データの組み合わせを提供する。一実施形態では、ウェブログ（ブログ）、ショッピングアプリケーション、ニュースサービス、及び他のそのようなアプリケーションで使用されるデータなどの動的データは、本明細書に説明するサーバ側の構造化言語によって生成される、またはアプリケーションサーバ上で、もしくはアプリケーションサーバの制御下で動作するコンテンツ管理システム（「ＣＭＳ」）によって提供される。一実施形態では、ユーザーは、ユーザーが操作するデバイスを通して、特定のタイプの項目の検索要求を提出する。この実施例では、データストアは、ユーザー情報にアクセスしてユーザーのアイデンティティを検証し、カタログ詳細情報にアクセスしてそのタイプの項目についての情報を取得し、ユーザーがユーザーデバイス９０２上のブラウザを介して見るウェブページ上の結果のリストでなど、ユーザーに情報を返す。実施例を続けると、関心のある特定の項目の情報は、ブラウザの専用のページまたはウィンドウで見られる。しかしながら、本開示の実施形態が必ずしもウェブページの文脈に限定されるわけではなく、要求が必ずしもコンテンツの要求ではない、一般的な要求を処理することにより一般的に適用可能であることに留意されたい。例示的な要求は、システム９００及び／または別のシステムによってホストされたコンピューティングリソースを、そのようなコンピューティングリソースを起動する、終了する、削除する、修正する、読み取る、及び／またはそれ以外の場合アクセスするためなど、コンピューティングリソースを管理する及び／またはそれと対話する要求を含む。
【００４７】
一実施形態では、各サーバは、通常、そのサーバの一般的な管理及び操作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、サーバのプロセッサによって実行される場合（つまり、実行される結果として）、サーバにその意図した機能を実行させる、またはそれ以外の場合、サーバがその意図した機能を実行できるようにする命令を格納するコンピュータ可読記憶媒体（例えば、ハードディスク、ランダムアクセスメモリ、読み取り専用メモリなど）を含む。
【００４８】
システム９００は、一実施形態では、１つ以上のコンピュータネットワークまたは直接接続を使用して通信リンク（例えば、伝送制御プロトコル（ＴＣＰ）接続及び／またはトランスポート層セキュリティ（ＴＬＳ）または他の暗号で保護された通信セッション）を介して相互接続されるいくつかのコンピュータシステム及び構成要素を利用する分散型コンピューティングシステム及び／または仮想コンピューティングシステムである。しかしながら、そのようなシステムが、図９に示すよりも少ない数または多い数の構成要素を有するシステムで動作できるであろうことが、当業者によって理解される。したがって、図９のシステム９００の描写は、本開示の範囲に限定的としてではなく、本来は例示的であるとして解釈されるべきである。
【００４９】
さらに、本開示の実施形態は、以下の条項を鑑みて説明できる。
１．コンピュータ実装方法であって、
暗号操作を実行する要求を受け取ることと、
ハードウェアセキュリティモジュールの集合から、前記暗号操作を実行できるハードウェアセキュリティモジュールを選択するために、要求によって示される識別子を使用することと、
前記選択したハードウェアセキュリティモジュールに、前記暗号操作を実行させることと
を含む、前記コンピュータ実装方法。
【００５０】
２．    前記暗号操作を実行するために使用可能な暗号鍵を識別することと、
前記暗号鍵と関連付けられたメタデータを取得することと、
少なくとも部分的に前記メタデータに基づいて前記ハードウェアセキュリティモジュールを識別することと
をさらに含む、条項１に記載のコンピュータ実装方法。
【００５１】
３．    前記メタデータが、前記ハードウェアセキュリティモジュールの機能を識別し、
前記ハードウェアセキュリティモジュールが前記機能をサポートする結果として、前記ハードウェアセキュリティが選択される、
条項１または２に記載のコンピュータ実装方法。
【００５２】
４．前記選択したハードウェアセキュリティモジュールから前記暗号操作の結果を受け取ることと、
要求者に前記暗号操作の前記結果を提供することと
をさらに含む、条項１〜３のいずれかに記載のコンピュータ実装方法。
【００５３】
５．１つ以上のプロセッサ及び実行可能命令を格納するメモリを備えるコンピュータシステムであって、前記実行可能命令が、前記１つ以上のプロセッサによって実行される結果として、前記コンピュータシステムに、
暗号操作を実行する要求を受け取らせ、
１つ以上の暗号デバイスを選択するために、前記要求に指定された識別子を使用させ、
前記１つ以上の暗号デバイスに前記暗号操作を実行させる、
前記コンピュータシステム。
【００５４】
６．前記コンピュータシステムが、ウェブベースアプリケーションプログラミングインタフェースを提供し、
前記要求が、前記ウェブベースアプリケーションプログラミングインタフェースを介して受け取られる、
条項５に記載のシステム。
【００５５】
７．前記識別子が暗号鍵を識別し、
前記実行可能命令が、さらに、前記コンピュータシステムに、前記暗号鍵を使用できる暗号デバイスの集合から１つ以上の暗号デバイスを選択させる、
条項５または６に記載のシステム。
【００５６】
８．前記実行可能命令が、前記コンピュータシステムに、さらに、
暗号トークンに対するプラットフォーム独立アプリケーションプログラミングインタフェースに従ってコマンドの集合を生成させ、
前記１つ以上の暗号デバイスにコマンドの前記集合を送信させる、
条項５〜７のいずれかに記載のシステム。
【００５７】
９．前記１つ以上の暗号デバイスがハードウェアセキュリティモジュールであり、
暗号トークンに対する前記プラットフォーム独立アプリケーションプログラミングインタフェースが、ＰＫＣＳ１１に準拠したアプリケーションプログラミングインタフェースである、
条項８に記載のシステム。
【００５８】
１０．前記要求がネットワーク上のコンピュータシステムから受け取られ、
前記１つ以上の暗号デバイスが前記ネットワーク上に位置する、
条項５〜９のいずれかに記載のシステム。
【００５９】
１１．前記実行可能命令が、前記コンピュータシステムに、さらに、
前記識別子と関連付けられる暗号化された鍵を取得させ、
前記１つ以上の暗号デバイスに前記暗号化された鍵を提供させる、
条項５〜１０のいずれかに記載のシステム。
【００６０】
１２．前記暗号デバイスが、
暗号プロセッサと、
前記暗号操作を実行するために使用されるエクスポート不可の暗号鍵を格納するメモリとを含む、
条項５〜１１のいずれかに記載のシステム。
【００６１】
１３．非一過性コンピュータ可読記憶媒体であって、コンピュータシステムの１つ以上のプロセッサによって実行される結果として、前記コンピュータシステムに、少なくとも、
暗号操作を実行する要求を受け取らせ、
１つ以上の暗号デバイスを選択するために、前記要求に指定された識別子を使用させ、
前記１つ以上の暗号デバイスに前記暗号操作を実行させる
実行可能命令を前記非一過性コンピュータ可読記憶媒体上に格納する、前記非一過性コンピュータ可読記憶媒体。
【００６２】
１４．前記１つ以上のプロセッサによって実行される結果として、前記コンピュータシステムに、
暗号トークンに対するプラットフォーム独立アプリケーションプログラミングインタフェースに従ってコマンドの集合を生成させ、
前記１つ以上の暗号デバイスにコマンドの前記集合を送信させる
命令をさらに備える、条項１３に記載の非一過性コンピュータ可読記憶媒体。
【００６３】
１５．前記１つ以上の暗号デバイスがハードウェアセキュリティモジュールであり、
暗号トークンに対する前記プラットフォーム独立アプリケーションプログラミングインタフェースが、Ｊａｖａ（登録商標）  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｅｘｔｅｎｓｉｏｎに準拠したアプリケーションプログラミングインタフェースである、
条項１３または１４に記載の非一過性コンピュータ可読記憶媒体。
【００６４】
１６．前記要求がカスタマネットワーク上のコンピュータシステムから受け取られ、
前記１つ以上の暗号デバイスが前記ネットワーク上に位置する、
条項１３〜１５のいずれかに記載の非一過性コンピュータ可読記憶媒体。
【００６５】
１７．前記命令が、前記１つ以上のプロセッサによって実行された結果として、前記コンピュータシステムに、
前記識別子と関連付けられる暗号鍵のためのメタデータを取得させ、
前記１つ以上の暗号デバイスに前記メタデータの少なくとも一部分を提供させる
命令をさらに備える、条項１３〜１６のいずれかに記載の非一過性コンピュータ可読記憶媒体。
【００６６】
１８．前記１つ以上の暗号デバイスが、前記要求を実行するために使用可能な暗号鍵を格納する耐タンパー性のメモリを含む、条項１３〜１７のいずれかに記載の非一過性コンピュータ可読記憶媒体。
【００６７】
１９．前記実行可能命令が、さらに、前記コンピュータシステムに、少なくとも部分的に前記識別子に基づいて暗号デバイスの集合から前記１つ以上の暗号デバイスを選択させる、条項１３〜１８のいずれかに記載の非一過性コンピュータ可読記憶媒体。
【００６８】
２０．前記命令が、前記１つ以上のプロセッサによって実行される結果として、前記コンピュータシステムにネットワークアクセス可能ウェブサービスインタフェースを介して前記要求を受け取らせる命令をさらに備える、条項１３〜１９のいずれかに記載の非一過性コンピュータ可読記憶媒体。
【００６９】
多様な実施形態は、多種多様な動作環境でさらに実装することができ、動作環境は、いくつかの場合、いくつかのアプリケーションのいずれかを操作するために使用できる１つ以上のユーザーコンピュータ、コンピューティングデバイス、または処理デバイスを含む場合がある。一実施形態では、ユーザーまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータなどのいくつかのコンピュータ、ならびにモバイルソフトウェアを実行し、いくつかのネットワーキングプロトコル及びメッセージングプロトコルをサポートできるセルラー（モバイル）デバイス、無線デバイス、及びハンドヘルドデバイスのいずれかを含み、そのようなシステムは、開発及びデータベース管理などの目的のために種々の市販のオペレーティングシステム及び他の既知のアプリケーションのいずれかを実行するいくつかのワークステーションも含む。一実施形態では、これらのデバイスは、ネットワークを介して通信できるダミー端末、シンクライアント、ゲーム機、及び他のデバイスなどの他の電子機器、ならびに仮想マシン、ハイパバイザ、オペレーティングシステムレベルの仮想化を利用するソフトウェアコンテナなどの仮想デバイス、及びネットワークを介して通信できる仮想化をサポートする他の仮想デバイスまたは非仮想デバイスも含む。
【００７０】
一実施形態では、システムは、伝送制御プロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ」）、ユーザーデータグラムプロトコル（「ＵＤＰ」）、オープンシステムインターコネクション（「ＯＳＩ」）モデルの多様な層で動作するプロトコル、ファイル転送プロトコル（「ＦＴＰ」）、ユニバーサルプラグアンドプレイ（「ＵｐｎＰ」）、ネットワークファイルシステム（「ＮＦＳ」）、共通インターネットファイルシステム（「ＣＩＦＳ」）、及び他のプロトコルなどの種々の市販のプロトコルのいずれかを使用して通信をサポートするための、当業者によく知られているであろう少なくとも１つのネットワークを利用する。ネットワークは、一実施形態では、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク、及びその任意の組合せである。一実施形態では、（接続ベースのプロトコルと呼ばれることもある）コネクション型プロトコルが、順序付けされたストリームの中でデータを伝送できるように、ネットワークエンドポイント間で通信するためにコネクション型プロトコルが使用される。一実施形態では、コネクション型プロトコルは信頼性がある場合もあれば、信頼性がない場合もある。例えば、ＴＣＰプロトコルは信頼性のあるコネクション型プロトコルである。非同期転送モード（「ＡＴＭ」）及びフレームリレーは、信頼性のないコネクション型プロトコルである。コネクション型プロトコルは、順序付けを保証せずにパケットを伝送するＵＤＰなどのパケット型プロトコルとは対照的である。
【００７１】
一実施形態では、システムは、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）サーバ、ＦＴＰサーバ、共通ゲートウェイインタフェース（「ＣＧＩ」）サーバ、データサーバ、Ｊａｖａ（登録商標）サーバ、Ａｐａｃｈｅサーバ、及びビジネスアプリケーションサーバを含む種々のサーバまたは中間層アプリケーションの１つ以上を実行するウェブサーバを利用する。また、一実施形態では、１つ以上のサーバは、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃、もしくはＣ＋＋などの任意のプログラミング言語、またはＲｕｂｙ、ＰＨＰ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、もしくはＴＣＬなどの任意のスクリプト言語、ならびにその組み合わせで作成された１つ以上のスクリプトまたはプログラムとして実装される１つ以上のウェブアプリケーションを実行することなどによって、ユーザーデバイスからの要求に応えてプログラムまたはスクリプトを実行できる。また、一実施形態では、１つ以上のサーバは、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、及びＩＢＭ（登録商標）から市販されているサーバ、ならびにＭｙＳＱＬ、Ｐｏｓｔｇｒｅｓ、ＳＱＬｉｔｅ、ＭｏｎｇｏＤＢ、及び構造化データまたは非構造化データを格納する、取り出す、及びアクセスすることができる任意の他のサーバなどのオープンソースサーバを含むがこれに限定されるものではない、データベースサーバも含む。一実施形態では、データベースサーバは、テーブルベースサーバ、ドキュメントベースサーバ、非構造化サーバ、リレーショナルサーバ、非リレーショナルサーバ、またはこれらの組み合わせ、及び／または他のデータベースサーバを含む。
【００７２】
一実施形態では、システムは、コンピュータの１つ以上にローカルな（及び／またはそこに常駐する）、またはネットワークにわたってコンピュータのいずれかもしくはすべてから遠隔の記憶媒体上など、種々の場所に常駐する場合がある、上述の種々のデータストア及び他のメモリならびに記憶媒体を含む。一実施形態では、情報は、当業者によく知られているストレージエリアネットワーク（「ＳＡＮ」）に常駐し、同様に、コンピュータ、サーバ、または他のネットワークデバイスに起因する機能を実行するための任意の必要なファイルは、必要に応じてローカルに及び／または遠隔に格納される。システムがコンピュータ化されたデバイスを含む一実施形態では、そのような各デバイスは、バスを介して電気的に結合されるハードウェア要素を含む場合があり、要素は、例えば少なくとも１つの中央演算処理装置（「ＣＰＵ」または「プロセッサ」）、少なくとも１つの入力装置（例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド）、少なくとも１つの出力装置（例えば、表示装置、プリンタ、またはスピーカ）、ディスクドライブ、光学記憶装置などの少なくとも１つのストレージデバイス、及びランダムアクセスメモリ（「ＲＡＭ」）もしくは読み取り専用メモリ（「ＲＯＭ」）などのソリッドステートストレージデバイス、ならびにリムーバブルメディアデバイス、メモリカード、フラッシュカードなど、及びその多様な組み合わせを含む。
【００７３】
また、一実施形態では、そのようなデバイスは、コンピュータ可読記憶媒体リーダ、通信装置（例えば、モデム、ネットワークカード（無線もしくは有線）、赤外線通信装置など）、及び上述のワーキングメモリを含み、コンピュータ可読記憶媒体リーダは、遠隔ストレージデバイス、ローカルストレージデバイス、固定ストレージデバイス、及び／またはリムーバブルストレージデバイスを表すコンピュータ可読記憶媒体、ならびにコンピュータ可読情報を一時的に及び／またはより永久的に含む、格納する、伝送する、及び取り出すための記憶媒体と接続される、またはそれらを受け入れるように構成される。また、一実施形態では、システム及び多様なデバイスは、通常、いくつかのソフトウェアアプリケーション、モジュール、サービス、またはオペレーティングシステム及びクライアントアプリケーションもしくはウェブブラウザなどのアプリケーションプログラムを含む少なくとも１つのワーキングメモリデバイス内に位置する他の要素も含む。一実施形態では、カスタマイズされたハードウェアが使用される、及び／または特定の要素がハードウェア、（アプレットなどのポータブルソフトウェアを含む）ソフトウェア、または両方で実装される。一実施形態では、ネットワーク入出力装置などの他のコンピューティングデバイスへの接続が利用される。
【００７４】
一実施形態では、コードまたはコードの部分を含むための記憶媒体及びコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、電気的消去可能プログラマブル読み出し専用メモリ（「ＥＥＰＲＯＭ」）、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク読み出し専用メモリ（「ＣＤ−ＲＯＭ」）、デジタルバーサタイルディスク（ＤＶＤ）もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができ、かつシステムデバイスによってアクセスできる任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶及び／または伝送のための任意の方法または技術で実装される揮発性及び不揮発性の媒体、取り外し可能及び取り外し不可能な媒体などであるが、これに限定されるものではない記憶媒体及び通信媒体を含む当該分野において既知の、または使用される任意の適切な媒体を含む。本明細書に提供される開示及び教示に基づいて、当業者は、多様な実施形態を実装するための他の方法及び／または手法を理解するであろう。
【００７５】
したがって、明細書及び図面は、制限的な意味ではなくて例示的な意味で考慮されるべきである。しかしながら、特許請求の範囲で述べられる本発明のより広い趣旨及び範囲から逸脱することなく、それに多様な修正及び変更がなされ得ることは明らかである。
【００７６】
他の変形形態は、本開示の趣旨の範囲内である。よって、開示される技術は、多様な修正及び代替の構造を取り得るが、その特定の示される実施形態は、図面に示され、詳細に上述されている。しかしながら、開示される特定の形式（複数可）に本発明を限定する意図はなく、逆に、意図は、添付の特許請求の範囲において定義される本発明の趣旨及び範囲に該当するすべての修正、代替構造、及び均等物を網羅することであることを理解されたい。
【００７７】
開示される実施形態を説明する文脈における（特に以下の特許請求の範囲の文脈における）用語「ａ」及び「ａｎ」及び「ｔｈｅ」ならびに同様の指示語の使用は、本明細書において別段の指示がない限り、または文脈によって明らかに矛盾しない限り、単数及び複数の両方を網羅すると解釈されるべきである。同様に、用語「または（ｏｒ）」の使用は、明示的にまたは文脈によって矛盾しない限り、「ａｎｄ／ｏｒ（及び／または）」を意味すると解釈されるべきである。用語「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、及び「含む（ｃｏｎｔａｉｎｉｎｇ）」は、特に断りのない限り、開放型用語（すなわち、「含むが、これに限定されるものではない」ことを意味する）として解釈されるべきである。用語「接続された（ｃｏｎｎｅｃｔｅｄ）」は、修飾されず、物理的な接続を指すときには、たとえ介在するものがあっても部分的にまたは完全に、中に含まれる、取り付けられるまたは互いに結合されるとして解釈されるべきである。本明細書での値の範囲の列挙は、本明細書に別段の指示がない限り、単に、範囲内に入る別々の各値に個別に言及する短縮方法として機能することが意図され、別々の各値は、それが本明細書に個別に記載されているかのように本明細書に組み込まれる。用語「集合（ｓｅｔ）」の使用（例えば、「項目の集合（ａ  ｓｅｔ  ｏｆ  ｉｔｅｍｓ）」）または「部分集合（ｓｕｂｓｅｔ）」は、特に断りがない限り、または文脈によって矛盾しない限り、１つ以上の要素を含んだ非空の集合体として解釈されるべきである。さらに、特に断りがない限り、または文脈によって矛盾しない限り、対応する集合の用語「部分集合」は、必ずしも対応する集合の適切な部分集合を示すのではなく、部分集合及び対応する集合が等しい場合がある。
【００７８】
特に明記しない限り、または明確に文脈によって矛盾しない限り、形式「Ａ、Ｂ、及びＣの少なくとも１つ」または「Ａ、Ｂ及びＣの少なくとも１つ」の言い回し（つまり、オックスフォードコンマのあるまたはない同じ言い回し）などの連言的な語法は、そうでなければ、項目、用語などがＡもしくはＢもしくはＣ、Ａ及びＢ及びＣの集合の任意の非空部分集合、または少なくとも１つのＡ、少なくとも１つのＢ、または少なくとも１つのＣを含む、文脈によって矛盾していないまたはそれ以外の場合除外されている任意の集合のどちらかであってよいことを示すために一般的に使用されるとして文脈で理解される。例えば、３つの要素を有する集合の例示的な実施例では、連言的な言い回し「Ａ、Ｂ、及びＣの少なくとも１つ」及び「Ａ、Ｂ及びＣの少なくとも１つ」は、以下の集合、｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ、Ｂ｝、｛Ａ、Ｃ｝、｛Ｂ、Ｃ｝、｛Ａ、Ｂ、Ｃ｝、及び明示的にまたは文脈によって矛盾しない場合、｛Ａ｝、｛Ｂ｝、及び／または｛Ｃ｝を部分集合として有する任意の集合（例えば、多数の「Ａ」を有する集合）のいずれかを指す。したがって、そのような連言的な語法は、特定の実施形態が、Ａの少なくとも１つ、Ｂの少なくとも１つ、及びＣの少なくとも１つがそれぞれ存在することを必要とすることを含意することを概して意図していない。同様に、異なる意味が明示的に明記されない限り、または文脈によって明らかではない限り、「Ａ、Ｂ、またはＣの少なくとも１つ」及び「Ａ、ＢまたはＣの少なくとも１つ」などの言い回しは、「Ａ、Ｂ、及びＣの少なくとも１つ」と同じものを指し、「Ａ、Ｂ及びＣの少なくとも１つ」は、以下の集合、つまり｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ、Ｂ｝、｛Ａ、Ｃ｝、｛Ｂ、Ｃ｝、｛Ａ、Ｂ、Ｃ｝のいずれかを指す。さらに、特に断りがない限り、または文脈によって矛盾しない限り、用語「複数（ｐｌｕｒａｒｉｔｙ）」は、複数である状態を示す（例えば、「複数の項目（ａ  ｐｌｕｒａｒｉｔｙ  ｏｆ  ｉｔｅｍｓ）」は多数の項目を示す）。複数の中の項目の数は少なくとも２つであるが、明示的にまたは文脈によってのどちらかでそのように示されるとき、より多い場合がある。
【００７９】
本明細書中に説明するプロセスの操作は、本明細書中に別段の指示がない限り、または文脈によって明らかに矛盾しない限り、任意の適切な順序で実行できる。一実施形態では、本明細書に説明するそれらのプロセス（またはその変形形態及び／またはその組み合わせ）などのプロセスは、実行可能命令で構成された１つ以上のコンピュータシステムの制御下で実行され、ハードウェアまたはその組み合わせにより１つ以上のプロセッサで集合的に実行するコード（例えば、実行可能命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実装される。一実施形態では、コードは、例えば、１つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形でコンピュータ可読格納媒体上に格納される。一実施形態では、コンピュータ可読記憶媒体は、一過性の信号（例えば、伝搬する一過性の電気的または電磁的な伝送）を除外するが、一過性の信号のトランシーバ内の非一過性データストレージ回路（例えば、バッファ、キャッシュ、及び待ち行列）を含む、非一過性コンピュータ可読記憶媒体である。一実施形態では、コード（例えば、実行可能コードまたはソースコード）は、コンピュータシステムの１つ以上のプロセッサによって実行されるとき（つまり、実行される結果として）、コンピュータシステムに本明細書に説明する操作を実行させる実行可能命令をその上に格納している１つ以上の非一過性コンピュータ可読記憶媒体の集合に格納される。非一過性コンピュータ可読記憶媒体の集合は、一実施形態では、多数の非一過性コンピュータ可読記憶媒体を含み、多数の非一過性コンピュータ可読記憶媒体の個々の非一過性記憶媒体の１つ以上は、コードのすべてを欠く。一方、多数の非一過性コンピュータ可読記憶媒体は、コードのすべてを集合的に格納する。一実施形態では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行される−例えば、非一過性コンピュータ可読記憶媒体が命令を格納し、メインＣＰＵが命令のいくつかを実行し、一方、グラフィックスプロセッサユニットが他の命令を実行する。一実施形態では、コンピュータシステムの異なる構成要素は別々のプロセッサを有し、異なるプロセッサが命令の異なる部分集合を実行する。
【００８０】
例示的な暗号アルゴリズムは、暗号ブロック連鎖（ＣＢＣ）モード、伝搬暗号ブロック連鎖（ＰＣＢＣ）モード、暗号フィードバックモード（ＣＦＢ）、出力フィードバック（ＯＦＢ）モード、カウンタ（ＣＴＲ）モード、及び拡張暗号ブロック連鎖（ＸＣＢＣ）モード、インテグリティ考慮型（Ｉｎｔｅｇｒｉｔｙ  Ａｗａｒｅ）ＣＢＣ（ＩＡＣＢＣ）モード、インテグリティ考慮型並列化可能（ＩＡＰＭ）モード、オフセット符号表（ＯＣＢ）モード、ＥＡＸモード及びＥＡＸプライムモード、Ｃａｒｔｅｒ−Ｗｅｇｍａｎ＋ＣＴＲ（ＣＷＣ）モード、ＣＢＣ−ＭＡＣ（ＣＣＭ）付きカウンタモード、Ｇａｌｏｉｓ／Ｃｏｕｎｔｅｒ（ＧＣＭ）モードなどの認証された暗号化モードなどの他のモードなどの初期化ベクトルを利用するブロック暗号及び多様なモードを含む。
【００８１】
説明したように、多数の変形形態が、対称暗号プリミティブ及び／または非対称暗号プリミティブを利用する。対称鍵アルゴリズムは、ブロック暗号、ストリーム暗号、及びデジタル署名方式を含む、データに対して暗号操作を実行するための多様な方式を含んでよい。例示的な対称鍵アルゴリズムは、高度暗号化標準（ＡＥＳ）、データ暗号化標準（ＤＥＳ）、トリプルＤＥＳ（３ＤＥＳ）、サーペント（Ｓｅｒｐｅｎｔ）、トゥーフィッシュ、ブローフィッシュ、ＣＡＳＴ５、ＲＣ４、及び国際データ暗号化アルゴリズム（ＩＤＥＡ）を含む。また、対称鍵アルゴリズムは、一方向性関数の出力を生成するために使用されるアルゴリズムを含んでもよく、ハッシュベースのメッセージ認証コード（ＨＭＡＣ）、一般的なメッセージ認証コード（ＭＡＣ）、ＰＢＫＤＦ２、及びビー・クリプトを利用するアルゴリズムを含んでもよい。また、非対称鍵アルゴリズムは、データに対して暗号操作を実行するための多様な方式を含んでもよい。例示的なアルゴリズムは、ディッフィーヘルマン鍵交換プロトコル、デジタル署名標準（ＤＳＳ）を利用するアルゴリズム、デジタル署名アルゴリズム、ＥｌＧａｍａｌアルゴリズム、多様な楕円曲線アルゴリズム、パスワード認証鍵共有技術、ｐａｌｌｉｅｒ暗号システム、ＲＳＡ暗号化アルゴリズム（ＰＫＣＳ＃１）、Ｃｒａｍｅｒ−Ｓｈｏｕｐ暗号システム、ＹＡＫ認証鍵共有プロトコル、ＮＴＲＵＥｎｃｒｙｐｔ暗号システム、ＭｃＥｌｉｅｃｅ暗号システム、及び他を含む。楕円曲線アルゴリズムは、楕円曲線ディッフィーヘルマン鍵（ＥＣＤＨ）鍵共有方式、楕円曲線統合暗号化方式（ＥＣＩＥＳ）、楕円曲線デジタル署名アルゴリズム（ＥＣＤＳＡ）、ＥＣＭＱＶ鍵共有方式、及びＥＣＱＶ暗黙証明書方式を含む。他のアルゴリズム及びアルゴリズムの組み合わせも、本開示の範囲内にあると見なされ、上記は網羅的なリストとなることを意図していない。
【００８２】
用語「デジタル署名」は、（ＲＳＡ−ＰＳＳなどの）ＲＳＡベースのデジタル方式、デジタル署名アルゴリズム（ＤＳＡ）、及び楕円曲線デジタル署名アルゴリズム、ＥｌＧａｍａｌ署名方式、Ｓｃｈｎｏｒｒ署名方式、Ｐｏｉｎｔｃｈｅｖａｌ−Ｓｔｅｒｎ署名アルゴリズム、Ｒａｂｉｎ署名アルゴリズム、（Ｂｏｎｅｈ−Ｌｙｎｎ−Ｓｃｈａｃｈａｍ署名方式などの）ペアリングベースのデジタル署名方式、否認不可デジタル署名方式、及び他を使用し生成された情報を含むメッセージの真正性を暗号で検証するために使用可能な任意の情報を含む。さらに、（ハッシュベースメッセージ認証コード（ＨＭＡＣ）などの）メッセージ認証コード、鍵付き暗号ハッシュ関数、及び他のタイプの情報もデジタル署名として使用され得る。
【００８３】
言い回し「一方向性関数」が、厳密な数学的意味では必ずしも一方向ではないが、本開示の多様な技術が適用される状況で関数を有用にする（衝突耐性、原像計算困難性、及び第２原像計算困難性などの）特性を示す関数を含むことに留意されたい。このようにして、関数の出力を有するが、対応する入力へのアクセスがないエンティティは、例えば暗号（例えば、強引な）攻撃に必要な計算リソースの臨時支出なしに入力を決定することはできない。（「事実上一方向性関数」とも呼ばれる）一方向性関数は、メッセージ認証コード（例えば、ハッシュベースメッセージ認証コード（ＨＭＡＣ））などの暗号ハッシュ関数、ＰＢＫＤＦ２及び（パスワードが、少なくとも部分的に、例えば平文及び暗号鍵に基づいている）ビー・クリプトなどの鍵導出関数、及びその範囲（おそらく出力）よりも大きいドメイン（考えられる入力の集合）を有してよいが、必ずしも有さない他の安全なランダム化関数を含むが、これに限定されるものではない。多様な実施形態のための（「ｆ」と呼ばれる）他の適切な関数は、少なくとも平文及び暗号鍵を入力としてとり、原像計算困難性（値ｙを所与として、ｆ（ｘ）＝ｙが指定された閾値未満であるように入力ｘを無作為に生成する確率）、第２原像計算困難性（入力ｘ１を所与として、ｆ（ｘ１）＝ｆ（ｘ２）が指定された閾値未満であるように、ｘ１とは異なる別の入力ｘ２を無作為に生成する確率）、及び／または衝突耐性（２つの異なる入力が同じ出力を生じさせる確率が、指定された閾値に満たない）の特性を有する関数を含むが、これに限定されるものではない。各確率の正確な閾値は文脈に依存する場合があり、より低い確率がより高いセキュリティ状況に相当する。値は、一方向性関数を使用して暗号で導出できる。暗号化関数は、暗号化関数への入力として使用される情報（例えば、暗号鍵及び／またはソルト）を欠くエンティティの視点からは一方向性関数である場合がある（または一方向性関数の成分である場合がある）。本開示の技術に従って一方向性関数として使用可能なハッシュ関数は、参照により本明細書に組み込まれる、米国国立標準技術研究所（ＮＩＳＴ）特殊出版８００−１０７、改訂１「Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｆｏｒ  Ａｐｐｌｉｃａｔｉｏｎｓ  Ｕｓｉｎｇ  Ａｐｐｒｏｖｅｄ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍｓ」の中に説明される関数を含むが、これに限定されるものではない。暗号で導出された言い回しは、値である、または値から導出される（おそらく値から暗号で導出される）入力を使用して、少なくとも一度一方向関数を使用することを意味する。例えば、暗号化操作は、復号鍵を有していないエンティティにとっては一方向である。
【００８４】
情報は、（例えば、デバイスのインタフェースを通して）プログラムでデバイスに情報を提供させるための合法的な方法がない場合にはプログラムでエクスポート不可であると言われる場合がある。情報は、例えば、平文形式の情報にアクセスできるハードウェアに、情報を平文形式で明らかにさせるための要求機構（例えば、アプリケーションプログラミングインタフェース（ＡＰＩ）呼び出し）がないように、維持され得る。一実施例として、情報を格納するデバイス（例えば、暗号モジュール）は、コピーが平文形式で情報を含むように、そのメモリの一部またはすべてのコピーを提供する能力を欠くように構成され得る。しかしながら、平分形式で情報を取得する合法的な方法がない情報が、例示の目的で本開示全体を通して使用されているが、一部の情報は、情報が、多様なセキュリティプロトコルを利用し、平文形式での情報への不正アクセスを防ぐことを可能にする必要がある場合がある、限られた数の許可された使用により取得可能になるように維持され得ることに留意されたい。一般的に、プログラムでエクスポート不可の情報は、情報を平文形式で取得することが仮にも可能である場合には、平文形式で情報を取得するために非常手段を講じなければならない情報（例えば、１つ以上の暗号鍵）である。
【００８５】
また、本明細書で使用される実施例が、参照により組み込まれる、リクエストフォーコメンツ（ＲＦＣ）４２５０、ＲＦＣ４２５１、ＲＦＣ４２５２、ＲＦＣ４２５３、ＲＦＣ４２５４、ＲＦＣ４２５５、ＲＦＣ４２５６、ＲＦＣ４３３５、ＲＦＣ４３４４、ＲＦＣ４３４５、ＲＦＣ４４１９、ＲＦＣ４４３２、ＲＦＣ４４６２、ＲＦＣ４７１６、ＲＦＣ４８１９、ＲＦＣ５６４７、ＲＦＣ５６５６、ＲＦＣ６１８７、ＲＦＣ６２３９、ＲＦＣ６５９４、及びＲＦＣ６６６８の１つ以上に従って実行され得ることにも留意されたい。
【００８６】
一般的に、本開示の実施形態は、暗号化された通信セッションを確立するために、参照により本明細書に組み込まれるリクエストフォーコメンツ（ＲＦＣ）２２４６、ＲＦＣ２５９５、ＲＦＣ２７１２、ＲＦＣ２８１７、ＲＦＣ２８１８、ＲＦＣ３２０７、ＲＦＣ３２６８、ＲＦＣ３５４６、ＲＦＣ３７４９、ＲＦＣ３９４３、ＲＦＣ４１３２、ＲＦＣ４１６２、ＲＦＣ４２１７、ＲＦＣ４２７９、ＲＦＣ４３４７、ＲＦＣ４３６６、ＲＦＣ４４９２、ＲＦＣ４６８０、ＲＦＣ４６８１、ＲＦＣ４７８５、ＲＦＣ５０５４、ＲＦＣ５０７７、ＲＦＣ５０８１、ＲＦＣ５２３８、ＲＦＣ５２４６、ＲＦＣ５２８８、ＲＦＣ５２８９、ＲＦＣ５７４６、ＲＦＣ５７６４、ＲＦＣ５８７８、ＲＦＣ５９３２、ＲＦＣ６０８３、ＲＦＣ６０６６、ＲＦＣ６０９１、ＲＦＣ６１７６、ＲＦＣ６２０９、ＲＦＣ６３４７、ＲＦＣ６３６７、ＲＦＣ６４６０、ＲＦＣ６６５５、ＲＦＣ７０２７、及びＲＦＣ７３６６に定義されるＳＳＬまたはＴＬＳプロトコル、及びその拡張などの多様なプロトコルを使用し得る。オープンシステムインターコネクション（ＯＳＩ）モデルのアプリケーションレイヤの下方で実装される他のプロトコルも、本明細書に説明する技術を利用するために使用及び／または適応され得る。本明細書で説明する技術がリアルタイムメッセージングプロトコル（ＲＴＭＰ）、ポイントツーポイントトンネリングプロトコル（ＰＰＴＰ）、レイヤ２トンネリングプロトコル、多様な仮想プライベートネットワーク（ＶＰＮ）プロトコル、（例えば、ＲＦＣ１８２５から１８２９、ＲＦＣ２４０１、ＲＦＣ２４１２、ＲＦＣ４３０１、ＲＦＣ４３０９、及びＲＦＣ４３０３に定義される）インターネットプロトコルセキュリティなどの他のプロトコル、ならびにハンドシェイクを含む安全な通信のためのプロトコルなどの他のプロトコルに適応可能であることに留意されたい。
【００８７】
システムがそれにより動作するように構成される論理が、公開暗号鍵でデジタル署名を検証しようとする試みが成功するかどうかに依存する場合、システムは、公開暗号鍵を信頼するように構成されると言われることに留意されたい。同様に、システムがそれにより動作するように構成される論理が、対称暗号鍵でデジタル署名を検証とする試みが成功するかどうかに依存する場合、システムは、対称暗号鍵を信頼するように構成されると言われる。
【００８８】
多様な実施形態では、デジタル署名などのデータオブジェクトは、暗号で検証可能であってよい。一実施例では、暗号で検証可能なデータオブジェクトは、データオブジェクトが提供されるシステム、またはデータオブジェクトが提供されるシステムと連動して動作する別のシステムによって暗号で検証可能となるために作成される。例えば、データオブジェクトは、データオブジェクトを暗号で検証するシステムによって復号可能であるように暗号化され得、データオブジェクトを復号する能力は、データオブジェクトの暗号検証としての機能を果たす。別の実施例として、データオブジェクトは、デジタル署名が、データオブジェクトを暗号で検証するシステムによって検証可能であるように、デジタルで署名されてよい（それによってデータオブジェクトのデジタル署名を生成する）。他の実施例では、暗号化署名とデジタル署名の両方は暗号検証可能性及び／またはセキュリティに使用される。データオブジェクトを暗号化する及び／またはデジタルで署名するために使用される鍵は、多様な実施形態に従って変わる場合があり、該当する場合、暗号化とデジタル署名の両方に同じ鍵が必ずしも使用されない。いくつかの実施形態では、データオブジェクトを暗号化するために使用される鍵は公開鍵／秘密鍵対のうちの公開鍵であり、鍵対の秘密鍵は、データオブジェクトが提供されるシステムによって安全に維持され、それによってシステムが鍵対の秘密鍵を使用してデータオブジェクトを復号できるようにする。データオブジェクトを暗号化するために公開鍵を使用することは、対称鍵を生成すること、対称鍵を使用してデータオブジェクトを暗号化すること、及び公開鍵を使用して対称鍵を暗号化することを含む場合があり、暗号化された対称鍵は、暗号化されたデータオブジェクトとともにシステムに提供されて、システムが対応する秘密鍵を使用して対称鍵を復号し、復号した対称鍵を使用してデータオブジェクトを復号することを可能にする。さらに、いくつかの実施形態では、データオブジェクトは、データオブジェクト（例えば、ユーザーデバイス）を暗号化する及び／またはデジタルで署名するコンピュータシステムに対応する公開鍵／秘密鍵対のうちの秘密鍵を使用してデジタルで署名される。例えば、アプリケーションは、秘密鍵でセットアップされてよく、データオブジェクトは、データオブジェクトのデジタル署名の検証のためにシステムが使用するための秘密鍵の証明書を含んでよい。他の変形形態は、ユーザーコンピュータと、データオブジェクトを暗号で検証するシステムとの間で共有される対称鍵がデータオブジェクトを暗号化する及び／またはデジタルで署名するために使用できる変形形態を含む。
【００８９】
上記説明及び以下の説明では、多様な技術を説明する。説明のために、具体的な構成及び詳細が、技術を実施する考えられる方法の完全な理解を提供するために説明される。しかしながら、以下に説明する技術が、具体的な詳細なしに異なる構成で実施され得ることも明らかになる。さらに、説明されている技術を曖昧するのを回避するために、周知の特徴が省略または簡略化される場合がある。
【００９０】
したがって、一実施形態では、コンピュータシステムは、本明細書に説明するプロセスの操作を単独でまたは集合的に実行する１つ以上のサービスを実装するように構成され、そのようなコンピュータシステムは、操作の性能を可能にする適用可能なハードウェア及び／またはソフトウェアで構成される。さらに、本開示の一実施形態を実施するコンピュータシステムは単独のデバイスであり、別の実施形態では、多数のデバイスを含む分散型コンピュータシステムであり、多数のデバイスは、分散型コンピュータシステムが本明細書に説明する操作を実行するように、及び単独のデバイスがすべての操作を実行しないように異なるように動作する。
【００９１】
本明細書に提供される任意の及びすべての実施例または例示的な言い回し（例えば、「など」）の使用は、単に、本発明の実施形態をより良好に解明することを意図し、別段に主張されない限り、本発明の範囲に限定を課すものではない。本明細書の言い回しは、任意の請求されていない要素を本発明の実践に必須であるとして示すと解釈されるべきではない。
【００９２】
本発明を実施するために本発明者らに知られているベストモードを含む本開示の実施形態を本明細書に記載する。それらの実施形態の変形形態は、前述の説明を読むと当業者に明らかになり得る。本発明者らは、当業者がそのような変形形態を必要に応じて利用することを期待し、本発明者らは本開示の実施態様が本明細書に具体的に説明するものとは別の方法で実践されることを意図する。したがって、本開示の範囲は、適用法によって許容されるように、本明細書に添付された特許請求の範囲に記載された主題のすべての修正形態及び均等物を含む。さらに、本明細書に別段の指示がない限り、または文脈によって明らかに矛盾しない限り、上述の要素のすべての考え得る変形形態での上述の要素の任意の組み合わせが本開示の範囲に包含される。
【００９３】
本明細書に引用される出願公開、特許出願、及び特許を含むすべての参考文献は、各々の参考文献が参照によって個々にかつ具体的に組み込まれるものと示される、その全体が本明細書で示されているのと同じ程度まで参照によって本明細書に組み込まれる。
【図１】
2021521718.tif 000003
【図２】
2021521718.tif 000004
【図３】
2021521718.tif 000005
【図４】
2021521718.tif 000006
【図５】
2021521718.tif 000007
【図６】
2021521718.tif 000008
【図７】
2021521718.tif 000009
【図８】
2021521718.tif 000010
【図９】
2021521718.tif 000011
【国際調査報告】
2021521718.tif 000012
2021521718.tif 000013
2021521718.tif 000014