KR20220069042A - 암호화 코프로세서에서 엔티티-특정 암호화 코드 실행 - Google Patents
암호화 코프로세서에서 엔티티-특정 암호화 코드 실행 Download PDFInfo
- Publication number
- KR20220069042A KR20220069042A KR1020227013092A KR20227013092A KR20220069042A KR 20220069042 A KR20220069042 A KR 20220069042A KR 1020227013092 A KR1020227013092 A KR 1020227013092A KR 20227013092 A KR20227013092 A KR 20227013092A KR 20220069042 A KR20220069042 A KR 20220069042A
- Authority
- KR
- South Korea
- Prior art keywords
- cryptographic
- encrypted code
- code
- coprocessor
- cryptographic coprocessor
- Prior art date
Links
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 189
- 238000000034 method Methods 0.000 claims description 67
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 16
- 238000012795 verification Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 9
- 230000003993 interaction Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013478 data encryption standard Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- ZINJLDJMHCUBIP-UHFFFAOYSA-N ethametsulfuron-methyl Chemical compound CCOC1=NC(NC)=NC(NC(=O)NS(=O)(=O)C=2C(=CC=CC=2)C(=O)OC)=N1 ZINJLDJMHCUBIP-UHFFFAOYSA-N 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/126—Applying verification of the received information the source of the received data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3234—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/02—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
Abstract
암호화 코프로세서에서 엔티티-특정 암호화 코드를 실행하기 위한 다양한 실시예가 개시된다. 일 실시예에서, 암호화 알고리즘을 구현하는 암호화된 코드는 네트워크를 통해 서비스로부터 수신된다. 암호화 코프로세서는 암호화된 코드를 복호화한다. 암호화 코프로세서는 암호화 알고리즘을 사용하여 암호화되는 정보를 포함하는 암호를 생성하기 위해 복호화된 코드를 실행한다. 암호는 네트워크를 통해 서비스에 송신된다.
Description
관련 출원에 대한 교차 참조
본 출원은 2019년 10월 30일자로 출원되고, 출원 번호 제16/668,973호로 할당된 발명의 명칭이 "EXECUTING ENTITY-SPECIFIC CRYPTOGRAPHIC CODE IN A CRYPTOGRAPHIC COPROCESSOR"인 동시 계류 중인 미국 특허 출원에 대한 우선권, 및 그 이익을 주장하며, 이는 2019년 10월 11일자로 출원되고, 출원 번호 제62/914,275호로 할당된 발명의 명칭이 "EXECUTING ENTITY-SPECIFIC CRYPTOGRAPHIC CODE IN A CRYPTOGRAPHIC COPROCESSOR"인 동시 계류 중인 미국 가특허 출원의 우선권, 및 그 이익을 주장하며, 이는 전체적으로 참조에 의해 본원에 통합된다.
본 출원은 또한 2019년 10월 30일자로 출원되고, 출원 번호 제16/669,002호로 할당된 발명의 명칭이 "EXECUTING ENTITY-SPECIFIC CRYPTOGRAPHIC CODE IN A TRUSTED EXECUTION ENVIRONMENT"인 동시 계류 중인 미국 가특허 출원에 대한 우선권, 및 그 이익을 주장하며, 이는 2019년 10월 11일자로 출원되고, 출원 번호 제62/914,272호로 할당된 발명의 명칭이 "EXECUTING ENTITY-SPECIFIC CRYPTOGRAPHIC CODE IN A TRUSTED EXECUTION ENVIRONMENT"인 동시 계류 중인 미국 가특허 출원의 우선권, 및 그 이익을 주장하며, 이는 전체적으로 참조에 의해 본원에 통합된다.
다양한 여러 가지의 암호화 알고리즘이 이용가능하다. 일부 암호화 알고리즘은 대칭적이며, 이는 동일한 키가 평문을 암호화하고 암호문을 복호화하는 것 둘 다에서 사용되는 것을 의미한다. 다른 암호화 알고리즘은 비대칭적이며, 이는 상이한 관련된 키가 평문을 암호화(예를 들어, 공개 키)하고 암호문을 복호화(예를 들어, 개인 키)하기 위해 사용되는 것을 의미한다. 연산력(computing power)이 향상됨에 따라, 한때 안전하다고 생각되었던 일부 암호화 알고리즘은 이제 불안전한 것으로 간주된다. 예를 들어, 56-비트 키 길이를 갖는 데이터 암호화 표준(Data Encryption Standard; DES)은 한때 안전한 것으로 생각되었다. 그러나, 그것은 이제 무차별 대입 공격(brute-force attack)으로 쉽게 파기된다. 또한, 백도어 및/또는 다른 약점이 암호화 알고리즘에서 발견되어 그들을 모든 키 조합을 완전히 무차별-강제하는 것 없이 불안전하게 렌더링할 수 있다.
높은 가치의 데이터를 처리하는 금융 기관, 지불 발행인, 및 다른 조직은 각각 어떤 암호화 알고리즘이 선호되는지에 대한 그들 자체의 결정에 도달할 수 있다. 또한, 그들 각각의 선호된 암호화 알고리즘은 새롭게 개시된 취약성의 관점에서 시간이 경과함에 따라 변할 수 있다. 더욱이, 어떤 암호화 알고리즘이 사용되는지를 개시하지 않은 것에 보안 가치가 있을 수 있다.
시스템의 다양한 구현예가 개시되며, 시스템은: 프로세서, 메모리, 및 암호화 코프로세서를 포함하는 컴퓨팅 디바이스; 및 메모리에 저장되는 머신-판독가능 명령어를 포함하며, 머신-판독가능 명령어는, 프로세서에 의해 실행될 때, 컴퓨팅 디바이스가 적어도: 네트워크를 통해 서비스로부터 암호화 알고리즘을 구현하는 암호화된 코드를 수신하게 하고; 암호화 코프로세서에 의해, 암호화된 코드를 복호화하게 하고; 암호화 코프로세서에 의해, 암호화 알고리즘을 사용하여 암호화된 정보를 포함하는 암호(cryptogram)를 생성하기 위해 복호화된 코드를 실행하게 하고; 암호를 네트워크를 통해 스비스에 송신하게 한다. 시스템의 일부 구현예에서, 암호화 코프로세서는 신뢰된 플랫폼 모듈(Trusted Platform Module; TPM) 표준의 버전을 준수한다. 시스템의 일부 구현예에서, 암호화 코프로세서는 암호화된 코드를 복호화하기 이전에 컴퓨팅 디바이스의 상태를 검증하도록 구성된다. 시스템의 일부 구현예에서, 서비스는 엔티티에 의해 동작되고, 암호화 알고리즘은 엔티티의 선호된 암호화 알고리즘이다. 시스템의 일부 구현예에서, 암호화 코프로세서는 암호화된 코드가 복호화된 코드를 실행하기 이전에 미리정의된 복수의 신뢰된 엔티티로부터의 엔티티에 의해 서명되었는지를 검증하도록 구성된다. 시스템의 일부 구현예에서, 암호화된 코드는 암호화된 코드를 생성한 엔티티와 연관되는 암호화 코프로세서의 루트 키(root key)를 사용하여 복호화된다. 시스템의 일부 구현예에서, 서비스는 엔티티와 연관되는 제1 서비스 및 제2 서비스를 포함하고, 암호화된 코드는 제1 서비스로부터 수신되고, 암호는 제2 서비스에 송신된다. 시스템의 일부 구현예에서, 암호화 코프로세서는 컴퓨팅 디바이스에서 펌웨어로 구현되고, 데이터는 암호화 코프로세서에 의해 암호화된 코드의 복호화를 가능하게 하기 위해 인터페이스를 통해 컴퓨팅 디바이스의 보안 요소로부터 암호화 코프로세서로 전달된다. 시스템의 일부 구현예에서, 암호화 코프로세서는 암호화 동작을 수행하기 위해 미리정의된 복수의 암호화 알고리즘으로부터의 선택을 지원하도록 구성되고, 암호화 알고리즘은 미리정의된 복수의 암호화 알고리즘으로부터 배제된다. 시스템의 일부 구현예에서, 암호화 코프로세서는 암호화 알고리즘을 컴퓨팅 디바이스의 보안 요소로 전달하기 이전에 암호화 알고리즘을 검증하기 위해 신뢰 루트(root of trust)로서의 역할을 하도록 구성된다.
방법의 다양한 구현예가 개시되며, 방법은: 암호화 코프로세서에 의해, 클라이언트 애플리케이션으로부터 암호화 알고리즘을 구현하는 암호화된 코드를 수신하는 단계; 암호화 코프로세서에 의해, 암호화된 코드를 복호화하는 단계; 및 암호화 코프로세서에 의해, 암호화 알고리즘을 사용하여 암호화된 데이터를 복호화하기 위해 복호화된 코드를 실행하는 단계; 또는 암호화 코프로세서에 의해, 암호화 알고리즘을 사용하여 암호를 생성하기 위해 복호화된 코드를 실행하는 단계를 포함한다. 방법의 일부 구현예에서, 방법은, 암호화 코프로세서에 의해, 암호화된 코드가 복호화된 코드를 실행하기 이전에 미리정의된 복수의 신뢰된 엔티티로부터의 엔티티에 의해 서명되었는지를 검증하는 단계를 더 포함한다. 방법의 일부 구현예에서, 암호화된 코드는 엔티티에 의해 동작되는 서비스로부터 클라이언트 애플리케이션에 의해 수신되고, 클라이언트 애플리케이션은 엔티티와 연관된다. 방법의 일부 구현예에서, 암호화된 코드를 복호화하는 단계는 엔티티와 연관되는 암호화 코프로세서의 루트 키를 사용하여 암호화된 코드를 복호화하는 단계를 더 포함한다. 방법의 일부 구현예에서, 암호화된 데이터 및 암호화된 코드는 암호화 알고리즘의 식별자를 배제한다. 방법의 일부 구현예에서, 암호화 코프로세서는 암호화 동작을 수행하기 위해 미리정의된 복수의 암호화 알고리즘으로부터의 선택을 지원하도록 구성되고, 암호화 알고리즘은 미리정의된 복수의 암호화 알고리즘으로부터 배제된다. 방법의 일부 구현예에서, 암호화 코프로세서는 암호화 알고리즘을 컴퓨팅 디바이스의 보안 요소로 전달하기 이전에 암호화 알고리즘을 검증하기 위해 신뢰 루트로서의 역할을 하도록 구성된다.
명령어를 포함하는 컴퓨터 프로그램의 다양한 구현예가 개시되며, 이는, 프로그램이 제1 컴퓨팅 디바이스에 의해 실행될 때, 제1 컴퓨팅 디바이스가 적어도: 암호화된 코드를 생성하기 위해 암호화 알고리즘을 암호화하게 하고; 암호화된 코드를 제2 컴퓨팅 디바이스에 송신하게 하고; 제2 컴퓨팅 디바이스로부터 암호화된 코드로부터의 암호화된 알고리즘으로 생성되는 암호를 수신하게 하고; 암호화 알고리즘으로 암호를 복호화하게 한다. 컴퓨터 프로그램의 일부 구현예에서, 암호화된 코드는 암호화된 코드를 복호화하기 위한 암호화 키에 대한 식별자와 함께 제2 컴퓨팅 디바이스에 송신된다. 컴퓨터 프로그램의 일부 구현예에서, 암호화된 코드는 암호화 알고리즘의 식별자를 배제한다. 컴퓨터 프로그램의 일부 구현예에서, 암호화된 코드는 암호화 코프로세서에 대한 표준에 의해 지원되는 미리정의된 복수의 암호화 알고리즘 중 하나를 사용하여 암호화된다.
시스템의 다양한 구현예가 개시되며, 시스템은: 프로세서 및 메모리를 포함하는 컴퓨팅 디바이스; 및 메모리에 저장되는 머신-판독가능 명령어를 포함하며, 머신-판독가능 명령어는, 프로세서에 의해 실행될 때, 컴퓨팅 디바이스가 적어도: 네트워크를 통해 서비스로부터 암호화 알고리즘을 구현하는 암호화된 코드를 수신하게 하고; 암호화된 코드를 컴퓨팅 디바이스의 신뢰된 실행 환경에서 수행되는 애플리케이션에 제공하게 하고; 애플리케이션으로부터 암호화 알고리즘을 사용하여 암호화되는 정보를 포함하는 암호를 획득하게 한다. 시스템의 일부 구현예에서, 암호는 컴퓨팅 디바이스의 비신뢰된 실행 환경에서 수행되는 다른 애플리케이션에 의해 획득된다. 시스템의 일부 구현예에서, 머신-판독가능 명령어는 추가로 컴퓨팅 디바이스가 적어도 다른 애플리케에션에 의한 암호를 네트워크를 통해 서비스로 송신하게 한다. 시스템의 일부 구현예에서, 암호화된 코드는 컴퓨팅 디바이스의 신뢰된 실행 환경과 컴퓨팅 디바이스의 비신뢰된 실행 환경 사이에서 인터페이스를 통해 애플리케이션에 제공된다. 시스템의 일부 구현예에서, 신뢰된 실행 환경은 암호화 코프로세서를 포함하고, 머신-판독가능 명령어는 추가로 컴퓨팅 디바이스가, 암호화 코프로세서에 의해, 암호화된 코드를 복호화하기 이전에 암호화된 코드의 서명 및 컴퓨팅 디바이스의 상태를 적어도 검증하게 한다. 시스템의 일부 구현예에서, 신뢰된 실행 환경은 암호화 코프로세서를 포함하고, 머신-판독가능 명령어는 추가로 컴퓨팅 디바이스가, 암호화 코프로세서에 의해, 애플리케이션의 서명을 적어도 검증하게 한다. 시스템의 일부 구현예에서, 신뢰된 실행 환경은 암호화 코프로세서를 포함하고, 암호화 알고리즘은 암호화 코프로세서에 의해 지원되는 미리정의된 복수의 암호화 알고리즘에 포함되지 않는다. 시스템의 일부 구현예에서, 신뢰된 실행 환경은 프로세서의 보안 가상 프로세서 상에서 실행되는 보안 운영 체제를 포함한다. 시스템의 일부 구현예에서, 암호는 지불 거래(payment transaction)에 대응하고, 암호는 제한된 사용 지불 크리덴셜을 포함한다. 시스템의 일부 구현예에서, 신뢰된 실행 환경은 암호화된 코드를 복호화하기 위해 사용되는 키를 저장하며, 키는 서비스를 운영하는 엔티티와 연관된다.
방법의 다양한 구현예가 개시되며, 방법은: 비신뢰된 실행 환경에서 실행되는 제1 애플리케이션에 의해, 네트워크를 통해 암호화 알고리즘을 구현하는 암호화된 데이터 및 암호화된 코드를 수신하는 단계; 제1 애플리케이션에 의해, 암호화된 데이터 및 암호화된 코드를 신뢰된 실행 환경에서 실행되는 제2 애플리케이션으로 전달하는 단계; 제2 애플리케이션에 의해, 암호화된 코드를 복호화하는 단계; 제2 애플리케이션에 의해, 암호화 알고리즘을 사용하여 암호화된 데이터를 복호화하기 위해 복호화된 코드를 실행하는 단계; 및 제1 애플리케이션에 의해, 제2 애플리케이션으로부터 암호화된 데이터로부터 복호화된 정보를 수신하는 단계를 포함한다. 방법의 일부 구현예에서, 방법은 추가로 인터페이스를 사용하여 암호화된 코드를 제2 애플리케에선으로부터 암호화 코프로세서로 전달하는 단계; 및 암호화 코프로세서를 사용하여 암호화된 코드의 서명을 검증하는 단계를 포함한다. 방법의 일부 구현예에서, 복호화된 코드를 수행하는 단계는 암호화 코프로세서에 의해 수행되지 않는다. 방법의 일부 구현예에서, 암호화된 코드를 복호화하는 단계는 암호화 코프로세서에 의해 수행된다. 방법의 일부 구현예에서, 암호화 코프로세서는 미리정의된 복수의 암호화 알고리즘을 구현하는 코드를 포함하고, 암호화 알고리즘은 미리정의된 복수의 암호화 알고리즘으로부터 실행된다. 방법의 일부 구현예에서, 암호화된 코드는 엔티티에 의해 운영되는 서비스로부터 수신되고, 제1 애플리케이션 및 제2 애플리케이션은 엔티티와 연관된다.
명령어를 포함하는 컴퓨터 프로그램의 다양한 구현예가 개시되며, 이는, 컴퓨팅 디바이스의 신뢰된 실행 환경에서 실행될 때, 컴퓨팅 디바이스가 적어도: 프로세서의 비신뢰된 실행 환경에 대한 인터페이스를 통해 암호화 알고리즘을 구현하는 암호화된 코드를 수신하게 하고; 암호화된 코드를 복호화하게 하고; 암호화 알고리즘 동안 암호화되는 정보를 포함하는 암호를 생성하기 위해 복호화된 코드를 실행하게 하고; 인터페이스를 통해 암호를 반환하게 한다. 컴퓨터 프로그램의 일부 구현예에서, 컴퓨팅 디바이스는 암호화 코프로세서를 더 포함하고, 명령어는 추가로 컴퓨팅 디바이스가 적어도: 암호화 코프로세서를 사용하여 암호화된 코드의 서명을 검증하게 하거나; 암호화 알고리즘을 신뢰된 실행 환경에 전송하기 이전에 신뢰 루트로서 암호화 알고리즘을 검증하게 한다. 컴퓨터 프로그램의 일부 구현예에서, 신뢰된 실행 환경은 프로세서의 보안 가상 프로세서 상에서 실행되는 보안 운영 체제를 포함한다. 컴퓨터 프로그램의 일부 구현예에서, 암호는 지불 거래에 대응하고, 암호는 제한된 사용 지불 크리덴셜을 포함한다.
본 개시의 많은 양태는 다음의 도면을 참조하여 더 양호하게 이해될 수 있다. 도면의 구성요소는 반드시 스케일링될 필요는 없으며, 대신에 본 개시의 원리를 명확하게 예시할 시에 강조된다. 더욱이, 도면에서, 유사한 참조 번호는 수 개의 뷰 전체에 걸쳐 대응하는 부분을 지정한다.
도 1은 본 개시의 다양한 실시예에 따른 네트워크 환경의 도면이다.
도 2a는 다양한 실시예에 따른 도 1의 네트워크 환경의 클라이언트 디바이스의 도면이다.
도 2b는 다양한 실시예에 따른 도 1의 네트워크 환경의 클라이언트 디바이스의 도면이다.
도 3은 본 개시의 다양한 실시예에 따른 도 2a의 클라이언트 디바이스로 도 1의 네트워크 환경에서 구현되는 기능의 일 예를 예시하는 시퀀스 다이어그램이다.
도 4는 본 개시의 다양한 실시예에 따른 도 2a의 클라이언트 디바이스로 도 1의 네트워크 환경에서 구현되는 기능의 일 예를 예시하는 시퀀스 다이어그램이다.
도 5는 본 개시의 다양한 실시예에 따른 도 2b의 클라이언트 디바이스로 도 1의 네트워크 환경에서 구현되는 기능의 일 예를 예시하는 시퀀스 다이어그램이다.
도 6은 본 개시의 다양한 실시예에 따른 도 2b의 클라이언트 디바이스로 도 1의 네트워크 환경에서 구현되는 기능의 일 예를 예시하는 시퀀스 다이어그램이다.
도 1은 본 개시의 다양한 실시예에 따른 네트워크 환경의 도면이다.
도 2a는 다양한 실시예에 따른 도 1의 네트워크 환경의 클라이언트 디바이스의 도면이다.
도 2b는 다양한 실시예에 따른 도 1의 네트워크 환경의 클라이언트 디바이스의 도면이다.
도 3은 본 개시의 다양한 실시예에 따른 도 2a의 클라이언트 디바이스로 도 1의 네트워크 환경에서 구현되는 기능의 일 예를 예시하는 시퀀스 다이어그램이다.
도 4는 본 개시의 다양한 실시예에 따른 도 2a의 클라이언트 디바이스로 도 1의 네트워크 환경에서 구현되는 기능의 일 예를 예시하는 시퀀스 다이어그램이다.
도 5는 본 개시의 다양한 실시예에 따른 도 2b의 클라이언트 디바이스로 도 1의 네트워크 환경에서 구현되는 기능의 일 예를 예시하는 시퀀스 다이어그램이다.
도 6은 본 개시의 다양한 실시예에 따른 도 2b의 클라이언트 디바이스로 도 1의 네트워크 환경에서 구현되는 기능의 일 예를 예시하는 시퀀스 다이어그램이다.
본 개시는 엔티티와 연관되는 서비스와 통신하는 클라이언트 디바이스 상에서 엔티티-선택된 암호화 알고리즘의 사용에 관한 것이다. 예를 들어, 엔티티 예컨대 금융 기관, 지불 프로세서, 머천트(merchant) 게이트웨이, 지불 발행인, 또는 다른 엔티티는 그것에 송신되는 특정 정보가 특정 암호화 알고리즘을 사용하여 암호화되는 것을 원할 수 있다. 또한, 엔티티는 정보를 클라이언트 디바이스에 통신할 시 특정 암호화 알고리즘을 사용할 수 있다. 엔티티는 보안을 향상시키기 위해 특정 암호화 알고리즘의 신원(identity)을 비밀로 유지하기를 원할 수 있다. 또한, 엔티티는, 그 자신의 재량으로, 특정 암호화 알고리즘을 수시로 갱신하거나 변경하도록 결정할 수 있다.
제1 세트의 실시예에서, 클라이언트 디바이스 상의 신뢰된 플랫폼 모듈(trusted platform module; TPM)과 같은 암호화 코프로세서는 암호화-민첩성(crypto-agility), 또는 상이한 암호화 알고리즘을 사용하는 능력을 지원하도록 구성될 수 있다. 예를 들어, 암호화 코프로세서는 미리정의된 세트의 암호화 알고리즘을 지원할 수 있으며, 여기서 세트에 포함되는 알고리즘은 디바이스 하드웨어 제조업체, 표준 단체, 운영 체제 개발자에 의해 선택된다. 암호화 알고리즘은 하드웨어 암호화 코프로세서에 영구적으로 포함될 수 있거나 펌웨어 또는 소프트웨어 암호화 코프로세서에서 갱신될 수 있다.
미리정의된 세트에서 암호화 알고리즘을 사용하는 것 보다는, 엔티티는 상이한 암호화 알고리즘을 사용하는 것을 선호할 수 있다. 예를 들어, 엔티티에 의해 선호되는 알고리즘은 암호화 코프로세서가 생성된 이후에 해제될 수 있다. 따라서, 암호화 코프로세서는 알고리즘에 대한 내장형(embedded) 지원을 갖지 않을 것이고 암호화-민첩성(crypto-agility)에서 그 사용을 위해 프로비저닝해야 할 것이다.
설명되는 바와 같이, 다양한 실시예에서, 엔티티는 암호화 알고리즘을 구현하는 코드를 암호화-민첩성을 구비한 암호화 코프로세서를 갖는 클라이언트 디바이스에 송신할 수 있다. 암호화 알고리즘을 구현하는 코드는 그 자체가 암호화될 수 있으며, 그것에 의해 알고리즘 및/또는 그 내부 작업의 신원을 차폐할 수 있다. 그 다음, 암호화 알고리즘을 구현하는 코드는 엔티티와 연관되는 키를 사용하여 암호화 코프로세서 내에서 복호화될 수 있다. 그 다음, 암호화 코프로세서는 엔티티에 송신될 정보를 암호화하거나 엔티티로부터 송신되는 정보를 복호화하기 위해 암호화 코프로세서 내에서 코드를 실행할 수 있다. 이러한 방식으로, 클라이언트 디바이스 상에서 실행되는 애플리케이션은 암호화 알고리즘에 접근하지 못하고, 암호화 알고리즘을 구현하는 코드는 보안 방식으로 실행된다.
제2 세트의 실시예에서, 클라이언트 디바이스는 암호화 코프로세서에 더하여 별도의 신뢰된 실행 환경을 갖는다. 예를 들어, ARM-기반 디바이스는 TRUSTZONE 기능을 지원하는 보안 확장(security extension)을 포함할 수 있고, INTEL-기반 디바이스는 TRUSTED EXECUTION TECHNOLOGY 및 SGX SOFTWARE GUARD EXTENSIONS을 가질 수 있고, AMD-기반 디바이스는 PLATFORM SECURITY PROCESSOR 및 AMD SECURE EXECUTION ENVIRONMENT을 가질 수 있다. 이것은 하드웨어-기반 액세스 제어로 보안 운영 체제를 실행하는 별도의 가상 프로세서를 제공한다. 서명된 제3자 애플리케이션은 신뢰된 실행 환경내에서 실행될 수 있다. 설명되는 바와 같이, 다양한 실시예에서, 엔티티는 암호화 알고리즘을 구현하는 코드를 수신하도록 구성되는 신뢰된 실행 환경에서 실행을 위한 신뢰된 애플리케이션을 생성할 수 있으며, 여기서 코드는 그 자체가 암호화된다. 암호화 코프로세서는 코드의 진위 및 무결성을 검증하기 위해 사용될 수 있으며, 그 이후에 신뢰된 애플리케이션은 그 다음 암호화 알고리즘을 구현하는 코드를 복호화하고 엔티티에 송신될 정보를 암호화하거나 엔티티로부터 송신되는 정보를 복호화하기 위해 코드를 실행할 수 있다.
다음의 논의에서, 시스템 및 그 구성요소의 일반적인 설명이 제공된 다음에, 동일한 것의 동작의 논의가 이어진다.
도 1을 참고하면, 다양한 실시예에 따른 네트워크 환경(100)이 도시된다. 네트워크 환경(100)은 컴퓨팅 환경(103) 및 클라이언트 디바이스(106)를 포함하며, 이는 네트워크(109)를 통해 서로 데이터 통신한다. 네트워크(109)는 광역 통신망(WAN), 근거리 통신망(LAN), 개인 영역 통신망(PAN), 또는 이들의 조합을 포함할 수 있다. 이러한 네트워크는 유선 또는 무선 구성요소 또는 이들의 조합을 포함할 수 있다. 유선 네트워크는 이더넷 네트워크, 케이블 네트워크, 광섬유 네트워크, 및 전화 네트워크 예컨대 다이얼-업, 디지털 가입자 회선(DSL), 및 종합 정보 통신망(ISDN) 네트워크를 포함할 수 있다. 무선 네트워크는 셀룰러 네트워크, 위성 네트워크, IEEE(Institute of Electrical and Electronic Engineers) 802.11 무선 네트워크(즉, WI-FI®), 블루투스® 네트워크, 마이크로웨이브 전송 네트워크 뿐만 아니라, 라디오 브로드캐스트에 의존하는 다른 네트워크를 포함할 수 있다. 네트워크(109)는 또한 2개 이상의 네트워크(109)의 조합을 포함할 수 있다. 네트워크(109)의 예는 인터넷, 인트라넷, 엑스트라넷, 가상 사설 네트워크(VPN), 및 유사한 네트워크를 포함할 수 있다.
컴퓨팅 환경(103)은 엔티티 예컨대 금융 기관, 지불 프로세서, 지불 게이트웨이, 지불 발행인, 또는 다른 엔티티를 위해 또는 이들을 대신하여 운영될 수 있다. 컴퓨팅 환경(103)은 프로세서, 메모리, 및/또는 네트워크 인터페이스를 포함하는 하나 이상의 컴퓨팅 디바이스를 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스는 다른 컴퓨팅 디바이스 또는 애플리케이션을 대신하여 계산을 수행하도록 구성될 수 있다. 다른 예로서, 그러한 컴퓨팅 디바이스는 콘텐츠에 대한 요청에 응답하여 다른 컴퓨팅 디바이스에 콘텐츠를 호스팅하고/하거나 제공할 수 있다.
더욱이, 컴퓨팅 환경(103)은 하나 이상의 서버 뱅크 또는 컴퓨터 뱅크 또는 다른 장치(arrangement)에 배열될 수 있는 복수의 컴퓨팅 디바이스를 이용할 수 있다. 그러한 컴퓨팅 디바이스는 단일 설치에 위치될 수 있거나 많은 다른 지리적 위치 사이에 분산될 수 있다. 예를 들어, 컴퓨팅 환경(103)은 호스팅된 컴퓨팅 자원, 그리드 컴퓨팅 자원 또는 임의의 다른 분산된 컴퓨팅 장치를 함께 포함할 수 있는 복수의 컴퓨팅 디바이스를 포함할 수 있다. 일부 경우에서, 컴퓨팅 환경(103)은 처리, 네트워크, 저장, 또는 다른 컴퓨팅-관련 자원의 할당된 능력이 시간이 경과함에 따라 가변될 수 있는 탄성(elastic) 컴퓨팅 자원에 대응할 수 있다.
다양한 애플리케이션 또는 다른 기능은 컴퓨팅 환경(103)에서 실행될 수 있다. 컴퓨팅 환경(103) 상에서 실행되는 구성요소는 엔티티 서비스(113) 및 다른 애플리케이션, 서비스, 프로세스, 시스템, 엔진, 또는 본원에 상세히 논의되지 않은 기능을 포함한다. 엔티티 서비스(113)는 기능 예컨대 인증, 지불 인가, 지불 처리, 또는 다른 기능을 수행하기 위해 엔티티에 의해 또는 이를 대신하여 운영될 수 있다. 하나의 엔티티 서비스(113)가 논의의 목적을 위해 설명되지만, 다수의 서비스가 이러한 기능의 일부를 수행하도록 구현될 수 있다는 점이 이해된다.
또한, 다양한 데이터는 컴퓨팅 환경(103)에 액세스가능한 데이터 저장소(116)에 저장된다. 데이터 저장소(116)는 복수의 데이터 저장소(116)를 나타낼 수 있으며, 이는 관계형 데이터베이스, 비-관계형 데이터베이스, 객체-지향 데이터베이스, 계층형 데이터베이스, 해시 테이블 또는 유사한 키-값 데이터 저장소 뿐만 아니라, 다른 데이터 저장 애플리케이션 또는 데이터 구조를 포함할 수 있다. 데이터 저장소(116)에 저장되는 데이터는 컴퓨팅 환경(103)에 의해 호스팅되는 다양한 애플리케이션의 동작과 연관된다.
클라이언트 디바이스(106)는 네트워크(109)에 결합될 수 있는 하나 이상의 클라이언트 디바이스(106)를 나타낸다. 클라이언트 디바이스(106)는 프로세서-기반 시스템 예컨대 컴퓨터 시스템을 포함할 수 있다. 그러한 컴퓨터 시스템은 개인용 컴퓨터(예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 또는 유사한 디바이스), 모바일 컴퓨팅 디바이스(예를 들어, 개인용 정보 단말기, 휴대 전화, 스마트폰, 웹 패드, 태블릿 컴퓨터 시스템, 뮤직 플레이어, 휴대용 게임 콘솔, 전자서적 리더기, 및 유사한 디바이스), 미디어 재생 디바이스(예를 들어, 미디어 스트리밍 디바이스, BluRay® 플레이어, 디지털 비디오 디스크(DVD) 플레이어, 셋-톱 박스, 및 유사한 디바이스), 비디오게임 콘솔, 또는 유사한 능력을 갖는 다른 디바이스의 형태로 구현될 수 있다. 클라이언트 디바이스(106)는 하나 이상의 디스플레이, 예컨대 액정 디스플레이(LCD), 가스 플라즈마-기반 평탄 패널 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 전기영동 잉크("E-ink") 디스플레이, 프로젝터, 또는 다른 유형의 디스플레이 디바이스를 포함할 수 있다. 일부 경우에서, 디스플레이는 클라이언트 디바이스(106)의 구성요소일 수 있고/있거나 유선 또는 무선 연결을 통해 클라이언트 디바이스(106)에 연결될 수 있다.
다음으로, 네트워크 환경(100)의 다양한 구성요소의 동작의 일반적인 설명이 제공된다. 다음의 설명은 네트워크 환경(100)의 다양한 구성요소의 동작 및 그 사이의 상호작용의 일 예를 제공하지만, 다른 동작 또는 상호작용이 또한 후속 도면의 첨부 설명에서 나중에 논의되는 바와 같이 발생할 수 있다.
시작하기 위해, 엔티티 서비스(113)는 네트워크(109)를 통해 암호화된 코드(118)를 클라이언트 디바이스(106)로 송신한다. 암호화된 코드(118)는 암호화 알고리즘(121) 및 서명(124)을 포함한다. 암호화 알고리즘(121)은 대칭 알고리즘, 비대칭 알고리즘, 또는 두 조합인 하이브리드 알고리즘에 대응할 수 있다. 암호화 알고리즘(121)의 비-제한적 예는 트리플 데이터 암호화 알고리즘(Triple DES), 고급 암호화 표준(AES), ChaCha, Salsa 20, Twofish 등을 포함할 수 있다.
일부 경우에서, 암호화 알고리즘(121)은 암호화 알고리즘(121)으로 데이터를 복호화하고/하거나 암호화하기 위해 암호화 알고리즘(121)과 함께 사용하기 위한 키를 포함할 수 있다. 대안적으로, 그러한 키(들)는 달리 클라이언트 디바이스(106)에 이용가능할 수 있다. 암호화된 코드(118)는 암호화된 코드(118)의 진위 또는 무결성을 검증하기 위해 사용될 수 있는 서명을 포함한다.
암호화된 코드(118)를 수신한 이후, 클라이언트 디바이스(106)에 이용가능한 하나 이상의 키를 사용하여, 클라이언트 디바이스(106)는 암호화된 코드(118)의 서명을 검증하고 그 다음 암호화된 코드(118)를 복호화한다. 그 다음, 클라이언트 디바이스(106)는 암호(127)를 생성하는 것과 같은 암호화 동작을 수행하기 위해 키와 함께 암호화 알고리즘(121)을 사용할 수 있다. 암호(127)는 지불 거래에 대응할 수 있고 데이터 예컨대 디바이스 기본 계정 번호, 거래 금액, 제한된-사용 지불 크리덴셜 또는 제한된-사용 키, 예측불가능 번호, 타임스탬프, 거래 카운터, 및/또는 지불 거래를 인가하기 위해 사용될 수 있는 다른 정보를 포함할 수 있다. 그 다음, 암호(127)는 네트워크(109)를 통해 엔티티 서비스(113)로 송신된다.
이제 도 2a로 돌아가면, 다양한 실시예에 따른 클라이언트 디바이스(106)의 일 예가 도시된다. 클라이언트 디바이스(106)는 클라이언트 애플리케이션(203) 및 다른 애플리케이션을 실행할 수 있다. 클라이언트 디바이스(106)는 암호화 코프로세서(206), 클라이언트 데이터 저장소(209), 및 다른 구성요소를 포함할 수 있다.
클라이언트 애플리케이션(203)은 엔티티와 연관될 수 있고 엔티티에 대한 기능을 수행하도록 사용될 수 있다. 예를 들어, 클라이언트 애플리케이션(203)은 지불 수단을 사용하여 엔티티 서비스(113)(도 1)를 통해 지불 거래를 개시하거나 관리하기 위해 실행될 수 있다. 이와 관련하여, 클라이언트 애플리케이션(203)은 암호화된 코드(118)(도 1)를 엔티티 서비스(113)로부터 수신하고, 암호(127)(도 1)가 암호화 코프로세서(206)를 통해 생성되게 하고, 그 다음 암호화된 정보를 포함하는 암호(127)를 엔티티 서비스(113)에 송신할 수 있다. 게다가, 클라이언트 애플리케이션(203)은 암호화된 데이터를 엔티티 서비스(113)로부터 수신하고, 암호화된 데이터가 암호화 코프로세서(206)를 통해 암호화된 코드(118)를 사용하여 복호화되게 하고, 그 다음 복호화된 데이터를 처리할 수 있다.
암호화 코프로세서(206)는 통합된 암호화 키를 사용하여 하드웨어를 안전하게 하고 다양한 암호화 동작을 제공하는 물리적인 또는 에뮬레이트된(emulated) 전용 마이크로컨트롤러를 나타낼 수 있다. 암호화 코프로세서(206)는 신뢰된 컴퓨팅 그룹(Trusted Computing Group; TCG)으로부터 TPM 표준의 버전을 구현할 수 있다. 암호화 코프로세서(206)는 암호화 코프로세서(206)와의 템퍼링 또는 그 우회를 방지하기 위해 하드웨어로 구현될 수 있지만, 암호화 코프로세서(206)의 기능은 하드웨어-기반 암호화 코프로세서(206)가 결여된 그러한 클라이언트 디바이스(106) 상에서 펌웨어 또는 소프트웨어로 구현될 수 있다.
암호화 코프로세서(206)는 클라이언트 디바이스(106) 또는 클라이언트 디바이스(106)에 의해 실행되는 애플리케이션을 대신하여 암호화된 기능 또는 동작을 수행할 수 있다. 예를 들어, 암호화 코프로세서(206)는 암호화 코프로세서(206)에 포함되는 의사 난수 생성기(pseudorandom number generator; PRNG) 또는 난수 생성기(random number generator; RNG)를 사용하여 난수를 생성할 수 있다. 다른 예로서, 암호화 코프로세서(206)는, 대칭 암호화 키 및 비대칭 암호화 키-쌍을 포함하는, 암호화 키 또는 키-쌍을 안전하게 생성할 수 있다. 암호화 코프로세서(206)는 또한 암호화 코프로세서(206)에 의해 생성되거나 이로 임포팅되는 암호화 키를 사용하여 데이터를 암호화하거나 복호화할 수 있다. 다른 예로서, 암호화 코프로세서(206)는 또한 클라이언트 디바이스(106)의 하드웨어 및 소프트웨어 구성의 현재 상태의 해시를 생성할 수 있으며, 이는 클라이언트 디바이스(106) 또는 클라이언트 디바이스(106)의 사용자의 신원의 원격 증명(attestation)을 허용할 수 있다.
이러한 동작을 수행하기 위해, 다양한 암호화 키는 암호화 코프로세서(206) 내에 저장될 수 있다. 이것은 보증 키-쌍(212) 및 하나 이상의 루트 키-쌍(215), 예컨대 저장 루트 키를 포함할 수 있다. 보증 키-쌍(212) 및 루트 키-쌍(들)(215)은 키를 손상(compromise)으로부터 보호하기 위해 암호화 코프로세서(206) 자체 내에 저장될 수 있다.
보증 키-쌍(212)은 암호화 코프로세서(206)에 고유한 공개 및 개인 암호화 키를 포함하는 비대칭 암호화 키-쌍이다. 보증 키-쌍(212)은 그 신원, 및 따라서 클라이언트 디바이스(106) 또는 클라이언트 디바이스(106)의 사용자의 신원을 검증하거나 이를 다른 당사자 또는 디바이스에 주장하기 위해 암호화 코프로세서(206)에 의해 사용될 수 있다. 보증 키-쌍(212)이 제3자에게 개시되어야 하는 경우, 제3자는 암호화 코프로세서(206)의 신원을 잠재적으로 위조할 수도 있을 것이다. 따라서, 보증 키-쌍(212)은 일반적으로 다른 암호화 키를 서명하기 위해 사용되며, 이는 그 다음 암호화 코프로세서(206)의 신원을 주장하거나 검증하기 위해 사용될 수 있다. 보증 키-쌍(212)의 무결성을 보존하고 보증 키-쌍(212)이 다른 암호화 코프로세서(206) 상에 설치되는 다른 보증 키-쌍(212)에 대해 고유하다는 것을 보장하기 위해, 보증 키-쌍(212)은 공장에서 암호화 코프로세서(206) 상에 프로비저닝되고 저장될 수 있다.
루트 키-쌍(들)(215)은 데이터를 암호화하고/하거나 서명하기 위해 암호화 코프로세서(206)에 의해 사용될 수 있는 비대칭 암호화 키-쌍일 수 있다. 루트 키-쌍(215)은 필요한 경우 대체될 수 있지만, 루트 키-쌍(215)으로 암호화되는 임의의 데이터는 루트 키-쌍(215)이 새로운 루트 키-쌍(215)으로 대체되는 경우 복구불가능할 수 있을 것이다. 일부 구현예에서, 암호화 코프로세서(206)는 다수의, 독립적인 루트 키-쌍(215)의 사용을 지원할 수 있다. 예를 들어, 클라이언트 디바이스(106)의 다수의 사용자는 각각의 사용자에게만 액세스가능한 그 또는 그녀의 루트 키-쌍(215)을 각각 가질 수 있을 것이다. 다른 예로서, 클라이언트 디바이스(106) 상에서 실행되는 다수의 클라이언트 애플리케이션은 클라이언트 디바이스(106) 상에 저장되는 애플리케이션-특정 데이터를 암호화하고 복호화하기 위한 그들 자신의 루트 키-쌍(215)을 가질 수 있을 것이다. 구체적으로, 엔티티 서비스(115) 및 클라이언트 애플리케이션(203)과 연관되는 엔티티는 그 자신의 루트 키-쌍(215)을 가질 수 있다. 또한, 엔티티는 이러한 루트 키-쌍(215)에 대한 액세스를 위한 그 자신의 인가 정책(authorization policy)을 정의할 수 있다. 이러한 방식으로, 엔티티는 루트 키-쌍(215)의 키 계층에 대한 배타적이 제어를 유지할 수 있다.
암호화 코프로세서(206)는 또한 복수의 미리정의된 암호화 알고리즘(218)을 포함할 수 있다. 미리정의된 암호화 알고리즘(218)은 루트 키-쌍(215) 중 특정한 것을 사용하여 데이터를 암호화하거나, 복호화하거나, 검증하기 위해 암호화 코프로세서(206)에 의해 실행될 수 있다. 미리정의된 암호화 알고리즘(218)의 세트는 표준에 의해, 암호화 코프로세서(206) 또는 클라이언트 디바이스(106)의 제조업자에 의해, 또는 클라이언트 디바이스(106)의 개발자에 의해 정의될 수 있다. 이와 같이, 미리정의된 암호화 알고리즘(218)의 세트는 암호화 코프로세서(206)를 구현하고 클라이언트 애플리케이션(203)에 의해 구성가능하지 않은 하드웨어, 펌웨어, 또는 소프트웨어 내에서 하드코딩될 수 있다. 플래그는 암호화 코프로세서(206)에 송신되어 미리정의된 암호화 알고리즘(218) 중 어느 것이 암호화 동작을 위해 선택될지를 나타낼 수 있다. 미리정의된 암호화 알고리즘(218)은 암호화된 코드(118)에서 암호화 알고리즘(121)(도 1)을 배제할 수 있다는 점이 주목된다. 그러나, 암호화된 코드(118)는 미리정의된 암호화 알고리즘(218) 중 하나를 사용하여 암호화될 수 있다.
승인된 엔티티(221)는 암호화 코프로세서(206), 예컨대 암호화 알고리즘(121) 내에서 코드를 실행하도록 승인되는 엔티티의 리스트에 대응할 수 있다. 승인된 엔티티(221)는 암호화 코프로세서(206)에 루트 키-쌍(215)을 저장하도록 허용될 수 있다. 일부 실시예에서, 승인된 엔티티(221)의 리스트가 부재할 수 있지만, 승인된 엔티티(221)는 대응하는 루트 키-쌍(215)을 가질 것이며 이는 그들이 암호화 코프로세서(206)에서 임의의 암호화 알고리즘(121)을 실행하기 위한 액세스를 가질 수 있게 한다.
또한, 다양한 데이터는 클라이언트 디바이스(106)에 액세스가능한 클라이언트 데이터 저장소(209)에 저장될 수 있다. 클라이언트 데이터 저장소(209)는 복수의 클라이언트 데이터 저장소(209)를 나타낼 수 있으며, 이는 관계형 데이터베이스, 객체-지향 데이터베이스, 계층형 데이터베이스, 해시 테이블 또는 유사한 키-값 데이터 저장소 뿐만 아니라, 다른 데이터 저장 애플리케이션 또는 데이터 구조를 포함할 수 있다. 클라이언트 데이터 저장소(209)에 저장되는 데이터는 클라이언트 디바이스(106)에 의해 실행되는 다양한 애플리케이션의 동작과 연관될 수 있다. 이러한 데이터는 하나 이상의 애플리케이션 키-쌍(224), 암호화된 인증 토큰(163), 신원 키-쌍(233), 및 잠재적으로 다른 데이터를 포함할 수 있다.
애플리케이션 키-쌍(224)은 암호화 코프로세서(206)에 의해 생성되거나 이로 임포팅되고 다양한 데이터 암호화 기능을 위해 사용될 수 있는 비대칭 암호화 키-쌍이다. 각각의 애플리케이션 키-쌍(224)은 각각의 루트 키-쌍(215)의 자식(child), 손자(grandchild), 또는 자손(descendant) 키일 수 있다. 더욱이, 각각의 루트 키-쌍(215)은 그것과 연관되는 하나 이상의 애플리케이션 키-쌍(224)을 가질 수 있다. 예를 들어, 사용자는 다양한 용도를 위해 다수의 애플리케이션 키-쌍(224)을 생성할 수도 있고, 이러한 애플리케이션 키-쌍(224)은 사용자를 위해 루트 키-쌍(215)의 서브키 또는 손자 키로서 저장될 수도 있다. 유사하게, 그 자신의 루트 키-쌍(215)을 프로비저닝한 클라이언트 애플리케이션(203)은 다양한 목적을 위해 다수의 애플리케이션 키-쌍(224)을 사용할 수도 있고, 이러한 애플리케이션 키-쌍(224) 중 하나 이상은 클라이언트 애플리케이션(203)에 대해 프로비저닝된 루트 키-쌍(215)의 서브키로서 저장될 수도 있다. 각각의 애플리케이션 키-쌍(224)은 애플리케이션 공개 키(227) 및 암호화된 개인 키(230)를 포함할 수 있다.
신원 키-쌍(233)은 그 신원을 검증하기 위해 암호화 코프로세서(206)에 의해 생성되고 사용될 수 있는 국부적으로 저장된 비대칭 암호화 키-쌍을 나타낸다. 예를 들어, 신원 키-쌍(233)의 개인 키로 서명되는 메시지는 클라이언트 디바이스(106) 상에 설치되는 암호화 코프로세서(206)의 고유한 신원 때문에 특정 클라이언트 디바이스(106)로부터 비롯되는 바와 같은 신원 공개 키로 검증될 수도 있다. 따라서, 신원 키-쌍(233)은 보증 키-쌍(212)에 대한 가명(alias)으로서 사용될 수 있다. 신원 키-쌍(233)이 유효하다는 것을 검증하기 위해, 그것은 보증 키-쌍(212)의 개인 키를 사용하여 암호화 코프로세서(206)에 의해 서명될 수 있다.
제한된-사용 지불 크리덴셜(236)은 제한된-사용 키에 대응할 수 있다. 제한된-사용 지불 크리덴셜(236)은 서버측 마스터 키에 의해 생성되는 동적 키이다. 제한된-사용 지불 크리덴셜(236) 중 하나 이상의 미리정의된 수는 초기에 클라이언트 디바이스(106)에 프로비저닝될 수 있다. 제한된-사용 지불 크리덴셜(236) 또는 제한된-사용 키로부터 유도되는 세션 키는 암호(127)가 클라이언트 디바이스(106)에 의해 생성되었다는 것을 검증하기 위해 사용될 수 있다. 제한된-사용 지불 크리덴셜(236)은 클라이언트 디바이스(106)에 송신될 수 있고, 제한된-사용 지불 크리덴셜(236) 중 각각의 각각 하나는 지불 거래를 인가하기 위해 단일 시간 또는 미리정의된 횟수로 사용될 수 있다.
도 2b 상으로 이동하면, 다양한 실시예에 따른 클라이언트 디바이스(106)의 예가 도시된다. 클라이언트 디바이스(106)는 비신뢰된(untrusted) 실행 환경(250), 신뢰된(trusted) 실행 환경(253), 및 비신뢰된 실행 환경(250)과 신뢰된 실행 환경(253) 사이의 인터페이스(254)를 포함할 수 있다. 클라이언트 애플리케이션(203)은 사용자의 제어 하에서 많은 애플리케이션과 함께 비신뢰된 실행 환경(250)에서 실행될 수 있다. 신뢰된 실행 환경(253)은 그 자신의 보안 운영 체제가 보안 가상 프로세서 또는 보안 물리 프로세서 상에서 실행되는 보안 환경이다. 비신뢰된 실행 환경(250)은 신뢰된 실행 환경(253)의 보안 가상 또는 물리 프로세서로부터 상이한 가상 또는 물리 프로세서 상에서 실행될 수 있다.
클라이언트 디바이스(106)의 하드웨어 프로세서는 하이퍼바이저(hypervisor)를 실행하거나 신뢰된 실행 환경(253)에 대한 액세스를 중제하거나 제한하는 하드웨어 확장(hardware extension)을 포함할 수 있다. 인터페이스(254)는 보안 방식으로 신뢰된 실행 환경(253)과 비신뢰된 실행 환경(250) 사이에서 데이터의 전달을 허용하기 위해 프로세서의 하드웨어 확장 또는 하이퍼바이저에 의해 지원되는 애플리케이션 프로그래밍 인터페이스(application programming interface; API)일 수 있다. 예를 들어, 인터페이스(254)는 공유된 메모리를 통해 전달되는 시스템 호출 또는 메시지를 포함할 수 있다.
엔티티와 연관되는 신뢰된 애플리케이션(256)은 신뢰된 실행 환경(253)에서 실행된다. 신뢰된 애플리케이션(256)은 엔티티에 의해 서명되고 신뢰된 실행 환경(253)에서 실행되기 전에 암호화 코프로세서(206)에 의해 검증될 수 있다. 신뢰된 애플리케이션(256)은 인터페이스(254)를 통해 클라이언트 애플리케이션(203)으로부터 암호화된 코드(118)(도 1)를 수신하고, 암호화 코프로세서(206)를 통해 서명(124)(도 1)을 사용하여 암호화된 코드(118)의 진위 및/또는 무결성을 검증하고, 암호화 코프로세서(206)를 사용하여 암호화된 코드(118)를 복호화하기 위해 실행된다.
암호화된 코드(118)가 검증되고 복호화된 이후, 그 다음, 신뢰된 애플리케이션(256)은 암호화하거나, 복호화하거나, 서명하거나, 다른 암호화 동작을 수행하기 위해 암호화 알고리즘(121)(도 1)을 사용할 수 있다. 특히, 신뢰된 애플리케이션(256)은 다양한 정보를 암호화하기 위해 암호화 알고리즘(121)을 실행시킴으로써 암호(127)를 생성할 수 있다. 예를 들어, 정보는 지불 거래와 관련될 수 있고 제한된-사용 지불 크리덴셜(236) 또는 제한된-사용 키를 포함할 수 있다.
도 2b는 단일 클라이언트 데이터 저장소(209)를 도시하지만, 클라이언트 데이터 저장소(209)는 다수의 데이터 저장소로 분할될 수 있으며, 여기서 데이터 저장소 중 하나 이상은 신뢰된 실행 환경(253)을 통해서만 액세스가능하다는 것이 이해된다.
다음으로 도 3을 참조하면, 도 2a의 클라이언트 디바이스(106)를 포함하는 네트워크 환경(100)의 다양한 구성요소 사이의 상호작용의 예를 제공하는 시퀀스 다이어그램이 도시된다. 도 3의 시퀀스 다이어그램은 단지 네트워크 환경(100)에서 이용될 수 있는 많은 상이한 유형의 기능적 배열의 예를 제공한다. 대안으로서, 도 3의 시퀀스 다이어그램은 네트워크 환경(100) 내에 구현되는 방법의 요소의 예를 도시하는 것으로서 보일 수 있다.
박스(303)로부터 시작하여, 엔티티 서비스(113) 암호화된 코드(118)(도 1)를 클라이언트 디바이스(106)(도 2a) 상에서 실행되는 클라이언트 애플리케이션(203)으로 송신한다. 암호화된 코드(118)는 서명(124)(도 1)과 함께 송신될 수 있다. 서명(124)의 헤더는 암호화된 코드(118)를 복호화하기 위한 특정 루트 키-쌍(215)을 식별하기 위해 사용될 수 있다. 대안적으로, 엔티티 서비스(113)는 상이한 유형의 키 식별자를 송신할 수 있다. 일 실시예에서, 클라이언트 디바이스(106)는 엔티티 서비스(113)를 서명(124)을 검증하고 암호화된 코드(118)를 복호화하기 위한 특정 루트 키-쌍(215)에 링크시키는 (예를 들어, 비-휘발성 랜덤-액세스 메모리에) 국부적으로 저장되는 룩업 테이블 또는 매핑을 가질 수 있다.
다음으로, 박스(306)에서, 클라이언트 애플리케이션(203)은 암호화된 코드(118)를 클라이언트 디바이스(106)의 암호화 코프로세서(206)에 제공한다. 예를 들어, 클라이언트 애플리케이션(203)은 암호화된 코드(118)를 클라이언트 데이터 저장소(209) 또는 다른 메모리에 저장하고, 암호화된 코드(118)를 로딩하고 그것을 검증 및 복호화하기 위해 커맨드(command)를 암호화 코프로세서(206)에 송신할 수 있다. 암호화 코프로세서(206)가 펌웨어로 구현되는 경우, 보안 요소(예를 들어, 보안 데이터 스토리지)에 저장되는 데이터(예를 들어, 루트 키)는 보안 요소에 대한 액세스를 중제하는 인터페이스를 통해 보안 요소로부터 펌웨어 암호화 코프로세서(206)로 전달될 수 있다. 데이터(예를 들어, 루트 키)는 펌웨어 암호화 코프로세서(206)가 검증 및 복호화와 같은 기능을 수행할 수 있게 할 수 있다.
박스(309)에서, 암호화 코프로세서(206)는 암호화된 코드(118)와 함께 송신되는 서명(124)을 사용하여 암호화된 코드(118)를 검증한다. 이를 위해, 암호화 코프로세서(206)는 서명(124)을 사용하여 검증을 수행하기 위해 엔티티와 연관되는 루트 키-쌍(215)을 획득할 수 있다. 따라서, 검증 절차는 암호화된 코드(118)의 진위 및 무결성을 검증한다. 일부 경우에서, 암호화 코프로세서(206)는 클라이언트 디바이스(106)의 상태를 검증하고 클라이언트 디바이스(106)의 상태에 기초하여 암호화된 코드(118)의 복호화를 허용하거나 허용하지 않을 수 있다. 예를 들어, 암호화 코프로세서(206)는 클라이언트 디바이스(106)가 루팅되는 경우 암호화된 코드(118)의 복호화를 허용하지 않을 수 있다. 검증이 성공적이지 않으면, 암호화 알고리즘(121)의 실행 및 복호화는 진행되지 않을 것이다.
박스(312)에서, 암호화 코프로세서(206)는 암호화된 코드(118)를 복호화한다. 예를 들어, 암호화 코프로세서(206)는 복호화를 수행하기 위해 엔티티와 연관되는 루트 키-쌍(215)과 함께 미리정의된 암호화 알고리즘(218)(도 2a) 중 특정의 것을 이용할 수 있다. 암호화된 코드(118)를 복호화할 시, 암호화 코프로세서(206)는 암호화되지 않은 형태로 암호화 알고리즘(121)(도 1)을 획득한다. 일부 예에서, 암호화 알고리즘(121)은 미리정의된 암호화 알고리즘(218)과 다를 수 있다. 다른 예에서, 암호화 알고리즘(121)은 미리정의된 암호화 알고리즘(218) 중 하나 일 수 있지만, 암호화 알고리즘(121)의 신원은 암호화된 코드(118) 자체로부터 명백하지 않을 수 있다. 일 예에서, 암호화 코프로세서(206)는 그것을 보안 요소에 넘겨주기 이전에 특정 독점 암호화 알고리즘(121)을 검증하는 신뢰 루트(root of trust)로서의 역할을 한다.
박스(315)에서, 클라이언트 애플리케이션(203)은 암호화 코프로세서(206)에 의한 후속 암호화를 위해 정보를 암호화 코프로세서(206)에 제공한다. 예를 들어, 정보는 특정 지불 거래와 관련될 수 있고 데이터 예컨대 제한된-사용 지불 크리덴셜(236)(도 2a) 또는 제한된-사용 키, 예측불가능 번호, 시퀀스 번호, 단조(monotonic) 카운터 값, 타임스탬프, 거래 금액, 및/또는 다른 정보를 포함할 수 있다. 다른 예에서, 클라이언트 애플리케이션(203)은 암호화된 코드(118)와 함께 또는 암호화된 코드(118)가 암호화 코프로세서(206)에 제공되기 이전에 정보를 암호화 코프로세서(206)에 제공할 수 있다. 이러한 정보의 하나 이상의 아이템(예를 들어, 예측불가능 번호)은 일부 예에서 암호화 코프로세서(206) 자체에 의해 생성될 수 있다.
박스(318)에서, 암호화 코프로세서(206)는 암호화된 코드(118)로부터 박스(312)에서 복호화되는 암호화 알고리즘(121)을 사용하여 정보를 암호화한다. 이를 위해, 암호화 코프로세서(206)는 엔티티 서비스(113)에 의해 공급되는 암호화 알고리즘(121)을 구현하는 코드를 실행하고 엔티티 또는 대칭 키와 연관되는 루트 키-쌍(215)으로부터의 키를 사용할 수 있다. 이러한 방식으로, 암호화 코프로세서(206)는 암호(127)(도 1)를 생성한다. 박스(321)에서, 암호화 코프로세서(206)는 암호(127)를 클라이언트 애플리케이션(203)에 반환한다.
박스(324)에서, 클라이언트 애플리케이션(203)은 암호(127)를 네트워크(109)를 통해 엔티티 서비스(113)에 송신한다. 박스(327)에서, 엔티티 서비스(113)는 암호(127)를 처리한다. 예를 들어, 엔티티 서비스(113)는 암호(127)의 서명을 검증할 수 있다. 그 다음, 엔티티 서비스(113)는 암호(127)를 암호화하기 위해 사용되는 대칭 키, 또는 암호(127)를 암호화하기 위해 사용되는 키-쌍의 개인 키를 사용하여 암호(127)를 복호화한다. 그 다음, 엔티티 서비스(113)는 암호(127)의 콘텐츠를 검증할 수 있다. 예를 들어, 엔티티 서비스(113)는 제한된-사용 지불 크리덴셜(236) 또는 제한된-사용 키가 유효하다는 것을 검증할 수 있다. 콘텐츠의 검증 시, 그 다음, 엔티티 서비스(113)는 대응하는 지불 거래를 인가하고/하거나 처리할 수 있다.
도 4로 이동하면, 도 2a의 클라이언트 디바이스(106)를 포함하는 네트워크 환경(100)의 다양한 구성요소 사이의 상호작용의 다른 예를 제공하는 시퀀스 다이어그램이 도시된다. 도 4의 시퀀스 다이어그램은 단지 네트워크 환경(100)에서 이용될 수 있는 많은 상이한 유형의 기능적 배열의 예를 제공한다. 대안으로서, 도 4의 시퀀스 다이어그램은 네트워크 환경(100) 내에 구현되는 방법의 요소의 예를 도시하는 것으로 보일 수 있다.
박스(403)로부터 시작하여, 엔티티 서비스(113)는 암호화된 코드(118)(도 1)를 클라이언트 디바이스(106)(도 2a) 상에서 실행되는 클라이언트 애플리케이션(203)으로 송신한다. 엔티티 서비스(113)는 또한 암호화된 코드(118)와 함께, 그 전에, 또는 그 이후에 암호화된 데이터를 송신할 수 있으며, 여기서 암호화된 데이터는 암호화된 코드(118) 내에 암호화되는 암호화 알고리즘(121)(도 1)을 사용하여 암호화된다. 암호화된 코드(118) 및 암호화된 데이터는 서명(124)(도 1)과 함께 송신될 수 있다. 서명(124)의 헤더는 암호화된 코드(118) 및 암호화된 데이터를 복호화하기 위한 특정 루트 키-쌍(215)을 식별하기 위해 사용될 수 있다. 대안적으로, 엔티티 서비스(113)는 상이한 유형의 키 식별자를 송신할 수 있다. 일 실시예에서, 클라이언트 디바이스(106)는 엔티티 서비스(113)를 서명(124)을 검증하고 암호화된 코드(118) 및 암호화된 데이터를 복호화하기 위한 특정 루트 키-쌍(215)에 링크시키는 (예를 들어, 비-휘발성 랜덤-액세스 메모리에) 국부적으로 저장되는 룩업 테이블 또는 매핑을 가질 수 있다.
다음으로, 박스(406)에서, 클라이언트 애플리케이션(203)은 암호화된 코드(118)를 클라이언트 디바이스(106)의 암호화 코프로세서(206)에 제공한다. 예를 들어, 클라이언트 애플리케이션(203)은 암호화된 코드(118)를 클라이언트 데이터 저장소(209) 또는 다른 메모리에 저장하고, 암호화된 코드(118)를 로딩하고 그것을 검증 및 복호화하기 위해 커맨드(command)를 암호화 코프로세서(206)에 송신할 수 있다. 암호화 코프로세서(206)가 펌웨어로 구현되는 경우, 보안 요소(예를 들어, 보안 데이터 스토리지)에 저장되는 데이터(예를 들어, 루트 키)는 보안 요소에 대한 액세스를 중제하는 인터페이스를 통해 보안 요소로부터 펌웨어 암호화 코프로세서(206)로 전달될 수 있다. 데이터(예를 들어, 루트 키)는 펌웨어 암호화 코프로세서(206)가 검증 및 복호화와 같은 기능을 수행할 수 있게 할 수 있다.
박스(409)에서, 암호화 코프로세서(206)는 암호화된 코드(118)와 함께 송신되는 서명(124)을 사용하여 암호화된 코드(118)를 검증한다. 이를 위해, 암호화 코프로세서(206)는 서명(124)을 사용하여 검증을 수행하기 위해 엔티티와 연관되는 루트 키-쌍(215)(도 2a)을 획득할 수 있다. 따라서, 검증 절차는 암호화된 코드(118)의 진위 및 무결성을 검증한다. 일부 경우에서, 암호화 코프로세서(206)는 클라이언트 디바이스(106)의 상태를 검증하고 클라이언트 디바이스(106)의 상태에 기초하여 암호화된 코드(118)의 복호화를 허용하거나 허용하지 않을 수 있다. 예를 들어, 암호화 코프로세서(206)는 클라이언트 디바이스(106)가 루팅되는 경우 암호화된 코드(118)의 복호화를 허용하지 않을 수 있다. 검증이 성공적이지 않으면, 암호화 알고리즘(121)의 실행 및 복호화는 진행되지 않을 것이다.
박스(412)에서, 암호화 코프로세서(206)는 암호화된 코드(118)를 복호화한다. 예를 들어, 암호화 코프로세서(206)는 복호화를 수행하기 위해 엔티티와 연관되는 루트 키-쌍(215)과 함께 미리정의된 암호화 알고리즘(218)(도 2a) 중 특정의 것을 이용할 수 있다. 암호화된 코드(118)를 복호화할 시, 암호화 코프로세서(206)는 암호화되지 않은 형태로 암호화 알고리즘(121)을 획득한다. 일부 예에서, 암호화 알고리즘(121)은 미리정의된 암호화 알고리즘(218)과 다를 수 있다. 다른 예에서, 암호화 알고리즘(121)은 미리정의된 암호화 알고리즘(218) 중 하나 일 수 있지만, 암호화 알고리즘(121)의 신원은 암호화된 코드(118) 자체로부터 명백하지 않을 수 있다. 일 예에서, 암호화 코프로세서(206)는 그것을 보안 요소에 넘겨주기 이전에 특정 독점(proprietary) 암호화 알고리즘(121)을 검증하는 신뢰 루트로서의 역할을 한다.
박스(415)에서, 클라이언트 애플리케이션(203)은 암호화된 데이터를 암호화 코프로세서(206)에 제공한다. 암호화된 데이터는 어떤 임의의 데이터일 수 있다. 암호화된 데이터는 하나 이상의 제한된-사용 지불 크리덴셜(236)(도 2a) 또는 제한된-사용 키, 또는 지불 거래와 관련되는 다른 정보를 포함할 수 있다. 예를 들어, 클라이언트 애플리케이션(203)은 암호화된 데이터를 클라이언트 데이터 저장소(209) 또는 다른 메모리에 저장하고, 암호화된 데이터를 로딩하고 그것을 검증 및 복호화하기 위해 커맨드(command)를 암호화 코프로세서(206)에 송신할 수 있다
박스(418)에서, 암호화 코프로세서(206)는 암호화 알고리즘(121)을 사용하여 암호화된 데이터에서 정보를 복호화한다. 이를 위해, 암호화 코프로세서(206)는 암호화 알고리즘(121)을 구현하는 엔티티-공급 코드를 실행하고 엔티티와 연관되는 루트 키-쌍(215)으로부터의 키를 사용할 수 있다. 박스(421)에서, 암호화 코프로세서(206)는 복호화된 정보를 클라이언트 애플리케이션(203)에 반환한다. 박스(424)에서, 클라이언트 애플리케이션(203)은 복호화된 데이터를 처리할 수 있으며, 이는 데이터를 재-암호화하는 단계, 데이터를 클라이언트 데이터 저장소(209)에 저장하는 단계, 및/또는 다른 액션(action)을 수행하는 단계를 포함할 수 있다.
도 5로 계속하면, 도 2b의 클라이언트 디바이스(106)를 포함하는 네트워크 환경(100)의 다양한 구성요소 사이의 상호작용의 예를 제공하는 시퀀스 다이어그램이 도시된다. 도 5의 시퀀스 다이어그램은 단지 네트워크 환경(100)에서 이용될 수 있는 많은 상이한 유형의 기능적 배열의 예를 제공한다. 대안으로서, 도 5의 시퀀스 다이어그램은 네트워크 환경(100) 내에서 구현되는 방법의 요소의 예를 도시하는 것으로서 보일 수 있다.
박스(503)로부터 시작하여, 엔티티 서비스(113)는 암호화된 코드(118)(도 1)를 비신뢰된 실행 환경(250)(도 2b)에서 클라이언트 디바이스(106)(도 2b) 상에서 실행되는 클라이언트 애플리케이션(203)으로 송신한다. 암호화된 코드(118)는 서명(124)(도 1)과 함께 송신될 수 있다. 서명(124)의 헤더는 암호화된 코드(118)를 복호화하기 위한 특정 루트 키-쌍(215)을 식별하기 위해 사용될 수 있다. 대안적으로, 엔티티 서비스(113)는 상이한 유형의 키 식별자를 송신할 수 있다. 일 실시예에서, 클라이언트 디바이스(106)는 엔티티 서비스(113)를 서명(124)을 검증하고 암호화된 코드(118)를 복호화하기 위한 특정 루트 키-쌍(215)에 링크시키는 (예를 들어, 비-휘발성 랜덤-액세스 메모리에) 국부적으로 저장되는 룩업 테이블 또는 매핑을 가질 수 있다.
다음으로, 박스(506)에서, 클라이언트 애플리케이션(203)은 암호화된 코드(118)를 인터페이스(254)(도 2b)를 통해 신뢰된 실행 환경(253)에서 실행되는 신뢰된 애플리케이션(256)에 제공한다. 예를 들어, 클라이언트 애플리케이션(203)은 암호화된 코드(118)를 클라이언트 데이터 저장소(209) 또는 다른 메모리에 저장하고, 암호화된 코드(118)를 로딩하고 그것을 검증 및 복호화하기 위해 커맨드(command)를 암호화 코프로세서(206)에 송신할 수 있다.
박스(509)에서, 신뢰된 애플리케이션(256)은 암호화된 코드(118)를 클라이언트 디바이스(106)의 암호화 코프로세서(206)에 제공한다. 예를 들어, 신뢰된 애플리케이션(256)은 암호화된 코드(118)를 클라이언트 데이터 저장소(209)의 보안 부분 또는 다른 보안 메모리에 저장하고, 암호화된 코드(118)를 로딩하고 그것을 검증 및 복호화하기 위해 커맨드(command)를 암호화 코프로세서(206)에 송신할 수 있다. 암호화된 코드(256)는 신뢰된 실행 환경(253)과 암호화 코프로세서(206) 사이의 인터페이스를 통해 암호화 코프로세서(206)에 제공될 수 있다.
박스(512)에서, 암호화 코프로세서(206)는 암호화된 코드(118)와 함께 송신되는 서명(124)(도 1)을 사용하여 암호화된 코드(118)를 검증한다. 이를 위해, 암호화 코프로세서(206)는 서명(124)을 사용하여 검증을 수행하기 위해 엔티티와 연관되는 루트 키-쌍(215)(도 2b)을 획득할 수 있다. 따라서, 검증 절차는 암호화된 코드(118)의 진위 및 무결성을 검증한다. 일부 경우에서, 암호화 코프로세서(206)는 클라이언트 디바이스(106)의 상태를 검증하고 클라이언트 디바이스(106)의 상태에 기초하여 암호화된 코드(118)의 복호화를 허용하거나 허용하지 않을 수 있다. 예를 들어, 암호화 코프로세서(206)는 클라이언트 디바이스(106)가 루팅되는 경우 암호화된 코드(118)의 복호화를 허용하지 않을 수 있다. 검증이 성공적이지 않으면, 암호화 알고리즘(121)의 실행 및 복호화는 진행되지 않을 것이다.
박스(515)에서, 암호화 코프로세서(206)는 암호화된 코드(118)를 복호화한다. 예를 들어, 암호화 코프로세서(206)는 복호화를 수행하기 위해 엔티티와 연관되는 루트 키-쌍(215)과 함께 미리정의된 암호화 알고리즘(218)(도 2a) 중 특정의 것을 이용할 수 있다. 암호화된 코드(118)를 복호화할 시, 암호화 코프로세서(206)는 암호화되지 않은 형태로 암호화 알고리즘(121)(도 1)을 생성한다. 일부 예에서, 암호화 알고리즘(121)은 미리정의된 암호화 알고리즘(218)과 다를 수 있다. 다른 예에서, 암호화 알고리즘(121)은 미리정의된 암호화 알고리즘(218) 중 하나 일 수 있지만, 암호화 알고리즘(121)의 신원은 암호화된 코드(118) 자체로부터 명백하지 않을 수 있다. 박스(518)에서, 암호화 코프로세서(206)는 암호화 코프로세서(206)와 신뢰된 실행 환경(253) 사이의 인터페이스를 통해 암호화 알고리즘(121)에 대한 복호화된 코드를 신뢰된 애플리케이션(256)으로 반환한다. 일 예에서, 암호화 코프로세서(206)는 그것을 신뢰된 실행 환경(253)에 넘겨주기 이전에 특정 독점 암호화 알고리즘(121)을 검증하기 위한 신뢰 루트로서의 역할을 한다.
박스(521)에서, 클라이언트 애플리케이션(203)은 신뢰된 애플리케이션(256)에 의한 후속 암호화를 위해 정보를 신뢰된 애플리케이션(256)에 제공한다. 예를 들어, 정보는 특정 지불 거래에 관한 것일 수 있고 데이터 예컨대 제한된-사용 지불 크리덴셜(236)(도 2a) 또는 제한된-사용 키, 예측불가능 번호, 시퀀스 번호, 단조 카운터 값, 타임스탬프, 거래 금액, 및/또는 다른 정보를 포함할 수 있다. 다른 예에서, 클라이언트 애플리케이션(203)은 암호화된 코드(118)와 함께 또는 암호화된 코드(118)가 신뢰된 애플리케이션(256)에 제공되기 이전에 정보를 신뢰된 애플리케이션(256)에 제공할 수 있다. 이러한 정보의 하나 이상의 아이템(예를 들어, 예측불가능 번호)은 일부 예에서 암호화 코프로세서(206) 또는 신뢰된 애플리케이션(256)에 의해 생성될 수 있다.
박스(524)에서, 신뢰된 애플리케이션(256)은 암호화 알고리즘(121)을 사용하여 정보를 암호화한다. 이를 위해, 신뢰된 애플리케이션(256)은 암호화 알고리즘(121)을 구현하는 엔티티-공급 코드를 실행하고 엔티티 또는 대칭 키와 연관되는 애플리케이션 키 쌍(224)으로부터의 키를 사용할 수 있다. 이러한 방식으로, 신뢰된 애플리케이션(256)은 암호(127)(도 1)를 생성한다. 박스(527)에서, 신뢰된 애플리케이션(256)은 암호(127)를 인터페이스(254)를 통해 클라이언트 애플리케이션(203)에 반환한다.
박스(530)에서, 클라이언트 애플리케이션(203)은 암호(127)를 네트워크(109)를 통해 엔티티 서비스(113)에 송신한다. 박스(533)에서, 엔티티 서비스(113)는 암호(127)를 처리한다. 예를 들어, 엔티티 서비스(113)는 암호(127)의 서명을 검증할 수 있다. 그 다음, 엔티티 서비스(113)는 암호(127)를 암호화하기 위해 사용되는 대칭 키, 또는 암호(127)를 암호화하기 위해 사용되는 키-쌍의 개인 키를 사용하여 암호(127)를 복호화한다. 그 다음, 엔티티 서비스(113)는 암호(127)의 콘텐츠를 검증할 수 있다. 예를 들어, 엔티티 서비스(113)는 제한된-사용 지불 크리덴셜(236) 또는 제한된-사용 키가 유효하다는 것을 검증할 수 있다. 콘텐츠의 검증 시, 그 다음, 엔티티 서비스(113)는 대응하는 지불 거래를 인가하고/하거나 처리할 수 있다.
이제 도 6으로 돌아가면, 도 2b의 클라이언트 디바이스(106)를 포함하는 네트워크 환경(100)의 다양한 구성요소 사이의 상호작용의 다른 예를 제공하는 시퀀스 다이어그램이 도시된다. 도 6의 시퀀스 다이어그램은 단지 네트워크 환경(100)에서 이용될 수 있는 많은 상이한 유형의 기능적 배열의 예를 제공한다. 대안으로서, 도 6의 시퀀스 다이어그램은 네트워크 환경(100) 내에서 구현되는 방법의 요소의 예를 도시하는 것으로서 보일 수 있다.
박스(603)로 시작하여, 엔티티 서비스(113)는 암호화된 코드(118)(도 1)를 비신뢰된 실행 환경(250)(도 2b)에서 클라이언트 디바이스(106)(도 2b) 상에서 실행되는 클라이언트 애플리케이션(203)으로 송신한다. 엔티티 서비스(113)는 또한 암호화된 코드(118)와 함께, 그 이전에, 또는 그 이후에 암호화된 데이터를 송신할 수 있으며, 여기서 암호화된 데이터는 암호화된 코드(118) 내에 암호화되는 암호화 알고리즘(121)(도 1)을 사용하여 암호화된다. 암호화된 코드(118) 및 암호화된 데이터는 서명(124)(도 1)과 함께 송신될 수 있다. 서명(124)의 헤더는 암호화된 코드(118)를 복호화하기 위한 특정 루트 키-쌍(215)(도 2b)을 식별하기 위해 사용될 수 있다. 대안적으로, 엔티티 서비스(113)는 상이한 유형의 키 식별자를 송신할 수 있다. 일 실시예에서, 클라이언트 디바이스(106)는 엔티티 서비스(113)를 서명(124)을 검증하고 암호화된 코드(118) 및 암호화된 데이터를 복호화하기 위한 특정 루트 키-쌍(215)에 링크시키는 (예를 들어, 비-휘발성 랜덤-액세스 메모리에) 국부적으로 저장되는 룩업 테이블 또는 매핑을 가질 수 있다.
다음으로, 박스(606)에서, 클라이언트 애플리케이션(203)은 암호화된 코드(118)를 인터페이스(254)(도 2b)를 통해 신뢰된 실행 환경(253)(도 2b)에서 실행되는 신뢰된 애플리케이션(256)에 제공한다.
박스(609)에서, 신뢰된 애플리케이션(256)은 암호화된 코드(118)를 클라이언트 디바이스(106)의 암호화 코프로세서(206)에 제공한다. 예를 들어, 클라이언트 애플리케이션(203)은 암호화된 코드(118)를 클라이언트 데이터 저장소(209)의 보안 부분 또는 다른 보안 메모리에 저장하고, 암호화된 코드(118)를 로딩하고 그것을 검증 및 복호화하기 위해 커맨드(command)를 암호화 코프로세서(206)에 송신할 수 있다. 암호화된 코드(256)는 신뢰된 실행 환경(253)과 암호화 코프로세서(206) 사이의 인터페이스를 통해 암호화 코프로세서(206)에 제공될 수 있다. 박스(612)에서, 암호화 코프로세서(206)는 암호화된 코드(118)와 함께 송신되는 서명(124)을 사용하여 암호화된 코드(118)를 검증한다. 이를 위해, 암호화 코프로세서(206)는 서명(124)을 사용하여 검증을 수행하기 위해 엔티티와 연관되는 루트 키-쌍(215)을 획득할 수 있다. 따라서, 검증 절차는 암호화된 코드(118)의 진위 및 무결성을 검증한다. 일부 경우에서, 암호화 코프로세서(206)는 클라이언트 디바이스(106)의 상태를 검증하고 클라이언트 디바이스(106)의 상태에 기초하여 암호화된 코드(118)의 복호화를 허용하거나 허용하지 않을 수 있다. 예를 들어, 암호화 코프로세서(206)는 클라이언트 디바이스(106)가 루팅되는 경우 암호화된 코드(118)의 복호화를 허용하지 않을 수 있다. 검증이 성공적이지 않으면, 암호화 알고리즘(121)의 실행 및 복호화는 진행되지 않을 것이다.
박스(615)에서, 암호화 코프로세서(206)는 암호화된 코드(118)를 복호화한다. 예를 들어, 암호화 코프로세서(206)는 복호화를 수행하기 위해 엔티티와 연관되는 루트 키-쌍(215)과 함께 미리정의된 암호화 알고리즘(218)(도 2b) 중 특정의 것을 이용할 수 있다. 암호화된 코드(118)를 복호화할 시, 암호화 코프로세서(206)는 암호화되지 않은 형태로 암호화 알고리즘(121)(도 1)을 생성한다. 일부 예에서, 암호화 알고리즘(121)은 미리정의된 암호화 알고리즘(218)과 다를 수 있다. 다른 예에서, 암호화 알고리즘(121)은 미리정의된 암호화 알고리즘(218) 중 하나 일 수 있지만, 암호화 알고리즘(121)의 신원은 암호화된 코드(118) 자체로부터 명백하지 않을 수 있다. 일 예에서, 암호화 코프로세서(206)는 그것을 신뢰된 실행 환경(253)에 넘겨주기 이전에 특정 독점 암호화 알고리즘(121)을 검증하는 신뢰 루트로서의 역할을 한다.
박스(618)에서, 암호화 코프로세서(206)는 신뢰된 실행 환경(253)과 암호화 코프로세서(206) 사이의 인터페이스를 통해 암호화 알고리즘(121)에 대한 복호화된 코드를 신뢰된 애플리케이션(256)에 반환한다. 다른 예에서, 암호화 코프로세서(206)에 의한 암호화된 코드(118)의 검증 시, 그 다음, 신뢰된 애플리케이션(256)은 암호화된 코드(118)를 복호화할 수 있다.
박스(621)에서, 클라이언트 애플리케이션(203)은 암호화된 데이터를 인터페이스(254)를 통해 신뢰된 애플리케이션(256)에 제공한다. 암호화된 데이터는 어떤 임의의 데이터일 수 있다. 암호화된 데이터는 하나 이상의 제한된-사용 지불 크리덴셜(236)(도 2a) 또는 제한된-사용 키, 또는 지불 거래와 관련되는 다른 정보를 포함할 수 있다.
박스(624)에서, 신뢰된 애플리케이션(256)은 암호화 알고리즘(121)을 사용하여 암호화된 데이터의 정보를 복호화한다. 이를 위해, 신뢰된 애플리케이션(256)은 암호화 알고리즘(121)을 구현하는 엔티티-공급 코드를 실행하고 엔티티와 연관되는 애플리케이션 키 쌍(224)(도 2b)으로부터의 키를 사용할 수 있다. 박스(627)에서, 신뢰된 애플리케이션(256)은 복호화된 정보를 인터페이스(254)를 통해 클라이언트 애플리케이션(203)에 반환한다. 박스(630)에서, 클라이언트 애플리케이션(203)은 복호화된 데이터를 처리할 수 있으며, 이는 데이터를 재-암호화하는 단계, 데이터를 클라이언트 데이터 저장소(209)에 저장하는 단계, 및/또는 다른 액션(action)을 수행하는 단계를 포함할 수 있다.
이전에 논의된 다수의 소프트웨어 구성요소는 각각의 컴퓨팅 디바이스의 메모리에 저장되고 각각의 컴퓨팅 디바이스의 프로세서에 의해 실행가능하다. 이 점에 있어서, 용어 "실행가능한(executable)"은 프로세서에 의해 궁극적으로 실행될 수 있는 형태인 프로그램 파일을 의미한다. 실행가능한 프로그램의 예는 메모리의 랜덤 액세스 부분으로 로딩되고 프로세서에 의해 실행될 수 있는 포맷으로 머신 코드로 변환될 수 있는 컴파일 프로그램, 메모리의 랜덤 액세스 부분으로 로딩되고 프로세서에 의해 실행될 수 있는 객체 코드와 같은 적절한 포맷으로 표현될 수 있는 소스 코드, 또는 프로세서에 의해 실행될 메모리의 랜덤 액세스 부분에 명령어를 생성하기 위해 다른 실행가능한 프로그램에 의해 해석될 수 있는 소스 코드일 수 있다. 실행가능한 프로그램은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 하드 드라이브, 솔리드-상태 드라이브, 범용 직렬 버스(USB) 플래시 드라이브, 메모리 카드, 광학 디스크 예컨대 콤팩트 디스크(CD) 또는 디지털 다기능 디스크(DVD), 플로피 디스크, 자기 테이프, 또는 다른 메모리 구성요소를 포함하는 메모리의 임의의 부분 또는 구성요소에 저장될 수 있다.
메모리는 휘발성 및 비휘발성 메모리 그리고 데이터 저장 구성요소를 포함한다. 휘발성 구성요소는 전력의 손실 시 데이터 값을 유지하지 않는 이다. 비휘발성 구성요소는 전력의 손실 시 데이터를 유지하는 것이다. 따라서, 메모리는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 하드 디스크 드라이브, 솔리드-상태 드라이브, USB 플래시 드라이브, 메모리 카드 리더를 통해 액세스되는 메모리 카드, 연관된 플로피 디스크 드라이브를 통해 액세스되는 플로피 디스크, 광학 디스크 드라이브를 통해 액세스되는 광학 디스크, 적절한 테이프 드라이브를 통해 액세스되는 자기 테이프, 비-휘발성 랜덤 액세스 메모리(NVRAM), 또는 다른 메모리 구성요소, 또는 이러한 메모리 구성요소 중 임의의 2개 이상의 조합을 포함할 수 있다. 게다가, RAM은 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM), 또는 자기 랜덤 액세스 메모리(MRAM) 및 다른 그러한 디바이스를 포함할 수 있다. ROM은 프로그램가능 판독 전용 메모리(PROM), 소거가능 프로그램가능 판독 전용 메모리(EPROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM), 또는 다른 유사 메모리 디바이스를 포함할 수 있다.
본원에 설명되는 애플리케이션 및 시스템은 위에 논의된 바와 같은 범용 하드웨어에 의해 실행되는 소프트웨어 또는 코드로 구현될 수 있지만, 대안으로서 동일한 것은 또한 전용 하드웨어 또는 소프트웨어/범용 하드웨어 및 전용 하드웨어의 조합으로 구현될 수 있다. 전용 하드웨어로 구현되는 경우, 각각은 다수의 기술 중 임의의 하나 또는 조합을 이용하는 회로 또는 상태 머신으로서 구현될 수 있다. 이러한 기술은 하나 이상의 데이터 신호의 적용 시 다양한 로직 기능을 수행하기 위한 로직 게이트를 갖는 이산 로직 회로, 적절한 로직 게이트를 갖는 주문형 집적 회로(ASIC), 필드-프로그램가능 게이트 어레이(FPGA), 또는 다른 구성요소 등을 포함할 수 있지만, 이에 제한되지 않는다. 그러한 기술은 일반적으로 당업자에 의해 잘 공지되어 있고, 결과적으로, 본원에서 상세히 설명되지 않는다.
시퀀스 다이어그램은 본 개시의 다양한 실시예의 일부의 구현의 기능 및 동작을 도시한다. 소프트웨어로 구현되는 경우, 각각의 블록은 특정 로직 함수(들)을 구현하기 위한 프로그램 명령어를 포함하는 코드의 모듈, 세그먼트, 또는 부분을 나타낼 수 있다. 프로그램 명령어는 컴퓨터 시스템에서 프로세서와 같은 적합한 실행 시스템에 의해 인식가능한 수치 명령어를 포함하는 프로그래밍 언어 또는 머신 코드로 기록되는 인간-판독가능 명령문(statement)을 포함하는 소스 코드의 형태로 구현될 수 있다. 머신 코드는 다양한 프로세스를 통해 소스 코드로부터 변환될 수 있다. 예를 들어, 머신 코드는 대응하는 애플리케이션의 실행 이전에 컴파일러를 사용하여 소스 코드로부터 생성될 수 있다. 다른 예로서, 머신 코드는 인터프리터(interpreter)로의 실행과 동시에 소스 코드로부터 생성될 수 있다. 다른 접근법이 또한 사용될 수 있다. 하드웨어로 구현되는 경우, 각각의 블록은 특정 로직 함수 또는 기능을 구현하기 위해 회로 또는 다수의 상호연결된 회로를 나타낼 수 있다.
시퀀스 다이어그램은 특정의 실행 순서를 도시하지만, 실행 순서는 도시된 것과 다를 수 있다는 점이 이해된다. 예를 들어, 2개 이상의 블록의 실행 순서는 도시된 순서와 관련하여 스크램블될 수 있다. 또한, 연속으로 도시되는 2개 이상의 블록은 동시에 또는 부분적으로 동시에 실행될 수 있다. 또한, 일부 실시예에서, 시퀀스 다이어그램에 도시되는 블록 중 하나 이상은 스킵되거나 생략될 수 있다. 게다가, 임의의 수의 카운터, 상태 변수, 경고 세마포어(semaphore), 또는 메시지는, 향상된 유용성, 과금(accounting), 성능 측정, 또는 분쟁 조정 지원을 제공하는 등의 목적을 위해, 본원에 설명되는 논리적 흐름에 첨가될 수도 있다. 모든 그러한 변형은 본 개시의 범위 내에 있다는 것이 이해된다.
또한, 소프트웨어 또는 코드를 포함하는 본원에 설명되는 임의의 로직 또는 애플리케이션은 컴퓨터 시스템 또는 다른 시스템의 프로세서와 같은 명령 실행 시스템에 의해 또는 이와 함께 사용을 위한 임의의 비-일시적 컴퓨터-판독가능 매체에 구현될 수 있다. 이러한 의미에서, 로직은 컴퓨터-판독가능 매체로부터 페치되고 명령 실행 시스템에 의해 실행될 수 있는 명령 및 선언을 포함하는 명령문을 포함할 수 있다. 본 개시의 맥락에서, "컴퓨터-판독가능 매체"는 명령 실행 시스템에 의해 또는 이와 함께 사용을 위해 본원에 설명되는 로직 또는 애플리케이션을 포함, 저장, 또는 유지할 수 있는 임의의 매체일 수 있다. 더욱이, 복수의 컴퓨팅 디바이스(예를 들어, 저장 영역 네트워크 또는 분산된 또는 클러스터된 파일 시스템 또는 데이터베이스)에 걸쳐 위치되는 분산된 컴퓨터-판독가능 매체의 수집은 또한 단일 비-일시적 컴퓨터-판독가능 매체로서 집합적으로 고려될 수 있다.
컴퓨터-판독가능 매체는 많은 물리적 매체 예컨대 자기, 광학, 또는 반도체 매체 중 임의의 하나를 포함할 수 있다. 적합한 컴퓨터-판독가능 매체의 보다 특이적 예는 자기 테이프, 자기 플로피 디스켓, 자기 하드 드라이브, 메모리 카드, 솔리드-상태 드라이브, USB 플래시 드라이브, 또는 광학 디스크를 포함하지만, 이에 제한되지 않는다. 또한, 컴퓨터-판독가능 매체는 정적 랜덤 액세스 메모리(SRAM) 및 동적 랜덤 액세스 메모리(DRAM), 또는 자기 랜덤 액세스 메모리(MRAM)를 포함하는 랜덤 액세스 메모리(RAM)일 수 있다. 게다가, 컴퓨터-판독가능 매체는 판독 전용 메모리(ROM), 프로그램가능 판독 전용 메모리(PROM), 소거가능 프로그램가능 판독 전용 메모리(EPROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM), 또는 다른 유형의 메모리 디바이스 일 수 있다.
또한, 본원에 설명되는 임의의 로직 또는 애플리케이션은 다양한 방식으로 구현되고 구조화될 수 있다. 예를 들어, 설명되는 하나 이상의 애플리케이션은 단일 애플리케이션의 구성요소 또는 모듈로서 구현될 수 있다. 또한, 본원에 설명되는 하나 이상의 애플리케이션은 공유 또는 별도의 컴퓨팅 디바이스 또는 그 조합에서 실행될 수 있다. 예를 들어, 본원에 설명되는 복수의 애플리케이션은 동일한 컴퓨팅 디바이스에서, 또는 동일한 컴퓨팅 환경(103)의 다수의 컴퓨팅 디바이스에서 실행될 수 있다.
선언적(Disjunctive) 언어 예컨대 어구 " X, Y, 또는 Z 중 적어도 하나"는, 구체적으로 달리 명시되지 않는 한, 항목, 용어 등이 X, Y, 또는 Z, 또는 그 임의의 조합(예를 들어, X, Y, 또는 Z)일 수 있다는 것을 제시하기 위해 일반적으로 사용되는 바와 같은 맥락으로 달리 이해된다. 따라서, 그러한 선언적 언어는 일반적으로 특정 실시예가 X 중 적어도 하나, Y 중 적어도 하나, 또는 Z 중 적어도 하나가 각각 존재하도록 요구한다는 것을 암시하도록 의도되지 않고, 암시하지 않아야만 한다.
본 개시의 실시예의 예는 다음과 같이 설명될 수 있다:
실시예 1. 시스템으로서, 다음: 즉, 프로세서, 메모리, 및 암호화 코프로세서를 포함하는 컴퓨팅 디바이스; 및 상기 메모리에 저장되는 머신-판독가능 명령어를 포함하며, 상기 머신-판독가능 명령어는, 상기 프로세서에 의해 실행될 때, 상기 컴퓨팅 디바이스가 적어도: 네트워크를 통해 서비스로부터 암호화 알고리즘을 구현하는 암호화된 코드를 수신하게 하고; 상기 암호화 코프로세서에 의해, 상기 암호화된 코드를 복호화하게 하고; 상기 암호화 코프로세서에 의해, 상기 암호화 알고리즘을 사용하여 암호화된 정보를 포함하는 암호를 생성하기 위해 상기 복호화된 코드를 실행하게 하고; 상기 암호를 상기 네트워크를 통해 상기 서비스로 송신하게 하는, 시스템.
실시예 2. 실시예 1에 있어서, 상기 암호화 코프로세서는 신뢰된 플랫폼 모듈(Trusted Platform Module; TPM) 표준의 버전을 준수하는, 시스템.
실시예 3. 실시예 1에 있어서, 상기 암호화 코프로세서는 상기 암호화된 코드를 복호화하기 이전에 상기 컴퓨팅 디바이스의 상태를 검증하도록 구성되는, 시스템.
실시예 4. 실시예 1에 있어서, 상기 서비스는 엔티티에 의해 운영되고, 상기 암호화 알고리즘은 상기 엔티티의 선호된 암호화 알고리즘인, 시스템.
실시예 5. 실시예 1에 있어서, 상기 암호화 코프로세서는 상기 암호화된 코드가 상기 복호화된 코드를 실행하기 이전에 미리정의된 복수의 신뢰된 엔티티로부터의 엔티티에 의해 서명되었는지를 검증하도록 구성되는, 시스템
실시예 6. 실시예 1에 있어서, 상기 암호화된 코드는 상기 암호화된 코드를 생성한 엔티티와 연관되는 상기 암호화 코프로세서의 루트 키를 사용하여 복호화되는, 시스템.
실시예 7. 실시예 1에 있어서, 상기 서비스는 엔티티와 연관되는 제1 서비스 및 제2 서비스를 포함하고, 상기 암호화된 코드는 상기 제1 서비스로부터 수신되고, 상기 암호는 상기 제2 서비스로 송신되는, 시스템.
실시예 8. 실시예 1에 있어서, 상기 암호화 코프로세서는 상기 컴퓨팅 디바이스에서 펌웨어로 구현되고, 데이터는 상기 암호화 코프로세서에 의해 상기 암호화된 코드의 복호화를 가능하게 하기 위해 인터페이스를 통해 상기 컴퓨팅 디바이스의 보안 요소로부터 상기 암호화 코프로세서로 전달되는, 시스템.
실시예 9. 실시예 1에 있어서, 상기 암호화 코프로세서는 암호화 동작을 수행하기 위해 미리정의된 복수의 암호화 알고리즘으로부터의 선택을 지원하도록 구성되고, 상기 암호화 알고리즘은 상기 미리정의된 복수의 암호화 알고리즘으로부터 배제되는, 시스템.
실시예 10. 실시예 1에 있어서, 상기 암호화 코프로세서는 상기 암호화 알고리즘을 상기 컴퓨팅 디바이스의 보안 요소로 전달하기 이전에 상기 암호화 알고리즘를 검증하기 위해 신뢰 루트(root of trust)로서의 역할을 하도록 구성되는, 시스템.
실시예 11. 방법에 있어서, 다음: 즉, 암호화 코프로세서에 의해, 클라이언트 애플리케이션으로부터 암호화 알고리즘을 구현하는 암호화된 코드를 수신하는 단계; 상기 암호화 코프로세서에 의해, 상기 암호화된 코드를 복호화하는 단계; 및 상기 암호화 코프로세서에 의해, 상기 암호화 알고리즘을 사용하여 암호화된 데이터를 복호화하기 위해 상기 복호화된 코드를 실행하는 단계; 또는 상기 암호화 코프로세서에 의해, 상기 암호화 알고리즘을 사용하여 암호를 생성하기 위해 상기 복호화된 코드를 실행하는 단계를 포함하는, 방법.
실시예 12. 실시예 11에 있어서, 상기 암호화 코프로세서에 의해, 상기 암호화된 코드가 상기 복호화된 코드를 실행하기 이전에 미리정의된 복수의 신뢰된 엔티티로부터의 엔티티에 의해 서명되었는지를 검증하는 단계를 더 포함하는, 방법.
실시예 13. 실시예 11에 있어서, 상기 암호화된 코드는 엔티티에 의해 운영되는 서비스로부터 상기 클라이언트 애플리케이션에 의해 수신되고, 상기 클라이언트 애플리케이션은 상기 엔티티와 연관되는, 방법.
실시예 14. 실시예 13에 있어서, 상기 암호화된 코드를 복호화하는 단계는 상기 엔티티와 연관되는 상기 암호화 코프로세서의 루트 키를 사용하여 상기 암호화된 코드를 복호화하는 단계를 더 포함하는, 방법.
실시예 15. 실시예 13에 있어서, 상기 암호화된 데이터 및 상기 암호화된 코드는 상기 암호화 알고리즘의 식별자를 배제하는, 방법.
실시예 16. 실시예 13에 있어서, 상기 암호화 코프로세서는 암호화 동작을 수행하기 위해 미리정의된 복수의 암호화 알고리즘으로부터의 선택을 지원하도록 구성되고, 상기 암호화 알고리즘은 상기 미리정의된 복수의 암호화 알고리즘으로부터 배제되는, 방법.
실시예 17. 머신 판독가능 명령어를 포함하는 비-일시적, 컴퓨터-판독가능 매체에 있어서, 상기 머신 판독가능 명령어는, 제1 컴퓨팅 디바이스의 프로세서에 의해 실행될 때, 상기 제1 컴퓨팅 디바이스가 적어도: 암호화된 코드를 생성하기 위해 암호화 알고리즘을 암호화하게 하고; 상기 암호화된 코드를 제2 컴퓨팅 디바이스에 송신하게 하고; 상기 제2 컴퓨팅 디바이스로부터 상기 암호화된 코드로부터의 상기 암호화 알고리즘으로 생성되는 암호를 수신하게 하고; 상기 암호화 알고리즘으로 상기 암호를 복호화하게 하는, 비-일시적 컴퓨터-판독가능 매체.
실시예 18. 실시예 17에 있어서, 상기 암호화된 코드는 상기 암호화된 코드를 복호화하기 위한 암호화 키에 대한 식별자와 함께 상기 제2 컴퓨팅 디바이스로 송신되는, 비-일시적 컴퓨터-판독가능 매체.
실시예 19. 실시예 17에 있어서, 상기 암호화된 코드는 상기 암호화 알고리즘의 식별자를 배제하는, 비-일시적 컴퓨터-판독가능 매체.
실시예 20. 실시예 17에 있어서, 암호화된 코드는 암호화 코프로세서에 대한 표준에 의해 지원되는 미리정의된 복수의 암호화 알고리즘 중 하나를 사용하여 암호화되는, 비-일시적 컴퓨터-판독가능 매체.
실시예 21. 시스템에 있어서, 다음: 즉, 프로세서 및 메모리를 포함하는 컴퓨팅 디바이스; 및 상기 메모리에 저장되는 머신-판독가능 명령어를 포함하며, 상기 머신-판독가능 명령어는, 상기 프로세서에 의해 실행될 때, 상기 컴퓨팅 디바이스가 적어도: 네트워크를 통해 서비스로부터 암호화 알고리즘을 구현하는 암호화된 코드를 수신하게 하고; 상기 암호화된 코드를 상기 컴퓨팅 디바이스의 신뢰된 실행 환경에서 실행되는 애플리케이션에 제공하게 하고; 상기 애플리케이션으로부터 상기 암호화 알고리즘을 사용하여 암호화되는 정보를 포함하는 암호를 획득하게 하는, 시스템.
실시예 22. 실시예 21에 있어서, 상기 암호는 상기 컴퓨팅 디바이스의 비신뢰된 실행 환경에서 실행되는 다른 애플리케이션에 의해 획득되는, 시스템.
실시예 23. 실시예 22에 있어서, 상기 머신-판독가능 명령어는 추가로 상기 컴퓨팅 디바이스가 상기 네트워크를 통해 상기 서비스로 상기 다른 애플리케이션에 의해 상기 암호를 적어도 송신하게 하는, 시스템.
실시예 24. 실시예 21에 있어서, 상기 암호화된 코드는 상기 컴퓨팅 디바이스의 상기 신뢰된 실행 환경과 상기 컴퓨팅 디바이스의 비신뢰된 실행 환경 사이의 인터페이스를 통해 상기 애플리케이션에 제공되는, 시스템.
실시예 25. 실시예 21에 있어서, 상기 신뢰된 실행 환경은 암호화 코프로세서를 포함하고, 상기 머신-판독가능 명령어는 추가로 상기 컴퓨팅 디바이스가, 상기 암호화 코프로세서에 의해, 상기 암호화된 코드를 복호화하기 이전에 상기 컴퓨팅 디바이스의 상태 및 상기 암호화된 코드의 서명을 적어도 검증하게 하는, 시스템.
실시예 26. 실시예 21에 있어서, 상기 신뢰된 실행 환경은 암호화 코프로세서를 포함하고, 상기 머신-판독가능 명령어는 추가로 상기 컴퓨팅 디바이스가, 상기 암호화 코프로세서에 의해, 상기 애플리케이션의 서명을 적어도 검증하게 하는, 시스템.
실시예 27. 실시예 21에 있어서, 상기 신뢰된 실행 환경은 암호화 코프로세서를 포함하고, 상기 암호화 알고리즘은 상기 암호화 코프로세서에 의해 지원되는 미리정의된 복수의 암호화 알고리즘에 포함되지 않는, 시스템.
실시예 28. 실시예 21에 있어서, 상기 신뢰된 실행 환경은 상기 프로세서의 보안 가상 프로세서 상에서 실행되는 보안 운영 체제를 포함하는, 시스템.
실시예 29. 실시예 21에 있어서, 상기 암호는 지불 거래에 대응하고, 상기 암호는 제한된 사용 지불 크리덴셜을 포함하는, 시스템.
실시예 30. 실시예 21에 있어서, 상기 신뢰된 실행 환경은 상기 암호화된 코드를 복호화하기 위해 사용되는 키를 저장하며, 상기 키는 상기 서비스를 운영하는 엔티티와 연관되는, 시스템.
실시예 31. 방법에 있어서, 다음: 즉, 비신뢰된 실행 환경에서 실행되는 제1 애플리케이션에 의해, 네트워크를 통해 암호화된 데이터 및 암호화 알고리즘을 구현하는 암호화된 코드를 수신하는 단계; 상기 제1 애플리케이션에 의해, 상기 암호화된 데이터 및 상기 암호화된 코드를 신뢰된 실행 환경에서 실행되는 제2 애플리케이션으로 전달하는 단계; 상기 제2 애플리케이션에 의해, 상기 암호화된 코드를 복호화하는 단계; 상기 제2 애플리케이션에 의해, 상기 암호화 알고리즘을 사용하여 상기 암호화된 데이터를 복호화하기 위해 상기 복호화된 코드를 실행하는 단계; 및 상기 제1 애플리케이션에 의해, 상기 제2 애플리케이션으로부터 상기 암호화된 데이터로부터 암호화된 정보를 수신하는 단계를 포함하는, 방법.
실시예 32. 실시예 31에 있어서, 다음: 즉, 상기 암호화된 코드를 인터페이스를 사용하여 상기 제2 애플리케이션으로부터 암호화 코프로세서로 전달하는 단계; 및 상기 암호화 코프로세서를 사용하여 상기 암호화된 코드의 서명을 검증하는 단계를 더 포함하는, 방법.
실시예 33. 실시예 32에 있어서, 상기 복호화된 코드를 실행하는 단계는 상기 암호화 코프로세서에 의해 수행되지 않는, 방법.
실시예 34. 실시예 32에 있어서, 상기 암호화된 코드를 복호화하는 단계는 상기 암호화 코프로세서에 의해 수행되는, 방법.
실시예 35. 실시예 32에 있어서, 상기 암호화 코프로세서는 미리정의된 복수의 암호화 알고리즘을 수행하는 코드를 포함하고, 상기 암호화 알고리즘은 상기 미리정의된 복수의 암호화 알고리즘으로부터 실행되는, 방법.
실시예 36. 실시예 31에 있어서, 상기 암호화된 코드는 엔티티에 의해 운영되는 서비스로부터 수신되고, 상기 제1 애플리케이션 및 상기 제2 애플리케이션은 상기 엔티티와 연관되는, 방법.
실시예 37. 머신 판독가능 명령어를 포함하는 비-일시적, 컴퓨터-판독가능 매체에 있어서, 상기 머신 판독가능 명령어는, 컴퓨팅 디바이스의 프로세서의 신뢰된 실행 환경에서 실행될 때, 상기 컴퓨팅 디바이스가 적어도: 암호화 알고리즘을 구현하는 암호화된 코드를 인터페이스를 통해 상기 프로세서의 비신뢰된 실행 환경으로 수신하게 하고; 상기 암호화된 코드를 복호화하게 하고; 상기 암호화 알고리즘을 사용하여 암호화된 정보를 포함하는 암호를 생성하기 위해 상기 복호화된 코드를 실행하게 하고; 상기 암호를 상기 인터페이스를 통해 반환하게 하는, 비-일시적 컴퓨터-판독가능 매체.
실시예 38. 실시예 37에 있어서, 상기 컴퓨팅 디바이스는 암호화 코프로세서를 더 포함하고, 상기 머신-판독가능 명령어는 추가로 상기 컴퓨팅 디바이스가 적어도: 상기 암호화 코프로세서를 사용하여 상기 암호화된 코드의 서명을 검증하게 하거나; 상기 암호화 알고리즘을 상기 신뢰된 실행 환경에 전달하기 이전에 신뢰 루트로서 상기 암호화 알고리즘을 검증하게 하는, 비-일시적 컴퓨터-판독가능 매체.
실시예 39. 실시예 37에 있어서, 상기 신뢰된 실행 환경은 상기 프로세서의 보안 가상 프로세서 상에서 실행되는 보안 운영 체제를 포함하는, 비-일시적 컴퓨터-판독가능 매체.
실시예 40. 실시예 37에 있어서, 상기 암호는 지불 거래에 대응하고, 상기 암호는 제한된 사용 지불 크리덴셜을 포함하는, 비-일시적 컴퓨터-판독가능 매체.
본 개시의 상술한 실시예는 본 개시의 원리의 명확한 이해를 위해 진술되는 구현예의 단지 가능한 예라는 점이 강조되어야 한다. 많은 변형 및 수정은 본 개시의 사상 및 원리로부터 실질적으로 벗어나는 것 없이 상술한 실시예에 이루어질 수 있다. 모든 그러한 수정 및 변형은 본원에서 본 개시의 범위 내에 포함되고 다음의 청구항에 의해 보호되도록 의도된다.
Claims (20)
- 시스템에 있어서,
프로세서, 메모리, 및 암호화 코프로세서를 포함하는 컴퓨팅 디바이스; 및
상기 메모리에 저장되는 머신-판독가능 명령어를 포함하며, 상기 머신-판독가능 명령어는, 상기 프로세서에 의해 실행될 때, 상기 컴퓨팅 디바이스가 적어도:
암호화 알고리즘을 구현하는 암호화된 코드를 네트워크를 통해 서비스로부터 수신하게 하고;
상기 암호화 코프로세서에 의해, 상기 암호화된 코드를 복호화하게 하고;
상기 암호화 코프로세서에 의해, 상기 암호화 알고리즘을 사용하여 암호화된 정보를 포함하는 암호를 생성하기 위해 상기 복호화된 코드를 실행하게 하고;
상기 암호를 상기 네트워크를 통해 상기 서비스로 송신하게 하는, 시스템. - 제1항에 있어서,
상기 암호화 코프로세서는 신뢰된 플랫폼 모듈(Trusted Platform Module; TPM) 표준의 버전을 준수하는, 시스템. - 제1항 또는 제2항에 있어서,
상기 암호화 코프로세서는 상기 암호화된 코드를 복호화하기 이전에 상기 컴퓨팅 디바이스의 상태를 검증하도록 구성되는, 시스템. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 서비스는 엔티티에 의해 운영되고, 상기 암호화 알고리즘은 상기 엔티티의 선호 암호화 알고리즘인, 시스템. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 암호화 코프로세서는 상기 암호화된 코드가 상기 복호화된 코드를 실행하기 이전에 미리정의된 복수의 신뢰된 엔티티로부터의 엔티티에 의해 서명되었는지를 검증하도록 구성되는, 시스템. - 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 암호화된 코드는 상기 암호화된 코드를 생성한 엔티티와 연관되는 상기 암호화 코프로세서의 루트 키를 사용하여 복호화되는, 시스템. - 제1항 내지 제6항 중 어느 한 항에 있어서,
상기 서비스는 엔티티와 연관되는 제1 서비스 및 제2 서비스를 포함하고, 상기 암호화된 코드는 상기 제1 서비스로부터 수신되고, 상기 암호는 상기 제2 서비스에 송신되는, 시스템. - 제1항 내지 제7항 중 어느 한 항에 있어서,
상기 암호화 코프로세서는 상기 컴퓨팅 디바이스에서 펌웨어로 구현되고, 데이터는 상기 암호화 코프로세서에 의한 상기 암호화된 코드의 복호화를 가능하게 하기 위해 인터페이스를 통해 상기 컴퓨팅 디바이스의 보안 요소로부터 상기 암호화 코프로세서로 전달되는, 시스템. - 제1항 내지 제8항 중 어느 한 항에 있어서,
상기 암호화 코프로세서는 암호화 동작을 수행하기 위해 미리정의된 복수의 암호화 알고리즘으로부터의 선택을 지원하도록 구성되고, 상기 암호화 알고리즘은 상기 미리정의된 복수의 암호화 알고리즘으로부터 배제되는, 시스템. - 제1항 내지 제9항 중 어느 한 항에 있어서,
상기 암호화 코프로세서는 상기 암호화 알고리즘을 상기 컴퓨팅 디바이스의 보안 요소로 전달하기 이전에 상기 암호화 알고리즘을 검증하기 위해 신뢰 루트로서의 역할을 하도록 구성되는, 시스템. - 방법에 있어서,
암호화 코프로세서에 의해, 클라이언트 애플리케이션으로부터 암호화 알고리즘을 구현하는 암호화된 코드를 수신하는 단계;
상기 암호화 코프로세서에 의해, 상기 암호화된 코드를 복호화하는 단계; 및
상기 암호화 코프로세서에 의해, 상기 암호화 알고리즘을 사용하여 암호를 생성하기 위해 상기 복호화된 코드를 실행하는 단계를 포함하는, 방법. - 제11항에 있어서,
상기 암호화 코프로세서에 의해, 상기 암호화된 코드가 상기 복호화된 코드를 실행하기 이전에 미리정의된 복수의 신뢰된 엔티티로부터의 엔티티에 의해 서명되었는지를 검증하는 단계를 더 포함하는, 방법. - 제11항 또는 제12항에 있어서,
상기 암호화된 코드는 엔티티에 의해 운영되는 서비스로부터 상기 클라이언트 애플리케이션에 의해 수신되고, 상기 클라이언트 애플리케이션은 상기 엔티티와 연관되는, 방법. - 제13항에 있어서,
상기 암호화된 코드를 복호화하는 단계는 상기 엔티티와 연관되는 상기 암호화 코프로세서의 루트 키를 사용하여 상기 암호화된 코드를 복호화하는 단계를 더 포함하는, 방법. - 제13항 또는 제14항에 있어서,
상기 암호화된 데이터 및 상기 암호화된 코드는 상기 암호화 알고리즘의 식별자를 배제하는, 방법. - 제13항 내지 제15항 중 어느 한 항에 있어서,
상기 암호화 코프로세서는 암호화 동작을 수행하기 위해 미리정의된 복수의 암호화 알고리즘으로부터의 선택을 지원하도록 구성되고, 상기 암호화 알고리즘은 상기 미리정의된 복수의 암호화 알고리즘으로부터 배제되는, 방법. - 명령어를 포함하는 컴퓨터 프로그램에 있어서,
상기 명령어는, 컴퓨팅 디바이스의 신뢰된 실행 환경에서 실행될 때, 상기 컴퓨팅 디바이스가 적어도:
암호화 알고리즘을 구현하는 암호화된 코드를 인터페이스를 통해 상기 프로세서의 비신뢰된 실행 환경으로 수신하게 하고;
상기 암호화된 코드를 복호화하게 하고;
상기 암호화 알고리즘을 사용하여 암호화된 정보를 포함하는 암호를 생성하기 위해 상기 복호화된 코드를 실행하게 하고;
상기 암호를 상기 인터페이스를 통해 반환하게 하는, 컴퓨터 프로그램. - 제17항에 있어서,
상기 컴퓨팅 디바이스는 암호화 코프로세서를 더 포함하고, 상기 명령어는 추가로 상기 컴퓨팅 디바이스가 상기 암호화 코프로세서를 사용하여 상기 암호화된 코드의 서명을 적어도 검증하게 하는, 컴퓨터 프로그램. - 제17항 내지 제18항 중 어느 한 항에 있어서,
상기 신뢰된 실행 환경은 상기 프로세서의 보안 가상 프로세서 상에서 실행되는 보안 운영 체제를 포함하는, 컴퓨터 프로그램. - 제17항 내지 제19항 중 어느 한 항에 있어서,
상기 암호는 지불 거래에 대응하고, 상기 암호는 제한된 사용 지불 크리덴셜을 포함하는, 컴퓨터 프로그램.
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962914275P | 2019-10-11 | 2019-10-11 | |
US201962914272P | 2019-10-11 | 2019-10-11 | |
US62/914,275 | 2019-10-11 | ||
US62/914,272 | 2019-10-11 | ||
US16/669,002 | 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/668,973 US11341280B2 (en) | 2019-10-11 | 2019-10-30 | Executing entity-specific cryptographic code in a cryptographic coprocessor |
US16/668,973 | 2019-10-30 | ||
PCT/US2020/053520 WO2021071719A1 (en) | 2019-10-11 | 2020-09-30 | Executing entity-specific cryptographic code in a cryptographic coprocessor |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220069042A true KR20220069042A (ko) | 2022-05-26 |
Family
ID=75437590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227013092A KR20220069042A (ko) | 2019-10-11 | 2020-09-30 | 암호화 코프로세서에서 엔티티-특정 암호화 코드 실행 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP4042630A4 (ko) |
JP (1) | JP7385025B2 (ko) |
KR (1) | KR20220069042A (ko) |
CN (1) | CN114556344A (ko) |
WO (1) | WO2021071719A1 (ko) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001125481A (ja) | 1999-10-25 | 2001-05-11 | Toshiba Corp | 暗号通信端末、暗号通信センター装置及び暗号通信システム並びに記録媒体 |
JP2001338271A (ja) | 2000-03-23 | 2001-12-07 | Matsushita Electric Ind Co Ltd | Icカード及びicカード利用システム |
DE10107373A1 (de) | 2001-02-16 | 2002-08-29 | Infineon Technologies Ag | Sicherheitsmodul mit flüchtigem Speicher zur Speicherung eines Algorithmuscodes |
US7657033B2 (en) * | 2004-12-10 | 2010-02-02 | Fiske Software Llc | Cryptography related to keys |
KR20090059602A (ko) * | 2007-12-07 | 2009-06-11 | 한국전자통신연구원 | 세션 메모리 버스를 구비한 암호화 장치 |
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 (zh) * | 2010-12-22 | 2012-07-04 | 腾讯科技(深圳)有限公司 | 在web中传输数据时进行加解密的方法及系统 |
CN103297958B (zh) * | 2012-02-22 | 2017-04-12 | 华为技术有限公司 | 建立安全上下文的方法、装置及系统 |
US10243727B2 (en) * | 2013-10-31 | 2019-03-26 | Ati Technologies Ulc | Method and system for constant time cryptography using a co-processor |
-
2020
- 2020-09-30 JP JP2022520312A patent/JP7385025B2/ja active Active
- 2020-09-30 EP EP20874322.9A patent/EP4042630A4/en active Pending
- 2020-09-30 CN CN202080071365.7A patent/CN114556344A/zh active Pending
- 2020-09-30 WO PCT/US2020/053520 patent/WO2021071719A1/en unknown
- 2020-09-30 KR KR1020227013092A patent/KR20220069042A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
EP4042630A1 (en) | 2022-08-17 |
WO2021071719A1 (en) | 2021-04-15 |
JP2022551586A (ja) | 2022-12-12 |
EP4042630A4 (en) | 2023-10-11 |
JP7385025B2 (ja) | 2023-11-21 |
CN114556344A (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111181720B (zh) | 基于可信执行环境的业务处理方法及装置 | |
CN107743133B (zh) | 移动终端及其基于可信安全环境的访问控制方法和系统 | |
KR101712784B1 (ko) | 글로벌 플랫폼 규격을 사용하는 발행자 보안 도메인에 대한 키 관리 시스템 및 방법 | |
EP2954448B1 (en) | Provisioning sensitive data into third party network-enabled devices | |
US9009854B2 (en) | Platform-hardened digital rights management key provisioning | |
US11783091B2 (en) | Executing entity-specific cryptographic code in a cryptographic coprocessor | |
CN106899571B (zh) | 信息交互方法及装置 | |
CN102571329B (zh) | 密码密钥管理 | |
CN110889696A (zh) | 一种基于sgx技术的联盟区块链秘钥存储方法、装置、设备及介质 | |
JP2010514000A (ja) | 電子装置にプログラム状態データをセキュアに記憶するための方法 | |
US9524394B2 (en) | Method and apparatus for providing provably secure user input/output | |
US20230021749A1 (en) | Wrapped Keys with Access Control Predicates | |
EP3292654B1 (en) | A security approach for storing credentials for offline use and copy-protected vault content in devices | |
WO2024198933A1 (zh) | 私钥保护和服务端访问方法、系统、设备及存储介质 | |
Cooijmans et al. | Secure key storage and secure computation in Android | |
US20210111901A1 (en) | Executing entity-specific cryptographic code in a trusted execution environment | |
JP2015104020A (ja) | 通信端末装置、通信端末関連付けシステム、通信端末関連付け方法、及びコンピュータプログラム | |
KR20140071775A (ko) | 암호키 관리 시스템 및 방법 | |
JP7385025B2 (ja) | 暗号化コプロセッサにおけるエンティティ固有の暗号化コードの実行 | |
CN115081000B (zh) | 保护远程目标程序源码的方法、系统、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |