KR102229739B1 - 키 관리 시스템 및 방법 - Google Patents

키 관리 시스템 및 방법 Download PDF

Info

Publication number
KR102229739B1
KR102229739B1 KR1020207034090A KR20207034090A KR102229739B1 KR 102229739 B1 KR102229739 B1 KR 102229739B1 KR 1020207034090 A KR1020207034090 A KR 1020207034090A KR 20207034090 A KR20207034090 A KR 20207034090A KR 102229739 B1 KR102229739 B1 KR 102229739B1
Authority
KR
South Korea
Prior art keywords
cryptographic
key
request
key management
hsm
Prior art date
Application number
KR1020207034090A
Other languages
English (en)
Other versions
KR20200140916A (ko
Inventor
악렉산드르스 제이. 루지티스
스리쿠마르 무쿤단 피샤로디
존 케네스 비어
벤자민 틸만 팔리
Original Assignee
아마존 테크놀로지스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20200140916A publication Critical patent/KR20200140916A/ko
Application granted granted Critical
Publication of KR102229739B1 publication Critical patent/KR102229739B1/ko

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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • 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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols

Abstract

키 관리 서비스("KMS")와 같은, 암호 키의 관리를 위한 네트워크 기반 서비스는 웹 서비스 애플리케이션 프로그래밍 인터페이스("API")를 제공한다. 서비스에 의해 관리된 암호 키는 네트워크 연결 하드웨어 보안 모듈("HSM")과 같은 하나 이상의 네트워크 연결 암호 디바이스에 저장될 수 있다. 키 관리 서비스는 암호 키와 연관된 메타데이터를 유지한다. 요청이 키 관리 서비스에 의해 수신될 때, 키 관리 서비스는 요청을 이행하기 위해 사용된 암호 키와 연관된 메타데이터를 식별하기 위한 요청이 제공된 식별자를 사용한다. 키 관리 서비스는 암호 키를 포함하는 암호 디바이스를 식별하기 위해 메타데이터를 사용한다. 키 관리 서비스는 명령어가 식별된 암호 디바이스에 의해 구현된 프로토콜과 호환 가능하도록 요청을 이행하기 위한 명령어의 세트를 생성하고, 명령어의 세트는 식별된 암호 디바이스로 전송된다.

Description

키 관리 시스템 및 방법
관련 출원에 대한 상호 참조
본 출원은 미국 특허 출원 제15/969,695호(출원일: 2018년 5월 2일, 발명의 명칭: "KEY MANAGEMENT SYSTEM AND METHOD")에 대한 우선권을 주장하며, 이의 개시내용은 전체적으로 참조에 의해 원용된다.
본 발명은 키 관리 시스템 및 방법에 관한 것이다.
데이터 보안은 컴퓨팅 인프라스트럭처의 중요한 양태이다. 데이터 보안이 제공되는 하나의 방식은 암호화이다. 다양한 환경에서, 데이터를 인증하고 보호하기 위해 데이터가 암호화하거나 암호로 서명될 수 있다. 일반적으로, 암호 동작을 수행할 때 암호 키가 사용된다. 개체가 특정한 암호 키를 사용하는 능력은 개체가 암호 키로 암호화되는 일반 텍스트 데이터에 액세스하고 디지털 서명에 의해 특정한 암호 키를 사용하는 그의 능력을 증명하는 것을 허용한다. 따라서, 암호 키에 대한 액세스를 제어하는 것은 서비스 제공자 및 다른 사람이 데이터의 무결성을 보장하기 위해 상당한 노력 및 리소스를 소비하는 중요한 문제이다.
본 발명은 키 관리 시스템 및 방법에 관한 종래 기술의 문제점을 해소 및 개선하는 구성 및 방법을 제공하고자 하는 것이다.
본 발명은 상기한 목적을 달성하기 위해 청구범위에 청구된 바와 같은 시스템 및 방법을 제공한다.
다양한 기술이 도면을 참조하여 설명될 것이고, 여기서:
도 1은 일 실시형태에서, 하드웨어 보안 모듈에 저장되는 암호 키를 관리하는 시스템의 일례를 도시한 도면;
도 2는 일 실시형태에서, HSM에 저장된 키를 관리하는 키 관리 서버의 일례를 도시한 도면;
도 3은 일 실시형태에서, 고객 네트워크에서 라우터를 통해 HSM과 통신하는 키 관리 서버의 일례를 도시한 도면;
도 4는 일 실시형태에서, HSM 프록시 서비스의 일례를 도시한 도면;
도 5는 일 실시형태에서, 클라이언트 컴퓨터 시스템, 키 관리 서버 및 하드웨어 보안 모듈에 의해 수행되는 결과로서, HSM에 저장된 암호 키를 사용하여 암호 동작을 수행하는 프로세스의 일례를 도시한 도면;
도 6은 일 실시형태에서, 키 관리 서버에 의해 수행되는 결과로서, HSM 클러스터에 대한 논리적 접속(logical attachment)을 확립하는 프로세스의 일례를 도시한 도면;
도 7은 일 실시형태에서, 키 관리 서버에 의해 수행되는 결과로서, HSM에 암호 키를 생성하고 키 관리 서비스에서 사용하기 위해 키를 등록하는 프로세스의 일례를 도시한 도면;
도 8은 일 실시형태에서, 키 관리 서비스에 연결된 HSM에 대한 허용 가능한 상태 전이의 세트의 일례를 도시한 도면; 및
도 9는 다양한 실시형태가 구현될 수 있는 시스템을 도시한 도면.
본 문서는 암호 키의 관리를 위한 네트워크 기반 서비스를 제공하는 시스템을 설명한다. 일 실시형태에서, 키 관리 서비스(key management service: "KMS")는 암호 키의 관리를 위한 웹 서비스 애플리케이션 프로그래밍 인터페이스(application programming interface: "API")를 제공한다. 일 실시형태에서, 암호 키는 변형 억제 메모리(tamper-resistant memory)를 포함하는 네트워크 연결 하드웨어 보안 모듈(hardware security module: "HSM")과 같은 하나 이상의 네트워크 연결 암호 디바이스에 저장된다. 일 실시형태에서, 암호 디바이스 내에 저장된 암호 키는 그들이 암호화되지 않은 형태로 암호 디바이스로부터 추출되지 않을 수 있다는 점에서 내보내기 가능하지 않다(non-exportable). 일 실시형태에서, 키 관리 서비스는 서비스에 의해 관리된 암호 키를 설명하는 메타데이터를 유지한다. 일 실시형태에서, 요청이 키 관리 서비스에 의해 수신될 때, 키 관리 서비스는 요청을 이행하기 위해 사용된 암호 키와 연관된 메타데이터를 식별하기 위한 요청이 제공된 식별자를 사용한다. 일 실시형태에서, 메타데이터를 사용하여, 키 관리 서비스는 암호 키를 포함하는 암호 디바이스를 식별한다. 일 실시형태에서, 키 관리 서비스는 명령어가 식별된 암호 디바이스에 의해 구현된 프로토콜과 호환 가능하도록 요청을 이행하기 위한 명령어의 세트를 생성한다. 일 실시형태에서, 키 관리 서비스는 웹 서비스 API를 통해 제출된 요청을 공개 키 암호화 표준(public key cryptography standard: "PKCS") #11 호환 가능한 세트의 명령어로 변환하고, 호환 가능한 세트의 명령어는 그 다음, 식별된 암호 디바이스로 전송된다.
일 실시형태에서, 키 관리 서비스는 키 관리 서비스에 의해 제어되지 않는 암호 디바이스에 저장되는 암호 키의 관리 및 사용을 허용한다. 일 실시형태에서, 한 세트의 네트워크 연결 HSM은 고객 네트워크에 속하는 암호 키를 포함한다. 일 실시형태에서, 고객 네트워크는 고객에 의해 동작된 기업 네트워크 또는 가상 사설망(virtual private network: "VPN")일 수 있다. 일 실시형태에서, 고객의 기업을 위한 암호 키는 HSM에 저장된다. 일 실시형태에서, 키 관리 서비스는 고객 기업의 사용자로부터 암호 동작을 수행하기 위한 요청을 수신하고, 요청을 이행할 수 있는 HSM과 같은 암호 디바이스를 식별하며, 그 다음 식별된 디바이스와 호환 가능한 명령어의 세트를 암호 디바이스로 전송함으로써 요청을 이행한다. 다양한 실시형태에서, 암호 디바이스는 고객에 의해 제어된 가상 네트워크 또는 키 관리 서비스의 운영자에 의해 제어된 네트워크에 연결될 수 있다.
일 실시형태에서, 키 관리 서비스로부터 암호 디바이스를 분리함으로써, 고객은 암호 키에 대한 증가된 제어를 제공받는다. 일 실시형태에서, 이러한 제어는 암호 디바이스가 물리적으로 고객 기업 내에 위치될 때 암호 키에 대한 물리적 제어를 포함할 수 있다. 일 실시형태에서, 키 관리 서비스는 고객이 상이한 통신 및 명령어 프로토콜을 구현하는 상이한 벤더 및 디바이스로부터의 HSM을 포함하는 다양한 암호 디바이스를 사용하는 것을 허용한다. 일 실시형태에서, 키 관리 서비스는 키 관리 서비스가 암호 키가 위치되는 암호 디바이스에 대한 적절한 명령어를 생성하는 것을 허용하는 메타데이터를 유지한다.
당업자가 본 발명에 비추어 인식할 수 있는 바와 같이, 특정 실시형태는 다음 중 일부 또는 전부를 포함하는 특정 장점을 성취할 수 있다: (1) 키 관리 서비스에 의해 네트워크 연결 HSM에 저장된 키를 관리할 수 있는 표준 웹 기반 API를 제공함으로써 상이한 HSM을 사용하는 것을 더 용이하게 하는 것, (2) 키의 암호화된 버전을 키 관리 서비스로 내보내는 것을 회피함으로써 암호 키에 대한 보안을 제공하는 것, 및 (3) 고객 데이터센터 또는 고객 제어 가상 네트워크와 같은 외부 네트워크에 위치되는 HSM에 저장된 암호 키의 관리 및 사용을 허용함으로써 HSM 보안을 제공하는 것.
도 1은 일 실시형태에서, 하드웨어 보안 모듈에 저장되는 암호 키를 관리하는 시스템(100)의 일례를 도시한다. 일 실시형태에서, 키 관리 서비스(102)는 고객이 고객을 대신하여 암호 키를 생성, 삭제, 순환, 및 사용하는 것을 허용하는 관리된 서비스이다. 일 실시형태에서, 고객은 암호화된 키를 HSM으로 가져와서 키 관리 서버에 의해 관리되도록 요청할 수 있다. 일 실시형태에서, 고객은 HSM에 저장된 키를 암호화된 형태로 키 관리 서버로 가져와서 관리되도록 요청할 수 있다. 일 실시형태에서, 키 관리 서비스(102)를 사용하여, 고객은 키 관리 정책을 정의함으로써 키가 어떻게 그리고 언제 사용될 수 있는지 제어할 수 있다. 일 실시형태에서, 컴퓨팅 리소스 서비스 제공자에 의해 제공된 다양한 서비스는 그들 서비스 내에 저장된 데이터를 보호하는 것을 돕기 위해 키 관리 서비스와 상호작용할 수 있다. 일 실시형태에서, 키 관리 서비스는 하나 이상의 프로세서 및 하나 이상의 프로세서에 의해 실행되는 결과로서, 컴퓨터 시스템으로 하여금 키 순환, 키 생성, 암호화, 복호화, 디지털 서명 생성 및 검증, 키 삭제, 및 키 사용의 로깅과 같은 다양한 키 관리 기능을 수행하게 하는 실행 가능한 명령어를 포함하는 메모리를 가지는 컴퓨터 시스템이다. 일 실시형태에서, 컴퓨터 시스템은 컴퓨터 서버, 가상 서버, 서버 클러스터, 컨테이너 서비스, 컴퓨팅 런타임, 또는 명령어-프로세싱 장치일 수 있다.
일 실시형태에서, 키 관리 서비스(102)는 클라이언트 컴퓨터 시스템(106)을 통해 사용자(104)에 의해 액세스된다. 일 실시형태에서, 클라이언트 컴퓨터 시스템(106)은 개인용 컴퓨터 시스템, 서버 컴퓨터 시스템, 가상 컴퓨터 시스템, 핸드헬드 디바이스, 휴대폰, 랩탑 컴퓨터, 또는 컴퓨팅 기기이다. 클라이언트 컴퓨터 시스템은 일 실시형태에서, 또한 키 관리 서비스(102)를 실행하는 서비스 제공자에 의해 호스팅된다. 예를 들면, 일 실시형태에서, 클라이언트 컴퓨터 시스템은 서비스 제공자의 하드웨어에서 호스팅되는 가상 컴퓨터 시스템이고, 여기서 가상 컴퓨터 시스템은 대응하는 고객에 의해 원격으로 프로그램적으로 관리된다. 일 실시형태에서, 클라이언트 컴퓨터 시스템(106)은 하나 이상의 프로세서 및 하나 이상의 프로세서에 의해 실행되는 결과로서, 클라이언트 컴퓨터 시스템으로 하여금 컴퓨터 네트워크를 통해 키 관리 서비스(102)로부터 요청을 전송하고 결과를 수신하게 하는 명령어를 포함하는 메모리를 포함한다. 일 실시형태에서, 클라이언트 컴퓨터 시스템(106)에 의해 제출된 요청은 웹 서비스 요청이다.
일 실시형태에서, 키 관리 서비스(102)는 클라이언트 컴퓨터 시스템(106)으로부터, 암호 동작을 수행하기 위한 요청을 수신한다. 일 실시형태에서, 요청은 키 관리 서비스(102)가 요청을 이행하기 위해 사용된 암호 키를 식별하는 것을 허용하는 정보를 포함한다. 일 실시형태에서, 정보는 암호 키와 연관된 핸들(handle), 이름, 또는 토큰 또는 다른 식별자이다. 일 실시형태에서, 식별자는 요청의 파라미터에 의해 간접적으로 식별된다. 예를 들면, 일 실시형태에서, 데이터를 암호화하기 위한 요청은 요청을 프로세싱하기 위해 적합한 암호 디바이스를 식별하기 위해 사용될 수 있는 암호 키 또는 암호 알고리즘을 명시할 수 있다. 일 실시형태에서, 키 관리 서비스(102)는 정보와 연관된 암호 키를 식별하고, 식별된 암호 키와 연관된 메타데이터의 세트(110)를 검색하기 위해 데이터베이스(108)에 연결한다. 일 실시형태에서, 데이터베이스(108)는 메타데이터를 포함하는 관계형 데이터베이스, 데이터 저장장치, 데이터 구조, 키 값 저장장치, 또는 메모리일 수 있다. 데이터베이스(108)는 컴퓨터 네트워크 또는 외부 연결을 통해 액세스 가능한 키 관리 서비스(102)를 호스팅하는 컴퓨터 시스템 외부의 저장 디바이스 또는 키 관리 서비스(102)를 호스팅하는 컴퓨터 시스템의 메모리일 수 있다.
일 실시형태에서, 메타데이터(110)는 암호 키가 저장되는 암호 디바이스를 식별하기 위해 키 관리 서비스(102)에 의해 사용 가능한 정보를 포함한다. 일 실시형태에서, 정보는 네트워크 주소, 포트 번호, "URL"(uniform resource locator), 및 암호 키가 저장되는 암호 디바이스와 관련된 식별자 중 하나 이상을 포함한다. 일 실시형태에서, 암호 디바이스는 HSM, 암호화 프로세서, 신뢰 플랫폼 모듈(trusted platform module: TPM), 변형 억제 메모리, 내보내기 가능하지 않은 메모리 디바이스, 또는 보호된 메모리이다. 일 실시형태에서, 정보는 암호 키가 저장되는 암호 디바이스와 연관된 인터페이스 프로토콜을 설명한다. 일 실시형태에서, 정보는 암호 디바이스에 액세스하기 위해 키 관리 서비스(102)에 의해 사용 가능한 자격 증명(credentials)을 설명한다. 일 실시형태에서, 메타데이터는 키 순환 정책, 키 길이 정책, 및 암호 키에 대한 사용 제한과 같은 암호 키에 대한 키 관리 정책을 명시하는 정보를 포함한다. 일 실시형태에서, 메타데이터는 암호 디바이스의 암호 키를 식별하는 식별자, 이름 또는 핸들을 포함한다.
일 실시형태에서, 키 관리 서비스(102)는 사용자(104)가 요청된 암호 동작과 연관된 암호 키를 사용하도록 허용되는지의 여부를 결정하기 위해 메타데이터를 사용한다. 일 실시형태에서, 사용자(104)가 암호 키를 사용하도록 허용되면, 키 관리 서비스(102)는 요청을 암호 키가 저장되는 암호 디바이스와 호환 가능한 명령어의 세트로 변환한다. 일 실시형태에서, 요청은 웹 요청의 형태로 제출되고, 명령어의 세트는 암호 키가 저장되는 HSM과 호환 가능한 PKCS11 명령어의 세트이다. 일 실시형태에서, 메타데이터 및 자격 증명으로부터 추출된 주소 정보를 사용하여, 키 관리 서비스(102)는 암호 키가 저장되는 암호 디바이스에 암호 디바이스의 암호 키를 식별하는 식별자, 및 명령어의 세트를 제출한다. 일 실시형태에서, 암호 디바이스는 식별된 키를 사용하여 암호 동작을 수행하고, 결과를 키 관리 서비스(102)로 반환한다.
일 실시형태에서, 암호 디바이스는 HSM 클러스터(112)로서 배열된 복수의 HSM이다. 일 실시형태에서, HSM 클러스터는 복수의 HSM에 걸쳐 복제되는 암호 키의 세트를 포함한다. 일 실시형태에서, 로드 밸런서(load balancer)는 복수의 HSM에 걸쳐 암호 동작을 수행하기 위한 요청을 분배하여 암호 동작의 증가된 처리량, 및 HSM이 고장난(failed) 경우에 증가된 신뢰성을 허용한다. 일 실시형태에서, HSM 클러스터(112)는 제1 HSM(114), 제2 HSM(116) 및 제3 HSM(118)을 포함한다. 일 실시형태에서, 로드 밸런서는 명령어를 클러스터의 개별적인 HSM으로 라우팅하는 하드웨어 로드 밸런서이다. 일 실시형태에서, 로드 밸런서는 클러스터에서 개별적인 HSM의 프로세싱 가용성에 적어도 부분적으로 기초하여 HSM을 선택하는 키 관리 서버에 구축된 소프트웨어 로드 밸런서이다.
일 실시형태에서, 암호 디바이스는 고객의 다양한 네트워크 토폴로지 또는 물리적 보안 요구조건을 용이하게 하기 위해 키 관리 서비스로부터 멀리 떨어져 위치될 수 있다. 일 실시형태에서, 암호 디바이스는 키 관리 서비스와 동일한 네트워크에 위치된다. 일 실시형태에서, 암호 디바이스는 고객 데이터 센터 내에 위치되고, 키 관리 서비스는 고객 데이터 센터의 네트워크에 연결하는 터널 또는 게이트웨이에 의해 암호 디바이스에 액세스한다. 일 실시형태에서, 암호 디바이스는 고객 가상 네트워크에 연결되고, 키 관리 서비스는 컴퓨팅 리소스 서비스 제공자에 의해 호스팅되며, 키 관리 서비스는 키 관리 서비스가 암호 디바이스에 액세스하는 것을 허용하도록 고객 가상 네트워크를 구성한다. 고객이 고객의 제어 하에 네트워크에 연결된 암호 디바이스에 키를 유지하는 것을 허용함으로써, 고객은 다양한 실시형태에서, 그들 디바이스에 저장된 암호 키에 대해 더 큰 물리적 제어를 가할 수 있다. 일 실시형태에서, 디바이스에 저장된 암호 키는 일반 텍스트 또는 암호화된 형태로 키 관리 서비스에서 사용 가능하지 않게 된다. 일 실시형태에서, 키 관리 서비스는 요청과 함께 암호화된 버전의 암호 키를 HSM 클러스터에 제공하지 않는다.
도 2는 일 실시형태에서, HSM에 저장된 키를 관리하는 키 관리 서버를 포함하는 시스템(200)의 일례를 도시한다. 일 실시형태에서, 키 관리 서버(202)는 네트워크 액세스 가능한 애플리케이션 프로그래밍 인터페이스를 제공함으로써 사용자(204)에게 키 관리 서비스를 제공한다. 일 실시형태에서, 키 관리 서버는 도 9에서 설명된 웹 서버와 같은 컴퓨터 시스템에서 구현될 수 있다. 일 실시형태에서, 사용자(204)는 클라이언트 컴퓨터 시스템(206)을 통해 키 관리 서버(202)에 액세스한다. 일 실시형태에서, 클라이언트 컴퓨터 시스템(206)에서 호스팅되는 애플리케이션은 암호 동작을 수행하기 위한 요청을 생성한다. 일 실시형태에서, 요청은 키 식별자를 포함한다. 일 실시형태에서, 요청은 표현 상태 전송("REST") 인터페이스, 단순 객체 액세스 프로토콜("SOAP") 인터페이스, 또는 확장 가능한 마크업 언어("XML") 인터페이스와 같은 웹 서비스 인터페이스를 통해 키 관리 서버(202)에 제출된다.
일 실시형태에서, 키 식별자를 포함하는 요청은 키 관리 서버(202)에 의해 호스팅된 키 관리 서비스(208)에서 수신된다. 일 실시형태에서, 키 관리 서비스(208)는 키 관리 서버(202)의 메모리에 저장된 실행 가능한 명령어로 구성된 소프트웨어 구성요소이다. 일 실시형태에서, 본 문서에서, 키 관리 서비스(208)에 귀속된 동작은 키 관리 서비스(208)와 연관된 실행 가능한 명령어를 실행하는 결과로서 키 관리 서버(202)에 의해 수행된다. 일 실시형태에서, 키 관리 서비스(208)는 제공된 키 식별자와 연관된 메타데이터(212)를 검색하기 위해 데이터베이스(210)에 질의한다. 일 실시형태에서, 메타데이터는 메타데이터(212)에서 식별된 HSM에 제공되는 결과로서, HSM의 특정한 키를 식별하는 키 핸들을 포함한다.
일 실시형태에서, 키 관리 서비스(208)는 사용자(204)가 요청된 동작을 수행할 권한이 있음을 확인하고, 키 핸들과 함께 요청을 HSM(216)과 통신하는 HSM 프록시(214)에 제출한다. 일 실시형태에서, HSM 프록시(214)는 요청을 HSM(216)과 호환 가능한 프로토콜로 변환한다. 일 실시형태에서, 키 관리 서버는 복수의 HSM 프록시를 포함하고, 키 메타데이터(212)에 적어도 부분적으로 기초하여 특정한 프록시를 선택한다. 일 실시형태에서, HSM 프록시는 특정한 HSM을 식별하는 키 관리 서비스(208)로부터 정보를 수신하고 메타데이터(212)의 정보를 사용하여 특정한 HSM에 대한 네트워크 경로를 식별한다. 일 실시형태에서, HSM(216)은 키 관리 서버(202)와 동일한 네트워크에 연결되고, 요청 및 결과는 공유 네트워크를 통해 HSM 프록시(214)와 키 관리 서버(202) 사이에서 단순히 송신된다.
일 실시형태에서, HSM 프록시(214)는 변환된 요청을 HSM(216)의 HSM 서비스(218)로 전송한다. 일 실시형태에서, HSM 서비스(218)는 키 관리 서버(202)가 요청을 이행하기 위한 전제 조건으로서 허가된 사용자임을 인증한다. 일 실시형태에서, HSM 서비스(218)는 HSM(216)의 암호화 프로세서에서 실행되는 실행 가능한 명령어의 세트이다. 일 실시형태에서, HSM 서비스(218)는 HSM(216)의 보호된 메모리(220)로부터 키를 검색하고 요청된 암호 동작을 수행한다. 일 실시형태에서, HSM 서비스(218)는 결과를 HSM 프록시(214)로 반환하고, 키 관리 서버(202)는 결과를 클라이언트 컴퓨터 시스템(206)으로 다시 중계한다.
도 3은 일 실시형태에서, 고객 네트워크에서 라우터를 통해 HSM과 통신하는 키 관리 시스템(300)의 일례를 도시한다. 일 실시형태에서, 키 관리 서버(302)는 네트워크 액세스 가능한 애플리케이션 프로그래밍 인터페이스를 제공함으로써 사용자(304)에게 키 관리 서비스를 제공한다. 일 실시형태에서, 사용자(304)는 클라이언트 컴퓨터 시스템(306)을 통해 키 관리 서버(302)에 액세스한다. 일 실시형태에서, 클라이언트 컴퓨터 시스템(306)에 의해 호스팅된 애플리케이션 프로그램은 암호 동작을 수행하기 위한 요청을 생성한다. 일 실시형태에서, 요청은 키 식별자를 포함한다. 일 실시형태에서, 요청은 표현 상태 전송("REST") 인터페이스와 같은 웹 서비스 인터페이스, 또는 상기 언급된 다른 웹 인터페이스를 통해 키 관리 서버(302)에 제출된다.
일 실시형태에서, 키 식별자를 포함하는 요청은 키 관리 서버(302)에 의해 호스팅된 키 관리 서비스(308)에서 수신된다. 일 실시형태에서, 키 관리 서비스(308)는 키 관리 서버(302)의 메모리에 저장된 실행 가능한 명령어로 구성된 소프트웨어 구성요소이다. 일 실시형태에서, 본 문서에서, 키 관리 서비스(308)에 귀속된 동작은 키 관리 서비스(308)와 연관된 실행 가능한 명령어를 실행하는 결과로서 키 관리 서버(302)에 의해 수행된다. 일 실시형태에서, 키 관리 서비스(308)는 제공된 키 식별자와 연관된 메타데이터(312)를 검색하기 위해 데이터베이스(310)에 질의한다. 일 실시형태에서, 메타데이터는 메타데이터(312)에서 식별된 HSM에 제공되는 결과로서, HSM의 특정한 키를 식별하는 키 핸들을 포함한다.
일 실시형태에서, 키 관리 서비스(308)는 사용자(304)가 요청된 동작을 수행할 권한이 있음을 확인하고, 키 핸들과 함께 요청을 HSM(316)과 통신하는 HSM 프록시(314)에 제출한다. 일 실시형태에서, HSM 프록시(314)는 요청을 HSM(316)과 호환 가능한 프로토콜로 변환한다. 일 실시형태에서, 요청은 등가의 명령어의 테이블을 사용하여 새로운 명령어를 생성하고, 새로운 프로토콜의 구문에 따라 새로운 명령어에 대한 파라미터를 생성함으로써 변환된다. 일 실시형태에서, 변환은 원래 명령어와 등가인 복수의 명령어를 생성할 수 있다. 일 실시형태에서, 키 관리 서버는 복수의 HSM 프록시를 포함하고, 키 메타데이터(312)에 적어도 부분적으로 기초하여 특정한 프록시를 선택한다. 일 실시형태에서, HSM 프록시는 특정한 HSM을 식별하는 키 관리 서비스(308)로부터 정보를 수신하고, 메타데이터(312)의 정보를 사용하여 특정한 HSM에 대한 네트워크 경로를 식별한다.
일 실시형태에서, HSM 프록시(314)는 변환된 요청을 HSM(316)의 HSM 서비스(320)로 전송한다. 일 실시형태에서, HSM 서비스(320)는 키 관리 서버(302)가 요청을 이행하기 위한 전제 조건으로서 허가된 사용자임을 인증한다. 일 실시형태에서, HSM 서비스(320)는 HSM(316)의 암호화 프로세서에서 실행되는 실행 가능한 명령어의 세트이다. 일 실시형태에서, HSM 서비스(320)는 HSM(316)의 보호된 메모리(322)로부터 키를 검색하고 요청된 암호 동작을 수행한다. 일 실시형태에서, HSM 서비스(320)는 결과를 HSM 프록시(314)로 반환하고, 키 관리 서버(302)는 결과를 클라이언트 컴퓨터 시스템(306)으로 다시 중계한다.
일 실시형태에서, 사용자에게 부가적인 보안 및 제어를 제공하기 위해, HSM은 키 관리 서버(302)의 네트워크와 상이한 네트워크에 위치된다. 일 실시형태에서, 상이한 네트워크는 상이한 서브넷, 상이한 가상 네트워크, 또는 상이한 네트워크 세그먼트일 수 있다. 일 실시형태에서, HSM(316)은 네트워크 및 고객 데이터 센터 또는 고객에 의해 제어되고 일반적으로 키 관리 서버(302)에 액세스 가능하지 않은 가상 네트워크와 같은 고객에 속하는 네트워크에 연결된다. 일 실시형태에서, 가상 네트워크 라우터(318)는 HSM(316)의 네트워크에서 제공된다. 일 실시형태에서, 가상 네트워크 라우터(318)는 키 관리 서버에 액세스 가능한 종점을 제공하고, HSM(316)과 키 관리 서버(302) 사이에서 요청 및 결과를 라우팅한다. 일 실시형태에서, 가상 네트워크 라우터(318)는 HSM(316)과 키 관리 서버(302) 사이의 물리적 네트워크 라우터, 게이트웨이, 또는 네트워크 터널로 대체될 수 있다.
도 4는 일 실시형태에서, HSM 프록시 서비스에 대한 아키텍처 다이어그램(400)을 도시한다. 일 실시형태에서, 키 관리 서비스와 연관된 클라이언트의 세트(402)는 HSM 프록시 서비스 인스턴스(404)에 액세스할 수 있다. 일 실시형태에서, HSM 프록시 서비스 인스턴스(404)는 키 관리 서비스에 액세스 가능한 애플리케이션 프로그래밍 인터페이스, 웹 서비스 인터페이스, 또는 서비스 인터페이스를 제공한다. 일 실시형태에서, HSM 프록시 서비스 인스턴스(404)는 구동기의 세트에 인터페이스하는 프록시 서비스(406)를 포함한다. 일 실시형태에서, 구동기의 세트는 제1 구동기(408), 제2 구동기(410) 및 제3 구동기(412)를 포함한다. 일 실시형태에서, 구동기의 세트의 각각의 구동기는 특정한 HSM 클러스터와의 통신을 허용하는 프록시 서비스(406)에 인터페이스를 제공한다. 일 실시형태에서, 구동기의 세트의 각각의 구동기에 의해 제공된 인터페이스는 PKCS11, 마이크로소프트 암호화 API("CAPI") 또는 JCE 인터페이스이다. 일 실시형태에서, 구동기의 세트의 각각의 구동기는 HSM 클러스터 구동기/로드 밸런서를 통해 그의 연관된 HSM 클러스터와 통신한다. 일 실시형태에서, HSM 프록시 서비스 인스턴스(404)는 제1 클러스터 구동기(414), 제2 클러스터 구동기(416) 및 제3 클러스터 구동기(418)를 포함한다. 일 실시형태에서, 각각의 클러스터 구동기는 구동기의 세트로부터의 출력을 포맷 및 특정한 HSM 클러스터와 호환 가능한 프로토콜로 변환한다. 일 실시형태에서, 클러스터 구동기는 네트워크 인터페이스를 통해 특정한 HSM 클러스터와 통신한다. 일 실시형태에서, 클러스터 구동기는 HSM 클러스터의 개별적인 HSM에 걸쳐 암호 요청을 분배하는 로드 밸런싱 기능을 포함한다.
일 실시형태에서, 제1 클러스터 구동기(414)는 HSM 클러스터(420)에 조직된 HSM의 세트에 걸쳐 암호 명령어를 분배한다. 일 실시형태에서, 암호 명령어는 라운드 로빈 방식, 또는 랜덤 방식으로 분배될 수 있다. 일 실시형태에서, HSM 클러스터(420)는 제1 HSM(422), 제2 HSM(424) 및 제3 HSM(426)을 포함한다. 일 실시형태에서, 특정한 클러스터 구동기는 개별적인 HSM, HSM 클러스터, 암호화 프로세서, 또는 암호 디바이스와 인터페이스할 수 있다. 일 실시형태에서, 클러스터 구동기는 HSM 벤더에 특수한 프로토콜을 구현한다. 일 실시형태에서, HSM 프록시 서비스 인스턴스(404)는 조합하여 키 관리 서비스에 의해 생성된 표준 포맷으로부터의 명령어를 HSM에 의해 이해된 벤더 특정 포맷 및 프로토콜로 변환할 수 있는 다양한 구동기 및 클러스터 구동기를 포함할 수 있다. 일 실시형태에서, 이것은 키 관리 시스템을 구현할 때 증가된 유연성을 제공한다.
일 실시형태에서, HSM 프록시는 자바 서비스(Java service), 고 서비스(Go service) 또는 파이썬 서비스(Python Service)로서 구현된다. 일 실시형태에서, 각각의 HSM 프록시 서비스 인스턴스는 그의 연관된 HSM 클러스터에 대한 주소 정보를 포함하는 정보를 유지한다. 일 실시형태에서, 정보는 HSM 클러스터에 대한 공개 키를 포함한다.
도 5는 일 실시형태에서, 클라이언트 컴퓨터 시스템, 키 관리 서버 및 하드웨어 보안 모듈에 의해 수행되는 결과로서, HSM에 저장된 암호 키를 사용하여 암호 동작을 수행하는 프로세스(500)의 일례를 도시한다. 일 실시형태에서, 프로세스는 클라이언트 컴퓨터 시스템이 암호 동작을 수행하기 위한 요청을 생성하는 것으로 블록(502)에서 시작한다. 일 실시형태에서, 요청은 일반 텍스트 데이터를 암호화하기 위한 요청, 암호문을 복호화하기 위한 요청, 디지털 서명을 생성하기 위한 요청, 암호 키를 순환시키기 위한 요청, 메시지 인증 코드를 생성하기 위한 요청, 디지털 서명을 검증하기 위한 요청, 또는 다른 동작일 수 있다. 일 실시형태에서, 요청은 특정한 암호 키를 식별하는 정보를 포함한다. 일 실시형태에서, 정보는 식별자, 핸들, 또는 토큰이지만, 암호화되거나 일반 텍스트 형태의 암호 키 그 자체를 포함하지 않는다. 일 실시형태에서, 정보는 키 관리 서비스가 요청된 동작을 수행하기 위해 필요한 특정한 암호 키를 식별하는 것을 허용하는 암호 키와 연관된 식별자이다. 일 실시형태에서, 블록(504)에서, 클라이언트 컴퓨터 시스템은 암호 키와 연관된 요청 및 식별 정보를 키 관리 서버로 송신한다.
일 실시형태에서, 블록(506)에서, 키 관리 서버는 암호 키를 식별하기 위해 요청을 수신하고 요청에서 제공된 정보를 사용한다. 일 실시형태에서, 블록(508)에서, 키 관리 서버는 데이터 저장장치에 액세스하고 암호 키와 연관된 메타데이터를 검색한다. 일 실시형태에서, 메타데이터는 암호 키를 포함하는 HSM과 같은 암호 디바이스의 세트를 식별하는 정보를 포함할 수 있다. 일 실시형태에서, 메타데이터는 네트워크 주소 정보, 서비스 URL, 포트 번호, 또는 키 관리 서버가 암호 키가 저장되는 하드웨어 보안 모듈에 액세스하는 것을 허용하는 다른 정보를 포함한다. 일 실시형태에서, 메타데이터는 암호 키가 저장되는 암호 디바이스에 액세스하기 위해 사용된 자격 증명을 포함한다. 일 실시형태에서, 메타데이터는 암호 디바이스에 대한 암호 키를 식별하는 핸들, 토큰, 또는 연관된 식별자를 포함한다.
일 실시형태에서, 블록(510)에서, 키 관리 서버는 암호 키를 저장하는 특정한 HSM을 식별하기 위해 메타데이터를 사용한다. 일 실시형태에서, 블록(512)에서, 키 관리 서버는 요청을 검사하고 요청자가 요청된 암호 동작을 수행할 권한이 있는지의 여부를 결정한다. 일 실시형태에서, 키 관리 서버는 자격 증명이 요청이 암호 디바이스에 제출되는 것을 허용하는지의 여부를 결정하기 위해 메타데이터의 자격 증명을 또한 검사할 수 있다. 일 실시형태에서, 요청이 키 관리 서버 또는 하드웨어 보안 모듈에 의해 허가되지 않은 경우, 오류 메시지는 클라이언트 컴퓨터 시스템으로 반환된다. 일 실시형태에서, 요청이 키 관리 서버 및 하드웨어 보안 모듈에 의해 허가되면, 실행은 블록(514)으로 진행한다.
일 실시형태에서, 블록(514)에서, 키 관리 서버는 암호 키를 포함하는 HSM의 세트로부터 특정한 HSM을 선택한다. 일 실시형태에서, 메타데이터는 암호 키가 저장되는 복수의 HSM을 식별하고, 키 관리 서버는 로드 밸런서를 사용하여 요청을 이행하기 위해 복수의 HSM 중 하나를 선택한다. 일 실시형태에서, 특정한 HSM은 암호 키와 연관된 메타데이터에 적어도 부분적으로 기초하여 선택된다. 일 실시형태에서, 키 관리 서버는 선택된 HSM과 호환 가능한 명령어의 세트를 생성한다. 일 실시형태에서, 블록(516)에서, 메타데이터로부터 결정된 키 식별자 및 명령어의 세트가 선택된 HSM에 제출된다. 일 실시형태에서, 키 관리 서버는 명령어의 세트의 성능을 허가하기 위해 HSM에 자격 증명을 제공한다.
일 실시형태에서, 블록(518)에서, HSM은 명령어의 세트를 수신한다. 일 실시형태에서, HSM은 제공된 식별자와 연관되는 암호 키를 검색하고 요청을 이행하기 위한 명령어의 세트를 수행한다. 일 실시형태에서, 블록(520)에서, 하드웨어 보안 모듈은 암호 동작으로부터 결과의 세트를 생성한다. 일 실시형태에서, 동작은 암호 동작이고 결과는 명령어의 세트가 제공된 일반 텍스트로부터 생성된 암호문이다. 일 실시형태에서, 동작은 복호화 동작이고 결과는 명령어의 세트가 제공된 암호문으로부터 생성된 일반 텍스트이다.
일 실시형태에서, 블록(522)에서, 키 관리 서버는 HSM으로부터 결과를 수신하고 결과를 클라이언트 컴퓨터 시스템에 중계한다. 일 실시형태에서, 블록(524)에서, 클라이언트 컴퓨터 시스템은 키 관리 서버로부터 결과를 수신하여, 블록(502)에서 제출된 요청을 이행한다.
도 6은 일 실시형태에서, 키 관리 서버에 의해 수행되는 결과로서, HSM 클러스터에 대한 논리적 접속을 확립하는 프로세스(600)의 일례를 도시한다. 일 실시형태에서, HSM 클러스터에 대한 논리적 접속은 HSM 클러스터와 통신하기 위한 키 관리 서버의 능력을 확립하고, HSM로 하여금 HSM 클러스터에 저장된 암호 키를 사용하여 암호 동작을 수행하게 한다. 일 실시형태에서, 논리적 접속은 키 관리 서버와 HSM 사이에 TCP 연결과 같은 논리적 네트워크 연결을 확립하고, HSM에서 암호 동작을 수행하기 위한 키 관리 서버의 권한을 확인한다.
일 실시형태에서, 프로세스는 키 관리 서버가 HSM 클러스터를 접속하기 위한 요청을 수신하는 것으로 블록(602)에서 시작한다. 일 실시형태에서, 요청은 웹 요청과 같은 네트워크 액세스 가능한 API에 대한 호출이다. 일 실시형태에서, 요청은 키 관리 서버에 접속할 특정한 HSM, 암호화 프로세서, 또는 암호 디바이스를 명시할 수 있다. 일 실시형태에서, 블록(604)에서, 키 관리 서버는 HSM 클러스터에 대한 액세스 자격 증명을 획득한다. 일 실시형태에서, 키 관리 서버는 키 관리 서버에 의해 유지된 액세스 자격 증명의 데이터베이스로부터 액세스 자격 증명을 검색한다. 일 실시형태에서, HSM 클러스터에 액세스하기 위한 자격 증명은 클러스터를 접속하기 위한 요청에 포함된다. 일 실시형태에서, 자격 증명은 암호 키, 개인 암호 키, 사용자이름 및 패스워드, 또는 서명된 토큰이다.
일 실시형태에서, 블록(606)에서, 키 관리 서버는 키 관리 서버가 HSM 클러스터에 액세스할 수 있도록 네트워크 경로를 구성한다. 일 실시형태에서, 네트워크 경로는 고객 가상 네트워크에 대한 액세스를 허용하도록 가상 라우터를 구성함으로써(예를 들면, 하나 이상의 엔트리를 라우팅 테이블에 부가함으로써) 구성될 수 있다. 일 실시형태에서, 블록(608)에서, 키 관리 서버는 접속 요청이 제공된 자격 증명의 세트를 사용하여 HSM 클러스터에 연결한다. 일 실시형태에서, 키 관리 서버가 HSM 클러스터에 의해 허가된 후에, 블록(610)에서, 키 관리 서버는 필요한 허가가 HSM에 의해 승인되었는지를 검증한다. 일 실시형태에서, 키 관리 서버는 키 관리 서버에 의해서만 알려진 자격 증명의 새로운 세트로 자격 증명을 순환시킨다. 일 실시형태에서, 자격 증명은 자격 증명의 새로운 세트를 생성하고 기존의 자격 증명을 사용하여 HSM으로 변경을 허가함으로써 순환된다. 일 실시형태에서, 블록(612)에서, 업데이트된 자격 증명 및 네트워크 주소와 라우팅 정보는 키 관리 서버에 의해 나중에 사용하기 위해 데이터베이스에 저장된다. 일 실시형태에서, 키 관리 서버는 자격 증명의 세트를 주기적으로 자격 증명의 부가적인 새로운 세트로 순환시킨다.
도 7은 일 실시형태에서, 키 관리 서버에 의해 수행되는 결과로서, HSM에 암호 키를 생성하고 키 관리 서비스에 의해 사용하기 위해 키를 등록하는 프로세스(700)의 일례를 도시한다. 일 실시형태에서, 블록(702)에서, 키 관리 서버는 키 관리 서버에 액세스 가능한 HSM 및 키를 생성하기 위한 명령어를 수신한다. 일 실시형태에서, 명령어는 식별자를 제공함으로써 암호 키를 생성할 HSM, 암호 디바이스, 또는 HSM 클러스터를 명시한다. 일 실시형태에서, 블록(704)에서, 키 관리 서버는 식별자에 적어도 부분적으로 기초하여 선택된 HSM을 식별하고, HSM에 액세스하기 위한 네트워크 주소 및 자격 증명을 포함하는 메타데이터를 검색한다. 일 실시형태에서, 블록(706)에서, 키 관리 서버는 새로운 암호 키를 생성하기 위한 명령어를 HSM으로 전송하기 위해 네트워크 주소 및 자격 증명을 사용한다. 일 실시형태에서, 암호 키는 대칭 또는 비대칭 암호 키 쌍일 수 있다.
일 실시형태에서, 블록(708)에서, HSM은 암호 키를 참조하는데 사용하기 위해 키 식별자를 키 관리 서버로 반환한다. 일 실시형태에서, 블록(710)에서, 키 관리 서버는 암호 키에 대한 라벨을 생성하고, 블록(712)에서, 키 식별자 및 라벨은 키 관리 서버에 액세스 가능한 데이터 저장장치에 메타데이터로서 저장된다. 일 실시형태에서, 블록(714)에서, 키 라벨이 요청자로 반환된다. 일 실시형태에서, 요청자, 또는 다른 개체는 키 관리 서비스에 대한 라벨로 암호 키를 식별함으로써 암호 키를 사용하여 암호 동작을 수행할 수 있다.
도 8은 일 실시형태에서, 키 관리 시스템에 연결된 HSM에 대한 상태 전이 다이어그램(800)의 일례를 도시한다. 일 실시형태에서, HSM, HSM 클러스터, 또는 암호 디바이스는 시작 상태(802)에서 시작한다. 일 실시형태에서, 새로운 HSM이 시스템에 부가되고, 키 관리 시스템이 접속 프로세스를 시작할 때, HSM은 HSM에 연결하는 프로세스가 동작함에 따라 접속 상태(804)에 배치된다. 일 실시형태에서, 접속 프로세스가 성공적이면, HSM은 접속된 상태(806)에 배치된다. 일 실시형태에서, HSM 및 접속된 상태(806)는 키 관리 시스템과의 통신 링크를 확립했고 암호 키를 생성하고 사용하기 위해 사용될 수 있다.
접속 프로세스가 실패하면, HSM은 고장난 접속 상태(808)에 배치된다. 일 실시형태에서, 고장난 접속 상태(808)는 접속이 시도되었지만 성공적으로 완료되지 않았음을 나타낸다. 일 실시형태에서, 키 관리 시스템은 HSM을 재접속하려고 시도할 수 있다. 일 실시형태에서, 이러한 시도가 이루어지면, HSM은 접속 상태(804)로 되돌아간다.
일 실시형태에서, 키 관리 시스템은 이전에 접속된 HSM을 분리할 수 있고, HSM은 분리된 상태(810)에 배치된다. 키 관리 시스템이 HSM이 재접속될 것으로 결정하면, HSM은 접속 상태(804)로 되돌아간다.
도 9는 일 실시형태에 따른 키 관리 서버의 양태를 구현하기 위한 일 예시적인 시스템(900)의 양태를 도시한다. 인식될 바와 같이, 설명의 목적을 위해 웹 기반 시스템이 사용될지라도, 적절한 경우 다양한 실시형태를 구현하기 위해 상이한 시스템이 사용될 수 있다. 일 실시형태에서, 시스템은 적절한 네트워크(904)를 통해 요청, 메시지, 또는 정보를 전송하고/하거나 수신하고 정보를 다시 디바이스의 사용자에게 전달하도록 동작 가능한 임의의 적절한 디바이스를 포함하는 전자 클라이언트 디바이스(902)를 포함한다. 이러한 클라이언트 디바이스의 예는 개인용 컴퓨터, 셀룰러 또는 다른 모바일 폰, 핸드헬드 메시징 디바이스, 랩탑 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 개인 휴대용 정보 단말기, 내장형 컴퓨터 시스템, 전자 책 판독기 등을 포함한다. 일 실시형태에서, 네트워크는 인트라넷, 인터넷, 셀룰러 네트워크, 근거리 통신망, 위성 네트워크 또는 임의의 다른 이러한 네트워크 및/또는 이들의 조합을 포함하는 임의의 적절한 네트워크를 포함하고 이러한 시스템을 위해 사용된 구성요소는 선택된 네트워크 및/또는 시스템의 유형에 적어도 부분적으로 의존한다. 이러한 네트워크를 통해 통신하기 위한 많은 프로토콜 및 구성요소는 잘 알려지고 본 명세서에서 상세하게 논의되지 않을 것이다. 일 실시형태에서, 네트워크를 통한 통신은 유선 및/또는 무선 연결 및 이들의 조합에 의해 가능해진다. 일 실시형태에서, 다른 네트워크에 대해, 유사한 목적을 제공하는 일 대안적인 디바이스가 당업자에게 명백할 것으로서 사용될 수 있을지라도, 시스템이 요청을 수신하고 그에 응답하여 콘텐트를 제공하기 위한 웹 서버(906)를 포함하기 때문에, 네트워크는 인터넷 및/또는 다른 공개적으로 주소지정 가능한 통신 네트워크를 포함한다.
일 실시형태에서, 예시적인 시스템은 적어도 하나의 애플리케이션 서버(908) 및 데이터 저장장치(910)를 포함하고 연결되거나 그렇지 않으면 구성될 수 있는 몇몇 애플리케이션 서버, 계층 또는 다른 요소, 프로세스 또는 구성요소가 존재할 수 있으며, 그들이 적절한 데이터 저장장치로부터 데이터를 얻는 것과 같은 작업을 수행하기 위해 상호작용할 수 있음을 이해해야 한다. 서버는 일 실시형태에서, 하드웨어 디바이스, 가상 컴퓨터 시스템, 컴퓨터 시스템에서 실행되는 프로그래밍 모듈, 및/또는 네트워크를 통해 통신(예컨대, 웹 서비스 애플리케이션 프로그래밍 인터페이스(API) 요청)을 수신하고 이에 응답하기 위해 하드웨어 및/또는 소프트웨어로 구성된 다른 디바이스로서 구현된다. 본 명세서에서 사용된 바와 같이, 달리 명시되지 않거나 문맥으로부터 명확하지 않은 한, 용어 "데이터 저장장치"는 데이터를 저장, 액세스 및 검색할 수 있는 임의의 디바이스 또는 디바이스의 조합을 언급하며, 이는 임의의 표준, 분산된, 가상 또는 클러스터형 시스템에서 임의의 조합 및 수의 데이터 서버, 데이터베이스, 데이터 저장 디바이스 및 데이터 저장 매체를 포함될 수 있다. 데이터 저장장치는 일 실시형태에서, 블록 레벨 및/또는 객체 레벨 인터페이스와 통신한다. 애플리케이션 서버는 클라이언트 디바이스에 대한 하나 이상의 애플리케이션의 양태를 실행하기 위해 필요한 데이터 저장장치와 통합하기 위한 임의의 적절한 하드웨어, 소프트웨어 및 펌웨어를 포함할 수 있어서, 애플리케이션에 대한 데이터 액세스 및 비즈니스 로직의 일부 또는 전부를 취급한다.
일 실시형태에서, 애플리케이션 서버는 데이터 저장장치와 협력하여 액세스 제어 서비스를 제공하고 하이퍼텍스트 마크업 언어("HTML"), 확장 가능한 마크업 언어("XML"), 자바스크립트, 종속 스타일 시트(Cascading Style Sheet: "CSS"), 제이슨(JavaScript Object Notation: JSON), 및/또는 또 다른 적절한 클라이언트 측 또는 다른 구조화된 언어의 형태로 웹 서버에 의해 클라이언트 디바이스와 연관된 사용자에게 제공되는 텍스트, 그래픽, 오디오, 비디오 및/또는 다른 콘텐트를 포함하지만 이들로 제한되지 않는 콘텐트를 생성한다. 클라이언트 디바이스로 전송된 콘텐트는 일 실시형태에서, 사용자가 청각적으로, 시각적으로 및/또는 다른 감각을 통해 감지 가능한 형태를 포함하지만, 그들로 제한되지 않는 하나 이상의 형태로 콘텐트를 제공하기 위해 클라이언트 디바이스에 의해 프로세싱된다. 클라이언트 디바이스(902)와 애플리케이션 서버(908) 사이의 콘텐트의 전달뿐만 아니라, 모든 요청 및 응답의 취급은 일 실시예에서, PHP: 하이퍼텍스트 프리프로세서(Hypertext Preprocessor: "PHP"), 파이썬, 루비, 펄, 자바, HTML, XML, 제이슨, 및/또는 이 예에서 또 다른 적절한 서버 측 구조화된 언어를 사용하여 웹 서버에 의해 취급된다. 일 실시형태에서, 단일 디바이스에 의해 수행되는 것으로서 본 명세서에서 설명된 동작은 분산 및/또는 가상 시스템을 형성하는 다수의 디바이스에 의해 집합적으로 수행된다.
데이터 저장장치(910)는 일 실시형태에서, 본 발명의 특정한 양태에 관련된 데이터를 저장하기 위한 몇몇 별개의 데이터 테이블, 데이터베이스, 데이터 문서, 동적 데이터 저장 방식 및/또는 다른 데이터 저장 메커니즘 및 매체를 포함한다. 일 실시형태에서, 도시된 데이터 저장장치는 생성 측을 위한 콘텐트를 제공하기 위해 사용되는 생성 데이터(912) 및 사용자 정보(916)를 저장하기 위한 메커니즘을 포함한다. 데이터 저장장치는 일 실시형태에서 보고, 컴퓨팅 리소스 관리, 분석 또는 다른 이러한 목적을 위해 사용되는 로그 데이터(914)를 저장하기 위한 메커니즘을 포함하도록 또한 도시된다. 일 실시형태에서, 페이지 이미지 정보 및 액세스 권리 정보(예컨대, 액세스 제어 정책 또는 허가의 다른 인코딩)와 같은 다른 양태는 적절하게 상기 나열된 메커니즘 중 임의의 것에서 또는 데이터 저장장치(910)의 부가적인 메커니즘에서 데이터 저장장치에 저장된다.
데이터 저장장치(910)는 일 실시형태에서, 그와 연관된 로직을 통해, 애플리케이션 서버(908)로부터 명령어를 수신하고 그에 응답하여 데이터를 얻거나, 업데이트하거나 그렇지 않으면, 프로세싱하도록 동작 가능하고 애플리케이션 서버(908)는 정적, 동적, 또는 수신된 명령어에 응답하여 정적 및 동적 데이터의 조합을 제공한다. 일 실시형태에서, 웹 로그(블로그), 쇼핑 애플리케이션, 뉴스 서비스, 및 다른 이러한 애플리케이션에서 사용된 데이터와 같은 동적 데이터는 본 명세서에서 설명된 바와 같이 서버 측 구조화된 언어에 의해 생성되거나 애플리케이션 서버에서 동작하거나 그의 제어 하에 있는 콘텐트 관리 시스템("CMS")에 의해 제공된다. 일 실시형태에서, 사용자는 사용자에 의해 동작된 디바이스를 통해, 특정한 유형의 항목에 대한 검색 요청을 제출한다. 이 예에서, 데이터 저장장치는 사용자의 신원을 검증하기 위해 사용자 정보에 액세스하고, 그 유형의 항목에 관한 정보를 얻기 위해 카탈로그 상세 정보에 액세스하며, 사용자가 사용자 디바이스(902)의 브라우저를 통해 보는 웹 페이지의 결과 목록에 있는 것과 같은 정보를 사용자로 반환한다. 예로 계속하면, 관심 있는 특정한 항목에 대한 정보는 브라우저의 전용 페이지 또는 윈도우에서 보여질 수 있다. 그러나, 본 발명의 실시형태가 반드시 웹 페이지의 맥락으로 제한되지 않지만, 요청이 반드시 콘텐트에 대한 요청이 아닌 일반적인 프로세싱 요청에 더 일반적으로 적용 가능하다는 점에 유의해야 한다. 예시적인 요청은 이러한 컴퓨팅 리소스를 시작, 종료, 삭제, 수정, 판독, 및/또는 그렇지 않으면 액세스하기 위한 것과 같은, 시스템(900) 및/또는 또 다른 시스템에 의해 호스팅된 컴퓨팅 리소스를 관리 및/또는 그와 상호작용하기 위한 요청을 포함한다.
일 실시형태에서, 각각의 서버는 전형적으로, 그 서버의 일반적인 관리 및 동작을 위한 실행 가능한 프로그램 명령어를 제공하는 운영 체제를 포함하고 서버의 프로세서에 의해 실행되면(즉, 실행되는 결과로서), 서버로 하여금 그의 의도된 기능을 수행하게 하거나 그렇지 않으면, 서버가 그의 의도된 기능을 수행하는 것을 허용하는 명령어를 저장하는 컴퓨터 판독 가능한 저장 매체(예컨대, 하드 디스크, 랜덤 액세스 메모리, 판독 전용 메모리, 등)를 포함한다.
시스템(900)은 일 실시형태에서, 하나 이상의 컴퓨터 네트워크 또는 직접 연결을 사용하여, 통신 링크(예컨대, 전송 제어 프로토콜(TCP) 연결 및/또는 전송 계층 보안(TLS) 또는 다른 암호화로 보호된 통신 세션)를 통해 상호연결되는 몇몇 컴퓨터 시스템 및 구성요소를 활용하는 분산 및/또는 가상 컴퓨팅 시스템이다. 그러나, 이러한 시스템이 도 9에 도시된 것보다 적거나 많은 수의 구성요소를 가지는 시스템에서 동작할 수 있음이 당업자에 의해 인식될 것이다. 따라서, 도 9의 시스템(900)의 묘사는 본 발명의 범위를 제한하지 않고 본질적으로 예시적인 것으로 취해져야 한다.
부가적으로, 본 발명의 실시형태는 다음 조항을 고려하여 설명될 수 있다:
1. 컴퓨터-구현 방법으로서,
암호 동작을 수행하기 위한 요청을 수신하는 단계;
하드웨어 보안 모듈의 세트로부터, 암호 동작을 수행할 수 있는 하드웨어 보안 모듈을 선택하기 위해 요청에 의해 표시된 식별자를 사용하는 단계; 및
선택한 하드웨어 보안 모듈로 하여금 암호 동작을 수행하게 하는 단계를 포함하는, 컴퓨터-구현 방법.
2. 제1 조항에 있어서,
암호 동작을 수행하기 위해 사용 가능한 암호 키를 식별하는 단계;
암호 키와 연관된 메타데이터를 얻는 단계; 및
메타데이터에 적어도 부분적으로 기초하여 하드웨어 보안 모듈을 식별하는 단계를 더 포함하는, 컴퓨터-구현 방법.
3. 제1 조항 또는 제2 조항에 있어서,
메타데이터는 하드웨어 보안 모듈의 능력을 식별하고; 그리고
하드웨어 보안 모듈은 능력을 지원하는 하드웨어 보안 모듈의 결과로서 선택되는, 컴퓨터-구현 방법.
4. 제1 조항 내지 제3 조항 중 어느 한 조항에 있어서,
선택된 하드웨어 보안 모듈로부터 암호 동작의 결과를 수신하는 단계; 및
요청자에게 암호 동작의 결과를 제공하는 단계를 더 포함하는, 컴퓨터-구현 방법.
5. 하나 이상의 프로세서 및 실행 가능한 명령어를 저장하는 메모리를 포함하는 컴퓨터 시스템으로서, 실행 가능한 명령어는 하나 이상의 프로세서에 의해 실행되는 결과로서, 컴퓨터 시스템으로 하여금,
암호 동작을 수행하기 위한 요청을 수신하게 하고;
요청에 명시된 식별자를 사용하여 하나 이상의 암호 디바이스를 선택하게 하고; 그리고
하나 이상의 암호 디바이스로 하여금 암호 동작을 수행하게 하는, 컴퓨터-구현 방법.
6. 제5 조항에 있어서,
컴퓨터 시스템은 웹 기반 애플리케이션 프로그래밍 인터페이스를 제공하고; 그리고
요청은 웹 기반 애플리케이션 프로그래밍 인터페이스를 통해 수신되는, 컴퓨터-구현 방법.
7. 제5 조항 또는 제6 조항에 있어서,
식별자는 암호 키를 식별하고; 그리고
실행 가능한 명령어는 또한, 컴퓨터 시스템으로 하여금 암호 키를 사용할 수 있는 암호 디바이스의 세트로부터 하나 이상의 암호 디바이스를 선택하게 하는, 컴퓨터-구현 방법.
8. 제5 조항 내지 제7 조항 중 어느 한 조항에 있어서, 실행 가능한 명령어는 또한, 컴퓨터 시스템으로 하여금,
암호 토큰에 대한 플랫폼 독립 애플리케이션 프로그래밍 인터페이스에 따라 명령어의 세트를 생성하게 하고; 그리고
명령어의 세트를 하나 이상의 암호 디바이스로 송신하게 하는, 컴퓨터-구현 방법.
9. 제8 조항에 있어서,
하나 이상의 암호 디바이스는 하드웨어 보안 모듈이고; 그리고
암호 토큰에 대한 플랫폼 독립 애플리케이션 프로그래밍 인터페이스는 PKCS11 준수 애플리케이션 프로그래밍 인터페이스인, 컴퓨터-구현 방법.
10. 제5 조항 내지 제9 조항 중 어느 한 조항에 있어서,
요청은 네트워크의 컴퓨터 시스템으로부터 수신되고; 그리고
하나 이상의 암호 디바이스는 네트워크에 위치되는, 컴퓨터-구현 방법.
11. 제5 조항 내지 제10 조항 중 어느 한 조항에 있어서, 실행 가능한 명령어는 또한, 컴퓨터 시스템으로 하여금,
식별자와 연관되는 암호화된 키를 얻게 하고; 그리고
암호화된 키를 하나 이상의 암호 디바이스에 제공하게 하는, 컴퓨터-구현 방법.
12. 제5 조항 내지 제11 조항 중 어느 한 조항에 있어서, 암호 디바이스는,
암호화프로세서; 및
암호 동작을 수행하기 위해 사용된 내보내기 가능하지 않은 암호 키를 저장하는 메모리를 포함하는, 컴퓨터-구현 방법.
13. 실행 가능한 명령어가 저장된 비일시적 컴퓨터 판독 가능한 저장 매체로서, 실행 가능한 명령어는 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행되는 결과로서, 컴퓨터 시스템으로 하여금 적어도,
암호 동작을 수행하기 위한 요청을 수신하게 하고;
요청에 명시된 식별자를 사용하여 하나 이상의 암호 디바이스를 선택하게 하고; 그리고
하나 이상의 암호 디바이스로 하여금 암호 동작을 수행하게 하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
14. 제13 조항에 있어서, 명령어는 하나 이상의 프로세서에 의해 실행되는 결과로서 컴퓨터 시스템으로 하여금,
암호 토큰에 대한 플랫폼 독립 애플리케이션 프로그래밍 인터페이스에 따라 명령어의 세트를 생성하게 하고; 그리고
명령어의 세트를 하나 이상의 암호 디바이스로 송신하게 하는 명령어를 더 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
15. 제13 조항 또는 제14 조항에 있어서,
하나 이상의 암호 디바이스는 하드웨어 보안 모듈이고; 그리고
암호 토큰에 대한 플랫폼 독립 애플리케이션 프로그래밍 인터페이스는 자바 암호화 확장 준수 애플리케이션 프로그래밍 인터페이스인, 비일시적 컴퓨터 판독 가능한 저장 매체.
16. 제13 조항 내지 제15 조항 중 어느 한 조항에 있어서,
요청은 고객 네트워크의 컴퓨터 시스템으로부터 수신되고; 그리고
하나 이상의 암호 디바이스는 고객 네트워크에 위치되는, 비일시적 컴퓨터 판독 가능한 저장 매체.
17. 제13 조항 내지 제16 조항 중 어느 한 조항에 있어서, 명령어는 하나 이상의 프로세서에 의해 실행되는 결과로서, 컴퓨터 시스템으로 하여금,
식별자와 연관되는 암호 키에 대한 메타데이터를 얻게 하고; 그리고
메타데이터의 적어도 일부를 하나 이상의 암호 디바이스에 제공하게 하는 명령어를 더 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
18. 제13 조항 내지 제17 조항 중 어느 한 조항에 있어서, 하나 이상의 암호 디바이스는 요청을 수행하기 위해 사용 가능한 암호 키를 저장하는 변형 억제 메모리를 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
19. 제13 조항 내지 제18 조항 중 어느 한 조항에 있어서, 실행 가능한 명령어는 또한, 컴퓨터 시스템으로 하여금 식별자에 적어도 부분적으로 기초하여 암호 디바이스의 세트로부터 하나 이상의 암호 디바이스를 선택하게 하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
20. 제13 조항 내지 제19 조항 중 어느 한 조항에 있어서, 명령어는 하나 이상의 프로세서에 의해 실행되는 결과로서, 컴퓨터 시스템으로 하여금 네트워크 액세스 가능한 웹 서비스 인터페이스를 통해 요청을 수신하게 하는 명령어를 더 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
다양한 실시형태는 일부 경우에서 다수의 애플리케이션 중 임의의 것을 동작시키기 위해 사용될 수 있는 하나 이상의 사용자 컴퓨터, 컴퓨팅 디바이스 또는 프로세싱 디바이스를 포함할 수 있는 광범위한 동작 환경에서 더 구현될 수 있다. 일 실시형태에서, 사용자 또는 클라이언트 디바이스는 표준 운영 체제를 실행하는 데스크탑, 랩탑 또는 태블릿 컴퓨터뿐만 아니라, 모바일 소프트웨어를 실행하고 다수의 네트워킹 및 메시징 프로토콜을 지원할 수 있는 셀룰러(모바일), 무선 및 핸드헬드 디바이스와 같은 다수의 컴퓨터 중 임의의 것을 포함하고 이러한 시스템은 개발 및 데이터베이스 관리와 같은 목적을 위해 다양한 상용 운영 체제 및 다른 알려진 애플리케이션 중 임의의 것을 실행하는 다수의 워크스테이션을 또한 포함한다. 일 실시형태에서, 이들 디바이스는 더미 단자(dummy terminal), 씬 클라이언트, 게임 시스템 및 네트워크를 통해 통신할 수 있는 다른 디바이스와 같은 다른 전자 디바이스, 및 가상 머신, 하이퍼바이저(hypervisors), 운영 체제 레벨 가상화를 활용하는 소프트웨어 컨테이너와 같은 가상 디바이스 및 네트워크를 통해 통신할 수 있는 가상화를 지원하는 다른 가상 디바이스 또는 비가상 디바이스를 또한 포함한다.
일 실시형태에서, 시스템은 전송 제어 프로토콜/인터넷 프로토콜("TCP/IP"), 사용자 데이터그램 프로토콜("UDP"), 개방형 시스템 상호연결("OSI") 모델의 다양한 계층에서 동작하는 프로토콜, 파일 전송 프로토콜("FTP"), 범용 플러그 앤 플레이("UpnP"), 네트워크 파일 시스템("NFS"), 공통 인터넷 파일 시스템("CIFS"), 및 다른 프로토콜과 같은 다양한 상용 프로토콜 중 임의의 것을 사용하여 통신을 지원하기 위해 당업자에게 익숙할 적어도 하나의 네트워크를 활용한다. 네트워크는 일 실시형태에서, 근거리 통신망, 광역 통신망, 가상 사설망, 인터넷, 인트라넷, 엑스트라넷, 공중 전화 교환망, 적외선 네트워크, 무선 네트워크, 위성 네트워크, 및 이들의 임의의 조합이다. 일 실시형태에서, 연결 지향 프로토콜(때때로 연결 기반 프로토콜로 칭해짐)이 순서화된 스트림으로 데이터를 송신할 수 있도록 네트워크 종점 사이에서 통신하기 위해 연결 지향 프로토콜이 사용된다. 일 실시형태에서, 연결 지향 프로토콜은 신뢰 가능하거나 신뢰 가능하지 않을 수 있다. 예를 들면, TCP 프로토콜은 신뢰 가능한 연결 지향 프로토콜이다. 비동기 전송 모드(Asynchronous Transfer Mode: "ATM") 및 프레임 중계는 신뢰가능하지 않은 연결 지향 프로토콜이다. 연결 지향 프로토콜은 보장된 순서화 없이 패킷을 송신하는 UDP와 같은 패킷 지향 프로토콜과 대조된다.
일 실시형태에서, 시스템은 하이퍼텍스트 전송 프로토콜("HTTP") 서버, FTP 서버, 공통 게이트웨이 인터페이스("CGI") 서버, 데이터 서버, 자바 서버, 아파치 서버, 및 비즈니스 애플리케이션 서버를 포함하는 다양한 서버 또는 중간 단계(mid-tier) 애플리케이션 중 하나 이상을 실행하는 웹 서버를 활용한다. 일 실시형태에서, 하나 이상의 서버는 Java®, C, C# 또는 C++와 같은 임의의 프로그래밍 언어, 또는 루비, PHP, 펄, 파이썬 또는 TCL뿐만 아니라, 이들의 조합과 같은 임의의 스크립팅 언어로 기록된 하나 이상의 스크립트 또는 프로그램으로서 구현되는 하나 이상의 웹 애플리케이션을 실행함으로써와 같은, 사용자 디바이스로부터의 요청에 응답하여 프로그램 또는 스크립트를 또한 실행할 수 있다. 일 실시형태에서, 하나 이상의 서버는 제한 없이 Oracle®, Microsoft®, Sybase® 및 IBM®뿐만 아니라, MySQL, Postgres, SQLite, MongoDB, 및 구조화되거나 구조화되지 않은 데이터를 저장, 검색, 및 액세스할 수 있는 임의의 다른 서버와 같은 오픈 소스 서버로부터 상용되는 것을 포함하는 데이터베이스 서버를 또한 포함한다. 일 실시형태에서, 데이터베이스 서버는 테이블 기반 서버, 문서 기반 서버, 구조화되지 않은 서버, 관계형 서버, 비관계형 서버, 또는 이들 및/또는 다른 데이터베이스 서버의 조합을 포함한다.
일 실시형태에서, 시스템은 상기 논의된 바와 같이 다양한 데이터 저장장치 및 다른 메모리 및 저장 매체를 포함하며, 이들은 컴퓨터 중 하나 이상에 국한되거나(및/또는 상주하거나) 네트워크에 걸친 컴퓨터 중 임의의 것 또는 전부로부터 먼 저장 매체에와 같은 다양한 위치에 상주할 수 있다. 일 실시형태에서, 정보는 당업자에게 친숙한 저장 영역 네트워크(storage-area network: "SAN")에 상주하고, 유사하게, 컴퓨터, 서버 또는 다른 네트워크 디바이스에 귀속된 기능을 수행하기 위한 임의의 필요한 파일은 적절하게 국부적으로 및/또는 원격으로 저장된다. 시스템이 컴퓨터화된 디바이스를 포함하는 일 실시형태에서, 각각의 이러한 디바이스는 버스를 통해 전기적으로 결합되는 하드웨어 요소를 포함할 수 있으며, 요소는 예를 들면, 적어도 하나의 중앙 처리 장치("CPU" 또는 "프로세서"), 적어도 하나의 입력 디바이스(예컨대, 마우스, 키보드, 제어기, 터치 스크린, 또는 키패드), 적어도 하나의 출력 디바이스(예컨대, 디스플레이 디바이스, 프린터, 또는 스피커), 디스크 드라이브, 광학 저장 디바이스와 같은 적어도 하나의 저장 디바이스, 및 랜덤 액세스 메모리("RAM") 또는 판독 전용 메모리("ROM") 뿐만 아니라, 탈착 가능한 매체 디바이스, 메모리 카드, 플래시 카드, 등, 및 이들의 다양한 조합과 같은 고체 상태 저장 디바이스를 포함한다.
일 실시형태에서, 이러한 디바이스는 컴퓨터 판독 가능한 저장 매체 판독기, 통신 디바이스(예컨대, 모뎀, 네트워크 카드(무선 또는 유선), 적외선 통신 디바이스 등), 및 컴퓨터 판독 가능한 저장 매체 판독기가 원격, 로컬, 고정, 및/또는 탈착 가능한 저장 디바이스 뿐만 아니라, 컴퓨터 판독 가능한 정보를 일시적으로 및/또는 더 영구적으로 포함, 저장, 송신, 및 검색하기 위한 저장 매체를 표현하는 컴퓨터 판독 가능한 저장 매체와 연결되거나 그것을 수신하도록 구성되는 상기 설명된 바와 같은 작업 메모리를 또한 포함한다. 일 실시형태에서, 시스템 및 다양한 디바이스는 또한 전형적으로, 클라이언트 애플리케이션 또는 웹 브라우저와 같은 운영 체제 및 애플리케이션 프로그램을 포함하는, 적어도 하나의 작업 메모리 디바이스 내에 위치된 다수의 소프트웨어 애플리케이션, 모듈, 서비스, 또는 다른 요소를 포함한다. 일 실시형태에서, 맞춤형 하드웨어가 사용되고/되거나 특정한 요소가 하드웨어, 소프트웨어(애플릿과 같은 휴대용 소프트웨어를 포함함), 또는 둘 모두에서 구현된다. 일 실시형태에서, 네트워크 입력/출력 디바이스와 같은 다른 컴퓨팅 디바이스에 대한 연결이 이용된다.
일 실시형태에서, 코드 또는 코드의 일부를 포함하기 위한 저장 매체 및 컴퓨터 판독 가능한 매체는 RAM, ROM, 전기적으로 소거가능한 프로그래밍가능한 판독 전용 메모리("EEPROM"), 플래시 메모리 또는 다른 메모리 기술, 컴팩트 디스크 판독 전용 메모리("CD-ROM"), 디지털 다기능 디스크(DVD) 또는 다른 광학 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스 또는 원하는 정보를 저장하기 위해 사용할 수 있고 시스템 디바이스에 의해 액세스될 수 있는 임의의 다른 매체를 포함하는, 컴퓨터 판독 가능한 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장 및/또는 송신을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성의, 탈착 가능하고 비탈착 가능한 매체와 같지만, 그들로 제한되지 않는 저장 매체 및 통신 매체를 포함하는, 당업계에서 알려지거나 사용된 임의의 적절한 매체를 포함한다. 본 명세서에서 제공된 개시내용 및 교시에 기초하여, 당업자는 다양한 실시형태를 구현하기 위한 다른 방식 및/또는 방법을 인식할 것이다.
명세서 및 도면은 그에 따라, 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다. 그러나, 청구항에 제시된 바와 같이 본 발명의 더 넓은 사상 및 범위를 벗어나지 않고 그에 대한 다양한 수정 및 변경이 행해질 수 있음이 명백할 것이다.
다른 변형이 본 발명의 사상 내에 있다. 따라서, 개시된 기술이 다양한 수정 및 대안적 구성에 영향을 받기 쉽지만, 그들의 특정 도시된 실시형태가 도면에 도시되고 상기 상세하게 설명되었다. 그러나, 본 발명을 개시된 특정 형태 또는 형태들로 제한하려는 의도는 없지만 반대로, 그 의도는 첨부된 청구항에서 정의된 바와 같이, 본 발명의 사상 및 범위 내에 있는 모든 수정, 대안적인 구성, 및 등가물을 커버하는 것임을 이해해야 한다.
개시된 실시형태를 설명하는 맥락에서(특히 다음 청구항의 맥락에서) 단수 표현 용어 및 유사한 지시어의 사용은 본 명세서에서 달리 표시되지 않거나 문맥에 의해 명확하게 모순되지 않는 한, 단수 및 복수 둘 모두를 커버하도록 해석되어야 한다. 유사하게, 용어 "또는"의 사용은 명시적으로 또는 문맥에 의해 모순되지 않는 한 "및/또는"을 의미하도록 해석되어야 한다. 용어 "포함하는(comprising)", "갖는(having)", "포함하는(including)", 및 "포함하는(containing)"은 달리 언급되지 않는 한 개방형 용어(즉,"~를 포함하지만 그것으로 제한되지 않는"을 의미함)로서 해석되어야 한다. 수정되지 않고 물리적 연결을 언급할 때 용어 "연결된"은 개입하는 어떤 것이 존재하더라도, 부분적으로 또는 전체적으로 내부에 포함되거나, 접속되거나, 함께 연결된 것으로서 해석되어야 한다. 본 명세서에서 값의 범위의 인용은 본 명세서에서 달리 지시하지 않는 한, 범위 내에 있는 각각의 별개의 값을 개별적으로 언급하는 약식 방법의 역할을 하도록 단지 의도되고, 각각의 별개의 값은 마치 본 명세서에 개별적으로 인용된 것처럼 명세서에 통합된다. 용어 "세트"(예컨대, "항목의 세트") 또는 "서브세트"의 사용은 달리 언급되거나 문맥에 의해 모순되지 않는 한, 하나 이상의 멤버를 포함하는 비어 있지 않은 컬렉션으로 해석되어야 한다. 게다가, 달리 언급되거나 문맥에 의해 모순되지 않는 한, 용어 대응하는 세트의 "서브세트"는 반드시 대응하는 세트의 적절한 서브세트를 나타내는 것은 아니지만, 서브세트 및 대응하는 세트는 동일할 수 있다.
"A, B, 및 C 중 적어도 하나", 또는 "A, B 및 C 중 적어도 하나"의 형태의 구문과 같은 접속어(즉, 옥스포드 쉼표가 있거나 없는 동일한 구문)는 달리 구체적으로 언급되거나 문맥에 의해 달리 명확하게 모순되지 않는 한, 항목, 용어, 등이 A 또는 B 또는 C, A 및 B 및 C의 세트의 임의의 비어 있지 않은 서브세트, 또는 적어도 하나의 A, 적어도 하나의 B, 또는 적어도 하나의 C를 포함하는 문맥에 의해 모순되지 않거나 달리 배제되지 않은 임의의 세트일 수 있음을 제공하기 위해 일반적으로 사용된 바와 같은 문맥으로 달리 이해된다. 예를 들면, 3개의 멤버를 가지는 세트의 예시적인 예에서, 접속 어구 "A, B, 및 C 중 적어도 하나" 및 "A, B 및 C 중 적어도 하나"는 다음의 세트: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}, 및 명시적으로 또는 문맥에 의해 모순되지 않는 경우, {A}, {B}, 및/또는 {C}를 서브세트(예컨대, 다수의 "A"를 갖는 세트)로서 가지는 임의의 세트 중 임의의 것을 언급한다. 따라서, 이러한 접속어는 일반적으로, 특정 실시형태가 A 중 적어도 하나, B 중 적어도 하나 및 C 중 적어도 하나가 각각 존재하도록 요구함을 의미하도록 의도되지 않는다. 유사하게, 상이한 의미가 명시적으로 언급되거나 문맥으로부터 명확하지 않은 한 "A, B, 또는 C 중 적어도 하나" 및 "A, B 또는 C 중 적어도 하나"와 같은 어구는 "A, B, 및 C 중 적어도 하나" 및 "A, B 및 C 중 적어도 하나"와 동일한 것을 언급하고, 그들은 다음의 세트: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C} 중 임의의 것을 언급한다. 게다가, 문맥에 의해 달리 언급되거나 모순되지 않는 한, 용어 "복수"는 복수인 상태를 나타낸다(예컨대, "복수의 항목"은 다수의 항목을 나타낸다). 복수인 항목의 수는 적어도 2개이지만, 명시적으로 또는 문맥에 의해 그렇게 표시될 때 더 많을 수 있다.
본 명세서에 설명된 프로세스의 동작은 본 명세서에서 달리 표시되거나 문맥에 의해 달리 명백히 모순되지 않는 한 임의의 적합한 순서로 수행될 수 있다. 일 실시형태에서, 본 명세서에서 설명된 이들 프로세스(또는 이들의 변형 및/또는 조합)와 같은 프로세스는 실행 가능한 명령어로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에 수행되고 하드웨어 또는 이의 조합에 의해 하나 이상의 프로세서에서 집합적으로 실행되는 코드(예컨대, 실행 가능한 명령어, 하나 이상의 컴퓨터 프로그램 또는 하나 이상의 애플리케이션)로서 구현된다. 일 실시형태에서, 코드는 예를 들면, 하나 이상의 프로세서에 의해 실행 가능한 복수의 명령어를 포함하는 컴퓨터 프로그램의 형태로 컴퓨터 판독 가능한 저장 매체에 저장된다. 일 실시형태에서, 컴퓨터 판독 가능한 저장 매체는 일시적인 신호(예컨대, 전파하는 일시적인 전기 또는 전자기 송신)를 제외하지만 일시적인 신호의 트랜시버 내에 비일시적 데이터 저장 회로(예컨대, 버퍼, 캐시 및 대기열)를 포함하는 비일시적 컴퓨터 판독 가능한 저장 매체이다. 일 실시형태에서, 코드(예컨대, 실행 가능한 코드 또는 소스 코드)는 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행될 때(즉, 실행되는 결과로서), 컴퓨터 시스템으로 하여금 본 명세서에서 설명된 동작을 수행하게 하는 실행 가능한 명령어가 저장된 하나 이상의 비일시적 컴퓨터 판독 가능한 저장 매체의 세트에 저장된다. 비일시적 컴퓨터 판독 가능한 저장 매체의 세트는 일 실시형태에서, 다수의 비일시적 컴퓨터 판독 가능한 저장 매체를 포함하고 다수의 비일시적 컴퓨터 판독 가능한 저장 매체의 개별적인 비일시적 저장 매체 중 하나 이상에는 모든 코드가 없고 다수의 비일시적 컴퓨터 판독 가능한 저장 매체는 모든 코드를 집합적으로 저장한다. 일 실시형태에서, 실행 가능한 명령어는 상이한 명령어가 상이한 프로세서에 의해 실행되도록 실행된다 - 예를 들면, 비일시적 컴퓨터 판독 가능한 저장 매체는 명령어를 저장하고 주 CPU는 그래픽 프로세서 유닛이 다른 명령어를 실행하는 동안 명령어 중 일부를 실행한다. 일 실시형태에서, 컴퓨터 시스템의 상이한 구성요소는 별개의 프로세서를 갖고 상이한 프로세서는 명령어의 상이한 서브세트를 실행한다.
예를 들면, 암호 알고리즘은 블록 암호 및 암호 블록 연쇄(cipher-block chaining: CBC) 모드, 증식적 암호 블록 연쇄(propagating cipher block chaining: PCBC) 모드, 암호 피드백 모드(CFB), 출력 피드백(OFB) 모드, 카운터(CTR) 모드와 같은 초기화 벡터를 활용하는 다양한 모드, 및 확장 암호문 블록 연쇄(XCBC) 모드, 무결성 인식 CBC(IACBC) 모드, 무결성 인식 병렬가능한(IAPM) 모드, 오프셋 코드북(OCB) 모드, EAX 및 EAX 프라임 모드, 카터-웨그먼+CTR(Carter-Wegman+CTR: CWC) 모드, CBC-MAC(CCM)를 갖는 카운터 모드, 갈르아/카운터(Galois/Counter)(GCM) 모드와 같은 인증된 암호화 모드와 같은 다른 모드를 포함한다.
논의된 바와 같이, 많은 변형은 대칭 및/또는 비대칭 암호 프리미티브(primitives)를 활용한다. 대칭 키 알고리즘은 블록 암호, 스트림 암호 및 디지털 서명 방식을 포함하는 데이터에 대한 암호 연산을 수행하기 위한 다양한 방식을 포함할 수 있다. 예시적인 대칭 키 알고리즘은 진보된 암호화 표준(AES), 데이터 암호화 표준(DES), 트리플 DES(3DES), 서펜트(Serpent), 투피쉬(Twofish), 블로우피쉬(blowfish), CAST5, RC4 및 국제 데이터 암호 알고리즘(IDEA)을 포함한다. 대칭 키 알고리즘은 단방향 함수의 출력을 생성하기 위해 사용된 알고리즘을 또한 포함하고 해시 기반 메시지 인증 코드(HMAC), 메시지 인증 코드(MAC) 일반적으로, PBKDF2 및 Bcrypt를 활용하는 알고리즘을 포함할 수 있다. 비대칭 키 알고리즘은 데이터에 대한 암호 동작을 수행하기 위한 다양한 방식을 또한 포함할 수 있다. 예시적인 알고리즘은 디피 헬만(Diffie-Hellman) 키 교환 프로토콜, 디지털 서명 표준(DSS), 디지털 서명 알고리즘, 엘가멜 알고리즘(ElGamal algorithm), 다양한 타원 곡선 알고리즘, 패스워드 인증 키 합의 기술, 팔리어 암호화시스템, RSA 암호화 알고리즘(PKCS#1), 크래머 샤우프(Cramer-Shoup) 암호화시스템, YAK 인증 키 합의 프로토콜, NTRUEncrypt 암호화시스템, 메켈리스(McEliece) 암호화시스템 등을 활용하는 알고리즘을 포함한다. 타원 곡선 알고리즘은 타원 곡선 디피 헬만(elliptic curve Diffie-Hellman: ECDH) 키 합의 방식, 타원 곡선 통합 암호화 방식(Elliptic Curve Integrated Encryption Scheme: ECIES), 타원 곡선 디지털 서명 알고리즘(Elliptic Curve Digital Signature Algorithm: ECDSA), ECMQV 키 합의 방식 및 ECQV 암시적 인증서 방식을 포함한다. 다른 알고리즘 및 알고리즘의 조합은 또한, 본 발명의 범위 내에 있는 것으로서 고려되며, 상기 내용은 포괄적인 목록이 되도록 의도되지 않는다.
용어 "디지털 서명"이 (RSA-PSS와 같은) RSA 기반 디지털 방식, 디지털 서명 알고리즘(DSA) 및 타원 곡선 디지털 서명 알고리즘, 엘가멜 서명 방식, 슈노르(Schnorr) 서명 방식, 포인트체벌 슈턴(Pointcheval-Stern) 서명 알고리즘, 라빈(Rabin) 서명 알고리즘, (보네 린 차참(Boneh-Lynn-Schacham) 서명 방식과 같은) 페어링 기반 디지털 서명 방식, 명백한 디지털 서명 방식, 등을 사용하여 생성된 정보를 포함하는 메시지의 진정성을 암호로 검증하기 위해 사용 가능한 임의의 정보를 포함한다. 게다가, (해시 기반 메시지 인증 코드(HMAC)와 같은) 메시지 인증 코드, 키잉된 암호 해시 함수, 및 다른 유형의 정보가 디지털 서명으로서 또한 사용될 수 있다.
어구 "단방향 함수"가 엄격한 수학적 의미에서 반드시 단방향일 필요는 없지만, 본 발명의 다양한 기술이 적용되는 맥락에서 유용한 기능을 렌더링하는 속성(예컨대, 충돌 저항, 역상 공격(preimage resistance) 및 제2 역상 공격)을 나타내는 함수를 포함한다는 점에 유의해야 한다. 이러한 방식으로, 함수의 출력은 있지만 대응하는 입력에 대한 액세스가 없는 개체는 예를 들면, 암호(예컨대, 무차별 대입) 공격을 위해 필요한 계산 리소스의 엄청난 지출 없이 입력을 결정할 수 없다. 단방향 함수("효과적인 단방향 함수"로도 언급됨)는 메시지 인증 코드(예컨대, 해시 기반 메시지 인증 코드(HMAC))와 같은 암호 해시 함수, PBKDF2 및 bcrypt(예컨대, 일반 텍스트 및 암호 키에 적어도 부분적으로 기초하는 패스워드를 갖는)와 같은 키 유도 함수 및 그들의 범위(가능한 출력)보다 큰 도메인(가능한 입력의 세트)을 가질 수 있지만 반드시 그런 것은 아닌 다른 보안 랜덤화 함수를 포함하지만 이들로 제한되지 않는다. 다양한 실시형태에 대한 다른 적합한 함수("f"로서 언급됨)은 입력으로서 적어도 일반 텍스트 및 암호 키를 취하고 역상 공격(값(y)을 고려할 때, f(x)=y가 명시된 임계치 미만이 되도록 입력(x)을 랜덤으로 생성할 확률), 제2 역상 공격(입력(x1)을 고려할 때, f(x1)=f(x2)가 명시된 임계치 미만이 되도록 x1과 상이한 또 다른 입력(x2)을 랜덤으로 생성할 확률) 및/또는 충돌 저항(동일한 출력을 야기하는 2개의 상이한 입력이 명시된 임계치 미만일 확률)의 속성을 가지는 함수를 포함하지만 이들로 제한되지 않는다. 각각의 확률에 대한 정확한 임계치는 더 높은 보안 맥락에 대응하는 더 낮은 확률로 맥락에 의존할 수 있다. 값은 단방향 함수를 사용하여 암호로 얻어질 수 있다. 암호화 함수는 암호화 함수에 입력으로서 사용된 정보(예컨대, 암호 키 및/또는 솔트(salt))가 없는 개체의 관점에서 단방향 함수일 수 있다(또는 그의 구성요소일 수 있음). 본 발명의 기술에 따라 단방향 함수로서 사용 가능한 해시 함수는 참조에 의해 본 명세서에 통합되는, 문헌[the National Institute of Standards and Technology (NIST) Special Publication 800-107, Revision 1 "Recommendation for Applications Using Approved Hash Algorithms"]에 기재된 함수를 포함하지만 이것으로 제한되지 않는다. 어구 '암호로 얻어진'은 값이거나 값으로부터 얻어진 입력(가능하게 값으로부터 암호로 얻어짐)을 사용하여 적어도 한 번 단방향 함수를 사용하는 것을 의미한다. 예를 들면, 암호 동작은 복호화 키를 갖지 않은 개체에 대한 단방향이다.
프로그램적으로(예컨대, 디바이스의 인터페이스를 통해) 디바이스로 하여금 정보를 제공하게 하는 어떠한 합법적인 방식도 존재하지 않는다면, 정보는 프로그램적으로 내보내기 가능하지 않다고 말할 수 있다. 정보는 예를 들면, 하드웨어로 하여금 일반 텍스트 형태의 정보에 액세스하여, 정보를 일반 텍스트 형식으로 나타내게 하기 위한 어떠한 요청 메커니즘(예컨대, 애플리케이션 프로그래밍 인터페이스(API) 호출)도 존재하지 않도록 유지될 수 있다. 일례로서, 정보를 저장하는 디바이스(예컨대, 암호 모듈)는 사본이 일반 텍스트 형태의 정보를 포함하도록 그의 메모리의 일부 또는 전부의 사본을 제공하는 능력이 결여되도록 구성될 수 있다. 그러나, 일반 텍스트 형식의 정보를 얻는 어떠한 합법적인 방식도 존재하지 않는 정보가 예시의 목적을 위해 본 발명에 걸쳐 사용되지만, 정보가 다양한 보안 프로토콜이 이용되도록 요구하고 일반 텍스트 형식의 정보에 대한 무단 액세스를 방지할 수 있는, 제한된 수의 허가된 사용을 통해 획득 가능하도록 일부 정보가 유지될 수 있음에 유의해야 한다. 일반적으로, 프로그램적으로 내보내기 가능하지 않은 정보는 그것이 일반 텍스트 형태로 정보를 얻기 위해 적어도 가능하다면, 일반 텍스트 형태로 정보를 얻기 위해 특별한 조치가 취해져야 하는 정보(예컨대, 하나 이상의 암호 키)이다.
본 명세서에서 사용된 예가 참조에 의해 포함되는, 의견 제시 요구(Request for Comments; RFC) 4250, RFC 4251, RFC 4252, RFC 4253, RFC 4254, RFC 4255, RFC 4256, RFC 4335, RFC 4344, RFC 4345, RFC 4419, RFC 4432, RFC 4462, RFC 4716, RFC 4819, RFC 5647, RFC 5656, RFC 6187, RFC 6239, RFC 6594 및 RFC 6668 중 하나 이상에 따라 수행될 수 있음에 또한 유의한다.
일반적으로, 본 발명의 실시형태는 암호화된 통신 세션을 확립하기 위해 본 명세서에 참조에 의해 포함되는 SSL 또는 TLS 프로토콜과 같은 다양한 프로토콜 및 의견 제시 요구(RFC) 2246, RFC 2595, RFC 2712, RFC 2817, RFC 2818, RFC 3207, RFC 3268, RFC 3546, RFC 3749, RFC 3943, RFC 4132, RFC 4162, RFC 4217, RFC 4279, RFC 4347, RFC 4366, RFC 4492, RFC 4680, RFC 4681, RFC 4785, RFC 5054, RFC 5077, RFC 5081, RFC 5238, RFC 5246, RFC 5288, RFC 5289, RFC 5746, RFC 5764, RFC 5878, RFC 5932, RFC 6083, RFC 6066, RFC 6091, RFC 6176, RFC 6209, RFC 6347, RFC 6367, RFC 6460, RFC 6655, RFC 7027 및 RFC 7366에 정의된 바와 같은, 그에 대한 확장을 사용할 수 있다. 개방형 시스템 상호연결(OSI) 모델의 애플리케이션 계층 아래에 구현된 다른 프로토콜은 본 명세서에서 설명된 기술을 활용하기 위해 또한 사용되고/되거나 적응될 수 있다. 본 명세서에서 설명된 기술이 실시간 메시징 프로토콜(RTMP), 지점 대 지점 터널링 프로토콜(PPTP), 계층 2 터널링 프로토콜, 다양한 가상 사설망(VPN) 프로토콜, 인터넷 프로토콜 보안(예컨대, RFC 1825 내지 1829, RFC 2401, RFC 2412, RFC 4301, RFC 4309 및 RFC 4303에 정의된 바와 같이)과 같은 다른 프로토콜 및 핸드쉐이크(handshake)를 포함하는 보안 통신을 위한 프로토콜과 같은 다른 프로토콜에 적용 가능함에 유의해야 한다.
시스템이 동작하도록 구성되는 로직이 공개 암호 키를 사용하여 디지털 서명을 검증하려는 시도가 성공적인지의 여부에 의존하는 경우 시스템이 공개 암호 키를 신뢰하도록 구성된다고 함에 유의한다. 유사하게, 시스템이 동작하도록 구성되는 로직이 대칭 암호 키를 사용하여 디지털 서명을 검증하려는 시도가 성공적인지의 여부에 의존하는 경우 시스템이 대칭 암호 키를 신뢰하도록 구성된다고 한다.
다양한 실시형태에서, 디지털 서명과 같은 데이터 객체는 암호로 검증 가능할 수 있다. 하나의 예에서, 암호로 검증 가능한 데이터 객체는 데이터 객체가 제공될 시스템 또는 데이터 객체가 제공될 시스템과 결부하여 동작하는 또 다른 시스템에 의해 암호로 검증 가능하도록 생성된다. 예를 들면, 데이터 객체를 암호로 검증할 시스템에 의해 복호화 가능하도록 데이터 객체가 암호화될 수 있으며, 여기서 데이터 객체를 복호화하는 능력은 데이터 객체의 암호 검증의 역할을 한다. 또 다른 예로서, 데이터 객체는 데이터 객체를 암호로 검증할 시스템에 의해 디지털 서명이 검증 가능하도록 디지털로 서명될 수 있다(그에 의해, 데이터 객체의 디지털 서명을 생성한다). 다른 예에서, 암호화 및 디지털 서명 둘 모두는 암호 검증 가능성 및/또는 보안을 위해 사용된다. 데이터 객체를 암호화하고/하거나 디지털로 서명하기 위해 사용된 키는 다양한 실시형태에 따라 달라질 수 있고 적용 가능한 경우, 동일한 키는 반드시 암호화 및 디지털 서명 둘 모두를 위해 사용되지 않는다. 일부 실시형태에서, 데이터 객체를 암호화하기 위해 사용된 키는 데이터 객체가 제공될 시스템에 의해 키 쌍의 개인 키가 안전하게 유지되는 공개/개인 키 쌍의 공개 키이며, 그에 의해 시스템이 키 쌍의 개인 키를 사용하여 데이터 객체를 복호화하는 것을 가능하게 한다. 데이터 객체를 암호화하기 위해 공개 키를 사용하는 것은 대칭 키를 생성하는 것, 데이터 객체를 암호화하기 위해 대칭 키를 사용하는 것, 및 공개 키를 사용하여 대칭 키를 암호화하는 것을 포함할 수 있고, 여기서 암호화된 대칭 키는 시스템이 대칭 키를 복호화하기 위해 대응하는 개인 키를 사용하고 데이터 객체를 복호화하기 위해 복호화된 대칭 키를 사용하는 것을 가능하게 하도록 암호화된 데이터 객체를 갖는 시스템에 제공된다. 게다가, 일부 실시형태에서, 데이터 객체는 데이터 객체(예컨대, 사용자 디바이스)를 암호화하고/하거나 디지털로 서명하는 컴퓨터 시스템에 대응하는 공개/개인 키 쌍의 개인 키를 사용하여 디지털로 서명된다. 예를 들면, 애플리케이션은 개인 키로 프로비저닝(provisioning)될 수 있으며 데이터 객체는 데이터 객체의 디지털 서명의 검증을 위해 시스템에 의해 사용하기 위한 개인 키에 대한 인증서를 포함할 수 있다. 다른 변형은 사용자 컴퓨터와 데이터 객체를 암호로 검증하는 시스템 사이에 공유된 대칭 키가 데이터 객체를 암호화하고/하거나 디지털로 서명하기 위해 사용될 수 있는 변형을 포함한다.
앞뒤의 설명에서, 다양한 기술이 설명된다. 설명의 목적을 위해, 기술을 구현하는 가능한 방식의 철저한 이해를 제공하기 위해 특정 구성 및 상세가 제시된다. 그러나, 하기에 설명된 기술이 특정 상세 없이 상이한 구성으로 실행될 수 있음이 또한 명백할 것이다. 또한, 잘 알려진 특징은 설명되는 기술을 모호하게 하는 것을 회피하기 위해 생략되거나 단순화될 수 있다.
그에 따라, 일 실시형태에서, 컴퓨터 시스템은 본 명세서에서 설명된 프로세스의 동작을 단독으로 또는 집합적으로 수행하는 하나 이상의 서비스를 구현하도록 구성되고, 이러한 컴퓨터 시스템은 동작의 수행을 가능하게 하는 적용 가능한 하드웨어 및/또는 소프트웨어로 구성된다. 게다가, 본 발명의 일 실시형태를 구현하는 컴퓨터 시스템은 단일 디바이스이고, 또 다른 실시형태에서, 분산 컴퓨터 시스템이 본 명세서에서 설명된 동작을 수행하고 단일 디바이스가 모든 동작을 수행하지 않도록 상이하게 동작하는 다수의 디바이스를 포함하는 분산 컴퓨터 시스템이다.
본 명세서에서 제공된 임의의 그리고 모든 예, 또는 예시적인 언어(예컨대, "~와 같은")의 사용은 단지 본 발명의 실시형태를 더 양호하게 분명하게 하도록 의도되고 달리 청구되지 않는 한 본 발명의 범위에 대해 제한을 제기하지 않는다. 명세서의 어떤 언어도 본 발명의 실행에 필수적인 것으로서 임의의 청구되지 않은 요소를 나타내는 것으로서 해석되어서는 안된다.
본 발명을 수행하기 위해 본 발명자에게 알려진 최상의 모드를 포함하는, 본 발명의 실시형태가 본 명세서에서 설명된다. 이들 실시형태의 변형은 상기 설명을 판독할 때 당업자에게 명백하게 될 수 있다. 본 발명자는 숙련자가 이러한 변형을 적절하게 이용할 것으로 기대하고 본 발명자는 본 발명의 실시형태가 본 명세서에 구체적으로 설명된 바와 다르게 실행되도록 의도한다. 그에 따라, 본 발명의 범위는 적용 가능한 법률에 의해 허가된 바와 같이 여기에 첨부된 청구항에 인용된 주제의 모든 수정 및 등가물을 포함한다. 게다가, 그들의 모든 가능한 변형에서 상기 설명된 요소의 임의의 조합은 본 명세서에서 달리 표시되거나 문맥에 의해 달리 명확하게 모순되지 않는 한 본 발명의 범위에 의해 포함된다.
본 명세서에 인용된 공보, 특허 출원 및 특허를 포함하는 모든 참고 문헌은 마치 각각의 참고 문헌이 개별적으로 그리고 구체적으로 참조에 의해 포함되도록 표시되고 전체적으로 본 명세서에서 제시된 바와 같이 동일한 정도로 그에 의해 참조에 의해 포함된다.

Claims (20)

  1. 컴퓨터-구현 방법으로서,
    암호 동작을 수행하기 위해 암호 키를 사용하기 위한 요청을 얻는 단계;
    상기 암호 키와 연관된 메타데이터를 얻는 단계;
    하드웨어 보안 모듈들의 세트로부터 상기 암호 동작을 수행할 수 있는 하드웨어 보안 모듈을 선택하기 위해 상기 요청에 의해 표시된 식별자를 사용하는 단계로서, 상기 하드웨어 보안 모듈은 상기 메타데이터를 사용하여 식별되는 능력을 지원한 결과로서 선택되는, 상기 표시된 식별자를 사용하는 단계; 및
    상기 선택된 하드웨어 보안 모듈로 하여금 상기 암호 동작을 수행하게 하는 단계를 포함하는, 컴퓨터-구현 방법.
  2. 제1항에 있어서,
    상기 암호 동작을 수행하기 위해 사용 가능한 상기 암호 키를 식별하는 단계;
    상기 암호 키의 특성에 적어도 부분적으로 기초하여 상기 하드웨어 보안 모듈을 식별하는 단계를 더 포함하는, 컴퓨터-구현 방법.
  3. 제1항에 있어서,
    상기 메타데이터의 적어도 일부를 상기 하드웨어 보안 모듈에 제공하는 단계를 더 포함하는, 컴퓨터-구현 방법.
  4. 제1항에 있어서,
    상기 선택된 하드웨어 보안 모듈로부터 상기 암호 동작의 결과를 얻는 단계; 및
    요청자에게 상기 암호 동작의 결과를 제공하는 단계를 더 포함하는, 컴퓨터-구현 방법.
  5. 하나 이상의 프로세서 및 실행 가능한 명령어들을 저장하는 메모리를 포함하는 컴퓨터 시스템에 있어서,
    상기 실행 가능한 명령어들은, 상기 하나 이상의 프로세서에 의해 실행되는 결과로서, 상기 컴퓨터 시스템으로 하여금:
    암호 동작을 수행하기 위해 암호 키를 사용하기 위한 요청을 얻게 하고;
    상기 암호 키와 연관된 메타데이터를 얻게 하고;
    하나 이상의 암호 디바이스의 능력에 기초하여 하나 이상의 암호 디바이스를 선택하도록 상기 요청에 명시된 식별자를 사용하게 하고-상기 능력은 상기 암호 키와 연관된 메타데이터를 사용하여 결정됨-;
    상기 하나 이상의 암호 디바이스가 상기 암호 동작을 수행하도록 하게 하는, 컴퓨터 시스템.
  6. 제5항에 있어서,
    상기 컴퓨터 시스템은 웹 기반 애플리케이션 프로그래밍 인터페이스를 제공하고;
    상기 요청은 상기 웹 기반 애플리케이션 프로그래밍 인터페이스를 통해 얻어지는, 컴퓨터 시스템.
  7. 제5항에 있어서,
    상기 식별자는 상기 암호 키를 식별하고;
    상기 실행 가능한 명령어들은 또한, 상기 컴퓨터 시스템으로 하여금 상기 암호 키를 사용할 수 있는 암호 디바이스들의 세트로부터 하나 이상의 암호 디바이스를 선택하게 하는, 컴퓨터 시스템.
  8. 제5항에 있어서,
    상기 실행 가능한 명령어들은 또한, 상기 컴퓨터 시스템으로 하여금:
    암호 토큰들에 대한 플랫폼-독립 애플리케이션 프로그래밍 인터페이스에 따라 명령들의 세트를 생성하게 하고;
    상기 명령들의 세트를 상기 하나 이상의 암호 디바이스로 전송하게 하는, 컴퓨터 시스템.
  9. 제8항에 있어서,
    상기 하나 이상의 암호 디바이스는 하드웨어 보안 모듈들이고;
    암호 토큰들에 대한 상기 플랫폼-독립 애플리케이션 프로그래밍 인터페이스는 PKCS11 준수 애플리케이션 프로그래밍 인터페이스인, 컴퓨터 시스템.
  10. 제5항에 있어서,
    상기 요청은 네트워크 상의 컴퓨터 시스템으로부터 얻어지고;
    상기 하나 이상의 암호 디바이스는 상기 네트워크 상에 위치되는, 컴퓨터 시스템.
  11. 제5항에 있어서,
    상기 실행 가능한 명령어들은 또한, 상기 컴퓨터 시스템으로 하여금:
    상기 식별자와 연관되는 암호화된 키를 얻게 하고;
    상기 암호화된 키를 상기 하나 이상의 암호 디바이스에 제공하게 하는, 컴퓨터 시스템.
  12. 제5항에 있어서,
    상기 암호 디바이스는:
    암호화프로세서; 및
    상기 암호 동작을 수행하기 위해 사용된 내보내기 가능하지 않은 암호 키(non-exportable cryptographic key)를 저장하는 메모리를 포함하는, 컴퓨터 시스템.
  13. 실행 가능한 명령어들이 저장된 비일시적 컴퓨터 판독 가능한 저장 매체에 있어서,
    상기 실행 가능한 명령어들은 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행되는 결과로서, 상기 컴퓨터 시스템으로 하여금 적어도:
    암호 동작을 수행하기 위해 암호 키를 사용하기 위한 요청을 얻게 하고;
    상기 암호 키와 연관된 메타데이터를 얻게 하고;
    상기 암호 키와 연관된 메타데이터에 적어도 부분적으로 기초하여 식별되는 능력에 적어도 부분적으로 기초하여 하나 이상의 암호 디바이스를 선택하도록 상기 요청에 명시된 식별자를 사용하게 하고;
    상기 하나 이상의 암호 디바이스가 상기 암호 동작을 수행하도록 하게 하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  14. 제13항에 있어서,
    상기 명령어들은 상기 하나 이상의 프로세서에 의해 실행되는 결과로서, 컴퓨터 시스템으로 하여금:
    암호 토큰들에 대한 플랫폼-독립 애플리케이션 프로그래밍 인터페이스에 따라 명령들의 세트를 생성하게 하고;
    상기 명령들의 세트를 상기 하나 이상의 암호 디바이스로 전송하게 하는;
    명령어들을 더 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  15. 제14항에 있어서,
    상기 하나 이상의 암호 디바이스는 하드웨어 보안 모듈들이고;
    암호 토큰들에 대한 상기 플랫폼-독립 애플리케이션 프로그래밍 인터페이스는 자바 암호화 확장 준수 애플리케이션 프로그래밍 인터페이스(Java Cryptography Extension compliant application programming interface)인, 비일시적 컴퓨터 판독 가능한 저장 매체.
  16. 제13항에 있어서,
    상기 요청은 고객 네트워크 상의 컴퓨터 시스템으로부터 얻어지고;
    상기 하나 이상의 암호 디바이스는 상기 고객 네트워크 상에 위치되는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  17. 제13항에 있어서,
    상기 명령어들은 상기 하나 이상의 프로세서에 의해 실행되는 결과로서, 상기 컴퓨터 시스템으로 하여금:
    상기 식별자와 연관되는 암호 키에 대한 메타데이터를 얻게 하고;
    상기 메타데이터의 적어도 일부를 상기 하나 이상의 암호 디바이스에 제공하게 하는;
    명령어들을 더 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  18. 제13항에 있어서,
    상기 하나 이상의 암호 디바이스는 상기 요청을 수행하기 위해 사용 가능한 암호 키를 저장하는 변형 억제 메모리(tamper-resistant memory)를 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  19. 제13항에 있어서,
    상기 실행 가능한 명령어들은 또한, 상기 컴퓨터 시스템으로 하여금 상기 식별자에 적어도 부분적으로 기초하여 암호 디바이스들의 세트로부터 하나 이상의 암호 디바이스를 선택하게 하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  20. 제13항에 있어서,
    상기 명령어들은 상기 하나 이상의 프로세서에 의해 실행되는 결과로서, 상기 컴퓨터 시스템으로 하여금 네트워크 액세스 가능한 웹 서비스 인터페이스를 통해 상기 요청을 얻게 하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
KR1020207034090A 2018-05-02 2019-04-19 키 관리 시스템 및 방법 KR102229739B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/969,695 US10909250B2 (en) 2018-05-02 2018-05-02 Key management and hardware security integration
US15/969,695 2018-05-02
PCT/US2019/028399 WO2019212773A1 (en) 2018-05-02 2019-04-19 Key management system and method

Publications (2)

Publication Number Publication Date
KR20200140916A KR20200140916A (ko) 2020-12-16
KR102229739B1 true KR102229739B1 (ko) 2021-03-22

Family

ID=66429649

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207034090A KR102229739B1 (ko) 2018-05-02 2019-04-19 키 관리 시스템 및 방법

Country Status (7)

Country Link
US (1) US10909250B2 (ko)
EP (1) EP3788741A1 (ko)
JP (1) JP7205031B2 (ko)
KR (1) KR102229739B1 (ko)
CN (1) CN112470425B (ko)
CA (1) CA3098836C (ko)
WO (1) WO2019212773A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023212444A1 (en) * 2022-04-26 2023-11-02 Coinbase, Inc. Systems and methods for facilitating secure authentication when conducting blockchain operations using cryptography-based, storage applications

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11095652B2 (en) 2018-02-20 2021-08-17 International Business Machines Corporation Implementing a separation of duties for container security
US11475147B2 (en) * 2018-02-20 2022-10-18 International Business Machines Corporation Implementing policy-based container-level encryption
US11398900B2 (en) 2018-06-21 2022-07-26 Oracle International Corporation Cloud based key management
US11258604B2 (en) * 2018-10-19 2022-02-22 Oracle International Corporation Rewiring cryptographic key management system service instances
US11252138B2 (en) * 2019-01-24 2022-02-15 Dell Products L.P. Redundant device locking key management system
US11650938B2 (en) * 2019-01-25 2023-05-16 Dell Products L.P. Device-capability-based locking key management system
US11729170B2 (en) * 2019-03-20 2023-08-15 Servicenow, Inc. Efficient and secure communication between computational instances of a remote network management platform
US20210051002A1 (en) * 2019-08-15 2021-02-18 F5 Networks, Inc. Accessing Security Hardware Keys
US11316683B2 (en) * 2019-11-18 2022-04-26 Ciot Systems and methods for providing IoT security service using hardware security module
KR20210107386A (ko) * 2020-02-24 2021-09-01 삼성전자주식회사 전자 장치 및 그 제어 방법
US11405199B2 (en) * 2020-03-11 2022-08-02 International Business Machines Corporation Determining key server type and key server redundancy information to enable encryption
US11750566B1 (en) * 2020-03-31 2023-09-05 Amazon Technologies, Inc. Configuring virtual computer systems with a web service interface to perform operations in cryptographic devices
US20210306149A1 (en) * 2020-03-31 2021-09-30 Entrust, Inc. Hardware security module proxy device for storage expansion
KR102410810B1 (ko) * 2020-09-11 2022-06-21 주식회사 티이이웨어 확장 암호연산 처리 방법 및 시스템
CN112492580B (zh) * 2020-11-25 2023-08-18 北京小米移动软件有限公司 信息处理方法及装置、通信设备及存储介质
US11455429B2 (en) * 2020-12-03 2022-09-27 International Business Machines Corporation Container-based cryptography hardware security module management
CN112818332A (zh) * 2021-01-29 2021-05-18 西安得安信息技术有限公司 一种面向智能制造的密码管理服务平台
US11575508B2 (en) * 2021-06-02 2023-02-07 International Business Machines Corporation Unified HSM and key management service
CN114640445A (zh) * 2022-03-21 2022-06-17 中国电力科学研究院有限公司 Hsm密钥管理系统及方法、设备及存储介质
US20230418953A1 (en) * 2022-06-22 2023-12-28 Palantir Technologies Inc. Secure high scale cryptographic computation through delegated key access
CN115314264A (zh) * 2022-07-25 2022-11-08 阿里云计算有限公司 密钥管理服务系统、密钥管理方法、网关及设备
WO2024026428A1 (en) * 2022-07-27 2024-02-01 Passbird Research, Inc. Digital identity allocation, assignment, and management
US11916890B1 (en) * 2022-08-08 2024-02-27 International Business Machines Corporation Distribution of a cryptographic service provided private session key to network communication device for secured communications
US11765142B1 (en) 2022-08-08 2023-09-19 International Business Machines Corporation Distribution of private session key to network communication device for secured communications
US11924179B2 (en) * 2022-08-08 2024-03-05 International Business Machines Corporation API based distribution of private session key to network communication device for secured communications
US11895227B1 (en) * 2023-05-23 2024-02-06 Cloudflare, Inc. Distributed key management system with a key lookup service
CN116707806B (zh) * 2023-08-09 2023-10-31 中电信量子科技有限公司 密码设备管理方法及管理平台
CN117527220A (zh) * 2023-11-20 2024-02-06 江苏新质信息科技有限公司 一种云密码服务方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014503865A (ja) 2010-10-27 2014-02-13 アップル インコーポレイテッド プライベートメタデータの処理方法
US20150134953A1 (en) 2013-11-08 2015-05-14 Motorola Solutions, Inc Method and apparatus for offering cloud-based hsm services

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002207426A (ja) * 2001-01-10 2002-07-26 Sony Corp 公開鍵証明書発行システム、公開鍵証明書発行方法、および電子認証装置、並びにプログラム記憶媒体
GB2384404B (en) * 2002-01-18 2005-02-16 Sun Microsystems Inc Key management
US20070180228A1 (en) * 2005-02-18 2007-08-02 Ulf Mattsson Dynamic loading of hardware security modules
US8375430B2 (en) * 2006-06-27 2013-02-12 Intel Corporation Roaming secure authenticated network access method and apparatus
US20080005359A1 (en) * 2006-06-30 2008-01-03 Khosravi Hormuzd M Method and apparatus for OS independent platform based network access control
JP5053179B2 (ja) * 2008-05-30 2012-10-17 株式会社日立製作所 検証サーバ、プログラム及び検証方法
US9053480B1 (en) * 2008-09-30 2015-06-09 Amazon Technologies, Inc. Secure validation using hardware security modules
GB2471282B (en) * 2009-06-22 2015-02-18 Barclays Bank Plc Method and system for provision of cryptographic services
EP2483791B1 (en) * 2009-09-30 2018-01-17 Amazon Technologies, Inc. Modular device authentication framework
US8909556B2 (en) * 2011-07-20 2014-12-09 Visa International Service Association Security gateway communication
ES2533757B1 (es) * 2011-10-13 2016-01-19 Evolium Technologies, S.L. Operaciones criptográficas
KR101388724B1 (ko) * 2011-11-11 2014-04-25 닛본 덴끼 가부시끼가이샤 데이터베이스 암호화 시스템과 방법 및 컴퓨터 판독가능 기록 매체
US9286491B2 (en) * 2012-06-07 2016-03-15 Amazon Technologies, Inc. Virtual service provider zones
US9705674B2 (en) * 2013-02-12 2017-07-11 Amazon Technologies, Inc. Federated key management
AU2014225984B2 (en) * 2013-03-04 2017-06-22 Docusign, Inc. Systems and methods for cloud data security
US8949594B2 (en) * 2013-03-12 2015-02-03 Silver Spring Networks, Inc. System and method for enabling a scalable public-key infrastructure on a smart grid network
US9426154B2 (en) * 2013-03-14 2016-08-23 Amazon Technologies, Inc. Providing devices as a service
US10362006B2 (en) * 2013-03-15 2019-07-23 Mastercard International Incorporated Systems and methods for cryptographic security as a service
US20160149877A1 (en) * 2014-06-05 2016-05-26 Cavium, Inc. Systems and methods for cloud-based web service security management basedon hardware security module
TW201546649A (zh) * 2014-06-05 2015-12-16 Cavium Inc 用於基於硬體安全模組的基於雲端的web服務安全管理的系統和方法
US9571279B2 (en) * 2014-06-05 2017-02-14 Cavium, Inc. Systems and methods for secured backup of hardware security modules for cloud-based web services
US10574442B2 (en) * 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US9887836B1 (en) * 2014-09-26 2018-02-06 Amazon Technologies, Inc. Unified management of cryptographic keys using virtual keys and referrals
GB2531248B (en) * 2014-10-08 2017-02-22 Ibm Controlled use of a hardware security module
US9584325B1 (en) * 2014-12-04 2017-02-28 Amazon Technologies, Inc. User-configurable cryptographic interface controller
WO2016115633A1 (en) * 2015-01-21 2016-07-28 FusionPipe Software Solutions Inc. Enhanced security authentication methods, systems and media
US9767293B2 (en) * 2015-02-13 2017-09-19 International Business Machines Corporation Content based hardware security module assignment to virtual machines
US20170249464A1 (en) * 2015-05-28 2017-08-31 Telefonaktiebolaget Lm Ericsson (Publ) METHOD FOR ENABLING SIMULTANEOUS CONTROL OF A PLURALITY OF TPMs AND RELATED COMPONENTS
KR20160145995A (ko) * 2015-06-11 2016-12-21 강릉원주대학교산학협력단 의료데이터 암호화 시스템 및 의료데이터 검색 방법 및 이들을 이용한 의료데이터 관리 시스템
US10425234B2 (en) * 2015-08-27 2019-09-24 Cavium, Llc Systems and methods for perfect forward secrecy (PFS) traffic monitoring via a hardware security module
US9705859B2 (en) * 2015-12-11 2017-07-11 Amazon Technologies, Inc. Key exchange through partially trusted third party
US10484331B1 (en) * 2016-06-28 2019-11-19 Amazon Technologies, Inc. Security appliance provisioning
US10341118B2 (en) * 2016-08-01 2019-07-02 A10 Networks, Inc. SSL gateway with integrated hardware security module
US10547442B2 (en) * 2016-08-17 2020-01-28 Open Text Sa Ulc System and method for encryption in a content management environment
US10425225B1 (en) * 2016-12-14 2019-09-24 Amazon Technologies, Inc. Synchronizable hardware security module
US10387687B2 (en) * 2017-04-07 2019-08-20 Nxp B.V. Method for symbolic execution on constrained devices
WO2018236420A1 (en) * 2017-06-20 2018-12-27 Google Llc CLOUD EQUIPMENT SECURITY MODULES FOR CRYPTOGRAPHIC EXTERNALIZATION OPERATIONS
US10623183B2 (en) * 2017-11-01 2020-04-14 International Business Machines Corporation Postponing entropy depletion in key management systems with hardware security modules

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014503865A (ja) 2010-10-27 2014-02-13 アップル インコーポレイテッド プライベートメタデータの処理方法
US20150134953A1 (en) 2013-11-08 2015-05-14 Motorola Solutions, Inc Method and apparatus for offering cloud-based hsm services

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023212444A1 (en) * 2022-04-26 2023-11-02 Coinbase, Inc. Systems and methods for facilitating secure authentication when conducting blockchain operations using cryptography-based, storage applications

Also Published As

Publication number Publication date
JP7205031B2 (ja) 2023-01-17
CN112470425A (zh) 2021-03-09
CA3098836A1 (en) 2019-11-07
EP3788741A1 (en) 2021-03-10
US10909250B2 (en) 2021-02-02
KR20200140916A (ko) 2020-12-16
US20190342079A1 (en) 2019-11-07
CN112470425B (zh) 2022-06-10
WO2019212773A1 (en) 2019-11-07
JP2021521718A (ja) 2021-08-26
CA3098836C (en) 2023-09-05

Similar Documents

Publication Publication Date Title
KR102229739B1 (ko) 키 관리 시스템 및 방법
US10375067B2 (en) Mutual authentication with symmetric secrets and signatures
JP7014492B2 (ja) ネットワークを介した機密データの安全なデータエグレス
JP7036494B2 (ja) コンテンツ配信ネットワークを介した機密データの安全なデータ配給
US11036861B2 (en) Host attestation
JP6844876B2 (ja) ネットワークを介した機密データの安全なデータ取得
US11729002B2 (en) Code signing method and system
US10298577B1 (en) Credential vending to processes
US10693638B1 (en) Protected cryptographic environment
US11190504B1 (en) Certificate-based service authorization
US11546169B2 (en) Dynamic response signing capability in a distributed system
US11159498B1 (en) Information security proxy service
US10963593B1 (en) Secure data storage using multiple factors
US11115224B1 (en) Access control system
US11671251B1 (en) Application programming interface to generate data key pairs
US10218682B1 (en) Secure network protocol cryptographic processing
US11750566B1 (en) Configuring virtual computer systems with a web service interface to perform operations in cryptographic devices
US11764948B1 (en) Cryptographic service interface
CN114008976A (zh) 用于双壳加密的混合密钥交换

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant