(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-13
(45)【発行日】2023-11-21
(54)【発明の名称】暗号化コプロセッサにおけるエンティティ固有の暗号化コードの実行
(51)【国際特許分類】
H04L 9/14 20060101AFI20231114BHJP
H04L 9/10 20060101ALI20231114BHJP
G06F 21/51 20130101ALI20231114BHJP
G06F 21/60 20130101ALI20231114BHJP
【FI】
H04L9/14
H04L9/10 A
G06F21/51
G06F21/60 320
(21)【出願番号】P 2022520312
(86)(22)【出願日】2020-09-30
(86)【国際出願番号】 US2020053520
(87)【国際公開番号】W WO2021071719
(87)【国際公開日】2021-04-15
【審査請求日】2022-05-19
(32)【優先日】2019-10-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-30
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520107951
【氏名又は名称】アメリカン エキスプレス トラヴェル リレイテッド サーヴィシーズ カンパニー, インコーポレイテッド
【氏名又は名称原語表記】AMERICAN EXPRESS TRAVEL RELATED SERVICES COMPANY, INC.
【住所又は居所原語表記】200 Vesey Street, New York, NY 10285-4900 U.S.A.
(74)【代理人】
【識別番号】100083116
【氏名又は名称】松浦 憲三
(72)【発明者】
【氏名】イブラヒム, ヴァエル
(72)【発明者】
【氏名】デリワラ, マニーシュ
(72)【発明者】
【氏名】ビシュワス, マーニク
(72)【発明者】
【氏名】ヴィシュヌヴァジハラ, スブラマニヤム
(72)【発明者】
【氏名】レイ, アンドリュー
【審査官】金沢 史明
(56)【参考文献】
【文献】特表2004-519050(JP,A)
【文献】特開2001-125481(JP,A)
【文献】特開2001-338271(JP,A)
【文献】米国特許第8966243(US,B2)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/40
G06F 21/00-21/88
(57)【特許請求の範囲】
【請求項1】
プロセッサ、メモリ、及び暗号化コプロセッサを含むコンピューティング・デバイスと、
前記メモリに記憶された機械可読命令であって、前記プロセッサによって実行されると、前記コンピューティング・デバイスに、少なくとも、
ネットワークを介してサービスから暗号化アルゴリズムを実装する暗号化された
実行可能コードを受信することと、
前記暗号化コプロセッサによって、前記暗号化された
実行可能コードを復号することと、
前記暗号化コプロセッサによって、前記復号された
実行可能コードを実行して、前記暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、
前記暗号文を、前記ネットワークを介して前記サービスに送ることと
を行わせる、機械可読命令と
を備え
、
前記暗号化された実行可能コードが、前記暗号化された実行可能コードを生成したエンティティに関連付けられた前記暗号化コプロセッサのルート鍵を使用して復号されるシステム。
【請求項2】
前記暗号化コプロセッサが、Trusted Platform Module(TPM)標準のバージョンに準拠する、請求項1に記載のシステム。
【請求項3】
前記暗号化コプロセッサが、前記暗号化された
実行可能コードを復号する前に、前記コンピューティング・デバイスの状態を検証するように構成される、請求項1又は2に記載のシステム。
【請求項4】
前記サービスが、エンティティによって運用され、前記暗号化アルゴリズムが、前記エンティティにより好まれる暗号化アルゴリズムである、請求項1乃至3のいずれか一項に記載のシステム。
【請求項5】
前記暗号化コプロセッサが、前記復号された実行可能コードを実行する前に、前記暗号化された
実行可能コードが、所定の複数の信頼できるエンティティからのエンティティによって署名されることを検証するように構成される、請求項1乃至4のいずれか一項に記載のシステム。
【請求項6】
前記サービスが、エンティティに関連付けられる第1のサービス及び第2のサービスを含み、前記暗号化された実行可能コードが前記第1のサービスから受信され、前記暗号文が前記第2のサービスに送られる、請求項1乃至5のいずれか一項に記載のシステム。
【請求項7】
前記暗号化コプロセッサが、前記コンピューティング・デバイス内のファームウェアに実装され、データがインターフェースを介して前記コンピューティング・デバイスのセキュアな要素から前記暗号化コプロセッサに転送されて、前記暗号化コプロセッサによる前記暗号化された実行可能コードの復号を可能にする、請求項1乃至6のいずれか一項に記載のシステム。
【請求項8】
前記暗号化コプロセッサが、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、前記暗号化された実行可能コードにおける前記暗号化アルゴリズムが、前記所定の複数の暗号化アルゴリズムには含まれない、請求項1乃至7のいずれか一項に記載のシステム。
【請求項9】
前記暗号化コプロセッサが、信頼の基点(Root of Trust)として振る舞い、前記暗号化アルゴリズムを前記コンピューティング・デバイスのセキュアな要素に転送する前に、前記暗号化アルゴリズムを検証するように構成される、請求項1乃至8のいずれか一項に記載のシステム。
【請求項10】
暗号化コプロセッサによって、暗号化アルゴリズムを実装する暗号化された実行可能コードを、クライアント・アプリケーションから受信することと、
前記暗号化コプロセッサによって、前記暗号化された実行可能コードを復号することと、
前記暗号化コプロセッサによって、前記復号された実行可能コードを実行して、前記暗号化アルゴリズムを使用して暗号文を生成することと
を含み、
前記暗号化された実行可能コードが、前記クライアント・アプリケーションによって、エンティティによって運用されるサービスから受信され、前記クライアント・アプリケーションが、前記エンティティに関連付けられ、
前記暗号化された実行可能コードを復号することが、前記暗号化された実行可能コードを、前記エンティティに関連付けられる前記暗号化コプロセッサのルート鍵を使用して復号することを更に含む、方法。
【請求項11】
前記暗号化コプロセッサによって、前記復号された実行可能コードを実行する前に、前記暗号化された実行可能コードが、所定の複数の信頼できるエンティティからのエンティティによって署名されることを検証することを更に含む、請求項10に記載の方法。
【請求項12】
前記暗号化されたデータ及び前記暗号化された実行可能コードが、前記暗号化アルゴリズムの識別子を含まない、請求項10又は11に記載の方法。
【請求項13】
前記暗号化コプロセッサが、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、前記暗号化された実行可能コードにおける前記暗号化アルゴリズムが、前記所定の複数の暗号化アルゴリズムには含まれない、請求項10から12のいずれか1項に記載の方法。
【請求項14】
命令を含むコンピュータ・プログラムであって、前記命令は、コンピューティング・デバイス内の信頼できる実行環境において実行されると、前記コンピューティング・デバイスに、少なくとも、
前記コンピューティング・デバイスに含まれるプロセッサの信頼できない実行環境へのインターフェースを介して暗号化アルゴリズムを実装する暗号化された実行可能コードを受信することと、
前記暗号化された実行可能コードを復号することと、
前記復号された実行可能コードを実行して、前記暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、
前記暗号文を、前記インターフェースを介して返すことと
を行わせ、
前記暗号化された実行可能コードが、前記暗号化された実行可能コードを生成したエンティティに関連付けられた、前記コンピューティング・デバイスに含まれる暗号化コプロセッサのルート鍵を使用して復号されるコンピュータ・プログラム。
【請求項15】
前記命令が、前記コンピューティング・デバイスに、少なくとも、前記暗号化コプロセッサを使用して前記暗号化された実行可能コードの署名を検証することを更に行わせる、請求項14に記載のコンピュータ・プログラム。
【請求項16】
前記信頼できる実行環境が、前記プロセッサのセキュアな仮想プロセッサ上で実行されるセキュアなオペレーティング・システムを含む、請求項14又は15に記載のコンピュータ・プログラム。
【請求項17】
前記暗号文が、決済取引に相当し、前記暗号文が、限定使用の決済クリデンシャルを含む、請求項14乃至16のいずれか一項に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、「EXECUTING ENTITY-SPECIFIC CRYPTOGRAPHIC CODE IN A CRYPTOGRAPHIC COPROCESSOR」と題する、2019年10月30日に提出され、出願番号16/668,973を付された同時係属の米国特許出願に対する優先権及びその利益を主張するものであり、出願番号16/668,973は、「EXECUTING ENTITY-SPECIFIC CRYPTOGRAPHIC CODE IN A CRYPTOGRAPHIC COPROCESSOR」と題する、2019年10月11日に提出され、出願番号62/914,275を付された同時係属の米国仮特許出願に対する優先権及びその利益を主張するものであり、これらはその全体が参照により本明細書に組み込まれる。
【0002】
本出願はまた、「EXECUTING ENTITY-SPECIFIC CRYPTOGRAPHIC CODE IN A TRUSTED EXECUTION ENVIRONMENT」と題する、2019年10月30日に提出され、出願番号16/669,002を付された同時係属の米国仮特許出願に対する優先権及びその利益を主張するものであり、出願番号16/669,002は、「EXECUTING ENTITY-SPECIFIC CRYPTOGRAPHIC CODE IN A TRUSTED EXECUTION ENVIRONMENT」と題する、2019年10月11日に提出され、出願番号62/914,272を付された同時係属の米国仮特許出願に対する優先権及びその利益を主張するものであり、これらはその全体が参照により本明細書に組み込まれる。
【背景技術】
【0003】
多種多様な暗号化アルゴリズムが利用可能である。一部の暗号化アルゴリズムは対称であり、これはプレーンテキストを暗号化すること、及び暗号文を復号することの両方に、同一鍵が使用されることを意味する。他の暗号化アルゴリズムは、非対称であり、プレーンテキストを暗号化すること(例えば、公開鍵)、及び暗号文を復号すること(例えば、プライベート鍵)に、異なる関連鍵が使用されることを意味する。計算能力が高度化するにつれ、かつてセキュアであると考えられていた一部の暗号化アルゴリズムが、今ではセキュアではないと考えられている。例えば、鍵長が56ビットのデータ暗号化標準(DES)は、かつてはセキュアであると考えられた。しかしながら、今では総当たり攻撃によって容易に破られる。更には、バックドア及び/又は他の弱点は、すべての鍵の組合せを完全に総当たり攻撃することなくセキュアではないものにする暗号化アルゴリズムにおいて発見される場合がある。
【0004】
金融機関、決済イシュア、及び高価値データを扱う他の組織は、どの暗号化アルゴリズムが好ましいかに関して、それぞれ自分自身の判断に達する場合がある。また、それらの個々に好まれる暗号化アルゴリズムは、新たに公開される脆弱性に鑑みて、時間が経過するにつれ変わる場合がある。その上、どの暗号化アルゴリズムが使用されるかを公開しないことに、セキュリティ上の価値がある。
【発明の概要】
【課題を解決するための手段】
【0005】
プロセッサ、メモリ、及び暗号化コプロセッサを含むコンピューティング・デバイスと、メモリに記憶された機械可読命令であって、プロセッサによって実行されると、コンピューティング・デバイスに、少なくとも、ネットワークを介してサービスから暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化コプロセッサによって、暗号化されたコードを復号することと、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、暗号文を、ネットワークを介してサービスに送ることとを行わせる、機械可読命令とを備えるシステムの、様々な実装形態が開示される。システムのいくつかの実装形態では、暗号化コプロセッサは、Trusted Platform Module(TPM)標準の、あるバージョンに準拠する。システムのいくつかの実装形態では、暗号化コプロセッサは、暗号化されたコードを復号する前に、コンピューティング・デバイスの状態を検証するように構成される。システムのいくつかの実装形態では、サービスは、あるエンティティによって運用され、暗号化アルゴリズムは、エンティティにより好まれる暗号化アルゴリズムである。システムのいくつかの実装形態では、暗号化コプロセッサは、復号されたコードを実行する前に、暗号化されたコードが、所定の複数の信頼できるエンティティからの、あるエンティティによって署名されることを検証するように構成される。システムのいくつかの実装形態では、暗号化されたコードは、暗号化されたコードを生成したエンティティに関連付けられた暗号化コプロセッサのルート鍵を使用して復号される。システムのいくつかの実装形態では、サービスは、あるエンティティに関連付けられる第1のサービス及び第2のサービスを含み、暗号化されたコードは第1のサービスから受信され、暗号文は第2のサービスに送られる。システムのいくつかの実装形態では、暗号化コプロセッサは、コンピューティング・デバイス内のファームウェアに実装され、データはインターフェースを介してコンピューティング・デバイスのセキュアな要素から暗号化コプロセッサに転送されて、暗号化コプロセッサによる暗号化されたコードの復号を可能にする。システムのいくつかの実装形態では、暗号化コプロセッサは、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、暗号化アルゴリズムは、所定の複数の暗号化アルゴリズムには含まれない。システムのいくつかの実装形態では、暗号化コプロセッサは、信頼の基点(Root of Trsut)として振る舞い、暗号化アルゴリズムをコンピューティング・デバイスのセキュアな要素に転送する前に、暗号化アルゴリズムを検証するように構成される。
【0006】
暗号化コプロセッサによって、暗号化アルゴリズムを実装する暗号化されたコードを、クライアント・アプリケーションから受信することと、暗号化コプロセッサによって、暗号化されたコードを復号することと、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化されたデータを復号すること、又は、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号文を生成することを含む方法の、様々な実装形態が開示される。方法のいくつかの実装形態では、方法は、暗号化コプロセッサによって、復号されたコードを実行する前に、暗号化されたコードが、所定の複数の信頼できるエンティティからの、あるエンティティによって署名されることを検証することを更に含む。方法のいくつかの実装形態では、暗号化されたコードは、クライアント・アプリケーションによって、あるエンティティによって運用されるサービスから受信され、クライアント・アプリケーションは、エンティティに関連付けられる。方法のいくつかの実装形態では、暗号化されたコードを復号することは、暗号化されたコードを、エンティティに関連付けられる暗号化コプロセッサのルート鍵を使用して復号することを更に含む。方法のいくつかの実装形態では、暗号化されたデータ及び暗号化されたコードは、暗号化アルゴリズムの識別子を含まない。方法のいくつかの実装形態では、暗号化コプロセッサは、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、暗号化アルゴリズムは、所定の複数の暗号化アルゴリズムには含まれない。方法のいくつかの実装形態では、暗号化コプロセッサは、信頼の基点として振る舞い、暗号化アルゴリズムをコンピューティング・デバイスのセキュアな要素に転送する前に、暗号化アルゴリズムを検証するように構成される。
【0007】
命令を含むコンピュータ・プログラムであって、命令は、プログラムが第1のコンピューティング・デバイスによって実行されると、第1のコンピューティング・デバイスに、少なくとも、暗号化アルゴリズムを暗号化して、暗号化されたコードを作成することと、暗号化されたコードを第2のコンピューティング・デバイスに送ることと、暗号化されたコードからの暗号化アルゴリズムで生成された暗号文を第2のコンピューティング・デバイスから受信することと、暗号文を暗号化アルゴリズムで復号することとを行わせる、コンピュータ・プログラムの、様々な実装形態が開示される。コンピュータ・プログラムのいくつかの実装形態では、暗号化されたコードは、暗号化されたコードを復号するための暗号鍵用の識別子と共に第2のコンピューティング・デバイスに送られる。コンピュータ・プログラムのいくつかの実装形態では、暗号化されたコードは、暗号化アルゴリズムの識別子を含まない。コンピュータ・プログラムのいくつかの実装形態では、暗号化されたコードは、暗号化コプロセッサ用の標準によってサポートされる所定の複数の暗号化アルゴリズムのうちの一つを使用して暗号化される。
【0008】
プロセッサ、及びメモリを含むコンピューティング・デバイスと、メモリに記憶された機械可読命令であって、プロセッサによって実行されると、コンピューティング・デバイスに、少なくとも、ネットワークを介してサービスから暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化されたコードを、コンピューティング・デバイスの信頼できる実行環境内で実行されるアプリケーションに提供することと、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文をアプリケーションから取得することとを行わせる、機械可読命令とを備えるシステムの、様々な実装形態が開示される。システムのいくつかの実装形態では、暗号文は、コンピューティング・デバイスの信頼できない実行環境内で実行される別のアプリケーションによって取得される。システムのいくつかの実装形態では、機械可読命令は、コンピューティング・デバイスに、少なくとも、他のアプリケーションによって、暗号文を、ネットワークを介してサービスに送ることを更に行わせる。システムのいくつかの実装形態では、暗号化されたコードは、コンピューティング・デバイスの信頼できる実行環境とコンピューティング・デバイスの信頼できない実行環境との間のインターフェースを介して、アプリケーションに提供される。システムのいくつかの実装形態では、信頼できる実行環境は、暗号化コプロセッサを含み、機械可読命令が、コンピューティング・デバイスに、少なくとも、暗号化されたコードを復号する前に、暗号化コプロセッサによって、暗号化されたコードの署名、及びコンピューティング・デバイスの状態を検証することを更に行わせる。システムのいくつかの実装形態では、信頼できる実行環境は、暗号化コプロセッサを含み、機械可読命令が、コンピューティング・デバイスに、少なくとも、暗号化コプロセッサによって、アプリケーションの署名を検証することを更に行わせる。システムのいくつかの実装形態では、信頼できる実行環境は、暗号化コプロセッサを含み、暗号化アルゴリズムは、暗号化コプロセッサによってサポートされる所定の複数の暗号化アルゴリズムに含まれない。システムのいくつかの実装形態では、信頼できる実行環境は、プロセッサのセキュアな仮想プロセッサ上で実行されるセキュアなオペレーティング・システムを含む。システムのいくつかの実装形態では、暗号文は、決済取引に相当し、暗号文は、限定使用の決済クリデンシャルを含む。システムのいくつかの実装形態では、信頼できる実行環境は、暗号化されたコードを復号するために使用される鍵を記憶し、鍵はサービスを運用するエンティティに関連付けられる。
【0009】
信頼できない実行環境内で実行される第1のアプリケーションによって、暗号化されたデータ及び暗号化アルゴリズムを実装する暗号化されたコードを、ネットワークを介して受信することと、第1のアプリケーションによって、暗号化されたデータ及び暗号化されたコードを、信頼できる実行環境内で実行される第2のアプリケーションに転送することと、第2のアプリケーションによって、暗号化されたコードを復号することと、第2のアプリケーションによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化されたデータを復号することと、第1のアプリケーションによって、暗号化されたデータから復号された情報を、第2のアプリケーションから受信することとを含む方法の、様々な実装形態が開示される。方法のいくつかの実装形態では、方法は、暗号化されたコードを、インターフェースを使用して、第2のアプリケーションから暗号化コプロセッサに転送することと、暗号化コプロセッサを使用して暗号化されたコードの署名を検証することとを更に含む。方法のいくつかの実装形態では、復号されたコードを実行することは、暗号化コプロセッサによって実施されない。方法のいくつかの実装形態では、暗号化されたコードを復号することは、暗号化コプロセッサによって実施される。方法のいくつかの実装形態では、暗号化コプロセッサは、所定の複数の暗号化アルゴリズムを実装するコードを含み、暗号化アルゴリズムは、所定の複数の暗号化アルゴリズムから実行される。方法のいくつかの実装形態では、暗号化されたコードは、あるエンティティによって運用されるサービスから受信され、第1のアプリケーション及び第2のアプリケーションは、エンティティに関連付けられる。
【0010】
命令を含むコンピュータ・プログラムであって、命令は、コンピューティング・デバイス内の信頼できる実行環境内で実行されると、コンピューティング・デバイスに、少なくとも、プロセッサの信頼できない実行環境へのインターフェースを介して暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化されたコードを復号することと、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、暗号文を、インターフェースを介して返すこととを行わせる、コンピュータ・プログラムの、様々な実装形態が開示される。コンピュータ・プログラムのいくつかの実装形態では、コンピューティング・デバイスは、暗号化コプロセッサと、命令であって、コンピューティング・デバイスに、少なくとも、暗号化コプロセッサを使用して暗号化されたコードの署名を検証すること、又は暗号化アルゴリズムを信頼できる実行環境に転送する前に、信頼の基点として暗号化アルゴリズムを検証することを更に行わせる、命令とを更に含む。コンピュータ・プログラムのいくつかの実装形態では、信頼できる実行環境は、プロセッサのセキュアな仮想プロセッサ上で実行されるセキュアなオペレーティング・システムを含む。コンピュータ・プログラムのいくつかの実装形態では、暗号文は、決済取引に相当し、暗号文は、限定使用の決済クリデンシャルを含む。
【0011】
本開示の多くの態様は、以下の図面を参照すると、より良く理解することができる。図面の構成要素は、必ずしも縮尺通りではなく、代わりに本開示の原理を明確に図示することに重点が置かれている。更には、図面では同様の符号は、いくつかの図を通じて対応する部分を指している。
【図面の簡単な説明】
【0012】
【
図1】本開示の様々な実施形態による、ネットワーク環境の図である。
【
図2A】様々な実施形態による、
図1のネットワーク環境のクライアント・デバイスの図である。
【
図2B】様々な実施形態による、
図1のネットワーク環境のクライアント・デバイスの図である。
【
図3】本開示の様々な実施形態による、
図2Aのクライアント・デバイスを有する
図1のネットワーク環境に実装された機能性の一例を図示するシーケンス図である。
【
図4】本開示の様々な実施形態による、
図2Aのクライアント・デバイスを有する
図1のネットワーク環境に実装された機能性の一例を図示するシーケンス図である。
【
図5】本開示の様々な実施形態による、
図2Bのクライアント・デバイスを有する
図1のネットワーク環境に実装された機能性の一例を図示するシーケンス図である。
【
図6】本開示の様々な実施形態による、
図2Bのクライアント・デバイスを有する
図1のネットワーク環境に実装された機能性の一例を図示するシーケンス図である。
【発明を実施するための形態】
【0013】
本開示は、エンティティが選択する暗号化アルゴリズムの、そのエンティティに関連付けられるサービスと通信するクライアント・デバイス上における、使用に関する。例えば、金融機関、決済処理者、マーチャント・ゲートウェイ、決済イシュア、又は他のエンティティなどのエンティティは、送られてくる特定の情報が特定の暗号化アルゴリズムを使用して暗号化されるよう望む場合がある。また、エンティティは、クライアント・デバイスに情報を通信する際、特定の暗号化アルゴリズムを使用する場合がある。エンティティは、セキュリティを向上させるために、特定の暗号化アルゴリズムのアイデンティティを秘密にしておくよう望む場合がある。更には、エンティティは、自身の裁量で、特定の暗号化アルゴリズムを随時、更新又は変更するよう決定することができる。
【0014】
実施形態の第1のセットでは、クライアント・デバイス上のtrusted platform module(TPM)などの暗号化コプロセッサは、暗号の敏捷性、又は様々な暗号化アルゴリズムを使用する能力をサポートするように構成されてもよい。例えば、暗号化コプロセッサは、暗号化アルゴリズムの所定のセットをサポートすることができ、この場合、このセットに含まれるアルゴリズムはデバイス・ハードウェアの製造業者、標準化団体、オペレーティング・システムの開発者によって選択される。暗号化アルゴリズムは、ハードウェアの暗号化コプロセッサに恒久的に含まれてもよく、又はファームウェア若しくはソフトウェアの暗号化コプロセッサにおいて更新することが可能であってもよい。
【0015】
所定のセット中の暗号化アルゴリズムを使用するのではなく、エンティティは、様々な暗号化アルゴリズムを使用することを好む場合がある。例えば、エンティティによって好まれるアルゴリズムは、暗号化コプロセッサが作成された後にリリースされる可能性がある。それにより、暗号化コプロセッサは、アルゴリズム用の埋め込み型のサポートを有さず、暗号敏捷的なその使用に備えてプロビジョンする必要がある。
【0016】
説明するように、様々な実施形態において、エンティティは暗号化アルゴリズムを実装するコードを、暗号敏捷性を有する暗号化コプロセッサを有するクライアント・デバイスに送ることができる。暗号化アルゴリズムを実装するコードは、それ自体が暗号化されている場合があるため、アルゴリズムのアイデンティティ及び/又はその内部動作を隠すことができる。暗号化アルゴリズムを実装するコードは、次いでエンティティに関連付けられる鍵を用いて暗号化コプロセッサ内で復号され場合がある。次いで、暗号化コプロセッサは、暗号化コプロセッサ内でコードを実行して、エンティティに送られる情報を暗号化すること、又はエンティティから送られる情報を復号することができる。この方法で、クライアント・デバイス上で実行中のアプリケーションは、暗号化アルゴリズムへのアクセスを有する必要がなく、暗号化アルゴリズムを実装するコードは、セキュアな方法で実行される。
【0017】
実施形態の第2のセットでは、クライアント・デバイスは、暗号化コプロセッサに加え、別個の信頼できる実行環境を有する。例えば、ARMベースのデバイスは、TRUSTZONE機能をサポートするセキュリティ拡張を含んでもよく、INTELベースのデバイスは、TRUSTED EXECUTION TECHNOLOGY及びSGX SOFTWARE GUARD EXTENSIONSを有してもよく、AMDベースのデバイスは、PLATFORM SECURITY PROCESSOR及びAMD SECURE EXECUTION ENVIRONMENTを有してもよい。これは、ハードウェアベースのアクセス制御を有するセキュアなオペレーティング・システムを実行する別個の仮想プロセッサを提供する。署名されたサード・パーティ・アプリケーションは、信頼できる実行環境内で実行することが可能である。説明するように、様々な実施形態において、エンティティは、暗号化アルゴリズムを実装するコードを受信するように構成された、信頼できる実行環境における実行用に、信頼できるアプリケーションを作成することができ、この場合、コード自体が暗号化されている。暗号化コプロセッサを使用して、コードの真正性及び完全性を検証することができ、その後、信頼できるアプリケーションは暗号化アルゴリズムを実装するコードを復号して、エンティティに送られる情報を暗号化するために、又はエンティティから送られる情報を復号するために、コードを実行することができる。
【0018】
以下の議論では、システム及びそのコンポーネントの一般的な説明が与えられ、その後、それらの動作の議論をする。
【0019】
図1を参照すると、様々な実施形態による、ネットワーク環境100が示される。ネットワーク環境100は、コンピューティング環境103及びクライアント・デバイス106を含み、これらはネットワーク109を介して互いにデータ通信をしている。ネットワーク109には、ワイド・エリア・ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、パーソナル・エリア・ネットワーク(PAN)、又はそれらの組合せが含まれ得る。これらのネットワークは、有線若しくは無線のコンポーネント、又はそれらの組合せを含むことが可能である。有線のネットワークとしては、Ethernetネットワーク、ケーブル・ネットワーク、光ファイバ・ネットワーク、並びにダイヤルアップ、デジタル加入者線(DSL)、及びサービス総合デジタル網(ISDN)ネットワークなどの電話網を挙げることができる。無線ネットワークとしては、セルラ・ネットワーク、衛星ネットワーク、米国電気電子学会(IEEE)802.11無線ネットワーク(すなわち、WI-FI(登録商標))、BLUETOOTH(登録商標)ネットワーク、マイクロ波伝送ネットワーク、並びに無線ブロードキャストに依拠する他のネットワークを挙げることができる。ネットワーク109はまた、二つ以上のネットワーク109の組合せを含むことが可能である。ネットワーク109の例としては、インターネット、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、及び類似のネットワークを挙げることができる。
【0020】
コンピューティング環境103は、金融機関、決済処理者、決済ゲートウェイ、決済イシュア、又は別のエンティティなどのエンティティ向けに、又はそのようなエンティティを代表して運用され得る。コンピューティング環境103は、プロセッサ、メモリ、及び/又はネットワーク・インターフェースを含む一つ又は複数のコンピューティング・デバイスを含むことが可能である。例えば、コンピューティング・デバイスは、他のコンピューティング・デバイス又はアプリケーションを代表して計算を実施するように構成することが可能である。別の例として、そのようなコンピューティング・デバイスは、コンテンツをホストすること、及び/又はコンテンツに対するリクエストに応答して、コンテンツを他のコンピューティング・デバイスに提供することが可能である。
【0021】
その上、コンピューティング環境103は、一つ若しくは複数のサーバ・バンク又はコンピュータ・バンク又は他の配置構成で構成することが可能な複数のコンピューティング・デバイスを採用することが可能である。そのようなコンピューティング・デバイスは、単一の施設に配置することが可能であるか、又は多くの異なる地理的場所に分散することが可能である。例えば、コンピューティング環境103は、ホストされたコンピューティング・リソース、グリッド・コンピューティング・リソース、又はあらゆる他の分散型のコンピューティング用配置構成を共に含むことが可能な複数のコンピューティング・デバイスを含むことが可能である。場合によっては、コンピューティング環境103は、処理、ネットワーク、ストレージ、又は他のコンピューティング関連リソースの配分されたキャパシティが経時的に変化し得る、弾力的なコンピューティング・リソースに対応することが可能である。
【0022】
様々なアプリケーション又は他の機能性は、コンピューティング環境103内で実行することが可能である。コンピューティング環境103上で実行されるコンポーネントには、エンティティ・サービス113及び他のアプリケーション、サービス、プロセス、システム、エンジン、又は本明細書で詳細に議論しない機能性が含まれる。エンティティ・サービス113は、認証、決済認可、決済処理、又は他の機能などの機能を実施するために、エンティティによって、又はエンティティを代表して運用され得る。議論目的で一つのエンティティ・サービス113を説明するが、これらの機能の一部を実施するために複数のサービスが実装されてもよいことを理解されたい。
【0023】
また、様々なデータは、コンピューティング環境103からアクセス可能なデータ・ストア116に記憶される。データ・ストア116は、リレーショナル・データベース、非リレーショナル・データベース、オブジェクト指向データベース、階層型データベース、ハッシュ・テーブル若しくは類似のキー対値のデータ・ストア、又は他のデータ・ストレージ・アプリケーション若しくはデータ構造を含み得る、複数のデータ・ストア116を代表することが可能である。データ・ストア116に記憶されるデータは、コンピューティング環境103によってホストされる様々なアプリケーションの動作に関連付けられる。
【0024】
クライアント・デバイス106は、ネットワーク109に結合することが可能な一つ又は複数のクライアント・デバイス106の代表である。クライアント・デバイス106は、コンピュータ・システムのようなプロセッサベースのシステムを含むことが可能である。そのようなコンピュータ・システムは、パーソナル・コンピュータ(例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、又は類似のデバイス)、モバイル・コンピューティング・デバイス(例えば、携帯情報端末、携帯電話、スマートフォン、ウェブ・パッド、タブレット・コンピュータ・システム、ミュージック・プレーヤ、ポータブルのゲーム機、電子書籍リーダ、及び類似のデバイス)、メディア再生用デバイス(例えば、メディア・ストリーミング・デバイス、BluRay(登録商標)プレーヤ、デジタル・ビデオ・ディスク(DVD)プレーヤ、セットトップ・ボックス、及び類似のデバイス)、ビデオゲーム機、又は同様の機能を備えた他のデバイスの形態で具体化することが可能である。クライアント・デバイス106は、液晶ディスプレイ(LCD)、ガス・プラズマベースのフラット・パネル・ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、電気泳動式インク(「Eインク」)ディスプレイ、プロジェクタ、又は他のタイプのディスプレイ・デバイスなどの、一つ又は複数のディスプレイを含むことが可能である。一部の事例では、ディスプレイは、クライアント・デバイス106のコンポーネントであってもよく、又は有線若しくは無線接続を通じてクライアント・デバイス106に接続されてもよい。
【0025】
次に、ネットワーク環境100の様々なコンポーネントの動作について一般的な説明を与える。以下の説明では、ネットワーク環境100の様々なコンポーネントの動作及びコンポーネント間の相互作用の一例を与えるが、以降の図面に付随する説明において後に議論するように、他の動作又は相互作用が生じる場合もある。
【0026】
まず、エンティティ・サービス113は、暗号化されたコード118を、ネットワーク109を通じてクライアント・デバイス106に送る。暗号化されたコード118は、暗号化アルゴリズム121及び署名124を含む。暗号化アルゴリズム121は、対称アルゴリズム、非対称アルゴリズム、又はそれらの組合せであるハイブリッド型のアルゴリズムに相当し得る。暗号化アルゴリズム121の非限定的な例としては、Triple Data Encryption Algorithm(Triple DES)、Advanced Encryption Standard(AES)、ChaCha、Salsa20、Twofishなどを挙げることができる。
【0027】
場合によっては、暗号化アルゴリズム121は、暗号化アルゴリズム121を用いてデータを復号及び/又は暗号化するために、暗号化アルゴリズム121の使用のための鍵を含む場合がある。代替的に、そのような鍵は、他の方法でクライアント・デバイス106に利用可能であり得る。暗号化されたコード118は、暗号化されたコード118の真正性又は完全性を検証するために使用され得る署名124を含む。
【0028】
暗号化されたコード118を受信した後、クライアント・デバイス106に利用可能な一つ又は複数の鍵を用いて、クライアント・デバイス106は、暗号化されたコード118の署名124を検証し、次いで暗号化されたコード118を復号する。次に、クライアント・デバイス106は、鍵と共に暗号化アルゴリズム121を使用して、暗号文127を生成するなどの暗号化演算を行うことができる。暗号文127は、決済取引に相当する可能性があり、デバイスのプライマリ・アカウント・ナンバ、取引金額、限定使用の決済クリデンシャル又は限定使用の鍵、予測不可能な数字、タイムスタンプ、取引カウンタ、及び/又は決済取引を認可するために使用され得る他の情報などのデータを含み得る。次いで暗号文127は、ネットワーク109上でエンティティ・サービス113に送られる。
【0029】
次に
図2Aを見ると、様々な実施形態による、クライアント・デバイス106の一例が示されている。クライアント・デバイス106は、クライアント・アプリケーション203及び他のアプリケーションを実行することが可能である。クライアント・デバイス106は、暗号化コプロセッサ206、クライアント・データ・ストア209、及び他のコンポーネントを含み得る。
【0030】
クライアント・アプリケーション203は、エンティティに関連付けられる場合があり、エンティティに関する機能を実施するために使用され得る。例えば、クライアント・アプリケーション203は、エンティティ・サービス113(
図1)が決済装置を使用することを通じて、決済取引を開始又は管理するために、実行することができる。この点において、クライアント・アプリケーション203は、エンティティ・サービス113から暗号化されたコード118(
図1)を受信し、暗号化コプロセッサ206を通じて暗号文127(
図1)を生成させ、次いで暗号化された情報を含む暗号文127をエンティティ・サービス113に送ることができる。加えて、クライアント・アプリケーション203は、エンティティ・サービス113から暗号化されたデータを受信し、暗号化コプロセッサ206を通じて暗号化されたコード118を用いて暗号化されたデータを復号し、そして復号されたデータを処理することができる。
【0031】
暗号化コプロセッサ206は、統合された暗号鍵を用いてハードウェアをセキュアにし、様々な暗号化演算を実現する、物理的又はエミュレートされた専用のマイクロコントローラを表現することができる。暗号化コプロセッサ206は、Trusted Computing Group(TCG)からのTMP標準のあるバージョンを実装することができる。暗号化コプロセッサ206は、暗号化コプロセッサ206の改竄又はそのすり抜けを防ぐためハードウェア内に実装されてもよいが、暗号化コプロセッサ206の機能性は、ハードウェアベースの暗号化コプロセッサ206を持たないクライアント・デバイス106上のファームウェア又はソフトウェアに実装することが可能である。
【0032】
暗号化コプロセッサ206は、クライアント・デバイス106又はクライアント・デバイス106によって実行されるアプリケーションを代表する、様々な暗号化機能又は演算を実施することが可能である。例えば、暗号化コプロセッサ206は、暗号化コプロセッサ206に含まれている疑似乱数生成器(PRNG)又は乱数生成器(RNG)を使用して乱数を生成してもよい。別の例として、暗号化コプロセッサ206は、対称暗号化鍵及び非対称暗号化鍵対を含む、暗号鍵又は鍵対をセキュアに生成することが可能である。暗号化コプロセッサ206はまた、暗号化コプロセッサ206によって生成されたか、暗号化コプロセッサ206にインポートされた暗号鍵を用いて、データを暗号化又は復号することが可能である。別の例として、暗号化コプロセッサ206はまた、ハードウェアの現在の状態及びクライアント・デバイス106のソフトウェア設定のハッシュを生成することが可能であり、これらのハッシュにより、クライアント・デバイス106又はクライアント・デバイス106のユーザのアイデンティティのリモート証明を考慮することが可能となる。
【0033】
これらの演算を実施するために、様々な暗号鍵を、暗号化コプロセッサ206内に記憶することが可能である。このような鍵には、エンドースメント鍵対212、及びストレージ・ルート鍵などの一つ又は複数のルート鍵対215が含まれ得る。エンドースメント鍵対212及びルート鍵対215は、鍵をセキュリティ侵害から保護するために、暗号化コプロセッサ自体の内部に記憶されてもよい。
【0034】
エンドースメント鍵対212は、暗号化コプロセッサ206に一意な公開及びプライベート暗号化鍵を含む非対称暗号化鍵対である。エンドースメント鍵対212は、暗号化コプロセッサ206によって、そのアイデンティティ、つまりクライアント・デバイス106又はクライアント・デバイス106のユーザのアイデンティティを、他のパーティ又はデバイスに対して、検証又はアサートするために使用することができる。エンドースメント鍵対212がサード・パーティに知られた場合、サード・パーティは、潜在的に暗号化コプロセッサ206のアイデンティティを偽造することが可能である。したがって、エンドースメント鍵対212は、一般的に、他の暗号化鍵を署名するために使用され、その後、暗号化コプロセッサ206のアイデンティティをアサート又は検証するために使用され得る。エンドースメント鍵対212の完全性を保存して、他の暗号化コプロセッサ206にインストールされた他のエンドースメント鍵対212に対し、このエンドースメント鍵対212が一意であることを保証するために、エンドースメント鍵対212は、工場で暗号化コプロセッサ206にプロビジョンされて記憶することができる。
【0035】
ルート鍵対215は、データを暗号化及び/又は署名するために暗号化コプロセッサ206によって使用することが可能な非対称な暗号化鍵対であり得る。ルート鍵対215は、必要であれば置き換えることが可能であるが、ルート鍵対215を用いて暗号化されたあらゆるデータは、ルート鍵対215が新しいルート鍵対215で置き換えられると復元不可能となる。いくつかの実装形態では、暗号化コプロセッサ206は、複数の、独立的なルート鍵対215の使用をサポートすることが可能である。例えば、クライアント・デバイス106の複数のユーザは、個別のユーザだけがアクセスすることができる、自分自身のルート鍵対215を、それぞれ有することが可能である。別の例として、クライアント・デバイス106上で実行中の複数のクライアント・アプリケーションは、クライアント・デバイス106に記憶されたアプリケーション固有のデータを暗号化するため、及び復号するために、自分自身のルート鍵対215を有することが可能である。具体的には、エンティティ・サービス115に関連付けられるエンティティ及びクライアント・アプリケーション203は、自分自身のルート鍵対215を有し得る。更には、エンティティは、このルート鍵対215へのアクセスについての自身の認可ポリシを定めることができる。この方法では、エンティティは、ルート鍵対215の鍵階層に対する排他的な制御を維持することが可能である。
【0036】
暗号化コプロセッサ206はまた、複数の所定の暗号化アルゴリズム218を含み得る。所定の暗号化アルゴリズム218は、ルート鍵対215のうちの特定の鍵対を使用してデータを暗号化、復号、又は検証するために、暗号化コプロセッサ206によって実行することが可能である。所定の暗号化アルゴリズム218のセットは、標準によって、暗号化コプロセッサ206若しくはクライアント・デバイス106の製造業者によって、又はクライアント・デバイス106の開発者によって定められてもよい。そのようなものとして、所定の暗号化アルゴリズム218のセットは、暗号化コプロセッサ206を実装するハードウェア、ファームウェア、又はソフトウェア内にハードコーディングされてもよく、クライアント・アプリケーション203によって設定可能でなくてもよい。所定の暗号化アルゴリズム218のうちのどれが暗号化演算用に選択されるかを示すフラグが、暗号化コプロセッサ206に送られてもよい。所定の暗号化アルゴリズム218は、暗号化されたコード118内の暗号化アルゴリズム121(
図1)を含まなくてもよいことに留意されたい。しかしながら、暗号化されたコード118は、所定の暗号化アルゴリズム218のうちの一つを使用して暗号化されてもよい。
【0037】
承認されたエンティティ221は、暗号化アルゴリズム121などの、暗号化コプロセッサ206内でコードを実行することを承認されたエンティティの一覧に相当し得る。承認されたエンティティ221は、暗号化コプロセッサ206にルート鍵対215を記憶することを許可され得る。いくつかの実施形態では、承認されたエンティティ221の一覧がない場合があるが、承認されたエンティティ221は、承認されたエンティティ221が暗号化コプロセッサ206内の任意の暗号化アルゴリズム121を実行するためのアクセスを有することを可能にする、対応するルート鍵対215を有する。
【0038】
また、様々なデータは、クライアント・デバイス106からアクセス可能なクライアント・データ・ストア209に記憶される。クライアント・データ・ストア209は、リレーショナル・データベース、オブジェクト指向データベース、階層型データベース、ハッシュ・テーブル若しくは類似のキー対値のデータ・ストア、又は他のデータ・ストレージ・アプリケーション若しくはデータ構造を含み得る、複数のクライアント・データ・ストア209を代表することが可能である。クライアント・データ・ストア209に記憶されるデータは、クライアント・デバイス106によって実行される様々なアプリケーションの動作に関連付けられる。このデータは、一つ又は複数のアプリケーション鍵対224、暗号化された認証トークン163、アイデンティティ鍵対233、及び潜在的な他のデータを含むことが可能である。
【0039】
アプリケーション鍵対224は、暗号化コプロセッサ206によって生成されるか、又は暗号化コプロセッサ206にインポートされて、様々なデータ暗号化機能に使用され得る非対称の暗号化鍵対である。それぞれのアプリケーション鍵対224は、個々のルート鍵対215の子、孫、又は子孫鍵であり得る。その上、それぞれのルート鍵対215は、それに関連付けられた一つ又は複数のアプリケーション鍵対224を有することが可能である。例えば、ユーザは、様々な使用のために、複数のアプリケーション鍵対224を作成する可能性があり、これらのアプリケーション鍵対224は、ユーザ用のルート鍵対215のサブ鍵又は子鍵として記憶することができる。同様に、自分自身のルート鍵対215をプロビジョンしたクライアント・アプリケーション203は、様々な目的に複数のアプリケーション鍵対224を使用することが可能であり、これらのアプリケーション鍵対224のうちの一つ又は複数は、クライアント・アプリケーション203用のプロビジョンされたルート鍵対215のサブ鍵として記憶され得る。それぞれのアプリケーション鍵対224は、アプリケーション公開鍵227及び暗号化されたプライベート鍵230含むことが可能である。
【0040】
アイデンティティ鍵対233は、暗号化コプロセッサ206によって、そのアイデンティティを検証するために生成され、使用することが可能な、ローカルに記憶された非対称暗号化鍵対を表現する。例えば、アイデンティティ鍵対233のプライベート鍵で署名されたメッセージは、アイデンティティ公開鍵を用いて、クライアント・デバイス106にインストールされた暗号化コプロセッサ206の一意なアイデンティティにより、特定のクライアント・デバイス106から発せられたものとして検証することが可能である。したがって、アイデンティティ鍵対233は、エンドースメント鍵対212に対するエイリアスとして使用することができる。これは、アイデンティティ鍵対233が有効であることを証明するために、エンドースメント鍵対212のプライベート鍵を使用して暗号化コプロセッサ206によって署名することができる。
【0041】
限定使用の決済クリデンシャル236は、限定使用の鍵に相当し得る。限定使用の決済クリデンシャル236は、サーバ側マスタ鍵によって生成される動的な鍵である。限定使用の決済クリデンシャル236のうちの一つ又は複数の所定の数は、最初にクライアント・デバイス106にプロビジョンされてもよい。限定使用の決済クリデンシャル236又は限定使用の鍵から導出されるセッション鍵を使用して、暗号文127がクライアント・デバイス106によって生成されたことを検証することができる。限定使用の決済クリデンシャル236は、クライアント・デバイス106に送ってもよく、限定使用の決済クリデンシャル236のそれぞれ一つは、決済取引を認可するために、一回又は所定の回数使用することができる。
【0042】
図2Bに移ると、様々な実施形態による、クライアント・デバイス106の一例が示される。クライアント・デバイス106は、信頼できない実行環境250、信頼できる実行環境253、及び信頼できない実行環境250と信頼できる実行環境253との間にインターフェース254を含むことが可能である。クライアント・アプリケーション203は、ユーザの制御の下、多くのアプリケーションと共に、信頼できない実行環境250内で実行することが可能である。信頼できる実行環境253は、セキュアな仮想プロセッサ又はセキュアな物理プロセッサ上で実行される、それ自身のセキュアなオペレーティング・システムを有するセキュアな環境である。信頼できない実行環境250は、信頼できる実行環境253のセキュアな仮想プロセッサ又は物理プロセッサとは異なる仮想プロセッサ又は物理プロセッサ上で実行される場合がある。
【0043】
クライアント・デバイス106のハードウェア・プロセッサは、ハイパバイザを実行するか、又は信頼できる実行環境253へのアクセスを仲介若しくは制限するハードウェア拡張を含んでもよい。インターフェース254は、信頼できる実行環境253と信頼できない実行環境250との間でセキュアなやり方でデータの転送を可能にする、ハイパバイザ又はプロセッサのハードウェア拡張によってサポートされるアプリケーション・プログラミング・インターフェース(API)であってもよい。例えば、インターフェース254は、システム・コール又は共有メモリを通過したメッセージを含んでもよい。
【0044】
エンティティに関連付けられる信頼できるアプリケーション256は、信頼できる実行環境253内で実行される。信頼できるアプリケーション256はエンティティによって署名され、信頼できる実行環境253内で実行される前に、暗号化コプロセッサ206によって検証され得る。信頼できるアプリケーション256が実行されて、クライアント・アプリケーション203からインターフェース254を介して暗号化されたコード118(
図1)を受信し、暗号化コプロセッサ206により署名124(
図1)を使用して暗号化されたコード118の真正性及び/又は完全性を検証し、暗号化コプロセッサ206を使用して暗号化されたコード118を復号する。
【0045】
暗号化されたコード118が検証されて復号された後、信頼できるアプリケーション256は、暗号化アルゴリズム121(
図1)を使用して、暗号化、復号、署名、又は他の暗号化演算の実施を行うことができる。特に、信頼できるアプリケーション256は、様々な情報を暗号化するために暗号化アルゴリズム121を実行することによって、暗号文127を生成してもよい。例えば、情報は、決済取引に関連する場合があり、限定使用の決済クリデンシャル236又は限定使用の鍵を含んでもよい。
【0046】
図2Bは、単一のクライアント・データ・ストア209を示しているが、クライアント・データ・ストア209は、データ・ストアのうちの一つ又は複数が、信頼できる実行環境253を通じてのみアクセス可能である、複数のデータ・ストアに分割されてもよいことを理解されたい。
【0047】
次に
図3を参照すると、
図2Aのクライアント・デバイス106を含むネットワーク環境100の様々なコンポーネント同士の相互作用の一例を与えるシーケンス図が示されている。
図3のシーケンス図は、ネットワーク環境100で採用され得る多くの異なるタイプの機能的な配置構成の一例を与えているに過ぎない。代替として、
図3のシーケンス図は、ネットワーク環境100内に実装される方法の要素の例を描いているものとして見ることが可能である。
【0048】
四角303から始まり、エンティティ・サービス113は、暗号化されたコード118(
図1)を、クライアント・デバイス106(
図2A)上で実行されるクライアント・アプリケーション203に送る。暗号化されたコード118は、署名124(
図1)と共に送られてもよい。署名124のヘッダを使用して、暗号化されたコード118を復号するための特定のルート鍵対215(
図2A)を識別することが可能である。代替的に、エンティティ・サービス113は、異なるタイプの鍵識別子を送ってもよい。一実施形態において、クライアント・デバイス106は、署名124を検証するため、及び暗号化されたコード118を復号するために、エンティティ・サービス113を特定のルート鍵対215にリンクするローカル(例えば、非揮発性のランダム・アクセス・メモリ)に記憶されたルックアップ・テーブル又はマッピングを有してもよい。
【0049】
次に、四角306では、クライアント・アプリケーション203は、暗号化されたコード118を、クライアント・デバイス106の暗号化コプロセッサ206に提供する。例えば、クライアント・アプリケーション203は、暗号化されたコード118を、クライアント・データ・ストア209又は他のメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたコード118をロードし、それを検証して復号することができる。暗号化コプロセッサ206がファームウェアに実装される場合、セキュアな要素(例えば、セキュアなデータ・ストレージ)に記憶されるデータ(例えば、ルート鍵)は、セキュアな要素へのアクセスを仲介するインターフェースを介して、セキュアな要素からファームウェアの暗号化コプロセッサ206に転送されてもよい。データ(例えば、ルート鍵)は、ファームウェアの暗号化コプロセッサ206が、検証及び復号などの機能を実施できるようにする。
【0050】
四角309では、暗号化コプロセッサ206は、暗号化されたコード118と共に送られた署名124を使用して暗号化されたコード118を検証する。この目的のために、暗号化コプロセッサ206は、署名124を使用して検証を行うために、エンティティに関連付けられるルート鍵対215を取得することができる。故に、検証手順は、暗号化されたコード118の真正性及び完全性を検証する。場合によっては、暗号化コプロセッサ206は、クライアント・デバイス106の状態を検証し、且つクライアント・デバイス106の状態に基づいて、暗号化されたコード118の復号を許可又は許可しない場合がある。例えば、暗号化コプロセッサ206は、クライアント・デバイス106がルートになっている場合、暗号化されたコード118の復号を許可しない可能性がある。検証が正常ではなかった場合、暗号化アルゴリズム121の復号と実行は進行しない。
【0051】
四角312では、暗号化コプロセッサ206は、暗号化されたコード118を復号する。例えば、暗号化コプロセッサ206は、復号を実施するために、所定の暗号化アルゴリズム218(
図2A)のうち特定の一つを、エンティティに関連付けられるルート鍵対215と共に利用することが可能である。暗号化されたコード118を復号する際、暗号化コプロセッサ206は、暗号化アルゴリズム121(
図1)を未暗号化の形態で取得する。いくつかの例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218とは異なっていてもよい。他の例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218のうちの一つである可能性があるが、暗号化アルゴリズム121のアイデンティティは、暗号化されたコード118自体からは明らかにならない場合がある。一例では、暗号化コプロセッサ206は、信頼の基点として振る舞い、特定のプロプライエタリな暗号化アルゴリズム121をセキュアな要素に渡す前に、これを有効化する。
【0052】
四角315では、クライアント・アプリケーション203は、暗号化コプロセッサ206による後続の暗号化のために情報を暗号化コプロセッサ206に提供する。例えば、情報は、特定の決済取引に関連してもよく、限定使用の決済クリデンシャル236(
図2A)又は限定使用の鍵、予測不可能な数字、連続する数字、モノトニック・カウンタ値、タイムスタンプ、取引金額、及び/又は他の情報などのデータを含んでもよい。他の例では、クライアント・アプリケーション203は、暗号化されたコード118と共に、又は暗号化されたコード118が暗号化コプロセッサ206に提供される前に、情報を暗号化コプロセッサ206に提供してもよい。この情報の一つ又は複数の項目(例えば、予測不可能な数字)は、いくつかの例では暗号化コプロセッサ206自体によって生成される場合がある。
【0053】
四角318では、暗号化コプロセッサ206は、暗号化されたコード118から四角312において復号された暗号化アルゴリズム121を使用して情報を暗号化する。この目的のため、暗号化コプロセッサ206は、エンティティ・サービス113によって供給される暗号化アルゴリズム121を実装するコードを実行し、エンティティに関連付けられるルート鍵対215からの鍵又は対称鍵を使用してもよい。この方法で、暗号化コプロセッサ206は、暗号文127を生成する(
図1)。四角321では、暗号化コプロセッサ206は、暗号文127をクライアント・アプリケーション203に返す。
【0054】
四角324では、クライアント・アプリケーション203は、暗号文127を、ネットワーク109を介してエンティティ・サービス113に送る。四角327では、エンティティ・サービス113は、暗号文127を処理する。例えば、エンティティ・サービス113は、暗号文127の署名を有効化してもよい。次いで、エンティティ・サービス113は、暗号文127を暗号化するために使用された対称鍵、又は暗号文127を暗号化するために使用された鍵対のプライベート鍵を使用して暗号文127を復号する。次いで、エンティティ・サービス113は、暗号文127の内容を検証することができる。例えば、エンティティ・サービス113は、限定使用の決済クリデンシャル236又は限定使用の鍵が有効かどうかを検証することができる。内容を検証すると、エンティティ・サービス113は、次いで対応する決済取引を認可及び/又は処理することができる。
【0055】
図4に移ると、
図2Aのクライアント・デバイス106を含むネットワーク環境100の様々なコンポーネント同士の相互作用の別の例を与えるシーケンス図が示されている。
図4のシーケンス図は、ネットワーク環境100で採用され得る多くの異なるタイプの機能的な配置構成の一例を与えているに過ぎない。代替として、
図4のシーケンス図は、ネットワーク環境100内に実装される方法の要素の例を描いているものとして見ることが可能である。
【0056】
四角403から始まり、エンティティ・サービス113は、暗号化されたコード118(
図1)を、クライアント・デバイス106(
図2A)上で実行されるクライアント・アプリケーション203に送る。エンティティ・サービス113はまた、暗号化されたコード118と共に、暗号化されたコード118より前に、又は暗号化されたコード118の後に、暗号化されたデータを送ってもよく、この場合、暗号化されたデータは、暗号化されたコード118内で暗号化された暗号化アルゴリズム121(
図1)を使用して暗号化される。暗号化されたコード118及び暗号化されたデータは、署名124(
図1)と共に送られてもよい。署名124のヘッダを使用して、暗号化されたコード118及び暗号化されたデータを復号するための特定のルート鍵対215(
図2A)を識別することが可能である。代替的に、エンティティ・サービス113は、異なるタイプの鍵識別子を送ってもよい。一実施形態において、クライアント・デバイス106は、署名124を検証するため、並びに暗号化されたコード118及び暗号化されたデータを復号するために、エンティティ・サービス113を特定のルート鍵対215にリンクするローカル(例えば、非揮発性のランダム・アクセス・メモリ)に記憶されたルックアップ・テーブル又はマッピングを有してもよい。
【0057】
次に、四角406では、クライアント・アプリケーション203は、暗号化されたコード118を、クライアント・デバイス106の暗号化コプロセッサ206に提供する。例えば、クライアント・アプリケーション203は、暗号化されたコード118を、クライアント・データ・ストア209又は他のメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたコード118をロードし、それを検証して復号することができる。暗号化コプロセッサ206がファームウェアに実装される場合、セキュアな要素(例えば、セキュアなデータ・ストレージ)に記憶されるデータ(例えば、ルート鍵)は、セキュアな要素へのアクセスを仲介するインターフェースを介して、セキュアな要素からファームウェアの暗号化コプロセッサ206に転送されてもよい。データ(例えば、ルート鍵)は、ファームウェアの暗号化コプロセッサ206が、検証及び復号などの機能を実施できるようにする。
【0058】
四角409では、暗号化コプロセッサ206は、暗号化されたコード118と共に送られた署名124を使用して暗号化されたコード118を検証する。この目的のために、暗号化コプロセッサ206は、署名124を使用して検証を行うために、エンティティに関連付けられるルート鍵対215(
図2A)を取得することができる。故に、検証手順は、暗号化されたコード118の真正性及び完全性を検証する。場合によっては、暗号化コプロセッサ206は、クライアント・デバイス106の状態を検証し、且つクライアント・デバイス106の状態に基づいて、暗号化されたコード118の復号を許可又は許可しない場合がある。例えば、暗号化コプロセッサ206は、クライアント・デバイス106がルートになっている場合、暗号化されたコード118の復号を許可しない可能性がある。検証が正常ではなかった場合、暗号化アルゴリズム121の復号と実行は進行しない。
【0059】
四角412では、暗号化コプロセッサ206は、暗号化されたコード118を復号する。例えば、暗号化コプロセッサ206は、復号を実施するために、所定の暗号化アルゴリズム218(
図2A)のうち特定の一つを、エンティティに関連付けられるルート鍵対215と共に利用することが可能である。暗号化されたコード118を復号する際、暗号化コプロセッサ206は、暗号化アルゴリズム121を未暗号化の形態で取得する。いくつかの例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218とは異なっていてもよい。他の例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218のうちの一つである可能性があるが、暗号化アルゴリズム121のアイデンティティは、暗号化されたコード118自体からは明らかにならない場合がある。一例では、暗号化コプロセッサ206は、信頼の基点として振る舞い、特定のプロプライエタリな暗号化アルゴリズム121をセキュアな要素に渡す前に、これを有効化する。
【0060】
四角415では、クライアント・アプリケーション203は、暗号化されたデータを、暗号化コプロセッサ206に提供する。暗号化されたデータは、任意のデータであってもよい。暗号化されたデータは、一つ又は複数の限定使用の決済クリデンシャル236(
図2A)若しくは限定使用の鍵、又は決済取引に関する他の情報を含む場合がある。例えば、クライアント・アプリケーション203は、暗号化されたデータを、クライアント・データ・ストア209又は他のメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたデータをロードし、それを検証して復号することができる。
【0061】
四角418では、暗号化コプロセッサ206は、暗号化されたデータ中の情報を、暗号化アルゴリズム121を使用して復号する。この目的のため、暗号化コプロセッサ206は、暗号化アルゴリズム121を実装するエンティティ供給のコードを実行し、エンティティに関連付けられるルート鍵対215からの鍵を使用してもよい。四角421では、暗号化コプロセッサ206は、復号した情報をクライアント・アプリケーション203に返す。四角424では、クライアント・アプリケーション203は、復号したデータを処理するが、これはデータを再暗号化すること、データをクライアント・データ・ストア209に記憶すること、及び/又は他のアクションを実施することを含む場合がある。
【0062】
続いて
図5では、
図2Bのクライアント・デバイス106を含むネットワーク環境100の様々なコンポーネント同士の相互作用の一例を与えるシーケンス図が示されている。
図5のシーケンス図は、ネットワーク環境100で採用され得る多くの異なるタイプの機能的な配置構成の一例を与えているに過ぎない。代替として、
図5のシーケンス図は、ネットワーク環境100内に実装される方法の要素の例を描いているものとして見ることが可能である。
【0063】
四角503から始まり、エンティティ・サービス113は、暗号化されたコード118(
図1)を、信頼できない実行環境250(
図2B)中のクライアント・デバイス106(
図2B)上で実行されるクライアント・アプリケーション203に送る。暗号化されたコード118は、署名124(
図1)と共に送られてもよい。署名124のヘッダを使用して、暗号化されたコード118を復号するための特定のルート鍵対215(
図2B)を識別することが可能である。代替的に、エンティティ・サービス113は、異なるタイプの鍵識別子を送ってもよい。一実施形態において、クライアント・デバイス106は、署名124を検証するため、及び暗号化されたコード118を復号するために、エンティティ・サービス113を特定のルート鍵対215にリンクするローカル(例えば、非揮発性のランダム・アクセス・メモリ)に記憶されたルックアップ・テーブル又はマッピングを有してもよい。
【0064】
次に、四角506では、クライアント・アプリケーション203は、暗号化されたコード118を、インターフェース254(
図2B)を介して、信頼できる実行環境253内で実行される信頼できるアプリケーション256に提供する。例えば、クライアント・アプリケーション203は、暗号化されたコード118を、クライアント・データ・ストア209又は他のメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたコード118をロードし、それを検証して復号することができる。
【0065】
四角509では、信頼できるアプリケーション256は、暗号化されたコード118を、クライアント・デバイス106の暗号化コプロセッサ206に提供する。例えば、信頼できるアプリケーション256は、暗号化されたコード118を、クライアント・データ・ストア209のセキュアな部分又は他のセキュアなメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたコード118をロードし、それを検証して復号することができる。暗号化されたコード256は、信頼できる実行環境253と暗号化コプロセッサ206との間のインターフェースを介して暗号化コプロセッサ206に提供されてもよい。
【0066】
四角512では、暗号化コプロセッサ206は、暗号化されたコード118と共に送られた署名124(
図1)を使用して暗号化されたコード118を検証する。この目的のために、暗号化コプロセッサ206は、署名124を使用して検証を行うために、エンティティに関連付けられるルート鍵対215(
図2B)を取得することができる。故に、検証手順は、暗号化されたコード118の真正性及び完全性を検証する。場合によっては、暗号化コプロセッサ206は、クライアント・デバイス106の状態を検証し、及びクライアント・デバイス106の状態に基づいて、暗号化されたコード118の復号を許可又は許可しない場合がある。例えば、暗号化コプロセッサ206は、クライアント・デバイス106がルートになっている場合、暗号化されたコード118の復号を許可しない可能性がある。検証が正常ではなかった場合、暗号化アルゴリズム121の復号と実行は進行しない。
【0067】
四角515では、暗号化コプロセッサ206は、暗号化されたコード118を復号する。例えば、暗号化コプロセッサ206は、復号を実施するために、所定の暗号化アルゴリズム218(
図2B)のうち特定の一つを、エンティティに関連付けられるルート鍵対215と共に利用することが可能である。暗号化されたコード118を復号する際、暗号化コプロセッサ206は、暗号化アルゴリズム121(
図1)を未暗号化の形態で作り出す。いくつかの例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218とは異なっていてもよい。他の例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218のうちの一つである可能性があるが、暗号化アルゴリズム121のアイデンティティは、暗号化されたコード118自体からは明らかにならない場合がある。四角518では、暗号化コプロセッサ206は、暗号化アルゴリズム121用の復号されたコードを、暗号化コプロセッサ206と信頼できる実行環境253との間のインターフェースを介して、信頼できるアプリケーション256に返す。一例では、暗号化コプロセッサ206は、信頼の基点として振る舞い、特定のプロプライエタリな暗号化アルゴリズム121を信頼できる実行環境253に渡す前に、これを有効化する。
【0068】
四角521では、クライアント・アプリケーション203は、信頼できるアプリケーション256による後続の暗号化のために情報を信頼できるアプリケーション256に提供する。例えば、情報は、特定の決済取引に関連してもよく、限定使用の決済クリデンシャル236(
図2A)又は限定使用の鍵、予測不可能な数字、連続する数字、モノトニック・カウンタ値、タイムスタンプ、取引金額、及び/又は他の情報などのデータを含んでもよい。他の例では、クライアント・アプリケーション203は、暗号化されたコード118と共に、又は暗号化されたコード118が信頼できるアプリケーション256に提供される前に、情報を信頼できるアプリケーション256に提供してもよい。この情報の一つ又は複数の項目(例えば、予測不可能な数字)は、いくつかの例では暗号化コプロセッサ206又は信頼できるアプリケーション256によって生成される場合がある。
【0069】
四角524では、信頼できるアプリケーション256は、情報を、暗号化アルゴリズム121を使用して暗号化する。この目的のため、信頼できるアプリケーション256は、暗号化アルゴリズム121を実装するエンティティ供給のコードを実行し、エンティティに関連付けられるアプリケーション鍵対224からの鍵又は対称鍵を使用してもよい。この方法で、信頼できるアプリケーション256は、暗号文127を生成する(
図1)。四角527では、信頼できるアプリケーション256は、暗号文127を、インターフェース254を介してクライアント・アプリケーション203に返す。
【0070】
四角530では、クライアント・アプリケーション203は、暗号文127を、ネットワーク109を介してエンティティ・サービス113に送る。四角533では、エンティティ・サービス113は、暗号文127を処理する。例えば、エンティティ・サービス113は、暗号文127の署名を有効化してもよい。次いで、エンティティ・サービス113は、暗号文127を暗号化するために使用された対称鍵、又は暗号文127を暗号化するために使用された鍵対のプライベート鍵を使用して暗号文127を復号する。次いで、エンティティ・サービス113は、暗号文127の内容を検証することができる。例えば、エンティティ・サービス113は、限定使用の決済クリデンシャル236又は限定使用の鍵が有効であることを検証することができる。内容を検証すると、エンティティ・サービス113は、次いで対応する決済取引を認可及び/又は処理することができる。
【0071】
次に
図6を見ると、
図2Bのクライアント・デバイス106を含むネットワーク環境100の様々なコンポーネント同士の相互作用の別の例を与えるシーケンス図が示されている。
図6のシーケンス図は、ネットワーク環境100で採用され得る多くの異なるタイプの機能的な配置構成の一例を与えているに過ぎない。代替として、
図6のシーケンス図は、ネットワーク環境100内に実装される方法の要素の例を描いているものとして見ることが可能である。
【0072】
四角603から始まり、エンティティ・サービス113は、暗号化されたコード118(
図1)を、信頼できない実行環境250(
図2B)中のクライアント・デバイス106(
図2B)上で実行されるクライアント・アプリケーション203に送る。エンティティ・サービス113はまた、暗号化されたコード118と共に、暗号化されたコード118より前に、又は暗号化されたコード118の後に、暗号化されたデータを送ってもよく、この場合、暗号化されたデータは、暗号化されたコード118内で暗号化された暗号化アルゴリズム121(
図1)を使用して暗号化される。暗号化されたコード118及び暗号化されたデータは、署名124(
図1)と共に送られてもよい。署名124のヘッダを使用して、暗号化されたコード118を復号するための特定のルート鍵対215(
図2B)を識別することが可能である。代替的に、エンティティ・サービス113は、異なるタイプの鍵識別子を送ってもよい。一実施形態において、クライアント・デバイス106は、署名124を検証するため、及び暗号化されたコード118及び暗号化されたデータを復号するために、エンティティ・サービス113を特定のルート鍵対215にリンクするローカル(例えば、非揮発性のランダム・アクセス・メモリ)に記憶されたルックアップ・テーブル又はマッピングを有してもよい。
【0073】
次に、四角606では、クライアント・アプリケーション203は、暗号化されたコード118を、インターフェース254(
図2B)を介して、信頼できる実行環境253(
図2B)内で実行される信頼できるアプリケーション256に提供する。
【0074】
四角609では、信頼できるアプリケーション256は、暗号化されたコード118を、クライアント・デバイス106の暗号化コプロセッサ206に提供する。例えば、信頼できるアプリケーション256は、暗号化されたコード118を、クライアント・データ・ストア209のセキュアな部分又は他のセキュアなメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたコード118をロードし、それを検証して復号することができる。暗号化されたコード256は、信頼できる実行環境253と暗号化コプロセッサ206との間のインターフェースを介して暗号化コプロセッサ206に提供されてもよい。四角612では、暗号化コプロセッサ206は、暗号化されたコード118と共に送られた署名124を使用して暗号化されたコード118を検証する。この目的のために、暗号化コプロセッサ206は、署名124を使用して検証を行うために、エンティティに関連付けられるルート鍵対215を取得することができる。故に、検証手順は、暗号化されたコード118の真正性及び完全性を検証する。場合によっては、暗号化コプロセッサ206は、クライアント・デバイス106の状態を検証し、且つクライアント・デバイス106の状態に基づいて、暗号化されたコード118の復号を許可又は許可しない場合がある。例えば、暗号化コプロセッサ206は、クライアント・デバイス106がルートになっている場合、暗号化されたコード118の復号を許可しない可能性がある。検証が正常ではなかった場合、暗号化アルゴリズム121の復号と実行は進行しない。
【0075】
四角615では、暗号化コプロセッサ206は、暗号化されたコード118を復号する。例えば、暗号化コプロセッサ206は、復号を実施するために、所定の暗号化アルゴリズム218(
図2B)のうち特定の一つを、エンティティに関連付けられるルート鍵対215と共に利用することが可能である。暗号化されたコード118を復号する際、暗号化コプロセッサ206は、暗号化アルゴリズム121を未暗号化の形態で作り出す。いくつかの例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218とは異なっていてもよい。他の例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218のうちの一つである可能性があるが、暗号化アルゴリズム121のアイデンティティは、暗号化されたコード118自体からは明らかにならない場合がある。一例では、暗号化コプロセッサ206は、信頼の基点として振る舞い、特定のプロプライエタリな暗号化アルゴリズム121を信頼できる実行環境253に渡す前に、これを有効化する。
【0076】
四角618では、暗号化コプロセッサ206は、暗号化アルゴリズム121用の復号されたコードを、信頼できる実行環境253と暗号化コプロセッサ206との間のインターフェースを介して、信頼できるアプリケーション256に返す。他の例では、暗号化コプロセッサ206によって暗号化されたコード118が検証されると、次いで信頼できるアプリケーション256は、暗号化されたコード118を復号する。
【0077】
四角621では、クライアント・アプリケーション203は、暗号化されたデータを、インターフェース254を介して信頼できるアプリケーション256に提供する。暗号化されたデータは、任意のデータであってもよい。暗号化されたデータは、一つ又は複数の限定使用の決済クリデンシャル236(
図2A)若しくは限定使用の鍵、又は決済取引に関する他の情報を含む場合がある。
【0078】
四角624では、信頼できるアプリケーション256は、暗号化されたデータ中の情報を、暗号化アルゴリズム121を使用して復号する。この目的のため、信頼できるアプリケーション256は、暗号化アルゴリズム121を実装するエンティティ供給のコードを実行し、エンティティに関連付けられるアプリケーション鍵対224(
図2B)からの鍵を使用してもよい。四角627では、信頼できるアプリケーション256は、復号した情報を、インターフェース254を介してクライアント・アプリケーション203に返す。四角630では、クライアント・アプリケーション203は、復号したデータを処理するが、これはデータを再暗号化すること、データをクライアント・データ・ストア209に記憶すること、及び/又は他のアクションを実施することを含む場合がある。
【0079】
上で議論した、いくつかのソフトウェア・コンポーネントは、それぞれのコンピューティング・デバイスのメモリに記憶され、それぞれのコンピューティング・デバイスのプロセッサによって実行可能である。この点において、用語「実行可能な」は、最終的にプロセッサによって実行可能な形態にあるプログラム・ファイルを意味する。実行可能なプログラムの例としては、メモリのランダム・アクセス部分にロードしてプロセッサによって実行することができるフォーマットの、機械コードに変換可能なコンパイルされたプログラム、メモリのランダム・アクセス部分にロードしてプロセッサによって実行することができるオブジェクト・コードなど適切なフォーマットとして表現され得るソース・コード、又は別の実行可能プログラムによって解釈され、プロセッサによって実行されるようにメモリのランダム・アクセス部分において命令を生成することができるソース・コードを挙げることができる。実行可能なプログラムは、メモリのあらゆる部分又はコンポーネントに記憶することができ、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、ハード・ドライブ、ソリッドステート・ドライブ、ユニバーサル・シリアル・バス(USB)フラッシュ・ドライブ、メモリ・カード、コンパクト・ディスク(CD)若しくはデジタル・バーサタイル・ディスク(DVD)などの光学ディスク、フロッピ・ディスク、磁気テープ、又は他のメモリ・コンポーネントが挙げられる。
【0080】
メモリには、揮発性及び非揮発性両方の、メモリ及びデータ・ストレージ・コンポーネントが含まれる。揮発性のコンポーネントは、電力が失われるとデータ値を保持しないコンポーネントである。非揮発性のコンポーネントは、電力が失われてもデータの値を保持するコンポーネントである。故に、メモリは、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、ハード・ディスク・ドライブ、ソリッドステート・ドライブ、USBフラッシュ・ドライブ、メモリ・カード・リーダを介してアクセスされるメモリ・カード、関連付けられたフロッピ・ディスク・ドライブを介してアクセスされるフロッピ・ディスク、光学ディスク・ドライブを介してアクセスされる光学ディスク、適切なテープ・ドライブを介してアクセスされる磁気テープ、非揮発性のランダム・アクセス・メモリ(NVRAM)、他のメモリ・コンポーネント、又は、これらのメモリ・コンポーネントのうち任意の二つ以上の組合せを含むことができる。加えて、RAMは、静的ランダム・アクセス・メモリ(SRAM)、動的ランダム・アクセス・メモリ(DRAM)、又は磁気的なランダム・アクセス・メモリ(MRAM)及び他のそのようなデバイスを含むことが可能である。ROMには、プログラム可能読み取り専用メモリ(PROM)、消去可能プログラム可能読み取り専用メモリ(EPROM)、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)、又は他の同様なメモリ・デバイスが含まれる可能性がある。
【0081】
本明細書で説明されるアプリケーション及びシステムは、上で議論したような汎用のハードウェアによって実行されるソフトウェア又はコードとして具体化することが可能であるが、代替として、本明細書で説明されるアプリケーション及びシステムはまた、専用ハードウェア、又はソフトウェア/汎用ハードウェアと専用ハードウェアとの組合せとして具体化することもできる。専用ハードウェアとして具体化される場合、それぞれは、いくつかの技術の組合せのいずれかを採用する回路又は状態機械として実装することが可能である。これらの技術としては、限定はしないが、一つ又は複数のデータ信号を印加すると様々な論理機能を実装する論理ゲートを有するディスクリート論理回路、適切な論理ゲートを有する特定用途向け集積回路(ASIC)、フィールドプログラマブル・ゲート・アレイ(FPGA)、又は他のコンポーネントなどを挙げることができる。そのような技術は、一般的には当業者に周知であるため、結果的に本明細書では詳細に説明されていない。
【0082】
シーケンス図は、本開示の様々な実施形態の部分の実装の、機能性及び動作を示している。ソフトウェアとして具体化される場合、それぞれのブロックは、指定の論理機能を実装するためのプログラム命令を含むコードの、モジュール、セグメント、又は部分を表現することが可能である。プログラム命令は、コンピュータ・システム内のプロセッサなどの適切な実行システムによって認識可能な数値命令を含むプログラミング言語又は機械コードで記述された人間可読ステートメントを含むソース・コードの形態として具体化することが可能である。機械コードは、様々なプロセスを通じてソース・コードから変換することが可能である。例えば、機械コードは、対応するアプリケーションの実行に先立って、コンパイラを用いてソース・コードから生成することが可能である。別の例として、機械コードは、インタプリタによる実行と同時的にソース・コードから生成することが可能である。他の手法もまた使用可能である。ハードウェアとして具体化される場合、それぞれのブロックは、指定される一つ又は複数の論理機能を実装するために、回路又はいくつかの相互接続された回路を表現することが可能である。
【0083】
シーケンス図は、実行の具体的な順序を示しているが、実行の順は、描かれているものとは異なっていてもよいことを理解されたい。例えば、二つ以上のブロックの実行の順序は、示されている順序に対してスクランブルされてもよい。また、連続して示される二つ以上のブロックは、同時的に、又は部分的に同時に実行することが可能である。更には、いくつかの実施形態では、シーケンス図に示されるブロックのうちの一つ又は複数は、スキップ又は省略することが可能である。加えて、実用性の向上、課金、性能測定、又はトラブルシューティング支援の提供などの目的で、あらゆる数のカウンタ、状態変数、警告セマフォ、又はメッセージが、本明細書で説明される論理フローに追加される場合がある。すべてのそのような変形例は、本開示の範囲内であることを理解されたい。
【0084】
また、ソフトウェア又はコードを含む、本明細書で説明されるあらゆるロジック又はアプリケーションは、コンピュータ・システム又は他のシステム内のプロセッサなどの命令実行システムによる、又はそれと組み合わせた使用に向けて、任意の非一時的なコンピュータ可読媒体として具体化することが可能である。この意味で、ロジックは、コンピュータ可読媒体からフェッチされ、命令実行システムによって実行されることが可能な、命令及び宣言を含んでいるステートメントを含むことが可能である。本開示のコンテキストでは、「コンピュータ可読媒体」は、命令実行システムによる、又はそれと組み合わせた使用に向けて、本明細書で説明されるロジック又はアプリケーションを、含むこと、記憶すること、又は維持することが可能な、あらゆる媒体であることができる。その上、複数のコンピューティング・デバイスにまたがって配置される分散型のコンピュータ可読媒体の集合(例えば、ストレージ・エリア・ネットワーク又は分散型若しくはクラスタ化されたファイルシステム若しくはデータベース)はまた、集合的に、単一の非一時的なコンピュータ可読媒体とも考えることができる。
【0085】
コンピュータ可読媒体は、磁気、光学、又は半導体の媒体など、多くの物理的媒体のいずれかを含むことが可能である。適切なコンピュータ可読媒体のより具体的な例としては、限定はしないが、磁気テープ、磁気フロッピ・ディスケット、磁気ハード・ドライブ、メモリ・カード、ソリッドステート・ドライブ、USBフラッシュ・ドライブ、又は光学ディスクが挙げられよう。また、コンピュータ可読媒体は、静的ランダム・アクセス・メモリ(SRAM)及び動的ランダム・アクセス・メモリ(DRAM)又は磁気的なランダム・アクセス・メモリ(MRAM)を含む、ランダム・アクセス・メモリ(RAM)であることができる。加えて、コンピュータ可読媒体は、読み取り専用メモリ(ROM)、プログラム可能読み取り専用メモリ(PROM)、消去可能プログラム可能読み取り専用メモリ(EPROM)、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)、又は他のタイプのメモリ・デバイスであることが可能である。
【0086】
更には、本明細書で説明される、あらゆるロジック又はアプリケーションは、多様な方法で実装され、構造化することが可能である。例えば、説明される一つ又は複数のアプリケーションは、単一のアプリケーションの、モジュール又はコンポーネントとして実装することが可能である。更には、本明細書で説明される一つ又は複数のアプリケーションは、共有されたコンピューティング・デバイス若しくは別個のコンピューティング・デバイス、又はそれらの組合せにおいて、実行することが可能である。例えば、本明細書で説明される複数のアプリケーションは、同一のコンピューティング・デバイスにおいて、又は同一のコンピューティング環境103内の複数のコンピューティング・デバイスにおいて、実行することが可能である。
【0087】
「X、Y、又はZのうちの少なくとも一つ」という言い回しなどの、選言的な語句は、そうではないと明言されない限り、項目、用語などがX、Y、若しくはZのいずれかであり得る、又はそのいずれか(例えば、X、Y、又はZ)の組合せであり得ることを提示するために一般的に使用されるようなコンテキストで、理解される。故に、そのような選言的な語句は、一般的に、特定の実施形態が、Xのうちの少なくとも一つ、Yのうちの少なくとも一つ、又はZのうちの少なくとも一つのそれぞれが存在するよう要求していることを含意するよう意図されておらず、またそのように含意してはならない。
【0088】
本開示の実施形態の例は、次のように説明することができる。
【0089】
実施形態1
プロセッサ、メモリ、及び暗号化コプロセッサを含むコンピューティング・デバイスと、メモリに記憶された機械可読命令であって、プロセッサによって実行されると、コンピューティング・デバイスに、少なくとも、ネットワークを介してサービスから暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化コプロセッサによって、暗号化されたコードを復号することと、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、暗号文を、ネットワークを介してサービスに送ることとを行わせる、機械可読命令とを備える、システム。
【0090】
実施形態2
暗号化コプロセッサが、Trusted Platform Module(TPM)標準の、あるバージョンに準拠する、実施形態1に記載のシステム。
【0091】
実施形態3
暗号化コプロセッサが、暗号化されたコードを復号する前に、コンピューティング・デバイスの状態を検証するように構成される、実施形態1に記載のシステム。
【0092】
実施形態4
サービスが、あるエンティティによって運用され、暗号化アルゴリズムが、エンティティにより好まれる暗号化アルゴリズムである、実施形態1に記載のシステム。
【0093】
実施形態5
暗号化コプロセッサが、復号されたコードを実行する前に、暗号化されたコードが、所定の複数の信頼できるエンティティからの、あるエンティティによって署名されることを検証するように構成される、実施形態1に記載のシステム。
【0094】
実施形態6
暗号化されたコードが、暗号化されたコードを生成したエンティティに関連付けられた暗号化コプロセッサのルート鍵を使用して復号される、実施形態1に記載のシステム。
【0095】
実施形態7
サービスが、あるエンティティに関連付けられる第1のサービス及び第2のサービスを含み、暗号化されたコードが第1のサービスから受信され、暗号文が第2のサービスに送られる、実施形態1に記載のシステム。
【0096】
実施形態8
暗号化コプロセッサが、コンピューティング・デバイス内のファームウェアに実装され、データがインターフェースを介してコンピューティング・デバイスのセキュアな要素から暗号化コプロセッサに転送されて、暗号化コプロセッサによる暗号化されたコードの復号を可能にする、実施形態1に記載のシステム。
【0097】
実施形態9
暗号化コプロセッサが、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、暗号化アルゴリズムが、所定の複数の暗号化アルゴリズムには含まれない、実施形態1に記載のシステム。
【0098】
実施形態10
暗号化コプロセッサが、信頼の基点として振る舞い、暗号化アルゴリズムをコンピューティング・デバイスのセキュアな要素に転送する前に、暗号化アルゴリズムを検証するように構成される、実施形態1に記載のシステム。
【0099】
実施形態11
暗号化コプロセッサによって、暗号化アルゴリズムを実装する暗号化されたコードを、クライアント・アプリケーションから受信することと、暗号化コプロセッサによって、暗号化されたコードを復号することと、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化されたデータを復号すること、又は、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号文を生成することを含む、方法。
【0100】
実施形態12
暗号化コプロセッサによって、復号されたコードを実行する前に、暗号化されたコードが、所定の複数の信頼できるエンティティからの、あるエンティティによって署名されることを検証することを更に含む、実施形態11に記載の方法。
【0101】
実施形態13
暗号化されたコードが、クライアント・アプリケーションによって、あるエンティティによって運用されるサービスから受信され、クライアント・アプリケーションが、エンティティに関連付けられる、実施形態11に記載の方法。
【0102】
実施形態14
暗号化されたコードを復号することが、暗号化されたコードを、エンティティに関連付けられる暗号化コプロセッサのルート鍵を使用して復号することを更に含む、実施形態13に記載の方法。
【0103】
実施形態15
暗号化されたデータ及び暗号化されたコードが、暗号化アルゴリズムの識別子を含まない、実施形態13に記載の方法。
【0104】
実施形態16
暗号化コプロセッサが、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、暗号化アルゴリズムが、所定の複数の暗号化アルゴリズムには含まれない、実施形態13に記載の方法。
【0105】
実施形態17
機械可読命令を含む非一時的なコンピュータ可読媒体であって、機械可読命令は第1のコンピューティング・デバイスのプロセッサによって実行されると、第1のコンピューティング・デバイスに、少なくとも、暗号化アルゴリズムを暗号化して、暗号化されたコードを作成することと、暗号化されたコードを第2のコンピューティング・デバイスに送ることと、暗号化されたコードからの暗号化アルゴリズムで生成された暗号文を第2のコンピューティング・デバイスから受信することと、暗号文を暗号化アルゴリズムで復号することとを行わせる、非一時的なコンピュータ可読媒体。
【0106】
実施形態18
暗号化されたコードが、暗号化されたコードを復号するための暗号鍵用の識別子と共に第2のコンピューティング・デバイスに送られる、実施形態17に記載の非一時的なコンピュータ可読媒体。
【0107】
実施形態19
暗号化されたコードが、暗号化アルゴリズムの識別子を含まない、実施形態17に記載の非一時的なコンピュータ可読媒体。
【0108】
実施形態20
暗号化されたコードが、暗号化コプロセッサ用の標準によってサポートされる所定の複数の暗号化アルゴリズムのうちの一つを使用して暗号化される、実施形態17に記載の非一時的なコンピュータ可読媒体。
【0109】
実施形態21
プロセッサ、及びメモリを含むコンピューティング・デバイスと、メモリに記憶された機械可読命令であって、プロセッサによって実行されると、コンピューティング・デバイスに、少なくとも、ネットワークを介してサービスから暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化されたコードを、コンピューティング・デバイスの信頼できる実行環境内で実行されるアプリケーションに提供することと、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文をアプリケーションから取得することとを行わせる、機械可読命令とを備える、システム。
【0110】
実施形態22
暗号文が、コンピューティング・デバイスの信頼できない実行環境内で実行される別のアプリケーションによって取得される、実施形態21に記載のシステム。
【0111】
実施形態23
機械可読命令が、コンピューティング・デバイスに、少なくとも、他のアプリケーションによって、暗号文を、ネットワークを介してサービスに送ることを更に行わせる、実施形態22に記載のシステム。
【0112】
実施形態24
暗号化されたコードが、コンピューティング・デバイスの信頼できる実行環境とコンピューティング・デバイスの信頼できない実行環境との間のインターフェースを介して、アプリケーションに提供される、実施形態21に記載のシステム。
【0113】
実施形態25
信頼できる実行環境が、暗号化コプロセッサを含み、機械可読命令が、コンピューティング・デバイスに、少なくとも、暗号化されたコードを復号する前に、暗号化コプロセッサによって、暗号化されたコードの署名、及びコンピューティング・デバイスの状態を検証することを更に行わせる、実施形態21に記載のシステム。
【0114】
実施形態26
信頼できる実行環境が、暗号化コプロセッサを含み、機械可読命令が、コンピューティング・デバイスに、少なくとも、暗号化コプロセッサによって、アプリケーションの署名を検証することを更に行わせる、実施形態21に記載のシステム。
【0115】
実施形態27
信頼できる実行環境が、暗号化コプロセッサを含み、暗号化アルゴリズムが、暗号化コプロセッサによってサポートされる所定の複数の暗号化アルゴリズムに含まれない、実施形態21に記載のシステム。
【0116】
実施形態28
信頼できる実行環境が、プロセッサのセキュアな仮想プロセッサ上で実行されるセキュアなオペレーティング・システムを含む、実施形態21に記載のシステム。
【0117】
実施形態29
暗号文が、決済取引に相当し、暗号文が、限定使用の決済クリデンシャルを含む、実施形態21に記載のシステム。
【0118】
実施形態30
信頼できる実行環境が、暗号化されたコードを復号するために使用される鍵を記憶し、鍵はサービスを運用するエンティティに関連付けられる、実施形態21に記載のシステム。
【0119】
実施形態31
信頼できない実行環境内で実行される第1のアプリケーションによって、暗号化されたデータ及び暗号化アルゴリズムを実装する暗号化されたコードを、ネットワークを介して受信することと、第1のアプリケーションによって、暗号化されたデータ及び暗号化されたコードを、信頼できる実行環境内で実行される第2のアプリケーションに転送することと、第2のアプリケーションによって、暗号化されたコードを復号することと、第2のアプリケーションによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化されたデータを復号することと、第1のアプリケーションによって、暗号化されたデータから復号された情報を、第2のアプリケーションから受信することとを含む、方法。
【0120】
実施形態32
暗号化されたコードを、インターフェースを使用して、第2のアプリケーションから暗号化コプロセッサに転送することと、暗号化コプロセッサを使用して暗号化されたコードの署名を検証することとを更に含む、実施形態31に記載の方法。
【0121】
実施形態33
復号されたコードを実行することが、暗号化コプロセッサによって実施されない、実施形態32に記載の方法。
【0122】
実施形態34
暗号化されたコードを復号することが、暗号化コプロセッサによって実施される、実施形態32に記載の方法。
【0123】
実施形態35
暗号化コプロセッサが、所定の複数の暗号化アルゴリズムを実装するコードを含み、暗号化アルゴリズムが、所定の複数の暗号化アルゴリズムから実行される、実施形態32に記載の方法。
【0124】
実施形態36
暗号化されたコードが、あるエンティティによって運用されるサービスから受信され、第1のアプリケーション及び第2のアプリケーションが、エンティティに関連付けられる、実施形態31に記載の方法。
【0125】
実施形態37
機械可読命令を含む非一時的なコンピュータ可読媒体であって、機械可読命令はコンピューティング・デバイスのプロセッサの信頼できる実行環境内で実行されると、コンピューティング・デバイスに、少なくとも、プロセッサの信頼できない実行環境へのインターフェースを介して暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化されたコードを復号することと、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、暗号文を、インターフェースを介して返すこととを行わせる、非一時的なコンピュータ可読媒体。
【0126】
実施形態38
コンピューティング・デバイスが、暗号化コプロセッサと、機械可読命令であって、コンピューティング・デバイスに、少なくとも、暗号化コプロセッサを使用して暗号化されたコードの署名を検証すること、又は暗号化アルゴリズムを信頼できる実行環境に転送する前に、信頼の基点として暗号化アルゴリズムを検証することを更に行わせる、機械可読命令とを更に含む、実施形態37に記載の非一時的なコンピュータ可読媒体。
【0127】
実施形態39
信頼できる実行環境が、プロセッサのセキュアな仮想プロセッサ上で実行されるセキュアなオペレーティング・システムを含む、実施形態37に記載の非一時的なコンピュータ可読媒体。
【0128】
実施形態40
暗号文が、決済取引に相当し、暗号文が、限定使用の決済クリデンシャルを含む、実施形態37に記載の非一時的なコンピュータ可読媒体。
【0129】
本開示の上述の実施形態は、本開示の原理を明瞭に理解するために説明された実装形態の可能な例に過ぎないことが強調されるべきである。本開示の思想及び原理から実質的に逸脱することなく上述の実施形態に対して多くの変形及び変更が成され得る。すべてのそのような変形及び変更は、本明細書において本開示の範囲内に含められ、以下の特許請求の範囲によって保護されることが意図されている。