KR20230031279A - 보안 비밀 복구 - Google Patents

보안 비밀 복구 Download PDF

Info

Publication number
KR20230031279A
KR20230031279A KR1020237000009A KR20237000009A KR20230031279A KR 20230031279 A KR20230031279 A KR 20230031279A KR 1020237000009 A KR1020237000009 A KR 1020237000009A KR 20237000009 A KR20237000009 A KR 20237000009A KR 20230031279 A KR20230031279 A KR 20230031279A
Authority
KR
South Korea
Prior art keywords
key
encrypted
slice
slices
group
Prior art date
Application number
KR1020237000009A
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 KR20230031279A publication Critical patent/KR20230031279A/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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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/0825Key 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 asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • 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/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Peptides Or Proteins (AREA)

Abstract

보안 비밀복구(SECURE SECRET RECOVERY)
하나의 비밀은 여러 개의 암호화된 슬라이스들로 잘라질 수 있다. 상기 암호화된 슬라이스들은 그룹의 멤버들 간에 분산될 수 있다. 상기 암호화된 슬라이스들은 상기 비밀의 복구를 가능하게 하지만, 암호 해독에는 그룹 권한 키가 필요하다. 따라서, 많은 슬라이스들이 필요하지만, 상기 비밀을 복구하기 위해서, 여전히 충분하지는 않다.

Description

