KR20230056777A - 암호화 키들의 안전하고 효율적인 분배 - Google Patents

암호화 키들의 안전하고 효율적인 분배 Download PDF

Info

Publication number
KR20230056777A
KR20230056777A KR1020237010624A KR20237010624A KR20230056777A KR 20230056777 A KR20230056777 A KR 20230056777A KR 1020237010624 A KR1020237010624 A KR 1020237010624A KR 20237010624 A KR20237010624 A KR 20237010624A KR 20230056777 A KR20230056777 A KR 20230056777A
Authority
KR
South Korea
Prior art keywords
key
tablet
resource key
resource
servers
Prior art date
Application number
KR1020237010624A
Other languages
English (en)
Inventor
로힛 조그
크리스티나 슈미트
클리포드 아서 프레이
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20230056777A publication Critical patent/KR20230056777A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

방법은 복수의 데이터 블록(154)을 포함하는 테이블(158)을 수신하고 데이터 블록들의 대응하는 부분을 포함하는 복수의 태블릿들(159)로 테이블을 분할한다. 방법은 또한, 테이블과 고유하게 연관된 자원 키(172)를 생성하는 단계, 및 각각의 태블릿에 대해, 고유 데이터 암호화 키로 암호화하기 위해 대응하는 태블릿에 대한 고유 데이터 암호화 키(182)를 생성하는 단계를 포함한다. 방법은 또한, 자원 키로 각각의 데이터 암호화 키를 암호화하는 단계; 각각의 암호화된 태블릿 및 각각의 대응하는 암호화된 데이터 암호화 키의 제어를, 각각이 암호화된 태블릿들의 하나 이상을 제어하는 복수의 태블릿 서버들(150)에 분배하는 단계를 포함한다. 자원 키는 원격 엔티티(190)에 송신하여 원격 엔티티가 사용자 키(192)로 자원 키를 암호화하고 암호화된 자원 키를 송신하게 한다.

Description

