KR20170131577A - 키 내보내기 기법 - Google Patents

키 내보내기 기법 Download PDF

Info

Publication number
KR20170131577A
KR20170131577A KR1020177030633A KR20177030633A KR20170131577A KR 20170131577 A KR20170131577 A KR 20170131577A KR 1020177030633 A KR1020177030633 A KR 1020177030633A KR 20177030633 A KR20177030633 A KR 20177030633A KR 20170131577 A KR20170131577 A KR 20170131577A
Authority
KR
South Korea
Prior art keywords
key
request
cryptographic
token
customer
Prior art date
Application number
KR1020177030633A
Other languages
English (en)
Other versions
KR101985187B1 (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 아마존 테크놀로지스, 인크.
Priority to KR1020197015198A priority Critical patent/KR102311843B1/ko
Publication of KR20170131577A publication Critical patent/KR20170131577A/ko
Application granted granted Critical
Publication of KR101985187B1 publication Critical patent/KR101985187B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network 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 wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • 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
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • 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
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • 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/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

컴퓨터 시스템은 서비스로서 암호화 작업을 수행한다. 컴퓨터 시스템은 서비스의 사용자가 자신들 각자의 암호화 재료의 제어를 유지할 수 있게 하도록 구성된다. 컴퓨터 시스템은 액세스 불가능한 암호화 재료를 이용해 토큰 내 사용자의 암호화 재료를 암호화하고, 이는 그 후 사용자에게 제공된다. 사용자는 토큰 내 암호화 재료의 평문 카피를 액세스하지 못할 수 있지만, 토큰을 다시 서비스로 제공하여, 서비스가 암호화 재료를 해독하고 사용하게 할 수 있다.

Description

키 내보내기 기법
관련 출원과의 교차 참조
이 출원은 2015년 03월 31일에 출원된 미국 특허 출원 번호 14/675,614, 발명의 명칭 "KEY EXPORT TECHNIQUES"의 전체 내용을 모든 목적으로 참조로서 포함한다.
많은 데이터 사용자에게, 많은 상황에서 데이터의 보안이 높은 중요도를 가진다. 가령, 비인가된 개체가 평문 형태의 데이터를 획득하지 못하게 함으로써 데이터의 보안을 보장하기 위한 여러 기법, 가령, 암호화가 잘 개발된 바 있다. 동시에, 조직 개발의 필요에 따라 컴퓨터 시스템은 더 복잡해지고 있다. 예를 들어, 조직은 종종 컴퓨팅 장치의 네트워크를 이용해 그들의 사용자에게 강건한 서비스 세트를 제공할 수 있다. 네트워크는 종종 복수의 지리적 경계에 걸쳐 있으며 다른 네트워크와 연결된다. 예를 들어 조직은 내부 네트워크의 컴퓨팅 자원과 그 밖의 다른 측에 의해 관리되는 컴퓨팅 자원 모두를 이용해 자신의 작업을 지원할 수 있다. 예를 들어, 조직의 컴퓨터는 타 조직의 컴퓨터와 통신하여, 또 다른 조직의 서비스를 이용하면서 데이터를 액세스 및/또는 제공할 수 있다. 많은 경우, 조직은 타 조직에 의해 관리되는 하드웨어를 이용해 원격 네트워크를 구성 및 동작시킴으로써, 인프라구조 비용을 낮추고 그 밖의 다른 이점을 획득할 수 있다. 컴퓨팅 자원의 이러한 구성의 경우, 이들이 보유하는 자원 및 데이터로의 액세스가 안전함을 보장하는 것이 특히, 이러한 구성의 크기 및 복잡도가 증가할 때, 힘들 수 있다.
조직이 자신의 작업을 지원하기 위해 복잡한 컴퓨터 시스템을 개발하는 것을 보조하기 위해, 많은 조직이 서비스로서의 컴퓨팅 자원을 호스팅하기 시작했다. 가령, 고객을 대리하여 다양한 작업, 가령, 컴퓨팅, 데이터 저장, 고급 데이터 저장(가령, 데이터베이스를 이용하는 것), 네트워킹 서비스(가령, 호스팅된 컴퓨터 네트워크) 등을 수행하기 위해 컴퓨팅 자원 서비스가 호스팅될 수 있다. 이러한 서비스가 서비스의 제공자의 고객에게 많은 이점(가령, 많은 자본 투자 없이 컴퓨팅 자원을 셋업할 수 있는 능력)을 제공하지만, 서비스 제공자가 자신의 고객의 데이터를 보호하려 취하는 실질적인 노력과 무관하게, 고객은 종종 타 개체에 의해 데이터가 액세스 가능한 것에 대해 우려한다.
본 발명에 따르는 다양한 실시예가 다음의 도면을 참조하여 기재될 것이다.
도 1은 본 발명의 다양한 양태를 도시하는 다이어그램을 도시한다.
도 2는 다양한 실시예가 실시될 수 있는 환경의 예시를 도시한다.
도 3은 하나의 실시예에 따라 데이터 구조의 예시를 도시한다.
도 4는 하나의 실시예에 따라 키 내보내기 토큰의 예시를 보여준다.
도 5는 하나의 실시예에 따라 키 내보내기 토큰에 대한 요청을 이행하기 위한 프로세스의 예시를 도시한다.
도 6은 하나의 실시예에 따라 키 내보내기 토큰을 이용해 하나 이상의 암호화 작업을 수행하기 위한 요청을 이행하기 위한 프로세스의 예시를 도시한다.
도 7은 하나의 실시예에 따라 내보내기 도메인 키를 교대하기 위한 프로세스의 예시를 도시한다.
도 8은 하나의 실시예에 따라 하나 이상의 암호화 작업을 수행하기 위한 요청을 이행하기 위한 프로세스의 예시를 도시한다.
도 9는 하나의 실시예에 따라 내보내진 고객 키의 수명을 연장하기 위한 요청을 이행하기 위한 프로세스의 예시를 도시한다.
도 10은 하나의 실시예에 따라 내보내진 고객 키를 호스팅된 고객 키로 변환하기 위한 요청을 이행하기 위한 프로세스의 예시를 도시한다.
도 11은 하나의 실시예에 따라 호스팅된 고객 키를 내보내진 고객 키로 변환하기 위한 요청을 이행하기 위한 프로세스의 예시를 도시한다.
도 12는 다양한 실시예가 이행될 수 있는 환경을 도시한다.
다음의 기재에서, 다양한 실시예가 기재될 것이다. 설명 목적으로, 실시예의 완전한 이해를 제공하기 위해 특정 구성 및 세부사항이 제공된다. 그러나 실시예는 또한 특정 세부사항 없이 실시될 수 있음이 자명할 것이다. 덧붙여, 기재된 실시예를 모호하게 하지 않도록 잘 알려진 특징은 생략 또는 단순화될 수 있다.
본 명세서에 기재되고 제안된 기법이 서비스 제공자가 고객에 대해 프로비저닝된 암호 키를 액세스하는 것을 제한하면서 서비스 제공자의 고객이 암호화 서비스(cryptography service)를 이용할 수 있게 하는 애플리케이션 프로그래밍 인터페이스(API: application programming interface)를 갖는 분산 컴퓨터 시스템을 동작시키는 것을 포함한다. 하나의 실시예에서, 서비스 제공자는 고객을 대리하여 암호화 서비스(가령, 암호화, 해독화, 및 디지털 서명 생성 및 검증)를 동작시킨다. 암호화 서비스는 특수 하드웨어, 가령, 하드웨어 보안 모듈을 이용해, 암호화 작업이 수행되는 데이터 및 상기 암호화 작업을 수행하는 데 사용된 암호 키의 보안을 보장할 수 있다. 일부 예시에서, 서비스 제공자의 암호화 서비스의 API가 서비스 제공자는 제한된 액세스를 갖는 암호 키를 포함하는 요청의 제출을 가능하게 하도록 구성된다.
예를 들어, 하나의 실시예에서, API는 요청(가령, 웹 서비스 요청)이 다양한 방식으로 암호화 작업을 수행할 때 이용하기 위한 암호 키를 특정할 수 있도록 구성된다. 하나의 예시에서, 암호화 작업을 수행하기 위한 요청이 암호화 서비스에 의해 관리되는 암호 키(관리된 고객 키라고도 지칭되는 호스팅된 고객 키)의 식별자를 포함한다. 또 다른 예에서, 암호화 작업을 수행하기 위한 요청은 암호화 작업을 수행할 때 사용될 암호 키의 암호화된 카피를 포함하는 토큰(키 내보내기(export key) 토큰이라고도 지칭됨)을 포함하며, 여기서 암호 키의 카피는 서비스 제공자 측 하나 이상의 장치(가령, 하드웨어 보안 모듈 또는 암호화 재료의 하드웨어 기반 보호를 제공하는 그 밖의 다른 장치)의 내부에서 비밀로 유지된 또 다른 암호 키(포장 키(wrapping key) 또는 내보내기 도메인 키(export domain key)라고 지칭됨)를 이용해 해독 가능하다.
하나 이상의 암호화 작업을 수행하기 위한 요청을 처리하기 위해, 서비스 제공자는 요청에서 특정된 암호 키를 획득할 수 있다. 호스팅된 고객 키를 특정하는 요청의 예시에서, 서비스 제공자는 데이터 저장소로부터 특정된 호스팅된 고객 키의 암호화된 카피를 획득하고 특정된 호스팅된 고객 키의 암호화된 카피를 해독화 및 요청된 암호화 작업(들)의 수행을 위해 하드웨어 보안 모듈로 제공할 수 있다. 키 내보내기 토큰을 포함하거나 그 밖의 다른 방식으로 특정하는 요청의 예시에서, 키 내보내기 토큰은 고객 키를 획득하고 요청된 암호화 작업(들)을 수행하기 위해 키 내보내기 토큰의 해독화를 위한 하드웨어 보안 모듈에 제공될 수 있다. 요청이 키 내보내기 토큰을 특정하는 예시에서 적어도, (가령, 요청에 대한 응답을 제공한 결과로서) 고객 키의 사용이 완료되면, 서비스 제공자는 키 내보내기 토큰으로부터 획득된 고객 키로의 액세스를 소실할 수 있고 따라서 키 내보내기 토큰 또는 고객 키를 포함하는 또 다른 키 내보내기 토큰을 포함하는 또 다른 통신(가령, 요청)에서 제공되지 않는 한, 서비스 제공자는 고객 키를 액세스하지 못하게 된다. 고객 키로의 액세스를 소실하는 것은 고객 키가 결정될 수 있는 임의의 정보, 가령, 키 내보내기 토큰으로의 액세스를 소실하는 것을 포함할 수 있다.
다양한 실시예에서, 암호화 서비스는 도메인 키의 적어도 2개의 클래스, 즉, 호스팅된 고객 키에 대해 하나의 클래스와 내보내진 고객 키에 대해 또 하나의 클래스를 이용한다. 이러한 방식으로, 서로 다른 교대 스케줄에 따라, 서로 다른 클래스 도메인 키가 교대(가령, 암호 키 고갈을 피하기 위해 교체)될 수 있다. 예를 들어, 서비스 제공자가 호스팅된 고객 키(이들 각각은 현재 도메인 키 하에서 암호화되어 저장될 수 있음)를 액세스할 수 있기 때문에, 서비스 제공자는 고객 데이터의 손실을 야기하지 않고 내보내기 도메인 키보다 도메인 키를 더 자주 교대시킬 수 있다. 특히 서비스 제공자는 암호화된 고객 키를 액세스하고, 만기 도메인 키를 이용해 고객 키를 해독하며, 새 도메인 키를 이용해 고객 키를 암호화하고, 암호화된 고객 키를 저장할 수 있다. 그러나 내보내진 고객 키에 대해, 고객이 새로운 내보내기 도메인 키로 재-암호화될 키 내보내기 토큰을 제공하지 않는 경우 내보내기 도메인 키의 교대가 고객 데이터의 손실을 야기할 수 있다.
다양한 실시예에서, 도메인 키의 서로 다른 클래스에 대한 서로 다른 교대 스케줄에 의해, 암호 키 수명에 대한 유연한 동작이 가능하다. 일부 구현예에서, 암호화 서비스의 API에 의해 고객이 내보내진 고객 키에 대한 수명을 특정할 수 있다. 또한, 서비스 제공자가 각각 서로 다른 만기를 갖는 내보내기 도메인 키의 세트를 유지할 수 있다. 서비스 제공자는 고객-특정된 수명과 매칭되어 키 내보내기 토큰으로 고객에게 제공될 고객 키를 암호화하는 유지된 세트로부터 내보내기 도메인 키를 이용할 수 있다. 내보내기 도메인 키가 만료되고 서비스 제공자에 의해 더는 액세스 가능하지 않으면, 키 내보내기 토큰은 서비스 제공자가 키 내보내기 토큰을 해독하는 데 더는 이용 가능하지 않고, 따라서 키 내보내기 토큰은 고객 키를 획득하는 데 더는 이용 가능하지 않다. 이러한 방식으로, 고객은 데이터가 제한된 시간 동안만 액세스 가능함을 확신할 수 있다. 그 밖의 다른 변형이 또한 본 발명의 범위 내에 있는 것으로 여겨진다.
도 1은 다양한 실시예가 실시될 수 있는 환경(100)의 예시를 보여준다. 도 1의 예시에서, 환경(100)은 서비스 제공자(104)의 고객(102) 간 대화를 설명하도록 제시된다. 서비스 제공자는 하나 이상의 서비스, 가령, 이하에서 더 상세히 기재된 암호화 서비스를 제공하도록 구성된 분산 컴퓨터 시스템일 수 있는 컴퓨터 시스템을 운영하는 개체일 수 있다. 일부 예시에서, 서비스 제공자(104)는, 암호화 서비스에 추가로, 그 밖의 다른 서비스, 가령, 인프라구조로 분류된 서비스를 서비스 제공자가 서비스 제공자의 고객이 원격으로 그리고 프로그램에 따라 관리할 수 있는 하드웨어를 호스팅하는 서비스로서 제공한다. 서비스 제공자 및 서비스 제공자의 고객이 설명 목적으로 사용되었지만, 본 명세서에 기재되는 기법이 고객/서비스 제공자 관계가 없는 다른 맥락에도 적용 가능함이 자명하다.
도 1의 예시에서, 하나의 실시예에서, 고객(102)은 서비스 제공자(104)로부터 키 토큰(106)을 수신한다. 상기 키 토큰(106)은 고객(102)에 의해 해독될 수 없는 암호 키를 포함하는 정보의 구조화된 모음일 수 있다(즉, 특별한 계산 노력 없이는 해독될 수 없음). 그 밖의 다른 정보, 가령, 하나 이상의 식별자가 키 토큰(106)에 포함될 수 있다. 키 토큰은 도 4와 관련하여 이하에서 더 상세히 언급된다. 도 1에 도시된 예시에서, 키 토큰이 서비스 제공자(104)의 하드웨어 보안 모듈(108)의 군 또는 암호화 재료, 가령, 이하에서 더 상세히 기재될 것의 하드웨어-기반 보호를 제공하는 또 다른 장치의 하드웨어 보안 모듈 내에서 적어도 부분적으로 생성된다. 하드웨어 보안 모듈(HSM)이 설명 목적으로 전체적으로 사용되지만, 암호화 재료의 하드웨어 기반 보호를 제공하는 그 밖의 다른 장치가 또한 사용될 수 있다. 이러한 장치의 예시가 환경에서, 가령, Intel SGX(Secure Guard eXtension) 기법을 이용하는 프로세서의 엔클레이브(enclave)에서, 보안 실행을 포함하는 신뢰 플랫폼 모듈(TPM) 및 프로세서를 포함한다.
키 토큰(106)을 생성하는 데 관련된 하드웨어 보안 모듈이 고객(102)에 대해 암호 키를 생성하고, 상기 암호 키를, 하드웨어 보안 모듈의 군(108) 내에서 안전하게 유지되는 도메인 키라고 지칭되는 또 다른 암호 키를 이용해 암호화할 수 있다. 예를 들면, 보안 모듈 세트의 각각의 보안 모듈이 도메인 키를 프로그램에 따라 내보낼 수 없는 정보(programmatically unexportable information)로서 유지할 수 있다. 장치가 프로그램에 따라 정보를 제공하게 하는 어떠한 정당한 방식도 존재하지 않은 경우, (가령, 장치의 인터페이스를 통해) 정보가 프로그램에 따라 내보낼 수 없다고 말해질 수 있다. 예를 들어, 하드웨어가 평문 형태의 정보를 액세스하면서 평문 형태로 정보를 드러내게 하도록 하는 어떠한 요청 메커니즘(가령, 애플리케이션 프로그래밍 인터페이스(API) 콜)도 없도록 정보가 유지될 수 있다. 예를 들어, 보안 모듈은 카피가 평문 형태의 정보를 포함하도록 메모리의 일부 또는 전체의 카피를 제공할 수 있는 능력을 갖지 않도록 구성될 수 있다. 그러나 평문 형태의 정보를 획득하는 정당한 방식이 존재하지 않는 정보가 설명 목적으로 본 명세서 전체에서 사용되지만, 제한된 횟수의 인가된 사용을 통해 정보가 획득 가능하도록 일부 정보가 유지되어, 다양한 보안 프로토콜이 채용될 것을 요구하고 평문 형태의 정보로의 비인가된 액세스를 막을 수 있다. 일반적으로, 프로그램에 따라 내보낼 수 없는 정보는 평문 형태의 정보를 획득하는 것이 가능하다 하더라도 평문 형태의 정보를 획득하기 위해서는 특별한 수단이 취해져야 하는 정보(가령, 하나 이상의 암호 키)이다. 따라서 특별한 계산 노력이 없이는, 키 토큰(106)의 내부의 고객(102)에 대한 암호 키를 암호화하는 데 사용되는 도메인 키에 대한 액세스가 없는 장치가 평문 형태의 키 토큰(106)의 내부의 암호 키를 획득할 수 없다.
서비스 제공자(104)로부터 키 토큰(106)이 수신되면, 고객은 고객에 의해 관리되는 저장 장치(110)에 키 토큰(106)의 카피를 유지할 수 있다. 저장 장치(110)는, 예를 들어, 고객(102)에 의해 관리되는 개인 네트워크 내 저장 장치 또는 고객이 제어하거나 고객이 아닌 다른 개체가 고객(102)을 위해 제어하는 임의의 저장 장치일 수 있다.
고객(102)은 서비스 제공자(104)와 대화하여 그가 저장한 키 토큰(106)을 사용할 수 있다. 이를 위해, 도 1에 도시된 하나의 실시예에서, 고객(102)은, 컴퓨터 장치를 통해, 데이터(114)에 대한 하나 이상의 암호화 작업을 수행하기 위한 요청(112)으로 키 토큰(106)의 카피를 제공한다. 요청(112)은, 예를 들어, 서비스 제공자(104)가 요청(112)을 수행할 때 필요한 하나 이상의 암호화 작업을 수행하게 하도록 구성된 웹 서비스 요청일 수 있다. 데이터(114)는 고객(102)이 하나 이상의 암호화 작업의 수행에 의해 서비스 제공자(104)에 의해 조작되기를 원하는 임의의 데이터일 수 있다. 하나의 예시에서, 데이터(114)는 다른 데이터를 암호화하도록 고객(102)에 의해 사용되는 암호 키이다. 그러나 본 발명의 범위는 데이터(114)가 암호 키인 것에 한정되지 않는다.
요청(112)을 처리하기 위해, 서비스 제공자(104)가 고객(102)의 암호화된 암호 키를 포함하는 키 토큰(106) 또는 이의 일부분을 하드웨어 보안 모듈의 군(108) 중 암호화된 암호 키를 해독하는 데 이용 가능한 도메인 키의 카피를 액세스할 수 있는 하드웨어 보안 모듈로 제공할 수 있다. 하드웨어 보안 모듈은 암호 키를 해독하여, 평문 형태의 암호 키의 카피를 획득할 수 있고 평문 형태의 암호 키의 카피를 이용해 데이터(114)에 대해 요청된 하나 이상의 암호화 작업을 수행할 수 있다. 도 1의 이 특정 예시에서, 데이터(114)는 평문 형태로 서비스 제공자(104)에게 제공되고 서비스 제공자, 특히, 서비스 제공자의 하드웨어 보안 모듈이 데이터(114)에 대한 암호화 작업을 수행하여, 서비스 제공자(104)가 고객(102)에게 다시 제공하는 암호화된 데이터(116)를 획득할 수 있다. 그러나 암호화가 도 1 및 본 명세서의 그 밖의 다른 부분에서 사용되지만, 그 밖의 다른 암호화 작업이 요청되고 이에 따라 수행될 수 있다. 이러한 동작은 예를 들어 디지털 서명의 암호화된 데이터 생성의 해독화 및 디지털 서명의 검증 및 관련 동작, 가령, 디지털 인증서 진본성의 검증을 포함한다.
도 2는 본 발명의 다양한 실시예가 실시될 수 있는 환경(200)의 예시이다. 하나의 실시예에서, 주체(principal)(202)가 컴퓨팅 장치를 이용하여 네트워크(204)를 통해 컴퓨팅 자원 서비스 제공자(206)와 통신할 수 있다. 컴퓨팅 자원 서비스 제공자(206)와 주체(202) 간 통신이, 예를 들어, 서비스 제공자(208)에 의해 동작되는 서비스(208), 즉, 여러 서비스 중 서비스 제공자(206)에 의해 동작되는 서비스일 수 있는 서비스를 액세스하기 위한 목적일 수 있다. 상기 서비스는 암호화 서비스, 가령, 2013년 02월 12일에 출원된 미국 특허 출원 번호 13/764,963, 발명의 명칭 "Data Security Service" 및/또는 2014년 09월 15일에 출원된 미국 특허 출원 번호 14/486,741, 발명의 명칭 "Distributed System Web of Trust Provisioning"에 상세히 기재된 것일 수 있으며, 이들은 본 명세서에 참조로서 포함된다.
서비스(208)는 서비스 프론트엔드(210)로부터 인가된 요청을 수신하도록 구성되고 이러한 요청을 이행하기 위한 동작을 수행하도록 구성된 서비스의 구성요소일 수 있는 서비스 프론트엔드(210) 및 서비스 백엔드(214)를 포함할 수 있다. 주체(202)는 컴퓨팅 자원 서비스 제공자(206)에 의해 제공되는 서비스(208)로의 액세스의 요청(및/또는 서비스(208)와 연관된 자원으로의 액세스의 요청)을 발행할 수 있다. 요청은, 예를 들어, 웹 서비스 애플리케이션 프로그래밍 인터페이스 요청일 수 있다. 주체는 사용자, 또는 사용자 그룹, 또는 사용자 그룹과 연관된 역할, 또는 하나 이상의 (컴퓨팅 자원 서비스 제공자(206)에 비해) 원격 컴퓨터 시스템 상에서 실행되거나, 일부 다른 이러한 컴퓨터 시스템 개체, 사용자, 또는 프로세스일 수 있는 이들 개체 중 하나 이상을 나타내는 프로세스일 수 있다. 일반적으로, 주체는 컴퓨팅 자원 서비스 제공자에 의해 관리되는 신원에 대응하는 개체이며, 여기서 컴퓨팅 자원 서비스 제공자가 신원에 대한 권한(permission)을 관리한다.
주체(202)는 컴퓨팅 자원 서비스 제공자(206), 가령, 정책 관리 서비스 또는 또 다른 서비스에 의해 관리되는 신원(identity)에 대응할 수 있다. 신원은 컴퓨팅 자원 서비스 제공자의 고객의 계정에 대해 관리되는 복수의 신원 중 하나일 수 있으며, 컴퓨팅 자원 서비스 제공자는 복수의 고객에 대한 계정을 관리할 수 있다. 주체(202)는 인간에 대응할 수 있지만, 이러한 인간은 주체(202)를 대리하여 동작(가령, 요청의 생성 및 전송)을 수행할 수 있는 적절하게 구성된 컴퓨팅 장치를 통해 컴퓨팅 자원 서비스 제공자(206)와 통신할 수 있다. 주체(202)는 하나 이상의 연결(가령, 전송 제어 프로토콜(TCP: transmission control protocol) 연결)을 통해 컴퓨팅 자원 서비스 제공자(206)와 통신할 수 있다. 주체(202)는 컴퓨터 시스템 클라이언트 장치를 이용하여 컴퓨팅 자원 서비스 제공자(206)에게 연결할 수 있다. 클라이언트 장치는 네트워크를 통해 컴퓨터 시스템과 연결할 수 있는 임의의 장치, 가령, 이하에서 나열되는 예시적 장치를 포함할 수 있다. 네트워크(204)는, 예를 들어, 인터넷 또는 또 다른 네트워크 또는 이하에서 나열되는 네트워크들의 조합을 포함할 수 있다.
컴퓨팅 자원 서비스 제공자(206)는, 서비스(208)를 통해, 하나 이상의 컴퓨팅 자원, 가령, 가상 머신(VM) 인스턴스, 자동 스케일링 그룹, 파일-기반 데이터베이스 저장 시스템, 블록 저장 서비스, 예비 데이터 저장 서비스, 데이터 아카이브 서비스, 데이터 웨어하우징 서비스, 사용자 액세스 관리 서비스, 신원 관리 서비스, 콘텐츠 관리 서비스 및/또는 그 밖의 다른 이러한 컴퓨터 시스템 서비스로의 액세스를 제공할 수 있다. 그 밖의 다른 예시적 자원의 비제한적 예를 들면 사용자 자원, 정책 자원, 네트워크 자원 및/또는 저장 자원이 있다. 일부 예시에서, 컴퓨터 서비스와 연관된 자원이 물리 장치, 가상 장치, 물리 장치 및/또는 가상 장치의 조합, 또는 그 밖의 다른 이러한 장치 실시예일 수 있다. 이러한 서비스 및 자원이 설명 목적으로 제공되며, 본 명세서의 실시예가 그 밖의 다른 서비스 및/또는 자원을 이용할 수 있다.
서비스(208)로의 액세스의 요청, 일부 예시에서, 웹 서비스 애플리케이션 프로그래밍 인터페이스 요청(또한 단순히 웹 서비스 요청이라고도 지칭됨)이, 일부 예시에서 이러한 요청을 수신하고 서비스(208)와 연관된 하나 이상의 정책에 따라 이들을 처리하도록 구성된 웹 서버를 포함하는 서비스 프론트엔드(210)에 의해 수신될 수 있다. 서비스(208)로의 액세스의 요청은 디지털 서명된 요청일 수 있고, 따라서 디지털 서명이 제공될 수 있다. 그 후 서비스 프론트엔드(210)는 검증하기 위한 요청 및 디지털 서명을 인증 서비스(216)로 전송할 수 있다. 인증 서비스(216)는 독립형 서비스(stand-alone service)이거나 서비스 제공자 또는 그 밖의 다른 개체의 일부일 수 있다. 인증 서비스(216)는, 하나의 실시예에서, 주체의 인증에 포함되는 동작을 수행하도록 구성된 컴퓨터 시스템이다. 일부 예시에서, 서비스 프론트엔드(210)로 제출되는 요청은 주체(202)와 인증 서비스(216) 간 공유되는 대칭 암호 키를 이용해, 주체에 의해(즉, 주체에 의해 사용되거나 주체를 대리하여 동작하는 컴퓨팅 장치에 의해) 디지털 서명된다. 따라서 인증 서비스는 대칭 암호 키의 카피를 이용하여, 주체(202)에 의해 생성된 것으로 주장되는 요청의 디지털 서명을 검증할 수 있다. 그러나 또 다른 실시예에서, 인증 서비스(216)는 디지털 서명 검증, 가령, 주체가 사설 암호 키를 이용해 요청을 디지털 서명할 때 디지털 서명 검증을 위해 비대칭 암호화를 이용하도록 구성될 수 있다. 이러한 실시예에서, 인증 서비스는 사설 암호 키에 대응하는 주체(202)의 인증서를 디지털 서명한 인증 기관을 신뢰하도록 구성될 수 있다. 따라서, 일부 실시예에서, 인증 서비스는 인증서에 의해 특정된 공개 암호 키를 이용할 수 있다. 일반적으로, 인증 서비스는 주체(202)와 연관하여 인증 서비스(216)에 등록된 암호 키를 이용할 수 있다.
요청의 성공적인 인증이 있으면, 그 후 인증 서비스(216)는 요청에 적용 가능한 정책을 획득할 수 있다. 정책(액세스 제어 정책이라고도 지칭됨)이 사용자, 그룹, 역할, 조직, 회사, 또는 그 밖의 다른 이러한 개체와 연관된 권한의 모음이다. 각각의 권한은 컴퓨팅 자원과 연관될 수 있으며 개체(본 명세서에서 "주체(principal)"라고 지칭됨)가 상기 자원을 액세스할 수 있는지 여부, 어느 조건 하에서 액세스가 허용 또는 거부될 수 있는지, 및/또는 어느 유형의 액세스가 허용 또는 거부될 수 있는지를 특정할 수 있다. 예를 들어, 권한이 "사용자1"이라는 이름의 사용자가 식별자 "12345"로 지시된 특정 데이터 저장 장치를 액세스할 수 있음을 특정할 수 있다. 더 상세한 권한이 사용자1이 자원 12345으로부터 읽을 수만 있으며, 자원 12345에 쓸 수 없음을 특정할 수 있다. 더 더욱 상세한 권한이 사용자1이 자원 12345으로부터 언제라도 읽을 수 있지만, 오전 9:00 내지 9:30의 시간에만 자원 12345에 쓸 수 있음을 특정할 수 있다. 권한이 또한 자원의 클래스 또는 모음과 연관되어, 예를 들어, 사용자1이 데이터 저장 장치의 모음을 액세스할 수 있고, 이들 중 하나가 자원 12345일 수 있다. 액세스 제어 정책이 정책 관리 서비스에 의해 정책 문서로서, 데이터베이스 내 레코드로서, 액세스 제어 리스트(ACL)로서, 또는 그 밖의 다른 방식으로 유지될 수 있다. 서비스(가령, 서비스(208))가 정책 관리 서비스에 추가로 또는 이를 대신하여 자신의 고유의 정책을 유지할 수 있다.
정책은 주체(202), 요청의 이행의 일부로서 액세스될 자원, 주체(202)가 구성원인 그룹, 주체(202)가 맡은 역할과 연관되는 방식으로 및/또는 그 밖의 다른 방식으로 요청에 적용될 수 있다. 요청에 적용 가능한 정책을 획득하기 위해, 인증 서비스(216)는 앞서 도 1과 관련하여 언급된 정책 관리 서비스일 수 있는 정책 관리 서비스(220)에 의해 관리되는 정책 레포지토리(218)로 질의를 전송할 수 있다. 질의는 요청에 적용 가능한 정책의 세트를 결정하기에 충분한 정보를 포함하는 요청일 수 있다. 질의는, 예를 들어, 요청의 카피 및/또는 요청 내 정보, 가령, 주체, 자원, 및/또는 액션(요청의 이행의 일부로서 수행될 동작)을 식별하는 정보를 적어도 부분적으로 기초로 하는 파라미터를 포함할 수 있다. 데이터베이스 또는 그 밖의 다른 시스템일 수 있는 정책 레포지토리가 요청에 적용 가능한 임의의 정책을 제공함으로써 질의를 처리할 수 있다. (가령, 디지털 서명이 검증될 수 없기 때문에) 요청의 인증이 성공적이지 않은 경우, 요청에 적용 가능한 정책이 획득되지 않을 수 있다.
요청에 적용 가능한 임의의 정책을 획득하면, 인증 서비스(216)는 인증 응답을 제공할 수 있고 적용 가능한 경우(가령, 긍정적인 인증 응답이 있을 때), 획득된 정책이 서비스 프론트엔드(210)로 되돌아간다. 인증 응답은 응답이 성공적으로 인증되었는지 여부를 가리킬 수 있다. 그 후 서비스 프론트엔드(210)가 서비스(208)로의 액세스에 대한 요청의 이행이 인가 모듈(212)을 이용해 획득된 정책에 부합할 것인지 여부를 체크할 수 있다.
인가 모듈(212)은 정책 내 하나 이상의 권한에 요청을 비교하여 서비스가 요청을 만족시키도록 인가되었는지 여부(즉, 요청의 이행이 인가되었는지 여부)를 결정하도록 동작 가능한 서비스 프론트엔드 상에서 실행되는 프로세스일 수 있다. 예를 들어, 인가 모듈은 요청과 연관된 API 콜을, 정책에 의해 특정된 허가된 API 콜에 비교하여, 요청이 허용되는지 여부를 결정할 수 있다. 인가 모듈(212)이 요청을 정책에 의해 특정된 권한에 매칭할 수 없는 경우, 인가 모듈(212)은 하나 이상의 디폴트 액션, 가령, 서비스 프론트엔드가 요청을 거부하게 하는 메시지를 서비스 프론트엔드로 제공하는 액션, 및 거부된 요청이 정책 관리 서비스(220)에 로그되게 하는 액션을 실행할 수 있다. 인가가 요청을 정책에 의해 특정된 하나 이상의 권한에 매칭하는 경우, 인가 모듈(212)은 (정책에 의해 정의된) 적어도 제한적인 응답을 선택함으로써 그리고 선택된 응답을 기초로 서비스 프론트엔드에게 요청의 이행이 인가되었는지 여부(즉, 적용 가능한 정책에 부합하는지 여부)를 알림으로써, 이를 해결할 수 있다. 또한 인가 모듈(212)은 가장 제한적인 응답을 선택하거나 그 밖의 다른 이러한 응답을 선택하고 선택된 응답을 기초로 요청의 이행이 인가되었는지 여부를 서비스 프론트엔드에게 알릴 수 있다. 도 2는 인가 모듈(212)을 서비스 프론트엔드(210)의 구성요소로서 보여주지만, 일부 실시예에서, 인가 모듈(212)은 컴퓨팅 자원 서비스 제공자(206)에 의해 제공되는 개별 서비스이고 프론트엔드 서비스는 네트워크를 통해 인가 모듈(212)과 통신할 수 있다.
하나의 실시예에서, 서비스 백엔드(214)는 하드웨어 보안 모듈(222)의 군 또는 그 밖의 다른 보안 모듈, 가령, 앞서 기재된 바를 포함한다. 하드웨어 보안 모듈에 의한 암호화 작업의 수행을 요구하는 서비스 프론트엔드(210)에 의해 수신된 요청을 처리하기 위해, 서비스 프론트엔드(210)는 수행될 동작을 특정하는 요청, 암호화 작업을 수행하는 데 사용될 암호 키, 및 적용 가능한 경우, 암호화 작업이 수행되어야 하는 데이터(가령, 평문 또는 암호문)를 하드웨어 보안 모듈로 전송할 수 있다. 프론트엔드(210)는 동작을 수행하도록 하드웨어 보안 모듈을 선택하거나 또 다른 구성요소(가령, 로드 밸런서)가 선택을 할 수 있다. 암호화 작업의 수행의 결과가 동작을 수행한 하드웨어 보안 모듈로부터 서비스 프론트엔드(210)로 제공되어, 각자의 요청에 응답하여 결과가 제공될 수 있다.
하나의 실시예에서, 컴퓨팅 자원 서비스 제공자(206)는 데이터 저장 서비스가 데이터 저장 동작(가령, 데이터 객체의 저장 및 불러오기)을 수행하게 하도록 API를 제공하는 컴퓨터 시스템일 수 있는 데이터 저장 서비스(206)를 포함한다. 서비스 프론트엔드(210)는 하드웨어 보안 모듈(222) 내에 유지되는 도메인 키에 의해 암호화되는 암호 키(가령, 호스팅된 고객 키)를 저장하기 위해 데이터 저장 서비스와 통신할 수 있다. 예를 들어, 프론트엔드(210)에 의해 수신되는 요청이 고객 키의 사용을 필요로 할 때, 프론트엔드(210)는 (도메인 키 하에서 암호화된) 고객 키를 불러오기 위한 요청을 데이터 저장 서비스(224)로 제출할 수 있다. 상기 프론트엔드(210)는 암호화된 고객 키를 수신하고 암호화된 고객 키를 해독 및 암호화 작업의 수행을 위해 하드웨어 보안 모듈로 제공할 수 있다. 마찬가지로, 하드웨어 보안 모듈이 새 고객 키를 생성할 때(또는 고객 키가 암호화될 때의 도메인 키를 교대시킬 때), 하드웨어 보안 모듈은 도메인 키를 이용해 고객 키를 암호화하고 암호화된 고객 키를 프론트엔드(210)로 제공할 수 있으며, 그 후 상기 프론트엔드는 암호화된 고객 키와 함께 요청을 데이터 저장 서비스(224)로 전송하여, 여기서 영구 저장되게 할 수 있다.
도 2가 컴퓨팅 자원 서비스 제공자의 분산 시스템의 특정 구성을 보여주지만, 그 밖의 다른 구성이 또한 본 발명의 범위 내에 있다고 간주 됨이 자명하다. 예를 들어, 분산 시스템의 서로 다른 구성요소(가령, 서비스 프론트엔드(210))에 의해 인증 및 인가 결정이 이뤄질 수 있다. 또 다른 예를 들면, 하나 이상의 하드웨어 보안 모듈 또는 암호화 재료의 하드웨어 보호를 제공하는 그 밖의 다른 장치가 컴퓨팅 자원 서비스 제공자(206)와 상이한 개체에 의해, 가령, 또 다른 서비스 제공자, 또는 고객 자체에 의해 호스팅될 수 있다. 이러한 하드웨어 보안 모듈이 암호화 작업을 수행하게 하기 위해, 서비스 백엔드(214) 내 서버가 네트워크를 통해(가령, 인터넷 또는 하드웨어 보안 모듈이 서비스 백엔드(214)와 동일한 데이터 센터에 호스팅될 때 내부 네트워크를 통해) 메시지를 송신할 수 있다. 이러한 메시지가 인증되어, 하드웨어 보안 모듈을 호스팅하는 개체가 인가된 요청과 비인가된 요청을 구별하여 암호화 작업을 수행할 수 있다. 또 다른 예시에서, 하드웨어 보안 모듈(222)이 동일한 컴퓨팅 자원 서비스 제공자(206)의 개별 서비스에 의해 호스팅된다. 예를 들어, 서비스(208)는 암호화 작업의 결과를 이용하는 서비스(가령, 가상 데이터 저장 장치 또는 그 밖의 다른 서비스)를 제공할 수 있다. 이러한 예시에서, 서비스들 간(inter-service) API 콜이 하나의 서비스에서 또 다른 서비스로 전송되어 타 서비스가 하드웨어 보안 모듈을 이용해 암호화 작업을 수행할 수 있게 할 수 있다. 이러한 콜은, 예를 들어, 고객으로부터의 요청을 이행하도록 수행된 프로비저닝 또는 그 밖의 다른 작업흐름에 따라 하나의 서비스에 의해 이뤄질 수 있다.
도 3은 하나의 실시예에 따라 내보내기 도메인 키의 세트를 유지하는 데 사용될 수 있는 데이터 구조(300)의 예시를 도시한다. 도 3의 예시에서, 데이터 구조(300)는 테이블이지만, 그 밖의 다른 데이터 구조가 본 발명의 범위 내에 있다고 간주된다. 도 3에 도시된 바와 같이, 데이터 구조(300)는 3개의 열을 포함하며, 각각의 열은 각자의 내보내기 도메인 키에 대한 서로 다른 정보에 대응한다. 제1 열(302)은 내보내기 도메인 키의 식별자를 기록하는 데 사용된다. 식별자는 내보내기 도메인 키의 참조로서 역할하여, 암호 키를 암호화하는 데 사용되는 내보내기 도메인 키가 추적될 수 있다. 예를 들어, 키 내보내기 토큰이 키 내보내기 토큰의 내부에 암호 키를 암호화하는 데 사용되는 내보내기 도메인 키의 식별자를 포함할 수 있다. 이러한 방식으로 다른 때에 키 내보내기 토큰이 제공될 때, 적절한 내보내기 도메인 키가 식별될 수 있고(가령, 복수의 내보내기 도메인 키로부터 선택될 수 있고) 액세스되어 키 내보내기 토큰 내 암호화된 암호 키를 해독할 수 있다. 이러한 특정 예시에서, 내보내기 도메인 키의 식별자가 시퀀스 번호이다. 그러나 그 밖의 다른 유형의 식별자가 사용될 수 있음이 자명하다.
데이터 구조(300)의 제2 열(304)은 각자의 내보내기 도메인 키의 만기에 대응한다. 앞서 언급된 바와 같이, 키 내보내기 토큰이 특정 시간 동안 사용 가능하며 그 전에 내보내기 도메인 키가 파괴되기 때문에 키 내보내기 토큰이 키 내보내기 토큰 내 암호화된 고객 키를 액세스하기 위한 수단으로서 사용될 수 없도록, 암호화 서비스는, 임의의 특정 때에, 각각 서로 다른 만기를 갖는 복수의 내보내기 도메인 키를 액세스할 수 있다. 도 3의 예시에서, 데이터 구조(300)의 제2 열(304) 내 각각의 항목이 24시간만큼 차이 나는 만기를 가진다. 이러한 방식으로, 데이터 구조(300)는 24시간만큼 차이 나는 내보내기 도메인 키에 대한 만기를 기록한다. 그러나 24시간만큼 차이 나는 만기가 설명되지만 그 밖의 다른 만기가 사용될 수 있다. 예를 들어, 연속적인 만기가 24시간 미만 또는 24시간 초과만큼 차이 날 수 있으며, 연속적인 만기들 간 차이가 반드시 균일한 것은 아니다.
각자의 내보내기 도메인 키의 각각의 만기가, 만기와 연관되어 지정된 때, 상기 도메인 키를 액세스한 적 있는 모든 보안 모듈에 의한 내보내기 도메인 키가 액세스 불가능(가령, 영구적으로 액세스 불가능)해지도록 하는 자동화 프로세스의 적어도 하나의 인스턴스에 의해 강제될 수 있다. 예를 들어, 보안 모듈의 군의 각각의 보안 모듈이 이들의 만기가 발생하면 도메인 키를 비가역적으로 삭제하는 자동화된 프로세스의 인스턴스를 실행할 수 있다. 보안 모듈은 도메인 키로의 액세스가 제공되기 전에 자동화된 프로세스를 위한 코드의 무결성에 대한 원격 증명(remote attestation) 또는 그 밖의 다른 암호 증거(cryptographic proof)가 독립적으로(가령, 또 다른 보안 모듈 또는 그 밖의 다른 컴퓨팅 장치에 의해) 검증되어야 하도록 구성될 수 있다. 또한 보안 모듈은 변경의 결과로서 보안 모듈이 도메인 키로의 액세스를 소실하게 하는 변경 금지 메커니즘으로 구성될 수 있고, (가령, 도메인 키의 저장이 휘발성 메모리로 한정되기 때문에) 모듈로의 전력을 제거함으로써 보안 모듈이 도메인 키로의 액세스를 소실하도록 구성될 수 있다. 만기의 강제가 또 다른 장치에 의해 실행되는 자동화된 프로세스에 의해 강제될 수 있다. 이러한 예시에서, 자동화된 프로세스를 실행하는 장치는 도메인 키의 만기에 따라 보안 모듈로 도메인 키를 파괴하기 위한 명령어를 (가령, 파괴될 특정 도메인 키를 식별하는 명령어와 함께) 전송할 수 있다. 이러한 자동화된 프로세스는 보안 모듈이 도메인 키를 파괴하기 위한 명령어를 이행하지 않는 경우의 통지의 전송 또는 또 다른 동작을 포함할 수 있다.
데이터 구조(300)의 제3 열(306)은 동일한 행의 각자의 내보내기 도메인 키 식별자 및 만기에 대응하는 내보내기 도메인 키에 대한 것이다. 예를 들어, 데이터 구조(300)의 제1 데이터-포함 행에서, 제3 열(306) 내 한 항목에 저장된 내보내기 도메인 키가 31415926의 내보내기 도메인 키 식별자를 갖고, 2015년 03월 24일, 오전 12:00의 만기를 가진다.
데이터 구조, 가령, 데이터 구조(300)를 이용함으로써, 고개에 의해 특정되거나 그 밖의 다른 방식으로 특정된 키 내보내기 토큰의 수명 동안 허용되도록 내보내기 도메인 키가 선택될 수 있다. 예를 들어, 고객은 30일의 수명을 갖는 암호 키를 요청할 수 있다. 데이터 구조(300)는 30일의 수명 동안 허용될 만기를 갖는 내보내기 도메인 키를 찾는 데 사용될 수 있다. 내보내기 도메인 키는 요청된 수명 이하의 최고 수명을 갖는 내보내기 도메인 키, 또는 대안 실시예에서, 요청된 수명 이상의 최단 수명을 갖는 내보내기 도메인 키로 선택될 수 있다. 일부 실시예에서, 내보내기 도메인 키가 요청된 수명 이하의 최고 수명을 갖는 내보내기 도메인 키로 선택되는지 또는 요청된 수명 이상의 최단 수명을 갖는 내보내기 도메인 키로 선택되는지 여부가 키 내보내기 토큰에 대한 요청의 파라미터에서 선택 가능할 수 있는 설정 가능한 세팅이다.
도 3에 도시된 데이터 구조(300)가 설명 목적으로 제공되며 다양한 것이 본 발명의 범위 내에 있다고 간주됨이 자명할 것이다. 예를 들어, 도 3은 특정 순서로 저장된 특정 유형의 정보를 보여준다. 서로 다른 유형의 정보 및 서로 다른 순서가 본 발명의 범위 내에 있다고 간주된다. 또 다른 예를 들면, 도 3은 각각의 내보내기 도메인 키에 대한 만기 값 및 내보내기 도메인 키 식별자의 저장을 도시한다. 대안 실시예에서, 내보내기 도메인 키의 만기가 내보내기 도메인 키 식별자로서 사용될 수 있고 따라서 내보내기 도메인 키 식별자에 대한 하나의 열이 생략될 수 있다. 그 밖의 다른 변형이 또한 본 발명의 범위 내에 있다고 간주된다.
도 4는 다양한 실시예에 따라 예시적 키 내보내기 토큰(402)을 보여주는 다이어그램(400)을 도시한다. 도 4에 도시된 바와 같이, 키 내보내기 토큰(402)은 다양한 구성요소를 포함한다. 예를 들어, 하나의 실시예에서, 키 내보내기 토큰(402)은 고객 키에 대응하고 고객 키 보기를 식별하기 위해 키 내보내기 토큰(402)은 고객 키에 대한 식별자 세트를 포함할 수 있다. 이 예시에서, 키 내보내기 토큰(402)은 내부 고객 키 식별자(404) 및 외부 키 식별자(406)를 포함한다. 내부 고객 식별자(404)는 고객 키에 대해 고객에 의해 사용되는 식별자일 수 있다. 마찬가지로, 외부 고객 키 식별자(406)는 키 내보내기 토큰(402)을 생성한 서비스 제공자에 의해 사용되는 고객 키에 대한 식별자로서 역할 할 수 있다. 예시적 실시예에서, 고객으로부터 서비스 제공자로의 고객 키 요청이, 파라미터로서, 자신 고유의 컴퓨터 시스템에 내부적으로 고객 키에 대해 고객이 사용할 내부 고객 키 식별자(404)를 포함할 수 있다. 외부 고객 키 식별자(406)는 서비스 제공자에 의해 사용되도록 서비스 제공자에 의해 생성되어, 가령, 정책 및 그 밖의 다른 액세스 제어 수단의 고객 키와의 연계를 가능하게 할 수 있다. 그러나 고객이 내부 고객 키 식별자에 만족하지 않을 때 또는 이러한 식별자에 대한 지지가 제공되지 않을 때 키 내보내기 토큰(402)은 내부 고객 키 식별자(404)를 갖지 않을 수 있다. 일부 예시에서, 외부 고객 키 식별자(406)는 내부 고객 키 식별자로서 역할 할 수 있고 이러한 예시에서 외부 고객 키 식별자(406)는 반복될 수 있거나 키 내보내기 토큰(402)의 단일 구성요소가 외부 고객 키 식별자(406)일 수 있다.
또한, 도 4에 도시된 바와 같이, 하나의 실시예에서 키 내보내기 토큰(402)은 내보내기 도메인 키 하에서 암호화된 고객 키의 암호화된 카피(408)를 포함한다. 따라서 키 내보내기 토큰(402)에 대해 고객 키를 암호화하는 데 사용되는 특정 내보내기 도메인 키의 식별을 가능하게 하기 위해, 키 내보내기 토큰(402)은 내보내기 도메인 키 식별자(410)를 포함할 수 있다. 이러한 방식으로, 서비스 제공자가 키 내보내기 토큰(402)을 수신할 때, 서비스 제공자는 외부 도메인 키 식별자(410)를 이용하여, 적절한 내보내기 도메인 키를 획득하여 키 내보내기 토큰(402) 내 고객 키의 암호화된 카피(408)를 해독할 수 있다.
또한 그 밖의 다른 정보가 키 내보내기 토큰(402)에 포함될 수 있다. 예를 들어, 이러한 정보가 도면에 도시되어 있지 않더라도 비-초기화 벡터 또는 고객 키의 암호화를 위해 사용되는 그 밖의 다른 정보가 키 내보내기 토큰(402)에 포함될 수 있다. 또 다른 예를 들면, 키 내보내기 토큰(402)은 키 내보내기 토큰(402)에 포함되는 정보의 디지털 서명을 포함할 수 있다. 디지털 서명은 키 내보내기 토큰(402)의 무결성의 검증을 가능하게 할 수 있다. 디지털 서명이 사용되어 예를 들어 외부 고객 키 식별자(406) 및 내보내기 도메인 키 식별자(410) 및/또는 그 밖의 다른 정보, 가령, 고객 키의 암호화된 카피(408)가 무심코 또는 악의적으로 수정된 적 없음을 검증할 수 있다. 디지털 서명은 서비스 제공자에 의해 액세스 가능한 암호 키, 가령, 서비스 제공자에 의해 비밀로 유지되는 사설 암호 키 또는 서비스 제공자에 의해 비밀로 유지되는 대칭 암호 키를 이용해 생성될 수 있다. 일반적으로, 키 내보내기 토큰(402) 중 일부 또는 전부의 무결성을 검증하기 위해 서비스 제공자에 의해 이용 가능한 임의의 인증 정보가 사용될 수 있다.
앞서 언급된 바와 같이, 암호화 서비스에 의해 고객은 키 내보내기 토큰을 요청할 수 있다. 따라서 도 5는 하나의 실시예에 따라 키 내보내기 토큰에 대한 요청을 처리하기 위한 프로세스(500)의 예시를 보여준다. 상기 프로세스(500)는 임의의 적합한 시스템, 가령, 앞서 언급된 암호화 서비스에 의해 수행될 수 있다. 프로세스(500)의 수행에 포함되는 다양한 동작의 수행이, 예컨대 이하에서 더 상세히 기재된 바와 같이, 암호화 서비스의 서로 다른 구성요소에 의해 발생할 수 있다. 하나의 실시예에서, 프로세스(500)는 키 내보내기 토큰에 대한 요청을 수신하는 것(502)을 포함한다. 상기 요청(502)은 예를 들어, 프로세스(500)를 수행하는 시스템을 갖는 서비스 제공자의 고객의 컴퓨팅 장치로부터 수신된 웹 서비스 요청일 수 있다. 요청은 암호화 서비스, 가령, 웹 서버의 적합한 구성요소에 의해 수신될 수 있다(502).
수신된(502) 요청을 처리하기 위해, 암호화 서비스의 웹 서버 또는 또 다른 구성요소가 요청이 진본(authentic)인지 여부를 결정할 수 있다(504). 요청이 진본인지 여부의 결정(504)은 다양한 실시예에 따라 다양한 방식으로 수행될 수 있다. 일부 예시에서, 요청은 디지털 서명되어, 암호화 방식으로 검증 가능할 수 있다. 따라서 요청이 진본인지 여부를 결정하는 것(504)은 수신된 요청의 디지털 서명을 검증하는 것(502)을 포함할 수 있다. 예를 들어, 고객과 서비스 제공자 간 비밀로서 공유되는 대칭 암호 키를 이용해 생성되는 대칭 디지털 서명이 요청과 함께 제공되거나 그 밖의 다른 방식으로, 가령, 개인 암호 키에 대응하는 디지털 인증서로 특정되는 공개 암호 키에 대응하는 개인 암호 키일 수 있다. 인증 서비스는 디지털 서명, 가령, 도 2와 관련하여 앞서 기재된 것을 검증하는 데 사용될 수 있다. 또 다른 예를 들면, 암호 보호된 통신 세션, 가령, 전송 층 보안(TLS: transport layer security) 세션을 통해 요청이 수신된다(502). 세션의 확립이 일부 유형의 인증을 필요로 했을 수 있으며, 결과적으로 암호화 방식으로 보호된 통신 세션을 통해 요청이 수신(502)됐다는 사실이 요청의 진본성을 가리킨다. 일반적으로, 인증 정보를 이용하여 요청과 연관된 개체에 의해 요청이 제출됐음을 검증함으로써 요청의 진본성의 검증이 수행될 수 있다.
요청이 진본이 아니라고 결정(504)되는 경우(즉, 요청의 진본성을 검증할 수 없는 경우), 프로세스(500)는 요청을 거부(506)하는 것을 포함할 수 있다. 요청은 다양한 실시예에 따라 다양한 방식으로 거부될 수 있다. 일부 예시에서, 예를 들어 거부를 가리키는 요청에 대한 응답이 제공된다. 또 다른 예를 들면, 어떠한 액션도 취해지지 않을 수 있고 요청이 만료되게 될 수 있다. 또 다른 동작이 또한 요청의 거부(506)와 함께 수행될 수 있고 이러한 동작은 프로세스(500)를 수행하는 시스템의 특정 구현예에 따라 달라질 수 있다.
요청이 진본이라고 결정(504)되는 경우, 프로세스(500)는 암호화 서비스 또는 요청의 이행이 인가되는지 여부를 결정(508)하는 그 밖의 다른 구성요소의 웹 서버를 포함할 수 있다. 요청의 이행이 인가되는지 여부를 결정하는 것이 다양한 실시예에 따라 다양한 방식으로 수행될 수 있다. 앞서 언급된 도 2를 참조하여, 요청의 이행이 인가되는지 여부를 결정하는 것(508)이 요청에 적용 가능한 임의의 정책이 요청의 이행을 허용하는지 여부를 검증하는 것을 포함할 수 있다. 일반적으로, 서비스 제공자는 요청의 이행을 제어하는 조건을 유지할 수 있고 요청 이행이 인가되는지 여부의 검증(508)이 이러한 조건이 요청의 이행을 허용하는지 여부를 검증하는 것을 포함할 수 있다.
요청 이행이 인가되지 않는다고 결정(508)된 경우, 프로세스(500)는 가령 앞서 기재된 바와 같이 요청을 거부하는 것(506)을 포함할 수 있다. 예를 들어, 요청을 수신(502)한 웹 서버가 요청이 기원됐다고 특정된 주소로 주소 지정된 메시지를 송신할 수 있다. 요청의 이행이 인가된다고 결정(508)되는 경우, 프로세스(500)를 수행하는 시스템이 요청을 이행하기 위한 동작의 세트를 수행할 수 있다. 이 예시에서, 프로세스(500)는 수신(502)된 요청에서 특정된 수명에 매칭되는 만기를 갖는 내보내기 도메인 키를 선택하는 것(510)을 포함한다. 웹 서버 또는 보안 모듈이 내보내기 도메인 키를 선택할 수 있다. 수명은 예를 들어 요청의 파라미터로서 특정되거나 그 밖의 다른 방식으로 가령 디폴트로서 특정될 수 있다. 프로세스(500)는 또한 고객 키를 생성(512)하는 것을 포함할 수 있다. 프로세스(500)를 수행하는 웹 서버 또는 시스템의 그 밖의 다른 구성요소가 예를 들어, 보안 모듈로 하여금 고객 키를 생성(512)하게 하는 명령을 보안 모듈로 전송할 수 있다. 보안 모듈은 예를 들어 의사랜덤 숫자 생성기(pseudorandom number generator) 또는 그 밖의 다른 수단(가령, 적어도 일부가 비밀로 유지되는 정보에 적용되는 키 유도 함수)을 이용하여, 고객 키를 생성(512)할 수 있다. 도 5는 프로세스(500)의 일부로서 고객 키의 생성(512)을 보여주지만, 고객 키 생성은 프로세스(500)에 의해 비동기식으로 수행될 수 있다. 예를 들어, 고객 키가 사전-생성될 수 있고 사전-생성된 고객 키가 획득될 수 있다. 또 다른 예를 들면, 키 내보내기 토큰에 대한 요청이 키 내보내기 토큰 내에 암호화될 고객 키의 카피를 포함한다.
고객 키가 생성(512)되면, 고객 키를 생성(512)한 보안 모듈이 선택된 내보내기 도메인 키를 이용해 생성된 고객 키를 암호화(514)할 수 있다. 보안 모듈은, 예를 들어, 메모리로부터 선택된 내보내기 도메인 키를 액세스하고 생성된 고객 키 및 선택된 내보내기 도메인 키를 암호화 알고리즘으로 입력할 수 있으며 상기 암호화 알고리즘은 생성된 고객 키의 암호화된 카피를 도출한다. 생성된 고객 키의 암호화된 카피가 획득되면, 프로세스(500)를 수행하는 시스템이 암호화된 고객 키를 갖는 키 내보내기 토큰을 생성(516)할 수 있다.
키 내보내기 토큰이 생성(516)되는 방식이 다양한 실시예에 따라 달라질 수 있다. 일부 예시에서, 고객 키를 생성하고 암호화한 보안 모듈이 키 내보내기 토큰을 추가로 생성(516)할 수 있고 또 다른 예시에서 보안 모듈이 암호화된 고객 키의 카피를 또 다른 서버, 가령, 프로세스(500)를 수행하는 시스템의 웹 서버로 제공하여, 서버가 암호화된 고객 키의 카피를 이용하여 키 내보내기 토큰을 생성(516)할 수 있다. 생성(516)되는 방식에 무관하게, 키 내보내기 토큰이 요청을 수신(502)한 웹 서버로 획득될 수 있고 웹 서버는 요청에 응답하여 생성된 키 내보내기 토큰을 제공(518)할 수 있다.
생성된 키 내보내기 토큰이 제공(518)되면, 또는 키 내보내기 토큰이 생성(516)된 후, 프로세스(500)를 수행하는 시스템이 고객 키로의 액세스를 소실할 수 있다(520). 액세스는 다양한 실시예에 따라 다양한 방식으로, 가령, 서로 다른 데이터, 가령, 제로 랜덤 데이터 또는 비-랜덤 데이터를 갖는 고객 키 중 일부 또는 전부를 저장하는 메모리 위치를 오버라이딩함으로써 또는 프로세스(500)를 수행하는 시스템이 계속 동작할 때 고객 키 중 일부 또는 전부가 저장되는 메모리를 결국 다른 데이터로서 덮어 써지도록 재할당함으로써, 소실될 수 있다. 앞서 언급된 바와 같이, 고객 키가 획득될 수 있는 다른 정보(가령, 키 내보내기 토큰의 임의의 카피)에 대한 액세스가 소실될 수 있다. 이러한 방식으로, 적절한 때에, 서비스 제공자는 고객 키로의 액세스를 갖지 않으며 따라서 서비스 제공자에서의 심각한 보안 침입의 흔치 않은 경우에도 고객 키로의 액세스가 고객에 의해 제어된다. 예를 들어, 고객이 다음 요청으로 또는 그 밖의 다른 방식으로 키 내보내지 토큰을 제공하지 않는 한 서비스 제공자는 고객 키를 액세스할 수 없다.
앞서 언급된 바와 같이, 키 내보내기 토큰 내 암호 키를 이용해 서비스 제공자가 암호화 작업을 수행하게 하기 위한 목적으로, 서비스 제공자의 고객이 키 내보내기 토큰을 다시 서비스 제공자에게 제공할 수 있다. 도 6은 키 내보내기 토큰을 이용해 암호화 작업을 수행하기 위한 요청을 처리하기 위한 프로세스(600)의 예시를 보여준다. 상기 프로세스(600)는 임의의 적합한 시스템에 의해, 가령, 앞서 언급된 암호화 서비스에 의해 수행될 수 있다. 암호화 서비스의 서로 다른 구성요소가 이하에서 더 상세히 나타나는 바와 같이 서로 다른 동작을 수행할 수 있다. 하나의 실시예에서, 프로세스(600)는 키 내보내기 토큰을 이용해 하나 이상의 암호화 작업을 수행하기 위한 요청을 수신(600)하는 것을 포함한다. 요청은 예를 들어 키 내보내기 토큰을 요청의 파라미터로서 포함할 수 있다. 고객으로부터 수신된 모든 요청을 이용하는 경우처럼, 요청은 프로세스(600)를 수행하는 암호화 서비스의 서비스 프론트엔드의 웹 서버에 의해 수신(602)될 수 있다. 앞서 도 5와 관련하여 기재된 바와 같이, 프로세스(600)를 수행하는 시스템은, 가령, 도 2와 관련하여 앞서 기재된 바와 같이 요청이 진본인지 여부를 결정(604)할 수 있다. 요청이 진본이 아니라고 결정(604)되는 경우(즉, 요청의 진본성을 검증할 수 없는 경우), 앞서 기재된 바와 같이 요청이 거부(606)될 수 있다. 그러나 요청이 진본이라고 결정(604)되는 경우, 프로세스(600)는 요청의 이행이 인가되는지 여부를 결정(608)하는 것을 포함할 수 있다. 요청의 이행이 비인가된다고 결정(608)되는 경우 또는 일반적으로 요청이 인가됐다고 결정될 수 없는 경우 프로세스(600)를 수행하는 시스템이 앞서 기재된 바와 같이 요청을 거부(606)할 수 있다.
그러나 요청의 이행이 인가됐다고 결정(608)되는 경우, 프로세스(600)를 수행하는 시스템은 내보내기 도메인 키가 이용 가능한지 여부를 결정(610)할 수 있다. 앞서 언급된 바와 같이, 만기를 갖는 내보내기 도메인 키를 이용해 키 내보내기 토큰에 대해 고객 키가 암호화될 수 있다. 내보내기 도메인 키가 만료될 때, 암호화 서비스는 암호화 서비스 및 일반적으로 서비스 제공자가 내보내기 도메인 키로의 액세스를 소실하게 할 수 있는 동작의 세트를 수행할 수 있다. 따라서 키 내보내기 토큰을 이용해 하나 이상의 암호화 작업을 수행하기 위한 요청이 수신될 때 요청은 키 내보내기의 내부의 고객 키를 암호화하는 데 사용되는 내보내기 도메인 키가 만료됐고 따라서 서비스 제공자가 내보내기 도메인 키로의 액세스를 소실하는지 여부에 따라 이행 가능하거나 이행 가능하지 않을 수 있다. 내보내기 도메인 키가 이용 가능한지 여부의 결정(610)이 다양한 실시예에 따라 다양한 방식으로 수행될 수 있다. 일부 예시에서, 웹 서버가 키 내보내기 토큰 내 내보내기 도메인 키의 식별자를 이용하여 식별자가 활성 내보내기 도메인 키의 리스트 또는 그 밖의 다른 데이터 구조에서 발생하는지 여부를 체크할 수 있다. 이러한 동작은 또한 보안 모듈에 의해 수행될 수 있다.
예를 들어, 내보내기 도메인 키가 만기되었기 때문에 내보내기 도메인 키가 이용 가능하지 않다고 결정(610)되는 경우, 그 결과로 서비스 제공자는 내보내기 도메인 키로의 액세스를 소실한다. 프로세스(600)를 수행하는 시스템이 앞서 기재된 바와 같이 요청을 거부(606)할 수 있다. 그러나 프로세스(600)를 수행하는 시스템 및 특히, 내보내기 도메인 키가 이용 가능한지 여부를 결정(610)하는 시스템의 이 부분이 내보내기 도메인 키가 이용 가능하다고 결정하는 경우, 프로세스(600)를 수행하는 시스템이 키 내보내기 토큰에 식별된 내보내기 도메인 키를 선택(612)할 수 있다. 키 내보내기 토큰을 저장하는 보안 모듈에 의한 요청을 수신(602)한 웹 서버에 의해 또는 그 밖의 다른 방식으로 선택이 발생할 수 있다. 선택(612)이 이뤄지면, 내보내기 도메인 키가 사용되어(614) 고객 키를 해독할 수 있다. 프로세스(600)를 수행하는 시스템의 보안 모듈이 선택된 내보내기 도메인 키를 이용(614)하여 고객 키를 해독할 수 있는 시스템의 구성요소일 수 있다.
선택된 내보내기 도메인 키를 이용(614)하여 고객 키를 해독하는 시스템의 구성요소가 해독된 고객 키를 액세스할 수 있으면, 이 구성요소가 해독된 고객 키를 이용(616)하여 요청된 하나 이상의 암호화 작업을 수행할 수 있다. 예를 들어, 암호화 서비스의 보안 모듈이 해독된 고객 키를 이용하여, 가령, 요청 내에 포함되거나 상기 데이터의 불러오기를 가능하게 하도록 요청 내에서 참조됨으로써, 요청에 포함되거나 특정된 데이터를 암호화 및 해독할 수 있다. 앞서 언급된 바와 같이, 그 밖의 다른 암호화 작업이 암호화 및/또는 해독화를 대신하여 또는 추가로 수행될 수 있다. 예를 들어, 디지털 서명은 디지털 서명이 생성됐다고 알려진 데이터와 함께 요청에 포함되고 하나 이상의 암호화 작업이 디지털 서명을 검증하는 것을 포함할 수 있다. 그 밖의 다른 작업이 디지털 인증서가 신뢰되는지 여부를 결정하는 것 및 디지털 인증서를 이용해 하나 이상의 암호화 작업을 수행하는 것을 포함할 수 있다.
수신(602)된 요청의 이행을 위한 하나 이상의 암호화 작업이 수행(616)되면, 하나 이상의 암호화 작업의 수행의 하나 이상의 결과를 포함하는 요청에 대한 응답이 요청에 응답하여 생성되고 제공(618)될 수 있다. 예를 들어, 보안 모듈은 하나 이상의 암호화 작업의 하나 이상의 결과를 요청을 수신(602)한 프로세스(600)를 수행하는 시스템의 웹 서버에 제공할 수 있다. 응답은 요청 내에서 요청이 기원한 네트워크 도착지라고 식별된 네트워크 도착지(가령, 인터넷 프로토콜(IP) 주소)로 제공될 수 있다.
해독된 고객 키를 이용해 하나 이상의 암호화 작업이 수행되고 해독된 고객 키가 프로세스(600)를 수행하는 시스템에게 더는 필수가 아니면, 시스템이 고객 키로의 액세스를 소실하게 하는 동작들의 세트를 앞서 기재된 바와 같이 수행함으로써, 프로세스(600)를 수행하는 시스템은 고객 키로의 액세스를 소실할 수 있다(620).
앞서 언급된 바와 같이, 암호화 서비스에 의해 사용되는 내보내기 도메인 키가 다양한 때에 회전될 수 있다. 도 7은 내보내기 도메인 키의 세트를 유지하고 내보내기 도메인 키 교대에 대한 규칙을 강제하기 위한 프로세스(700)의 예시를 보여준다. 프로세스(700)는 임의의 적합한 시스템에 의해, 가령, 암호화 서비스 또는 그 밖의 다른 컴퓨터 시스템, 가령, 키 교대 역할을 강제하는 역할을 갖는 암호화 서비스 내 컴퓨터 시스템 내 각각의 보안 모듈에 의해, 수행될 수 있다. 하나의 실시예에서, 프로세스(700)는 내보내기 도메인 키 교대 트리거를 검출(702)하는 것을 포함한다. 내보내기 도메인 키 교대 트리거가 발생이 프로세스(700)의 추가 동작이 수행되게 하는 이벤트일 수 있다. 일부 예시에서, 내보내기 도메인 키 교대 트리거가 클록이 특정 값에 도달하는 것이다. 또 다른 예시에서, 트리거는 또 다른 컴퓨터 시스템으로부터의 명령어의 수신일 수 있다. 그 밖의 다른 트리거가 또한 다양한 실시예에 따라 사용될 수 있다. 예를 들어, 암호화 작업에서 내보내기 도메인 키가 사용된 횟수의 카운트를 카운팅하거나 근사하는 카운터가 카운트가 임계치를 초과할 때의 트리거일 수 있다. 그 밖의 다른 트리거가 또한 본 발명의 범위 내에 있는 것으로 고려된다.
내보내기 도메인 키 교대 트리거를 검출(702)하면, 프로세스(704)를 수행하는 시스템은 만기된 내보내기 도메인 키의 세트를 선택(704)할 수 있다. 데이터 구조, 가령, 도 3과 관련하여 앞서 기재된 데이터 구조 또는 이의 변형이 만기된 내보내기 도메인 키를 식별하는 데 참조될 수 있다. 만기된 내보내기 도메인 키의 세트가 선택(704)되면, 프로세스(700)를 수행하는 시스템이 임의의 만기된 내보내기 도메인 키로의 액세스가 소실되게 할 수 있다(706). 임의의 만기된 내보내기 도메인 키로의 액세스가 소실되게 되는(706) 방식이 다양한 실시예에 따라 달라질 수 있다. 일부 예시에서, 하나 이상의 메모리 위치가 사용되어 만기된 내보내기 도메인 키를 저장할 수 있다. 만기된 내보내기 도메인 키를 저장한 하나 이상의 메모리 위치가 랜덤 또는 비랜덤 데이터로 덮어 써질 수 있다. 또 다른 예에서, 특정 시간(가령, 1시간 또는 1일) 이 흐른 후, 하나 이상의 메모리 위치가 덮어써질 높은 확률이 존재하도록 메모리가 메모리를 이용하는 임의의 다른 프로세스에 의해 덮어 써질 수 있도록 이러한 메모리가 할당-해제(de-allocate)될 수 있다. 일반적으로, 만기된 내보내기 도메인 키로의 액세스가 소실될 수 있는 임의의 방식이 본 명세서의 범위 내에 있다고 간주된다.
도 7에 도시된 바와 같이, 프로세스(700)는 또한 만기된 내보내기 도메인 키의 세트를 교체하기 위해 교체 내보내기 도메인 키의 세트를 생성(708)하는 것을 포함한다. 교체 내보내기 도메인 키가 다양한 실시예에 따라 다양한 방식으로 생성될 수 있다. 일부 예시에서, 의사랜덤 숫자 생성기를 이용해 교체 내보내기 도메인 키가 생성된다. 교체 내보내기 도메인 키를 생성하는 또 다른 방식은 키 유도 함수 및/또는 그 밖의 다른 동작의 사용을 포함한다. 일반적으로, 암호 키가 생성될 수 있는 임의의 방식이 본 명세서의 범위 내에 있다고 간주된다.
범위 교체 내보내기 도메인 키를 위한 식별자가 결정될 수 있다(710). 교체 내보내기 도메인 키에 대해 식별자가 결정되는 방식이 다양한 구현예에 따라 달라질 수 있다. 예를 들어, 일부 예시에서, 내보내기 도메인 키의 식별자가 시퀀스 값이며 식별자가 사용되는 시퀀스 내 다음 번 미사용 시퀀스 값으로서 선택될 수 있다. 예를 들어 시퀀스는 정수 시퀀스일 수 있다. 각각의 교체 내보내기 도메인 키에 대한 만기가 또한 결정(712)될 수 있다. 만기가 다양한 실시예에 따라 다양한 방식으로 결정(712)될 수 있다. 예를 들어, 특정된 시간이 교체 중인 내보내기 도메인 키의 만기에 추가될 수 있다. 특정된 시간이, 예를 들어, 365일일 수 있지만, 그 밖의 다른 시간이 본 발명의 범위 내에 있는 것으로 간주된다.
생성(708)된 임의의 교체 내보내기 도메인 키가 각자의 식별자 및 만기를 가지면, 생성(708)된 교체 내보내기 도메인 키의 세트가 만기의 식별자와 연관되어 저장될 수 있다. 도 3의 예시를 참조할 때, 예를 들어, 생성된 각각의 교체 내보내기 도메인 키에 대해 행이 데이터 구조(300)에 추가될 수 있다. 일반적으로 교체 내보내기 도메인 키가 이들의 식별자 및/또는 만기와 직접 또는 간접 연관되어 저장될 수 있는 임의의 방식이 사용될 수 있다.
앞서 언급된 바와 같이, 본 명세서의 다양한 실시예에서, 암호화 서비스가 서비스 제공자가 액세스를 소실한 키 내보내기 토큰 내에 암호화되는 호스팅된 암호 키 및 고객 키를 이용할 유연성을 고객에게 허용할 수 있다. 도 8은 이러한 암호화 서비스에 의해 수신된 요청을 이행하기 위한 프로세스(800)의 예시를 보여준다. 상기 프로세스(800)는 임의의 적합한 시스템, 가령, 앞서 언급된 암호화 서비스에 의해 수행될 수 있다. 암호화 서비스의 서로 다른 구성요소가 프로세스(800)의 서로 다른 동작을 가령 이하에서 언급된 방식으로 수행할 수 있다. 하나의 실시예에서, 프로세스(800)는 하나 이상의 암호화 작업을 수행하기 위한 요청을 수신(802)하는 것을 포함한다. 요청은 다양한 방식으로, 가령, 앞서 기재된 바와 같이, 수신(802)될 수 있다. 예를 들어, 암호화 서비스 프론트 엔드의 웹 서버에 의해, 가령 앞서 기재된 바와 같이 요청이 수신(802)될 수 있다.
요청을 수신(802)하면, 프로세스는 가령 앞서 언급된 바와 같이 요청이 진본인지 여부를 결정(804)하는 것 및 요청의 이행이 인가되었는지 여부를 결정(808)하는 것을 포함할 수 있다. 요청이 진본이 아니라고 결정(804)되는 경우(즉, 요청의 진본성을 검증할 수 없는 경우), 프로세스(800)는 요청을 거부(806)하는 것을 포함할 수 있다. 마찬가지로, 요청의 이행이 인가되지 않았다고 결정(808)되는 경우, 프로세스(800)는 요청을 거부하는 것을 포함할 수 있다.
프로세스(800)를 수행하는 시스템이 요청이 진본이고 요청의 이행이 인가되었다고 모두 결정하는 경우, 프로세스(800)는 요청이 키 내보내기 토큰을 포함하는지 여부를 결정(810)하는 것을 포함할 수 있다. 앞서 언급된 바와 같이, 키 내보내기 토큰은 하나 이상의 암호화 작업을 수행하기 위한 요청의 파라미터로 선택사항적으로 제공될 수 있다. 따라서 요청이 키 내보내기 토큰을 갖는지 여부를 결정(810)하는 것은 요청을 파싱(parsing)하는 것 및 이러한 키 내보내기 토큰이 요청의 파라미터로서 포함되었는지 여부를 결정하는 것을 포함할 수 있다. 예를 들어, 암호화 서비스의 프론트엔드의 웹 서버가 요청이 키 내보내기 토큰을 포함했는지 여부를 결정할 수 있다.
요청이 키 내보내기 토큰을 갖지 않는다고 결정(810)되는 경우, 프로세스(800)는 요청을 처리하도록 제공자 호스팅된 고객 키를 이용(812)하는 것을 포함할 수 있다. 예를 들어, 프로세스(800)를 수행하는 암호화 서비스의 웹 또는 또 다른 서버가 데이터 저장 위치로부터, 가령, 개별 데이터 저장 서비스로부터 제공자 호스팅된 고객 키의 암호화된 카피를 획득할 수 있다. 획득하면, 서버는 제공자 호스팅된 고객 키의 암호화된 카피를 보안 모듈로 제공할 수 있다. 요청은 프로세스(800)를 수행하는 시스템이 복수의 고객에 대해 호스팅된 복수의 제공자 호스팅된 고객 키로부터 제공자 호스팅된 고객 키를 선택하는 데 사용하는 제공자 호스팅된 고객 키의 식별자를 포함할 수 있다. 가령, 고객이 특정하게 하나의 식별자로 특정될 필요가 없는 디폴트 제공자 호스팅된 고객 키를 가질 때, 제공자 호스팅된 고객 키를 결정하는 또 다른 방식이 또한 사용될 수 있다.
보안 모듈로 제공되면, 보안 모듈은 도메인 키를 이용해 암호화된 카피를 해독하여, 평문 형태로 된 제공자 호스팅된 고객 키를 획득할 수 있다. 그 후 보안 모듈은 제공자 호스팅된 고객 키를 이용해 하나 이상의 암호화 작업을 수행해 요청을 이행할 수 있고 하나 이상의 암호화 작업에 대해 수행되는 결과를 서버로 제공하여 수신(802)된 요청에 대한 응답에 포함되게 할 수 있다. 그 후 보안 모듈은 제공자 호스팅된 고객 키의 암호화된 카피로부터 보안 모듈이 획득한 제공자 호스팅된 고객 키의 평문 카피로의 액세스를 소실할 수 있다.
프로세스(800)를 수행하는 시스템이 요청이 실제로 키 내보내기 토큰을 가진다고 결정(810)하는 경우, 프로세스(800)를 수행하는 시스템은 요청을 처리하는 데 키 내보내기 토큰을 이용(814)할 수 있다. 키 내보내기 토큰은 앞서 도 6과 관련하여 기재된 바와 같이 요청을 처리하는 데 사용될 수 있다.
앞서 언급된 바와 같이, 고객이 키 내보내기 토큰을 요청할 때, 이러한 요청은 요청의 이행의 결과로서 반환된 키 내보내기 토큰 내 암호화된 고객 키에 대한 수명을 특정할 수 있다. 일부 상황에서, 키 내보내기 토큰을 이용하는 서비스 제공자의 고객이 키 내보내기 토큰 내 암호화되는 암호 키의 수명을 연장하기를 원할 수 있다. 예를 들어, 고객은 키 내보내기 토큰 암호 키의 수명의 만기 후 데이터를 액세스할 필요가 있을 수 있다. 도 9는 키 내보내기 토큰 내에 암호화되는 고객 키의 수명을 연장하기 위한 요청을 처리하기 위한 프로세스(900)의 예시를 보여준다. 상기 프로세스(900)는 임의의 적합한 시스템, 가령, 앞서 기재된 바와 같은 암호화 서비스에 의해 수행될 수 있고 암호화 서비스의 서로 다른 구성요소가 이하에서 더 상세히 기재될 바와 같이 프로세스(900)의 서로 다른 동작을 수행할 수 있다.
하나의 실시예에서, 프로세스(900)는 키 내보내기 토큰 내에 암호화되는 고객 키의 수명을 연장하기 위한 요청을 수신하는 것을 포함한다. 요청이 다양한 방식으로, 가령, 도 2와 관련하여 앞서 기재된 바와 같이 암호화 서비스 프론트 엔드의 웹 서버에 의해 수신(902)될 수 있다. 앞서 기재된 그 밖의 다른 요청의 경우처럼, 프로세스(900)는 요청이 진본이었는지 여부를 결정(904)하는 것 및 요청의 이행이 인가되었는지 여부를 결정(908)하는 것을 포함할 수 있다. 요청이 진본이 아니라고 결정(904)된 경우(즉, 요청의 진본성을 검증할 수 없는 경우), 또는 요청의 이행이 인가되지 않는다고 결정된 경우, 앞서 기재된 바와 같이, 프로세스(900)는 요청을 거부(906)하는 것을 포함할 수 있다.
도 9에 도시된 바와 같이, 프로세스(900)를 수행하는 시스템이 요청이 진본임을 결정(904)하고 또한 요청의 이행이 인가되었는지를 결정(908)한 경우, 프로세스(900)는 내보내기 도메인 키가 이용 가능한지 여부를 결정(910)하는 것을 포함할 수 있다. 예를 들어, 키 내보내기 토큰 내 암호화된 암호 키의 만기 전에 요청이 수신되는 경우, 내보내기 도메인 키가 이용 가능할 수 있다. 마찬가지로, 키 내보내기 토큰 내 암호화된 고객 키의 만기 후에 요청이 수신(902)되는 경우, 내보내기 도메인 키가 이용 가능하지 않을 수 있다. 내보내기 도메인 키가 이용 가능한지 여부를 결정(910)하는 것이 서로 다른 구현예에 따라 서로 다른 구성요소에 의해 수행될 수 있다. 일부 실시예에서, 예를 들어, 결정(910)은 암호화 서비스의 웹 또는 그 밖의 다른 서버에 의해 이뤄지지만, 또 다른 실시예에서 결정(910)은 보안 모듈에 의해 이뤄진다.
프로세스(900)를 수행하는 시스템이 내보내기 도메인 키가 이용 가능하지 않다고 결정(910)하는 경우, 프로세스(900)는 앞서 기재된 바와 같이 요청을 거부(906)하는 것을 포함할 수 있다. 그러나 내보내기 도메인 키가 이용 가능하다고 결정(910)된 경우, 내보내기 도메인 키는 키 내보내기 토큰 내에서 식별된 내보내기 도메인 키로서 선택(912)될 수 있다. 앞서 도 3과 관련하여 기재된 데이터 구조가 키 내보내기 토큰 내에 식별된 내보내기 도메인 키를 선택(912)하는 데 사용될 수 있다. 그 후 키 내보내기 토큰은 고객 키를 해독하는 데 사용(914)될 수 있다.
앞서 언급된 바와 같이, 키 내보내기 토큰은 인가된 보안 모듈의 내부에서만 이용 가능할 수 있고, 따라서 내보내기 도메인 키의 선택(912) 및 키 내보내기 토큰 내 고객 키의 해독화가 보안 모듈에 의해 수행될 수 있다. 수신(902)된 요청 내에 특정된 요청 수명과 매칭되는 내보내기 도메인 키가 선택(916)될 수 있다. 선택(916)은 도 3과 관련하여 앞서 기재된 바와 같이 데이터 구조를 참조하는 보안 모듈에 의해 이뤄질 수 있다. 요청된 수명과 매칭되는 내보내기 도메인 키를 선택(916)하는 보안 모듈이 선택된 내보내기 도메인 키를 이용(918)해 고객 키를 암호화할 수 있다.
선택(916)된 내보내기 도메인 키 하에서 암호화된 고객 키가 획득되면, 프로세스(900)는 암호화된 고객 키와 함께 키 내보내기 토큰을 생성(920)하는 것을 포함할 수 있다. 고객 키를 암호화한 보안 모듈에 의해 또는 서버에 의해 키 내보내기 토큰의 생성이 발생할 수 있다. 예를 들어, 일부 구현예에서, 키 내보내기 토큰은 인가된 보안 모듈 군 외부에서 액세스 불가능한 암호 키를 이용해 보안 모듈에 의해 디지털 서명된다. 따라서 보안 모듈은 키 내보내기 토큰을 생성(920)할 수 있다. 보안 모듈이 키 내보내기 토큰을 생성(920)한 경우, 보안 모듈은 프로세스(900)를 수행하는 암호화 서비스의 프론트 엔드의 웹 서버로 키 내보내기 토큰을 제공할 수 있다. 프론트 엔드의 웹 서버가 키 내보내기 토큰을 획득하는 방식과 무관하게, 웹 서버는 요청에 응답하여 생성된 키 내보내기 토큰을 제공(922)할 수 있다. 본 명세서에 기재된 그 밖의 다른 프로세스에서처럼, 암호화 작업의 수행을 위해 고객 키가 더는 요구되지 않는 후, 프로세스(900)는 앞서 기재된 바와 같이 고객 키로의 액세스를 소실(924)하는 것을 포함할 수 있다.
일부 예시에서, 서비스 제공자의 고객이 키 내보내기 토큰을 이용해 자신의 고객 키로의 제한된 액세스를 서비스 제공자에게 허용할 수 있다. 예를 들어, 고객은 서비스 제공자를 더 신뢰하기 시작하거나 및/또는 고객이 자신의 컴퓨팅 자원을 유지관리하는 부담을 낮추기 위해, 서비스 제공자에 의해 수행되는 추가 서비스를 갖기를 원할 수 있다. 도 10은 내보내진 고객 키를 호스팅된 고객 키로 변환하기 위한 요청을 처리하기 위한 프로세스(1000)의 예시를 도시한다. 프로세스(1000)는 임의의 적합한 시스템에 의해, 가령, 앞서 기재된 암호화 서비스에 의해 수행될 수 있으며 암호화 서비스의 서로 다른 구성요소가 프로세스(1000)의 서로 다른 동작을 수행할 수 있다. 하나의 실시예에서, 프로세스(1000)는 내보내진 고객 키를 호스팅된 고객 키로 변환하기 위한 요청을 수신(1002)하는 것을 포함한다. 앞서 기재된 바와 같이 암호화 서비스의 프론트 엔드의 웹 서버에 의해 요청은 수신(1002)될 수 있다. 상기 요청은 예를 들어 키 내보내기 토큰을 수신(1002)된 요청의 파라미터로서 포함할 수 있다. 키 내보내기 토큰을 포함하는 다양한 동작을 수행하기 위한 요청을 포함하는 앞서 기재된 그 밖의 다른 프로세스에서처럼, 프로세스(1000)는 요청이 진본인지 여부를 결정(1004)하는 것, 요청의 이행이 인가되었는지 여부를 결정(1008)하는 것, 및 앞서 기재된 바와 같이 적합한 내보내기 도메인 키가 이용 가능한지 여부를 결정(1010)하는 것을 포함할 수 있다.
적합한 내보내기 도메인 키는 요청으로 수신된 키 내보내기 토큰으로부터 고객 키의 평문 카피를 획득하는 데 사용될 수 있는 내보내기 도메인 키일 수 있다. 요청이 진본이 아니라고 결정된 경우(즉, 요청의 진본성을 검증할 수 없는 경우), 요청의 이행이 인가되지 않았다고 결정된 경우, 또는 적합한 내보내기 도메인 키가 이용 가능하지 않다고 결정된 경우, 프로세스(1000)는 요청을 거부(1006)하는 것을 포함할 수 있다. 그러나 요청이 진본이라고 결정(1004)된 경우, 요청의 이행이 인가됐다고 결정(1008)된 경우, 및 적합한 내보내기 도메인 키가 이용 가능하다고 결정(1010)된 경우, 프로세스(1000)를 수행하는 시스템이 요청으로 수신된 키 내보내기 토큰 내 식별되는 내보내기 도메인 키를 선택(1012)할 수 있다.
앞서 언급된 바와 같이, 내보내기 도메인 키의 선택은 보안 모듈에 의해 또는 프로세스(1000)를 수행하는 암호화 서비스의 웹 또는 그 밖의 다른 서비스에 의해 수행될 수 있다. 프로세스(1000)를 수행하는 암호화 서비스의 보안 모듈은 고객 키를 해독하는 데 키 내보내기 토큰을 이용(1014)할 수 있다. 그 후 보안 모듈은 보안 모듈이 호스팅된 고객 키에 대해 사용하도록 구성된 암호 키, 가령, 적어도 일부 내보내기 도메인 키보다 더 짧은 교대 스케줄을 갖는 암호 키일 수 있는 도메인 키를 선택(1016)할 수 있다. 그 후 보안 모듈은 고객 키를 암호화하는 데 도메인 키를 이용(1018)할 수 있다. 암호화 서비스의 보안 모듈 또는 웹 또는 그 밖의 다른 서버가 암호화된 고객 키를 갖는 키 토큰을 생성(1020)할 수 있다. 키 토큰은 도 4와 관련하여 앞서 기재된 키 내보내기 토큰으로 구조화될 수 있다. 일부 구현예에서, 키 토큰은 내부 고객 식별자(404)가 갖지 않을 수 있음을 제외하고, 키 토큰은 도 4와 관련하여 앞서 기재된 키 내보내기 토큰(402)으로서 구조화되지만, 일부 구현예가 호스팅된 고객 키에 대한 내부 고객 키 식별자의 사용을 허용한다.
보안 모듈이 키 토큰을 생성(1020)한 후, 보안 모듈은 요청을 수신(1002)한 암호화 서비스의 웹 서버로 키 토큰을 제공함으로써, 웹 서버가 생성(1020)된 키 토큰을 저장(1022)할 수 있다. 일부 예시에서, 웹 서버는 요청을 데이터 저장 서비스로 송신함으로써, 컴퓨팅 자원, 가령, 데이터 저장 서비스의 데이터 저장 장치를 이용해 데이터 저장 서비스가 키 토큰을 저장할 수 있다. 일반적으로, 키 토큰은 프로세스(1000)를 수행하는 암호화 서비스를 갖는 서비스 제공자에 의해 하드웨어에 저장되거나 및/또는 상기 서비스 제공자에 의해 제어될 수 있는 임의의 방식이 본 발명의 범위 내에 있는 것으로 간주된다. 일부 실시예에서 보안 모듈은 데이터 저장 서비스 자체로 요청을 전송하고 이러한 저장의 통지를 웹 서버로 제공하여 요청이 이행됐음을 가리키는 요청에 대한 응답을 제공할 수 있다. 또한 일부 대안 실시예에서, 보안 모듈은 키 토큰을 생성하지 않고 키 토큰을 보안 모듈의 외부에서 액세스 불가능한 자신의 고유 로컬 메모리에 저장할 수 있다. 보안 모듈들 간 안전한 전송이 수행되어, 복수의 보안 모듈이 이러한 대안 실시예에서, 고객 키를 액세스할 수 있다.
일부 예시에서, 서비스 제공자의 고객은 다양한 이유로 자신의 호스팅된 고객 키를 내보내진 고객 키로 변환하기를 원할 수 있다. 따라서 도 11은 요청을 처리하여 호스팅된 고객 키를 내보내진 고객 키로 변환하기 위한 프로세스(1100)의 예시를 보여준다. 프로세스(1100)는 임의의 적합한 시스템, 가령, 앞서 기재된 바와 같이 암호화 서비스에 의해 수행될 수 있다. 하나의 실시예에서, 프로세스(1100)는 요청을 수신(1102)하여 호스팅된 고객 키를 내보내진 고객 키로 변환할 수 있다. 요청은 프로세스(1100)를 수행하는 암호화 서비스의 프론트 엔드의 웹 서버에 의해 수신(1102)될 수 있다. 요청은 호스팅된 고객 키를 서비스 제공자에 의해 호스팅된 타 호스팅된 고객 키와 구별할 수 없는 호스팅된 고객 키의 식별자를 파라미터로서 포함할 수 있다. 본 명세서에 기재된 그 밖의 다른 프로세스와 같이, 프로세스(1100)는 요청이 진본인지 여부를 결정(1104)하는 것, 및 요청의 이행이 인가되었는지 여부를 결정(1108)하는 것을 포함할 수 있다. 요청이 진본이라고 결정(1104)되지 않는 경우 또는 요청의 이행이 인가되지 않는다고 결정(1108)되는 경우, 프로세스(1100)는 요청을 거부(1106)하는 것을 포함할 수 있다.
그러나 요청이 진본이라고 결정(1104)되고 요청의 이행이 인가되었다고 결정(1108)된 경우, 프로세스(1100)는 키 토큰이 수신(1102)된 요청 내에 특정된 호스팅된 고객 키의 암호화된 카피를 포함하는 데이터 저장소로부터 키 토큰을 획득(1110)하는 것을 포함할 수 있다. 고객 키의 평문 카피로의 액세스를 포함하지 않는 본 명세서에 기재된 여러 동작에서처럼, 키 토큰은 여러 다른 실시예에 따라 서로 다른 구성요소에 의해, 가령, 프로세스(1100)를 수행하는 암호화 서비스의 웹 또는 그 밖의 다른 서버에 의해, 또는 이의 보안 모듈에 의해, 획득(1110)될 수 있다.
키 토큰이 데이터 저장소로부터 획득(1110)되는 방식에 무관하게, 키 토큰이 프로세스(1100)를 수행하는 암호화 서비스의 보안 모듈에 의해 획득될 수 있다. 따라서 도 11에 도시된 바와 같이, 보안 모듈은 도메인 키를 이용(1112)해 고객 키를 해독할 수 있다. 보안 모듈은 수신(1102)된 요청에서 파라미터로서 특정되거나 묵시적으로 (가령, 디폴트로서) 특정된 수명과 매칭되는 내보내기 도메인 키를 선택(1114)하고 선택된 내보내기 도메인 키를 이용(1116)하여 고객 키를 암호화할 수 있다. 적합한 구성요소, 가령, 앞서 기재된 것이 암호화된 고객 키를 갖는 키 내보내기 토큰을 생성(1118)할 수 있다.
생성(1118)된 키 내보내기 토큰이 도 4와 관련하여 앞서 기재된 바와 같이 구성될 수 있으며 예를 들어 내부 고객 키 식별자(404)가 수신(1102)된 요청의 파라미터로서 특정될 수 있는 경우 앞서 기재된 바와 같이 다양한 식별자를 포함할 수 있다. 프로세스(1100)를 수행하는 암호화 서비스의 프론트 엔드의 웹 서버가 요처에 응답하여 생성된 키 내보내기 토큰을 제공(1120)할 수 있다. 본 명세서에 기재된 그 밖의 다른 프로세스처럼, 고객 키의 평문 카피가 더는 필수가 아닐 때, 프로세스(1100)는 앞서 기재된 바와 같이 고객 키로의 액세스를 소실(1122)하는 것을 포함할 수 있다.
도 5 내지 11은 암호화 서비스 또는 그 밖의 다른 컴퓨터 시스템에 의해 수행될 수 있는 다양한 프로세스를 도시한다. 프로세스는 특정 순서로 수행되는 다양한 동작을 보여준다. 가령, 하나의 동작의 수행이 다른 하나의 동작의 수행에 종속되지 않을 때 동작의 순서는 도시된 것과 상이할 수 있다. 예를 들어, 요청 진본성 및 요청 이행의 인가의 결정이 상이한 순서로 또는 병렬로 수행될 수 있다. 가령 동작의 출력이 다른 동작의 입력으로 사용되지 않을 때 특정 순서로 수행될 필요가 없는 또 다른 동작 쌍이 도시된 것과 상이한 순서로 또는 병렬로 수행될 수 있다. 도시된 예시에서, 본 명세서에 기재된 복수의 프로세스가 암호화 서비스가 고객 키의 임의의 평문 카피로의 액세스를 소실하게 하는 동작의 세트를 수행하는 것을 포함한다. 도면에 도시된 모든 프로세스에서, 액세스가 소실되게 하는 동작의 세트가 프로세스의 종료 부분에서 발생한다. 그러나 시스템이 액세스를 소실하게 하는 동작이 임의의 적합한 시점에서, 가령, 고객 키의 평문 카피에 대해 수행되거나 그 밖의 다른 방식으로 이를 이용하는 임의의 동작이 완료된 후 수행될 수 있다. 그 밖의 다른 변형이 또한 본 발명의 범위 내에 있다고 간주된다.
예를 들어, 일부 실시예에서, 내보내기 도메인 키의 만기에 의해 내보내기 도메인 키로의 액세스의 완전한 소실이 야기되며, 특별한 계산 노력이 비가역적으로 부재할 때 정보(가령, 고객 키)가 내보내기 도메인 키 하에서 암호화되도록 렌더링된다. 일부 실시예에서, 서비스 제공자가 만기를 지난 내보내기 도메인 키의 불러오기를 가능하게 할 수 있다, 가령, 내보내기 도메인 키의 수명을 지난 데이터의 회복을 가능하게 할 수 있다. 예를 들어, 내보내기 도메인 키의 카피가 오프라인 레포지토리로부터 불러와 질 수 있는 동안 내보내기 도메인 키가 불러와져서 정보를 해독하도록, 서비스 제공자는 내보내기 도메인 키의 만기 후 짧은 시간 동안 오프라인 레포지토리에 내보내기 도메인 키의 카피를 유지할 수 있다. 또 다른 예를 들면, 개인 암호 키는 오프라인 레포지토리에(가령, 데이터 센터 또는 그 밖의 다른 위치 내 잠긴 방 안의 금고 내에) 유지될 수 있다. 대응하는 공개 키가 내보내기 도메인 키의 카피를 암호화하는 데 사용될 수 있으며 암호화된 카피가 데이터 저장 시스템에 저장될 수 있다. 추후 시점에서, 개인 암호 키가 액세스 및 파괴될 수 있어서, 내보내기 도메인 키를 복원할 수 있는 임의의 가능한 능력을 제거할 수 있다. 그 밖의 다른 변형이 또한 본 발명의 범위 내에 있다고 간주된다.
언급된 바와 같이, 본 발명의 다수의 변형이 대칭 및/또는 비대칭 암호학 원론을 이용할 수 있는 다양한 암호화 작업을 수행하는 것을 포함한다. 대칭 키 알고리즘이 데이터에 대한 암호화 작업을 수행하기 위한 다양한 스킴, 가령, 블록 암호화(block cipher), 스트림 암호화(stream cipher), 및 디지털 서명 스킴(digital signature scheme)을 포함할 수 있다. 예시적 대칭 키 알고리즘은 고급 암호화 표준(AES: advanced encryption standard), 데이터 암호화 표준(DES: data encryption standard), 트리플 DES(3DES), 서펜트(Serpent), 투피쉬(Twofish), 블로우피쉬(blowfish), 캐스트5(CAST5), RC4 및 국제 데이터 암호화 알고리즘(IDEA: international data encryption algorithm)을 포함한다. 또한 대칭 키 알고리즘은 단방향 함수의 출력을 생성하는 데 사용되는 것을 포함하고, 해쉬-기반 메시지 인증 코드(HMAC: hash-based message authentication code), 메시지 인증 코드(MAC: message authentication code), 일반적으로, PBKDF2 및 Bcrypt을 이용하는 알고리즘을 포함할 수 있다. 비대칭 키 알고리즘은 데이터에 대한 암호화 작업을 수행하기 위한 다양한 스킴을 더 포함할 수 있다. 예시적 알고리즘은 디피-헬먼(Diffie-Hellman) 키 교환 프로토콜, 디지털 서명 표준(DSS), 디지털 서명 알고리즘, 엘가멜(ElGamal) 알고리즘, 다양한 타원 곡선 알고리즘, 패드워드-인증된 키 협의 기법, 팔리에 암호체계(pallier cryptosystem), RSA 암호화 알고리즘(PKCS#1), 크레이머-슈프 암호체계(Cramer-Shoup cryptosystem), YAK 인증된 키 협의 프로토콜, NTRU암호화 암호체계(NTRUEncrypt cryptosystem), 맥엘리스 암호체계(McEliece cryptosystem) 등을 이용하는 것들을 포함한다. 타원 곡선 알고리즘은 타원 곡선 디피-헬먼(ECDH: elliptic curve Diffie-Hellman) 키 협의 스킴, 타원 곡선 통합 암호화 스킴(ECIES: Elliptic Curve Integrated Encryption Scheme), 타원 곡선 디지털 서명 알고리즘(ECDSA: Elliptic Curve Digital Signature Algorithm), ECMQV 키 협의 스킴, 및 ECQV 묵시적 인증서 스킴을 포함한다. 또 다른 알고리즘 및 알고리즘의 조합이 또한 본 명세서의 범위 내에 있다고 간주되며 상기의 내용이 총 망라한 목록으로 의도된 것은 아니다.
도 12는 다양한 실시예에 따르는 양태를 구현하기 위한 예시적 환경(1200)의 양태를 도시한다. 웹-기반 환경이 설명 목적으로 사용되지만, 다양한 실시예를 구현하기 위해 여러 다른 환경이 적절하게 사용될 수 있음이 자명할 것이다. 환경은 요청, 메시지, 또는 정보를 적절한 네트워크(1204)를 통해 전송 및/또는 수신하고 일부 실시예에서 장치의 사용자에게 정보를 다시 전달하도록 동작하는 임의의 적절한 장치를 포함할 수 있는 전자 클라이언트 장치(1202)를 포함한다. 이러한 클라이언트 장치의 예시는 개인 컴퓨터, 셀 폰, 핸드헬드 메시징 장치, 랩톱 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 개인 데이터 보조기, 엠베디드 컴퓨터 시스템, 전자 북 리더 등을 포함한다. 네트워크는 임의의 적절한 네트워크, 가령, 인트라넷, 인터넷, 셀방식 네트워크, 로컬 영역 네트워크, 위성 네트워크 또는 그 밖의 다른 임의의 이러한 네트워크 및/또는 이들의 조합을 포함할 수 있다. 이러한 시스템을 위해 사용되는 구성요소가 선택된 네트워크 및/또는 환경의 유형에 따라 적어도 부분적으로 좌우될 수 있다. 이러한 네트워크를 통해 통신하기 위한 프로토콜 및 구성요소가 잘 알려져 있으며 본 명세서에서 상세히 기재되지 않을 것이다. 네트워크를 통한 통신이 유선 또는 무선 연결 및 이들의 조합에 의해 활성화될 수 있다. 이 예시에서, 환경이 요청을 수신하고 이에 응답하여 콘텐츠를 서비스하기 위한 웹 서버(1206)를 포함할 때 네트워크는 인터넷을 포함하지만, 그 밖의 다른 네트워크에 대해 해당 분야의 통상의 기술자에게 자명할 유사한 목적을 서비스하는 대안적 장치가 사용될 수 있다.
예시적 환경은 적어도 하나의 애플리케이션 서버(1208) 및 데이터 저장소(1210)를 포함한다. 연쇄되거나 그 밖의 다른 방식으로 구성될 수 있고, 작업, 가령, 적절한 데이터 저장소로부터 데이터를 획득하는 작업을 수행하도록 대화할 수 있는 복수의 애플리케이션 서버, 레이어 또는 그 밖의 다른 요소, 프로세스 또는 구성요소일 수 있음이 이해되어야 한다. 본 명세서에서 사용될 때, 서버, 가령, 하드웨어 장치 또는 가상 컴퓨터 시스템이 다양한 방식으로 구현될 수 있다. 일부 맥락에서, 서버는 컴퓨터 시스템 상에서 실행되는 프로그래밍 모듈을 지칭할 수 있다. 본 명세서에서 사용될 때, 달리 언급되거나 문맥상 명백하지 않는 한, 용어 "데이터 저장소"가 데이터를 저장, 액세스, 및 불러올 수 있는 임의의 장치 또는 장치의 조합을 지칭하며, 임의의 조합의 그리고 복수의 데이터 서버, 데이터베이스, 데이터 저장 장치 및 데이터 저장 매체를 표준, 분산, 가상 또는 클러스터링 환경으로 포함할 수 있다. 애플리케이션 서버는 클라이언트 장치에 대한 하나 이상의 애플리케이션의 양태를 실행하기 위해 필요에 따라 데이터 저장소와 통합하고, 애플리케이션에 대한 데이터 액세스 및 비즈니스 로직의 일부 또는 전부를 핸들링하기 위한 임의의 적절한 하드웨어, 소프트웨어 및 펌웨어를 포함할 수 있다. 애플리케이션 서버는 데이터 저장소와 협의하여 액세스 제어 서비스를 제공할 수 있고 콘텐츠, 비제한적 예를 들면, 텍스트, 그래픽, 오디오, 비디오 및/또는 사용자에게 제공되도록 이용 가능한 그 밖의 다른 콘텐츠를 생성할 수 있으며, 이들은 웹 서버에 의해 하이퍼텍스트 마크업 언어("HTML": HyperText Markup Language), 확장형 마크업 언어("XML": Extensible Markup Language), 자바스크립트(JavaScript), 캐스케이딩 스타일 시트("CSS": Cascading Style Sheet) 또는 또 다른 적절한 클라이언트-측 구조화된 언어의 형태로 사용자에게 서비스될 수 있다. 클라이언트 장치로 전송되는 콘텐츠가 클라이언트 장치에 의해 처리되어, 콘텐츠를 하나 이상의 형태, 비제한적 예를 들면, 청각적, 시각적 및/또는 그 밖의 다른 감각, 가령, 접촉, 맛 및/또는 냄새를 통해 사용자에 의해 지각 가능한 형태로 콘텐츠를 제공할 수 있다. 모든 요청 및 응답의 핸들링뿐 아니라, 클라이언트 장치(1202)와 애플리케이션 서버(1208) 간 콘텐츠의 전달까지, 이 예시의 경우 PHP: 하이퍼텍스트 프리프로세서("PHP"), 파이톤(Python), 루비(Ruby), 펄(Perl), 자바(Java), HTML, XML 또는 또 다른 적절한 서버-측 구조화된 언어를 이용하는 웹 서버에 의해 핸들링될 수 있다. 본 명세서에서 언급된 구조화된 코드가 본 명세서의 다른 곳에서 언급된 임의의 적절한 장치 또는 호스트 머신 상에서 실행될 수 있기 때문에, 웹 및 애플리케이션 서버가 필수는 아니며 단지 예시적 구성요소에 불과함이 이해되어야 한다. 또한 본 명세서에 단일 장치에 의해 수행되는 것으로 기재된 동작이, 문맥상 달리 명백하지 않는 한, 분산 및/또는 가상 시스템을 형성할 수 있는 복수의 장치에 의해 집합적으로 수행될 수 있다.
데이터 저장소(1210)는 복수의 개별 데이터 테이블, 데이터베이스, 데이터 문서, 동적 데이터 저장 스킴 및/또는 본 개시내용의 특정 양태와 관련된 데이터를 저장하기 위한 그 밖의 다른 데이터 저장 수단 및 매체를 포함할 수 있다. 예를 들어, 도시된 데이터 저장소는 생산 측을 위한 콘텐츠를 서비스하는 데 사용될 수 있는 생산 데이터(1212) 및 사용자 정보(1216)를 저장하기 위한 수단을 포함할 수 있다. 데이터 저장소는 또한 보고, 분석, 또는 그 밖의 다른 이러한 목적을 위해 사용될 수 있는 로그 데이터(1214)를 저장하기 위한 수단을 포함하는 것으로 나타난다. 데이터 저장소에 저장될 필요가 있을 수 있는 그 밖의 다른 많은 양태, 가령, 페이지 이미지 정보 및 액세스 권리 정보가 존재할 수 있고, 이들은 앞서 나열된 수단 중 임의의 것에 적절하게 또는 데이터 저장소(1210) 내 추가 수단에 저장될 수 있음이 이해되어야 한다. 데이터 저장소(1210)는, 이와 연관된 로직을 통해, 애플리케이션 서버(1208)로부터 명령을 수신하고 이에 응답하여 데이터를 획득, 업데이트 또는 그 밖의 다른 방식으로 처리하도록 동작할 수 있다. 애플리케이션 서버(1208)는 수신된 명령에 응답하여 정적, 동적, 또는 정적과 동적 데이터의 조합을 제공할 수 있다. 동적 데이터, 가령, 웹 로그(블로그), 쇼핑 애플리케이션, 뉴스 서비스 및 그 밖의 다른 이러한 애플리케이션에서 사용되는 데이터가 본 명세서에 기재된 서버-측 구조화된 언어에 의해 생성되거나, 애플리케이션 서버 상에서 동작하거나 애플리케이션 서버의 제어 하에서 동작하는 콘텐츠 관리 시스템("CMS")에 의해 제공될 수 있다. 하나의 예시에서, 사용자는, 사용자에 의해 동작되는 장치를 통해, 특정 유형의 아이템에 대한 검색 요청을 제출할 수 있다. 이 경우, 데이터 저장소는 사용자 정보를 액세스하여 사용자의 신원을 검증할 수 있고 카탈로그 상세사항 정보를 액세스하여 이러한 유형의 아이템에 대한 정보를 획득할 수 있다. 그 후 정보는, 가령, 사용자가 사용자 장치(1202)를 통해 조회할 수 있는 웹 페이지 상에 나열되는 결과로 사용자에게 반환될 수 있다. 특정 관심 아이템에 대한 정보가 전용 페이지 또는 브라우저의 창에서 조회될 수 있다. 그러나 본 발명의 실시예가 웹 페이지의 맥락에 반드시 한정되는 것은 아니며, 요청이 콘텐츠에 대한 요청일 필요는 없는 일반적인 요청 처리에 더 일반적으로 적용 가능할 수 있다.
일반적으로 각각의 서버가 상기 서버의 일반적인 관리 및 동작을 위한 실행 가능한 프로그램 명령을 제공하는 운영 체제를 포함할 것이며 일반적으로 서버의 프로세서에 의해 실행될 때, 서버로 하여금 자신의 의도된 기능을 수행하게 하는 명령을 저장하는 컴퓨터 판독형 저장 매체(가령, 하드 디스크, 랜덤 액세스 메모리, 리드 온리 메모리 등)를 포함할 것이다. 서버의 운영 체제 및 일반적인 기능을 위한 적합한 구현이 알려져 있고 상업적으로 이용 가능하며, 특히 본 명세서를 참조하면, 해당 분야의 통상의 기술자에 의해 쉽게 구현된다.
하나의 실시예에서, 환경은 하나 이상의 컴퓨터 네트워크 또는 직접 연결을 이용해 통신 링크를 통해 상호연결되는 복수의 컴퓨터 시스템 및 구성요소를 이용하는 분산 및/또는 가상 컴퓨팅 환경이다. 그러나 이러한 시스템이 도 12에 도시된 것보다 더 적거나 더 많은 수의 구성요소를 갖는 시스템에서 동일하게 잘 동작할 수 있음이 해당 분야의 통상의 기술자에게 자명할 것이다. 따라서 도 12의 시스템(1200)의 도시는 설명 목적으로 취해진 것이며 본 명세서의 범위를 한정하지 않는다.
다양한 실시예가 또한 일부 경우, 복수의 애플리케이션 중 임의의 애플리케이션을 동작시키는 데 사용될 수 있는 하나 이상의 사용자 컴퓨터, 컴퓨팅 장치 또는 처리 장치를 포함할 수 있는 다양한 동작 환경에서 구현될 수 있다. 사용자 또는 클라이언트 장치는 복수의 범용 개인 컴퓨터, 가령, 표준 운영 체제를 실행시키는 데스크톱, 랩톱 또는 태블릿 컴퓨터뿐 아니라, 모바일 소프트웨어를 실행시키고 복수의 네트워킹 및 메시징 프로토콜을 지원할 수 있는 셀방식, 무선 및 핸드헬드 장치까지 포함할 수 있다. 이러한 시스템은 또한 다양한 상용화된 운영 체제 및 개발 및 데이터베이스 관리 목적의 그 밖의 다른 알려진 애플리케이션 중 임의의 것을 실행시키는 복수의 워크스테이션을 포함할 수 있다. 이들 장치는 또한 그 밖의 다른 전자 장치, 가령, 더미 단말(dummy terminal), 씬-클라이언트(thin-client), 게임 시스템 및 네트워크를 통해 통신할 수 있는 그 밖의 다른 장치를 포함할 수 있다. 이들 장치는 또한 가상 장치, 가령, 가상 머신, 하이퍼바이저(hypervisor) 및 네트워크를 통해 통신할 수 있는 그 밖의 다른 가상 장치를 포함할 수 있다.
본 발명의 다양한 실시예가 다양한 상용화된 프로토콜, 가령, 전송 제어 프로토콜/인터넷 프로토콜("TCP/IP": Transmission Control Protocol/Internet Protocol), 사용자 데이터그램 프로토콜("UDP": User Datagram Protocol), 오픈 시스템 인터커넥션("OSI": Open System Interconnection) 모델의 다양한 레이어에서 동작하는 프로토콜, 파일 전송 프로토콜("FTP": File Transfer Protocol), 전역 플러그 앤 플레이("UpnP": Universal Plug and Play), 네트워크 파일 시스템("NFS": Network File System), 공통 인터넷 파일 시스템("CIFS": Common Internet File System) 및 애플토크(AppleTalk) 중 임의의 것을 이용해 통신을 지원하기 위해 해당 분야의 통상의 기술자에게 친숙할 적어도 하나의 네트워크를 이용한다. 네트워크는, 예를 들어, 로컬 영역 네트워크, 광역 네트워크, 가상 사설 네트워크, 인터넷, 인트라넷, 엑스트라넷, 공개 스위칭된 전화 네트워크, 적외선 네트워크, 무선 네트워크, 위성 네트워크 및 이들의 임의의 조합일 수 있다.
웹 서버를 이용하는 실시예에서, 웹 서버는 다양한 서버 또는 미드-티어 애플리케이션, 가령, 하이퍼텍스트 전송 프로토콜("HTTP": Hypertext Transfer Protocol) 서버, FTP 서버, 공통 게이트웨이 인터페이스("CGI": Common Gateway Interface) 서버, 데이터 서버, 자바(Java) 서버, 아파치(Apache) 서버 및 비즈니스 애플리케이션 서버 중 임의의 하나를 운영할 수 있다. 상기 서버(들)은 또한 사용자 장치로부터의 요청에 응답하여, 가령, 임의의 프로그래밍 언어, 가령, Java®, C, C# 또는 C++, 또는 임의의 스크립팅 언어, 가령, 루비(Ruby), PHP, 펄(Perl), 파이톤(Python) 또는 TCL 및 이들의 조합으로 써진 하나 이상의 스크립트 또는 프로그램으로서 구현될 수 있는 하나 이상의 웹 애플리케이션을 실행함으로써, 프로그램 또는 스크립트를 실행할 수 있다. 서버(들)는 또한 데이터베이스 서버, 비제한적 예를 들면, Oracle®, Microsoft®, Sybase® 및 IBM® 및 오픈-소스 서버, 가령, 마이에스큐엘(MySQL), 포스트그레스(Postgres), 에스큐라이트(SQLite), 몽고디비(MongoDB) 및 구조화되거나 비구조화된 데이터를 저장, 불러오기 및 액세스할 수 있는 그 밖의 다른 임의의 서버를 포함할 수 있다. 데이터베이스 서버는 테이블-기반 서버, 문서-기반 서버, 비구조화된 서버, 관계 서버, 비-관계 서버, 또는 이들의 조합 및/또는 그 밖의 다른 데이터베이스 서버를 포함할 수 있다.
환경은 앞서 언급된 다양한 데이터 저장소 및 그 밖의 다른 메모리 및 저장 매체를 포함할 수 있다. 이들은 다양한 위치 내에, 가령, 하나 이상의 컴퓨터의 로컬 영역인(및/또는 내부에 상주하는) 또는 네트워크에 걸친 컴퓨터들 중 임의의 또는 전부에 원격지인 저장 매체 상에 위치할 수 있다. 실시예의 특정 세트에서, 정보가 해당 분야의 통상의 기술자에게 익숙한 저장-영역 네트워크("SAN") 내에 상주할 수 있다. 마찬가지로, 컴퓨터, 서버 또는 그 밖의 다른 네트워크 장치에 기여하는 기능을 수행하기 위한 임의의 필수 파일이 경우에 따라 로컬하게 및/또는 원격으로 저장될 수 있다. 시스템이 컴퓨터화된 정치를 포함하는 경우, 각각의 이러한 장치는 버스를 통해 전기적으로 연결될 수 있는 하드웨어 요소를 포함할 수 있고, 상기 요소는, 예를 들어, 적어도 하나의 중앙 처리 장치("CPU" 또는 "프로세서"), 적어도 하나의 입력 장치(가령, 마우스, 키보드, 제어기, 터치 스크린 또는 키패드) 및 적어도 하나의 출력 장치(가령, 디스플레이 장치, 프린터 또는 스피커)를 포함한다. 이러한 시스템은 또한 하나 이상의 저장 장치, 가령, 디스크 장치, 광학 저장 장치 및 솔리드-스테이트 저장 장치, 가령, 랜덤 액세스 메모리("RAM") 또는 리드-온리 메모리("ROM"), 및 탈착식 매체 장치, 메모리 카드, 플래시 카드 등을 포함할 수 있다.
이러한 장치는 또한 앞서 기재된 바와 같이 컴퓨터-판독형 저장 매체 판독기, 통신 장치(가령, 모뎀, 네트워크 카드(유선 또는 무선), 적외선 통신 장치 등), 및 작업 메모리를 포함할 수 있다. 컴퓨터-판독형 저장 매체 판독기는 원격, 로컬, 고정 및/또는 탈착식 저장 장치 및 임시 및/또는 더 영속적으로 컴퓨터-판독형 정보를 포함, 저장, 전송, 및 불러오기 위한 저장 매체를 나타내는 컴퓨터-판독형 저장 매체와 연결, 또는 이를 수용하도록 구성될 수 있다. 시스템 및 다양한 장치는 또한 일반적으로 적어도 하나의 작업 메모리 장치 내에 위치하는 복수의 소프트웨어 애플리케이션, 모듈, 서비스 또는 그 밖의 다른 요소, 가령, 운영 체제 및 애플리케이션 프로그램, 가령, 클라이언트 애플리케이션 또는 웹 브라우저를 포함할 것이다. 대안적 실시예가 앞서 기재된 복수의 변형을 가질 수 있음이 자명할 것이다. 예를 들어, 맞춤 구성된 하드웨어가 더 사용될 수 있거나 및/또는 특정 요소가 하드웨어, 소프트웨어(가령, 포터블 소프트웨어, 가령, 애플릿(applet)) 또는 둘 모두로 구현될 수 있다. 또한 또 다른 컴퓨팅 장치, 가령, 네트워크 입/출력 장치로의 연결이 사용될 수 있다.
코드, 또는 코드의 일부분을 포함하기 위한 저장 매체 및 컴퓨터 판독형 매체가 해당 분야에 알려지거나 사용되는 임의의 적절한 매체, 가령, 저장 매체 및 통신 매체, 비제한적 예를 들면, 정보, 가령, 컴퓨터 판독형 명령, 데이터 구조, 프로그램 모듈 또는 그 밖의 다른 데이터를 저장 및/또는 전송하기 위한 임의의 방법 또는 기법으로 구현되는 휘발성 및 비휘발성, 탈착식 및 비-탈착식 매체, 예컨대, RAM, ROM, 전기 소거식 프로그래머블 리드-온리 메모리("EEPROM"), 플래시 메모리 또는 그 밖의 다른 메모리 기법, 컴팩트 디스크 리드-온리 메모리("CD-ROM": Compact Disc Read-Only Memory), 디지털 다목적 디스크(DVD) 또는 그 밖의 다른 광학 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 그 밖의 다른 자기 저장 장치 또는 원하는 정보를 저장하는 데 사용될 수 있는 시스템 장치에 의해 액세스될 수 있는 그 밖의 다른 임의의 매체를 포함할 수 있다. 본 명세서에서 제공된 개시 내용 및 설명을 기초로, 해당 분야의 통상의 기술자라면 다양한 실시예를 구현하기 위한 그 밖의 다른 방식 및/또는 방법을 인지할 것이다.
따라서 상세한 설명 및 도면은 한정이 아니라 예시로 간주된다. 그러나 청구범위로 제공되는 본 발명의 광의의 사상 및 범위 내에서 다양한 수정 및 변화가 이뤄질 수 있음이 자명할 것이다.
또 다른 변형이 본 발명의 사상 내에 있다. 따라서 개시된 기법이 다양한 변형 및 대안적 구성이 가능하지만, 특정 예시적 실시예가 도면에 도시되며 상기에서 상세히 기재되었다. 그러나 본 발명을 개시된 특정 형태로 한정하려는 어떠한 의도도 없으며, 반대로 특허청구범위에서 정의되는 본 발명의 사상 및 범위 내에 속하는 모든 수정, 대안 구성 및 균등예를 포함하는 것이 의도이다.
개시된 실시예를 기술하는 상황에서(특히, 이하의 청구항의 상황에서) 용어 "a" 및 "an" 및 "the" 및 이와 유사한 지시어의 사용은, 본 명세서에서 달리 언급되거나 맥락상 명백하게 모순되지 않는 한, 단수와 복수 모두를 포함하는 것으로 해석될 것이다. 용어 "~를 포함하는", "~를 갖는", "~를 포함하는", 및 "~를 포함하는"은 달리 언급되지 않는 한 개방 단부형 용어(즉, "~를 포함하나 이에 제한되는 것은 아님"을 의미함)로서 해석될 것이다. 용어 "연결된"은, 수정되지 않고 물리적 연결을 지칭할 때, 무언가가 개입되는 경우라도, 부분적으로 또는 전적으로 포함되는, 연결된, 또는 함께 접합된 것으로 해석될 것이다. 본 명세서에서 값들의 범위의 언급은, 본 명세서에서 달리 지시되지 않는 한, 범위 내에 속하는 각각의 개별 값을 개별적으로 언급하는 간편한 방법을 역할하도록 의도될 뿐이며, 각각의 개별 값이 본 명세서에 개별적으로 언급된 것처럼 본 명세서에 포함된다. 용어 "세트" (가령, "아이템 세트") 또는 "서브세트"의 사용은, 달리 언급되거나 문맥상 모순되지 않는 한, 하나 이상의 구성원을 포함하는 비공 집합(nonempty collection)으로 해석될 것이다. 또한 달리 언급되거나 문맥상 모순되지 않는 한, 대응하는 세트의 "서브세트"라는 용어는 반드시 상기 대응하는 세트의 진부분 집합을 가리키는 아니며, 서브세트 및 대응하는 세트가 동일할 수 있다.
접속어구, 가령, "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의 적어도 하나가 제공될 필요가 있음을 의미하도록 의도된 것은 아니다.
본 명세서에 기재된 프로세스의 동작이, 본 명세서에 달리 언급되거나 문맥상 명백하게 모순되지 않는 한 임의의 적합한 순서로 수행될 수 있다. 본 명세서에 기재된 프로세스(또는 변형예 및/또는 이들의 조합)가 실행 가능한 명령으로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에서 수행될 수 있고 하드웨어 또는 이들의 조합에 의해, 하나 이상의 프로세서 상에서 집합적으로 실행하는 코드(가령, 실행 가능 명령, 하나 이상의 컴퓨터 프로그램 또는 하나 이상의 애플리케이션)로서 구현될 수 있다. 코드는 예를 들어 하나 이상의 프로세서에 의해 실행 가능한 복수의 명령을 포함하는 컴퓨터 프로그램의 형태로 컴퓨터 판독형 저장 매체 상에 저장될 수 있다. 컴퓨터-판독형 저장 매체가 비일시형(non-transitory)일 수 있다.
본 명세서에서 제공된 임의의 또는 모든 예시, 또는 예시적 언어(예를 들어, "가령")가 본 발명의 실시예를 더 잘 설명하기 위한 의도를 가짐에 불과하고 달리 청구되지 않는 한 본 발명의 범위를 한정하지 않는다. 상세한 설명의 어떠한 표현도 본 발명의 실시에 본질적인 것으로 임의의 청구되지 않는 요소를 가리키는 것으로 해석되어서는 안 된다.
본 발명을 실시하는 데 본 발명의 발명자에게 알려진 최상의 모드를 포함하여 본 개시내용의 실시예가 본 명세서에 기재된다. 이들 실시예의 변형이 상기의 내용을 읽으면 해당 분야의 통상의 기술자에게 자명해질 수 있다. 본 발명자는 해당 분야의 통상의 기술자라면 이러한 변형을 경우에 따라 채용할 것을 예상하며 본 발명자는 본 개시 내용의 실시예가 본 명세서에 특정하게 기재되는 것과 다르게 실시될 것을 의도한다. 따라서 본 발명의 범위가 준거법에 의해 허용되는 본 발명의 청구범위에서 언급되는 주제 사항의 모든 변형 및 균등을 포함한다. 덧붙여, 본 명세서에 달리 언급되거나 문맥상 명백하게 모순되지 않는 한, 모든 가능한 변형에서 앞서 기재된 요소의 임의의 조합이 본 발명의 범위에 포함된다.
본 명세서에서 인용된 모든 참조문헌, 가령, 간행물, 특허출원 및 특허는, 각각의 참조문헌이 개별적으로 그리고 특정하게 참조로서 포함되는 것으로 지시되고 이의 전체가 본 명세서에 제공되는 것처럼 동일한 범위까지 참조문헌에 의해 포함된다.
본 발명의 실시예는 다음의 항목을 고려하여 기재될 수 있다:
1. 컴퓨터로 구현되는 방법으로서,
암호화 서비스의 웹 서버에서, 암호 키에 대한 요청을 수신하는 단계 - 상기 요청은 수명을 특정하며, 상기 요청은 암호화 서비스의 고객과 연관된 장치로부터 옴 - ,
암호화 재료의 하드웨어 보호를 제공하는 장치에서, 암호 키를 생성하는 단계,
장치 내에 저장되고 장치로부터 프로그램에 따라 내보낼 수 없는 도메인 키의 세트로부터, 특정된 수명과 매칭되는 만기를 갖는 도메인 키를 선택하는 단계 - 만기는 만기에 따라 결정된 시점에서 도메인 키가 장치에 의해 영구적으로 액세스될 수 없게 하는 자동화 프로세스의 적어도 하나의 인스턴스에 의해 강제됨 - ,
장치에서, 생성된 암호 키를 암호화하는 단계,
암호화된 암호 키 및 암호 키의 식별자를 포함하는 토큰을 생성하는 단계,
수신된 요청에 응답하여 고객과 연관된 장치에 토큰을 제공하는 단계, 및
장치가 암호 키로의 액세스를 소실하게 하는 하나 이상의 동작을 수행하는 단계
를 포함하는, 컴퓨터로 구현되는 방법.
2. 항목 1에 있어서, 암호화 서비스가 암호 키를 이용해 암호화 작업을 수행하기 위한 요청의 이행을 제어하는 데 정책을 이용하도록, 정책을 암호 키의 식별자와 연관시키는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
3. 항목 1 또는 2에 있어서,
웹 서버에서, 호스팅된 암호 키에 대한 제2 요청을 수신하는 단계,
장치에서, 호스팅된 암호 키를 생성하는 단계,
장치에 저장된 제2 도메인 키를 이용해, 호스팅된 암호 키를 암호화하는 단계, 및
암호화된 호스팅된 암호 키를 암호화 서비스에 의해 액세스 가능한 위치에 저장하는 단계
를 더 포함하는, 컴퓨터로 구현되는 방법.
4. 항목 3에 있어서,
도메인 키는 암호 키를 내보내기(export) 위해 프로비저닝된 도메인 키의 세트의 제1 서브세트로부터의 제1 도메인 키이며,
제2 도메인 키는 호스팅된 암호 키에 대해 프로비저닝된 도메인 키의 세트의 제2 서브세트로부터의 도메인 키인, 컴퓨터로 구현되는 방법.
5. 시스템으로서,
하나 이상의 서비스를 구현하도록 구성된 적어도 하나의 컴퓨팅 장치 - 상기 하나 이상의 서비스는
암호 키에 대한 요청을 수신하도록 구성되고,
암호 키를 획득하는 것,
각각 암호화 재료의 하드웨어 보호를 제공하는 하드웨어 장치의 세트 외부에서 액세스될 수 없는 암호화 재료를 이용해 획득된 암호 키를 암호화하는 것 - 상기 암호화 재료는 만기가 시스템에 의해 실행되는 자동 프로세스에 의해 강제되는 경우 암호화 재료가 하드웨어 장치의 세트에 의해 액세스될 수 없게 되는 시점에 대응하는 만기를 가짐 - ,
암호화된 암호 키를 제공하는 것, 및
하드웨어 장치의 세트가 획득된 암호 키로의 액세스를 소실하게 하는 것
에 의해, 암호 키에 대한 요청을 이행하도록 구성되는, 시스템.
6. 항목 5에 있어서,
하나 이상의 서비스는 암호 키의 식별자를 포함하는 토큰을 생성하도록 더 구성되며,
암호화된 암호 키를 제공하는 것은 생성된 토큰을 제공하는 것을 포함하는, 시스템.
7. 항목 5 또는 6에 있어서, 상기 하나 이상의 서비스는
암호 키를 이용해 암호화 작업을 수행하도록 제2 요청을 수신하도록 더 구성되며 - 제2 요청은 암호화된 암호 키를 포함함 - ,
암호화 재료가 여전히 이용 가능한지 여부에 따라, 암호화된 암호 키를 해독하고 암호 키를 이용해 암호화 작업을 수행함으로써, 제2 요청을 이행하도록 더 구성된, 시스템.
8. 항목 7에 있어서, 상기 하나 이상의 서비스는
암호화 작업을 수행하기 위한 제3 요청을 수신하도록 더 구성되며 - 상기 요청은 상기 하나 이상의 서비스에 의해 관리되는 제2 암호 키의 식별자를 특정함 - ,
적어도, 데이터 저장 위치로부터 제2 암호 키의 암호화된 카피를 획득하는 것,
상기 제2 암호 키의 암호화된 카피를 해독하는 것, 및
암호화 작업을 수행하도록 제2 암호 키를 이용하는 것
에 의해, 상기 요청을 이행하도록 더 구성되는, 시스템.
9. 항목 5 내지 8 중 어느 하나에 있어서, 상기 하나 이상의 서비스는
정책을 상기 암호 키와 연관시키도록 더 구성되며 - 상기 정책은 암호 키에 대한 권한의 세트를 특정함 - ,
상기 정책에 따라 암호 키를 이용하기 위한 요청의 이행을 제어하도록 더 구성되는, 시스템.
10. 항목 5 내지 9 중 어느 하나에 있어서, 상기 하나 이상의 서비스는
암호화 재료의 만기를 적어도 부분적으로 기초로 하여 암호화 재료를 선택하도록 더 구성되며, 상기 만기는 상기 하나 이상의 서비스가 상기 암호화 재료로의 액세스를 소실할 시점을 가리키는, 시스템.
11. 항목 5 내지 10 중 어느 하나에 있어서, 하드웨어 장치는 하드웨어 보안 모듈인, 시스템.
12. 항목 5 내지 11 중 어느 하나에 있어서, 암호 키를 획득하는 것은
상기 하나 이상의 서비스에 의해 액세스 가능한 데이터 저장 시스템으로부터 암호 키의 암호화된 카피를 불러오는 것, 및
상기 암호화 재료와 상이한 타 암호화 재료를 이용해 암호 키의 암호화된 카피를 해독하는 것을 포함하는, 시스템.
13. 실행 가능 명령이 저장된 비-일시적 컴퓨터 판독형 저장 매체로서, 제1 개체의 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행될 때 상기 컴퓨터 시스템으로 하여금 적어도:
키 토큰에 대한 제1 요청에 대해:
제1 암호 키의 암호화된 카피 및 상기 제1 암호 키를 암호화하는 데 사용되는 제2 암호 키를 식별하도록 이용 가능한 정보를 포함하는 키 토큰을 획득하게 하고 - 상기 제2 암호 키는 상기 제2 암호 키를 관리하는 하드웨어 장치의 세트 외부에서 액세스 불가능하며, 키 토큰을 획득하는 것에 의해 제1 암호 키는 키 토큰이 생성된 후 개체에 의해 액세스될 수 없게 되며, 제2 암호 키는 제2 암호 키가 하드웨어 장치의 세트에 의해 액세스될 수 없게 되는 시점을 가리키는 만기를 가짐 - , 및
키 토큰에 대한 제2 요청에 대해 - 제2 요청은 제2 개체와 연관됨 - :
키 토큰을 획득하게 하고,
만기에 의해 지시되는 시점이 아직 도래하지 않은 경우, 하드웨어 장치의 세트의 하드웨어 장치가 제1 암호 키를 해독하게 하며 해독된 제1 암호 키가 하나 이상의 암호화 작업을 수행하게 하며 하나 이상의 암호화 작업의 결과를 컴퓨터 시스템에 제공하게 하며,
제공된 결과를 적어도 부분적으로 기초로 하여 제2 요청으로 응답을 제공하게 하는, 비-일시적 컴퓨터 판독형 저장 매체.
14. 항목 13에 있어서, 상기 키 토큰을 획득하기 위한 명령이 하나 이상의 프로세서에 의해 실행될 때, 컴퓨터 시스템으로 하여금, 제1 요청의 수신의 결과로서 키 토큰이 생성되게 하도록 명령이 구성되는, 비-일시적 컴퓨터 판독형 저장 매체.
15. 항목 13 또는 14에 있어서, 키 토큰을 획득하기 위한 명령이 하나 이상의 프로세서에 의해 실행될 때, 컴퓨터 시스템으로 하여금, 하드웨어 장치의 세트의 하나의 하드웨어 장치로 키 토큰의 생성을 야기하는 명령어를 발행하게 하는, 비-일시적 컴퓨터 판독형 저장 매체.
16. 항목 13 내지 15 중 어느 하나에 있어서, 상기 명령은 제2 요청에 대해 실행될 때, 컴퓨터 시스템으로 하여금:
제1 암호 키의 식별자를 적어도 부분적으로 기초로 하여 제1 암호 키를 이용하기 위한 권한의 세트를 정의하는 정책의 세트를 결정하게 하고,
요청의 이행이 권한의 결정된 세트와 부합하는지 여부를 결정하게 하는 명령을 더 포함하며,
컴퓨터 시스템으로 하여금 하드웨어 장치가 제1 암호 키를 해독하고 해독된 제1 암호 키를 이용해 하나 이상의 암호화 작업을 수행하게 하는 명령의 실행은 요청의 이행의 정책의 결정된 세트에 부합한다는 결정에 따르는, 비-일시적 컴퓨터 판독형 저장 매체.
17. 항목 13 내지 16 중 어느 하나에 있어서, 제1 개체는 컴퓨터 시스템을 동작시키는 서비스 제공자이며 제2 개체는 서비스 제공자의 고객인, 비-일시적 컴퓨터 판독형 저장 매체.
18. 항목 13 내지 17 중 어느 하나에 있어서,
제2 요청은 키 토큰을 포함하며,
하나 이상의 프로세서에 의해 실행될 때 컴퓨터 시스템으로 하여금 키 토큰을 획득하게 하는 명령은, 컴퓨터 시스템으로 하여금 제2 요청으로부터 키 토큰을 결정하게 하는, 비-일시적 컴퓨터 판독형 저장 매체.
19. 제13 내지 18 중 어느 한 항에 있어서, 하드웨어 장치의 세트는 복수의 하드웨어 보안 모듈을 포함하는, 비-일시적 컴퓨터 판독형 저장 매체.
20. 제13 내지 19 중 어느 한 항에 있어서, 하나 이상의 프로세서에 의해 실행될 때 컴퓨터 시스템으로 하여금 키 토큰을 획득하게 하는 명령은 컴퓨터 시스템으로 하여금 제2 암호 키가 제1 요청으로 특정된 수명과 매칭되는 만기를 갖기 때문에 제2 암호 키의 선택을 도출하는 방식으로 키 토큰을 획득하게 하는, 비-일시적 컴퓨터 판독형 저장 매체.

Claims (15)

  1. 컴퓨터로 구현되는 방법으로서,
    암호화 서비스의 웹 서버에서, 암호 키에 대한 요청을 수신하는 단계 - 상기 요청은 수명을 특정하며, 상기 요청은 암호화 서비스의 고객과 연관된 장치로부터 옴 - ,
    암호화 재료의 하드웨어 보호를 제공하는 장치에서, 암호 키를 생성하는 단계,
    장치 내에 저장되고 장치로부터 프로그램에 따라 내보낼 수 없는 도메인 키의 세트로부터, 특정된 수명과 매칭되는 만기를 갖는 도메인 키를 선택하는 단계 - 만기는 만기에 따라 결정된 시점에서 도메인 키가 장치에 의해 영구적으로 액세스될 수 없게 하는 자동화 프로세스의 적어도 하나의 인스턴스에 의해 강제됨 - ,
    장치에서, 생성된 암호 키를 암호화하는 단계,
    암호화된 암호 키 및 암호 키의 식별자를 포함하는 토큰을 생성하는 단계,
    수신된 요청에 응답하여 고객과 연관된 장치에 토큰을 제공하는 단계, 및
    장치가 암호 키로의 액세스를 소실하게 하는 하나 이상의 동작을 수행하는 단계
    를 포함하는, 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서, 암호화 서비스가 암호 키를 이용해 암호화 작업을 수행하기 위한 요청의 이행을 제어하는 데 정책을 이용하도록, 정책을 암호 키의 식별자와 연관시키는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  3. 제1항에 있어서,
    웹 서버에서, 호스팅된 암호 키에 대한 제2 요청을 수신하는 단계,
    장치에서, 호스팅된 암호 키를 생성하는 단계,
    장치에 저장된 제2 도메인 키를 이용해, 호스팅된 암호 키를 암호화하는 단계, 및
    암호화된 호스팅된 암호 키를 암호화 서비스에 의해 액세스 가능한 위치에 저장하는 단계
    를 더 포함하는, 컴퓨터로 구현되는 방법.
  4. 제3항에 있어서,
    도메인 키는 암호 키를 내보내기(export) 위해 프로비저닝된 도메인 키의 세트의 제1 서브세트로부터의 제1 도메인 키이며,
    제2 도메인 키는 호스팅된 암호 키에 대해 프로비저닝된 도메인 키의 세트의 제2 서브세트로부터의 도메인 키인, 컴퓨터로 구현되는 방법.
  5. 시스템으로서,
    하나 이상의 서비스를 구현하도록 구성된 적어도 하나의 컴퓨팅 장치 - 상기 하나 이상의 서비스는
    암호 키에 대한 요청을 수신하도록 구성되고,
    암호 키를 획득하는 것,
    각각 암호화 재료의 하드웨어 보호를 제공하는 하드웨어 장치의 세트 외부에서 액세스될 수 없는 암호화 재료를 이용해 획득된 암호 키를 암호화하는 것 - 상기 암호화 재료는 만기가 시스템에 의해 실행되는 자동 프로세스에 의해 강제되는 경우 암호화 재료가 하드웨어 장치의 세트에 의해 액세스될 수 없게 되는 시점에 대응하는 만기를 가짐 - ,
    암호화된 암호 키를 제공하는 것, 및
    하드웨어 장치의 세트가 획득된 암호 키로의 액세스를 소실하게 하는 것
    에 의해, 암호 키에 대한 요청을 이행하도록 구성되는, 시스템.
  6. 제5항에 있어서,
    하나 이상의 서비스는 암호 키의 식별자를 포함하는 토큰을 생성하도록 더 구성되며,
    암호화된 암호 키를 제공하는 것은 생성된 토큰을 제공하는 것을 포함하는, 시스템.
  7. 제5항에 있어서, 상기 하나 이상의 서비스는
    암호 키를 이용해 암호화 작업을 수행하도록 제2 요청을 수신하도록 더 구성되며 - 제2 요청은 암호화된 암호 키를 포함함 - ,
    암호화 재료가 여전히 이용 가능한지 여부에 따라, 암호화된 암호 키를 해독하고 암호 키를 이용해 암호화 작업을 수행함으로써, 제2 요청을 이행하도록 더 구성된, 시스템.
  8. 제7항에 있어서, 상기 하나 이상의 서비스는
    암호화 작업을 수행하기 위한 제3 요청을 수신하도록 더 구성되며 - 상기 요청은 상기 하나 이상의 서비스에 의해 관리되는 제2 암호 키의 식별자를 특정함 - ,
    적어도, 데이터 저장 위치로부터 제2 암호 키의 암호화된 카피를 획득하는 것,
    상기 제2 암호 키의 암호화된 카피를 해독하는 것, 및
    암호화 작업을 수행하도록 제2 암호 키를 이용하는 것
    에 의해, 상기 요청을 이행하도록 더 구성되는, 시스템.
  9. 제5항에 있어서, 상기 하나 이상의 서비스는
    정책을 상기 암호 키와 연관시키도록 더 구성되며 - 상기 정책은 암호 키에 대한 권한의 세트를 특정함 - ,
    상기 정책에 따라 암호 키를 이용하기 위한 요청의 이행을 제어하도록 더 구성되는, 시스템.
  10. 제5항에 있어서, 상기 하나 이상의 서비스는
    암호화 재료의 만기를 적어도 부분적으로 기초로 하여 암호화 재료를 선택하도록 더 구성되며, 상기 만기는 상기 하나 이상의 서비스가 상기 암호화 재료로의 액세스를 소실할 시점을 가리키는, 시스템.
  11. 제5항에 있어서, 하드웨어 장치는 하드웨어 보안 모듈인, 시스템.
  12. 제5항에 있어서, 암호 키를 획득하는 것은
    상기 하나 이상의 서비스에 의해 액세스 가능한 데이터 저장 시스템으로부터 암호 키의 암호화된 카피를 불러오는 것, 및
    상기 암호화 재료와 상이한 타 암호화 재료를 이용해 암호 키의 암호화된 카피를 해독하는 것을 포함하는, 시스템.
  13. 실행 가능 명령이 저장된 비-일시적 컴퓨터 판독형 저장 매체로서, 제1 개체의 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행될 때 상기 컴퓨터 시스템으로 하여금 적어도:
    키 토큰에 대한 제1 요청에 대해:
    제1 암호 키의 암호화된 카피 및 상기 제1 암호 키를 암호화하는 데 사용되는 제2 암호 키를 식별하도록 이용 가능한 정보를 포함하는 키 토큰을 획득하게 하고 - 상기 제2 암호 키는 상기 제2 암호 키를 관리하는 하드웨어 장치의 세트 외부에서 액세스 불가능하며, 키 토큰을 획득하는 것에 의해 제1 암호 키는 키 토큰이 생성된 후 개체에 의해 액세스될 수 없게 되며, 제2 암호 키는 제2 암호 키가 하드웨어 장치의 세트에 의해 액세스될 수 없게 되는 시점을 가리키는 만기를 가짐 - , 및
    키 토큰에 대한 제2 요청에 대해 - 제2 요청은 제2 개체와 연관됨 - :
    키 토큰을 획득하게 하고,
    만기에 의해 지시되는 시점이 아직 도래하지 않은 경우, 하드웨어 장치의 세트의 하드웨어 장치가 제1 암호 키를 해독하게 하며 해독된 제1 암호 키가 하나 이상의 암호화 작업을 수행하게 하며 하나 이상의 암호화 작업의 결과를 컴퓨터 시스템에 제공하게 하며,
    제공된 결과를 적어도 부분적으로 기초로 하여 제2 요청으로 응답을 제공하게 하는, 비-일시적 컴퓨터 판독형 저장 매체.
  14. 제13항에 있어서, 상기 키 토큰을 획득하기 위한 명령이 하나 이상의 프로세서에 의해 실행될 때, 컴퓨터 시스템으로 하여금, 제1 요청의 수신의 결과로서 키 토큰이 생성되게 하도록 명령이 구성되는, 비-일시적 컴퓨터 판독형 저장 매체.
  15. 제13항에 있어서, 키 토큰을 획득하기 위한 명령이 하나 이상의 프로세서에 의해 실행될 때, 컴퓨터 시스템으로 하여금, 하드웨어 장치의 세트의 하나의 하드웨어 장치로 키 토큰의 생성을 야기하는 명령어를 발행하게 하는, 비-일시적 컴퓨터 판독형 저장 매체.
KR1020177030633A 2015-03-31 2016-03-25 키 내보내기 기법 KR101985187B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020197015198A KR102311843B1 (ko) 2015-03-31 2016-03-25 키 내보내기 기법

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/675,614 2015-03-31
US14/675,614 US10469477B2 (en) 2015-03-31 2015-03-31 Key export techniques
PCT/US2016/024302 WO2016160597A1 (en) 2015-03-31 2016-03-25 Key export techniques

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197015198A Division KR102311843B1 (ko) 2015-03-31 2016-03-25 키 내보내기 기법

Publications (2)

Publication Number Publication Date
KR20170131577A true KR20170131577A (ko) 2017-11-29
KR101985187B1 KR101985187B1 (ko) 2019-06-04

Family

ID=55661646

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197015198A KR102311843B1 (ko) 2015-03-31 2016-03-25 키 내보내기 기법
KR1020177030633A KR101985187B1 (ko) 2015-03-31 2016-03-25 키 내보내기 기법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197015198A KR102311843B1 (ko) 2015-03-31 2016-03-25 키 내보내기 기법

Country Status (9)

Country Link
US (2) US10469477B2 (ko)
EP (1) EP3278533A1 (ko)
JP (2) JP6499310B2 (ko)
KR (2) KR102311843B1 (ko)
CN (2) CN113381857A (ko)
AU (3) AU2016243115B2 (ko)
CA (2) CA2980590C (ko)
SG (1) SG11201707796PA (ko)
WO (1) WO2016160597A1 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9930066B2 (en) 2013-02-12 2018-03-27 Nicira, Inc. Infrastructure level LAN security
US11087006B2 (en) 2014-06-30 2021-08-10 Nicira, Inc. Method and apparatus for encrypting messages based on encryption group association
US10798073B2 (en) * 2016-08-26 2020-10-06 Nicira, Inc. Secure key management protocol for distributed network encryption
GB2556638B (en) * 2016-12-02 2018-12-12 Gurulogic Microsystems Oy Protecting usage of key store content
US10489307B2 (en) * 2017-01-05 2019-11-26 Pure Storage, Inc. Periodically re-encrypting user data stored on a storage device
KR102468390B1 (ko) * 2017-05-31 2022-11-18 삼성에스디에스 주식회사 토큰 관리 방법 및 이를 수행하기 위한 서버
WO2018236420A1 (en) * 2017-06-20 2018-12-27 Google Llc CLOUD EQUIPMENT SECURITY MODULES FOR CRYPTOGRAPHIC EXTERNALIZATION OPERATIONS
US10505938B2 (en) * 2017-07-21 2019-12-10 Schlage Lock Company Llc Leveraging flexible distributed tokens in an access control system
US10536267B2 (en) * 2017-09-15 2020-01-14 Visa International Service Association Cryptographic services utilizing commodity hardware
KR101967380B1 (ko) * 2017-10-31 2019-08-13 삼성에스디에스 주식회사 키 관리 시스템
US11095446B2 (en) * 2018-02-27 2021-08-17 Anchor Labs, Inc. Cryptoasset custodial system with different rules governing access to logically separated cryptoassets and proof-of-stake blockchain support
CN110677250B (zh) 2018-07-02 2022-09-02 阿里巴巴集团控股有限公司 密钥和证书分发方法、身份信息处理方法、设备、介质
US20200036705A1 (en) * 2018-07-27 2020-01-30 Jasper Chee Pang LEE Strong password by convention methods and systems
CN110795774B (zh) 2018-08-02 2023-04-11 阿里巴巴集团控股有限公司 基于可信高速加密卡的度量方法、设备和系统
CN110795742B (zh) 2018-08-02 2023-05-02 阿里巴巴集团控股有限公司 高速密码运算的度量处理方法、装置、存储介质及处理器
CN110874478B (zh) 2018-08-29 2023-05-02 阿里巴巴集团控股有限公司 密钥处理方法及装置、存储介质和处理器
US11082235B2 (en) 2019-02-14 2021-08-03 Anchor Labs, Inc. Cryptoasset custodial system with different cryptographic keys controlling access to separate groups of private keys
US11240022B1 (en) * 2019-04-11 2022-02-01 Wells Fargo Bank, N.A. Passive encryption rotation keys
US11698981B2 (en) * 2019-06-14 2023-07-11 Mongodb, Inc. Systems and methods for client-side and field-level encryption with dynamic schema databases
US11301845B2 (en) 2019-08-19 2022-04-12 Anchor Labs, Inc. Cryptoasset custodial system with proof-of-stake blockchain support
US11494763B2 (en) 2019-08-19 2022-11-08 Anchor Labs, Inc. Cryptoasset custodial system with custom logic
US11562349B2 (en) 2019-08-20 2023-01-24 Anchor Labs, Inc. Risk mitigation for a cryptoasset custodial system using data points from multiple mobile devices
US11100497B2 (en) 2019-08-20 2021-08-24 Anchor Labs, Inc. Risk mitigation for a cryptoasset custodial system using a hardware security key
US11501291B2 (en) * 2019-08-23 2022-11-15 Anchor Labs, Inc. Cryptoasset custodial system using encrypted and distributed client keys
US11838413B2 (en) * 2019-10-22 2023-12-05 Synamedia Limited Content recognition systems and methods for encrypted data structures
US11259082B2 (en) 2019-10-22 2022-02-22 Synamedia Limited Systems and methods for data processing, storage, and retrieval from a server
US11159330B1 (en) 2019-10-24 2021-10-26 Whatsapp Llc. Rendering online content via secured URL
US11308228B1 (en) 2019-10-24 2022-04-19 Whatsapp Inc. Providing access for online content via secured URL
CN110809035B (zh) * 2019-10-25 2021-12-03 广州查正源电子科技有限公司 一种去中心化防伪数据生成和管理方法及系统
US11522684B2 (en) 2020-09-24 2022-12-06 Capital One Services, Llc Key rotation service
CN114629652A (zh) * 2020-12-11 2022-06-14 熵码科技股份有限公司 基于物理不可复制函数的密钥管理系统及其操作方法
US11223489B1 (en) 2021-02-23 2022-01-11 Garantir LLC Advanced security control implementation of proxied cryptographic keys
US11418329B1 (en) * 2021-05-28 2022-08-16 Garantir LLC Shared secret implementation of proxied cryptographic keys
US11218317B1 (en) 2021-05-28 2022-01-04 Garantir LLC Secure enclave implementation of proxied cryptographic keys
US11502827B1 (en) 2021-09-03 2022-11-15 Garantir LLC Exporting remote cryptographic keys

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030217289A1 (en) * 2002-05-17 2003-11-20 Ken Ammon Method and system for wireless intrusion detection
US20050066175A1 (en) * 2003-09-18 2005-03-24 Perlman Radia J. Ephemeral decryption utilizing blinding functions
US20080019527A1 (en) * 2006-03-03 2008-01-24 Paul Youn Method and apparatus for managing cryptographic keys
US20120272052A1 (en) * 2011-04-21 2012-10-25 Peer Wichmann Method for generating a cryptographic key for a protected digital data object on the basis of current components of a computer

Family Cites Families (142)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4868877A (en) 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US4918728A (en) 1989-08-30 1990-04-17 International Business Machines Corporation Data cryptography operations using control vectors
US5146498A (en) 1991-01-10 1992-09-08 Motorola, Inc. Remote key manipulations for over-the-air re-keying
US5201000A (en) 1991-09-27 1993-04-06 International Business Machines Corporation Method for generating public and private key pairs without using a passphrase
US5495533A (en) 1994-04-29 1996-02-27 International Business Machines Corporation Personal key archive
US5761306A (en) 1996-02-22 1998-06-02 Visa International Service Association Key replacement in a public key cryptosystem
JPH1041933A (ja) 1996-07-22 1998-02-13 Fuji Xerox Co Ltd 復号装置
US6253323B1 (en) 1996-11-01 2001-06-26 Intel Corporation Object-based digital signatures
US6546492B1 (en) 1999-03-26 2003-04-08 Ericsson Inc. System for secure controlled electronic memory updates via networks
JP2000295209A (ja) 1999-04-09 2000-10-20 Ntt Data Corp 鍵管理方法、鍵管理システム及び記録媒体
SE9904094D0 (sv) 1999-11-12 1999-11-12 Protegrity Research & Dev Method for reencryption of a database
US6826609B1 (en) 2000-03-31 2004-11-30 Tumbleweed Communications Corp. Policy enforcement in a secure data file delivery system
DE10025626A1 (de) 2000-05-24 2001-11-29 Deutsche Telekom Ag Verschlüsseln von abzuspeichernden Daten in einem IV-System
US8538843B2 (en) 2000-07-17 2013-09-17 Galactic Computing Corporation Bvi/Bc Method and system for operating an E-commerce service provider
US6986040B1 (en) 2000-11-03 2006-01-10 Citrix Systems, Inc. System and method of exploiting the security of a secure communication channel to secure a non-secure communication channel
US20050120232A1 (en) 2000-11-28 2005-06-02 Yoshihiro Hori Data terminal managing ciphered content data and license acquired by software
US7181017B1 (en) 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
US7050583B2 (en) 2001-03-29 2006-05-23 Etreppid Technologies, Llc Method and apparatus for streaming data using rotating cryptographic keys
CA2358048A1 (en) 2001-09-25 2003-03-25 Luis Rueda A cryptosystem for data security
US7200747B2 (en) 2001-10-31 2007-04-03 Hewlett-Packard Development Company, L.P. System for ensuring data privacy and user differentiation in a distributed file system
US7243366B2 (en) 2001-11-15 2007-07-10 General Instrument Corporation Key management protocol and authentication system for secure internet protocol rights management architecture
US20020076044A1 (en) 2001-11-16 2002-06-20 Paul Pires Method of and system for encrypting messages, generating encryption keys and producing secure session keys
US7580972B2 (en) 2001-12-12 2009-08-25 Valve Corporation Method and system for controlling bandwidth on client and server
US7117366B2 (en) 2002-01-08 2006-10-03 International Business Machines Corporation Public key based authentication method for transaction delegation in service-based computing environments
US7376967B1 (en) 2002-01-14 2008-05-20 F5 Networks, Inc. Method and system for performing asynchronous cryptographic operations
JP3897613B2 (ja) 2002-02-27 2007-03-28 株式会社日立製作所 公開鍵暗号方式における登録局サーバの運用方法、登録局サーバ、及びプログラム
US20030188188A1 (en) 2002-03-15 2003-10-02 Microsoft Corporation Time-window-constrained multicast for future delivery multicast
US7890771B2 (en) 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
US20040009815A1 (en) 2002-06-26 2004-01-15 Zotto Banjamin O. Managing access to content
US7620680B1 (en) 2002-08-15 2009-11-17 Microsoft Corporation Fast byzantine paxos
US7877607B2 (en) 2002-08-30 2011-01-25 Hewlett-Packard Development Company, L.P. Tamper-evident data management
FR2844656B1 (fr) 2002-09-18 2005-01-28 France Telecom Procede de signature electronique, programme et serveur pour la mise en oeuvre du procede
US20040107345A1 (en) 2002-10-21 2004-06-03 Brandt David D. System and methodology providing automation security protocols and intrusion detection in an industrial controller environment
US7565419B1 (en) 2002-11-22 2009-07-21 Symantec Operating Corporation Conflict resolution in a peer to peer network
US20040143733A1 (en) 2003-01-16 2004-07-22 Cloverleaf Communication Co. Secure network data storage mediator
GB2400699B (en) 2003-04-17 2006-07-05 Hewlett Packard Development Co Security data provision method and apparatus and data recovery method and system
JP2005151529A (ja) 2003-10-20 2005-06-09 Sony Corp データ伝送方法、データ伝送装置及びデータ受信装置
US7296023B2 (en) 2004-01-15 2007-11-13 International Business Machines Corporation Method and apparatus for persistent real-time collaboration
EP2267624B1 (en) 2004-04-19 2017-07-12 Lumension Security S.A. A generic framework for runtime interception and execution control of interpreted languages
JP4532484B2 (ja) 2004-05-17 2010-08-25 三菱電機株式会社 量子暗号通信装置
US20060010323A1 (en) 2004-07-07 2006-01-12 Xerox Corporation Method for a repository to provide access to a document, and a repository arranged in accordance with the same method
EP1768303A1 (en) 2004-07-15 2007-03-28 Matsushita Electric Industrial Co., Ltd. Time authentication device, time authentication method, computer program, recording medium, integrated circuit, and time authentication system
US20060021018A1 (en) 2004-07-21 2006-01-26 International Business Machines Corporation Method and system for enabling trust infrastructure support for federated user lifecycle management
WO2006026737A2 (en) 2004-08-31 2006-03-09 Ntt Docomo Inc. Revocation of cryptographic digital certificates
WO2006027933A1 (ja) 2004-09-03 2006-03-16 Nec Corporation グループ署名システム、メンバ状態判定装置、グループ署名方法及びメンバ状態判定プログラム
JP2006120089A (ja) 2004-10-25 2006-05-11 Ntt Docomo Inc データ管理システム及びデータ管理方法
JP2006127349A (ja) 2004-11-01 2006-05-18 Ntt Communications Kk デジタル著作権管理装置およびプログラム
JP4714482B2 (ja) 2005-02-28 2011-06-29 株式会社日立製作所 暗号通信システムおよび方法
US7900247B2 (en) 2005-03-14 2011-03-01 Microsoft Corporation Trusted third party authentication for web services
US7774826B1 (en) 2005-03-18 2010-08-10 Novell, Inc. System and method for determining effective policy profiles in a client-server architecture
US8295492B2 (en) 2005-06-27 2012-10-23 Wells Fargo Bank, N.A. Automated key management system
US7784087B2 (en) 2005-08-04 2010-08-24 Toshiba Corporation System and method for securely sharing electronic documents
US8566607B2 (en) 2005-08-26 2013-10-22 International Business Machines Corporation Cryptography methods and apparatus used with a processor
JP4569464B2 (ja) 2005-12-20 2010-10-27 沖電気工業株式会社 マルチホップネットワークにおける鍵更新システム,鍵管理装置,通信端末および鍵情報構築方法
US7912994B2 (en) 2006-01-27 2011-03-22 Apple Inc. Reducing connection time for mass storage class peripheral by internally prefetching file data into local cache in response to connection to host
JP4226606B2 (ja) 2006-02-06 2009-02-18 株式会社コナミデジタルエンタテインメント 通信装置、通信方法、ならびに、プログラム
US8064604B2 (en) 2006-04-04 2011-11-22 Oracle International Corporation Method and apparatus for facilitating role-based cryptographic key management for a database
US9002018B2 (en) 2006-05-09 2015-04-07 Sync Up Technologies Corporation Encryption key exchange system and method
US20070283446A1 (en) 2006-06-05 2007-12-06 Kabushiki Kaisha Toshiba System and method for secure handling of scanned documents
US20080028470A1 (en) 2006-07-25 2008-01-31 Mark Remington Systems and Methods for Vulnerability Detection and Scoring with Threat Assessment
US8689287B2 (en) 2006-08-17 2014-04-01 Northrop Grumman Systems Corporation Federated credentialing system and method
US20100316219A1 (en) 2007-08-06 2010-12-16 David Boubion Systems and methods for simultaneous integrated multiencrypted rotating key communication
US7953978B2 (en) 2006-09-07 2011-05-31 International Business Machines Corporation Key generation and retrieval using key servers
US8407806B2 (en) 2006-09-29 2013-03-26 Purusharth Agrawal Digital data distribution detection, deterrence and disablement system and method
GB2443244A (en) 2006-10-05 2008-04-30 Hewlett Packard Development Co Authenticated Encryption Method and Apparatus
CN101166259B (zh) * 2006-10-16 2010-11-10 华为技术有限公司 手机电视业务保护方法、系统、手机电视服务器及终端
JP4712017B2 (ja) 2006-11-13 2011-06-29 韓國電子通信研究院 ストリーム暗号を利用したメッセージ認証コード生成方法とストリーム暗号を利用した認証暗号化方法及びストリーム暗号を利用した認証復号化方法
AU2007331763B2 (en) 2006-12-12 2011-06-30 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Encoder, decoder and methods for encoding and decoding data segments representing a time-domain data stream
US20080172562A1 (en) 2007-01-12 2008-07-17 Christian Cachin Encryption and authentication of data and for decryption and verification of authenticity of data
JP4890309B2 (ja) 2007-03-19 2012-03-07 株式会社リコー 情報処理装置及び情報保護方法
US8218761B2 (en) 2007-04-06 2012-07-10 Oracle International Corporation Method and apparatus for generating random data-encryption keys
US9521090B2 (en) 2007-06-04 2016-12-13 Qualcomm Incorporated Authorizing stations into a centrally managed network
US20080319909A1 (en) 2007-06-25 2008-12-25 Perkins George S System and method for managing the lifecycle of encryption keys
US8650038B2 (en) 2007-07-17 2014-02-11 William Howard Peirson, JR. Systems and processes for obtaining and managing electronic signatures for real estate transaction documents
US8111828B2 (en) 2007-07-31 2012-02-07 Hewlett-Packard Development Company, L.P. Management of cryptographic keys for securing stored data
US8140847B1 (en) 2007-09-18 2012-03-20 Jianqing Wu Digital safe
CN101400059B (zh) 2007-09-28 2010-12-08 华为技术有限公司 一种active状态下的密钥更新方法和设备
KR100980831B1 (ko) 2007-12-12 2010-09-10 한국전자통신연구원 일회용 패스워드를 이용한 신뢰성 있는 통신 시스템 및방법
US8495357B2 (en) 2007-12-19 2013-07-23 International Business Machines Corporation Data security policy enforcement
WO2009104873A2 (en) 2008-02-19 2009-08-27 Lg Electronics Inc. Method and device for managing authorization of right object in digital rights management
US8681990B2 (en) 2008-03-28 2014-03-25 International Business Machines Corporation Renewal management for data items
US8225106B2 (en) 2008-04-02 2012-07-17 Protegrity Corporation Differential encryption utilizing trust modes
US8494168B1 (en) 2008-04-28 2013-07-23 Netapp, Inc. Locating cryptographic keys stored in a cache
US8589697B2 (en) 2008-04-30 2013-11-19 Netapp, Inc. Discarding sensitive data from persistent point-in-time image
US20090300356A1 (en) 2008-05-27 2009-12-03 Crandell Jeffrey L Remote storage encryption system
US20100014662A1 (en) 2008-06-19 2010-01-21 Sami Antti Jutila Method, apparatus and computer program product for providing trusted storage of temporary subscriber data
WO2009157142A1 (ja) 2008-06-23 2009-12-30 パナソニック株式会社 情報処理装置、暗号鍵の管理方法、コンピュータプログラム及び集積回路
GB0811897D0 (en) 2008-06-30 2008-07-30 Steed Darren Intelligent file encapsulation
US8261320B1 (en) 2008-06-30 2012-09-04 Symantec Corporation Systems and methods for securely managing access to data
JP4620146B2 (ja) 2008-07-18 2011-01-26 株式会社東芝 情報処理装置及び認証方法
US8302170B2 (en) 2008-09-22 2012-10-30 Bespoke Innovations S.A.R.L. Method for enhancing network application security
US8804950B1 (en) 2008-09-30 2014-08-12 Juniper Networks, Inc. Methods and apparatus for producing a hash value based on a hash function
JP2010087888A (ja) 2008-09-30 2010-04-15 Onkyo Corp 暗号鍵配信システム、暗号鍵配信サーバ、コンテンツ配信サーバ、及びクライアント
US8699704B2 (en) 2010-01-13 2014-04-15 Entropic Communications, Inc. Secure node admission in a communication network
US9165154B2 (en) 2009-02-16 2015-10-20 Microsoft Technology Licensing, Llc Trusted cloud computing and services framework
US8245037B1 (en) 2009-02-17 2012-08-14 Amazon Technologies, Inc. Encryption key management
US8284945B2 (en) 2009-06-02 2012-10-09 Hewlett-Packard Development Company, L.P. Automatic change of symmetrical encryption key
US9031876B2 (en) 2009-06-19 2015-05-12 Hewlett-Packard Development Company, L.P. Managing keys for encrypted shared documents
US8799322B2 (en) 2009-07-24 2014-08-05 Cisco Technology, Inc. Policy driven cloud storage management and cloud storage policy router
US8904169B2 (en) 2009-09-15 2014-12-02 Symantec Corporation Just in time trust establishment and propagation
US9311465B2 (en) 2009-09-21 2016-04-12 James McNulty Secure information storage and retrieval apparatus and method
IL201351A0 (en) 2009-10-01 2010-05-31 Michael Feldbau Device and method for electronic signature via proxy
DE102009046436A1 (de) 2009-11-05 2011-05-12 Robert Bosch Gmbh Kryptographisches Hardwaremodul bzw. Verfahren zur Aktualisierung eines kryptographischen Schlüssels
EP2513832A1 (en) 2009-12-18 2012-10-24 Koninklijke Philips Electronics N.V. Digital rights management using attribute-based encryption
GB201000288D0 (en) 2010-01-11 2010-02-24 Scentrics Information Security System and method of enforcing a computer policy
US20110213971A1 (en) 2010-03-01 2011-09-01 Nokia Corporation Method and apparatus for providing rights management at file system level
US8667269B2 (en) 2010-04-02 2014-03-04 Suridx, Inc. Efficient, secure, cloud-based identity services
EP2378451B1 (en) 2010-04-19 2018-07-04 Vodafone Holding GmbH User authentication in a tag-based service
US8601600B1 (en) 2010-05-18 2013-12-03 Google Inc. Storing encrypted objects
US20120079289A1 (en) 2010-09-27 2012-03-29 Skymedi Corporation Secure erase system for a solid state non-volatile memory device
US8401186B2 (en) 2010-11-29 2013-03-19 Beijing Z&W Technology Consulting Co., Ltd. Cloud storage data access method, apparatus and system based on OTP
US8565422B2 (en) * 2010-12-03 2013-10-22 Salesforce.Com, Inc. Method and system for enryption key versioning and key rotation in a multi-tenant environment
KR101145766B1 (ko) 2010-12-10 2012-05-16 고려대학교 산학협력단 보안 서비스 제공 시스템 및 방법
US8478858B2 (en) 2011-02-01 2013-07-02 Limelight Networks, Inc. Policy management for content storage in content delivery networks
US8588426B2 (en) 2011-02-21 2013-11-19 Blackberry Limited Methods and apparatus to secure communications in a mobile network
US8850593B2 (en) 2011-05-12 2014-09-30 Hewlett-Packard Development Company, L.P. Data management using a virtual machine-data image
US9076020B2 (en) 2011-05-13 2015-07-07 Microsoft Technology Licensing, Llc Protected mode for mobile communication and other devices
US9049023B2 (en) 2011-05-24 2015-06-02 Zeutro Llc Outsourcing the decryption of functional encryption ciphertexts
US9154477B2 (en) 2011-05-26 2015-10-06 First Data Corporation Systems and methods for encrypting mobile device communications
KR20120134509A (ko) 2011-06-02 2012-12-12 삼성전자주식회사 어플리케이션 개발 시스템에서 디바이스용 어플리케이션을 생성 및 설치하기 위한 장치 및 방법
US8516244B2 (en) 2011-06-10 2013-08-20 Zeutro Llc System, apparatus and method for decentralizing attribute-based encryption information
US20120323990A1 (en) 2011-06-15 2012-12-20 Microsoft Corporation Efficient state reconciliation
US8806204B2 (en) 2011-06-20 2014-08-12 Liaison Technologies, Inc. Systems and methods for maintaining data security across multiple active domains
US8751807B2 (en) 2011-06-23 2014-06-10 Azuki Systems Inc. Method and system for secure over-the-top live video delivery
US9009315B2 (en) 2011-07-28 2015-04-14 Telefonaktiebolaget L M Ericsson (Publ) Hierarchical delegation and reservation of lookup keys
US8798273B2 (en) 2011-08-19 2014-08-05 International Business Machines Corporation Extending credential type to group Key Management Interoperability Protocol (KMIP) clients
US8788843B2 (en) 2011-10-28 2014-07-22 LogMeln, Inc. Storing user data in a service provider cloud without exposing user-specific secrets to the service provider
US8774403B2 (en) 2011-12-08 2014-07-08 Dark Matter Labs, Inc. Key creation and rotation for data encryption
US8639951B2 (en) 2011-12-19 2014-01-28 International Business Machines Corporation States for breakout appliance in a mobile data network
US8954758B2 (en) 2011-12-20 2015-02-10 Nicolas LEOUTSARAKOS Password-less security and protection of online digital assets
US9449183B2 (en) 2012-01-28 2016-09-20 Jianqing Wu Secure file drawer and safe
US9237446B2 (en) 2012-05-24 2016-01-12 Blackberry Limited System and method for controlling access to media content
US9590959B2 (en) 2013-02-12 2017-03-07 Amazon Technologies, Inc. Data security service
WO2014011453A2 (en) 2012-07-09 2014-01-16 Jvl Ventures, Llc Systems, methods, and computer program products for integrating third party services with a mobile wallet
US9137222B2 (en) 2012-10-31 2015-09-15 Vmware, Inc. Crypto proxy for cloud storage services
US8713311B1 (en) 2012-11-07 2014-04-29 Google Inc. Encryption using alternate authentication key
US8997197B2 (en) 2012-12-12 2015-03-31 Citrix Systems, Inc. Encryption-based data access management
US10038679B2 (en) 2012-12-24 2018-07-31 Intel Corporation Centralized secure device pairing
JP6112874B2 (ja) 2013-01-21 2017-04-12 キヤノン株式会社 通信装置、通信装置の制御方法、および、プログラム
US9547771B2 (en) 2013-02-12 2017-01-17 Amazon Technologies, Inc. Policy enforcement with associated data
US9311500B2 (en) * 2013-09-25 2016-04-12 Amazon Technologies, Inc. Data security using request-supplied keys
US9094453B2 (en) 2013-11-06 2015-07-28 Google Technology Holdings LLC Method and apparatus for associating mobile devices using audio signature detection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030217289A1 (en) * 2002-05-17 2003-11-20 Ken Ammon Method and system for wireless intrusion detection
US20050066175A1 (en) * 2003-09-18 2005-03-24 Perlman Radia J. Ephemeral decryption utilizing blinding functions
US20080019527A1 (en) * 2006-03-03 2008-01-24 Paul Youn Method and apparatus for managing cryptographic keys
US20120272052A1 (en) * 2011-04-21 2012-10-25 Peer Wichmann Method for generating a cryptographic key for a protected digital data object on the basis of current components of a computer

Also Published As

Publication number Publication date
US20200099674A1 (en) 2020-03-26
US10469477B2 (en) 2019-11-05
AU2019203153B2 (en) 2021-06-10
US20170006018A1 (en) 2017-01-05
KR101985187B1 (ko) 2019-06-04
CN113381857A (zh) 2021-09-10
SG11201707796PA (en) 2017-10-30
JP2019118135A (ja) 2019-07-18
CN107534667A (zh) 2018-01-02
JP6838799B2 (ja) 2021-03-03
CA3147153A1 (en) 2016-10-06
US11374916B2 (en) 2022-06-28
JP6499310B2 (ja) 2019-04-10
CA2980590A1 (en) 2016-10-06
EP3278533A1 (en) 2018-02-07
WO2016160597A1 (en) 2016-10-06
AU2021229223A1 (en) 2021-10-07
AU2019203153A1 (en) 2019-05-30
AU2016243115A1 (en) 2017-10-19
AU2016243115B2 (en) 2019-02-07
CN107534667B (zh) 2021-07-30
JP2018511247A (ja) 2018-04-19
KR102311843B1 (ko) 2021-10-14
AU2019203153B9 (en) 2021-06-24
KR20190062615A (ko) 2019-06-05
CA2980590C (en) 2022-04-12

Similar Documents

Publication Publication Date Title
KR101985187B1 (ko) 키 내보내기 기법
US11870816B1 (en) Trusted-code generated requests
US11671425B2 (en) Cross-region requests
US20240126895A1 (en) Data security using request-supplied keys
US10680827B2 (en) Asymmetric session credentials
US11184155B2 (en) Cryptographic key management for imported cryptographic keys
US20220166631A1 (en) Complete forward access sessions
US10182044B1 (en) Personalizing global session identifiers
US10721075B2 (en) Web of trust management in a distributed system
US10277569B1 (en) Cross-region cache of regional sessions
US10728031B2 (en) Durable cryptographic keys
US9596263B1 (en) Obfuscation and de-obfuscation of identifiers
US10003584B1 (en) Durable key management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant