JP2022551586A - Execution of entity-specific cryptographic code in cryptographic coprocessors - Google Patents

Execution of entity-specific cryptographic code in cryptographic coprocessors Download PDF

Info

Publication number
JP2022551586A
JP2022551586A JP2022520312A JP2022520312A JP2022551586A JP 2022551586 A JP2022551586 A JP 2022551586A JP 2022520312 A JP2022520312 A JP 2022520312A JP 2022520312 A JP2022520312 A JP 2022520312A JP 2022551586 A JP2022551586 A JP 2022551586A
Authority
JP
Japan
Prior art keywords
cryptographic
encrypted code
coprocessor
code
encrypted
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.)
Granted
Application number
JP2022520312A
Other languages
Japanese (ja)
Other versions
JP7385025B2 (en
Inventor
ヴァエル イブラヒム,
マニーシュ デリワラ,
マーニク ビシュワス,
スブラマニヤム ヴィシュヌヴァジハラ,
アンドリュー レイ,
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.)
American Express Travel Related Services Co Inc
Original Assignee
American Express Travel Related Services Co Inc
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
Priority claimed from US16/669,002 external-priority patent/US20210111901A1/en
Priority claimed from US16/668,973 external-priority patent/US11341280B2/en
Application filed by American Express Travel Related Services Co Inc filed Critical American Express Travel Related Services Co Inc
Publication of JP2022551586A publication Critical patent/JP2022551586A/en
Application granted granted Critical
Publication of JP7385025B2 publication Critical patent/JP7385025B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/126Applying verification of the received information the source of the received data
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • 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

Abstract

暗号化コプロセッサにおけるエンティティ固有の暗号化コードの実行のための、様々な実施形態が開示される。一実施形態では、暗号化アルゴリズムを実装する暗号化されたコードは、ネットワークを介してサービスから受信される。暗号化コプロセッサは、暗号化されたコードを復号する。暗号化コプロセッサは、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成する。暗号文は、ネットワークを介してサービスに送られる。Various embodiments are disclosed for execution of entity-specific cryptographic code in cryptographic coprocessors. In one embodiment, encrypted code implementing an encryption algorithm is received from a service over a network. The encryption coprocessor decrypts the encrypted code. A cryptographic coprocessor executes the decrypted code to produce ciphertext containing information encrypted using an encryption algorithm. The ciphertext is sent over the network to the service.

Description

関連出願の相互参照
本出願は、「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を付された同時係属の米国仮特許出願に対する優先権及びその利益を主張するものであり、これらはその全体が参照により本明細書に組み込まれる。
CROSS REFERENCE TO RELATED APPLICATIONS This application is a co-pending U.S. patent entitled "EXECUTING ENTITY--SPECIFIC CRYPTOGRAPHIC CODE IN A CRYPTOGRAPHIC COPROCESSOR" filed on Oct. 30, 2019 and assigned application number 16/668,973. Claiming priority to and benefit from application Ser. No. 62/914,275, which claims priority to and the benefit of, co-pending US provisional patent application No. 62/914,275, which is hereby incorporated by reference in its entirety.

本出願はまた、「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を付された同時係属の米国仮特許出願に対する優先権及びその利益を主張するものであり、これらはその全体が参照により本明細書に組み込まれる。 This application is also a co-pending U.S. Provisional Patent Application entitled "EXECUTING ENTITY-SPECIFIC CRYPTOGRAPHIC CODE IN A TRUSTED EXECUTION ENVIRONMENT," filed Oct. 30, 2019 and assigned application number 16/669,002. 16/669,002, entitled "EXECUTING ENTITY--SPECIFIC CRYPTOGRAPHIC CODE IN A TRUSTED EXECUTION ENVIRONMENT," filed Oct. 11, 2019, and filing no. No. 1/914,272, which is hereby incorporated by reference in its entirety.

多種多様な暗号化アルゴリズムが利用可能である。一部の暗号化アルゴリズムは対称であり、これはプレーンテキストを暗号化すること、及び暗号文を復号することの両方に、同一鍵が使用されることを意味する。他の暗号化アルゴリズムは、非対称であり、プレーンテキストを暗号化すること(例えば、公開鍵)、及び暗号文を復号すること(例えば、プライベート鍵)に、異なる関連鍵が使用されることを意味する。計算能力が高度化するにつれ、かつてセキュアであると考えられていた一部の暗号化アルゴリズムが、今ではセキュアではないと考えられている。例えば、鍵長が56ビットのデータ暗号化標準(DES)は、かつてはセキュアであると考えられた。しかしながら、今では総当たり攻撃によって容易に破られる。更には、バックドア及び/又は他の弱点は、すべての鍵の組合せを完全に総当たり攻撃することなくセキュアではないものにする暗号化アルゴリズムにおいて発見される場合がある。 A wide variety of encryption algorithms are available. Some encryption algorithms are symmetric, meaning that the same key is used both to encrypt plaintext and to decrypt ciphertext. Other encryption algorithms are asymmetric, meaning that different associated keys are used to encrypt plaintext (e.g. public key) and decrypt ciphertext (e.g. private key). do. With the increasing sophistication of computing power, some cryptographic algorithms that were once considered secure are now considered insecure. For example, the Data Encryption Standard (DES) with a key length of 56 bits was once considered secure. However, it is now easily defeated by brute force attacks. Furthermore, backdoors and/or other weaknesses may be found in encryption algorithms that render all key combinations insecure without a full brute force attack.

金融機関、決済イシュア、及び高価値データを扱う他の組織は、どの暗号化アルゴリズムが好ましいかに関して、それぞれ自分自身の判断に達する場合がある。また、それらの個々に好まれる暗号化アルゴリズムは、新たに公開される脆弱性に鑑みて、時間が経過するにつれ変わる場合がある。その上、どの暗号化アルゴリズムが使用されるかを公開しないことに、セキュリティ上の価値がある。 Financial institutions, payment issuers, and other organizations dealing with high-value data may each come to their own judgment as to which encryption algorithms are preferable. Also, their individually preferred encryption algorithms may change over time in light of newly disclosed vulnerabilities. Moreover, there is security value in not exposing which encryption algorithm is used.

プロセッサ、メモリ、及び暗号化コプロセッサを含むコンピューティング・デバイスと、メモリに記憶された機械可読命令であって、プロセッサによって実行されると、コンピューティング・デバイスに、少なくとも、ネットワークを介してサービスから暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化コプロセッサによって、暗号化されたコードを復号することと、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、暗号文を、ネットワークを介してサービスに送ることとを行わせる、機械可読命令とを備えるシステムの、様々な実装形態が開示される。システムのいくつかの実装形態では、暗号化コプロセッサは、Trusted Platform Module(TPM)標準の、あるバージョンに準拠する。システムのいくつかの実装形態では、暗号化コプロセッサは、暗号化されたコードを復号する前に、コンピューティング・デバイスの状態を検証するように構成される。システムのいくつかの実装形態では、サービスは、あるエンティティによって運用され、暗号化アルゴリズムは、エンティティにより好まれる暗号化アルゴリズムである。システムのいくつかの実装形態では、暗号化コプロセッサは、復号されたコードを実行する前に、暗号化されたコードが、所定の複数の信頼できるエンティティからの、あるエンティティによって署名されることを検証するように構成される。システムのいくつかの実装形態では、暗号化されたコードは、暗号化されたコードを生成したエンティティに関連付けられた暗号化コプロセッサのルート鍵を使用して復号される。システムのいくつかの実装形態では、サービスは、あるエンティティに関連付けられる第1のサービス及び第2のサービスを含み、暗号化されたコードは第1のサービスから受信され、暗号文は第2のサービスに送られる。システムのいくつかの実装形態では、暗号化コプロセッサは、コンピューティング・デバイス内のファームウェアに実装され、データはインターフェースを介してコンピューティング・デバイスのセキュアな要素から暗号化コプロセッサに転送されて、暗号化コプロセッサによる暗号化されたコードの復号を可能にする。システムのいくつかの実装形態では、暗号化コプロセッサは、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、暗号化アルゴリズムは、所定の複数の暗号化アルゴリズムには含まれない。システムのいくつかの実装形態では、暗号化コプロセッサは、信頼の基点(Root of Trsut)として振る舞い、暗号化アルゴリズムをコンピューティング・デバイスのセキュアな要素に転送する前に、暗号化アルゴリズムを検証するように構成される。 A computing device that includes a processor, a memory, and a cryptographic coprocessor, and machine-readable instructions stored in the memory that, when executed by the processor, cause the computing device to perform at least a service over a network. receiving encrypted code implementing an encryption algorithm; decrypting the encrypted code by an encryption coprocessor; executing the decrypted code by an encryption coprocessor to perform encryption; Various implementations of a system comprising machine-readable instructions that cause ciphertext containing information encrypted using an encryption algorithm to be generated, and the ciphertext to be sent over a network to a service. A form is disclosed. In some implementations of the system, the cryptographic coprocessor complies with a version of the Trusted Platform Module (TPM) standard. In some implementations of the system, the cryptographic coprocessor is configured to verify the state of the computing device prior to decrypting the encrypted code. In some implementations of the system, the service is operated by an entity and the encryption algorithm is the encryption algorithm preferred by the entity. In some implementations of the system, the cryptographic coprocessor ensures that the encrypted code is signed by an entity from a predetermined plurality of trusted entities before executing the decrypted code. configured to validate. In some implementations of the system, the encrypted code is decrypted using the cryptographic coprocessor's root key associated with the entity that generated the encrypted code. In some implementations of the system, the services include a first service and a second service associated with an entity, wherein the encrypted code is received from the first service and the ciphertext is received from the second service. sent to In some implementations of the system, the cryptographic coprocessor is implemented in firmware within the computing device and data is transferred from the secure element of the computing device to the cryptographic coprocessor via an interface to Allows decryption of encrypted code by a cryptographic coprocessor. In some implementations of the system, the cryptographic coprocessor is configured to support selection from a plurality of predetermined cryptographic algorithms for performing cryptographic operations, the cryptographic algorithms being a plurality of predetermined cryptographic algorithms. Not included in encryption algorithms. In some implementations of the system, the Cryptographic Coprocessor acts as a Root of Trust, validating cryptographic algorithms before forwarding them to the secure elements of the computing device. configured as

暗号化コプロセッサによって、暗号化アルゴリズムを実装する暗号化されたコードを、クライアント・アプリケーションから受信することと、暗号化コプロセッサによって、暗号化されたコードを復号することと、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化されたデータを復号すること、又は、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号文を生成することを含む方法の、様々な実装形態が開示される。方法のいくつかの実装形態では、方法は、暗号化コプロセッサによって、復号されたコードを実行する前に、暗号化されたコードが、所定の複数の信頼できるエンティティからの、あるエンティティによって署名されることを検証することを更に含む。方法のいくつかの実装形態では、暗号化されたコードは、クライアント・アプリケーションによって、あるエンティティによって運用されるサービスから受信され、クライアント・アプリケーションは、エンティティに関連付けられる。方法のいくつかの実装形態では、暗号化されたコードを復号することは、暗号化されたコードを、エンティティに関連付けられる暗号化コプロセッサのルート鍵を使用して復号することを更に含む。方法のいくつかの実装形態では、暗号化されたデータ及び暗号化されたコードは、暗号化アルゴリズムの識別子を含まない。方法のいくつかの実装形態では、暗号化コプロセッサは、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、暗号化アルゴリズムは、所定の複数の暗号化アルゴリズムには含まれない。方法のいくつかの実装形態では、暗号化コプロセッサは、信頼の基点として振る舞い、暗号化アルゴリズムをコンピューティング・デバイスのセキュアな要素に転送する前に、暗号化アルゴリズムを検証するように構成される。 receiving encrypted code implementing an encryption algorithm from a client application, by a cryptographic coprocessor; decrypting the encrypted code, by a cryptographic coprocessor; , executing the decrypted code to decrypt the encrypted data using the encryption algorithm, or by the encryption coprocessor executing the decrypted code and using the encryption algorithm. Various implementations of a method are disclosed that include generating a ciphertext using a ciphertext. In some implementations of the method, the method ensures that the encrypted code is signed by an entity from a predetermined plurality of trusted entities prior to executing the decrypted code by the cryptographic coprocessor. verifying that the In some implementations of the method, the encrypted code is received by a client application from a service operated by an entity, the client application being associated with the entity. In some implementations of the method, decrypting the encrypted code further comprises decrypting the encrypted code using a root key of an encryption coprocessor associated with the entity. In some implementations of the method, the encrypted data and the encrypted code do not include an encryption algorithm identifier. In some implementations of the method, the cryptographic coprocessor is configured to support selection from a predetermined plurality of cryptographic algorithms for performing cryptographic operations, the cryptographic algorithms being a predetermined plurality of cryptographic algorithms. Not included in encryption algorithms. In some implementations of the method, the cryptographic coprocessor acts as a root of trust and is configured to validate the cryptographic algorithms prior to forwarding the cryptographic algorithms to the secure element of the computing device. .

命令を含むコンピュータ・プログラムであって、命令は、プログラムが第1のコンピューティング・デバイスによって実行されると、第1のコンピューティング・デバイスに、少なくとも、暗号化アルゴリズムを暗号化して、暗号化されたコードを作成することと、暗号化されたコードを第2のコンピューティング・デバイスに送ることと、暗号化されたコードからの暗号化アルゴリズムで生成された暗号文を第2のコンピューティング・デバイスから受信することと、暗号文を暗号化アルゴリズムで復号することとを行わせる、コンピュータ・プログラムの、様々な実装形態が開示される。コンピュータ・プログラムのいくつかの実装形態では、暗号化されたコードは、暗号化されたコードを復号するための暗号鍵用の識別子と共に第2のコンピューティング・デバイスに送られる。コンピュータ・プログラムのいくつかの実装形態では、暗号化されたコードは、暗号化アルゴリズムの識別子を含まない。コンピュータ・プログラムのいくつかの実装形態では、暗号化されたコードは、暗号化コプロセッサ用の標準によってサポートされる所定の複数の暗号化アルゴリズムのうちの一つを使用して暗号化される。 A computer program comprising instructions, the instructions being encrypted by at least an encryption algorithm to the first computing device when the program is executed by the first computing device. sending the encrypted code to a second computing device; and sending ciphertext generated by an encryption algorithm from the encrypted code to the second computing device. Various implementations of a computer program are disclosed that cause receiving from and decrypting ciphertext with an encryption algorithm. In some implementations of the computer program, the encrypted code is sent to a second computing device along with an identifier for a cryptographic key to decrypt the encrypted code. In some implementations of the computer program, the encrypted code does not include an encryption algorithm identifier. In some implementations of computer programs, the encrypted code is encrypted using one of a plurality of predetermined encryption algorithms supported by standards for cryptographic coprocessors.

プロセッサ、及びメモリを含むコンピューティング・デバイスと、メモリに記憶された機械可読命令であって、プロセッサによって実行されると、コンピューティング・デバイスに、少なくとも、ネットワークを介してサービスから暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化されたコードを、コンピューティング・デバイスの信頼できる実行環境内で実行されるアプリケーションに提供することと、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文をアプリケーションから取得することとを行わせる、機械可読命令とを備えるシステムの、様々な実装形態が開示される。システムのいくつかの実装形態では、暗号文は、コンピューティング・デバイスの信頼できない実行環境内で実行される別のアプリケーションによって取得される。システムのいくつかの実装形態では、機械可読命令は、コンピューティング・デバイスに、少なくとも、他のアプリケーションによって、暗号文を、ネットワークを介してサービスに送ることを更に行わせる。システムのいくつかの実装形態では、暗号化されたコードは、コンピューティング・デバイスの信頼できる実行環境とコンピューティング・デバイスの信頼できない実行環境との間のインターフェースを介して、アプリケーションに提供される。システムのいくつかの実装形態では、信頼できる実行環境は、暗号化コプロセッサを含み、機械可読命令が、コンピューティング・デバイスに、少なくとも、暗号化されたコードを復号する前に、暗号化コプロセッサによって、暗号化されたコードの署名、及びコンピューティング・デバイスの状態を検証することを更に行わせる。システムのいくつかの実装形態では、信頼できる実行環境は、暗号化コプロセッサを含み、機械可読命令が、コンピューティング・デバイスに、少なくとも、暗号化コプロセッサによって、アプリケーションの署名を検証することを更に行わせる。システムのいくつかの実装形態では、信頼できる実行環境は、暗号化コプロセッサを含み、暗号化アルゴリズムは、暗号化コプロセッサによってサポートされる所定の複数の暗号化アルゴリズムに含まれない。システムのいくつかの実装形態では、信頼できる実行環境は、プロセッサのセキュアな仮想プロセッサ上で実行されるセキュアなオペレーティング・システムを含む。システムのいくつかの実装形態では、暗号文は、決済取引に相当し、暗号文は、限定使用の決済クリデンシャルを含む。システムのいくつかの実装形態では、信頼できる実行環境は、暗号化されたコードを復号するために使用される鍵を記憶し、鍵はサービスを運用するエンティティに関連付けられる。 A computing device including a processor and memory, and machine-readable instructions stored in the memory that, when executed by the processor, cause the computing device to implement at least a cryptographic algorithm from a service over a network. providing the encrypted code to an application executing within the trusted execution environment of the computing device; encrypting the encrypted code using the encryption algorithm; Various implementations are disclosed of a system comprising machine-readable instructions for obtaining, from an application, a ciphertext containing information obtained from the machine. In some implementations of the system, the ciphertext is obtained by another application executing within the untrusted execution environment of the computing device. In some implementations of the system, the machine-readable instructions further cause the computing device to at least send the ciphertext over the network to the service by the other application. In some implementations of the system, the encrypted code is provided to the application via an interface between the trusted execution environment of the computing device and the untrusted execution environment of the computing device. In some implementations of the system, the trusted execution environment includes a cryptographic coprocessor, and the machine-readable instructions are transmitted to the computing device at least prior to decrypting the encrypted code. to further verify the signature of the encrypted code and the state of the computing device. In some implementations of the system, the trusted execution environment includes a cryptographic coprocessor, and the machine-readable instructions further instruct the computing device to at least verify a signature of the application by the cryptographic coprocessor. let it happen In some implementations of the system, the trusted execution environment includes a cryptographic coprocessor and the cryptographic algorithm is not included in a predetermined plurality of cryptographic algorithms supported by the cryptographic coprocessor. In some implementations of the system, the trusted execution environment includes a secure operating system running on secure virtual processors of the processor. In some implementations of the system, the ciphertext corresponds to a payment transaction, and the ciphertext includes limited-use payment credentials. In some implementations of the system, the trusted execution environment stores keys used to decrypt encrypted code, the keys being associated with the entity operating the service.