암호화 키들의 안전하고 효율적인 분배
[0001] 본 개시내용은 암호화 키들을 안전하고 효율적으로 분배하는 것에 관한 것이다.
[0002] 클라우드에 많은 양의 데이터의 저장이 더욱 보편화됨에 따라 클라우드 컴퓨팅은 인기가 증가하였다. 클라우드에 저장되는 점점 더 많은 양의 데이터를 보호하기 위해 암호화의 사용이 또한 증가하였다. 클라우드 서비스 제공자들은 비인가 사용자들에 의한 액세스로부터 고객 데이터를 보호하기 위해 암호화 키들을 관리한다. 일부 고객들은 자체 암호화 키들을 생성하도록 선택할 수 있으며, 이는 키 관리에 또 다른 복잡성 계층을 추가한다. 점점 더 많은 양의 데이터가 클라우드 상에 저장되고 암호화가 복잡해짐에 따라, 암호화 키들의 관리는 종종 번거로운 프로세스이다.
[0003] 본 개시내용의 한 양상은 암호화 키들을 안전하고 효율적으로 분배하기 위한 방법을 제공한다. 방법은 데이터 프로세싱 하드웨어에서, 특정 사용자와 연관된 테이블을 수신하는 것을 포함한다. 테이블은 복수의 데이터 블록들을 포함한다. 방법은 또한 데이터 프로세싱 하드웨어에 의해, 테이블을 복수의 태블릿들로 분할하는 것을 포함한다. 각각의 태블릿은 테이블의 복수의 데이터 블록들의 대응하는 부분을 포함한다. 방법은 또한 데이터 프로세싱 하드웨어에 의해, 테이블과 고유하게 연관된 자원 키를 생성하는 것을 포함한다. 복수의 태블릿들의 각각의 태블릿에 대해, 방법은 데이터 프로세싱 하드웨어에서, 대응하는 태블릿에 대한 고유 데이터 암호화 키를 생성하는 것; 그리고 데이터 프로세싱 하드웨어에 의해, 고유 데이터 암호화 키로 대응하는 태블릿을 암호화하는 것을 포함한다. 방법은 또한 데이터 프로세싱 하드웨어에 의해, 자원 키로 데이터 암호화 키를 암호화하는 것을 포함한다. 방법은 데이터 프로세싱 하드웨어에 의해, 각각의 암호화된 태블릿 및 각각의 대응하는 암호화된 데이터 암호화 키의 제어를 복수의 태블릿 서버들에 분배하는 것을 포함한다. 복수의 태블릿 서버들 내 각각의 태블릿 서버는 복수의 태블릿 서버들 내 각각의 다른 태블릿 서버에 독립적이 고 테이블로부터 암호화된 태블릿들 중 하나 이상을 제어한다. 방법은, 데이터 프로세싱 하드웨어에 의해, 자원 키를 원격 엔티티에 송신하는 것을 포함하고, 이 자원 키는 원격 엔티티에 의해 수신될 때, 원격 엔티티로 하여금, 특정 사용자와 연관되고 데이터 프로세싱 하드웨어로부터 비밀로 유지되는 사용자 키로 자원 키를 암호화하고; 그리고 암호화된 자원 키를 데이터 프로세싱 하드웨어에 송신하게 한다.
[0004] 본 개시내용의 구현들은 다음의 선택적인 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 방법은, 원격 엔티티로부터 암호화된 자원 키를 수신한 후: 데이터 프로세싱 하드웨어에 의해, 테이블의 하나 이상의 데이터 블록들에 액세스하라는 요청을 획득하는 것; 데이터 프로세싱 하드웨어에 의해, 암호화된 자원 키를 포함하는 자원 키 복호화 요청을 생성하는 것; 및 데이터 프로세싱 하드웨어에 의해, 자원 키 복호화 요청을 원격 엔티티에 송신하는 것을 더 포함한다. 이러한 구현들에서, 자원 키 복호화 요청을 송신하는 것은 원격 엔티티가 특정 사용자와 연관된 사용자 키로 암호화된 자원 키를 복호화하고 복호화된 자원 키를 데이터 프로세싱 하드웨어에 송신하게 한다. 일부 예들에서, 방법은 또한 복호화된 자원 키를 수신한 후, 데이터 프로세싱 하드웨어에 의해, ACL(access control list)과 연관된 액세스 제어 키로 복호화된 자원 키를 암호화하는 것을 포함한다. ACL은 자원 키에 액세스하도록 인가된 태블릿 서버들의 목록을 포함한다. 일부 구현들에서, 액세스 제어 목록은 복수의 태블릿 서버들 중 하나 이상의 태블릿 서버들에 할당된 역할에 기초한다. 선택적으로, 방법은 또한, 데이터 프로세싱 하드웨어에서, 복수의 태블릿 서버들 중의 태블릿 서버들의 하나로부터 복호화된 형태로 자원 키를 요청하는 자원 키 요청을 수신하는 것; 데이터 프로세싱 하드웨어에 의해, 태블릿 서버들 중 하나가 ACL; 기초하여 자원 키에 액세스하도록 인가되는지를 결정하는 것; 그리고 태블릿 서버들 중 하나가 자원 키에 액세스하도록 인가될 때, 데이터 프로세싱 하드웨어에 의해, 액세스 제어 키로 암호화된 자원 키를 복호화하고 데이터 프로세싱 하드웨어에 의해, 복호화된 자원 키를 태블릿 서버들 중 하나에 송신하는 것을 포함할 수 있다. 일부 예들에서, 복호화된 자원 키는 태블릿 서버들 중 하나에 의해 수신될 때, 태블릿 서버 중 하나로 하여금, 복호화된 자원 키를 사용하여, 태블릿 서버들 중 하나에 의해 제어되는 적어도 하나의 태블릿에 대응하는 데이터 암호화 키를 복호화하게 하고 복호화된 데이터 암호화 키를 사용하여, 대응하는 적어도 하나의 태블릿을 복호화하게 한다.
[0005] 자원 키는 만료 시간 제한을 포함할 수 있다. 선택적으로, 방법은 데이터 프로세싱 하드웨어에 의해, 자원 키의 만료 시간 제한보다 작은 회전 레이트로 자원 키를 회전시키는 것을 포함한다. 일부 예들에서, 만료 시간 제한 및 회전 레이트는 각각 특정 사용자에 의해 구성 가능하다. 일부 구현들에서, 각각의 태블릿의 데이터 블록의 대응하는 부분은 각각의 다른 태블릿의 데이터 블록들의 대응하는 부분들과 상이한 데이터 블록들을 포함한다.
[0006] 본 개시내용의 다른 양상은 암호화 키들을 안전하고 효율적으로 분배하기 위한 시스템을 제공한다. 시스템은 데이터 프로세싱 하드웨어 및 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어를 포함한다. 메모리 하드웨어는 명령들을 저장하며, 명령들은, 데이터 프로세싱 하드웨어 상에서 실행될 때, 데이터 프로세싱 하드웨어로 하여금 동작들을 수행하게 한다. 동작들은 특정 사용자와 연관된 테이블을 수신하는 것을 포함한다. 테이블은 복수의 데이터 블록들을 포함한다. 동작 들은 또한 테이블을 복수의 태블릿들로 분할하는 것을 포함한다. 각각의 태블릿은 테이블의 복수의 데이터 블록들의 대응하는 부분을 포함한다. 동작들은 또한 테이블과 고유하게 연관된 자원 키를 생성하는 것을 포함한다. 복수의 태블릿들의 각각의 태블릿에 대해, 동작들은 대응하는 태블릿에 대한 고유 데이터 암호화 키를 생성하는 것; 그리고 고유 데이터 암호화 키로 대응하는 태블릿을 암호화하는 것을 포함한다. 동작들은 또한, 자원 키로 데이터 암호화 키를 암호화하는 것을 포함한다. 동작들은 각각의 암호화된 태블릿 및 각각의 대응하는 암호화된 데이터 암호화 키의 제어를 복수의 태블릿 서버들에 분배하는 것을 포함한다. 복수의 태블릿 서버들 내 각각의 태블릿 서버는 복수의 태블릿 서버들 내 각각의 다른 태블릿 서버에 독립적이 고 테이블로부터 암호화된 태블릿들 중 하나 이상을 제어한다. 동작들은, 자원 키를 원격 엔티티에 송신하는 것을 포함하고, 이 자원 키는 원격 엔티티에 의해 수신될 때, 원격 엔티티로 하여금, 특정 사용자와 연관되고 데이터 프로세싱 하드웨어로부터 비밀로 유지되는 사용자 키로 자원 키를 암호화하고; 그리고 암호화된 자원 키를 데이터 프로세싱 하드웨어에 송신하게 한다.
[0007] 본 개시내용의 구현들은 다음의 선택적인 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 동작들은 또한, 원격 엔티티로부터 암호화된 자원 키를 수신한 후: 테이블의 하나 이상의 데이터 블록들에 액세스하라는 요청을 획득하는 것; 암호화된 자원 키를 포함하는 자원 키 복호화 요청을 생성하는 것; 및 자원 키 복호화 요청을 원격 엔티티에 송신하는 것을 더 포함한다. 자원 키 복호화 요청을 송신하는 것은 원격 엔티티가 특정 사용자와 연관된 사용자 키로 암호화된 자원 키를 복호화하고 복호화된 자원 키를 데이터 프로세싱 하드웨어에 송신하게 할 수 있다.
[0008] 일부 예들에서, 동작들은 또한 복호화된 자원 키를 수신한 후, ACL(access control list)과 연관된 액세스 제어 키로 복호화된 자원 키를 암호화하는 것을 포함한다. ACL은 자원 키에 액세스하도록 인가된 태블릿 서버들의 목록을 포함한다. 일부 구현들에서, 액세스 제어 목록은 복수의 태블릿 서버들 중 하나 이상의 태블릿 서버들에 할당된 역할에 기초한다. 선택적으로, 동작들은 또한, 복수의 태블릿 서버들 중의 태블릿 서버들의 하나로부터 복호화된 형태로 자원 키를 요청하는 자원 키 요청을 수신하는 것; 태블릿 서버들 중 하나가 ACL; 기초하여 자원 키에 액세스하도록 인가되는지를 결정하는 것; 그리고 태블릿 서버들 중 하나가 자원 키에 액세스하도록 인가될 때, 액세스 제어 키로 암호화된 자원 키를 복호화하고 복호화된 자원 키를 태블릿 서버들 중 하나에 송신하는 것을 포함할 수 있다. 일부 예들에서, 복호화된 자원 키는 태블릿 서버들 중 하나에 의해 수신될 때, 태블릿 서버 중 하나로 하여금, 복호화된 자원 키를 사용하여, 태블릿 서버들 중 하나에 의해 제어되는 적어도 하나의 태블릿에 대응하는 데이터 암호화 키를 복호화하게 하고 복호화된 데이터 암호화 키를 사용하여, 대응하는 적어도 하나의 태블릿을 복호화하게 한다.
[0009] 자원 키는 만료 시간 제한을 포함할 수 있다. 선택적으로 동작들은 자원 키의 만료 시간 제한보다 작은 회전 레이트로 자원 키를 회전시키는 것을 포함한다. 일부 예들에서, 만료 시간 제한 및 회전 레이트는 각각 특정 사용자에 의해 구성 가능하다. 일부 구현들에서, 각각의 태블릿의 데이터 블록의 대응하는 부분은 각각의 다른 태블릿의 데이터 블록들의 대응하는 부분들과 상이한 데이터 블록들을 포함한다.
[0010] 본 개시내용의 하나 이상의 구현들의 세부사항들은 첨부한 도면들 및 아래의 설명에서 기술된다. 다른 양상들, 특징들, 및 이점들은 설명 및 도면들, 그리고 청구항들로부터 명백할 것이다.
[0011] 도 1은 암호화 키들을 분배하기 위한 예시적인 시스템의 개략도이다.
[0012] 도 2는 도 1의 시스템의 예시적인 컴포넌트의 개략도이다.
[0013] 도 3은 암호화 키 도메인들의 개략도이다.
[0014] 도 4는 자원 키를 생성하기 위한 시퀀스 다이어그램의 개략도이다.
[0015] 도 5는 데이터 암호화 키들을 복호화하기 위한 시퀀스 다이어그램의 개략도이다.
[0016] 도 6은 암호화 키들을 분배하는 방법에 대한 동작들의 예시적인 어레인지먼트의 흐름도이다.
[0017] 도 7은 본원에서 설명된 시스템들 및 방법들을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스의 개략도이다.
[0018] 다양한 도면들 내의 유사한 참조 기호들은 유사한 엘리먼트들을 표시한다.
[0019] 클라우드 컴퓨팅 환경에서, 대규모 데이터(예컨대, 테이블들)의 모음들은 수천 개는 아니더라도 수백 개의 상이한 컴퓨팅 플랫폼들 이를테면, 서버들에 걸쳐 확산될 수 있다. 암호화의 사용을 통해 이 데이터에 대한 액세스를 보호하는 것이 종종 바람직하거나 필요하다. 예컨대, CMK(customer managed key)는 클라이언트가 클라이언트 자신의 키들로 클라우드에 분산된 데이터를 보호하도록 허용하는 아키텍처 패턴이다. 이는, 클라이언트만이 클라이언트의 데이터에 대한 액세스를 갖고 다른 누구도 클라이언트의 데이터에 대한 액세스를 갖지 않도록(심지어 클라우드 제공자 갖지 않음) 보장한다. 그러나 대량의 데이터 및 수천 개의 서버들을 처리할 때, 키들을 보호하고 분배하는 것은 논리적으로 어려워진다.
[0020] 여기에서의 구현들은 테이블의 부분들(즉, 태블릿들)의 제어를 복수의 서버들(즉, 태블릿 서버들)에 분배하는 키 관리 시스템에 관한 것이다. 시스템은 테이블과 연관된 고유한 자원 키 및 각각의 태블릿에 대한 고유 데이터 암호화 키들을 생성한다.
[0021] 데이터 암호화 키들은 자원 키에 의해 "래핑(wrap)"(즉, 암호화)되고 자원 키는 테이블과 연관된 사용자 또는 고객 또는 클라이언트와 연관된 사용자 키에 의해 래핑된다. 따라서, 사용자(예컨대, 데이터의 소유자)는 사용자 키를 제어함으로써 태블릿들에 저장된 데이터에 대한 액세스를 제어한다. 시스템은 액세스 제어 목록과 연관된 액세스 제어 키로 자원 키를 래핑할 수 있다. 액세스 제어 키 및 액세스 제어 목록을 사용하여, 시스템은 인가된 태블릿 서버만이 복호화된 자원 키에 대한 액세스를 획득하고 후속적으로 데이터 암호화 키들에 대한 액세스를 획득하도록 보장한다. 또한, 중간 자원 키 및 액세스 제어 키의 사용은 시스템이 요구하는 키 복호화 요청들에 대한 요청들의 수를 크게 감소시킨다. 따라서, 키 관리 시스템은 극도로 다수의 분산된 컴퓨팅 환경들에서 효율적으로 그리고 심지어 안전하게 키들을 분배한다.
[0022] 이제 도 1을 참조하면, 일부 구현들에서, 예시적인 키 관리 시스템(100)은 네트워크(112)를 통해 하나 이상의 사용자 디바이스들(10)과 통신하는 원격 시스템(140)을 포함한다. 원격 시스템(140)은 다수의 컴퓨터들, 또는 컴퓨팅 자원들(144)을 포함하는 확장 가능한/탄력적인 컴퓨팅 자원들(142)(예컨대, 데이터 프로세싱 하드웨어) 및/또는 저장 자원들(146)(예컨대, 메모리 하드웨어)을 갖는 분산 시스템(예컨대, 클라우드 환경)일 수 있다. 데이터 스토어(152)(즉, 원격 저장 디바이스)는 클라이언트들(예컨대, 사용자 디바이스(10)) 또는 컴퓨팅 자원들(144) 중 하나 이상에 의한 저장 자원들(146)의 확장 가능한 사용을 허용하기 위해 저장 자원들(146) 위에 놓일 수 있다. 데이터 스토어(152)는 하나 이상의 테이블들(158, 158a-n)(즉, 클라우드 데이터베이스) 내에 복수의 데이터 블록들(154, 154a-n)을 저장하도록 구성된다. 데이터 스토어(152)는 임의의 시점에 임의의 수의 사용자들(12)과 연관된 임의의 수의 테이블들(158)을 저장할 수 있다.
[0023] 원격 시스템(140)은 예컨대, 네트워크(112)를 통해 개개의 사용자(12)와 연관된 사용자 디바이스(10)로부터 테이블(158)을 수신하도록 구성된다. 사용자 디바이스(10)는 임의의 컴퓨팅 디바이스 이를테면, 데스크톱 워크스테이션, 랩톱 워크스테이션, 또는 모바일 디바이스(즉, 스마트 폰)에 대응할 수 있다. 사용자 디바이스(10)는 컴퓨팅 자원들(18)(예컨대, 데이터 프로세싱 하드웨어) 및/또는 저장 자원들(16)(예컨대, 메모리 하드웨어)을 포함한다. 원격 시스템(140)은 테이블(158)을 복수의 태블릿들(159, 159a-n)로 분할한다. 각각의 태블릿(159)은 테이블(158)의 복수의 데이터 블록들(154)의 대응하는 부분을 포함한다. 예컨대, 각각의 태블릿(159)은 테이블(158)의 행들 및/또는 열들의 개개의 부분을 포함한다. 일부 예들에서, 각각의 태블릿(159)은 대략 동일한 크기(즉, 대략 동일한 양의 데이터를 포함함)인 반면, 다른 예들에서 태블릿들(159)은 크기가 다양하다. 선택적으로, 각각의 태블릿의 데이터 블록의 대응하는 부분은 각각의 다른 태블릿의 데이터 블록들의 대응하는 부분들과 상이한 데이터 블록들을 포함한다.
[0024] 원격 시스템(140)은 자원 키 관리자(170) 및 데이터 키 관리자(180)를 포함하는 키 관리자(160)를 실행한다. 자원 키 관리자(170)는 테이블(158)과 고유하게 연관된 자원 키(172)를 생성한다. 즉, (동일한 사용자(12) 또는 상이한 사용자들로부터) 키 관리자(160)에 의해 수신된 각각의 테이블(158)에 대해 새로운 자원 키(172)가 생성되고 각각의 테이블(158)은 한 번에 단일 자원 키(172)와 연관된다. 데이터 키 관리자(180)는 테이블(158)의 복수의 태블릿들(159)의 각각의 태블릿(159)에 대해 고유 DEK(data encryption key)(182, 182a-n)를 생성한다. 데이터 키 관리자(180)는 각자의 DEK(182)로 각각의 태블릿(159)을 암호화한다. 따라서, 각각의 태블릿(159)은 대응하는 DEK(182)와의 복호화를 통해서만 (즉, 평문으로) 액세스될 수 있다.
[0025] 자원 키 관리자(170)는 각각의 DEK(182)를 테이블(158)과 연관된 자원 키(172)로 래핑(즉, 암호화)한다. 즉, 테이블(158)의 각각의 태블릿(159)은 대응하는 태블릿(159)과 고유하게 연관된 DEK(182)에 의해 암호화되고 각각의 DEK(182)는 태블릿들(159)을 발생시킨 테이블(158)과 고유하게 연관된 자원 키(172)에 의해 암호화된다. 따라서, 키 관리자(160)는 동일한 자원 키(172)로 동일한 테이블(158)에 대응하는 모든 DEK들(182)을 암호화한다.
[0026] 키 관리자(160)는 각각의 태블릿(159)(DEK(182)에 의해 암호화됨)의 제어를 복수의 태블릿 서버들(150, 150a-n)에 분배한다. 즉, 태블릿들(159)의 제어는 2개 이상의 태블릿 서버들(150) 사이에 분산되며, 각각의 태블릿 서버(150)는 하나 이상의 태블릿들(159)의 제어를 수신한다. 각각의 태블릿 서버(150)는 임의의 수의 태블릿들(159)의 제어를 수신할 수 있고 시스템(100)은 임의의 수의 태블릿 서버들(150)에 태블릿(159)의 제어를 분배할 수 있다. 본원에서 사용되는 바와 같이, 태블릿(159)의 제어는 제어되는 태블릿들(159)의 데이터에 액세스하기 위한 서비스 요청들에 대한 책임을 지칭한다. 예컨대, 암호화된 태블릿(152)(즉, 암호화된 미사용 데이터(encrypted data-at-rest))을 제어하는 태블릿 서버(150)는 암호화된 태블릿(152) 내에 저장된 데이터에 액세스하기 위한 요청들(예컨대, 클라이언트 또는 사용자(12)로부터 발생함)을 수신한다. 태블릿 서버(150)는 태블릿(159)을 복호화하고 요청된 데이터를 제공함으로써 요청에 응답한다. 따라서, 일부 구현들에서, 태블릿 서버들(150)은 원격 시스템(140)을 위한 테이블들(158)의 부분들(즉, 태블릿들(159))을 제어(즉, 서비스 데이터 요청들)하도록 지정된 원격 시스템(140)의 분산 컴퓨팅 및 저장 환경의 일부이다. 대안적으로, 태블릿 서버들(150)은 원격 시스템(140)으로부터 독립적일 수 있고 로컬 저장소에 저장하기 위해 태블릿들(150)을 수신할 수 있다.
[0027] 본원의 예들이 명확성을 위해 단일 테이블(158) 및 3개의 태블릿 서버들(159)을 보여주지만, 전형적으로 각각의 태블릿 서버(150)는 다수의 상이한 테이블들(158)로부터 다수의 태블릿들(159)을 제어할 것이다. 예컨대, 시스템(100)은 대규모 분산 저장 시스템을 생성하기 위해 수천 개의 태블릿 서버들(150) 사이에 분산된 제어를 갖는 수천 개의 테이블들(158)을 포함한다. 다수의 태블릿 서버들(150)에 걸친 태블릿들(159) 제어의 분배는 액세스 용량(즉, 시스템(140)이 지원하는 데이터에 대한 동시성 액세스들의 수)을 증가시킬 수 있다.
[0028] 각각의 태블릿 서버(150)는 데이터 스토어(152)의 대응하는 부분 내에 저장된 지정된 태블릿들(159)을 유지하며, 이는 각각의 다른 태블릿 서버(150)의 데이터 스토어(152)의 대응하는 부분들과 결합될 때, 테이블(158)의 저장을 위한 클라우드 데이터베이스를 형성하여, 저장 자원들(146)의 확장 가능한 사용을 허용한다. 각각의 태블릿 서버(150)는 또한, 적어도 태블릿 서버(150)에 의해 제어되는 태블릿들(159)에 대응하는 래핑된 DEK들(182W, 182Wa-n)을 수신한다. 즉, 각각의 태블릿 서버(150)는 개개의 DEK(182)에 의해 암호화된 하나 이상의 태블릿들(159) 및 제어되는 태블릿들(159)에 대응하는 각각의 래핑된 DEK(182W)(즉, 자원 키(172)에 의해 암호화된 DEK(182))를 제어한다. 따라서, 태블릿들(159)에 대한 액세스를 획득하기 위해, 태블릿 서버(150)는 먼저 언래핑된(unwrapped) DEK(182)를(즉, 자원 키(172)에 의한 복호화를 통해) 획득해야 한다.
[0029] 키 관리자(160)는 랩 요청(174)을 원격 엔티티(190)에 송신한다. 일부 예들에서, 원격 엔티티(190)는 CKMS(customer-managed key store)이다. 원격 엔티티(190)는 하나 이상의 사용자 키들(192)(이는, 본원에서 고객 키 또는 클라이언트 키 또는 CMEK(customer-managed encryption key)로서 또한 지칭될 수 있음)를 제어한다. 원격 시스템(140)은 사용자 키(192)에 대한 액세스를 수신하지 않고 대신에, 원격 엔티티(190)(즉, CKMS)가 사용자 키(192)에 대한 단독 액세스를 유지한다. 일부 예들에서, 랩 요청(174)은 자원 키(172)를 포함한다. 랩 요청(174)을 수신한 후, 원격 엔티티(190)는 키 관리자(160)를 인가 및/또는 인증할 수 있다. 즉, 원격 엔티티(190)는 키 관리자(160)가 해당 시점에서 사용자 키(192)를 사용하여 수행되는 동작들(예컨대, 암호화/복호화 동작들)을 갖도록 허용됨을 검증한다. 승인(permission)들은 사용자(12) 또는 사용자(12)를 대신하는 제3자에 의해 그랜트(grant)되거나 거부될 수 있다.
[0030] 키 관리자(160)를 인증 및/또는 인가한 후, 원격 엔티티(190)는 사용자 키(192)로 자원 키(172)를 암호화한다. 원격 엔티티(190)는 사용자 키(192)를 테이블(158)과 고유하게 연관시킬 수 있다. 대안적으로, 사용자 키(192)는 사용자(12)와 연관된 다양한 자산들(예컨대, 다수의 테이블들(158))을 보호한다. 원격 엔티티(190)는 래핑된 자원 키(172W)(즉, 사용자 키(192)에 의해 암호화된 자원 키(172))를 키 관리자(160)에 송신한다. 키 관리자(160)는 자원 키(172)의 모든 평문(즉, 암호화되지 않은) 사본들 및 DEK들(182)의 모든 평문 사본들을 삭제하거나 다른 방식으로 폐기한다. 따라서, 태블릿 서버들(150)에 의해 제어되는 모든 태블릿들(159)은, 결국 자원 키(172) ― 이는 차례로, 사용자 키(192)에 의해 래핑됨 ― 에 의해 래핑되는 DEK(182)에 의해 암호화된다. 사용자 키(192)는 원격 엔티티(190)의 단독 제어 하에 있기 때문에, 어떠한 다른 엔티티(원격 시스템(140)을 포함함)는 사용자(12) 또는 사용자(12)를 대신한 제3자로부터의 인가 없이 태블릿들(159)에 액세스할 수 없다.
[0031] 이제 도 2를 참조하면, 개략도(200)는 일부 구현들에서, 키 관리자(160)가 원격 엔티티(190)로부터 암호화된 자원 키(172W)를 수신한 후 테이블(158)의 하나 이상의 데이터 블록들(154)에 액세스하기 위한 데이터 요청(210)을 수신하는 것을 도시한다. 데이터 요청(210)은 사용자(12)로부터 또는 사용자에 의해 인가된 다른 엔티티로부터 발생할 수 있다. 데이터 요청(210)은 또한 (예컨대, 데이터를 리밸런싱하고, 데이터를 압축하고, 데이터 복구 등을 하기 위해) 태블릿 서버들(159) 중 하나 또는 원격 시스템(140) 상에서 실행되는 테이블 관리자로부터 발생할 수 있다. 하나 이상의 데이터 블록들(154)에 액세스하기 위한 데이터 요청(210)의 수신에 대한 응답으로, 키 관리자(160)는 래핑된 자원 키(172W)를 포함하는 자원 키 복호화 요청(212)을 생성하고 자원 키 복호화 요청(212)을 원격 엔티티(190)(예컨대, CMEK))에 송신한다. 원격 엔티티(190)는 자원 키 복호화 요청(212)(래핑된 자원 키(172W) 포함)을 수신한 후, 특정 사용자(12)와 연관된 사용자 키(192)를 사용하여 래핑된 자원 키(172W)를 복호화한다. 래핑된 자원 키(172W)를 복호화하기 전에, 원격 엔티티(190)는 키 관리자(160)를 인가 및/또는 인증할 수 있다. 선택적으로, 키 관리자(160)는 인가 및/또는 인증을 보조하기 위해 자원 키 복호화 요청(212)과 함께 크리덴셜들 또는 다른 식별 정보를 포함한다. 래핑된 자원 키(172W)를 언래핑한 후, 원격 엔티티(190)는 언래핑된 자원 키(172)를 키 관리자(160)에 송신한다. 원격 엔티티(190)가 사용자 키(192)를 사용하여 자원 키(172W)를 복호화하는 동안, 원격 엔티티(190) 및 키 관리자는 "명문으로(in the clear)" 통신할 필요가 없다는 것에 주의한다. 즉, 키 관리자(160) 및 원격 엔티티(190)는 키 관리자(160)와 원격 엔티티(190) 사이의 모든 통신이 안전한 것을 보장하기 위해 대칭 키들 및/또는 비대칭 키들(예컨대, 공개-키 암호화)을 공유할 수 있다.
[0032] 일부 예들에서, 키 관리자(160)는 원격 엔티티(190)로부터 언래핑된 자원 키(172)를 수신한 후, ACL(access control list)(234)(즉, 래핑된 자원 키(172W'))과 연관된 액세스 제어 키(232)로 복호화된 자원 키(172)를 암호화한다. 일부 구현들에서, ACL(234)은 자원 키(172)에 액세스하도록 인가된 태블릿 서버들(150)의 목록에 대응한다. 예컨대, 키 관리자(160)는 어떤 태블릿 서버들(150)이 어떤 태블릿들(159)에 대한 액세스를 갖는지를 결정하기 위해 태블릿 서버들(150)에 태블릿(159)의 제어를 분배할 때 ACL(234)을 생성한다. 즉, 키 관리자(160)는 태블릿 서버(150)가 자원 키(172)와 연관된 테이블(158)의 임의의 태블릿들(159)을 제어하는지에 기초하여 (DEK들(182)을 복호화하기 위해) 태블릿 서버(150)가 자원 키(172)에 액세스하도록 (ACL(234)를 통해) 허용하거나 인가할 수 있다.
[0033] 일부 예들에서, ACL(234)은 하나 이상의 태블릿 서버들(150)에 할당된 역할에 기초한다. 예컨대, 모든 태블릿 서버들(150)은 하나 이상의 테이블들(158)과 연관된 생산(즉, "prod") 역할과 같은 특정 역할에서 실행된다. 다른 태블릿 서버들(150)(예컨대, 악의적인 태블릿 서버)에는 이와 동일한 역할이 할당될 수 없다. 따라서, ACL(234)은 태블릿 서버(150)가 액세스를 요청하는 테이블(158) 및/또는 자원 키(172)에 기초하여 요청 태블릿 서버(150)가 적절한 역할을 할당받는 것을 보장할 수 있다. 이는 인가된 역할이 할당된 인가된 태블릿 서버(150)만이 액세스 제어 키(232)에 의해 언래핑된 자원 키(172)에 액세스하도록 허용한다. ACL(234)은 다른 액세스 제어 수단도 시행할 수 있다. 예컨대, ACL(234)은 각각의 인가된 태블릿 서버(150)에 대한 식별자를 포함하고 태블릿 서버(150)는 요구될 때 (예컨대, 디지털 서명을 통해) 자신의 아이덴티티를 검증한다.
[0034] 일부 예들에서, 자원 키(172)를 액세스 제어 키(232)로 래핑한 후 키 관리자(160)는 각각의 개별 태블릿 서버(150)가 언래핑된 자원 키(172)에 액세스하도록 인가되는지 여부에 관계없이, 키 관리자(160)와 통신하는 모든 태블릿 서버들(150)에 래핑된 자원 키(172W')(즉, 액세스 제어 키(232)에 의해 암호화된 자원 키(172))를 분배한다. 단순화를 위해, 래핑된 자원 키(172W')를 모든 태블릿 서버들(150)에 분배하는 키 관리자(160)는 도 2의 예에서 생략된다. 각각의 태블릿 서버(150)는 ACL(234)에 의해 보호되는 언래핑된 자원 키(172)에 대한 액세스를 요청해야 하기 때문에, 키 관리자(160)는 래핑된 자원 키(172W')를 태블릿 서버들(150)에 안전하게 브로드캐스팅할 수 있다. 이는 키 관리자(160)가 어떤 태블릿 서버들(150)이 존재하고 각각의 태블릿 서버(150)가 어떤 태블릿들(159)을 저장하는지 신경쓰거나 심지어 인식할 필요성을 제거한다.
[0035] 래핑된 자원 키(172W')(이제 도 2에 도시됨)를 수신한 후, 태블릿 서버들(150) 중 하나는 래핑된 자원 키(172W')를 언래핑하도록 키 관리자(160)에 요청하는 자원 키 언래핑 요청(242)을 생성할 수 있다. 태블릿 서버(150)가 복수의 테이블들(각각이 상이한 자원 키(172)와 연관됨)(158)로부터 태블릿(159)을 제어할 수 있기 때문에, 태블릿 서버(150)는 태블릿 서버(150)가 액세스를 요청하는 자원 키(172)가 어떤 것인지를 키 관리자(160)에 표시하기 위해 요청(242) 내에 래핑된 자원 키(172W')를 포함할 수 있다.
[0036] 키 관리자(160)는 태블릿 서버들(150) 중 하나로부터 자원 키 언래핑 요청(242)을 수신하고 태블릿 서버(150)가 ACL(234)에 기초하여 언래핑된 자원 키(172)에 액세스하도록 인가되는지를 결정한다. 태블릿 서버(150)가 자원 키(172)에 액세스하도록 인가되었을 때, 키 관리자(160)는 액세스 제어 키(232)를 사용하여 래핑된 자원 키(172W')를 복호화한다. 키 관리자(160)는 언래핑된 자원 키(172)를 인가된 태블릿 서버(150)에 송신한다. 태블릿 서버(150)가 인가되지 않을 때(예컨대, 태블릿 서버(150)가 ACL(234)에 의해 승인되지 않고 그리고/또는 태블릿 서버(150)가 승인된 역할로 실행되지 않음), 키 관리자(160)는 복호화된 자원 키(172)에 대한 인가되지 않은 태블릿 서버(150) 액세스를 거부할 수 있다.
[0037] 태블릿 서버(150)는 도 2에 묘사된 바와 같이 복호화된 자원 키(172)를 수신한 후, 자원 키(172)를 사용하여 래핑된 DEK들(182W) 중 하나 이상을 언래핑/복호화할 수 있다. 하나 이상의 래핑된 DEK들(182W)을 언래핑한 후, 태블릿 서버(150)는 언래핑된 DEK(들)(182)를 사용하여 대응하는 DEK들(182)에 의해 암호화된 태블릿들(159)을 언래핑한다. 일부 구현들에서, 태블릿 서버(150)는 태블릿 서버(150)가 자원 키 언랩 요청들(242)을 키 관리자(160)에 송신하는 빈도를 감소시키기 위해 일정 시간 기간 동안 언래핑된 DEK들(182)을 (예컨대, 휘발성 메모리에) 캐싱한다. 예컨대, 태블릿 서버는 복호화된 DEK들(182)을 1시간 동안 캐싱한다. 시간 기간이 만료된 후, 태블릿 서버(150)는 캐싱된 DEK들(182)을 플러시(flush)하고 자원 키 언랩 요청(242)을 키 관리자(160)로 다시 송신할 수 있다. 즉, 태블릿 서버(150)가 DEK들(182)을 캐싱할 때, 태블릿 서버(150)는 DEK들(182W)을 언래핑하도록 키 관리자에게 다시 요청하기 보다는, 캐싱된 DEK들(182)을 사용할 수 있다.
[0038] 일부 예들에서, 태블릿 서버(150)는 테이블(158)과 연관된 자원 키(172)가 테이블(158)의 태블릿들(159)에 대응하는 모든 DEK들을 래핑하는 데 사용되기 때문에 동일한 테이블(158)과 연관된 모든 DEK들(182W)을 언래핑한다. 따라서, 키 관리자(160)에 대한 단일 자원 키 언랩 요청(210)으로, 태블릿 서버(150)는 동일한 테이블(158)의 모든 태블릿들(159)에 대한 액세스를 획득할 수 있다. 각각의 DEK(182)에 대한 요청을 포함하는 종래의 기법들과 대조적으로, 키 관리자(160)는 통신들의 수 및 DEK들(182)을 분배하는 데 요구되는 시간량을 크게 감소시킨다.
[0039] 이제 도 3을 참조하면, 개략도(300)는 시스템(100)에 대한 예시적인 키 도메인들을 시연한다. 여기서, 원격 엔티티(190)(예컨대, CKMS)는 사용자 키(192)를 모든 다른 엔티티들(원격 시스템(140) 및 키 관리자(160)를 포함함)로부터 비밀로 유지함으로써 사용자 키(192)의 단독 액세스를 유지한다. 즉, 인가된 엔티티들은 원격 엔티티(190)가 사용자 키(192)로 동작들(예컨대, 암호화 및 암호 복호화 동작들)을 수행하도록 요청할 수 있지만, 원격 엔티티(190)는 액션들을 수행할 때 사용자 키(192)를 드러내지 않을 것이다.
[0040] 키 관리자(160)는 액세스 제어 키(232) 및 자원 키(172) 둘 모두를 생성 및 유지한다. 액세스 제어 키(232)와 사용자 키(192)(원격 엔티티(190)의 제어 하에 있음) 둘 모두는 자원 키(172)를 래핑/암호화한다. 키 관리자(160)는 액세스 제어 키(232)에 대한 단독 액세스를 가질 수 있다. 일부 구현들에서, 키 관리자(160)는 키 관리자(160)가 원격 엔티티(190)로부터 언래핑된 자원 키(172)를 수신한 후에 자원 키(172)를 액세스 제어 키(232)로 래핑한다.
[0041] 자원 키(172)는 하나 이상의 태블릿 서버들(150)에 저장된 하나 이상의 DEK들(182)을 래핑한다. 일부 예들에서, 키 관리자(160)는 액세스 제어 키에 의해 래핑된 자원 키(172W')를 각각의 태블릿 서버(150)에 분배한다. 태블릿 서버들(150)은 키 관리자(160)로부터 자원 키(172)에 의해 래핑된 DEK들(182)(및 상응하게, DEK들(182)이 암호화하는 태블릿들(159))에 대한 액세스를 요청한다. (예컨대, ACL(234)을 통해) 태블릿 서버(150)를 인가한 후, 키 관리자(160)는 래핑된 자원 키(172W')를 언래핑하고, 언래핑된 자원 키(172)를 대응하는 태블릿 서버(150)에 송신한다. 태블릿 서버(150)는 태블릿 서버(150)에 저장된 태블릿들(159) 중 하나 이상에 액세스하기 위해 하나 이상의 DEK들(182)을 언래핑할 수 있다.
[0042] 도 4는 자원 키(172)를 생성하기 위한 단계들에 대한 시퀀스 다이어그램(400)을 제공한다. 시퀀스 다이어그램(400)의 Y-축은 단계들에 순서를 제공하기 위해 위에서 아래로 증가하는 시간을 표현한다. 단계들은 Y-축의 최상부(즉, 가장 빠른 시점)에서 시작하여 Y-축 아래로 순서대로 진행된다. 평행 수직선들은 각각 사용자 디바이스(10), 키 관리자(160) 및 원격 엔티티(190)를 표현한다. 단계(410)에서, 사용자 디바이스(10)는 테이블(158)을 생성하도록 키 관리자(160)를 생성하고 송신하거나 명령한다. 다음으로, 키 관리자(160)는 단계(412)에서, 자원 키(172)를 생성한다. 자원 키(172)는 단계(410)에서 생성된 테이블(158)과 고유하게 연관된다. 키 관리자(160)는 그 후 단계(414)에서, 생성된 자원 키(172)를 원격 엔티티로 전송한다. 키 관리자는 랩 요청(174) 내에 자원 키(172)를 포함한다. 원격 엔티티(190)는 단계(416)에서, 키 관리자(160)를 인가 및/또는 인증한 후 자원 키(172)를 사용자 키(192)로 래핑한다. 단계(418)에서, 원격 엔티티(190)는 래핑된 자원 키(172W)를 키 관리자(160)에 송신한다. 래핑된 자원 키(172W)를 수신한 후, 키 관리자(160)는 단계(420)에서, 래핑된 자원 키(172W)를 저장한다(예컨대, 키(172W)를 휘발성 메모리에 캐싱함).
[0043] 이제 도 5를 참조하면, 시퀀스 다이어그램(500)은 자원 키(172)로 래핑된 DEK들(182W)을 언래핑하기 위한 단계들을 포함한다. 단계들은 Y-축의 최상부(즉, 가장 빠른 시점)에서 시작하여 Y-축 아래로 순서대로 진행된다. 평행 수직선들은 각각 원격 엔티티(190), 키 관리자(160) 및 태블릿 서버(150)를 표현한다. 시퀀스 다이어그램(500)은 키 관리자(160)가 자원 키 복호화 요청(212)을 원격 엔티티(190)에 송신할 때 단계(510)에서 시작한다. 단계(512)에서, 원격 엔티티(190)는 자원 키 복호화 요청(212)을 수신한 후, 테이블(158)을 생성 및/또는 소유한 사용자(12)와 연관된 사용자 키(192)를 사용하여 래핑된 자원 키(172W)를 언래핑(즉, 복호화)한다.
[0044] 단계(514)에서, 원격 엔티티(190)는 언래핑된 자원 키(172)를 키 관리자(160)에 송신한다. 키 관리자(160)는 단계(516)에서, 언래핑된 자원 키(172)를 액세스 제어 키(232)로 래핑한다. 단계(518)에서, 키 관리자(160)는 래핑된 자원 키(172W')(즉, 액세스 제어 키(232)에 의해 래핑됨)를 하나 이상의 태블릿 서버들(150)에 송신한다. 태블릿 서버들(150) 중 하나는 단계(520)에서, 래핑된 자원 키(172W')를 포함하는 자원 키 언래핑 요청(242)을 키 관리자(160)로 전송한다. 키 관리자(160)는 (예컨대, ACL(234)에 기초하여) 태블릿 서버(150)가 자원 키(172)에 액세스하도록 인가되는지를 결정할 수 있다. 태블릿 서버(150)가 인가될 때, 키 관리자(160)는 단계(522)에서, 액세스 제어 키(232)를 이용하여 래핑된 자원 키(172W')를 언래핑하고, 단계(524)에서 래핑되지 않은 자원 키(172)를 태블릿 서버(150)에 송신한다. 태블릿 서버(150)는 단계(526)에서, 자원 키(172)로 하나 이상의 래핑된 DEK들(182W)을 언래핑한다
[0045] 일부 구현들에서, 자원 키(172)는 만료 시간 제한을 포함한다. 만료 시간 제한은 키가 유효한 시간 기간을 표시한다. 즉, 일단 키가 만료되면, 원격 시스템(140)은 임의의 암호화 또는 복호화 동작들을 수행하기 위해 만료된 키를 사용하지 않을 수 있고 사용하지 않을 것이다. 만료 시간 제한은 예컨대, 디바이스들 간에(예컨대, 키 관리자(160)와 원격 엔티티(190) 간에 그리고/또는 키 관리자(160)와 태블릿 서버들(150) 간에) 통신이 손실되는 경우에 시스템이 "오래된" 키들을 사용하는 것을 방지한다.
[0046] 일부 예들에서, 키 관리자(160)는 자원 키(172)의 만료 시간 제한보다 작은 회전 레이트로 자원 키(172)를 회전시킨다. 즉, 키 관리자(160)는 회전 레이트에 기초한 빈도로 새로운 자원 키(172)를 생성한다. 키 관리자(160)가 기존 자원 키(172)를 대체하기 위해 새로운 자원 키(172)를 생성할 때, 키 관리자(160)는 (예컨대, 각각의 태블릿 서버(150)에 키 무효화 메시지를 전송함으로써) 이전 자원 키(172)를 무효화하고 자원 키(172)를 사용자 키(192) 및 액세스 제어 키(232)로 래핑하고, DEK들(182)을 래핑하고 래핑된 DEK들(182W) 및 래핑된 자원 키(172W')를 도 1 내지 도 5와 관련하여 설명된 바와 같이 태블릿 서버들(150)에 분배하는 것으로 진행된다. 자원 키(172)의 만료 시간 제한은 엔티티들 간의 통신들이 실패할 때 폴백을 제공하기 위해 회전 레이트보다 클 수 있다. 예컨대, 회전 레이트가 4시간일 때(즉, 4시간마다 새로운 자원 키(172)가 생성됨), 자원 키(172) 만료 시간 제한은 6시간일 수 있다. 그러면, 태블릿 서버들(150)이 더 이상 키 관리자(160)와 통신할 수 없고 이에 따라 적절한 시간에 새로운 자원 키(172)를 수신하지 못하는 상황에서, 태블릿 서버들(150)은 키가 만료될 때(즉, 이 예에서 6시간 후) 적어도 오래된 자원 키(172)의 사용을 중지한다.
[0047] 선택적으로, 자원 키(172)에 대한 만료 시간 제한 및 회전 레이트는 각각 특정 사용자(12)에 의해 구성 가능하다. 예컨대, 사용자는 테이블(158)을 생성할 때 만료 시간 제한 및 회전 레이트에 대한 선호도들을 표시한다. 일부 구현들에서, 사용자는 테이블(158)을 생성한 후 임의의 지점에서 회전 레이트 및/또는 만료 시간 제한을 조정할 수 있다.
[0048] 도 6은 암호화 키들을 안전하고 효율적으로 분배하기 위한 방법(600)에 대한 동작들의 예시적인 어레인지먼트의 흐름도이다. 방법(600)은 단계(602)에서, 데이터 프로세싱 하드웨어(144)에서 특정 사용자(12)와 연관된 테이블(158)을 수신하는 것을 포함한다. 테이블(158)은 복수의 데이터 블록들(154)을 포함한다. 방법(600)은 단계(604)에서, 데이터 프로세싱 하드웨어(144)에 의해, 테이블(158)을 복수의 태블릿들(159)로 분할하는 것을 포함한다. 각각의 태블릿(159)은 테이블(158)의 복수의 데이터 블록들(154)의 대응하는 부분을 포함한다. 방법(600)은 단계(606)에서 데이터 프로세싱 하드웨어(144)에 의해, 테이블(158)과 고유하게 연관된 자원 키(172)를 생성하는 것을 포함한다.
[0049] 복수의 태블릿들(159)의 각각의 태블릿(159)에 대해, 방법(600)은 단계(608)에서, 대응하는 태블릿(159)에 대한 고유 데이터 암호화 키(182)를 생성하는 것을 포함한다. 단계(610)에서, 방법(600)은 데이터 프로세싱 하드웨어(144)에 의해, 고유 데이터 암호화 키(182)로 대응하는 태블릿(159)을 암호화하는 것을 포함한다. 방법(600)은, 단계(612)에서, 데이터 프로세싱 하드웨어(144)에 의해, 자원 키(172)로 각각의 데이터 암호화 키(182)를 암호화하는 것을 포함한다. 단계(614)에서, 방법(600)은 또한 데이터 프로세싱 하드웨어(144)에 의해, 각각의 암호화된 태블릿(159) 및 각각의 대응하는 암호화된 데이터 암호화 키(182W)의 제어를 복수의 태블릿 서버들(150)에 분배하는 것을 포함한다. 복수의 태블릿 서버들(150)의 각각의 태블릿 서버(150)는 복수의 태블릿 서버들(150)의 각각의 다른 태블릿 서버(150)로부터 독립적이다. 각각의 태블릿 서버(150)는 테이블(158)로부터 암호화된 태블릿들(159) 중 하나 이상을 제어한다. 단계(616)에서, 방법(600)은 데이터 프로세싱 하드웨어(144)에 의해, 자원 키(172)를 원격 엔티티(190)에 송신하는 것을 포함한다. 자원 키(172)는 원격 엔티티(190)에 의해 수신될 때, 원격 엔티티(190)가 특정 사용자(12)와 연관되고 데이터 프로세싱 하드웨어(144)로부터 비밀로 유지되는 사용자 키(192)로 자원 키(172)를 암호화하게 한다. 원격 엔티티는 또한 암호화된 자원 키(172W)를 데이터 프로세싱 하드웨어(144)에 송신한다.
[0050] 도 7은 본 문서에서 설명된 시스템들 및 방법들을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스(700)의 개략도이다. 컴퓨팅 디바이스(700)는, 랩톱들, 데스크톱들, 워크스테이션들, 개인 휴대 정보 단말기들, 서버들, 블레이드 서버들, 메인프레임들, 및 다른 적합한 컴퓨터들과 같은 다양한 형태들의 디지털 컴퓨터들을 표현하도록 의도된다. 여기에서 도시된 컴포넌트들, 그들의 연결들 및 관계들, 및 그들의 기능들은 예시적인 것으로만 의도되며, 본 문서에서 설명되고 그리고/또는 청구된 본 발명들의 구현들을 제한하도록 의도되지 않는다.
[0051] 컴퓨팅 디바이스(700)는 프로세서(710), 메모리(720), 저장 디바이스(730), 메모리(720) 및 고속 확장 포트들(750)에 연결되는 고속 인터페이스/제어기(740), 및 저속 버스(770) 및 저장 디바이스(730)에 연결되는 저속 인터페이스/제어기(760)를 포함한다. 컴포넌트들(710, 720, 730, 740, 750, 및 760) 각각은, 다양한 버스들을 사용하여 상호연결되며, 공통 마더보드 상에 또는 적절하게 다른 방식들로 장착될 수 있다. 프로세서(710)는, 고속 인터페이스(740)에 커플링된 디스플레이(780)와 같은 외부 입력/출력 디바이스 상에서의 GUI(graphical user interface)를 위한 그래픽 정보를 디스플레이하기 위해 메모리(720)에 또는 저장 디바이스(730) 상에 저장된 명령들을 포함하여, 컴퓨팅 디바이스(700) 내에서의 실행을 위한 명령들을 프로세싱할 수 있다. 다른 구현들에서, 다수의 프로세서들 및/또는 다수의 버스들이 다수의 메모리들 및 여러 유형의 메모리와 함께 적합하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(700)이 연결될 수 있으며, 각각의 디바이스는 필요한 동작들의 부분들을 (예컨대, 서버 뱅크, 블레이드 서버들의 그룹, 또는 멀티-프로세서 시스템으로서) 제공한다.
[0052] 메모리(720)는 컴퓨팅 디바이스(700) 내에 정보를 비-일시적으로 저장한다. 메모리(720)는 컴퓨터-판독 가능 매체, 휘발성 메모리 유닛(들) 또는 비-휘발성 메모리 유닛(들)일 수 있다. 비-일시적 메모리(720)는 컴퓨팅 디바이스(700)에 의한 사용을 위해 일시적 또는 영구적 기반으로 프로그램들(예컨대, 명령들의 시퀀스들) 또는 데이터(예컨대, 프로그램 상태 정보)를 저장하는 데 사용되는 물리적 디바이스들일 수 있다. 비-휘발성 메모리의 예들은, 플래시 메모리 및 ROM(read-only memory)/PROM(programmable read-only memory)/EPROM(erasable programmable read-only memory)/EEPROM(electronically erasable programmable read-only memory)(예컨대, 부팅 프로그램들과 같은 펌웨어를 위해 통상적으로 사용됨)를 포함(그러나 이에 제한되지 않음)한다. 휘발성 메모리의 예들은 RAM(random access memory), DRAM(dynamic random access memory), SRAM(static random access memory), PCM(phase change memory)뿐만 아니라 디스크들 또는 테이프들을 포함(그러나 이에 제한되지 않음)한다.
[0053] 저장 디바이스(730)는, 컴퓨팅 디바이스(700)에 대한 대용량 저장소를 제공할 수 있다. 일부 구현들에서, 저장 디바이스(730)는 컴퓨터-판독 가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(730)는, 저장 영역 네트워크 또는 다른 구성들 내의 디바이스들을 포함하여, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 디바이스들의 어레이일 수 있다. 부가적인 구현들에서, 컴퓨터 프로그램 제품은 정보 캐리어에서 형태가 있게(tangibly) 구체화된다. 컴퓨터 프로그램 제품은, 실행될 경우 위에서 설명된 방법들과 같은 하나 이상의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는, 메모리(720), 저장 디바이스(730), 또는 프로세서(710) 상의 메모리와 같은 컴퓨터- 또는 기계-판독 가능 매체이다.
[0054] 고속 제어기(740)는, 컴퓨팅 디바이스(700)에 대한 대역폭-집약적 동작들을 관리하는 반면, 저속 제어기(760)는 더 낮은 대역폭-집약적 동작들을 관리한다. 직무들의 그러한 할당은 단지 예시적일 뿐이다. 일부 구현들에서, 고속 제어기(740)는, 메모리(720), (예컨대, 그래픽 프로세서 또는 가속기를 통해) 디스플레이(780), 그리고 다양한 확장 카드들(도시되지 않음)을 수용할 수 있는 고속 확장 포트들(750)에 커플링된다. 일부 구현들에서, 저속 제어기(760)는 저장 디바이스(730) 및 저속 확장 포트(790)에 커플링된다. 다양한 통신 포트들(예컨대, USB, Bluetooth, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(790)는, 예컨대, 네트워크 어댑터를 통해 키보드, 포인팅 디바이스, 스캐너, 또는(스위치 또는 라우터와 같은) 네트워킹 디바이스와 같은 하나 이상의 입력/출력 디바이스들에 커플링될 수 있다.
[0055] 컴퓨팅 디바이스(700)는 도면에 도시된 바와 같이, 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 그것은 표준 서버(700a)(또는 그러한 서버들(700a)의 그룹에서 여러 번)로서, 랩톱 컴퓨터(700b)로서 또는 랙(rack) 서버 시스템(700c)의 부분으로서 구현될 수 있다.
[0056] 본원에서 설명된 시스템들 및 기법들의 다양한 구현들은, 디지털 전자 및/또는 광학 회로, 집적 회로, 특수하게 설계된 ASIC(application specific integrated circuit)들, 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합들로 실현될 수 있다. 이들 다양한 구현들은, 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 그들로 데이터 및 명령들을 송신하도록 커플링된 특수 목적 또는 범용 목적일 수 있는 적어도 하나의 프로그래밍 가능 프로세서를 포함하는 프로그래밍 가능 시스템 상에서 실행 가능하고 그리고/또는 해석 가능한 하나 이상의 컴퓨터 프로그램들로의 구현을 포함할 수 있다.
[0057] 소프트웨어 애플리케이션(즉, 소프트웨어 자원)은 컴퓨팅 디바이스가 태스크를 수행하게 하는 컴퓨터 소프트웨어를 지칭할 수 있다. 일부 예들에서, 소프트웨어 애플리케이션은 "애플리케이션", "앱" 또는 "프로그램"으로서 지칭될 수 있다. 예시적인 애플리케이션은 시스템 진단 애플리케이션들, 시스템 관리 애플리케이션들, 시스템 유지보수 애플리케이션들, 워드 프로세싱 애플리케이션들, 스프레드시트 애플리케이션들, 메시징 애플리케이션들, 미디어 스트리밍 애플리케이션들, 소셜 네트워킹 애플리케이션들 및 게임 애플리케이션들을 포함(그러나 이에 제한되지 않음)한다.
[0058] 이들 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로 또한 알려짐)은, 프로그래밍 가능 프로세서에 대한 기계 명령들을 포함하며, 고레벨의 절차적인 및/또는 객체-지향 프로그래밍 언어 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본원에서 사용된 바와 같은 "기계-판독 가능한 매체" 및 "컴퓨터-판독 가능한 매체"라는 용어들은, 기계-판독 가능한 신호로서 기계 명령들을 수신하는 기계-판독 가능한 매체를 포함하여, 임의의 컴퓨터 프로그램 제품, 비-일시적인 컴퓨터-판독 가능 매체, 기계 명령들 및/또는 데이터를 프로그래밍 가능 프로세서에 제공하기 위해 사용되는 장치 및/또는 디바이스(예컨대, 자기 디스크들, 광학 디스크들, 메모리, PLD(Programmable Logic Device)들)를 지칭된다. "기계-판독 가능 신호"라는 용어는, 기계 명령들 및/또는 데이터를 프로그래밍 가능 프로세서에 제공하는 데 사용되는 임의의 신호를 지칭한다.
[0059] 본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터를 조작하고 출력을 생성함으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는, 데이터 프로세싱 하드웨어로서 또한 지칭되는 하나 이상의 프로그래밍 가능 프로세서들에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로, 예컨대, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로써, 범용 및 특수 목적 마이크로프로세서들 둘 모두 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독-전용 메모리 또는 랜덤-액세스 메모리 또는 둘 모두로부터 명령들 및/또는 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령들을 수행하기 위한 프로세서 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대, 자기, 광자기 디스크들 또는 광학 디스크들로부터 데이터를 수신하거나 또는 이들에 데이터를 전달하거나, 또는 둘 모두를 수행하도록 동작 가능하게 커플링되거나, 또는 이들을 포함할 것이다. 그러나 컴퓨터는 이러한 디바이스들을 가질 필요가 없다. 컴퓨터 프로그램 명령들 및/또는 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체들은, 예로써, 반도체 메모리 디바이스들, 예컨대, EPROM, EEPROM 및 플래시 메모리 디바이스들, 자기 디스크들, 예컨대, 내부 하드 디스크들 또는 제거 가능 디스크들, 광-자기 디스크들 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태들의 비-휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 또는 거기에 통합될 수 있다.
[0060] 사용자와의 상호작용을 제공하기 위해, 본 개시내용의 하나 이상의 양상들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스 예컨대, CRT(cathode ray tube), LCD(liquid crystal display) 모니터, 또는 터치 스크린 및 선택적으로, 사용자가 입력을 컴퓨터에 제공할 수 있게 하는 키보드 및 포인팅 디바이스 예컨대, 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들은 또한, 사용자와의 상호작용을 제공하기 위해 사용될 수 있으며, 예컨대, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백 예컨대, 시각 피드백, 청각 피드백, 또는 촉각 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 부가하여, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 이 디바이스로부터 문서들을 수신함으로써, 예컨대, 웹 브라우저로부터 수신된 요청들에 대한 응답으로 사용자의 클라이언트 디바이스 상의 웹 브라우저에 웹 페이지들을 전송함으로써, 사용자와 상호작용할 수 있다.
[0061] 다수의 구현들이 설명되었다. 그럼에도 불구하고, 본 개시내용의 사상 및 범위로부터 벗어남 없이 다양한 수정들이 이루어질 수 있다는 것이 이해될 것이다. 따라서, 다른 구현들은 다음의 청구항들의 범위 내에 있다.

Claims (20)

  1. 방법(600)으로서,
    데이터 프로세싱 하드웨어(144)에서, 특정 사용자(12)와 연관된 테이블(158)을 수신하는 단계 ― 상기 테이블(158)은 복수의 데이터 블록들(154)을 포함함 ― ;
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 테이블(158)을 복수의 태블릿들(159)로 분할하는 단계 ― 각각의 태블릿(159)은 상기 테이블(158)의 복수의 데이터 블록들(154)의 대응하는 부분을 포함함 ― ;
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 테이블(158)과 고유하게 연관된 자원 키(172)를 생성하는 단계;
    상기 복수의 태블릿들(159)의 각각의 태블릿(159)에 대해:
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 대응하는 태블릿(159)에 대한 고유 데이터 암호화 키(182)를 생성하는 단계; 및
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 고유 데이터 암호화 키(182)로 상기 대응하는 태블릿(159)을 암호화하는 단계;
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 자원 키(172)로 각각의 데이터 암호화 키(182)를 암호화하는 단계;
    상기 데이터 프로세싱 하드웨어(144)에 의해, 각각의 암호화된 태블릿(152) 및 각각의 대응하는 암호화된 데이터 암호화 키(182)의 제어를 복수의 태블릿 서버들(150)에 분배하는 단계 ― 상기 복수의 태블릿 서버들(150) 내 각각의 태블릿 서버(150)는 상기 복수의 태블릿 서버들(150) 내 각각의 다른 태블릿 서버(150)와 독립적이고, 상기 테이블(158)로부터 상기 암호화된 태블릿들(152) 중 하나 이상을 제어함 ― ; 및
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 자원 키(172)를 원격 엔티티(190)에 송신하는 단계를 포함하고,
    상기 자원 키(172)는 상기 원격 엔티티(190)에 의해 수신될 때, 상기 원격 엔티티(190)로 하여금,
    상기 특정 사용자(12)와 연관되고 상기 데이터 프로세싱 하드웨어(144)로부터 비밀로 유지되는 사용자 키(192)로 상기 자원 키(172)를 암호화하고; 그리고
    상기 암호화된 자원 키(172)를 상기 데이터 프로세싱 하드웨어(144)에 송신하게 하는,
    방법(600).
  2. 제1 항에 있어서,
    상기 원격 엔티티(190)로부터 상기 암호화된 자원 키(172)를 수신한 후:
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 테이블(158)의 하나 이상의 데이터 블록들(154)에 액세스하라는 요청을 획득하는 단계;
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 암호화된 자원 키(172)를 포함하는 자원 키 복호화 요청(212)을 생성하는 단계;
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 자원 키 복호화 요청(212)을 상기 원격 엔티티(190)에 송신하는 단계를 더 포함하고, 상기 자원 키 복호화 요청(212)은 상기 원격 엔티티(190)에 의해 수신될 때, 상기 원격 엔티티(190)로 하여금,
    상기 특정 사용자(12)와 연관된 상기 사용자 키(192)로 상기 암호화된 자원 키(172)를 복호화하고; 그리고
    상기 복호화된 자원 키(172)를 상기 데이터 프로세싱 하드웨어(144)에 송신하게 하는,
    방법(600).
  3. 제2 항에 있어서,
    상기 복호화된 자원 키(172)를 수신한 후, 상기 데이터 프로세싱 하드웨어(144)에 의해, ACL(access control list)(234)과 연관된 액세스 제어 키(232)로 상기 복호화된 자원 키(172)를 암호화하는 단계를 더 포함하고, 상기 ACL(234)은 상기 자원 키(172)에 액세스하도록 인가된 태블릿 서버들(150)의 목록을 포함하는,
    방법(600).
  4. 제3 항에 있어서,
    액세스 제어 목록은 상기 복수의 태블릿 서버들(150) 중 하나 이상의 태블릿 서버들(150)에 할당된 역할에 기초하는,
    방법(600).
  5. 제3 항 또는 제4 항에 있어서,
    상기 데이터 프로세싱 하드웨어(144)에서, 상기 복수의 태블릿 서버들(150) 중의 태블릿 서버들(150)의 하나로부터 복호화된 형태로 상기 자원 키(172)를 요청하는 자원 키 요청을 수신하는 단계;
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 태블릿 서버들(150) 중 하나가 상기 ACL(234)에 기초하여 상기 자원 키(172)에 액세스하도록 인가되는지를 결정하는 단계;
    상기 태블릿 서버들(150) 중 하나가 상기 자원 키(172)에 액세스하도록 인가될 때, 상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 액세스 제어 키(232)로 상기 암호화된 자원 키(172)를 복호화하는 단계; 및
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 복호화된 자원 키(172)를 상기 태블릿 서버들(150) 중 하나에 송신하는 단계를 더 포함하는,
    방법(600).
  6. 제5 항에 있어서,
    상기 복호화된 자원 키(172)는 상기 태블릿 서버들(150) 중 하나에 의해 수신될 때, 상기 태블릿 서버들(150) 중 하나로 하여금,
    상기 복호화된 자원 키(172)를 사용하여, 상기 태블릿 서버들(150) 중 하나에 의해 제어되는 적어도 하나의 태블릿(159)에 대응하는 데이터 암호화 키(182)를 복호화하고; 그리고
    상기 복호화된 데이터 암호화 키(182)를 사용하여, 상기 대응하는 적어도 하나의 태블릿(159)을 복호화하게 하는,
    방법(600).
  7. 제1 항 내지 제6 항 중 어느 한 항에 있어서,
    상기 자원 키(172)는 만료 시간 제한을 포함하는,
    방법(600).
  8. 제7 항에 있어서,
    상기 데이터 프로세싱 하드웨어(144)에 의해, 상기 자원 키(172)의 만료 시간 제한보다 작은 회전 레이트로 상기 자원 키(172)를 회전시키는 단계를 더 포함하는,
    방법(600).
  9. 제8 항에 있어서,
    상기 만료 시간 제한 및 상기 회전 레이트는 각각 상기 특정 사용자(12)에 의해 구성 가능한,
    방법(600).
  10. 제1 항 내지 제9 항 중 어느 한 항에 있어서,
    각각의 태블릿(159)의 데이터 블록들(154)의 상기 대응하는 부분은 각각의 다른 태블릿(159)의 데이터 블록들(154)의 대응하는 부분과 상이한 데이터 블록들(154)을 포함하는,
    방법(600).
  11. 시스템(100)으로서,
    데이터 프로세싱 하드웨어(144); 및
    상기 데이터 프로세싱 하드웨어(144)와 통신하는 메모리 하드웨어(146)를 포함하고, 상기 메모리 하드웨어(146)는 명령들을 저장하며, 상기 명령들은, 상기 데이터 프로세싱 하드웨어(144) 상에서 실행될 때, 상기 데이터 프로세싱 하드웨어(144)로 하여금,
    특정 사용자(12)와 연관된 테이블(158)을 수신하는 동작 ― 상기 테이블(158)은 복수의 데이터 블록들(154)을 포함함 ― ;
    상기 테이블(158)을 복수의 태블릿들(159)로 분할하는 동작 ― 각각의 태블릿(159)은 상기 테이블(158)의 복수의 데이터 블록들(154)의 대응하는 부분을 포함함 ― ;
    상기 테이블(158)과 고유하게 연관된 자원 키(172)를 생성하는 동작;
    상기 복수의 태블릿들(159)의 각각의 태블릿(159)에 대해;
    상기 대응하는 태블릿(159)에 대한 고유 데이터 암호화 키(182)를 생성하는 동작; 및
    상기 고유 데이터 암호화 키(182)로 상기 대응하는 태블릿(159)을 암호화하는 동작;
    상기 자원 키(172)로 각각의 데이터 암호화 키(182)를 암호화하는 동작;
    각각의 암호화된 태블릿(152) 및 각각의 대응하는 암호화된 데이터 암호화 키(182)의 제어를 복수의 태블릿 서버들(150)에 분배하는 동작 ― 상기 복수의 태블릿 서버들(150) 내 각각의 태블릿 서버(150)는 상기 테이블(158)로부터 상기 암호화된 태블릿들(152) 중 하나 이상을 제어함 ― ; 및
    상기 자원 키(172)를 원격 엔티티(190)에 송신하는 동작을 포함하는 동작들을 수행하게 하고, 상기 자원 키(172)는 상기 원격 엔티티(190)에 의해 수신될 때, 상기 원격 엔티티(190)로 하여금,
    상기 특정 사용자(12)와 연관되고 비밀로 유지되는 사용자 키(192)로 상기 자원 키(172)를 암호화하고; 그리고
    상기 암호화된 자원 키(172)를 상기 데이터 프로세싱 하드웨어(144)에 송신하게 하는,
    시스템(100).
  12. 제11 항에 있어서,
    상기 동작들은 상기 원격 엔티티(190)로부터 상기 암호화된 키를 수신한 후:
    상기 테이블(158)의 하나 이상의 데이터 블록들(154)에 액세스하라는 요청을 획득하는 동작;
    상기 암호화된 자원 키(172)를 포함하는 자원 키 복호화 요청(212)을 생성하는 동작;
    상기 자원 키 복호화 요청(212)을 상기 원격 엔티티(190)에 송신하는 동작을 더 포함하고, 상기 자원 키 복호화 요청(212)은 상기 원격 엔티티(190)에 의해 수신될 때, 상기 원격 엔티티(190)로 하여금,
    상기 특정 사용자(12)와 연관된 상기 사용자 키(192)로 상기 암호화된 자원 키(172)를 복호화하고; 그리고
    상기 복호화된 자원 키(172)를 상기 데이터 프로세싱 하드웨어(144)에 송신하게 하는,
    시스템(100).
  13. 제12 항에 있어서,
    상기 동작들은, 상기 복호화된 자원 키(172)를 수신한 후, ACL(access control list)(234)과 연관된 액세스 제어 키(232)로 상기 복호화된 자원 키(172)를 암호화하는 동작을 더 포함하고, 상기 ACL(234)은 상기 자원 키(172)에 액세스하도록 인가된 태블릿 서버들(150)의 목록을 포함하는,
    시스템(100).
  14. 제13 항에 있어서,
    액세스 제어 목록은 상기 복수의 태블릿 서버들(150) 중 하나 이상의 태블릿 서버들(150)에 할당된 역할에 기초하는,
    시스템(100).
  15. 제13 항 또는 제14 항에 있어서,
    상기 동작들은,
    상기 복수의 태블릿 서버들(150) 중의 태블릿 서버들(150) 중 하나로부터 복호화된 형태로 상기 자원 키(172)를 요청하는 자원 키 요청을 수신하는 동작;
    상기 태블릿 서버들(150) 중 하나가 상기 ACL(234)에 기초하여 상기 자원 키(172)에 액세스하도록 인가되는지를 결정하는 동작;
    상기 태블릿 서버들(150) 중 하나가 상기 자원 키(172)에 액세스하도록 인가될 때, 상기 액세스 제어 키(232)로 상기 암호화된 자원 키(172)를 복호화하는 동작; 및
    상기 복호화된 자원 키(172)를 상기 태블릿 서버들(150) 중 하나에 송신하는 동작을 더 포함하는,
    시스템(100).
  16. 제15 항에 있어서,
    상기 복호화된 자원 키(172)는 상기 태블릿 서버들(150) 중 하나에 의해 수신될 때, 상기 태블릿 서버들(150) 중 하나로 하여금,
    상기 복호화된 자원 키(172)를 사용하여, 상기 태블릿 서버들(150) 중 하나에 의해 제어되는 적어도 하나의 태블릿(159)에 대응하는 데이터 암호화 키(182)를 복호화하고; 그리고
    상기 복호화된 데이터 암호화 키(182)를 사용하여, 상기 대응하는 적어도 하나의 태블릿(159)을 복호화하게 하는,
    시스템(100).
  17. 제11 항 내지 제16 항 중 어느 한 항에 있어서,
    상기 자원 키(172)는 만료 시간 제한을 포함하는,
    시스템(100).
  18. 제17 항에 있어서,
    상기 동작들은, 상기 자원 키(172)의 만료 시간 제한보다 작은 회전 레이트로 상기 자원 키(172)를 회전시키는 동작을 더 포함하는,
    시스템(100).
  19. 제18 항에 있어서,
    상기 만료 시간 제한 및 상기 회전 레이트는 각각 상기 특정 사용자(12)에 의해 구성 가능한,
    시스템(100).
  20. 제11 항 내지 제19 항 중 어느 한 항에 있어서,
    각각의 태블릿(159)의 데이터 블록들(154)의 상기 대응하는 부분은 각각의 다른 태블릿(159)의 데이터 블록들(154)의 대응하는 부분들과 상이한 데이터 블록들(154)을 포함하는,
    시스템(100).
KR1020237010624A 2020-09-03 2021-08-27 암호화 키들의 안전하고 효율적인 분배 KR20230056777A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/010,993 2020-09-03
US17/010,993 US20220069981A1 (en) 2020-09-03 2020-09-03 Distribute Encryption Keys Securely and Efficiently
PCT/US2021/048103 WO2022051194A1 (en) 2020-09-03 2021-08-27 Distributing encryption keys securely and efficiently

Publications (1)

Publication Number Publication Date
KR20230056777A true KR20230056777A (ko) 2023-04-27

Family

ID=78000778

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237010624A KR20230056777A (ko) 2020-09-03 2021-08-27 암호화 키들의 안전하고 효율적인 분배

Country Status (6)

Country Link
US (1) US20220069981A1 (ko)
EP (1) EP4208978A1 (ko)
JP (1) JP2023540521A (ko)
KR (1) KR20230056777A (ko)
CN (1) CN116235459A (ko)
WO (1) WO2022051194A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230052663A1 (en) * 2021-08-10 2023-02-16 International Business Machines Corporation Internal key management for a storage subsystem encrypting data in the cloud

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11143780A (ja) * 1997-11-05 1999-05-28 Hitachi Ltd データベースにおける秘密情報管理方法およびデータベースの秘密情報管理装置
US7093137B1 (en) * 1999-09-30 2006-08-15 Casio Computer Co., Ltd. Database management apparatus and encrypting/decrypting system
EP1267515A3 (en) * 2000-01-21 2004-04-07 Sony Computer Entertainment Inc. Method and apparatus for symmetric encryption/decryption of recorded data
US7178021B1 (en) * 2000-03-02 2007-02-13 Sun Microsystems, Inc. Method and apparatus for using non-secure file servers for secure information storage
US7266699B2 (en) * 2001-08-30 2007-09-04 Application Security, Inc. Cryptographic infrastructure for encrypting a database
US8639947B2 (en) * 2004-06-01 2014-01-28 Ben Gurion University Of The Negev Research And Development Authority Structure preserving database encryption method and system
US20060005017A1 (en) * 2004-06-22 2006-01-05 Black Alistair D Method and apparatus for recognition and real time encryption of sensitive terms in documents
TWI277870B (en) * 2004-11-22 2007-04-01 Toshiba Corp Copyright management method, information recording/reproducing method and device, and information recording medium and method of manufacturing the medium
EP1722502B1 (en) * 2005-05-10 2007-09-05 Research In Motion Limited Key masking for cryptographic processes
US7639819B2 (en) * 2005-06-16 2009-12-29 Oracle International Corporation Method and apparatus for using an external security device to secure data in a database
JP4654806B2 (ja) * 2005-07-15 2011-03-23 ソニー株式会社 情報処理装置、情報記録媒体製造装置、情報記録媒体、および方法、並びにコンピュータ・プログラム
US7548928B1 (en) * 2005-08-05 2009-06-16 Google Inc. Data compression of large scale data stored in sparse tables
US20070074047A1 (en) * 2005-09-26 2007-03-29 Brian Metzger Key rotation
US7895452B2 (en) * 2007-07-05 2011-02-22 Oracle International Corporation Technique for protecting a database from an ongoing threat
US8571209B2 (en) * 2009-01-19 2013-10-29 International Business Machines Recording keys in a broadcast-encryption-based system
US9946810B1 (en) * 2010-04-21 2018-04-17 Stan Trepetin Mathematical method for performing homomorphic operations
US9442980B1 (en) * 2010-04-21 2016-09-13 Stan Trepetin Mathematical method for performing homomorphic operations
US8626749B1 (en) * 2010-04-21 2014-01-07 Stan Trepetin System and method of analyzing encrypted data in a database in near real-time
US8601263B1 (en) * 2010-05-18 2013-12-03 Google Inc. Storing encrypted objects
US8914632B1 (en) * 2011-12-21 2014-12-16 Google Inc. Use of access control lists in the automated management of encryption keys
US10187358B2 (en) * 2013-12-03 2019-01-22 Amazon Technologies, Inc. Data transfer optimizations
US9843446B2 (en) * 2014-10-14 2017-12-12 Dropbox, Inc. System and method for rotating client security keys
US20160350544A1 (en) * 2014-10-22 2016-12-01 Sze Yuen Wong Methods And Apparatus For Sharing Encrypted Data
US20160142387A1 (en) * 2014-11-14 2016-05-19 Microsoft Technology Licensing, Llc. Storage for encrypted data with enhanced security
US9436849B2 (en) * 2014-11-21 2016-09-06 Sze Yuen Wong Systems and methods for trading of text based data representation
US9800579B2 (en) * 2015-02-12 2017-10-24 Verizon Patent And Licensing Inc. Network-based client side encryption
CN105282171B (zh) * 2015-11-06 2018-04-27 北京大学深圳研究生院 一种安全可靠的分布式云存储方法
US10372935B1 (en) * 2015-11-13 2019-08-06 Google Llc Selectively encrypting commit log entries
JP2017130705A (ja) * 2016-01-18 2017-07-27 日本電気株式会社 データ管理システム、データ管理方法、及び、データ管理プログラム
US10601782B2 (en) * 2016-04-01 2020-03-24 Egnyte, Inc. Systems and methods for proxying encryption key communications between a cloud storage system and a customer security module
US10671742B2 (en) * 2016-11-18 2020-06-02 Duncan MacDougall Greatwood Sharing an object using the scattered storage system with high-entropy credentials
US11177942B2 (en) * 2016-11-18 2021-11-16 Duncan MacDougall Greatwood Security through data scattering
CN108696565A (zh) * 2017-04-06 2018-10-23 北京算云联科科技有限公司 基于混合云和异构物联网的一体化数字家庭控制系统
CN108809906B (zh) * 2017-05-03 2020-07-07 腾讯科技(深圳)有限公司 数据处理方法、系统及装置
US10698883B2 (en) * 2017-10-25 2020-06-30 International Business Machines Corporation Data coherency between trusted DBMS and untrusted DBMS
US10873450B2 (en) * 2017-11-16 2020-12-22 Intuit Inc. Cryptographic key generation for logically sharded data stores
WO2019173774A1 (en) * 2018-03-08 2019-09-12 FHOOSH, Inc. Systems and methods for secure storage and retrieval of data objects
US10728025B2 (en) * 2018-04-13 2020-07-28 Amazon Technologies, Inc. Encryption by default in an elastic computing system
GB2574076B (en) * 2018-09-21 2022-07-13 Nationwide Building Soc Distributed data storage
US11527310B2 (en) * 2018-10-31 2022-12-13 Sze Yuen Wong Pseudonymous crypto-based systems and methods for patient data
CN110300112B (zh) * 2019-07-02 2022-05-10 石家庄铁道大学 区块链密钥分层管理方法
CN110633580A (zh) * 2019-09-20 2019-12-31 徐州医科大学附属医院 一种面向xml数据的安全分布式存储方法
US11563563B2 (en) * 2019-11-07 2023-01-24 Sap Se SQL extension for secure encryption key transfer
US11860673B1 (en) * 2019-11-22 2024-01-02 Amazon Technologies, Inc. Database with client-controlled encryption key
CN111639357B (zh) * 2020-06-05 2023-05-16 杭州安恒信息技术股份有限公司 一种加密网盘系统及其认证方法和装置

Also Published As

Publication number Publication date
JP2023540521A (ja) 2023-09-25
EP4208978A1 (en) 2023-07-12
CN116235459A (zh) 2023-06-06
US20220069981A1 (en) 2022-03-03
WO2022051194A1 (en) 2022-03-10

Similar Documents

Publication Publication Date Title
US11741240B2 (en) Tokenized hardware security modules
US11855767B2 (en) Methods and systems for distributing encrypted cryptographic data
Yan et al. Heterogeneous data storage management with deduplication in cloud computing
EP3398073B1 (en) Securely storing and distributing sensitive data in a cloud-based application
CN108418784B (zh) 一种基于属性密码的分布式跨域授权和访问控制方法
US20140270179A1 (en) Method and system for key generation, backup, and migration based on trusted computing
US20140164774A1 (en) Encryption-Based Data Access Management
CN104618096B (zh) 保护密钥授权数据的方法、设备和tpm密钥管理中心
EP2842256A1 (en) Method and system for network data access
CN111954879B (zh) 互不信任的飞地
US11537733B2 (en) Database access control service in networks
US20230231850A1 (en) Integration of Third-Party Encryption Key Managers with Cloud Services
KR20230056777A (ko) 암호화 키들의 안전하고 효율적인 분배
CN106685906B (zh) 鉴权处理方法、节点及系统
EP4322470A1 (en) Data encryption system and method
CN117473551A (zh) 一种基于区块链和访问控制的数据共享方法
TW202433319A (zh) 基於以屬性為基礎之加密金鑰之第三方資料存取授權