보안 비밀 복구
[0001] 본 발명은 일반적으로 데이터 처리 시스템에서의 보안 비밀 복구(secure secret recovery)에 관한 것이다.
[0002] 비밀들(secrets) 및 액세스 제어들(access controls)은 다양한 컴퓨터 시스템에서 사용된다. 비밀들에는 암호화 키들 등과 같은 민감한 데이터가 포함될 수 있다. 비밀들은 다양한 방법으로 보호되지만, 가장 눈에 띄는 두 가지 방법들은 해싱(hashing)과 암호화(encryption)이다. 둘 다 비밀을 본질적으로 읽을 수 없는 “암호문(cipher text)”으로 변환하는 단계를 포함하지만, 해싱은 일반적으로 단방향(typically one-way)인 반면(해싱된 비밀은 쉽게 복구할 수 없지만, 다른 해싱된 비밀과 비교할 수는 있음), 암호화는 일반적으로 가역적(typically reversible)일 수 있다(암호화된 비밀(an encrypted secret)은 일반적으로 특정 "키"를 사용하는 경우에만 "암호 해독”될 수 있고, 암호화 키를 소유하는 사용자에 의해 비밀이 복구될 수 있음). 따라서, 이들 방법들은 다양한 사용 사례들을 가질 수 있다. 예를 들어, 비밀번호 시스템들(password systems)은 일반적으로 해싱을 사용하는 반면(해싱된 비밀번호를 저장하는 웹사이트는 웹사이트에서 사용자의 "실제" 비밀번호를 확인할 수 없는 상태에서 사용자가 올바른 비밀번호를 입력했는지 여부를 확인할 수 있음), 반복적으로 이용해야 하는 데이터는 일반적으로 암호화를 사용한다(통신, 데이터 저장, 등).
[0003] 다양한 암호화 알고리즘이 존재하지만, 이들 사이의 일반적인 공통점은 하나 또는 그 이상의 "키들(keys)"을 사용한다는 것이다. 암호화 키는 암호화 함수의 입력으로 사용되는 고유한 데이터 문자열이고, 비밀을 암호화하기 위해, 비밀은 고유 키와 함께 암호화 함수에 입력되어 암호문으로 구성된 암호화된 출력이 된다. 이 암호문은 본질적으로 무작위로 보이지만, 암호문과 동일한 암호화 키("대칭 키" 암호화 시스템에서) 또는 다른 “해독 키”(“비대칭 키” 암호화에서)를 해독 함수(비밀을 암호화하는데 사용되는 암호화 함수와 직접 관련됨)에 입력함으로써 해독될 수 있다. 어떤 암호화 함수가 사용되었는지에 대한 지식은 종종 외부 사용자에 의해 경험적으로 결정될 수 있으므로 암호화 키의 보호는 비밀 보호에 가장 중요하다. 일부 시스템에서는, 종종 다른 암호화 함수(및 다른 암호화 키)를 사용하여 암호화 키 자체를 암호화할 수 있다. 일부 암호화 형식을 사용하면 미리 결정된 여러 키들 중 임의의 것을 사용하여 비밀을 해독할 수 있다. 이는 동일한 비밀의 여러 복사본들을 저장하여 활성화될 수 있고 각 복사본은 다른 키를 통해 암호화된다.
[0004] 암호화 키와 같은 비밀들은 일반적으로 오용(misappropriation)을 방지하기 위해 안전하게 저장된다. 그러나, 이는 종종 내결함성 감소(reduced failure tolerance)의 절충안으로 제공될 수 있는데, 만일 비밀이 단일 드라이브에 안전하게 저장되어 있다면, 드라이브에 오류가 발생하면 비밀을 복구할 수 없게 될 수 있다. 만일 비밀이 스토리지 암호화 키(스토리지 시스템에 저장된 데이터의 암호화 제어)이면, 키가 손실되는 경우 데이터가 손실되거나 데이터에 대한 액세스가 손실될 수 있다(키가 없다면, 기능적으로 데이터 자체의 손실과 동일할 수 있음). 많은 시스템이 이 문제를 완화하기 위해 비밀들의 백업을 수행하지만, 단순 백업들에는 고유한 상호 절충안들이 있으며, 이는 추가적인 공격 벡터들(attack vectors)의 역할을 할 수 있다. 예를 들어, 실제 비밀 대신 백업 자체가 공격자에 의해 손상될 수 있다.
[0005] 본 발명의 일 실시 예에 따른 방법은 제1 키 유닛으로부터 제1 암호화된 슬라이스와 제2 키 유닛으로부터 제2 암호화된 슬라이스를 수신하는 단계를 포함한다. 상기 방법은 또한 그룹 권한(a group authority)으로부터 그룹 권한 키를 수신하는 단계를 포함한다. 상기 방법은 또한 상기 그룹 권한 키를 사용하여 상기 제1 암호화된 슬라이스 및 상기 제2 암호화된 슬라이스를 해독하는 단계(decrypting)를 포함한다. 상기 방법은 또한 상기 제1 해독된 슬라이스와 상기 제2 해독된 슬라이스에 기초하여 상기 비밀을 복구하는 단계를 포함한다. 이 방법은 바람직하게도 비밀을 안전하게 복구할 수 있게 하는데, 여러 키 유닛들로부터의 여러 슬라이스들과 그룹 권한으로부터의 키를 모두 필요로 한다.
[0006] 본 발명의 실시 예(들)에서, 상기 방법은 상기 암호화된 제1 슬라이스의 제1 지문(a first fingerprint)과 상기 암호화된 제2 슬라이스의 제2 지문을 생성하는 단계; 상기 제1 지문 및 상기 제2 지문을 그룹 권한에 전송하는 단계를 더 포함하고, 상기 하나 또는 그 이상의 그룹 권한 키들을 수신하는 단계는 상기 그룹 권한이 상기 제1 지문 및 상기 제2 지문을 검증하는 것에 응답하여 이루어진다. 이는 바람직하게도 (상기 슬라이스들 자체를 상기 그룹 권한에 노출시키지 않고) 지문을 통해 상기 슬라이스들을 검증하도록 상기 그룹 권한에 요구함으로써, 보안 비밀 복구 프로세스에 추가적인 보안 및 검증을 제공한다.
[0007] 본 발명의 실시 예(들)에서, 상기 방법은 상기 복구된 비밀을 제1 새로운 슬라이스 및 제2 새로운 슬라이스로 자르는 단계(slicing); 상기 제1 새로운 슬라이스 및 상기 제2 새로운 슬라이스를 암호화하는 단계; 상기 암호화된 제1 새로운 슬라이스를 상기 제1 키 유닛으로 전송하는 단계; 및 상기 암호화된 제2 새로운 슬라이스를 상기 제2 키 유닛으로 전송하는 단계를 더 포함한다. 이는 바람직하게도 키 유닛들 사이에 상기 복구된 비밀의 새로운 슬라이스들을 분산하는 것을 가능하게 하여 추가 보안을 제공한다(예를 들어, 상기 컴포넌트가 실패하는 경우, 상기 복구된 비밀이 그렇지 않으면 손실될 수 있음). 또한 상기 분산된 슬라이스들은 다시 암호화되어 종래 기술보다 보안을 더욱 향상시킨다.
[0008] 본 발명의 실시 예(들)에서, 상기 방법은 비밀을 획득하는 단계; 그룹 권한으로부터 그룹 권한 키를 수신하는 단계; 및 상기 그룹 권한 키들에 기초하여, 상기 비밀의 복수의 암호화된 슬라이스들을 생성하는 단계를 포함한다. 이것은 바람직하게도 안전하게 저장된 비밀이 복구될 수 있는 시스템을 설정하는 것을 가능하게 한다.
[0009] 본 발명의 다른 실시 예는 컴퓨터 프로그램 제품을 제공하고, 상기 컴퓨터 프로그램 제품은 프로그램 명령들이 구현된 컴퓨터 판독 가능 저장 매체를 포함하며, 상기 프로그램 명령들은 컴퓨터에 의해 실행 가능하고, 상기 컴퓨터가 위에서 논의된, 그리고 아래에서 청구된 방법들 중 어느 하나를 수행하도록 한다. 이것은 바람직하게도 비밀을 안전하게 복구할 수 있게 하며, 여러 키 유닛들로부터의 여러 슬라이스들과 그룹 권한으로부터의 키를 모두 필요로 한다.
[0010] 본 발명의 또 다른 실시 예는 시스템을 제공하고, 상기 시스템은 메모리 및 중앙 처리 장치(CPU)를 포함한다. 상기 CPU는 명령들을 실행하도록 구성되고, 상기 명령들은 위에서 논의된, 그리고 아래에서 청구된 방법들 중 어느 하나를 수행한다. 이것은 바람직하게도 비밀을 안전하게 복구할 수 있게 하며, 여러 키 유닛들로부터의 여러 슬라이스들과 그룹 권한으로부터의 키를 모두 필요로 한다.
[0011] 상기 요약은 본 발명의 각각의 도시된 실시예 또는 모든 구현을 설명하기 위한 것은 아니다.
[0012] 본 출원에 포함된 도면들은 명세서에 포함되어 명세서의 일부를 형성한다. 이들은 본 발명의 실시예들을 도시하며, 설명과 함께 본 발명의 원리들을 설명하는 역할을 한다. 도면들은 특정 실시예들을 예시할 뿐이며, 개시 내용을 제한하지 않는다. 청구된 주제의 다양한 실시예들의 특징 및 장점은 다음의 상세한 설명이 진행됨에 따라 그리고 도면을 참조할 때 명백해질 것이며, 도면에서 동일한 번호는 동일한 부분들을 나타내고 다음과 같다:
[0013] 도 1은 본 발명의 여러 실시예들에 따른 보안 비밀 복구 시스템(a secure secret reconstruction system)을 예시하는 블록도이다.
[0014] 도 2는 본 발명의 여러 실시예들에 따른 “슬라이스 후 암호화(slice-then-encrypt)” 접근법을 사용하는 높은 수준의 보안 비밀 키 복구 방법(a high-level secure secret key reconstruction method)이다.
[0015] 도 3은 본 발명의 여러 실시예들에 따른 그룹 권한의 관점에서 본 보안 비밀 키 복구 방법의 예시이다.
[0016] 도 4는 본 발명의 여러 실시예들에 따른 대체 키 유닛(replacement key unit)의 관점에서 본 보안 비밀 키 복구 방법의 예시이다.
[0017] 도 5는 본 발명의 여러 실시예들에 따른 높은 수준의 보안 비밀 키 오퍼레이션 방법(a high-level secure secret key operation method)이다.
[0018] 도 6은 본 발명의 여러 실시예들에 따른 다수의 키 액세스 컨트롤 유닛(key access control units) 및 스토리지 키들(storage keys)을 포함하는 예시적인 키 유닛(example key unit)을 추가로 상세하게 포함하는 시스템을 도시한 블록도이다.
[0019] 도 7은 본 발명의 여러 실시예들에 따른 “암호화 후 슬라이스(encrypt-then-slice)” 접근법을 사용하는 높은 수준의 보안 비밀 키 복구 방법이다.
[0020] 도 8은 본 발명의 실시예에 따른 클라우드 컴퓨팅 환경을 도시한다.
[0021] 도 9는 본 발명의 실시예에 따른 추상화 모델 계층(abstraction model layers)을 도시한다.
[0022] 도 10은 본 발명의 실시예들을 구현하는데 사용될 수 있는 예시적인 컴퓨터 시스템의 상위 레벨 블록도를 도시한다.
[0023] 본 발명은 다양한 변형 및 대안적인 형태가 가능하지만, 그 구체적인 내용은 도면에 예시의 방법으로서 도시되어 상세하게 설명될 것이다. 그러나, 본 발명을 설명된 특정 실시예들로 제한하려는 의도는 아니라는 것을 이해해야 한다. 반대로, 의도는 본 발명의 범위내에 있는 모든 변경, 등가물 및 대안을 포함하는 것이다.
[0024] 본 발명의 실시 예들은 비밀 키들을 안전하게 복구하기 위한 시스템들 및 방법들에 관한 것이다. 보다 구체적인 실시 예들은 비밀키를 포함한 키 유닛이 실패하였는지를 결정하고, 다른 키 유닛들에 저장된 컴포넌트들(components)을 사용하여 비밀키를 재건하며, 재건된 비밀키를 해독할 수 있도록 대체 키 유닛을 활성화하는 시스템에 관한 것이다.
[0025] 본 발명에 따른 시스템들 및 방법들은 보안 비용을 최소화하면서 내결함성(fault tolerance)을 향상시키는 이점이 있다. 본질적으로, 비밀은 암호화된 상태로 저장될 수 있으며, 비밀의 온전한 백업을 이용하는 대신, 비밀은 “슬라이스들(slices)”(부분들 또는 조각들)로 "슬라이스 되어(sliced)"(분할되어 또는 조각되어), 각 슬라이스는 별도의 "키 유닛들"로 암호화되고 저장된다. 암호화된 슬라이스들은 다양한 키 유닛들을 감독하는 그룹 권한(a group authority)이 제공하는 키들 없이는 (쉽게) 해독할 수 없다. 이렇게 하면 비밀을 저장하는 키 유닛에 장애가 발생하더라도 최소한의 보안 위험으로 비밀을 복구될 수 있다. 이는 몇 가지 이점들을 제공한다. 예를 들어, 만일 스토리지 암호화 키를 저장하는 키 유닛에 장애가 발생하더라도, 스토리지 시스템은 백업으로부터 완전히 재건(더 큰 스토리지 시스템의 경우 몇 주 이상 걸릴 수 있는 프로세스)될 필요가 없고, 대신에, 본 발명에 따른 시스템은 "분실된" 스토리지 암호화 키를 재건하여 스토리지 시스템 및 그 것의 데이터에 대한 유용한 컨트롤을 되찾을 수 있다. 또한, 이 모든 작업은 상기 스토리지 키를 다른 키 유닛들 또는 그룹 권한에 노출시킬 위험 없이 수행될 수 있으므로, 그래서 일단 복구되면 (즉시) 변경될 필요가 없을 수 있다.
[0026] 본 개시 전반에 걸쳐, 키들이 참조되는데, 이들은 "스토리지 키들(storage keys)", "그룹 권한 키들(group authority keys)" 및 "사용자 키들(user keys)"와 같은 "키들"이다. 이들 이름들은 예시적인 목적으로만 사용되며, 당업자가 이해할 수 있는 바와 같이, 키들은 다른 목적을 위해 사용될 수 있다. 특히, "스토리지 키"는 본 발명에 의해 안전하게 복구될 수 있는 "안전하게 저장된 비밀"의 단지 한 예로서 사용된다. 다른 가능한 예들로는, 통신 키들(communications keys), 민감한 데이터(sensitive data) 등이 있다. 유사하게, "키 유닛(key unit)"이라는 용어가 예시적인 예로 사용되지만, 동일한 개념이 단순히 "유닛들(units)"로 더 광범위하게 지칭될 수 있다.
[0027] 본 명세서 전반에 걸쳐, "슬라이스들"이 언급된다. 특히, 비밀의 슬라이스들(slices of a secret) (스토리지 키와 같은)은 암호화되어 그룹의 유닛들 간에 분산될 수 있다. 유닛에 "저장되는" 것으로 설명되는 슬라이스들은 상기 유닛의 슬라이스 스토리지 내에서 암호화된 상태로 저장된다. 슬라이스들은 초기 슬라이싱을 수행하는 유닛에 의해 암호화된다. 슬라이스들은 그룹 권한에서 제공되는 특수 암호화 키들을 사용하여 암호화된다.
[0028] 본 발명의 대부분의 예들은 비밀의 단일 암호화된 슬라이스를 저장하는 각 유닛을 언급하지만, 일부 실시예들에서, 하나의 유닛은 다수의 슬라이스들을 저장할 수 있다. 예를 들어, 4개의 유닛들로 이루어진 그룹에서, 제1 유닛의 비밀 S는 슬라이스들 s1, s2 및 s3로 슬라이스 될 수 있다. 일부 실시예들에서, 만일 제1 유닛이 실패하더라도, 대체 유닛이 여전히 모든 슬라이스들을 수신할 수 있도록 (아래에 설명할 다른 조건들이 충족된다고 가정하면), 제2 유닛은 슬라이스 s1을 저장할 수 있고, 제3 유닛은 슬라이스 s2를 저장할 수 있으며, 제4 유닛은 슬라이스 s3를 저장할 수 있는데, 따라서 비밀 S는 복구될 수 있다. 그러나, 일부 실시예들에서, 제2 유닛은 슬라이스 s1과 s2를 저장할 수 있고, 제3 유닛은 s2와 s3를 저장할 수 있으며, 제4 유닛은 s3와 s1을 저장할 수 있다. 이러한 방식으로, 각 슬라이스는 적어도 두 개의 유닛들에 저장되면, 예를 들어, 제1 유닛과 제2 유닛이 모두 실패하더라도 모든 슬라이스들은 여전히 복구될 수 있으므로 비밀 S는 여전히 복구될 수 있다. 이는 중복성을 제공할 수 있지만, 일부 시스템에서 내결함성을 더욱 유리하게 개선시킬 수 있다. 또한, 이를 통해 유닛이 악의적인 행위자에 의해 손상되었는지 또는 다른 방식으로 손상되었는지 여부를 결정할 수 있는데, 이는 슬라이스들이 단일 유닛의 슬라이스들이 다른 유닛들에 저장된 슬라이스들의 "복사본(copies)"과 다른지 여부를 결정하도록 비교될 수 있기 때문이다.
[0029] 어떤 유닛이 실패하더라도 비밀을 복구할 수 있도록 비밀의 슬라이스들이 유닛들 간에 분산될 수 있다(또는 아마도 그러한 경우 여러 유닛들이 실패한 경우에도 구현에 따라 복구가 가능). 일부 실시예들에서, 유닛들은 또한 저장된 슬라이스들의 검증을 가능하게 하기 위해 패리티 데이터(parity data)를 저장할 수 있다.
[0030] 비밀은 초기에 시스템 운영자(예: 키 유닛을 설치한 기술자), 하드웨어(예: 무작위로 생성될 수 있음) 등으로부터 획득될 수 있다. 일부 실시예들에서, 비밀은 그룹 권한으로부터의 정보로부터 파생될 수 있다. 비밀이 복구될 필요가 있을 때, 새로운 유닛이 그룹에 추가될 수 있다(여기서는 종종 "교체 키 유닛"이라고 함). 새로운 유닛을 추가할 때, 그룹 권한은 새로운 유닛의 신원을 검증할 수 있다(예를 들어, 인증서 교환/체크를 통해). 이 새로운 유닛은 그룹 권한에 자신의 신원을 증명하면 나머지 유닛들로부터 비밀 슬라이스들을 수신할 수 있다. 상기 슬라이스들은 자신들을 저장하는 유닛이 아닌 유닛에 의해(그리고 그룹 권한에 의해 제어되는 키를 사용하여) 암호화되었기 때문에, 상기 슬라이스들을 저장하는 유닛은 그것들을 해독하지 못할 수 있다.
[0031] 일부 실시예들에서, 키 유닛들은 “그룹들”으로 구성될 수 있으며, 각각의 그룹은 n개의 키 유닛들(여기서, n> = 1)의 세트를 포함할 수 있다. 예를 들어, 그룹 권한은 시스템 작동 전에 n개의 키 유닛들 그룹을 생성할 수 있다. 각 그룹은, 예를 들어, 도 1의 GA(110)과 같은 서로 다른 그룹 권한에 의해 관리될 수 있지만, 일부 실시예들에서 하나의 그룹 권한은 하나 이상의 그룹을 관리할 수 있다. 그러나, 설명의 용이성을 위해, 키 유닛들의 단일 그룹만이 본 명세서에 상세히 설명된다. GA가 시스템의 컴포넌트들의 ID 인증을 용이하게 하는 PKI 인증 권한(a PKI certificate authority)이 되는 것이 바람직할 수 있다. GA는 어떤 세트의 키 유닛들이 특정 그룹에 속하는 지를 결정할 수 있으며, 그룹 멤버십을 위한 인증서를 생성함으로써 이를 용이하게 할 수 있다. 그런 다음, 키 유닛들은 상기 그룹에 합류할 수 있다. 키 유닛들은 보안 비밀복구의 요건들에에 따라 적절하게 작동한다는 것이 증명되는 것이 유익하다. 이것은 일련 번호들, 인증서들, 서명된 코드 등을 사용하여 제조업체에 의해 수행될 수 있다. 이는 악의적인 행위자들이 ("불량(rogue)" 키 유닛을 통해) 그룹에 합류하는 것을 방지하는데 도움이 될 수 있다. 예를 들어, 일부 실시예들에서, GA에는 키 유닛들을 식별하는 매니페스트(manifest)(아마도 블록체인으로)가 제공될 수 있고 키 유닛들이 매니페스트와 일치하는지를 보기 위해 체크될 수 있다. 일부 실시예들에서, 하나 이상의 그룹 권한이 그룹의 제어를 공유할 수 있다.
[0032] 본 명세서 전반에 걸쳐, 유닛들, 사용자들, 그룹 권한 등 간에 및/또는 사이에 통신들이 참조될 수 있는데, 예를 들어 그룹 권한이 키 유닛에 그룹 권한 키를 전송하는 것이 참조될 수 있다. 그러한 통신들이 메시지 보안을 개선하기 위해, 당업자에게 익숙한 방식으로, 전송 암호화가 사용될 수 있다.
[0033] 도 1은 본 발명의 몇몇 실시예들에 따른, 예시적인 복구 가능한 보안 비밀 시스템(100)의 고-수준 블록도를 도시한다. 시스템(100)은 그룹 권한(Group Authority, GA)(110), 키 유닛 U1(121), 키 유닛 U2(122) 및 키 유닛 U3(123)(일괄하여 "키 유닛들(121 내지 123)")을 포함하는 키 유닛들 그리고 스토리지 유닛(107), 스토리지 유닛(108) 및 스토리지 유닛(109)(일괄하여 “스토리지 유닛들(107 내지 109)”)를 포함하는 스토리지 유닛들을 포함한다. GA(110)은 전체 시스템의 구성을 결정할 책임이 있다. GA(110)은 키 유닛들의 정보를 보호하기 위해 사용되는 GA 키들(101, 102, 및 103)의 세트를 포함한다(아래에서 더 상세히 설명함). GA(110)은 또한 지문 스토리지(fingerprint storage)(114)를 포함한다.
[0034] 스토리지 유닛들(107 내지 109)은, 사용자들(104 내지 106) 및 GA(110)으로부터 비밀로 유지되는 키들을 사용하여, 암호화된 데이터를 저장한다. 스토리지 암호화 키들(141, 142, 및 143)(일괄하여 “스토리지 암호화 키들(141 내지 143)” 또는 “스토리지 키들(141 내지 143)”)은 키 유닛들(121 내지 123)에 저장된다. 특정 스토리지 암호화 키는 상기 키 유닛들 중 하나에만 저장될 수 있다. 또한, 키 유닛들(121 내지 123)은 스토리지 암호화 키들(141 내지 143)이 키 유닛들(121 내지 123)으로부터 추출될 수 없도록 (예를 들어, 주어진 스토리지 암호화 키는 이를 저장하는 키 유닛 이외의 어떠한 주체(entity)에 의해서도 판독될 수 없도록) 구성될 수 있다. 스토리지 암호화 키들(141 내지 143)은 키 액세스 제어 유닛들(131 내지 133) 내에 암호화된 상태로 저장된다.
[0035] 스토리지 키들(141 내지 143)은 단일 사용자 키(도 1에 도시되지 않음)가 하나의 스토리지 키만 해독할 수 있도록 서로 다른 사용자 키로 암호화될 수 있다. 예를 들어, 스토리지 키(141)은 제1 사용자 키를 통해 암호화되어 키 액세스 제어 유닛(131) 내에 저장될 수 있고, 스토리지 키(142)는 제2 사용자 키를 통해 암호화되고 키 액세스 제어 유닛(132) 내에 저장될 수 있으며, 스토리지 키(143)은 제3 사용자 키를 통해 암호화되어 키 액세스 유닛 제어(133) 등에 저장될 수 있다.
[0036] 일부 실시예들에서, 시스템(100)의 각 사용자에게는 도 5 및 도 6을 참조하여 아래에서 더 자세히 설명되는 바와 같이, 특정 스토리지 키를 해독하도록 구성된 하나 또는 그 이상의 "사용자 키"가 제공된다.
[0037] 도시된 바와 같이, 키 유닛들(121 내지 123) 각각은 키 액세스 제어 유닛들(131 내지 133) 중 하나를 저장한다. 그러나, 도 1에 도시되지 않은 일부 실시예들에서, 일부 키 유닛들은 스토리지 키를 각각 저장하는 다수의 키 액세스 제어 유닛들을 포함할 수 있다. 이는 특정 사용자에게 특정 스토리지 키에 대한 보다 세분화된 액세스를 제공하는 데 특히 유리할 수 있다. 이에 대해서는 도 5 및 도 6을 참조하여 아래에서 더 자세히 설명한다.
[0038] 키 유닛들(121 내지 123)은 또한 키 슬라이스 스토리지(161 내지 163)을 포함하여, 키 유닛들이 다른 키 유닛들로부터 스토리지 키들의 슬라이스들을 저장할 수 있게 한다. 예를 들어, 키 슬라이스 스토리지(161)은 키 유닛 U1(121)이 스토리지 키들(142 및 143)의 슬라이스들(172 및 183)을, 각각, 저장할 수 있게 한다. 마찬가지로, 키 스토리지(162)도 키 유닛 U2(122)가 스토리지 키들(143 및 141)의 슬라이스들(173 및 181)을, 각각, 저장할 수 있게 하고, 키 스토리지(163)도 키 유닛 U3(123)이 스토리지 키들(142 및 141)의 슬라이스들(182 및 171)을, 각각, 저장할 수 있게 한다. 스토리지 키(스토리지 키(141)와 같은)로 키 유닛(키 유닛 U1(121)과 같은)을 생성하는 프로세스 동안, 키 유닛은 슬라이싱/복구 함수(a slicing/reconstruction function)를 통해 스토리지 키를 둘 또는 그 이상의 슬라이스들(슬라이스(171 및 181)과 같은)로 자를 수 있다. 그런 다음 키 유닛은 상기 슬라이스들을 암호화하기 위해 하나 또는 그 이상의 그룹 권한 키들(GA 키들(101) 내지 (103)과 같은)을 이용할 수 있다. 일부 실시예들에서, 각각의 슬라이스는 상이한 GA 키로 암호화될 수 있다. 일단 슬라이스들이 암호화되면, 키 유닛은 암호화된 슬라이스들에 대한 지문들을 생성할 수 있다. 그런 다음, 키 유닛은 지문 스토리지(114)에 저장되도록 지문들을 그룹 권한으로 전송할 수 있다.
[0039] 일부 실시예들에서, 키 유닛은 스토리지 유닛에 키 슬라이스들을 저장할 수 있다. 예를 들어, 키 유닛(121)은 스토리지(107)에 키 슬라이스들(172 및 183)을 저장할 수 있다. 키 슬라이스들을 저장할 때, 키 유닛은 키 유닛이 보유한 스토리지 키를 사용하여 이들을 암호화할 수 있다(예를 들어, 키 유닛(121)은 스토리지 키(141)을 이용하여 키 슬라이스들(172 및 183)을 암호화하고 스토리지(107)에 저장할 수 있다).
[0040] 스토리지 키는 복구 함수(a reconstruction function)에 의해(예를 들어, 실패한 키 유닛으로부터) 복구될 수 있으며, 복구 함수는 키를 m 슬라이스들(여기서 m <n이고 n = 그룹의 유닛들 수이다)로 잘라서, 슬라이스들을 암호화하고, 암호화된 슬라이스들을 다양한 키 유닛들로 전송한다. 상기 슬라이스들은 GA(110)에 의해 제공되는 하나 또는 그 이상의 GA 키들(GA 키(101) 및 (103)과 같은)을 사용하여 암호화될 수 있다. 예를 들어, 일부 실시예들에서, 각각의 키 유닛은 자신의 스토리지 키를 m 슬라이스들로 자르고, 각각의 슬라이스를 암호화한 다음, 하나의 슬라이스를 각 다른 키 유닛으로 전송한다. 따라서, 각 키 유닛은 m개의 암호화된 슬라이스들을 수신할 수 있다(각 슬라이스는 다른 키의 슬라이스임). 일부 실시예들에서, 키 유닛들은 하나 이상의 스토리지 키들을 포함할 수 있고, 따라서 각각의 스토리지 키에 대해 m 슬라이스들을 전송할 수 있다(그래서 일부 키 유닛들은 m개 이상의 슬라이스들을 수신할 수 있다).
[0041] 일부 실시예들에서, 각각의 키 유닛으로 전송된 GA 키들은 서로 다를 수 있다. GA 키들을 사용한다는 것은 m 슬라이스들을 갖는 것은 필요하지만, 비밀 키를 복구하는 데 충분하지 않음을 의미한다. 이것은 종래 기술(예: 쿼럼(quorum)만 요구하는 샤미르의 비밀 공유(Shamir’s Secret Sharing)와 같은)보다 시스템(100)의 보안을 유리하게 개선하는데, 악의적인 행위자가 키 유닛을 손상시키는 위험을 감소시킴으로써 개선하며, 그리고 키 유닛이 키의 m 슬라이스들을 획득할 수 있더라도 키 유닛이 GA로부터의 올바른 GA 키(들)가 없으면 슬라이스들을 해독할 수 없는(그리고 따라서 키를 복구할 수 없는)“키 유닛 실패” 시나리오의 외부에서 자발적으로 키를 복구함으로써 개선한다.따라서 상기 악의적인 행위자가 하나의 GA 키(예를 들어, 손상된 키 유닛이 이전에 자신의 슬라이스들을 암호화하는데 사용한 GA 키)에 액세스할 수 있더라도, 나머지 GA 키들 없이는 키를 복구하는 것은 여전히 불가능 할 수 있다.
[0042] 일부 실시예들에서, GA(110)는 각 슬라이스 마다 서로 다른 GA 키를 제공할 수 있다. 예를 들어, m = 2인 경우, GA(110)는 제1 슬라이스(171)에 대해서는 키(101)을 제2 슬라이스(181)에 대해서는 키(102)를 제공할 수 있다. 슬라이스들의 수 m은 그룹에서 키 유닛들의 수 n과 슬라이스들을 보호하기 위해 사용되는 삭제 또는 오류 정정 코드의 속성들(the properties of the erasure or error correction code)에 따라 달라질 수 있다. 일부 실시예들에서, 슬라이스들의 무결성을 검증하기 위해 패리티가 포함될 수 있다.
[0043] 예를 들어, 키 그룹은 n = 5인 키 유닛들을 포함할 수 있으며, 여기서 스토리지 키 w는 추가 키 유닛 누락에도(예를 들어, 5개의 키 유닛들 중 하나가 실패했을 경우에도) 복구 가능하다. 따라서, 상기 코드는, n-1개의 엘리멘트들을 갖는 코드를 생성하기 위해, m = 3의 슬라이스들과 이들 슬라이스들로부터 계산된 1개의 패리티를 가질 수 있다. 상기 슬라이스들은 키 유닛들의 나머지 세트에 이용 가능하지 않는 GA(110)로부터의 키들로 암호화되었기 때문에, 비밀은 승인된 유닛(예를 들어, 실패한 키 유닛을 교체하기 위해 추가된 교체 키 유닛)에 의해서가 아니라 m 슬라이스들의 소유로부터 보호된다. 더 나아가, 비밀 키를 복구하려면 GA(110)로부터의 키(들)가 필요하다.
[0044] 일례로, 키 유닛(121)에 새로운 비밀 키(141)를 인코딩할 때, 그룹 권한 GA(110)가 GA 키들(101 내지 103)을 키 유닛(121)에 전달할 수 있다. 키 유닛(121)의 복구 함수(116)는 스토리지 키(141)를 잘라서, 각각의 슬라이스를 다른 GA 키들(101 내지 103) 중 서로 다른 키로 암호화한 다음, 그러한 암호화된 슬라이스 각각에 대한 지문을 계산할 수 있다. 이들 지문들은 GA(110)으로 반환되어 지문 스토리지(114)에 저장될 수 있다. 그런 다음, 암호화된 슬라이스들은 다른 키 유닛들(122 및 123)로 전송될 수 있다. 예를 들어, 키 유닛(122)는 암호화된 슬라이스(171)을 수신할 수 있는 반면 키 유닛(123)은 암호화된 슬라이스(181)을 수신할 수 있다. 키 유닛들은 또한 삭제/오류 정정 인코딩 및 슬라이스 분산을 수행하기 위해 복구 함수들을 이용할 수 있다.
[0045] 복구 작업 동안(예를 들어, 키 유닛(121)이 실패하여 스토리지 키(141)가 손실된 경우), GA(110)은 슬라이스들을 해독하는 데 필요한 GA 키들을 전송하기 전에 스토리지 키(141)를 복구하기 위해 필요한 모든 키 슬라이스들을 교체 키 유닛(도1에 도시되지 않음)이 가지고 있음을 증명할 것을 요구할 수 있다. 이는 키 유닛들(122 및 123), 각각, 으로부터 암호화된 키 슬라이스들(171 및 181)을 수신하는 교체 키 유닛에 의해 수행될 수 있다. 그런 다음 교체 키 유닛은 상기 슬라이스들을 검증할 수 있고(GA(110)이 지문 스토리지(114)와 비교하는 지문들을 통해), 그런 다음 GA(110)은 슬라이스들(171 및 181)을 해독하는데 필요한 GA 키들을 교체 키 유닛으로 전송할 수 있다. 상기 키들을 수신하면, 교체 키 유닛은 상기 슬라이스들을 해독하여 비밀 키(141)를 복구할 수 있다.
[0046] 일부 실시예들에서, 키를 자르고 난 다음 슬라이스들을 암호화하는 대신, 키는 잘라지기 전에 암호화될 수 있다(그리고 지문화될 수 있다). 예를 들어, 일부 실시예들에서, 키 유닛(121)은 GA 키(101)을 수신하여, GA 키(101)로 스토리지 키(141)을 암호화하고, 암호화된 키의 지문을 생성하여(예를 들어, 해시 함수(hash function)를 통해), 그 지문을 GA(110)으로 전송할 수 있다. GA(110)은 암호화된 키의 지문을 저장할 수 있고, 그 다음 키 유닛(121)는 암호화된 키를 슬라이스들(171 및 181)로 잘라서 그들을 키 유닛들(123 및 122)에 각각 분산할 수 있다. 키를 복구할 때, 교체 키 유닛은 상기 암호화된 슬라이스들을 수신하여, 그들을 암호화된 키로 재조립하고(reassemble), 상기 암호화된 키의 검증 지문(a validation fingerprint)을 생성하여 GA(110)으로 전송할 수 있다. GA(110)은 상기 지문을 검증하고 적절한 GA 키(101)을 반환하여, 교체 키 유닛이 상기 키를 해독하고 복구할 수 있도록 할 수 있다. 이는 시스템(100)의 복잡성을 줄이고 스토리지 오버헤드(storage overhead)를 줄일 수 있다(GA(110)은, 각 암호화된 슬라이스에 대한 지문이 아니라, 전체 암호화된 키의 지문 하나만 저장하면 되기 때문이다).
[0047] 도 2는 본 발명의 몇 가지 실시예들에 따른 "슬라이스 후 암호화(slice-then-encrypt)" 접근법을 사용하는 높은 수준의 보안 비밀 키 복구 방법(200)이다. 방법(200)은, 예를 들어, 도 1의 시스템(100)과 같은 보안 비밀 복구가 가능하도록 구성된 시스템에 의해 수행될 수 있다. 방법(200)은 키 유닛이 실패하는 것(a key unit failing), 감사가 개시되는 것, 등에 응답하여 수행될 수 있다. 방법(200)은 작업(operation)(202)에서 키의 암호화된 슬라이스들을 수신하는 단계를 포함한다. 작업(202)은, 예를 들어, 교체 키 유닛에 의해 수행될 수 있다. 작업(202)은 시스템의 다른 키 유닛들로부터 비밀 키의 암호화된 슬라이스들을 수신하는 단계를 포함할 수 있다. 일부 실시예들에서, 작업(202)은 또한 시스템 내의 키 유닛으로부터 하나 또는 그 이상의 패리티 키들을 수신하는 단계를 포함할 수 있다. 일부 실시예들에서, 작업(202)은 비밀 키의 각각의 슬라이스 중 하나를 수신하는 단계를 포함할 수 있다. 일부 실시예들에서, 작업(202)은 패리티 키와 함께 비밀 키의 슬라이스들 중 하나를 제외한 모든 슬라이스들을 수신하는 단계를 포함할 수 있고, 이는 누락 슬라이스의 복구를 가능한다.
[0048] 방법(200)은 작업(204)에서 슬라이스들을 검증하는 단계를 더 포함한다. 작업(204)는, 예를 들어, 암호화된 슬라이스의 지문을 생성하는 단계 지문을 저장된 지문과 비교하는 단계를 포함할 수 있다. 예를 들어, 키 유닛은 안전한 해시 알고리즘(Secure Hash Algorithm, SHA)-256과 같은 해싱 함수를 이용하거나 체크섬(checksum)을 생성할 수 있다. 키 유닛은 지문들을 생성하고 그룹 권한으로 지문들을 전송할 수 있다. 일부 실시예들에서, 그룹 권한은 수신된 지문들을 저장된 지문들과 비교하여 암호화된 슬라이스들이 유효한지를 결정할 수 있다. 본 개시는 지문 검증(fingerprint verification)의 사용에 초점을 맞추고 있지만, "영지식(zero-knowledge)" 증명들을 포함하여, 비밀의 소유를 증명하기 위한 다른 기술들도 사용될 수 있다.
[0049] 방법(200)은 작업(206)에서 슬라이스들을 해독하는 단계를 더 포함한다. 예를 들어, 작업(206)은 슬라이스들을 해독하기 위해 하나 또는 그 이상의 그룹 권한 키들을 사용하는 단계를 포함할 수 있다. 그룹 권한 키들은 일단 그룹 권한이 암호화된 슬라이스들의 지문들이 유효함을 확인하면 상기 그룹 권한에 의해 키 유닛으로 전송될 수 있다(예: 작업(204) 이후에). 일단 그룹 권한 키들이 수신되면, 키 유닛은 그룹 권한 키들을 사용하여 슬라이스들을 해독한다. 일부 실시예들에서, 서로 다른 그룹 권한 키가 각 슬라이스에 대해 사용될 수 있다. 일부 실시예들에서, 단일 그룹 권한 키가 다수(또는 심지어 모든) 슬라이스들에 사용될 수 있다.
[0050] 방법(200)은 작업(208)에서 키를 복구하는 단계를 더 포함한다. 작업(208)은 교체 키 유닛에 의해 수행될 수 있다. 교체 키 유닛은 스토리지 키의 해독된 슬라이스들을 복구 함수(a reconstruction function)에 입력하고 반환으로 스토리지 키를 수신할 수 있다. 암호화되지 않은 스토리지 키는 스토리지 키를 복구하는 키 유닛 외부의 주체들에 의해 출력/반환되거나 액세스될 수 없다.
[0051] 작업(208)이 완료되면, 스토리지 키가 복구되고 스토리지 유닛을 복구할 필요 없이 스토리지 작업들에 언제나 사용될 수 있다. 이는 키 유닛의 실패로 인해 발생할 수 있는 다운타임(downtime)을 줄일 수 있어서 바람직하다. 작업들(210 및 212)은 시스템이 후속 복구를 준비할 수 있도록 한다(예를 들어, 교체 유닛 자체가 나중에 실패한 경우). 특히, 이러한 스토리지 키의 복구는 스토리지 유닛에 저장된 정보가 스토리지 키에서 암호화되는 동안 보호되도록 한다. 따라서, 복구된 데이터는 스토리지 키로 암호화되므로 안전한 상태를 유지한다. 다른 수단을 통해 데이터를 복구하려면 일반적으로 안전성이 떨어지는 암호화되지 않은 데이터에 액세스할 수 있는 보호(예: RAID)가 필요하다.
[0052] 방법(200)은 작업(210)에서 새롭게 복구된 스토리지 키의 새로운 슬라이스들을 분산하는 단계(distributing)를 더 포함한다. 작업(210)은 교체 키 유닛에 의해 수행될 수 있다. 작업(210)은, 예를 들어 스토리지 키를 복수의 슬라이스들로 자르는 단계를 포함할 수 있다. 슬라이스들의 수 (m)는 그룹에서 키 유닛들의 수(n)에 기초할 수 있다. 예를 들어, 일부 실시예들에서, m = n - 1이다. 그러나, 일부 실시예들에서는, 키는 더 적은 수의 슬라이스들로 잘라질 수 있으며, 슬라이스는 하나 이상의 키 유닛으로 전송될 수 있다(중복성을 향상하므로 바람직함). 그룹 권한은 새로운 그룹 권한 키들의 세트를 생성하고 상기 새로운 GA 키들을 교체 키 유닛으로 전송할 수 있다. 그런 다음, 키 유닛은 새로운 GA 키(들)를 이용하여 새로운 슬라이스들을 암호화할 수 있다. 일부 실시예들에서, 각 슬라이스는 서로 다른 GA 키를 사용하여 암호화될 수 있다. 일부 실시예들에서, GA 키들은 하나 이상의 슬라이스에 대해 이용될 수 있다. 일단 모든 슬라이스들이 암호화되면, 교체 키 유닛은 암호화된 슬라이스들을 그룹의 다른 키 유닛들로 전송할 수 있다. 새로운 암호화된 슬라이스들은 다른 키 유닛들의 슬라이스 스토리지에 저장될 수 있고, 작업(202)에서 수신된 슬라이스들로 교체할 수 있다.
[0053] 방법(200)은 작업(212)에서 새로운 슬라이스들에 기초하여 지문들을 업데이트하는 단계를 더 포함한다. 작업(212)는, 예를 들어, 새롭게 암호화된 슬라이스들의 지문들을 생성하는 키 유닛을 포함할 수 있다. 작업(212)는 그룹 권한에 지문들을 전송하는 단계를 더 포함한다. 그룹 권한은 새로운 지문들을 지문 스토리지 유닛에 저장할 수 있고, 작업(204) 단계에서 체크된 이전에 -저장된 지문들을 교체한다.
[0054] 일부 실시예들에서, 작업들(204 내지 208)의 순서는 다를 수 있으며, 예를 들어, 도 2에 도시된 순서는 "자르기-후-암호화(slice-then-encrypt)" 방식으로 이용될 수 있다. 그러나, 일부 실시예들에서는, 키는 자르기 전에 암호화될 수 있다("암호화-후-자르기(encrypt-then-slice)" 실시예들로 지칭됨). 그러한 실시예들에서, 검증 지문들(the validation fingerprints)은, 각 개별 슬라이스에 기초하지 않고, 전체 암호화된 키에 기초하여 생성될 수 있다. 예를 들어, 일부 실시예들에서, 작업(202)에서 암호화된 슬라이스들을 수신한 후, 슬라이스들은 (여전히 암호화된) 키로 조립될 수 있고, 암호화된 키의 지문이 생성되고 검증될 수 있으며, 그룹 권한 키는 상기 키를 해독하는 데 사용될 수 있다. 그러한 실시예들에서, 작업(210)은 복구된 키를 새로운 GA 키로 암호화하는 단계, 그 다음, 새로 암호화된 키를 자르는 단계 및 슬라이스드들을 분산하는 단계를 포함할 수 있다. 고-수준 예시 암호화-후-자르기 실시예는 도 7을 참조하여 아래에서 설명된다. 도 2는 보안 비밀 키 복구 작업들의 시스템-수준 플로차트(flowchart)를 도시한다. 도 3 및 도 4는 그룹 권한 및 교체 키 유닛 각각에 의해 수행되는 작업들의 보다 상세한 플로차트를 도시한다.
[0055] 도 3은 본 발명의 여러 실시예들에 따른 그룹 권한 관점에서의 보안 비밀 키 복구 방법(300)의 예시이다. 방법(300)은, 예를 들어, 도 1의 GA(110)와 같은, 그룹 권한에 의해 수행될 수 있다. 방법(300)은 작업(302)에서 실패한 키 유닛(a failed key unit)을 검출하는 단계를 포함한다. 작업(302)은, 예를 들어, 키 유닛이 더 이상 응답하지 않는다고 결정하는 단계, 키 유닛이 실패했다는 표시자를 수신하는 단계, 등을 포함할 수 있다. 키 유닛들은 서로 통신하며, 다른 유닛들이 계속 응답하는지 확인하기 위해 하트비트 감지(heartbeat detection)와 같은 기술을 사용할 수 있다. 종종 일시적인 중단들(temporary outages이 발생하며, 이들은 실제 실패들(true failures)과 구별되어야 한다. 합의(Consensus)는 그들이 일정 기간 동안 키 유닛에 도달할 수 없다고 결정하는 유닛들(아마도 GA 및 모든 사용자들을 포함하는)의 일부(some fraction of the units)를 의미한다. 일부 실시예들에서, 운영자는 이슈가 키 유닛에 있는지 또는 다른 어딘 가에 있는지 검증하기 위해 통지받을 수 있다. 일부 실시예들에서는, 그룹 권한은 나머지 유닛들이 동의하는 경우에만 유닛이 "실패"한 것으로 간주할 수 있다.
[0056] 방법(300)은 작업(304)에서 키 복구(key reconstruction)를 개시하는 단계를 더 포함한다. 작업(304)는, 예를 들어, 교체 키 유닛을 식별하는 단계, 교체 키 유닛이 실패한 키 유닛을 복구하기 위한 것임을 나타내는 신호를 키 유닛 그룹에 전송하는 단게를 포함할 수 있다. 일부 실시예들에서, 교체 키 유닛은, 예를 들어, 기술자에 의해 수동으로 설치될 수 있다. 일부 실시예들에서는, 키 유닛 그룹은 "휴면(dormant)" 또는 "백업(backup)" 교체 키 유닛을 포함할 수 있으며, 이 경우, 작업(304)는 백업 교체 키 유닛을 깨우는 단계 또는 활성화하는 단계를 포함할 수 있다. 작업(304)의 초기화 단계는 교체 키 유닛이 다른 활성 키 유닛들로부터 암호화된 키 슬라이스들을 요청하고 수신할 수 있게 하며, 이는 도 4의 방법(400)을 참조하여 아래에서 더 자세히 설명될 것이다.
[0057] 방법(300)은 작업(306)에서 암호화된 키 슬라이스들의 지문들을 수신하는 단계를 더 포함한다. 이들 지문들은, 예를 들어, 교체 키 유닛으로부터 수신될 수 있다. 일부 실시예들에서, 작업(306)은 복구될 키의 모든 암호화된 슬라이스의 지문을 수신하는 단계를 포함한다. 일부 실시예들에서, 슬라이스들은 해독 전에 조합될 수 있으며, 작업(306)은 암호화된 키의 단일 지문을 수신하는 단계를 포함한다.
[0058] 방법(300)은 수신된 지문들이 작업(308)에서 그룹 권한의 저장된 지문들에 매치하는지(match)를 결정하는 단계를 더 포함한다. 예를 들어, 그룹 권한은 지문 스토리지(예를 들어, 도 1의 지문 스토리지(114))에 검증 지문들의 세트를 유지할 수 있다. 작업(308)에서 지문들이 매치하는지를 결정하면 그룹 권한은 교체 키 유닛이 모든 슬라이스들을 획득했는지 뿐만 아니라 교체 키 유닛이 오래되거나 손상된 슬라이스들을 갖는지를 결정할 수 있다. 이는 키 복구에 대한 부정한 요청들(fraudulent requests)을 감지하는 데 유용할 수 있다.
[0059] 그룹 권한 수행 방법(300)은 다수의 지문들을 저장할 수 있다. 예를 들어, 일부 실시예들에서, 그룹 권한의 지문 스토리지는 그룹 내 모든 스토리지 키의 모든 슬라이스에 대한 지문을 포함할 수 있다. 상기 지문 스토리지는 당업자가 이해할 수 있는 바와 같이, 어떤 지문이 어느 키의 어느 슬라이스에 대응하는지 매핑하기 위한 데이터 구조 또는 다른 수단을 더 포함할 수 있다.
[0060] 작업(306)에서 수신된 지문이 저장된 지문과 매치하지 않는 경우((308) "아니요"), 작업(310)에서 그룹 권한 수행 방법(300)은 오류를 반환할 수 있다. 일부 실시예들에서, 작업(310)은 경고 신호를 생성하는 단계 또는 그렇지 않으면 슬라이스 지문 미스매치로 인해 복구 시도가 실패했음을 표시하는 단계를 더 포함할 수 있다.
[0061] 작업(306)에서 수신된 지문들이 GA의 저장된 지문들에 매치하는 경우((308) "예"), 방법(300)은 작업(312)에서 교체 키 유닛에 그룹 권한 키들을 전송하는 단계를 더 포함한다. 작업(312)는 암호화된 슬라이스들을 해독하는 데 필요한 GA 키들(그룹 권한에 의해 저장됨)을 식별하는 단계 또는 달리 선택하는 단계를 포함할 수 있다. 예를 들어, 일부 실시예들에서, 각 슬라이스는 서로 다른 GA 키로만 암호화될 수 있다. 적절한 키들을 전송하면 교체 키 유닛은 슬라이스들을 해독할 수 있고 따라서 실패한 키 유닛의 스토리지 키를 복구할 수 있다. 특히, 스토리지 키는 스토리지 키 자체에 액세스할 수 있는 다른 주체(예: 그룹 권한, 사용자, 다른 키 유닛 등) 없이 교체 키 홀더(replacement key holder)에 의해 복구된다. 또한, 다른 키 유닛들로부터의 슬라이스들과 그룹 권한으로부터의 키들 모두가 없으면 키는 복구될 수 없으므로 보안이 향상되는 이점이 있다.
[0062] 방법(300)은 작업(314)에서 새로운 GA 키들을 생성하는 단계를 더 포함한다. 작업(314)는 스토리지 키의 새롭게-생성된 슬라이스들의 암호화를 가능하게 하여, 새롭고, 고유한 암호화된 슬라이스들을 생성할 수 있다(그 다음 교체 키 유닛은 이들을 다른 키 유닛들에 분산할 수 있다). 이전 키들과 유사하게, 그룹 권한은 각 슬라이스에 대해 새 GA 키들을 생성할 수 있다. 방법(300)은 작업(316)에서 새로운 GA 키들을 교체 키 유닛으로 전송하는 단계를 더 포함한다.
[0063] 교체 키 유닛이 새로운 GA 키들을 수신하면, 새로운 슬라이스들을 암호화할 수 있으므로 따라서 새로운 암호화된 슬라이스들의 새로운 지문들을 생성할 수 있다. 방법(300)은 작업(318)에서 새로운 암호화된 키 슬라이스들의 지문들을 수신하고 저장하는 단계를 더 포함할 수 있다. 작업(318)은 교체 키 유닛으로부터 지문들을 수신하는 단계 그룹 권한의 지문 스토리지에 지문을 저장하는 단계를 포함할 수 있다. 일부 실시예들에서, 그룹 권한은 교체 키 유닛에 의해 복구된 스토리지 키와 연관된 기존의 지문들을 덮어쓸 수 있다(overwrite).
[0064] 도 4는 본 발명의 여러 실시예들에 따른 교체 키 유닛 관점에서의 보안 비밀 키 복구 방법(400)의 예시이다. 방법(400)은, 도 4에 도시된 바와 같이, “자르기-후-암호화” 방식의 예일 수 있지만, "암호화-후-자르기" 실시예도 가능하도록 수정될 수도 있다. 방법(400)은 키 유닛들의 그룹 내에 포함되거나 추가된 교체 키 유닛에 의해 수행될 수 있다. 교체 키 유닛은 도 1의 키 유닛들 (121) 내지 (123) 중 하나와 유사할 수 있고, 기존의 키 유닛의 실패 시 추가되거나 활성화될 수 있다. 방법(400)은 작업(402)에서 키를 복구하기 위해 그룹 권한(예를 들어, 도 1의 GA(110))으로부터 명령들을 수신하는 단계를 포함한다. GA는 그룹의 키 유닛이 실패한 것을 감지하는 것에 대한 응답으로 이들 명령들을 전송할 수 있다(도 5를 참조하여 논의한 바와 같이).
[0065] 방법(400)은 작업(404)에서 다른 키 유닛들로부터 보안 비밀 키의 암호화된 슬라이스들을 수신하는 단계를 더 포함한다. 예를 들어, 작업(404)는 그룹 내의 나머지 키 유닛들 각각으로부터 (실패한 키 유닛의) 상실된 키에 대응하는 슬라이스들을 요청하는 단계를 포함할 수 있다. 예를 들어, 도 1의 유닛(122)가 실패한 경우(스토리지 키(142)에 대한 액세스를 상실한 경우), 교체 키 유닛(도 1에 도시되지 않음)은 유닛들(121 및 123)로부터 키(142)의 슬라이스들을 요청할 수 있다. 그런 다음, 교체 키 유닛은 키 유닛(121)로부터 암호화된 키 슬라이스(172)를 수신하고, 키 유닛(123)으로부터 암호화된 키 슬라이스(182)를 수신할 수 있다. 일부 실시예들에서, 작업(404)은 하나 또는 그 이상의 패리티 키들을 수신하는 단계를 더 포함할 수 있으며, 이는 교체 키 유닛이 누락 암호화 키 슬라이스(a missing encrypted key slice)를 생성할 수 있게 할 수 있다.
[0066] 방법(400)은 암호화된 키 슬라이스들의 지문들을 작업(406)에서 그룹 권한에 전송하는 단계를 더 포함한다. 예를 들어, 작업(406)은 작업(404)에서 수신된 키 슬라이스들의 지문들을 생성하는 단계를 포함할 수 있다. 교체키 유닛의 복구 함수(도 1의 복구 함수들(116, 118 및 120)과 유사한)를 사용하여 지문들을 생성할 수 있다. 일단 생성되면, 지문들은 GA(110)과 같은 그룹 권한으로 전송될 수 있다. 이를 통해 그룹 권한은 교체 키 유닛이 적절한 슬라이스들을 갖는지 검증하기 위해 상기 지문들을 저장된 지문들과 비교할 수 있다.
[0067] 방법(400)은 작업(408)에서 그룹 권한으로부터 하나 또는 그 이상의 그룹 권한 키들을 수신하는 단계를 더 포함한다. 일부 실시예들에서, 교체 키 유닛은 각 슬라이스에 대해 GA 키를 수신할 수 있다. 일부 실시예들에서, GA 키는 하나 이상의 슬라이스에 대해 수신될 수 있다. 작업(406)에서 전송된 지문들이 GA의 지문 스토리지에 있는 지문들과 매치하지 않으면, GA는 GA 키들을 전송하는 것을 거부할 수 있고 따라서 복구는 실패할 수 있다. 실시예에 따라, 상기 드라이브(the drive)는 여전히 전통적인 방법을 사용하여 복구될 수도 있다. 그러나, 이것은 암호화되지 않은 데이터에서 계산된 보호/백업 시스템(예: RAID)이 필요할 수 있으므로 일반적으로 보안 수준이 낮은 것으로 간주된다.
[0068] 방법(400)은 작업(410)에서 그룹 권한 키들로 슬라이스들을 해독하는 단계 및 스토리지 키를 복구하는 단계를 더 포함한다. 작업(410)은 교체 키 유닛의 복구 함수에 의해 수행될 수 있다. 그룹 권한은 어떤 암호화된 슬라이스에 어떤 GA 키가 사용되어야 하는 지를 명시할 수 있다. 일단 슬라이스들이 해독되면, 그들은 원래의 스토리지 키로 재조립될 수 있다. 일단 스토리지 키가 복구되면, 스토리지 키와 연관된 스토리지 유닛이 액세스될 수 있고 정상 작업(normal operation)이 재개될 수 있다. 그러나, 작업들(412 내지 420)은 시스템이 새로운 슬로이스들 및 지문들을 설정함으로써 교체 키 유닛의 잠재적인 향후 실패로부터 복구하도록 할 수 있다.
[0069] 방법(400)은 작업(412)에서 GA로부터 교체 GA 키들을 수신하는 단계를 더 포함한다. 스토리지 키가 복구되면, GA는 스토리지 키의 슬라이스들을 새로운 방식으로 암호화하는 데 사용될 새로운 암호화 키들을 생성할 수 있다. 그런 다음 이들 새로운 GA 키들은 교체 키 유닛으로 전송된다.
[0070] 방법(400)은 작업(414)에서 복구된 키의 새로운 슬라이스들을 생성하는 단계를 더 포함한다. 작업(414)는 교체 키 유닛의 복구 함수에 의해 수행될 수 있다.
[0071] 일단 교체 GA 키들이 수신되고(작업(412)) 새로운 슬라이스들이 생성되면(작업(414)), 방법(400)은 작업(416)에서 교체 GA 키들을 사용하여 새로운 슬라이스들을 암호화하는 단계를 더 포함한다. 새로운 GA 키들은 교체 키 유닛이 이전 슬라이스들(즉, 작업(404)에서 수신된 슬라이스들)과 다르게 슬라이스들을 암호화할 수 있도록 할 수 있다. 작업(416)은 교체 키 유닛의 복구 함수에 의해 수행될 수도 있다.
[0072] 방법(400)은 작업(418)에서 새로운 (암호화된) 슬라이스들의 지문들을 그룹 권한에 전송하는 단계를 더 포함한다. 작업(418)은, 예를 들어, 교체 키 유닛의 복구 함수를 사용하여 암호화된 슬라이스들의 지문들을 생성하는 단계, 상기 지문들을 그룹 권한으로 전송하는 단계를 포함할 수 있다. GA는 이전에-저장된 지문들을 새롭게-생성된 지문들로 교체할 수 있다.
[0073] 방법(400)은 작업(420)에서 새로운 암호화된 슬라이스들을 다른 키 유닛들로 전송하는 단계를 더 포함한다. 슬라이스보다 더 많은 다른 키 유닛들이 존재하는 경우, 작업(420)은 슬라이스를 전송할 키 유닛들을 선택하는 단계를 더 포함할 수 있다. 일부 실시예들에서, 작업(420)은 교체 키 유닛이 이전 슬라이스들을 수신한 키 유닛들로 슬라이스들을 전송하는 단계를 포함할 수 있다(작업(404)에서). 이는 키 슬라이스들의 분산이 상대적으로 변경되지 않은 상태로 유지되게 할 수 있어 바람직할 수 있다.
[0074] 특히, 실패한 키 유닛은 다른 키 유닛들에 저장된 다른 키들의 슬라이스들을 포함할 수 있음에 주목해야 한다. 따라서, 교체 키 유닛에 의해 실패한 키를 복구할 때, 다른 키 유닛들의 키들을 다시 잘라서 재암호화하고(시스템이 “자르기-후-암호화” 또는 “암호화-후-자르기” 접근 방식을 구현하는지에 따라, 어떤 순서로든), 암호화된 슬라이스들을 재분산될 수 있다. 일부 실시예들에서, 그룹의 모든 키 유닛들에 걸쳐 저장된 모든 슬라이스들은 이러한 방식으로 대체될 수 있다. 일부 실시예들에서, 실패한 키 유닛에 의해 저장된 슬라이스들 만이 재-생성되어 교체 키 유닛으로 전송될 수 있다. 이를 달성하기 위해, 그룹의 키 유닛들은 동일 자르기 배열(same slicing arrangement)("대칭 배열(symmetric arrangement)")을 이용할 수 있다. 따라서, 제1 유닛에 제2 유닛이 실패했다는 정보가 전달되면, 제1 유닛은 자신의 키 슬라이스들 중 어느 것이 제2 유닛에 저장되었는지 결정할 수 있다. 대칭적이지 않은 배열에서는, 그룹 권한이 대신 이 정보를 추적할 수 있다.
[0075] 일부 실시예들에서, 새롭게 암호화된 슬라이스들을 전송하기 전에, 키 유닛은 각 슬라이스의 순환 중복 검사(cyclic redundancy check, CRC)를 계산하여 슬라이스 자체와 함께 그것을 전송할 수 있다. 슬라이스들을 수신할 때 슬라이스가 손상되었는지 여부를 감지하기 위해 CRC는 다시 계산되고 체크될 수 있다.
[0076] 일부 실시예들에서, 키 유닛이 새로운 슬라이스들을 생성하는 대신에(또는 추가로) (작업(414)), 키 유닛은 “구(old)” 슬라이스들(즉, 작업(410)에서 해독된 슬라이스들)에, 타임 스탬프(time stamp), 시퀀스 번호(sequence number) 또는 난스(nonce)와 같은, 일부 다른 정보를 추가할 수 있다. 일단 암호화되고 지문이 생성되면(작업들(416 및 418)), 추가 정보로 인해 지문이 달라진다. 이것은 시간이 지남에 따라 구 슬라이스들을 "수집"하려고 시도하는 공격자에 대해 보안을 제공하고 결국 키를 복구할 수 있게 한다(추가 정보 덕분에 구 슬라이스들은 여전히 다른 지문을 가지고 있기 때문이다). 이것은 추가 보안을 제공할 수 있으며, 시스템이 복구 시 새로운 슬라이스들을 생성하는 대신 구 슬라이스들을 안전하게 재사용할 수 있도록 한다.
[0077] 일부 실시예들에서, 방법(400)의 일부 작업들은 다른 순서로 수행될 수 있다. 예를 들어, 키를 자른 다음 슬라이스들을 암호화하는 대신(예: 작업 (414) 내지 (416)), 시스템은 키를 암호화한 다음 암호화된 키를 자를 수 있다.
[0078] 도 5는 본 발명의 여러 실시예들에 따른 고-수준 보안 비밀 키 작업 방법(500)이다. 방법(500)은 도 1의 시스템(100)과 같은 시스템의 일반적인 작업을 설명한다. 방법(500)은 사용자 및 스토리지 디바이스 또는 시스템과 통신하는 키 유닛에 의해 수행될 수 있다. 예를 들어, 방법(500)은 키 유닛(121) (사용자 및 스토리지 시스템(107)과 통신하는)에 의해 수행될 수 있다.
[0079] 방법(500)은 작업(502)에서 사용자로부터 요청 및 사용자 키를 수신하는 단계를 포함한다. 방법(500)은 스토리지 시스템으로부터 데이터를 판독하는 단계를 설명하는 반면, 방법(500)은 당업자가 이해할 수 있는 바와 같이 스토리지 디바이스에 데이터를 기록할 수 있도록 수정될 수 있다. 작업(502)는 예를 들어, 스토리지 시스템에 저장된 데이터와 관련된 판독 요청을 수신하는 단계를 포함할 수 있다. 키 유닛은 또한 키 유닛 내에 저장된 (암호화된 상태로) 스토리지 키를 해독하기 위해 사용자 키를 수신한다. 작업(502)는 또한 인증 절차(종종 보안 통신 링크 설정의 일부로서)를 수행하는 단계를 포함할 수 있다.
[0080] 방법(500)은 작업(504)에서 사용자 키가 (스토리지 키 해독을 통해) 키 유닛에 의한 키의 사용에 대한 액세스를 얻을 수 있는지를 결정하는 단계를 더 포함한다. 사용자 키가 스토리지 키의 암호를 해독하지 못하면, 사용자는 스토리지 키에 대한 액세스 권한을 갖지 못할 수 있으며((504 “아니오”) 작업(506)에서 요청이 거부된다. 작업(506)은 요청하는 사용자에게 오류 메시지를 반환하는 단계를 포함할 수 있다. 오류 메시지는 사용자에게 스토리지 시스템 또는 스토리지 키에 액세스할 수 없음을 나타낼 수 있다.
[0081] 사용자 키가 스토리지 키를 해독할 수 있는 경우((504) "예"), 방법(500)은 작업(508)에서 요청된 데이터(암호화된 상태)를 스토리지 디바이스로부터 검색하는 단계를 더 포함한다. 스토리지 키는 그런 다음 작업(510)에서 사용자 키를 통해 해독되고, 해독된 스토리지 키는 작업(512)에서 검색된 데이터를 해독하는 데 사용된다. 방법(500)은 작업(514)에서의 요청에 응답하여 요청된 데이터를 사용자에 전송하는 단계를 더 포함한다.
[0082] 일부 실시예들에서, 그룹 권한은 테스트 데이터 청크(test data chunk)를 생성하고 그 것을 스토리지 키를 통해(또는 그룹 권한 또는 테스트 중인 스토리지 키를 보유하는 키 유닛에 의해 저장된 검증 키(verification key)를 사용하여 스토리지 키를 암호화하여 생성된 테스트 키(test key)를 통해) 암호화되고, 스토리지 디바이스에 저장되게 함으로써(수정된 방법(500)을 통해) 스토리지 키를 검증할 수 있다. 데이터의 지문은 그룹 권한의 지문 스토리지에 저장될 수 있다. 나중에 그룹 권한은 키 유닛이 데이터를 해독하고, 새로운 지문을 생성하며, 새로운 지문을 그룹 권한으로 전송하도록 할 수 있다. 상기 지문들이 매치되지 않으면 스토리지 키가 변경되었을 수 있다. 이는 복구가 성공했는지를 검증하는 데 특히 유리할 수 있다.
[0083] 도 6은 본 발명의 여러 실시예들에 따른 다수의 키 액세스 제어 유닛들(631, 632, 633, 634, 및 635) 및 스토리지 키들(641 및 642)를 포함하는 예시적인 키 유닛(621)을 추가로 포함하는 시스템(600)을 도시한 블록도이다. 키 유닛(621)은 더 큰 그룹의 키 유닛(도 6에 도시되지 않음)의 일부일 수 있다. 도 6에는 또한 사용자(601)(사용자 키(611)과 함께), 사용자(602)(사용자 키(612)와 함께) 및 사용자(603)(사용자 키(613)과 함께)을 도시한다. 필수적으로, 다수의 사용자들이 동일한 스토리지 키에 액세스할 수 있도록 하기 위해서, 키 유닛(621)은 각각 다른 키를 사용하여 암호화된 스토리지 키의 다수의 복사본들을 포함할 수 있다. 이렇게 하면, 여러 사용자들(각각은 그들 자신의 사용자 키와 함께)이 키가 저장되는 방법과 관련된 보안을 손상시키지 않고 동일한 키에 액세스할 수 있다.
[0084] 사용자가 스토리지(608)에 대한 액세스를 원할 경우, 사용자는 자신의 사용자 키를 키 유닛(621)에 제출한다. 그 다음 사용자 키는 키 액세스 제어 유닛들 중 하나의 암호화/해독 함수(자물쇠들 (651, 652, 및 653)으로 표시됨)에 제출된다. 예를 들어, 키 액세스 제어 유닛(631)의 암호화/해독 함수(651)은 사용자 키(611)로 해독될 수 있는 반면, 키 액세스 제어 유닛(632)의 암호화/해독 함수(652)는 사용자 키(612)로 해독될 수 있다. 특히, 키 액세스 제어 유닛(631) 및 키 액세스 제어 유닛(632)는 모두 동일한 스토리지 키(641)의 암호화된 복사본을 저장한다. 복사본은, 예를 들어, 사용자 키(611)가 키 액세스 제어 유닛(632)에 액세스할 수 없도록 단순히 다르게 암호화된다(사용자 키(611)는 자물쇠(651)만 해독할 수 있기 때문이다).
[0085] 또한, 키 액세스 제어 유닛(633)은 다른 스토리지 키(642)를 포함할 수 있지만 사용자 키(611)가 그것을 해독할 수 있도록 암호화된다(자물쇠 (651)에 의해). 유사하게, 키 액세스 제어 유닛(634)은 암호화(652)를 통해 스토리지 키(642)의 제2 암호화 사본을 포함할 수 있고, 키 액세스 제어 유닛(635)은, 사용자 키(613)을 통해 해독 가능한, 암호화(653)을 통해 스토리지 키(642)의 제3 암호화 사본을 포함할 수 있다. 이것은, 예를 들어, 두 명의 사용자들이 스토리지 키(641)에 액세스할 수 있는 반면 세 명의 사용자들이 스토리지 키(642)에 액세스할 수 있음을 의미할 수 있다.
[0086] 키 유닛(621)은 또한, 도 6에 도시된 슬라이스 스토리지(660)를 포함할 수 있는데, 이는 다양한 키들(661, 662, 663 및 664)(집합적으로 “슬라이스들 (661 내지 664))의 다수의 슬라이스들을 포함하기 위해서이다. 슬라이스들 (661 내지 664)는 동일 그룹 내의 다른 키 유닛들으로부터 안전하게 저장된 서로 다른 키들의 슬라이스들에 대응할 수 있다. 슬라이스들(661 내지 664)는 암호화된 상태로 저장되며, 그룹 권한의 요청에 따라 교체 키 유닛으로 전송될 수 있다.
[0087] 키 유닛(621)은, 하나 또는 그 이상의 스토리지 디바이스들을 포함하는, 스토리지 시스템(608)에 연결된다. 스토리지 시스템(608)로 송수신되는 데이터는 스토리지 키들(641 또는 642) 중 하나를 통해 암호화/해독될 수 있다.
[0088] 키 유닛(621)이 처음 초기화되면, 스토리지 키들(641 및 642)는 복구 함수를 통해 잘라진다. 그런 다음 슬라이스들은 그룹 권한(도 6에 도시되지 않음)으로부터 수신된 하나 또는 그 이상의 그룹 권한 키들을 사용하여 암호화될 수 있으며, 안전한 저장을 위해 그룹 내의 다른 키 유닛들(도 6에 도시되지 않음) 사이에 분산될 수 있다.
[0089] 도 7은 본 발명의 몇몇 실시예들에 따른 "암호화-후-자르기" 접근법을 사용한 고-수준 보안 비밀 키 복구 방법(700)이다. 방법(700)은, 예를 들어, 도 1의 시스템(100)과 같은 보안 비밀복구가 가능하도록 구성된 시스템에 의해 수행될 수 있다. 방법(700)은, 키 유닛이 실패하는 것, 감사가 개시되는 것, 등에 응답하여 수행될 수 있다. 방법(700)은 작업(702)에서 키의 암호화된 슬라이스들을 수신하는 단계를 포함한다. 작업(702)는, 예를 들어, 교체 키 유닛에 의해 수행될 수 있다. 작업(702)는 키 그룹 또는 시스템의 다른 키 유닛들로부터 비밀 키의 암호화된 슬라이스를 수신하는 단계를 포함할 수 있다. 일부 실시예들에서, 작업(702)는 또한 시스템 내의 키 유닛으로부터 하나 또는 그 이상의 패리티 키들을 수신하는 단계를 포함할 수 있다. 일부 실시예들에서, 작업(702)는 비밀 키의 각 슬라이스 중 하나를 수신하는 단계를 포함할 수 있다. 일부 실시예들에서, 작업(702)는 패리티 키와 함께 비밀 키의 슬라이스들 중 하나를 제외한 모든 슬라이스들을 수신하는 단계를 포함할 수 있고, 이는 누락 슬라이스의 복구를 가능하게 할 수 있다.
[0090] 방법(700)은 작업(704)에서 암호화된 슬라이스들을 암호화된 키로 조립하는 단계(assembling)를 더 포함한다. 작업(704)는 예를 들어 슬라이스들을 암호화된 키로 조립하기 위해 슬라이스들을 배열하는 적절한 순서를 결정하기 위해 각 슬라이스의 하나 또는 그 이상의 태그들(tags)을 읽는 단계를 포함할 수 있다. 특히, 키 유닛이 암호화된 키를 조립할 수 있지만, 적절한 그룹 권한 키가 없으면 키를 해독할 수 없음(따라서 복구할 수 없음)에 유의해야 한다. 그룹 권한은 키 유닛이 조립한 암호화된 키가 올바른 키임을 증명하도록 키 유닛에게 요구할 수 있다.
[0091] 방법(700)은 작업(706)에서 암호화된 키의 지문을 검증하는 단계를 더 포함한다. 작업(706)은, 예를 들어, 암호화된 키의 지문을 생성하는 단계, 그 지문을 저장된 지문과 비교하는 단계를 포함할 수 있다. 예를 들어, 키 유닛은 안전한 해시 알고리즘(SHA)-256과 같은 해싱 함수를 이용하거나 체크섬을 생성할 수 있다. 키 유닛은 지문을 생성하고 그룹 권한으로 지문을 전송할 수 있다. 일부 실시예들에서, 그룹 권한은 암호화된 키가 유효한지 여부를 결정하기 위해(예를 들어, 재조립된 암호화 키가 복구되는 이전에 잘라진-암호화 키와 동일한지 확인하기 위해) 수신된 지문을 저장된 지문과 비교할 수 있다. 특히, 암호화된 키 자체는 그룹 권한으로 전송되지 않을 수 있으며, 대신 그룹 권한은 암호화된 키의 해시만 수신함에 유의해야 한다. 이렇게 하면 그룹 권한 조차도 키를 획득할 수 없다.
[0092] 방법(700)은 작업(708)에서 키를 해독하는 단계를 더 포함한다. 작업(708)은, 예를 들어, 조립된 암호화된 키를 해독하기 위해 그룹 권한 키를 이용하는 단계를 포함할 수 있다. 그룹 권한 키는 일단 그룹 권한이 암호화된 키의 지문이 유효함을 확인하면 그룹 권한에 의해 키 유닛으로 전송될 수 있다(예: 작업(706) 이후). 일단 그룹 권한 키가 수신되면 ,키 유닛은 그룹 권한 키를 사용하여 키를 해독한다. 특히, 그룹 권한은 여러 개의 서로 다른 그룹 권한 키들을 포함할 수 있으며(또는 생성/획득할 수 있음), 키 유닛은 적절한 키로만 상기 키를 해독할 수 있음에, 유의해야 한다. 그룹 권한은, 예를 들어, 지문 비교의 결과들(저장된 지문들은 그룹 키들의 배열에 대한 인덱스들로 사용될 수 있음), 특정 요청(키 유닛은 특정 스토리지 키를 복구하거나 특정 그룹 권한 키를 요청하려고 시도하고 있음을 명시적으로 선언할 수 있음)등에 기초하여 키 유닛에 전송할 키(있는 경우)를 결정할 수 있다.
[0093] 일부 실시예들에서, 본 명세서 전반에 걸쳐 논의된 암호화된 슬라이스들은 슬라이스들의 제2 세트를 생성하기 위해 오류 정정 코드(삭제 코드(erasure code)와 같은)로 인코딩될 수 있다. 이용되는 상기 코드는, 다수의 패리티들을 갖는 코드들을 포함하는, 모든 유형의 오류 수정 코드(예: 3+P, 토네이도 코드(tornado codes), 리드-솔로몬 코드(Reed-Solomon codes) 등)일 수 있다.
[0094] 일부 실시예들에서, 심지어 "암호화-후-자르기" 접근법에서도, 지문이 생성되어 각 암호화된 슬라이스에 대해 그룹 권한으로 전송될 수 있다. 이를 통해 그룹 권한이 키 유닛이 변경된 슬라이스(악성 공격자 또는 손상의 증거일 수 있음) 를 갖는지를 감지할 수 있다. 오류 정정 코드는 또한 그러한 변경을 감지하고 수정할 수 있다(코드의 거듭제곱(a power of the code)까지).
[0095] 본 발명은 클라우드 컴퓨팅에 대한 상세한 설명을 포함하지만, 여기에 인용된 기술적 사상의 구현은 클라우드 컴퓨팅 환경에 제한되지 않는다는 것이 이해된다. 오히려, 본 발명의 실시예는 현재 알려져 있거나 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0096] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, 가상 머신들, 및 서비스들)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성들(characteristics), 적어도 3가지 서비스 모델들(service models), 및 적어도 4가지 배치 모델들(deployment models)을 포함할 수 있다.
[0097] 특성들은 다음과 같다:
[0098] 주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 용량들을 일방적으로 제공(provision)할 수 있다.
[0099] 광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰들, 랩탑들, 및 PDA들)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
[0100] 자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은, 각기 다른 물리적 및 가상 자원들을 요구(demand)에 따라 동적으로 할당 및 재할당하는, 멀티-테넌트 모델(a multi-tenant model)을 사용하는 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 자원들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
[0101] 기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 원하는 수량으로 구매할 수 있는 것처럼 보인다.
[0102] 측정 가능한 서비스(Measured service): 클라우드 시스템들은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0103] 서비스 모델들(Service Models)은 다음과 같다:
[0104] 소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 하부구조 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버들, 운영 체제들, 스토리지, 또는 개별 애플리케이션 능력들을 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특정 애플리케이션 구성 세팅들은 예외로서 가능하다.
[0105] 플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 하부구조에 배치하게 해주는 것이다. 소비자는 네트워크, 서버들, 운영 체제들, 또는 스토리지를 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
[0106] 하부구조 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영 체제들과 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 하부구조를 관리하거나 제어하지 않지만, 운영 체제들, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽들)에 대하여 제어할 수 있다.
[0107] 배치 모델들(Deployment Models)은 다음과 같다:
[0108] 사설 클라우드(Private cloud): 클라우드 하부구조는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0109] 커뮤니티 클라우드(Community cloud): 클라우드 하부구조는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0110] 공공 클라우드(Public cloud): 클라우드 하부구조는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
[0111] 하이브리드 클라우드(Hybrid cloud): 클라우드 하부구조는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 주체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0112] 클라우드 컴퓨팅 환경은 상태비보존(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 하부구조가 있다.
[0113] 이제 도 8을 참조하면, 예시적인 클라우드 컴퓨팅 환경(800)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(800)은, 예를 들어, 개인 휴대 정보 단말기(PDA) 또는 휴대폰(840A), 데스크탑 컴퓨터(840B), 랩탑 컴퓨터(840C), 및/또는 자동차용 컴퓨터 시스템(840N)과 통신할 수 있는 것과 같이, 클라우드 소비자가 사용하는 로컬 컴퓨팅 디바이스가 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(810)을 포함한다. 노드들(810)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(800)이 하부구조, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 8에 도시된 컴퓨팅 장치들(840A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(810)과 클라우드 컴퓨팅 환경(800)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[0114] 이제 도 9를 참조하면, 클라우드 컴퓨팅 환경(800)(도 8)에 의해 제공되는 일 세트의 기능별 추상화 층들이 도시된다. 도 9에 도시된 컴포넌트들, 층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 층들과 그에 대응하는 기능들이 제공된다:
[0115] 하드웨어 및 소프트웨어 층(960)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(961); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(962); 서버들(963); 블레이드 서버들(964); 스토리지 디바이스들(965); 그리고 네트워크 및 네트워킹 컴포넌트들(966)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(967) 및 데이터베이스 소프트웨어(968)를 포함한다.
[0116] 가상화 층(970)은 추상화 층을 제공하며 이로부터 다음의 가상 주체들의 예들이 제공될 수 있다: 가상 서버들(971); 가상 스토리지(972); 가상 사설 네트워크들을 포함하는, 가상 네트워크들(973); 가상 애플리케이션들 및 운영 체제들(974); 및 가상 클라이언트들(975).
[0117] 일 예에서, 관리 층(980)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)(981)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(982)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구 또는 송장을 제공한다. 한 예에서, 이들 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들에 대한 보호뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(983)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(984)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 기획 및 충족(planning and fulfillment)(985)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0118] 워크로드 층(990)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음을 포함한다: 맵핑 및 네비게이션(991); 소프트웨어 개발 및 라이프사이클 관리(992); 가상 교실 교육 전달(993); 데이터 분석 처리(994); 트랜잭션 처리(995); 및 보안 비밀 복구(secure secret recovery)(996).
[0119] 도 10을 참조하면, 예를 들어, 방법들(200, 300, 400, 500 및/또는 700)을 포함하는 본 발명의 다양한 실시 예들을 수행하도록 구성될 수 있는 예시적인 컴퓨터 시스템(1000)의 고-수준 블록도가 도시되어 있다. 예시적인 컴퓨터 시스템(1000)은 본 발명의 실시예들에 따라 본 명세서에 기술된 하나 또는 그 이상의 방법들 또는 모듈들, 그리고 임의의 관련 기능들 또는 작업들을 구현하는데(예를 들어, 컴퓨터의 하나 또는 그 이상의 프로세서 회로들 또는 컴퓨터 프로세서들을 사용하여) 사용될 수 있다. 일부 실시예들에서, 컴퓨터 시스템(1000)의 주요 컴포넌트들은 하나 또는 그 이상의 CPU(1002), 메모리 서브시스템(memory subsystem)(1008), 단말기 인터페이스(terminal interface)(1016), 스토리지 인터페이스(storage interface)(1018), 입력/출력(Input/Output, I/O) 디바이스 인터페이스(device interface)(1020) 및 네트워크 인터페이스(network interface)(1022)를 포함할 수 있으며, 이들 모두는 메모리 버스(memory bus)(1006), I/O 버스(1014) 및 I/O 버스 인터페이스 유닛(1012)를 통한 컴포넌트 사이(inter-component) 통신을 위해 직접적으로 또는 간접적으로 통신 가능하게 결합될 수 있다.
[0120] 컴퓨터 시스템(1000)은 하나 또는 그 이상의 범용 프로그램 가능한 중앙 처리 장치들(CPUs)(1002)을 포함할 수 있으며, 여기서 이들 중 일부 또는 전부는 하나 또는 그 이상의 코어들(1004A, 1004B, 1004C, 및 1004D)를 포함할 수 있고, 여기서는 일반적으로 CPU(1002)라고 지칭한다. 일부 실시예들에서, 컴퓨터 시스템(1000)은 비교적 큰 시스템의 전형적인 다수의 프로세서들을 포함할 수 있지만, 다른 실시예들에서 컴퓨터 시스템(1000)은 대안적으로 단일 CPU 시스템일 수 있다. 각각의 CPU(1002)은 CPU 코어(1004) 상에서 메모리 서브시스템(1008)에 저장된 명령들을 실행할 수 있으며 하나 또는 그 이상의 온보드 캐시 레벨(levels of on-board cache)을 포함할 수 있다.
[0121] 일부 실시예들에서, 메모리 서브시스템(1008)은 데이터 및 프로그램을 저장하기 위한 랜덤 액세스 반도체 메모리, 스토리지 디바이스 또는 저장 매체(휘발성 또는 비휘발성)를 포함할 수 있다. 일부 실시예들에서, 메모리 서브시스템(1008)은 컴퓨터 시스템(1000)의 전체 가상 메모리를 나타낼 수 있고 또한 컴퓨터 시스템(1000)에 결합되거나 네트워크를 통해 연결된 다른 컴퓨터 시스템의 가상 메모리를 포함할 수 있다. 메모리 서브시스템(1008)은 개념적으로 단일 모놀리식 주체(single monolithic entity)일 수 있지만, 일부 실시예들에서는, 메모리 서브시스템(1008)은 캐시 및 다른 메모리 장치들의 계층 구조와 같이 더 복잡한 배열일 수 있다. 예를 들어, 메모리는 여러 수준의 캐시에 존재할 수 있으며, 이러한 캐시들은 기능별로 더 나눌 수 있으므로 한 캐시는 명령을 보유하고 다른 캐시는 프로세서 또는 프로세서에 의해 사용되는 비-명령 데이터(non-instruction data)를 보유한다. 메모리는 임의의 다양한 흔히 불균일 기억 장치 액세스(non-uniform memory access, NUMA) 컴퓨터 아키텍처(computer architectures)라고 일컬어지고 알려진 바와 같이 다른 CPU 또는 CPU 세트와 추가로 분산되고 연관될 수 있다. 일부 실시예들에서, 메인 메모리 또는 메모리 서브시스템(804)는 CPU(1002)에 의해 사용되는 메모리의 제어 및 흐름을 위한 엘리멘트들을 포함할 수 있다. 이것은 메모리 컨트롤러(memory controller)(1010)를 포함할 수 있다.
[0122] 메모리 버스(1006)은 CPU(1002) 사이에 직접 통신 경로를 제공하는 단일 버스 구조로서 도 10에 도시되어 있지만, 메모리 서브시스템(1008) 및 I/O 버스 인터페이스(1012), 메모리 버스(1006)는 일부 실시예들에서 다수의 다른 버스 또는 통신 경로를 포함할 수 있으며, 이들은 계층적(hierarchical), 스타(star) 또는 웹 구성(web configurations)의 점대점 링크(point-to-point links), 다수 계층 버스(multiple hierarchical buses), 병렬(parallel) 및 중복 경로(redundant paths) 또는 기타 적절한 유형의 구성과 같은 모든 다양한 형태들로 배열될 수 있다. 뿐만 아니라, I/O 버스 인터페이스(1012) 및 I/O 버스(1014)는 각각 단일 유닛으로 도시되어 있지만, 컴퓨터 시스템(1000)은, 일부 실시예들에서, 다수의 I/O 버스 인터페이스 유닛(1012), 복수의 I/O 버스(1014) 또는 둘 다를 포함할 수 있다. 더 나아가, 다양한 I/O 장치들로 실행되는 다양한 통신 경로들로부터 I/O 버스(1014)를 분리하는 다수의 I/O 인터페이스 유닛들이 도시되어 있는 반면, 다른 실시예들에서는, 일부 또는 모든 I/O장치가 하나 또는 그 이상의 시스템 I/O 버스들에 직접 연결될 수 있다.
[0123] 일부 실시예들에서, 컴퓨터 시스템(1000)은 다수-사용자 메인프레임 컴퓨터 시스템(a multi-user mainframe computer system), 단일 사용자 시스템(a single-user system), 서버 컴퓨터(a server computer) 또는 직접적인 사용자 인터페이스가 거의 없거나 전혀 없지만 다른 컴퓨터 시스템들(클라이언트들 (clients))으로부터 요청을 수신하는 유사한 장치일 수 있다. 또한, 일부 실시예들에서는, 컴퓨터 시스템(1000)은 데스크탑 컴퓨터(desktop computer), 휴대용 컴퓨터(portable computer), 랩탑(laptop) 또는 노트북 컴퓨터(notebook computer), 태블릿 컴퓨터(tablet computer), 포켓 컴퓨터(pocket computer), 전화(telephone), 스마트폰(smart phone), 모바일 장치(mobile device) 또는 임의의 기타 적절한 유형의 전자 장치로 구현될 수 있다.
[0124] 도 10은 예시적인 컴퓨터 시스템(1000)의 대표적인 주요 컴포넌트들을 설명하기 위한 것임을 유의한다. 그러나, 일부 실시예들에서는, 개별 컴포넌트는 도 10에 도시된 것보다 더 복잡하거나 덜 복잡할 수 있고, 도 10에 도시된 것 이외의 또는 추가적인 컴포넌트들이 존재할 수 있으며, 이러한 컴포넌트들의 개수, 종류 및 구성은 다양할 수 있다.
[0125] 본 발명의 실시 예들은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체(또는 매체)를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0126] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0127] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 유닛 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0128] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0129] 본 발명의 특징들이 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 기술된다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0130] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 유닛 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0131] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치들, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0132] 도면들의 플로차트 및 블록도는 본 발명의 다양한 실시예들에 따른 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능, 및 동작을 예시한다. 이와 관련하여, 플로차트 또는 블록도들의 각 블록은, 특정 논리 기능(들)을 구현하기 위한 하나 혹은 그 이상의 실행 가능한 명령들을 포함하는, 모듈, 세그먼트, 또는 명령들의 일부를 나타낼 수 있다. 일부 대안적인 구현들에서, 블록들에 언급된 기능들은 도면들에 언급된 순서와 다르게 발생할 수 있다. 예를 들어, 연속적으로 도시된 2개의 블록들은, 실제로, 실질적으로 동시에 실행될 수 있거나, 관련된 기능에 따라, 블록들이 때때로 역순으로 실행될 수 있다. 또한 블록도들 및/또는 플로차트의 각 블록, 및 블록도들 및/또는 플로차트 그림의 블록들의 조합들은, 특정 기능들을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령들의 조합들을 수행하거나 수행하는 특수 목적 하드웨어-기반 시스템들에 의해 구현될 수 있다.
[0133] 본 발명의 다양한 실시 예들의 설명들은 예시의 목적으로 제시되었지만, 이들이 전부라거나 개시된 실시 예들로 제한하려는 의도는 아니다. 많은 수정들 및 변형들이 본 발명의 범위 및 정신을 벗어남이 없이 당업자에게 명백할 것이다. 본 명세서에서 사용된 용어는 실시예들의 원리들, 시장에서 발견되는 기술들에 대한 실제 적용 또는 기술적 개선을 가장 잘 설명하기 위해, 또는 당업자가 본 명세서에 개시된 실시예들을 이해할 수 있도록 선택되었다.