信頼できない実行環境内で実行される第1のアプリケーションによって、暗号化されたデータ及び暗号化アルゴリズムを実装する暗号化されたコードを、ネットワークを介して受信することと、第1のアプリケーションによって、暗号化されたデータ及び暗号化されたコードを、信頼できる実行環境内で実行される第2のアプリケーションに転送することと、第2のアプリケーションによって、暗号化されたコードを復号することと、第2のアプリケーションによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化されたデータを復号することと、第1のアプリケーションによって、暗号化されたデータから復号された情報を、第2のアプリケーションから受信することとを含む方法の、様々な実装形態が開示される。方法のいくつかの実装形態では、方法は、暗号化されたコードを、インターフェースを使用して、第2のアプリケーションから暗号化コプロセッサに転送することと、暗号化コプロセッサを使用して暗号化されたコードの署名を検証することとを更に含む。方法のいくつかの実装形態では、復号されたコードを実行することは、暗号化コプロセッサによって実施されない。方法のいくつかの実装形態では、暗号化されたコードを復号することは、暗号化コプロセッサによって実施される。方法のいくつかの実装形態では、暗号化コプロセッサは、所定の複数の暗号化アルゴリズムを実装するコードを含み、暗号化アルゴリズムは、所定の複数の暗号化アルゴリズムから実行される。方法のいくつかの実装形態では、暗号化されたコードは、あるエンティティによって運用されるサービスから受信され、第1のアプリケーション及び第2のアプリケーションは、エンティティに関連付けられる。 receiving over a network encrypted data and encrypted code implementing an encryption algorithm by a first application executing within an untrusted execution environment; forwarding the encrypted data and the encrypted code to a second application executing within the trusted execution environment; decrypting the encrypted code by the second application; executing the decrypted code by the application to decrypt the encrypted data using the encryption algorithm; and information decrypted from the encrypted data by the first application to the Various implementations of a method are disclosed that include receiving from two applications. In some implementations of the method, the method comprises transferring encrypted code from the second application to the cryptographic coprocessor using the interface; encrypting using the cryptographic coprocessor; and verifying the signed code. In some implementations of the method, executing the decrypted code is not performed by the cryptographic coprocessor. In some implementations of the method, decrypting the encrypted code is performed by a cryptographic coprocessor. In some implementations of the method, the cryptographic coprocessor includes code that implements a predetermined plurality of cryptographic algorithms, the cryptographic algorithms being performed from the predetermined plurality of cryptographic algorithms. In some implementations of the method, the encrypted code is received from a service operated by an entity, and the first application and the second application are associated with the entity.

命令を含むコンピュータ・プログラムであって、命令は、コンピューティング・デバイス内の信頼できる実行環境内で実行されると、コンピューティング・デバイスに、少なくとも、プロセッサの信頼できない実行環境へのインターフェースを介して暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化されたコードを復号することと、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、暗号文を、インターフェースを介して返すこととを行わせる、コンピュータ・プログラムの、様々な実装形態が開示される。コンピュータ・プログラムのいくつかの実装形態では、コンピューティング・デバイスは、暗号化コプロセッサと、命令であって、コンピューティング・デバイスに、少なくとも、暗号化コプロセッサを使用して暗号化されたコードの署名を検証すること、又は暗号化アルゴリズムを信頼できる実行環境に転送する前に、信頼の基点として暗号化アルゴリズムを検証することを更に行わせる、命令とを更に含む。コンピュータ・プログラムのいくつかの実装形態では、信頼できる実行環境は、プロセッサのセキュアな仮想プロセッサ上で実行されるセキュアなオペレーティング・システムを含む。コンピュータ・プログラムのいくつかの実装形態では、暗号文は、決済取引に相当し、暗号文は、限定使用の決済クリデンシャルを含む。 A computer program comprising instructions that, when executed within a trusted execution environment within a computing device, communicates to the computing device at least via an interface to the untrusted execution environment of a processor Receiving encrypted code implementing an encryption algorithm, decrypting the encrypted code, and executing the decrypted code to retrieve information encrypted using the encryption algorithm Various implementations of a computer program that causes generating a ciphertext containing and returning the ciphertext via an interface are disclosed. In some implementations of the computer program, the computing device comprises a cryptographic coprocessor and the instructions for transmitting to the computing device at least code encrypted using the cryptographic coprocessor. further comprising verifying the signature or verifying the encryption algorithm as a root of trust prior to transferring the encryption algorithm to the trusted execution environment. In some computer program implementations, the trusted execution environment includes a secure operating system executing on a secure virtual processor of the processor. In some implementations of the computer program, the ciphertext corresponds to a payment transaction, and the ciphertext includes limited-use payment credentials.

本開示の多くの態様は、以下の図面を参照すると、より良く理解することができる。図面の構成要素は、必ずしも縮尺通りではなく、代わりに本開示の原理を明確に図示することに重点が置かれている。更には、図面では同様の符号は、いくつかの図を通じて対応する部分を指している。 Many aspects of the disclosure can be better understood with reference to the following drawings. The components of the figures are not necessarily to scale, emphasis instead being placed on clearly illustrating the principles of the disclosure. Further, like reference numerals in the drawings refer to corresponding parts throughout the several views.

本開示の様々な実施形態による、ネットワーク環境の図である。1 is a diagram of a network environment, according to various embodiments of the present disclosure; FIG. 様々な実施形態による、図1のネットワーク環境のクライアント・デバイスの図である。2 is a diagram of a client device in the network environment of FIG. 1, according to various embodiments; FIG. 様々な実施形態による、図1のネットワーク環境のクライアント・デバイスの図である。2 is a diagram of a client device in the network environment of FIG. 1, according to various embodiments; FIG. 本開示の様々な実施形態による、図2Aのクライアント・デバイスを有する図1のネットワーク環境に実装された機能性の一例を図示するシーケンス図である。2B is a sequence diagram illustrating an example of functionality implemented in the network environment of FIG. 1 with the client device of FIG. 2A, according to various embodiments of the present disclosure; FIG. 本開示の様々な実施形態による、図2Aのクライアント・デバイスを有する図1のネットワーク環境に実装された機能性の一例を図示するシーケンス図である。2B is a sequence diagram illustrating an example of functionality implemented in the network environment of FIG. 1 with the client device of FIG. 2A, according to various embodiments of the present disclosure; FIG. 本開示の様々な実施形態による、図2Bのクライアント・デバイスを有する図1のネットワーク環境に実装された機能性の一例を図示するシーケンス図である。2B is a sequence diagram illustrating an example of functionality implemented in the network environment of FIG. 1 with the client device of FIG. 2B, according to various embodiments of the present disclosure; FIG. 本開示の様々な実施形態による、図2Bのクライアント・デバイスを有する図1のネットワーク環境に実装された機能性の一例を図示するシーケンス図である。2B is a sequence diagram illustrating an example of functionality implemented in the network environment of FIG. 1 with the client device of FIG. 2B, in accordance with various embodiments of the present disclosure; FIG.

本開示は、エンティティが選択する暗号化アルゴリズムの、そのエンティティに関連付けられるサービスと通信するクライアント・デバイス上における、使用に関する。例えば、金融機関、決済処理者、マーチャント・ゲートウェイ、決済イシュア、又は他のエンティティなどのエンティティは、送られてくる特定の情報が特定の暗号化アルゴリズムを使用して暗号化されるよう望む場合がある。また、エンティティは、クライアント・デバイスに情報を通信する際、特定の暗号化アルゴリズムを使用する場合がある。エンティティは、セキュリティを向上させるために、特定の暗号化アルゴリズムのアイデンティティを秘密にしておくよう望む場合がある。更には、エンティティは、自身の裁量で、特定の暗号化アルゴリズムを随時、更新又は変更するよう決定することができる。 The present disclosure relates to the use of encryption algorithms selected by an entity on a client device communicating with a service associated with that entity. For example, entities such as financial institutions, payment processors, merchant gateways, payment issuers, or other entities may desire that certain information sent to them be encrypted using specific encryption algorithms. be. Entities may also use certain encryption algorithms when communicating information to client devices. Entities may wish to keep the identity of a particular cryptographic algorithm private in order to improve security. Furthermore, an entity may, at its discretion, decide to update or change a particular encryption algorithm from time to time.

実施形態の第1のセットでは、クライアント・デバイス上のtrusted platform module(TPM)などの暗号化コプロセッサは、暗号の敏捷性、又は様々な暗号化アルゴリズムを使用する能力をサポートするように構成されてもよい。例えば、暗号化コプロセッサは、暗号化アルゴリズムの所定のセットをサポートすることができ、この場合、このセットに含まれるアルゴリズムはデバイス・ハードウェアの製造業者、標準化団体、オペレーティング・システムの開発者によって選択される。暗号化アルゴリズムは、ハードウェアの暗号化コプロセッサに恒久的に含まれてもよく、又はファームウェア若しくはソフトウェアの暗号化コプロセッサにおいて更新することが可能であってもよい。 In a first set of embodiments, a cryptographic coprocessor, such as a trusted platform module (TPM) on a client device, is configured to support cryptographic agility, or the ability to use various cryptographic algorithms. may For example, a cryptographic coprocessor may support a predetermined set of cryptographic algorithms, where the algorithms in the set are determined by device hardware manufacturers, standards bodies, and operating system developers. selected. The cryptographic algorithms may be permanently contained in the hardware cryptographic co-processor or may be updateable in firmware or software cryptographic co-processors.

所定のセット中の暗号化アルゴリズムを使用するのではなく、エンティティは、様々な暗号化アルゴリズムを使用することを好む場合がある。例えば、エンティティによって好まれるアルゴリズムは、暗号化コプロセッサが作成された後にリリースされる可能性がある。それにより、暗号化コプロセッサは、アルゴリズム用の埋め込み型のサポートを有さず、暗号敏捷的なその使用に備えてプロビジョンする必要がある。 Rather than using an encryption algorithm in a predetermined set, an entity may prefer to use various encryption algorithms. For example, an entity-preferred algorithm may be released after the cryptographic coprocessor is created. Thereby, the cryptographic coprocessor does not have embedded support for algorithms and needs to be provisioned for its use cryptographically agile.

説明するように、様々な実施形態において、エンティティは暗号化アルゴリズムを実装するコードを、暗号敏捷性を有する暗号化コプロセッサを有するクライアント・デバイスに送ることができる。暗号化アルゴリズムを実装するコードは、それ自体が暗号化されている場合があるため、アルゴリズムのアイデンティティ及び/又はその内部動作を隠すことができる。暗号化アルゴリズムを実装するコードは、次いでエンティティに関連付けられる鍵を用いて暗号化コプロセッサ内で復号され場合がある。次いで、暗号化コプロセッサは、暗号化コプロセッサ内でコードを実行して、エンティティに送られる情報を暗号化すること、又はエンティティから送られる情報を復号することができる。この方法で、クライアント・デバイス上で実行中のアプリケーションは、暗号化アルゴリズムへのアクセスを有する必要がなく、暗号化アルゴリズムを実装するコードは、セキュアな方法で実行される。 As described, in various embodiments, an entity may send code implementing a cryptographic algorithm to a client device having a cryptographic coprocessor with cryptographic agility. The code implementing the encryption algorithm may itself be encrypted, thus hiding the identity of the algorithm and/or its internal workings. Code implementing the encryption algorithm may then be decrypted in the encryption coprocessor using the key associated with the entity. The cryptographic coprocessor can then execute code within the cryptographic coprocessor to encrypt information sent to the entity or decrypt information sent from the entity. In this way, the application running on the client device does not need to have access to the encryption algorithm and the code implementing the encryption algorithm is executed in a secure manner.

実施形態の第2のセットでは、クライアント・デバイスは、暗号化コプロセッサに加え、別個の信頼できる実行環境を有する。例えば、ARMベースのデバイスは、TRUSTZONE機能をサポートするセキュリティ拡張を含んでもよく、INTELベースのデバイスは、TRUSTED EXECUTION TECHNOLOGY及びSGX SOFTWARE GUARD EXTENSIONSを有してもよく、AMDベースのデバイスは、PLATFORM SECURITY PROCESSOR及びAMD SECURE EXECUTION ENVIRONMENTを有してもよい。これは、ハードウェアベースのアクセス制御を有するセキュアなオペレーティング・システムを実行する別個の仮想プロセッサを提供する。署名されたサード・パーティ・アプリケーションは、信頼できる実行環境内で実行することが可能である。説明するように、様々な実施形態において、エンティティは、暗号化アルゴリズムを実装するコードを受信するように構成された、信頼できる実行環境における実行用に、信頼できるアプリケーションを作成することができ、この場合、コード自体が暗号化されている。暗号化コプロセッサを使用して、コードの真正性及び完全性を検証することができ、その後、信頼できるアプリケーションは暗号化アルゴリズムを実装するコードを復号して、エンティティに送られる情報を暗号化するために、又はエンティティから送られる情報を復号するために、コードを実行することができる。 In a second set of embodiments, the client device has a separate trusted execution environment in addition to the cryptographic coprocessor. For example, ARM-based devices may include security extensions that support TRUSTZONE functionality, INTEL-based devices may have TRUSTED EXECUTION TECHNOLOGY and SGX SOFTWARE GUARD EXTENSIONS, AMD-based devices may include PLATFORM SECURITY PROCESSOR and AMD SECURE EXECUTION ENVIRONMENT. It provides a separate virtual processor running a secure operating system with hardware-based access control. Signed third party applications can be executed within a trusted execution environment. As described, in various embodiments an entity can create a trusted application for execution in a trusted execution environment configured to receive code implementing a cryptographic algorithm; If so, the code itself is encrypted. A cryptographic coprocessor can be used to verify the authenticity and integrity of the code, after which the trusted application decrypts the code implementing the encryption algorithm to encrypt the information sent to the entity. or to decode information sent from the entity.

以下の議論では、システム及びそのコンポーネントの一般的な説明が与えられ、その後、それらの動作の議論をする。 In the discussion that follows, a general description of the system and its components is given, followed by a discussion of their operation.

図1を参照すると、様々な実施形態による、ネットワーク環境100が示される。ネットワーク環境100は、コンピューティング環境103及びクライアント・デバイス106を含み、これらはネットワーク109を介して互いにデータ通信をしている。ネットワーク109には、ワイド・エリア・ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、パーソナル・エリア・ネットワーク(PAN)、又はそれらの組合せが含まれ得る。これらのネットワークは、有線若しくは無線のコンポーネント、又はそれらの組合せを含むことが可能である。有線のネットワークとしては、Ethernetネットワーク、ケーブル・ネットワーク、光ファイバ・ネットワーク、並びにダイヤルアップ、デジタル加入者線(DSL)、及びサービス総合デジタル網(ISDN)ネットワークなどの電話網を挙げることができる。無線ネットワークとしては、セルラ・ネットワーク、衛星ネットワーク、米国電気電子学会(IEEE)802.11無線ネットワーク(すなわち、WI-FI(登録商標))、BLUETOOTH(登録商標)ネットワーク、マイクロ波伝送ネットワーク、並びに無線ブロードキャストに依拠する他のネットワークを挙げることができる。ネットワーク109はまた、二つ以上のネットワーク109の組合せを含むことが可能である。ネットワーク109の例としては、インターネット、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、及び類似のネットワークを挙げることができる。 Referring to FIG. 1, a network environment 100 is shown, according to various embodiments. Network environment 100 includes computing environment 103 and client devices 106 in data communication with each other over network 109 . Network 109 may include a wide area network (WAN), a local area network (LAN), a personal area network (PAN), or combinations thereof. These networks may include wired or wireless components, or a combination thereof. Wireline networks can include Ethernet networks, cable networks, fiber optic networks, and telephone networks such as dial-up, Digital Subscriber Line (DSL), and Integrated Services Digital Network (ISDN) networks. Wireless networks include cellular networks, satellite networks, Institute of Electrical and Electronics Engineers (IEEE) 802.11 wireless networks (i.e., WI-FI), BLUETOOTH networks, microwave transmission networks, and wireless Other networks that rely on broadcast can be mentioned. Network 109 may also include a combination of two or more networks 109 . Examples of network 109 may include the Internet, intranets, extranets, virtual private networks (VPNs), and similar networks.

コンピューティング環境103は、金融機関、決済処理者、決済ゲートウェイ、決済イシュア、又は別のエンティティなどのエンティティ向けに、又はそのようなエンティティを代表して運用され得る。コンピューティング環境103は、プロセッサ、メモリ、及び/又はネットワーク・インターフェースを含む一つ又は複数のコンピューティング・デバイスを含むことが可能である。例えば、コンピューティング・デバイスは、他のコンピューティング・デバイス又はアプリケーションを代表して計算を実施するように構成することが可能である。別の例として、そのようなコンピューティング・デバイスは、コンテンツをホストすること、及び/又はコンテンツに対するリクエストに応答して、コンテンツを他のコンピューティング・デバイスに提供することが可能である。 Computing environment 103 may be operated for or on behalf of an entity such as a financial institution, payment processor, payment gateway, payment issuer, or another entity. Computing environment 103 may include one or more computing devices including processors, memory, and/or network interfaces. For example, computing devices may be configured to perform computations on behalf of other computing devices or applications. As another example, such computing devices may host content and/or provide content to other computing devices in response to requests for content.

その上、コンピューティング環境103は、一つ若しくは複数のサーバ・バンク又はコンピュータ・バンク又は他の配置構成で構成することが可能な複数のコンピューティング・デバイスを採用することが可能である。そのようなコンピューティング・デバイスは、単一の施設に配置することが可能であるか、又は多くの異なる地理的場所に分散することが可能である。例えば、コンピューティング環境103は、ホストされたコンピューティング・リソース、グリッド・コンピューティング・リソース、又はあらゆる他の分散型のコンピューティング用配置構成を共に含むことが可能な複数のコンピューティング・デバイスを含むことが可能である。場合によっては、コンピューティング環境103は、処理、ネットワーク、ストレージ、又は他のコンピューティング関連リソースの配分されたキャパシティが経時的に変化し得る、弾力的なコンピューティング・リソースに対応することが可能である。 Moreover, computing environment 103 may employ multiple computing devices, which may be configured in one or more server banks or computer banks or other arrangements. Such computing devices may be located at a single facility or distributed over many different geographical locations. For example, computing environment 103 includes multiple computing devices that may together include hosted computing resources, grid computing resources, or any other distributed computing arrangement. It is possible. In some cases, the computing environment 103 can accommodate elastic computing resources, where the allocated capacity of processing, network, storage, or other computing-related resources can change over time. is.

様々なアプリケーション又は他の機能性は、コンピューティング環境103内で実行することが可能である。コンピューティング環境103上で実行されるコンポーネントには、エンティティ・サービス113及び他のアプリケーション、サービス、プロセス、システム、エンジン、又は本明細書で詳細に議論しない機能性が含まれる。エンティティ・サービス113は、認証、決済認可、決済処理、又は他の機能などの機能を実施するために、エンティティによって、又はエンティティを代表して運用され得る。議論目的で一つのエンティティ・サービス113を説明するが、これらの機能の一部を実施するために複数のサービスが実装されてもよいことを理解されたい。 Various applications or other functionality may execute within the computing environment 103 . Components running on computing environment 103 include entity services 113 and other applications, services, processes, systems, engines, or functionality not discussed in detail herein. Entity services 113 may be operated by or on behalf of an entity to perform functions such as authentication, payment authorization, payment processing, or other functions. Although one entity service 113 is described for discussion purposes, it should be understood that multiple services may be implemented to perform some of these functions.

