KR20200027921A - 멀티-홉 변환 암호화를 통한 그룹들에 대한 직교 액세스 제어 - Google Patents

멀티-홉 변환 암호화를 통한 그룹들에 대한 직교 액세스 제어 Download PDF

Info

Publication number
KR20200027921A
KR20200027921A KR1020197034487A KR20197034487A KR20200027921A KR 20200027921 A KR20200027921 A KR 20200027921A KR 1020197034487 A KR1020197034487 A KR 1020197034487A KR 20197034487 A KR20197034487 A KR 20197034487A KR 20200027921 A KR20200027921 A KR 20200027921A
Authority
KR
South Korea
Prior art keywords
user
key
group
users
data
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
KR1020197034487A
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 KR20200027921A publication Critical patent/KR20200027921A/ko
Ceased legal-status Critical Current

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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • 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
    • H04L9/0836Key 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 using tree structure or hierarchical structure
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/76Proxy, i.e. using intermediary entity to perform cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioethics (AREA)
  • Automation & Control Theory (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

다수의 사용자들에 대해 확장가능한, 사용자들의 그룹에 의한 데이터에 대한 허가된 액세스만을 엄격하게 집행하는 멀티-홉 프록시 재암호화 (PRE) 에 의해 제공되는 암호법적 동작들에 기초하는 직교 액세스 제어 시스템이 개시된다. 해독 권한의 확장가능한 위임은 그룹의 복수의 멤버들이 사용자들이든지 또는 디바이스들이든지 간에 그 그룹의 복수의 멤버들과 공유될 수 있고, 그룹의 멤버들은 서브 그룹들을 추가로 생성하고, 그들 멤버들이 사용자들이든지 또는 디바이스들이든지 간에 그들 멤버들에게 해독 권한을 위임할 수 있다. 멤버들은 변환 키들의 생성을 통해서 액세스를 승인받고, 멤버십 또는 액세스는 단지 변환 키를 삭제함으로써 철회될 수 있고, 암호화된 데이터의 저장 로케이션에 관계없이 그 암호화된 데이터의 제거는 필요하지 않다.

Description

멀티-홉 변환 암호화를 통한 그룹들에 대한 직교 액세스 제어
35 U.S.C . §119 하의 우선권 주장
본 특허출원은 2017년 4월 28일 출원된 "TRANSFORM CRYPTOGRAPHY FOR GROUP-BASED MULTI-HOP ENCRYPTION" 라는 제목의 미국 가 출원 제 62/491982 호에 대한 우선권을 주장하고, 이 출원은 본 발명의 양수인에게 양도되고 본원에 참조에 의해 명시적으로 통합된다.
본 개시의 분야
본 개시물은 일반적으로 암호법 (cryptography) 에 관한 것이다. 특히, 그러나 제한 없이, 본 개시물은 그룹-기반 암호법을 가능하게 하기 위한 시스템들, 방법들 및 장치들에 관한 것이다.
관련 기술의 설명
데이터는 Saas 를 강화하는 연료이다. 데이터가 암호화되는 드문 경우들에서, 그것은 통상적으로 "이송 중 및 휴지 상태에서" 단지 암호화되고, 이는 통상적으로 "HTTPS 및 TDE (Transparent Disk Encryption)" 로 번역된다. 불행하게도, 이들 보호들은 암호법적 액세스 제어들을 결여한다.
투명 디스크 암호화 (transparent disk encryption) 는 데이터를 합법적 사용자에 대해서와 같이 공격자에 대해 단지 가시적인 것으로서 내버려둔다. HTTPS 는 훨씬 나아지지 않는다. 그것은 데이터의 대충 차단을 중지하지만, 그것은 데이터를 수신하는 사람이 액세스 허용되어야하는 것을 보장하지 않는다. 그것은 또한 엔드포인트들에서의 데이터 보안에 실패한다.
요컨대, 암호화에 대한 표준 접근법은 2 가지 좁은 위협들을 다룬다: 절취된 하드 드라이브들 및 네트워크-레벨 스누핑 (snooping).
대부분의 SaaS 회사들은 그들이 작을 때 보안 관심사들을 무시한다. 그들이 성장함에 따라, 그들은 방화벽들 및 침입 방지 어플라이언스들, 보안 사고 이벤트 관리 플랫폼들과 같은 네트워크 주변 기술들 및 그것들을 모니터링하기 위한 직원을 추가한다. B2B SaaS 에 대해, 이러한 진화는 판매 사이클 동안 보다 강력한 정보 보안 검토를 요구하는 대규모 고객들에 의해 주도된다.
불행하게도, 네트워크 주변 기술들에 투자하는 것은 과거 영역에 대한 해결책이었다. 오래된 규정들 및 정보 보안 표준들은 수십년 전의 네트워크 환경을 가정한다.
우리는 컴퓨터들 사이에서의 플로피 디스크들에서 걸음마를 시작하여 클라우드 서비스, 원격 직원, 모바일 디바이스, IoT, 데이터를 포함하는 명확한 경계 없는 세상으로 진화하였다. 이러한 환경에서 액세스 관리의 복잡성은 인간이 그것에 관해 추론할 수 있는 포인트를 넘어선다.
대칭 (비밀 키) 대 비대칭 ( 공개 키 ) 암호화
현대의 암호화 알고리즘들은 2 개의 카테고리들로 구분될 수 있다: 대칭 키비대칭 키. 이들은 데이터를 암호화하고 해독하기 위해 키들이 사용되는 방식을 지칭한다. 대칭 키 암호시스템에서, Alice 가 메시지를 암호화하기 위해 사용하는 것과 동일한 키 값이 암호문을 해독하고 원래 메시지를 복원하기 위해 Bob 에 의해 사용되어야만 한다. 이 키는 보통 임의의 값일 수 있지만, Alice 및 Bob 양자 모두는 메시지들을 안전하게 교환하기 위해서 동일한 키를 가져야만 한다. 이것은 양 당사자들이 동일한 키를 가지도록 허용하는 약간의 별도의 키 교환 메커니즘을 필요로 한다.
비대칭 키 암호시스템에서, 각 사용자는 공개 및 비밀 키들의 쌍을 생성한다. 이들 2 개 값들은 암호화 알고리즘에 대해 특정적인 수학적 관계를 갖는다. 누구나 공개 키 (public key) 를 사용하여 Bob 에 대한 메시지를 암호화할 수 있고, 그는 그 메시지를 해독하기 위해서 그의 대응하는 개인 키 (private key) 를 사용한다. 비밀로 유지할 요건이 없기 때문에 공개 키라고 불리고, 그것은 공용 디렉토리에 게시될 수 있다.
하지만, 공개 키 또는 비대칭 키 시스템들은 잘 확장되지 않고, 실제로 많은 수천명 그리고 특히 수만명의 사용자들이 관여되는 경우에 사실상 사용할 수 없게 된다.
엔벨로프 암호화
비대칭 암호화 기법들은 일반적으로 임의적으로 큰 평문 메시지들을 효율적으로 암호화하는데 잘 맞지 않다. 대신에, 공개 키 암호시스템들의 대부분의 구현들은 엔벨로프 암호화 (envelope encryption) 기법들을 이용한다. 평문 메시지는 랜덤으로 (randomly) 생성된 키를 사용하여, 비대칭 키 알고리즘 (예를 들어, AES) 으로 암호화된다. 랜덤 키는 그 다음에 수신자의 공개 키를 사용하여 요망되는 수신자에 대해 암호화된다. 대칭적으로 암호화된 평문은 “엔벨로프” 내부에 놓이고, 이는 그 다음에 비대칭적으로 암호화된 대칭 키를 통해 수신자에게 “어드레싱” 된다.
그 평문 메시지를 액세스하기 위해서, 수신기는 동봉하는 엔벨로프를 벗기고, 그녀에 대해 어드레싱된 엔트리를 로케이팅시키고, 그 엔트리를 해독하기 위해서 그녀의 개인 키를 사용하고, 그 다음에, 동봉된 암호문을 해독하고 평문을 복원하기 위해서 결과적인 대칭 키를 사용한다.
다수의 수신자들에 대한 암호화
이 엔벨로프는 평문을 다수회 재-암호화함이 없이 당신이 다수의 수신자들과 쉽게 메시지를 공유하도록 허용한다. 대신에, 당신은 대칭 키를 각 수신자에 대해 한번씩 다수 회 암호화하기만 하면 된다. 결과적인 엔벨로프는 다수의 “어드레스들 (addressees)” 을 가지고, 하지만 오직 하나의 밀봉된 메시지만을 갖는다.
이 기법은 약간의 결점들을 갖는다. 당신이 많은 상이한 수신자들과 메시지를 공유하기를 원하는 경우에, 래퍼 (wrapper) 는 실제 암호화된 메시지보다 더 크게 될 수도 있을 것이다. 그리고 발신자는 각 수신자에 대한 공개 키를 알아야만 하고, 실례로 “모든 IT 직원 구성원들” 과 공유하는 것은 가능하지 않다. 대신에, 발신자는 IT 직원의 구성원들인 사람 모두를 결정하여야만 하고 그들 각각에 대해 엔벨로프를 어드레싱하여야만 한다. 새로운 사람이 IT 직원에 추가되는 경우에, 수신자들의 리스트 상에 있는 누군가는 대칭 키를 해독하고 그 다음에 그 키를 새로운 직원 구성원의 공개 키에 대해 암호화하며 새로운 수취인을 엔벨로프에 추가하기 위해서 그녀의 개인 키를 이용할 필요가 있을 것이다. 마찬가지로, 사람이 IT 직원에서 다른 부서로 이동하는 경우에, 누군가는 그 엔벨로프로부터 그 수취인을 제거하여야만 한다. 이것은 IT 직원과 공유되었던 각 메시지에 대해 행해져야만 한다.
이들 제약들 때문에, 수신자들의 그룹들에 대해 암호화하기 위애 이용된 일반적인 접근법은 큰 또는 매우 역동적인 그룹들에 대해 확장가능하지 않다.
그룹에 대한 키 확립
대안은 그룹에 대한 공개/개인 비대칭 키 쌍을 생성하는 것이다. 그 다음, 그룹에 대해 메시지를 공유하기를 원하는 누구든지 단지 그룹의 공개 키에 대해 그 메시지를 어드레싱할 수 있다. 하지만, 그룹의 구성원이 그 메시지를 해독하도록 하기 위해서, 그녀는 그룹의 개인 키를 가져야만 한다. 이것은 그룹에 추가되는 각 구성원에게 개인 키가 배포될 필요가 있다. 그성원이 그룹으로부터 제거되고 그룹의 메시지의 보안이 유지되어야 하는 경우에, 그룹의 새로운 공개/개인 키 쌍을 선택하고, 모든 현재 그룹 구성원들에게 그 개인 키를 배포하고, 그 다음에, 그 그룹에 대해 암호화되었던 모든 메시지를 재-어드레싱할 필요가 있다. 이것은 또한, 적절하게 안전한 키 관리 메커니즘이 이용가능한 경우에도, 동적 그룹들에 대해 확장가능하지 않다.
사용자 당 다수 디바이스들 지원
시스템들의 사용자들은 다수의 디바이스들을 사용하여 그 시스템 및 그것의 데이터와 상호작용할 가능성이 크다. 그들은 랩탑들 및 퍼스널 컴퓨터들, 태블릿들, 또는 스마트 폰들 상에서 실행되는 브라우저들 또는 네이티브 앱들을 사용할 수도 있을 것이다. 그들 디바이스들의 임의의 것 상에서 복원될 수 있도록 메시지를 사용자에게 어드레싱 (addressing) 하는 문제는 메시지를 그룹에 대해 어드레싱하는 문제와 매우 유사하다. 사용자는 단일의 공개/개인 키 쌍을 확립하고 디바이스들의 각각 상에 개인 키를 인스톨하여야만 하거나, 또는 아니면, 메시지의 전송자는 수신자의 디바이스들의 각각의 디바이스의 공개 키를 알고 그들 디바이스들의 각각에 메시지를 어드레싱하여야만 한다. 첫 번째 대안은 키 관리 및 분배의 문제 때문에 그리고 디바이스의 손실은 새로운 키 쌍의 생성 및 사용자에 대해 어드레싱되는 모든 것의 재-암호화를 필요로 하기 때문에 바람직하지 않다. 두 번째 대안은 사용자가 디바이스를 추가하거나 제거할 때마다 가외의 작업을 필요로 한다.
프록시 재-암호화
프록시 재-암호화의 아이디어는 1998 년에 Blaze, Bleumer, 및 Strauss 에 의해 처음 도입되었고, 그들은 El Gamal 공개 키 암호법에 기초한 구체적인 스킴 (scheme) 을 제공하였다 (「M. Blaze, G. Bleumer, 및 M. Strauss. 1998. Divertible protocols and atomic proxy cryptography. In EUROCRYPT. Springer- Verlag, 127-144」 참조). 이 PRE 스킴은 다음과 같은 특성들을 가졌다: (1) 각 참가자가 공개-개인 키 쌍을 갖는다. (2) 참가자, 위임자 (delegator) 는 피위임자 (delegatee) 에게 메시지들의 해독을 위임할 수 있다. 위임자는 그녀의 공개 키에 대해 암호화된 임의의 메시지들을 재-암호화하기 위해 사용될 수 있는 재-암호화 공개 키를 생성하여, 피위임자가 그녀의 개인 키를 사용하여 그것들을 해독할 수 있도록 한다. 이것은 위임자가 그녀의 개인 키를 피위임자와 공유할 필요성을 회피한다. (3) 재-암호화 키들은 메시지들의 재-암호화를 수행하는 하나 이상의 준-신뢰된 프록시들에 의해 유지된다. 재-암호화 키는 메시지들의 해독을 허용하거나 어느 일방 당사자의 개인 키에 대한 액세스를 제공하지 않는다. (4) 위임은 프록시가 관련 재-암호화 키를 삭제할 때 철회된다.
예를 들어, Alice 가 일정 기간 동안 부재할 계획이고 그녀의 메시지들을 Bob 에게 위임하기를 원하는 경우에, 그녀는 그녀의 개인 키 및 Bob 의 공개 키를 사용하여 재-암호화 키를 생성하고, 이를 그녀의 프록시로 저장한다. Alice 에 대해 암호화되고 프록시에 전달되는 각 메시지는 Bob 에 대해 재-암호화되고 그에게 전달된다. Alice 가 다시 이용가능하고 위임을 철회하기를 원할 대, 그녀는 단지 그 프록시로부터 그 재-암호화 키를 제거한다.
2006 년에, Ateniese 등은 최초의 단방향 PRE 스킴을 도입하였다 (「G. Ateniese, K. Fu, M. Green, 및 S. Hohenberger 2006. Improved Proxy Re-encryption Schemes with Applications to Secure Distributed Storage. ACM Transactions on Information and System Security (TISSEC) 9, 1 (2006), 1-30」 참조). 저자들은 또한 다음과 같은 것들을 포함하는 PRE 프로토콜들의 유용한 특성들의 리스트를 열거하였다: (1) 방향성, 이는 A 로부터 B 로의 위임이 또한 B 로부터 A 로의 재-암호화를 허용하는지 여부를 기술한다. 단방향성 스킴들은 이를 허용하지 않는다. (2) 상호작용성, 이는 양 당사자들이 재-암호화 키를 생성하기 위해 능동적으로 관여되어야만 하는지 여부를 기술한다. 비-상호작용적 스킴은 오직 피위임자의 공개 키만을 필요로 한다. (3) 타동성 (Transitivity), 이는 프록시가 해독을 재-위임할 수 있는지 여부를 기술한다. 즉, 프록시가 A 로부터 B 로의 재-암호화 키 및 B 로부터 C 로의 재-암호화 키를 보유하는 경우에, A 로부터 C 로의 재-암호화 키를 생성할 수 있는가? 비-타동성 스킴은 이를 허용하지 않는다. (4) 공모 안정성, 이는 피위임자가 위임자의 비밀 키를 복원하기 위해서 그 피위임자에 대한 재-암호화 키를 보유하는 프록시와 협력하는 것이 가능한지 여부를 기술한다. 공모-안전 스킴은 이를 허용하지 않는다.
2007 년에, Canetti 및 Hohenberger 는 PRE 스킴들에 대해 선택된-암호문 공격들에 대한 보안 (CCA-보안) 의 정의를 제안하였고, 그 정의를 만족하는 알고리즘을 도입하였다 (「R. Canetti 및 S. Hohenberger. 2007. Chosen-ciphertext Secure Proxy Re-encryption. In Proceedings of the 14th ACM Conference on Computer and Communications Security (CCS). ACM, New York, NY, USA, 185-194. DOI:h p: //dx.doi.org/10.1145/1315245.1315269」 참조). 그들은 또한, 멀티-홉 (멀티-유즈라고도 불림) 이었기도 한 단방향성 PRE 스킴의 구축을 포함하는, PRE 구축에서의 공개 문제들의 윤곽을 잡았다; 즉, Alice 로부터 Bob 으로 재암호화되었고, Bob 이 Carol 에 대해 액세스를 위임한 경우에, 후속하여 Bob 으로부터 Carol 로 재-암호화되는 암호화된 메시지를 허용하는 스킴. (그들이 제안한 그 스킴은 멀티-홉이었지만, 그것은 양방향성이었다.)
2009 년에, Wang 및 Cao 는 이러한 문제를 해결한 스킴을 제안하였다 - CCA-보안 단방향성, 멀티-홉, 공모-안전, 비-상호작용성 PRE 알고리즘 (「H. Wang 및 Z. Cao. 2009. A Fully Secure Unidirectional and Multi-use Proxy Re-encryption Scheme. ACM CCS Poster Session (2009)」 참조). 그들의 스킴의 CCA-보안은 Zhang 및 Wang 에 의해 후속하여 시도되었다 (「J. Zhang 및 X. A. Wang. 2013. On the Security of Two Multi-use CCA- secure Proxy Re-encryption Schemes. Int . J. Intelligent Information and Database Systems 7, 5 (2013), 422-440」참조). 2014 년에, Cai 및 Liu 는 그 문제에 대해 확장하였고, 알고리즘으로 두번째 보안 문제를 도입하였으며, 그 다음, 양 문제점들을 해결하는 수정을 제공하였다 (「Y. Cai 및 X. Liu. 2014. A Multi-use CCA-secure Proxy Re-encryption Scheme. IEEE 12th International Conference on Dependable, Autonomic, and Secure Computing 7 (2014)」 참조). 그들은 또한 수정된 스킴에 대한 CCA-보안의 증명을 포함하였다.
제안되었던 대부분의 다른 것들과 같이, 이 PRE 스킴은, 다섯 가지 구분되는 암호법적 프리미티브들을 제공한다: (1) "KeyGen" - 공개/개인 키 쌍의 클라이언트-측 생성 (이것은 표준 타원형 곡선 키 생성 알고리즘이다); (2) "ReKeyGen" - 엔티티들의 쌍 사이의 재-암호화 키의 클라이언트-측 생성; (3) "Encrypt" - 수신자에 대한 메시지의 클라이언트-측 암호화; (4) "ReEncrypt" - 암호화된 메시지의 프록시-측 재-암호화; (5) "Decrypt" - 암호화된 또는 재-암호화된 메시지의 클라이언트-측 해독.
Chow 등에 의한, 제어를 포기하지 않고 아웃소싱 계산에 대한 공표 (「R. Chow, P. Golle, M. Jakobsson, E. Shi, J. Staddon, R. Masuoka, 및 J. Molina. 2009. Controlling data in the cloud: outsourcing computation without outsourcing control. In Proceedings of the ACM Workshop on Cloud Computing Security. ACM, 85-90」 참조), Yu 등에 의한, 클라우드-스케일 미세 입도 액세스 제어에 대한 연구 (「S. Yu, C. Wang, K. Ren, 및 W. Lou. 2010. Achieving secure, scalable, and fine-grained data access control in cloud computing. In Proceedings of the IEEE International Conference on Computer Communications」 참조), Xiong 등에 의한, 엔드-투-엔드 보안 콘텐츠 공유에 대한 연구 (「H. Xiong, X. Zhang, D. Yao, 및 X. Wu. 2012. Towards End-to-End Secure Content Storage and Delivery with Public Cloud. In Proceedings of the second ACM conference on Data and Application Security and Privacy (CODASPY'12). 257-266」 참조) 를 포함하는, 클라우드 컴퓨팅 환경들에서의 액세스 제어에 대한 많은 연구가 있었다. Wang 등에 의해 제안된 계층적 ABE 스킴과 같은 아이덴티티-기반 및 속성-기반 접근법들을 포함하는, 몇몇 상이한 암호법적 접근법들이 제안되었다 (「G. Wang, Q. Liu, 및 J. Wu. 2010. Hierarchical attribute-based encryption for fine-grained access control in cloud storage services. In Proceedings of the ACM Conference on Computer and Communications Security. IEEE, 735-737」 참조).
프록시 재-암호화는 상당한 양의 연구에서 두드러지게 피처링되었다. 많은 연구들 중에서, Xu 등은 인증서 없는 PRE 스킴을 기술하고 (「L. Xu, X. Wu, 및 X. Zhang. 2012. CL-PRE: A certificateless proxy re-encryption scheme for secure data sharing with public cloud. In Proceedings of the 7th ACM Symposium on Information, Computer and Communications Security. ACM, New York, NY, USA, 87-88」 참조), Liu 등은 PRE 에 기초한 시간-제한 위임 스킴을 제안한다 (「Q. Liu, G. Wang, 및 J. Wu. 2014. Time-based proxy re-encryption scheme for secure data sharing in a cloud environment. In Information Sciences, Vol. 258. Elsevier, 355-370」 참조). Qin 등은 클라우드에서의 데이터 공유에서 사용하기 위한 PRE 를 제안하는 작업들의 포괄적 조사를 제시한다 (「Z. Qin, H. Xiong, S. Wu, 및 J. Batamuliza. A Survey of Proxy Re-Encryption for Secure Data Sharing in Cloud Computing. In IEEE Transactions on Services Computing, Vol. PP., No. 99」 참조).
본 개시의 요약
다음은 본 명세서에 개시된 하나 이상의 양태들 및/또는 실시형태들에 관한 간략화된 개요를 제시한다. 이와 같이, 다음의 개요는 모든 고려되는 양태들 및/또는 실시형태들에 관한 광범위한 개관으로 고려되지 않아야 하며, 또한 다음의 개요는 모든 고려되는 양태들 및/또는 실시형태들에 관한 중요한 또는 결정적인 엘리먼트들을 식별하거나 또는 임의의 특정 양태 및/또는 실시형태와 연관된 범위를 기술하는 것으로 간주되지 않아야 한다. 따라서, 다음의 개요는, 하기에서 제시되는 상세한 설명에 선행하기 위해 간략화된 형태로 본 명세서에 개시된 메커니즘들에 관한 하나 이상의 양태들 및/또는 실시형태들에 관련된 특정 개념들을 제시하기 위한 유일한 목적을 갖는다.
이 개시물은 다수의 사용자들에 대해 확장가능한 (scalable) 그룹 및 멀티-홉 프록시 재-암호화 (proxy re-encryption; PRE) 의 암호법적 직교 암호화 및 해독 (cryptographic orthogonal encryption and decryption) 을 위한 시스템들, 방법들, 및 장치들을 기술한다. 궁극적으로 이 개시물은 디바이스들로 하여금 현재 가능한 것보다 더 낮은 레이턴시 (latency) 로 그리고 더 많은 수의 다른 디바이스들에 대해 암호화된 데이터에 대한 액세스를 공유하고 철회하는 것을 가능하게 한다. 이 개시물은 또한 디바이스들로 하여금, 암호화된 데이터가 그 암호화된 데이터를 파괴하는 일 없이 어디에 그 암호화된 데이터가 저장되는지에 (예컨대, 다른 엔티티들에 의해 소유되고 제어되는 다른 서버들 또는 디바이스들 상에) 관계 없이, 암호화된 데이터에 대한 액세스를 철회 (revoke) 하는 것을 가능하게 한다. 이 철회의 확장가능한, 그룹-기반의, 그리고 멀티-홉 권리는 이전의 PRE 스킴들에 의해 가능하게 되지 않는다.
본 개시의 일부 실시형태들은, 암호화된 데이터를 수정함이 없이 어느 사용자들이 데이터를 해독 가능한지를 변경하는 증명가능한 (provable) 암호법적 액세스 제어들을 제공하기 위해 공개 키 암호법(public key cryptography) 을 이용하여 디바이스들의 그룹들에 의한 데이터에 대한 직교 액세스 제어 (orthogonal access control) 를 위한 시스템으로서 특징지어질 수도 있다. 시스템은 제 1 변환 모듈을 갖는 제 1 사용자에 의해 제어되는 제 1 디바이스를 포함할 수 있다. 시스템은 또한, 변환 키 스토리지 (storage) 를 갖는 키 서버; 제 2 변환 모듈, 공개 키, 및 개인 키를 갖는 제 2 사용자에 의해 제어되는 제 2 디바이스를 포함할 수 있고, 제 1 디바이스는, 공개 키 암호법을 이용하여 디바이스들의 그룹들에 의한 데이터에 대한 직교 액세스 제어를 관리하기 위한 프로세서 실행가능 코드로 인코딩된, 비일시적 (non-transitory), 유형의 (tangible) 프로세서 판독가능 저장 매체를 포함한다. 방법은, 제 1 사용자에 대해 공개 키 및 개인 키를 생성하는 단계; 제 1 디바이스에 의해, 사용자들의 제 1 그룹에 대해 공개 키 및 개인 키를 생성함으로써 사용자들의 제 1 그룹을 생성하는 단계, 여기서, 제 1 사용자는 사용자들의 제 1 그룹의 관리자 (administrator) 임; 데이터를 사용자들의 제 1 그룹의 공개 키에 대해 암호화함으로써 사용자들의 제 1 그룹에 대해 데이터를 암호화하여 제 1 암호문 (ciphertext) 을 형성하는 단계; (1) 사용자들의 제 1 그룹에 대한 개인 키 및 (2) 제 2 사용자에 대한 공개 키를 사용하여, 제 1 디바이스의 제 1 변환 모듈에 의해, 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키를 생성함으로써 사용자들의 제 1 그룹에 제 2 사용자를 추가하는 단계; 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키를 키 서버의 변환 키 스토리지에 저장하는 단계를 포함할 수 있다. 제 2 디바이스는 제 1 암호문을 해독하기 위한 프로세서 실행가능 코드로 인코딩된, 비일시적, 유형의 프로세서 판독가능 저장 매체를 포함할 수 있다. 방법은, 제 2 사용자의 개인 키 및 제 2 디바이스의 공개 키를 사용하여, 제 2 디바이스의 제 2 변환 모듈에 의해, 제 2 사용자로부터 제 2 디바이스로의 변환 키를 생성하는 단계; 제 1 암호문에 대한 액세스를 위한 요청을 제 2 디바이스로부터 키 서버로 송신하는 단계; 및, 키 서버 상에서, 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키로 제 1 암호문을 변환하여 제 1 변환된 암호문을 형성하는 것; 및 제 2 사용자로부터 제 2 디바이스로의 변환 키로 제 1 변환된 암호문을 변환하여 제 1 이중-변환된 (doubly-transformed) 암호문을 형성하는 것에 의해, 요청을 승인하는 단계를 포함할 수 있다. 방법은, 제 2 디바이스의 개인 키를 사용하여 제 2 디바이스 상에서 데이터를 드러내기 위해 제 1 이중-변환된 암호문을 해독하는 단계를 더 포함할 수 있다.
본 개시의 다른 실시형태들은 또한, 암호화된 데이터를 수정함이 없이 어느 사용자들이 데이터를 해독 가능한지를 변경하는 증명가능한 암호법적 액세스 제어들을 제공하기 위해 공개 키 암호법을 이용하여 디바이스들의 그룹들에 의한 데이터에 대한 직교 액세스 제어를 위한 방법으로서 특징지어질 수도 있다. 방법은, 제 1 사용자에 대해 공개 키 및 개인 키를 생성하는 단계를 포함할 수 있다. 방법은 또한, 제 1 사용자에 의해, 사용자들의 제 1 그룹에 대해 공개 키 및 개인 키를 생성함으로써 사용자들의 제 1 그룹을 생성하는 단계를 포함할 수 있고, 제 1 사용자는 사용자들의 제 1 그룹의 관리자이다. 방법은 또한, 데이터를 사용자들의 제 1 그룹의 공개 키에 대해 암호화함으로써 사용자들의 제 1 그룹에 대해 데이터를 암호화하여 제 1 암호문을 형성하는 단계를 포함할 수 있다. 방법은 또한, 제 2 사용자에 대해 공개 키 및 개인 키를 생성하는 단계를 포함할 수 있다. 방법은 또한, (1) 사용자들의 제 1 그룹에 대한 개인 키 및 (2) 제 2 사용자에 대한 공개 키를 사용하여, 제 1 사용자에 의해, 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키를 생성함으로써 사용자들의 제 1 그룹에 제 2 사용자를 추가하는 단계를 포함할 수 있다. 방법은 또한, 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키를 서버로 저장하는 단계를 포함할 수 있고, 여기서, 서버는 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키에 대한 액세스를 통해 데이터를 해독할 수 없고 또한 제 1 사용자 또는 제 2 사용자의 개인 키들 또는 제 1 그룹의 개인 키를 액세스할 수도 없다. 방법은 또한, 제 1 암호문에 대한 액세스를 위한 요청을 제 2 사용자로부터 서버로 송신하는 것; 서버 상에서, 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키로 제 1 암호문을 변환하여 제 1 변환된 암호문을 형성하는 것에 의해 제 2 사용자에게 제 1 암호문에 대한 액세스를 승인하거나, 사용자들의 제 1 그룹으로부터 제 2 사용자로의 어떠한 변환 키도 존재하지 않는 경우에 제 2 사용자에 대해 액세스를 거부하는 것; 및 제 2 사용자의 개인 키를 사용하여 제 2 사용자에 대해 데이터를 드러내기 위해 제 1 변환된 암호문을 해독하는 것에 의해, 제 2 사용자에 의해 데이터를 해독하는 단계를 포함할 수 있다.
본 개시의 다른 실시형태들은 또한, 암호화된 데이터를 수정함이 없이 어느 사용자들이 데이터를 해독 가능한지를 변경하는 증명가능한 암호법적 액세스 제어들을 제공하기 위해 공개 키 암호법을 이용하여 디바이스들의 그룹들에 의한 데이터에 대한 직교 액세스 제어를 위한 방법을 수행하기 위한 프로세서 판독가능 명령들로 인코딩된, 비일시적, 유형의 컴퓨터 판독가능 저장 매체로서 특징지어질 수도 있다. 방법은, 제 1 사용자에 대해 공개 키 및 개인 키를 생성하는 단계를 포함할 수 있다. 방법은 또한, 제 1 사용자에 의해, 사용자들의 제 1 그룹에 대해 공개 키 및 개인 키를 생성함으로써 사용자들의 제 1 그룹을 생성하는 단계를 포함할 수 있고, 제 1 사용자는 사용자들의 제 1 그룹의 관리자이다. 방법은 또한, 데이터를 사용자들의 제 1 그룹의 공개 키에 대해 암호화함으로써 사용자들의 제 1 그룹에 대해 데이터를 암호화하여 제 1 암호문을 형성하는 단계를 포함할 수 있다. 방법은 또한, 제 2 사용자에 대해 공개 키 및 개인 키를 생성하는 단계를 포함할 수 있다. 방법은 또한, 사용자들의 제 1 그룹에 대한 개인 키 및 (2) 제 2 사용자에 대한 공개 키를 사용하여, 제 1 사용자에 의해, 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키를 생성함으로써 사용자들의 제 1 그룹에 제 2 사용자를 추가하는 단계를 포함할 수 있다. 방법은 또한, 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키를 서버로 저장하는 단계를 포함할 수 있고, 여기서, 서버는 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키에 대한 액세스를 통해 데이터를 해독할 수 없고 또한 제 1 사용자 또는 제 2 사용자의 개인 키들 또는 제 1 그룹의 개인 키를 액세스할 수도 없다. 방법은 또한, 제 1 암호문에 대한 액세스를 위한 요청을 제 2 사용자로부터 서버로 송신하는 것; 서버 상에서, 사용자들의 제 1 그룹으로부터 제 2 사용자로의 변환 키로 제 1 암호문을 변환하여 제 1 변환된 암호문을 형성하는 것에 의해 제 2 사용자에게 제 1 암호문에 대한 액세스를 승인하거나, 사용자들의 제 1 그룹으로부터 제 2 사용자로의 어떠한 변환 키도 존재하지 않는 경우에 제 2 사용자에 대해 액세스를 거부하는 것; 및 제 2 사용자의 개인 키를 사용하여 제 2 사용자에 대해 데이터를 드러내기 위해 제 1 변환된 암호문을 해독하는 것에 의해, 제 2 사용자에 의해 데이터를 해독하는 단계를 포함할 수 있다.
본 개시의 다른 실시형태들은, 암호화된 데이터를 수정함이 없이 어느 사용자들이 데이터를 해독 가능한지를 변경하는 증명가능한 암호법적 액세스 제어들을 제공하기 위해 공개 키 암호법을 이용하여 디바이스들의 그룹들에 의한 데이터에 대한 직교 액세스 제어를 위한 방법으로서 특징지어질 수 있다. 방법은, 관리자를 제공하는 단계, 및, 관리자에 의해, 제 1 그룹에 대한 공개 키 및 개인 키를 생성하는 단계를 포함할 수 있다. 방법은 또한, 제 1 멤버 (member) 에 의해, 그 제 1 멤버에 대한 공개 키 및 개인 키를 생성하는 단계를 포함할 수 있다. 방법은 추가로, 관리자에 의해, 제 1 그룹으로부터 제 1 멤버로의 제 1 변환 키를 생성하는 단계를 포함할 수 있고, 그 변환 키는 제 1 그룹에 대한 개인 키로부터 제 1 멤버에 대한 공개 키로 변환되고, 제 1 멤버는 일단 제 1 변환 키가 생성되고 나면 제 1 그룹의 제 1 멤버가 된다. 방법은 추가로, 데이터를 제 1 그룹의 공개 키에 대해 암호화함으로써 제 1 그룹에 대해 데이터를 암호화하여 제 1 암호문을 형성하는 단계를 포함할 수 있다. 방법은 추가로, 데이터에 대한 액세스를 갖지 않는 서버 상에 제 1 변환 키를 저장하는 단계를 포함할 수 있다. 방법은 추가로, 제 1 암호문에 대한 액세스를 위한 요청을 제 1 그룹의 제 1 멤버로부터 서버로 송신하는 것; 서버 상에서, 제 1 그룹으로부터 제 1 그룹의 제 1 멤버로의 제 1 변환 키를 사용하여 암호문을 제 1 변환된 암호문으로 변환하는 것에 의해, 제 1 암호문에 대한 액세스를 제 1 그룹의 제 1 멤버에 대해 승인하는 단계; 및 제 1 그룹의 제 1 멤버의 개인 키를 사용하여 그 제 1 그룹의 제 1 멤버에 대해 데이터를 드러내기 위해서 제 1 변환된 암호문을 해독하는 것에 의해, 제 1 그룹의 제 1 멤버에 의해 데이터를 해독하는 단계를 포함할 수 있다.
상기 방법에서, 제 1 그룹의 제 1 멤버는 디바이스일 수 있고, 제 1 그룹은 관리자에 속하는 디바이스들을 포함할 수 있다. 유사하게, 제 1 그룹의 제 1 멤버는 사용자일 수 있고, 제 1 그룹은 사용자 및 하나 이상의 다른 사용자들을 포함할 수 있다. 추가적으로, 제 1 그룹은 추가로 제 2 관리자를 포함할 수 있고, 방법은 추가로, 제 2 관리자에 의해, 제 2 멤버에 대한 제 2 변환 키를 생성하는 단계를 포함하며, 그 제 1 변환 키는 제 1 그룹에 대한 개인 키 및 제 2 멤버에 대한 공개 키로부터 변환되고, 제 2 멤버는 일단 제 2 변환 키가 생성되고 나면 제 1 그룹의 제 2 멤버가 된다. 더욱이, 방법은 또한, 제 3 관리자를 제공하는 단계; 제 3 관리자에 의해, 제 2 그룹에 대해 공개 키 및 개인 키를 생성하는 단계; 제 2 멤버에 의해, 그 제 2 멤버에 대한 공개 키 및 개인 키를 생성하는 단계; 및 제 3 관리자에 의해, 제 2 그룹으로부터 제 2 멤버로의 제 2 변환 키를 생성하는 단계를 포함할 수 있고, 제 2 멤버에 대한 제 2 변환 키는 제 2 그룹에 대한 개인 키 및 제 2 멤버에 대한 공개 키로부터 형성되고, 제 2 멤버는 일단 제 2 변환 키가 생성되고 나면 제 2 그룹의 제 2 멤버가 된다.
다른 실시형태들에서, 제 2 그룹의 제 2 멤버는 제 1 그룹일 수 있다. 추가로, 방법은, 제 2 그룹의 공개 키에 대해 데이터를 암호화하여 제 2 암호문을 형성하는 것에 의해 제 2 그룹에 대해 데이터를 암호화하는 단계 및 제 1 그룹의 제 1 그룹의 제 1 멤버에 의해 데이터를 해독하는 단계를 포함할 수 있다. 이것은, 제 2 암호문에 대해 액세스하기 위한 요청을 제 1 그룹의 제 1 멤버로부터 서버로 송신하는 것; 서버 상에서, 제 2 그룹으로부터 제 2 그룹의 제 2 멤버로의 제 2 변환 키를 사용하여 제 2 암호문을 제 2 변환된 암호문으로 변환하고, 그 다음에, 제 1 그룹으로부터 제 1 그룹의 제 1 멤버로의 제 1 변환 키를 사용하여 제 2 변환된 암호문을 변환하여 제 1 이중-변환된 암호문을 형성하는 것에 의해, 제 1 그룹의 제 1 멤버에게 제 2 암호문에 대한 액세스를 승인하는 것; 및 제 1 그룹의 제 1 멤버의 개인 키를 사용하여 그 제 1 그룹의 제 1 멤버에 대해 데이터를 드러내기 위해서 제 1 이중-변환된 암호문을 해독하는 것에 의해, 행해질 수 있다.
동시에, 제 1 그룹의 제 1 멤버는 사용자일 수 있고, 제 2 그룹의 제 2 멤버는 사용자의 디바이스일 수 있으며, 여기서, 제 2 그룹은 사용자일 수 있다.
본 개시의 다양한 목적들 및 장점들과 더 완전한 이해는 첨부된 도면들과 함께 취해질 때 다음의 상세한 설명 및 첨부된 청구항들을 참조함으로써 명백하고, 더 용이하게 이해된다.
도 1 은 하나 이상의 디바이스들을 각각 갖는 사용자들의 그룹에 대해 멀티-홉 (multi-hop) 변환 암호법을 수행하기 위한 시스템의 하나의 실시형태를 나타낸다.
도 2 는 시스템에 새로운 사용자를 추가하기 위한 방법의 일 실시형태를 나타낸다.
도 3 은 등록된 사용자에 대해 새로운 디바이스를 추가하는 것을 나타낸다.
도 4 는 하나 이상의 디바이스들을 각각 갖는 하나 이상의 사용자들의 그룹을 생성하는 방법을 나타낸다.
도 5 는 새로운 사용자를 등록하는 방법을 나타낸다.
도 6 은 그룹에 추가적인 사용자들을 추가하는 방법을 나타낸다.
도 7a 는 그룹과 암호화된 문서를 공유하고 그 그룹의 멤버들에게 해독 권한을 위임하는 방법을 나타낸다.
도 7b 는 그룹과 문서를 공유하는 방법을 나타낸다.
도 7c 는 그룹에서의 사용자가 공유된 문서를 해독하는 방법을 나타낸다.
도 8 은 사용자들의 그룹 및 멀티-홉 프록시 재-암호화를 이용하여 암호법적으로 강화되는 직교 액세스 제어를 제공하기 위한 시스템의 일 실시형태를 나타낸다.
도 9 는, 그룹들 및 사용자들에 대한 공개 키들을 저장하고 클라이언트들로 하여금 그것들을 취출 (retrieve) 하도록 허용하는, 프록시로서 그리고 또한 키 서버로서 작용하는 서비스와 함께, 애플리케이션에서 내장되는 라이브러리를 포함하는 시스템을 나타낸다.
도 10 은 그룹의 공개 키를 활용함으로써 사용자들 또는 디바이스들의 그룹에 대해 암호화되는 데이터 (예컨대, 문서) 의 일 실시형태를 나타낸다.
도 11 은 관리자가 사용자들의 그룹에 새로운 사용자를 추가하는 것을 나타낸다.
도 12 는 사용자들의 그룹으로부터 그 그룹에서의 사용자로의 변환 키를 생성하는 방법의 일 실시형태를 나타낸다.
도 13 은 사용자들의 그룹에 대해 데이터를 암호화하기 위한 방법의 일 실시형태를 나타낸다.
도 14 는 사용자들의 그룹에 대해 암호화된 데이터를 해독하기 위한 방법의 다른 실시형태를 나타낸다.
도 15 는 사용자가 그녀의 데이터에 대한 액세스를 그녀의 디바이스들 중 하나에게 승인하는 것의 일 실시형태를 나타낸다.
도 16 은 사용자로부터 디바이스로의 변환 키를 생성하는 일 실시형태를 나타낸다.
도 17 은 암호문을 이중-변환된 암호문으로 변환하기 위한 방법의 일 실시형태를 나타낸다.
도 18 은 이중-변환된 암호문을 해독하기 위한 방법의 일 실시형태를 나타낸다.
도 19 는 멀티-홉 변환 암호화를 이용하여 다수의 그룹들에 대한 직교 액세스 제어를 제공하기 위한 시스템을 나타낸다.
도 20 은 사용자가 사용자들의 그룹으로부터 제거되는 것의 일 실시형태를 나타낸다.
도 21 은 디바이스가 사용자에 의해 관리되는 디바이스들의 그룹으로부터 제거되는 것의 일 실시형태를 나타낸다.
도 22 는 데이터가 어떻게 사용자에 대해 암호화될 수 있는지를 나타낸다.
도 23 은 다수의 그룹들 및 사용자들에 대해 데이터를 암호화하기 위한 방법을 나타낸다.
도 24 는 도 23 으로부터의 제 1 암호문을 해독하기 위한 방법을 나타낸다.
도 25 는 사용자에 대해 공개 키 및 개인 키를 생성하는 것으로서 이 동작이 사용자와 키 서버 사이에 분할되는 것의 일 실시형태를 나타낸다.
도 26 은 그룹에 대해 공개 키 및 개인 키를 생성하는 것으로서 이 동작이 사용자와 키 서버 사이에 분할되는 것의 일 실시형태를 나타낸다.
도 27 은 도 23 으로부터의 제 4 암호문을 해독하기 위한 방법을 나타낸다.
도 28 은 고객 데이터에 대해 액세스가 승인되는 회사에 대한 고객 데이터의 멀티-홉 변환 암호화를 위한 방법을 나타낸다.
도 29 는 도 28 의 상세들의 일 실시형태를 제공한다.
도 30 은 사용자가 그녀의 개인 데이터를 요청하고 해독하는 것의 일 실시형태를 나타낸다.
도 31 은 사용자가 그녀의 개인 데이터를 사용하도록 회사에 대해 허가를 승인하는 것의 일 실시형태를 나타낸다.
도 32 는 고객이 잊혀질 권리를 청하는 방법의 일 실시형태를 나타낸다.
도 33 은 고객이 잊혀질 권리를 청하는 방법에서의 단계들의 추가적인 세트를 나타낸다.
도 34 는 디바이스로 하여금 본 개시의 양태들 및/또는 방법들의 임의의 하나 이상을 수행하거나 실행하게 하기 위한 명령들의 세트가 실행될 수 있는 컴퓨터 시스템 (3400) 의 하나의 실시형태의 도식적 표현을 나타낸다.
상세한 설명
단어 "예시적" 은 "예, 사례, 또는 예시로서 작용함" 을 의미하기 위하여 본 명세서에서 사용된다. "예시적"으로서 본원에 설명된 임의의 실시형태는 반드시 다른 양태들보다 바람직하거나 또는 유리한 것으로 해석될 필요는 없다.
예비 참고사항: 다음 도면들에서의 플로우차트들 및/또는 블록도들은 본 발명의 다양한 실시형태들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능성, 및 동작을 나타낸다. 이와 관련하여, 이들 플로우차트 또는 블록도들에서의 일부 블록들은, 특정 논리 기능(들)을 구현하기 위한 하나 이상의 실행가능 명령들을 포함하는 모듈, 세그먼트, 또는 코드의 부분을 나타낼 수도 있다. 일부 대안적인 구현들에 있어서, 블록에서 언급된 기능들은 도면들에서 언급된 순서에서 벗어나 발생할 수도 있음이 또한 주목되어야 한다. 예를 들어, 관련된 기능에 따라, 연속적으로 도시된 2 개의 블록들은 사실상 실질적으로 동시에 실행될 수도 있거나 또는 때때로 블록들이 역순으로 실행될 수도 있다. 블록도들의 각각의 블록 및/또는 플로우차트 예시들, 그리고 블록도들에서의 블록들 및/또는 플로우차트 예시들의 조합들은 명시된 기능들 또는 행위들을 수행하는 특수목적 하드웨어 기반 시스템들, 또는 특수목적 하드웨어와 컴퓨터 명령들의 조합들에 의해 구현될 수 있음이 또한 주목될 것이다.
본 개시의 목적들을 위해, "증명가능한 암호법적 액세스 제어들 (provable cryptographic access controls)" 은, 시스템이 액세스 제어들이 우회될 수 없음을 보장할 수 있는 것을 의미한다. 달리 말하면, 공개 키들의 유한한 리스트에 대해 암호화되기 때문에 누가 데이터의 피스를 액세스할 수 있는지를 증명할 수 있고, 그들 공개 키들에 대응하는 개인 키들을 보유하는 그 사람들만이 액세스를 얻을 수 있다.
본 개시의 목적들을 위해, 변환 키는 A 로부터 B 로의 변환 키로서 또는 A-대-B 변환 키로서 기술될 수 있다. 실례로, 사용자의 디바이스에 대한 변환 키는 사용자-대-디바이스 변환 키와 동일한 것이다.
이송 중, 정지 중, 그리고 애플리케이션들 내에서 데이터를 보안하는 것은 특히 클라우드 스케일에서 어렵다. 클라우드 서비스들, 모바일 디바이스들, 사물 인터넷들, 및 휴대용 매체들 사이에 데이터가 점증적으로 분포됨에 따라, 데이터가 어디에 저장되거나 사용되는 어디든 그 데이터에 대한 액세스를 관리하는 것은 점점 더 어렵게 된다. 클라우드 서비스들에서 신뢰를 증가시키기 위해서 그리고 분포된 데이터의 세계에서 보다 신뢰가능한 보안 및 액세스 제어를 제공하기 위해서 암호법적 기법들이 통상적으로 사용된다. 특히, 엔드-투-엔드 (end-to-end) 암호화는 보다 광범위한 채택을 모색하고 있다. 하지만, 현재의 엔드-투-엔드 암호화 툴들은 대부분 메시징 및 이메일과 같은 사람-대-사람 통신 애플리케이션들에 제한된다.
미래에, 모든 사람들은 누가 개인 데이터를 액세스할 수 있는지를 제어할 것이다. 의사에게 당신의 의료 기록들을 액세스하도록 승인하고, 당신이 의사를 교체할 때 그 액세스를 철회하는 것을 상상해보라. 보다 중요하게, 보험회사들, 청구 회사들, 클라우드 소프트웨어 회사들, 외주 연구실들, 연구 기관들 등을 포함하는 다른 당사자들과 당신의 의사가 데이터를 공유한 것을 당신이 추적할 수 있을 것임을 가정해보자. 당신은 이들 사람들에게 당신의 데이터를 믿고 맡길 필요가 없을 것이다: 당신은 그들이 그것을 어떻게 사용하는지를 모니터링할 수 있을 것이고, 그들이 특권을 남용한다면 당신은 그들의 액세스를 철회할 수 있을 것이다.
기업, 정부, 및 다른 기관들은 우리가 하는 것 만큼 많이 전적으로 그들의 데이터를 제어할 필요가 있다. 또 다른 클라우드 서비스 제공자에게 민감한 데이터를 믿고 맡기는 것은 믿음의 커다란 도약이다. 각각의 새로운 서비스는 기관이 그것들의 위험들을 이해하고 누가 그들의 데이터에 대해 액세스를 갖는지를 이해하기 위한 기관의 능력을 복잡하게 만든다. 그러한 이해 없이, 그들은 프라이버시와 보안에 관련된 계약적 및 규제적 요건들을 충족시킬 수 없다.
이것은, 왜 대교모 기관들이 구매 전에 긴 스프레드쉬트들로 광범위한 정보 보안 검토들을 요구하는지 그리고 많은 경우들에서 왜 그들이 그렇지 않다면 그들을 보다 경쟁력 있게 만들 서비스조차 고려하지 않는지에 관한 이유이다.
고객-제어된 데이터의 세상에서, 기관들은 더 이상 그들의 파트너들이 충분히 양호한 보안을 가지길 희망할 필요가 없다. 보안은 데이터와 함께 이동하고, 그 데이터의 사용은 모니터링된다. 제어가 신뢰를 가져오고, 신뢰는 선택과 유연성을 가져오며, 그것을 받아들이는 SaaS 판매자들에 대해 보다 많은 판매를 가져온다.
사용자들의 그룹들에 의해 데이터에 대한 액세스를 관리하는 실제 시스템들은 전형적으로, 대칭 키들을 관리하고 정책 (policy) 에 기초하여 그것들을 요청 사용자들에 전달하는 액세스 제어 서버를 이용하는 모델에 호소한다. 공용 키 기반 시스템들은 보다 양호한 보안 모델을 가지지만, 그것들은 확장성 및 복잡성의 문제점들로 고통받는다. 예를 들어, 데이터를 보안하기 위해서 PGP (pretty good privacy) 를 이용하는 것을 고려하자. 사용자는 다른 사용자들의 세트에 대해 그들의 공개 키들이 주어지면 그 다른 사용자들의 세트에 대해 파일을 안전하게 암호화할 수 있다. 하지만, 각 사용자에 대해 파일을 암호화하기 위해서 필요한 시간 및 공간에서의 선형적 증가가 존재한다. 암호화된 파일에 대한 액세스가 새로운 사용자에 대해 승인되어야만 할 때, 그 파일에 대한 액세스를 갖는 누군가가 그것을 해독하고, 그 다음, 전체 리스트 플러스 새로운 수신자에 대해서 그것을 재-암호화하여야만 한다. 파일들이 사람들의 팀들에 대해 암호화되고 어떤 사람이 그 팀을 떠나는 경우에, 그 팀과 공유된 모든 파일은 그 리스트 마이너스 떠나는 사용자에 대해 발견되고, 해독되며, 재-암호화되어야만 한다. 사용자의 키들이 손상되는 경우에 동일한 프로세스가 따른다. 이 솔루션은 큰 그룹들의 사용자들에 대해 확장되지 않는다.
본 개시는, 데이터에 대해 암호법적으로 뒷받침되는 액세스 제어들을 제공하고, 누가 데이터를 해독할 수 있는지를 결정하는 것으로부터 누구에 대해 데이터가 암호화되는지를 결정하는 것을 분리하기 위해, 애플리케이션들에서 내장되도록 구축되는 시스템을 제안하고, 본원에서의 이러한 장점은 "직교 액세스 제어 (Orthogonal Access Control)" 로서 지칭된다. 그 시스템은 공개 키 암호법을 이용하고, 그것은 사용자들의 그룹들을 표현하는 추상적 엔티티들을 이용하여 확장가능성 (scalability) 의 어려움들을 극복한다. 이들 그룹들은 데이터에 대한 액세스를 승인하는 것에 관한 직교적 결정들을 용이하게 하고, 그 이유는, 사용자들이 어느 그룹들에 대해 데이터를 암호화할 지를 선택할 수 있는 한편, 그룹 관리자들은 독립적으로 언제라도 그룹에 사용자들을 추가하고 그룹으로부터 사용자들을 제거할 수 있기 때문이다. 이들 변경들은 일정한 시간 내에 행해지고, 그룹들의 수, 그룹 멤버들, 또는 시스템에서의 영향받는 파일들에 독립적이다. 시스템은 엔드-투-엔드 암호화를 제공하고, 최종 단계는 사용자의 디바이스 상에 보유될 수도 있는 사용자/디바이스의 개인 키를 사용하는 해독을 수반한다. 이것은, 암호화되지 않은 데이터에 대해 액세스가 없고 데이터를 해독하기 위한 능력이 없어서, (키들 및 그룹 멤버십들을 포함하는 암호화 프로세스를 관리하는 것에 대해) 서버들이 준-신뢰되도록 허용한다.
프록시 재-암호화 (proxy re-encryption; PRE) 스킴들은 이러한 시스템을 구축하는데 잘 맞는 특성들을 제공하지만, 이 개시물은 대규모의 사용자들에 대한 확장가능성 및 훨씬 더 빠른 프록시 재-암호화를 허용하는, 전통적인 PRE 스킴들에 대한 업데이트들을 기술한다. 본 개시는 또한, 멀티-홉 PRE 를 이용한다 (예컨대, 사용자의 디바이스는 그룹에서의 그녀의 멤버십으로 인해 그 사용자가 액세스하도록 허가되는 데이터를 액세스하고; 그룹은 그 자신의 부모 그룹에서의 그것의 멤버십으로 인해 부모 그룹이 액세스하도록 허가되는 데이터를 액세스한다).
직교 액세스 제어
직교 액세스 제어로, 누가 해독할 수 있는지를 결정하는 것으로부터 누구에 대해 암호화할지의 결정이 분리된다. 본 개시는, 사용자들 및 서비스들의 분류들을 그룹들로 추상화하는 것, 적절한 그룹에 대해 암호화하는 것, 및 어느 사용자들이 그 그룹에 속하는지를 다른 시점에서 결정하는 것에 의해, 이러한 장점을 달성한다. 오직 그룹 멤버들의 개인 키들만이 그 데이터를 잠금해제할 수 있다.
예를 들어, 회사는 사회 보장 번호들을 보도록 허가된 직원들로 이루어진 SSN-판독자들 그룹을 가질 수도 있을 것이다. 그 그룹은 그룹의 개인 키를 보유하고 멤버들을 추가하고 제거하기 위해 그 키를 사용할 수 있는 관리자에 의해 소유된다. 문서가 이 그룹에 대해 암호화될 때, 멤버들은 그들의 개인 키들로 그 데이터를 해독할 수 있고 그외의 누구도 그 데이터를 해독할 수 없다. 관리자가 그 그룹의 멤버가 아닌 경우에는 관리자조차도 그 데이터를 읽을 수 없다.
본 개시는 공유된 비밀번호들 없이 규모에 맞게 이를 수행한다. 그룹들은 임의의 사이즈, 심지어 수백만의 사용자들일 수 있고, 멤버들을 추가하고 제거하는 것은 얼마나 많은 문서들 또는 사용자들이 존재하는지에 관계 없이 일정 시간 동작들 (constant time operations) 이다 (즉, 본 개시는 동일한 양의 시간에서 임의의 사이징된 그룹에 대해 암호화 및 해독을 수행할 수 있다).
본 개시는 사용자가 암호화된 데이터에 대한 액세스를 승인할 하나 이상의 그룹들을 선택하도록 허용한다. 독립적으로 그리고 비동기적으로, 그룹 관리자들은 어느 사용자들이 그 그룹들에 속하는지를 선택한다. 그룹에 멤버를 추가하는 것은 그룹의 사이즈 또는 그룹이 액세스할 수 있는 데이터의 양에 관계 없이 일정한 시간에서 단순히 달성된다. 마찬가지로, 그룹으로부터 멤버를 제거하는 것은 임의의 암호화된 데이터의 수정을 필요로 하지 않는 일정 시간 동작이다.
추가적으로, 사용자는 디바이스들의 집합 (즉, 복수의 디바이스들을 포함하는 그룹) 으로서 추상화될 수 있다. 이러한 방식으로, 사용자는 어느 디바이스들이 어떤 데이터를 해독 가능한지를 제어할 수 있다. 사용자는 그에 의해 (예컨대, 새로운 랩탑이 구입되거나 스마트폰이 도난당했을 때) 디바이스들을 추가하거나 특정 디바이스로부터 액세스를 철회할 수 있다.
암호법적 변환
학계는 "프록시 재-암호화" 또는 PRE 에 대해 오랫동안 논의하였고, 이는 본 명세서에서 암호법적 변환 (Cryptographic Transformation) 으로서 지칭될 것이다 (예컨대, US20080059787). 이 개시물은 단방향성, 멀티-홉인 암호법적 변환의 변형을 논의하고 그룹 개인 키들을 보호하기 위해서 다자 계산을 추가한다.
학계에서, 초점은 비서가 언제 상사의 암호화된 이메일들을 읽도록 허가가 승인되는지와 같이 사람-대-사람 위임 (delegation) 에 맞춰져 있다. 반면에, 이 개시물은 규모에 맞는 액세스 제어를 중심으로 하여 사용 케이스들에 대해 최적화된다. 본원에 개시되는 접근법은 오직 사용자들의 특정 부류들만이 데이터의 특정 클래스들을 읽을 수 있도록 보장한다.
예를 들어, 극비 문서가 오직 극비 해제를 갖는 사용자들에 의해 읽혀져야 하는 경우를 고려하자. Alice 및 Bob 양자는 극비 (TopSecret) 그룹의 멤버들이고 그 극비 그룹은 단일의 공개 키를 갖는다고 가정하자. Alice 는 그룹의 공개 키를 사용하여 문서를 암호화함으로써 극비 그룹과 문서를 공유한다. 비대칭적 암호화는 대량의 데이터를 암호화하기에 잘 맞지 않기 때문에, "엔벨로프 암호화 (envelope encryption)" 라고 불리는 기법이 사용될 수 있다. 이 기법은, (문서 암호화 키 (document encryption key; DEK) 라고 불리는) 랜덤으로 생성된 대칭 키를 이용하여, 데이터를 암호화하기 위해 AES-256 과 같은 대칭적 키 암호화를 이용하는 것을 수반한다. 이 암호화된 데이터는 "엔벨로프" 내부에 놓이고, 대칭 키가 그 다음에 비대칭 키 암호화를 이용하여 암호화되고 전달되어야 하는 어드레스의 형태로서 "엔벨로프" 에 부착된다. 이것은 암호화된 문서 암호화 키 (encrypted document encryption key; EDEK) 라고 불린다.
Bob 이 그 문서를 해독하기를 원할 때, 그는 문서 "엔벨로프" 를 변환을 위해 키 서버 (도 9 에서의 902 참조) 에 전송한다. 키 서버는 엔벨로프로부터 EDEK 를 취하고, Bob 이 그의 개인 키로 그것을 해독 가능하도록 그것을 변환한다. 키 서버는 프로세스의 어느 시점에서도 DEK 에 대한 액세스를 가지지 않는다. 키 서버는 극비 그룹의 멤버들이 아닌 사용자들에 대해서는 그 변환을 수행하지 않는다. Bob 이 변환된 EDEK 를 다시 거꾸로 얻을 때, 그는 그의 개인 키로 로컬로 그것을 해독하고, DEK 를 얻으며, 그 다음, 엔베로프 내부에 있었던 문서를 해독하기 위해서 그것을 사용한다. 이 모든 것이 1초 미만에서 일어난다.
공개 키 암호법의 형태인 타원 곡선 암호법의 일 변형이 본원에 언급된 변환들을 수행하기 위해 이용될 수 있음에 유의하여야 한다. 하지만, 타원 곡선 암호법과는 다른 형태들의 암호법이 또한 이러한 변환들을 수행하기 위해 이용될 수 있다.
사용자 그룹들 및 디바이스 그룹들의 계층들에 대한 멀티-홉 변환 암호법
본 개시는 그룹들 및 디바이스 그룹들에 대해 암호법을 스케일링 (scaling) 하는 문제점을 해결한다. 변환 암호법은 공개 키 암호법에 대한 개선이다. 그것은 누군가에 대해 메시지들 또는 문서들이 암호화되고 있는 그 누군가가 위임자의 개인 키를 피위임자에게 실제로 주는 일 없이 다른 누군가에게 그들 메시지들 또는 문서들을 해독할 능력을 위임하는 것을 가능하게 한다. 이것은 타원 곡선 암호법에 기초한 공개 키 인프라스트럭처를 수반한다. 모든 사용자 및 모든 디바이스는 디바이스 상에서 로컬로 생성되는 그 자신의 공개/개인 키 쌍을 갖는다. 민감한 데이터를 액세스할 필요가 있는 백엔드 서버들 및 서비스들 또한 그들 자신의 키들을 가지고, 이는 서비스, 영역, 또는 다른 논리적 카테고리에 의해 세그먼트화될 수 있다.
변환 암호법은 (Alice 로서 지칭되는) 위임자가 (Bob 으로 지칭되는) 다른 사람에게 그녀의 메시지들을 해독할 능력을 위임하기를 원하는 것을 수반한다. 변환 키를 계산하기 위해 Alice 는 그녀의 개인 키 및 Bob 의 공개 키를 사용한다. 이 변환 키는, 오직 Bob 만이 그의 공개 키를 사용하여 메시지를 해독할 수 있도록, 메시지를 재암호화하기 위해 Alice 에 대해 암호화된 메시지 및 변환 키를 갖는 키 서버 (예컨대, 도 9 에서의 902) 에 의해 사용될 수 있다. 이 키 서버는 그 메시지를 실제로 해독하기 위해서 그 변환 키를 사용할 수 없고, 심지어 Bob 및 키 서버는 Alice 의 개인 키를 손상시키기 위해서 함께 작업할 수 없다. 일부 실시형태들에서, Alice 보다는 오히려 키 서버가 변환 키를 계산한다.
이 개시물은 사용자들 및 디바이스들의 그룹들에 대한 변환 암호화 및 멀티-홉 변환 암호화 (예컨대, 사용자들 및 디바이스들의 그룹들의 다수 계층들) 를 가능하게 하는 시스템들, 방법들, 및 장치들을 논의한다. 하나의 실시형태에서, Alice 는 그녀를 대표하도록 공개/개인 키를 생성하고 (도 1 에서의 사용자 (U1) 및 블록 2 에서의 블록 (210) 참조), 그 다음, 그녀의 디바이스들의 각각에 대해 (도 1 에서의 D1A 및 DIB 참조), 그녀는 각 디바이스에 대해 공개/개인 키 쌍을 생성한다 (블록 206 및 306 참조). 그녀는 그 다음에, 그녀의 개인 키로부터 각 디바이스의 공개 키로의 변환 키를 계산하고 (블록들 212 및 312 참조), 이들 변환 키들을 키 서버로 저장한다 (블록들 216 및 316 참조).
(전술된 엔벨로프 암호화를 이용하여) Alice 에게 암호화된 메시지를 "어드레스 (address)" 하기를 원하는 누구든 그녀의 공개 키를 사용하여 암호화한다. Alice 가 이들 암호화된 메시지들 중 하나를 취출하기 위해서 그녀의 디바이스들 중 하나를 사용하는 임의의 시간에, 그녀의 디바이스는 그것의 공개 키를 키 서버에 전송하고, 키 서버는 적절한 변환 키를 로케이팅시키고, EDEK 를 변환하여서, 그것은 그녀의 사용자 공개 키 대신에 그녀의 디바이스 공개 키를 사용하여 암호화되고, 변환된 EDEK 를 Alice 에게 반환한다. 그녀의 디바이스는 그 다음, DEK 를 복원하기 위해서 EDEK 를 해독하고, 그 다음, 실제 메시지를 해독할 수 있다.
Alice 는 그녀가 데이터를 해독하기 위해 사용하기를 원하는 새로운 디바이스를 획득하는 임의의 시간에, 그녀는 단지 그 디바이스에 대해 키 쌍을 생성하고, 그녀의 사용자로부터 새로운 디바이스로의 변환 키를 계산하며, 그 변환 키를 키 서버에 전송한다. 그녀가 디바이스를 잃어버리거나 사용을 중지하는 경우에, 그녀는 단지 키 서버에 변환 키를 삭제하도록 요청한다 (즉, 액세스 철회).
변환 암호법은 유사하게 그룹들에 대해 데이터를 암호화하는 문제에 대한 훌륭한 솔루션을 제공한다. 그룹의 관리자임 사람, 예컨대, Claire (예컨대, 도면들에서의 사용자 1 또는 U1) 는 먼저 그룹에 대한 공개/개인 키 쌍을 생성하고, 그 다음, 그룹의 멤버들의 각각에 대해, Claire 는 그룹으로부터 멤버로의 변환 키를 계산한다. 그 다음, 그룹에 대해 암호화된 메시지를 액세스하기를 원하는 누구든지 그녀의 공개 키를 키 서버에 제공하기만 하면 되고, 키 서버가 그룹과 사용자 간에 변환 키를 발견할 수 있는 경우에, 그것은 그 사용자에 대해 EDEK 를 변환한다.
변환 암호화 알고리즘은 (멀티- 유즈로서도 알려진) 멀티-홉이고, 양 문제점들은 함께 해결될 수 있다. Bob 이 "G1" 그룹에 추가되었고, 그의 메시지들을 액세스하도록 그의 iPad 를 구성하였다고 하자. 그가 그의 iPad 를 사용하여 "G1" 에 대해 암호화된 메시지를 액세스하기를 시도하는 경우에, iPad 는 그것의 공개 키를 키 서버에 전송한다. 키 서버는 iPad 로부터 Bob 으로의 변환 키를 찾고, 그 다음, Bob 으로붙 "G1" 그룹으로의 변환 키를 찾는다. 양 키들이 이용가능한 경우에, 키 서버는 먼저 EDEK 를 "G1" 으로부터 Bob 으로 변환한 다음, 그 결과를 Bob 으로부터 그의 iPad 로 변환한다. iPad 가 이 EDEK 및 암호화된 메시지를 얻을 때, 그것은 DEK 를 복원하고 그 메시지를 해독할 수 있다.
변환 암호법은 사용자 당 다수의 디바이스들 및 암호법적으로 보안된 그룹들이 확장가능한 방식으로 관리되도록 허용한다. 사용자는 그녀의 디바이스들을 그녀의 메인 아이덴티티 (identity) 에 용이하게 연관시키고, 그 다음, 임의의 재-암호화를 필요로 함이 없이 그녀에 대해 암호화된 임의의 메시지들을 액세스할 수 있다. 마찬가지로, 사용자는 빠르게 그리고 쉽게 그룹들에 추가되거나 그룹으로부터 제거될 수 있다. 그룹에 대해 암호화된 메시지에 대한 엔벨로프의 사이즈는 그룹에서의 멤버들의 수에 관계 없이 사이즈에서 증가하지 않고, 멤버들을 추가하거나 제거하기 위해서 메시지 엔벨로프에 대한 아무런 업데이트도 요구되지 않는다. 사용자가 그룹으로부터 제거되거나 사용자가 디바이스를 사용 중지하는 경우에, 키 서버로부터의 변환 키의 제거는 확실하게 액세스를 철회한다.
멀티-홉 변환 암호법 알고리즘은 또한, 디바이스들의 그룹들로 이루어지는 사용자들의 그룹보다 더 확장적인 계층을 지원할 수 있는 시스템을 생성하기 위해 사용될 수 있다. 사용자는 그룹을 생성하고 사용자들인 그 그룹 또는 다른 그룹들에 멤버들을 추가할 수 있을 것이다. 요청 디바이스가 데이터를 해독하기 이해 그것의 개인 키를 사용할 수 있을 때인, 디바이스의 공개 키를 사용하여 데이터가 최종적으로 암호화될 때까지, 그룹의 공개 키를 사용하여 암호화된 데이터를 변환하기 위해 그룹들 및 사용자들의 계층의 다수의 레이어들을 통해 연속적으로 변환들이 적용될 수 있을 것이다.
키 증강 (Key Augmentation) 을 통해 해결되는 철회 문제
알려진 암호법적 방법들은 관리자에 의해 데이터에 대한 액세스를 철회하는 문제점들을 갖는다. 상이한 두 사람에 의해 관리되는 그룹을 고려하자. 각 사람은 그룹에 멤버들을 추가하기 위해서 그룹의 개인 암호화 키의 카피를 가져야만 한다. 그 사람들 중 하나가 그룹으로부터 제거되고 더 이상 어떠한 액세스도 가지지 않아야 하는 경우에, 그 사람은 그룹의 개인 키를 보유하고 있을 수도 있을 것이다. 그 사람이 그룹에 대해 암호화되었던 메시지를 획득한 경우에, 키 서버의 관여가 필요 없이 개인 키가 메시지를 해독하기 위해서 사용될 수 있을 것이다.
우리는 이러한 문제점을 제거하는 신규한 키 증강 기법을 고안하였다. 사용자가 처음에 (사용자에 대해서 또는 아니면 그룹에 대해서) 공개/개인 키 쌍을 생성하는 경우에, 사용자는 개인 키를 보유하고 공개 키를 키 서버에 전송한다. 키 서버는 그 다음에, 랜덤 인자 (random factor) 를 생성하고, 공개 키를 그 인자로 곱하여, 사용자 또는 그룹에 대한 새로운 증강된 (augmented) 공개 키를 생성한다. 키 서버는 이 인자를 보유하고, 그것을 사용자 또는 그룹과 연관시킨다. 그 사용자 또는 그룹으로부터 디바이스 또는 사용자로의 변환 키가 생성되는 임의의 시간에, 키 서버는 동일 인자를 사용하여 그것을 증강시킨다.
증강된 공개 키는 더 이상 개인 키에 대해 수학적으로 관련되지 않기 때문에, 개인 키는 그 공개 키에 대해 암호화된 메시지들을 해독할 수 없다. 하지만, 그 공개 키에 대해 암호화되는 메시지들은 증강된 변환 키를 사용하여 사용자 또는 디바이스에 대해 재-암호화될 수 있고, 그것들은 그 다음에 타겟 디바이스의 개인 키에 의해 적절히 해독될 수 있다. 이것은, 그룹 또는 사용자에 대한 원래의 개인 키가 손상되는 경우에도, 적절한 변환 키를 제거함으로써 암호화된 메시지들에 대한 액세스가 항상 철회될 수 있는 것을 보장한다.
고객 관리된 키들 문제
본원에 개시된 변환 암호 기법의 애플리케이션은 고객 관리되는 키들에 대한 지원이다. 매 사용자, 그룹, 및 디바이스가 공개/개인 키 쌍을 가지고, 모든 적절한 변환 키들이 키 서버 상에 저장되며, 데이터가 적어도 하나의 사용자 또는 그룹에 대해 항상 암호화되는 것을 고려하자. 추가로, 시스템이 멀티- 테넌트 (multi-tenant) 이고, 여기서, 수개의 상이한 회사들이 그들의 데이터를 관리하기 위해서 동일한 시스템을 사용하지만, 그들은 그들의 데이터에 대한 제어를 유지하기를 희망하여서, 다른 테넌트들, 그리고 심지어 시스템의 오퍼레이터조차도 그 데이터를 액세스할 수 없도록 하는 경우를 가정하자.
각 테넌트가 그룹을 생성하고 그 그룹에 그것의 사용자들의 각각을 추가하는 경우에, 그리고 그 테넌트에 대해 저장되는 임의의 데이터가 테넌트의 그룹에 대해 암호화되는 경우에, 그 테넌트의 데이터는 (테넌트의 사용자들인) 그룹의 멤버들 이외의 다른 누군가에 의해서도 판독될 수 없다. 이러한 액세스 제어는 데이터의 암호화에 의해서 시행된다. 테넌트는 데이터를 또한 별도의 그룹에 대해 암호화함으로써 시스템의 오퍼레이터가 데이터를 액세스하도록 허용하도록 결정할 수 있다. 테넌트는 오퍼레이터로부터 그 그룹으로 사용자들을 추가할 수 있고, 이는 그들 사용자들이 또한 테넌트의 데이터를 액세스하도록 허용한다. 임의의 시간에 테넌트가 오퍼레이터의 액세스를 중지시키기를 원하는 경우에, 테넌트는 단순히 그룹으로부터 그들 사용자들을 제거하기만 하면 된다.
전술된 바와 같이, 이러한 접근법은 테넌트의 데이터를 다루고 있는 애플리케이션으로 하여금 그룹 멤버십을 무시하도록 허용하고; 그것은 단지 테넌트 그룹 및 오퍼레이터 그룹에 대해 데이터를 암호화하고, 사용자들은 데이터의 임의의 재-암호화의 필요 없이 필요에 따라 추가되거나 제거될 수 있다.
GDPR 보호 문제
변환 암호법의 다른 애플리케이션은 도래하는 유럽 연합 GDPR (General Data Protection Regulation) 에 의해 요구되는 소비자 보호들의 몇몇을 용이하게 하기 위한 것이다. 이것들은, 고객이 그녀의 개인 데이터를 사용하도록 동의를 제공하는 것, 고객이 동의를 철회할 수 있는 것, 및, 고객이 "데이터 삭제" 로서도 알려진 "잊혀질 권리 (right to be forgotten)" 를 갖는 것이라는 요건을 포함한다. 후자의 보호는, 데이터의 몇몇 세트에 의해 식별되는 대상은 이 데이터가 삭제되어서 그것이 더 이상 액세스되거나 프로세싱될 수 없도록 요청할 수 있는 것을 규정한다. 이것은 많은 데이터 프로세싱 시스템들에서 단순히 데이터를 삭제함으로써 달성될 수 있다; 하지만, 이것은, 예를 들어, 데이터베이스 백업에서, 이루어졌을 수도 있는 데이터의 임의의 카피들을 처리하지는 않는다.
변환 암호법을 이용하여 이들 보호들을 시행하기 위해서, 사용자의 정보가 수집되고 있음에 따라, 그 데이터는 사용자의 공개 키에 대해 암호화될 수 있다. 이것은, 오직 사용자만이 그 데이터를 액세스 가능한 것을 보장한다. 사용자가 다른 그룹이 그 사용자의 정보를 액세스하도록 허용하는데 동의하는 경우에, 사용자는 사용자로부터 그룹으로의 변환 키를 생성할 수 있다. 일단 변환 키가 생성되고 나면, 그룹의 임의의 멤버들은 그 데이터를 액세스하기 위해서 본원에 개시된 변환 암호 기법들을 이용할 수 있다. 사용자의 데이터의 임의의 백업들 또는 카피들은 암호화된 데이터이어야 한다. 사용자가 그녀의 데이터를 액세스하기 위한 그룹에 대한 동의를 철회하기를 희망하는 경우에, 그녀는 그녀의 사용자로부터 그룹에 대해 그녀가 생성하였던 변환 키를 단지 제거할 수 있다. 이것은, 그룹의 멤버들이 더 이상 데이터를 복원 가능하지 않기 때문에, 데이터를 효과적으로 없앤다. 비록 그것이 여전히 백업들 및 카피들에서 존재하여도, 그것은 불활성이게 된다.
동의를 제공하고 동의를 철회하기 위한 요건을 지원하는 것에 추가하여, 시스템은 어떻게 그리고 언제 그녀의 개인 정보가 사용되었는지에 관한 정보를 액세스할 사용자의 권리를 지원할 수 있다. 이 정보는 사용자의 암호화된 데이터가 변환되었던 각 시간을 추적함으로써 유지될 수 있다.
데이터 국지성
일부 정부 규칙들 (예컨대, 유럽) 은 특정 데이터가 나라 또는 지역의 경계들을 벗어나는 것을 막는다. 데이터는 종종 통상적인 인터넷 및 네트워킹 활동 동안 경계들을 가로질러서 이동하기 때문에, 이들 규칙들은 부담스러울 수 있다. 이들 국지성 규칙들에 의해 여전히 준수되면서 통상적인 인터넷 및 네트워킹 활동을 허용하기 위해서, 데이터는 본원에 개시된 변환 암호법을 이용하여 암호화될 수도 있고, 이는 오직 암호화된 데이터만이 나라/지역 경계들을 통과함을 의미한다. 추가로, 변환 키들이 하나 이상의 키 서버들 상에 저장될 수 있고, 그들 서버들은 주어진 나라 또는 지역적 경계 내에 남아 있을 수도 있기 때문에, 교차-경계 데이터 송신은, 아무런 비-암호화된 데이터 및 아무런 키들도 경계들을 통과하지 않기 때문에, 국지성 법칙들 및 규칙들에서의 예외들을 충족할 수도 있다.
보안 위반들
일부 규정들은 데이터 보안의 위반이 발생하는 경우에 다양한 바람직하지 않은 액션들이 트리거되어야할 것을 요구한다 (예컨대, HIPAA 규칙들). 트리거들은 개인 데이터의 해킹 뿐만 아니라, 암호화된 개인 데이터 및 그 데이터를 해독하기 위해 필요한 하나 이상의 키들 양자를 포함하는 서버의 해킹을 포함한다. 종종, 해킹 이벤트들은 암호화된 데이터 및 키(들) 양자를 액세스 가능하고, 따라서, HIPPA 또는 다른 규정 위반을 트리거한다.
본원 개시의 변환 암호법은, 변환 키들을 별도의 서버 (예컨대, 키 서버) 상에 저장함으로써, 위반이 발생하는 경우에도, 그러한 트리거를 회피할 수 있다. 달리 말하면, 사용자 디바이스 상에서 위반이 발생하는 경우에, 오직 암호화된 데이터만이 훔쳐질 것이고, 가능하게는 사용자들 공개 및 개인 키들이 훔쳐질 것이다. 하지만, 데이터는 그들 공개 및 개인 키들로도 해독될 수 없다. 대신에, 변환 키가 필요하고, 이것은 키 서버 상에 남아 있거나, 해독이 요망될 때까지 심지어 새엉되지 않을 수도 있다.
발명의 실시형태들
도 1 은 하나 이상의 디바이스들을 각각 갖는 사용자들의 그룹에 대해 멀티-홉 변환 암호법을 수행하기 위한 시스템의 하나의 실시형태를 나타낸다. 특히, 그룹 1 (G1) 은 2 사용자들, 사용자 1 (U1) 및 사용자 2 (U2) 를 가지고, 그룹 2 (G2) 는 2 사용자들, U2 및 사용자 3 (U3) 를 갖는다. 각 사용자는 적어도 하나의 디바이스를 가지고, U1 은 2 개의 디바이스들, 디바이스 1 (D1A) 및 디바이스 2 (D1B) 를 갖는다. U1 은 D1A 및/또는 DIB 를 통한 G1 의 관리, 암호화, 및 해독을 실행하고, U2 는 디바이스 3 (D2A) 를 통한 암호화 및 해독을 실행한다. U2 는 D2A 를 통해 G2 를 관리할 수 있다. U3 는 디바이스 4 (D3A) 를 통해 암호화 및 해독을 실행한다. 키 서버는 모든 공개 키들 및 변환 키들을 저장하고, 그것은 또한 저장된 변환 키들을 사용하여 모든 암호화 변환들을 계산한다.
이 시스템은 프록시 재-암호화 (PRE) 에 의해 제공되는 프리미티브들 상에 구축된다. 이 시스템에서의 각 그룹, 사용자, 또는 디바이스는 계층구조에서 노드로 간주될 수 있고, 여기서, 각 노드에는 개인 키 및 그 개인 키에 대해 수학적으로 관련되는 대응하는 공개 키로 이루어진 비대칭 키 쌍이 할당된다. 변환 키는 계층구조에서의 노드에 대해 암호화된 임의의 데이터의 암호화를 그 계층구조에서의 그것의 자식 노드들의 하나에 대해 암호화된 데이터로 변환하기 위해 형성될 수 있다. 각 변환 키는 자식 노드로부터의 공개 키와 부모 노드로부터의 개인 키를 결합함으로써 형성된다. 실례로, 그룹 1 과 사용자 1 사이의 변환 키 (112) 는 사용자 1 공개 키 (122) 와 그룹 1 개인 키 (104) 의 결합으로부터 형성된다. 각 변환 키는 멤버십 관계를 나타낸다 (예컨대, 사용자는 그룹에 속하고, 디바이스는 사용자에 속하며, 또는, 그룹은 다른 그룹에 속한다). 일단 형성되고 나면, 공개 키들 및 변환 키들은 서비스 (102) 를 식별하기 위해 송신되고, 키 서버 (102) (예컨대, 키 서버) 를 호스팅하는 서버 상에 메모리에 저장된다. 데이터는 그룹에 대해서 또는 사용자에 대해서, 또는 그룹들 및 사용자들의 조합에 대해서 암호화될 수 있다. 그룹 또는 사용자에 대해 데이터를 암호화하기를 희망하는 임의의 애플리케이션은 키 서버 (102) 로부터 그 엔티티에 대한 공개 키를 요청한다. 그것은 그 공개 키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 저장한다.
데이터는 항상 디바이스에 의해 해독된다. 디바이스가 데이터를 해독하기를 희망할 때, 그것은 계층구조에서 그것의 부모들 중 하나 (사용자 또는 그룹 중 어느 일방) 에 대해 암호화되었던 원하는 데이터의 인스턴스를 로케이팅시킨다. 가장 가까운부포에 대해 선호도가 주어진다; 데이터가 디바이스의 사용자에 대해 그리고 또한 그 사용자를 포함하는 그룹에 대해 암호화되는 경우에, 그것은 사용자에 대해 암호화된 데이터의 인스턴스를 사용할 것이다. 디바이스는 암호화된 데이터를 키 서버 (102) 에 패스한다. 키 서버는 그 데이터가 누구에 대해 암호화되었는지 디바이스로부터 계층구조에서의 노드로의 경로와 연관된 변환 키들을 로케이팅시키고, 요청 디바이스에 의해 해독될 수 있는 데이터의 암호화를 생성하기 위해서 그들 변환들을 적용한다. 실례로, 데이터 아이템 (DI1) 이 U1 에 대해 암호화되고 디바이스 (D1A) 가 DI1 에 대한 액세스를 요청하는 경우에, 키 서버 (102) 는 변환 키 (132) 를 로케이팅시키고, 그것을 U1 에 대해 암호화된 DI1 에 적용하며, 변환된 암호화된 데이터를 D1A 에게 반환한다. D1A 는 그다음, 데이터를 해독하고 DI1 을 복원하기 위해서 개인 키 (140) 를 사용한다. 제 2 데이터 아이템 (DI2) 이 그룹 (G2) 에 대해 암호화되고, 디바이스 (D2A) 가 그 데이터 아이템에 대한 액세스를 필요로 하는 경우에, D2A 는 암호화된 DI2 를 키 서버 (102) 에 전송한다. 키 서버 (102) 는 (G1 으로부터 U2 로 변환하는) 변환 키 (116) 및 (U2 로부터 D2A 로 변환하는) 변환 키 (136) 를 로케이팅시키고, DI2 가 U2 에 대해 암호화되도록 변환 키 (116) 를 사용하여 암호화된 DI2 를 변환하고, 그 다음에, 변환 키 (136) 를 사용하여 그 암호화된 데이터를 변환하여서, 그것은 이제 D3A 에 대해 암호화된다. 키 서버 (102) 는 DI2 를 해독하고 복원하기 위해 개인 키 (148) 를 사용하는 D3A 에 대해 이중-변환된 암호화된 데이터를 반환한다.
U1 이 G1 의 관리자로서 기술되었지만, 다른 실시형태들에서, U2 가 G1 의 관리자일 수 있거나, 또는 U1 및 U2 양자 모두가 G1 의 관리자일 수 있음에 또한 유의하여야 한다. 또 다른 실시형태에서, U1 또는 U2 이든지 간에, G1 의 관리자는 G1 의 멤버가 아닐 수도 있다.
도 1 에 개시된 직교 액세스 제어는 PRE 스킴의 확장가능성을 가능하게 하는데, 이는 임의의 애플리케이션이 어느 사용자들이 그룹들에 속하는지 또는 어느 디바이스들이 각 사용자와 연관되는지를 알지 않고서도 어느 그룹들 또는 사용자들에 대해 데이터를 암호화할 지를 선택할 수 있기 때문이다. 사용자들은 데이터가 그룹에 대해 암호화되기 전에 또는 후에 그 그룹에 추가될 수 있고, 마찬가지로, 디바이스들은 언제라도 사용자에 대해 연관될 수 있다. 이전에 암호화된 데이터를 로케이팅시키고 새로운 그룹 멤버 또는 새로운 디바이스에 의한 액세스를 가능하게 하기 위해서 임의의 추가적인 단계들을 수행할 필요성이 없다. 시스템은 또한 암호화된 데이터에 대한 액세스를 철회할 권리의 확장가능성을 가능하게 한다. 사용자들의 디바이스들 중 하나에 의한 데이터에 대한 액세스를 제거하기 위해 사용자에 대해 암호화되었던 모든 데이터를 로케이팅시키고 그것을 재-암호화할 필요가 없다; 대신에, 사용자로부터 디바이스로의 변환 키가 삭제된다. 마찬가지로, 사용자는 그룹으로부터 사용자로의 변환 키를 제거함으로써 그룹으로부터 제거될 수 있다.
도 2 는 사용자들 및 디바이스들의 그룹들에 대해 멀티-홉 변환 암호법을 수행하는 방법을 나타낸다. 사용자를 초기화하기 위해서, 방법 (200) 은 사용자의 디바이스 상에서 암호화 클라이언트를 론칭하거나 호출하고, 사용자를 추가하거나 또는 아니면 사용자가 암호화 클라이언트에 의해 이미 인식된 것을 인식한다. 그것은 방법 (200) 의 끝이고, 노드들 사용자 1 (예컨대, U1) 및 디바이스 1 (예컨대, D1A) 의 형성을 구성할 것이다. 하지만, 사용자는 그 이후에 디바이스 상에서 그것의 암호화된 데이터를 액세스하거나 사용자들 및 디바이스들의 그룹들을 생성/관리하기를 원할 수도 있다. 도 3 은 사용자의 제 2 디바이스 (예컨대, D1B) 를 등록하기 위한 방법을 나타낸다. 사용자가 그룹 (예컨대, G1) 을 생성하기를 희망하는 경우에, 방법 (400) 이 호출될 수 있고, 여기서, 사용자 1 은 이 그룹의 단하나의 멤버이다. 사용자가 그룹 1 에 다른 멤버들을 추가하기를 희망하는 경우에, 방법 (500) 은 하나 이상의 디바이스들을 제 2 사용자에 등록하는 방법을 나타내고, 방법 (600) 은 그룹 1 에 제 2 사용자를 추가하는 방법을 나타낸다. 제 제 2 사용자, 사용자 2 는, 제 1 사용자가 그것의 2 개의 디바이스들을 포함하는 서브-그룹에 대한 관리자인 것처럼, 그것의 하나 이상의 디바이스들을 포함하는 서브-그룹의 관리자로서 행동할 수 있다.
이어지는 문단들은 도 2 내지 도 6 에서의 방법들을 보다 더 자세히 설명한다.
도 2 는 시스템에 새로운 사용자를 추가하기 위한 방법의 일 실시형태를 나타낸다. 방법 (200) 은 사용자 1 이 디바이스 1 을 사용하는 처음에 암호화-가능 애플리케이션과 상호작용하는 것으로 시작할 수 있다 (블록 202). 일부 실시형태들에서, 암호화는 백그라운드에서 수행될 수도 있고, 이와 같이, 사용자 1 은 이메일 애플리케이션, 스프레드시트 프로그램, Slack, 또는, 암호화된 데이터를 다른 사용자 디바이스에 패스할 수 있는 다른 애플리케이션 또는 웹 포탈과 상호작용할 수도 있다. 사용자의 디바이스 상의 암호화 클라이언트는 디바이스 1 에 대해 비대칭 키 쌍을 랜덤으로 생성하고 (블록 204), 사용자에 대해 별도의 비대칭 키 쌍을 랜덤으로 생성한다 (블록 206). 이들 키 쌍들을 생성하는 순서는 상호변경가능하다. 디바이스 키 쌍은 타원 곡선 키 생성 알고리즘 (이 개시물에서 나중에 설명되는 KeyGen 알고리즘) 을 이용하여 생성될 수 있다. 암호화 클라이언트는 디바이스 1 상의 보안 로컬 스토리지에 디바이스 및 사용자에 대한 개인 키들을 저장할 수 있다. 암호화 클라이언트는 또한 선택적으로, 사용자의 개인 키를 암호화하기 위한 방법을 제공할 수 있어서, 그것은 키 서버에 의해 안전하게 예탁될 수 있다. (블록 210). 이 키 예탁 (escrow) 은, 디바이스 1 이 더 이상 이용가능하지 않거나 보안 스토리지가 더 이상 액세스가능하지 않는 경우에 사용자로 하여금 그들의 개인 키를 복원하도록 허용하기 위해 제공된다. 개인 키를 암호화하기 위해 사용될 수 있는 몇가지 상이한 방법들이 존재하는데, 그것은 다음과 같은 것들을 비제한적으로 포함한다:
Figure pct00001
사용자로 하여금 패스프레이즈 (passphrase) 를 입력하도록 프롬프트 (prompt), 그 패스프레이즈로부터 키를 도출하기 위해 PBKDF2 와 같은 표준 키 도출 알고리즘을 이용, 그리고 개인 키를 암호화하기 위해 AES256-GCM 과 같은 대칭-키 암호화 알고리즘과 함께 그 키를 사용;
Figure pct00002
사용자로 하여금 USB 메모리 스틱과 같은 착탈가능한 스토리지 디바이스를 제공하도록 프롬프트. 클라이언트 애플리케이션은 그것이 개인 키를 암호화하기 위해 AES256-GCM 과 같은 대칭-키 암호화 알고리즘과 함께 사용하는 랜덤 키를 생성한 다음에, 그 랜덤 키를 착탈가능 스토리지 디바이스 상에 저장할 수 있을 것이다.
Figure pct00003
사용자로 하여금 랜덤 키를 생성하고 안전하게 저장하며 그 키를 클라이언트 애플리케이션에 제공할 수 있을 Yubikey 와 같은 보안 디바이스를 제공하도록 프롬프트. 클라이언트 애플리케이션은 개인 키를 암호화하기 위해서 AES256-GCM 과 같은 대칭 키 알고리즘과 함께 그 키를 사용할 수 있을 것이다.
새로운 사용자 및 사용자 1 에 대해 새롭게 생성된 비대칭 키 쌍 및 사용자의 디바이스 D1A 에 대해 새롭게 생성된 비대칭 키 쌍이 주어지면, 암호화 클라이언트는 사용자 1 로부터 디바이스 1 로 변환될 데이터에 대한 사용자-대-디바이스 변환 키 (예컨대, 132) 를 계산할 수 있다 (블록 208). 사용자-대-디바이스 변환 키는 사용자 1 개인 키 (예컨대, 120) 및 디바이스 1 공개 키 (예컨대, 142) 로부터 형성될 수 있다. 사용자 1 로부터 디바이스 1 로의 변환 키는 키 서버에서 등록되거나 저장될 수 있고 (블록 212), 사용자 1 및 디바이스 1 은 초기화되는 것으로 간주될 수 있다 (블록 214) (즉, 데이터는 사용자 1 의 공개 키를 사용하여 암호화될 수 있고, 사용자 1 은 사용자 1 의 공개 키를 사용하여 암호화된 임의의 데이터를 액세스하기 위해서 디바이스 1 을 사용할 수 있다). 선택적으로, 새롭게 형성된 사용자 1 공개 키 및 디바이스 1 공개 키는 또한 키 서버 상에서 등록되거나 저장될 수 있다. 사용자 1 개인 키는 선택적으로, 암호화된 후에 그리고 사용자-대-디바이스 변환 키가 생성된 후에 디바이스 1 메모리로부터 제거될 수 있다. 추가적으로, 암호화 클라이언트는 또한, 전술된 바와 같이, 키 서버에 사용자 1 에 대한 암호화된 개인 키 및 사용자의 ID 를 저장할 수도 있다. 암호화 클라이언트는 또한, 디바이스 1 의 메모리 상에 사용자 1 및 디바이스 1 개인 키들을 저장할 수 있다.
일 실시형태에서, 디바이스 1 에 대한 개인 키는 암호화되지 않고 키 서버에 의한 예탁으로 저장된다. 이에 따라, 디바이스 개인 키가 분실되는 경우에, 사용자는 방법 (300) 을 이용하여 그 디바이스를 재등록할 수 있다.
방법 (200) 은 사용자 1 및 디바이스 1 에 대해 설명되었지만, 그것은 또한 임의의 수의 다른 디바이스들을 사용자 1 에, 또는 임의의 수의 디바이스들을 임의의 사용자에 등록하기 위해 사용될 수 있다. 사용자들 및 디바이스들의 이러한 초기화는 병행하여, 순차적으로, 또는 이들의 일부 조합으로 발생할 수 있다.
도 3 은 등록된 사용자에 대해 새로운 디바이스를 추가하는 것을 나타낸다. 암호화 클라이언트의 인스턴스가 새로운 디바이스에 아직 할당되지 않은 비대칭 키 쌍을 갖지 않는 새로운 디바이스로부터 시스템을 액세스할 때 (예컨대, 디바이스가 사용자에 추가되고 있을 때) (결정 304), 암호화 클라이언트는 그 디바이스에 대해 공개/개인 키 쌍을 랜덤으로 생성하기 위해 키 생성을 위한 프로세스를 호출할 수 있고 (블록 306), 그 다음, 개인 키를 디바이스 상의 보안 로컬 스토리지에 저장할 수 있다. 디바이스는 그 다음에, 사용자의 예탁된 개인 키를 취출하고 그것을 해독한다 (블록 308). 이 해독의 상세들은, 전술된 바와 같이, 예탁을 위해 개인 키를 암호화하기 위해 사용되는 메커니즘에 의존한다. 일단 사용자의 개인 키가 취출되고 해독되고 나면, 암호화 클라이언트는 그 다음에 사용자 1 의 개인 키 및 디바이스 2 의 공개 키를 사용하여 사용자 1 로부터 디바이스 2 로의 변환 키를 생성하기 위해 변환 키 생성 프로세스를 호출할 수 있다 (블록 310). 암호화 클라이언트는 그 다음, 사용자의 아이덴티티, 디바이스의 공개 키, 및 사용자 1 로부터 디바이스 2 로의 변환 키를 키 서버 상에 등록할 수 있고 (블록 312), 그 다음, 사용자의 개인 암호화 키를 그것이 더 이상 필요하지 않음에 따라 폐기할 수 있다. 이 시점에서, 사용자 1 (U1) 은 사용자 1 의 공개 키를 사용하여 암호화된 임의의 데이터를 액세스하기 위해 디바이스 2 (D1B) 를 사용할 수 있다 (블록 314).
도 4 는 하나 이상의 디바이스들을 각각 갖는 하나 이상의 사용자들의 그룹을 생성하는 방법을 나타낸다 (블록 402). 사용자, 실례로, U1 이 그룹 생성을 개시할 때, 사용자의 디바이스, 실례로 D1A 상의 암호화 클라이언트는 그 그룹에 대해 공개/개인 키 쌍을 랜덤으로 생성한다 (블록 404). 이것은 KeyGen 함수를 호출할 수도 있고, 이는 이 개시물에서 나중에 자세히 설명될 것이다. 암호화 클라이언트는 그 다음에 G1 의 개인 키 (예컨대, 104) 및 U1 의 공개 키 (예컨대 122) 를 사용하여 G1 으로부터 U1 으로의 변환 키를 생성한다 (블록 406). 이것은 TransformKeyGen 함수를 호출할 수도 있다. 그룹에 대한 키 쌍을 처음으로 생성하는 사용자는 그 그룹의 관리자로 간주될 수 있다. 암호화 클라이언트는 관리자의 공개 키를 사용하여 그룹의 개인 키를 암호화할 수도 있어서, 그룹의 개인 키를 메시지 또는 문서로서 효율적으로 취급하고 그것을 관리자의 공개 키를 사용하여 암호화할 수도 있게 된다 (블록 408). 암호화 클라이언트는 그 이후에, 그룹의 공개 키, G1 으로부터 U1 으로의 변환 키, 그룹의 개인 키의 암호화된 버전, 그룹의 ID, 사용자의 ID 를 저장을 위해 키 서버 (예컨대, 102) 에 등록할 수 있다 (블록 412). 암호화 클라이언트는 그룹 개인 키를 폐기할 수도 있다. 이 시점에서, 사용자는 (G1 으로부터 U1 으로의 변환 키가 존재하기 때문에) 그룹의 멤버로서 간주될 수 있고, 또한 (G1 의 개인 키가 U1 의 공개 키로 암호화되기 때문에) 그룹의 관리자로서 간주될 수 있다 (블록 414). 방법 (400) 은 또한, 그룹에 다른 사용자들을 추가하기 위해 사용될 수 있고 (예컨대, 도 6), 사용자들의 면에서 중첩될 수도 있거나 중첩되지 않을 수도 있는 추가적인 그룹들을 생성하기 위해 다른 사용자들에 의해 사용될 수 있다.
도 5 는 새로운 사용자를 등록하는 방법을 나타낸다. 새로운 사용자, 실례로, U2 가 U2 의 제 1 디바이스, 실례로, D2A 를 사용하여 처음으로 앱과 상호작용할 때 (블록 502), D2A 상의 앱은 D2A 에 대한 공개/개인 키 쌍을 랜덤으로 생성한다 (블록 504). 앱은 그 다음, U2 에 대한 공개/개인 키 쌍을 랜덤으로 생성한다 (블록 506). 앱은 그 다음, U2 로부터 D2A 로의 변환 키를 계산한다 (블록 508). 그 다음, 앱은 선택적으로, 전술된 메커니즘들 중 하나를 이용하여 U2 의 개인 키를 암호화한다 (블록 510). 앱은 공개 키, U2 로부터 D2A 로의 변환 키, 및 암호화된 개인 키를 키 서버에 전송한다 (블록 512). U2 및 D2A 는 이제 앱을 사용할 준지바 되었다 (블록 514).
도 6 은 그룹에 추가적인 사용자들을 추가하는 방법을 나타낸다. 사용자를 추가하는 것은 사실상 그룹과 공유되는 임의의 데이터에 대한 액세스를 그들에게 승인하는 것을 의미한다. 사용자는 사용자가 등록된 후에만 추가될 수 있다 (즉, 그들은, 방법 (200) 의 애플리케이션에 의해, 키 서버에 등록된 공개 키를 이미 가지고 있다). G1 과 같은 그룹의 관리자인 U1 과 같은 사용자가 G1 에 U2 가 추가되는 것과 같이 그룹에 새로 등록된 사용자를 추가하기를 희망할 때 (블록 602), D1A 와 같은 그룹 관리자의 디바이스들 중 하나 상의 암호화 클라이언트는 키 서버로부터 U1 에 대해 암호화된 그룹의 개인 키 (예컨대, 104) 를 요청한다 (블록 604). 키 서버는 암호화된 개인 키를 변환하기 위해 U1 으로부터 D1A 로의 변환 키를 사용하고, 변환 키를 반환한다 (블록 606). D1A 는 변환 키를 해독하고 G1 의 개인 키를 복원하기 위해 그것의 디바이스 개인 키를 사용한다 (블록 608). D1A 는 그 다음, 키 서버로부터 새로운 사용자의 공개 키 (예컨대, 126) 를 페치하고 (블록 610), 그 다음에, G1 으로부터 U2 로의 변환 키 (예컨대, 114) 를 계산한다 (블록 612). 암호화 클라이언트는 그 다음에, G1 으로부터 U2 로의 변환 키를 저장을 위해 키 서버에 전송하고 (블록 614), 새로운 사용자는 그룹의 멤버로 간주된다 (G1 의 멤버 U2) (블록 616). 이러한 방식으로 그룹에 추가적인 사용자들이 추가될 수 있다.
그룹 멤버는 또한 키 서버에 그녀의 제거를 위한 요청을 전송함으로써 그룹으로부터 그녀 자신을 제거할 수도 있다. 그녀가 제거 요청에서 명시된 그룹의 멤버인 것을 키 서버가 확인하는 경우에는, 키 서버는 그룹으로부터 그녀의 사용자로의 변환 키를 로케이팅시키고, 그 변환 키를 삭제한다.
관리자는 또한 하나 이상의 추가적인 관리자들을 추가할 수도 있다. 사용자가 이미 등록된 경우에, 제 1 관리자의 디바이스 상의 암호화 클라이언트는 키 서버로부터 그룹 개인 키 및 추가될 관리자의 공개 키를 취출할 수 있다. 암호화 클라이언트는 그 다음에, 그룹의 개인 키를 해독하고 추가될 관리자의 공개 키를 사용하여 그룹 개인 키를 암호화할 수 있다. 클라이언트는 추가될 관리자의 사용자 ID 및 새로운 암호화된 그룹 개인 키를 그룹과 연관시키고, 이 정보를 키 서버에 등록한다.
관리자는 또한, 다른 관리자의 특권들을, 그들이 동일 그룹의 양 관리자들인 경우에, 제거할 수 있다. 그렇게 하기 위해서, 그룹의 하나의 관리자는 그룹 ID 및 제거될 관리자의 ID 를 키 서버에 전송한다. 키 서버는, 요청자가 특정된 그룹에 대한 관리자임을 확인하고, 그렇다면, 제거될 관리자의 공개 키를 사용하여 암호화되는 그룹에 대한 개인 키를 로케이팅시키고, 암호화된 개인 키를 삭제한다.
사용자들 및 디바이스들을 초기화하는 것, 그룹들을 생성하는 것, 그룹들에 사용자들을 추가하는 것의 상기 상세들이 주어지면, 다음의 도면들은 그룹 멤버들에 해독 권한을 위임하기 위한 그리고 또한 위임된 해독 권한을 철회하기 위한 방법들을 기술한다.
도 7a 는 그룹과 암호화된 문서를 공유하고 그 그룹의 멤버들에게 해독 권한을 위임하는 방법을 나타낸다. 방법 (700) 은 도 1 에서 도시된 그룹들, 사용자들, 및 디바이스들의 예시적인 네트워크를 참조하여 설명될 수 있고, 그럼에도 불구하고 이 방법은 그룹들, 사용자들, 및 디바이스들의 다른 구성들에 대해 동등하게 적용가능하다. 사용자 1 은 그룹 1 의 멤버들과 문서를 공유하기를 원할 수도 있다. 디바이스 1 을 사용하여, 사용자 1 은 문서를 생성할 수 있다 (블록 (702). 디바이스 1 상의 암호화 클라이언트는 그 다음, 랜덤 문서 암호화 키 (DEK) 를 생성할 수 있고 (블록 704), 그 문서 데이터를 해독하기 위해 대칭 키 암호화 프리미티브를 호출할 수 있다 (블록 706). 이것은 문서 암호화 (Encrypt Document) 프로세스의 호출을 수반할 수도 있다. 암호화 클라이언트는 그 다음, 키 서버 (102) 로부터 사용자 1 에 대한 공개 키 (122) 를 취출하고, 이 공개 키 (122) 를 사용하여 DEK 를 암호화하고 (블록 708), 이는 암호화 프로세스의 호출을 수반할 수도 있다. 이것은 사용자 1 의 ID 와 연관된 암호화된 DEK 또는 EDEK 를 생성한다. 암호화 클라이언트는 그 다음, 문서 ID, 사용자 1 ID, 및 EDEK 를 키 서버에 등록할 수 있다. 암호화 클라이언트는 그 다음, 암호화된 문서 키를 그 문서에 부착하고 이를 문서 스토어에 저장하고 (블록 710), 이는 이 애플리케이션에 의해 저장을 위해 문서를 생성한 애플리케이션에 대한 암호화된 문서의 반환을 수반할 수도 있다.
도 7b 는 그룹과 문서를 공유하는 방법을 나타낸다. 암호화된 데이터에 대한 액세스를 공유하거나 위임하는 사용자 U1 은, 실례로 도 7a 에서 도시된 바와 같이 U1 의 공개 키를 사용하여 데이터를 암호화하는 애플리케이션을 통해, 암호화된 데이터에 대한 액세스를 이전에 승인받았던 사용자이다.
도 7a 에서 제시된 예를 계속하면, 사용자 1 은 그룹 1 의 멤버들과 문서를 공유하고자 하는 소망을 나타낼 수 있다 (명시적으로 또는 아니면 문서를 이메일에 부착하는 것, Google Drive, Dropbox, 또는 Box 등과 같은 클라우드-기반 파일 공유 서비스에 문서를 업로딩하는 것을 통해) (블록 714). 이러한 소망은 전형적으로 애플리케이션과의 상호작용을 통해서 표시된다. 사용자 1 의 디바이스, D1A 는 그 다음, 그 문서를 요청할 수 있다 (블록 716). 키 서버는 U1 의 공개 키 (EDEK-U1) 를 사용하여 암호화되었던 DEK 를 변환하기 위해 U1 으로부터 D1A 로의 변환 키 (132) 를 사용할 수 있고, 따라서 그것은 D1A 에 의해 해독될 수 있다 (EDEK-U1-D1A) (블록 718). 서비스는 변환된 EDEK 를 애플리케이션에 반환한다 (블록 720). 애플리케이션은 그 다음, EDEK-U1-D1A 를 해독하기 위해 디바이스 1 의 개인 키 (140) 를 사용하고 DEK 를 복원할 수 있으며 (블록 722), 그 다음, EDEK-G1 을 형성하기 위해 그룹 1 의 공개 키 (106) 로 DEK 를 암호화할 수 있다 (블록 724). 애플리케이션은 그 다음, 새로운 EDEK-G1 을 문서에 추가할 수 있고 (블록 726), 여전히 암호화된 문서를 갖는 문서 스토어에 문서 키를 저장할 수 있다 (블록 728).
이 프로세스는 또한 다음과 같이 기술될 수 있다: 디바이스 D1A 를 사용하는 사용자 1 은 키 서버로부터 문서에 대한 EDEK 를 요청할 수 있다. 키 서버는 문서와 디바이스 사이에 이용가능한 최단 액세스 경로를 검색할 수 있다. 이것은 사용자 1 의 공개 키로 암호화되는 것을 찾기 위해 문서에 대해 EDEK 들의 리스트를 검색하는 것을 포함할 수 있다. 하나도 없으면, 키 서버는 사용자를 포함하는 그룹의 공개 키로 암호화되는 것을 찾을 수 있다. 키 서버가 EDEK 를 발견할 수 있는 경우에, 그것은 EDEK 를 (EDEK 가 사용자의 공개 키로 암호화되었던 경우) 한번, 또는 (EDEK 가 그룹의 공개 키로 암호화되었던 경우) 2 번 변환 (엔트리 상의 Transform 을 호출) 할 수 있다. 클라이언트는 응답을 해독하고 DEK 를 취출하기 위해 디바이스의 개인 키를 사용할 수 있다. 클라이언트는 그 다음, 키 서버로부터 각 수신자의 공개 키를 취출하고, EDEK 들의 새로운 리스트를 생성하기 위해 각각의 공개 키 및 DEK 를 암호화 (예컨대, Encrypt 호출) 할 수 있다. 클라이언트는 그 다음, 문서 ID 와 함께 이 리스트를 저장을 위해 키 서버에 전송할 수 있다.
도 7c 는 그룹에서의 사용자가 공유된 문서를 해독하는 방법을 나타낸다. 사용자 2 (U2) 는 암호화된 문서를 취출하기 위해 Google Drive, Box, 또는 DropBox 와 같은 클라우드 파일 스토리지 서비스, 이메일 클라이언트 등과 같은 애플리케이션을 사용할 수 있다 (블록 742). 디바이스 3 (D2A) 상의 암호화 클라이언트의 인스턴스는 키 서버로부터 문서에 대해 EDEK 를 요청할 수 있다. 키 서버는, 디바이스 3 으로부터 사용자 2 로 그룹 1 로의 경로를 식별할 수 있고 (블록 746), 그룹 1 의 공개 키 EDEK-G1 로 암호화된 EDEK 및 G1 으로부터 U2 로의 변환 키 (114) 를 취출하며, 그 다음, EDEK 를 변환하기 위해 그 변환 키를 사용할 수 있고, 따라서 그것은 U2 에 의해 해독될 수 있다 (블록 734). 키 서버는 그 다음, U2 로부터 D2A 로의 변환 키 (136) 를 취출하고, D2A 에 의해 해독될 수 있는 이중-변환된 EDEK 를 생성하기 위해 변환된 EDEK 에 대해 그 변환 키를 사용할 수 있다 (블록 736). 키 서버는 그 다음, 이중-변환된 EDEK 를 암호화 클라이언트에 반환할 수 있다 (블록 738). 암호화 클라이언트는 EDEK-G1-U2-D2A 를 해독하고 DEK 를 취출하기 위해 D2A 에 대한 개인 키 (148) 를 사용할 수 있다. 애플리케이션은 그 다음, DEK 를 사용하여 문서를 해독하고 (블록 742), 해독된 문서를 사용자 2 에 제시할 수 있다 (블록 744).
이 프로세스는 또한 다음과 같이 기술될 수 있다: 문서 해독 (Decrypt Document) 은 현재 사용자를 대신하여 특정 디바이스로부터 호출될 수 있다. 공유 경우와 유사하게, 클라이언트는 EDEK 에 대한 요청을 키 서버에 전송할 수 있다. 키 서버는 EDEK 를 검색하고, 발견되는 경우에, 그것을 사용자의 디바이스에 대해 변환하고, 그것을 반환한다. 클라이언트는 DEK 를 취출하기 위해 디바이스 개인 키를 사용하여 EDEK 에 대해 Decrypt 를 호출할 수 있다. 이것이 성공적인 경우에, 클라이언트는 내장 애플리케이션에 의해 제공되었던 암호화된 문서를 해독하기 위해 DEK 를 사용하여 대칭 키 해독 프리미티브를 호출할 수 있다.
도 8 은 사용자들의 그룹 및 멀티-홉 프록시 재-암호화를 이용하여 암호법적으로 시행되는 직교 액세스 제어를 제공하기 위한 시스템의 일 실시형태를 나타낸다. 시스템 (800) 은 2 개의 디바이스들 (D1A, DIB, D2A, 및 D2B) 을 각각 갖는 제 1 사용자 U1 및 제 2 사용자 U2 를 포함한다. 사용자들은 그룹 G1 의 부분이고, U1 은 그룹의 관리자이다. 양 사용자들은 또한 그들의 디바이스들을 포함하는 서브그룹들의 관리자들이다. 사용자가 처음으로 등록될 때, 사용자가 시스템에 액세스하고자 이용하는 디바이스는 사용자에 대한 공개 및 개인 키 쌍, 디바이스에 대한 공개 및 개인 키 쌍, 및 사용자로부터 디바이스로의 변환 키를 랜덤으로 생성하고, 키 서버의 공개 키 스토리지 상에 그 공개 키들 및 변환 키들을 저장한다. 선택적으로, 사용자의 개인 키는 암호화되고 키 서버의 선택적 암호화된 개인 키 스토리지 상에 저장될 수 있다. 관리자의 디바이스는 또한, 그룹 G1 이 생성될 때 그룹 G1 에 대해 공개 및 개인 키를 생성하고, 키 서버 상에 공개 키를 (그리고 선택적으로 키 서버 상에 개인 키의 암호화된 버전을) 저장할 수 있다. G1 에 멤버를 추가하기 위해, 그 멤버가 관리자 그녀 자신 U1 이든 또는 제 2 사용자 U2 이든 간에, 그룹으로부터 사용자로의 변환 키가 생성되고, 키 서버의 변환 키 스토리지에 저장된다. 사용자에 대해 등록되는 임의의 디바이스는 또한 생성되고 키 서버 상에 저장되는 사용자로부터 디바이스로의 새로운 변환 키와 연관된다. 디바이스들에 대한 변환 키들은 사용자가 새로운 디바이스를 등록하기 위해 사용하고 있는 어느 디바이스에 의해서든 생성될 수 있다.
각 디바이스는 일단 생성된 각각의 개인 키를 저장하기 위해 개인 키 스토리지를 포함할 수 있다. 사용자가 사용자들 및/또는 디바이스들의 그룹을 관리하기 위해 사용하는 각 디바이스는 변환 모듈을 포함할 수 있다. 따라서, 변환 모듈은 관리 기능들을 위해 사용되지 않는 디바이스들 상에서 선택적이다. G1 관리를 위해, 오직 D1A 의 변환 모듈만이 필요하다는 것에 유의하는 것이 중요하다. U2 가 그녀의 디바이스들 D2A 및 D2B 를 등록하기 위해, 이들 2 개의 디바이스들 중 하나는 변환 모듈을 가질 수 있다. 그룹 관리자의 디바이스 상의 및 (그녀의 디바이스들을 포함하는 서브그룹을 관리할 필요가 있기 때문에) 관리자가 아닌 그룹 멤버의 디바이스 상의 변환 모듈의 구현은 종래 기술의 PRE 스킴들에서 볼 수 없는 적어도 하나의 특징이다.
도 9 는, 그룹들 및 사용자들에 대한 공개 키들을 저장하고 클라이언트들로 하여금 그것들을 취출하도록 허용하는, 프록시 (906) 로서 그리고 또한 키 서버 (906) 로서 작용하는 서비스 (906) 와 함께, 애플리케이션 (904) 에서 내장되는 라이브러리 (901) 를 포함하는 시스템을 나타낸다. 다양한 애플리케이션들 및 시스템들과 이 시스템의 양립가능성을 용이하게 하기 위해, PRE 라이브러리 (902) 는 사용자 인증을 핸들링하지 않을 수도 있다. 애플리케이션 (904) 은 사용자의 아이덴티티의 서명된 주장을 제공하는데 책임이 있을 수 있고; 시스템은 애플리케이션 (904) 에 대해 서명을 검증하기 위해 공개 키로 구성된다. 마찬가지로, 시스템은 암호화된 애플리케이션 데이터의 스토리지를 핸들링하지 않고; 애플리케이션 (904) 은 이 데이터를 애플리케이션의 나머지와 양립가능한 방식으로 자유롭게 저장한다.
도 10 은 그룹의 공개 키를 활용함으로써 사용자들 또는 디바이스들의 그룹에 대해 암호화되는 데이터 (예컨대, 문서) 의 일 실시형태를 나타낸다. 여기서, 데이터는 암호문을 형성하기 위해 그룹의 공개 키를 사용하여 그룹에 대해 암호화될 수 있다.
도 11 은 관리자가 사용자들의 그룹에 새로운 사용자를 추가하는 것을 나타낸다. 이것은 관리자가 사용자들의 그룹으로부터 새로운 사용자로의 변환 키를 계산하는 것 및 이 변환 키를 서버 상에 저장하는 것을 수반헐 수 있다. 통상적으로, 새로운 사용자는 그녀 자신을 위한 새로운 키 쌍을 이미 생성하였을 텐데, 그 이유는 이 쌍에서의 공개 키는 그룹-대-사용자 변환 키를 생성하기 위해 그룹 개인 키와 함께 사용되기 때문이다.
암호화할 때, 어느 사용자들이 그 그룹에 속하는지를 알 필요는 없다. 사용자는 단지 그룹에 대해 암호화하고, 서버는 변환된 암호문을 생성하기 위해 그룹으로부터 사용자로의 적절한 변환 키를 사용할 수 있고, 사용자는 그 후에 그 변환된 암호문을 해독하기 위해 그들의 개인 키를 사용할 수 있다. 데이터가 그룹에 대해 그리고 또한 그 그룹의 멤버에 대해 직접 암호화되는 경우에, 2 개의 암호화들이 발생한다: 하나는 그룹의 공개 키에 대한 것이고 그리고 하나는 사용자의 공개 키에 대한 것이다. 그 사용자가 데이터에 대한 액세스를 요청하는 경우에, 시스템은 데이터에 액세스하기 위한 가장 짧은 경로를 결정할 것이고, 이는 이 예에서 사용자에 대해 직접 암호화되는 데이터를 선택하는 것을 의미할 것이다 (예컨대, 그룹으로부터 사용자로 그 다음에 사용자로부터 디바이스로의 변환에 대해서보다 사용자로부터 디바이스로의 변환에 대해 하나 더 적은 홉 (hop) 이 존재한다).
도 12 는 사용자들의 그룹으로부터 그 그룹에서의 사용자로의 변환 키 (또는 그룹-대-사용자 변환 키) 를 생성하는 방법의 일 실시형태를 나타낸다. 이것은 그룹 관리자의 디바이스들 중 하나를 사용하여 그룹 관리자에 의해 수행될 수 있다. 관리자는 그룹의 개인 키에 대한 액세스를 가지고, 따라서, 그룹의 개인 키 및 사용자의 공개 키를 사용하여 변환 키를 생성할 수 있다.
도 13 및 도 14 는 사용자들의 그룹에 대해 암호화된 데이터 (예컨대, 문서) (예컨대, 도 10 에서 생성된 것과 같은 암호문) 를 해독하기 위한 방법의 일 실시형태를 나타낸다. 도 13 은 (예컨대, 그룹의 공개 키로 데이터를 암호화하는 것에 의해) 그룹에 대해 암호화된 데이터, 또는 암호문이 (그룹으로부터 특정 사용자로의) 변환 키를 사용하여 변환된 암호문 (또는 변환된 암호화된 문서) 으로 변환될 수 있는 것을 보여준다. 도 14 는 그 다음, 어떻게 변환된 암호문 (또는 변환된 암호화된 문서) 이 사용자의 개인 키의 사용을 통해 사용자에 의해 해독될 수 있는지를 보여준다.
도 15 는 사용자가 그녀의 데이터에 대한 액세스를 그녀의 디바이스들 중 하나에게 승인하는 것의 일 실시형태를 나타낸다. 이것은 또한 사용자에 의해 관리되는 디바이스들의 그룹에 디바이스를 추가하는 것으로 지칭될 수 있다. 그것은 사용자의 개인 키로부터 새로운 디바이스의 공개 키로의 변환 키를 생성하는 것 (즉, 사용자의 개인 키 및 새로운 디바이스의 공개 키를 사용하여 사용자로부터 디바이스로의 변환 키를 생성하는 것) 을 수반한다.
도 16 은 사용자로부터 디바이스로의 변환 키를 생성하는 일 실시형태를 나타낸다. 사용자는 도시된 디바이스를 포함하는 하나 이상의 디바이스들 중 하나에 대해 이 방법을 수행할 수 있다. 그 프로세스는 사용자의 키로부터 디바이스의 키로의 변환 키를 생성하는 것 (즉, 사용자의 개인 키 및 디바이스의 공개 키를 사용하는 것) 을 수반한다.
그룹에 대해 암호화된 데이터, 암호문은 도 17 에서 도시된 바와 같이 그 암호문을 이중-변환된 암호문으로 추가로 변환함으로써 그룹의 사용자에 속하는 디바이스에 의해 액세스될 수 있다. 여기서, 그룹에 대해 암호화된 데이터는 이미 변환된 암호문으로 변환되었고, (도 13 을 상기하라), 그 다음, 사용자-대-디바이스 변환 키를 사용하여 이중-변환된 암호문으로 추가로 변환된다. 도 18 은 디바이스가 그 다음에 어떻게 이 이중-변환된 암호문을 디바이스에 대한 개인 키를 사용하여 해독할 수 있는지를 예시한다.
도 19 는 멀티-홉 변환 암호화를 이용하여 다수의 그룹들에 대한 직교 액세스 제어를 제공하기 위한 시스템을 나타낸다. 시스템은 제 1 그룹 및 제 2 그룹을 포함하고, 각 그룹은 3 명의 사용자들을 포함하며, 여기서, 제 3 사용자는 양 그룹들의 멤버이다. 각 사용자는 그들 자신들을 위한 개인 및 공개 키 쌍을 생성하고, 그 후에, 각 그룹으로부터 각 사용자로의 변환 키가 각 그룹의 관리자에 의해 생성될 수 있다. 비록 "사용자" 가 이들 키들을 생성하지만, 실제로는, 실제의 키 생성은 주어진 사용자에 의해 소유/제어되는 하나 이상의 디바이스들 중 하나와 같은 디바이스 상에서 발생한다. 각 사용자는 또한 하나 이상의 디바이스들을 가질 수 있고, 여기서, 각 사용자의 디바이스들은 디바이스들의 그룹의 부분일 수 있다. 그래서, 실례로, 디바이스의 사용자에 의해 각각 관리되는, 도시된 다섯 그룹들의 디바이스들이 존재한다. 각 디바이스는 그 자신의 공개 및 개인 키 쌍을 생성할 수 있다.
일 실시형태에서, (그룹들, 사용자들, 및/또는 디바이스들에 대한) 개인 키들의 하나 이상은 암호화되고 서버 상에 저장될 수 있다.
도 25 및 도 26 은 또 다른 실시형태를 예시하고, 여기서, 공개 및 개인 키들을 형성하기 위한 동작들은 사용자와 서버 사이에서 나누어질 수 있다 (또한 증강된 키 형성으로서 알려짐). 실례로, 공개 및 개인 키 쌍들을 생성할 때, 양 사용자 및 서버는 별개의 키 쌍들을 생성할 수 있을 것이고, 그 다음, 사용자는 공개 키의 그것의 버전을 서버에 제공할 수 있으며, 이는 그것의 버전으로부터의 증강된 공개 키 및 공개 키의 사용자의 버전을 형성한다. 사용자는 개인 키의 서버의 버전에 대한 액세스를 가지지 않고, 서버는 개인 키의 사용자의 버전에 대한 액세스를 가지지 않기 때문에, 사용자도 서버도 증강된 공개 키에 대해 암호화된 데이터를 액세스할 수 없다 (어느 쪽의 엔티티도 증강된 공개 키에 대해 암호화된 임의의 데이터를 해독하기 위해 필요한, 증강된 개인 키를 형성하기 위해 개인 키의 양 버전들을 액세스할 수 없기 때문이다). 유사하게, 사용자 및 서버는 증강된 변환 키들을 형성하기 위해 협동하여 작업할 수 있다; 사용자는 그것의 개인 키를 사용하여 변환 키를 생성하고, 그 변환 키를 서버에 전송한다. 서버는 변환 키의 컴포넌트를 수정하기 위해 사용자의 개인 키의 그것의 버전을 사용하고, 증강된 변환 키를 형성한다. 이와 같이, 사용자도 서버도 단독으로는 이들 증강된 변환 키들을 형성할 수 없다.
도 20 은 사용자가 사용자들의 그룹으로부터 제거되는 것의 일 실시형태를 나타낸다. 오직 그룹의 관리자만이 그룹에서의 사용자의 멤버십을 철회할 수 있다. 이것은 그룹으로부터 사용자로의 변환 키를 삭제함으로써 행해진다. 변환 키가 서버 상에 저장되는 경우에, 관리자는, 관리자의 디바이스들 중 하나를 통해, 서버로 하여금 그룹으로부터 제거되고 있는 사용자로의 변환 키를 삭제하도록 지시할 수도 있다. 보다 구체적으로, 관리자는 키 서버가 그룹으로부터 사용자를 제거하도록 요청할 수 있다. 키 서버는, 요청하는 사용자가 그룹의 관리자인지를 확인할 수 있고, 그렇다면, 그럽에 대한 그룹-대-사용자 변환 키를 찾을 수 있고, 발견되는 경우에, 이 그룹-대-사용자 변환 키를 삭제할 수 있다.
특정 문서에 대한 액세스를 철회하기 위해서, 문서 액세스를 철회하기를 시도하는 사용자에 속하는 디바이스 상에서의 암호화 클라이언트는 문서 ID, 현재 사용자 ID, 및 액세스가 철회되고 있는 사용자 또는 그룹의 ID 를 키 서버에 패스할 수 있다. 키 서버는, 액세스가 철회되고 있는 사용자 또는 그룹의 공개 키에 대해 암호화된 임의의 암호화된 문서 암호화 키 (EDEK) 를 발견함으로써, 요청하는 사용자가 문서에 대한 액세스를 가지는지를 확인할 수 있다. 이러한 EDEK 가 발견되는 경우에, 키 서버는 그 EDEK 를 삭제한다.
암호화된 문서를 업데이트하기 위해, 암호화 클라이언트는 문서로부터 사용자로의 경로에 대해 검색함으로써 현재 사용자가 문서에 대한 액세스를 갖는지를 검증할 수 있다. 이것이 존재하는 경우에, 암호화 클라이언트는 새로운 DEK 를 랜덤으로 선택하고, 그것을 문서의 새로운/수정된 버전을 대칭적으로 암호화하기 위해 사용한다. 암호화 클라이언트는 그 다음, 키 서버로부터 EDEK 들의 리스트를 요청한다. 각각의 EDEK 에 대해, 그것은 대응하는 공개 키를 취출하고, 그것은 그 공개 키를 사용하여 새로운 DEK 를 암호화 (예컨대, Encrypt 프로세스를 호출) 한다. 그것은 문서 및 EDEK 들의 대체 리스트를 키 서버에 저장을 위해 전송하고, 그것은 암호화된 문서를 저장을 위해 문서를 수정하는 애플리케이션에 반환한다.
이 문서 업데이트 프로세스는 문서가 업데이트되는 매 시간마다 DEK 의 회전을 수반하고, 그에 의해 그렇지 않은 경우에 가능할 수도 있는 허가받지 않은 액세스를 방지한다. 실례로, 사용자가 일부 시점에서 문서에 대한 액세스를 승인받았고, 문서를 해독하기 위해 시스템을 사용하였으며, 클라이언트로부터 DEK 를 캡처한 경우에, 그녀는 이 DEK 를 보유할 수 있을 것이다. 미래의 시간에서, 그녀의 액세스가 철회된 후에, 그녀가 문서의 업데이트된 버전에 대해 암호화된 데이터를 취출할 수 있는 경우에, 그녀는 그것을 해독하기 위해서 바로 DEK 를 사용할 수 있을 것이다. 문서가 업데이트되는 각 시간에서 DEK 를 회전시킴으로써, 그녀는 그녀가 액세스가 승인되었던 문서의 버전들을 해독하는 것에만 제한된다.
도 21 은 디바이스가 사용자에 의해 관리되는 디바이스들의 그룹으로부터 제거되는 것의 일 실시형태를 나타낸다. 오직 사용자만이 그룹으로부터 디바이스들을 추가하고 제거할 수 있다. 제거는 그 디바이스에 ? 사용자-대-디바이스 변환 키를 삭제하는 것을 수반한다. 달리 말하면, 디바이스를 제거하는 것은 디바이스가 사용자의 데이터를 액세스하기 위한 허가를 철회하는 것을 의미한다. 사용자가 액세스를 철회하기로 결정하는 경우에, 그녀는 철회 요청을 수행하기 위해 다른 허가된 디바이스를 사용한다. 철회 요청은 키 서버에 전송될 수 있고, 이는 그것이 사용자-대-디바이스 변환 키를 제거하게 하고, 그에 의해, 디바이스의 제거를 가져오고, 그 디바이스가 그것의 사용자에 대해 암호화된 임의의 데이터/문서들을 해독하는 것을 막는다. 이러한 방식으로, 관리자는 그 자신의 디바이스 또는 다른 사용자에 속하는 디바이스 중 하나를 제거할 수 있다.
도 22 는 데이터가 어떻게 사용자에 대해 암호화될 수 있는지를 예시한다. 즉, 사용자의 공개 키는 데이터를 암호화하여 사용자가 그의/그녀의 개인 키를 사용하여 열 수 있는 암호문을 형성하는데 사용될 수 있다. 도시된 바와 같이, 데이터가 그룹을 통해서보다는 직접 사용자에 대해 암호화되는 경우에, 아무런 변환 키도 필요하거나 사용되지 않는다.
도 23 은 다수의 그룹들 및 사용자들에 대해 데이터를 암호화하기 위한 방법을 나타낸다. 데이터는, 제 1 암호문 (또는 암호화된 데이터) 을 형성하기 위해 그룹 1 의 공개 키를, 제 2 암호문을 형성하기 위해 그룹 2 의 공개 키를, 제 3 암호문을 형성하기 위해 사용자 1 의 공개 키를, 그리고, 제 4 암호문을 형성하기 위해 사용자 2 의 공개 키를 사용하여 암호화될 수 있다.
도 24 는 도 23 으로부터의 제 1 암호문 (즉, 사용자가 멤버인 그룹에 대해 암호화된 또는 그 그룹과 공유된 데이터) 을 해독하기 위한 방법을 나타낸다. 이 예에서, 사용자 3 은 제 1 암호문에 대한 액세스를 요청하고, 서버는 그 제 1 암호문을 제 1 변환된 암호문으로 바꾸기 위해 그룹 1 로부터 사용자 3 으로의 변환 키를 사용한다. 사용자는 예를 들어 그것의 2 개의 디바이스들 중의 제 2 디바이스, 디바이스 B 를 통해 이 요청을 만들고 있다. 따라서, 데이터는 사용자로 패스될 뿐만 아니라 사용자로부터 디바이스 B 로도 패스된다. 이 제 2 홉을 실시하기 위해, 제 1 변환된 암호문은 사용자 3 대 디바이스 B 에 대해 변환 키를 사용하여 이중-변환된 암호문으로 추가로 변환된다. 디바이스 B 는 그 다음, 데이터를 해독하고 액세스하기 위해 그것의 개인 키를 이중-변환된 암호문에 적용할 수 있다.
도 27 은 도 23 으로부터의 제 4 암호문 (즉, 그룹 멤버십에 관계 없이 직접 사용자에 대해 암호화되거나 사용자와 공유되는 데이터) 을 해독하기 위한 방법을 나타낸다. 이 예에서, 사용자 2 는 제 4 암호문에 대한 액세스를 요청하고, 서버는 그 제 4 암호문을 변환된 암호문으로 변환하기 위해 사용자 2 로부터 제 1 디바이스 (예컨대, 디바이스 A) 로의 변환 키를 사용한다. 디바이스 A 는 그 다음, 그것의 개인 키를 변환된 암호문에 적용하여 데이터를 해독하고 액세스할 수 있다 (미도시).
도 28 은 고객 데이터에 대해 액세스가 승인되는 회사에 대한 고객 데이터의 멀티-홉 변환 암호화를 위한 방법을 나타낸다. (예컨대, 2 개의 비제한적 예를 들자면, 고객에 의해 또는 서비스 담당자에 의해) 고객의 데이터가 처음 캡처될 때, 사용자의 데이터는 사용자의 공개 키에 대해 암호화될 수 있다. 고객이 그녀의 데이터를 사용하도록하는 허가를 회사에 승인할 때, 그녀는 그녀의 개인 키로부터 회사를 대표하는 그룹의 공개 키로의 변환 키를 생성할 수 있다. 회사가 고객의 개인 데이터에 대한 타인의 액세스를 승인하기를 희망하는 경우, 회사의 관리자들은 고객의 개인 데이터에 대한 액세스를 승인받은 (즉, 그룹에 멤버들로서 추가된) 각 사용자에 대해 그룹-대-사용자 변환 키들의 생성을 통해 액세스를 승인할 수 있다. 회사 그룹의 멤버들인 이들 사용자들은 사용자-대-디바이스 변환 키들을 생성함으로써 고객의 개인 데이터를 액세스하도록 그들의 디바이스들의 하나 이상에 대해 허가할 수 있다. 이들 사용자들 중 하나 (예컨대, 허가된 사용자) 가 고객의 개인 데이터를 액세스하기 위해 허가된 디바이스 (예컨대, 그들의 디바이스들 중 하나) 를 사용하는 경우에, 데이터는 고객의 키로부터 그룹의 키로 변환되고, 그 다음, 사용자의 키로 변환되며, 그 다음, 디바이스의 키로 변환된다. 결과는 삼중-변환된 암호문 (triply-transformed ciphertext) 이라 불리고, 고객의 개인 데이터를 복원하기 위해 그것의 개인 키를 사용하는 사용자의 디바이스에 전송될 수 있다. 이것은 그룹 기반 멀티-홉 변환 암호화가 종래 기술에서는 가능하지 않았던 특징들을 가능하게 하는 많은 사용 경우들 중 단지 하나이다.
도 29 는 도 28 의 방법의 추가적인 상세를 나타낸다. 여기서 고객의 데이터가 디바이스 상에서 실행되는 애플리케이션에 의해 수집될 수 있고, 디바이스는 그 디바이스가 고객의 데이터를 저장하기 전에 고객의 데이터를 암호화하기 위해 고객의 공개 키를 사용할 수 있다. 고객이 이 데이터를 재검토하기를 원하는 경우에, 그녀는 암호화된 데이터를 요청하고 그것을 해독하기 위해 그녀의 개인 키를 사용할 수 있다 (도 30 참조). 사용자가 그녀의 개인 데이터를 사용하도록 회사에 대해 허가를 승인하는 경우에, 그녀는 그녀의 개인 키 및 회사의 공개 키를 사용하여, 그녀의 사용자로부터 회사를 대표하는 그룹으로의 변환 키를 생성한다 (도 31 참조). 이 변환 키는 그 다음에 서버에 저장될 수 있다. 변환 키는 회사 그룹의 멤버들인 사용자들로 하여금 사용자의 암호화된 데이터를 변환하고 그 이후에 그것을 해독하도록 허용한다.
도 32 는 고객이 잊혀질 권리를 청하는 것의 일 실시형태를 나타낸다. 그녀는 그녀의 사용자로부터 회사의 그룹으로의 변환 키를 삭제하도록 서버에 지시할 수 있다. 변환 키 없이, 회사 내의 모든 이는 데이터가 저장된 곳 (예컨대, 애플리케이션 서버들 상에, 로그들에, 도는 백업 매체들 상에) 에 관계 없이 그녀의 데이터를 더 이상 액세스할 수 없다. 달리 말하면, 잊혀질 권리는 데이터를 파괴하거나 지워야하는 일 없이 개인 데이터에 대한 액세스를 사용자가 철회하도록 허용한다. 이 잊혀질 권리는 추가로 도 33 에서 예시된다.
PRE 알고리즘의 상세들
본원에 개시된 시스템들 및 방법들은 Cai 및 Liu (Y. Cai 및 X. Liu. 2014. A Multi-use CCA-secure Proxy Re-encryption Scheme. IEEE 12th International Conference on Dependable, Autonomic, and Secure Computing 7 (2014)) 에서 기술된 PRE 알고리즘의 수정된 버전들을 포함한다. 실례로, 이 개시물은 다중 홉들에 대한 모든 변환들을 동시에 수행하는 단일 프록시를 사용한다. 또한, Wang 알고리즘 (H. Wang 및 Z. Cao. 2009. A Fully Secure Unidirectional and Multi-use Proxy Re- encryption Scheme. ACM CCS Poster Session (2009)) 은 비교적 비싼 페어링을 이용하여 각 홉에 대한 인증 코드를 계산하지만, 이 개시물의 암호화 및 변환 암호화 모듈들은 텍스트의 단순한 해시를 계산한 다음 그 해시를 별도의 서명 키를 사용하여 훨씬 더 빠른 Ed25519 시그니처로 서명함으로써, 전체 암호문 또는 변환된 암호문을 서명한다.
다음과 같은 알고리즘들은 Cai 및 Liu PRE 스킴의 본원에 개시된 수정된 버전들을 포함한다 (이 개시물은 ReKeyGen 보다는 TransformKeyGen 를 그리고 ReEncrypt 보다는 Transform 을 사용함에 유의한다).
Figure pct00004
이 공개 파라미터들이라고 하고, 여기서:
Figure pct00005
k 는 키들을 저장하기 위해 필요한 비트들의 수이다;
Figure pct00006
p 는 프라임이다;
Figure pct00007
G1 및 GT 는 G1 이 가산적으로 쓰여지고 GT 가 곱셈으로쓰여진 아벨 그룹들이다 (전체에 걸쳐서, 유리는 G1 의 엘리먼트들을 표시하기 위해서 굵은 글씨를 사용할 것이다).
Figure pct00008
e: G1 × G1 → GT 는 쌍선형 페어링이다;
Figure pct00009
g 는 G1 의 임의의 정해진 비제로 엘리먼트이고,
Figure pct00010
g 1 g 에 의해 생성된 사이클릭 서브그룹에 놓이지 않는 G1 의 랜덤 엘리먼트이다.
Figure pct00011
SHA256:{0,1}* → 256-비트 해시 그리고 H 2 : GT → G1 은 2 개의 일방향 충돌 저항성 해시 함수들이다.
Figure pct00012
Sig = (G,S,V) 는 강하게 위조불가능한 시그니처 스팀이고, 키 생성 알고리즘 G, 서명 알고리즘 S, 및 검증 알고리즘 V 를 포함한다.
Figure pct00013
: 공개/개인 키 쌍을 생성한다.
Figure pct00014
비밀 키
Figure pct00015
Figure pct00016
공개 키
Figure pct00017
Figure pct00018
이 변환 키 생성 프로세스는 사용자 i (위임자) 로부터 사용자 j (피위임자) 로의 변환 키를 생성한다. 그 프로세스는 위임자의 개인 키 (sk i ), 피위임자의 공개 키 (pk j ), 및 위임자의 서명 키 쌍 (spk i , ssk i ) 을 사용하고, 그것은 5 개의 값들의 한벌인 변환 키
Figure pct00019
를 생성한다.
Figure pct00020
변환 키 쌍
Figure pct00021
Figure pct00022
변환 값
Figure pct00023
Figure pct00024
암호화된 변환 값
Figure pct00025
Figure pct00026
시그니처
Figure pct00027
Figure pct00028
변환 포인트
Figure pct00029
Figure pct00030
변환 키
Figure pct00031
시그니처가 tep 를 포함하지 않음에 유의한다. 변환 프로세스에서, 이 값은 변환 블록으로 카피되지 않고, 따라서, 그것을 시그니처로부터 생략하는 것은 원하는 경우 시그니처가 시그니처가 변환 블록으로 카피되고 검증되도록 허용한다. 변환 키 tk i →j 는 보안 채널을 통해 키 서버에 전송될 수 있다.
Figure pct00032
j 의 공개 키 (pk j ) 및 전송자 i 의 서명 키 쌍 (spk i , ssk i ) 이 주어지면 피위임자 j 에 대한 메시지 m ∈ GT 를 암호화한다. 5 개의 값들의 한벌인 암호문 C j 를 생성한다:
Figure pct00033
단명 키 쌍
Figure pct00034
Figure pct00035
암호화된 메시지
Figure pct00036
Figure pct00037
인증 해시
Figure pct00038
Figure pct00039
시그니처
Figure pct00040
Figure pct00041
암호문
Figure pct00042
Figure pct00043
-또는-
Figure pct00044
그들이 적용되어야만 하는 순서로 제공된 하나 이상의 변환 키들의 리스트 (tk), 및 키 서버의 서명 키 쌍 (spk , ssk) 이 주어지면, i(C i ) 에 대해 암호화된 암호문을 j(C j ) 에 대해 암호화된 암호문으로 변환한다. (이 연산은 클라이언트보다는 서버에 의해 수행된다.)
먼저, 암호화된 메시지에 대해 그리고 변환 키들의 각각에 대해 시그니처를 검증한다:
Figure pct00045
어떤 파싱 또는 검증 단계가 실패하는 경우에 ⊥ 반환
Figure pct00046
C i
Figure pct00047
로 파싱
Figure pct00048
Figure pct00049
를 검증
Figure pct00050
tk
Figure pct00051
로 파싱
Figure pct00052
Figure pct00053
를 검증
리스트로부터 제 1 변환을 적용:
Figure pct00054
랜덤 키 쌍
Figure pct00055
Figure pct00056
랜덤 변환 값
Figure pct00057
Figure pct00058
랜덤 암호화된 변환 값
Figure pct00059
Figure pct00060
변환된 암호화된 메시지
Figure pct00061
Figure pct00062
수정된 암호문
Figure pct00063
Figure pct00064
변환 블록
Figure pct00065
Figure pct00066
변환된 암호문
Figure pct00067
tk 에 추가적인 변환 키들이 존재하는 경우, 그것들을 차례대로 프로세싱.
Figure pct00068
C j 의 마지막 변환 블록을
Figure pct00069
으로 파싱
Figure pct00070
리스트 tk 로부터
Figure pct00071
로의 다음 변환 키를 파싱
Figure pct00072
랜덤 키 쌍
Figure pct00073
Figure pct00074
랜덤 변환 값
Figure pct00075
Figure pct00076
랜덤 암호화된 변환 값
Figure pct00077
Figure pct00078
변환된 암호화된 변환 값
Figure pct00079
Figure pct00080
변환된 랜덤 암호화된 변환 값
Figure pct00081
Figure pct00082
마지막 변환 블록에서의 eK prev reK prev eK 'reK' 으로 대체
Figure pct00083
변환 블록
Figure pct00084
Figure pct00085
C j TB 를 첨부
요약하면, (처음 후의) 각각의 변환에 대해, 이전 변환으로부터의 마지막 eKreK 값들이 수정되고, 그 다음, 새로운 변환 키의 처음 2 개의 엘리먼트들 및 새로운 rpkreK 가 첨부된다. 원래의 암호문 C i 로부터의 암호화된 메시지 em 는 제 1 변환에서 오직 한번 수정됨에 유의한다. 그 후에, 그것은 다시 변경되지 않는다.
모든 변환이 적용된 후에, 전체 변환된 암호문이 서명된다.
Figure pct00086
시그니처
Figure pct00087
Figure pct00088
Figure pct00089
Figure pct00090
수신자 i 의 개인 키 (sk i ) 가 주어지면 서명된 암호문 (C j ) 을 해독한다. 암호화된 원래 메시지 m 을 반환한다. 상기와 같이, 우리는 임의의 파싱 또는 검증 단계가 실패하는 경우에 ⊥ 를 반환한다.
먼저, 암호문에 대해 시그니처를 확인한다:
Figure pct00091
SC 의 마지막 2 개의 엘리먼트들 spksig 를 추출
Figure pct00092
C 를 추출, C j 의 전부는 spk 에 선행
Figure pct00093
Figure pct00094
를 검증
제 1 레벨 암호문을 해독하기 위해:
Figure pct00095
C
Figure pct00096
로 파싱하고
Figure pct00097
Figure pct00098
여기서, C 는 아무런 변환 블록들도 포함하지 않는다.
변한된 암호문을 해독하기 위해:
Figure pct00099
C
Figure pct00100
로 파싱
Figure pct00101
C'
Figure pct00102
로 파싱
Figure pct00103
TB ( l )
Figure pct00104
로 파싱
Figure pct00105
[1,l-1] 에서의 각 정수 k 에 대해, TB' ( k )
Figure pct00106
로 파싱
Figure pct00107
Figure pct00108
Figure pct00109
Figure pct00110
Figure pct00111
l-2 로부터 0 까지의 각각의 정수 k 에 대해
Figure pct00112
Figure pct00113
Figure pct00114
Figure pct00115
Figure pct00116
Figure pct00117
마지막으로,
Figure pct00118
을 검증한다.
"프록시 바이패스" 라고 불리는 문제를 해결하기 위해 Cai 및 Liu 에 의해 원래의 알고리즘들에 각 변환에서의 랜덤 엘리먼트들이 도입되었다. 그들 값들 없이, 사용자가 변환된 메시지를 해독할 때, 그녀는 그 메시지에 적용되었던 변환 키들의 각각으로부터 변환 값 K 를 복원한다. 이것은, 예를 들어, Alice 가 Bob 에 대해 메시지를 변환하였고, Bob 이 Carol 에 대해 메시지를 변환하였으며, Carol 이 Eve 에 대해 메시지를 변환한 경우에, Eve 가 그 메시지를 해독했을 때, 그녀는 변환 키들의 전부로부터의 K 값들을 가질 것이고, 그녀가 후속하여 Alice 로부터 Bob 으로 변환되었던 메시지를 가로챈 경우에, 그녀는 그 메시지를 해독하기 위해 변환 키로부터의 K 를 사용할 수 있을 것이다. 변환 프로세스에서의 랜덤 엘리먼트들의 도입은 이를 방지하지 못하고, 하지만 K 값들 그 자신들만으로는 변환된 메시지를 해독하기에 충분하지 않다.
키 증강 알고리즘의 상세들
이 개시물은 사용자들과 연관된 그룹들 또는 디바이스들과 연관된 사용자들의 액세스를 철회하기 위한 능력을 개선하기 위해 그룹들 및 사용자들의 공개 키들을 증강하는 방법을 기술한다.
다음의 알고리즘들은 본원에 개시된 키 증강 방법을 포함한다.
디바이스가 그룹 또는 사용자에 대한 공개/개인 키 쌍을 생성하고 공개 키를 키 서버에 전송한 후에, 키 서버는 다음과 같은 알고리즘을 실행한다:
Figure pct00119
Figure pct00120
키 서버 키 쌍
Figure pct00121
Figure pct00122
증강된 공개 키
Figure pct00123
여기서 공개 키들의 추가는 단순히 타원 곡선 상의 2 개의 포인트들의 추가이다. 결과적인 공개 키는 그룹의 공개 키로서 저장되고 분배되며, 그룹에 대해 암호화된 모든 데이터는 이 공개 키에 대해 암호화된다. 키 서버는 보안 스토리지에 그것이 생성한 그룹 개인 키 sk ks 를 보유한다.
계산에서의 어느 당사자도 (디바이스 또는 서버), 각각이 각각이 그 자신의 비밀 키, 컴포넌트 공개 키, 및 결과적인 증강된 공개 키를 알고 있음에도 불구하고, 다른 당사자의 비밀 키를 결정할 수 없다.
Figure pct00124
이기 때문에, 어느 일방의 당사자는 증강된 공개 키로부터 그 자신의 공개 키를 차감함으로써 다른 당사자의 공개 키를 복원할 수 있다. 하지만 다른 당사자의 비밀 키를 복원하는 것은 타원 곡선 이산 로그리즘 문제 (ECDLP) 를 푸는 것을 필요로 한다.
증강 후에, 그룹의 공개 키에 대해 암호화되는 임의의 데이터는 더 이상 그룹의 개인 키에 의해 해독될 수 없다. 해독은 디바이스 상에서 생성된 개인 키 및 키 서버 상에서 생성된 개인 키 양자의 소유를 필요로 한다.
키 서버의 개인 키를 공유함이 없이 디바이스 상에서 메시지의 해독을 허용하기 위해, 그룹으로부터 사용자로의 각각의 변환 키는 또한 증강된다. 디바이스 상에서 생성되는 변환 키는 증강되지 않은 그룹 개인 키로부터 증강된 사용자 공개 키로 변환되고, 그래서, 키 서버는, 그룹 공개 키를 증강시키기 위해 그것이 사용한 동일한 서버-생성된 개인 키를 사용하여, 그룹으로부터 사용자로의 변환 키를 증강시키기 위해서 다음과 같은 알고리즘을 사용한다.
Figure pct00125
디바이스 상에서 생성된 증강된 변환 키 tk d 및 그룹에 대한 서버-생성된 개인 키 sk ks 가 주어지면,
Figure pct00126
tk d
Figure pct00127
로 파싱
Figure pct00128
Figure pct00129
를 검증
Figure pct00130
증강된 변환 포인트
Figure pct00131
Figure pct00132
증강된 변환 키
Figure pct00133
변환 키의 증강은 변환 키가 키 서버에 의해 저장되기 전에 수행된다. 증강 프로세스는 그룹 개인 키에 관한 임의의 추가적인 정보에 대한 액세를 키 서버에게 제공하지 않고, 그래서, 그것은 키 서버가 새로운 변환 키들을 생성하거나 파일들을 해독하도록 허용하지 않는다. 하지만, 그룹 개인 키에 대한 액세스를 갖는 그룹 관리자들은 오직 부분적 변환 키들만을 생성할 수 있고, 이는 키 서버에 의한 협동 없이는 임의의 사용자에 대해 데이터를 변환하기 위해 사용될 수 없다.
이 개시물은 단일 서버 인스턴스화를 설명하였다. 하지만, 다른 실시형태들에서, 별도의 공개 키 관리 시스템이 사용될 수 있을 것이다. 실례로, 본원에 개시된 시스템들은 기존의 애플리케이션 내부에서, 하지만 디렉토리 서버와 같이 별도의 사용자 스토어 (예컨대, 기존의 사용자 스토어) 에 저장된 공개 키들과 함께, 사용될 수 있을 것이다.
나타낸 바와 같이, 단방향성이고, 비-상호작용성이며, 비-타동적이고, 충돌 안전성인 PRE 스킴은 사용자들이 서버에 데이터 보안을 유지하도록 맡길 필요가 없는 엔드-투-엔드 암호화된 시스템에 대한 견고한 기초이다. 멀티-홉 스킴은 시스템으로 하여금 그룹들로부터 사용자들로의 그리고 사용자들로부터 디바이스들로의 위임을 제공하도록 허용한다.
본원에 설명된 시스템들 및 방법들은 본원에 설명된 특정 물리적 디바이스들에 부가하여 컴퓨터 시스템에서 구현될 수 있다. 도 34 는 컴퓨터 시스템 (3400) 의 일 실시형태의 도식적인 표현을 도시하며, 컴퓨터 시스템 (1300) 내에서 명령들의 세트는 디바이스가 본 개시의 양태들 및/또는 방법들 중 임의의 하나 이상을 수행하거나 실행하게 하기 위해 실행할 수 있다. 이 개시물 전반에 걸쳐 언급된 사용자 디바이스들은 컴퓨터 시스템 (3400) 의 하나의 구현이다. 키 서버는 컴퓨터 시스템 (3400) 의 또 다른 구현이다. 도 34 에서의 컴포넌트들은 오직 예들일 뿐이고, 임의의 하드웨어, 소프트웨어, 펌웨어, 내장된 로직 컴포넌트, 또는 본 개시물의 특정 실시형태들을 구현하는 2 이상의 그러한 컴포넌트들의 조합의 사용 또는 기능성의 범위를 제한하지 않는다. 예시된 컴포넌트들의 일부 또는 전부는 컴퓨터 시스템 (3400) 의 부분일 수 있다. 예를 들어, 컴퓨터 시스템 (3400) 은 바로 2 개의 비-제한적인 예들로, 범용 컴퓨터 (예컨대, 랩탑 컴퓨터) 또는 내장형 로직 디바이스 (예컨대, FPGA) 일 수 있다.
컴퓨터 시스템 (3400) 은 2 개의 비-제한적인 예들로, 중앙 프로세싱 유닛 (CPU) 또는 FPGA 와 같은 적어도 프로세서 (3401) 를 포함한다. 컴퓨터 시스템 (3400) 은 또한, 양자가 버스 (3440) 를 통해 서로 그리고 다른 컴포넌트들과 통신하는, 메모리 (3403) 및 스토리지 (3408) 를 포함할 수도 있다. 버스 (3440) 는 또한, 디스플레이 (3432), (예컨대, 키패드, 키보드, 마우스, 스타일러스, 등을 포함할 수도 있는) 하나 이상의 입력 디바이스들 (3433), 하나 이상의 출력 디바이스들 (3434), 하나 이상의 저장 디바이스들 (3435), 및 다양한 비-일시적인 유형의 컴퓨터 판독가능 저장 매체 (3436) 를 서로, 그리고 프로세서 (3401), 메모리 (3403), 및 스토리지 (3408) 와 링크할 수도 있다. 이들 엘리먼트들 모두는 직접 또는 하나 이상의 인터페이스들 또는 어댑터들을 통해 버스 (3440) 에 인터페이싱할 수도 있다. 예를 들어, 다양한 비-일시적인 유형의 컴퓨터 판독가능 저장 매체 (3436) 는 저장 매체 인터페이스 (3426) 를 통해 버스 (3440) 와 인터페이싱할 수 있다. 컴퓨터 시스템 (3400) 은 하나 이상의 집적 회로들 (IC들), 인쇄 회로 기판들 (PCB들), 모바일 핸드헬드 디바이스들 (예컨대 모바일 텔레폰들 또는 PDA들), 랩톱 또는 노트북 컴퓨터들, 분산된 컴퓨터 시스템들, 컴퓨팅 그리드들, 또는 서버들을 포함하지만 이에 제한되지 않는 임의의 적절한 물리적 형태를 가질 수도 있다.
프로세서(들) (3401) (또는 중앙 프로세싱 유닛(들) (CPU(들))) 은 명령들, 데이터, 또는 컴퓨터 어드레스들의 일시적인 로컬 저장을 위해 캐시 메모리 유닛 (3402) 을 옵션적으로 포함한다. 프로세서(들) (3401) 은 적어도 하나의 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체 상에 저장된 컴퓨터 판독가능 명령들의 실행을 보조하도록 구성된다. 컴퓨터 시스템 (3400) 은 하나 이상의 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체, 예를 들어 메모리 (3403), 스토리지 (3408), 저장 디바이스들 (3435), 및/또는 저장 매체 (3436) (예컨대, 판독 전용 메모리 (ROM)) 에 수록된 소프트웨어를 실행하는 프로세서(들) (3401) 의 결과로서 기능성을 제공할 수도 있다. 실례로, 도 2 내지 도 6 에서의 방법 (200, 300, 400, 500, 및 600) 은 하나 이상의 비일시적, 유형의 컴퓨터 판독가능 저장 매체들에 수록될 수도 있다. 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체는 방법들 (200, 300, 400, 500, 및 600) 과 같은 특정 실시형태들을 구현하는 소프트웨어를 저장할 수도 있고, 프로세서(들) (3401) 는 소프트웨어를 실행할 수도 있다. 메모리 (3403) 는 (대용량 저장 디바이스(들) (3435, 3436) 와 같은) 하나 이상의 다른 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체로부터 또는 네트워크 인터페이스 (3420) 와 같은 적절한 인터페이스를 통한 다른 소스들로부터 소프트웨어를 판독할 수도 있다. 사용자 디바이스들은 키 서버일 수도 있는 네트워크 인터페이스 (3420) 의 실시형태들을 포함할 수도 있다. 소프트웨어는 프로세서(들) (3401) 이 본원에 설명되거나 도시된 하나 이상의 프로세스들 또는 하나 이상의 프로세스들의 하나 이상의 단계들을 실행하게할 수도 있다. 그러한 프로세스들 또는 단계들을 실행하는 것은 메모리 (3403) 에 저장된 데이터 구조들을 정의하는 것 및 소프트웨어에 의해 지시되는 것과 같은 데이터 구조들을 변경하는 것을 포함할 수도 있다. 일부 실시형태들에서, FPGA 는 이 개시물에서 설명된 바와 같이 (예컨대, 방법들 (200, 300, 400, 500, 및 600)) 기능성을 실행하기 위한 명령들을 저장할 수 있다. 다른 실시형태들에서, 펌웨어는 이 개시물에서 설명된 바와 같이 (예컨대, 방법들 (200, 300, 400, 500, 및 600)) 기능성을 실행하기 위한 명령들을 저장할 수 있다.
메모리 (3403) 는 랜덤 액세스 메모리 컴포넌트 (예컨대, RAM (3404)) (예컨대, 정적 RAM "SRAM", 동적 RAM "DRAM", 등), 판독 전용 컴포넌트 (예컨대, ROM (3405)), 및 이들의 임의의 조합을 포함하지만, 이에 제한되지 않는 다양한 컴포넌트들 (예컨대, 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체) 을 포함할 수도 있다. ROM (3405) 은 데이터 및 명령들을 일방향으로 프로세서(들) (3401) 에 통신하도록 동작할 수도 있고, RAM (3404) 은 데이터 및 명령들을 프로세서(들) (3401) 과 양방향으로 통신하도록 동작할 수도 있다. ROM (3405) 및 RAM (3404) 은 이하 설명되는 임의의 적절한 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체를 포함할 수도 있다. 일부 경우들에서, ROM (3405) 및 RAM (3404) 은 방법들 (200, 300, 400, 500, 및 600) 을 실행하기 위한 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체를 포함한다. 일 예에서, 예컨대 가동 동안 컴퓨터 시스템 (3400) 내의 엘리먼트들 간에 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는, 기본 입력/출력 시스템 (3406) (BIOS) 이 메모리 (3403) 에 저장될 수도 있다.
고정된 스토리지 (3408) 는 옵션으로 저장 제어 유닛 (3407) 을 통해, 프로세서(들) (3401) 에 양방향으로 접속된다. 고정된 스토리지 (3408) 는 추가의 데이터 저장 용량을 제공하고, 본원에 설명된 임의의 적절한 비-일시적인, 유형의 컴퓨터 판독가능 매체를 또한 포함할 수도 있다. 스토리지 (3408) 는 오퍼레이팅 시스템 (3409), EXEC들 (3410) (실행가능물들), 데이터 (3411), API 애플리케이션들 (3412) (애플리케이션 프로그램들), 등등을 저장하는데 사용될 수도 있다. 실례로, 스토리지 (3408) 는 이 개시물 전반에 걸친 키 서버 및 키 서버에 대해 설명된 공개 키들, 개인 키들, 및 변환 키들의 저장을 위해 구현될 수 있을 것이다. 항상은 아니지만 종종, 스토리지 (3408) 는 프라이머리 스토리지 (예컨대, 메모리 (3403)) 보다 느린 (하드 디스크와 같은) 아이덴티티 저장 매체이다. 스토리지 (3408) 는 또한, 광학 디스크 드라이브, 솔리드-스테이트 메모리 디바이스 (예컨대, 플래시-기반 시스템들), 또는 상기의 임의의 조합을 포함할 수 있다. 스토리지 (3408) 에서의 정보는 적절한 경우에, 메모리 (3403) 에 가상 메모리로서 통합될 수도 있다.
일 예에서, 저장 디바이스(들) (3435) 은 저장 디바이스 인터페이스 (3425) 를 통해 (예컨대, (도시되지 않은) 외부 포트 커넥터를 통해) 컴퓨터 시스템 (3400) 과 탈착가능하게 인터페이싱될 수도 있다. 특히, 저장 디바이스(들) (3435) 및 연관된 머신-판독가능 매체는 머신 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 및/또는 컴퓨터 시스템 (3400) 에 대한 다른 데이터의 휘발성 및/또는 비휘발성 저장을 제공할 수도 있다. 일 예에서, 소프트웨어는 저장 디바이스(들) (3435) 상의 머신 판독가능 매체 내에 완전히 또는 부분적으로 상주할 수도 있다. 다른 예에서, 소프트웨어는 프로세서(들) (3401) 내에 완전히 또는 부분적으로 상주할 수도 있다.
버스 (3440) 는 매우 다양한 서브시스템들을 접속한다. 본 명세서에서, 버스에 대한 참조는 적절한 경우에, 공통의 기능을 서빙하는 하나 이상의 디지털 신호 라인들을 함축할 수도 있다. 버스 (3440) 는 임의의 다양한 버스 아키텍처들을 사용하는, 메모리 버스, 메모리 제어기, 주변 버스, 로컬 버스, 및 이들의 임의의 조합들을 포함하지만 이에 제한되지 않는 임의의 몇몇 타입의 버스 구조들일 수도 있다. 일 예로서 그리고 제한 없이, 그러한 아키텍처들은 ISA (Industry Standard Architecture) 버스, 강화된 ISA (EISA) 버스, MCA (Micro Channel Architecture) 버스, VLB (Video Electronics Standards Association local bus), PCI (Peripheral Component Interconnect) 버스, PCI-익스프레스 (PCI-X) 버스, AGP (Accelerated Graphics Port) 버스, HTX (HyperTransport) 버스, SATA (serial advanced technology attachment) 버스, 및 이들의 임의의 조합들을 포함한다.
컴퓨터 시스템 (3400) 은 또한 입력 디바이스 (3433) 를 포함할 수도 있다. 일 예에서, 컴퓨터 시스템 (3400) 의 사용자는 커맨드들 및/또는 다른 정보를 입력 디바이스(들) (3433) 을 통해 컴퓨터 시스템 (3400) 내로 입력할 수도 있다. 입력 디바이스(들) (3433) 의 예들은, 영숫자 입력 디바이스 (예컨대, 키보드), 포인팅 디바이스 (예컨대, 마우스 또는 터치패드), 터치패드, 조이스틱, 게임패드, 오디오 입력 디바이스 (예컨대, 마이크로폰, 음성 응답 시스템, 등), 광학 스캐너, 비디오 또는 ? 이미지 캡처 디바이스 (예컨대, 카메라), 및 이들의 임의의 조합들을 포함하지만, 이에 제한되지 않는다. 입력 디바이스(들) (3433) 은 직렬, 병렬, 게임 포트, USB, FIREWIRE, THUNDERBOLT, 또는 상기의 임의의 조합을 포함하지만 이에 제한되지 않는 임의의 다양한 입력 인터페이스들 (3423) (예컨대, 입력 인터페이스 (3423)) 을 통해 버스 (3440) 에 인터페이싱될 수도 있다.
특정 실시형태들에서, 컴퓨터 시스템 (3400) 이 (키 서버 (802) 및 도 8 의 다양한 사용자 디바이스들을 접속하는 네트워크와 같은) 네트워크 (3430) 에 접속될 때, 컴퓨터 시스템 (3400) 은 네트워크 (3430) 에 접속되는, 모바일 디바이스들 및 기업 시스템들과 같은, 다른 디바이스들과 통신할 수도 있다. 컴퓨터 시스템 (3400) 으로/으로부터의 통신물들은 네트워크 인터페이스 (3420) 를 통해 전송될 수도 있다. 예를 들어, 네트워크 인터페이스 (3420) 는 네트워크 (3430) 로부터 (인터넷 프로토콜 (IP) 패킷들과 같은) 하나 이상의 패킷들의 형태로 (다른 디바이스들로부터의 요청들 또는 응답들과 같은) 인입하는 통신들을 수신할 수도 있고, 컴퓨터 시스템 (3400) 은 인입하는 통신들을 프로세싱을 위해 메모리 (3403) 에 저장할 수도 있다. 컴퓨터 시스템 (3400) 은 유사하게, 메모리 (3403) 에서 하나 이상의 패킷들의 형태로 그리고 네트워크 인터페이스 (3420) 로부터 네트워크 (3430) 로 통신되는 (다른 디바이스들로의 요청들 또는 응답들과 같은) 인출하는 통신들을 저장할 수도 있다. 프로세서(들) (3401) 은 프로세싱을 위해 메모리 (3403) 에 저장된 이들 통신 패킷들에 액세스할 수도 있다.
네트워크 인터페이스 (3420) 의 예들은 네트워크 인터페이스 카드, 모뎀, 및 이들의 임의의 조합을 포함하지만, 이들에 제한되는 것은 아니다. 네트워크 (3430) 또는 네트워크 세그먼트 (3430) 의 예들은 광역 네트워크 (WAN) (예컨대, 인터넷, 기업 네트워크), 로컬 영역 네트워크 (LAN) (예컨대, 오피스, 빌딩, 캠퍼스 또는 다른 상대적으로 소형의 지리적 공간과 연관된 네트워크), 전화 네트워크, 2 개의 컴퓨팅 디바이스들 간의 직접적인 접속, 및 이들의 임의의 조합들을 포함하지만, 이에 제한되지 않는다. 네트워크 (3430) 와 같은 네트워크는 유선 및/또는 무선 통신 모드를 채용할 수도 있다. 일반적으로, 임의의 네트워크 토폴로지가 사용될 수도 있다.
정보 및 데이터는 디스플레이 (3432) 를 통해 디스플레이될 수 있다.
디스플레이 (3432) 의 예들은, 액정 디스플레이 (LCD), 유기 액정 디스플레이 (OLED), 음극선관 (CRT), 플라즈마 디스플레이, 및 이들의 임의의 조합들을 포함하지만, 이에 제한되지 않는다. 디스플레이 (3432) 는 프로세서(들) (3401), 메모리 (3403), 및 고정된 스토리지 (3408) 뿐만 아니라, 다른 디바이스들, 예컨대 입력 디바이스(들) (3433) 에 버스 (3440) 를 통해 인터페이싱할 수 있다. 디스플레이 (3432) 는 비디오 인터페이스 (3422) 를 통해 버스 (3440) 에 링크되고, 디스플레이 (3432) 와 버스 (3440) 간의 데이터의 전송은 그래픽 제어 (3421) 를 통해 제어될 수도 있다.
디스플레이 (3432) 에 부가하여, 컴퓨터 시스템 (3400) 은 오디오 스피커, 프린터, 및 이들의 임의의 조합들을 포함하지만 이에 제한되지 않는 하나 이상의 다른 주변 출력 디바이스들 (3434) 을 포함할 수도 있다. 그러한 주변 출력 디바이스들은 출력 인터페이스 (3424) 를 통해 버스 (3440) 에 접속될 수도 있다. 출력 인터페이스 (3424) 의 예들은 직렬 포트, 병렬 접속, USB 포트, FIREWIRE 포트, THUNDERBOLT 포트, 및 이들의 임의의 조합들을 포함하지만, 이에 제한되지 않는다.
부가적으로 또는 대안적으로, 컴퓨터 시스템 (3400) 은 본원에 설명되거나 도시된 하나 이상의 프로세스들 또는 하나 이상의 프로세스들의 하나 이상의 단계들을 실행하기 위해 소프트웨어와 함께 또는 소프트웨어 대신 동작할 수도 있는, 하드와이어링된 또는 그렇지 않으면 회로에 수록된 로직의 결과로서 기능성을 제공할 수도 있다. 이 개시물에서의 소프트웨어에 대한 언급은 로직을 포함할 수도 있고, 로직에 대한 언급은 소프트웨어를 포함할 수도 있다. 추가로, 비-일시적인, 유형의 컴퓨터 판독가능 매체에 대한 참조는 적절한 경우에, 실행을 위한 소프트웨어를 저장하는 (IC 와 같은) 회로, 실행을 위한 로직을 포함하는 회로, 또는 이들 양자를 포괄할 수도 있다. 본 개시물은 소프트웨어, 하드웨어, 또는 이들 양자의 임의의 적절한 조합을 포괄할 수도 있다.
당업자는 임의의 다양한 서로 다른 기술들 및 기법들을 이용하여 정보 및 신호들이 표현될 수도 있음을 이해할 것이다. 예를 들어, 상기 설명 전반에 걸쳐 참조될 수도 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압, 전류, 전자기파, 자계 또는 자성 입자, 광계 또는 광학 입자, 또는 이들의 임의의 조합에 의해 표현될 수도 있다.
당업자는 본 명세서에 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 양자의 조합들로서 구현될 수도 있음을 추가로 인식할 것이다. 하드웨어와 소프트웨어의 이러한 상호대체 가능성을 분명히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 일반적으로 그들의 기능의 관점에서 상기 설명되었다. 그러한 기능이 하드웨어로서 구현될지 또는 소프트웨어로서 구현될지는 전체 시스템에 부과된 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자는 설명된 기능을 각각의 특정 어플리케이션에 대하여 다양한 방식들로 구현할 수도 있지만, 그러한 구현의 결정들이 본 발명의 범위로부터의 일탈을 야기하는 것으로서 해석되지는 않아야 한다.
본 명세서에서 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본 명세서에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 그 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수도 있다. 또한, 프로세서는 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다.
본 명세서에 개시된 실시형태들과 관련하여 설명된 방법 또는 알고리즘 (예컨대, 방법들 (200, 300, 400, 500, 및 600)) 의 단계들은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈, 디지털 로직 디바이스들로서 구현되는 소프트웨어 모듈에서, 또는 이들의 조합에서 직접 구현될 수도 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 탈착가능 디스크, CD-ROM, 또는 업계에 공지된 임의의 다른 형태의 비-일시적인, 유형의 컴퓨터 판독 저장 매체 내에 상주할 수도 있다. 예시적인 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체는 프로세서에 커플링되어, 프로세서가 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체로부터 정보를 판독하거나 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체에 정보를 기록할 수 있다. 대안에서, 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체는 프로세서에 통합될 수도 있다. 프로세서 및 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체는 ASIC 에 상주할 수도 있다. ASIC 은 사용자 단말기에 상주할 수도 있다. 대안에서, 프로세서와 비-일시적인, 유형의 컴퓨터 판독가능 저장 매체는 사용자 단말기에서 개별 컴포넌트들로서 상주할 수도 있다. 일부 실시형태들에서, 소프트웨어 모듈은 소프트웨어 모듈로 프로그래밍될 시 FPGA 에서와 같은 디지털 로직 컴포넌트들로서 구현될 수도 있다.
개시된 실시형태들의 이전 설명은 당업자로 하여금 본 발명을 제조 또는 이용하게 할 수 있도록 제공된다. 이러한 실시형태들에 대한 다양한 수정예들이 당업자에게는 자명할 것이고, 본원에서 정의된 일반적인 원칙들은 본 발명의 취지와 범위를 벗어나지 않으면서 다른 실시형태들에 적용될 수도 있다. 따라서, 본 발명은 본 명세서에서 설명된 실시형태들로 한정되도록 의도되지 않으며, 본 명세서에 개시된 원리들 및 신규한 특징들과 부합하는 최광의 범위를 부여받아야 한다.

Claims (20)

  1. 암호화된 데이터를 수정함이 없이 어느 사용자들이 데이터를 해독 가능한지를 변경하는 증명가능한 암호법적 액세스 제어들을 제공하기 위해 공개 키 암호법을 이용하여 디바이스들의 그룹들에 의한 데이터에 대한 직교 액세스 제어를 위한 시스템으로서,
    상기 시스템은:
    a. 제 1 변환 모듈을 갖는, 제 1 사용자에 의해 제어되는 제 1 디바이스;
    b. i. 변환 키 스토리지
    를 갖는 키 서버;
    c. 제 2 변환 모듈, 공개 키, 및 개인 키를 갖는, 제 2 사용자에 의해 제어되는 제 2 디바이스
    를 포함하고,
    d. 상기 제 1 디바이스는, 공개 키 암호법을 이용하여 디바이스들의 그룹들에 의한 데이터에 대한 직교 액세스 제어를 관리하기 위한 프로세서 실행가능 코드로 인코딩된, 비일시적, 유형의 프로세서 판독가능 저장 매체를 포함하며,
    상기 방법은:
    i. 상기 제 1 사용자에 대해 공개 키 및 개인 키를 생성하는 단계;
    ii. 상기 제 1 디바이스에 의해, 사용자들의 제 1 그룹에 대해 공개 키 및 개인 키를 생성함으로써 상기 사용자들의 제 1 그룹을 생성하는 단계로서, 상기 제 1 사용자는 상기 사용자들의 제 1 그룹의 관리자인, 상기 사용자들의 제 1 그룹을 생성하는 단계;
    iii. 상기 사용자들의 제 1 그룹의 상기 공개 키로의 데이터를 암호화함으로써 상기 사용자들의 제 1 그룹으로의 상기 데이터를 암호화하여 제 1 암호문을 형성하는 단계;
    iv. (1) 상기 사용자들의 제 1 그룹에 대한 상기 개인 키 및 (2) 상기 제 2 사용자에 대한 상기 공개 키를 사용하여, 상기 제 1 디바이스의 상기 제 1 변환 모듈에 의해, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 변환 키를 생성함으로써 상기 사용자들의 제 1 그룹에 상기 제 2 사용자를 추가하는 단계;
    v. 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키를 상기 키 서버의 상기 변환 키 스토리지에 저장하는 단계를 포함하고; 그리고
    e. 상기 제 2 디바이스는, 상기 제 1 암호문을 해독하기 위한 프로세서 실행가능 코드로 인코딩된, 비일시적, 유형의 프로세서 판독가능 저장 매체를 포함하며,
    상기 방법은:
    i. 상기 제 2 사용자의 상기 개인 키 및 상기 제 2 디바이스의 상기 공개 키를 사용하여, 상기 제 2 디바이스의 상기 제 2 변환 모듈에 의해, 상기 제 2 사용자로부터 상기 제 2 디바이스로의 변환 키를 생성하는 단계;
    ii. 상기 제 1 암호문에 대한 액세스를 위한 요청을 상기 제 2 디바이스로부터 상기 키 서버로 송신하는 단계;
    iii. 상기 키 서버 상에서,
    1. 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키로 상기 제 1 암호문을 변환하여 제 1 변환된 암호문을 형성하는 것; 및
    2. 상기 제 2 사용자로부터 상기 제 2 디바이스로의 상기 변환 키로 상기 제 1 변환된 암호문을 변환하여 제 1 이중-변환된 암호문을 형성하는 것
    에 의해, 상기 요청을 승인하는 단계; 및
    iv. 상기 제 2 디바이스의 상기 개인 키를 사용하여 상기 제 2 디바이스 상에서 상기 데이터를 드러내기 위해 상기 제 1 이중-변환된 암호문을 해독하는 단계를 포함하는, 직교 액세스 제어를 위한 시스템.
  2. 제 1 항에 있어서,
    상기 제 2 디바이스에 대한 상기 개인 키는 상기 제 2 디바이스의 개인 키 스토리지 상에 저장되고, 상기 사용자들의 제 1 그룹에 대한 상기 개인 키는 상기 제 1 디바이스의 개인 키 스토리지 상에 저장되는, 직교 액세스 제어를 위한 시스템.
  3. 제 1 항에 있어서,
    상기 제 2 사용자에 대한 상기 개인 키는 상기 제 2 사용자에 의해 제공되는 패스프레이즈를 사용하여 암호화되고, 상기 사용자들의 제 1 그룹에 대한 상기 개인 키는 상기 제 1 사용자의 공개 키에 대해 암호화되며, 여기서, 상기 제 1 사용자는 상기 사용자들의 제 1 그룹의 상기 관리자이고, 암호화된 상기 제 2 사용자에 대한 상기 개인 키 및 상기 사용자들의 제 1 그룹에 대한 상기 개인 키 양자는 상기 키 서버의 개인 키 스토리지 상에 저장되는, 직교 액세스 제어를 위한 시스템.
  4. 암호화된 데이터를 수정함이 없이 어느 사용자들이 데이터를 해독 가능한지를 변경하는 증명가능한 암호법적 액세스 제어들을 제공하기 위해 공개 키 암호법을 이용하여 디바이스들의 그룹들에 의한 데이터에 대한 직교 액세스 제어를 위한 방법으로서,
    상기 방법은:
    a. 제 1 사용자에 대해 공개 키 및 개인 키를 생성하는 단계;
    b. 사용자들의 제 1 그룹의 관리자인 상기 제 1 사용자에 의해, 상기 사용자들의 제 1 그룹에 대해 공개 키 및 개인 키를 생성함으로써 상기 사용자들의 제 1 그룹을 생성하는 단계;
    c. 상기 사용자들의 제 1 그룹의 상기 공개 키로의 데이터를 암호화함으로써 상기 사용자들의 제 1 그룹으로의 상기 데이터를 암호화하여 제 1 암호문을 형성하는 단계;
    d. 제 2 사용자에 대해 공개 키 및 개인 키를 생성하는 단계;
    e. (1) 상기 사용자들의 제 1 그룹에 대한 상기 개인 키 및 (2) 상기 제 2 사용자에 대한 상기 공개 키를 사용하여, 상기 제 1 사용자에 의해, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 변환 키를 생성함으로써 상기 사용자들의 제 1 그룹에 상기 제 2 사용자를 추가하는 단계;
    f. 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키를 서버로 저장하는 단계로서, 상기 서버는 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키에 대한 액세스를 통해 상기 데이터를 해독할 수 없고 또한 상기 제 1 사용자 또는 상기 제 2 사용자의 개인 키들 또는 상기 제 1 그룹의 개인 키를 액세스할 수도 없는, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키를 서버로 저장하는 단계; 및
    g. i. 상기 제 1 암호문에 대한 액세스를 위한 요청을 상기 제 2 사용자로부터 상기 서버로 송신하는 것;
    ii. 상기 서버 상에서, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키로 상기 제 1 암호문을 변환하여 제 1 변환된 암호문을 형성하는 것에 의해 상기 제 2 사용자에게 상기 제 1 암호문에 대한 액세스를 승인하거나, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 어떠한 변환 키도 존재하지 않는 경우에 상기 제 2 사용자에 대해 액세스를 거부하는 것; 및
    iii. 상기 제 2 사용자의 상기 개인 키를 사용하여 상기 제 2 사용자에 대해 상기 데이터를 드러내기 위해 상기 제 1 변환된 암호문을 해독하는 것
    에 의해, 상기 제 2 사용자에 의해 상기 데이터를 해독하는 단계를 포함하는, 직교 액세스 제어를 위한 방법.
  5. 제 4 항에 있어서,
    상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키를 삭제함으로써 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자를 제거하는 단계를 더 포함하는, 직교 액세스 제어를 위한 방법.
  6. 제 4 항에 있어서,
    a. i. 제 3 사용자에 대해 공개 키 및 개인 키를 생성하는 것; 및
    ii. 상기 사용자들의 제 1 그룹에 대한 상기 개인 키 및 상기 제 3 사용자에 대한 상기 공개 키를 사용하여, 상기 제 1 사용자에 의해, 상기 사용자들의 제 1 그룹으로부터 상기 제 3 사용자로의 변환 키를 생성하는 것; 및
    iii. 상기 서버로 상기 변환 키를 저장하는 것
    에 의해, 상기 사용자들의 제 1 그룹에 상기 제 3 사용자를 추가하는 단계;
    b. 상기 제 1 암호문에 대한 액세스를 요청하는 요청을 상기 제 3 사용자로부터 상기 서버로 송신하는 단계;
    c. 상기 서버 상에서, 상기 사용자들의 제 1 그룹으로부터 상기 제 3 사용자로의 상기 변환 키를 사용하여 상기 제 1 암호문을 변환하여 제 2 변환된 암호문을 형성하는 것에 의해, 상기 제 3 사용자에 대한 액세스를 승인하는 단계; 및
    d. 상기 제 3 사용자의 상기 개인 키를 사용하여 상기 제 3 사용자에 대해 상기 데이터를 드러내기 위해 상기 제 2 변환된 암호문을 해독하는 단계를 더 포함하는, 직교 액세스 제어를 위한 방법.
  7. 제 6 항에 있어서,
    a. 디바이스들의 제 1 그룹의 일부로서 상기 제 3 사용자의 제 1 디바이스를 제공하는 단계로서, 상기 제 3 사용자는 상기 디바이스들의 제 1 그룹의 관리자인, 상기 디바이스들의 제 1 그룹의 일부로서 상기 제 3 사용자의 제 1 디바이스를 제공하는 단계;
    b. 상기 제 1 디바이스에 대해 공개 키 및 개인 키를 생성하는 단계; 및
    c. 상기 제 3 사용자의 상기 개인 키 및 상기 제 1 디바이스의 상기 공개 키를 사용하여, 상기 제 3 사용자에 의해, 상기 제 3 사용자로부터 상기 제 1 디바이스로의 변환 키를 생성하는 단계를 더 포함하는, 직교 액세스 제어를 위한 방법.
  8. 제 7 항에 있어서,
    a. 상기 사용자들의 제 1 그룹에 대해 암호화되었던 제 2 암호문에 대한 상기 제 3 사용자의 상기 제 1 디바이스를 통한 액세스를 요청하는 요청을 상기 제 3 사용자로부터 송신하는 단계;
    b. 상기 서버 상에서, 상기 사용자들의 제 1 그룹으로부터 상기 제 3 사용자로의 상기 변환 키를 사용하여 상기 제 2 암호문을 변환하여 제 3 변환된 암호문을 형성하는 것에 의해, 상기 제 3 사용자에 대한 액세스를 승인하는 단계;
    c. 상기 제 3 사용자로부터 상기 제 1 디바이스로의 상기 변환 키를 사용하여 상기 제 3 변환된 암호문을 변환하여 제 3 이중-변환된 암호문을 형성하는 단계; 및
    d. 상기 제 1 디바이스의 상기 개인 키를 사용하여, 상기 제 1 디바이스를 통해, 상기 제 3 사용자에 대해 상기 제 2 암호문에서 암호화된 데이터를 드러내기 위해 상기 제 3 이중-변환된 암호문을 해독하는 단계를 더 포함하는, 직교 액세스 제어를 위한 방법.
  9. 제 7 항에 있어서,
    상기 제 3 사용자로부터 상기 제 1 디바이스로의 상기 변환 키를 삭제함으로써, 상기 제 3 사용자에 의해 허가된 상기 디바이스들의 제 1 그룹으로부터 상기 제 1 디바이스를 제거하는 단계를 더 포함하는, 직교 액세스 제어를 위한 방법.
  10. 제 4 항에 있어서,
    제 2 데이터를 상기 제 4 사용자의 공개 키에 대해 암호화함으로써 상기 제 4 사용자에 대해 상기 제 2 데이터를 암호화하여 제 3 암호문을 형성하는 단계를 더 포함하는, 직교 액세스 제어를 위한 방법.
  11. 제 4 항에 있어서,
    a. 제 5 사용자를 제공하는 단계;
    b. 상기 제 5 사용자에 대해 공개 키 및 개인 키를 생성하는 단계;
    c. 상기 제 5 사용자의 제 1 디바이스를 제공하는 단계;
    d. 상기 제 5 사용자의 상기 제 1 디바이스에 대해 공개 키 및 개인 키를 생성하는 단계;
    e. 상기 제 5 사용자의 상기 개인 키 및 상기 제 5 사용자의 상기 제 1 디바이스의 상기 공개 키를 사용하여 상기 제 5 사용자로부터 상기 제 5 사용자의 상기 제 1 디바이스로의 변환 키를 생성하는 단계;
    f. 다수의 그룹들 및 사용자들에 대해 제 3 데이터를 암호화하여, 상기 다수의 그룹들 및 사용자들의 각각에 대해 하나씩의 제 5 암호문들로 제 5 암호문들의 세트를 형성하는 단계로서, 그 다수의 그룹들 및 사용자들은 상기 제 5 사용자 및 상기 사용자들의 제 1 그룹을 포함하는, 상기 제 5 암호문들의 세트를 형성하는 단계;
    g. 상기 제 5 암호문들의 세트에 대한 상기 제 5 사용자의 상기 제 1 디바이스를 통한 액세스를 위한 요청을 상기 제 5 사용자로부터 송신하는 단계;
    h. 상기 서버 상에서, 상기 제 5 사용자에 대해 암호화되었던 상기 제 5 암호문들의 세트의 인스턴스를 로케이팅시키고, 상기 제 5 사용자로부터 상기 제 5 사용자의 상기 제 1 디바이스로의 상기 변환 키를 사용하여 상기 제 5 사용자에 대해 암호화되었던 상기 제 5 암호문들의 세트의 상기 인스턴스를 변환하여 제 4 변환된 암호문을 형성함으로써, 상기 제 5 사용자에 대한 액세스를 승인하는 단계; 및
    i. 상기 제 2 데이터를 복원하기 위해 상기 제 5 사용자의 상기 제 1 디바이스의 상기 개인 키를 사용하여 상기 제 4 변환된 암호문을 해독하는 단계를 더 포함하는, 직교 액세스 제어를 위한 방법.
  12. 제 11 항에 있어서,
    a. 제 6 사용자를 제공하는 단계;
    b. 상기 제 6 사용자에 대해 공개 키 및 개인 키를 생성하는 단계;
    c. 상기 사용자들의 제 1 그룹의 상기 개인 키 및 상기 제 6 사용자의 상기 공개 키를 사용하여 상기 사용자들의 제 1 그룹으로부터 상기 제 6 사용자로의 변환 키를 생성하는 단계;
    d. 상기 제 6 사용자의 제 1 디바이스를 제공하는 단계;
    e. 상기 제 6 사용자의 상기 제 1 디바이스에 대해 공개 키 및 개인 키를 생성하는 단계;
    f. 상기 제 6 사용자로부터 상기 제 6 사용자의 상기 제 1 디바이스로의 변환 키를 생성하는 단계;
    g. 상기 제 5 암호문들의 세트에 대한 상기 제 6 사용자의 제 1 디바이스를 통한 액세스를 위한 요청을 제 6 사용자로부터 송신하는 단계로서, 상기 제 6 사용자는 상기 사용자들의 제 1 그룹의 멤버인, 상기 요청을 제 6 사용자로부터 송신하는 단계;
    h. 상기 서버 상에서, 상기 사용자들의 제 1 그룹에 대해 암호화되었던 상기 제 5 암호문들의 세트의 인스턴스를 로케이팅시키고, 상기 사용자들의 제 1 그룹으로부터 상기 제 6 사용자로의 상기 변환 키를 사용하여 상기 사용자들의 제 1 그룹에 대해 암호화되었던 상기 제 5 암호문들의 세트의 상기 인스턴스를 변환하여 제 5 변환된 암호문을 형성하고, 그 후에, 상기 제 6 사용자로부터 상기 제 6 사용자의 상기 제 1 디바이스로의 상기 변환 키를 사용하여 상기 제 5 변환된 암호문을 변환하여 제 4 이중-변환된 암호문을 형성함으로써, 상기 제 6 사용자에 대한 액세스를 승인하는 단계; 및
    i. 상기 제 2 데이터를 복원하기 위해 상기 제 6 사용자의 상기 제 1 디바이스의 상기 개인 키를 사용하여 상기 제 4 이중-변환된 암호문을 해독하는 단계를 더 포함하는, 직교 액세스 제어를 위한 방법.
  13. 제 12 항에 있어서,
    상기 제 6 사용자는 동시에 상기 사용자들의 제 1 그룹 및 사용자들의 제 2 그룹의 멤버일 수 있는, 직교 액세스 제어를 위한 방법.
  14. 제 4 항에 있어서,
    하나 이상의 디바이스들을 갖는 상기 제 1 사용자는 사용자들의 제 2 그룹을 생성하고,
    상기 사용자들의 제 2 그룹에 대해 공개 키를 생성하는 것은, 상기 서버 및 상기 제 1 사용자의 제 1 디바이스 양자 상에서,
    a. 상기 제 1 디바이스를 통해 상기 제 1 사용자에 의해 상기 사용자들의 제 2 그룹에 대해 제 1 공개 키 및 제 1 개인 키를 생성하고, 상기 사용자들의 제 2 그룹에 대한 상기 공개 키를 상기 서버에 전송하는 것;
    b. 상기 서버에 의해 상기 사용자들의 제 2 그룹에 대해 제 2 공개 키 및 제 2 개인 키를 생성하는 것; 및
    c. 상기 서버 상에서, 상기 제 1 공개 키 및 상기 제 2 공개 키를 결합하여 상기 사용자들의 제 2 그룹에 대한 제 3 의 증강된 공개 키를 형성하여, 상기 제 1 사용자는 상기 제 2 개인 키를 결정할 수 없고 상기 서버는 상기 제 1 개인 키를 결정할 수 없으며, 따라서, 상기 제 1 사용자, 상기 사용자들의 제 1 그룹의 멤버들도 그리고 상기 서버도 상기 증강된 제 3 공개 키에 대해 암호화된 임의의 데이터를 독립적으로 해독할 수 없고, 하지만 상기 제 1 사용자 및 상기 서버는 상기 사용자들의 제 2 그룹에 추가된 임의의 사용자들에 대한 변환 키들을 협동하여 생성할 수 있도록 하는 것
    을 포함하는 동작들을 수반하는, 직교 액세스 제어를 위한 방법.
  15. 제 7 항에 있어서,
    상기 제 3 사용자의 상기 제 1 디바이스에 대한 상기 공개 키 및 상기 개인 키는, 상기 제 3 사용자의 상기 제 1 디바이스에 대해 새로운 공개 키 및 개인 키를 생성하고, 상기 제 3 사용자에 의해 상기 제 3 사용자로부터 상기 제 3 사용자의 상기 제 1 디바이스로의 새로운 변환 키를 생성하며, 상기 제 3 사용자로부터 상기 제 3 사용자의 상기 제 1 디바이스로의 상기 변환 키를 삭제함으로써 회전되는, 직교 액세스 제어를 위한 방법.
  16. 제 7 항에 있어서,
    상기 제 3 사용자에 대한 상기 공개 키 및 상기 개인 키는, 상기 제 3 사용자에 대한 상기 공개 키 및 상기 개인 키를 새로운 공개 키 및 개인 키로 대체하고 상기 사용자들의 제 1 그룹으로부터 상기 제 3 사용자로의 상기 변환 키를 상기 사용자들의 제 1 그룹으로부터 상기 제 3 사용자로의 새로운 변환 키로 대체하며, 상기 제 3 사용자의 각각의 디바이스에 대해, 상기 제 3 사용자로부터 상기 제 3 사용자의 디바이스들의 각각으로의 변환 키들을 상기 제 3 사용자로부터 상기 제 3 사용자의 디바이스들의 각각으로의 새로운 변환 키로 대체함으로써 회전되는, 직교 액세스 제어를 위한 방법.
  17. 암호화된 데이터를 수정함이 없이 어느 사용자들이 데이터를 해독 가능한지를 변경하는 증명가능한 암호법적 액세스 제어들을 제공하기 위해 공개 키 암호법을 이용하여 디바이스들의 그룹들에 의한 데이터에 대한 직교 액세스 제어를 위한 방법을 수행하기 위한 프로세서 판독가능 명령들로 인코딩된, 비일시적, 유형의 컴퓨터 판독가능 저장 매체로서,
    상기 방법은:
    a. 제 1 사용자에 대해 공개 키 및 개인 키를 생성하는 단계;
    b. 사용자들의 제 1 그룹의 관리자인 상기 제 1 사용자에 의해, 상기 사용자들의 제 1 그룹에 대해 공개 키 및 개인 키를 생성함으로써 상기 사용자들의 제 1 그룹을 생성하는 단계;
    c. 상기 사용자들의 제 1 그룹의 상기 공개 키로의 데이터를 암호화함으로써 상기 사용자들의 제 1 그룹으로의 상기 데이터를 암호화하여 제 1 암호문을 형성하는 단계;
    d. 제 2 사용자에 대해 공개 키 및 개인 키를 생성하는 단계;
    e. (1) 상기 사용자들의 제 1 그룹에 대한 상기 개인 키 및 (2) 상기 제 2 사용자에 대한 상기 공개 키를 사용하여, 상기 제 1 사용자에 의해, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 변환 키를 생성함으로써 상기 사용자들의 제 1 그룹에 상기 제 2 사용자를 추가하는 단계;
    f. 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키를 서버로 저장하는 단계로서, 상기 서버는 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키에 대한 액세스를 통해 상기 데이터를 해독할 수 없고 또한 상기 제 1 사용자 또는 상기 제 2 사용자의 개인 키들 또는 상기 제 1 그룹의 개인 키를 액세스할 수도 없는, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키를 서버로 저장하는 단계; 및
    g. i. 상기 제 1 암호문에 대한 액세스를 위한 요청을 상기 제 2 사용자로부터 상기 서버로 송신하는 것;
    ii. 상기 서버 상에서, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키로 상기 제 1 암호문을 변환하여 제 1 변환된 암호문을 형성하는 것에 의해 상기 제 2 사용자에게 상기 제 1 암호문에 대한 액세스를 승인하거나, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 어떠한 변환 키도 존재하지 않는 경우에 상기 제 2 사용자에 대해 액세스를 거부하는 것
    에 의해, 상기 제 2 사용자에 의해 상기 데이터를 해독하는 단계; 및
    h. 상기 제 2 사용자의 상기 개인 키를 사용하여 상기 제 2 사용자에 대해 상기 데이터를 드러내기 위해 상기 제 1 변환된 암호문을 해독하는 단계를 포함하는, 비일시적 유형의 컴퓨터 판독가능 저장 매체.
  18. 제 17 항에 있어서,
    상기 방법은:
    상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키를 삭제함으로써 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자를 제거하는 단계를 더 포함하는, 비일시적 유형의 컴퓨터 판독가능 저장 매체.
  19. 제 17 항에 있어서,
    상기 방법은:
    a. i. 제 3 사용자에 대해 공개 키 및 개인 키를 생성하는 것; 및
    ii. 상기 사용자들의 제 1 그룹에 대한 상기 개인 키 및 상기 제 3 사용자에 대한 상기 공개 키를 사용하여, 상기 제 1 사용자에 의해, 상기 사용자들의 제 1 그룹으로부터 상기 제 3 사용자로의 변환 키를 생성하는 것; 및
    iii. 상기 서버로 상기 변환 키를 저장하는 것
    에 의해, 상기 사용자들의 제 1 그룹에 상기 제 3 사용자를 추가하는 단계;
    b. 상기 제 1 암호문에 대한 액세스를 요청하는 요청을 상기 제 3 사용자로부터 상기 서버로 송신하는 단계;
    c. 상기 서버 상에서, 상기 사용자들의 제 1 그룹으로부터 상기 제 3 사용자로의 상기 변환 키를 사용하여 상기 제 1 암호문을 변환하여 제 2 변환된 암호문을 형성하는 것에 의해, 상기 제 3 사용자에 대한 액세스를 승인하는 단계; 및
    d. 상기 제 3 사용자의 상기 개인 키를 사용하여 상기 제 3 사용자에 대해 상기 데이터를 드러내기 위해 상기 제 2 변환된 암호문을 해독하는 단계를 더 포함하는, 비일시적 유형의 컴퓨터 판독가능 저장 매체.
  20. 제 19 항에 있어서,
    상기 방법은:
    a. 디바이스들의 제 1 그룹의 일부로서 상기 제 3 사용자의 제 1 디바이스를 제공하는 단계로서, 상기 제 3 사용자는 상기 디바이스들의 제 1 그룹의 관리자인, 상기 디바이스들의 제 1 그룹의 일부로서 상기 제 3 사용자의 제 1 디바이스를 제공하는 단계;
    b. 상기 제 1 디바이스에 대해 공개 키 및 개인 키를 생성하는 단계; 및
    i. 상기 제 1 암호문에 대한 액세스를 위한 요청을 상기 제 1 디바이스로부터 상기 서버로 송신하는 것;
    ii. 상기 서버 상에서, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 상기 변환 키로 상기 제 1 암호문을 변환하여 제 2 변환된 암호문을 형성하는 것에 의해 상기 제 1 디바이스에게 상기 제 1 암호문에 대한 액세스를 승인하거나, 상기 사용자들의 제 1 그룹으로부터 상기 제 2 사용자로의 어떠한 변환 키도 존재하지 않는 경우에 상기 제 2 사용자에 대해 액세스를 거부하고; 그 후에, 상기 제 2 사용자로부터 상기 제 1 디바이스로의 상기 변환 키를 사용하여 상기 제 2 변환된 암호문을 변환하여 제 2 이중-변환된 암호문을 형성하는 것; 및
    iii. 상기 제 1 디바이스의 상기 개인 키를 사용하여, 상기 제 1 디바이스를 통해, 상기 제 2 사용자에 대해 상기 데이터를 드러내기 위해 상기 제 2 이중-변환된 암호문을 해독하는 것
    에 의해, 상기 제 3 사용자로부터 상기 제 1 디바이스로의 변환 키를 생성하는 단계를 더 포함하는, 비일시적 유형의 컴퓨터 판독가능 저장 매체.
KR1020197034487A 2017-04-28 2018-04-27 멀티-홉 변환 암호화를 통한 그룹들에 대한 직교 액세스 제어 Ceased KR20200027921A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762491982P 2017-04-28 2017-04-28
US62/491,982 2017-04-28
PCT/US2018/029975 WO2018201062A1 (en) 2017-04-28 2018-04-27 Orthogonal access control for groups via multi-hop transform encryption

Publications (1)

Publication Number Publication Date
KR20200027921A true KR20200027921A (ko) 2020-03-13

Family

ID=63916949

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197034487A Ceased KR20200027921A (ko) 2017-04-28 2018-04-27 멀티-홉 변환 암호화를 통한 그룹들에 대한 직교 액세스 제어

Country Status (4)

Country Link
US (3) US10659222B2 (ko)
EP (1) EP3616384B1 (ko)
KR (1) KR20200027921A (ko)
WO (1) WO2018201062A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110622465B (zh) * 2017-03-08 2022-09-13 罗伯特·博世有限公司 用于使针对控域网的群组密钥协定的侧信道泄漏最小化的方法
KR20200027921A (ko) 2017-04-28 2020-03-13 아이언코어 랩스 인코포레이티드 멀티-홉 변환 암호화를 통한 그룹들에 대한 직교 액세스 제어
FR3071692A1 (fr) * 2017-09-28 2019-03-29 Orange Gestion de groupes d' objets connectes utilisant des protocoles de communication sans fil
CN111527762B (zh) * 2018-01-04 2024-08-09 昕诺飞控股有限公司 用于设备到设备通信网络中端到端安全通信的系统和方法
US20190305940A1 (en) * 2018-03-28 2019-10-03 Ca, Inc. Group shareable credentials
NL2021409B1 (en) * 2018-07-27 2020-01-31 Synergy Solutions Group B V System and method for implementing anonymously constrained computation in a distributed system.
EP3654578B1 (en) * 2018-11-16 2022-04-06 SafeTech BV Methods and systems for cryptographic private key management for secure multiparty storage and transfer of information
CN109450631A (zh) * 2018-12-27 2019-03-08 石更箭数据科技(上海)有限公司 密钥生成设备及管理系统、数据处理设备、数据交易系统
US20200210612A1 (en) * 2019-01-02 2020-07-02 International Business Machines Corporation Policy based lifecycle management of personal information
US11451523B2 (en) * 2019-02-28 2022-09-20 Nxtkey Corporation Methods and systems for secure sharing of data between user devices using a proxy re-encryption key (PRE)
US11455412B2 (en) * 2019-12-03 2022-09-27 Microsoft Technology Licensing, Llc Enhanced management of access rights for dynamic user groups sharing secret data
US11424914B2 (en) 2019-12-03 2022-08-23 Microsoft Technology Licensing, Llc Enhanced security of secret data for dynamic user groups
US12099997B1 (en) 2020-01-31 2024-09-24 Steven Mark Hoffberg Tokenized fungible liabilities
IL272516A (en) * 2020-02-06 2021-08-31 Google Llc Prevention of data manipulation using multiple aggregation servers
IL272520A (en) * 2020-02-06 2021-08-31 Google Llc Aggregation of encrypted network values
EP3910646A1 (de) * 2020-05-11 2021-11-17 Fresenius Medical Care Deutschland GmbH Medizinisches behandlungssystem zur identifizierung und autorisierung medizinischer kraefte
JP2022030661A (ja) * 2020-08-07 2022-02-18 キオクシア株式会社 メモリシステム、制御方法、および情報処理システム
US11328111B2 (en) * 2020-09-25 2022-05-10 Intel Corporation Broadcast remote sealing for scalable trusted execution environment provisioning
US20220393882A1 (en) * 2021-06-02 2022-12-08 Journey.ai Secured private credential certificate
KR102568418B1 (ko) * 2021-08-26 2023-08-18 하이파이브랩 주식회사 다중 서명을 지원하는 전자 인증 시스템 및 방법
CN113961959A (zh) * 2021-11-26 2022-01-21 北京航空航天大学 一种用于数据共享社区的代理重加密方法与系统
WO2023178174A1 (en) * 2022-03-15 2023-09-21 Tiplink Corp Methods and apparatuses for access control of private key information in uniform resource locators (urls) using fragments and key derivation functions
US12353594B2 (en) * 2022-09-20 2025-07-08 Thales Dis Cpl Usa, Inc. System and method for data privacy compliance
US12413562B2 (en) * 2022-11-04 2025-09-09 A&Ctechnology, Inc. System and methods of crypto chat
US12438698B2 (en) * 2023-07-27 2025-10-07 Cisco Technology, Inc. Managing encryption keys of secure tunnels in multi-tenant edge devices

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154543A (en) * 1998-11-25 2000-11-28 Hush Communications Anguilla, Inc. Public key cryptosystem with roaming user capability
US20050091381A1 (en) * 2003-03-26 2005-04-28 Nandan Sunder Rajan Attribute based communication part 2
US8094810B2 (en) * 2006-02-03 2012-01-10 Massachusetts Institute Of Technology Unidirectional proxy re-encryption
WO2008121157A2 (en) * 2006-10-12 2008-10-09 Rsa Security Inc. Cryptographic key management system facilitating secure access of data portions to corresponding groups of users
KR100831326B1 (ko) * 2006-12-28 2008-05-22 삼성전자주식회사 멀티 홉 무선네트워크 시스템 및 그 시스템의 인증방법
US20100306530A1 (en) * 2009-06-02 2010-12-02 Johnson Robert A Workgroup key wrapping for community of interest membership authentication
WO2011045723A1 (en) 2009-10-15 2011-04-21 Koninklijke Philips Electronics N.V. Ciphertext-policy attribute-based encryption and re-encryption
US8515058B1 (en) * 2009-11-10 2013-08-20 The Board Of Trustees Of The Leland Stanford Junior University Bootstrappable homomorphic encryption method, computer program and apparatus
US8601600B1 (en) * 2010-05-18 2013-12-03 Google Inc. Storing encrypted objects
JP5367039B2 (ja) * 2011-09-30 2013-12-11 株式会社東芝 サーバ装置及びプログラム
EP2792104B1 (en) * 2011-12-21 2021-06-30 SSH Communications Security Oyj Automated access, key, certificate, and credential management
US8875234B2 (en) 2012-09-13 2014-10-28 PivotCloud, Inc. Operator provisioning of a trustworthy workspace to a subscriber
US20130212388A1 (en) * 2012-02-13 2013-08-15 Alephcloud Systems, Inc. Providing trustworthy workflow across trust boundaries
CN102655508B (zh) 2012-04-19 2015-03-04 华中科技大学 云环境下的用户隐私数据保护方法
EP2680486A1 (en) * 2012-06-29 2014-01-01 Orange Key management
EP2680487B1 (en) 2012-06-29 2019-04-10 Orange Secured cloud data storage, distribution and restoration among multiple devices of a user
US20150271153A1 (en) * 2012-07-10 2015-09-24 Kurt Ryan Rohloff Information management using proxy re-encryption
US9800555B2 (en) 2012-08-17 2017-10-24 Koninklijke Philips N.V. Attribute-based encryption
WO2014058971A1 (en) * 2012-10-09 2014-04-17 Huawei Technologies Co., Ltd. Authenticated encryption support in iso/iec 23009-4
CN104871477B (zh) 2013-01-16 2018-07-10 三菱电机株式会社 加密系统、重加密密钥生成装置、重加密装置、加密方法
US9953317B2 (en) * 2013-03-13 2018-04-24 Shopkeep.Com, Inc. Method and system for secure key rotation
JP6022073B2 (ja) * 2013-10-09 2016-11-09 三菱電機株式会社 暗号システム、再暗号化鍵生成装置及び再暗号化装置
US9203815B1 (en) * 2013-11-27 2015-12-01 Symantec Corporation Systems and methods for secure third-party data storage
EP2892177A1 (en) 2014-01-03 2015-07-08 Thomson Licensing Proxy re-encryption methods and devices
US9705683B2 (en) * 2014-04-04 2017-07-11 Etas Embedded Systems Canada Inc. Verifiable implicit certificates
US9525672B2 (en) * 2014-12-19 2016-12-20 Amazon Technologies, Inc. Multi-faceted compute instance identity
US9537838B2 (en) * 2014-12-22 2017-01-03 Sap Se Adjustable proxy re-encryption
US20160352689A1 (en) * 2015-05-26 2016-12-01 Infosec Global Inc. Key agreement protocol
US10581812B2 (en) * 2015-12-01 2020-03-03 Duality Technologies, Inc. Device, system and method for fast and secure proxy re-encryption
KR20200027921A (ko) 2017-04-28 2020-03-13 아이언코어 랩스 인코포레이티드 멀티-홉 변환 암호화를 통한 그룹들에 대한 직교 액세스 제어

Also Published As

Publication number Publication date
US10659222B2 (en) 2020-05-19
US11146391B2 (en) 2021-10-12
EP3616384A4 (en) 2020-12-30
WO2018201062A1 (en) 2018-11-01
US20220116207A1 (en) 2022-04-14
EP3616384A1 (en) 2020-03-04
US20180316495A1 (en) 2018-11-01
EP3616384B1 (en) 2022-06-01
US20200259639A1 (en) 2020-08-13
US11909868B2 (en) 2024-02-20

Similar Documents

Publication Publication Date Title
US11909868B2 (en) Orthogonal access control for groups via multi-hop transform encryption
Zhao et al. Trusted data sharing over untrusted cloud storage providers
Kumar et al. Secure storage and access of data in cloud computing
US8059818B2 (en) Accessing protected data on network storage from multiple devices
Fahl et al. Confidentiality as a service--usable security for the cloud
US20150067330A1 (en) Method and system for network data access
Shabir Analysis of classical encryption techniques in cloud computing
CN108111540B (zh) 一种云存储中支持数据共享的分层访问控制系统及方法
US12524561B2 (en) Systems and methods to perform end to end encryption
US10892892B1 (en) Method and apparatus for end-to-end secure sharing of information with multiple recipients without maintaining a key directory
Bicakci et al. TwinCloud: secure cloud sharing without explicit key management
Purushothama et al. Secure cloud storage service and limited proxy re-encryption for enforcing access control in public cloud
Yasmin et al. Decentralized Entrance Power with Secret Endorsement of Data Stored in Clouds
Auwal et al. Cloud-based online social network
Wall et al. Cryptographically enforced orthogonal access control at scale
Son et al. On secure data sharing in cloud environment
Saisanthiya et al. Utilizing Proxy Re-Encryption for Enhanced Security in Data Sharing based on Blockchain
Ma et al. Comparing general paradigms on data secrecy protection for outsourced files in mobile cloud computing
Divya et al. Secure Data Sharing in Cloud Environment Using Multi Authority Attribute Based Encryption
Shendkar et al. IMPROVING SECURITY AND EFFICIENCY IN ATTRIBUTE-BASED DATA SHARING USING CLOUD.
WO2025111130A1 (en) Systems and methods to perform end to end encryption
Raghavi et al. A Survey on Cloud Storage Systems and Encryption Schemes
Kulkarni et al. Cryptographically Enforced Dynamic Access Control and traceable group data sharing in the Cloud
Rohil EDES-ACM: Enigma Diagonal Encryption Standard Access Control Model for Data Security in Cloud Environment
Kuo et al. Open Stack Secure Enterprise File Sync and Share Turnkey Solution

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20191121

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20210407

Comment text: Request for Examination of Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20230303

Patent event code: PE09021S01D

E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20230516

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20230303

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I