Claims (25)

  1. 제1 키 유닛에 의한 암호 복구 방법(method of reconstructing a secret)에 있어서, 상기 방법은:
    제2 키 유닛으로부터 제1 암호화된 슬라이스와 제3 키 유닛으로부터 제2 암호화된 슬라이스를 수신하는 단계;
    그룹 권한(a group authority)으로부터 하나 또는 그 이상의 그룹 권한 키들을 수신하는 단계;
    상기 하나 또는 그 이상의 그룹 권한 키들을 사용하여 상기 제1 암호화된 슬라이스 및 상기 제2 암호화된 슬라이스를 해독하는 단계(decrypting); 및
    상기 제1 해독된 슬라이스와 상기 제2 해독된 슬라이스에 기초하여 상기 비밀을 복구하는 단계를 포함하는
    암호 복구 방법.
  2. 제 1항에 있어서, 상기 방법은:
    상기 암호화된 제1 슬라이스의 제1 지문(a first fingerprint) 그리고 상기 암호화된 제2 슬라이스의 제2 지문을 생성하는 단계; 및
    상기 제1 지문 및 상기 제2 지문을 그룹 권한에 전송하는 단계를 더 포함하고, 상기 하나 또는 그 이상의 그룹 권한 키들을 수신하는 단계는 상기 그룹 권한이 상기 제1 지문 및 상기 제2 지문을 검증하는 것에 응답하여 이루어지는
    암호 복구 방법.
  3. 제 1항에 있어서, 상기 방법은:
    상기 복구된 비밀을 제1 새로운 슬라이스 및 제2 새로운 슬라이스로 자르는 단계(slicing);
    상기 제1 새로운 슬라이스 및 상기 제2 새로운 슬라이스를 암호화하는 단계;
    상기 암호화된 제1 새로운 슬라이스를 상기 제2 키 유닛으로 전송하는 단계; 및
    상기 암호화된 제2 새로운 슬라이스를 상기 제3 키 유닛으로 전송하는 단계를 더 포함하는
    암호 복구 방법.
  4. 제 3항에 있어서, 상기 방법은 상기 그룹 권한으로부터 하나 또는 그 이상의 새로운 그룹 권한 키들을 수신하는 단계를 더 포함하고, 상기 제1 새로운 슬라이스 및 상기 제2 새로운 슬라이스를 암호화하는 단계는 상기 하나 또는 그 이상의 새로운 그룹 권한 키들을 사용하여 수행되는
    암호 복구 방법.
  5. 제 3항에 있어서, 상기 방법은:
    상기 암호화된 제1 새로운 슬라이스의 제1 새로운 지문을 생성하는 단계;
    상기 암호화된 제2 새로운 슬라이스의 제2 새로운 지문을 생성하는 단계; 및
    상기 제1 새로운 지문과 상기 제2 새로운 지문을 상기 그룹 권한으로 전송하는 단계를 더 포함하는
    암호 복구 방법.
  6. 제 3항에 있어서, 상기 방법은:
    상기 제2 키 유닛으로부터 제3 암호화된 슬라이스를 수신하는 단계;
    상기 제3 키 유닛으로부터 제4 암호화된 슬라이스를 수신하는 단계; 및
    상기 제3 암호화된 슬라이스와 상기 제4 암호화된 슬라이스를 슬라이스 스토리지에 저장하는 단계를 더 포함하는
    암호 복구 방법.
  7. 제 6항에 있어서, 상기 방법은:
    상기 제3 키 유닛이 실패하였음을 결정하는 단계;
    상기 제4 암호화된 슬라이스를 제4 키 유닛으로 전송하기 위한 요청을 상기 그룹 권한으로부터 수신하는 단계; 및
    상기 제4 암호화된 슬라이스를 상기 제4 키 유닛으로 전송하는 단계를 더 포함하는
    암호 복구 방법.
  8. 제 1항에 있어서, 상기 방법은:
    상기 복구된 비밀을 암호화하는 단계;
    상기 복구된 비밀을 비밀 액세스 제어 유닛에 저장하는 단계;
    사용자 키를 포함하는 요청을 사용자로부터 수신하는 단계;
    상기 사용자 키를 사용하여 복구된 비밀을 해독하는 단계; 및
    상기 복구된 비밀을 사용하여 상기 요청에 응답하는 단계를 더 포함하는
    암호 복구 방법.
  9. 제 1항 내지 제8항의 항들 중 어느 한 항에 있어서, 상기 비밀은 스토리지 암호화된 키인
    암호 복구 방법.
  10. 제 1항 내지 제 9항의 항들 중 어느 한 항에 있어서, 상기 그룹 권한은 인증 권한(a certificate authority)인
    암호 복구 방법.
  11. 시스템에 있어서, 상기 시스템은:
    메모리; 및
    상기 메모리에 연결된 중앙 처리 장치(CPU)를 포함하고, 상기 CPU는 명령들을 실행하도록 구성되고, 상기 명령들은 방법을 수행하며, 상기 방법은:
    그룹에 포함된, 비밀을 저장하는 키 유닛이 실패하였음을 결정하는 단계;
    교체 키 유닛(a replacement key unit)으로부터 암호화된 키 슬라이스들의 지문들을 수신하는 단계;
    상기 수신된 지문들을 검증하는 단계- 상기 검증하는 단계는 상기 수신된 지문들을 지문 스토리지에 저장된 지문들과 비교하는 단계를 포함함-; 및
    상기 검증에 응답하여, 하나 또는 그 이상의 저장된 그룹 권한 키들을 상기 교체 키 유닛으로 전송하는 단계를 포함하는
    시스템.
  12. 제 11항에 있어서, 상기 CPU는:
    상기 교체 키 유닛을 상기 그룹에 추가하는 단계; 및
    상기 교체 키 유닛의 ID(an identity)를 신원을 검증하는 단계를 더 수행하도록 구성되는
    시스템.
  13. 제 11항에 있어서, 상기 CPU는:
    하나 또는 그 이상의 새로운 그룹 권한 키들을 생성하는 단계; 및
    상기 하나 또는 그 이상의 새로운 그룹 권한 키들을 상기 교체 키 유닛으로 전송하는 단계를 더 수행하도록 구성되는
    시스템.
  14. 제 12항에 있어서, 상기 CPU는:
    상기 교체 키 유닛으로부터 새로운 지문들을 수신하는 단계; 및
    상기 지문 스토리지에 새로운 지문들을 저장하는 단계를 더 수행하도록 구성되는
    시스템.
  15. 제 11항 내지 제 14항 중 어느 한 항에 있어서, 상기 그룹 권한은 인증 권한인
    시스템.
  16. 제 11항 내지 제 15항 중 어느 한 항에 있어서, 상기 비밀은 스토리지 암호화 키인
    시스템.
  17. 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 프로그램 명령들이 구현된 컴퓨터 판독 가능 저장 매체를 포함하고, 상기 프로그램 명령들은 컴퓨터에 의해 실행 가능하며, 상기 컴퓨터가:
    비밀을 획득하는 단계;
    그룹 권한으로부터 하나 또는 그 이상의 그룹 권한 키들을 수신하는 단계; 및
    상기 하나 또는 그 이상의 그룹 권한 키들에 기초하여, 상기 비밀의 복수의 암호화된 슬라이스들을 생성하는 단계를 수행하도록 하는
    컴퓨터 프로그램 제품.
  18. 제 17항에 있어서, 상기 명령들은 상기 컴퓨터가:
    상기 비밀 키에 기초하여 하나 또는 그 이상의 지문들을 생성하는 단계; 및
    상기 하나 또는 그 이상의 지문들을 상기 그룹 권한에 전송하는 단계를 더 수행하도록 하는
    컴퓨터 프로그램 제품.
  19. 제 17항에 있어서,
    상기 하나 또는 그 이상의 그룹 권한 키들은 단일 그룹 권한 키로 구성되고; 그리고
    상기 복수의 암호화된 슬라이스들을 생성하는 단계는:
    상기 단일 그룹 권한 키를 사용하여, 상기 비밀을 암호화하는 단계; 및
    상기 암호화된 비밀을 자르는 단계를 포함하는
    컴퓨터 프로그램 제품.
  20. 제 17항에 있어서, 상기 복수의 암호화된 슬라이스들을 생성하는 단계는:
    상기 비밀을 복수의 슬라이스들로 자르는 단계; 및
    상기 하나 또는 그 이상의 그룹 권한 키들을 사용하여, 상기 복수의 슬라이스들을 암호화하는 단계를 포함하는
    컴퓨터 프로그램 제품.
  21. 제 17항에 있어서, 상기 명령들은 상기 컴퓨터가 상기 복수의 암호화된 슬라이스들을 복수의 키 유닛들로 전송하는 단계를 더 수행하도록 하는
    컴퓨터 프로그램 제품.
  22. 제 17항에 있어서, 상기 명령들은 또한 상기 컴퓨터가:
    상기 암호화된 슬라이스들 및 오류 정정 코드에 기초하여, 제2 복수의 슬라이스들을 생성하는 단계; 및
    상기 제2 복수의 슬라이스들을 복수의 키 유닛들로 전송하는 단계를 더 수행하도록 하는
    컴퓨터 프로그램 제품.
  23. 제 17항에 있어서, 상기 명령들은 상기 컴퓨터가:
    제1 키 유닛으로부터 제1 암호화된 슬라이스 및 제2 키 유닛으로부터 제2 암호화된 슬라이스를 수신하는 단계;
    상기 제1 암호화된 슬라이스 및 상기 제2 암호화된 슬라이스를 저장하는 단계;
    상기 제2 암호화된 슬라이스를 교체 키 유닛으로 전송하기 위한 요청을 상기 그룹 권한으로부터 수신하는 단계; 및
    상기 요청에 응답하여, 상기 제2 암호화된 슬라이스를 상기 교체 키 유닛으로 전송하는 단계를 더 수행하도록 하는
    컴퓨터 프로그램 제품.
  24. 제 23항에 있어서, 상기 명령들은 상기 컴퓨터가:
    상기 교체 키 유닛으로부터 교체 슬라이스를 수신하는 단계; 및
    상기 제1 암호화된 슬라이스를 상기 교체 슬라이스로 교체하는 단계를 더 수행하도록 하는
    컴퓨터 프로그램 제품.
  25. 제 24항에 있어서, 상기 명령들은 상기 컴퓨터가:
    상기 그룹 권한으로부터 하나 또는 그 이상의 새로운 그룹 권한 키들을 수신하는 단계;
    상기 하나 또는 그 이상의 그룹 권한 키들에 기초하여, 상기 비밀의 하나 또는 그 이상의 새로운 암호화된 슬라이스들을 생성하는 단계; 및
    상기 하나 또는 그 이상의 새로운 암호화 슬라이스들 중 적어도 하나를 상기 교체 키 유닛으로 전송하는 단계를 더 수행하도록 하는
    컴퓨터 프로그램 제품.