また、様々なデータは、コンピューティング環境103からアクセス可能なデータ・ストア116に記憶される。データ・ストア116は、リレーショナル・データベース、非リレーショナル・データベース、オブジェクト指向データベース、階層型データベース、ハッシュ・テーブル若しくは類似のキー対値のデータ・ストア、又は他のデータ・ストレージ・アプリケーション若しくはデータ構造を含み得る、複数のデータ・ストア116を代表することが可能である。データ・ストア116に記憶されるデータは、コンピューティング環境103によってホストされる様々なアプリケーションの動作に関連付けられる。 Various data is also stored in data store 116 that is accessible from computing environment 103 . Data stores 116 include relational databases, non-relational databases, object-oriented databases, hierarchical databases, hash tables or similar key-to-value data stores, or other data storage applications or data structures. It is possible to represent multiple data stores 116 to obtain. The data stored in data store 116 is associated with the operations of various applications hosted by computing environment 103 .

クライアント・デバイス106は、ネットワーク109に結合することが可能な一つ又は複数のクライアント・デバイス106の代表である。クライアント・デバイス106は、コンピュータ・システムのようなプロセッサベースのシステムを含むことが可能である。そのようなコンピュータ・システムは、パーソナル・コンピュータ(例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、又は類似のデバイス)、モバイル・コンピューティング・デバイス(例えば、携帯情報端末、携帯電話、スマートフォン、ウェブ・パッド、タブレット・コンピュータ・システム、ミュージック・プレーヤ、ポータブルのゲーム機、電子書籍リーダ、及び類似のデバイス)、メディア再生用デバイス(例えば、メディア・ストリーミング・デバイス、BluRay(登録商標)プレーヤ、デジタル・ビデオ・ディスク(DVD)プレーヤ、セットトップ・ボックス、及び類似のデバイス)、ビデオゲーム機、又は同様の機能を備えた他のデバイスの形態で具体化することが可能である。クライアント・デバイス106は、液晶ディスプレイ(LCD)、ガス・プラズマベースのフラット・パネル・ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、電気泳動式インク(「Eインク」)ディスプレイ、プロジェクタ、又は他のタイプのディスプレイ・デバイスなどの、一つ又は複数のディスプレイを含むことが可能である。一部の事例では、ディスプレイは、クライアント・デバイス106のコンポーネントであってもよく、又は有線若しくは無線接続を通じてクライアント・デバイス106に接続されてもよい。 Client device 106 is representative of one or more client devices 106 that may be coupled to network 109 . Client device 106 may include a processor-based system, such as a computer system. Such computer systems include personal computers (e.g., desktop computers, laptop computers, or similar devices), mobile computing devices (e.g., personal digital assistants, mobile phones, smart phones, web pads). , tablet computer systems, music players, portable game consoles, e-readers, and similar devices); media playback devices (e.g., media streaming devices, BluRay players, digital video It may be embodied in the form of a disc (DVD) player, set-top box, and similar devices), video game console, or other device with similar functionality. The client device 106 may be a liquid crystal display (LCD), gas plasma-based flat panel display, organic light emitting diode (OLED) display, electrophoretic ink (“E-ink”) display, projector, or other type of display. One or more displays, such as display devices, may be included. In some cases, the display may be a component of client device 106 or may be connected to client device 106 through a wired or wireless connection.

次に、ネットワーク環境100の様々なコンポーネントの動作について一般的な説明を与える。以下の説明では、ネットワーク環境100の様々なコンポーネントの動作及びコンポーネント間の相互作用の一例を与えるが、以降の図面に付随する説明において後に議論するように、他の動作又は相互作用が生じる場合もある。 A general description of the operation of the various components of network environment 100 will now be provided. Although the following description provides an example of the operation of and interactions between the various components of network environment 100, other operations or interactions may occur, as discussed later in the description that accompanies the following figures. be.

まず、エンティティ・サービス113は、暗号化されたコード118を、ネットワーク109を通じてクライアント・デバイス106に送る。暗号化されたコード118は、暗号化アルゴリズム121及び署名124を含む。暗号化アルゴリズム121は、対称アルゴリズム、非対称アルゴリズム、又はそれらの組合せであるハイブリッド型のアルゴリズムに相当し得る。暗号化アルゴリズム121の非限定的な例としては、Triple Data Encryption Algorithm(Triple DES)、Advanced Encryption Standard(AES)、ChaCha、Salsa20、Twofishなどを挙げることができる。 First, entity service 113 sends encrypted code 118 to client device 106 over network 109 . Encrypted code 118 includes encryption algorithm 121 and signature 124 . Encryption algorithm 121 may correspond to a symmetric algorithm, an asymmetric algorithm, or a hybrid algorithm that is a combination thereof. Non-limiting examples of encryption algorithms 121 can include Triple Data Encryption Algorithm (Triple DES), Advanced Encryption Standard (AES), ChaCha, Salsa20, Twofish, and the like.

場合によっては、暗号化アルゴリズム121は、暗号化アルゴリズム121を用いてデータを復号及び/又は暗号化するために、暗号化アルゴリズム121の使用のための鍵を含む場合がある。代替的に、そのような鍵は、他の方法でクライアント・デバイス106に利用可能であり得る。暗号化されたコード118は、暗号化されたコード118の真正性又は完全性を検証するために使用され得る署名124を含む。 In some cases, encryption algorithm 121 may include a key for use of encryption algorithm 121 to decrypt and/or encrypt data using encryption algorithm 121 . Alternatively, such keys may be available to client device 106 in other manners. Encrypted code 118 includes signature 124 that may be used to verify the authenticity or integrity of encrypted code 118 .

暗号化されたコード118を受信した後、クライアント・デバイス106に利用可能な一つ又は複数の鍵を用いて、クライアント・デバイス106は、暗号化されたコード118の署名124を検証し、次いで暗号化されたコード118を復号する。次に、クライアント・デバイス106は、鍵と共に暗号化アルゴリズム121を使用して、暗号文127を生成するなどの暗号化演算を行うことができる。暗号文127は、決済取引に相当する可能性があり、デバイスのプライマリ・アカウント・ナンバ、取引金額、限定使用の決済クリデンシャル又は限定使用の鍵、予測不可能な数字、タイムスタンプ、取引カウンタ、及び/又は決済取引を認可するために使用され得る他の情報などのデータを含み得る。次いで暗号文127は、ネットワーク109上でエンティティ・サービス113に送られる。 After receiving the encrypted code 118, using one or more keys available to the client device 106, the client device 106 verifies the signature 124 of the encrypted code 118 and then encrypts the encrypted code 118. decode the encrypted code 118; Client device 106 can then use cryptographic algorithm 121 along with the key to perform cryptographic operations, such as generating ciphertext 127 . The ciphertext 127 may represent a payment transaction, including the device's primary account number, transaction amount, limited-use payment credential or limited-use key, unpredictable number, timestamp, transaction counter, and /or may include data such as other information that may be used to authorize payment transactions. Ciphertext 127 is then sent to entity service 113 over network 109 .

次に図2Aを見ると、様々な実施形態による、クライアント・デバイス106の一例が示されている。クライアント・デバイス106は、クライアント・アプリケーション203及び他のアプリケーションを実行することが可能である。クライアント・デバイス106は、暗号化コプロセッサ206、クライアント・データ・ストア209、及び他のコンポーネントを含み得る。 Turning now to FIG. 2A, an example of a client device 106 is shown, according to various embodiments. Client device 106 is capable of executing client application 203 as well as other applications. Client device 106 may include cryptographic coprocessor 206, client data store 209, and other components.

クライアント・アプリケーション203は、エンティティに関連付けられる場合があり、エンティティに関する機能を実施するために使用され得る。例えば、クライアント・アプリケーション203は、エンティティ・サービス113(図1)が決済装置を使用することを通じて、決済取引を開始又は管理するために、実行することができる。この点において、クライアント・アプリケーション203は、エンティティ・サービス113から暗号化されたコード118(図1)を受信し、暗号化コプロセッサ206を通じて暗号文127(図1)を生成させ、次いで暗号化された情報を含む暗号文127をエンティティ・サービス113に送ることができる。加えて、クライアント・アプリケーション203は、エンティティ・サービス113から暗号化されたデータを受信し、暗号化コプロセッサ206を通じて暗号化されたコード118を用いて暗号化されたデータを復号し、そして復号されたデータを処理することができる。 A client application 203 may be associated with an entity and may be used to perform functions related to the entity. For example, client application 203 may be executed to initiate or manage payment transactions through the use of payment instruments by entity services 113 (FIG. 1). In this regard, client application 203 receives encrypted code 118 (FIG. 1) from entity service 113, generates ciphertext 127 (FIG. 1) through cryptographic coprocessor 206, and then encrypts A ciphertext 127 containing the information obtained can be sent to the entity service 113 . In addition, client application 203 receives encrypted data from entity service 113, decrypts the encrypted data using encrypted code 118 through encryption coprocessor 206, and decrypts the encrypted data. data can be processed.

暗号化コプロセッサ206は、統合された暗号鍵を用いてハードウェアをセキュアにし、様々な暗号化演算を実現する、物理的又はエミュレートされた専用のマイクロコントローラを表現することができる。暗号化コプロセッサ206は、Trusted Computing Group(TCG)からのTMP標準のあるバージョンを実装することができる。暗号化コプロセッサ206は、暗号化コプロセッサ206の改竄又はそのすり抜けを防ぐためハードウェア内に実装されてもよいが、暗号化コプロセッサ206の機能性は、ハードウェアベースの暗号化コプロセッサ206を持たないクライアント・デバイス106上のファームウェア又はソフトウェアに実装することが可能である。 Cryptographic coprocessor 206 may represent a dedicated microcontroller, physical or emulated, that secures hardware with unified cryptographic keys and performs various cryptographic operations. Cryptographic coprocessor 206 may implement some version of the TMP standard from the Trusted Computing Group (TCG). Although the cryptographic coprocessor 206 may be implemented in hardware to prevent tampering with or bypassing the cryptographic coprocessor 206, the functionality of the cryptographic coprocessor 206 may be implemented in hardware-based cryptographic coprocessor 206. can be implemented in firmware or software on client device 106 that does not have

暗号化コプロセッサ206は、クライアント・デバイス106又はクライアント・デバイス106によって実行されるアプリケーションを代表する、様々な暗号化機能又は演算を実施することが可能である。例えば、暗号化コプロセッサ206は、暗号化コプロセッサ206に含まれている疑似乱数生成器(PRNG)又は乱数生成器(RNG)を使用して乱数を生成してもよい。別の例として、暗号化コプロセッサ206は、対称暗号化鍵及び非対称暗号化鍵対を含む、暗号鍵又は鍵対をセキュアに生成することが可能である。暗号化コプロセッサ206はまた、暗号化コプロセッサ206によって生成されたか、暗号化コプロセッサ206にインポートされた暗号鍵を用いて、データを暗号化又は復号することが可能である。別の例として、暗号化コプロセッサ206はまた、ハードウェアの現在の状態及びクライアント・デバイス106のソフトウェア設定のハッシュを生成することが可能であり、これらのハッシュにより、クライアント・デバイス106又はクライアント・デバイス106のユーザのアイデンティティのリモート証明を考慮することが可能となる。 Cryptographic coprocessor 206 is capable of performing various cryptographic functions or operations representative of client device 106 or applications executed by client device 106 . For example, cryptographic coprocessor 206 may generate random numbers using a pseudorandom number generator (PRNG) or random number generator (RNG) included in cryptographic coprocessor 206 . As another example, cryptographic coprocessor 206 can securely generate cryptographic keys or key pairs, including symmetric cryptographic keys and asymmetric cryptographic key pairs. Cryptographic coprocessor 206 is also capable of encrypting or decrypting data using cryptographic keys generated by or imported into cryptographic coprocessor 206 . As another example, the cryptographic coprocessor 206 may also generate hashes of the current state of hardware and software settings of the client device 106, and these hashes allow the client device 106 or client device 106 to Remote proof of the identity of the user of device 106 can be considered.

これらの演算を実施するために、様々な暗号鍵を、暗号化コプロセッサ206内に記憶することが可能である。このような鍵には、エンドースメント鍵対212、及びストレージ・ルート鍵などの一つ又は複数のルート鍵対215が含まれ得る。エンドースメント鍵対212及びルート鍵対215は、鍵をセキュリティ侵害から保護するために、暗号化コプロセッサ自体の内部に記憶されてもよい。 Various cryptographic keys may be stored within cryptographic coprocessor 206 to perform these operations. Such keys may include an endorsement key pair 212 and one or more root key pairs 215, such as a storage root key. The endorsement key pair 212 and root key pair 215 may be stored within the cryptographic coprocessor itself to protect the keys from security breaches.

エンドースメント鍵対212は、暗号化コプロセッサ206に一意な公開及びプライベート暗号化鍵を含む非対称暗号化鍵対である。エンドースメント鍵対212は、暗号化コプロセッサ206によって、そのアイデンティティ、つまりクライアント・デバイス106又はクライアント・デバイス106のユーザのアイデンティティを、他のパーティ又はデバイスに対して、検証又はアサートするために使用することができる。エンドースメント鍵対212がサード・パーティに知られた場合、サード・パーティは、潜在的に暗号化コプロセッサ206のアイデンティティを偽造することが可能である。したがって、エンドースメント鍵対212は、一般的に、他の暗号化鍵を署名するために使用され、その後、暗号化コプロセッサ206のアイデンティティをアサート又は検証するために使用され得る。エンドースメント鍵対212の完全性を保存して、他の暗号化コプロセッサ206にインストールされた他のエンドースメント鍵対212に対し、このエンドースメント鍵対212が一意であることを保証するために、エンドースメント鍵対212は、工場で暗号化コプロセッサ206にプロビジョンされて記憶することができる。 Endorsement key pair 212 is an asymmetric cryptographic key pair that includes public and private cryptographic keys that are unique to cryptographic coprocessor 206 . The endorsement key pair 212 is used by the cryptographic coprocessor 206 to verify or assert its identity, that is, the identity of the client device 106 or the user of the client device 106, to other parties or devices. be able to. If endorsement key pair 212 becomes known to a third party, the third party could potentially forge the identity of cryptographic coprocessor 206 . Thus, endorsement key pair 212 is generally used to sign other cryptographic keys, which can then be used to assert or verify the identity of cryptographic coprocessor 206 . To preserve the integrity of the endorsement key pair 212 and ensure that this endorsement key pair 212 is unique with respect to other endorsement key pairs 212 installed on other cryptographic coprocessors 206 , the endorsement key pair 212 may be provisioned and stored in the cryptographic coprocessor 206 at the factory.

ルート鍵対215は、データを暗号化及び/又は署名するために暗号化コプロセッサ206によって使用することが可能な非対称な暗号化鍵対であり得る。ルート鍵対215は、必要であれば置き換えることが可能であるが、ルート鍵対215を用いて暗号化されたあらゆるデータは、ルート鍵対215が新しいルート鍵対215で置き換えられると復元不可能となる。いくつかの実装形態では、暗号化コプロセッサ206は、複数の、独立的なルート鍵対215の使用をサポートすることが可能である。例えば、クライアント・デバイス106の複数のユーザは、個別のユーザだけがアクセスすることができる、自分自身のルート鍵対215を、それぞれ有することが可能である。別の例として、クライアント・デバイス106上で実行中の複数のクライアント・アプリケーションは、クライアント・デバイス106に記憶されたアプリケーション固有のデータを暗号化するため、及び復号するために、自分自身のルート鍵対215を有することが可能である。具体的には、エンティティ・サービス115に関連付けられるエンティティ及びクライアント・アプリケーション203は、自分自身のルート鍵対215を有し得る。更には、エンティティは、このルート鍵対215へのアクセスについての自身の認可ポリシを定めることができる。この方法では、エンティティは、ルート鍵対215の鍵階層に対する排他的な制御を維持することが可能である。 Root key pair 215 may be an asymmetric cryptographic key pair that can be used by cryptographic coprocessor 206 to encrypt and/or sign data. Root key pair 215 can be replaced if necessary, but any data encrypted using root key pair 215 is unrecoverable once root key pair 215 is replaced with a new root key pair 215. becomes. In some implementations, cryptographic coprocessor 206 may support the use of multiple, independent root key pairs 215 . For example, multiple users of client device 106 may each have their own root key pair 215 that can only be accessed by the individual user. As another example, multiple client applications running on client device 106 may use their own root key to encrypt and decrypt application-specific data stored on client device 106 . It is possible to have pairs 215 . Specifically, the entity and client application 203 associated with entity service 115 may have their own root key pair 215 . Additionally, an entity can define its own authorization policy for access to this root key pair 215 . In this way, an entity can maintain exclusive control over the key hierarchy of root key pair 215 .

暗号化コプロセッサ206はまた、複数の所定の暗号化アルゴリズム218を含み得る。所定の暗号化アルゴリズム218は、ルート鍵対215のうちの特定の鍵対を使用してデータを暗号化、復号、又は検証するために、暗号化コプロセッサ206によって実行することが可能である。所定の暗号化アルゴリズム218のセットは、標準によって、暗号化コプロセッサ206若しくはクライアント・デバイス106の製造業者によって、又はクライアント・デバイス106の開発者によって定められてもよい。そのようなものとして、所定の暗号化アルゴリズム218のセットは、暗号化コプロセッサ206を実装するハードウェア、ファームウェア、又はソフトウェア内にハードコーディングされてもよく、クライアント・アプリケーション203によって設定可能でなくてもよい。所定の暗号化アルゴリズム218のうちのどれが暗号化演算用に選択されるかを示すフラグが、暗号化コプロセッサ206に送られてもよい。所定の暗号化アルゴリズム218は、暗号化されたコード118内の暗号化アルゴリズム121(図1)を含まなくてもよいことに留意されたい。しかしながら、暗号化されたコード118は、所定の暗号化アルゴリズム218のうちの一つを使用して暗号化されてもよい。 Cryptographic coprocessor 206 may also include multiple predetermined cryptographic algorithms 218 . A predetermined encryption algorithm 218 may be executed by cryptographic coprocessor 206 to encrypt, decrypt, or verify data using a particular key pair of root key pair 215 . The set of predetermined cryptographic algorithms 218 may be defined by a standard, by the cryptographic coprocessor 206 or the manufacturer of the client device 106 , or by the developer of the client device 106 . As such, the set of predetermined cryptographic algorithms 218 may be hard-coded into the hardware, firmware, or software implementing cryptographic coprocessor 206 and not configurable by client application 203 . good too. A flag may be sent to the cryptographic coprocessor 206 indicating which of the predetermined cryptographic algorithms 218 is selected for the cryptographic operation. Note that predetermined encryption algorithm 218 may not include encryption algorithm 121 (FIG. 1) within encrypted code 118 . However, encrypted code 118 may be encrypted using one of predetermined encryption algorithms 218 .

