KR101713307B1 - 키체인 동기화 - Google Patents

키체인 동기화 Download PDF

Info

Publication number
KR101713307B1
KR101713307B1 KR1020157018926A KR20157018926A KR101713307B1 KR 101713307 B1 KR101713307 B1 KR 101713307B1 KR 1020157018926 A KR1020157018926 A KR 1020157018926A KR 20157018926 A KR20157018926 A KR 20157018926A KR 101713307 B1 KR101713307 B1 KR 101713307B1
Authority
KR
South Korea
Prior art keywords
keychain
devices
request
peer
peer device
Prior art date
Application number
KR1020157018926A
Other languages
English (en)
Other versions
KR20150095872A (ko
Inventor
마이클 브라우어
달라스 비. 데 아틀리
미첼 디. 아들러
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/839,126 external-priority patent/US9124637B2/en
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20150095872A publication Critical patent/KR20150095872A/ko
Application granted granted Critical
Publication of KR101713307B1 publication Critical patent/KR101713307B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/065Network architectures or network communication protocols for network security for supporting key management in a packet data network for group communications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/185Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/44Star or tree networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/068Network architectures or network communication protocols for network security for supporting key management in a packet data network using time-dependent keys, e.g. periodically changing keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/104Grouping of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1042Peer-to-peer [P2P] networks using topology management mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/18Self-organising networks, e.g. ad-hoc networks or sensor networks
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Storage Device Security (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

일부 실시예들이, 디바이스의 적어도 하나의 처리 유닛에 의해 실행될 때 디바이스 상에 저장된 키체인들의 세트를 다른 디바이스들의 세트와 동기화하는 프로그램을 저장하는 비일시적 기계-판독가능 매체를 제공한다. 디바이스와 다른 디바이스들의 세트는 피어 투 피어(P2P) 네트워크를 통해 서로 통신 가능하게 연결된다. 프로그램은 디바이스 상에 저장된 키체인들의 세트 내의 키체인에 대한 수정을 수신한다. 프로그램은 디바이스 상에 저장된 키체인들의 세트를 다른 디바이스들의 세트와 동기화하기 위하여 다른 디바이스들의 세트 내의 각각의 디바이스에 대한 업데이트 요청을 생성한다. 프로그램은 별개의 보안 통신 채널들의 세트를 통하여 업데이트 요청들의 세트를 P2P 네트워크를 통해 다른 디바이스들의 세트로 전송한다.

Description

키체인 동기화{KEYCHAIN SYNCHRONIZATION}
다수의 디바이스 사이에서 데이터를 공유하는 것은 다수의 디바이스의 사용자들에게 점점 더 일반적인 특징이 되고 있다. 데이터-공유 특징은 전체 파일들을 업데이트함으로써, 그리고 일부 경우에서는, 다수의 디바이스 사이에서 동기화하기 위한 것으로 특정된 전체 파일들의 세트들을 업데이트함으로써 구현된다. 데이터-공유 특징을 제공하는 많은 애플리케이션은 다수의 디바이스 사이에서 비보호 방식으로 데이터를 송신하고 수신한다.
본 발명의 일부 실시예들은 동기화 그룹(synchronization group)(또한 동기 그룹(sync group) 또는 동기 서클(sync circle)로 지칭됨)의 멤버들로서 특정되는 여러 디바이스들 사이에서 키체인(keychain)들의 동기화(synchronization)(또한 "동기화(syncing)"로 지칭됨)를 용이하게 하는 새로운 방법을 제공한다. 키체인은, 일부 실시예들에서, 패스워드들, 개인키(private key)들, 인증서들, 보안 노트(secure note)들 등을 포함할 수 있는 데이터의 정의된 집합이다. 일부 실시예들에서, 방법은 피어 투 피어(P2P) 네트워크를 통해 디바이스들 사이에서 키체인들을 동기화한다. 일부 실시예들의 방법은 디바이스들 사이에서 통신들의 비인가 액세스를 방지하기 위한 통신 보안 특징을 채용한다.
상이한 실시예들이 상이한 기술들을 사용하여, 디바이스들이 서로 통신하는 P2P 네트워크를 구현한다. 예를 들어, 일부 실시예들이 완전 연결 메시 토폴로지(fully connected mesh topology)를 갖는 오버레이 네트워크를 채용하는 한편, 다른 실시예들은 스타 토폴로지(star topology)를 갖는 오버레이 네트워크를 사용한다. 여전히, 일부 실시예들은 임의의 수의 추가적인 그리고/또는 상이한 오버레이 네트워크들을 이용하여 P2P 네트워크를 구현한다.
일부 실시예들에서, 방법은 디바이스들이 서로 통신하는 데이터를 보호하기 위한 보안 전송 계층(secure transport layer)을 제공한다. 일부 실시예들의 방법은 메시지-기반 통신 프로토콜(예컨대, OTR(off-the-record) 메시징)을 이용해 각각의 디바이스들 사이에 보안 통신 채널을 제공함으로써 보안 전송 계층을 구현하는 한편, 다른 실시예들의 방법은 스트림-기반 통신 프로토콜(예컨대, 보안 소켓 계층(secure sockets layer: SSL))을 이용해 디바이스들의 각각의 쌍들 사이에 보안 통신 채널을 제공함으로써 보안 전송 계층을 구현한다.
일부 실시예의 방법은 (전체 키체인을 동기화하는 것과는 대조적으로) 키체인의 개별 항목들(또한 키체인 항목들로 지칭됨)을 동기화함으로써 디바이스들 사이에서 키체인을 동기화한다. 키체인 항목들을 동기화하는 일부 경우들에서, 일부 실시예들의 방법은 동일한 키체인 항목의 다수의 버전 사이에서 충돌(conflict)들을 검출한다. 상이한 실시예들의 방법이 상이한 방식들로 그러한 충돌들을 해결한다. 예를 들어, 일부 실시예들에서, 방법은 디바이스들 사이에서 동기화될 키체인 항목으로서 키체인 항목의 가장 최근 버전을 사용한다. 추가적인 그리고/또는 상이한 접근법들이 일부 실시예들에서 사용될 수 있다.
일부 실시예들에서, 방법은 정의된 세트의 조건들 및/또는 요건들에 따라 디바이스 상의 키체인 데이터(예컨대, 키체인 항목들)에의 액세스를 제한하기 위한 데이터 보호 특징을 제공한다. 예를 들어, 디바이스 상의 각각의 키체인 항목은, 일부 실시예들에서, 특정한 보호 도메인(protection domain)에 속하는 것으로서 특정된다. 일부 실시예들의 방법은, 특정한 키체인 항목이 속하는 특정한 보호 도메인에 대해 정의된 조건들 및/또는 요건들의 세트가 충족되는 경우에만, 디바이스가 그 특정한 키체인 항목에 액세스할 수 있게 한다. 조건들 및/또는 요건들의 예들은, 디바이스가 잠금 해제 상태에 있는 것, 디바이스가 잠금 상태에 있는 것, 디바이스의 사용자가 특정한 패스워드를 입력하는 것 등을 포함한다. 이러한 접근법 하에서, 디바이스 상의 키체인 항목들에의 액세스는 세부적인 방식(granular fashion)으로 제어될 수 있다.
전술한 발명의 내용은 본 발명의 일부 실시예들에 대해 간단히 소개하는 역할을 하려는 것이다. 이는 본 문서에 개시된 모든 발명의 주제의 소개 또는 개요인 것으로 의도되지 않는다. 이어지는 발명을 실시하기 위한 구체적인 내용 및 발명을 실시하기 위한 구체적인 내용에서 참조되는 도면들은 발명의 내용에 기술된 실시예들뿐만 아니라 다른 실시예들을 추가로 기술할 것이다. 따라서, 본 문서에 의해 기술된 실시예들 모두를 이해하기 위해, 발명의 내용, 발명을 실시하기 위한 구체적인 내용, 및 도면들에 대한 전체적인 검토가 요구된다. 더욱이, 청구되는 주제는, 발명의 내용, 발명을 실시하기 위한 구체적인 내용, 및 도면들 내의 예시적인 상세사항들에 의해 제한되는 것이 아니라, 보다 정확히 말해서, 첨부되는 청구범위에 의해 정의되어야 하는데, 그 이유는 청구되는 주제가 주제의 사상으로부터 벗어남이 없이 다른 특정 형태들로 구현될 수 있기 때문이다.
본 발명의 신규한 특징들이 첨부된 청구범위에 제시되어 있다. 그러나, 설명의 목적을 위해, 본 발명의 여러 실시예들이 이하의 도면들에서 제시된다.
도 1은 본 발명의 실시예들에 따른, 여러 디바이스들 사이에서 패스워드들을 동기화하는 것을 개념적으로 예시한다.
도 2는 본 발명의 일부 실시예들에 따른, 직접 P2P 네트워크에 대한 네트워크 구조를 개념적으로 예시한다.
도 3은 본 발명의 일부 실시예들에 따른, 간접 P2P 네트워크에 대한 네트워크 구조를 개념적으로 예시한다.
도 4는 본 발명의 일부 실시예들에 따른, 동기 서클을 시작하고 동기 서클에 디바이스들을 추가하는 예를 개념적으로 예시한다.
도 5는 동기 서클에 가입하기를 요청하기 위한 일부 실시예들의 프로세스를 개념적으로 예시한다.
도 6은 동기 서클에 가입하려는 요청을 처리하기 위한 일부 실시예들의 프로세스를 개념적으로 예시한다.
도 7은 패스워드들을 동기화하기 위한, 도 2에 예시된 네트워크 구조를 통한 예시적인 데이터 흐름을 개념적으로 예시한다.
도 8 및 도 9는 패스워드들을 동기화하기 위한, 도 3에 예시된 네트워크 구조를 통한 예시적인 데이터 흐름을 개념적으로 예시한다.
도 10은 본 발명의 일부 실시예들에 따른, 키체인에 대한 데이터 구조를 개념적으로 예시한다.
도 11은 일부 실시예들의 키체인 매니저의 상이한 상태들 및 이러한 상태들 사이의 전환들을 기술하는 상태 다이어그램을 개념적으로 예시한다.
도 12는 업데이트들을 피어 디바이스들로 푸시(push)하기 위한 일부 실시예들의 프로세스를 개념적으로 예시한다.
도 13은 피어 디바이스들로부터의 업데이트들을 처리하기 위한 일부 실시예들의 프로세스를 개념적으로 예시한다.
도 14는 충돌하는 충돌 해결(conflict resolution)들을 해결하기 위한 일부 실시예들의 프로세스를 개념적으로 예시한다.
도 15는 키체인 항목 충돌들을 해결하기 위한 일부 실시예들의 프로세스를 개념적으로 예시한다.
도 16은 상이한 디바이스들 내의 상이한 키체인 항목들을 개념적으로 예시한다.
도 17은 일부 실시예들이 키체인 항목들을 처리하기 위해 수행하는 프로세스를 개념적으로 예시한다.
도 18은 입력되는 키체인 항목들을 보관하기(deposit) 위한 처리 큐(processing queue)를 개념적으로 예시한다.
도 19는 일부 실시예들이 소스 디바이스로부터 수신된 키체인 항목들을 처리하기 위해 수행하는 프로세스를 개념적으로 예시한다.
도 20은 보호 도메인에 속하는 키체인 항목들이 디바이스에서 이용 가능하기 위해서 디바이스가 잠금 해제될 것을 요구하는 보호 도메인에 의해 보안된 키체인 항목들을 예시한다.
도 21은 보호 도메인에 속하는 키체인 항목들이 디바이스에서 이용 가능하기 위해서 디바이스가 부팅된 후 적어도 한번 잠금 해제될 것을 요구하는 보호 도메인에 의해 보안된 키체인 항목들을 예시한다.
도 22는 보호 도메인에 속하는 키체인 항목들이 디바이스에서 이용 가능하기 위해서 디바이스가 켜질 것을 요구하는 보호 도메인에 의해 보안된 키체인 항목들을 예시한다.
도 23은 보호 도메인에 속하는 키체인 항목들이 디바이스에서 이용 가능하기 위해서 디바이스가 잠금 해제될 것을 요구하고 추가적인 인증을 또한 요구하는 보호 도메인에 의해 보안된 키체인 항목들을 예시한다.
도 24는 디바이스에 대한 상이한 세트들의 조건들을 갖는 2개의 보호 도메인에 의해 보안된 데이터를 예시한다.
도 25는 여러 디바이스들에 의해 형성된 여러 동기 서클들을 개념적으로 예시한다.
도 26은 여러 상이한 보호 도메인들에 대해 여러 디바이스들에 의해 형성된 동기 서클을 개념적으로 예시한다.
도 27은 일부 실시예들의 키체인 매니저의 소프트웨어 구조를 개념적으로 예시한다.
도 28은 본 발명의 일부 실시예들이 구현되는 전자 시스템을 개념적으로 예시한다.
본 발명에 대한 다음의 상세한 설명에서는, 본 발명의 많은 상세사항들, 예들, 및 실시예들이 기재 및 기술된다. 그러나, 본 발명이 기재된 실시예들로 제한되지 않고 본 발명이 논의되는 구체적인 상세사항들 및 예들 중 일부가 없이 실시될 수 있음은, 명백하고 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명할 것이다. 예를 들어, 본 출원 내의 도면들 중 많은 것들이 단순화 및/또는 설명의 목적으로 특정한 수의 디바이스들과 관련하여 기술된다. 본 발명이 이 도면들에 예시된 디바이스들의 수로 제한되지 않고 본 발명이 임의의 수의 상이한 디바이스들로 실시될 수 있음을, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 인식할 것이다.
본 발명의 일부 실시예들은 동기화 그룹(또한 동기 그룹 또는 동기 서클로 지칭됨)의 멤버들로서 특정되는 여러 디바이스들 사이에서 키체인들의 동기화를 용이하게 하는 새로운 방법을 제공한다. 키체인은, 일부 실시예들에서, 패스워드들, 개인키들, 인증서들, 보안 노트들 등을 포함할 수 있는 데이터의 정의된 집합이다. 일부 실시예들에서, 방법은 P2P 네트워크를 통해 디바이스들 사이에서 키체인들을 동기화한다. 일부 실시예들의 방법은 디바이스들 사이에서 통신들의 비인가 액세스를 방지하기 위한 통신 보안 특징을 채용한다.
상이한 실시예들이 상이한 기술들을 사용하여, 디바이스들이 서로 통신하는 P2P 네트워크를 구현한다. 예를 들어, 일부 실시예들은 완전 연결 메시 토폴로지를 갖는 오버레이 네트워크를 채용하는 한편, 다른 실시예들은 스타 토폴로지를 갖는 오버레이 네트워크를 사용한다. 여전히, 일부 실시예들은 임의의 수의 추가적인 그리고/또는 상이한 오버레이 네트워크들을 이용하여 P2P 네트워크를 구현한다.
일부 실시예들에서, 방법은 디바이스들이 서로 통신하는 데이터를 보호하기 위한 보안 전송 계층을 제공한다. 일부 실시예들의 방법은 메시지-기반 통신 프로토콜(예컨대, OTR 메시징)을 이용해 디바이스들의 각각의 쌍 사이에 보안 통신 채널을 제공함으로써 보안 전송 계층을 구현하는 한편, 다른 실시예들의 방법은 스트림-기반 통신 프로토콜(예컨대, SSL)을 이용해 디바이스들의 각각의 쌍 사이에 보안 통신 채널을 제공함으로써 보안 전송 계층을 구현한다.
일부 실시예의 방법은 (전체 키체인을 동기화하는 것과는 대조적으로) 키체인의 개별 항목들(또한 키체인 항목들로 지칭됨)을 동기화함으로써 디바이스들 사이의 키체인을 동기화한다. 키체인 항목들을 동기화하는 일부 경우들에서, 일부 실시예들의 방법은 동일한 키체인 항목의 다수의 버전 사이에서 충돌들을 검출한다. 상이한 실시예들의 방법이 상이한 방식들로 그러한 충돌들을 해결한다. 예를 들어, 일부 실시예들에서, 방법은 디바이스들 사이에서 동기화될 키체인 항목으로서 키체인 항목의 가장 최근 버전을 사용한다. 추가적인 그리고/또는 상이한 접근법들이 일부 실시예들에서 사용될 수 있다.
일부 실시예들에서, 방법은 정의된 세트의 조건들 및/또는 요건들에 따라 디바이스 상의 키체인 데이터(예컨대, 키체인 항목들)에의 액세스를 제한하기 위한 데이터 보호 특징을 제공한다. 예를 들어, 디바이스 상의 각각의 키체인 항목은, 일부 실시예들에서, 특정한 보호 도메인에 속하는 것으로서 특정된다. 일부 실시예들의 방법은, 특정한 키체인 항목이 속하는 특정한 보호 도메인에 대해 정의된 조건들 및/또는 요건들의 세트가 충족되는 경우에만, 디바이스가 그 특정한 키체인 항목에 액세스할 수 있게 한다. 조건들 및/또는 요건들의 예들은, 디바이스가 잠금 해제 상태에 있는 것, 디바이스가 잠금 상태에 있는 것, 디바이스의 사용자가 특정한 패스워드를 입력하는 것 등을 포함한다. 이러한 접근법 하에서, 디바이스 상의 키체인 항목들에의 액세스는 세부적인 방식으로 제어될 수 있다.
도 1은 본 발명의 일부 실시예들에 따른, 여러 디바이스들(A 내지 C) 사이에서 패스워드들을 동기화하는 것을 개념적으로 예시한다. 구체적으로, 도 1은 디바이스들(A 내지 C) 사이의 패스워드들의 예시적인 동기화의 3개의 상이한 단계(105 내지 115)에 있는 디바이스들(A 내지 C)을 예시한다. 이 예에서, 디바이스들(A 내지 C)은 서로 패스워드들을 동기화하는 동기 서클의 멤버들로서 특정된다. 디바이스들(A 내지 C) 각각은 데스크톱 컴퓨터, 랩톱, 스마트폰, 태블릿, 또는 임의의 다른 유형의 컴퓨팅 디바이스일 수 있다.
제1 단계(105)는, 패스워드들(1 내지 3)이 디바이스들(A 내지 C) 사이에서 동기화되는 것을 예시하며, 이는 디바이스들(A 내지 C)의 각각이 동일한 패스워드들(1-3)의 복사본들을 갖는 것으로 나타낸 바와 같다. 이 예에서, 각각의 디바이스들(A 내지 C) 상의 패스워드들(1 내지 3)은 그 디바이스만이 복호화 및 액세스할 수 있는 암호화된 형식으로 디바이스 상에 저장된다. 이 보안 특징은, 각각의 디바이스들(A 내지 C) 내의 패스워드들(1 내지 3)의 세트를 특정한 형상으로 묘사함으로써, 도 1에서 개념화된다. 특히, 디바이스 A 상에 저장된 패스워드들(1-3)은 직사각형으로 도시되고, 디바이스 B 상에 저장된 패스워드들(1-3)은 타원형으로 도시되고, 디바이스 C 상에 저장된 패스워드들(1-3)은 불규칙한 볼록 팔각형으로 도시되어 있다. 그와 같이, 이 예에서 디바이스 A는 직사각형 패스워드들만 복호화 및 액세스할 수 있고, 디바이스 B는 타원형 패스워드들만 복호화 및 액세스할 수 있으며, 디바이스 C는 불규칙한 볼록 팔각형 패스워드들만 복호화 및 액세스할 수 있다.
도 1의 제2 단계(110)는 패스워드 4가 디바이스 A에 추가되는 것을 도시한다(예컨대, 디바이스 A의 사용자가 디바이스 A를 사용하여 패스워드 4를 생성함). 도시된 바와 같이, 패스워드 4는 직사각형 형상으로 암호화되고 디바이스 A 상에 저장된다. 제2 단계(110)에서, 디바이스 A는 패스워드 4를 디바이스(B, C)와 동기화하기 위하여 패스워드 4의 복사본을 디바이스(B, C)로 송신하고 있다. 일부 실시예들에서, 디바이스 A가 패스워드 4를 수신하는 경우, 디바이스 A는, 디바이스 B만이 복호화할 수 있는 형식으로 암호화된 패스워드 4의 복사본을 디바이스 B로 송신하고, 디바이스 C만이 복호화할 수 있는 형식으로 암호화된 패스워드 4의 또 다른 복사본을 디바이스 C로 송신한다. 이는, 디바이스 A가 패스워드 4를 타원 형상으로 디바이스 B로 송신하고 패스워드 4를 불규칙한 볼록 팔각형 형상으로 디바이스 C로 송신하는 것으로써 나타내어진다.
앞서 언급한 바와 같이, 일부 실시예들은 디바이스들 사이에서 통신들의 비인가 액세스를 방지하기 위한 통신 보안 특징을 제공한다. 디바이스 B와의 통신을 보호하기 위해, 이 예에서의 디바이스 A는 보안 통신 프로토콜(예컨대, SSL, OTR 등)을 이용하는 보안 채널을 통해 패스워드 4의 복사본을 암호화하고 디바이스 B로 송신한다. 일부 실시예들의 보안 통신 채널은 인증 및 암호화된 통신 채널이다. 일부 실시예들에서, 디바이스 B는 보안 채널을 통해 패스워드 4를 전송하는 데 사용되었던 암호화된 형식으로 패스워드 4를 저장한다. 유사하게, 일부 실시예들에서의 디바이스 C는 보안 채널을 통해 패스워드를 전송하는 데 사용되었던 암호화된 형식으로 패스워드 4를 저장한다.
제3 단계(115)는 디바이스들(A 내지 C) 사이에서 동기화된 패스워드들(1-4)을 도시한다. 도시된 바와 같이, 디바이스 B는, 디바이스 B가 디바이스 A로부터 수신한 패스워드 4의 암호화된 복사본을 저장하고 있고, 따라서, 디바이스 A와 동기화된다. 마찬가지로, 디바이스 C는, 디바이스 C가 디바이스 A로부터 수신한 패스워드 4의 암호화된 복사본을 저장하고 있고, 따라서, 디바이스 A와 동기화된다. 앞서 논의한 바와 같이, 이 예에서, 디바이스 B 상에 저장된 패스워드 4는 디바이스 B만이 복호화할 수 있는 형식으로 암호화되고, 디바이스 C 상에 저장된 패스워드 4는 디바이스 C만이 복호화할 수 있는 형식으로 암호화된다.
많은 상세사항들, 예들, 및 실시예들이, 동기 서클의 멤버들인 디바이스들 사이에서 동기화하기 위한 패스워드들을 저장하는 디바이스들을 참조하여 본 출원에서 기술된다. 그러나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는, 일부 실시예들에서 동기 서클 내의 디바이스들 중 하나 이상이 동기 서클 내의 다른 디바이스들의 일부 또는 전부와 공유되지(즉, 동기화되지) 않는 패스워드들을 또한 저장한다는 것을 이해할 것이다.
게다가, 본 출원에서 설명한 상세사항들, 예들, 및 실시예들의 대부분이 키체인의 일부로서 저장되는 패스워드들을 동기화하는 것에 관한 것일지라도, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는, 본 발명이 패스워드들을 동기화하는 것으로 제한되지 않고, 본 발명이 동기 서클 내의 디바이스들 사이에서 키체인 내의 다른 유형들의 데이터(예컨대, 개인키들, 인증서들, 보안된 노트들 등)를 동기화하기 위해 실시될 수 있다는 것을 인식할 것이다. 또한, 본 발명이 동기 서클 내의 디바이스들 사이에서 하나보다 많은 키체인을 동기화하기 위해 실시될 수 있다는 것을, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 인식할 것이다.
본 발명의 보다 상세한 여러 실시예들이 아래의 섹션들에 기술된다. 섹션 I은 본 발명의 일부 실시예들에 따른 예시적인 P2P 네트워크 구조들의 상세사항들을 개념적으로 기술한다. 다음으로, 섹션 II는 본 발명의 일부 실시예들에 따른, 동기 서클을 생성하고 동기 서클에 디바이스들을 등록하는 것을 개념적으로 기술한다. 섹션 III은 본 발명의 일부 실시예들에 따른, 동기 서클 내의 디바이스들 사이에서 키체인들을 동기화하는 상세사항들을 기술한다. 다음으로, 섹션 IV는 본 발명의 일부 실시예들에 따른, 키체인들에 대한 데이터 보호 특징을 기술한다. 섹션 V는 일부 실시예들의 키체인 매니저에 대한 소프트웨어 구조를 기술한다. 마지막으로, 섹션 VI는 본 발명의 일부 실시예들을 구현하는 전자 시스템을 기술한다.
I. 피어 투 피어 네트워크 구조
앞서 언급한 바와 같이, 일부 실시예들은 P2P 네트워크를 통해 동기 서클의 멤버들인 디바이스들 사이에서 키체인들을 동기화한다. 상이한 실시예들의 P2P 네트워크는 동기 서클 내의 디바이스들 사이에서 통신을 용이하게 하기 위해 상이한 네트워크 구조들을 사용하여 구현된다. 이하의 도면들은 P2P 네트워크 구조들의 상이한 구현들의 여러 예들을 예시한다.
도 2는 본 발명의 일부 실시예들에 따른, 직접 P2P 네트워크에 대한 네트워크 구조를 개념적으로 예시한다. 이 예에서, 디바이스들(A 내지 C)은 동기 서클의 멤버들이다. 도시된 바와 같이, 디바이스들(A 내지 C) 각각은 패스워드들을 저장하기 위한 저장장치(210) 및 키체인 매니저(205)를 포함한다. 일부 실시예들의 키체인 매니저(205)는 디바이스들(A 내지 C) 사이에서 패스워드들의 동기화를 용이하게 하는 기능들을 수행할 책임이 있다. 예를 들어, 일부 실시예들에서, 키체인 매니저(205)는, 동기 서클들에 디바이스를 등록하는 것, 디바이스들(A 내지 C) 사이에서 패스워드들을 동기화하는 것, 충돌하는 패스워드들 사이에서 충돌들을 해결하는 것, 키체인들의 상이한 유형들의 매니페스트(manifest)들을 생성하는 것, 디바이스들(A 내지 C) 사이에서 데이터를 전송하기 위한 보안 통신 채널을 제공하는 것 등을 다룬다.
도 2에 예시된 바와 같이, 디바이스들(A 내지 C)은 완전 연결 메시 토폴로지를 갖는 오버레이 네트워크를 통해 서로 통신한다. 그와 같이, 디바이스들(A 내지 C)의 각각은 다른 디바이스들의 각각과 직접 통신할 수 있다. 즉, 디바이스 A는 디바이스들(B, C)과 직접 통신할 수 있고, 디바이스 B는 디바이스들(A, C)과 직접 통신할 수 있으며, 디바이스 C는 디바이스들(A, B)과 직접 통신할 수 있다.
앞서 언급한 바와 같이, 일부 실시예들은, 디바이스들이 서로 통신하는 데이터를 보호하기 위한 보안 전송 계층을 제공한다. 이 예에서, 디바이스들(A 내지 C)은 디바이스들(A 내지 C)의 각각의 쌍 사이에 구축된 보안 통신 채널들을 통해 서로 통신한다. 보안 통신 채널들은, 메시지-기반 통신 프로토콜들(예컨대, OTR 메시징), 스트림-기반 통신 프로토콜들(예컨대, SSL) 등과 같은 임의의 수의 상이한 프로토콜들을 이용해 구현될 수 있다.
도 3은 본 발명의 일부 실시예들에 따른, 간접 P2P 네트워크에 대한 네트워크 구조를 개념적으로 예시한다. 도 2와 유사하게, 이 예에서, 디바이스들(A 내지 C)은 동기 서클의 멤버들이고, 디바이스들(A 내지 C) 각각은 저장장치(210) 및 키체인 매니저(205)를 포함한다.
도 3에 도시된 바와 같이, 디바이스들(A 내지 C)은 스타 토폴로지를 갖는 오버레이 네트워크를 통해 서로 통신한다. 특히, 디바이스들(A 내지 C)은 클라우드 서비스들(305)을 통해 서로 통신하며, 이는 스타 토폴로지의 중심으로서 역할을 하고, 데이터를 저장하는 클라우드 저장 서비스뿐만 아니라 다른 클라우드 서비스들(예컨대, 클라우드 컴퓨팅 서비스들)을 제공한다. 예를 들어, 디바이스 A가 디바이스 B로 데이터를 전달하기를 원하는 경우, 디바이스 A는 클라우드 서비스들(305)에 데이터를 저장하고, 클라우드 서비스들(305)은 데이터에 관해 디바이스 B에 (예컨대, 푸시 통지 서비스를 통해) 통지하며, 디바이스 B는 클라우드 서비스들(305)로부터 데이터를 검색한다.
예시된 바와 같이, 클라우드 서비스들(305)은 동기 서클에 대한 명칭, 및 동기 서클의 멤버들인 디바이스들을 특정하는 동기 서클 디바이스 목록을 저장장치(310)에 저장한다. 일부 실시예들에서, 디바이스들은 디바이스들을 고유하게 식별하는 데이터에 의해 특정된다. 그러한 데이터의 예들은, 디바이스의 아이덴티티를 인증하기 위한 디바이스 서명 공개/개인 키 쌍의 공개키, 디바이스의 디바이스 유형(예컨대, 데스크톱 컴퓨터, 태블릿, 스마트폰 등), 디바이스의 명칭 등, 또는 그러한 데이터의 임의의 수의 조합을 포함한다.
클라우드 서비스들(305)은 또한 저장장치(315)에 사용자 서명들을 저장한다. 일부 실시예들에서의 사용자 서명은 메시지, 문서, 또는 임의의 다른 유형의 데이터의 서명자로서 사용자의 아이덴티티를 인증하기 위한 디지털 서명이다. 일부 실시예들에서, 동기 서클은 클라우드 서비스 계정에 연결되고, 클라우드 서비스 계정과 연관된 디바이스들(예컨대, 계정과 연관된 클라우드 서비스들에 액세스하기 위한 애플리케이션 또는 프로그램을 갖는 디바이스들)은 동기 서클에 등록하기 위한 후보들이다. 일부 그러한 실시예들에서의 저장장치(315)는, 클라우드 서비스들(305) 계정의 사용자가 서명자임을 나타내기 위한, 클라우드 서비스 계정의 패스워드에 기초하여 생성된 사용자 서명 공개/개인 키 쌍의 개인키로 서명된 서명들을 포함한다. 저장장치(315)에 저장되는 사용자 서명들의 예들은, 사용자 서명 공개/개인 키 쌍의 개인키로 서명된 동기 서클 디바이스 목록의 서명, 사용자 서명 키 쌍의 개인키로 서명된 등록 요청들의 서명들, 및/또는 클라우드 서비스 계정의 사용자의 아이덴티티를 인증하기 위한 임의의 다른 서명들을 포함한다.
도 3은 또한 클라우드 서비스들(305)이 저장장치(320)에 디바이스 서명들을 저장하는 것을 도시한다. 일부 실시예들에서, 디바이스 서명은, 메시지, 문서, 또는 임의의 다른 유형의 데이터의 서명자로서 동기 서클 내의 디바이스의 아이덴티티를 인증하기 위한 디지털 서명이다. 예를 들어, 일부 실시예들에서, 저장장치(320)는 동기 서클의 멤버인 디바이스에 속하는 디바이스 서명 공개/개인 키 쌍의 개인키로 서명된 동기 서클 디바이스 목록의 서명들을 포함한다. 그러한 서명은, 서명하는 디바이스가 동기 서클의 멤버들로서 동기 서클 디바이스 목록 내의 디바이스들의 목록을 확인(affirm)하는 것을 나타낸다. 일부 실시예들에서, 동기 서클이 정상 상태(steady state)에 있는 경우(예컨대, 어떠한 등록 요청도 계류중이지도 비승인되지도 않은 경우), 저장장치(320) 내의 디바이스 서명들은, 동기 서클의 멤버인 각각의 디바이스에 대해, 그 디바이스의 디바이스 서명 공개/개인 키 쌍의 개인키로 서명된 동기 서클 디바이스 목록의 서명을 포함한다. 즉, 그러한 경우들에서의 서명들은, 동기 서클 디바이스 목록에 열거된 모든 디바이스가, 동기 서클 디바이스 목록에 열거된 디바이스들이 동기 서클의 멤버들이라는 것에 동의함을 총괄적으로 나타낸다.
또한, 클라우드 서비스들(305)은, 동기 서클 내의 디바이스들 사이에서 키체인들을 동기화하기 위한 키체인 데이터를 저장장치(325)에 저장하고, 사용자 서명 공개/개인 키 쌍의 공개키, 사용자 서명 키 쌍을 생성하기 위한 동기 서클 내의 디바이스들 사이에 공유되는 랜덤 스트링(예컨대, 256-비트 스트링), 및 계류중인 등록 요청들의 목록을 포함할 수 있는 기타 데이터를 저장장치(330)에 저장한다. 일부 실시예들에서, 클라우드 서비스들(305)은 키-값 저장소들로서 저장장치들(310 내지 330)을 구현한다.
저장장치들(310 내지 330)은 도 3에서 별개의 저장장치들로서 예시되는 한편, 일부 실시예들에서 저장장치들(310 내지 330)은 단일 저장장치로 구현되는 반면, 다른 실시예들에서 저장장치들(310 내지 330)은 여러 저장장치들에 걸쳐 구현된다.
일부 실시예들에서, 도 2를 참조하여 전술한 보안 전송 계층은 디바이스들이 클라우드 서비스들(305)을 통해 서로 통신하는 데이터를 보호하기 위해 이용된다. 즉, 디바이스들(A 내지 C)이 디바이스들(A 내지 C)의 각각의 쌍 사이에 구축된 보안 통신 채널들을 통해 서로 통신하는 동안, 디바이스들(A 내지 C)은 통신들을 전송하기 위한 메커니즘으로서 클라우드 서비스들(305)를 사용한다. 일부 실시예들의 보안 통신 채널들은 임의의 수의 상이한 프로토콜들(예컨대, 메시지-기반 통신 프로토콜들(예컨대, OTR 메시징), 스트림-기반 통신 프로토콜들(예컨대, SSL) 등)을 사용하여 일부 실시예들에서 구현될 수 있다.
II. 동기 서클
전술한 바와 같이, 서클 동기 서클의 멤버들인 디바이스들은 디바이스들 사이에서 키체인들을 동기화한다. 그러한 디바이스들은 또한 본 출원에서 피어 디바이스들 또는 단순히 피어들로 지칭된다. 이하의 섹션은 동기 서클의 디바이스들 사이에서 키체인들을 동기화하기 위한 동기 서클을 생성하고, 동기 서클에 디바이스들을 추가하는 예들을 기술한다.
도 4는 본 발명의 일부 실시예들에 따른, 동기 서클(420)을 시작하고 동기 서클(420)에 디바이스들을 추가하는 예를 개념적으로 예시한다. 특히, 도 4는 동기 서클(420)에 디바이스들(A, B)을 등록하는 3개의 단계(405 내지 415)를 예시한다. 단계들(405, 410) 각각은 동기 서클(420), 및 동기 서클(420)에 대한 데이터를 저장하는 저장장치(425)의 개념적 묘사를 도시한다. 일부 실시예들에서, 저장장치(425)는 클라우드 저장 서비스(305)에서 구현되고 저장장치들(310 내지 330) 내의 데이터를 포함하며, 이는 도 3을 참조하여 전술된다. 클라우드 저장 서비스에서 저장장치(425)를 구현하는 것과 함께, 일부 실시예들에서, 동기 서클(420)의 멤버인 각각의 디바이스는 저장장치(425) 내의 데이터의 복사본을 그 디바이스 상에 로컬로 저장한다.
제1 단계(405)는, 동기 서클(420)에 어떠한 디바이스들도 등록되지 않은, 동기 서클(420)을 예시한다. 도시된 바와 같이, 동기 서클(420)은 비어 있으며, 저장장치(425)는 동기 서클(420)의 멤버들에 관한 어떠한 데이터도 포함하지 않는다. 일부 실시예들의 동기 서클(420)은 클라우드 저장 서비스 계정에 연결되고, 클라우드 저장 서비스 계정과 연관된 디바이스들(예컨대, 계정과 연관된 클라우드 저장장치에 액세스하기 위한 애플리케이션 또는 프로그램을 갖는 디바이스들)은 동기 서클(420)에 등록하기 위한 후보들이다. 일부 그러한 실시예들에서의 저장장치(425)는 계정과 연관된 디바이스들을 기술하는 메타데이터를 저장한다.
제2 단계(410)는, 동기 서클(420)에 등록된 디바이스를 갖는 동기 서클(420)을 도시한다. 제2 단계(410)에 도시된 바와 같이, 디바이스 A는 동기 서클(420)에 등록되어 있고, 저장장치(425)는 동기 서클(420)의 멤버로서 디바이스 A를 식별하는 데이터를 저장하고 있다. 일부 실시예들에서, 동기 서클(420)은 동기 서클(420)이 비어 있는 경우에는 실제로 존재하지 않는다. 동기 서클(420)은 제1 디바이스가 동기 서클(420)에 등록하는 경우 일부 그러한 실시예들에서 생성된다. 클라우드 저장 서비스 계정과 연관된 디바이스들 중 하나의 디바이스의 사용자가 디바이스 상의 키체인 동기화 특징(keychain syncing feature)을 인에이블하는 경우, 디바이스는 동기 서클(420)을 생성하고 그 자신을 동기 서클(420)에 등록한다.
동기 서클(420)에 등록하기 위하여, 디바이스 A는 동기 서클(420)의 멤버로서 디바이스 A를 고유하게 식별하는 데이터를 저장장치(425)에 저장한다. 그러한 데이터의 예들은 디바이스 A를 인증하기 위한 디바이스 서명 공개/개인 키 쌍의 공개키, 디바이스 A의 디바이스 유형(예컨대, 데스크톱 컴퓨터, 태블릿, 스마트폰 등), 디바이스 A의 명칭 등, 또는 그러한 데이터의 임의의 수의 조합을 포함한다.
일부 실시예들에서, 동기 서클(420) 내에 있거나 동기 서클(420)에 잠재적으로 가입할 수 있는 각각의 디바이스는, 동일한 공개-키 암호화 알고리즘(cryptography algorithm)(예컨대, RSA 알고리즘, 타원 곡선 암호화(elliptic curve cryptography: ECC) 알고리즘 등)을 사용해 디바이스 서명 키 쌍을 생성하여, 디바이스들이 서로의 메시지들을 암호화 및 복호화할 수 있게 한다. 또한, 각각의 디바이스는 일부 실시예들에서 디바이스 서명 공개/개인 키 쌍을 랜덤으로 생성한다. 이러한 방식으로, 각각의 디바이스는, 임의의 다른 디바이스에 의해 생성된 디바이스 서명 공개/개인 키 쌍들과는 상이한, 고유한 디바이스 서명 공개/개인 키 쌍을 생성한다.
일부 실시예들에서, 디바이스 A는, (1) 클라우드 저장 서비스 계정의 사용자를 인증하기 위한 사용자 서명 공개/개인 키 쌍의 개인키로 데이터를 암호화함으로써 동기 서클(420)의 멤버들을 식별하는 데이터(데이터는 이 예에서 디바이스 A를 고유하게 식별함)의 서명을 생성하고, (2) 서명된 데이터를 저장장치(425)에 저장한다. 일부 실시예들의 사용자 서명 공개/개인 키 쌍은, (1) 클라우드 저장 서비스 계정과 연관된 패스워드 및 (2) 동기 서클(420) 내의 디바이스들 사이에서 공유되는 랜덤 스트링(예컨대, 256-비트 스트링)에 기초하여 생성된다.
동기 서클(420) 내에 있거나 동기 서클(420)에 잠재적으로 가입할 수 있는 각각의 디바이스는, 일부 실시예들에서, 동일한 공개-키 암호화 알고리즘(예컨대, RSA 알고리즘, ECC 알고리즘 등)을 사용하여 사용자 서명 키 쌍을 생성한다. 일부 실시예들에서, 그러한 디바이스들은 디바이스 서명 키 쌍을 생성하는 데 사용되는 공개-키 암호화 알고리즘을 이용하여, 사용자 서명 키 쌍을 또한 생성한다. 디바이스들은 모두 동일한 공개/개인 키 쌍을 생성하는데, 그 이유는 디바이스들 각각이, 클라우드 저장 서비스 계정과 연관된 패스워드 및 랜덤 스트링을 동일한 공개-키 암호화 알고리즘에 대한 입력으로서 사용하기 때문이다. 그와 같이, 이 예에서의 동기 서클(420)의 멤버들을 식별하는 데이터의 서명은, 클라우드 저장 서비스 계정의 사용자가 동기 서클(420)에 디바이스 A를 등록하고 있다는 것을 인증하기 위한 것이다. 디바이스 A는 동기 서클(420)에 등록된 첫번째 디바이스이므로, 디바이스 A는 사용자 서명 키 쌍의 공개키 및 랜덤 스트링을 저장장치(425)에 저장한다.
제3 단계(415)는, 또 다른 디바이스가 동기 서클(420)에 등록된 것을 예시한다. 도시된 바와 같이, 디바이스 B는 동기 서클(420)에 등록되어 있고, 저장장치(425)는 또한 동기 서클(420)의 멤버로서 디바이스 B를 식별하는 데이터를 저장하고 있다. 또한, 디바이스 A 및 디바이스 B는 동기 서클(420)의 멤버들이고, 디바이스들(A, B) 상의 패스워드들은 동기화된다.
디바이스 B가 동기 서클(420)에 등록하기 위하여, 일부 실시예들은 (1) 디바이스 B가 저장장치(425)에 요청을 저장함으로써 동기 서클(420)에 가입하려는 요청을 제출하는 것, 및 (2) 디바이스 A가 요청을 승인하는 것을 요구한다. 상이한 실시예들은 동기 서클에 가입하려는 요청을 승인하기 위한 상이한 요건들을 정의한다. 예를 들어, 일부 실시예들은 동기 서클의 멤버인 하나의 디바이스만이 요청을 승인할 것을 요구하는 한편, 다른 실시예들은 동기 서클의 멤버인 모든 디바이스가 요청을 승인할 것을 요구한다.
도 5는 동기 서클에 가입하기를 요청하기 위한 일부 실시예들의 프로세스(500)를 개념적으로 예시한다. 일부 실시예들에서, 동기 서클에 가입하기를 요청하는 디바이스는 (예컨대, 디바이스의 사용자가 디바이스 상의 키체인 동기화 특징을 인에이블할 때) 프로세스(500)를 수행한다. 프로세스(500)는 프로세스(500)을 수행하는 도 4의 디바이스 B를 참조하여 기술될 것이다.
프로세스(500)는 (510에서) 디바이스 B의 사용자에게 패스워드를 입력하도록 촉구하는 것으로 시작한다. 일부 실시예들에서, 프로세스(500)는, 사용자가 클라우드 저장 서비스 계정에 대한 패스워드를 입력하도록 요청하는 팝업 창을 디바이스 B의 디스플레이 스크린 상에 디스플레이함으로써, 사용자에게 패스워드를 입력하도록 촉구한다.
다음으로, 프로세스(500)는 (520에서) 사용자에 의해 제공된 패스워드에 기초하여 사용자 서명 공개/개인 키 쌍을 생성한다. 일부 실시예들에서, 프로세스(500)는 패스워드 및 동기 서클(420)의 멤버들 사이에서 공유하기 위한 랜덤 스트링에 기초하여 사용자 서명 키 쌍을 생성한다. 일부 그러한 실시예들의 프로세스(500)는 사용자 서명 키 쌍을 생성하기 위하여 저장장치(425)로부터 랜덤 스트링을 검색한다. 상이한 실시예들에서, 프로세스(500)는 상이한 기술들을 사용하여 사용자 서명 키 쌍을 생성한다. 예를 들어, 일부 실시예들에서, 프로세스(500)는 RSA 알고리즘, ECC 알고리즘, 또는 임의의 다른 유형의 공개-키 암호 방식을 사용하여 디바이스 서명 키 쌍을 생성한다.
프로세스(500)는 이어서 (530에서) 디바이스 B를 인증하기 위한 디바이스 서명 공개/개인 키 쌍을 생성한다. 상이한 실시예들의 프로세스(500)는 상이한 기술들을 사용하여 디바이스 서명 키 쌍을 생성한다. 일부 실시예들에서, 프로세스(500)는, 520에서 사용자 서명 키 쌍을 생성하는 데 사용된 동일한 유형의 공개-키 암호 방식을 사용하여, 디바이스 서명 키 쌍을 생성한다. 다른 실시예들에서, 프로세스(500)는 상이한 유형의 공개-키 암호 방식을 사용하여 디바이스 서명 키 쌍을 생성한다.
디바이스 서명 키 쌍이 생성되면, 프로세스(500)는 (540에서) 동기 서클(420)에 가입하려는 요청을 생성한다. 일부 실시예들에서, 요청은, 디바이스 B를 고유하게 식별하기 위한 디바이스 B의 디바이스 서명 키 쌍의 공개키, 및 프로세스(500)가 저장장치(425)로부터 검색하는 동기 서클(420) 내의 디바이스들의 목록을 포함한다.
다음으로, 프로세스(500)는 (550에서) 생성된 키 쌍들에 기초하여 요청의 서명들을 생성한다. 구체적으로, 프로세스(500)는 (1) 사용자 서명 키 쌍의 개인키로 요청의 서명을 생성하고, (2) 디바이스 B의 디바이스 서명 키 쌍의 개인키로 요청의 서명을 생성한다.
마지막으로, 프로세스(500)는 (560에서) 요청 및 생성된 서명들을 제출한다. 일부 실시예들에서, 프로세스(500)는 저장장치(425)에 저장된 등록 요청 목록에 요청을 추가함으로써 요청을 제출한다. 일부 실시예들의 프로세스(500)는, 사용자 서명 키 쌍의 개인키로 서명된 요청의 서명 및 디바이스 B의 디바이스 서명 키 쌍의 개인키를 갖는 요청의 서명을 저장장치(425)에 저장함으로써, 서명들을 제출한다.
도 6은 동기 서클에 가입하려는 요청을 처리하기 위한 일부 실시예들의 프로세스를 개념적으로 예시한다. 일부 실시예들에서, 동기 서클의 멤버인 디바이스는, 동기 서클에 가입하려는 요청이 제출되었고 계류중이라는 통지를 (예컨대, 푸시 통지 서비스를 통해) 디바이스가 수신하는 경우, 프로세스(600)를 수행한다. 프로세스(600)는 프로세스(600)를 수행하는 도 4의 디바이스 A를 참조하여 기술될 것이다.
프로세스(600)는 (610에서) 동기 서클(420)에 디바이스 B를 추가하려는 요청을 검색하는 것으로 시작한다. 일부 실시예들에서, 프로세스(600)는, 저장장치(425)에 액세스하고, 등록 요청 목록으로부터의 요청, 디바이스 B의 디바이스 서명 키 쌍의 개인키로 서명된 요청의 서명, 및 사용자 서명 키 쌍의 개인키로 서명된 요청의 서명을 검색함으로써 요청을 검색한다.
다음으로, 프로세스(600)는 (620에서) 요청이 인증되는지 여부를 결정한다. 일부 실시예들에서, 프로세스(600)는, (1) 클라우드 저장 서비스 계정의 사용자가 동기 서클(420)에 디바이스 B를 등록하려는 요청을 제출했다는 것, 및 (2) 동기 서클(420)에 디바이스를 등록하려는 요청이 실제로 디바이스 B를 등록하기 위한 것임을 프로세스(600)가 확인하는 경우, 요청을 인증한다. 클라우드 저장 서비스 계정의 사용자가 디바이스 B를 등록하려는 요청을 제출했다는 것을 확인하기 위하여, 일부 실시예들의 프로세스(600)는 (1) 사용자 서명 키 쌍의 개인키로 서명되었던 요청의 서명을 사용자 서명 키 쌍의 공개키로 복호화하고, (2) 등록 요청 목록으로부터 검색된 요청 데이터가 복호화된 서명과 매칭되는지를 확인한다. 다시 말하면, 프로세스(600)는, 사용자 서명 키 쌍의 개인키로 서명된 요청의 복호화된 서명이 디바이스 B의 디바이스 서명 키 쌍의 공개키 및 동기 서클(420) 내의 디바이스들의 목록을 포함하는지 확인한다.
일부 실시예들에서, 프로세스(600)는, (1) 디바이스 B의 디바이스 서명 키 쌍의 개인키로 서명되었던 요청의 서명을 디바이스 B의 디바이스 서명 키 쌍의 공개키로 복호화하고, (2) 등록 요청 목록으로부터 검색된 요청 데이터가 복호화된 서명과 매칭되는지 확인함으로써, 동기 서클(420)에 디바이스를 등록하려는 요청이 디바이스 B를 등록하기 위한 것임을 확인한다. 디바이스 B의 디바이스 서명 키 쌍의 개인키로 서명된 요청의 서명을 복호화하는 것에 대안적으로 또는 추가하여, 일부 실시예들의 프로세스(600)는 다른 기술들을 사용하여, 동기 서클(420)에 디바이스를 등록하려는 요청이 디바이스 B를 등록하기 위한 것임을 확인한다. 예를 들어, 프로세스(600)는, 디바이스 B가 동기 서클에 등록하기를 요청했을 때 랜덤으로 생성되고 디바이스 B 상에 디스플레이되었던 패스워드, 패스코드, 개인 식별 번호(PIN) 코드 등을 입력하도록 사용자에게 촉구하는 것, 디바이스 B가 동기 서클(420)에 등록하기를 요청하고 있었을 때 디바이스 B 상에 디스플레이된 이미지와 매칭되는, 디바이스 A 상에 디스플레이된 이미지를 선택하는 것 등을 할 수 있다.
630에서, 프로세스(600)는 요청이 동기 서클 내의 디바이스에 의해 이미 승인되어 있는지 여부를 결정한다. 일부 실시예들에서, 프로세스(600)는, 저장장치(425)가 (1) 동기 서클(420) 내의 디바이스들의 목록, 및 (2) 동기 서클 내의 디바이스에 속하는 디바이스 서명 공개/개인 키 쌍의 개인키로 서명된 요청 디바이스(requesting device)의 서명을 포함하는 경우, 요청이 동기 서클 내의 디바이스에 의해 이미 승인되어 있다고 결정한다.
프로세스(600)가 요청이 이미 승인되어 있다고 결정하는 경우, 프로세스(600)는 (640에서) 요청의 승인을 인정하고 이어서 프로세스(600)는 종료된다. 일부 실시예들의 프로세스(600)는, (1) 프로세스(600)가 실행되고 있는 디바이스의 디바이스 서명 키 쌍의 개인키로 (이제는 새롭게 승인된 디바이스를 포함하는) 동기 서클 디바이스 목록의 서명을 생성하고, (2) 디바이스 서명들을 갖는 생성된 서명을 저장장치(425)에 저장함으로써, 요청의 승인을 인정한다.
프로세스(600)가 요청이 이미 승인되어 있지 않다고 결정하는 경우, 프로세스(600)는 (650에서) 사용자에게 요청을 승인하도록 촉구한다. 상이한 실시예들이 상이한 방법들로 요청들을 승인한다. 예를 들어, 일부 실시예들의 프로세스(600)는, 사용자가 클라우드 저장 서비스 계정에 대한 패스워드를 제공하는 경우, 요청을 승인한다. 일부 실시예들의 디바이스는, 사용자가 클라우드 저장 서비스 계정에 대한 패스워드를 디바이스로 입력할 때 그것을 저장하지 않으므로, 일부 실시예들의 프로세스(600)는, (1) 디바이스 B의 디바이스 명칭(예컨대, "존 도우(John Doe)의 스마트폰")이 동기 서클(420)에 가입하기를 요청했다는 것을 나타내고, (2) 사용자가 클라우드 저장 서비스 계정과 연관된 패스워드를 입력하도록 요청하는 팝업 창을, 디바이스 A의 디스플레이 스크린 상에 디스플레이함으로써 사용자에게 패스워드를 입력하도록 촉구한다.
다음으로, 프로세스(600)는 (660에서) 요청을 승인하기 위한 입력이 사용자로부터 수신되는지 여부를 결정한다. 프로세스(600)가 요청을 승인하는 입력이 수신되지 않는다고 결정하는 경우, 프로세스는 660으로 되돌아가 사용자로부터의 입력에 대해 계속해서 확인한다. 프로세스(600)가, 요청을 승인하기 위한 입력이 수신된다고 결정하는 경우, 프로세스(600)는 670으로 진행한다.
670에서, 프로세스는 사용자 승인이 인증되는지 여부를 결정한다. 클라우드 저장 서비스 계정에 대한 패스워드가, 클라우드 저장 서비스 계정의 사용자가 요청을 승인했다는 것을 확인하는 데 사용되는 경우들에서, 일부 실시예들의 프로세스(600)는, 650에서 사용자에 의해 제공된 패스워드 및 저장장치(425)에 저장된 랜덤 스트링에 기초하여 사용자 서명 공개/개인 키 쌍을 생성함으로써 사용자 승인을 인증하고, 프로세스(600)가 생성했던 공개키가 저장장치(425)에 저장된 사용자 서명 키 쌍의 공개키와 매칭된다는 것을 확인한다. 앞서 설명한 바와 같이, 동기 서클(420) 내에 있거나 동기 서클(420)에 잠재적으로 가입할 수 있는 각각의 디바이스는, 동일한 알고리즘을 사용하여 일부 실시예들에서의 사용자 서명 키 쌍을 생성한다. 따라서, 저장장치(425)에 저장된 사용자 서명 키 쌍의 공개키와 매칭되는 프로세스(600)에 의해 생성된 공개키는, 클라우드 저장 서비스 계정의 사용자가 요청을 승인했다는 것을 확인한다.
프로세스(600)가 사용자 승인이 인증되지 않는다고 결정하는 경우, 프로세스(600)는 종료된다. 프로세스(600)가 사용자 승인이 인증된다고 결정하는 경우, 프로세스(600)는 (680에서) 동기 서클에 요청 디바이스를 추가한다. 일부 실시예들에서, 프로세스(600)는, 동기 서클(420)에 대한 동기 서클 디바이스 목록에, 디바이스 B를 고유하게 식별하는 데이터를 추가하고, 디바이스 A의 디바이스 서명 키 쌍의 개인키로 동기 서클 디바이스 목록의 서명을 생성하고, 저장장치(425)에 디바이스 서명들을 갖는 생성된 서명을 저장함으로써, 동기 서클(420)에 디바이스 B를 추가한다.
마지막으로, 프로세스(600)는 (690에서) 동기 서클(420) 내의 디바이스들 사이에서 동기화될 것으로 특정된 키체인들을 디바이스 B와 동기화한다. 일부 실시예들에서, 프로세스(600)는 도 7 내지 도 15를 참조하여 아래에 기술된 기술들을 이용해 키체인들을 동기화한다.
도 6이 동기 서클 내의 하나의 디바이스가 요청을 승인할 때 동기 서클에 요청 디바이스를 추가하는 것을 예시하지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 임의의 수의 상이한 승인 요건들이 상이한 실시예들에서 사용될 수 있다는 것을 이해할 것이다. 예를 들어, 일부 실시예들은, 동기 서클 내의 모든 디바이스들, 정의된 수의 디바이스들, 정의된 비율의 디바이스들 등이, 요청 디바이스가 동기 서클에 추가되기 전에, 디바이스를 승인하도록 요구할 수 있다.
일부 실시예들은 디바이스가 동기 서클로부터 제거되게 할 수 있다. 예를 들어, 동기 서클 내의 디바이스의 사용자가, 동기 서클 내의 또 다른 디바이스가 동기 서클에 가입하도록 인가되지 않았다는 것, 사용자가 동기 서클 내의 디바이스를 분실했다는 것, 동기 서클 내의 디바이스가 도난당했다는 것 등으로 의심하는 경우, 사용자는 동기 서클로부터 원치 않는 디바이스를 제거할 수 있다. 상이한 실시예들은 동기 서클로부터의 디바이스 제거를 상이하게 다룬다. 예를 들어, 일부 실시예들에서, 디바이스가 동기 서클로부터 제거되는 경우, 동기 서클 내의 나머지 디바이스들은 계속해서 나머지 디바이스들 사이에서 패스워드들을 동기화한다. 일부 그러한 실시예들에서의 제거된 디바이스는, 디바이스가 동기 서클에 다시 추가되기 위해서는 등록 프로세스(예컨대, 도 4 내지 도 6을 참조하여 전술한 것들)를 다시 거치도록 요구된다. 다른 접근법 하에서, 동기 서클은 디바이스가 동기 서클로부터 제거될 경우 파괴된다(예컨대, 동기 서클 디바이스 목록이 삭제된다). 그러한 경우들에서, 동기 서클은 (예컨대, 도 4 내지 도 6을 참조하여 전술한 예들 및 프로세스들을 사용해) 재구축되어야 하고 디바이스들은 새롭게 구축된 동기 서클에 추가되어야 한다.
III. 패스워드들의 동기화
일단 동기 서클이 구축되고 적어도 2개의 디바이스가 동기 서클에 등록되면, 일부 실시예들의 방법이 사용되어, 동기 서클의 멤버들로서 특정된 디바이스들 사이에서 키체인들의 동기화를 용이하게 한다. 앞서 언급한 바와 같이, 일부 실시예들에서, 방법은 디바이스들 사이에서 키체인들을 동기화하기 위하여 P2P 네트워크를 이용해 디바이스들 사이에서 데이터를 통신하였다.
도 7은 패스워드들을 동기화하기 위한, 도 2에 예시된 네트워크 구조를 통한 예시적인 데이터 흐름을 개념적으로 예시한다. 구체적으로, 도 7은 새로운 패스워드가 동기 서클 내의 디바이스들 중 하나 상에서 생성되는 경우, 동기 서클의 멤버들인 디바이스들 사이에서 패스워드들을 동기화하기 위한 데이터 흐름 동작들(1 내지 9)을 개념적으로 예시한다. 이 예에서, 동기 서클을 구축하는 것 및 동기 서클에 디바이스들(A 내지 C)을 등록하는 것은, 도 4 내지 도 6을 참조하여 전술한 것들과 유사한 기술들을 이용해 구현된다.
언급한 바와 같이, 도 7에 예시된 네트워크 구조는 도 2를 참조하여 전술한 것과 유사하다. 즉, 디바이스들(A 내지 C) 각각은 패스워드들의 동기화를 용이하게 하기 위한 키체인 매니저(205) 및 패스워드들을 저장하기 위한 저장장치(210)를 포함한다. 이에 더하여, 디바이스들(A 내지 C)은, 디바이스들(A 내지 C)의 각각이 다른 디바이스들의 각각과 직접 통신하게 하는 완전 연결 메시 토폴로지를 갖는 오버레이 네트워크를 통해 서로 통신한다. 일부 실시예들에서, 디바이스들(A 내지 C)의 모든 쌍(즉, 디바이스들(A, B), 디바이스들(A, C), 및 디바이스들(B, C))에 대해, 디바이스들 상의 키체인 매니저들(205)은, 디바이스들 사이에서 데이터를 전송하기 위한 디바이스들의 쌍들 사이의 (예컨대, OTR 메시징, SSL 등을 이용하는) 보안 통신 채널의 공급을 용이하게 한다.
도 7의 데이터 흐름 동작들(1 내지 9)을 시작하기 전에, 디바이스들(A 내지 C) 상의 패스워드들은 동기화된다. 다시 말하면, 디바이스들(A 내지 C) 각각은 저장장치(210)에 저장된 동일한 패스워드들을 갖는다. 데이터 흐름은 (원 안의 1에서) 디바이스 A에 패스워드(705)를 추가하는 것으로 시작한다. 예를 들어, 디바이스 A의 사용자는 사용자의 소셜 네트워킹 계정과 연관된 사용자명 및 패스워드를 입력하도록 사용자에게 요구하는 소셜 네트워킹 애플리케이션(예컨대, 페이스북(Facebook)® 애플리케이션, 트위터(Twitter)® 애플리케이션, 구글(Google)+® 애플리케이션, 링크드인(LinkedIn)® 애플리케이션 등)을 설치했을지도 모른다.
디바이스 A가 새로운 패스워드(705)를 수신하는 경우, 디바이스 A는 (원 안의 2에서) 패스워드(705)를 암호화하고 디바이스 A의 저장장치(210)에 저장한다. 일부 실시예들에서, 디바이스들(A 내지 C)의 저장장치들(210)에 저장된 패스워드들은, 대칭키 알고리즘(symmetric-key algorithm)(DES(data encryption standard) 알고리즘, TDEA(triple data encryption algorithm), 256-비트 블록 크기들을 사용하는 AES(advanced encryption standard) 및 GCM(Galois/Counter Mode) 등), 및 키(예컨대, 디바이스에 로그인하기 위한 패스워드 또는 패스코드, 디바이스에 의해 생성되거나 할당된 랜덤 키 등, 또는 그러한 키들의 임의의 수의 조합)를 사용해 보호된다. 디바이스 A가 저장장치(210)에 패스워드(705)를 저장하는 경우, 키체인 매니저(205)는 대칭키 알고리즘 및 키를 사용해 패스워드를 암호화한다.
패스워드(705)를 저장한 후, 디바이스 A는 (원 안의 3에서) 디바이스들(B, C)의 각각에 대해 패스워드(705)를 복호화 및 암호화한다. 저장장치(205)에 저장된 암호화된 패스워드(705)를 복호화하기 위하여, 키체인 매니저(205)는, 디바이스 A가 저장장치(210)에 패스워드(705)를 저장할 때 패스워드(705)를 암호화하는 데 사용되는 전술한 대칭키 알고리즘 및 키를 사용한다.
앞서 언급한 바와 같이, 보안 통신 채널이 디바이스들(A 내지 C)의 모든 쌍 사이에서 사용되어 디바이스들 사이에서 전송되는 데이터를 보호한다. 디바이스들(A, B)의 쌍 및 디바이스들(A, C)의 쌍은 각각 별개의 보안 통신 채널들을 사용하므로, 디바이스 A의 키체인 매니저(205)는, 디바이스 A가 디바이스 B와 구축한 보안 통신 채널에 기초하는 제1 키 또는 키들의 세트를 사용해, 디바이스 B로 송신할 패스워드(705)의 복사본을 암호화한다. 디바이스 A의 키체인 매니저(205)는 또한, 디바이스 A가 디바이스 C와 구축한 보안 통신 채널에 기초하는 제2의, 상이한 키 또는 키들의 세트를 사용해, 디바이스 C로 송신할 패스워드(705)의 또 다른 복사본을 암호화한다.
예로서, 디바이스들(A, B) 사이의 보안 통신 채널 및 디바이스들(A, C) 사이의 보안 통신 채널은 각각 OTR 메시징을 사용하여 일부 실시예들에서 구현된다. 일부 그러한 실시예들에서, OTR 세션은 디바이스들(A, B)의 공개/개인 키 쌍들에 기초하여 디바이스들(A, B) 사이에서 구축된다. 이에 더하여, 또 다른, 별개의 OTR 세션이 디바이스들(A, B)의 공개/개인 키 쌍들에 기초하여 디바이스들(A, C) 사이에서 구축된다. 일부 실시예들에서, 디바이스 서명 키 쌍들은, 도 4 내지 도 6을 참조하여 전술한 바와 같이 동기 서클에 디바이스들(A 내지 C)을 등록하기 위해 생성된 것과 동일한 것들이다.
디바이스 A의 키체인 매니저(205)가 디바이스 B에 대한 패스워드(705)의 복사본을 암호화하면, 디바이스 A는 (원 안의 4에서) 패스워드(705)의 암호화된 복사본 및 패스워드(705)를 기술하는 메타데이터를, 디바이스들(A, B) 사이에 구축된 보안 통신 채널을 통해 디바이스 B로 송신한다. 패스워드(705)를 기술하기 위한 메타데이터의 예들은 패스워드의 유형(인터넷 패스워드, 애플리케이션 패스워드, 네트워크 패스워드 등), 패스워드가 연관되거나 패스워드가 사용되는 애플리케이션 또는 웹사이트의 명칭, 애플리케이션 또는 웹사이트의 경로 등을 포함한다.
디바이스 B가 패스워드(705)의 암호화된 복사본을 수신하는 경우, 디바이스 B는, (원 안의 5에서) 디바이스 A와 구축한 보안 통신 채널에 대해 생성된 키 또는 키들의 세트를 사용함으로써 패스워드(705)의 복사본을 복호화한다. 패스워드(705)의 복사본을 복호화하면, 디바이스 B는 (원 안의 6에서) 패스워드(705)의 복사본을 암호화하고 디바이스 B의 저장장치(210)에 저장한다. 디바이스 B는 이제 패스워드(705)로 업데이트되고, 따라서, 디바이스 B 상에 저장된 패스워드들은 디바이스 A 상에 저장된 패스워드들과 동기화된다.
디바이스들(A, C) 사이에서 패스워드들을 동기화하기 위한 데이터 흐름 동작들로 돌아가서, 디바이스 A의 키체인 매니저(205)가 디바이스 C에 대한 패스워드(705)의 복사본을 암호화한 후, 디바이스 A는 (원 안의 7에서) 패스워드(705)의 암호화된 복사본 및 패스워드(705)를 기술하는 메타데이터를, 디바이스들(A, C) 사이에 구축된 보안 통신 채널을 통해 디바이스 C로 송신한다. 일부 실시예들에서, 디바이스 A가 패스워드(705)의 암호화된 복사본과 함께 디바이스 B로 송신했던 메타데이터는, 디바이스 A가 디바이스 C로 송신하는 것과 동일한 메타데이터이다.
패스워드(705)의 암호화된 복사본을 수신 시, 디바이스 C는 (원 안의 8에서) 디바이스 A와 구축한 보안 통신 채널에 대해 생성된 키 또는 키들의 세트를 사용함으로써 패스워드(705)의 복사본을 복호화한다. 디바이스 C가 패스워드(705)의 복사본을 복호화했을 때, 디바이스 C는 이어서 (원 안의 9에서) 패스워드(705)의 복사본을 암호화하고 디바이스 C의 저장장치(210)에 저장한다. 디바이스 C는 이제 패스워드(705)로 업데이트되고, 따라서, 디바이스 C 상에 저장된 패스워드들은 디바이스 A 상에 저장된 패스워드들과 동기화된다.
도 8 및 도 9는 패스워드들을 동기화하기 위한, 도 3에 예시된 네트워크 구조를 통한 예시적인 데이터 흐름을 개념적으로 예시한다. 특히, 도 8 및 도 9는, 새로운 패스워드가 동기 서클 내의 디바이스들 중 하나에서 생성되는 경우 동기 서클의 멤버들인 디바이스들 사이에서 패스워드들을 동기화하기 위한 데이터 흐름 동작들(1 내지 11)을 개념적으로 예시한다. 도 8은, 디바이스 B가 오프라인인 동안 디바이스들(C, A) 사이에서 패스워드들을 동기화하기 위한, 디바이스 C 상에서 생성된 새로운 패스워드에 응답하여 수행되는, 데이터 흐름 동작들(1 내지 8)을 개념적으로 예시한다. 도 9는, 온라인 상태로 되고 디바이스 B의 패스워드들을 디바이스들(C, A)과 동기화하는 디바이스 B를 개념적으로 예시한다. 이 예에서, 동기 서클을 구축하는 것 및 동기 서클에 디바이스들(A 내지 C)을 등록하는 것은, 도 4 내지 도 6에 전술한 것들과 유사한 기술들을 사용해 구현된다.
언급한 바와 같이, 도 8 및 도 9에 예시된 네트워크 구조는 도 3을 참조하여 전술한 것과 유사하다. 즉, 디바이스들(A 내지 C) 각각은 패스워드들의 동기화를 용이하게 하기 위한 키체인 매니저(205) 및 패스워드들을 저장하기 위한 저장장치(210)를 포함한다. 또한, 디바이스들(A 내지 C)은, 디바이스들(A 내지 C)의 각각이 클라우드 서비스들(305)을 통해 다른 디바이스들의 각각과 간접 통신하게 하는 스타 토폴로지를 갖는 오버레이 네트워크를 통해 서로 통신하며, 클라우드 서비스들은 스타 토폴로지의 중심으로서 역할을 하고 데이터를 저장하기 위한 클라우드 저장 서비스를 제공한다. 일부 실시예들의 클라우드 서비스들(305)은, 동기 서클에 대한 명칭 및 동기 서클 디바이스 목록을 저장장치(310)에 저장하고, 디바이스들의 사용자를 인증하기 위한 사용자 서명들을 저장장치(315)에 저장하고, 동기 서클 내의 디바이스들을 인증하기 위한 디바이스 서명들을 저장장치(320)에 저장하고, 동기 서클 내의 디바이스들 사이에서 키체인들을 동기화하기 위한 키체인 데이터를 저장장치(325)에 저장하며, 기타 데이터를 저장장치(330)에 저장한다. 또한, 일부 실시예들에서, 디바이스들(A 내지 C)의 모든 쌍(즉, 디바이스들(A, B), 디바이스들(A, C), 및 디바이스들(B, C))에 대해, 디바이스들 상의 키체인 매니저들(205)은 디바이스들의 쌍 사이에, 디바이스들의 쌍이 통신하는 (예컨대, OTR 메시징, SSL 등을 이용하는) 보안 통신 채널을 구축한다. 이 예시적인 데이터에서의 디바이스들(A 내지 C)은 통신들을 전송하기 위한 수단으로서 클라우드 서비스들(305)을 사용한다.
도 8 및 도 9의 데이터 흐름 동작들(1 내지 11)을 시작하기 전에, 디바이스들(A 내지 C) 상의 패스워드들이 동기화된다. 즉, 디바이스들(A 내지 C) 각각은 저장장치(210)에 저장된 동일한 패스워드들을 갖는다. 또한, 데이터 흐름은 (원 안의 1에서) 디바이스 C에 패스워드(805)를 추가하는 것으로 시작한다. 예를 들어, 디바이스 C의 사용자는, 사용자에게 사용자의 소셜 네트워킹 계정과 연관된 사용자명 및 패스워드를 입력하도록 요구하는 소셜 네트워킹 애플리케이션(예컨대, 페이스북® 애플리케이션, 트위터® 애플리케이션, 구글+® 애플리케이션, 링크드인® 애플리케이션 등)을 설치했을지도 모른다.
디바이스 C가 새로운 패스워드(805)를 수신하는 경우, 디바이스 C는 (원 안의 2에서) 패스워드(805)를 암호화하고 디바이스 C의 저장장치(210)에 저장한다. 일부 실시예들에서, 디바이스들(A 내지 C)의 저장장치들(210)에 저장된 패스워드들은, 대칭키 알고리즘(DES 알고리즘, TDEA 등) 및 키(디바이스에 로그인하기 위한 패스워드 또는 패스코드, 디바이스에 의해 생성되거나 할당된 랜덤 키 등, 또는 임의의 수의 그러한 키들의 조합)를 사용해 보호된다. 디바이스 A가 저장장치(210)에 패스워드(805)를 저장하는 경우, 키체인 매니저(205)는 대칭키 알고리즘 및 키를 사용해 패스워드(805)를 암호화한다.
패스워드(805)를 저장한 후, 디바이스 C는 (원 안의 3에서) 디바이스들(A, C) 각각에 대한 패스워드(805)를 복호화 및 암호화한다. 저장장치(205)에 저장된 암호화된 패스워드(805)를 복호화하기 위하여, 키체인 매니저(205)는, 디바이스 C가 저장장치(210)에 패스워드(805)를 저장할 때 패스워드(805)를 암호화하는 데 사용되는 전술한 대칭키 알고리즘 및 키를 사용한다.
앞서 언급한 바와 같이, 보안 통신 채널은 디바이스들(A 내지 C)의 모든 쌍 사이에서 사용되어, 디바이스들 사이에서 전송되는 데이터를 보호한다. 디바이스들(A, B)의 쌍 및 디바이스들(A, C)의 쌍은 각각 별개의 보안 통신 채널들을 사용하므로, 디바이스 A의 키체인 매니저(205)는, 디바이스 A가 디바이스 B와 구축한 보안 통신 채널에 기초하는 제1 키 또는 키들의 세트를 사용해, 디바이스 B로 송신할 패스워드(805)의 복사본을 암호화한다. 디바이스 A의 키체인 매니저(205)는 또한, 디바이스 A가 디바이스 C와 구축한 보안 통신 채널에 기초하는 제2의, 상이한 키 또는 키들의 세트를 사용해, 디바이스 C로 송신할 패스워드(805)의 또 다른 복사본을 암호화한다.
예를 들어, 디바이스들(C, A) 사이의 보안 통신 채널 및 디바이스들(C, B) 사이의 보안 통신 채널은 각각 OTR 메시징을 사용하여 일부 실시예들에서 구현된다. OTR 세션은, 일부 그러한 실시예들에서 디바이스들(C, A)의 디바이스 서명 공개/개인 키 쌍들에 기초하여 디바이스들(C, A) 사이에서 구축된다. 추가적으로, 또 다른 별개의 OTR 세션이, 디바이스들(C, B)의 디바이스 서명 공개/개인 키 쌍들에 기초하여 디바이스들 (C, B) 사이에서 구축된다. 일부 실시예들의 디바이스 서명 키 쌍들은, 도 4 내지 도 6을 참조하여 전술한 바와 같이 동기 서클에 디바이스들(A 내지 C)을 등록하기 위해 생성된 것들과 동일하다.
디바이스 C의 키체인 매니저(205)가 디바이스 A에 대한 패스워드(805)의 복사본 및 디바이스 B에 대한 패스워드(805)의 또 다른 복사본을 암호화하면, 디바이스 C는 (원 안의 4에서) 패스워드(805)의 암호화된 복사본들 및 패스워드(805)를 기술하는 메타데이터를, 클라우드 서비스들(305)의 저장장치(325)에 저장한다. 패스워드(805)를 기술하기 위한 메타데이터의 예들은 패스워드의 유형(인터넷 패스워드, 애플리케이션 패스워드, 네트워크 패스워드 등), 패스워드가 연관되거나 패스워드가 사용되는 애플리케이션 또는 웹사이트의 명칭, 애플리케이션 또는 웹사이트의 경로 등을 포함한다.
앞서 설명한 바와 같이, 저장장치들(310 내지 330)은 일부 실시예들에서 키-값 저장소들로서 구현된다. 수신 디바이스(receiving device)를 위해 의도되는 송신 디바이스(sending device)에 의해 클라우드 서비스들(305)(예컨대, 저장장치(325))에 저장된 데이터에 대한 일부 실시예들의 키는, 제1 및 제2 디바이스들이 속하는 동기 서클의 명칭, 송신 디바이스의 식별자, 및 수신 디바이스의 식별자의 연결(concatenation)이다. 일부 실시예들에서, 수신 디바이스는 이 키-값 쌍으로 등록하여, 키-값 쌍의 값이 송신 디바이스에 의해 변화할 때(예컨대, 값이 추가되고, 수정되고, 삭제되는 등), 클라우드 서비스들(305)은 (예컨대, 푸시 통지 서비스를 통해) 수신 디바이스에 통지하게 된다.
그러한 접근법 하에서, 클라우드 서비스들(305)이 디바이스 A에 대한 패스워드(805)의 복사본 및 그것의 대응하는 메타데이터를 디바이스 C로부터 수신하는 경우, 클라우드 서비스들(305)은 (원 안의 5에서) 전술된 방식으로 형성된 키의 값으로서 데이터를 저장장치(325)에 저장한다. 클라우드 서비스들(305)은 이어서 (예컨대, 푸시 통지 서비스를 통해) 키와 연관된 값이 변화되었음을(예컨대, 이 예에서는 데이터가 추가됨) 디바이스 A에 통지한다. 유사하게, 클라우드 서비스들(305)이 디바이스 B에 대한 패스워드(805)의 복사본 및 그것의 대응하는 메타데이터를 디바이스 C로부터 수신하는 경우, 클라우드 서비스들(305)은 (원 안의 5에서) 전술된 방식으로 형성된 키의 값으로서 데이터를 저장장치(325)에 저장한다. 클라우드 서비스들(305)은 이어서 (예컨대, 푸시 통지 서비스를 통해) 키와 연관된 값이 변화되었음을(예컨대, 이 예에서는 데이터가 추가됨) 디바이스 B에 통지한다. 디바이스 B는 도 8에서 오프라인으로 도시되어 있으므로, 디바이스 B는 이 예에서 아직 통지를 수신하지 않는다.
계속해서 도 8과 관련하여, 디바이스 A가 클라우드 서비스들(305)로부터 통지를 수신하는 경우, 디바이스 A는 (원 안의 6에서), 디바이스 C가 암호화된 패스워드(805)의 복사본 및 메타데이터를 클라우드 서비스들(305)에 저장하는 데 사용했던 것과 동일한 키를 사용해, 암호화된 패스워드(805)의 복사본 및 연관된 메타데이터를 검색한다. 디바이스 A가 패스워드 데이터를 검색하면, 디바이스 A는 (원 안의 7에서), 디바이스 C와 구축한 보안 통신 채널에 대해 생성된 키 또는 키들의 세트를 사용함으로써 패스워드(805)의 복사본을 복호화한다. 패스워드(805)의 복사본을 복호화할 시, 디바이스 A는 (원 안의 8에서), 패스워드(805)의 복사본을 암호화하고 디바이스 A의 저장장치(210)에 저장한다. 이 시점에서, 디바이스 A는 패스워드(805)로 업데이트되고, 따라서, 디바이스 A 상에 저장된 패스워드들은 디바이스 C 상에 저장된 패스워드들과 동기화된다.
도 9에 예시된 바와 같이, 디바이스 B는 이제 온라인이다. 클라우드 서비스들(305)이 디바이스 B가 온라인인 것을 검출하는 경우, 클라우드 서비스들(305)은, 디바이스 C로부터 데이터를 수신하기 위한 키-값 쌍과 연관된 값이 변화되었음(예컨대, 이 예에서는 데이터가 추가됨)을 나타내는 통지를 디바이스 B에 송신한다.
디바이스 B가 클라우드 서비스들(305)로부터 통지를 수신하는 경우, 디바이스 B는 (원 안의 9에서), 디바이스 C가 암호화된 패스워드(805)의 복사본 및 메타데이터를 클라우드 서비스들(305)에 저장하는 데 사용했던 동일한 키를 사용해, 암호화된 패스워드(805)의 복사본 및 연관된 메타데이터를 검색한다. 디바이스 B가 패스워드 데이터를 검색한 후, 디바이스 B는 (원 안의 10에서) 디바이스 C와 구축한 보안 통신 채널에 대해 생성된 키 또는 키들의 세트를 사용함으로써 패스워드(805)의 복사본을 복호화한다.
디바이스 B가 패스워드(805)의 복사본을 복호화한 후, 디바이스 B는 (원 안의 11에서), 패스워드(805)의 복사본을 암호화하고 디바이스 B의 저장장치(210)에 저장한다. 이 시점에서, 디바이스 B는 패스워드(805)로 업데이트되고, 따라서, 디바이스 B 상에 저장된 패스워드들은 디바이스 C 상에 저장된 패스워드들과 동기화된다.
도 7 내지 도 9의 데이터 흐름 동작들이 도 7 내지 도 9에 도시된 원 안의 숫자들의 번호 순서에 기초하여 특정한 순서로 기술되어 있지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 원 안의 숫자들이 반드시 데이터 흐름 동작들의 순서를 나타내는 것은 아니라는 것과 데이터 흐름 동작들이 많은 상이한 순서들로 일어날 수 있다는 것을 인식할 것이다. 예를 들어, 도 7에 예시된 순차적인 데이터 흐름 동작들(4 내지 6)의 세트 및 순차적인 데이터 흐름 동작들(7 내지 9)의 세트는 일부 실시예들에서 서로 독립적으로 일어난다. 유사하게, 도 8 및 도 9에 도시된 순차적인 데이터 흐름 동작들(6 내지 8)의 세트 및 순차적인 데이터 흐름 동작들(9 내지 11)의 세트는 서로 독립적으로 일어난다.
A. 키체인 데이터 구조
앞서 언급한 바와 같이, 키체인은 일부 실시예들에서, 패스워드들, 개인키들, 인증서들, 보안 노트들 등을 포함할 수 있는 데이터의 정의된 집합이다. 일부 실시예들에서, 키체인 매니저는 키체인을 표현하기 위한 데이터 구조를 생성 및 저장한다. 도 10은 일부 실시예들의 키체인 매니저에 의해 저장된 키체인에 대한 데이터 구조(1005)를 개념적으로 예시한다. 도시된 바와 같이, 데이터 구조(1005)는 키체인 ID(1010), 키체인 항목들(1 내지 N), 및 액세스 데이터(1015)를 포함한다. 키체인 ID(1010)는 키체인(1005)을 식별하기 위한 고유 식별자이다. 액세스 데이터(1015)는 키체인(1005) 자체에 대한 액세스를 제어하기 위한 것이고(예컨대, 어떤 애플리케이션들이 키체인(1005)에 액세스할 수 있는지 그리고/또는 어떤 동작들(예컨대, 판독, 기록, 삭제 등)이 키체인(1005) 상에서 수행될 수 있는지 등), 아래에 기술된 액세스 데이터(1035)와 구조가 유사하다.
일부 실시예들의 키체인 항목은 데이터의 개별 부분(예컨대, 패스워드, 키, 인증서 등)을 표현한다. 도 10에 도시된 바와 같이, 키체인 항목(1020)은 키체인(1005)의 키체인 항목 1을 표현한다. 키체인 항목(1020)은 키체인 항목 ID(1025), 데이터(1030), 속성들(1 내지 M), 액세스 데이터(1035)(또한 액세스 객체로 지칭됨)를 포함한다. 키체인 항목 ID(1025)는 키체인 항목(1020)을 식별하기 위한 고유 식별자이다.
데이터(1030)는 키체인 항목(1020)의 실제 데이터 값 및/또는 값들이다. 예를 들어, 키체인(1020)이 패스워드를 표현하는 경우, 데이터(1030)는 패스워드의 값(예컨대, 알파벳 문자들의 열)을 저장한다. 일부 실시예들에서, 키체인 매니저는, 키체인 매니저가 데이터를 저장할 때 특정 유형들의 키체인 항목들(예컨대, 패스워드들, 개인키들 등)의 데이터를 암호화한다. 다른 유형들의 키체인 항목들(예컨대, 인증서들)의 데이터에 대해, 키체인 매니저는 데이터를 암호화하지 않으면서 단순히 데이터를 저장한다.
키체인 항목(1020)의 속성들(1 내지 M)은 키체인 항목(1020)을 기술하는 메타데이터를 저장하기 위한 것이다. 상이한 유형들의 키체인 항목들은 상이한 세트들의 속성들을 갖는다. 예를 들어, 인터넷 패스워드들은 보안 도메인, 프로토콜 유형(예컨대, HTTP(hypertext transfer protocol), HTTPS(hypertext transfer protocol secure), FTP(file transfer protocol) 등), 경로(예컨대, 인터넷 리소스의 URL(uniform resource locator)) 등과 같은 속성들을 포함하는 속성들을 갖는다.
일부 실시예들에서의 각각의 키체인 항목은, 키체인 항목에 대한 가장 최근 수정의 시간 및 날짜(또한 타임스탬프로 지칭됨)를 나타내는 데이터 필드 속성을 포함한다. 일부 실시예들에서, 각각의 키체인 항목은 또한, 키체인 항목이 삭제된 키체인 항목임을 특정하기 위한 속성(또한 툼스톤(tombstone)으로 지칭됨)을 포함한다. 속성이 키체인 항목이 툼스톤임을 특정하는 경우, 키체인 매니저는 키체인 항목의 데이터 필드를 유지하지만, 키체인 매니저는 키체인 항목들의 데이터(1030)의 값을 널(null) 또는 비어 있는 것으로 설정한다. 일부 실시예들에서, 충돌하는 키체인 항목들의 해결로부터 발생된 키체인 항목은, (1) 키체인 항목이 충돌 해결의 결과임을 나타내는 플래그, (2) 충돌을 해결하는 데 사용된 충돌 해결자(conflict resolver)의 버전 번호, 및 (3) 그로부터 키체인 항목이 해결된 충돌하는 키체인 항목들(또한 모 키체인 항목(parent keychain item)들로 지칭됨)을 포함하는 속성들의 세트를 포함한다. 속성들의 세트는 일부 실시예들에서 키체인 항목의 충돌 해결 메타데이터로서 지칭된다.
일부 실시예들에서, 키체인 항목의 속성들 또는 속성들의 서브세트는 키체인 항목을 고유하게 식별하기 위한 기본 키(primary key)로서 사용된다. 즉, 동일한 기본 키를 갖는 2개의 키체인 항목은 (키체인 항목들의 데이터 값들이 동일한지 여부에 상관없이) 동일한 키체인 항목으로 여겨진다.
액세스 데이터(1035)는 키체인 항목(1020)에의 액세스를 제어하기 위한 것이다. 예시된 바와 같이, 액세스 데이터(1035)는 키체인 항목(1020)에의 액세스를 제어하기 위한 액세스 제어 목록(access control list: ACL) 엔트리들(1 내지 K)을 포함한다. 도 10은 액세스 데이터(1035)의 ACL 엔트리 1을 표현하는 ACL 엔트리(1040)를 예시한다. ACL 엔트리(1040)는, 키체인 항목(1020) 상에서 수행될 수 있는 동작들(예컨대, 판독, 기록, 삭제, 복호화, 인증 등)을 특정하는 인가 태그(authorization tag)들(1045)을 포함한다. 이 예에서, 인가 태그들(1045)은 인가 태그들(1 내지 H)을 포함한다.
또한, ACL 엔트리(1040)는 신뢰된 애플리케이션(trusted application)들의 목록(1050)을 포함한다. 도시된 바와 같이, 신뢰된 애플리케이션들의 목록(1050)은 애플리케이션 ID(1 내지 J)를 포함한다. 각각의 애플리케이션 ID는, 사용자 인가 없이 인가 태그들(1045)에 의해 특정된 동작들을 수행할 수 있는 특정한 애플리케이션을 식별하기 위한 고유 식별자이다.
본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는, 키체인 데이터 구조(1050)가, 키체인 매니저가 키체인에 요구되는 정보를 저장하는 데 사용할 수 있는, 유일한 하나의 가능한 데이터 구조임을 인식할 것이다. 예를 들어, 상이한 실시예들은 추가의 또는 더 적은 정보를 저장하는 것, 상이한 순서로 정보를 저장하는 것 등을 할 수 있다.
B. 키체인 항목들의 동기화
앞서 설명한 바와 같이, 일부 실시예들의 동기 서클 내의 디바이스들은, 키체인의 개별 키체인 항목들을 동기화함으로써 디바이스들 사이에서 키체인을 동기화한다. 도 11은 일부 실시예들의 키체인 매니저의 상이한 상태들 및 이러한 상태들 사이의 전환들을 기술하는 상태 다이어그램(1100)을 개념적으로 예시한다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는, 일부 실시예들에서 키체인 매니저가 모든 상이한 유형들의 입력 이벤트들에 관한 많은 상이한 상태를 가질 것이고, 상태 다이어그램(1100)이 이 이벤트들의 서브세트에 특히 중점을 둔다는 것을 인식할 것이다. 특히, 상태 다이어그램(1100)은, 동기 서클의 멤버들인 디바이스들과 패스워드들을 동기화하기 위한 입력 이벤트들 및 관련 상태들을 기술한다. 도 11을 기술할 때, 키체인 매니저가 실행되고 있는 디바이스는 로컬 디바이스로 지칭될 것이다.
키체인 매니저가 키체인들을 동기화하기 위한 어떠한 이벤트들도 처리하고 있지 않는 경우, 키체인 매니저는 정상 상태(1105)에 있다. 상태(1105)에서, 키체인 매니저는 키체인들을 동기화하는 것과 관련되지 않는 다른 동작들을 수행할 수 있다. 예를 들어, 키체인 매니저는, 동기 서클에 가입하려는 요청들을 수용, 거부, 및/또는 인정하는 등록 동작들을 수행할 수 있다.
동기 서클 내의 피어 디바이스로부터 매니페스트 다이제스트(manifest digest)를 수신 시, 키체인 매니저는 매니페스트 다이제스트 요청을 처리하기 위한 상태(1110)로 전환된다. 일부 실시예들에서, 매니페스트 다이제스트는 피어 디바이스의 현재 키체인 항목들의 목록이다. 일부 실시예들의 키체인 매니저는 동기 서클 내의 각각의 피어 디바이스에 대한 매니페스트들의 이력을 저장한다.
상태(1110)에서, 키체인 매니저는, 피어 디바이스에 대한 로컬 디바이스의 이력 내의 가장 최근의 매니페스트를, 피어 디바이스로부터 수신된 매니페스트 다이제스트와 비교함으로써, 매니페스트 다이제스트에 대한 응답을 생성한다. 매니페스트들이 매칭되고, 로컬 디바이스가 피어 디바이스의 매니페스트 다이제스트 내의 키체인 항목들과 동일한 키체인 항목들을 갖는 경우, 키체인 매니저는 로컬 디바이스가 피어 디바이스와 동기화되어 있음을 나타내는 메시지를 생성한다.
피어 디바이스에 대한 로컬 디바이스의 이력 내의 가장 최근 매니페스트가 피어 디바이스 매니페스트들로부터 수신된 매니페스트 다이제스트와 매칭되지만, 로컬 디바이스가 피어 디바이스의 매니페스트 다이제스트 내의 키체인 항목들과 비교해 상이한 세트의 키체인 항목들을 갖는 경우, 키체인 매니저는 델타 매니페스트(delta manifest)를 포함하는 메시지를 생성한다. 일부 실시예들에서, 델타 매니페스트는, (1) 로컬 디바이스의 키체인 항목들과, 피어 디바이스의 매니페스트에 열거된 키체인 항목들 사이의 차이들의 목록, 및 (2) 목록 내의 대응하는 키체인 항목들에 대한 데이터를 포함한다. 델타 매니페스트는, 피어 디바이스의 매니페스트 다이제스트에 포함되지 않는 키체인 항목들, 및/또는 동일하지만(예컨대, 동일한 기본 키를 갖지만) 상이한 데이터 값들을 갖는 키체인 항목들을 포함할 수 있다.
피어 디바이스에 대한 로컬 디바이스의 이력 내의 가장 최근 매니페스트 및 피어 디바이스로부터 수신된 매니페스트 다이제스트가 매칭되지 않는 경우, 키체인 매니저는 로컬 디바이스의 완전한 매니페스트(complete manifest)를 포함하는 메시지를 생성한다. 일부 실시예들에서의 완전한 매니페스트는 (1) 로컬 디바이스의 키체인 항목들 모두의 목록 (2) 목록 내의 대응하는 키체인 항목들에 대한 데이터를 포함한다. 피어 디바이스로부터의 매니페스트 다이제스트를 처리 시, 키체인 매니저는 피어 디바이스로 생성된 응답을 송신하고 정상 상태(1005)로 다시 전환된다.
정상 상태(1105)에 있는 동안, 키체인 매니저가 로컬 키체인에 대한 변화를 수신하는 경우, 키체인 매니저는 로컬 키체인에 대한 변화를 처리하기 위한 상태(1115)로 진행한다. 상태(1115)에서, 키체인 매니저는 로컬 키체인을 그 변화로 업데이트한다. 일부 실시예들에서, 키체인은, 동기 서클 내의 피어 디바이스들과 동기화하기 위한 것으로 특정되는 키체인 항목들, 및 동기 서클 내의 피어 디바이스들과 동기화하기 위한 것이 아닌 키체인 항목들을 포함할 수 있다. 로컬 키체인에 대한 변화가 동기 서클 내의 피어 디바이스들과 동기화하기 위한 것으로 특정되는 어떠한 키체인 항목들에도 영향을 주지 않는 경우, 키체인 매니저는 정상 상태(1105)로 되돌아간다. 그렇지 않다면, 키체인 매니저는, (1) 동기 서클 내의 피어 디바이스들과 동기화하기 위한 것으로 특정되고 (2) 로컬 키체인에 대한 변화에 의해 영향을 받는 키체인 항목들을 동기화하기 위해 상태(1120)로 전환된다.
상태(1120)에서, 키체인 매니저는 로컬 디바이스의 키체인에 대한 업데이트를 동기 서클 내의 피어 디바이스들의 각각으로 송신한다. 일부 실시예들에서, 키체인 매니저는 피어 디바이스들로 업데이트들을 송신하기 위해 도 12를 참조하여 아래에 기술된 프로세스(1200)를 수행한다. 키체인 매니저가 피어 디바이스들로 업데이트들을 송신한 후, 키체인 매니저는 정상 상태(1105)로 되돌아간다.
키체인 매니저가 정상 상태(1105)에 있고 동기 서클 내의 피어 디바이스로부터 완전한 매니페스트를 수신하는 경우, 키체인 매니저는 완전한 매니페스트를 처리하기 위한 상태(1125)로 전환된다. 일부 실시예들에서, 키체인 매니저는, (1) 로컬 디바이스의 키체인 항목들과 피어 디바이스의 완전한 매니페스트에 열거된 키체인 항목들 사이의 차이들의 목록, 및 (2) 목록 내의 대응하는 키체인 항목들에 대한 데이터를 포함하는, 델타 매니페스트를 생성함으로써 완전한 매니페스트를 처리한다. 델타 매니페스트가 비어 있는 경우(즉, 로컬 디바이스가 피어 디바이스의 완전한 매니페스트에 열거된 키체인 항목들과 동일한 키체인 항목들을 갖는 경우), 키체인 매니저는 그러한 것을 나타내는 메시지를 피어 디바이스로 송신하고 이어서 정상 상태(1105)로 되돌아간다. 델타 매니페스트가 비어 있지 않은 경우, 키체인 매니저는 피어 디바이스로 델타 매니페스트를 송신하고 이어서 정상 상태(1105)로 되돌아간다.
정상 상태(1105)에서, 키체인 매니저가 로컬 디바이스의 키체인을 업데이트하기 위한 피어 디바이스로부터의 델타 매니페스트를 수신하는 경우, 키체인 매니저는 피어 디바이스로부터의 업데이트들을 로컬 디바이스의 키체인에 적용하기 위한 상태(1135)로 전환된다. 일부 실시예들에서, 키체인 매니저는 피어 디바이스로부터의 업데이트들을 로컬 디바이스의 키체인에 적용하기 위해 도 13을 참조하여 아래에 기술된 프로세스(1300)를 수행한다. 키체인 매니저가 피어 디바이스의 업데이트들을 로컬 키체인에 적용하면, 키체인 매니저는 피어 디바이스의 업데이트들을 피어 디바이스에 대한 로컬 디바이스의 이력 내의 가장 최근 매니페스트에 적용하고, 수정된 매니페스트를 피어 디바이스의 매니페스트들에 대한 로컬 디바이스의 이력에 저장한다. 키체인 매니저는 이어서, 키체인 매니저가 방금 저장한 매니페스트인 피어 디바이스에 대한 로컬 디바이스의 이력 내의 가장 최근 매니페스트를, 로컬 디바이스의 현재 키체인 항목들의 매니페스트와 비교한다.
매니페스트들이 매칭되지만, 로컬 디바이스가 피어 디바이스의 매니페스트 다이제스트 내의 키체인 항목들과 비교해 상이한 세트의 키체인 항목들을 갖는 경우, 키체인 매니저는 상태(1140)로 전환되고 동기 서클 내의 피어 디바이스들에 송신할 업데이트들을 스케줄링한다. 그렇지 않다면, 키체인 매니저는 정상 상태(1105)로 되돌아간다.
상태(1140)에서, 키체인 매니저는, 처리해야 할 피어 디바이스들로부터의 업데이트들이 남아 있는지 여부를 확인한다. 만일 그렇다면, 키체인 매니저는 상태(1135)로 전환되어, 로컬 키체인을 업데이트하기 위한 피어 디바이스들로부터의 임의의 델타 매니페스트들을 계속해서 처리한다. 처리해야 할 피어 디바이스들로부터의 업데이트가 없는 경우, 키체인 매니저는 상태(1140)로부터 상태(1145)로 전환되어 스케줄링된 업데이트들을 동기 서클 내의 피어 디바이스들로 송신한다. 일부 실시예들에서, 키체인 매니저는 피어 디바이스들로 업데이트들을 송신하기 위해 도 12를 참조하여 아래에 기술된 프로세스(1200)를 수행한다. 키체인 매니저가 스케줄링된 업데이트들 모두를 피어 디바이스들로 송신하면, 키체인 매니저는 정상 상태(1105)로 되돌아간다.
도 12는 업데이트들을 피어 디바이스들로 푸시하기 위한 일부 실시예들의 프로세스(1200)를 개념적으로 예시한다. 일부 실시예들에서, 본 출원에 기술된 키체인 매니저는, 로컬 디바이스의 로컬 키체인에 적용되었던 업데이트들을 동기 서클 내의 피어 디바이스들로 송신하기 위해 프로세스(1200)를 수행한다. 예를 들어, 키체인 매니저는, 키체인 매니저가 도 11을 참조하여 전술된 상태들(1120, 1145)에 있을 때, 프로세스(1200)를 수행한다.
프로세스(1200)는 (1210에서) 동기 서클 내의 피어 디바이스를 식별하는 것으로 시작한다. 일부 실시예들에서, 프로세스(1200)는 동기 디바이스 목록의 로컬 복사본에 액세스함으로써 피어 디바이스를 식별하는 한편, 다른 실시예들에서, 프로세스(1200)는 클라우드 서비스들(305)(예컨대, 저장장치(310))에 저장된 동기 디바이스 목록에 액세스함으로써 피어 디바이스를 식별한다.
다음으로, 프로세스(1200)는 (1220에서) 로컬 디바이스의 매니페스트가 피어 디바이스의 매니페스트와 매칭되는지 여부를 결정한다. 일부 실시예들에서, 프로세스(1200)는 피어 디바이스에 대한 로컬 디바이스의 이력 내의 가장 최근 매니페스트를 피어 디바이스의 매니페스트로서 사용한다. 프로세스(1200)가 매니페스트들이 매칭된다고 결정하는 경우, 프로세스(1200)는 1260으로 진행한다. 그렇지 않다면, 프로세스(1200)는 1230에서 계속된다.
1230에서, 프로세스(1200)는 로컬 디바이스 및 피어 디바이스의 매니페스트들에 기초하여 델타 매니페스트를 생성한다. 전술한 바와 같이, 일부 실시예들에서의 델타 매니페스트는, (1) 로컬 디바이스의 키체인 항목들과 피어 디바이스의 매니페스트에 열거된 키체인 항목들 사이의 차이들의 목록, 및 (2) 목록 내의 대응하는 키체인 항목들에 대한 데이터를 포함한다. 일부 실시예들에서, 프로세스(1200)는 (1) 로컬 디바이스의 키체인 내의 키체인 항목들을 피어 디바이스의 매니페스트에 열거된 키체인 항목들에 대해 비교하고, (2) 차이들을 식별함으로써, 델타 매니페스트를 생성한다.
프로세스(1200)는 이어서 (1240에서), 피어 디바이스에 대한 암호화 키 또는 키들의 세트를 사용해 델타 매니페스트 내에서 특정되는 로컬 키체인 항목들의 복사본을 암호화한다. 앞서 설명한 바와 같이, 보안 통신 채널은 일부 실시예들에서 동기 서클 내의 디바이스들의 모든 쌍 사이에서 사용된다. 그와 같이, 프로세스(1210)는 피어 디바이스와 통신하는 데 사용된 보안 통신 채널에 대해 구축된 키 또는 키들의 세트를 식별하고, 식별된 키 또는 키들의 세트를 사용하여 로컬 키체인 항목들의 복사본들을 암호화한다.
다음으로, 프로세스(1200)는 (1250에서), 암호화된 키체인 항목들 및 델타 매니페스트를 보안 통신 채널을 통해 피어 디바이스로 송신한다. 프로세스(1200)가 피어 디바이스로 정보를 송신하면, 프로세스(1200)는 이어서 (1260에서) 동기 서클 내에 처리할 피어 디바이스가 남아 있는지 여부를 결정한다. 프로세스(1200)가 처리할 피어 디바이스가 남아 있다고 결정하는 경우, 프로세스(1200)는 1210으로 되돌아가, 로컬 키체인에 적용되었던 업데이트들을 동기 서클 내의 나머지 피어 디바이스들로 송신하는 것을 계속한다. 프로세스(1200)가 처리할 피어 디바이스가 남아 있지 않다고 결정하는 경우, 프로세스(1200)는 종료된다.
도 13은 피어 디바이스들로부터의 업데이트들을 처리하기 위한 일부 실시예들의 프로세스(1300)를 개념적으로 예시한다. 일부 실시예들에서, 본 출원에서 기술된 키체인 매니저는, 피어 디바이스들로부터의 업데이트들을 로컬 디바이스의 로컬 키체인에 적용하기 위해 프로세스(1300)를 수행한다. 예를 들어, 키체인 매니저는, 키체인 매니저가 도 11을 참조하여 전술된 상태(1135)에 있을 때(예컨대, 키체인 매니저가 처리할 피어 디바이스로부터 델타 매니페스트를 수신할 때) 프로세스(1300)를 수행한다.
프로세스(1300)는 (1310에서), 피어 디바이스로부터 수신된 델타 매니페스트 내에서 특정된 업데이트된 키체인 항목을 식별하는 것으로 시작한다. 다음으로, 프로세스(1300)는 (1320에서) 업데이트된 키체인 항목을 복호화한다. 앞서 언급한 바와 같이, 보안 통신 채널은 일부 실시예들에서 동기 서클 내의 디바이스들의 모든 쌍 사이에서 사용된다. 따라서, 프로세스(1310)는 피어 디바이스와 통신하는 데 사용된 보안 통신 채널에 대해 구축된 키 또는 키들의 세트를 식별하고, 식별된 키 또는 키들의 세트를 사용하여 업데이트된 키체인 항목을 복호화한다.
프로세스(1300)는 이어서 (1330에서) 업데이트된 키체인 항목의 기본 키를 식별한다. 앞서 설명한 바와 같이, 일부 실시예들에서, 키체인 항목의 속성들 또는 속성들의 서브세트는 키체인 항목을 고유하게 식별하기 위한 기본 키로서 사용된다.
다음으로, 프로세스(1320)는 (1340에서) 로컬 키체인 내의 키체인 항목이 업데이트된 키체인 항목의 기본 키와 동일한 기본 키를 갖는지 여부를 결정한다. 프로세스(1300)가, 로컬 키체인 내의 어떠한 키체인 항목도 업데이트된 키체인 항목의 기본 키와 동일한 기본 키를 갖지 않는다고 결정하는 경우, 프로세스(1300)는 (1350에서) 업데이트된 키체인 항목을 로컬 키체인에 적용한다. 일부 실시예들에서, 프로세스(1300)는 로컬 키체인에 업데이트된 키체인을 추가함으로써 업데이트된 키체인 항목을 로컬 키체인에 적용한다.
프로세스(1300)가, 로컬 키체인 내의 키체인 항목이 업데이트된 키체인 항목의 기본 키와 동일한 기본 키를 갖는다고 결정하는 경우, 프로세스(1300)는 (1360에서) 업데이트된 키체인 항목과 로컬 키체인 항목 사이의 충돌을 해결하고 충돌 해결의 결과를 로컬 키체인에 적용한다. 상이한 실시예들의 프로세스(1300)는 충돌하는 키체인 항목들 사이의 충돌들을 상이하게 해결한다. 하나의 그러한 접근법이 도 15를 참조하여 아래에 기술된다.
C. 키체인 항목 충돌의 해결
키체인 항목들을 동기화할 때, 일부 실시예들의 키체인 매니저는 동일한 키체인 항목의 다수의 버전 사이에서 충돌들을 검출할 수 있다. 상이한 실시예들에서, 키체인 매니저는 상이한 기술들을 사용해 키체인 항목 충돌들을 해결한다. 예를 들어, 일부 실시예들에서, 방법은 키체인 항목의 가장 최근 버전을 디바이스들 사이에서 동기화될 키체인 항목으로서 사용한다. 추가의 그리고/또는 상이한 접근법들이 일부 실시예들에서 사용될 수 있다.
일부 실시예들에서, 디바이스들은 그들의 충돌 해결 프로세스들(또한 충돌 해결자들"로 지칭됨)을 업데이트할 수 있다. 일부 경우들에서의 업데이트된 프로세스, 및 이전의 업데이트되지 않은 프로세스는, 어떤 키체인 항목 값들이 사용되어야 하는지를 결정할 때 상이한 결과들을 제공한다. 일부 실시예들에서, 동기 서클 내의 하나 이상의 디바이스가 업데이트된 충돌 해결 프로세스를 사용하고 있는 동안, 동일한 동기 서클 내의 하나 이상의 다른 디바이스는 이전 버전의 충돌 해결 프로세스를 사용하고 있는 것이 가능하다. 도 14는 충돌하는 충돌 해결자들을 해결하기 위한 일부 실시예들의 프로세스(1400)를 개념적으로 예시한다. 일부 실시예들에서, 도 13을 참조하여 전술된 프로세스(1300)는 동작(1360)을 이행하기 위하여 프로세스(1400)를 수행한다.
프로세스(1400)는 (1410에서) 충돌하는 키체인 항목들의 충돌 해결 메타데이터를 식별하는 것으로 시작한다. 앞서 언급한 바와 같이, 일부 실시예들의 충돌 해결 메타데이터는, (1) 키체인 항목이 충돌 해결의 결과임을 나타내는 플래그, (2) 충돌을 해결하는 데 사용된 충돌 해결자의 버전 번호, 및 (3) 그로부터 키체인 항목이 해결된 충돌하는 키체인 항목들(또한 모 키체인 항목들로 지칭됨)을 포함한다.
다음으로, 프로세스(1400)는 (1420에서), 업데이트된 키체인 항목의 충돌 해결자와 로컬 키체인 항목의 충돌 해결자가 충돌하는지 여부를 결정한다. 일부 실시예들에서, 업데이트된 키체인 항목 및 로컬 키체인 항목의 충돌 해결자들은, (1) 키체인 항목들 둘 모두가, 키체인 항목이 충돌 해결의 결과였음을 나타내는 플래그를 포함하는 경우, (2) 업데이트된 키체인 항목 및 로컬 키체인 항목이 업데이트된 키체인 항목의 모 키체인 항목들로서 특정되는 경우, 및 (3) 업데이트된 키체인 항목을 해결하는 데 사용된 충돌 해결자의 버전 번호가 로컬 디바이스의 충돌 해결자의 버전 번호와 동일하지 않은 경우, 충돌한다.
프로세스(1400)가 충돌 해결자들이 충돌하지 않는다고 결정하는 경우, 프로세스(1400)는 (1430에서) 로컬 디바이스의 충돌 해결자로 키체인 항목 충돌을 해결하고, 이어서 프로세스(1400)는 종료된다. 프로세스(1400)가 충돌 해결자들이 충돌한다고 결정하는 경우, 프로세스(1400)는 (1450에서) 로컬 디바이스의 충돌 해결자를 사용할지 여부를 결정한다. 로컬 충돌 해결자의 버전 번호가 업데이트된 키체인 항목을 해결하는 데 사용된 충돌 해결자의 버전 번호보다 큰 경우, 프로세스(1400)는 (1430에서) 로컬 디바이스의 충돌 해결자로 키체인 항목 충돌을 해결한다. 그렇지 않다면, 프로세스(1400)는 (1430에서) 업데이트된 키체인 항목을 키체인 항목 충돌에 대한 해결로서 사용한다. 프로세스(1400)는 이어서 종료된다.
도 15는 키체인 항목 충돌들을 해결하기 위한 일부 실시예들의 프로세스(1500)를 개념적으로 예시한다. 일부 실시예들에서, 도 14를 참조하여 전술된 프로세스(1400)는 동작(1460)을 구현하기 위해 프로세스(1500)를 수행한다.
프로세스(1500)는 (1510에서) 충돌하는 업데이트된 키체인 항목과 로컬 키체인 항목의 타임스탬프들을 식별하는 것으로 시작한다. 앞서 언급한 바와 같이, 일부 실시예들에서의 키체인 항목의 데이터 구조는 키체인 항목에 대한 가장 최근 수정의 시간 및 날짜를 나타내는 날짜 필드를 포함한다. 일부 실시예들에서, 프로세스(1500)는 각각의 키체인 항목의 날짜 필드 속성에 액세스함으로써 타임스탬프들을 식별한다.
다음으로, 프로세스(1500)는 (1520에서) 업데이트된 키체인 항목의 타임스탬프가 더 최신인지 여부를 결정한다. 프로세스(1500)가 업데이트된 키체인 항목의 타임스탬프가 더 최신이라고 결정하는 경우, 프로세스(1500)는 (1540에서) 로컬 키체인 항목을 업데이트된 키체인 항목으로 업데이트하고, 이어서 프로세스(1500)는 종료된다. 프로세스(1500)가 업데이트된 키체인 항목의 타임스탬프가 더 최신이 아니라고 결정하는 경우, 프로세스(1500)는 (1530에서) 로컬 키체인 항목을 로컬 키체인 항목으로 업데이트하고, 이어서 프로세스(1500)는 종료된다.
IV. 키체인에 대한 데이터 보호 도메인의 사용
본 발명의 일부 실시예들은 조건들 및/또는 요건들의 정의된 세트들에 따라 디바이스들 상의 키체인 데이터(예컨대, 키체인 항목들)에의 액세스를 제한하기 위한 데이터 보호 특징을 제공한다. 일부 실시예들에서, 여러 상이한 보호 도메인들(또한 데이터 보호 클래스들로 지칭됨)이 정의되고, 디바이스 상의 각각의 키체인 항목은 정의된 보호 도메인들 중 하나에 속한다. 각각의 보호 도메인은 조건들의 세트와 연관된다. 조건들의 세트가 특정한 데이터 보호 도메인에 대해 충족되는 경우, 특정한 보호 도메인에 속하는 디바이스 내의 키체인 항목들은 디바이스에 의한 사용에 이용 가능하게 된다.
A. 데이터 보호 도메인
도 16은 상이한 디바이스들 내의 상이한 키체인 항목들을 개념적으로 예시한다. 구체적으로, 이 도면은, 상이한 보호 도메인들에 속하는 키체인 항목들이, 디바이스들이 상이한 보호 도메인들에 대해 충족하는 조건들에 따라, 이용 가능하게 되는 것을 예시한다. 이 도면은 소스 디바이스들(1605, 1610), 목적지 디바이스들(1615 내지 1635), 및 키체인 항목들(S1 내지 S3, C4, C5)을 예시한다.
일부 실시예들에서, 보호 도메인들은 디바이스들에 대한 운영 체제들(예컨대, iOS™, Windows™ 등)의 일부로서 미리 정의되고, 디바이스들에 제공된다. 이 운영 체제들에 의해 관리되는 디바이스들은 보호 도메인들을 이용하여, 보호 도메인들과 연관된 조건들이 충족된 후에만 디바이스들 내의 키체인 항목들이 이용 가능하게 함으로써 키체인 항목들을 보호할 수 있다. 이 미리 정의된 보호 도메인들은 본 특허 출원에서 시스템 보호 도메인들로 지칭된다.
일부 실시예들에서, 보호 도메인들은 디바이스들의 사용자 또는 디바이스들 상에서 실행되는 애플리케이션들의 개발자들에 의해 맞춤-정의될(custom-defined) 수 있다. 이 실시예들에서, 디바이스들 또는 운영 체제들의 제조업자들은 사용자에게 도구를 제공하여, 사용자가 보호 도메인들에 대해 상이한 세트들의 조건들을 정의함으로써 맞춤-정의된 보호 도메인들을 정의할 수 있게 한다. 또한 디바이스들 또는 운영 체제들의 제조업자들은 개발자들에게 소프트웨어 개발 키트(software development kit: SDK)들을 제공하여, 디바이스들 상에서 실행시키기 위해 개발자들이 작성하는 애플리케이션들에 대한 보호 도메인들에 대하여 상이한 세트들의 조건들을 정의함으로써 개발자가 맞춤-정의된 보호 도메인들을 정의할 수 있게 한다.
앞서 언급한 바와 같이, 상이한 보호 도메인들은 상이한 세트들의 조건들 또는 요건들과 연관된다. 일부 실시예들에서, 보호 도메인들은 특정 키체인 항목들에 대한 추가의 보안 레벨들을 제공하도록 정의될 수 있다. 즉, 제1 보호 도메인의 조건들은 제2 보호 도메인의 조건들의 서브세트여서, 디바이스들이 제1 보호 도메인의 조건들 외에 제2 보호 도메인의 추가의 조건들을 충족하는 경우에만, 제2 보호 도메인에 속하는 키체인 항목들이 디바이스들에 이용 가능하게 한다. 예를 들어, 제1 보호 도메인의 조건들은 디바이스가 부팅되고 실행되는 것을 포함하고, 제2 보호 도메인의 조건들은 그 디바이스가 부팅되고 실행되는 것뿐만 아니라 잠금 해제되는 것을 포함한다.
일부 실시예들에서, 보호 도메인들은 중첩되거나 중첩되지 않는 상이한 세트들의 조건들을 갖도록 정의될 수 있다. 예를 들어, 제1 보호 도메인의 조건들은 디바이스들이 잠금 해제된 후의 추가적인 인증(예컨대, 추가의 패스워드)을 포함할 수 있다. 제2 보호 도메인의 조건들은 디바이스들 내에서의 특정한 애플리케이션의 존재를 포함할 수 있다. 제1 및 제2 보호들의 이 조건들은 중첩되지 않는다.
이 예에서의 소스 디바이스(1605)는 업데이트된 키체인 항목들(S1 내지 S3)을 목적지 디바이스들(1615 내지 1625)로 푸시하는 디바이스이다. 도시된 바와 같이, 디바이스(1605) 내의 키체인 항목들(S1 내지 S3)은 각각 보호 도메인들(1 내지 3)에 속한다. 이 예에서의 보호 도메인들(1 내지 3)은 시스템 보호 도메인들이다. 보호 도메인들(1 내지 3)은 키체인 항목들에 상이한 보안 레벨들을 제공한다. 이 예에서, 보호 도메인 3의 조건들은 보호 도메인 2의 조건들의 서브세트이고, 보호 도메인 2의 조건들은 보호 도메인 1의 조건들의 서브세트이다.
이 예에서의 디바이스들(1615 내지 1625)은 상이한 세트들의 조건들을 충족한다. 구체적으로, 디바이스(1625)는 보호 도메인 3의 모든 조건들을 충족한다. 디바이스(1620)는 보호 도메인 2의 모든 조건들을 충족한다. 디바이스(1615)는 보호 도메인 1의 모든 조건들을 충족한다. 그 결과, 키체인 항목 S3은 디바이스(1625)의 사용에 이용 가능하지만 키체인 항목들(S1, S2)은 그렇지 않다. 키체인 항목들은 항목들의 이용 불가능을 나타내기 위해 점선의 평행사변형들로 예시된다. 키체인 항목들(S2, S3)은 디바이스(1620)의 사용에 이용 가능하지만 키체인 항목 S1은 그렇지 않다. 키체인 항목들(S1 내지 S3)은 셋 모두 디바이스(1615)의 사용에 이용 가능하다.
상이한 실시예들이, 키체인 항목들을 디바이스들의 사용에 이용 불가능하게 하는 상이한 방법들을 채용한다. 예를 들어, 일부 실시예들의 디바이스 내의 키체인 매니저는, 디바이스가 키체인 항목이 속하는 보호 도메인에 대한 조건들 모두를 충족하지는 않는 경우, 키체인 항목을 복호화하지 않고 그렇게 함으로써 키체인 항목을 사용 불가능하게 한다. 대안적으로 또는 결합하여, 일부 실시예들의 키체인 매니저는, 디바이스가 키체인 항목이 속하는 보호 도메인에 대한 조건들을 충족할 때까지, 디바이스 내에서 실행되는 애플리케이션들에 의해 키체인 항목이 액세스될 수 없게 한다. 일부 실시예들에서, 키체인이 푸시되는 시점에서 목적지 디바이스가, 키체인 항목이 속하는 보호 도메인의 조건들을 충족하지 않는 한, 목적지 디바이스의 키체인 매니저는 소스 디바이스로부터 푸시되는 키체인 항목을 수용하지 않는다.
이 예에서의 소스 디바이스(1610)는 업데이트된 키체인 항목들(C4, C5)을 목적지 디바이스들(1630, 1635)로 푸시하는 디바이스이다. 도시된 바와 같이, 디바이스(1610) 내의 키체인 항목들(C4, C5)은 각각 보호 도메인들(4, 5)에 속한다. 보호 도메인들(4, 5)은 상이한 세트들의 조건들을 갖는 맞춤-정의된 보호 도메인들이다. 이 예에서, 보호 도메인 4의 조건들은 보호 도메인 5의 조건들과 중첩되지 않는다.
이 예에서의 디바이스(1630)는 보호 도메인 4의 모든 조건들을 충족하지만 보호 도메인 5의 조건들 모두를 충족하지는 않는 한편, 디바이스(1635)는 보호 도메인 5의 모든 조건들을 충족하지만 보호 도메인 4의 조건들 모두를 충족하지는 않는다. 그 결과, 키체인 항목 C4는 디바이스(1630)의 사용에 이용 가능하지만 키체인 항목 C5는 그렇지 않다. 키체인 항목 C5는 디바이스(1635)의 사용에 이용 가능하지만 키체인 항목 C4는 그렇지 않다.
본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는, 일부 실시예들의 보호 도메인들의 사용이 키체인 항목들을 보호하는 것으로 제한되지 않는다는 것을 인식할 것이다. 임의의 유형의 데이터는 상이한 보안 레벨들을 받기 위해 상이한 보호 도메인들에 속하도록 정의될 수 있다. 예를 들어, 일부 실시예들의 제1 디바이스 내의 업데이트된 문서는 제2 디바이스로 푸시될 수 있지만, 제2 디바이스가 문서가 속하는 보호 도메인의 조건들 모두를 충족할 때까지, 문서는 제2 디바이스의 사용에 이용 불가능하게 유지된다.
도 17은 일부 실시예들이 키체인 항목들을 처리하기 위해 수행하는 프로세스(1700)를 개념적으로 예시한다. 일부 실시예들에서, 프로세스(1700)는, 하나 이상의 소스 디바이스가 키체인 항목들을 푸시한, 목적지 디바이스에 의해 수행된다. 특히, 목적지 디바이스의 키체인 매니저는 이 실시예들에서 프로세스(1700)를 수행할 수 있다. 일부 실시예들의 목적지 디바이스는 소스 디바이스들로부터의 키체인 항목들을 처리 큐 내에 보관한다. 예시적인 처리 큐는 도 18을 참조하여 아래에서 추가로 기술될 것이다. 일부 실시예들에서의 프로세스(1700)는, 목적지 디바이스가 부팅되고 소스 디바이스들로부터 하나 이상의 키체인 항목을 수신했을 때 시작된다.
프로세스(1700)는 (1710에서) 처리 큐로부터 키체인 항목을 인출(retrieve)하는 것으로 시작한다. 일부 실시예들에서, 처리 큐는 소스 디바이스들로부터 푸시된 키체인 항목들을 보관 유지하기 위한 저장 구조(예컨대, 파일 시스템)이다. 일부 실시예들에서, 소스 디바이스들은, 목적지 디바이스에 의해 미리 공개되는 목적지 디바이스의 공개키를 사용해, 키체인 항목 내의 데이터(예컨대, 패스워드)를 암호화한다. 이 실시예들에서, 키체인 항목들은 암호화된 채로 처리 큐에 저장된다.
목적지 디바이스는 대응하는 개인키(예컨대, 소스 디바이스들이 키체인 항목들을 암호화하는 데 사용했던 공개키를 포함하는 공개-개인 키 쌍의 개인키)를 사용하여 키체인 항목들을 복호화한다. 일부 실시예들에서, 목적지 디바이스는 디바이스가 지원하는 보호 도메인들의 각각에 대해 공개-개인 키 쌍을 생성한다. 상이한 보호 도메인들에 대한 키 쌍들에 대하여 더 많은 상세사항들이 도 25 및 도 26을 참조하여 아래에서 추가로 기술될 것이다.
프로세스(1700)는 이어서 (1720에서) 인출된 키체인 항목의 보호 도메인을 식별한다. 일부 실시예들에서의 키체인 항목은 또한, 키체인 항목이 속하는 보호 도메인을 식별하기 위한 식별자를 포함하거나 그와 연관된다. 일부 실시예들에서, 소스 디바이스들이 키체인 항목 내의 데이터를 암호화하는 데 사용했던 공개키는, 보호 도메인 식별자로서 역할을 한다. 프로세스(1700)는 인출된 키체인 항목이 속하는 보호 도메인을 식별하기 위해 키체인 항목의 보호 도메인 식별자를 판독한다.
다음으로, 프로세스(1700)는 (1730에서) 식별된 보호 도메인이 이용 가능한지 여부를 결정한다. 즉, 프로세스(1700)는 목적지 디바이스가 식별된 보호 도메인의 조건들 모두를 충족했는지 여부를 결정한다. 일부 실시예들에서, 목적지 디바이스는 디바이스에 대한 운영 체제의 일부로서 조건들의 정의들을 획득한다. 대안적으로 또는 결합하여, 일부 실시예들의 목적지 디바이스는, 목적지 디바이스와 소스 디바이스들이 목적지 및 소스 디바이스들을 포함하는 동기 서클을 구축할 때 조건들의 정의들을 획득할 수 있다.
프로세스(1700)가 (1730에서) 식별된 보호 도메인의 조건들 모두가 충족되지는 않는 것으로 결정하는 경우, 프로세스(1700)는 (1740에서) 키체인 항목을 큐 내에 다시 보관함으로써 키체인 항목을 처리 큐로 다시 반환하여, 키체인 항목으로 하여금, 이 키체인 항목이 속하는 보호 도메인의 조건들이 충족되기를 기다리게 할 수 있다. 프로세스(1700)는 이어서 1760으로 진행하고, 이는 아래에서 추가로 기술될 것이다.
프로세스(1700)가 (1730에서) 식별된 보호 도메인의 조건들 모두가 충족되는 것으로 결정하는 경우, 프로세스(1700)는 (1750에서) 키체인 항목을 처리한다. 1750에서, 일부 실시예들의 프로세스(1700)는 키체인 항목들을 동기화하는 것을 개시함으로써 키체인 항목을 처리한다. 일부 실시예들에서, 프로세스(1700)는 식별된 보호 도메인에 대한 목적지 디바이스의 개인키를 사용해 키체인 항목을 복호화한다.
다음으로, 프로세스(1700)는 (1760에서) 처리 큐 내에 아직 처리되어야 할 다른 키체인 항목들이 있는지 여부를 결정한다. 프로세스(1700)가 처리 큐 내에 다른 키체인 항목들이 있다고 결정하는 경우, 프로세스(1700)는 또 다른 키체인 항목을 인출하기 위해 1710으로 되돌아간다. 그렇지 않다면, 프로세스(1700)는 종료된다.
도 18은 입력되는 키체인 항목들을 보관하기 위한 처리 큐를 개념적으로 예시한다. 구체적으로, 이 도면은 일부 실시예들의 처리 큐가 상이한 보호 도메인들과 연관된 버킷들의 세트인 것을 예시한다. 이 도면은 소스 디바이스(1805), 목적지 디바이스(1810), 및 처리 큐(1815)를 예시한다.
소스 디바이스(1805)는 하나 이상의 키체인 항목을 업데이트하고 키체인 항목들을 목적지 디바이스(1810)로 푸시한다. 일부 실시예들에서, 소스 디바이스(1805)가 송신하는 키체인 항목(1840)은, 소스 디바이스(1805)가 키체인 항목(1840)과 함께 송신하는 보호 도메인 식별자(1835)와 연관되어 있다. 일부 실시예들에서, 소스 디바이스(1805)는 키체인 항목(1840)을 목적지 디바이스(1840)의 공개키(도시되지 않음)로 암호화하고, 이는 목적지 디바이스(1840)가 지원하는 각각의 보호 도메인에 대해 목적지 디바이스(1840)가 미리 공개한 것이다. 이 실시예들의 일부에서, 키체인 항목을 암호화하는 데 사용되는 공개키는 보호 도메인 식별자로서 역할을 할 수 있다.
목적지 디바이스(1810)가 키체인 항목들을 보관하는 데 사용하는 처리 큐(1815)는 버킷들(1820 내지 1830)을 갖는다. 버킷들 각각은 도시된 바와 같이 보호 도메인과 연관된다. 목적지 디바이스(1810)는 보호 도메인 식별자에 의해 식별된 보호 도메인에 기초하여 처리 큐(1815)의 버킷들(1820 내지 1830) 중 하나에 키체인 항목을 보관한다. 일부 실시예들에서, 목적지 디바이스(1810)는 또한 각각의 키체인 항목과 연관된 보호 도메인 식별자를 보관한다. 다른 실시예들에서, 목적지 디바이스(1810)가 처리 큐(1815) 내에 키체인 항목들을 보관하는 동안, 목적지 디바이스(1810)는 키체인 항목들로부터 식별자들을 분리한다. 도시된 바와 같이, 버킷(1820)은 3개의 키체인 항목(1845 내지 1855)을 갖고, 버킷(1820)은 하나의 키체인 항목(1860)을 갖고, 버킷(1830)은 2개의 키체인 항목(1865, 1870)을 가지며, 여기서 디바이스(1810)는 이 키체인 항목들을 보호 도메인 식별자들 없이 보관하였다.
일부 실시예들에서, 키체인 항목들은, 키체인 항목들이 처리 큐(1815) 내에 있을 때, 디바이스(1810)의 사용에 이용 불가능하다. 키체인 항목들은, 키체인 항목들이 디바이스(1810)에서의 이용 불가능함을 나타내기 위해 점선의 타원들로 묘사된다.
일부 실시예들에서, 목적지 디바이스(1810)는, 소스 디바이스(1805)가 목적지 디바이스(1810)로 푸시된 키체인 항목을 서명하는 데 사용하는 공개키의 대응하는(counterpart) 개인키인 개인키에, 키체인 항목을 연관시킨다. 목적지 디바이스(1810)는 처리 큐 내에 키체인 항목들과 함께 개인키들을 보관하고, 그렇게 함으로써 개인키들이 디바이스(1810)의 사용에 이용 불가능하게 한다.
일부 실시예들에서, 목적지 디바이스(1810)는, 보호 도메인들과 연관된 다른 키들을 사용해 개인키들을 암호화함으로써, 처리 큐 내에 저장된 개인키들을 이용 불가능하게 한다. 이 실시예들에서, 처리 큐 내에 저장된 개인키들은 디바이스가 보호 도메인들의 조건들을 충족할 경우에만 그러한 다른 키들로 복호화될 수 있다. 키체인 항목들은 이어서 복호화된 개인키들로 복호화될 수 있고, 그렇게 함으로써 디바이스의 사용에 이용 가능하게 된다. 개인키들을 암호화하는 데 사용되는 그러한 다른 키들은 본 특허 출원에서 로컬 도메인 보호 키(local domain protection key)들로 지칭된다.
디바이스(1810)가 특정 버킷과 연관된 보호 도메인에 대해 정의된 조건들 모두를 충족하는 경우, 목적지 디바이스(1810)는, 로컬 도메인 보호 키들로 개인키들을 복호화하고 이어서 복호화된 개인키들로 키체인들을 복호화함으로써, 특정한 버킷으로부터 키체인 항목들을 인출할 수 있다. 목적지 프로세스(1810)는 이어서 복호화된 키체인 항목들을 처리한다. 일부 실시예들에서, 디바이스(1810)는, 수신된 키체인 항목들을 디바이스(1810)가 이미 가진 키체인 항목들(도시되지 않음)과 동기화하기 위하여, 동기화 프로세스를 개시한다.
목적지 디바이스(1810)가 키체인 항목들이 속하는 보호 도메인들의 조건들을 충족하고 있는 동안 목적지 디바이스(1810)가 소스 디바이스(1805)로부터 키체인 항목들을 수신하는 경우, 목적지 디바이스(1810)는 보호 도메인들에 대한 개인키들을 암호화할 필요가 없다는 것에 주목하여야 한다. 목적지 디바이스(1810)는 따라서 처리 큐(1815) 내에 키체인 항목들을 보관하지 않으면서 키체인 항목들을 개인키들로 복호화할 수 있다.
도 19는 일부 실시예들이 소스 디바이스로부터 수신된 키체인 항목들을 처리하기 위해 수행하는 프로세스(1900)를 개념적으로 예시한다. 일부 실시예들에서, 소스 디바이스는 트랜잭션(transaction)당 하나의 키체인 항목을 푸시하기보다는 키체인 항목들의 그룹을 단일 트랜잭션(예컨대, 단일 메시지) 내에 푸시한다. 일부 경우들에서, 그룹 내의 키체인 항목들은, 키체인 항목들이 목적지 디바이스에 의해 함께 처리되게 하는 그러한 방식으로 관련되어진다. 일부 실시예들에서, 프로세스(1900)는, 키체인 항목들을 그룹들로 수신하고 한 그룹 내의 키체인 항목들을 함께 처리하는 목적지 디바이스에 의해 수행된다. 특히, 목적지 디바이스의 키체인 매니저는 이 실시예들에서 프로세스(1900)를 수행할 수 있다. 일부 실시예들의 목적지 디바이스는 소스 디바이스로부터의 키체인 항목들의 그룹들을 처리 큐에 보관한다. 일부 실시예들에서의 프로세스(1900)는, 목적지 디바이스가 부팅되고 소스 디바이스로부터 키체인 항목들의 하나 이상의 그룹을 수신했을 때, 시작한다.
프로세스(1900)는 (1910에서) 소스 디바이스로부터 푸시된 키체인 항목들의 그룹들을 보관 유지하기 위한 저장 구조(예컨대, 파일 시스템)인 처리 큐로부터 키체인 항목들의 그룹을 인출하는 것으로 시작한다. 일부 실시예들에서, 소스 디바이스는, 키체인 항목이 속하는 보호 도메인에 대한 목적지 디바이스의 공개키를 사용함으로써, 처리 큐 내에 저장된 그룹 내의 각각의 키체인 항목 내의 데이터를 암호화한다. 목적지 디바이스는 대응하는 개인키들을 사용하여 그룹 내의 키체인 항목들을 복호화한다. 프로세스(1900)는 이어서 (1920에서) 인출된 키체인 항목들의 그룹 내의 각각의 키체인 항목의 보호 도메인을 식별한다.
다음으로, 프로세스(1900)는 (1930에서) 인출된 그룹에 대한 식별된 보호 도메인들 모두가 이용 가능한지 여부를 결정한다. 즉, 프로세스(1900)는 목적지 디바이스가 식별된 보호 도메인들 각각의 조건들 모두를 충족했는지 여부를 결정한다. 일부 실시예들의 프로세스(1900)는 그 그룹의 식별된 보호 도메인들의 각각을 반복하여 거친다.
프로세스(1900)가 (1930에서) 식별된 보호 도메인들 중 임의의 것에 대한 보호 도메인의 조건들 모두가 충족되지는 않는다고 결정하는 경우, 프로세스(1900)는 (1940에서) 키체인 항목들의 그룹을 큐 내에 다시 보관함으로써 키체인 항목들의 그룹을 처리 큐로 다시 반환한다. 프로세스(1900)는 이어서 1960으로 진행하고, 이는 아래에서 추가로 기술될 것이다.
프로세스(1900)가 (1930에서) 모든 식별된 보호 도메인들의 조건들 모두가 충족된다고 결정하는 경우, 프로세스(1900)는 (1950에서) 키체인 항목들의 그룹을 처리한다. 1950에서, 일부 실시예들의 프로세스(1900)는 동기화 프로세스를 개시함으로써 키체인 항목들을 처리한다. 일부 실시예들에서, 프로세스(1900)는 식별된 보호 도메인들에 대한 목적지 디바이스의 개인키들을 사용해 키체인 항목들을 복호화한다.
다음으로, 프로세스(1900)는 (1960에서) 처리 큐 내에 아직 처리되어야 할 다른 그룹들의 키체인 항목들이 있는지 여부를 결정한다. 프로세스(1900)가 처리 큐 내에 다른 그룹들의 키체인 항목들이 있다고 결정하는 경우, 프로세스(1900)는 또 다른 그룹의 키체인 항목들을 인출하기 위해 1910으로 되돌아간다. 그렇지 않다면, 프로세스(1900)는 종료된다.
B. 사용 사례들
도 20은, 보호 도메인에 속하는 키체인 항목들이 디바이스에서 이용 가능하기 위하여 디바이스가 잠금 해제될 것을 요구하는 보호 도메인에 의해 보안된 키체인 항목들을 예시한다. 구체적으로, 이 도면은 소스 디바이스(2010)에 의해 업데이트되고 목적지 디바이스(2015)로 푸시되는 키체인 항목(2020)을 처리하는 6개의 상이한 단계들(2001 내지 2006)로 예시한다. 이 도면은 또한, 키체인 항목(2020)과 동기화될 대응하는 키체인 항목인 키체인 항목(2025)을 처리하는 것을 예시한다.
키체인 항목들(2020, 2025)이 속하는 보호 도메인은, 키체인 항목들(2020, 2025)을 목적지 디바이스(2015)에서 이용 가능하게 하기 위하여 목적지 디바이스(2015)가 잠금 해제될 것을 요구한다. 본 특허 출원에서, 디바이스가 "잠금 해제"되는 것은, 디바이스의 스크린이 임의의 입력들이 스크린에 입력되게 하기 위해 잠금 해제된다는 것을 의미하지 않을 수 있다. 오히려, 디바이스가 잠금 해제되는 것은 사용자가 디바이스를 사용하도록 인증했다는 것을 의미한다. 상이한 실시예들의 디바이스가 상이한 인증 메커니즘을 제공한다. 예를 들어, 일부 실시예들의 디바이스는, 사용자가 디바이스를 잠금 해제하기 위한 패스코드(예컨대, 4-자릿수 패스코드)를 제공할 것을 요구한다. 다른 실시예들이 대안적으로 또는 결합하여, 사용자가 길이가 긴 패스워드, 홍채 스캔, 지문 스캔, 음성 인식 등을 이용해 디바이스를 잠금 해제하게 할 수 있다.
제1 단계(2001)는 소스 및 목적지 디바이스들(2010, 2015)의 키체인 항목들(2020, 2025)이 각각 동기화되어 있는 것을 도시한다. 이 단계에서, 목적지 디바이스(2015)는 잠금 상태에 있다. 목적지 디바이스(2015)는 잠금 상태에 있는데, 그 이유는 디바이스가 부팅되고 있으므로 아직 디바이스(2015)가 디바이스(2015)의 사용자에 의해 잠금 해제되지 않았기 때문이거나, 소정의 유휴 기간이 경과한 후 디바이스(2015)가 잠금 해제 상태로부터 잠금 상태로 자동으로 변했기 때문이다. 도시된 바와 같이, 키체인 항목들(2020, 2025)은 둘 모두 데이터 1을 포함하지만, 목적지 디바이스(2015)가 잠금 상태에 있기 때문에 키체인 항목(2025)이 이용 불가능하다는 것을 나타내기 위해 목적지 디바이스(2015)에서의 키체인 항목(2025)은 점선의 평행사변형으로 묘사되어 있다. 이 예에서, 목적지(2015)는, 키체인 항목(2025)이 속하는 보호 도메인에 대한 로컬 보호 도메인 키로 키체인 항목(2025)을 암호화함으로써, 키체인 항목(2025)을 이용 불가능하게 만든다.
제2 단계(2002)는 소스 디바이스(2010)에서의 키체인 항목(2020)이 데이터 1에서 데이터 2로 업데이트된 것을 도시한다. 예를 들어, 키체인 항목(2020)은 소스 디바이스(2010)에서 실행되는 애플리케이션이 요구하는 원격 서버에 액세스하기 위한 패스워드를 포함하고, 소스 디바이스(2010)의 사용자는 그 패스워드를 변경하였다. 이 단계에서, 키체인 항목(2025)은, 목적지 디바이스(2015)가 여전히 잠금 상태에 있기 때문에, 목적지 디바이스(2025)에서 여전히 이용 불가능하다.
다음 단계(2003)는, 키체인 항목(2020)과 목적지 디바이스(2015)의 대응하는 키체인 항목(2025)을 동기화하기 위해, 소스 디바이스(2010)가 키체인 항목(2020)을 목적지 디바이스(2015)로 푸시한 것을 도시한다. 이 예에서, 소스 디바이스(2010)는, 키체인 항목(2020)을 목적지 디바이스(2015)로 푸시하기 전에, 보호 도메인에 대한 목적지 디바이스(2015)의 공개키로 키체인 항목(2020)을 암호화한다. 목적지 디바이스(2015)가 키체인 항목(2020)을 수신하지만 키체인 항목(2020)은 이 단계에서 이용 불가능한데, 그 이유는 목적지 디바이스가 잠금 상태에 있고 따라서 보호 도메인에 대한 대응하는 개인키로 키체인 항목(2020)을 복호화하지 않았기 때문이다. 개인키는 또한 이 예에서 이용 불가능졌는데, 그 이유는 목적지 디바이스(2015)가 키체인 항목(2025)을 암호화하는 데 사용되는 로컬 보호 도메인 키로 개인키를 암호화했기 때문이다. 키체인 항목(2025)은 목적지 디바이스(2015)에서 여전히 이용 불가능한데, 그 이유는 목적지 디바이스(2015)가 잠금 상태에 있고 따라서 로컬 보호 도메인 키로 키체인 항목(2025)을 복호화하지 않았기 때문이다.
제4 단계(2004)에서, 사용자는 목적지 디바이스(2015)를 잠금 해제하였다. 그 결과, 키체인 항목들(2020, 2025) 둘 모두는 목적지 디바이스(2015)의 사용에 이용 가능해진다. 즉, 이 단계에서의 디바이스(2015)는 로컬 보호 도메인 키로 개인키를 복호화하고 이어서 복호화된 개인키로 키체인 항목(2020)을 복호화한다. 디바이스(2015)는 또한 로컬 보호 도메인 키로 키체인 항목(2025)을 복호화한다. 목적지 디바이스(2015)는 이어서, 두 키체인 항목들(2020, 2025)이 이용 가능해졌으므로, 그것들을 동기화하는 것을 개시한다.
제5 단계(2005)는 키체인 항목들(2020, 2025)이 동기화되고 따라서 키체인 항목(2025)이 데이터 2를 갖는 것을 도시한다. 목적지 디바이스(2015)는 잠금 해제 상태에 있고 키체인 항목(2025)은 목적지 디바이스(2015)의 사용에 이용 가능하다. 다음 단계(2006)는 (예컨대, 소정 기간 동안 유휴이거나, 또는 사용자가 디바이스(2015)를 잠궜기 때문에) 목적지 디바이스(2015)가 다시 잠금 상태로 변한 것을 도시한다. 목적지 디바이스(2015)는, 로컬 보호 도메인 키로 키체인 항목(2025)을 암호화함으로써, 키체인 항목(2025)을 이용 불가능하게 만든다.
도 21은, 보호 도메인에 속하는 키체인 항목들이 디바이스에서 이용 가능하기 위하여, 디바이스가 부팅된 후 적어도 한번 잠금 해제될 것을 요구하는 보호 도메인에 의해 보안된 키체인 항목들을 예시한다. 구체적으로, 이 도면은 목적지 디바이스(2115)에 의해 키체인 항목들(2120, 2125)을 처리하는 6개의 상이한 단계들(2101 내지 2106)로 예시한다. 이 도면은 또한, 키체인 항목(2120)을 업데이트하고, 키체인 항목(2125)과 동기화하기 위해 그것을 목적지 디바이스(2115)로 푸시하는 소스 디바이스(2110)를 예시한다.
키체인 항목들(2120, 2125)이 속하는 보호 도메인은, 키체인 항목들(2120, 2125)을 목적지 디바이스(2115)에서 이용 가능하게 하기 위하여, 목적지 디바이스(2115)가 부팅된 후(즉, 꺼짐 상태로부터 켜진 후) 적어도 한번 잠금 해제될 것을 요구한다. 일부 실시예들에서, 이 보호 도메인은 백그라운드에서 실행되는 애플리케이션들에 대한 패스워드들을 보호하는 데 사용된다. 예를 들어, 디바이스 상에서 실행되는 이메일 애플리케이션은, 디바이스가 유휴인 동안(예컨대, 디바이스가 어떠한 사용자 입력도 수신하고 있지 않는 동안) 이메일들을 인출하기 위하여 메일 서버에 액세스하기 위한 패스워드를 필요로 한다.
제1 단계(2101)는 소스 및 목적지 디바이스들(2110, 2115) 내의 키체인 항목들(2120, 2125)이 각각 동기화되어 있는 것을 도시한다. 도시된 바와 같이, 키체인 항목들(2120, 2125)은 둘 모두 데이터 1을 포함한다. 이 단계에서, 목적지 디바이스(2115)는, 목적지 디바이스(2115)가 부팅된 이래로 여전히 잠금 해제되지 않았다. 즉, 디바이스(2115)를 부팅한 후 아직 목적지 디바이스(2115)의 사용자는 디바이스(2115)를 잠금 해제하지 않았다. 목적지 디바이스(2115)에서의 키체인 항목(2125)은, 키체인 항목(2125)이 이용 불가능한 것을 나타내기 위해 점선의 평행사변형으로 묘사된다. 이 예에서, 키체인 항목(2125)을 이용 불가능하게 하기 위해, 목적지(2125)는 키체인 항목(2125)이 속하는 보호 도메인에 대한 로컬 보호 도메인 키로 키체인 항목(2125)을 암호화하였다.
제2 단계(2102)는 소스 디바이스(2110)에서의 키체인 항목(2120)이 데이터 1에서 데이터 2로 업데이트된 것을 도시한다. 이 단계에서, 목적지 디바이스(2115)가 부팅된 이래로 여전히 잠금 해제되지 않았기 때문에, 목적지 디바이스(2115)에서의 키체인 항목(2125)은 여전히 이용 불가능하다.
다음 단계(2103)는, 키체인 항목(2120)과 목적지 디바이스(2115)의 대응하는 키체인 항목(2125)을 동기화하기 위해, 소스 디바이스(2110)가 키체인 항목(2120)을 목적지 디바이스(2115)로 푸시한 것을 도시한다. 이 예에서, 소스 디바이스(2110)는 키체인 항목(2120)을 목적지 디바이스(2115)로 푸시하기 전에, 보호 도메인에 대한 목적지 디바이스(2115)의 공개키로 키체인 항목(2120)을 암호화한다. 목적지 디바이스(2115)가 키체인 항목(2120)을 수신하지만 키체인 항목(2120)은 이 단계에서 이용 불가능한데, 그 이유는 목적지 디바이스(2115)가 부팅된 이래로 잠금 해제되지 않았고 따라서 보호 도메인에 대한 대응하는 개인키로 키체인 항목(2120)을 복호화하지 않았기 때문이다. 개인키는 또한 이 예에서 이용 불가능해졌는데, 그 이유는 목적지 디바이스(2115)가 키체인 항목(2125)을 암호화하는 데 사용되는 로컬 보호 도메인 키로 개인키를 암호화했기 때문이다. 키체인 항목(2125)은 목적지 디바이스(2115)에서 여전히 이용 불가능한데, 그 이유는 목적지 디바이스(2115)가 잠금 상태에 있고 따라서 로컬 보호 도메인 키로 키체인 항목(2125)을 복호화하지 않았기 때문이다.
제4 단계(2104)에서, 사용자는 디바이스(2115)가 부팅된 후 제1의 시간 동안 목적지 디바이스(2115)를 잠금 해제하였다. 그 결과, 키체인 항목들(2120, 2125) 둘 모두는 목적지 디바이스(2115)의 사용에 이용 가능하다. 이 예에서, 목적지 디바이스(2115)는 보호 도메인에 대한 개인키로 키체인 항목(2120)을 복호화함으로써 키체인 항목(2120)을 이용 가능하게 한다. 목적지 디바이스(2115)는 보호 도메인에 대한 로컬 보호 도메인 키로 키체인 항목(2125)뿐만 아니라 개인키도 복호화하였다. 목적지 디바이스(2115)는, 두 키체인 항목들(2120, 2125)이 이용 가능해졌으므로, 그것들을 동기화하는 것을 개시한다.
제5 단계(2105)는 키체인 항목들(2120, 2125)이 동기화되고 따라서 키체인 항목(2125)이 데이터 2를 갖는 것을 도시한다. 목적지 디바이스(2115)는 잠금 해제 상태에 있고 키체인 항목(2125)은 목적지 디바이스(2115)의 사용에 이용 가능하다. 이 단계에서, 소스 디바이스(2110)의 사용자는 데이터 2에서 데이터 3으로 키체인 항목(2120)을 다시 업데이트한다.
제6 단계(2106)는 (예컨대, 소정 기간 동안 유휴이거나, 또는 사용자가 목적지 디바이스(2115)를 잠궜기 때문에) 목적지 디바이스(2115)가 잠금 상태로 돌아간 것을 도시한다. 그러나, 키체인 항목(2125)은 여전히 디바이스(2115)에서 이용 가능한데, 그 이유는 디바이스(2115)가 부팅된 후 디바이스(2115)가 한번 잠금 해제 되었고 따라서 디바이스(2115)가 로컬 보호 도메인 키로 키체인 항목(2125)을 다시 암호화하지 않기 때문이다.
이 단계(2106)에서, 키체인 항목(2120)과 목적지 디바이스(2115)의 대응하는 키체인 항목(2125)을 동기화하기 위하여, 소스 디바이스(2110)는 또한 키체인 항목(2120)을 목적지 디바이스(2115)로 푸시하였다. 소스 디바이스(2110)는, 키체인 항목(2120)을 목적지 디바이스(2115)로 푸시하기 전에, 보호 도메인에 대한 공개키를 사용하여 키체인 항목(2120)을 암호화한다. 목적지 디바이스(2115)는 키체인 항목(2120)을 수신하고, 목적지 디바이스(2115)가 잠금 상태에 있을지라도 키체인 항목들(2120)은 이용 가능해진다. 그 이유는 디바이스(2115)가 부팅된 후 적어도 한번 목적지 디바이스(2115)가 잠금 해제되었고 따라서 디바이스(2115)가 개인키를 암호화하지 않기 때문이며, 개인키는 이어서 키체인 항목들(2120)을 복호화하는 데 이용 가능하다. 목적지 디바이스(2115)가 잠금 상태에 있을지라도 키체인 항목들(2120)은 동기화될 것이다.
도 22는, 보호 도메인에 속하는 키체인 항목들이 디바이스에서 이용 가능하기 위하여 디바이스가 켜질 것을 요구하는 보호 도메인에 의해 보안된 키체인 항목들을 예시한다. 구체적으로, 이 도면은 목적지 디바이스(2215)에 의해 키체인 항목들(2220, 2225)을 처리하는 4개의 상이한 단계들(2201 내지 2204)로 예시한다. 이 도면은 또한, 키체인 항목(2220)을 업데이트하고, 키체인 항목(2225)과 동기화하기 위해 그것을 목적지 디바이스(2215)로 푸시하는 소스 디바이스(2210)를 예시한다.
키체인 항목들(2220, 2225)이 속하는 보호 도메인은, 키체인 항목들(2220, 2225)을 디바이스(2215)의 사용에 이용 가능하게 하기 위하여, 목적지 디바이스(2215)가 켜질 것을 요구한다. 즉, 목적지 디바이스(2215)가 켜져 있고 실행되고 있는 한, 키체인 항목들(2220, 2225)은 항상 디바이스(2215)의 사용에 이용 가능하다. 이 보호 도메인은 보호를 거의 제공하지 않기 때문에, 일부 실시예들의 디바이스는 항상 실행되고 있어야 하는 그러한 애플리케이션들에 대해 이 보호 도메인을 사용한다. 그러한 애플리케이션들의 예는 애플 사(Apple, Inc.)에 의한 Find My iPhone™ 애플리케이션을 포함한다.
제1 단계(2201)는 소스 및 목적지 디바이스들(2210, 2215) 내의 키체인 항목들(2220, 2225)이 각각 동기화되어 있는 것을 도시한다. 도시된 바와 같이, 키체인 항목들(2220, 2225)은 둘 모두 데이터 1을 포함한다. 이 단계에서, 목적지 디바이스(2215)는 꺼져 있다.
제2 단계(2202)는 소스 디바이스(2210)에서의 키체인 항목(2220)이 데이터 1에서 데이터 2로 업데이트된 것을 도시한다. 이 단계에서, 목적지 디바이스(2215)는 부팅되어 있지만 아직 잠금 해제되지 않았다. 그러나, 키체인 항목(2225)은 목적지 디바이스(2215)의 사용에 이용 가능한데, 그 이유는 보호 도메인의 조건(즉, 디바이스가 켜지고 실행되고 있음)이 충족되었고 따라서 디바이스(2215)가 보호 도메인에 대한 로컬 보호 도메인 키로 키체인 항목(2225)을 암호화하지 않기 때문이다. 일부 실시예들에서, 키체인 항목(2225)은 디바이스(2215)에 결부된 키(예컨대, 디바이스(2215)의 UID로부터 유래된 키)로 여전히 암호화될 것이지만 키체인 항목(2215)은 이용 가능하게 여겨 지는데, 그 이유는 그 키가 디바이스(2215)에서의 키체인 항목(2225)을 복호화하는 데 이용 가능하기 때문이다.
다음 단계(2203)는, 키체인 항목(2220)과 목적지 디바이스(2215)의 대응하는 키체인 항목(2225)을 동기화하기 위하여, 소스 디바이스(2210)가 키체인 항목(2220)을 목적지 디바이스(2215)로 푸시한 것을 도시한다. 소스 디바이스(2210)는 키체인 항목(2220)을 목적지 디바이스(2215)로 푸시하기 전에, 키체인 항목(2220)을 암호화한다. 목적지 디바이스(2215)는 키체인 항목(2220)을 수신하고, 키체인 항목(2220)은 이 단계에서 디바이스(2215)가 아직 잠금 해제되지 않았지만, 디바이스(2215)에서 이용 가능하게 된다. 그 이유는 디바이스(2215)가 켜져 있고 실행되고 있으며 따라서 대응하는 개인키가 키체인 항목(2220)을 복호화하는 데 이용 가능하기 때문이다. 목적지 디바이스(2215)는, 키체인 항목들(2220, 2225)이 이용 가능하므로, 두 키체인 항목들(2220, 2225)을 동기화하는 것을 개시한다.
제4 단계(2204)에서, 목적지 디바이스(2215)는 아직 잠금 해제되지 않았다. 그러나, 제4 단계(2204)는 키체인 항목들(2220, 2225)이 동기화되는 것을 도시한다. 그 결과, 키체인 항목(2225)은 이제 데이터 2를 갖는다.
도 23은, 보호 도메인에 속하는 키체인 항목들이 디바이스에서 이용 가능하기 위하여, 디바이스가 잠금 해제될 것을 요구하고 또한 추가적인 인증을 요구하는 보호 도메인에 의해 보안된 키체인 항목들을 예시한다. 구체적으로, 이 도면은, 소스 디바이스(2310)에 의해 업데이트되고 목적지 디바이스(2315)로 푸시되는 키체인 항목(2320)을 처리하는 6개의 상이한 단계들(2301 내지 2306)로 예시한다. 이 도면은 또한, 키체인 항목(2320)과 동기화될 대응하는 키체인 항목인 키체인 항목(2325)을 처리하는 것을 예시한다.
키체인 항목들(2320, 2325)을 목적지 디바이스(2315)에서 이용 가능하게 하기 위하여, 키체인 항목들(2320, 2325)이 속하는 보호 도메인은, 목적지 디바이스(2315)가 잠금 해제될 것을 요구하고 또한 추가적인 인증(예컨대, 패스워드, 홍채 스캔, 지문 스캔, 음성 인식, 디바이스가 특정한 위치의 부근 내에 있는 것 등)을 요구한다. 일부 실시예들에서, 이 보호 도메인은, 추가적인 보안 수단을 필요로 하는 애플리케이션들에 대한 패스워드들을 보호하기 위해 사용된다. 예를 들어, 일부 실시예들의 키체인 매니저는 원격 서버에 액세스하는 애플리케이션에 대한 보안 랜덤 패스워드를 생성한다. 일부 실시예들에서, 이 패스워드는 사용자에게 노출되어 있지 않으며, 키체인 매니저는 사용자가 기억하고 사용할 수 있는 더 간단하거나 상이한 패스워드로 사용자를 인증한다. 노출되지 않은 패스워드는 사용자가 사용하는 디바이스들 사이에서 동기화된다. 노출되지 않은 패스워드가 소스 디바이스에서 변경되고 목적지 디바이스로 푸시되는 경우, 사용자가 목적지 디바이스에서 실행되는 동일한 애플리케이션을 사용하기 위한 상이한 패스워드를 제공하지 않는 한, 사용자가 목적지 디바이스를 잠금 해제할지라도 노출되지 않은 패스워드는 목적지 디바이스에서 이용 가능하지 않게 된다.
제1 단계(2301)는 소스 및 목적지 디바이스들(2310, 2315) 내의 키체인 항목들(2320, 2325)이 각각 동기화되어 있는 것을 도시한다. 이 단계에서, 목적지 디바이스(2315)는 잠금 해제 상태에 있다. 도시된 바와 같이, 키체인 항목들(2320, 2325)은 둘 모두 데이터 1을 포함하지만, 목적지 디바이스(2315)가 잠금 상태이기 때문에 목적지 디바이스(2315)에서의 키체인 항목(2325)은 이용 불가능하다. 이 예에서, 키체인 항목(2325)을 이용 불가능하게 하기 위하여, 목적지(2325)는 키체인 항목(2325)이 속하는 보호 도메인에 대한 로컬 보호 도메인 키로 키체인 항목(2325)을 암호화하였다.
제2 단계(2302)는 소스 디바이스(2310)에서의 키체인 항목(2320)이 사용자에 의해 데이터 1에서 데이터 2로 업데이트된 것을 도시한다. 예를 들어, 키체인 항목(2320)은, 소스 디바이스(2310)에서 실행되는 애플리케이션이 요구하는 원격 서버에 액세스하는 데 실제로 사용되는, 노출되지 않은 패스워드를 포함하고, 사용자는, 사용자가 애플리케이션을 사용하기 위해 인증하는 데 사용하고 기억하는 상이한 패스워드를 변경함으로써, 노출되지 않은 패스워드를 방금 변경하였다. 이 단계에서, 키체인 항목(2325)은 여전히 이용 불가능한데, 그 이유는 목적지 디바이스(2315)가 여전히 잠금 상태에 있고 따라서 보호 도메인에 대한 조건들이 아직 충족되지 않았기 때문이다.
제3 단계(2303)는, 키체인 항목(2320)과 목적지 디바이스(2315)의 대응하는 키체인 항목(2325)을 동기화하기 위하여, 소스 디바이스(2310)가 키체인 항목(2320)을 목적지 디바이스(2315)로 푸시한 것을 도시한다. 이 예에서, 소스 디바이스(2310)는 키체인 항목(2320)을 목적지 디바이스(2315)로 푸시하기 전에 보호 도메인에 대한 목적지 디바이스(2315)의 공개키로 키체인 항목(2320)을 암호화한다. 목적지 디바이스(2315)가 키체인 항목(2320)을 수신하지만 키체인 항목(2320)은 이 단계에서 이용 불가능한데, 그 이유는 목적지 디바이스가 잠금 상태에 있고 따라서 보호 도메인에 대한 대응하는 개인키로 키체인 항목(2320)을 복호화하지 않았기 때문이다. 키체인 항목(2325)은 또한 목적지 디바이스(2315)가 잠금 상태에 있기 때문에 여전히 이용 불가능하다.
제4 단계(2304)에서, 사용자는 목적지 디바이스(2315)를 잠금 해제하였다. 그러나, 키체인 항목들(2320, 2325)은 둘 모두 목적지 디바이스(2315)의 사용에 여전히 이용 불가능한데, 그 이유는 키체인 항목들(2320, 2325)이 속하는 보호 도메인에 대한 조건들이 아직 충족되지 않았고 - 사용자는 이 보호 도메인이 요구하는 추가적인 인증을 제공하지 않았기 때문이다.
제5 단계(2305)는 (예컨대, 사용자가 기억하는 상이한 패스워드를 입력함으로써) 사용자가 추가적인 인증을 제공한 것을 도시한다. 키체인 항목들(2320, 2325) 둘 모두는 이제 이용 가능하게 되었다. 그 이유는 보호 도메인에 대한 모든 조건들이 충족되었고 따라서 디바이스(2315)가 로컬 보호 도메인으로 개인키 및 키체인 항목(2325)을 복호화하였기 때문이다. 디바이스(2315)는 복호화된 개인키로 키체인 항목(2325)를 복호화했었다. 목적지 디바이스(2315)는 두 키체인 항목들(2320, 2325)을 동기화하는 것을 개시한다. 제6 단계(2306)는 키체인 항목들(2320, 2325)이 동기화되고 따라서 키체인 항목(2325)이 데이터 2를 갖는 것을 도시한다.
도 24는 디바이스에 대한 상이한 세트들의 조건들을 갖는 두 보호 도메인에 의해 보안된 데이터를 예시한다. 구체적으로, 이 도면은 목적지 디바이스(2415)에 의해 메타데이터 항목들(2430, 2435) 및 키체인 항목들(2420, 2425)을 처리하는 4개의 상이한 단계들(2401 내지 2404)로 예시한다. 이 도면은 또한, 키체인 항목(2420)을 업데이트하고, 키체인 항목(2425)과 동기화하기 위해 키체인 항목(2420)을 목적지 디바이스(2415)로 푸시하는 소스 디바이스(2410)를 예시한다.
앞서 언급한 바와 같이, 키체인 항목은, 두 키체인 항목들을 동기화할 때 디바이스들이 임의의 충돌을 해결하는 데 사용하는 정보를 운반하는 메타데이터 항목과 연관된다. 일부 실시예들에서, 키체인 항목 및 그것의 연관된 메타데이터 항목은 상이한 보호 도메인들에서 정의되어, 메타데이터 항목이 디바이스에서 이용 가능하게 되는 동안 키체인 항목은 여전히 이용 불가능하게 된다. 키체인 항목이 이용 불가능하고 연관된 메타데이터 항목이 디바이스에서 이용 가능한 경우, 디바이스는 연관된 메타데이터 항목에 의해 운반된 정보를 사용해 키체인 항목에 대한 임의의 충돌을 해결할 수 있다.
메타데이터 항목들(2430, 2435)은 각각 키체인 항목들(2420, 2425)과 연관된다. 이 예에서, 메타데이터 항목들(2430, 2435)은 제1 보호 도메인에 속하며, 이는 메타데이터 항목들(2430, 2435)이 디바이스(2415)에서 이용 가능하기 위하여 목적지 디바이스(2415)가 켜질 것을 요구한다. 키체인 항목들(2420, 2425)은 제2 보호 도메인에 속하며, 이는 키체인 항목들이 목적지 디바이스(2415)에서 이용 가능하기 위하여 목적지 디바이스(2415)가 잠금 해제 상태에 있을 것을 요구한다.
제1 단계(2401)는 소스 및 목적지 디바이스들(2410, 2415) 내의 키체인 항목들(2420, 2425)이 각각 동기화되어 있지 않은 것을 도시한다. 도시된 바와 같이, 키체인 항목들(2420, 2425)은 각각 데이터 1 및 데이터 2를 포함한다. 메타데이터 항목들(2430, 2435)은 상이한 정보를 갖는다. 도시된 바와 같이, 메타데이터 항목(2430)은 메타데이터 1을 운반하고 메타데이터 항목(2435)은 메타데이터 2를 운반한다. 이 단계에서, 목적지 디바이스(2415)는 잠금 상태에 있다. 목적지 디바이스(2415)에서의 키체인 항목(2425)은, 키체인 항목(2425)이 디바이스(2415)에서 이용 불가능한 것을 나타내기 위해 점선의 평행사변형으로 묘사된다. 이 예에서, 제2 보호 도메인에 대한 로컬 보호 도메인 키로 키체인 항목(2425)을 암호화함으로써, 디바이스(2425)는 키체인 항목(2425)을 이용 불가능하게 만들었다. 메타데이터 항목(2435)은 디바이스(2415)에서 이용 가능한데, 그 이유는 디바이스(2425)가 켜져 있을 때 디바이스(2425)가 메타데이터(2435)를 암호화하지 않기 때문이다.
제2 단계(2402)는, 키체인 항목들(2420)과 목적지 디바이스(2415)의 대응하는 키체인 항목(2425)을 동기화하기 위해, 소스 디바이스(2410)가 키체인 항목(2420)을 연관된 메타데이터 항목(2430)과 함께 목적지 디바이스(2415)로 푸시한 것을 도시한다. 이 예에서, 소스 디바이스(2410)는 제1 보호 도메인에 대한 목적지 디바이스(2415)의 공개키로 메타데이터 항목(2430)을 암호화한다. 소스 디바이스(2410)는 또한, 메타데이터 항목(2430) 및 키체인 항목(2420)을 목적지 디바이스(2415)로 송신하기 전에, 제2 보호 도메인에 대한 목적지 디바이스(2415)의 공개키로 키체인 항목(2420)을 암호화한다.
목적지 디바이스(2415)는 키체인 항목(2420) 및 메타데이터 항목(2435)을 수신하지만 키체인 항목(2420)은 이 단계(2402)에서 목적지 디바이스(2415)에서 이용 불가능하다. 그 이유는 목적지 디바이스(2415)가 여전히 잠금 상태에 있고 따라서 디바이스(2415)는 제2 보호 도메인에 대한 개인키로 키체인 항목(2425)을 복호화하지 않기 때문이다. 키체인 항목(2425)은 디바이스(2415)가 여전히 잠금 해제 상태에 있기 때문에 여전히 이용 불가능하다. 메타데이터 항목(2435)은 디바이스(2402)가 켜져 있고 실행되고 있기 때문에 이 단계(2402)에서 목적지(2415)에서 이용 가능하다. 디바이스(2415)는, 메타데이터 항목들(2430, 2435)을 사용해 키체인 항목들(2420, 2425) 사이의 충돌을 해결함으로써, 두 암호화된 키체인 항목들(2420, 2425)을 동기화하는 것을 개시한다.
제3 단계(2403)에서, 목적지 디바이스(2415)는 여전히 잠금 상태에 있다. 그러나, 목적지 디바이스(2415)는 키체인 항목들을 동기화하였다. 그 결과, 메타데이터 항목은 새로운 충돌 해결 정보(메타데이터 3)로 업데이트되었고 키체인 항목(2425)은 데이터 1을 갖는다. 디바이스(2415)가 여전히 잠금 상태에 있기 때문에 제2 도메인에 대한 공개키로 여전히 암호화됨으로써, 업데이트된 키체인 항목(2425)은 목적지 디바이스(2415)에서 여전히 이용 가능하지 않다. 제4 단계(2404)에서, 목적지 디바이스(2415)는 잠금 해제 상태에 있다. 이 예에서, 제2 도메인에 대한 로컬 보호 도메인 키로 제2 보호 도메인에 대한 개인키를 복호화하고, 이어서 복호화된 개인키로 키체인 항목(2425)을 복호화함으로써, 디바이스는 키체인 항목(2425)을 이용 가능하게 한다.
C. 동기 서클과 보호 도메인
앞서 언급한 바와 같이, (예컨대, 도 4 내지 도 6을 참조하여 전술한 기술들을 이용해) 디바이스는 상이한 키체인 항목들을 동기화하기 위한 여러 상이한 동기 서클들에 가입할 수 있다. 일부 실시예들에서, 여러 디바이스들은, 여러 상이한 보호 도메인들에 속하는 키체인 항목들을 동기화하기 위하여, 여러 상이한 동기 서클들을 형성한다.
도 25는 여러 디바이스들에 의해 형성된 여러 동기 서클들을 개념적으로 예시한다. 구체적으로, 이 도면은 3개의 디바이스(A 내지 C)가 3개의 상이한 보호 도메인(1 내지 3)에 대한 3개의 상이한 동기 서클(2505 내지 2515)을 형성하는 것을 예시한다. 도면의 상부 부분은 3개의 동기 서클(2505 내지 2515) 내의 디바이스(A 내지 C)를 예시한다. 도면의 하부 부분은 3개의 동기 서클(2505 내지 2515)을 개별적으로 예시한다.
일부 실시예들에서, 디바이스들의 그룹은, 디바이스들이 키체인 항목들을 보호하는 데 사용하는 보호 도메인들의 각각에 대한 동기 서클을 형성한다. 일부 그러한 실시예들에서, 그룹의 각각의 디바이스는 디바이스가 키체인 항목들을 암호화하고 복호화하는 데 사용하는 동일한 공개/개인 키 쌍을 사용하여 동기 서클에 가입한다. 대안적으로 또는 결합하여, 다른 실시예들의 디바이스들은 동기 서클에 가입하고 키체인 항목들을 동기화 및 복호화하기 위한 별개의 키 쌍들을 사용한다.
도시된 바와 같이, 디바이스들(A 내지 C)은 보호 도메인 1에 대한 동기 서클(2505)을 형성한다. 디바이스들(A 내지 C)은 보호 도메인 2에 대한 동기 서클(2510)을 형성한다. 디바이스들(A 내지 C)은 보호 도메인 3에 대한 동기 서클(2510)을 형성한다. 도 25는 3개의 동기 서클이 동일한 3개의 디바이스(A 내지 C)에 의해 형성되는 것을 예시한다. 그러나, 디바이스들(A 내지 C) 각각은 보호 도메인들(1 내지 3) 이외의 보호 도메인들(도시되지 않음)에 대하여 디바이스들(A 내지 C) 중 다른 두 디바이스들 이외의 디바이스들을 갖는 다른 동기 서클들(도시되지 않음)을 형성할 수 있다.
동기 서클들(2505 내지 2515)은 이 도면에서 링들 또는 원형 형상들로 예시되어 있지만, 디바이스들의 각각의 쌍은 보안 전송 계층을 구축하여 동기 서클을 형성한다. 즉, 동기 서클 내의 디바이스들은 일부 실시예들에서 링 네트워크(ring network)가 아닌 스타 네트워크(star network)를 형성한다.
도 26은 여러 상이한 보호 도메인들에 대해 여러 디바이스들에 의해 형성된 동기 서클을 개념적으로 예시한다. 구체적으로, 이 도면은 3개의 디바이스(A 내지 C)가 3개의 상이한 보호 도메인(1 내지 3)에 대한 동기 서클(2605)을 형성하는 것을 예시한다. 이 도면은 또한 키체인 항목들(2610 내지 2620)의 3개의 그룹을 예시한다.
일부 실시예들에서, 디바이스들의 그룹은 여러 상이한 보호 도메인들에 대한 단일 동기 서클을 형성한다. 이 실시예들 중 일부에서, 그룹의 각각의 디바이스는 여러 상이한 보호 도메인들에 대한 여러 공개/개인 키 쌍들 중 하나의 쌍을 사용하여, 단일 동기 서클에 가입한다. 즉, 그룹의 각각의 디바이스는 키체인 항목들을 암호화 및 복호화하기 위한 여러 공개/개인 키 쌍들 중 하나의 쌍을 선택하고, 선택된 키 쌍을 사용해 단일 동기 서클에 가입한다. 대안적으로 또는 결합하여, 다른 실시예들에서의 그룹의 각각의 디바이스는 키체인 항목들을 암호화 및 복호화하기 위한 키 쌍들 중 어느 것을 사용하는 것이 아니라, 별개의 키 쌍을 사용하여 단일 동기 서클에 가입한다.
일부 실시예들에서, 그룹의 각각의 디바이스는 여러 상이한 보호 도메인들에 대한 여러 공개/개인 키 쌍들 모두를 사용하여, 단일 동기 서클에 가입한다. 즉, 이 실시예들에서의 그룹의 각각의 디바이스는 키체인 항목들을 암호화 및 복호화하기 위한 키 쌍들 모두를 사용하여 동기 서클에 가입한다. 따라서, 일부 실시예들에서, 디바이스는 동기 서클에 가입하기 위하여 여러 상이한 보호 도메인들의 모든 도메인의 모든 조건들을 충족할 필요가 있는데, 이는 디바이스가 키 쌍들 모두가 이용 가능할 것을 필요로 하기 때문이다.
이 예에서, 키체인 항목들(2610)은 보호 도메인 1에 속한다. 키체인 항목들(2610)은 디바이스 C에 의해 디바이스 A로 푸시되고 있다. 디바이스 C는 보호 도메인 1에 대해 디바이스들(B, C)에 공개된 디바이스 A의 공개키를 사용하여, 키체인 항목들(2610)을 암호화한다. 그러나, 이 예에서의 디바이스 C는 보호 도메인들(1 내지 3)에 대한 3개의 공개/개인 키 쌍 모두를 사용하여 동기 서클(2605)에 가입하였다.
키체인 항목들(2620)은 보호 도메인 2에 속한다. 키체인 항목들(2620)은 디바이스 B에 의해 디바이스 C로 푸시되고 있다. 디바이스 B는 보호 도메인 2에 대해 디바이스들(A, B)에 공개된 디바이스 C의 공개키를 사용하여, 키체인 항목들(2620)을 암호화한다. 이 예에서 디바이스 B는 보호 도메인들(1 내지 3)에 대한 3개의 공개/개인 키 쌍 모두를 사용하여 동기 서클(2605)에 가입하였다.
키체인 항목들(2615)은 보호 도메인 3에 속한다. 키체인 항목들(2615)은 디바이스 A에 의해 디바이스 B로 푸시되고 있다. 디바이스 A는 보호 도메인 3에 대해 디바이스들(A, C)에 공개된 디바이스 B의 공개키를 사용하여, 키체인 항목들(2615)을 암호화한다. 이 예에서, 디바이스 B는 보호 도메인들(1 내지 3)에 대한 3개의 공개/개인 키 쌍 모두를 사용하여 동기 서클(2605)에 가입하였다.
V. 소프트웨어 구조
일부 실시예들에서, 전술한 프로세스들은, 컴퓨터(예컨대, 데스크톱, 랩탑 등), 핸드헬드 디바이스(예컨대, 스마트폰), 또는 태블릿 컴퓨팅 디바이스와 같은 특정한 기계 상에서 실행되는 소프트웨어로서 구현되거나, 기계 판독가능 매체에 저장된다. 도 27은 일부 실시예들의 키체인 매니저(2700)의 소프트웨어 구조를 개념적으로 예시한다. 일부 실시예들에서, 키체인 매니저는 동기 서클들 내의 디바이스들 사이에서 키체인들의 동기화를 관리하기 위한 독립형 애플리케이션이다. 일부 실시예들의 키체인 매니저는 다른 애플리케이션(예컨대, 키체인 관리 애플리케이션, 데이터 관리 애플리케이션, 보안 애플리케이션 등)에 통합되어 있는 반면, 다른 실시예들에서 애플리케이션은 운영 체제 내에서 구현될 수 있다. 또한, 일부 실시예들에서, 애플리케이션은 서버-기반 솔루션의 일부로서 제공된다. 일부 그러한 실시예들에서, 애플리케이션은 씬 클라이언트(thin client)를 통해 제공된다. 즉, 애플리케이션은 서버 상에서 실행되지만, 사용자는 서버로부터 멀리 떨어진 별개의 기계를 통해 애플리케이션과 상호작용한다. 다른 그러한 실시예들에서, 애플리케이션은 씩 클라이언트(thick client)로서 제공된다. 즉, 애플리케이션은 서버로부터 클라이어트 기계로 분산되고 클라이언트 기계 상에서 실행된다.
일부 실시예들의 키체인 매니저(2700)는 상이한 운영 체제들 상에서 동작하도록 구현된다. 일부 실시예들에서, 상이한 운영 체제들(예컨대, iOS®, Mac OS X® 등)은 상이한 구조들을 사용하여 키체인들 및 키체인 항목들을 관리한다. 일부 실시예들의 키체인 매니저(2700)는, 상이한 키체인 관리 구조들을 사용하여 디바이스들 사이에서 키체인들 및 키체인 항목들을 동기화하도록 구현된다. 예를 들어, 일부 실시예들에서, 키체인 매니저(2700)는 특정한 키체인 관리 구조(예컨대, iOS®)에 대해 구현되고, 다른 키체인 관리 구조(예컨대, Mac OS X®)와 동작하도록 복사(port)된다.
도시된 바와 같이, 키체인 매니저(2700)는 동기화 매니저(2705), 등록 매니저(2710), 키체인 항목 매니저(2715), 암호화 모듈(2720), 매니페스트 모듈(2725), 및 충돌 해결자(2730)를 포함한다. 키체인 매니저(2700)는 또한 동기 서클 데이터 저장장치(2735), 디바이스 매니페스트 저장장치(2740), 충돌 규칙(conflict rules) 저장장치(2745), 키체인 저장장치(2750), 및 보안 데이터 저장장치(2755)를 포함한다. 일부 실시예들에서, 동기 서클 데이터(2735)는 도 3을 참조하여 전술한 저장장치들(310 내지 330)에 저장된 데이터의 로컬 복사본을 저장한다. 즉, 동기 서클 데이터 저장장치(2735)는 동기 서클에 대한 명칭, 동기 서클 디바이스 목록, 사용자 서명들, 디바이스 서명들, 및 키체인 데이터, 그리고 기타 데이터를 저장한다. 디바이스 매니페스트 저장장치(2740)는 동기 서클 내의 디바이스들의 각각에 대한 매니페스트 이력을 저장한다. 충돌 규칙 저장장치(2745)는 충돌 해결들의 이전 버전들, 키체인 항목 충돌들을 해결하는 데 사용되는 충돌 해결자의 현재 버전, 및 충돌 해결자들의 이전 버전들 및 현재 버전과 연관된 다양한 규칙들을 저장한다. 키체인 저장장치(2750)는 동기 서클들 내의 디바이스들과 동기화하기 위한 키체인들을 저장한다. 일부 실시예들에서, 키체인 저장장치(2750)는 또한 동기 서클들 내의 다른 디바이스들과 공유되지 않는(즉, 동기화되지 않는) 키체인들 및/또는 키체인 항목들을 저장한다. 보안 데이터 저장장치(2755)는, 키체인 매니저(2700)가 키체인들의 동기화를 용이하게 하기 위해 제공하는 보안 특징들과 관련된 데이터(예컨대, 보안 통신 채널들(예컨대, 보안 키들), 데이터 암호화(예컨대, 암호화 키들), 데이터 복호화(예컨대, 복호화 키들), 데이터 인증(예컨대, 복호화 키들) 등)를 저장한다. 일부 실시예들에서, 저장장치들(2735 내지 2755)은 하나의 물리적 저장장치에 저장되지만, 다른 실시예들에서, 저장장치들(2735 내지 2755)은 별개의 물리적 저장장치들 상에 저장된다. 또한, 일부 실시예들에서, 저장장치들(2735 내지 2755) 중 일부 또는 전부는 여러 개의 물리적 저장장치들에 걸쳐서 구현된다.
동기화 매니저(2705)는 동기 서클들 내의 디바이스들 사이에서 키체인들의 동기화를 관리할 책임이 있다. 일부 실시예들에서, 동기화 매니저(2705)는, 키체인 매니저(2700)가 동작하는 디바이스들이 동기 서클에 성공적으로 등록한 후에, 등록 매니저(2710)에 의해 시작하였다. 일부 실시예들에서, 동기화 매니저(2705)는 섹션 IV에서 전술한 데이터 보호 특징들을 다룬다. 동기화 매니저는 동기 서클들 내의 디바이스들 사이의 키체인들의 동기화를 달성하기 위하여 다른 모듈들(2710 및 2715 내지 2730)과 통신한다.
등록 매니저(2710)는 동기 서클에 디바이스들을 등록하는 것과 관련된 다양한 기능들을 다룬다. 예를 들어, 키체인 매니저가 동작하고 있는 디바이스가 동기 서클에 가입하기를 원하는 경우, 등록 매니저(2710)는, 동기 서클이 존재하지 않을 때 동기 서클을 생성한다. 등록 매니저(2710)는 또한 등록 요청 생성(예컨대, 도 5를 참조하여 전술한 프로세스(500)를 수행함으로써), 등록 요청 승인(예컨대, 도 6을 참조하여 전술한 프로세스(600)를 수행함으로써), 등록 승인 응답 등을 다룬다.
키체인 항목 매니저(2715)는 키체인들에 대한 키체인 항목들을 생성하고 관리한다. 일부 실시예들에서, 키체인 항목 매니저(2715)는 키체인들 내의 키체인 항목들의 일부 또는 전부를 표현하는 데이터 구조들(예컨대, 도 10을 참조하여 전술한 데이터 구조)를 생성하고 유지한다.
보안 모듈(2720)은 다양한 보안 특징들에 대한 기능을 제공한다. 예를 들어, 보안 모듈(2720)은, 동기 서클들 내의 디바이스들의 각각과 보안 통신 채널들을 구축하는 것을 다룬다. 보안 모듈(2720)은 다양한 보안 특징들을 구현하기 위하여 상이한 암호화 프리미티브(primitive)들, 알고리즘들, 프로토콜들, 및 기술들(예컨대, OTR 메시징, 디피 헬만(Diffie-Hellman) 키 교환들, 공개/개인 키 쌍 생성 등)을 수행한다.
매니페스트 모듈(2725)은 로컬 키체인 항목들 및, 일부 경우들에서는, 피어 디바이스들의 매니페스트들에 기초하여 상이한 유형들의 메니페스트를 생성할 책임이 있다. 예를 들어, 매니페스트 모듈(2725)은 매니페스트 다이제스트들, 완전한 매니페스트들, 및 델타 매니페스트를 생성한다. 매니페스트의 생성을 용이하게 하기 위하여, 매니페스트 모듈(2725)은 동기 서클들 내의 디바이스들 각각에 대한 매니페스트 이력을 유지한다. 매니페스트 모듈(2725)은 또한, 델타 매니페스트들의 생성에 있어서, 로컬 키체인 항목들(또는 로컬 매니페스트들)과 피어 디바이스들의 매니페스트 사이의 비교들을 수행한다.
충돌 해결자(2730)는 키체인 항목들 사이에서 충돌들의 해결을 다룬다. 예를 들어, 충돌 해결자(2730)는 충돌들을 식별하기 위해 로컬 키체인 항목들과 피어 디바이스들의 키체인 항목들을 비교한다. 충돌 해결자는 또한 키체인 항목 충돌들을 해결하기 위하여 (예컨대, 충돌 규칙 저장장치(2745)에 저장된) 충돌 해결자들을 실행한다. 또한, 충돌 해결자(2730)는 충돌 해결자들 사이에서 충돌들을 검출하고 키체인 항목 충돌들을 해결하는 데 사용할 충돌 해결자를 결정할 책임이 있다.
특징들 중 많은 것들이 하나의 모듈(예컨대, 등록 모듈(2710), 보안 모듈(2720) 등)에 의해 수행되는 것으로 기술되어 있지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 기능들이 다수의 모듈들에 분할될 수 있음을 인식할 것이다. 유사하게, 다수의 상이한 모듈들에 의해 수행되는 것으로 기술된 기능들은 일부 실시예들에서의 단일 모듈(예컨대, 키체인 항목 매니저(2715) 및 충돌 해결자(2730))에 의해 수행될 수 있다.
VI. 전자 시스템
전술한 특징들 및 애플리케이션들 중 많은 것은 컴퓨터 판독가능 저장 매체(또한 컴퓨터 판독가능 매체로 지칭됨) 상에 기록된 명령어들의 세트로서 규정되는 소프트웨어 프로세스들로서 구현된다. 이들 명령어들이 하나 이상의 계산 또는 처리 유닛(들)(예컨대, 하나 이상의 프로세서들, 프로세서들의 코어들, 또는 다른 처리 유닛들)에 의해 실행될 때, 명령어들은 처리 유닛(들)이 명령어들에서 지시된 동작들을 수행하게 한다. 컴퓨터 판독가능 매체들의 예들은, CD-ROM들, 플래시 드라이브들, 랜덤 액세스 메모리(RAM) 칩들, 하드 드라이브들, 소거가능한 프로그래밍가능 판독 전용 메모리(erasable programmable read-only memory: EPROM)들, 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리(electrically erasable programmable read-only memory: EEPROM)들 등을 포함하지만 이로 제한되지는 않는다. 컴퓨터 판독가능 매체들은 무선으로 또는 유선 접속들을 통해 전달하는 반송파(carrier wave)들 및 전자 신호들을 포함하지 않는다.
본 명세서에서, 용어 "소프트웨어"는 ROM(readonly memory)에 상주하는 펌웨어 또는 프로세서에 의한 처리를 위해 메모리 내로 판독될 수 있는 자기 저장장치에 저장된 애플리케이션들을 포함하도록 의도된다. 또한, 일부 실시예들에서, 다수의 소프트웨어 발명들은 별개의 소프트웨어 발명들에 남아 있으면서 보다 큰 프로그램의 하위-부분들로서 구현될 수 있다. 일부 실시예들에서, 다수의 소프트웨어 발명들은 또한 별개의 프로그램들로서 구현될 수 있다. 마지막으로, 본 명세서에 설명된 소프트웨어 발명을 함께 구현하는 별개의 프로그램들의 임의의 조합은 본 발명의 범주 내에 있다. 여러 실시예들에서, 소프트웨어 프로그램들은, 하나 이상의 전자 시스템 상에서 동작하도록 설치된 때, 소프트웨어 프로그램들의 동작들을 실행 및 수행하는 하나 이상의 특정 기계 구현예들을 한정한다.
도 28은 본 발명의 일부 실시예들을 구현시키는 전자 시스템(2800)을 개념적으로 예시한다. 전자 시스템(2800)은 컴퓨터(예컨대, 데스크톱 컴퓨터, 개인용 컴퓨터, 태블릿 컴퓨터 등), 전화, PDA, 또는 임의의 다른 종류의 전자 또는 컴퓨팅 디바이스일 수 있다. 그러한 전자 시스템은 다양한 유형들의 컴퓨터 판독가능 매체들 및 다양한 다른 유형들의 컴퓨터 판독가능 매체들을 위한 인터페이스들을 포함한다. 전자 시스템(2800)은 버스(2805), 처리 유닛(들)(2810), 그래픽 처리 유닛(GPU)(2815), 시스템 메모리(2820), 네트워크(2825), 판독 전용 메모리(2830), 영구 저장 디바이스(2835), 입력 디바이스들(2840), 및 출력 디바이스들(2845)을 포함한다.
버스(2805)는 전자 시스템(2800)의 다수의 내부 디바이스들을 통신적으로 연결하는 모든 시스템, 주변기기, 및 칩셋 버스들을 총괄하여 표현한다. 예를 들어, 버스(2805)는 판독 전용 메모리(2830), GPU(2815), 시스템 메모리(2820), 및 영구 저장 디바이스(2835)와 처리 유닛(들)(2810)을 통신적으로 연결한다.
이들 다양한 메모리 유닛들로부터, 처리 유닛(들)(2810)은 본 발명의 프로세스들을 실행하기 위해 실행할 명령어들 및 처리할 데이터를 검색한다. 처리 유닛(들)은 상이한 실시예들에서 단일 프로세서 또는 멀티-코어 프로세서일 수 있다. 일부 명령어들은 GPU(2815)에 전달되어 이에 의해 실행된다. GPU(2815)는 다양한 계산들을 없애거나 처리 유닛(들)(2810)에 의해 제공된 이미지 처리를 보완할 수 있다. 일부 실시예들에서, 그러한 기능은 코어이미지(CoreImage)의 커널 셰이딩 언어(kernel shading language)를 사용하여 제공될 수 있다.
판독 전용 메모리(ROM)(2830)는 처리 유닛(들)(2810) 및 전자 시스템의 다른 모듈들에 의해 요구되는 정적 데이터 및 명령어들을 저장한다. 한편, 영구 저장 디바이스(2835)는 판독-기록 메모리 디바이스이다. 이러한 디바이스는 전자 시스템(2800)이 오프일 때도 명령어들 및 데이터를 저장하는 비휘발성 메모리 유닛이다. 본 발명의 일부 실시예들은 영구 저장 디바이스(2835)로서 (자기 또는 광학 디스크 및 그의 대응하는 디스크 드라이브와 같은) 대용량 저장 디바이스를 사용한다.
다른 실시예들은 영구 저장 디바이스로서 (플로피 디스크, 플래시 메모리 디바이스 등 및 그의 대응하는 드라이브와 같은) 탈착형 저장 디바이스를 사용한다. 영구 저장 디바이스(2835)와 같이, 시스템 메모리(2820)는 판독-기록 메모리 디바이스이다. 그러나, 저장 디바이스(2835)와는 달리, 시스템 메모리(2820)는 랜덤 액세스 메모리와 같은 휘발성 판독-기록 메모리이다. 시스템 메모리(2820)는 프로세서가 런타임 시 요구하는 명령어들 및 데이터의 일부를 저장한다. 일부 실시예들에서, 본 발명의 프로세스들은 시스템 메모리(2820), 영구 저장 디바이스(2835), 및/또는 판독 전용 메모리(2830)에 저장된다. 예를 들어, 다양한 메모리 유닛들이 일부 실시예들에 따라 멀티미디어 클립들을 처리하기 위한 명령어들을 포함한다. 이들 다양한 메모리 유닛들로부터, 처리 유닛(들)(2810)은 일부 실시예들의 프로세스들을 실행하기 위해 실행할 명령어들 및 처리할 데이터를 검색한다.
버스(2805)는 또한 입력 및 출력 디바이스들(2840, 2845)에 연결한다. 입력 디바이스들(2840)은 사용자가 전자 시스템으로 정보를 전달하고 전자 시스템에 대한 커맨드들을 선택하는 것을 가능하게 한다. 입력 디바이스들(2840)은 문자숫자 키보드들 및 포인팅 디바이스들(또한 "커서 제어 디바이스들"로 지칭됨), 카메라들(예컨대, 웹캠들), 마이크로폰들 또는 음성 커맨드들을 수신하기 위한 유사한 디바이스들 등을 포함한다. 출력 디바이스들(2845)은 전자 시스템에 의해 생성된 이미지들을 디스플레이하거나 그렇지 않으면 데이터를 출력한다. 출력 디바이스들(2845)은 프린터들, 및 음극선관(CRT)들 또는 액정 디스플레이(LCD)들과 같은 디스플레이 디바이스들뿐만 아니라 스피커들 또는 유사한 오디오 출력 디바이스들을 포함한다. 일부 실시예들은 입력 및 출력 디바이스들 둘 모두로서 기능하는 터치스크린과 같은 디바이스들을 포함한다.
마지막으로, 도 28에 도시된 바와 같이, 버스(2805)는 또한 네트워크 어댑터(도시되지 않음)를 통해 전자 시스템(2800)을 네트워크(2825)에 연결한다. 이러한 방식으로, 컴퓨터는 컴퓨터들의 네트워크(예컨대, 근거리 네트워크("LAN"), 광역 네트워크("WAN"), 인트라넷, 또는 인터넷과 같은 네트워크들의 네트워크)의 일부일 수 있다. 전자 시스템(2800)의 임의의 또는 모든 컴포넌트들은 본 발명과 함께 사용될 수 있다.
일부 실시예들은 전자 컴포넌트들, 예를 들어 마이크로프로세서, 기계-판독가능 또는 컴퓨터-판독가능 매체(대안적으로, 컴퓨터-판독가능 저장 매체, 기계-판독가능 매체, 또는 기계-판독가능 저장 매체로 지칭됨)에 컴퓨터 프로그램 명령어들을 저장하는 메모리 및 저장장치를 포함한다. 그러한 컴퓨터-판독가능 매체들의 일부 예들은 RAM, ROM, CD-ROM(read-only compact disc), CD-R(recordable compact disc), CD-RW(rewritable compact disc), 판독-전용 DVD(digital versatile disc)(예컨대, DVD-ROM, 듀얼-레이어 DVD-ROM), 다양한 기록가능/재기록가능 DVD(예컨대, DVD-RAM, DVD-RW, DVD+RW 등), 플래시 메모리(예컨대, SD 카드, 미니-SD 카드, 마이크로-SD 카드 등), 자기 및/또는 솔리드 스테이트 하드 드라이브, 판독-전용 및 기록가능 블루-레이(Blu-Ray)® 디스크, 초고밀도 광 디스크, 임의의 다른 광 또는 자기 매체, 및 플로피 디스크를 포함한다. 컴퓨터-판독가능 매체들은 적어도 하나의 처리 유닛에 의해 실행 가능하며 다양한 동작들을 수행하기 위한 명령어들의 세트들을 포함하는 컴퓨터 프로그램을 저장할 수 있다. 컴퓨터 프로그램들 또는 컴퓨터 코드의 예들은, 컴파일러에 의해 생성되는 바와 같은 기계 코드, 및 인터프리터를 사용하여 컴퓨터, 전자 컴포넌트 또는 마이크로프로세서에 의해 실행되는 상위-레벨 코드를 포함한 파일들을 포함한다.
상기 논의는 소프트웨어를 실행시키는 마이크로프로세서 또는 멀티-코어 프로세서들을 주로 언급하지만, 일부 실시예들은 ASIC(application specific integrated circuit) 또는 FPGA(field programmable gate array)와 같은 하나 이상의 집적 회로에 의해 수행된다. 일부 실시예들에서, 그러한 집적 회로들은 회로 자체 상에 저장된 명령어들을 실행시킨다. 게다가, 일부 실시예들은 프로그래밍 가능한 논리 디바이스(programmable logic device: PLD)들, ROM, 또는 RAM 디바이스들에 저장된 소프트웨어를 실행시킨다.
본 출원의 이러한 명세서 및 임의의 청구항들에 사용되는 바와 같이, 용어들 "컴퓨터", "서버", "프로세서", 및 "메모리" 모두는 전자 디바이스 또는 다른 기술적 디바이스를 언급한다. 이들 용어들은 사람 또는 사람들의 그룹들을 배제한다. 명세서의 목적들을 위해, 용어들 "디스플레이" 또는 "디스플레이하는"은 전자 디바이스 상에서 디스플레이하는 것을 의미한다. 본 출원의 이러한 명세서 및 임의의 청구항들에 사용되는 바와 같이, 용어들 "컴퓨터 판독가능 매체", "컴퓨터 판독가능 매체들", 및 "기계 판독가능 매체"는 전체적으로 컴퓨터에 의해 판독가능한 형태로 정보를 저장하는 유형적인 물리적 오브젝트들로 제한된다. 이들 용어들은 임의의 무선 신호들, 유선 다운로드 신호들, 및 임의의 다른 임시 신호들을 제외한다.
본 발명은 다수의 특정 상세사항들을 참조하여 설명되었지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 사상으로부터 벗어남이 없이 다른 특정 형태들로 구체화될 수 있다는 것을 인식할 것이다. 게다가, 도면들의 많은 것들(도 5, 도 6 및 도 12 내지 도 15를 포함함)은 프로세스들을 개념적으로 예시한다. 이들 프로세스들의 특정 동작들은 도시되고 설명된 정확한 순서로 수행되지 않을 수 있다. 특정 동작들은 하나의 연속적인 시리즈의 동작들로 수행되지 않을 수 있으며, 상이한 특정 동작들이 상이한 실시예들에서 수행될 수 있다. 더욱이, 프로세스는 수 개의 서브-프로세스들을 사용하여 또는 보다 큰 매크로 프로세스의 일부로서 구현될 수 있다. 따라서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 상기 예시적인 상세사항들에 의해 제한되는 것이 아니라 오히려 첨부된 청구범위에 의해 한정된다는 것을 이해할 것이다.

Claims (20)

  1. 제1 피어 디바이스에 대한, 키체인(keychain)들을 동기화하기 위한 동기화 서클(synchronization circle)에 가입하려는 피어 디바이스들의 세트 내의 제2 피어 디바이스로부터의 요청을 처리하기 위한 방법으로서, 상기 동기화 서클은 보안 데이터를 공유하는 상기 제1 피어 디바이스 및 다른 피어 디바이스들의 세트를 포함하며, 상기 방법은,
    상기 제2 피어 디바이스가 상기 동기화 서클에 가입하도록 하는 요청을 수신하는 단계 - 상기 동기화 서클은 특정 클라우드 서비스 계정과 연관됨 - ;
    상기 제1 피어 디바이스에서, 상기 요청이 상기 특정 클라우드 서비스 계정과 연관된 패스워드로부터 유래된, 상기 요청과 함께 수신된 데이터에 기초하여 인증되는지 여부를 결정하는 단계;
    상기 요청이 인증된 것으로 결정되는 경우, 상기 제2 피어 디바이스에 의한 상기 요청을 승인하는 입력을 촉구하는 단계;
    상기 요청을 승인하는 입력이 수신되는 경우, 상기 동기화 서클에 상기 제2 피어 디바이스를 추가하는 단계; 및
    상기 동기화 서클에 상기 제2 피어 디바이스를 추가하는 단계 후에, 상기 제1 및 제2 피어 디바이스들 사이에서 키체인들을 동기화하여 상기 제1 및 제2 피어 디바이스들 사이에서 보안 데이터를 공유하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 동기화 서클에 상기 제2 피어 디바이스를 추가하는 단계는, 상기 동기화 서클의 멤버들로서 특정된 디바이스들의 목록에, 상기 제2 피어 디바이스를 고유하게 식별하는 데이터를 추가하는 단계를 포함하는, 방법.
  3. 제2항에 있어서, 상기 동기화 서클에 상기 제2 피어 디바이스를 추가하는 단계는, 상기 제1 피어 디바이스에 속하고 그것에 의해 생성된 공개/개인 디바이스 서명 키 쌍의 개인키로 상기 디바이스들의 목록의 서명을 생성하는 단계를 추가로 포함하는, 방법.
  4. 제3항에 있어서, 상기 동기화 서클에 상기 제2 피어 디바이스를 추가하는 단계는, 상기 디바이스들의 목록 및 상기 생성된 서명을 상기 동기화 서클 내의 다른 피어 디바이스들과 공유하는 단계를 추가로 포함하는, 방법.
  5. 제1항에 있어서, 상기 제1 피어 디바이스와 상기 제2 피어 디바이스 사이에서 공유되는 상기 데이터는 패스워드들, 개인키들, 인증서들 및 보안 노트들 중 적어도 하나를 포함하는, 방법.
  6. 제1항에 있어서, 상기 요청이 인증되는지 여부를 결정하는 단계는,
    상기 동기화 서클과 연관된 사용자가, 상기 제2 피어 디바이스가 상기 동기화 서클에 가입하도록 하는 상기 요청을 제출했다는 것을 확인하는 단계; 및
    상기 제2 피어 디바이스가 상기 동기화 서클에 가입하도록 하는 상기 요청이 상기 제2 피어 디바이스에 의해 생성된다는 것을 확인하는 단계를 포함하는, 방법.
  7. 제6항에 있어서, 상기 클라우드 서비스 계정의 패스워드로부터 유래되고, 상기 제2 피어 디바이스가 상기 동기화 서클에 가입하도록 하는 상기 요청과 함께 수신된 상기 데이터는 상기 클라우드 서비스 계정의 패스워드에 기초하여 생성되는 사용자 서명 공개/개인 키 쌍의 개인키로 서명된 상기 요청의 서명을 포함하며, 상기 동기화 서클과 연관된 상기 사용자가, 상기 제2 피어 디바이스가 상기 동기화 서클에 가입하도록 하는 상기 요청을 제출했다는 것을 확인하는 단계는,
    상기 요청의 서명을 상기 클라우드 서비스 계정의 패스워드에 기초하여 생성되는 상기 사용자 서명 공개/개인 키 쌍의 공개키로 복호화하는 단계; 및
    상기 요청이 상기 복호화된 서명과 매칭된다는 것을 결정하는 단계를 포함하는, 방법.
  8. 제3항에 있어서, 상기 동기화 서클에 상기 제2 피어 디바이스를 추가하는 단계는, 상기 동기화 서클 내의 상기 다른 피어 디바이스들과 공유하기 위한 중심 위치에 상기 디바이스들의 목록 및 상기 생성된 서명을 저장하는 단계를 추가로 포함하는, 방법.
  9. 제6항에 있어서, 상기 제2 피어 디바이스가 상기 동기화 서클에 가입하도록 하는 상기 요청과 함께 수신된 상기 데이터는 상기 요청의 서명을 포함하며, 상기 제2 피어 디바이스가 상기 동기화 서클에 가입하도록 하는 상기 요청이, 상기 제2 피어 디바이스에 의해 생성된다는 것을 확인하는 단계는,
    상기 제2 피어 디바이스에 속하고 그것에 의해 생성된 공개/개인 키 쌍의 공개키로 상기 요청의 서명을 복호화하는 단계; 및
    상기 요청이 상기 복호화된 서명과 매칭된다는 것을 결정하는 단계를 포함하는, 방법.
  10. 제1항에 있어서, 상기 요청을 승인하는 입력을 촉구하는 단계는, 상기 클라우드 서비스 계정의 상기 패스워드가 입력되도록 하는 요청을 상기 제1 피어 디바이스의 디스플레이 스크린 상에 디스플레이하는 단계를 포함하는, 방법.
  11. 제1 피어 디바이스 상에 저장된 키체인들의 세트를 다른 피어 디바이스들의 세트와 동기화하기 위한 방법으로서, 상기 제1 피어 디바이스 및 상기 다른 피어 디바이스들의 세트는 네트워크를 통해 서로 통신 가능하게 연결되며, 상기 방법은,
    상기 제1 피어 디바이스 상에 저장된 상기 키체인들의 세트 내의 키체인에 대한 수정을 수신하는 단계 - 수정된 상기 키체인은 피어 디바이스들 사이에서 공유되는 복수의 보안 데이터 항목을 포함함 - ;
    상기 제1 피어 디바이스 상에 저장된 상기 키체인들의 세트를 상기 다른 피어 디바이스들의 세트와 동기화하기 위하여 상기 다른 피어 디바이스들의 세트 내의 각각의 피어 디바이스에 대한 업데이트 요청을 생성하는 단계 - 상기 업데이트는 수정된 상기 키체인의 모든 보안 데이터 항목들보다 적은 수를 포함함 - ; 및
    별개의 보안 통신 채널을 통하여 각각의 생성된 업데이트 요청을 상기 네트워크를 통해 전송하는 단계
    를 포함하며, 각각의 상이한 보안 통신 채널은 상기 제1 피어 디바이스와 상기 다른 피어 디바이스들 중 상이한 디바이스 사이에 있고 상이한 세트의 키들로 보안되는, 방법.
  12. 제11항에 있어서, 별개의 보안 통신 채널을 통하여 각각의 생성된 업데이트 요청을 상기 네트워크를 통해 전송하는 단계는, 상기 다른 피어 디바이스들의 세트 내의 특정한 피어 디바이스에 대한 각각의 업데이트 요청이 상기 특정한 피어 디바이스에 의해서만 복호화 가능하고 임의의 다른 디바이스들에 의해서는 가능하지 않도록, 상기 업데이트 요청을 암호화 키로 암호화하는 단계를 포함하는, 방법.
  13. 제12항에 있어서, 상기 다른 피어 디바이스들의 세트 내의 특정한 피어 디바이스에 대한 상기 업데이트 요청을 암호화하기 위한 상기 암호화 키는, 상기 특정한 피어 디바이스의 공개/개인 키 쌍의 공개키를 포함하는, 방법.
  14. 제11항에 있어서, 상기 키체인에 대한 수정은 상기 키체인에 보안 데이터 항목을 추가하는 것인, 방법.
  15. 제11항에 있어서, 상기 키체인에 대한 수정은 상기 키체인 내의 상기 보안 데이터 항목들 중 하나의 수정인, 방법.
  16. 제11항에 있어서, 상기 키체인에 대한 수정은 상기 키체인으로부터 상기 보안 데이터 항목들 중 하나의 삭제인, 방법.
  17. 제11항에 있어서, 상기 네트워크는 완전 연결 메시 토폴로지(fully connected mesh topology)에 따라 구성된 오버레이 네트워크로 구현되는, 방법.
  18. 제11항에 있어서, 상기 네트워크는 복수의 노드를 포함하는 스타 토폴로지(star topology)에 따라 구성된 오버레이 네트워크로 구현되며, 상기 스타 토폴로지의 중심 노드는 클라우드 저장 서비스이고 상기 스타 토폴로지의 나머지 노드들은 상기 제1 피어 디바이스 및 상기 다른 피어 디바이스들의 세트를 포함하는, 방법.
  19. 적어도 하나의 처리 유닛에 의해 실행될 때 제1항 내지 제18항 중 어느 한 항의 방법을 수행하는 프로그램을 저장하는 기계 판독가능 매체.
  20. 처리 유닛들의 세트; 및
    상기 처리 유닛들 중 적어도 하나의 처리 유닛에 의해 실행될 때 제1항 내지 제18항 중 어느 한 항의 방법을 수행하는 프로그램을 저장하는 기계 판독가능 매체
    를 포함하는, 전자 디바이스.
KR1020157018926A 2013-01-18 2013-12-24 키체인 동기화 KR101713307B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201361754524P 2013-01-18 2013-01-18
US61/754,524 2013-01-18
US13/839,126 2013-03-15
US13/839,084 2013-03-15
US13/839,050 2013-03-15
US13/839,126 US9124637B2 (en) 2013-01-18 2013-03-15 Data protection for keychain syncing
US13/839,050 US9197700B2 (en) 2013-01-18 2013-03-15 Keychain syncing
US13/839,084 US9077759B2 (en) 2013-01-18 2013-03-15 Conflict resolution for keychain syncing
PCT/US2013/077724 WO2014113196A1 (en) 2013-01-18 2013-12-24 Keychain synchronization

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177005820A Division KR101787955B1 (ko) 2013-01-18 2013-12-24 키체인 동기화

Publications (2)

Publication Number Publication Date
KR20150095872A KR20150095872A (ko) 2015-08-21
KR101713307B1 true KR101713307B1 (ko) 2017-03-08

Family

ID=51209997

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177005820A KR101787955B1 (ko) 2013-01-18 2013-12-24 키체인 동기화
KR1020157018926A KR101713307B1 (ko) 2013-01-18 2013-12-24 키체인 동기화

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177005820A KR101787955B1 (ko) 2013-01-18 2013-12-24 키체인 동기화

Country Status (8)

Country Link
US (3) US9197700B2 (ko)
EP (2) EP3860080A1 (ko)
JP (1) JP6072305B2 (ko)
KR (2) KR101787955B1 (ko)
CN (4) CN108055352B (ko)
AU (3) AU2013374203B2 (ko)
TW (1) TWI512534B (ko)
WO (1) WO2014113196A1 (ko)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9077759B2 (en) 2013-01-18 2015-07-07 Apple Inc. Conflict resolution for keychain syncing
US9197700B2 (en) 2013-01-18 2015-11-24 Apple Inc. Keychain syncing
US9860747B2 (en) * 2013-06-07 2018-01-02 Apple Inc. System and method for cloud synchronizing known networks
US10250579B2 (en) * 2013-08-13 2019-04-02 Alcatel Lucent Secure file transfers within network-based storage
US10148736B1 (en) * 2014-05-19 2018-12-04 Amazon Technologies, Inc. Executing parallel jobs with message passing on compute clusters
US9860314B2 (en) * 2014-08-19 2018-01-02 Ciena Corporation Data synchronization system and methods in a network using a highly-available key-value storage system
US9565185B2 (en) * 2014-11-24 2017-02-07 At&T Intellectual Property I, L.P. Facilitation of seamless security data transfer for wireless network devices
US10083291B2 (en) * 2015-02-25 2018-09-25 Verisign, Inc. Automating internet of things security provisioning
US10205598B2 (en) * 2015-05-03 2019-02-12 Ronald Francis Sulpizio, JR. Temporal key generation and PKI gateway
US9432340B1 (en) * 2015-05-07 2016-08-30 Bogart Associates System and method for secure end-to-end chat system
US10198182B2 (en) 2015-05-31 2019-02-05 Apple Inc. Synchronization and verification groups among related devices
US9842062B2 (en) 2015-05-31 2017-12-12 Apple Inc. Backup accessible by subset of related devices
US10079880B2 (en) 2015-06-07 2018-09-18 Apple Inc. Automatic identification of invalid participants in a secure synchronization system
US9923721B2 (en) * 2015-06-22 2018-03-20 Intel IP Corporation Key agreement and authentication for wireless communication
US10419422B2 (en) 2015-07-06 2019-09-17 Apple Inc. Combined authorization process
US10270597B2 (en) 2015-07-06 2019-04-23 Apple Inc. Combined authorization process
US11444766B2 (en) 2015-07-06 2022-09-13 Apple Inc. Combined authorization process
CZ2015471A3 (cs) * 2015-07-07 2016-09-29 Aducid S.R.O. Způsob přiřazení alespoň dvou autentizačních zařízení k účtu jednoho uživatele pomocí autentizačního serveru
US20170288866A1 (en) * 2016-03-30 2017-10-05 AVAST Software s.r.o. Systems and methods of creating a distributed ring of trust
US10298402B2 (en) * 2016-06-27 2019-05-21 Google Llc Access control technology for peer-to-peer sharing
CN112910912B (zh) 2016-06-27 2023-08-01 谷歌有限责任公司 用于访问控制的方法和非暂时性机器可读存储介质
US11057208B2 (en) * 2016-08-22 2021-07-06 Rakuten, Inc. Management system, management device, management method, program, and non-transitory computer-readable information recording medium
US10263778B1 (en) * 2016-12-14 2019-04-16 Amazon Technologies, Inc. Synchronizable hardware security module
US10425225B1 (en) 2016-12-14 2019-09-24 Amazon Technologies, Inc. Synchronizable hardware security module
US10313123B1 (en) 2016-12-14 2019-06-04 Amazon Technologies, Inc. Synchronizable hardware security module
US11037232B2 (en) 2017-06-06 2021-06-15 Microsoft Technology Licensing, Llc Smart membership management
WO2018232304A1 (en) * 2017-06-16 2018-12-20 Intel Corporation Cloud-to-device mediator service from services definition
US10970302B2 (en) 2017-06-22 2021-04-06 Adobe Inc. Component-based synchronization of digital assets
US11635908B2 (en) 2017-06-22 2023-04-25 Adobe Inc. Managing digital assets stored as components and packaged files
GB2564430C (en) * 2017-07-07 2021-02-17 Gurulogic Microsystems Oy Data communication system and method
FR3070077A1 (fr) * 2017-08-09 2019-02-15 Orange Procede et serveur de certification d'un document electronique
US10911439B2 (en) 2017-10-12 2021-02-02 Mx Technologies, Inc. Aggregation platform permissions
US11023573B2 (en) * 2018-04-20 2021-06-01 Microsoft Technology Licensing, Llc Password reset for multi-domain environment
US11321012B2 (en) * 2018-10-12 2022-05-03 Adobe Inc. Conflict resolution within synchronized composite-part-based digital assets
US10805803B1 (en) 2019-04-03 2020-10-13 Genfintech, Inc. Systems and methods for mobile peer-to-peer content sharing
CN112241524A (zh) * 2019-07-16 2021-01-19 深圳软牛科技有限公司 iOS设备账号密码导入方法及系统
JP2021071857A (ja) * 2019-10-30 2021-05-06 立花 良一 パスワード提供システム
US11321446B2 (en) * 2019-12-16 2022-05-03 Dell Products L.P. System and method to ensure secure and automatic synchronization of credentials across devices
US11652626B2 (en) * 2020-02-18 2023-05-16 International Business Machines Corporation Safeguarding cryptographic keys from modification or deletion
CN111507713B (zh) * 2020-04-09 2021-06-29 链博(成都)科技有限公司 一种基于区块链的资产与数据集成管理方法、系统及终端
CN112202746B (zh) * 2020-09-24 2023-04-21 北京百度网讯科技有限公司 Rpc成员信息获取方法、装置、电子设备和存储介质
US20220103549A1 (en) * 2020-09-29 2022-03-31 Schneider Electric USA, Inc. Management of setting change propagation in networked devices
US11595207B2 (en) * 2020-12-23 2023-02-28 Dropbox, Inc. Utilizing encryption key exchange and rotation to share passwords via a shared folder
TWI748925B (zh) * 2021-06-09 2021-12-01 中華電信股份有限公司 端對端加密通訊的金鑰交換系統、方法及其電腦可讀媒介

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004159298A (ja) 2002-07-23 2004-06-03 Matsushita Electric Ind Co Ltd 端末装置、通信方法および通信システム
US7260716B1 (en) 1999-09-29 2007-08-21 Cisco Technology, Inc. Method for overcoming the single point of failure of the central group controller in a binary tree group key exchange approach

Family Cites Families (187)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020013898A1 (en) * 1997-06-04 2002-01-31 Sudia Frank W. Method and apparatus for roaming use of cryptographic values
US5748736A (en) * 1996-06-14 1998-05-05 Mittra; Suvo System and method for secure group communications via multicast or broadcast
US5870765A (en) * 1996-10-09 1999-02-09 Oracle Corporation Database synchronizer
US5924094A (en) * 1996-11-01 1999-07-13 Current Network Technologies Corporation Independent distributed database system
US6738907B1 (en) * 1998-01-20 2004-05-18 Novell, Inc. Maintaining a soft-token private key store in a distributed environment
US6298072B1 (en) * 1998-02-19 2001-10-02 Mci Communications Corporation Real-time transaction synchronization among peer authentication systems in a telecommunications network environment
US6240512B1 (en) * 1998-04-30 2001-05-29 International Business Machines Corporation Single sign-on (SSO) mechanism having master key synchronization
US6810405B1 (en) * 1998-08-18 2004-10-26 Starfish Software, Inc. System and methods for synchronizing data between multiple datasets
US6226650B1 (en) * 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
US6335937B1 (en) * 1998-09-24 2002-01-01 International Business Machines Corp. Node failure recovery in a hub and spoke data replication mechanism
US6529921B1 (en) * 1999-06-29 2003-03-04 Microsoft Corporation Dynamic synchronization of tables
US6401104B1 (en) * 1999-07-03 2002-06-04 Starfish Software, Inc. System and methods for synchronizing datasets using cooperation among multiple synchronization engines
US6240188B1 (en) 1999-07-06 2001-05-29 Matsushita Electric Industrial Co., Ltd. Distributed group key management scheme for secure many-to-many communication
JP2001082086A (ja) 1999-09-16 2001-03-27 Geostr Corp 複数個の脈状内部空洞部を有する構造物の支柱構造
JP3963417B2 (ja) * 1999-11-19 2007-08-22 株式会社東芝 データ同期処理のための通信方法および電子機器
US6754678B2 (en) * 1999-12-20 2004-06-22 California Institute Of Technology Securely and autonomously synchronizing data in a distributed computing environment
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US7231517B1 (en) * 2000-03-03 2007-06-12 Novell, Inc. Apparatus and method for automatically authenticating a network client
EP1260906A1 (en) * 2000-04-24 2002-11-27 Matsushita Electric Industrial Co., Ltd Access right setting device and manager terminal
US7228427B2 (en) * 2000-06-16 2007-06-05 Entriq Inc. Method and system to securely distribute content via a network
JP2004506361A (ja) * 2000-08-04 2004-02-26 ファースト データ コーポレイション デバイスの検証ステータスを提供することによる電子通信におけるエンティティ認証
US6931454B2 (en) * 2000-12-29 2005-08-16 Intel Corporation Method and apparatus for adaptive synchronization of network devices
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
FR2825209A1 (fr) 2001-05-23 2002-11-29 Thomson Licensing Sa Dispositifs et procede de securisation et d'identification de messages
US7356487B2 (en) * 2001-06-14 2008-04-08 Qurio Holdings, Inc. Efficient transportation of digital files in a peer-to-peer file delivery network
US7421411B2 (en) 2001-07-06 2008-09-02 Nokia Corporation Digital rights management in a mobile communications environment
US7082200B2 (en) * 2001-09-06 2006-07-25 Microsoft Corporation Establishing secure peer networking in trust webs on open networks using shared secret device key
US7493363B2 (en) * 2001-09-19 2009-02-17 Microsoft Corporation Peer-to-peer group management and method for maintaining peer-to-peer graphs
US7925878B2 (en) * 2001-10-03 2011-04-12 Gemalto Sa System and method for creating a trusted network capable of facilitating secure open network transactions using batch credentials
JP2003114821A (ja) * 2001-10-05 2003-04-18 Hitachi Ltd ネットワーク接続機器の情報交換方法およびシステム
ES2291259T3 (es) * 2001-10-05 2008-03-01 Virtual Paper Emedia Solutions Gmbh Procedimiento y sistema para la descodificacion autorizada de datos codificados usando al menos dos certificados.
US20080148350A1 (en) 2006-12-14 2008-06-19 Jeffrey Hawkins System and method for implementing security features and policies between paired computing devices
US7127613B2 (en) * 2002-02-25 2006-10-24 Sun Microsystems, Inc. Secured peer-to-peer network data exchange
US7120797B2 (en) * 2002-04-24 2006-10-10 Microsoft Corporation Methods for authenticating potential members invited to join a group
JP2003345685A (ja) * 2002-05-22 2003-12-05 Seiko Epson Corp デバイス共有システム、デバイス管理端末、ゲートウェイ端末、デバイス、端末用プログラム及びデバイス用プログラム、並びに、デバイス共有サービス提供方法
EP1383265A1 (en) * 2002-07-16 2004-01-21 Nokia Corporation Method for generating proxy signatures
EP1385311B1 (en) 2002-07-23 2008-05-28 Matsushita Electric Industrial Co., Ltd. Terminal apparatus, communication method, and communication system for authentication of users in a user group in a network
US7386878B2 (en) * 2002-08-14 2008-06-10 Microsoft Corporation Authenticating peer-to-peer connections
US7069438B2 (en) * 2002-08-19 2006-06-27 Sowl Associates, Inc. Establishing authenticated network connections
US7346705B2 (en) * 2002-08-28 2008-03-18 Apple Inc. Method of synchronising three or more electronic devices and a computer system for implementing that method
EP1547304B1 (en) * 2002-09-13 2007-11-14 Telefonaktiebolaget LM Ericsson (publ) Secure broadcast/multicast service
JP3836858B2 (ja) * 2002-09-27 2006-10-25 富士通株式会社 データ配信方法、システム、伝送方法及びプログラム
US8037202B2 (en) 2002-10-31 2011-10-11 Oracle America, Inc. Presence detection using mobile agents in peer-to-peer networks
US7328243B2 (en) * 2002-10-31 2008-02-05 Sun Microsystems, Inc. Collaborative content coherence using mobile agents in peer-to-peer networks
EP1567925A1 (en) * 2002-11-29 2005-08-31 Koninklijke Philips Electronics N.V. Key synchronization in an image cryptographic system
US7706540B2 (en) * 2002-12-16 2010-04-27 Entriq, Inc. Content distribution using set of session keys
KR100555949B1 (ko) 2003-04-11 2006-03-03 삼성전자주식회사 홈 디바이스의 인증시스템 및 그의 인증방법
US8359206B2 (en) * 2003-06-16 2013-01-22 Meetup, Inc. Web based interactive meeting facility
US7636776B2 (en) 2003-07-31 2009-12-22 Microsoft Corporation Systems and methods for synchronizing with multiple data stores
US7698549B2 (en) * 2003-08-15 2010-04-13 Venafi, Inc. Program product for unified certificate requests from certificate authorities
CN100456669C (zh) * 2003-09-22 2009-01-28 华为技术有限公司 一种进行组密钥分发的方法
US7143117B2 (en) 2003-09-25 2006-11-28 International Business Machines Corporation Method, system, and program for data synchronization by determining whether a first identifier for a portion of data at a first source and a second identifier for a portion of corresponding data at a second source match
US7171514B2 (en) 2003-11-20 2007-01-30 International Business Machines Corporation Apparatus and method to control access to logical volumes using parallel access volumes
US7500020B1 (en) * 2003-12-31 2009-03-03 Symantec Operating Corporation Coherency of replicas for a distributed file sharing system
EP1566938A1 (en) 2004-02-18 2005-08-24 Sony International (Europe) GmbH Device registration in a wireless multi-hop ad-hoc network
AU2005225847B2 (en) * 2004-03-26 2011-05-26 Adrea Llc Method of and system for generating an authorized domain
US7814231B2 (en) * 2004-05-24 2010-10-12 Apple Inc. Method of synchronizing between three or more devices
US7809682B2 (en) * 2004-05-24 2010-10-05 Apple Inc. Data synchronization between multiple devices
US7823190B1 (en) * 2004-06-02 2010-10-26 Sap Ag System and method for implementing a distributed keystore within an enterprise network
US8015596B2 (en) * 2004-06-28 2011-09-06 International Business Machines Corporation Shared credential store
JP2008504782A (ja) * 2004-06-29 2008-02-14 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 医療用無線アドホックネットワークノードの効率的な認証システム及び方法
US7730026B2 (en) * 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US20060064470A1 (en) * 2004-09-23 2006-03-23 Sargent Antony J Method, system, and computer program product for improved synchronization efficiency for mobile devices, including database hashing and caching of web access errors
WO2006063118A2 (en) * 2004-12-07 2006-06-15 Pure Networks, Inc. Network management
EP1828932A4 (en) * 2004-12-10 2008-03-05 Seven Networks Internat Oy DATABASE SYNCHRONIZATION
FI120165B (fi) * 2004-12-29 2009-07-15 Seven Networks Internat Oy Tietokannan synkronointi matkaviestinverkon kautta
US7317907B2 (en) * 2005-01-31 2008-01-08 Research In Motion Limited Synchronizing server and device data using device data schema
US8045714B2 (en) * 2005-02-07 2011-10-25 Microsoft Corporation Systems and methods for managing multiple keys for file encryption and decryption
KR100643327B1 (ko) * 2005-03-31 2006-11-10 삼성전자주식회사 분산화 개인용무선네트워크의 데이터 슬롯 할당 방법
US7502354B1 (en) * 2005-04-15 2009-03-10 Nvidia Corporation Mesh networking using point coordination function
US7350074B2 (en) * 2005-04-20 2008-03-25 Microsoft Corporation Peer-to-peer authentication and authorization
AU2006246278A1 (en) * 2005-05-13 2006-11-16 Cryptomill Cryptographic control for mobile storage means
US20060277092A1 (en) * 2005-06-03 2006-12-07 Credigy Technologies, Inc. System and method for a peer to peer exchange of consumer information
US20070019616A1 (en) 2005-06-29 2007-01-25 Olli Rantapuska Group formation using mobile computing devices
US7991764B2 (en) 2005-07-22 2011-08-02 Yogesh Chunilal Rathod Method and system for communication, publishing, searching, sharing and dynamically providing a journal feed
US20070124310A1 (en) * 2005-07-26 2007-05-31 Novo Innovations, Inc. Distributed Computing System to Enable the Secure Exchange of Information Between Remotely Located Healthcare Applications
US20070039039A1 (en) * 2005-08-10 2007-02-15 Microsoft Corporation Authorization of device access to network services
KR100739743B1 (ko) * 2005-10-19 2007-07-13 삼성전자주식회사 홈 네트워크에서 디바이스를 독점적으로 제어하기 위한방법 및 장치
JP2007115023A (ja) * 2005-10-20 2007-05-10 Nippon Telegr & Teleph Corp <Ntt> 情報共有システム、情報共有方法および情報共有プログラム
US7945615B1 (en) * 2005-10-31 2011-05-17 Adobe Systems Incorporated Distributed shared persistent objects
US20070143612A1 (en) * 2005-12-16 2007-06-21 Research In Motion Limited System and method of securely distributing keys for peer-to-peer usage
WO2007087109A2 (en) 2005-12-21 2007-08-02 Transip, Inc. System and method for efficient replication of and access to application specific environments and data
US8108548B2 (en) 2005-12-22 2012-01-31 Microsoft Corporation Methodology and system for file replication based on a peergroup
US7801912B2 (en) * 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
US8145719B2 (en) * 2006-03-03 2012-03-27 Gogroups Method and system for messaging and communication based on groups
US8849983B2 (en) * 2006-03-16 2014-09-30 Futurewei Technologies, Inc. Method and system for updating and retrieving state information for mobile nodes in a communication network
US8510404B2 (en) * 2006-04-03 2013-08-13 Kinglite Holdings Inc. Peer to peer Synchronization system and method
US7665081B1 (en) * 2006-05-06 2010-02-16 Kaspersky Lab, Zao System and method for difference-based software updating
US9002018B2 (en) * 2006-05-09 2015-04-07 Sync Up Technologies Corporation Encryption key exchange system and method
US8255464B2 (en) * 2006-05-09 2012-08-28 Wilkins John T Contact management system and method
US20070271234A1 (en) 2006-05-22 2007-11-22 Ravikiran Chickmangalore N Information Exchange Among Members of a Group of Communication Device Users
US8370423B2 (en) 2006-06-16 2013-02-05 Microsoft Corporation Data synchronization and sharing relationships
US7953785B2 (en) * 2006-06-30 2011-05-31 Microsoft Corporation Content synchronization in a file sharing environment
US20080005195A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Versioning synchronization for mass p2p file sharing
US20080130630A1 (en) * 2006-07-07 2008-06-05 Matsushita Electric Industrial Co. Ltd. Secure peer to peer messaging service
CN101119582A (zh) * 2006-07-31 2008-02-06 华为技术有限公司 一种订阅移动业务的方法和系统
US7860826B2 (en) * 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US20080031459A1 (en) * 2006-08-07 2008-02-07 Seth Voltz Systems and Methods for Identity-Based Secure Communications
FR2906960B1 (fr) 2006-10-05 2009-04-17 Radiotelephone Sfr Procede de mise a disposition cloisonnee d'un service electronique.
US8671444B2 (en) * 2006-10-06 2014-03-11 Fmr Llc Single-party, secure multi-channel authentication for access to a resource
US20080103977A1 (en) 2006-10-31 2008-05-01 Microsoft Corporation Digital rights management for distributed devices
JP3974161B2 (ja) * 2006-11-24 2007-09-12 株式会社東芝 データ同期処理のための通信方法および電子機器
US8116456B2 (en) * 2006-11-28 2012-02-14 Oracle International Corporation Techniques for managing heterogeneous key stores
US9124650B2 (en) * 2006-12-13 2015-09-01 Quickplay Media Inc. Digital rights management in a mobile environment
US7760767B2 (en) 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
US8631088B2 (en) 2007-01-07 2014-01-14 Apple Inc. Prioritized data synchronization with host device
US8850140B2 (en) 2007-01-07 2014-09-30 Apple Inc. Data backup for mobile device
US7657769B2 (en) * 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US8059819B2 (en) * 2007-01-17 2011-11-15 Panasonic Electric Works Co., Ltd. Systems and methods for distributing updates for a key at a maximum rekey rate
US8489701B2 (en) 2007-01-30 2013-07-16 Microsoft Corporation Private virtual LAN spanning a public network for connection of arbitrary hosts
US7680067B2 (en) * 2007-03-09 2010-03-16 Palm, Inc. Peer-to-peer data synchronization architecture
US8885832B2 (en) * 2007-03-30 2014-11-11 Ricoh Company, Ltd. Secure peer-to-peer distribution of an updatable keyring
CN101136742B (zh) * 2007-04-09 2011-01-19 中兴通讯股份有限公司 群组密钥同步、更新、及校验方法
CN101137123B (zh) * 2007-04-09 2010-09-01 中兴通讯股份有限公司 集群系统的加密组呼、单呼、及动态重组呼叫实现方法
US8355696B1 (en) * 2007-06-07 2013-01-15 Sprint Communications Company L.P. Automated device activation
RU2438263C2 (ru) * 2007-06-19 2011-12-27 Квэлкомм Инкорпорейтед Способы и устройство для синхронизации набора данных в среде беспроводной связи
EP2031913B1 (en) 2007-07-27 2011-01-12 Research In Motion Limited Apparatus and methods for coordination of wireless systems
US8122497B2 (en) * 2007-09-10 2012-02-21 Redcloud, Inc. Networked physical security access control system and method
US8090685B2 (en) * 2007-09-14 2012-01-03 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
US20090077638A1 (en) * 2007-09-17 2009-03-19 Novell, Inc. Setting and synching preferred credentials in a disparate credential store environment
BRPI0817505A2 (pt) * 2007-09-28 2015-03-24 Apertio Ltd Sistema e método para replicação e sincronismo
US20090113412A1 (en) * 2007-10-29 2009-04-30 Sap Portals Israel Ltd. Method and apparatus for enhanced synchronization protocol
US20090125637A1 (en) 2007-11-09 2009-05-14 Nokia Corporation Method, Apparatus and Computer Program Product for Providing Data Management in a P2P Network
US8078749B2 (en) * 2008-01-30 2011-12-13 Microsoft Corporation Synchronization of multidimensional data in a multimaster synchronization environment with prediction
US20090196311A1 (en) * 2008-01-31 2009-08-06 Microsoft Corporation Initiation and expiration of objects in a knowledge based framework for a multi-master synchronization environment
US8117648B2 (en) * 2008-02-08 2012-02-14 Intersections, Inc. Secure information storage and delivery system and method
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
JP5206317B2 (ja) 2008-03-18 2013-06-12 株式会社リコー ネットワーク同期システム及び情報処理装置
US8019900B1 (en) * 2008-03-25 2011-09-13 SugarSync, Inc. Opportunistic peer-to-peer synchronization in a synchronization system
US8725679B2 (en) * 2008-04-07 2014-05-13 International Business Machines Corporation Client side caching of synchronized data
US20090260064A1 (en) * 2008-04-15 2009-10-15 Problem Resolution Enterprise, Llc Method and process for registering a device to verify transactions
US8196186B2 (en) * 2008-05-20 2012-06-05 Microsoft Corporation Security architecture for peer-to-peer storage system
US8458462B1 (en) * 2008-08-14 2013-06-04 Juniper Networks, Inc. Verifying integrity of network devices for secure multicast communications
US8209437B2 (en) * 2008-09-25 2012-06-26 Rockliffe Systems, Inc. Personal information management data synchronization
US8734872B2 (en) 2008-09-30 2014-05-27 Apple Inc. Access control to content published by a host
US7941410B2 (en) * 2008-09-30 2011-05-10 Microsoft Corporation Method and system of managing conflicts for a set of synchronized folders
US8775668B2 (en) * 2008-12-10 2014-07-08 At&T Intellectual Property I, Lp Redirection of multimedia content between receiver devices associated with a user
US8510810B2 (en) 2008-12-23 2013-08-13 Bladelogic, Inc. Secure credential store
US9917702B2 (en) * 2009-04-08 2018-03-13 Blackberry Limited System and method for managing items in a list shared by a group of mobile devices
US8254890B2 (en) * 2009-04-08 2012-08-28 Research In Motion Limited System and method for managing items in a list shared by a group of mobile devices
US9065868B2 (en) * 2009-04-08 2015-06-23 Blackberry Limited System and method for sharing data in a group of mobile devices
US8694578B2 (en) * 2009-05-29 2014-04-08 Microsoft Corporation Swarm-based synchronization over a network of object stores
US8621574B2 (en) * 2009-06-02 2013-12-31 Microsoft Corporation Opaque quarantine and device discovery
FR2948601B1 (fr) 2009-07-29 2011-08-05 Sidel Participations Procede de mise en volume d'une decoupe de carton et installation pour sa mise en oeuvre
US8385321B2 (en) * 2009-07-31 2013-02-26 Alcatel Lucent Method and system for synchronizing a data base at a plurality of nodes in an ad hoc network
US8738934B2 (en) * 2009-08-25 2014-05-27 Keeper Security, Inc. Method and apparatus for protecting account numbers and passwords
US20110179270A1 (en) * 2010-01-20 2011-07-21 The Provost, Fellows and Scholars of the College of the Holy and Undivided Trinity of Queen Elizab Data Retrieval System
US8805783B2 (en) * 2010-05-27 2014-08-12 Microsoft Corporation Synchronization of subsets of data including support for varying set membership
US10693853B2 (en) * 2010-07-23 2020-06-23 At&T Intellectual Property I, Lp Method and system for policy enforcement in trusted ad hoc networks
US20120079095A1 (en) * 2010-09-24 2012-03-29 Amazon Technologies, Inc. Cloud-based device synchronization
US9607293B2 (en) * 2010-11-29 2017-03-28 Barclays Bank Plc Method and system for account management and electronic wallet access on a mobile device
CN102447679B (zh) * 2010-10-09 2015-06-03 中兴通讯股份有限公司 一种保障对等网络数据安全的方法及系统
US20120096368A1 (en) 2010-10-14 2012-04-19 Microsoft Corporation Cloud-based virtual clipboard
US20120109830A1 (en) * 2010-10-29 2012-05-03 Matt Vogel Apparatus, system and method for a decentralized social network system and decentralized payment network system
US8948382B2 (en) 2010-12-16 2015-02-03 Microsoft Corporation Secure protocol for peer-to-peer network
US8681995B2 (en) * 2010-12-21 2014-03-25 Microsoft Corporation Supporting DNS security in a multi-master environment
US10198492B1 (en) * 2010-12-28 2019-02-05 Amazon Technologies, Inc. Data replication framework
US9064278B2 (en) * 2010-12-30 2015-06-23 Futurewei Technologies, Inc. System for managing, storing and providing shared digital content to users in a user relationship defined group in a multi-platform environment
US8868500B2 (en) * 2011-01-14 2014-10-21 Apple Inc. Data synchronization
CN102111411A (zh) * 2011-01-21 2011-06-29 南京信息工程大学 P2p网络中对等用户结点间的加密安全数据交换方法
CN102739701B (zh) * 2011-04-06 2016-05-25 中国电信股份有限公司 媒体流访问控制方法与对等流媒体系统
US9450766B2 (en) 2011-04-26 2016-09-20 Openet Telecom Ltd. Systems, devices and methods of distributing telecommunications functionality across multiple heterogeneous domains
WO2012174456A1 (en) * 2011-06-15 2012-12-20 Qualcomm Atheros, Inc. Communicating over powerline media using beamforming
JP5994215B2 (ja) * 2011-06-17 2016-09-21 ソニー株式会社 無線通信装置、情報処理装置、通信システムおよび無線通信装置の制御方法
ES2723781T3 (es) * 2011-08-03 2019-09-02 Amadeus Sas Método y sistema para mantener consistencia fuerte de contenidos replicados distribuidos en un sistema de cliente/servidor
US9424439B2 (en) * 2011-09-12 2016-08-23 Microsoft Technology Licensing, Llc Secure data synchronization
US10129211B2 (en) * 2011-09-15 2018-11-13 Stephan HEATH Methods and/or systems for an online and/or mobile privacy and/or security encryption technologies used in cloud computing with the combination of data mining and/or encryption of user's personal data and/or location data for marketing of internet posted promotions, social messaging or offers using multiple devices, browsers, operating systems, networks, fiber optic communications, multichannel platforms
US8838982B2 (en) 2011-09-21 2014-09-16 Visa International Service Association Systems and methods to secure user identification
US9661073B2 (en) 2011-11-18 2017-05-23 Google Inc. Web browser synchronization with multiple simultaneous profiles
US9330245B2 (en) * 2011-12-01 2016-05-03 Dashlane SAS Cloud-based data backup and sync with secure local storage of access keys
US8320558B1 (en) * 2011-12-29 2012-11-27 Google Inc. Encryption of synchronization information
US20130191897A1 (en) * 2012-01-24 2013-07-25 Cummings Engineering Consultants, Inc. Field Provisioning a Device to a Secure Enclave
US20130283060A1 (en) * 2012-04-23 2013-10-24 Raghavendra Kulkarni Seamless Remote Synchronization and Sharing of Uniformly Encrypted Data for Diverse Platforms and Devices
US9645966B2 (en) * 2012-06-08 2017-05-09 Apple Inc. Synchronizing handles for user accounts across multiple electronic devices
US8984582B2 (en) 2012-08-14 2015-03-17 Confidela Ltd. System and method for secure synchronization of data across multiple computing devices
US9384613B2 (en) 2012-08-16 2016-07-05 Google Inc. Near field communication based key sharing techniques
US8410898B1 (en) 2012-08-16 2013-04-02 Google Inc. Near field communication based key sharing techniques
KR20140037476A (ko) * 2012-09-19 2014-03-27 브레인즈스퀘어(주) 파일의 외부 유출 방지를 위한 시스템 및 그 방법
US8539567B1 (en) * 2012-09-22 2013-09-17 Nest Labs, Inc. Multi-tiered authentication methods for facilitating communications amongst smart home devices and cloud-based servers
US9280396B2 (en) 2012-11-01 2016-03-08 Netapp, Inc. Lock state synchronization for non-disruptive persistent operation
US20140164764A1 (en) * 2012-12-11 2014-06-12 Rawllin International Inc. Assignment of digital signature and qualification for related services
US9152686B2 (en) * 2012-12-21 2015-10-06 Zetta Inc. Asynchronous replication correctness validation
US9197700B2 (en) 2013-01-18 2015-11-24 Apple Inc. Keychain syncing
US9077759B2 (en) 2013-01-18 2015-07-07 Apple Inc. Conflict resolution for keychain syncing
US9977820B1 (en) * 2013-03-15 2018-05-22 Tasktop Technologies, Incorporated System and method for synchronizing states in associated data records
US9053165B2 (en) * 2013-07-08 2015-06-09 Dropbox, Inc. Structured content item synchronization
US10447778B2 (en) * 2015-04-17 2019-10-15 Extreme Networks, Inc. Synchronizing peer nodes of a multi-chassis switching cluster

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7260716B1 (en) 1999-09-29 2007-08-21 Cisco Technology, Inc. Method for overcoming the single point of failure of the central group controller in a binary tree group key exchange approach
JP2004159298A (ja) 2002-07-23 2004-06-03 Matsushita Electric Ind Co Ltd 端末装置、通信方法および通信システム

Also Published As

Publication number Publication date
CN108055283B (zh) 2021-01-29
AU2018274985A1 (en) 2019-01-03
AU2013374203B2 (en) 2016-09-08
CN104919775B (zh) 2018-01-05
AU2018274985B9 (en) 2021-07-15
EP2946541B1 (en) 2020-11-25
US9197700B2 (en) 2015-11-24
TW201443684A (zh) 2014-11-16
US10771545B2 (en) 2020-09-08
CN108055352B (zh) 2021-03-16
US20160065548A1 (en) 2016-03-03
AU2013374203A1 (en) 2015-07-30
CN108055352A (zh) 2018-05-18
US10218685B2 (en) 2019-02-26
US20190273729A1 (en) 2019-09-05
AU2018274985B2 (en) 2021-02-25
WO2014113196A4 (en) 2014-09-12
EP2946541A1 (en) 2015-11-25
CN104919775A (zh) 2015-09-16
JP2016505226A (ja) 2016-02-18
WO2014113196A1 (en) 2014-07-24
CN108055283A (zh) 2018-05-18
KR20150095872A (ko) 2015-08-21
JP6072305B2 (ja) 2017-02-01
KR20170026668A (ko) 2017-03-08
EP3860080A1 (en) 2021-08-04
CN108055131A (zh) 2018-05-18
TWI512534B (zh) 2015-12-11
KR101787955B1 (ko) 2017-10-18
US20140281540A1 (en) 2014-09-18
AU2016269486A1 (en) 2017-01-05
CN108055131B (zh) 2021-03-02

Similar Documents

Publication Publication Date Title
US10771545B2 (en) Keychain syncing
US9710673B2 (en) Conflict resolution for keychain syncing
CN107690798B (zh) 在安全同步系统中自动识别无效参与者
US20170012973A1 (en) Trust framework for secured digital interactions between entities

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 4