KR1020237000009A 2020-07-02 2021-06-04 보안 비밀 복구 KR20230031279A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/919,248 2020-07-02
US16/919,248 US20220006613A1 (en) 2020-07-02 2020-07-02 Secure secret recovery
PCT/IB2021/054897 WO2022003449A1 (en) 2020-07-02 2021-06-04 Secure secret recovery

Publications (1)

Publication Number Publication Date
KR20230031279A true KR20230031279A (ko) 2023-03-07

Family

ID=79167872

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237000009A KR20230031279A (ko) 2020-07-02 2021-06-04 보안 비밀 복구

Country Status (8)

Country Link
US (1) US20220006613A1 (ko)
JP (1) JP2023531695A (ko)
KR (1) KR20230031279A (ko)
CN (1) CN115769544A (ko)
AU (1) AU2021302873A1 (ko)
DE (1) DE112021002747T5 (ko)
GB (1) GB2611966A (ko)
WO (1) WO2022003449A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114721585A (zh) * 2021-01-06 2022-07-08 伊姆西Ip控股有限责任公司 存储管理方法、设备和计算机程序产品

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8031875B1 (en) * 2007-08-09 2011-10-04 Emc Corporation Key distribution in unidirectional channels with applications to RFID
CN101853220A (zh) * 2009-04-02 2010-10-06 同方股份有限公司 一种具有密钥分拆存储机制的移动存储设备
US8918897B2 (en) * 2009-11-24 2014-12-23 Cleversafe, Inc. Dispersed storage network data slice integrity verification
CN104917780A (zh) * 2009-11-25 2015-09-16 安全第一公司 对移动中数据进行保护的系统和方法
CN102065135B (zh) * 2010-12-15 2013-02-13 中国联合网络通信集团有限公司 点对点数据获取方法、系统及服务器
US9479383B2 (en) * 2011-07-12 2016-10-25 Hughes Network Systems, Llc Data compression for priority based data traffic, on an aggregate traffic level, in a multi stream communications system
US20140331061A1 (en) * 2013-05-02 2014-11-06 Solidfire, Inc Drive level encryption key management in a distributed storage system
US9369289B1 (en) * 2013-07-17 2016-06-14 Google Inc. Methods and systems for performing secure authenticated updates of authentication credentials
KR102460096B1 (ko) * 2015-05-27 2022-10-27 삼성에스디에스 주식회사 클라우드 서비스를 위한 암호화 키 관리 방법 및 그 장치
US9954680B1 (en) * 2015-12-18 2018-04-24 EMC IP Holding Company LLC Secure management of a master encryption key in a split-key based distributed computing environment
EP3535683B1 (en) * 2016-11-04 2020-10-21 Visa International Service Association Data encryption control using multiple controlling authorities
CN106789977B (zh) * 2016-12-07 2020-05-26 北京信任度科技有限公司 一种基于密钥分割实现手机令牌的方法及系统
US10867057B1 (en) * 2017-06-01 2020-12-15 Massachusetts Mutual Life Insurance Company Decentralized encryption and decryption of blockchain data
CN108062254B (zh) * 2017-12-12 2022-11-18 腾讯科技(深圳)有限公司 作业处理方法、装置、存储介质及设备
SG11202010960YA (en) * 2018-05-08 2020-12-30 Visa Int Service Ass Password based threshold token generation
US20190372765A1 (en) * 2018-06-01 2019-12-05 Roland Tegeder System and Method for Providing an Authorised Third Party with Overt Ledger Secured Key Escrow Access to a Secret
US11601264B2 (en) * 2018-10-12 2023-03-07 Tzero Ip, Llc Encrypted asset encryption key parts allowing for assembly of an asset encryption key using a subset of the encrypted asset encryption key parts
US10447475B1 (en) * 2018-11-08 2019-10-15 Bar Ilan University System and method for managing backup of cryptographic keys
HK1254273A2 (zh) * 2018-12-03 2019-07-12 Foris Ltd 安全的分佈式密鑰管理系統
US11611539B2 (en) * 2018-12-16 2023-03-21 Auth9, Inc. Method, computer program product and apparatus for encrypting and decrypting data using multiple authority keys
US11075755B2 (en) * 2019-04-24 2021-07-27 Vmware, Inc. Zero-knowledge key escrow