承認されたエンティティ221は、暗号化アルゴリズム121などの、暗号化コプロセッサ206内でコードを実行することを承認されたエンティティの一覧に相当し得る。承認されたエンティティ221は、暗号化コプロセッサ206にルート鍵対215を記憶することを許可され得る。いくつかの実施形態では、承認されたエンティティ221の一覧がない場合があるが、承認されたエンティティ221は、承認されたエンティティ221が暗号化コプロセッサ206内の任意の暗号化アルゴリズム121を実行するためのアクセスを有することを可能にする、対応するルート鍵対215を有する。 Approved entities 221 may correspond to a list of entities, such as cryptographic algorithms 121 , that are authorized to execute code within cryptographic coprocessor 206 . Authorized entity 221 may be authorized to store root key pair 215 in cryptographic coprocessor 206 . In some embodiments, there may not be a list of authorized entities 221, but authorized entities 221 may perform any cryptographic algorithm 121 within cryptographic coprocessor 206. has a corresponding root key pair 215 that allows it to have access to

また、様々なデータは、クライアント・デバイス106からアクセス可能なクライアント・データ・ストア209に記憶される。クライアント・データ・ストア209は、リレーショナル・データベース、オブジェクト指向データベース、階層型データベース、ハッシュ・テーブル若しくは類似のキー対値のデータ・ストア、又は他のデータ・ストレージ・アプリケーション若しくはデータ構造を含み得る、複数のクライアント・データ・ストア209を代表することが可能である。クライアント・データ・ストア209に記憶されるデータは、クライアント・デバイス106によって実行される様々なアプリケーションの動作に関連付けられる。このデータは、一つ又は複数のアプリケーション鍵対224、暗号化された認証トークン163、アイデンティティ鍵対233、及び潜在的な他のデータを含むことが可能である。 Various data is also stored in client data store 209 that is accessible from client device 106 . Client data store 209 may include a relational database, an object-oriented database, a hierarchical database, a hash table or similar key-to-value data store, or any other data storage application or data structure. of client data stores 209 can be represented. The data stored in client data store 209 is associated with various application operations performed by client device 106 . This data may include one or more application key pairs 224, encrypted authentication tokens 163, identity key pairs 233, and potentially other data.

アプリケーション鍵対224は、暗号化コプロセッサ206によって生成されるか、又は暗号化コプロセッサ206にインポートされて、様々なデータ暗号化機能に使用され得る非対称の暗号化鍵対である。それぞれのアプリケーション鍵対224は、個々のルート鍵対215の子、孫、又は子孫鍵であり得る。その上、それぞれのルート鍵対215は、それに関連付けられた一つ又は複数のアプリケーション鍵対224を有することが可能である。例えば、ユーザは、様々な使用のために、複数のアプリケーション鍵対224を作成する可能性があり、これらのアプリケーション鍵対224は、ユーザ用のルート鍵対215のサブ鍵又は子鍵として記憶することができる。同様に、自分自身のルート鍵対215をプロビジョンしたクライアント・アプリケーション203は、様々な目的に複数のアプリケーション鍵対224を使用することが可能であり、これらのアプリケーション鍵対224のうちの一つ又は複数は、クライアント・アプリケーション203用のプロビジョンされたルート鍵対215のサブ鍵として記憶され得る。それぞれのアプリケーション鍵対224は、アプリケーション公開鍵227及び暗号化されたプライベート鍵230含むことが可能である。 Application key pair 224 is an asymmetric cryptographic key pair that may be generated by or imported into cryptographic coprocessor 206 and used for various data encryption functions. Each application key pair 224 may be a child, grandchild, or descendant key of an individual root key pair 215 . Additionally, each root key pair 215 may have one or more application key pairs 224 associated with it. For example, a user may create multiple application key pairs 224 for various uses, and these application key pairs 224 are stored as subkeys or child keys of the root key pair 215 for the user. be able to. Similarly, a client application 203 that has provisioned its own root key pair 215 can use multiple application key pairs 224 for various purposes and one of these application key pairs 224 Or multiple may be stored as subkeys of provisioned root key pair 215 for client application 203 . Each application key pair 224 may include an application public key 227 and an encrypted private key 230 .

アイデンティティ鍵対233は、暗号化コプロセッサ206によって、そのアイデンティティを検証するために生成され、使用することが可能な、ローカルに記憶された非対称暗号化鍵対を表現する。例えば、アイデンティティ鍵対233のプライベート鍵で署名されたメッセージは、アイデンティティ公開鍵を用いて、クライアント・デバイス106にインストールされた暗号化コプロセッサ206の一意なアイデンティティにより、特定のクライアント・デバイス106から発せられたものとして検証することが可能である。したがって、アイデンティティ鍵対233は、エンドースメント鍵対212に対するエイリアスとして使用することができる。これは、アイデンティティ鍵対233が有効であることを証明するために、エンドースメント鍵対212のプライベート鍵を使用して暗号化コプロセッサ206によって署名することができる。 Identity key pair 233 represents a locally stored asymmetric cryptographic key pair that can be generated and used by cryptographic coprocessor 206 to verify its identity. For example, a message signed with the private key of identity key pair 233 originates from a particular client device 106 with the unique identity of cryptographic coprocessor 206 installed on client device 106 using the identity public key. It is possible to verify that Thus, identity key pair 233 can be used as an alias for endorsement key pair 212 . This can be signed by cryptographic coprocessor 206 using the private key of endorsement key pair 212 to prove that identity key pair 233 is valid.

限定使用の決済クリデンシャル236は、限定使用の鍵に相当し得る。限定使用の決済クリデンシャル236は、サーバ側マスタ鍵によって生成される動的な鍵である。限定使用の決済クリデンシャル236のうちの一つ又は複数の所定の数は、最初にクライアント・デバイス106にプロビジョンされてもよい。限定使用の決済クリデンシャル236又は限定使用の鍵から導出されるセッション鍵を使用して、暗号文127がクライアント・デバイス106によって生成されたことを検証することができる。限定使用の決済クリデンシャル236は、クライアント・デバイス106に送ってもよく、限定使用の決済クリデンシャル236のそれぞれ一つは、決済取引を認可するために、一回又は所定の回数使用することができる。 Limited-use payment credential 236 may correspond to a limited-use key. Limited-use payment credentials 236 are dynamic keys generated by the server-side master key. A predetermined number of one or more of limited-use payment credentials 236 may initially be provisioned to client device 106 . A limited-use payment credential 236 or a session key derived from a limited-use key can be used to verify that the ciphertext 127 was generated by the client device 106 . Limited-use payment credentials 236 may be sent to client device 106, and each one of limited-use payment credentials 236 may be used once or a predetermined number of times to authorize payment transactions.

図2Bに移ると、様々な実施形態による、クライアント・デバイス106の一例が示される。クライアント・デバイス106は、信頼できない実行環境250、信頼できる実行環境253、及び信頼できない実行環境250と信頼できる実行環境253との間にインターフェース254を含むことが可能である。クライアント・アプリケーション203は、ユーザの制御の下、多くのアプリケーションと共に、信頼できない実行環境250内で実行することが可能である。信頼できる実行環境253は、セキュアな仮想プロセッサ又はセキュアな物理プロセッサ上で実行される、それ自身のセキュアなオペレーティング・システムを有するセキュアな環境である。信頼できない実行環境250は、信頼できる実行環境253のセキュアな仮想プロセッサ又は物理プロセッサとは異なる仮想プロセッサ又は物理プロセッサ上で実行される場合がある。 Turning to FIG. 2B, an example of client device 106 is shown, according to various embodiments. Client device 106 may include untrusted execution environment 250 , trusted execution environment 253 , and interface 254 between untrusted execution environment 250 and trusted execution environment 253 . The client application 203 can run within the untrusted execution environment 250 along with many applications under the control of the user. A trusted execution environment 253 is a secure environment with its own secure operating system running on a secure virtual processor or a secure physical processor. Untrusted execution environment 250 may run on a different virtual or physical processor than the secure virtual or physical processor of trusted execution environment 253 .

クライアント・デバイス106のハードウェア・プロセッサは、ハイパバイザを実行するか、又は信頼できる実行環境253へのアクセスを仲介若しくは制限するハードウェア拡張を含んでもよい。インターフェース254は、信頼できる実行環境253と信頼できない実行環境250との間でセキュアなやり方でデータの転送を可能にする、ハイパバイザ又はプロセッサのハードウェア拡張によってサポートされるアプリケーション・プログラミング・インターフェース(API)であってもよい。例えば、インターフェース254は、システム・コール又は共有メモリを通過したメッセージを含んでもよい。 The hardware processor of client device 106 may run a hypervisor or include hardware extensions that mediate or restrict access to trusted execution environment 253 . Interface 254 is an application programming interface (API) supported by a hypervisor or processor hardware extension that allows data to be transferred between trusted execution environment 253 and untrusted execution environment 250 in a secure manner. may be For example, interface 254 may include system calls or messages passed through shared memory.

エンティティに関連付けられる信頼できるアプリケーション256は、信頼できる実行環境253内で実行される。信頼できるアプリケーション256はエンティティによって署名され、信頼できる実行環境253内で実行される前に、暗号化コプロセッサ206によって検証され得る。信頼できるアプリケーション256が実行されて、クライアント・アプリケーション203からインターフェース254を介して暗号化されたコード118(図1)を受信し、暗号化コプロセッサ206により署名124(図1)を使用して暗号化されたコード118の真正性及び/又は完全性を検証し、暗号化コプロセッサ206を使用して暗号化されたコード118を復号する。 A trusted application 256 associated with the entity runs within the trusted execution environment 253 . Trusted application 256 may be signed by an entity and verified by cryptographic coprocessor 206 before executing within trusted execution environment 253 . Trusted application 256 executes to receive encrypted code 118 (FIG. 1) from client application 203 via interface 254 and encrypted by cryptographic coprocessor 206 using signature 124 (FIG. 1). It verifies the authenticity and/or integrity of the encrypted code 118 and decrypts the encrypted code 118 using the encryption coprocessor 206 .

暗号化されたコード118が検証されて復号された後、信頼できるアプリケーション256は、暗号化アルゴリズム121(図1)を使用して、暗号化、復号、署名、又は他の暗号化演算の実施を行うことができる。特に、信頼できるアプリケーション256は、様々な情報を暗号化するために暗号化アルゴリズム121を実行することによって、暗号文127を生成してもよい。例えば、情報は、決済取引に関連する場合があり、限定使用の決済クリデンシャル236又は限定使用の鍵を含んでもよい。 After encrypted code 118 is verified and decrypted, trusted application 256 uses encryption algorithm 121 (FIG. 1) to encrypt, decrypt, sign, or perform other cryptographic operations. It can be carried out. In particular, trusted application 256 may generate ciphertext 127 by executing encryption algorithm 121 to encrypt various information. For example, the information may relate to a payment transaction and may include limited-use payment credentials 236 or limited-use keys.

図2Bは、単一のクライアント・データ・ストア209を示しているが、クライアント・データ・ストア209は、データ・ストアのうちの一つ又は複数が、信頼できる実行環境253を通じてのみアクセス可能である、複数のデータ・ストアに分割されてもよいことを理解されたい。 Although FIG. 2B shows a single client data store 209, the client data store 209 is such that one or more of the data stores are accessible only through the trusted execution environment 253. , may be split into multiple data stores.

次に図3を参照すると、図2Aのクライアント・デバイス106を含むネットワーク環境100の様々なコンポーネント同士の相互作用の一例を与えるシーケンス図が示されている。図3のシーケンス図は、ネットワーク環境100で採用され得る多くの異なるタイプの機能的な配置構成の一例を与えているに過ぎない。代替として、図3のシーケンス図は、ネットワーク環境100内に実装される方法の要素の例を描いているものとして見ることが可能である。 Referring now to FIG. 3, shown is a sequence diagram providing an example of the interaction between various components of network environment 100, including client device 106 of FIG. 2A. The sequence diagram of FIG. 3 provides only one example of the many different types of functional arrangements that may be employed in network environment 100 . Alternatively, the sequence diagram of FIG. 3 can be viewed as depicting exemplary elements of the method implemented within network environment 100 .

四角303から始まり、エンティティ・サービス113は、暗号化されたコード118(図1)を、クライアント・デバイス106(図2A)上で実行されるクライアント・アプリケーション203に送る。暗号化されたコード118は、署名124(図1)と共に送られてもよい。署名124のヘッダを使用して、暗号化されたコード118を復号するための特定のルート鍵対215(図2A)を識別することが可能である。代替的に、エンティティ・サービス113は、異なるタイプの鍵識別子を送ってもよい。一実施形態において、クライアント・デバイス106は、署名124を検証するため、及び暗号化されたコード118を復号するために、エンティティ・サービス113を特定のルート鍵対215にリンクするローカル(例えば、非揮発性のランダム・アクセス・メモリ)に記憶されたルックアップ・テーブル又はマッピングを有してもよい。 Beginning at square 303, entity service 113 sends encrypted code 118 (FIG. 1) to client application 203 running on client device 106 (FIG. 2A). Encrypted code 118 may be sent along with signature 124 (FIG. 1). A header of signature 124 can be used to identify a particular root key pair 215 (FIG. 2A) for decrypting encrypted code 118 . Alternatively, entity service 113 may send a different type of key identifier. In one embodiment, client device 106 uses a local (e.g., non It may also have a lookup table or mapping stored in a volatile random access memory).

次に、四角306では、クライアント・アプリケーション203は、暗号化されたコード118を、クライアント・デバイス106の暗号化コプロセッサ206に提供する。例えば、クライアント・アプリケーション203は、暗号化されたコード118を、クライアント・データ・ストア209又は他のメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたコード118をロードし、それを検証して復号することができる。暗号化コプロセッサ206がファームウェアに実装される場合、セキュアな要素(例えば、セキュアなデータ・ストレージ)に記憶されるデータ(例えば、ルート鍵)は、セキュアな要素へのアクセスを仲介するインターフェースを介して、セキュアな要素からファームウェアの暗号化コプロセッサ206に転送されてもよい。データ(例えば、ルート鍵)は、ファームウェアの暗号化コプロセッサ206が、検証及び復号などの機能を実施できるようにする。 Next, at box 306 , client application 203 provides encrypted code 118 to cryptographic coprocessor 206 of client device 106 . For example, client application 203 may store encrypted code 118 in client data store 209 or other memory, and send commands to cryptographic coprocessor 206 to load encrypted code 118. can be verified and decrypted. When cryptographic coprocessor 206 is implemented in firmware, data (e.g., root keys) stored in secure elements (e.g., secure data storage) is passed through interfaces that mediate access to the secure elements. may be transferred from the secure element to the cryptographic coprocessor 206 of the firmware. The data (eg, root key) allows the firmware's cryptographic coprocessor 206 to perform functions such as verification and decryption.

四角309では、暗号化コプロセッサ206は、暗号化されたコード118と共に送られた署名124を使用して暗号化されたコード118を検証する。この目的のために、暗号化コプロセッサ206は、署名124を使用して検証を行うために、エンティティに関連付けられるルート鍵対215を取得することができる。故に、検証手順は、暗号化されたコード118の真正性及び完全性を検証する。場合によっては、暗号化コプロセッサ206は、クライアント・デバイス106の状態を検証し、且つクライアント・デバイス106の状態に基づいて、暗号化されたコード118の復号を許可又は許可しない場合がある。例えば、暗号化コプロセッサ206は、クライアント・デバイス106がルートになっている場合、暗号化されたコード118の復号を許可しない可能性がある。検証が正常ではなかった場合、暗号化アルゴリズム121の復号と実行は進行しない。 At box 309 , cryptographic coprocessor 206 verifies encrypted code 118 using signature 124 sent with encrypted code 118 . To this end, cryptographic coprocessor 206 can obtain root key pair 215 associated with the entity for verification using signature 124 . The verification procedure thus verifies the authenticity and integrity of the encrypted code 118 . In some cases, cryptographic coprocessor 206 may verify the state of client device 106 and, based on the state of client device 106 , allow or disallow decryption of encrypted code 118 . For example, cryptographic coprocessor 206 may disallow decryption of encrypted code 118 if client device 106 is rooted. If the verification was not successful, decryption and execution of the encryption algorithm 121 will not proceed.

四角312では、暗号化コプロセッサ206は、暗号化されたコード118を復号する。例えば、暗号化コプロセッサ206は、復号を実施するために、所定の暗号化アルゴリズム218(図2A)のうち特定の一つを、エンティティに関連付けられるルート鍵対215と共に利用することが可能である。暗号化されたコード118を復号する際、暗号化コプロセッサ206は、暗号化アルゴリズム121(図1)を未暗号化の形態で取得する。いくつかの例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218とは異なっていてもよい。他の例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218のうちの一つである可能性があるが、暗号化アルゴリズム121のアイデンティティは、暗号化されたコード118自体からは明らかにならない場合がある。一例では、暗号化コプロセッサ206は、信頼の基点として振る舞い、特定のプロプライエタリな暗号化アルゴリズム121をセキュアな要素に渡す前に、これを有効化する。 At box 312 , encryption coprocessor 206 decrypts encrypted code 118 . For example, encryption coprocessor 206 can utilize a particular one of predetermined encryption algorithms 218 (FIG. 2A) along with root key pair 215 associated with the entity to perform decryption. . In decrypting encrypted code 118, encryption coprocessor 206 obtains encryption algorithm 121 (FIG. 1) in unencrypted form. In some examples, encryption algorithm 121 may be different than predetermined encryption algorithm 218 . In another example, encryption algorithm 121 may be one of predetermined encryption algorithms 218, but the identity of encryption algorithm 121 is not apparent from encrypted code 118 itself. Sometimes. In one example, cryptographic coprocessor 206 acts as a root of trust, validating certain proprietary cryptographic algorithms 121 before passing them to the secure element.

四角315では、クライアント・アプリケーション203は、暗号化コプロセッサ206による後続の暗号化のために情報を暗号化コプロセッサ206に提供する。例えば、情報は、特定の決済取引に関連してもよく、限定使用の決済クリデンシャル236(図2A)又は限定使用の鍵、予測不可能な数字、連続する数字、モノトニック・カウンタ値、タイムスタンプ、取引金額、及び/又は他の情報などのデータを含んでもよい。他の例では、クライアント・アプリケーション203は、暗号化されたコード118と共に、又は暗号化されたコード118が暗号化コプロセッサ206に提供される前に、情報を暗号化コプロセッサ206に提供してもよい。この情報の一つ又は複数の項目(例えば、予測不可能な数字)は、いくつかの例では暗号化コプロセッサ206自体によって生成される場合がある。 At box 315 , client application 203 provides information to cryptographic coprocessor 206 for subsequent encryption by cryptographic coprocessor 206 . For example, the information may relate to a particular payment transaction, such as limited-use payment credentials 236 (FIG. 2A) or limited-use keys, unpredictable numbers, sequential numbers, monotonic counter values, timestamps. , transaction amount, and/or other information. In other examples, client application 203 may provide information to cryptographic coprocessor 206 along with encrypted code 118 or before encrypted code 118 is provided to cryptographic coprocessor 206 . good too. One or more items of this information (eg, unpredictable numbers) may be generated by cryptographic coprocessor 206 itself in some examples.

四角318では、暗号化コプロセッサ206は、暗号化されたコード118から四角312において復号された暗号化アルゴリズム121を使用して情報を暗号化する。この目的のため、暗号化コプロセッサ206は、エンティティ・サービス113によって供給される暗号化アルゴリズム121を実装するコードを実行し、エンティティに関連付けられるルート鍵対215からの鍵又は対称鍵を使用してもよい。この方法で、暗号化コプロセッサ206は、暗号文127を生成する(図1)。四角321では、暗号化コプロセッサ206は、暗号文127をクライアント・アプリケーション203に返す。 At box 318 , encryption coprocessor 206 encrypts information from encrypted code 118 using encryption algorithm 121 decrypted at box 312 . To this end, the Cryptographic Coprocessor 206 executes code implementing the Cryptographic Algorithm 121 supplied by the Entity Service 113 and uses a key from the Root Key Pair 215 associated with the Entity or a symmetric key to good too. In this manner, cryptographic coprocessor 206 produces ciphertext 127 (FIG. 1). At box 321 , cryptographic coprocessor 206 returns ciphertext 127 to client application 203 .

四角324では、クライアント・アプリケーション203は、暗号文127を、ネットワーク109を介してエンティティ・サービス113に送る。四角327では、エンティティ・サービス113は、暗号文127を処理する。例えば、エンティティ・サービス113は、暗号文127の署名を有効化してもよい。次いで、エンティティ・サービス113は、暗号文127を暗号化するために使用された対称鍵、又は暗号文127を暗号化するために使用された鍵対のプライベート鍵を使用して暗号文127を復号する。次いで、エンティティ・サービス113は、暗号文127の内容を検証することができる。例えば、エンティティ・サービス113は、限定使用の決済クリデンシャル236又は限定使用の鍵が有効かどうかを検証することができる。内容を検証すると、エンティティ・サービス113は、次いで対応する決済取引を認可及び/又は処理することができる。 At box 324 , client application 203 sends ciphertext 127 to entity service 113 over network 109 . At box 327 , entity service 113 processes ciphertext 127 . For example, entity service 113 may validate the signature of ciphertext 127 . Entity service 113 then decrypts ciphertext 127 using the symmetric key used to encrypt ciphertext 127 or the private key of the key pair used to encrypt ciphertext 127. do. Entity service 113 can then verify the contents of ciphertext 127 . For example, the entity service 113 can verify whether the limited-use payment credential 236 or the limited-use key is valid. Upon verifying the content, Entity Services 113 can then authorize and/or process the corresponding payment transaction.

図4に移ると、図2Aのクライアント・デバイス106を含むネットワーク環境100の様々なコンポーネント同士の相互作用の別の例を与えるシーケンス図が示されている。図4のシーケンス図は、ネットワーク環境100で採用され得る多くの異なるタイプの機能的な配置構成の一例を与えているに過ぎない。代替として、図4のシーケンス図は、ネットワーク環境100内に実装される方法の要素の例を描いているものとして見ることが可能である。 Turning to FIG. 4, shown is a sequence diagram providing another example of the interaction between various components of network environment 100, including client device 106 of FIG. 2A. The sequence diagram of FIG. 4 provides only one example of the many different types of functional arrangements that may be employed in network environment 100 . Alternatively, the sequence diagram of FIG. 4 can be viewed as depicting example elements of the method implemented within network environment 100 .

四角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にリンクするローカル(例えば、非揮発性のランダム・アクセス・メモリ)に記憶されたルックアップ・テーブル又はマッピングを有してもよい。 Beginning at box 403, entity service 113 sends encrypted code 118 (FIG. 1) to client application 203 running on client device 106 (FIG. 2A). Entity service 113 may also send encrypted data with encrypted code 118, before encrypted code 118, or after encrypted code 118, in which case the encrypted data The encrypted data is encrypted using encryption algorithm 121 (FIG. 1) encrypted within encrypted code 118 . The encrypted code 118 and encrypted data may be sent along with the signature 124 (FIG. 1). The header of signature 124 can be used to identify a particular root key pair 215 (FIG. 2A) for decrypting encrypted code 118 and encrypted data. Alternatively, entity service 113 may send a different type of key identifier. In one embodiment, client device 106 links entity service 113 to a particular root key pair 215 to verify signature 124 and to decrypt encrypted code 118 and encrypted data. It may also have a lookup table or mapping stored locally (eg, in non-volatile random access memory).

次に、四角406では、クライアント・アプリケーション203は、暗号化されたコード118を、クライアント・デバイス106の暗号化コプロセッサ206に提供する。例えば、クライアント・アプリケーション203は、暗号化されたコード118を、クライアント・データ・ストア209又は他のメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたコード118をロードし、それを検証して復号することができる。暗号化コプロセッサ206がファームウェアに実装される場合、セキュアな要素(例えば、セキュアなデータ・ストレージ)に記憶されるデータ(例えば、ルート鍵)は、セキュアな要素へのアクセスを仲介するインターフェースを介して、セキュアな要素からファームウェアの暗号化コプロセッサ206に転送されてもよい。データ(例えば、ルート鍵)は、ファームウェアの暗号化コプロセッサ206が、検証及び復号などの機能を実施できるようにする。 Next, at box 406 , client application 203 provides encrypted code 118 to cryptographic coprocessor 206 of client device 106 . For example, client application 203 may store encrypted code 118 in client data store 209 or other memory, and send commands to cryptographic coprocessor 206 to load encrypted code 118. can be verified and decrypted. When cryptographic coprocessor 206 is implemented in firmware, data (e.g., root keys) stored in secure elements (e.g., secure data storage) is passed through interfaces that mediate access to the secure elements. may be transferred from the secure element to the cryptographic coprocessor 206 of the firmware. The data (eg, root key) allows the firmware's cryptographic coprocessor 206 to perform functions such as verification and decryption.

四角409では、暗号化コプロセッサ206は、暗号化されたコード118と共に送られた署名124を使用して暗号化されたコード118を検証する。この目的のために、暗号化コプロセッサ206は、署名124を使用して検証を行うために、エンティティに関連付けられるルート鍵対215(図2A)を取得することができる。故に、検証手順は、暗号化されたコード118の真正性及び完全性を検証する。場合によっては、暗号化コプロセッサ206は、クライアント・デバイス106の状態を検証し、且つクライアント・デバイス106の状態に基づいて、暗号化されたコード118の復号を許可又は許可しない場合がある。例えば、暗号化コプロセッサ206は、クライアント・デバイス106がルートになっている場合、暗号化されたコード118の復号を許可しない可能性がある。検証が正常ではなかった場合、暗号化アルゴリズム121の復号と実行は進行しない。 At box 409 , cryptographic coprocessor 206 verifies encrypted code 118 using signature 124 sent with encrypted code 118 . To this end, cryptographic coprocessor 206 can obtain root key pair 215 (FIG. 2A) associated with the entity for verification using signature 124 . The verification procedure thus verifies the authenticity and integrity of the encrypted code 118 . In some cases, cryptographic coprocessor 206 may verify the state of client device 106 and, based on the state of client device 106 , allow or disallow decryption of encrypted code 118 . For example, cryptographic coprocessor 206 may disallow decryption of encrypted code 118 if client device 106 is rooted. If the verification was not successful, decryption and execution of the encryption algorithm 121 will not proceed.

四角412では、暗号化コプロセッサ206は、暗号化されたコード118を復号する。例えば、暗号化コプロセッサ206は、復号を実施するために、所定の暗号化アルゴリズム218(図2A)のうち特定の一つを、エンティティに関連付けられるルート鍵対215と共に利用することが可能である。暗号化されたコード118を復号する際、暗号化コプロセッサ206は、暗号化アルゴリズム121を未暗号化の形態で取得する。いくつかの例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218とは異なっていてもよい。他の例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218のうちの一つである可能性があるが、暗号化アルゴリズム121のアイデンティティは、暗号化されたコード118自体からは明らかにならない場合がある。一例では、暗号化コプロセッサ206は、信頼の基点として振る舞い、特定のプロプライエタリな暗号化アルゴリズム121をセキュアな要素に渡す前に、これを有効化する。 At box 412 , encryption coprocessor 206 decrypts encrypted code 118 . For example, encryption coprocessor 206 can utilize a particular one of predetermined encryption algorithms 218 (FIG. 2A) along with root key pair 215 associated with the entity to perform decryption. . In decrypting encrypted code 118, encryption coprocessor 206 obtains encryption algorithm 121 in unencrypted form. In some examples, encryption algorithm 121 may differ from predetermined encryption algorithm 218 . In another example, encryption algorithm 121 may be one of predetermined encryption algorithms 218, but the identity of encryption algorithm 121 is not apparent from encrypted code 118 itself. Sometimes. In one example, cryptographic coprocessor 206 acts as a root of trust, validating certain proprietary cryptographic algorithms 121 before passing them to secure elements.

四角415では、クライアント・アプリケーション203は、暗号化されたデータを、暗号化コプロセッサ206に提供する。暗号化されたデータは、任意のデータであってもよい。暗号化されたデータは、一つ又は複数の限定使用の決済クリデンシャル236(図2A)若しくは限定使用の鍵、又は決済取引に関する他の情報を含む場合がある。例えば、クライアント・アプリケーション203は、暗号化されたデータを、クライアント・データ・ストア209又は他のメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたデータをロードし、それを検証して復号することができる。 At box 415 , client application 203 provides encrypted data to encryption coprocessor 206 . The encrypted data may be arbitrary data. The encrypted data may include one or more limited-use payment credentials 236 (FIG. 2A) or limited-use keys, or other information related to the payment transaction. For example, client application 203 stores encrypted data in client data store 209 or other memory and sends commands to cryptographic coprocessor 206 to load the encrypted data; It can be verified and decrypted.

四角418では、暗号化コプロセッサ206は、暗号化されたデータ中の情報を、暗号化アルゴリズム121を使用して復号する。この目的のため、暗号化コプロセッサ206は、暗号化アルゴリズム121を実装するエンティティ供給のコードを実行し、エンティティに関連付けられるルート鍵対215からの鍵を使用してもよい。四角421では、暗号化コプロセッサ206は、復号した情報をクライアント・アプリケーション203に返す。四角424では、クライアント・アプリケーション203は、復号したデータを処理するが、これはデータを再暗号化すること、データをクライアント・データ・ストア209に記憶すること、及び/又は他のアクションを実施することを含む場合がある。 At box 418 , encryption coprocessor 206 decrypts the information in the encrypted data using encryption algorithm 121 . To this end, cryptographic coprocessor 206 executes entity-supplied code that implements cryptographic algorithm 121 and may use keys from root key pair 215 associated with the entity. At box 421 , encryption coprocessor 206 returns the decrypted information to client application 203 . At box 424, client application 203 processes the decrypted data, which may include re-encrypting the data, storing the data in client data store 209, and/or performing other actions. may include

続いて図5では、図2Bのクライアント・デバイス106を含むネットワーク環境100の様々なコンポーネント同士の相互作用の一例を与えるシーケンス図が示されている。図5のシーケンス図は、ネットワーク環境100で採用され得る多くの異なるタイプの機能的な配置構成の一例を与えているに過ぎない。代替として、図5のシーケンス図は、ネットワーク環境100内に実装される方法の要素の例を描いているものとして見ることが可能である。 Continuing with FIG. 5, a sequence diagram is shown that provides an example of the interaction between the various components of the network environment 100, including the client device 106 of FIG. 2B. The sequence diagram of FIG. 5 provides only one example of the many different types of functional arrangements that may be employed in network environment 100 . Alternatively, the sequence diagram of FIG. 5 can be viewed as depicting exemplary elements of the method implemented within network environment 100 .

四角503から始まり、エンティティ・サービス113は、暗号化されたコード118(図1)を、信頼できない実行環境250(図2B)中のクライアント・デバイス106(図2B)上で実行されるクライアント・アプリケーション203に送る。暗号化されたコード118は、署名124(図1)と共に送られてもよい。署名124のヘッダを使用して、暗号化されたコード118を復号するための特定のルート鍵対215(図2B)を識別することが可能である。代替的に、エンティティ・サービス113は、異なるタイプの鍵識別子を送ってもよい。一実施形態において、クライアント・デバイス106は、署名124を検証するため、及び暗号化されたコード118を復号するために、エンティティ・サービス113を特定のルート鍵対215にリンクするローカル(例えば、非揮発性のランダム・アクセス・メモリ)に記憶されたルックアップ・テーブル又はマッピングを有してもよい。 Beginning at box 503, entity service 113 sends encrypted code 118 (FIG. 1) to a client application running on client device 106 (FIG. 2B) in untrusted execution environment 250 (FIG. 2B). 203. Encrypted code 118 may be sent along with signature 124 (FIG. 1). A header of signature 124 can be used to identify a particular root key pair 215 (FIG. 2B) for decrypting encrypted code 118 . Alternatively, entity service 113 may send a different type of key identifier. In one embodiment, client device 106 uses a local (e.g., non It may have a lookup table or mapping stored in a volatile random access memory).

次に、四角506では、クライアント・アプリケーション203は、暗号化されたコード118を、インターフェース254(図2B)を介して、信頼できる実行環境253内で実行される信頼できるアプリケーション256に提供する。例えば、クライアント・アプリケーション203は、暗号化されたコード118を、クライアント・データ・ストア209又は他のメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたコード118をロードし、それを検証して復号することができる。 Next, at box 506 , client application 203 provides encrypted code 118 to trusted application 256 running within trusted execution environment 253 via interface 254 (FIG. 2B). For example, client application 203 may store encrypted code 118 in client data store 209 or other memory, and send commands to cryptographic coprocessor 206 to load encrypted code 118. can be verified and decrypted.

四角509では、信頼できるアプリケーション256は、暗号化されたコード118を、クライアント・デバイス106の暗号化コプロセッサ206に提供する。例えば、信頼できるアプリケーション256は、暗号化されたコード118を、クライアント・データ・ストア209のセキュアな部分又は他のセキュアなメモリに記憶すること、及びコマンドを暗号化コプロセッサ206に送って暗号化されたコード118をロードし、それを検証して復号することができる。暗号化されたコード256は、信頼できる実行環境253と暗号化コプロセッサ206との間のインターフェースを介して暗号化コプロセッサ206に提供されてもよい。 At box 509 , trusted application 256 provides encrypted code 118 to cryptographic coprocessor 206 of client device 106 . For example, trusted application 256 may store encrypted code 118 in a secure portion of client data store 209 or other secure memory and send commands to cryptographic coprocessor 206 to encrypt it. The encrypted code 118 can be loaded, verified and decrypted. Encrypted code 256 may be provided to cryptographic coprocessor 206 via an interface between trusted execution environment 253 and cryptographic coprocessor 206 .

四角512では、暗号化コプロセッサ206は、暗号化されたコード118と共に送られた署名124(図1)を使用して暗号化されたコード118を検証する。この目的のために、暗号化コプロセッサ206は、署名124を使用して検証を行うために、エンティティに関連付けられるルート鍵対215(図2B)を取得することができる。故に、検証手順は、暗号化されたコード118の真正性及び完全性を検証する。場合によっては、暗号化コプロセッサ206は、クライアント・デバイス106の状態を検証し、及びクライアント・デバイス106の状態に基づいて、暗号化されたコード118の復号を許可又は許可しない場合がある。例えば、暗号化コプロセッサ206は、クライアント・デバイス106がルートになっている場合、暗号化されたコード118の復号を許可しない可能性がある。検証が正常ではなかった場合、暗号化アルゴリズム121の復号と実行は進行しない。 At box 512 , cryptographic coprocessor 206 verifies encrypted code 118 using signature 124 ( FIG. 1 ) sent with encrypted code 118 . To this end, cryptographic coprocessor 206 can obtain root key pair 215 (FIG. 2B) associated with the entity for verification using signature 124 . The verification procedure thus verifies the authenticity and integrity of the encrypted code 118 . In some cases, cryptographic coprocessor 206 may verify the state of client device 106 and, based on the state of client device 106 , allow or disallow decryption of encrypted code 118 . For example, cryptographic coprocessor 206 may disallow decryption of encrypted code 118 if client device 106 is rooted. If the verification was not successful, decryption and execution of the encryption algorithm 121 will not proceed.

四角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に渡す前に、これを有効化する。 At box 515 , encryption coprocessor 206 decrypts encrypted code 118 . For example, encryption coprocessor 206 can utilize a particular one of predetermined encryption algorithms 218 (FIG. 2B) along with root key pair 215 associated with the entity to perform decryption. . In decrypting encrypted code 118, encryption coprocessor 206 produces encryption algorithm 121 (FIG. 1) in unencrypted form. In some examples, encryption algorithm 121 may be different than predetermined encryption algorithm 218 . In another example, encryption algorithm 121 may be one of predetermined encryption algorithms 218, but the identity of encryption algorithm 121 is not apparent from encrypted code 118 itself. Sometimes. At box 518 , cryptographic coprocessor 206 returns the decrypted code for cryptographic algorithm 121 to trusted application 256 via the interface between cryptographic coprocessor 206 and trusted execution environment 253 . In one example, cryptographic coprocessor 206 acts as a root of trust, validating certain proprietary cryptographic algorithms 121 before passing them to trusted execution environment 253 .

四角521では、クライアント・アプリケーション203は、信頼できるアプリケーション256による後続の暗号化のために情報を信頼できるアプリケーション256に提供する。例えば、情報は、特定の決済取引に関連してもよく、限定使用の決済クリデンシャル236(図2A)又は限定使用の鍵、予測不可能な数字、連続する数字、モノトニック・カウンタ値、タイムスタンプ、取引金額、及び/又は他の情報などのデータを含んでもよい。他の例では、クライアント・アプリケーション203は、暗号化されたコード118と共に、又は暗号化されたコード118が信頼できるアプリケーション256に提供される前に、情報を信頼できるアプリケーション256に提供してもよい。この情報の一つ又は複数の項目(例えば、予測不可能な数字)は、いくつかの例では暗号化コプロセッサ206又は信頼できるアプリケーション256によって生成される場合がある。 At box 521 , client application 203 provides information to trusted application 256 for subsequent encryption by trusted application 256 . For example, the information may relate to a particular payment transaction, such as limited-use payment credentials 236 (FIG. 2A) or limited-use keys, unpredictable numbers, sequential numbers, monotonic counter values, timestamps. , transaction amount, and/or other information. In other examples, client application 203 may provide information to trusted application 256 along with encrypted code 118 or before encrypted code 118 is provided to trusted application 256 . . One or more items of this information (eg, unpredictable numbers) may be generated by cryptographic coprocessor 206 or trusted application 256 in some examples.

四角524では、信頼できるアプリケーション256は、情報を、暗号化アルゴリズム121を使用して暗号化する。この目的のため、信頼できるアプリケーション256は、暗号化アルゴリズム121を実装するエンティティ供給のコードを実行し、エンティティに関連付けられるアプリケーション鍵対224からの鍵又は対称鍵を使用してもよい。この方法で、信頼できるアプリケーション256は、暗号文127を生成する(図1)。四角527では、信頼できるアプリケーション256は、暗号文127を、インターフェース254を介してクライアント・アプリケーション203に返す。 At box 524 , trusted application 256 encrypts the information using encryption algorithm 121 . To this end, trusted application 256 executes entity-supplied code that implements encryption algorithm 121 and may use a key or symmetric key from application key pair 224 associated with the entity. In this manner, trusted application 256 generates ciphertext 127 (FIG. 1). At box 527 , trusted application 256 returns ciphertext 127 to client application 203 via interface 254 .