Also Published As

Publication number Publication date
GB202301430D0 (en) 2023-03-15
WO2022003449A1 (en) 2022-01-06
CN115769544A (zh) 2023-03-07
GB2611966A (en) 2023-04-19
AU2021302873A1 (en) 2023-02-16
DE112021002747T5 (de) 2023-03-09
US20220006613A1 (en) 2022-01-06
JP2023531695A (ja) 2023-07-25

Similar Documents

Publication Publication Date Title
US10467096B2 (en) Securely storing data in a dispersed storage network
JP6118778B2 (ja) 移動中のデータをセキュア化するためのシステムおよび方法
JP5663083B2 (ja) 移動中のデータをセキュア化するためのシステムおよび方法
CA2699416A1 (en) Systems and methods for managing cryptographic keys
AU2015203172B2 (en) Systems and methods for secure data sharing
Fitch et al. A RAID-based secure and fault-tolerant model for cloud information storage
WO2022184456A1 (en) Authorized encryption
KR20230031279A (ko) 보안 비밀 복구
WO2023020150A1 (en) Authorized secure data movement
Vaidya et al. Data security in cloud computing
US11601285B2 (en) Securely authorizing service level access to a backup system using a specialized access key
Dhote et al. Secure Approach for Data in Cloud Computing
US20230318826A1 (en) Key import with hybrid cryptography
Chouhan et al. Reliable verification of distributed encoded data fragments in the cloud
Abdul Lathif et al. Protect data across multiple clouds using erasure code and Merkle Hash tree algorithm
George et al. Safest Secure and Consistent Data Services in the Storage of Cloud Computing
Jaikar et al. Verifying Data Integrity in Cloud
Jalil et al. A survey on data integrity verification schemes in the cloud computing environment
Padmanaban et al. A Secure Data Dynamics and Public Auditing Scheme for Cloud Storage
Kumar New probabilistic efficient and secure protocols for data storage security in cloud computing
Munir Authentication Model for Mobile Cloud Computing Database Service
Ujloomwale et al. Data storage security in Cloud
Denis et al. Verifying Correctness of Trusted data in Clouds
BB et al. Secure and Dependable Cloud Services for TPA in Cloud Computing
Vanathi et al. Providing secure storage services on cloud

Legal Events

Date Code Title Description
A201 Request for examination