四角530では、クライアント・アプリケーション203は、暗号文127を、ネットワーク109を介してエンティティ・サービス113に送る。四角533では、エンティティ・サービス113は、暗号文127を処理する。例えば、エンティティ・サービス113は、暗号文127の署名を有効化してもよい。次いで、エンティティ・サービス113は、暗号文127を暗号化するために使用された対称鍵、又は暗号文127を暗号化するために使用された鍵対のプライベート鍵を使用して暗号文127を復号する。次いで、エンティティ・サービス113は、暗号文127の内容を検証することができる。例えば、エンティティ・サービス113は、限定使用の決済クリデンシャル236又は限定使用の鍵が有効であることを検証することができる。内容を検証すると、エンティティ・サービス113は、次いで対応する決済取引を認可及び/又は処理することができる。 At box 530 , client application 203 sends ciphertext 127 to entity service 113 over network 109 . At box 533 , entity service 113 processes ciphertext 127 . For example, entity service 113 may validate the signature of ciphertext 127 . Entity service 113 then decrypts ciphertext 127 using the symmetric key used to encrypt ciphertext 127 or the private key of the key pair used to encrypt ciphertext 127. do. Entity service 113 can then verify the contents of ciphertext 127 . For example, the entity service 113 can verify that the limited-use payment credential 236 or the limited-use key is valid. Upon verifying the content, Entity Services 113 can then authorize and/or process the corresponding payment transaction.

次に図6を見ると、図2Bのクライアント・デバイス106を含むネットワーク環境100の様々なコンポーネント同士の相互作用の別の例を与えるシーケンス図が示されている。図6のシーケンス図は、ネットワーク環境100で採用され得る多くの異なるタイプの機能的な配置構成の一例を与えているに過ぎない。代替として、図6のシーケンス図は、ネットワーク環境100内に実装される方法の要素の例を描いているものとして見ることが可能である。 Turning now to FIG. 6, shown is a sequence diagram providing another example of the interaction between various components of network environment 100, including client device 106 of FIG. 2B. The sequence diagram of FIG. 6 provides only one example of the many different types of functional arrangements that may be employed in network environment 100 . Alternatively, the sequence diagram of FIG. 6 can be viewed as depicting example elements of the method implemented within network environment 100 .

四角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にリンクするローカル(例えば、非揮発性のランダム・アクセス・メモリ)に記憶されたルックアップ・テーブル又はマッピングを有してもよい。 Beginning at square 603, entity services 113 transmit encrypted code 118 (FIG. 1) to client applications running on client device 106 (FIG. 2B) in untrusted execution environment 250 (FIG. 2B). 203. Entity service 113 may also send encrypted data with encrypted code 118, before encrypted code 118, or after encrypted code 118, in which case the encrypted data The encrypted data is encrypted using encryption algorithm 121 (FIG. 1) encrypted within encrypted code 118 . The encrypted code 118 and encrypted data may be sent along with the signature 124 (FIG. 1). A header of signature 124 can be used to identify a particular root key pair 215 (FIG. 2B) for decrypting encrypted code 118 . Alternatively, entity service 113 may send a different type of key identifier. In one embodiment, client device 106 links entity service 113 to a particular root key pair 215 to verify signature 124 and to decrypt encrypted code 118 and encrypted data. It may also have a lookup table or mapping stored locally (eg, in non-volatile random access memory).

次に、四角606では、クライアント・アプリケーション203は、暗号化されたコード118を、インターフェース254(図2B)を介して、信頼できる実行環境253(図2B)内で実行される信頼できるアプリケーション256に提供する。 Next, at box 606, client application 203 submits encrypted code 118 to trusted application 256 running within trusted execution environment 253 (FIG. 2B) via interface 254 (FIG. 2B). offer.

四角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の復号と実行は進行しない。 At box 609 , trusted application 256 provides encrypted code 118 to cryptographic coprocessor 206 of client device 106 . For example, trusted application 256 may store encrypted code 118 in a secure portion of client data store 209 or other secure memory and send commands to cryptographic coprocessor 206 to encrypt it. The encrypted code 118 can be loaded, verified and decrypted. Encrypted code 256 may be provided to cryptographic coprocessor 206 via an interface between trusted execution environment 253 and cryptographic coprocessor 206 . At box 612 , cryptographic coprocessor 206 verifies encrypted code 118 using signature 124 sent with encrypted code 118 . To this end, cryptographic coprocessor 206 can obtain root key pair 215 associated with the entity for verification using signature 124 . The verification procedure thus verifies the authenticity and integrity of the encrypted code 118 . In some cases, cryptographic coprocessor 206 may verify the state of client device 106 and, based on the state of client device 106 , allow or disallow decryption of encrypted code 118 . For example, cryptographic coprocessor 206 may disallow decryption of encrypted code 118 if client device 106 is rooted. If the verification was not successful, decryption and execution of the encryption algorithm 121 will not proceed.

四角615では、暗号化コプロセッサ206は、暗号化されたコード118を復号する。例えば、暗号化コプロセッサ206は、復号を実施するために、所定の暗号化アルゴリズム218(図2B)のうち特定の一つを、エンティティに関連付けられるルート鍵対215と共に利用することが可能である。暗号化されたコード118を復号する際、暗号化コプロセッサ206は、暗号化アルゴリズム121を未暗号化の形態で作り出す。いくつかの例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218とは異なっていてもよい。他の例では、暗号化アルゴリズム121は、所定の暗号化アルゴリズム218のうちの一つである可能性があるが、暗号化アルゴリズム121のアイデンティティは、暗号化されたコード118自体からは明らかにならない場合がある。一例では、暗号化コプロセッサ206は、信頼の基点として振る舞い、特定のプロプライエタリな暗号化アルゴリズム121を信頼できる実行環境253に渡す前に、これを有効化する。 At box 615 , encryption coprocessor 206 decrypts encrypted code 118 . For example, encryption coprocessor 206 can utilize a particular one of predetermined encryption algorithms 218 (FIG. 2B) along with root key pair 215 associated with the entity to perform decryption. . In decrypting encrypted code 118, encryption coprocessor 206 produces encryption algorithm 121 in unencrypted form. In some examples, encryption algorithm 121 may be different than predetermined encryption algorithm 218 . In another example, encryption algorithm 121 may be one of predetermined encryption algorithms 218, but the identity of encryption algorithm 121 is not apparent from encrypted code 118 itself. Sometimes. In one example, cryptographic coprocessor 206 acts as a root of trust, validating certain proprietary cryptographic algorithms 121 before passing them to trusted execution environment 253 .

四角618では、暗号化コプロセッサ206は、暗号化アルゴリズム121用の復号されたコードを、信頼できる実行環境253と暗号化コプロセッサ206との間のインターフェースを介して、信頼できるアプリケーション256に返す。他の例では、暗号化コプロセッサ206によって暗号化されたコード118が検証されると、次いで信頼できるアプリケーション256は、暗号化されたコード118を復号する。 At box 618 , cryptographic coprocessor 206 returns the decrypted code for cryptographic algorithm 121 to trusted application 256 via the interface between trusted execution environment 253 and cryptographic coprocessor 206 . In another example, once encrypted code 118 is verified by cryptographic coprocessor 206 , trusted application 256 then decrypts encrypted code 118 .

四角621では、クライアント・アプリケーション203は、暗号化されたデータを、インターフェース254を介して信頼できるアプリケーション256に提供する。暗号化されたデータは、任意のデータであってもよい。暗号化されたデータは、一つ又は複数の限定使用の決済クリデンシャル236(図2A)若しくは限定使用の鍵、又は決済取引に関する他の情報を含む場合がある。 At box 621 , client application 203 provides encrypted data to trusted application 256 via interface 254 . The encrypted data may be arbitrary data. The encrypted data may include one or more limited-use payment credentials 236 (FIG. 2A) or limited-use keys, or other information related to the payment transaction.

四角624では、信頼できるアプリケーション256は、暗号化されたデータ中の情報を、暗号化アルゴリズム121を使用して復号する。この目的のため、信頼できるアプリケーション256は、暗号化アルゴリズム121を実装するエンティティ供給のコードを実行し、エンティティに関連付けられるアプリケーション鍵対224(図2B)からの鍵を使用してもよい。四角627では、信頼できるアプリケーション256は、復号した情報を、インターフェース254を介してクライアント・アプリケーション203に返す。四角630では、クライアント・アプリケーション203は、復号したデータを処理するが、これはデータを再暗号化すること、データをクライアント・データ・ストア209に記憶すること、及び/又は他のアクションを実施することを含む場合がある。 At box 624 , trusted application 256 decrypts the information in the encrypted data using encryption algorithm 121 . To this end, trusted application 256 may execute entity-supplied code that implements encryption algorithm 121 and use keys from application key pair 224 (FIG. 2B) associated with the entity. At box 627 , trusted application 256 returns the decrypted information to client application 203 via interface 254 . At box 630, client application 203 processes the decrypted data, which may re-encrypt the data, store the data in client data store 209, and/or perform other actions. may include

上で議論した、いくつかのソフトウェア・コンポーネントは、それぞれのコンピューティング・デバイスのメモリに記憶され、それぞれのコンピューティング・デバイスのプロセッサによって実行可能である。この点において、用語「実行可能な」は、最終的にプロセッサによって実行可能な形態にあるプログラム・ファイルを意味する。実行可能なプログラムの例としては、メモリのランダム・アクセス部分にロードしてプロセッサによって実行することができるフォーマットの、機械コードに変換可能なコンパイルされたプログラム、メモリのランダム・アクセス部分にロードしてプロセッサによって実行することができるオブジェクト・コードなど適切なフォーマットとして表現され得るソース・コード、又は別の実行可能プログラムによって解釈され、プロセッサによって実行されるようにメモリのランダム・アクセス部分において命令を生成することができるソース・コードを挙げることができる。実行可能なプログラムは、メモリのあらゆる部分又はコンポーネントに記憶することができ、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、ハード・ドライブ、ソリッドステート・ドライブ、ユニバーサル・シリアル・バス(USB)フラッシュ・ドライブ、メモリ・カード、コンパクト・ディスク(CD)若しくはデジタル・バーサタイル・ディスク(DVD)などの光学ディスク、フロッピ・ディスク、磁気テープ、又は他のメモリ・コンポーネントが挙げられる。 Some of the software components discussed above are stored in the memory of the respective computing device and executable by the processor of the respective computing device. In this regard, the term "executable" means a program file that is ultimately in a form executable by a processor. Examples of executable programs include compiled programs that can be converted to machine code in a format that can be loaded into a random-access portion of memory and executed by a processor; Source code, which may be expressed in a suitable format, such as object code, executable by a processor, or interpreted by another executable program to generate instructions in a random access portion of memory to be executed by the processor I can cite the source code that can be used. An executable program can be stored in any portion or component of memory, including random access memory (RAM), read only memory (ROM), hard drives, solid state drives, universal serial buses ( USB) flash drives, memory cards, optical discs such as compact discs (CD) or digital versatile discs (DVD), floppy discs, magnetic tapes, or other memory components.

メモリには、揮発性及び非揮発性両方の、メモリ及びデータ・ストレージ・コンポーネントが含まれる。揮発性のコンポーネントは、電力が失われるとデータ値を保持しないコンポーネントである。非揮発性のコンポーネントは、電力が失われてもデータの値を保持するコンポーネントである。故に、メモリは、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、ハード・ディスク・ドライブ、ソリッドステート・ドライブ、USBフラッシュ・ドライブ、メモリ・カード・リーダを介してアクセスされるメモリ・カード、関連付けられたフロッピ・ディスク・ドライブを介してアクセスされるフロッピ・ディスク、光学ディスク・ドライブを介してアクセスされる光学ディスク、適切なテープ・ドライブを介してアクセスされる磁気テープ、非揮発性のランダム・アクセス・メモリ(NVRAM)、他のメモリ・コンポーネント、又は、これらのメモリ・コンポーネントのうち任意の二つ以上の組合せを含むことができる。加えて、RAMは、静的ランダム・アクセス・メモリ(SRAM)、動的ランダム・アクセス・メモリ(DRAM)、又は磁気的なランダム・アクセス・メモリ(MRAM)及び他のそのようなデバイスを含むことが可能である。ROMには、プログラム可能読み取り専用メモリ(PROM)、消去可能プログラム可能読み取り専用メモリ(EPROM)、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)、又は他の同様なメモリ・デバイスが含まれる可能性がある。 Memory includes both volatile and non-volatile memory and data storage components. A volatile component is a component that does not retain its data value when power is lost. A non-volatile component is a component that retains its data value when power is lost. Thus, the memory may be random access memory (RAM), read only memory (ROM), hard disk drives, solid state drives, USB flash drives, memory accessed through memory card readers. Card, Floppy Disk Accessed Through Associated Floppy Disk Drive, Optical Disk Accessed Through Optical Disk Drive, Magnetic Tape Accessed Through Suitable Tape Drive, Non-Volatile Random Access Memory (NVRAM), other memory components, or a combination of any two or more of these memory components. Additionally, RAM may include static random access memory (SRAM), dynamic random access memory (DRAM), or magnetic random access memory (MRAM) and other such devices. is possible. ROM may include programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or other similar memory devices. There is

本明細書で説明されるアプリケーション及びシステムは、上で議論したような汎用のハードウェアによって実行されるソフトウェア又はコードとして具体化することが可能であるが、代替として、本明細書で説明されるアプリケーション及びシステムはまた、専用ハードウェア、又はソフトウェア/汎用ハードウェアと専用ハードウェアとの組合せとして具体化することもできる。専用ハードウェアとして具体化される場合、それぞれは、いくつかの技術の組合せのいずれかを採用する回路又は状態機械として実装することが可能である。これらの技術としては、限定はしないが、一つ又は複数のデータ信号を印加すると様々な論理機能を実装する論理ゲートを有するディスクリート論理回路、適切な論理ゲートを有する特定用途向け集積回路(ASIC)、フィールドプログラマブル・ゲート・アレイ(FPGA)、又は他のコンポーネントなどを挙げることができる。そのような技術は、一般的には当業者に周知であるため、結果的に本明細書では詳細に説明されていない。 The applications and systems described herein may be embodied as software or code executed by general-purpose hardware as discussed above, but alternatively, as described herein Applications and systems can also be embodied in special purpose hardware or a combination of software/general purpose and special purpose hardware. When embodied as dedicated hardware, each may be implemented as a circuit or state machine employing any combination of several techniques. These technologies include, but are not limited to, discrete logic circuits having logic gates that implement various logic functions upon application of one or more data signals, application specific integrated circuits (ASICs) having appropriate logic gates. , field programmable gate arrays (FPGAs), or other components. Such techniques are generally well known to those skilled in the art and, as a result, are not described in detail herein.

シーケンス図は、本開示の様々な実施形態の部分の実装の、機能性及び動作を示している。ソフトウェアとして具体化される場合、それぞれのブロックは、指定の論理機能を実装するためのプログラム命令を含むコードの、モジュール、セグメント、又は部分を表現することが可能である。プログラム命令は、コンピュータ・システム内のプロセッサなどの適切な実行システムによって認識可能な数値命令を含むプログラミング言語又は機械コードで記述された人間可読ステートメントを含むソース・コードの形態として具体化することが可能である。機械コードは、様々なプロセスを通じてソース・コードから変換することが可能である。例えば、機械コードは、対応するアプリケーションの実行に先立って、コンパイラを用いてソース・コードから生成することが可能である。別の例として、機械コードは、インタプリタによる実行と同時的にソース・コードから生成することが可能である。他の手法もまた使用可能である。ハードウェアとして具体化される場合、それぞれのブロックは、指定される一つ又は複数の論理機能を実装するために、回路又はいくつかの相互接続された回路を表現することが可能である。 The sequence diagrams illustrate the functionality and operation of implementations of portions of various embodiments of the present disclosure. When embodied in software, each block can represent a module, segment, or portion of code that contains program instructions for implementing specified logical functions. Program instructions may be embodied in the form of source code comprising human-readable statements written in a programming language or machine code comprising numerical instructions recognizable by a suitable execution system, such as a processor in a computer system. is. Machine code can be converted from source code through various processes. For example, machine code can be generated from source code using a compiler prior to execution of a corresponding application. As another example, machine code can be generated from source code concurrently with execution by an interpreter. Other approaches are also available. When embodied in hardware, each block can represent a circuit or several interconnected circuits to implement one or more specified logical functions.

シーケンス図は、実行の具体的な順序を示しているが、実行の順は、描かれているものとは異なっていてもよいことを理解されたい。例えば、二つ以上のブロックの実行の順序は、示されている順序に対してスクランブルされてもよい。また、連続して示される二つ以上のブロックは、同時的に、又は部分的に同時に実行することが可能である。更には、いくつかの実施形態では、シーケンス図に示されるブロックのうちの一つ又は複数は、スキップ又は省略することが可能である。加えて、実用性の向上、課金、性能測定、又はトラブルシューティング支援の提供などの目的で、あらゆる数のカウンタ、状態変数、警告セマフォ、又はメッセージが、本明細書で説明される論理フローに追加される場合がある。すべてのそのような変形例は、本開示の範囲内であることを理解されたい。 Although the sequence diagrams show a specific order of execution, it should be understood that the order of execution may differ from that depicted. For example, the order of execution of two or more blocks may be scrambled relative to the order shown. Also, two or more blocks shown in succession can be executed concurrently or with partial concurrence. Additionally, in some embodiments, one or more of the blocks shown in the sequence diagrams may be skipped or omitted. Additionally, any number of counters, state variables, warning semaphores, or messages may be added to the logic flow described herein for purposes such as improving utility, billing, measuring performance, or providing troubleshooting assistance. may be It is to be understood that all such variations are within the scope of this disclosure.

また、ソフトウェア又はコードを含む、本明細書で説明されるあらゆるロジック又はアプリケーションは、コンピュータ・システム又は他のシステム内のプロセッサなどの命令実行システムによる、又はそれと組み合わせた使用に向けて、任意の非一時的なコンピュータ可読媒体として具体化することが可能である。この意味で、ロジックは、コンピュータ可読媒体からフェッチされ、命令実行システムによって実行されることが可能な、命令及び宣言を含んでいるステートメントを含むことが可能である。本開示のコンテキストでは、「コンピュータ可読媒体」は、命令実行システムによる、又はそれと組み合わせた使用に向けて、本明細書で説明されるロジック又はアプリケーションを、含むこと、記憶すること、又は維持することが可能な、あらゆる媒体であることができる。その上、複数のコンピューティング・デバイスにまたがって配置される分散型のコンピュータ可読媒体の集合(例えば、ストレージ・エリア・ネットワーク又は分散型若しくはクラスタ化されたファイルシステム若しくはデータベース)はまた、集合的に、単一の非一時的なコンピュータ可読媒体とも考えることができる。 Also, any logic or application described herein, including software or code, may be used by or in combination with an instruction execution system, such as a processor in a computer system or other system, in any non-compliant form. It can be embodied as a transitory computer-readable medium. In this sense, logic can include statements, including instructions and declarations, that can be fetched from a computer-readable medium and executed by an instruction execution system. In the context of this disclosure, a "computer-readable medium" contains, stores, or maintains the logic or applications described herein for use by or in conjunction with an instruction execution system. can be any medium in which Moreover, a distributed collection of computer-readable media located across multiple computing devices (e.g., a storage area network or a distributed or clustered file system or database) is also collectively , can also be considered as a single non-transitory computer-readable medium.

コンピュータ可読媒体は、磁気、光学、又は半導体の媒体など、多くの物理的媒体のいずれかを含むことが可能である。適切なコンピュータ可読媒体のより具体的な例としては、限定はしないが、磁気テープ、磁気フロッピ・ディスケット、磁気ハード・ドライブ、メモリ・カード、ソリッドステート・ドライブ、USBフラッシュ・ドライブ、又は光学ディスクが挙げられよう。また、コンピュータ可読媒体は、静的ランダム・アクセス・メモリ(SRAM)及び動的ランダム・アクセス・メモリ(DRAM)又は磁気的なランダム・アクセス・メモリ(MRAM)を含む、ランダム・アクセス・メモリ(RAM)であることができる。加えて、コンピュータ可読媒体は、読み取り専用メモリ(ROM)、プログラム可能読み取り専用メモリ(PROM)、消去可能プログラム可能読み取り専用メモリ(EPROM)、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)、又は他のタイプのメモリ・デバイスであることが可能である。 Computer readable media can include any of a number of physical media such as magnetic, optical, or semiconductor media. More specific examples of suitable computer-readable media include, but are not limited to, magnetic tapes, magnetic floppy diskettes, magnetic hard drives, memory cards, solid state drives, USB flash drives, or optical discs. Let me mention The computer-readable medium also includes random access memory (RAM), including static random access memory (SRAM) and dynamic random access memory (DRAM) or magnetic random access memory (MRAM). ). Additionally, the computer readable medium may be read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), or other type of memory device.

更には、本明細書で説明される、あらゆるロジック又はアプリケーションは、多様な方法で実装され、構造化することが可能である。例えば、説明される一つ又は複数のアプリケーションは、単一のアプリケーションの、モジュール又はコンポーネントとして実装することが可能である。更には、本明細書で説明される一つ又は複数のアプリケーションは、共有されたコンピューティング・デバイス若しくは別個のコンピューティング・デバイス、又はそれらの組合せにおいて、実行することが可能である。例えば、本明細書で説明される複数のアプリケーションは、同一のコンピューティング・デバイスにおいて、又は同一のコンピューティング環境103内の複数のコンピューティング・デバイスにおいて、実行することが可能である。 Moreover, any logic or application described herein can be implemented and structured in a variety of ways. For example, one or more of the described applications could be implemented as modules or components of a single application. Moreover, one or more applications described herein can run on a shared computing device or separate computing devices, or a combination thereof. For example, multiple applications described herein may execute on the same computing device or on multiple computing devices within the same computing environment 103 .

「X、Y、又はZのうちの少なくとも一つ」という言い回しなどの、選言的な語句は、そうではないと明言されない限り、項目、用語などがX、Y、若しくはZのいずれかであり得る、又はそのいずれか(例えば、X、Y、又はZ)の組合せであり得ることを提示するために一般的に使用されるようなコンテキストで、理解される。故に、そのような選言的な語句は、一般的に、特定の実施形態が、Xのうちの少なくとも一つ、Yのうちの少なくとも一つ、又はZのうちの少なくとも一つのそれぞれが存在するよう要求していることを含意するよう意図されておらず、またそのように含意してはならない。 Disjunctive phrases, such as the phrase "at least one of X, Y, or Z," imply that items, terms, etc. are either X, Y, or Z, unless stated otherwise. It is understood in the context as commonly used to suggest that it can be obtained or a combination of any of them (eg, X, Y, or Z). Thus, such disjunctive phrases generally mean that certain embodiments are present when at least one of X, at least one of Y, or at least one of Z is present. It is not intended, nor should it be implied, that you require

本開示の実施形態の例は、次のように説明することができる。 An example embodiment of the present disclosure can be described as follows.

実施形態1
プロセッサ、メモリ、及び暗号化コプロセッサを含むコンピューティング・デバイスと、メモリに記憶された機械可読命令であって、プロセッサによって実行されると、コンピューティング・デバイスに、少なくとも、ネットワークを介してサービスから暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化コプロセッサによって、暗号化されたコードを復号することと、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、暗号文を、ネットワークを介してサービスに送ることとを行わせる、機械可読命令とを備える、システム。
Embodiment 1
A computing device that includes a processor, a memory, and a cryptographic coprocessor, and machine-readable instructions stored in the memory that, when executed by the processor, cause the computing device to perform at least a service over a network. receiving encrypted code implementing an encryption algorithm; decrypting the encrypted code by an encryption coprocessor; executing the decrypted code by an encryption coprocessor to perform encryption; machine-readable instructions for generating ciphertext containing information encrypted using an encryption algorithm; and sending the ciphertext to a service over a network.

実施形態2
暗号化コプロセッサが、Trusted Platform Module(TPM)標準の、あるバージョンに準拠する、実施形態1に記載のシステム。
Embodiment 2
2. The system of embodiment 1, wherein the cryptographic coprocessor conforms to a version of the Trusted Platform Module (TPM) standard.

実施形態3
暗号化コプロセッサが、暗号化されたコードを復号する前に、コンピューティング・デバイスの状態を検証するように構成される、実施形態1に記載のシステム。
Embodiment 3
2. The system of embodiment 1, wherein the cryptographic coprocessor is configured to verify the state of the computing device prior to decrypting the encrypted code.

実施形態4
サービスが、あるエンティティによって運用され、暗号化アルゴリズムが、エンティティにより好まれる暗号化アルゴリズムである、実施形態1に記載のシステム。
Embodiment 4
2. The system of embodiment 1, wherein the service is operated by an entity and the encryption algorithm is an encryption algorithm preferred by the entity.

実施形態5
暗号化コプロセッサが、復号されたコードを実行する前に、暗号化されたコードが、所定の複数の信頼できるエンティティからの、あるエンティティによって署名されることを検証するように構成される、実施形態1に記載のシステム。
Embodiment 5
An implementation wherein the cryptographic coprocessor is configured to verify that the encrypted code is signed by an entity from a predetermined plurality of trusted entities before executing the decrypted code A system according to aspect 1.

実施形態6
暗号化されたコードが、暗号化されたコードを生成したエンティティに関連付けられた暗号化コプロセッサのルート鍵を使用して復号される、実施形態1に記載のシステム。
Embodiment 6
2. The system of embodiment 1, wherein the encrypted code is decrypted using a cryptographic coprocessor root key associated with the entity that generated the encrypted code.

実施形態7
サービスが、あるエンティティに関連付けられる第1のサービス及び第2のサービスを含み、暗号化されたコードが第1のサービスから受信され、暗号文が第2のサービスに送られる、実施形態1に記載のシステム。
Embodiment 7
2. Embodiment 1 as described in embodiment 1, wherein the services include a first service and a second service associated with an entity, wherein the encrypted code is received from the first service and the ciphertext is sent to the second service. system.

実施形態8
暗号化コプロセッサが、コンピューティング・デバイス内のファームウェアに実装され、データがインターフェースを介してコンピューティング・デバイスのセキュアな要素から暗号化コプロセッサに転送されて、暗号化コプロセッサによる暗号化されたコードの復号を可能にする、実施形態1に記載のシステム。
Embodiment 8
A cryptographic coprocessor is implemented in firmware within the computing device such that data is transferred from a secure element of the computing device to the cryptographic coprocessor via an interface and encrypted by the cryptographic coprocessor 2. A system as in embodiment 1, wherein the system enables decoding of the code.

実施形態9
暗号化コプロセッサが、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、暗号化アルゴリズムが、所定の複数の暗号化アルゴリズムには含まれない、実施形態1に記載のシステム。
Embodiment 9
the cryptographic coprocessor is configured to support selection from a predetermined plurality of cryptographic algorithms for performing cryptographic operations, wherein the cryptographic algorithm is not included in the predetermined plurality of cryptographic algorithms; 2. The system of embodiment 1.

実施形態10
暗号化コプロセッサが、信頼の基点として振る舞い、暗号化アルゴリズムをコンピューティング・デバイスのセキュアな要素に転送する前に、暗号化アルゴリズムを検証するように構成される、実施形態1に記載のシステム。
Embodiment 10
2. The system of embodiment 1, wherein the cryptographic coprocessor acts as a root of trust and is configured to verify the cryptographic algorithms prior to forwarding the cryptographic algorithms to a secure element of the computing device.

実施形態11
暗号化コプロセッサによって、暗号化アルゴリズムを実装する暗号化されたコードを、クライアント・アプリケーションから受信することと、暗号化コプロセッサによって、暗号化されたコードを復号することと、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化されたデータを復号すること、又は、暗号化コプロセッサによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号文を生成することを含む、方法。
Embodiment 11
receiving, from a client application, encrypted code implementing an encryption algorithm, by a cryptographic coprocessor; decrypting the encrypted code, by a cryptographic coprocessor; , executing the decrypted code to decrypt the encrypted data using the encryption algorithm, or by the encryption coprocessor executing the decrypted code and using the encryption algorithm. generating a ciphertext using a

実施形態12
暗号化コプロセッサによって、復号されたコードを実行する前に、暗号化されたコードが、所定の複数の信頼できるエンティティからの、あるエンティティによって署名されることを検証することを更に含む、実施形態11に記載の方法。
Embodiment 12
An embodiment further comprising, prior to executing the decrypted code by the cryptographic coprocessor, verifying that the encrypted code is signed by an entity from a predetermined plurality of trusted entities. 11. The method according to 11.

実施形態13
暗号化されたコードが、クライアント・アプリケーションによって、あるエンティティによって運用されるサービスから受信され、クライアント・アプリケーションが、エンティティに関連付けられる、実施形態11に記載の方法。
Embodiment 13
12. The method of embodiment 11, wherein the encrypted code is received by a client application from a service operated by an entity, the client application being associated with the entity.

実施形態14
暗号化されたコードを復号することが、暗号化されたコードを、エンティティに関連付けられる暗号化コプロセッサのルート鍵を使用して復号することを更に含む、実施形態13に記載の方法。
Embodiment 14
14. The method of embodiment 13, wherein decrypting the encrypted code further comprises decrypting the encrypted code using a root key of an encryption coprocessor associated with the entity.

実施形態15
暗号化されたデータ及び暗号化されたコードが、暗号化アルゴリズムの識別子を含まない、実施形態13に記載の方法。
Embodiment 15
14. The method of embodiment 13, wherein the encrypted data and encrypted code do not include an encryption algorithm identifier.

実施形態16
暗号化コプロセッサが、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、暗号化アルゴリズムが、所定の複数の暗号化アルゴリズムには含まれない、実施形態13に記載の方法。
Embodiment 16
the cryptographic coprocessor is configured to support selection from a predetermined plurality of cryptographic algorithms for performing cryptographic operations, wherein the cryptographic algorithm is not included in the predetermined plurality of cryptographic algorithms; 14. The method of embodiment 13.

実施形態17
機械可読命令を含む非一時的なコンピュータ可読媒体であって、機械可読命令は第1のコンピューティング・デバイスのプロセッサによって実行されると、第1のコンピューティング・デバイスに、少なくとも、暗号化アルゴリズムを暗号化して、暗号化されたコードを作成することと、暗号化されたコードを第2のコンピューティング・デバイスに送ることと、暗号化されたコードからの暗号化アルゴリズムで生成された暗号文を第2のコンピューティング・デバイスから受信することと、暗号文を暗号化アルゴリズムで復号することとを行わせる、非一時的なコンピュータ可読媒体。
Embodiment 17
A non-transitory computer-readable medium containing machine-readable instructions that, when executed by a processor of a first computing device, instruct the first computing device to at least an encryption algorithm. encrypting to produce encrypted code; sending the encrypted code to a second computing device; and ciphertext generated with an encryption algorithm from the encrypted code. A non-transitory computer-readable medium causing receiving from a second computing device and decrypting the ciphertext with an encryption algorithm.

実施形態18
暗号化されたコードが、暗号化されたコードを復号するための暗号鍵用の識別子と共に第2のコンピューティング・デバイスに送られる、実施形態17に記載の非一時的なコンピュータ可読媒体。
Embodiment 18
18. The non-transitory computer-readable medium of embodiment 17, wherein the encrypted code is sent to the second computing device along with an identifier for a cryptographic key to decrypt the encrypted code.

実施形態19
暗号化されたコードが、暗号化アルゴリズムの識別子を含まない、実施形態17に記載の非一時的なコンピュータ可読媒体。
Embodiment 19
18. The non-transitory computer-readable medium of embodiment 17, wherein the encrypted code does not include an encryption algorithm identifier.

実施形態20
暗号化されたコードが、暗号化コプロセッサ用の標準によってサポートされる所定の複数の暗号化アルゴリズムのうちの一つを使用して暗号化される、実施形態17に記載の非一時的なコンピュータ可読媒体。
Embodiment 20
18. The non-transitory computer of embodiment 17, wherein the encrypted code is encrypted using one of a plurality of predetermined encryption algorithms supported by standards for cryptographic coprocessors. readable medium.

実施形態21
プロセッサ、及びメモリを含むコンピューティング・デバイスと、メモリに記憶された機械可読命令であって、プロセッサによって実行されると、コンピューティング・デバイスに、少なくとも、ネットワークを介してサービスから暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化されたコードを、コンピューティング・デバイスの信頼できる実行環境内で実行されるアプリケーションに提供することと、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文をアプリケーションから取得することとを行わせる、機械可読命令とを備える、システム。
Embodiment 21
A computing device including a processor and memory, and machine-readable instructions stored in the memory that, when executed by the processor, cause the computing device to implement at least a cryptographic algorithm from a service over a network. providing the encrypted code to an application executing within the trusted execution environment of the computing device; encrypting the encrypted code using the encryption algorithm; and machine-readable instructions for obtaining from an application a ciphertext containing the information obtained from the application.

実施形態22
暗号文が、コンピューティング・デバイスの信頼できない実行環境内で実行される別のアプリケーションによって取得される、実施形態21に記載のシステム。
Embodiment 22
22. The system of embodiment 21, wherein the ciphertext is obtained by another application executing within an untrusted execution environment of the computing device.

実施形態23
機械可読命令が、コンピューティング・デバイスに、少なくとも、他のアプリケーションによって、暗号文を、ネットワークを介してサービスに送ることを更に行わせる、実施形態22に記載のシステム。
Embodiment 23
23. The system of embodiment 22, wherein the machine-readable instructions further cause the computing device to send the ciphertext over the network to a service with at least another application.

実施形態24
暗号化されたコードが、コンピューティング・デバイスの信頼できる実行環境とコンピューティング・デバイスの信頼できない実行環境との間のインターフェースを介して、アプリケーションに提供される、実施形態21に記載のシステム。
Embodiment 24
22. The system of embodiment 21, wherein the encrypted code is provided to the application via an interface between the trusted execution environment of the computing device and the untrusted execution environment of the computing device.

実施形態25
信頼できる実行環境が、暗号化コプロセッサを含み、機械可読命令が、コンピューティング・デバイスに、少なくとも、暗号化されたコードを復号する前に、暗号化コプロセッサによって、暗号化されたコードの署名、及びコンピューティング・デバイスの状態を検証することを更に行わせる、実施形態21に記載のシステム。
Embodiment 25
The trusted execution environment includes a cryptographic coprocessor, and the machine-readable instructions are sent to the computing device to at least sign the encrypted code by the cryptographic coprocessor prior to decrypting the encrypted code. , and verifying the state of the computing device.

実施形態26
信頼できる実行環境が、暗号化コプロセッサを含み、機械可読命令が、コンピューティング・デバイスに、少なくとも、暗号化コプロセッサによって、アプリケーションの署名を検証することを更に行わせる、実施形態21に記載のシステム。
Embodiment 26
22. As recited in embodiment 21, wherein the trusted execution environment includes a cryptographic coprocessor and the machine-readable instructions further cause the computing device to verify a signature of the application with at least the cryptographic coprocessor. system.

実施形態27
信頼できる実行環境が、暗号化コプロセッサを含み、暗号化アルゴリズムが、暗号化コプロセッサによってサポートされる所定の複数の暗号化アルゴリズムに含まれない、実施形態21に記載のシステム。
Embodiment 27
22. The system of embodiment 21, wherein the trusted execution environment includes a cryptographic coprocessor, and the cryptographic algorithm is not included in a predetermined plurality of cryptographic algorithms supported by the cryptographic coprocessor.

実施形態28
信頼できる実行環境が、プロセッサのセキュアな仮想プロセッサ上で実行されるセキュアなオペレーティング・システムを含む、実施形態21に記載のシステム。
Embodiment 28
22. The system of embodiment 21, wherein the trusted execution environment comprises a secure operating system executing on a secure virtual processor of the processor.

実施形態29
暗号文が、決済取引に相当し、暗号文が、限定使用の決済クリデンシャルを含む、実施形態21に記載のシステム。
Embodiment 29
22. The system of embodiment 21, wherein the ciphertext corresponds to a payment transaction, and wherein the ciphertext includes limited-use payment credentials.

実施形態30
信頼できる実行環境が、暗号化されたコードを復号するために使用される鍵を記憶し、鍵はサービスを運用するエンティティに関連付けられる、実施形態21に記載のシステム。
Embodiment 30
22. The system of embodiment 21, wherein the trusted execution environment stores keys used to decrypt encrypted code, the keys associated with the entity operating the service.

実施形態31
信頼できない実行環境内で実行される第1のアプリケーションによって、暗号化されたデータ及び暗号化アルゴリズムを実装する暗号化されたコードを、ネットワークを介して受信することと、第1のアプリケーションによって、暗号化されたデータ及び暗号化されたコードを、信頼できる実行環境内で実行される第2のアプリケーションに転送することと、第2のアプリケーションによって、暗号化されたコードを復号することと、第2のアプリケーションによって、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化されたデータを復号することと、第1のアプリケーションによって、暗号化されたデータから復号された情報を、第2のアプリケーションから受信することとを含む、方法。
Embodiment 31
receiving over a network encrypted data and encrypted code implementing an encryption algorithm by a first application executing within an untrusted execution environment; forwarding the encrypted data and the encrypted code to a second application executing within the trusted execution environment; decrypting the encrypted code by the second application; executing the decrypted code by the application to decrypt the encrypted data using the encryption algorithm; and information decrypted from the encrypted data by the first application to the receiving from 2 applications.

実施形態32
暗号化されたコードを、インターフェースを使用して、第2のアプリケーションから暗号化コプロセッサに転送することと、暗号化コプロセッサを使用して暗号化されたコードの署名を検証することとを更に含む、実施形態31に記載の方法。
Embodiment 32
Further transferring encrypted code from the second application to the cryptographic coprocessor using the interface and verifying a signature of the code encrypted using the cryptographic coprocessor. 32. The method of embodiment 31, comprising:

実施形態33
復号されたコードを実行することが、暗号化コプロセッサによって実施されない、実施形態32に記載の方法。
Embodiment 33
33. The method of embodiment 32, wherein executing the decrypted code is not performed by a cryptographic coprocessor.

実施形態34
暗号化されたコードを復号することが、暗号化コプロセッサによって実施される、実施形態32に記載の方法。
Embodiment 34
33. The method of embodiment 32, wherein decrypting the encrypted code is performed by a cryptographic coprocessor.

実施形態35
暗号化コプロセッサが、所定の複数の暗号化アルゴリズムを実装するコードを含み、暗号化アルゴリズムが、所定の複数の暗号化アルゴリズムから実行される、実施形態32に記載の方法。
Embodiment 35
33. The method of embodiment 32, wherein the cryptographic coprocessor includes code implementing a plurality of predetermined cryptographic algorithms, and wherein the cryptographic algorithms are performed from a plurality of predetermined cryptographic algorithms.

実施形態36
暗号化されたコードが、あるエンティティによって運用されるサービスから受信され、第1のアプリケーション及び第2のアプリケーションが、エンティティに関連付けられる、実施形態31に記載の方法。
Embodiment 36
32. The method of embodiment 31, wherein the encrypted code is received from a service operated by an entity and the first application and the second application are associated with the entity.

実施形態37
機械可読命令を含む非一時的なコンピュータ可読媒体であって、機械可読命令はコンピューティング・デバイスのプロセッサの信頼できる実行環境内で実行されると、コンピューティング・デバイスに、少なくとも、プロセッサの信頼できない実行環境へのインターフェースを介して暗号化アルゴリズムを実装する暗号化されたコードを受信することと、暗号化されたコードを復号することと、復号されたコードを実行して、暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、暗号文を、インターフェースを介して返すこととを行わせる、非一時的なコンピュータ可読媒体。
Embodiment 37
A non-transitory computer-readable medium containing machine-readable instructions that, when executed within a trusted execution environment of a processor of a computing device, provides the computing device with at least an untrusted execution environment of the processor. Receiving encrypted code implementing an encryption algorithm via an interface to the execution environment, decrypting the encrypted code, and executing the decrypted code using the encryption algorithm a non-transitory computer-readable medium that causes a ciphertext containing encrypted information to be generated by the ciphertext and returning the ciphertext via an interface.

実施形態38
コンピューティング・デバイスが、暗号化コプロセッサと、機械可読命令であって、コンピューティング・デバイスに、少なくとも、暗号化コプロセッサを使用して暗号化されたコードの署名を検証すること、又は暗号化アルゴリズムを信頼できる実行環境に転送する前に、信頼の基点として暗号化アルゴリズムを検証することを更に行わせる、機械可読命令とを更に含む、実施形態37に記載の非一時的なコンピュータ可読媒体。
Embodiment 38
A computing device comprising a cryptographic coprocessor and machine-readable instructions to instruct the computing device to at least verify a signature of code encrypted using the cryptographic coprocessor; 38. The non-transitory computer-readable medium of embodiment 37, further comprising machine-readable instructions that further cause the cryptographic algorithm to be validated as a root of trust prior to transferring the algorithm to a trusted execution environment.

実施形態39
信頼できる実行環境が、プロセッサのセキュアな仮想プロセッサ上で実行されるセキュアなオペレーティング・システムを含む、実施形態37に記載の非一時的なコンピュータ可読媒体。
Embodiment 39
38. The non-transitory computer-readable medium of embodiment 37, wherein the trusted execution environment comprises a secure operating system executing on a secure virtual processor of the processor.

実施形態40
暗号文が、決済取引に相当し、暗号文が、限定使用の決済クリデンシャルを含む、実施形態37に記載の非一時的なコンピュータ可読媒体。
Embodiment 40
38. The non-transitory computer-readable medium of embodiment 37, wherein the ciphertext corresponds to a payment transaction, and the ciphertext includes limited-use payment credentials.

本開示の上述の実施形態は、本開示の原理を明瞭に理解するために説明された実装形態の可能な例に過ぎないことが強調されるべきである。本開示の思想及び原理から実質的に逸脱することなく上述の実施形態に対して多くの変形及び変更が成され得る。すべてのそのような変形及び変更は、本明細書において本開示の範囲内に含められ、以下の特許請求の範囲によって保護されることが意図されている。 It should be emphasized that the above-described embodiments of the disclosure are merely possible examples of implementations set forth for a clear understanding of the principles of the disclosure. Many variations and modifications may be made to the above-described embodiments without departing substantially from the spirit and principles of this disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.

Claims (20)

プロセッサ、メモリ、及び暗号化コプロセッサを含むコンピューティング・デバイスと、
前記メモリに記憶された機械可読命令であって、前記プロセッサによって実行されると、前記コンピューティング・デバイスに、少なくとも、
ネットワークを介してサービスから暗号化アルゴリズムを実装する暗号化されたコードを受信することと、
前記暗号化コプロセッサによって、前記暗号化されたコードを復号することと、
前記暗号化コプロセッサによって、前記復号されたコードを実行して、前記暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、
前記暗号文を、前記ネットワークを介して前記サービスに送ることと
を行わせる、機械可読命令と
を備える、システム。
a computing device that includes a processor, memory, and a cryptographic coprocessor;
Machine-readable instructions stored in the memory that, when executed by the processor, cause the computing device to:
receiving encrypted code implementing an encryption algorithm from a service over a network;
decrypting the encrypted code by the encryption coprocessor;
executing the decrypted code by the encryption coprocessor to generate ciphertext containing information encrypted using the encryption algorithm;
sending the ciphertext over the network to the service; and machine-readable instructions for:
前記暗号化コプロセッサが、Trusted Platform Module(TPM)標準のバージョンに準拠する、請求項1に記載のシステム。 2. The system of claim 1, wherein the cryptographic coprocessor conforms to a version of the Trusted Platform Module (TPM) standard. 前記暗号化コプロセッサが、前記暗号化されたコードを復号する前に、前記コンピューティング・デバイスの状態を検証するように構成される、請求項1又は2に記載のシステム。 3. The system of claim 1 or 2, wherein the cryptographic coprocessor is configured to verify the state of the computing device prior to decrypting the encrypted code. 前記サービスが、エンティティによって運用され、前記暗号化アルゴリズムが、前記エンティティにより好まれる暗号化アルゴリズムである、請求項1乃至3のいずれか一項に記載のシステム。 4. A system according to any preceding claim, wherein said service is operated by an entity and said encryption algorithm is an encryption algorithm preferred by said entity. 前記暗号化コプロセッサが、前記復号されたコードを実行する前に、前記暗号化されたコードが、所定の複数の信頼できるエンティティからのエンティティによって署名されることを検証するように構成される、請求項1乃至4のいずれか一項に記載のシステム。 the cryptographic coprocessor is configured to verify that the encrypted code is signed by an entity from a predetermined plurality of trusted entities before executing the decrypted code; 5. A system according to any one of claims 1-4. 前記暗号化されたコードが、前記暗号化されたコードを生成したエンティティに関連付けられた前記暗号化コプロセッサのルート鍵を使用して復号される、請求項1乃至5のいずれか一項に記載のシステム。 6. The encrypted code as claimed in any one of claims 1 to 5, wherein the encrypted code is decrypted using the cryptographic coprocessor's root key associated with the entity that generated the encrypted code. system. 前記サービスが、エンティティに関連付けられる第1のサービス及び第2のサービスを含み、前記暗号化されたコードが前記第1のサービスから受信され、前記暗号文が前記第2のサービスに送られる、請求項1乃至6のいずれか一項に記載のシステム。 The service comprises a first service and a second service associated with an entity, wherein the encrypted code is received from the first service and the ciphertext is sent to the second service. Item 7. The system according to any one of Items 1 to 6. 前記暗号化コプロセッサが、前記コンピューティング・デバイス内のファームウェアに実装され、データがインターフェースを介して前記コンピューティング・デバイスのセキュアな要素から前記暗号化コプロセッサに転送されて、前記暗号化コプロセッサによる前記暗号化されたコードの復号を可能にする、請求項1乃至7のいずれか一項に記載のシステム。 The cryptographic coprocessor is implemented in firmware within the computing device, data is transferred from the secure element of the computing device to the cryptographic coprocessor via an interface, and the cryptographic coprocessor is 8. A system as claimed in any one of the preceding claims, allowing decryption of the encrypted code by a. 前記暗号化コプロセッサが、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、前記暗号化アルゴリズムが、前記所定の複数の暗号化アルゴリズムには含まれない、請求項1乃至8のいずれか一項に記載のシステム。 wherein the cryptographic coprocessor is configured to support selection from a predetermined plurality of cryptographic algorithms for performing cryptographic operations, wherein the cryptographic algorithm is included in the predetermined plurality of cryptographic algorithms; 9. The system of any one of claims 1-8, wherein the system is not 前記暗号化コプロセッサが、信頼の基点(Root of Trust)として振る舞い、前記暗号化アルゴリズムを前記コンピューティング・デバイスのセキュアな要素に転送する前に、前記暗号化アルゴリズムを検証するように構成される、請求項1乃至9のいずれか一項に記載のシステム。 The cryptographic coprocessor acts as a Root of Trust and is configured to validate the cryptographic algorithm prior to forwarding the cryptographic algorithm to a secure element of the computing device. 10. The system according to any one of claims 1-9. 暗号化コプロセッサによって、暗号化アルゴリズムを実装する暗号化されたコードを、クライアント・アプリケーションから受信することと、
前記暗号化コプロセッサによって、前記暗号化されたコードを復号することと、
前記暗号化コプロセッサによって、前記復号されたコードを実行して、前記暗号化アルゴリズムを使用して暗号文を生成することと
を含む、方法。
receiving, by a cryptographic coprocessor, encrypted code implementing a cryptographic algorithm from a client application;
decrypting the encrypted code by the encryption coprocessor;
and executing, by the cryptographic coprocessor, the decrypted code to generate ciphertext using the encryption algorithm.
前記暗号化コプロセッサによって、前記復号されたコードを実行する前に、前記暗号化されたコードが、所定の複数の信頼できるエンティティからのエンティティによって署名されることを検証することを更に含む、請求項11に記載の方法。 further comprising, prior to executing the decrypted code by the cryptographic coprocessor, verifying that the encrypted code is signed by an entity from a predetermined plurality of trusted entities. Item 12. The method according to Item 11. 前記暗号化されたコードが、前記クライアント・アプリケーションによって、エンティティによって運用されるサービスから受信され、前記クライアント・アプリケーションが、前記エンティティに関連付けられる、請求項11又は12に記載の方法。 13. A method according to claim 11 or 12, wherein said encrypted code is received by said client application from a service operated by an entity, said client application being associated with said entity. 前記暗号化されたコードを復号することが、前記暗号化されたコードを、前記エンティティに関連付けられる前記暗号化コプロセッサのルート鍵を使用して復号することを更に含む、請求項13に記載の方法。 14. The method of claim 13, wherein decrypting the encrypted code further comprises decrypting the encrypted code using a root key of the cryptographic coprocessor associated with the entity. Method. 前記暗号化されたデータ及び前記暗号化されたコードが、前記暗号化アルゴリズムの識別子を含まない、請求項13又は14に記載の方法。 15. A method according to claim 13 or 14, wherein said encrypted data and said encrypted code do not contain an identifier of said encryption algorithm. 前記暗号化コプロセッサが、暗号化演算を実施するための所定の複数の暗号化アルゴリズムからの選択をサポートするように構成され、前記暗号化アルゴリズムが、前記所定の複数の暗号化アルゴリズムには含まれない、請求項13乃至15のいずれか一項に記載の方法。 wherein the cryptographic coprocessor is configured to support selection from a predetermined plurality of cryptographic algorithms for performing cryptographic operations, wherein the cryptographic algorithm is included in the predetermined plurality of cryptographic algorithms; 16. The method of any one of claims 13-15, wherein 命令を含むコンピュータ・プログラムであって、前記命令は、コンピューティング・デバイス内の信頼できる実行環境において実行されると、前記コンピューティング・デバイスに、少なくとも、
前記プロセッサの信頼できない実行環境へのインターフェースを介して暗号化アルゴリズムを実装する暗号化されたコードを受信することと、
前記暗号化されたコードを復号することと、
前記復号されたコードを実行して、前記暗号化アルゴリズムを使用して暗号化された情報を含む暗号文を生成することと、
前記暗号文を、前記インターフェースを介して返すことと
を行わせる、コンピュータ・プログラム。
A computer program comprising instructions that, when executed in a trusted execution environment within a computing device, cause the computing device to at least:
receiving encrypted code implementing an encryption algorithm via an interface to an untrusted execution environment of the processor;
decrypting the encrypted code;
executing the decrypted code to generate ciphertext containing information encrypted using the encryption algorithm;
and returning said ciphertext via said interface.
前記コンピューティング・デバイスが、暗号化コプロセッサを更に含み、前記命令が、前記コンピューティング・デバイスに、少なくとも、前記暗号化コプロセッサを使用して前記暗号化されたコードの署名を検証することを更に行わせる、請求項17に記載のコンピュータ・プログラム。 The computing device further includes a cryptographic coprocessor, and the instructions instruct the computing device to at least verify a signature of the encrypted code using the cryptographic coprocessor. 18. The computer program product of claim 17, causing further execution. 前記信頼できる実行環境が、前記プロセッサのセキュアな仮想プロセッサ上で実行されるセキュアなオペレーティング・システムを含む、請求項17又は18に記載のコンピュータ・プログラム。 19. A computer program product according to claim 17 or 18, wherein said trusted execution environment comprises a secure operating system running on a secure virtual processor of said processor. 前記暗号文が、決済取引に相当し、前記暗号文が、限定使用の決済クリデンシャルを含む、請求項17乃至19のいずれか一項に記載のコンピュータ・プログラム。 20. A computer program product as claimed in any one of claims 17 to 19, wherein the ciphertext corresponds to a payment transaction and the ciphertext comprises a limited-use payment credential.
JP2022520312A 2019-10-11 2020-09-30 Execution of Entity-Specific Cryptographic Code in a Cryptographic Coprocessor Active JP7385025B2 (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201962914272P 2019-10-11 2019-10-11
US201962914275P 2019-10-11 2019-10-11
US62/914,275 2019-10-11
US62/914,272 2019-10-11
US16/668,973 2019-10-30
US16/669,002 US20210111901A1 (en) 2019-10-11 2019-10-30 Executing entity-specific cryptographic code in a trusted execution environment
US16/669,002 2019-10-30
US16/668,973 US11341280B2 (en) 2019-10-11 2019-10-30 Executing entity-specific cryptographic code in a cryptographic coprocessor
PCT/US2020/053520 WO2021071719A1 (en) 2019-10-11 2020-09-30 Executing entity-specific cryptographic code in a cryptographic coprocessor

Publications (2)

Publication Number Publication Date
JP2022551586A true JP2022551586A (en) 2022-12-12
JP7385025B2 JP7385025B2 (en) 2023-11-21

Family

ID=75437590

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022520312A Active JP7385025B2 (en) 2019-10-11 2020-09-30 Execution of Entity-Specific Cryptographic Code in a Cryptographic Coprocessor

Country Status (5)

Country Link
EP (1) EP4042630A4 (en)
JP (1) JP7385025B2 (en)
KR (1) KR20220069042A (en)
CN (1) CN114556344A (en)
WO (1) WO2021071719A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001125481A (en) * 1999-10-25 2001-05-11 Toshiba Corp Cryptographic communication terminal, cryptographic communication center device, cryptographic communication system, and recording medium
JP2001338271A (en) * 2000-03-23 2001-12-07 Matsushita Electric Ind Co Ltd Ic card and ic card utilizing system
JP2004519050A (en) * 2001-02-16 2004-06-24 インフィネオン テクノロジーズ アクチエンゲゼルシャフト Security module with volatile memory for storing algorithm code

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657033B2 (en) * 2004-12-10 2010-02-02 Fiske Software Llc Cryptography related to keys
KR20090059602A (en) * 2007-12-07 2009-06-11 한국전자통신연구원 Encrypting device having session memory bus
US9026803B2 (en) * 2009-11-30 2015-05-05 Hewlett-Packard Development Company, L.P. Computing entities, platforms and methods operable to perform operations selectively using different cryptographic algorithms
CN102546562A (en) * 2010-12-22 2012-07-04 腾讯科技(深圳)有限公司 Encrypting and decrypting method and system during transmission of data in web
CN103297958B (en) * 2012-02-22 2017-04-12 华为技术有限公司 Security context establishing method, device and system
US10243727B2 (en) * 2013-10-31 2019-03-26 Ati Technologies Ulc Method and system for constant time cryptography using a co-processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001125481A (en) * 1999-10-25 2001-05-11 Toshiba Corp Cryptographic communication terminal, cryptographic communication center device, cryptographic communication system, and recording medium
JP2001338271A (en) * 2000-03-23 2001-12-07 Matsushita Electric Ind Co Ltd Ic card and ic card utilizing system
JP2004519050A (en) * 2001-02-16 2004-06-24 インフィネオン テクノロジーズ アクチエンゲゼルシャフト Security module with volatile memory for storing algorithm code

Also Published As

Publication number Publication date
KR20220069042A (en) 2022-05-26
EP4042630A1 (en) 2022-08-17
EP4042630A4 (en) 2023-10-11
CN114556344A (en) 2022-05-27
JP7385025B2 (en) 2023-11-21
WO2021071719A1 (en) 2021-04-15

Similar Documents

Publication Publication Date Title
CN111181720B (en) Service processing method and device based on trusted execution environment
CN111082934B (en) Cross-domain secure multiparty computing method and device based on trusted execution environment
US10841082B2 (en) System and method for blockchain smart contract data privacy
JP6456805B2 (en) A method and apparatus for securing keys in an unsecured computer environment that is applied to secure and manage virtualization and cloud computing.
Sanka et al. Secure data access in cloud computing
US9436812B2 (en) Platform-hardened digital rights management key provisioning
CN110266467B (en) Method and device for realizing dynamic encryption based on block height
US20170063811A1 (en) Secure Transfer and Use of Secret Material in a Shared Environment
US10880100B2 (en) Apparatus and method for certificate enrollment
US9020149B1 (en) Protected storage for cryptographic materials
CN107453880B (en) Cloud data secure storage method and system
CN110889696A (en) Storage method, device, equipment and medium for alliance block chain secret key based on SGX technology
US11783091B2 (en) Executing entity-specific cryptographic code in a cryptographic coprocessor
CN110276610B (en) Method and device for realizing dynamic encryption based on transaction offset
CN102571329A (en) Password key management
CN110263547B (en) Method and device for realizing dynamic encryption based on contract state modification sequence
US20230021749A1 (en) Wrapped Keys with Access Control Predicates
KR20140071775A (en) Cryptography key management system and method thereof
US20210111901A1 (en) Executing entity-specific cryptographic code in a trusted execution environment
JP7385025B2 (en) Execution of Entity-Specific Cryptographic Code in a Cryptographic Coprocessor
WO2022199796A1 (en) Method and computer-based system for key management
CN116886356B (en) Chip-level transparent file encryption storage system, method and equipment
Zadka et al. Cryptography
Prasad et al. Implementing Preserved Access of Cloud Networking
JP2021136686A (en) Data management method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230502

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230728

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231024

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231109

R150 Certificate of patent or registration of utility model

Ref document number: 7385025

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150