KR20210022157A - Synchronization and verification groups among related devices - Google Patents

Synchronization and verification groups among related devices Download PDF

Info

Publication number
KR20210022157A
KR20210022157A KR1020217005075A KR20217005075A KR20210022157A KR 20210022157 A KR20210022157 A KR 20210022157A KR 1020217005075 A KR1020217005075 A KR 1020217005075A KR 20217005075 A KR20217005075 A KR 20217005075A KR 20210022157 A KR20210022157 A KR 20210022157A
Authority
KR
South Korea
Prior art keywords
devices
ring
data
user
membership
Prior art date
Application number
KR1020217005075A
Other languages
Korean (ko)
Other versions
KR102377249B1 (en
Inventor
미첼 디. 애들러
마이클 브라우워
앤드류 알. 왈리
존 씨. 헐리
리차드 에프. 머피
데이비드 피. 핀켈스타인
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Priority to KR1020227008901A priority Critical patent/KR102631750B1/en
Publication of KR20210022157A publication Critical patent/KR20210022157A/en
Application granted granted Critical
Publication of KR102377249B1 publication Critical patent/KR102377249B1/en

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q90/00Systems or methods specially adapted for administrative, commercial, financial, managerial or supervisory purposes, not involving significant data processing
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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/1044Group 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/2866Architectures; Arrangements
    • H04L67/30Profiles
    • 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
    • H04L9/3255Cryptographic 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 using group based signatures, e.g. ring or threshold signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3268Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/06Selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS]; Services to user groups; One-way selective calling services
    • H04W4/08User group management

Abstract

중첩되는 기능을 가진 다수의 디바이스들을 소유한 사용자가 점점 더 보편화되고 있다. 스마트폰들, 태블릿, 및 컴퓨터들은 모두 웹에 액세스하고, 사용자가 사진들 등을 프로세싱하게 하고, 사용자들은 여러 개의 그러한 디바이스들을 가지려는 경향이 있다. 따라서, 디바이스들 사이에서 데이터를 공유하고 다수의 디바이스들 상의 데이터로의 액세스를 갖기는 원하는 사용자도 또한 점점 더 보편화되고 있다. 사용자들은, 통상적으로, 플래시 메모리 스틱들, 이메일 등과 같이, 디바이스들 사이에서 데이터를 전송하기 위한 모든 종류들의 상이한 기법들을 사용할 수 있다. 사용자의 디바이스들 사이에서 데이터를 자동으로 공유하기 위한 더 효율적인 기법들이 요망된다.Users who own multiple devices with overlapping functions are becoming more and more common. Smartphones, tablets, and computers all access the web, allow users to process photos and the like, and users tend to have multiple such devices. Accordingly, users who wish to share data between devices and have access to data on multiple devices are also becoming more and more common. Users can typically use all kinds of different techniques for transferring data between devices, such as flash memory sticks, email, and the like. More efficient techniques are desired for automatically sharing data between users' devices.

Description

관련 디바이스들 간의 동기화 및 검증 그룹들{SYNCHRONIZATION AND VERIFICATION GROUPS AMONG RELATED DEVICES}Synchronization and verification groups between related devices {SYNCHRONIZATION AND VERIFICATION GROUPS AMONG RELATED DEVICES}

중첩되는 기능을 가진 다수의 디바이스들을 소유한 사용자가 점점 더 보편화되고 있다. 스마트폰들, 태블릿들, 및 컴퓨터들은 모두 웹에 액세스하고, 사용자가 사진들 등을 프로세싱하게 하고, 사용자들은 여러 개의 그러한 디바이스들을 가지려는 경향이 있다. 따라서, 디바이스들 사이에서 데이터를 공유하고 다수의 디바이스들 상의 데이터로의 액세스를 갖기는 원하는 사용자도 또한 점점 더 보편화되고 있다. 사용자들은, 통상적으로, 플래시 메모리 스틱들, 이메일 등과 같이, 디바이스들 사이에서 데이터를 전송하기 위한 모든 종류들의 상이한 기법들을 사용할 수 있다. 사용자의 디바이스들 사이에서 데이터를 자동으로 공유하기 위한 더 효율적인 기법들이 요망된다.Users who own multiple devices with overlapping functions are becoming more and more common. Smartphones, tablets, and computers all access the web, allow users to process photos and the like, and users tend to have multiple such devices. Accordingly, users who wish to share data between devices and have access to data on multiple devices are also becoming more and more common. Users can typically use all kinds of different techniques for transferring data between devices, such as flash memory sticks, email, and the like. More efficient techniques are desired for automatically sharing data between users' devices.

일부 실시예들은 한 세트의 관련 전자 디바이스들 사이에서 데이터 아이템들을 동기화시키기 위한 방법을 제공한다. 구체적으로, 일부 실시예들은, 디바이스들이 검증 서브그룹들에 대한 멤버십 요건들을 만족시키는 경우에 디바이스들이 조인(join)할 수 있는 검증 서브그룹들을 정의하고, 검증 서브그룹들을 사용하여 디바이스들이 참여하는 동기화 서브그룹들을 정의한다. 일부 실시예들에서, 상이한 동기화 서브그룹들은 동기화 서브그룹들에 참여하는 디바이스들이 동기화 프로세스들을 통해 서로 공유하는 상이한 타입들의 데이터 아이템들을 정의한다.Some embodiments provide a method for synchronizing data items between a set of related electronic devices. Specifically, some embodiments define verification subgroups to which devices can join when devices satisfy membership requirements for verification subgroups, and synchronization in which devices participate using verification subgroups. Define subgroups. In some embodiments, different synchronization subgroups define different types of data items that devices participating in the synchronization subgroups share with each other through synchronization processes.

일부 실시예들에서, 관련 전자 디바이스들의 세트는 사용자가 제3자 서비스와(예컨대, 사용자의 특정 클라우드 서비스 계정과) 연관시키는 모든 디바이스들을 포함한다. 클라우드 서비스 계정 패스워드의 지식은, 일부 실시예들의 검증 서브그룹들 중 적어도 하나의 검증 서브그룹 내에서의 멤버십을 위한 요건으로서의 역할을 하지만, 일부 실시예들은 다양한 디바이스들이 조인할 수 있는 추가적인 검증 서브그룹들을 정의한다. 상이한 실시예들은, 디바이스가 특정 운영 체제를 가지며 특정 레벨의 패스워드 강도를 가지며 보안 프로세서 또는 다른 디바이스 구성 속성들을 갖는다는 요건들을 포함한, 그러한 추가적인 검증 서브그룹들에 조인하기 위한 상이한 세트들의 요건들을 정의한다. 일부 실시예들은, 디바이스가 특정 검증 서브그룹에 조인하기 위해 특정 암호화 시크릿(secret)의 소유(예컨대, 기업에 의해 정의된 검증 서브그룹에 조인하기 위해 기업 프로파일이 제공된 키의 소유)를 증명하는 것, 또는 사용자가 검증 서브그룹에서 이미 확립된 디바이스 상에서 새로운 디바이스의 멤버십을 검증할 것을 필요로 한다. 또한, 일부 검증 서브그룹들은 새로운 디바이스가 대역 외 프로세스를 통해(예컨대, 검증을 위해 제3자를 사용하는 것에 의해) 확립된 디바이스에 대한 자신의 속성을 검증할 것을 필요로 할 수 있다.In some embodiments, the set of associated electronic devices includes all devices that the user associates with a third party service (eg, with the user's specific cloud service account). Knowledge of the cloud service account password serves as a requirement for membership in at least one of the verification subgroups of some embodiments, but some embodiments provide an additional verification subgroup to which various devices can join. Define them. Different embodiments define different sets of requirements for joining such additional verification subgroups, including the requirement that the device has a specific operating system, a specific level of password strength, and has a secure processor or other device configuration attributes. . Some embodiments allow the device to prove possession of a specific cryptographic secret to join a specific verification subgroup (e.g., possession of a key provided with a company profile to join a verification subgroup defined by the company). , Or require the user to verify the membership of the new device on the device already established in the verification subgroup. Additionally, some verification subgroups may require a new device to verify its properties for an established device through an out-of-band process (eg, by using a third party for verification).

디바이스가 검증 서브그룹에 조인하기 위해, 일부 실시예들은 디바이스가 서브그룹에 조인하기 위한 요청에 서명할 것 및 검증 서브그룹에 이미 있는 디바이스들 중 하나에 의해 승인된 요청을 가질 것을 필요로 한다. 예를 들어, 일부 실시예들에서, 디바이스가 암호화 시크릿의 소유를 필요로 하는 검증 서브그룹에 대한 요건들을 충족시킬 때, 디바이스는 (i) (다른 디바이스들과 이미 공유된) 그의 공개 키(public key) 및 서브그룹으로의 신청 날짜/시간에 암호화 시크릿으로부터 생성된 개인 키(private key)로 서명하고, (ii) 이러한 서명을 검증 서브그룹에 조인하는 데 사용되는 그의 아이덴티티(identity)로 패키징하고, (iii) 아이덴티티에 그 자신의 개인 키로 서명한다. 이어서, 이러한 서명은 서브그룹에 조인하기 위한 요청으로서 검증 서브그룹 내의 다른 디바이스들로 전송된다. 다른 디바이스들 중 하나가 요청 디바이스가 서브그룹에 조인하기 위한 모든 요건들을 충족시키는지를 검증할 때, 확립된 디바이스는, 추가되는 새로운 디바이스를 포함하는, 검증 서브그룹 내의 다른 디바이스들에게 통지한다. 일부 실시예들에서, 이러한 통지는, 새로운 디바이스를 포함하는, 검증 서브그룹 내의 멤버들의 리스트를 포함한다.In order for a device to join the verification subgroup, some embodiments require the device to sign a request to join the subgroup and have a request approved by one of the devices already in the verification subgroup. For example, in some embodiments, when a device meets the requirements for a verification subgroup that requires possession of a cryptographic secret, the device (i) has its public key (already shared with other devices). key) and a private key generated from the cryptographic secret at the date/time of application to the subgroup, and (ii) packaging these signatures with their identity used to join the verification subgroup; and , (iii) Sign the identity with its own private key. This signature is then sent to other devices in the verification subgroup as a request to join the subgroup. When one of the other devices verifies that the requesting device meets all the requirements for joining the subgroup, the established device notifies other devices in the verifying subgroup, including the new device being added. In some embodiments, this notification includes a list of members in the verification subgroup, including the new device.

일부 실시예들에서, 디바이스들은 다수의 검증 서브그룹들의 멤버들일 수 있다. 또한, 디바이스들은 디바이스들이 새롭게 요건들을 충족시키도록 또는 더 이상 다양한 검증 서브그룹들의 요건들을 충족시키지 않도록 디바이스들의 속성들이 변경될 때 그러한 검증 서브그룹들 안팎으로 동적으로 이동할 수 있다. 디바이스의 속성들이 변경되어(예컨대, 특정 암호화 시크릿을 포함하는 프로파일이 디바이스 상에 설치되는 것, 사용자가 디바이스 패스코드 길이를 변경하는 것 등) 디바이스가 검증 서브그룹에 대해 적격하게 될 때, 디바이스는, 전술된 바와 같이, 검증 서브그룹 내에서의 멤버십을 위한 요청을 생성 및 전송한다. 다른 한편으로, 디바이스의 속성들이 변경되어 디바이스가 현재 멤버인 검증 서브그룹 내에서의 멤버십을 위한 요건들을 디바이스가 더 이상 충족시키지 못할 때, 디바이스는 그것이 더 이상 서브그룹의 멤버이어서는 안 된다는 것을 검출하고, 이러한 통지를 서브그룹의 멤버들인 다른 디바이스들로 송신한다.In some embodiments, devices may be members of multiple verification subgroups. In addition, devices can dynamically move into and out of such verification subgroups as the properties of the devices change so that the devices either newly meet the requirements or no longer meet the requirements of the various verification subgroups. When the device's properties are changed (e.g., a profile containing a specific encryption secret is installed on the device, the user changes the device passcode length, etc.) and the device becomes eligible for the verification subgroup, the device , As described above, generates and transmits a request for membership in the verification subgroup. On the other hand, when a device no longer meets the requirements for membership in a verification subgroup in which the device is currently a member due to a change in the device's properties, the device detects that it should no longer be a member of the subgroup. And send this notification to other devices that are members of the subgroup.

일부 실시예들에서, 검증 서브그룹들은 디바이스 상에 저장된 어느 데이터 아이템들이 다른 디바이스들과 동기화되어야 하는지를 판정하기 위해 디바이스들을 동기화 서브그룹들로 조직화하는 데 사용된다. 일부 실시예들에서, 동기화 서브그룹들은 (i) 디바이스가 동기화 서브그룹에 참여하기 위한 요건들의 세트 및 (ii) 동기화 서브그룹에 참여하는 디바이스들 사이에서 동기화되는 데이터 아이템의 타입에 의해 정의된다. 일부 실시예들에서, 동기화 서브그룹들에 대한 요건들의 세트는 하나 이상의 검증 서브그룹들 내에서의 멤버십이다. 예를 들어, 제1 동기화 서브그룹에의 참여를 위한 요건들은 제1 검증 서브그룹 내에서의 멤버십일 수 있는 한편, 제2 동기화 서브그룹에의 참여를 위한 요건들은 제2 및 제3 검증 서브그룹들 양측 모두 내에서의 멤버십일 수 있다.In some embodiments, verification subgroups are used to organize devices into synchronization subgroups to determine which data items stored on the device should be synchronized with other devices. In some embodiments, synchronization subgroups are defined by (i) a set of requirements for a device to participate in a synchronization subgroup and (ii) a type of data item that is synchronized between devices participating in the synchronization subgroup. In some embodiments, the set of requirements for synchronization subgroups is membership within one or more verification subgroups. For example, the requirements for participation in the first synchronization subgroup may be membership within the first verification subgroup, while the requirements for participation in the second synchronization subgroup are the second and third verification subgroups. It can be a membership within both sides.

동기화 서브그룹들은 관련 디바이스들의 세트가 데이터 아이템들을 서로 동기화시키는 것을 가능하게 하는 데 사용된다. 다양한 실시예들에서, 이러한 동기화된 데이터 아이템들은 온라인 계정들(예컨대, 금융 서비스 웹사이트들, 온라인 포럼 사이트들, 미디어 콘텐츠 제공자들, 온라인 소매 사이트들 등)에 대한 사용자명들 및 패스워드들, 암호화 키들 및/또는 시크릿들(즉, 키들이 생성될 수 있는 데이터), 네트워크(예컨대, Wi-Fi 네트워크) 패스워드들, 노트들, 사진들, 문서들 및 다른 파일들 등 중의 일부 또는 전부를 포함한다. 디바이스들 중 하나가 (예컨대, 새로운 패스워드의 사용자 입력, 새로운 사진의 임포트(import) 또는 다운로드 등으로부터) 동기화 데이터 아이템들의 세트에 추가시킬 새로운 데이터 아이템을 수신할 때, 일부 실시예들의 디바이스는 데이터를 하나 이상의 동기화 서브그룹들에 속하는 것으로서 동적으로 태깅한다. 예를 들어, 데이터가 생성된 애플리케이션(예컨대, Wi-Fi 네트워크들/패스워드들 대 온라인 계정 사용자명들/패스워드들), 사용자명/계정이 액세스를 얻는 웹사이트의 타입(예컨대, 금융 웹사이트 대 비금융 웹사이트), 데이터가 기업과 관련되는지 아닌지의 여부 등에 기초하여 데이터가 태깅될 수 있다.Synchronization subgroups are used to enable a set of related devices to synchronize data items with each other. In various embodiments, these synchronized data items include usernames and passwords, encryption for online accounts (eg, financial services websites, online forum sites, media content providers, online retail sites, etc.). Include some or all of the keys and/or secrets (i.e. data from which keys can be generated), network (e.g., Wi-Fi network) passwords, notes, photos, documents and other files, etc. . When one of the devices receives a new data item to add to the set of synchronization data items (e.g., from user input of a new password, import or download of a new photo, etc.), the device of some embodiments It is dynamically tagged as belonging to one or more synchronization subgroups. For example, the application for which the data was created (e.g., Wi-Fi networks/passwords versus online account usernames/passwords), username/type of website to which the account gains access (e.g., financial website versus Non-financial websites), data can be tagged based on whether the data is related to the company or not.

특정 동기화 서브그룹에 속하는 데이터 아이템들은 특정 동기화 서브그룹에 참여하는 디바이스들 사이에서 동기화된다. 일부 실시예들에서, 각각의 쌍의 디바이스들은 데이터 아이템들을 전송하는 데 사용하기 위해 이들 자신들 사이에 (예컨대, 오프-더-레코드(Off-the-Record, OTR) 메시징 프로토콜을 사용하여) 보안 채널을 생성한다. 상이한 실시예들에서, 이러한 보안 채널은 수신 디바이스가 잠금해제될 때에도 일시적인 저장을 허용하는 중앙집중형 서비스(예컨대, 양측 모두의 디바이스들이 로그인되는 클라우드 서비스 계정을 위한 저장소)를 통과시킬 수 있다. 그러나, 일부 실시예들에서, 보안 채널의 사용은 중간자 공격(man-in-the-middle attack)들에 대해 이러한 통신들을 보호한다. 다른 실시예들은 (예컨대, 블루투스 접속을 통해) 직접 피어-투-피어 접속들을 사용한다.Data items belonging to a specific synchronization subgroup are synchronized among devices participating in a specific synchronization subgroup. In some embodiments, each pair of devices may have a secure channel between themselves (e.g., using an Off-the-Record (OTR) messaging protocol) for use in transferring data items Create In different embodiments, this secure channel may pass through a centralized service that allows temporary storage even when the receiving device is unlocked (eg, storage for a cloud service account to which devices on both sides are logged in). However, in some embodiments, the use of a secure channel protects these communications against man-in-the-middle attacks. Other embodiments use direct peer-to-peer connections (eg, via a Bluetooth connection).

제1 디바이스가 그의 데이터 아이템들을 제2 디바이스와 동기화시켜야 하는 것으로 판정할 때, 제1 디바이스는 제1 및 제2 디바이스들 양측 모두가 참여하는 동기화 서브그룹들을 식별한다. 각각의 그러한 서브그룹에 대해, 이어서 제1 디바이스는 그것이 저장하고 (i) 제2 디바이스로 아직 전송되지 않았고 (ii) 제2 디바이스가 참여하는 동기화 서브그룹들에 속하는 모든 동기화 데이터 아이템들을 식별한다. 동기화 서브그룹들이 보안 채널에 대한 임의의 추가적인 요건들을 부과하지 않는 한, 제1 디바이스는 식별된 동기화 데이터 아이템들을 보안 채널을 통해 제2 디바이스로 전송한다. 동기화 서브그룹이 보안 채널에 추가적인 요건들을 부과할 때(예컨대, 검증 서브그룹 내에서의 멤버십에 필요한 암호화 키로 데이터 아이템들을 암호화하는 것), 제1 디바이스는 다수의 상이한 보안 채널들을 사용하여 데이터 아이템들의 세트를 제2 디바이스와 동기화시킬 수 있다. 제2 디바이스는 또한 그의 데이터 아이템들을 제1 디바이스와 동기화시키기 위한 유사한 세트의 동작들을 수행한다.When the first device determines that it should synchronize its data items with the second device, the first device identifies the synchronization subgroups to which both the first and second devices participate. For each such subgroup, the first device then identifies all synchronization data items that it stores and (i) has not yet transmitted to the second device and (ii) belongs to the synchronization subgroups to which the second device participates. Unless the synchronization subgroups impose any additional requirements for the secure channel, the first device transmits the identified synchronization data items to the second device over the secure channel. When the synchronization subgroup imposes additional requirements on the secure channel (e.g., encrypting data items with an encryption key required for membership within the verification subgroup), the first device uses a number of different secure channels. The set can be synchronized with the second device. The second device also performs a similar set of operations to synchronize its data items with the first device.

디바이스들이 검증 서브그룹들에 동적으로 조인하고 그들을 이탈하므로, 이는 디바이스들이 동기화 서브그룹들에 조인하고 그들을 이탈하게 할 수 있다. 예를 들어, 특정 동기화 서브그룹이 디바이스가 제1 및 제2 검증 서브그룹들의 멤버일 것을 필요로 하는 경우, 이어서 디바이스가 제1 검증 서브그룹 내에서의 그의 멤버십을 상실한 경우, 디바이스는 제2 검증 서브그룹 내에서의 멤버십을 유지하는 경우에도 더 이상 특정 동기화 서브그룹에 참여하는 것이 불가능할 것이다. 일부 실시예들에서, 디바이스가 더 이상 특정 동기화 서브그룹에 참여하기에 적격하지 않을 때, 디바이스는, 디바이스가 여전히 참여하는 다른 동기화 서브그룹들에 또한 속하는 데이터 아이템들을 제외하고는, 그 특정 동기화 서브그룹에 속하는 모든 데이터 아이템들을 제거한다(또는 디바이스가 이러한 데이터 아이템들을 제거해야 하는지 여부를 판정하도록 사용자에게 프롬프트한다).As devices dynamically join and leave verification subgroups, this can cause devices to join and leave synchronization subgroups. For example, if a particular synchronization subgroup requires that the device be a member of the first and second verification subgroups, then if the device loses its membership in the first verification subgroup, the device will second verify Even if membership within a subgroup is maintained, it will no longer be possible to participate in a specific synchronization subgroup. In some embodiments, when a device is no longer eligible to participate in a particular synchronization subgroup, the device is configured with that particular synchronization subgroup, except for data items that also belong to other synchronization subgroups to which the device still participates. Remove all data items belonging to the group (or the device prompts the user to determine whether these data items should be removed).

앞선 개요는 본 발명의 일부 실시예들에 대한 간단한 소개로서의 역할을 하는 것으로 의도된다. 이는 본 문헌에 개시된 모든 발명의 요지의 소개 또는 개괄이 되는 것으로 의도되지 않는다. 다음의 상세한 설명 및 상세한 설명에서 참조되는 도면들은 개요에서 기술된 실시예들, 나아가 다른 실시예들도 더 기술한다. 이에 따라, 본 문헌에 의해 기술된 실시예들 모두를 이해하기 위해서는 개요, 상세한 설명, 및 도면의 완전한 리뷰가 필요하다. 더욱이, 청구된 요지들은 요지들의 사상으로부터 벗어남이 없이 다른 특정 형태들로 구체화될 수 있기 때문에, 청구된 요지들은 개요, 상세한 설명, 및 도면들에서의 예시적인 상세 사항들에 의해 제한되는 것이 아니라, 오히려 첨부된 청구범위에 의해 한정되어야 한다.The preceding summary is intended to serve as a brief introduction to some embodiments of the invention. It is not intended to be an introduction or overview of all inventive subject matter disclosed in this document. The following detailed description and the drawings referred to in the detailed description further describe the embodiments described in the overview, and further describe other embodiments. Accordingly, an overview, detailed description, and a complete review of the drawings are required in order to understand all of the embodiments described by this document. Moreover, since the claimed subject matter may be embodied in other specific forms without departing from the spirit of the subject matter, the claimed subject matter is not limited by the overview, detailed description, and illustrative details in the drawings, Rather, it should be limited by the appended claims.

본 발명의 신규한 특징들이 첨부된 청구범위에 제시된다. 그러나, 설명의 목적을 위해, 본 발명의 여러 개의 실시예들이 다음의 도면들에서 제시된다.
도 1은 단일 사용자가 소유할 수 있는 6개의 전자 디바이스들의 예를 도시한다.
도 2는 디바이스가 사용자의 클라우드 서비스 계정 패스워드들을 알고 있다는 단일 기준만을 갖는 제1 링을 도시한다.
도 3은 멤버십을 위해 (i) 디바이스가 iOS 운영 체제를 실행하고 있을 것 및 (ii) 사용자가 디바이스를 링 내에서 승인할 것을 필요로 하는 제2 링을 도시한다.
도 4는 멤버십을 위해 (i) 디바이스가 (패스코드/패스워드 강도에 대한 프록시로서의 역할을 하는) 적어도 12개의 문자들을 갖는 패스코드/패스워드를 가질 것 및 (ii) 사용자가 디바이스를 링 내에서 승인할 것을 필요로 하는 제3 링을 도시한다.
도 5는 멤버십을 위해 디바이스가 (i) 기업 프로파일 구성물(enterprise profile configuration)이 설치되어 있을 것 및 (ii) 클라우드 서비스 패스워드를 알고 있을 것을 필요로 하는 제4 링을 도시한다.
도 6은 멤버십을 위해 (i) 디바이스가 패스워드를 가질 것 및 (ii) 대역 외 프로세스를 이용하여 디바이스가 진품 애플(Apple) 디바이스로서 검증될 것을 필요로 하는 제5 링을 도시한다.
도 7 내지 도 9는 도 1의 디바이스들의 세트에 대한 상이한 뷰들의 예들을 도시하는데, 이때 각각의 뷰는 도 2 내지 도 6의 링들 중 하나 이상의 링 내에서의 멤버십에 기초하여 정의된다.
도 10은 디바이스들을 검증 서브그룹들(링들) 및 동기화 서브그룹들(뷰들)로 그룹화하는 것을 가능하게 하기 위한 일부 실시예들의 디바이스(1000)의 소프트웨어 아키텍처를 개념적으로 도시한다.
도 11은 링 내에서의 멤버십을 요청하기 위한 일부 실시예들의 프로세스(1100)를 개념적으로 도시한다.
도 12는 디바이스를 링 내에서 허용할지 여부를 판정하기 위한 일부 실시예들의 프로세스(1200)를 개념적으로 도시한다.
도 13은 제1 디바이스가 링에 조인할 것을 요청하고 제2 디바이스에 의해 승인되는 것을 개념적으로 도시한다.
도 14는 디바이스가, 시크릿 암호화 키의 소유뿐만 아니라 중앙 기관을 통한 디바이스 속성의 검증을 필요로 하는 링에 조인하는 것을 개념적으로 도시한다.
도 15는 제1 디바이스로부터의 키체인 데이터를 제2 디바이스와 동기화시키기 위한 일부 실시예들의 프로세스(1500)를 개념적으로 도시한다.
도 16은 제1 디바이스에 의한 동기화를 위한 새로운 데이터 아이템의 수신을 도시한다.
도 17은 제1 디바이스로부터의 도 16으로부터의 새로운 데이터 아이템의 제2 디바이스와의 동기화를 도시한다.
도 18 및 도 19는 키들 및 데이터 필드들의 트리에 저장된 데이터에 액세스하기 위해 애플리케이션 특정 개인 키가 사용되는 데이터 보호 구조체를 도시하는데, 이는 궁극적으로 애플리케이션 데이터 자체로의 액세스를 허용한다.
도 20은 디바이스의 링 멤버십 그리고, 그에 후속하여, 그의 뷰 참여를 동적으로 수정하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한다.
도 21a 및 도 21b는 디바이스들 중 하나가 링으로부터 제거되도록 그의 패스워드가 변경될 때의 도 16 및 도 17로부터의 디바이스들을 도시한다.
도 22는 일부 실시예들이 구현되는 모바일 컴퓨팅 디바이스의 아키텍처의 예를 도시한다.
도 23은 본 발명의 일부 실시예들이 구현되는 전자 시스템의 다른 예를 개념적으로 도시한다.
Novel features of the invention are set forth in the appended claims. However, for purposes of explanation, several embodiments of the invention are presented in the following figures.
1 shows an example of six electronic devices that a single user may own.
2 shows a first ring with only a single criterion that the device knows the user's cloud service account passwords.
3 shows a second ring for membership that requires (i) the device is running an iOS operating system and (ii) the user needs to approve the device within the ring.
4 shows for membership (i) the device will have a passcode/password with at least 12 characters (acting as a proxy for the passcode/password strength) and (ii) the user approves the device in the ring Shows the third ring that needs to do
Fig. 5 shows a fourth ring that requires the device to (i) have an enterprise profile configuration installed and (ii) know the cloud service password for membership.
Figure 6 shows a fifth ring for membership that requires (i) the device to have a password and (ii) the device to be verified as a genuine Apple device using an out-of-band process.
7-9 show examples of different views for the set of devices of FIG. 1, where each view is defined based on membership within one or more of the rings of FIGS. 2-6.
10 conceptually illustrates the software architecture of the device 1000 of some embodiments to enable grouping of devices into verification subgroups (rings) and synchronization subgroups (views).
11 conceptually illustrates a process 1100 of some embodiments for requesting membership within a ring.
12 conceptually shows a process 1200 of some embodiments for determining whether to allow a device within a ring.
13 conceptually shows that the first device requests to join the ring and is approved by the second device.
Fig. 14 conceptually shows a device joining a ring that requires not only possession of a secret encryption key, but also verification of device properties through a central authority.
15 conceptually illustrates a process 1500 of some embodiments for synchronizing keychain data from a first device with a second device.
16 shows the reception of a new data item for synchronization by the first device.
17 shows synchronization of a new data item from FIG. 16 from a first device with a second device.
18 and 19 illustrate a data protection structure in which an application specific private key is used to access data stored in the tree of keys and data fields, which ultimately allows access to the application data itself.
20 conceptually illustrates a process of some embodiments for dynamically modifying a device's ring membership and, subsequently, its view participation.
21A and 21B show the devices from FIGS. 16 and 17 when its password is changed such that one of the devices is removed from the ring.
22 shows an example of an architecture of a mobile computing device in which some embodiments are implemented.
23 conceptually illustrates another example of an electronic system in which some embodiments of the present invention are implemented.

본 발명에 대한 다음의 상세한 설명에서는, 본 발명의 다수의 상세 사항들, 예들, 및 실시예들이 제시 및 기술된다. 그러나, 본 발명이 제시된 실시예들로 제한되지 않고 본 발명이 논의되는 구체적인 상세 사항들 및 예들 중 일부가 없이 실시될 수 있음은 명백하고 당업자에게 자명할 것이다.In the following detailed description of the invention, a number of details, examples, and embodiments of the invention are presented and described. However, it will be apparent and will be apparent to those skilled in the art that the present invention is not limited to the presented embodiments and that the present invention may be practiced without some of the specific details and examples discussed.

일부 실시예들은 한 세트의 관련 전자 디바이스들 사이에서 데이터 아이템들을 동기화시키기 위한 방법을 제공한다. 구체적으로, 일부 실시예들은 디바이스들이 검증 서브그룹들에 대한 멤버십 요건들을 만족시키는 경우에 디바이스들이 조인할 수 있는 검증 서브그룹들을 정의하고, 검증 서브그룹들을 사용하여 디바이스들이 참여하는 동기화 서브그룹들을 정의한다. 일부 실시예들에서, 상이한 동기화 서브그룹들은 동기화 서브그룹들에 참여하는 디바이스들이 동기화 프로세스들을 통해 서로 공유하는 상이한 타입들의 데이터 아이템들을 정의한다.Some embodiments provide a method for synchronizing data items between a set of related electronic devices. Specifically, some embodiments define verification subgroups to which devices can join when devices satisfy membership requirements for verification subgroups, and use verification subgroups to define synchronization subgroups to which devices participate. do. In some embodiments, different synchronization subgroups define different types of data items that devices participating in the synchronization subgroups share with each other through synchronization processes.

일부 실시예들에서, 관련 전자 디바이스들의 세트는 사용자가 제3자 서비스와(예컨대, 사용자의 특정 클라우드 서비스 계정과) 연관시키는 모든 디바이스들을 포함한다. 클라우드 서비스 계정 패스워드의 지식은, 일부 실시예들의 검증 서브그룹들(또한 본 명세서에서 링들이라고도 지칭됨) 중 적어도 하나의 검증 서브그룹 내에서의 멤버십을 위한 요건으로서의 역할을 하지만, 일부 실시예들은 다양한 디바이스들이 조인할 수 있는 추가적인 링들을 정의한다. 일부 경우들에서, 사용자가 다수의 스마트폰들, 스마트워치들, 태블릿들, 랩톱 컴퓨터들, 데스크톱 컴퓨터들, 미디어 플레이어들 등을 소유 또는 사용할 수 있고, 그 모두는 사용자의 클라우드 서비스 계정에 로그인되며 상이한 속성들을 갖는다.In some embodiments, the set of associated electronic devices includes all devices that the user associates with a third party service (eg, with the user's specific cloud service account). Knowledge of the cloud service account password serves as a requirement for membership within at least one of the verification subgroups (also referred to herein as rings) of some embodiments, but some embodiments may Defines additional rings that devices can join. In some cases, a user may own or use multiple smartphones, smartwatches, tablets, laptop computers, desktop computers, media players, etc., all of which are logged into the user's cloud service account. It has different properties.

상이한 실시예들은, 디바이스가 특정 운영 체제를 가지며 특정 레벨의 패스워드 강도를 가지며 특정 하드웨어(예컨대, 애플 시큐어 엔클레이브 프로세서(Apple Secure Enclave Processor)와 같은 보안 프로세싱 유닛) 또는 다른 디바이스 구성 속성들을 갖는다는 요건들을 포함한, 그러한 추가적인 링들에 조인하기 위한 상이한 세트들의 요건들을 정의한다. 일부 실시예들은, 디바이스가 특정 링에 조인하기 위해 특정 암호화 시크릿의 소유(예컨대, 기업에 의해 정의된 링에 조인하기 위해 기업 프로파일이 제공된 키의 소유)를 증명하는 것, 또는 사용자가 링에 이미 확립된 디바이스 상에서 새로운 디바이스의 멤버십을 검증할 것을 필요로 한다. 또한, 일부 링들은 새로운 디바이스가 대역 외 프로세스를 통해(예컨대, 검증을 위해 제3자를 사용하는 것에 의해) 확립된 디바이스에 대한 자신의 속성을 검증할 것을 필요로 할 수 있는데, 이때 링은 디바이스가 링에 조인한 특정 시간에서의 속성의 지속적인 증명서로서의 역할을 한다.Different embodiments require that the device has a certain operating system, a certain level of password strength, and has certain hardware (e.g., a secure processing unit such as the Apple Secure Enclave Processor) or other device configuration attributes. Define different sets of requirements for joining such additional rings, including those. Some embodiments allow the device to prove possession of a specific cryptographic secret to join a specific ring (e.g., possession of a key provided with a company profile to join a ring defined by the company), or a user already in the ring. It is necessary to verify the membership of the new device on the established device. In addition, some rings may require the new device to verify its properties for an established device through an out-of-band process (e.g., by using a third party for verification), where the device It serves as a persistent certificate of the attribute at the specific time of joining the ring.

디바이스가 링에 조인하기 위해, 일부 실시예들은 디바이스가 링에 조인하기 위한 요청에 서명할 것 및 링에 이미 있는 디바이스들 중 하나에 의해 승인된 요청을 가질 것을 필요로 한다. 예를 들어, 일부 실시예들에서, 디바이스가 암호화 시크릿의 소유를 필요로 하는 링에 대한 요건들을 충족시킬 때, 디바이스는 (i) (다른 디바이스들과 이미 공유된) 그의 공개 키 및 링으로의 신청 날짜/시간에 암호화 시크릿으로부터 생성된 개인 키로 서명하고, (ii) 이러한 서명을 링에 조인하는 데 사용되는 그의 아이덴티티로 패키징하고, (iii) 아이덴티티에 그 자신의 개인 키로 서명한다. 이어서, 이러한 서명은 링에 조인하기 위한 요청으로서 링 내의 다른 디바이스들로 전송된다. 다른 디바이스들 중 하나가 요청 디바이스가 링에 조인하기 위한 모든 요건들을 충족시키는지를 검증할 때, 확립된 디바이스는, 추가되는 새로운 디바이스를 포함하는, 링 내의 다른 디바이스들에게 통지한다. 일부 실시예들에서, 이러한 통지는, 새로운 디바이스를 현재 포함하는, 링의 멤버들의 리스트를 포함한다.In order for a device to join the ring, some embodiments require the device to sign a request to join the ring and have a request approved by one of the devices already in the ring. For example, in some embodiments, when the device meets the requirements for a ring that requires possession of a cryptographic secret, the device (i) has its public key (already shared with other devices) and into the ring. Sign with a private key generated from the cryptographic secret at the date/time of the application, (ii) package this signature with his identity used to join the ring, and (iii) sign the identity with his own private key. This signature is then sent to other devices in the ring as a request to join the ring. When one of the other devices verifies that the requesting device meets all the requirements for joining the ring, the established device notifies other devices in the ring, including the new device being added. In some embodiments, this notification includes a list of members of the ring, currently containing the new device.

일부 실시예들에서, 디바이스들은 다수의 링들의 멤버들일 수 있다. 또한, 디바이스들은 디바이스들이 새롭게 요건들을 충족시키도록 또는 더 이상 다양한 링들의 요건들을 충족시키지 않도록 디바이스들의 속성들이 변경될 때 그러한 링들 안팎으로 동적으로 이동할 수 있다. 디바이스의 속성들이 변경되어(예컨대, 특정 암호화 시크릿을 포함하는 프로파일이 디바이스 상에 설치되는 것, 사용자가 디바이스 패스코드 길이를 변경하는 것 등) 디바이스가 링에 대해 적격하게 될 때, 디바이스는, 전술된 바와 같이, 링 내에서의 멤버십을 위한 요청을 생성 및 전송한다. 다른 한편으로, 디바이스의 속성들이 변경되어 디바이스가 현재 멤버인 링 내에서의 멤버십을 위한 요건들을 디바이스가 더 이상 충족시키지 못할 때, 디바이스는 그것이 더 이상 링의 멤버이어서는 안 된다는 것을 검출하고, 이러한 통지를 링의 멤버들인 다른 디바이스들로 송신한다.In some embodiments, the devices may be members of multiple rings. In addition, devices can move dynamically in and out of those rings when the properties of the devices change so that the devices either newly meet the requirements or no longer meet the requirements of the various rings. When the properties of the device are changed (e.g., a profile containing a specific encryption secret is installed on the device, the user changes the device passcode length, etc.), the device becomes eligible for the ring, As described above, it creates and transmits a request for membership in the ring. On the other hand, when the device's properties change so that the device no longer meets the requirements for membership in the ring in which the device is currently a member, the device detects that it should no longer be a member of the ring, and this Send notifications to other devices that are members of the ring.

일부 실시예들에서, 링들은 디바이스 상에 저장된 어느 데이터 아이템들이 다른 디바이스들과 동기화되어야 하는지를 판정하기 위해 디바이스들을 동기화 서브그룹들(또한 본 명세서에서 뷰들로도 지칭됨)로 조직화하는 데 사용된다. 일부 실시예들에서, 뷰들은 (i) 디바이스가 뷰에 참여하기 위한 요건들의 세트 및 (ii) 뷰에 참여하는 디바이스들 사이에서 동기화되는 데이터 아이템의 타입에 의해 정의된다. 일부 실시예들에서, 뷰들에 대한 요건들의 세트는 하나 이상의 링들 내에서의 멤버십이다. 예를 들어, 제1 뷰에의 참여를 위한 요건들은 제1 링 내에서의 멤버십일 수 있는 한편, 제2 뷰에의 참여를 위한 요건들은 제2 및 제3 링들 양측 모두 내에서의 멤버십일 수 있다.In some embodiments, rings are used to organize devices into synchronization subgroups (also referred to herein as views) to determine which data items stored on the device should be synchronized with other devices. In some embodiments, views are defined by (i) a set of requirements for a device to participate in the view and (ii) the type of data item that is synchronized between devices participating in the view. In some embodiments, the set of requirements for views is membership within one or more rings. For example, the requirements for participation in the first view may be membership within the first ring, while the requirements for participation in the second view may be membership within both the second and third rings. have.

뷰들은 관련 디바이스들의 세트가 데이터 아이템들을 서로 동기화시키는 것을 가능하게 하는 데 사용된다. 다양한 실시예들에서, 이러한 동기화된 데이터 아이템들은 온라인 계정들(예컨대, 금융 서비스 웹사이트들, 온라인 포럼 사이트들, 미디어 콘텐츠 제공자들, 온라인 소매 사이트들 등)에 대한 사용자명들 및 패스워드들, 암호화 키들 및/또는 시크릿들(즉, 키들이 생성될 수 있는 데이터), 네트워크(예컨대, Wi-Fi 네트워크) 패스워드들, 노트들, 사진들, 문서들 및 다른 파일들 등 중의 일부 또는 전부를 포함한다. 디바이스들 중 하나가 (예컨대, 새로운 패스워드의 사용자 입력, 새로운 사진의 임포트 또는 다운로드 등으로부터) 동기화 데이터 아이템들의 세트에 추가시킬 새로운 데이터 아이템을 수신할 때, 일부 실시예들의 디바이스는 데이터를 하나 이상의 뷰들에 속하는 것으로서 동적으로 태깅한다. 예를 들어, 데이터가 내부에 생성된 애플리케이션(예컨대, Wi-Fi 네트워크들/패스워드들 대 온라인 계정 사용자명들/패스워드들), 사용자명/계정이 액세스를 얻는 웹사이트의 타입(예컨대, 금융 웹사이트 대 비금융 웹사이트), 데이터가 기업과 관련되는지 아닌지의 여부 등에 기초하여 데이터가 태깅될 수 있다.Views are used to enable a set of related devices to synchronize data items with each other. In various embodiments, these synchronized data items include usernames and passwords, encryption for online accounts (eg, financial services websites, online forum sites, media content providers, online retail sites, etc.). Include some or all of the keys and/or secrets (i.e. data from which keys can be generated), network (e.g., Wi-Fi network) passwords, notes, photos, documents and other files, etc. . When one of the devices receives a new data item to be added to the set of synchronization data items (e.g., from user input of a new password, import or download of a new photo, etc.), the device of some embodiments displays the data in one or more views. It is dynamically tagged as belonging to. For example, the application for which data was created internally (e.g., Wi-Fi networks/passwords vs. online account usernames/passwords), username/type of website to which the account gains access (e.g., financial web Site vs. non-financial websites), data can be tagged based on whether the data is relevant to the company or not.

특정 뷰에 속하는 데이터 아이템들은 특정 뷰에 참여하는 디바이스들 사이에서 동기화된다. 일부 실시예들에서, 각각의 쌍의 디바이스들은 데이터 아이템들을 전송하는 데 사용하기 위해 그 자신들 사이에 (예컨대, 오프-더-레코드(OTR) 메시징 프로토콜을 이용하여) 보안 채널을 생성한다. 상이한 실시예들에서, 이러한 보안 채널은 수신 디바이스가 잠금해제될 때에도 일시적인 저장을 허용하는 중앙집중형 서비스(예컨대, 양측 모두의 디바이스들이 로그인되는 클라우드 서비스 계정을 위한 저장소)를 통과시킬 수 있다. 그러나, 일부 실시예들에서, 보안 채널의 사용은 중간자 공격들에 대해 이러한 통신들을 보호한다. 다른 실시예들은 (예컨대, 블루투스 접속을 통해) 직접 피어-투-피어 접속들을 사용한다. 키체인에 대한 데이터 아이템들의 동기화는 미국 특허 공개 제2014/0281540호에 보다 상세히 기술되어 있다.Data items belonging to a specific view are synchronized among devices participating in the specific view. In some embodiments, each pair of devices creates a secure channel between themselves (eg, using an off-the-record (OTR) messaging protocol) for use in transferring data items. In different embodiments, this secure channel may pass through a centralized service that allows temporary storage even when the receiving device is unlocked (eg, storage for a cloud service account to which devices on both sides are logged in). However, in some embodiments, the use of a secure channel protects these communications against man-in-the-middle attacks. Other embodiments use direct peer-to-peer connections (eg, via a Bluetooth connection). Synchronization of data items to a keychain is described in more detail in US Patent Publication No. 2014/0281540.

제1 디바이스가 (예컨대, 사용자 입력, 특정 기간 경과 등에 기초하여) 그의 데이터 아이템들을 제2 디바이스와 동기화시켜야 하는 것으로 판정할 때, 제1 디바이스는 제1 및 제2 디바이스들 양측 모두가 참여하는 뷰들을 식별한다. 각각의 그러한 뷰에 대해, 이어서 제1 디바이스는 그것이 저장하고 (i) 제2 디바이스로 아직 전송되지 않았고 (ii) 제2 디바이스가 참여하는 뷰들에 속하는 모든 동기화 데이터 아이템들을 식별한다. 뷰들이 보안 채널에 대한 임의의 추가적인 요건들을 부과하지 않는 한, 제1 디바이스는 식별된 동기화 데이터 아이템들을 보안 채널을 통해 제2 디바이스로 전송한다. 뷰가 보안 채널에 추가적인 요건들을 부과할 때(예컨대, 검증 서브그룹 내에서의 멤버십에 필요한 암호화 키로 데이터 아이템들을 암호화하는 것), 제1 디바이스는 다수의 상이한 보안 채널들을 사용하여 데이터 아이템들의 세트를 제2 디바이스와 동기화시킬 수 있다. 제2 디바이스는 또한 그의 데이터 아이템들을 제1 디바이스와 동기화시키기 위한 유사한 세트의 동작들을 수행한다.When the first device determines that its data items should be synchronized with the second device (e.g., based on user input, elapsed time, etc.), the first device Identify them. For each such view, the first device then identifies all synchronization data items that it stores and which (i) have not yet been sent to the second device and (ii) belong to the views to which the second device participates. Unless the views impose any additional requirements for the secure channel, the first device transmits the identified synchronization data items to the second device over the secure channel. When a view imposes additional requirements on a secure channel (e.g., encrypting data items with an encryption key required for membership within a verification subgroup), the first device uses a number of different secure channels to create a set of data items. It can be synchronized with the second device. The second device also performs a similar set of operations to synchronize its data items with the first device.

디바이스들이 링들에 동적으로 조인하고 그들을 이탈하므로, 이는 디바이스들이 뷰들에 조인하고 그들을 이탈하게 할 수 있다. 예를 들어, 특정 뷰가 디바이스가 제1 및 제2 링들의 멤버일 것을 필요로 하는 경우, 이어서 디바이스가 제1 링 내에서의 그의 멤버십을 상실한 경우, 디바이스는 제2 링 내에서의 멤버십을 유지하는 경우에도 더 이상 특정 뷰에 참여하는 것이 불가능할 것이다. 일부 실시예들에서, 디바이스가 더 이상 특정 뷰에 참여하기에 적격하지 않을 때, 디바이스는, 디바이스가 여전히 참여하는 다른 뷰들에 또한 속하는 데이터 아이템들을 제외하고는, 그 특정 뷰에 속하는 모든 데이터 아이템들을 제거한다(또는 디바이스가 이러한 데이터 아이템들을 제거해야 하는지 여부를 판정하도록 사용자에게 프롬프트한다).As devices dynamically join the rings and leave them, this can cause devices to join views and leave them. For example, if a particular view requires the device to be a member of the first and second rings, then if the device loses its membership within the first ring, the device retains membership within the second ring. Even if it does, it will no longer be possible to participate in a specific view. In some embodiments, when the device is no longer eligible to participate in a particular view, the device removes all data items belonging to that particular view, except for data items that also belong to other views to which the device still participates. Remove (or the device prompts the user to determine whether these data items should be removed).

상기는 일부 실시예들의 데이터 동기화 시스템의 예들을 기술한 것이다. 여러 개의 더 상세한 예들이 하기에 기술된다. 섹션 I은 디바이스들의 그룹, 및 디바이스들에 대해 정의될 수 있는 링들 및 뷰들의 예들을 기술한다. 다음으로, 섹션 II는 링들 및 뷰들을 가능하게 하기 위한 일부 실시예들의 디바이스 아키텍처를 기술한다. 이어서, 섹션 III은 일부 실시예들의 링 조인 프로세스를 기술하는 한편, 섹션 IV는 상이한 뷰들에 대한 데이터의 동기화를 기술한다. 이어서, 섹션 V는 일부 실시예들에서 링 상태를 동적으로 평가하는 것 및 뷰 참여에 대한 결과들을 기술한다. 마지막으로, 섹션 VI는 본 발명의 일부 실시예들이 구현되는 전자 시스템을 기술한다.The above describes examples of the data synchronization system of some embodiments. Several more detailed examples are described below. Section I describes a group of devices, and examples of rings and views that may be defined for the devices. Next, Section II describes the device architecture of some embodiments for enabling rings and views. Subsequently, Section III describes the ring join process of some embodiments, while Section IV describes the synchronization of data for different views. Section V then describes the results for dynamically evaluating the ring state and view participation in some embodiments. Finally, Section VI describes an electronic system in which some embodiments of the invention are implemented.

I.I. 링 및 뷰 예들Ring and view examples

전술된 바와 같이, 일부 실시예들은 디바이스들의 정적 또는 동적 속성들에 기초하여 디바이스들이 조인할 수 있는 디바이스들의 그룹에 대한 링들을 정의한다. 이러한 링들은, 다양한 실시예들에서, 디바이스들의 제조자들, 제3자 개발자들, 또는 사용자들 자신에 의해 정의될 수 있다. 예를 들어, 여러 상이한 타입들의 사용자 디바이스들(그 중 임의의 수의 사용자 디바이스를 단일 사용자가 소유할 수 있다)을 판매하는 제조자는 링 정의들을 디바이스 운영 체제들에 통합시킬 수 있다. 다른 한편으로, 제3자 개발자들 또는 사용자들은, 그들이 유용하다고 알게 된 추가적인 링들을 제안할 수 있고, 일부 또는 모든 디바이스들에 대해 링들을 설계할 수 있다. 일부 실시예들에서, 제조자는 사용자들이 그들의 개인용 디바이스들에 대한 링들을 임의로 정의하게 하는 프레임워크를 디바이스들에게 제공하는데, 이때 그 프레임워크는 임의로 정의된 링들을 기능적 링 정의들로 변환하는 능력을 갖는다.As described above, some embodiments define rings for a group of devices to which devices can join based on static or dynamic properties of the devices. These rings may, in various embodiments, be defined by manufacturers of devices, third party developers, or users themselves. For example, a manufacturer selling several different types of user devices, of which any number of user devices may be owned by a single user, may incorporate ring definitions into device operating systems. On the other hand, third-party developers or users can suggest additional rings that they find useful and design rings for some or all devices. In some embodiments, the manufacturer provides devices with a framework that allows users to arbitrarily define rings for their personal devices, where the framework has the ability to convert arbitrarily defined rings into functional ring definitions. Have.

디바이스 제조자들, 제3자 개발자들, 또는 사용자들은 또한 전술된 바와 같이 링 멤버십들에 기초하여 디바이스들을 뷰들로 조직화할 수 있다. 즉, 디바이스가 하나 이상의 링들의 멤버인지 여부에 따라 특정 뷰에의 디바이스의 참여가 정의될 수 있다. 일부 실시예들에서, 뷰들은 또한 링 멤버십 이외의 디바이스 속성들을 참조하여 정의될 수 있는 반면, 다른 실시예들은 뷰들을 링 멤버십들에 기초한 정의들로 제한한다. 일부 실시예들에서, 링 멤버십 기준을 정의하는 것에 더하여, 사용자는 특정 뷰에 대해 어떤 데이터가 공유되는지뿐만 아니라 그 특정 뷰에 참여하기 위해(즉, 특정된 데이터를 다른 디바이스들과 동기화시키기 위해) 디바이스가 어느 링들에 속해야 하는지의 양측 모두를 정의하는 능력을 갖는다.Device manufacturers, third-party developers, or users can also organize devices into views based on ring memberships, as described above. That is, participation of the device in a specific view may be defined according to whether the device is a member of one or more rings. In some embodiments, views may also be defined with reference to device properties other than ring membership, while other embodiments limit the views to definitions based on ring memberships. In some embodiments, in addition to defining the ring membership criteria, the user can not only see what data is shared for a particular view, but also to participate in that particular view (i.e., to synchronize the specified data with other devices). It has the ability to define both sides of which rings the device should belong to.

도 1은 단일 사용자가 소유할 수 있는 6개의 전자 디바이스들(105 내지 130)의 예를 도시한다. 도시된 바와 같이, 이러한 6개의 전자 디바이스들은 제1 스마트폰(105), 제2 스마트폰(110), 태블릿(115), 랩톱 컴퓨터(120), 스트리밍 비디오 셋톱 박스(125), 및 데스크톱 컴퓨터(130)를 포함한다. 이러한 경우, 제1 폰(105) 및 랩톱(120)은 사용자의 작업 디바이스들인 한편, 다른 4개의 디바이스들(110, 115, 125, 130)은 사용자의 개인 소유 디바이스들이다. 이러한 디바이스들 각각은 상이한 속성들을 가지며, 그 중 일부가 이 도면에 도시되어 있다.1 shows an example of six electronic devices 105-130 that a single user can own. As shown, these six electronic devices include a first smartphone 105, a second smartphone 110, a tablet 115, a laptop computer 120, a streaming video set-top box 125, and a desktop computer ( 130). In this case, the first phone 105 and laptop 120 are the user's work devices, while the other four devices 110, 115, 125, 130 are the user's personally owned devices. Each of these devices has different properties, some of which are shown in this figure.

구체적으로, (예컨대, 아이폰(iPhone) 6일 수 있는) 제1 스마트폰(105)은 (i)(사용자가 그 디바이스 상의 클라우드 서비스 계정에 로그인했기 때문에) 사용자의 클라우드 서비스 계정 패스워드를 알고 있고, (ii) 빌트인 지문 스캐너를 가지며, (iii) iOS 운영 체제를 실행하고, (iv) 폰을 분실한 경우에 사용자가 폰에게 그의 메모리를 와이프(wipe)하도록 원격으로 지시하게 하는 원격 와이프 특징이 인에이블되게 하고, (v) 적어도 12개의 문자들의 길이인, 디바이스를 잠금해제하기 위한 패스코드를 가지며, (vi) 기업 구성물이 설치되어 있다. 따라서, 지문 스캐너, 긴 잠금해제 패스코드, 및 원격 와이프 특징 모두는 그 디바이스가 보안 디바이스임을 나타낸다. 또한, 일부 실시예들의 기업 구성물의 설치는 디바이스에 특정 암호화 시크릿을 제공하여 공개/개인 키 쌍의 생성을 가능하게 한다.Specifically, the first smartphone 105 (which may be, for example, an iPhone 6) knows the password of the user's cloud service account (i) (because the user has logged into the cloud service account on that device), (ii) has a built-in fingerprint scanner, (iii) runs the iOS operating system, and (iv) features a remote wipe feature that allows the user to remotely instruct the phone to wipe its memory in case the phone is lost. Enabled, (v) have a passcode to unlock the device, which is at least 12 characters long, and (vi) enterprise constructs installed. Thus, the fingerprint scanner, long unlock passcode, and remote wipe features all indicate that the device is a secure device. In addition, the installation of the corporate construct of some embodiments provides a specific cryptographic secret to the device to enable generation of public/private key pairs.

(예컨대, 이전 아이폰일 수 있는) 제2 스마트폰(110)은 (i) 사용자의 클라우드 서비스 계정 패스워드를 알고 있고, (ii) iOS 운영 체제를 실행하고, (iii) 원격 와이프 특성이 인에이블되게 하고, (iv) 디바이스를 잠금해제하기 위한 4문자 패스코드를 갖는다. 보다 짧은 패스코드를 가지며 지문 스캐너가 없는 이러한 스마트폰(110)은 여전히 상당히 안전하지만, 제1 스마트폰(105)보다 덜 안전하다.The second smartphone 110 (which may be, for example, the previous iPhone) (i) knows the user's cloud service account password, (ii) runs the iOS operating system, and (iii) the remote wipe feature is enabled. And (iv) a 4-character passcode to unlock the device This smartphone 110, which has a shorter passcode and does not have a fingerprint scanner, is still quite secure, but less secure than the first smartphone 105.

태블릿(115)(예컨대, 아이패드(iPad))은 (i) 사용자의 클라우드 서비스 계정 패스워드를 알고 있고, (ii) iOS 운영 체제를 실행하고, (iii) 디바이스를 잠금해제하기 위한 4문자 패스코드를 갖는다. 랩톱(120)(예컨대, 맥북(MacBook))은 (i) 사용자의 클라우드 서비스 계정 패스워드를 알고 있고, (ii) 맥 OS X 운영 체제를 실행하고, (iii) 디바이스를 잠금해제하기 위한 12문자 패스코드를 가지며, (iv) 기업 구성물이 설치되어 있다. 스트리밍 비디오 셋톱 박스(125)(예컨대, 애플 TV)는 사용자의 클라우드 서비스 계정 패스워드만을 알고 있다. 마지막으로, 홈 데스크톱(130)(예컨대, 아이맥(iMac))은 (i) 사용자의 클라우드 서비스 계정 패스워드를 알고 있고, (ii) 맥 OS X 운영 체제를 실행하고, (iii) 잠금해제하기 위한 12문자 패스코드를 갖는다.The tablet 115 (e.g., iPad) (i) knows the user's cloud service account password, (ii) runs the iOS operating system, and (iii) a 4-character passcode to unlock the device Has. Laptop 120 (e.g., MacBook) (i) knows the user's cloud service account password, (ii) runs the Mac OS X operating system, and (iii) a 12-character pass to unlock the device Has a code, and (iv) the corporate structure is installed. The streaming video set-top box 125 (eg, Apple TV) only knows the password for the user's cloud service account. Finally, the home desktop 130 (e.g., iMac) (i) knows the user's cloud service account password, (ii) runs the Mac OS X operating system, and (iii) 12 to unlock. It has a character passcode.

다양한 디바이스들(105 내지 130)에 대해 리스팅된 이러한 속성들은 링 멤버십 기준의 몇 가지 예들(예컨대, 사용자가 클라우드 서비스 계정에 로그인했는지 여부, 디바이스의 운영 체제, 패스코드 강도, 다른 보안 특징들, 기업 구성물을 통한 암호화 시크릿의 존재 등)을 표현한다. 당업자는 링에 대한 멤버십 적격성을 판정하기 위해 많은 다른 기준이 사용될 수 있다는 것을 인식할 것이다. 도시되는 바와 같이, 이러한 기준 중 일부는 디바이스의 속성들이 아니다. 예를 들어, 일부 실시예들은 링 멤버십 기준으로서 디바이스 상에서 동작하는 애플리케이션들의 속성들(예컨대, 애플리케이션이 설치되는지 여부, 애플리케이션이 디바이스 상에 설정되는 방법 등)을 사용한다. 또한, 일부 실시예들은, 사용자가 링에 이미 확립된 다른 디바이스 상에서 디바이스를 승인하는 것, 사용자가 확립된 디바이스에 의해 제공된 코드를 요청 디바이스 상에 입력하는 것 등과 같은, 링에 조인하기 위한 특정 사용자 액션들을 필요로 한다. 또한, 일부 링 멤버십 기준은 제3자 검증을 필요로 한다. 예를 들어, 일부 실시예들은 디바이스가 유효한 iOS 디바이스라는 제3자 증명서를 필요로 한다. 다른 한편으로, 일부 링 멤버십 기준은 (예컨대, 디바이스 패스코드가 적어도 특정 길이인) 멤버십을 요청하는 디바이스에 의해 단순히 어서트(assert)되어야 한다.These attributes, listed for various devices 105-130, are some examples of ring membership criteria (e.g., whether the user is logged into a cloud service account, the device's operating system, passcode strength, other security features, corporate It expresses the existence of an encryption secret through the composition). Those of skill in the art will recognize that many other criteria may be used to determine membership eligibility for a ring. As shown, some of these criteria are not properties of the device. For example, some embodiments use properties of applications running on the device (eg, whether the application is installed, how the application is set on the device, etc.) as a ring membership criterion. In addition, some embodiments include a specific user to join the ring, such as the user approving the device on another device already established in the ring, the user entering a code provided by the established device on the requesting device, etc. It requires actions. In addition, some ring membership criteria require third-party verification. For example, some embodiments require a third party certificate that the device is a valid iOS device. On the other hand, some ring membership criteria must simply be asserted by the device requesting membership (eg, the device passcode is at least a certain length).

도 2 내지 도 6은 디바이스들(105 내지 130)에 대한 일부 실시예들의 다양한 링들의 예들을 제공한다. 도 2는 디바이스가 사용자의 클라우드 서비스 계정 패스워드들을 알고 있다는 단일 기준만을 갖는 제1 링(200)을 도시한다. 일부 실시예들은, 사용자가 클라우드 서비스 계정으로 그 디바이스를 로깅하는 한, 이러한 링을 사용하여 사용자가 소유하는 디바이스들 모두가 링에 함께 조인하게 한다. 일부 실시예들에서, 새로운 디바이스들이 결정적 공개/개인 키 생성 알고리즘을 사용하여 계정 패스워드에 기초하여 개인 키를 생성하는 것 및 (이미 링에 있는 임의의 디바이스에 의해 검증될 수 있는) 이러한 개인 키를 사용하여 링 멤버십을 위한 신청서에 서명하는 것에 의해 링에 신청할 수 있다. 그에 따라, 모든 디바이스들(105 내지 130)은 제1 링(200)의 멤버들이다.2-6 provide examples of various rings of some embodiments for devices 105-130. 2 shows a first ring 200 with only a single criterion that the device knows the user's cloud service account passwords. Some embodiments use such a ring to have all of the devices owned by the user join the ring together, as long as the user logs the device to the cloud service account. In some embodiments, new devices generate a private key based on the account password using a deterministic public/private key generation algorithm and use this private key (which can be verified by any device already in the ring). You can apply to the ring by signing the application for ring membership using. Accordingly, all devices 105 to 130 are members of the first ring 200.

도 3은 멤버십을 위해 (i) 디바이스가 iOS 운영 체제를 실행하고 있는 것 및 (ii) 사용자가 디바이스를 링 내에서 승인할 것을 필요로 하는 제2 링(300)을 도시한다. 따라서, 어떠한 iOS 디바이스(즉, 랜덤한 사용자의 스마트폰)도 링에 조인할 수 없고; 그 대신에, 확립된 디바이스의 사용자는 디바이스를 링 내에서 조인하는 것을 승인해야 한다. 사용자 승인이 비-사용자 디바이스들이 조인하는 것을 방지하기 위한 보안 메커니즘의 예를 제공하지만, 일부 실시예들은 모든 링들에 대해 클라우드 서비스 계정 패스워드(또는 다른 암호화 시크릿)의 지식을 필요로 하여, 사용자가 다른 사용자의 디바이스가 사용자의 실제 디바이스들을 갖는 링 내에서 우연히 허용하게 하는 것을 방지한다. 일부 실시예들에서, 디바이스는 링 조인 절차의 일부로서 그것이 iOS 디바이스임을 어서트하고; 이어서, 디바이스가 사용자에게 속한다는 것뿐만 아니라, 디바이스가 링 멤버십 신청서에서 주장하는 대로 iOS라는 것을 승인하기 위한 프롬프트(예컨대, "An iPhone wishes to join your iOS Device Ring; Please verify that this is your iPhone"라고 판독되는 프롬프트, 또는 이와 유사한 정보)가 사용자에게 제시된다. 다른 실시예들에서, 디바이스는 제3자(예컨대, 디바이스 제조자)를 이용하여 디바이스가 주장된 바와 같은 iOS 디바이스인지를 검증할 것이 요구된다. 이러한 검증은 디바이스가 링 내에서 승인되기 전에 대역 외에서 수행될 수 있다. 제2 링(300)은 다른 3개의 디바이스들이 iOS 디바이스들이 아니기 때문에, 3개의 멤버들, 즉, 2개의 스마트폰들(105, 110) 및 태블릿(115)을 갖는다.FIG. 3 shows a second ring 300 that requires (i) the device is running the iOS operating system for membership and (ii) the user needs to approve the device within the ring. Thus, no iOS device (ie, a random user's smartphone) can join the ring; Instead, the user of the established device must authorize the device to join within the ring. While user authorization provides an example of a security mechanism to prevent non-user devices from joining, some embodiments require knowledge of the cloud service account password (or other encryption secret) for all rings, so that the user Prevents the user's device from accidentally allowing in the ring with the user's actual devices. In some embodiments, the device asserts that it is an iOS device as part of the ring join procedure; Subsequently, a prompt to acknowledge that the device belongs to the user as well as that the device is iOS as claimed in the ring membership application (eg, "An iPhone wishes to join your iOS Device Ring; Please verify that this is your iPhone" A prompt that reads as, or similar information) is presented to the user. In other embodiments, the device is required to use a third party (eg, the device manufacturer) to verify that the device is an iOS device as claimed. This verification can be performed out of band before the device is approved in the ring. The second ring 300 has three members, that is, two smartphones 105 and 110 and a tablet 115 because the other three devices are not iOS devices.

도 4는 멤버십을 위해 (i) 디바이스가 (패스코드/패스워드 강도에 대한 프록시로서의 역할을 하는) 적어도 12개의 문자들을 갖는 패스코드/패스워드를 가질 것 및 (ii) 사용자가 디바이스를 링 내에서 승인할 것을 필요로 하는 제3 링(400)을 도시한다. 이전의 링(300)과 마찬가지로, 사용자 승인 요건은 임의의 랜덤한 사용자 디바이스가 충분한 길이의 패스코드를 갖자마자 링에 조인하는 것을 방지한다. 또한, 링(300)에 대해 기술된 바와 같이, 일부 실시예들에서, 사용자가 보안 패스코드/패스워드를 갖는 것으로서 디바이스를 승인하는 것을 요청하는 프롬프트가 사용자의 확립된 디바이스 상에 나타난다. 이러한 링(400)은 3개의 멤버들, 즉, 제1 스마트폰(105), 랩톱(120), 및 홈 데스크톱(130)을 갖는다.4 shows for membership (i) the device will have a passcode/password with at least 12 characters (acting as a proxy for the passcode/password strength) and (ii) the user approves the device in the ring It shows the third ring 400 that needs to be done. As with the previous ring 300, the user authorization requirement prevents any random user device from joining the ring as soon as it has a passcode of sufficient length. Also, as described for ring 300, in some embodiments, a prompt appears on the user's established device requesting that the user approve the device as having a secure passcode/password. This ring 400 has three members, namely, a first smartphone 105, a laptop 120, and a home desktop 130.

도 5는 멤버십을 위해 디바이스가 (i) 기업 프로파일 구성물이 설치되어 있을 것 및 (ii) 클라우드 서비스 패스워드를 알고 있을 것을 필요로 하는 제4 링(500)을 도시한다. 일부 실시예들에서, 디바이스들은 기업 프로파일의 일부로서 제공되는 개인 키로 링에 조인하기 위한 멤버십 요청에 서명하는 것에 의해 기업 프로파일 구성물의 소유를 증명할 수 있고, 프로세스는 도 13을 참조하여 하기에 보다 상세히 기술된다. 새로운 디바이스가 서명된 멤버십 요청을 전송하는 것에 의해 링 내에서의 멤버십을 요청할 때, 확립된 디바이스들 중 하나가 기업 프로파일 공개 키를 사용하여 이러한 요청을 검증한다. 클라우드 서비스 패스워드는, 기업의 임의의 멤버보다는, 특정 사용자에 의해 소유된 디바이스들로만 멤버십을 제한한다. 이는 (클라우드 서비스 패스워드를 입력했던 것에 의해) 사용자가 링에 조인하는 디바이스를 승인하는 것을 보장하기 위한 검증 메커니즘으로서의 역할을 한다. 사용자 디바이스들 중 단지 2개만이 이러한 기업 프로파일이 설치되어 있기 때문에, 링(500)은 스마트폰(105) 및 랩톱(120)만을 포함한다.FIG. 5 shows a fourth ring 500 that requires the device to (i) have a corporate profile component installed and (ii) know a cloud service password for membership. In some embodiments, devices may prove possession of a corporate profile construct by signing a membership request to join the ring with a private key provided as part of the corporate profile, the process in more detail below with reference to FIG. Is described. When a new device requests membership in the ring by sending a signed membership request, one of the established devices verifies this request using the company profile public key. Cloud service passwords limit membership to devices owned by a particular user, rather than to any member of the enterprise. This serves as a verification mechanism to ensure that the user approves the device joining the ring (by entering the cloud service password). Since only two of the user devices have these corporate profiles installed, the ring 500 contains only the smartphone 105 and the laptop 120.

마지막으로, 도 6은 멤버십을 위해 (i) 디바이스가 패스워드를 가질 것 및 (ii) 대역 외 프로세스를 이용하여 디바이스가 진품 애플 디바이스로서 검증될 것을 필요로 하는 제5 링(600)을 도시한다. 일부 실시예들은 상이한 링 멤버십들에 대해 다양한 대역 외 증명서들을 필요로 하여, 제3자가 확립된 디바이스가 요청 디바이스를 링 내에서 허용하기 위해 요청 디바이스가 어서트하는 일부 태양을 인증할 것을 필요로 한다. 예를 들어, 그러한 제3자 검증은 디바이스의 유효성, 디바이스 상의 보안 프로세서의 존재 등을 증명하는 데 사용될 수 있는데, 이들 중 임의의 것이 링 멤버십 요건들일 수 있다. 멤버십 기준의 대역 외 검증은 특정 시간에 멤버십 기준이 참인지를 단지 검증하지만, 링의 존재는 정기적인 제3자 검증을 필요로 하는 일 없이 어서트된 기준의 지속적인 증명을 가능하게 한다. 이러한 링의 경우, 모든 디바이스들(105 내지 130)이 애플 디바이스들이기 때문에, 패스워드를 갖는 이들(스마트폰들(105, 110), 태블릿(115), 랩톱(120), 및 데스크톱(130)) 모두는 링(600)에 조인하는 것이 가능하다.Finally, FIG. 6 shows a fifth ring 600 for membership that requires (i) the device to have a password and (ii) the device to be verified as a genuine Apple device using an out-of-band process. Some embodiments require various out-of-band credentials for different ring memberships, requiring a third-party established device to authenticate some aspect the requesting device asserts to allow the requesting device in the ring. . For example, such third-party verification may be used to prove the validity of the device, the presence of a secure processor on the device, and the like, any of which may be ring membership requirements. The out-of-band verification of the membership criteria only verifies that the membership criteria are true at a specific time, but the presence of the ring allows continuous verification of the asserted criteria without requiring regular third-party verification. In the case of this ring, since all devices 105 to 130 are Apple devices, all those with passwords (smartphones 105, 110, tablet 115, laptop 120, and desktop 130) It is possible to join the ring 600.

상기의 예들에서, 요청 디바이스에 대한 링들 중 임의의 링 내에서의 멤버십은 링에 이미 확립된 디바이스에 의한 멤버십 기준의 검증에 어떻게든 좌우된다. 일부 실시예들은 링들의 3개의 상이한 티어(tier)들을 가능하게 한다: (1) 단순히 멤버십을 어서트하는 것에 의해 임의의 디바이스가 조인할 수 있는 자가 어서션 링(self-assertion ring)들, (2) 디바이스가 멤버십을 어서트할뿐만 아니라 암호화 시크릿의 지식을 증명할 것을 필요로 하는 애플리케이션 링들, 및 (3) 자가 어서션(그리고 일부 경우들에서, 암호화 시크릿의 지식)뿐만 아니라 링에 이미 확립된 디바이스의 승인을 필요로 하는 콘코던스 링(concordance ring)들.In the examples above, membership in any of the rings for the requesting device somehow depends on verification of the membership criteria by the device already established in the ring. Some embodiments enable three different tiers of rings: (1) self-assertion rings that any device can join by simply asserting membership, (2) ) Application rings that require the device not only to assert membership but also to prove knowledge of the cryptographic secret, and (3) self-assertion (and in some cases, knowledge of the cryptographic secret) as well as Concordance rings requiring approval.

일부 실시예들에서, 자가 어서션 링들은 일반적으로 많은 보안을 제공하지 않고 그에 따라 일반적으로 뷰 요건들을 전개시키는 데 사용되지 않는다(즉, 자신에 관한 사실을 단순히 어서트하는 디바이스는 그 디바이스가 임의의 추가적인 동기화 데이터에 액세스하지 못한다). 그 대신에, 검증이 없는 이러한 사실들의 어서션은 애플리케이션 링들 및 콘코던스 링들에 대한 멤버십 요청들 내에서 사용되는 디바이스 아이덴티티의 일부일 수 있다. 자가 어서션 링의 예는 디바이스가 존재한다는 것 또는 디바이스가 패스코드를 갖는다는 것을 디바이스가 어서트하는 것이 유일한 멤버십 기준이 되는 링일 것이고, 이때 디바이스는 이러한 어서션을 하자마자 링에 자동으로 추가된다.In some embodiments, self-assertion rings generally do not provide much security and therefore are not generally used to deploy view requirements (i.e., a device that simply asserts facts about itself is not subject to any No access to additional synchronization data) Instead, the assertion of these facts without verification may be part of the device identity used within membership requests for application rings and concordance rings. An example of a self-assertion ring would be a ring where the only membership criterion is for the device to assert that the device exists or that the device has a passcode, where the device is automatically added to the ring as soon as it makes such an assertion.

일부 실시예들에서, 애플리케이션 링의 예는 기업 키를 필요로 하지만 추가적인 검증을 필요로 하지 않는 링이다. 따라서, 링에 조인하기 위해, 디바이스는 (예컨대, 개인 키로 신청서에 서명하는 것에 의해) 그것이 기업 키를 갖는다는 것을 증명해야 한다. 그러나, 그러한 링에는 어떠한 추가적인 레벨의 검증도 필요하지 않다. 예를 들어, 사용자는 그러한 디바이스를 승인할 필요가 없고, 그에 따라 암호화 시크릿을 소유한(그에 따라 필요한 키를 생성할 수 있는) 임의의 디바이스가 링에 조인할 수 있다.In some embodiments, an example of an application ring is a ring that requires a corporate key but does not require additional verification. Thus, to join the ring, the device must prove that it has the corporate key (eg, by signing an application with a private key). However, no additional level of verification is required for such a ring. For example, the user does not need to approve such a device, so any device that owns the cryptographic secret (which can thus generate the required key) can join the ring.

마지막으로, 콘코던스 링은 뷰들(즉, 특정 타입들의 데이터를 동기화시키는 디바이스들의 그룹들)을 정의하는 데 가장 보편적으로 사용되는 링의 타입이다. 언급된 바와 같이, 콘코던스 링은 디바이스가 링 내에서의 멤버십을 요청하는 것 및 링에 이미 확립된 디바이스 상에서 (예컨대, 사용자에게 승인을 프롬프트하는 것에 의해) 신청서가 명시적으로 검증될 것을 필요로 한다. 콘코던스 링은 또한 특정 암호화 시크릿(예컨대, 사용자의 클라우드 서비스 패스워드, 기업 키 등에 기초하여 생성된 키)의 증명서를 필요로 할 수 있지만, 일단 그 키로부터 생성된 서명이 확립된 디바이스에 의해 검증된다면, 확립된 디바이스는 디바이스의 사용자에게 요청 디바이스가 링에 조인해야 하는지를 검증하도록 프롬프트한다.Finally, a concordance ring is the type of ring most commonly used to define views (ie, groups of devices that synchronize specific types of data). As mentioned, the concordance ring requires that the device request membership in the ring and that the application is explicitly verified (e.g., by prompting the user for approval) on a device already established in the ring. do. Concordance rings may also require a certificate of a specific cryptographic secret (e.g., a key generated based on a user's cloud service password, corporate key, etc.), but once the signature generated from that key is verified by the established device. In addition, the established device prompts the user of the device to verify that the requesting device should join the ring.

또한, 일부 실시예들은 디바이스가 링에 있어야 하는지를 검증하기 위한 다양한 대역 외 사용자 상호작용 기법들(예컨대, 암호화 시크릿의 대역 외 증명서)을 사용할 수 있다. 예를 들어, 일부 실시예들은 확립된 디바이스가 암호화 시크릿을 생성하게 하고, 확립된 디바이스가 요청 디바이스를 신뢰하도록 하기 위해 사용자가 이러한 시크릿을 요청 디바이스에 반송하는 것에 의존한다. 예들로서, 확립된 디바이스는 공개/개인 키 쌍이 생성되게 할 수 있는 난수를 생성할 수 있다. 사용자가 요청 디바이스 상에 이것을 입력할 때, 요청 디바이스는 개인 키를 생성할 수 있고 생성된 개인 키로 링 멤버십 요청에 서명할 수 있다. 유사하게, 확립된 디바이스는 오디오 또는 이미지 데이터(예컨대, QR(Quick Response) 코드)를 생성할 수 있고, 요청 디바이스가 이러한 데이터를 캡처할 것을 필요로 할 수 있고, 데이터로부터 결정적 방식으로 공개/개인 키 쌍을 생성할 수 있다. 당업자는, 관련된 2가지 타입들의 디바이스들(예컨대, 폰 상에서 생성된 QR 코드의 사진을 촬영하고, 하나의 디바이스를 특정 방식으로 다른 디바이스에 근접하게 이동시키고, 등등을 하는 스마트워치)에 따라, 다수의 그러한 기법들이 가능할 수 있다는 것을 인식할 것이다.Further, some embodiments may use various out-of-band user interaction techniques (eg, out-of-band certificate of cryptographic secret) to verify that the device should be in the ring. For example, some embodiments rely on the user to return this secret to the requesting device in order to cause the established device to generate an encryption secret and to allow the established device to trust the requesting device. As an example, an established device can generate a random number that can cause a public/private key pair to be generated. When the user enters this on the requesting device, the requesting device can generate a private key and sign the ring membership request with the generated private key. Similarly, an established device may generate audio or image data (e.g., a quick response (QR) code), and may require the requesting device to capture such data, and public/private data in a deterministic manner. You can generate a key pair. One of ordinary skill in the art, depending on the two types of devices involved (e.g., a smartwatch that takes a picture of a QR code generated on a phone, moves one device close to another device in a specific manner, etc.) It will be appreciated that such techniques in the world may be possible.

링들은 디바이스들로 하여금 다른 디바이스들이 특정 속성들을 갖는지를 검증하게 하고, 이러한 속성들의 증명서를 지속하여 디바이스들이 속성들을 정기적으로 검증할 필요가 없도록 한다. 링들을 사용하면, 일부 실시예들은, 디바이스들이 특정 속성들을 검증한 디바이스들과 특정 데이터 아이템들을 공유하게 하는 하나 이상의 동기화 서브그룹들 또는 뷰들을 디바이스들이 형성할 수 있게 한다. 따라서, 일부 실시예들에서 각각의 뷰에의 참여는 하나 이상의 링들 내에서의 멤버십에 기초하여 정의되는데; 즉, (하나 이상의 특정된 링들 내의 멤버들로서 허용된 것에 의해) 뷰 요건들을 충족시키는 디바이스들만이 뷰와 연관된 동기화된 데이터를 공유할 수 있다.Rings allow devices to verify that other devices have certain attributes, and persist certificates of these attributes so that devices do not need to verify attributes regularly. Using rings, some embodiments allow devices to form one or more synchronization subgroups or views that allow devices to share certain data items with devices that have verified certain attributes. Thus, in some embodiments participation in each view is defined based on membership within one or more rings; That is, only devices that meet the view requirements (by being allowed as members in one or more specified rings) can share synchronized data associated with the view.

뷰들은 사용자 디바이스들 사이에서 동기화되는 상이한 타입들의 데이터의 계층화를 가능하게 한다. 예들로서, 사용자는 특정 데이터(예컨대, 대부분의 사진들, 민감하지 않은 문서들, 금융 정보 또는 신용 카드 번호들로의 액세스가 가능하지 않게 하는 패스워드들 등)를 모든 사용자의 디바이스들 사이에서 공유되기를 원할 수 있다. 다른 한편으로, 사용자는 다른 데이터(예컨대, 민감한 사진들, 기밀 문서들, 사용자의 신용 카드 정보를 저장하는 금융 웹사이트들 또는 전자 상거래 사이트들로의 패스워드들)가 덜 안전한 디바이스들(예컨대, 패스워드에 의해 보호되지 않는 스트리밍 비디오 셋톱 박스)로부터 멀리 있기를 원할 수 있다. 또한, 일부 데이터는 특정 타입들의 디바이스들 상에서 어떠한 사용도 하지 않을 수도 있다(모바일 애플리케이션들에 대한 패스워드들은 그러한 애플리케이션들을 지원하지 않는 랩톱 또는 데스크톱 디바이스들 상에서 유용하지 않을 수도 있다).Views enable layering of different types of data that are synchronized between user devices. As an example, a user wants certain data (e.g., most photos, insensitive documents, financial information or passwords to disable access to credit card numbers, etc.) to be shared among all user's devices. You can want. On the other hand, the user has other data (e.g., sensitive photos, confidential documents, passwords to financial websites or e-commerce sites that store the user's credit card information) less secure devices (e.g. You may want to stay away from streaming video set-top boxes that are not protected by. Also, some data may not be of any use on certain types of devices (passwords for mobile applications may not be useful on laptop or desktop devices that do not support such applications).

도 7 내지 도 9는 도 1의 디바이스들의 세트에 대한 상이한 뷰들의 예들을 도시한다. 이러한 도면들에서, 각각의 뷰는 링들(200 내지 600) 중 하나 이상의 링 내에서의 멤버십에 기초하여 정의된다. 일부 실시예들은 단지 뷰 요건들이 링 멤버십에 기초하게 하는 한편, 다른 실시예들은 또한 디바이스가 뷰에 참여하기 위한 다른 타입들의 요건들(예컨대, 링 멤버십 요건들로서 전술된 것들과 같은 디바이스 속성들)을 허용한다. (링 멤버십에 기초하여 뷰 요건들을 정의한다는) 이러한 의미에서, 링들은 이들이 디바이스들의 특정 속성들을 인증하는 데 사용된다는 점에서 인증 기관과 유사하게 작용하고, 그 특정 속성들은 디바이스들이 이어서 동기화 목적들을 위해 다른 디바이스들을 신뢰하는 데 사용할 수 있다.7-9 show examples of different views of the set of devices of FIG. 1. In these figures, each view is defined based on membership within one or more of the rings 200-600. While some embodiments only allow view requirements to be based on ring membership, other embodiments also have other types of requirements for a device to participate in the view (e.g., device properties such as those described above as ring membership requirements). Allow. In this sense (which defines view requirements based on ring membership), rings act similarly to certification authorities in that they are used to authenticate certain properties of devices, and those specific properties are then used by devices for synchronization purposes. It can be used to trust other devices.

도 7에 도시된 바와 같이, 제1 뷰(700)에의 참여는 제1 링(200) 내에서의 멤버십에 의해 정의된다. 이와 같이, 6개의 디바이스들(105 내지 130) 모두가 제1 뷰에 참여한다. 이 도면은 6개의 디바이스들(105 내지 130)이 풀 메시(full mesh) 프레임워크에서 접속된다는 것을 도시하는데, 이때 디바이스들 각각은 다른 디바이스들 모두와 동기화하는 것이 가능하다. 위에서 참고로 포함된 미국 특허 공개 제2014/0281540호에 기술된 바와 같이, 일부 실시예들은 사용자 디바이스들 사이의 동기화를 위해 풀 메시 접속을 사용하는 반면, 다른 실시예들은 다른 네트워크 구성물들(예컨대, 디바이스들 중 하나를 중심 허브로 하는 스타 네트워크)을 이용한다.As shown in FIG. 7, participation in the first view 700 is defined by membership within the first ring 200. As such, all of the six devices 105 to 130 participate in the first view. This figure shows that six devices 105 to 130 are connected in a full mesh framework, where each of the devices is capable of synchronizing with all of the other devices. As described in U.S. Patent Publication No. 2014/0281540, incorporated by reference above, some embodiments use a full mesh connection for synchronization between user devices, while other embodiments use other network components (e.g. A star network with one of the devices as the central hub) is used.

이 도면은 3개의 데이터 아이템들(705 내지 715)이 제1 뷰(700)에 속한다는 것을 나타낸다. 일부 실시예들에서, 도 7에 도시된 바와 같이, 디바이스 상에 저장된 각각의 데이터 아이템은 데이터 아이템이 어느 뷰(들)에 속하는지를 특정하는 뷰 정보로 태깅된다(디바이스들이 동기화하는 타입의 것인 각각의 데이터 아이템의 경우; 동기화에 대해 적격하지 않은 데이터 아이템들은 그와 같이 태깅되지 않을 것이다). 디바이스들 중 하나가 (예컨대, 새로운 패스워드의 사용자 입력, 카메라로부터의 새로운 사진의 임포트, 새로운 문서의 생성 등으로부터) 동기화 데이터 아이템들의 세트에 추가할 새로운 데이터 아이템을 수신할 때, 디바이스는 데이터를 하나 이상의 뷰들에 속하는 것으로서 동적으로 태깅한다. 예를 들어, 디바이스들의 세트에 대한 뷰들이 정의되는 방법에 따라, 데이터가 생성된 애플리케이션(예컨대, Wi-Fi 네트워크들/패스워드들 대 온라인 계정 사용자명들/패스워드들), 사용자명/계정이 액세스를 얻는 웹사이트의 타입(예컨대, 금융 웹사이트 대 비금융 웹사이트), 데이터가 기업과 관련되는지 아닌지의 여부 등에 기초하여 데이터가 태깅될 수 있다.This figure shows that the three data items 705-715 belong to the first view 700. In some embodiments, as shown in Fig. 7, each data item stored on the device is tagged with view information specifying which view(s) the data item belongs to (a type of device that devices synchronize). For each data item; data items that are not eligible for synchronization will not be tagged as such). When one of the devices receives a new data item to add to the set of sync data items (e.g., from user input of a new password, import of a new photo from the camera, creation of a new document, etc.) It is dynamically tagged as belonging to the above views. For example, depending on how the views for the set of devices are defined, the application from which the data was created (e.g., Wi-Fi networks/passwords vs. online account usernames/passwords), username/account access The data may be tagged based on the type of website from which to obtain (e.g., a financial website versus a non-financial website), whether the data is related to a company or not.

일부 실시예들에서, 3개의 데이터 아이템들(705 내지 715)은 3개의 디바이스들 각각에 저장된다. 일단 디바이스들 중 하나가 이러한 데이터 아이템들 중 하나를 수신한다면, 그 디바이스는 별개의 암호화된 채널들(즉, 각각의 쌍의 디바이스들 사이의 별개의 채널)을 통해 데이터 아이템을 다른 디바이스들과 공유한다. 따라서, 사용자가 우선 데스크톱 컴퓨터(130) 상에 패스워드 아이템(715)을 입력하는 경우, 데스크톱은 별개의 채널들을 통해 이러한 아이템을 다른 디바이스들(105 내지 125) 각각과 공유한다. 일부 실시예들에서, 이러한 채널들은, 미국 특허 공개 제2014/0281540호에 그리고 하기에 보다 상세히 기술되는 바와 같이, 오프-더-레코드(OTR) 메시징과 같은 패스워드 인증 키 교환(password-authenticated key exchange, PAKE)을 이용하여 암호화된다.In some embodiments, three data items 705-715 are stored in each of the three devices. Once one of the devices receives one of these data items, that device shares the data item with other devices through separate encrypted channels (i.e., a separate channel between each pair of devices). do. Thus, when the user first enters the password item 715 on the desktop computer 130, the desktop shares this item with each of the other devices 105-125 through separate channels. In some embodiments, these channels are password-authenticated key exchange, such as off-the-record (OTR) messaging, as described in U.S. Patent Publication No. 2014/0281540 and in more detail below. , PAKE).

또한 미국 특허 공개 제2014/0281540호에 기술된 바와 같이, 일부 실시예들에서, 포인트-투-포인트 접속들은 클라우드 서비스 중재자를 사용한다. 즉, 디바이스들 중 하나(예컨대, 스마트폰(105))가 데이터 아이템(705)을 제2 디바이스(예컨대, 태블릿(115))와 공유하기 위해, 전송 디바이스는 (2개의 디바이스들 사이의 접속의 공개 키로 암호화되는) 데이터 아이템을 클라우드 서비스들 내의 중간 저장소로 전송한다. 이어서, 제2 디바이스는 중간 저장소로부터 데이터 아이템을 검색하고 데이터 아이템을 암호화해제한다. PAKE를 이용하는 것은 디바이스들이 클라우드 서비스의 소유자로부터의 중간자 공격에 영향을 받는 일 없이 이러한 방식으로 동기화 데이터 아이템들을 공유할 수 있게 한다.Also as described in US Patent Publication No. 2014/0281540, in some embodiments, point-to-point connections use a cloud service arbiter. That is, in order for one of the devices (e.g., smartphone 105) to share the data item 705 with a second device (e.g., tablet 115), the transmitting device is The data item (encrypted with the public key) is transferred to intermediate storage in cloud services. The second device then retrieves the data item from the intermediate storage and decrypts the data item. Using PAKE allows devices to share sync data items in this way without being affected by man-in-the-middle attacks from the owners of the cloud service.

제1 뷰(700)가 모든 디바이스들을 포함하는 반면, 도 8은 참여를 위해 제3 링(400) 및 제4 링(500) 양측 모두에서 멤버십을 필요로 하는 제2 뷰를 도시한다. 이러한 뷰는, 본질적으로, 디바이스가 기업 디바이스이고(즉, 기업 프로파일이 설치되어 있고) 고도로 안전한 패스워드(보안을 위한 프록시로서 사용되는 길이를 갖는, 적어도 12개의 문자들)를 갖는 것으로서 검증될 것을 필요로 한다. 단지 2개의 디바이스들, 즉, 스마트폰(105) 및 랩톱(120)만이 이러한 뷰에 참여한다. 도시된 바와 같이, 뷰는 3개의 데이터 아이템들(805 내지 815)을 포함하고, 그 각각은 이러한 제2 뷰(V2)에 속하는 것으로서 태깅된다. 예를 들어, 데이터 아이템들은 이들이 특정 기업 애플리케이션들과 관련되거나, 또는 사용자가 작업 관련된 것으로서 명시한 파일들인 경우, 제2 뷰(800)에 속하는 것으로서 태깅될 수 있다. 이러한 경우, 제3 링(400)에의 멤버십의 추가는 사용자가 이들의 패스코드들 중 하나를 보다 짧고 덜 안전한 패스코드로 변경하지 않는 것을 보장하고, 이는 그렇게 하면 제3 링(400), 그리고 그에 따라 뷰(800)에서 퇴출되게 될 것이기 때문이다. 또한, 데이터 아이템들 중 하나(815)는 제2 뷰(V2) 및 제3 뷰(V3) 양측 모두에 속하는 것으로서 태깅된다. 일부 실시예들에서, 데이터 아이템들은 다수의 뷰들에 속할 수 있고, 이러한 뷰들 중 임의의 뷰에 속하는 디바이스들에 공유된다.While the first view 700 includes all devices, FIG. 8 shows a second view that requires membership in both the third ring 400 and the fourth ring 500 for participation. Such a view, in essence, requires that the device be verified as having a corporate device (i.e., with a corporate profile installed) and having a highly secure password (at least 12 characters of length used as a proxy for security). To Only two devices, namely smartphone 105 and laptop 120, participate in this view. As shown, the view includes three data items 805 to 815, each of which is tagged as belonging to this second view V2. For example, data items may be tagged as belonging to the second view 800 if they are related to specific enterprise applications, or files specified by the user as work related. In this case, the addition of membership to the third ring 400 ensures that the user does not change one of their passcodes to a shorter and less secure passcode, which in doing so makes the third ring 400 and to This is because it will be expelled from the view 800 accordingly. In addition, one of the data items 815 is tagged as belonging to both the second view V2 and the third view V3. In some embodiments, data items may belong to multiple views and are shared to devices belonging to any of these views.

마지막으로, 도 9는 제2 링(300) 및 제5 링(600) 양측 모두에서 멤버십을 필요로 하는(즉, 디바이스가 진품 애플 디바이스로서 검증된 패스코드를 갖는 iOS 디바이스일 것을 필요로 하는) 제3뷰(900)를 도시한다. 이러한 제3뷰(900)의 경우, 3개의 디바이스들(105 내지 115)이 참여하고, 2개의 데이터 아이템들(815, 905)이 이러한 2개의 디바이스들 사이에서 공유된다. 데이터 아이템(815)은 이러한 디바이스들이 제2 뷰(800)에 참여하지 않더라도 디바이스들(110, 115)과 동기화된다. 디바이스가 데이터 아이템이 속하는 각각의 뷰의 멤버일 것을 필요로 하는 다른 실시예들에서, 스마트폰(105)은 그 데이터 아이템(815)을 다른 디바이스들 중 임의의 것과 공유하는 것이 허용되지 않을 것이다.Finally, Figure 9 requires membership in both the second ring 300 and the fifth ring 600 (that is, the device needs to be an iOS device with a verified passcode as a genuine Apple device). A third view 900 is shown. In the case of this third view 900, three devices 105 to 115 participate, and two data items 815 and 905 are shared between these two devices. The data item 815 is synchronized with the devices 110 and 115 even if these devices do not participate in the second view 800. In other embodiments that require the device to be a member of each view to which the data item belongs, the smartphone 105 will not be allowed to share the data item 815 with any of the other devices.

일부 실시예들은 제3자 개발자들 또는 디바이스들 자체의 사용자에 의한 동기화 데이터 아이템들의 이러한 계층화의 커스터마이제이션(customization)을 허용한다. 예를 들어, 일부 실시예들은 개발자들이 특정 애플리케이션들과 연관된 데이터에 대한 링들 및/또는 뷰들을 설계하기 위한 툴킷(toolkit)을 제공한다. 예를 들어, 기업 애플리케이션의 개발자는 기업 애플리케이션과 연관된 데이터 아이템들을 공유하는 디바이스들에 대한 요건들을 설계할 수 있다(즉, 특정 패스워드 강도 또는 다른 디바이스 요건들을 지정할 수 있다). 일부 실시예들에서, 디바이스들은 사용자들이 그들의 디바이스들이 데이터를 동기화시키는 방법을 커스터마이징할 수 있게 하기 위한 사용자 인터페이스를 포함한다. 즉, 사용자들은 가능한 요건들의 세트에 기초하여 이들의 데이터 아이템들에 대해 상이한 뷰들을 설계할 수 있고, 디바이스들은 링들을 뷰들로 그룹화하는 것을 통한 사용자 선택들을 구현할 것이다. 그러나, 다른 실시예들에서, 링들 및 뷰들의 설계는 사용자 디바이스들의 세트를 설계하는 디바이스 제조자에 의해 이루어진다.Some embodiments allow the customization of this layering of synchronization data items by third-party developers or users of the devices themselves. For example, some embodiments provide a toolkit for developers to design rings and/or views for data associated with specific applications. For example, a developer of an enterprise application can design requirements for devices that share data items associated with the enterprise application (ie, specify specific password strength or other device requirements). In some embodiments, devices include a user interface for allowing users to customize how their devices synchronize data. That is, users can design different views for their data items based on a set of possible requirements, and devices will implement user selections through grouping rings into views. However, in other embodiments, the design of the rings and views is made by the device manufacturer who designs the set of user devices.

II.II. 디바이스 아키텍처Device architecture

도 10은 디바이스들을 검증 서브그룹들(링들) 및 동기화 서브그룹들(뷰들)로 그룹화하는 것을 가능하게 하기 위한 일부 실시예들의 디바이스(1000)의 소프트웨어 아키텍처를 개념적으로 도시한다. 이러한 경우, 디바이스(1000)는 클라우드 서비스 계정과 연관된 여러 개(N개)의 디바이스들 중 하나이다. 이러한 그리고 후속 섹션들에서의 논의를 위해, 링들에 조인하고 뷰들을 통해 데이터 아이템들을 공유하는 다양한 디바이스들이 모두 (예컨대, 클라우드 서비스 계정 또는 다른 사용자 검증 메커니즘을 통해) 단일 사용자와 연관된다고 가정될 것이다. 따라서, 디바이스(1000)에 더하여, 도 10은 한 세트의 추가적인 디바이스들(D2 내지 DN)(1005)을 도시한다. 디바이스(1000), 및 다른 디바이스들(1005)은 데이터를 저장하는 것 그리고 네트워크와 통신하는 것이 가능한 임의의 상이한 타입의 전자 디바이스일 수 있다. 예를 들어, 이러한 디바이스들은 스마트폰들, 태블릿들, 랩톱 및/또는 데스크톱 컴퓨터들, 스마트워치들, 셋톱 박스들(텔레비전으로부터 분리되거나 그에 통합된 것), 다른 디바이스 상에서 동작하는 가상 디바이스들(예컨대, 가상 기계들) 등을 포함할 수 있다.10 conceptually illustrates the software architecture of the device 1000 of some embodiments to enable grouping of devices into verification subgroups (rings) and synchronization subgroups (views). In this case, the device 1000 is one of several (N) devices associated with a cloud service account. For discussion in these and subsequent sections, it will be assumed that the various devices that join rings and share data items through views are all associated with a single user (eg, through a cloud service account or other user verification mechanism). Thus, in addition to device 1000, FIG. 10 shows a set of additional devices D 2 to D N 1005. Device 1000 and other devices 1005 may be any different type of electronic device capable of storing data and communicating with a network. For example, these devices include smartphones, tablets, laptop and/or desktop computers, smartwatches, set-top boxes (separated from or integrated into television), virtual devices running on other devices (e.g. , Virtual machines), and the like.

도시된 바와 같이, 디바이스(1000)는 동기화 엔진(1010), 링 평가자(ring assessor)(1015), 뷰 평가자(1020), 데이터 태거(data tagger)(1025), 및 애플리케이션들의 세트(1030)를 포함한다. 또한, 디바이스는 키체인 데이터 아이템들을 위한 저장소들(1035), 디바이스 및 링 서명 키들(1040), 및 뷰 및 링 요건들 및 기술(view and ring requirements and description)(1045)을 포함한다. 이러한 저장소들 모두는 별개의 물리적 저장소들(예를 들어, 키들이 뷰 및 링 요건들/기술보다 더 안전한 저장소에 저장될 수 있음) 또는 동일한 물리적 저장소(예컨대, 하드 디스크, 솔리드 스테이트 메모리, 랜덤 액세스 메모리 등)의 일부일 수 있다. 또한, 데이터의 일부는 모듈들의 코드 내에 내장될 수 있다. 예를 들어, 뷰 기술 및 요건들이 고정되는 경우, 이러한 정보는 이러한 모듈들에 의해 저장소로부터 인출되는 별개의 데이터보다는, 뷰 평가자 및 데이터 태거의 일부일 수 있다.As shown, the device 1000 includes a synchronization engine 1010, a ring assessor 1015, a view evaluator 1020, a data tagger 1025, and a set of applications 1030. Include. The device also includes repositories 1035 for keychain data items, device and ring signing keys 1040, and view and ring requirements and description 1045. All of these repositories may be separate physical repositories (e.g., keys can be stored in more secure storage than view and ring requirements/technology) or the same physical storage (e.g., hard disk, solid state memory, random access Memory, etc.). In addition, some of the data can be embedded in the code of the modules. For example, if the view description and requirements are fixed, this information may be part of the view evaluator and data tagger, rather than separate data fetched from the repository by these modules.

일부 실시예들에서, 키체인 데이터 저장소(1035)는 디바이스(1000)와 다른 디바이스들(1005) 사이에서 동기화되는 데이터 아이템들인 키체인 데이터 아이템들을 저장한다. 일부 실시예들에서, 이러한 데이터 아이템들은 디바이스(1000) 상에 저장되어 디바이스와 연관된 공개 키로 암호화된다(그리고 다른 디바이스들 상에 저장되어 그러한 다른 디바이스들의 공개 키들로 암호화된다). 일부 실시예들에서, 이러한 공개 키는 디바이스가 초기에 포맷화될 때 디바이스에 의해 안전한 방식으로 생성된 디바이스 특정 키이다. 또한, 일부 실시예들에서, 디바이스 상에 저장된 각각의 데이터 아이템은 하나 이상의 뷰들에 속하는 것으로서 태깅된다.In some embodiments, the keychain data store 1035 stores keychain data items, which are data items that are synchronized between the device 1000 and other devices 1005. In some embodiments, these data items are stored on device 1000 and encrypted with a public key associated with the device (and stored on other devices and encrypted with the public keys of those other devices). In some embodiments, this public key is a device specific key generated in a secure manner by the device when the device is initially formatted. Further, in some embodiments, each data item stored on the device is tagged as belonging to one or more views.

일부 실시예들에서, 디바이스 및 링 서명 키 저장소(1040)는 디바이스가 데이터 저장, 데이터 동기화, 및 링 멤버십 조인/검증을 위해 사용하는 다양한 키들을 저장한다. 예를 들어, 디바이스 키는 디바이스(1000) 상의 저장을 위한 데이터 아이템들을 암호화하기 위해 일부 실시예들에 의해 사용되고, 발명의 명칭이 "Backup System with Multiple Recovery Keys"인 미국 특허 출원 제14/871,498호뿐만 아니라, 미국 가특허 출원들 제62/168,894호 및 제62/172,128호에 보다 상세히 기술된 바와 같이, 디바이스들(1000 또는 1005) 중 하나에 의해 백업된 데이터를 복구하는 데 또한 사용된다. 하기에 더 상세히 기술되는 바와 같이, 키 저장소(1040)는 또한 링 서명 키들(예컨대, 클라우드 서비스 계정 패스워드와 같은 공유된 사용자 크리덴셜(credential)로부터 생성된 키, 여러 상이한 링들에 조인하는 데 사용되는 기업 또는 다른 키들)뿐만 아니라 디바이스들 사이에서의 전송 동안 동기화 데이터 아이템들을 보호하기 위한 키들(즉, 디바이스(1000)와 디바이스들(1005) 각각 사이의 PAKE 보호 채널들을 위한 키들)을 저장할 수 있다. 일부 실시예들에서, 이러한 키들은 단일 저장소에보다는, 디바이스(1000) 상의 여러 상이한 위치들에 저장될 수 있다. 예를 들어, 키들 중 일부는, 디바이스(1000)의 표준 동작과는 별개로, 보안 프로세서에 저장될 수 있다.In some embodiments, the device and ring signing key store 1040 stores various keys that the device uses for data storage, data synchronization, and ring membership join/verify. For example, the device key is used by some embodiments to encrypt data items for storage on the device 1000, and US patent application Ser. No. 14/871,498 entitled "Backup System with Multiple Recovery Keys" In addition, it is also used to recover data backed up by one of the devices 1000 or 1005, as described in more detail in US Provisional Patent Applications 62/168,894 and 62/172,128. As described in more detail below, the key store 1040 also includes ring signing keys (e.g., a key generated from a shared user credential, such as a cloud service account password, used to join several different rings. Enterprise or other keys) as well as keys for protecting synchronization data items during transmission between devices (ie, keys for PAKE protected channels between each of device 1000 and devices 1005 ). In some embodiments, these keys may be stored in several different locations on device 1000, rather than in a single storage. For example, some of the keys may be stored in the secure processor, separate from the standard operation of the device 1000.

뷰 및 링 요건들 및 기술 저장소(1045)는, 제3자 개발자들, 디바이스 제조자, 또는 사용자에 의해 정의된 바와 같은, 상이한 링들에 대한 요건들을 개념적으로 저장한다. 이러한 요건들은, 이전 섹션에서 나타낸 바와 같이, 다양한 크리덴셜 및/또는 암호화 키들(예컨대, 공유된 사용자 패스워드 또는 다른 크리덴셜, 기업 키 등)의 소유, 다양한 디바이스 및/또는 애플리케이션 속성들(예컨대, 패스코드 길이, 운영 체제, 애플리케이션 구성물 등)의 어서션, 다양한 속성들(예컨대, 운영 체제, 디바이스 유효성 등)의 대역 외 검증, 또는 다양한 사용자 액션들(예컨대, 하나의 디바이스 상에서 보여지는 코드를 다른 디바이스 상에 입력하는 것, 하나의 디바이스를 다른 디바이스의 근접도 내에서 이동시키는 것, 하나의 디바이스의 사진을 다른 디바이스로 촬영하는 것 등)을 포함할 수 있다. 또한, 저장소(1045)는 일부 실시예들에서 특정 디바이스(즉, 디바이스(1000) 또는 다른 디바이스들(1005) 중 하나)가 각각의 상이한 뷰에 참여하기 위해 어느 링들의 멤버여야 하는지를 식별하는 뷰 요건들을 저장한다. 또한, 저장소(1045)는, 각각의 뷰에 대해, 어느 타입들의 데이터 아이템들이 뷰에 속하는지를 식별하는 뷰 기술을 포함한다. 이러한 뷰 기술은 데이터 아이템이 어느 애플리케이션으로부터 수신되는지(예컨대, 제1 뷰에 대한 Wi-Fi 애플리케이션으로부터의 패스워드들, 제2 뷰에 대한 웹 브라우저 애플리케이션으로부터의 패스워드들), 패스워드가 어느 월드 와이드 웹 도메인과 관련되는지(예컨대, 특정 뷰에 할당되는 금융 웹 도메인들의 포괄적인 리스트로부터의 패스워드들)를 포함하는 다양한 특성들에 기초하여 뷰에 대한 데이터 아이템들을 식별할 수 있다. 일부 실시예들에서, 뷰 기술은 특정 뷰에 속하는 것으로서 태깅된 데이터 아이템들을 단순히 특정하고, 사용자는 데이터 아이템을 처음 입력할 때 뷰들의 리스트로부터 선택한다.The view and ring requirements and description repository 1045 conceptually stores requirements for different rings, as defined by third party developers, device manufacturers, or users. These requirements, as indicated in the previous section, include possession of various credentials and/or encryption keys (e.g., shared user password or other credentials, corporate key, etc.), various device and/or application attributes (e.g., pass Assertion of code length, operating system, application composition, etc.), out-of-band verification of various attributes (e.g., operating system, device validity, etc.), or various user actions Inputting to, moving one device within proximity of another device, taking a picture of one device with another device, etc.) may be included. In addition, storage 1045 is a view requirement that in some embodiments identifies which rings a particular device (i.e., one of device 1000 or other devices 1005) should be a member of which rings to participate in each different view. Save them. In addition, storage 1045 includes, for each view, a view description that identifies which types of data items belong to the view. This view technology allows the data item to be received from which application (e.g., passwords from the Wi-Fi application for the first view, passwords from the web browser application for the second view), and which world wide web domain Data items for the view can be identified based on various characteristics including whether they are associated with (eg, passwords from a comprehensive list of financial web domains assigned to a particular view). In some embodiments, the view description simply specifies data items that are tagged as belonging to a particular view, and the user selects from a list of views the first time the data item is entered.

애플리케이션들(1030)을 통해, 디바이스(1000)의 사용자는 일부 실시예들에서 키체인 데이터를 입력할 수 있다. 애플리케이션들(1030)은, 디바이스 운영 체제와 통합되고 디바이스 제조자로부터 유래하는 애플리케이션들(예컨대, 빌트인 브라우저 또는 이메일 애플리케이션, Wi-Fi 애플리케이션 등)뿐만 아니라 제3자 애플리케이션들(예컨대, 뱅킹 애플리케이션들, 게임 애플리케이션들, 스트리밍 비디오 애플리케이션들 등)을 포함할 수 있다. 사용자는 이러한 애플리케이션들(1030)을 통해 사용자명들 및 패스워드들, 또는 다른 키체인 데이터를 입력한다. 또한, 애플리케이션들은 다른 방식들로(예컨대, 암호화 키를 생성하는 것, 사진을 캡처하는 것 등에 의해) 키체인 데이터를 수신할 수 있다. 일부 실시예들에서 애플리케이션들(1030)에 의해 캡처된 키체인 데이터(1050)는 데이터 태거(1025)로 전송된다.Through the applications 1030, a user of the device 1000 may input keychain data in some embodiments. Applications 1030 include applications that are integrated with the device operating system and originate from the device manufacturer (eg, built-in browser or email application, Wi-Fi application, etc.), as well as third-party applications (eg, banking applications, games). Applications, streaming video applications, etc.). The user enters usernames and passwords, or other keychain data through these applications 1030. Additionally, applications may receive keychain data in different ways (eg, by generating an encryption key, capturing a photo, etc.). Keychain data 1050 captured by applications 1030 in some embodiments is transmitted to data tagger 1025.

데이터 태거(1025)는 애플리케이션들(1030)로부터 수신된 키체인 데이터(1050)(및 데이터 아이템들이 아직 뷰 정보로 태깅되지 않을 때 임의의 다른 소스들로부터의 키체인 데이터 아이템들)를 태깅하는 것을 처리한다. 일부 실시예들에서, 도시된 바와 같이, 데이터 태거(1025)는 뷰 기술 및 요건 저장소(1045)로부터 뷰 기술 정보(1055)를 인출하고 이러한 정보를 이용하여 키체인 데이터 아이템들(1050) 각각이 어느 뷰들에 속하는지를 판정한다. 다른 실시예들에서, 언급된 바와 같이, 뷰 기술은 데이터 태거 코드의 일부이고, 저장소로부터 검색될 필요가 없다.Data tagger 1025 is responsible for tagging keychain data 1050 (and keychain data items from any other sources when the data items are not yet tagged with view information) received from applications 1030. Process. In some embodiments, as shown, data tagger 1025 fetches view description information 1055 from view description and requirements store 1045 and uses this information to identify each of the keychain data items 1050. Determine which views belong to. In other embodiments, as mentioned, the view description is part of the data tagger code and does not need to be retrieved from the repository.

데이터 태거(1025)는 이러한 뷰 정보를 키체인 데이터에 첨부한다. 일부 실시예들에서, 데이터 태거는 뷰 태깅된 키체인 데이터(1060)를 (도시된 바와 같은) 동기화 엔진(1010)으로 전송하고, 그 동기화 엔진은 암호화 키 및 함수를 사용하여 데이터 아이템들을 암호화하고 이들을 키체인 데이터 저장소(1035)에 저장한다. 다른 실시예들에서, 데이터 태거는 암호화 함수를 사용하여 뷰 태깅된 키체인 데이터(1060)를 암호화하고, 동기화 엔진(1010)을 수반하지 않고서 이러한 데이터를 저장소(1035)에 직접 저장한다. 어느 경우든, 일부 실시예들은 데이터 아이템을 암호화하지만 뷰 태그들을 암호화되지 않은 상태로 두어, 데이터 아이템이 속하는 뷰들이 데이터를 암호화해제하는 일 없이 (예컨대, 동기화 엔진(1010)에 의해) 식별될 수 있다.The data tagger 1025 attaches this view information to the keychain data. In some embodiments, the data tagger sends the view tagged keychain data 1060 to the synchronization engine 1010 (as shown), which uses the encryption key and function to encrypt the data items and These are stored in the keychain data storage 1035. In other embodiments, the data tagger encrypts view tagged keychain data 1060 using an encryption function and stores this data directly in storage 1035 without involving the synchronization engine 1010. In either case, some embodiments encrypt the data item but leave the view tags unencrypted so that the views to which the data item belongs can be identified (e.g., by synchronization engine 1010) without decrypting the data. have.

링 평가자(1015)는 (i) 디바이스(1000)가 링들에 조인하기 위한 요청들을 생성하고 (ii) 디바이스(1000)가 이미 멤버인 링들에 조인하기 위한, 다른 디바이스들(1005)로부터의 요청들을 평가한다. 요청들을 생성하기 위해, 일부 실시예들의 링 평가자(1015)는 자체 평가자 모듈(1016)을 포함한다. 이 모듈은 링 요건들(1065)을 사용하여 디바이스(1000)가 링에 대한 멤버십 기준을 충족시킬 때를 판정한다. 링 요건들(1065)은 (예컨대, 디바이스의 사용자에 의해 또는 제3자 개발자들에 의해 정의되는 경우) 저장소(1045)로부터 검색되거나 또는 (예컨대, 디바이스 제조자에 의해 하드 코딩된 경우) 링 평가자 코드의 일부일 수 있다. 일부 실시예들에서, 자체 평가자(1016)는 디바이스(1000)가 아직 멤버가 아닌 링에 대한 요건들을 충족시키거나, 또는 이미 멤버인 링에 대한 요건들을 더 이상 충족시키지 않도록 하는 방식으로, 그 디바이스가 변경되었는지 여부를 판정하기 위해 주기적으로 체크한다. 다른 실시예들에서, 자체 평가자(1016)는 이벤트 구동 방식으로 동작한다. 즉, 디바이스 속성(또는 링 멤버십에 영향을 미치는 다른 기준)이 변경될 때, 디바이스의 링 상태가 변경되어야 하는지 여부를 판정하기 위해 자체 평가자(1016)에 통지된다.Ring evaluator 1015 (i) generates requests for device 1000 to join rings and (ii) requests from other devices 1005 to join rings for which device 1000 is already a member. Evaluate. To generate requests, the ring evaluator 1015 of some embodiments includes a self evaluator module 1016. This module uses ring requirements 1065 to determine when device 1000 meets the membership criteria for the ring. Ring requirements 1065 may be retrieved from repository 1045 (e.g., if defined by a user of the device or by third party developers) or (e.g., if hard coded by the device manufacturer) ring evaluator code Can be part of In some embodiments, the self-evaluator 1016 may ensure that device 1000 meets the requirements for a ring that is not yet a member, or no longer meets the requirements for a ring that is already a member. Is checked periodically to determine whether or not has changed. In other embodiments, the self-evaluator 1016 operates in an event driven manner. That is, when a device attribute (or other criterion affecting ring membership) changes, the self-evaluator 1016 is notified to determine whether the device's ring state should change.

자체 평가자(1016)가 (사용자가 링 멤버십을 승인하거나 또는 코드를 디바이스들(1005) 중 하나로부터 디바이스(1000)로 반송하는 것(또는 그 역도 성립함)과 같은 임의의 요청 구동 액션들 이외에) 디바이스가 새로운 링에 조인하기 위한 기준을 충족시키는 것을 식별할 때, 링 평가자(1015)는 링 요청에 필요한 임의의 키들(1067)(예컨대, 디바이스 아이덴티티의 일부로서 사용되는 디바이스 공개 키, 요청에 서명하는 데 사용되는 디바이스 개인 키 및/또는 임의의 링 특정 키들)을 사용하여 링 조인 요청(1070)을 생성하고 그에 서명한다. 그러한 요청의 상세 사항들은 링 조인 요청의 생성 및 전송을 도시하는 도 13을 참조하여 하기에 기술된다. 이 도면에 도시되지 않았지만, 링 평가자(1015)는 자체 평가자(1016)가 그 디바이스가 더 이상 특정 링의 멤버가 아니어야 하는 것으로 판정할 때 다른 디바이스들에도 통지들을 또한 전송할 수 있다.Self-evaluator 1016 (other than any request driven actions such as the user approving ring membership or returning a code from one of the devices 1005 to the device 1000 (or vice versa)) When identifying that the device meets the criteria for joining the new ring, the ring evaluator 1015 signs the request, any keys 1067 required for the ring request (e.g., a device public key used as part of the device identity). The device private key and/or any ring-specific keys used to generate and sign a ring join request 1070). Details of such a request are described below with reference to FIG. 13, which illustrates the creation and transmission of a ring join request. Although not shown in this figure, ring evaluator 1015 may also send notifications to other devices when self-evaluator 1016 determines that the device should no longer be a member of a particular ring.

링 평가자(1015)는 또한 다른 디바이스들(1005)로부터 수신된 링 조인 요청들(1075)을 검증하기 위한 크리덴셜 체커 모듈(1017)을 포함한다. 디바이스(1000)와 마찬가지로, 다른 디바이스들 중 하나가 그것이 링에 조인하기 위한 기준을 충족시키는 것으로 판정할 때, 그 디바이스는 링 조인 요청을 생성하고 링에 있는 다른 디바이스들에게 전송한다(일부 실시예들에서, 각각의 디바이스는 멤버가 아닌 것들을 포함하는 디바이스들의 리스트를 각각의 링에 저장한다). 디바이스(1000)가 그러한 요청을 수신할 때, 크리덴셜 체커(1017)는 요청 디바이스가 그것이 조인을 요청하고 있는 링 내에서 허용되어야 하는지 여부를 검증한다. 이는 요청이 적절한 키(들)로 서명되어 있는지를 검증하는 것, 임의의 대역 외 기준이 충족되었거나 또는 대역 외 체크들(예컨대, 요청 디바이스가 유효한 디바이스인지, 디바이스(1000) 상에서 생성된 코드가 요청 디바이스 상에 적절히 입력되었는지 등)을 수행하는 것, 디바이스가 링에 조인하기 위한 그의 기준을 적절히 어서트하였는지, 디바이스(1000)의 사용자가 요청 디바이스를 승인하였는지 등을 검증하는 것을 수반할 수 있다. 링 조인 요청이 검증될 때, 링 평가자(1015)는 링 상태 메시지(도시되지 않음)를 링에 있는 다른 디바이스들(1005)로 전송한다. 일부 실시예들에서, 링 상태 메시지는, 최근 추가된 디바이스를 포함하는, 링 내의 디바이스들의 리스트이다. 이는 요청 디바이스에게 링에 성공적으로 조인하였음을 통지할 뿐만 아니라, 다른 디바이스들에게 디바이스(1000)가 요청 디바이스의 멤버십을 승인하였음(그리고 그에 따라 이들이 멤버십 요청을 별개로 프로세싱할 필요가 없음)을 통지하도록 하는 역할을 한다. 일부 실시예들에서, 이러한 통지 메시지는 링 특정 키 쌍의 개인 키(예컨대, 멤버십 요청에 서명하는 데 사용된 키)로 서명된다.Ring evaluator 1015 also includes a credential checker module 1017 for verifying ring join requests 1075 received from other devices 1005. As with device 1000, when one of the other devices determines that it meets the criteria for joining the ring, that device generates a ring join request and sends it to other devices in the ring (some embodiments. In the field, each device stores a list of devices in each ring, including those that are not members). When device 1000 receives such a request, credential checker 1017 verifies whether the requesting device should be allowed within the ring it is requesting to join. This verifies that the request is signed with the appropriate key(s), any out-of-band criteria have been met, or out-of-band checks (e.g., whether the requesting device is a valid device, the code generated on device 1000 is Performing appropriate input on the device, etc.), whether the device properly asserted its criteria for joining the ring, whether the user of the device 1000 has approved the requesting device, and the like. When the ring join request is verified, the ring evaluator 1015 sends a ring status message (not shown) to the other devices 1005 in the ring. In some embodiments, the ring status message is a list of devices in the ring, including the recently added device. This not only notifies the requesting device that it has successfully joined the ring, but also informs other devices that the device 1000 has approved the requesting device's membership (and therefore they do not need to process the membership request separately). It plays a role to do. In some embodiments, this notification message is signed with the private key of the ring specific key pair (eg, the key used to sign the membership request).

링 평가자(1015)는 또한 뷰 평가자(1020)가 디바이스(1000)뿐만 아니라 다른 디바이스들(1005)의 현재 링 상태(1080)를 정기적으로 알도록 유지한다. 일부 실시예들에서, 뷰 평가자(1020)는 링 평가자(1015)로부터(또는 링 평가자가 이러한 정보를 저장하는 저장소로부터) 필요에 따라 이러한 정보를 요청한다. 뷰 평가자(1020)는 디바이스들(디바이스(1000) 및 다른 디바이스들(1005)을 포함함) 중 어느 것이 디바이스들의 그룹에 대해 정의된 상이한 뷰들 각각에 참여하는지를 판정하는 것을 담당한다. 구체적으로, 일부 실시예들에서, 뷰 평가자는 (모든 디바이스들의 현재 링 멤버십 상태에 기초하여, 임의의 주어진 시점에서) 뷰들과 디바이스들 사이의 맵핑(즉, 각각의 디바이스에 대해, 디바이스가 어느 뷰들에 참여하는지; 또는 각각의 뷰에 대해, 어느 디바이스가 참여하는지)을 판정한다. 뷰 평가자(1020)는, 다시, 여러 상이한 실시예들에서 디바이스 제조자에 의해 뷰 평가자 내에 코딩될 수 있는 또는 제3자 개발자들 및/또는 사용자들에 의해 생성된 가변 정보일 수 있는 뷰 요건들(1085)에 기초하여 이러한 판정을 행한다.Ring evaluator 1015 also keeps view evaluator 1020 regularly aware of the current ring state 1080 of device 1000 as well as other devices 1005. In some embodiments, the view evaluator 1020 requests this information as needed from the ring evaluator 1015 (or from the repository where the ring evaluator stores this information). View evaluator 1020 is responsible for determining which of the devices (including device 1000 and other devices 1005) participate in each of the different views defined for the group of devices. Specifically, in some embodiments, the view evaluator is the mapping between views and devices (ie, for each device, at any given point in time, based on the current ring membership state of all devices). Participate in; or, for each view, which device participates). The view evaluator 1020 is, again, view requirements (which may be coded within the view evaluator by the device manufacturer in various different embodiments or may be variable information generated by third party developers and/or users). 1085).

뷰에 참여하기 위해 디바이스가 어느 링들의 멤버여야 하는지를 정의하는 것에 더하여, 일부 실시예들의 뷰 요건들은 디바이스들 사이에서 뷰에 대한 데이터를 동기화하는 데 사용되는 채널에 대한 임의의 요건들을 (뷰들의 일부 또는 전부에 대해) 특정할 수 있다. 상기에 언급된 바와 같이, 일부 실시예들에서, 디바이스들은, 예컨대, (동기화 동안 데이터 아이템들이 암호화되는 공유 키에 의존하는) PAKE를 사용하여, 피어-투-피어 암호화된 채널들을 형성한다. 또한, 일부 뷰들은 디바이스에게 자체에서 공개/개인 키 쌍의 소유를 필요로 하는 링의 멤버일 것을 필요로 한다. 일부의 그러한 뷰들은 2개의 디바이스들 사이의 채널이 PAKE에 대한 공유 키에 더하여(또는 그에 대한 대안으로서) 이러한 키를 사용할 것을 필요로 한다. 예를 들어, 기업 개인 키의 소유를 필요로 하는 기업 링 내에서의 멤버십을 필요로 하는 기업 뷰의 경우, 일부 실시예들은 기업 개인 키를 사용하여 그 뷰에 대해 동기화된 데이터 아이템들을 암호화한다. 따라서, 뷰 평가자(1020)는 (i) 뷰들과 디바이스들 사이의 맵핑(1090) 및 (ii) 각각의 뷰에 대한 동기화 채널들에 대한 요건들(1095)을 동기화 엔진(1010)에게 제공한다.In addition to defining which rings a device must be a member of in order to participate in a view, the view requirements of some embodiments also define any requirements for the channel used to synchronize data for the view between devices ( Or for all). As mentioned above, in some embodiments, devices form peer-to-peer encrypted channels, e.g., using PAKE (relying on a shared key on which data items are encrypted during synchronization). Also, some views require the device to be a member of a ring that requires possession of a public/private key pair on its own. Some such views require the channel between the two devices to use this key in addition to (or as an alternative to) the shared key for PAKE. For example, for a corporate view that requires membership within a corporate ring that requires ownership of a corporate private key, some embodiments encrypt data items synchronized for that view using the corporate private key. Accordingly, the view evaluator 1020 provides the synchronization engine 1010 with (i) a mapping 1090 between views and devices and (ii) requirements 1095 for synchronization channels for each view.

일부 실시예들에서, 동기화 엔진(1010)은 뷰 태깅된 키체인 데이터 아이템들을 다른 디바이스들(1005)과 동기화시키는 것을 담당한다. 일부 실시예들에서, 동기화 엔진(1010)은 그것이 데이터 아이템들을 다른 디바이스와 동기화시켜야 하는 것으로 판정하고, 뷰 평가자(1020)로부터 특정 다른 디바이스가 참여하는 뷰들의 리스트(1090) 및 뷰들 각각에 대한 임의의 특수 채널 요건들을 수신한다. 일부 실시예들에서, 동기화 엔진(1010)은 한 번에 오직 하나의 채널을 동기화시키고, 그래서 그것은 단지 디바이스(1000)와 다른 디바이스 사이의 특정 채널을 사용하는 뷰들의 리스트(특수 채널 요건들이 없는 경우, 이는 다른 디바이스 및 디바이스(1000) 양측 모두가 참여하는 모든 뷰들일 것이다)를 뷰 평가자(1020)로부터 요청한다. 동기화 엔진(1010)은 키체인 데이터 저장소(1035)로부터 정확한 뷰들에 속하는 뷰 태깅된 키체인 데이터 아이템들(1097)을 검색하고 보안 채널을 통해 이러한 데이터 아이템들을 다른 디바이스와 동기화시킨다. 일부 실시예들에서, 이는 디바이스 상에서의 저장 동안 사용된 키체인 데이터 아이템들에 대한 암호화를 제거하는 것 및 보안 채널에 대해 사용된 공유 키로 키체인 데이터 아이템들을 재암호화하는 것을 수반한다.In some embodiments, synchronization engine 1010 is responsible for synchronizing view tagged keychain data items with other devices 1005. In some embodiments, the synchronization engine 1010 determines that it should synchronize the data items with the other device, and from the view evaluator 1020 a list of views 1090 in which a particular other device participates and any Receive the special channel requirements of In some embodiments, the synchronization engine 1010 synchronizes only one channel at a time, so it is only a list of views that use a particular channel between device 1000 and another device (in the absence of special channel requirements. , This will be all views in which both the other device and the device 1000 participate) from the view evaluator 1020. The synchronization engine 1010 retrieves view tagged keychain data items 1097 belonging to the correct views from the keychain data store 1035 and synchronizes these data items with other devices through a secure channel. In some embodiments, this involves removing encryption for keychain data items used during storage on the device and re-encrypting keychain data items with the shared key used for the secure channel.

당업자는 이 도면에 도시된 모듈들의 세트가 임의의 수의 목적들을 위한 광범위한 모듈들을 포함하는 디바이스의 소프트웨어 아키텍처의 서브세트라는 것을 인식할 것이다. 또한, 도시된 모듈들 중 많은 것이 그 자체가 여러 개의 모듈들을 포함할 것이고, 도시된 모듈들 중 여러 개의 모듈들에 의해 재사용될 수 있는 다양한 모듈들이 도시되지 않는다. 예를 들어, (도 16 및 도 17을 참조하여 하기에 도시되는 바와 같이) 데이터를 다른 디바이스들과 동기화시킬 때의 동기화 엔진 및 (도 13에 하기에 도시되는 바와 같이, 다른 디바이스들의 링 신청서들에 서명하기 위한 그리고/또는 링 신청서들을 검증하기 위한) 링 평가자에 의해 암호화 및/또는 암호화해제 함수들이 사용될 수 있다.One skilled in the art will recognize that the set of modules shown in this figure is a subset of the device's software architecture comprising a wide range of modules for any number of purposes. Further, many of the illustrated modules will themselves include several modules, and various modules that can be reused by several of the illustrated modules are not illustrated. For example, the synchronization engine when synchronizing data with other devices (as shown below with reference to FIGS. 16 and 17) and ring applications of other devices (as shown below in FIG. 13) Encryption and/or decryption functions may be used by the ring evaluator (to sign and/or verify ring applications).

III.III. 링들에의 조인Join to rings

디바이스가 링에 조인하기 위해, 일부 실시예들은 디바이스가 링에 조인하기 위한 요청에 서명할 것 및 링에 이미 있는 디바이스들 중 하나에 의해 승인된 요청을 가질 것을 필요로 한다. 예를 들어, 일부 실시예들에서, 디바이스가 암호화 시크릿의 소유를 필요로 하는 링에 대한 요건들을 충족시킬 때, 디바이스는 (i) (다른 디바이스들과 이미 공유된) 그의 공개 키 및 링으로의 신청 날짜/시간에 암호화 시크릿으로부터 생성된 개인 키로 서명하고, (ii) 이러한 서명을 링에 조인하는 데 사용되는 그의 아이덴티티로 패키징하고, (iii) 아이덴티티에 그 자신의 개인 키로 서명한다. 이어서, 이러한 서명은 링에 조인하기 위한 요청으로서 링 내의 다른 디바이스들로 전송된다. 다른 디바이스들 중 하나가 요청 디바이스가 링에 조인하기 위한 모든 요건들을 충족시키는지를 검증할 때, 확립된 디바이스는, 추가되는 새로운 디바이스를 포함하는, 링 내의 다른 디바이스들에게 통지한다. 일부 실시예들에서, 이러한 통지는, 새로운 디바이스를 현재 포함하는, 링의 멤버들의 리스트를 포함한다.In order for a device to join the ring, some embodiments require the device to sign a request to join the ring and have a request approved by one of the devices already in the ring. For example, in some embodiments, when the device meets the requirements for a ring that requires possession of a cryptographic secret, the device (i) has its public key (already shared with other devices) and into the ring. Sign with a private key generated from the cryptographic secret at the date/time of the application, (ii) package this signature with his identity used to join the ring, and (iii) sign the identity with his own private key. This signature is then sent to other devices in the ring as a request to join the ring. When one of the other devices verifies that the requesting device meets all the requirements for joining the ring, the established device notifies other devices in the ring, including the new device being added. In some embodiments, this notification includes a list of members of the ring, currently containing the new device.

도 11은 링 내에서의 멤버십을 요청하기 위한 일부 실시예들의 프로세스(1100)를 개념적으로 도시한다. 일부 실시예들에서, 디바이스(예컨대, 디바이스의 링 평가자)는 디바이스가 링에 조인하기 위한 모든 요건들을 충족시키는 것으로 판정할 때 프로세스(1100)를 수행한다. 디바이스 속성이 변경되어(예컨대, 사용자가 디바이스로의 액세스를 보호하기 위해 패스코드를 추가하는 것, 암호화 키를 포함하는 구성물이 디바이스 상에 설치되는 것, 사용자가 디바이스 상에 클라우드 서비스 계정 패스워드를 입력하는 것 등), 디바이스가 멤버가 아닌 링에 현재 조인할 수 있을 때, 디바이스는 일부 실시예들에서 프로세스(1100)(또는 유사한 프로세스)를 수행한다.11 conceptually illustrates a process 1100 of some embodiments for requesting membership within a ring. In some embodiments, the device (eg, the device's ring evaluator) performs process 1100 when it determines that the device meets all the requirements for joining the ring. Device properties are changed (e.g., the user adds a passcode to protect access to the device, a construct containing the encryption key is installed on the device, the user enters the cloud service account password on the device) And so on), when the device is currently able to join a ring that is not a member, the device performs process 1100 (or a similar process) in some embodiments.

도시된 바와 같이, 프로세스(1100)는 (1105에서) 디바이스 서명 키 쌍을 검색하는 것으로 시작한다. 일부 실시예들에서, 이는 디바이스 운영 체제가 초기에 디바이스의 사용자에 의해 시작 및 구성될 때 디바이스에 의해 랜덤하게 생성되는(그리고 디바이스 상에 저장되는) 공개/개인 키 쌍이다. 즉, 사용자가 우선 디바이스를 구입하고 사용자의 사용을 위해 디바이스를 구성할 때(또는 디바이스의 운영 체제를 리셋 및 재구성할 때), 디바이스는 랜덤화된 시드 데이터(seed data)에 기초하여 공개/개인 키 쌍을 생성한다. 일부 실시예들에서 키 쌍에 대한 시드 데이터는 어떠한 디바이스 하드웨어와도 관련되지 않아서, 새로운 키 쌍이 디바이스에 대해 생성되는 경우(사용자가 디바이스를 재포맷화(reformat)하는 경우), 새로운 키 쌍은 이전 키 쌍과의 어떠한 암호화 관계도 갖지 않을 것이다. 일부 실시예들에서, 디바이스는 사용자에 속하는 다른 디바이스들(즉, 디바이스가 링들에 조인하게 하는 디바이스들)과 공유되는 디바이스 공개 키를 그의 아이덴티티의 일부로서 사용한다. 디바이스는 (발명의 명칭이 "Backup System with Multiple Recovery Keys"인 미국 특허 출원 제14/871,498호뿐만 아니라, 미국 가특허 출원들 제62/168,894호 및 제62/172,128호에 기재된 바와 같은) 백업 복구를 위해서뿐만 아니라, 그것이 저장한 데이터 아이템들을 암호화하기 위해 그의 개인 키를 사용한다. 또한, 일부 실시예들에서, 디바이스는 그의 개인 키를 사용하여 링 멤버십 요청들에 서명한다.As shown, process 1100 begins with (at 1105) retrieving a device signing key pair. In some embodiments, this is a public/private key pair that is randomly generated by the device (and stored on the device) when the device operating system is initially started and configured by the user of the device. That is, when a user first purchases a device and configures the device for use by the user (or when resetting and reconfiguring the device's operating system), the device is made public/private based on randomized seed data. Generate a key pair. In some embodiments, the seed data for the key pair is not related to any device hardware, so when a new key pair is created for the device (when the user reformats the device), the new key pair is It will not have any cryptographic relationship with the key pair. In some embodiments, the device uses the device public key shared with other devices belonging to the user (ie, devices that cause the device to join rings) as part of its identity. The device includes backup recovery (as described in U.S. Patent Application Nos. 14/871,498 entitled "Backup System with Multiple Recovery Keys" as well as U.S. Provisional Patent Applications 62/168,894 and 62/172,128). It uses his private key to encrypt data items it stores, as well as for the purpose. Also, in some embodiments, the device signs ring membership requests using its private key.

다음으로, 프로세스(1100)는 (1110에서) 디바이스가 멤버십을 요청하고 있는 링이 검증을 위해 시크릿 키의 증명서를 사용하는지 여부를 판정한다. 즉, 일부 링들은, 멤버십을 요청하는 디바이스가 (예컨대, 멤버십 요청에 서명하는 것에 의해) 그것이 특정 개인 키를 소유함을 나타낼 것을 필요로 하는데, 그에 대해 확립된 디바이스들은 공개 키를 갖는다.Next, process 1100 determines (at 1110) whether the ring for which the device is requesting membership uses the certificate of the secret key for verification. That is, some rings require the device requesting membership to indicate that it possesses a particular private key (eg, by signing the membership request), and the devices established for it have a public key.

그러한 키가 필요할 때, 프로세스는 (1115에서) 링 요건 데이터에 기초하여 링 서명 키 쌍을 생성한다(또는 키가 이미 생성된 경우에는, 링 서명 키 쌍을 검색한다). 예를 들어, 일부 실시예들은 사용자가 링에 조인하기 위해 특정 패스코드/패스워드를 입력할 것을 필요로 한다. 이어서, 디바이스는 이러한 패스워드로부터 결정적 방식으로 키 쌍을 생성하고, 이는 링 멤버십 요청에 사용된다. 일부 실시예들에서, 키 쌍이 생성되는 시드 데이터는 특정 목적을 위해 디바이스를 구성하는 일부로서 디바이스에 제공된다. 예를 들어, 디바이스가 기업에 소유되고 기업의 고용인에 의해 사용되는 경우, 기업은 공개/개인 키 쌍을 생성하는 데 사용되는 시드 데이터를 포함하는 이들의 기업 특정 구성물을 디바이스 상에 설치할 수 있고, 그 디바이스는 기업 특정 링에 조인하는 데 사용할 수 있다. 유사하게, 애플리케이션 다운로드에서 이용가능한 암호화 데이터를 사용하여 애플리케이션 특정 링에 조인될 수 있다.When such a key is required, the process generates (at 1115) a ring signing key pair based on the ring requirement data (or retrieves a ring signing key pair if the key has already been generated). For example, some embodiments require the user to enter a specific passcode/password to join the ring. The device then generates a key pair from this password in a deterministic manner, which is used for ring membership requests. In some embodiments, the seed data from which the key pair is generated is provided to the device as part of configuring the device for a specific purpose. For example, if a device is owned by an enterprise and used by an employee of the enterprise, the enterprise can install their enterprise specific constructs on the device containing seed data used to generate a public/private key pair The device can be used to join enterprise specific rings. Similarly, it can be joined to an application specific ring using the encrypted data available in the application download.

또한, 프로세스는 (1120에서) 임의의 추가적인 링 크리덴셜 검증을 수행한다. 이는 링 멤버십에 필요하지만 외부 확인을 필요로 하지 않는 디바이스의 자체 확인 특정 속성들을 수반할 수 있다. 예를 들어, 일부 실시예들은 디바이스가 어서트할 것을 필요로 하지만, 그것이 특정 운영 체제를 실행하는 것, 특정 타입의 디바이스인 것(디바이스 타입은 스마트폰, 스마트폰의 특정 브랜드(예컨대, 애플, 노키아, HTC 등), 디바이스의 특정 버전(예컨대, 아이폰 5, 아이폰 6 등) 등과 같은 넓은 카테고리일 수 있다), 적어도 특정 길이의 패스코드를 갖는 것 등을 임의의 암호화 또는 대역 외 방식으로 증명하지 않는다.In addition, the process performs (at 1120) any additional ring credential verification. This is necessary for ring membership, but may involve self-identification-specific properties of the device that do not require external verification. For example, some embodiments require the device to assert, but it is running a specific operating system, a specific type of device (the device type is a smartphone, a specific brand of smartphone (e.g., Apple, Nokia, HTC, etc.), specific versions of the device (e.g., iPhone 5, iPhone 6, etc.), etc.), at least having a passcode of a certain length, etc. Does not.

추가적인 링 크리덴셜 검증은 또한 (일부 실시예들에서, 링 멤버십 요청이 전송되기 전보다는, 전송된 후에 수행되는) 대역 외 검증을 수반할 수 있다. 대역 외 검증은 디바이스가 링 내에서의 멤버십에 필요한 속성을 단순히 어서트하기보다는 증명할 것을 필요로 한다. 예를 들어, 디바이스는, 제3자를 통해, 그것이 특정 제조자로부터의 유효한 디바이스를 갖고 있는지, 그것이 특정 운영 체제를 실행하는지, 그의 패스코드가 적어도 특정 길이인지, 또는 다른 속성들을 증명하는 것을 필요로 할 수 있다.Additional ring credential verification may also involve out-of-band verification (in some embodiments, performed after the ring membership request is transmitted, rather than before). Out-of-band verification requires the device to prove rather than simply assert the attributes required for membership in the ring. For example, a device may need to prove, through a third party, whether it has a valid device from a specific manufacturer, whether it runs a specific operating system, whether its passcode is at least a specific length, or other attributes. I can.

다음으로, 프로세스는 (1125에서) 디바이스 개인 키뿐만 아니라 임의의 개인 링 서명 키(즉, 동작(1115)에서 생성된 임의의 키)를 사용하여 링 멤버십 신청서에 서명한다. 이는 디바이스가, 그의 링 멤버십 신청서를 통해, (i) 그것은 그 디바이스만이 그의 공유 공개 키와 쌍을 이루는 개인 키를 갖고 있기 때문에 자신이라고 주장하는 디바이스라는 것, 및 (ii) 그것이 링에 조인하는 데 필요한 암호화 시크릿을 소유한다는 것을 증명하는 것을 가능하게 한다. 일부 실시예들에서, 서명된 링 멤버십 신청서는 또한 신청 시간뿐만 아니라 그의 공개 키를 포함하는 다른 디바이스 식별 정보를 포함한다. 일부 실시예들의 서명된 링 요청은 도 13을 참조하여 하기에 보다 상세히 기술된다.Next, the process signs the ring membership application (at 1125) using the device private key as well as any private ring signing key (ie, any key generated in operation 1115). This means that the device, through its ring membership application, is (i) it is a device claiming to be itself because only that device has a private key paired with its shared public key, and (ii) it joins the ring It makes it possible to prove that you own the encryption secret required to do so. In some embodiments, the signed ring membership application also includes the application time as well as other device identification information including its public key. The signed ring request of some embodiments is described in more detail below with reference to FIG. 13.

마지막으로, 프로세스는 (1130에서) 서명된 링 멤버십 신청서를 이미 링에 있는 다른 디바이스들로 전송한다. 일부 실시예들에서, (예컨대, 사용자 계정에 로그인하는 것에 의해, 사용자 패스워드를 필요로 하는 링에 조인하는 것에 의해, 등등에 의해) 사용자와 연관된 각각의 디바이스는 각각의 가능한 링의 멤버들인 디바이스들의 리스트를 저장하고, 이러한 리스트를 사용하여 링 멤버십 요청을 링 내의 다른 디바이스들로 전송한다. 이러한 디바이스들 중 하나가 (예컨대, 하기에 기술되는 도 12에 도시된 것과 같은 프로세스를 이용하여) 멤버십 요청을 승인하는 한, 디바이스는 링에 추가된다.Finally, the process sends (at 1130) the signed ring membership application to other devices already in the ring. In some embodiments, each device associated with the user (e.g., by logging in to a user account, by joining a ring that requires a user password, etc.) of devices that are members of each possible ring Store the list and use this list to send ring membership requests to other devices in the ring. As long as one of these devices approves the membership request (eg, using a process such as that shown in FIG. 12 described below), the device is added to the ring.

도 12는 디바이스를 링 내에서 허용할지 여부를 판정하기 위한 일부 실시예들의 프로세스(1200)를 개념적으로 도시한다. 일부 실시예들에서, 제1 디바이스는 프로세스(1100)(또는 유사한 프로세스)를 수행하여 링 멤버십을 위한 서명된 요청을 생성하고, 요청을 링의 멤버들로서 확립된 디바이스들로 전송한다. 이어서, 이러한 확립된 디바이스들 중 하나(또는 그 이상)가 프로세스(1200)(또는 유사한 프로세스)를 수행하여 (멤버십 요청이 적절하다고 가정하면) 디바이스를 링 내에서 허용하거나, 또는 링에 조인하기 위한 요청을 거부한다.12 conceptually shows a process 1200 of some embodiments for determining whether to allow a device within a ring. In some embodiments, the first device performs process 1100 (or similar process) to generate a signed request for ring membership and sends the request to devices established as members of the ring. Then, one (or more) of these established devices perform process 1200 (or a similar process) to allow the device within the ring (assuming the membership request is appropriate), or Reject the request.

도시된 바와 같이, 프로세스(1200)는 (1205에서) (프로세스(1200)가 실행하고 있는) 로컬 디바이스가 이미 속한 링에 조인하기 위한, 다른 디바이스로부터의 요청을 수신하는 것으로 시작한다. 일부 실시예들에서, 이러한 요청은 링에 조인하기를 원하는 다른 디바이스로부터의 포인트-투-포인트 접속(point-to-point connection)을 통해 수신된다. 이러한 포인트-투-포인트 접속은 직접 접속(예컨대, 디바이스들 사이의 블루투스 접속 등)을 통해 또는 중앙 리포지토리(central repository)를 통해 전송될 수 있다. 예를 들어, 일부 실시예들에서, 요청 디바이스는 중앙 리포지토리에 저장되는 메시지들을 여러 개의 확립된 디바이스들로 전송하고, 확립된 디바이스들 각각은 이들이 활성일 때 이러한 요청들을 검색한다. 즉, 잠기거나 전원이 꺼진 디바이스는 그것이 잠금해제되고 전원이 켜지고 등이 될 때까지 요청을 수신하지 못할 수도 있다.As shown, process 1200 begins (at 1205) by receiving a request from another device to join a ring to which the local device (which process 1200 is executing) already belongs. In some embodiments, this request is received via a point-to-point connection from another device wishing to join the ring. This point-to-point connection may be transmitted through a direct connection (eg, a Bluetooth connection between devices, etc.) or through a central repository. For example, in some embodiments, the requesting device sends messages stored in a central repository to multiple established devices, each of the established devices retrieving these requests when they are active. That is, a device that is locked or powered off may not be able to receive the request until it is unlocked, powered on, and lit.

요청의 수신 시에, 프로세스는 (1210에서) 요청이 다른 디바이스에 의해 이미 승인되었는지 여부를 판정한다. 일부 실시예들에서, 요청 디바이스가 멤버십 요청을 링 내의 확립된 디바이스들 각각으로 전송하기 때문에, 일부 경우들에서, 확립된 디바이스들 중 하나는 다른 확립된 디바이스들 중 하나가 이미 요청 디바이스를 링에 추가한 것으로 판정하기 위해서만 요청을 프로세싱하기 시작할 것이다. 일부 실시예들에서, 확립된 디바이스는 요청 디바이스가 링에 추가될 때 통지를 다른 확립된 디바이스들 및 새로운 디바이스로 전송한다. 이러한 경우, 프로세스(1200)는 종료된다.Upon receipt of the request, the process determines (at 1210) whether the request has already been approved by another device. In some embodiments, because the requesting device sends a membership request to each of the established devices in the ring, in some cases, one of the established devices is one of the other established devices already placing the requesting device in the ring. We will start processing the request only to determine that it has been added. In some embodiments, the established device sends a notification to other established and new devices when the requesting device is added to the ring. In this case, the process 1200 ends.

요청 디바이스가 아직 링에 추가되지 않았다고 가정하면, 프로세스(1200)는 (1215에서) 요청이 링을 적절히 식별하는지 여부를 판정한다. 링에 조인하기 위해, 일부 실시예들은 요청 디바이스가 링의 멤버들 및/또는 링의 다른 태양들을 식별하는 요청을 생성할 것을 필요로 한다. 요청이 링을 적절히 식별하지 않는 경우, 프로세스가 종료된다.Assuming that the requesting device has not yet been added to the ring, process 1200 determines (at 1215) whether the request properly identifies the ring. To join a ring, some embodiments require the requesting device to create a request that identifies members of the ring and/or other aspects of the ring. If the request does not properly identify the ring, the process ends.

다음으로, 프로세스는 (1220에서) 요청 디바이스가 링 내에서의 멤버십을 위한 모든 기준을 충족시키는지 여부를 판정한다. 기술된 바와 같이, 이는 요청에 서명하기 위해 키를 사용하는 것, 요청 디바이스의 속성들(그의 운영 체제, 디바이스의 타입 등)을 어서트하는 것, 또는 대역 외에서 링 멤버십의 요건을 검증하는 것에 의해 특정 암호화 키의 소유를 증명하는 것을 포함할 수 있다. 따라서, 요청 디바이스가 모든 기준을 충족시키는지 여부를 판정하는 동작은 대역 외 프로세스를 개시하는 것 또는 대역 외 프로세스가 요청 디바이스의 특정 기준을 확인하기 위해 이미 수행되었는지 여부를 판정하는 것을 수반할 수 있다. 요청 디바이스가 기준을 충족시키지 않는 경우, 프로세스가 종료된다(그리고 요청 디바이스가 링에 추가되지 않는다).Next, the process determines (at 1220) whether the requesting device meets all criteria for membership in the ring. As described, this is by using the key to sign the request, by asserting the properties of the requesting device (its operating system, type of device, etc.), or by verifying the requirements of ring membership out of band. It may include proving possession of a specific encryption key. Thus, determining whether the requesting device meets all criteria may involve initiating an out-of-band process or determining whether an out-of-band process has already been performed to verify the requesting device's specific criteria. . If the requesting device does not meet the criteria, the process ends (and the requesting device is not added to the ring).

마지막으로, 요청 디바이스가 이와 달리 링 멤버십에 대해 승인되는 경우, 프로세스는 (1225에서) 링이 사용자 승인을 필요로 하는지 여부를 판정한다. 이는, 그것이 요청 디바이스가 링 내에서 허용되기 위해 승인 디바이스 상의 사용자 액션을 필요로 한다는 점에서, 특정 타입의 링 기준이다. 어떠한 사용자 승인도 필요하지 않을 때, 프로세스는 하기에 기술되는 1240으로 진행하여, 요청 디바이스를 링에 추가한다.Finally, if the requesting device is otherwise approved for ring membership, the process determines (at 1225) whether the ring requires user approval. This is a specific type of ring criterion, in that it requires a user action on the granting device to allow the requesting device to be allowed in the ring. When no user authorization is required, the process proceeds to 1240, described below, to add the requesting device to the ring.

요청 디바이스의 사용자 승인이 링 멤버십에 필요할 때, 프로세스는 (1230에서) 로컬 디바이스(프로세스(1200)를 수행하는 디바이스) 상에 승인 프롬프트를 디스플레이한다. 이러한 프롬프트는 디바이스가 링에 조인하기 위한 멤버십을 요청하고 있다는 것을 단순히 나타낼 수 있거나, 또는 추가적인 콘텍스트를 제공할 수 있다. 예를 들어, 프롬프트는 디바이스의 이름(예컨대, 존의 아이폰), 디바이스의 타입, 링의 이름, 또는 요청이 유효한지 여부를 평가함에 있어서 사용자에게 도움이 되는 다른 정보를 나타낼 수 있다. 이어서, 프로세스는 사용자가 요청 디바이스를 링 내에서 허용할지 여부를 나타내기를 기다린다(도시되지 않음).When user approval of the requesting device is required for ring membership, the process (at 1230) displays an approval prompt on the local device (the device performing process 1200). Such a prompt may simply indicate that the device is requesting membership to join the ring, or it may provide additional context. For example, the prompt may indicate the name of the device (eg, John's iPhone), the type of device, the name of the ring, or other information that helps the user in evaluating whether the request is valid. The process then waits for the user to indicate whether or not to allow the requesting device in the ring (not shown).

일단 사용자가 프롬프트에 응답한다면, 프로세스(1200)는 (1235에서) 사용자가 요청 디바이스를 승인하였는지 여부를 판정한다. 사용자가 요청 디바이스를 승인하지 않을 때, 프로세스가 종료된다. 그러나, 사용자가 요청 디바이스를 승인할 때, 프로세스는 (1240에서) 요청 디바이스를 링에 추가한다. 일부 실시예들에서, (프로세스(1200)를 수행하는) 확립된 디바이스는 링의 모든 멤버들의 리스트를 이용하여 링의 모든 멤버들(요청 디바이스를 포함함)에게 메시지를 전송하는 것에 의해 요청 디바이스를 링에 추가한다. 일부 실시예들은 전송 디바이스의 개인 키로 이러한 메시지에 서명한다.Once the user responds to the prompt, process 1200 determines (at 1235) whether the user has approved the requesting device. When the user does not approve the requesting device, the process ends. However, when the user approves the requesting device, the process adds the requesting device to the ring (at 1240). In some embodiments, the established device (performing process 1200) sends the requesting device by sending a message to all members of the ring (including the requesting device) using a list of all members of the ring. Add it to the ring. Some embodiments sign such a message with the sending device's private key.

도 13은 4개의 스테이지들(1305 내지 1320)을 통해 링에 조인하도록 요청하고 제2 디바이스(1325)에 의해 승인되는 제1 디바이스(1300)를 개념적으로 도시한다. 제1 디바이스(1300)는, 스마트폰, 스마트워치, 태블릿, 랩톱 또는 데스크톱 컴퓨터 등과 같은, 링에 조인할 수 있는 임의의 타입의 전자 디바이스일 수 있다. 제1 디바이스(1300)에 대해, 이 도면은 제1 디바이스(1300)가 (제1 디바이스(D1)(1300)를 포함하는) 디바이스들의 그룹이 참여하는 다양한 링들에 관한 정보를 저장하는 제1 저장소(1330)를 포함하는 것을 도시한다. 제1 스테이지(1305)에 도시된 바와 같이, 이들은 멤버들로서 D2 및 D3을 갖는 제1 링, 멤버들로서 3개의 디바이스들 모두를 갖는 제2 링, 및 유일한 멤버로서 D2를 갖는 제3 링을 포함한다. 제1 디바이스(1300)는 또한 다른 디바이스들 및/또는 링들과 관련된 다양한 키들을 저장하는 제2 저장소(1335)를 포함한다. 이들은 디바이스(1300) 자체의 공개/개인 키 쌍뿐만 아니라, D2 및 D3에 대한 공개 키들을 포함한다.13 conceptually shows a first device 1300 requesting to join a ring through four stages 1305-1320 and being approved by a second device 1325. The first device 1300 may be any type of electronic device capable of joining a ring, such as a smartphone, smartwatch, tablet, laptop or desktop computer, and the like. For a first device 1300, this figure shows a first storage in which the first device 1300 stores information about the various rings in which a group of devices (including the first device D1) 1300 participates. Including 1330 is shown. As shown in the first stage 1305, these include a first ring with D2 and D3 as members, a second ring with all three devices as members, and a third ring with D2 as the only member. . The first device 1300 also includes a second storage 1335 that stores various keys associated with other devices and/or rings. These include the public keys for D2 and D3, as well as the public/private key pair of the device 1300 itself.

이러한 제1 스테이지(1305)에서, 기업 프로파일(1340)이 제1 디바이스(1300) 상에 설치된다. 제2 스테이지(1310)에 도시된 바와 같이, 기업 프로파일(1340)은 키 저장소(1335)에 저장되는 기업 키 쌍(또는 기업 키 쌍이 생성되는 시드 데이터)을 포함한다. 기업 프로파일(1340)은 또한 디바이스(1300) 상에 애플리케이션들, 다양한 보안 수단들 등의 설치를 포함할 수 있다.In this first stage 1305, the company profile 1340 is installed on the first device 1300. As shown in the second stage 1310, the company profile 1340 includes a company key pair (or seed data from which the company key pair is generated) stored in the key store 1335. The company profile 1340 may also include the installation of applications, various security measures, etc. on the device 1300.

제3 스테이지(1315)에서, 디바이스(1300)의 링 평가자(1345)는 디바이스가 제1 링에 조인하기 위한 크리덴셜들(즉, 기업 개인 키)을 현재 소유하고 있는 것으로 판정한다. 이와 같이, 링 평가자는 요청 서명자(1350)를 사용하여 요청을 생성한다. 일부 실시예들에서, 요청 서명자는 메시지 또는 다른 데이터 조각에 서명하기 위해 개인 키를 사용하는 암호화 디지털 서명 생성 함수이다. 이어서, 제1 디바이스(D1)(1300)는 요청(1355)을 제2 디바이스(D2)(1325)로 전송한다. 도시되지 않았지만, 일부 실시예들에서, 제1 디바이스(1300)는 또한 요청을 D3으로 전송한다.In a third stage 1315, the ring evaluator 1345 of the device 1300 determines that the device currently owns the credentials (ie, the corporate private key) for joining the first ring. As such, the ring evaluator uses the request signer 1350 to generate the request. In some embodiments, the request signer is a cryptographic digital signature generation function that uses a private key to sign a message or other piece of data. Subsequently, the first device (D1) 1300 transmits the request 1355 to the second device (D2) 1325. Although not shown, in some embodiments, the first device 1300 also sends a request to D3.

일부 실시예들에서, 요청(1355)은 도 11에 도시된 것과 같은 프로세스를 이용하여 제1 디바이스(1300)에 의해 생성된다. 구체적으로, 일부 실시예들에서, 디바이스(1300)는 (i) (다른 디바이스들과 이미 공유된) 그의 공개 키 및 링으로의 신청 날짜/시간에 암호화 시크릿으로부터 생성된 개인 키로 서명하고, (ii) 이러한 서명을 링에 조인하는 데 사용되는 그의 아이덴티티로 패키징하고, (iii) 아이덴티티에 그 자신의 개인 키로 서명한다. 도시된 바와 같이, 요청(1355)의 가장 중심부는 디바이스의 공개 키뿐만 아니라 제1 디바이스가 링에 신청하고 있는 시간을 포함한다. 이어서, 이러한 세트의 데이터(공개 키 + 신청 시간)는 링 특정 개인 키(즉, 기업 프로파일의 일부로서 디바이스(1300)에 의해 수신된 기업 키)로 서명된다. 디바이스 아이덴티티(또한 피어 정보로도 지칭됨)는 이러한 서명뿐만 아니라, 디바이스에 관한 다른 데이터(예컨대, 그의 이름, 하드웨어 특정 식별자, 및/또는 다른 데이터)를 포함한다. 이어서, 이러한 디바이스 아이덴티티는 디바이스(1300)의 개인 키로 서명되어, 그에 의해 요청이 사실상 제1 디바이스로부터 유래하고 있음을 인증한다.In some embodiments, the request 1355 is generated by the first device 1300 using a process such as that shown in FIG. 11. Specifically, in some embodiments, device 1300 (i) signs with its public key (already shared with other devices) and a private key generated from the encryption secret at the date/time of application to the ring, and ) Package these signatures with his identity used to join the ring, and (iii) sign the identity with his own private key. As shown, the most central part of request 1355 includes the time the first device is applying to the ring as well as the device's public key. This set of data (public key + application time) is then signed with a ring specific private key (ie, a corporate key received by device 1300 as part of a corporate profile). The device identity (also referred to as peer information) includes this signature, as well as other data about the device (eg, its name, hardware specific identifier, and/or other data). This device identity is then signed with the private key of the device 1300, thereby authenticating that the request is actually originating from the first device.

제4 스테이지(1320)에서, 제2 디바이스(1325)는 요청(1355)을 수신하고 요청을 검증한다. 제2 디바이스(1325)는 (이전에 공유된) 제1 디바이스의 공개 키뿐만 아니라 기업 공개 키(이 디바이스는 이미 기업 링에 있고, 그에 따라 기업 키 쌍을 저장한다)를 사용하는 서명 검증기(1360)를 사용한다. 서명 검증기(1360)가 요청이 제1 디바이스에 의해 적절히 서명되어 있는지를 검증하는 경우, 제2 디바이스(1325) 상의 링 평가자(1365)는 제1 디바이스(1300)를 제1 링에 추가한다. 이 도면에 도시되지 않았지만, 제2 디바이스(1325)는 3개의 디바이스들 모두가 제1 링의 멤버들임을 나타내는 메시지를 D1 및 D3 양측 모두로 전송한다. 일부 실시예들에서, 이러한 메시지는 제2 디바이스(1325)에 의해 서명된다.In the fourth stage 1320, the second device 1325 receives the request 1355 and verifies the request. The second device 1325 uses the public key of the first device (previously shared) as well as the signature verifier 1360 using the corporate public key (this device is already in the corporate ring and stores the corporate key pair accordingly). ) Is used. When the signature verifier 1360 verifies that the request is properly signed by the first device, the ring evaluator 1365 on the second device 1325 adds the first device 1300 to the first ring. Although not shown in this figure, the second device 1325 transmits a message to both D1 and D3 indicating that all three devices are members of the first ring. In some embodiments, this message is signed by the second device 1325.

도 13의 제1 디바이스에 의해 조인된 링은 기업 링 키의 소유를 증명하는 요청에 대한 서명만을 필요로 한다. 그러나, 언급된 바와 같이, 일부 경우들에서 링들은 추가적인 요건들을 또한 필요로 할 수 있다. 도 14는 동일한 디바이스(1300)가 시크릿 암호화 키의 소유뿐만 아니라 중앙 기관을 통한 디바이스 속성의 검증을 필요로 하는, 5개의 스테이지들(1405 내지 1425)을 통해 제3 링에 조인하는 것을 개념적으로 도시한다. 제1 스테이지(1405)에서, 디바이스(1300)는 제3 링에 대한 암호화 시크릿(1430)을 (예컨대, 사용자 입력, 다운로드 등을 통해) 수신한다. 그 결과, 제2 스테이지(1410)는 제1 디바이스(1300) 상의 키 저장소가 암호화 시크릿(1430)으로부터 생성된 공개/개인 키 쌍을 포함하는 것을 도시한다.The ring joined by the first device of FIG. 13 only needs to sign a request to prove possession of the corporate link key. However, as mentioned, in some cases rings may also require additional requirements. FIG. 14 conceptually shows that the same device 1300 joins the third ring through five stages 1405 to 1425, which require not only possession of a secret encryption key, but also verification of device properties through a central authority. do. In the first stage 1405, the device 1300 receives the encryption secret 1430 for the third ring (eg, through user input, download, etc.). As a result, the second stage 1410 shows that the key store on the first device 1300 contains a public/private key pair generated from the encryption secret 1430.

제3 스테이지에서, 제1 디바이스(1300)는 제1 링을 제2 디바이스(1325)에 조인하기 위해 서명된 요청(1435)을 전송한다. 이러한 경우, 제2 디바이스가 현재 링의 멤버인 유일한 디바이스이기 때문에, 제1 디바이스는 단지 요청을 제2 디바이스로만 전송한다. 일부 실시예들에서, 요청(1435)은 이전 도면에 도시된 요청(1355)과 동일한 방식으로 서명된다. 즉, 요청은 제1 디바이스의 공개 키와 함께 제1 링으로의 신청 시간을 포함하고, 암호화 시크릿(1430)으로부터 생성된 개인 키로 서명된다. 이어서, 이러한 정보는 디바이스 아이덴티티로 패키징되고, 그 디바이스 아이덴티티는 이어서 디바이스(1300)의 개인 키로 서명된다.In the third stage, the first device 1300 sends a signed request 1435 to join the first ring to the second device 1325. In this case, since the second device is the only device that is currently a member of the ring, the first device only sends the request to the second device. In some embodiments, request 1435 is signed in the same manner as request 1355 shown in the previous figure. That is, the request includes the time of application to the first ring along with the public key of the first device, and is signed with the private key generated from the encryption secret 1430. This information is then packaged with a device identity, which device identity is then signed with the private key of the device 1300.

제4 스테이지에서, 제1 디바이스를 제1 링 내에 수용하기 전에, 제2 디바이스(1325)는 제1 디바이스(1300)의 속성의 검증(1440)을 수신한다. 이러한 경우, 디바이스들은 중앙 기관(1445)을 이용하여 디바이스들 중 어느 하나에 의해 개시될 수 있는 프로세스를 통해 디바이스 속성을 검증한다. 중앙 기관(1445)은 디바이스가 진품인 것 또는 디바이스가 특정 운영 체제를 갖고 있는 것을 검증하는 디바이스의 제조자일 수 있다. 상기에 논의된 바와 같이, 대역 외 프로세스는, 다양한 실시예들에서, 중앙 기관보다는 사용자 액션들을 수반하거나, 또는 2개의 디바이스들 사이의 직접적인 정보 교환을 수반할 수 있다. 마지막으로, 제5 스테이지(1425)에서, 제2 디바이스(1325)는 이전 도면에서와 같이 요청을 검증하고 제1 링에 제1 디바이스(1300)를 추가한다.In a fourth stage, prior to accommodating the first device in the first ring, the second device 1325 receives a verification 1440 of the attributes of the first device 1300. In this case, the devices use the central authority 1445 to verify the device properties through a process that can be initiated by either of the devices. The central authority 1445 may be a manufacturer of a device that verifies that the device is genuine or that the device has a specific operating system. As discussed above, the out-of-band process, in various embodiments, may involve user actions rather than a central authority, or may involve a direct exchange of information between the two devices. Finally, in the fifth stage 1425, the second device 1325 verifies the request and adds the first device 1300 to the first ring as in the previous figure.

IV.IV. 동기화 프로세스Synchronization process

디바이스들이 링들(검증 목적들을 위한 서브그룹들) 내에 확립되면, 이들은 뷰들(동기화 목적들을 위한 서브그룹들) 내에 배열될 수 있다. 언급된 바와 같이, 일부 실시예들에서 링들은 디바이스들을 뷰들로 조직화하는 데 사용되고, 그 뷰들은 디바이스 상에 저장된 어느 데이터 아이템들이 다른 디바이스들과 동기화되어야 하는지를 판정하는 데 사용된다. 일부 실시예들에서, 뷰들은 (i) 디바이스가 뷰에 참여하기 위한 요건들의 세트 및 (ii) 뷰에 참여하는 디바이스들 사이에서 동기화되는 데이터 아이템의 타입에 의해 정의된다. 일부 실시예들에서, 뷰들에 대한 요건들의 세트는 (도 7 내지 도 9를 참조하여 상기에 나타낸 바와 같은) 하나 이상의 링들 내에서의 멤버십이다.Once devices are established in rings (subgroups for verification purposes), they can be arranged in views (subgroups for synchronization purposes). As mentioned, in some embodiments rings are used to organize devices into views, and the views are used to determine which data items stored on the device should be synchronized with other devices. In some embodiments, views are defined by (i) a set of requirements for a device to participate in the view and (ii) the type of data item that is synchronized between devices participating in the view. In some embodiments, the set of requirements for views is membership in one or more rings (as indicated above with reference to FIGS. 7-9).

뷰들은 관련 디바이스들의 세트가 데이터 아이템들을 서로 동기화시키는 것을 가능하게 하는 데 사용된다. 다양한 실시예들에서, 이러한 동기화된 데이터 아이템들은 온라인 계정들(예컨대, 금융 서비스 웹사이트들, 온라인 포럼 사이트들, 미디어 콘텐츠 제공자들, 온라인 소매 사이트들 등)에 대한 사용자명들 및 패스워드들, 암호화 키들 및/또는 시크릿들(즉, 키들이 생성될 수 있는 데이터), 중앙 서버 상에 저장된 애플리케이션 관련 데이터로의 액세스를 허용하는 애플리케이션 특정 서비스 키들, 네트워크(예컨대, Wi-Fi 네트워크) 패스워드들, 노트들, 사진들, 문서들 및 다른 파일들 등 중의 일부 또는 전부를 포함한다.Views are used to enable a set of related devices to synchronize data items with each other. In various embodiments, these synchronized data items include usernames and passwords, encryption for online accounts (e.g., financial services websites, online forum sites, media content providers, online retail sites, etc.) Keys and/or secrets (i.e. data from which keys can be generated), application specific service keys that allow access to application-related data stored on a central server, network (e.g., Wi-Fi network) passwords, notes Includes some or all of the files, photos, documents, and other files.

도 15는 제1 디바이스로부터의 키체인 데이터를 제2 디바이스와 동기화시키기 위한 일부 실시예들의 프로세스(1500)를 개념적으로 도시한다. 이러한 경우, 프로세스는 제1 및 제2 디바이스들 사이의 특정 보안 채널에 대한 동기화 프로세스를 수행하고, 그 특정 보안 채널은 디바이스들 사이의 유일한 보안 채널이거나 또는 디바이스들 사이의 여러 개의 보안 채널들 중 하나일 수 있다. 이러한 프로세스가 특정 보안 채널을 통해 모든 뷰들에 대한 동기화를 수행하지만, 다른 실시예들은 특정 뷰에 대한 모든 디바이스들, 또는 특정 디바이스에 대한 (채널과 관계없는) 모든 뷰들에 대한 동기화를 (한 번에) 수행하는 프로세스들을 사용할 수 있다.15 conceptually illustrates a process 1500 of some embodiments for synchronizing keychain data from a first device with a second device. In this case, the process performs a synchronization process for a specific secure channel between the first and second devices, and the specific secure channel is the only secure channel between devices or one of several secure channels between devices. Can be While this process performs synchronization for all views over a specific secure channel, other embodiments synchronize (at once) all devices for a specific view, or all views (regardless of channel) for a specific device. ) You can use the processes you perform.

도시된 바와 같이, 프로세스(1500)는 (1505에서) 특정 채널을 통해 특정 원격 디바이스에 대한 데이터를 동기화하라는 커맨드를 수신하는 것으로 시작한다. 일부 실시예들에서, 프로세스는 제2 원격 디바이스와 함께 적어도 하나의 뷰에 참여하는 제1 디바이스 상에서 수행된다. 제1 디바이스는 데이터 아이템들을 주기적으로 제2 디바이스와 동기화시킬 수 있거나, 사용자 커맨드들에 기초하여 데이터 아이템들을 동기화시킬 수 있거나, 또는 제1 디바이스가 새로운 데이터 아이템을 수신하고 (데이터 아이템들이 속하는 뷰들의 세트에 기초하여) 데이터 아이템이 제2 디바이스와 동기화되어야 하는 것으로 판정할 때마다 데이터 아이템들을 동기화시킬 수 있다.As shown, process 1500 begins (at 1505) by receiving a command to synchronize data for a particular remote device over a particular channel. In some embodiments, the process is performed on a first device participating in at least one view with a second remote device. The first device may periodically synchronize the data items with the second device, may synchronize the data items based on user commands, or the first device receives a new data item and The data items may be synchronized whenever it is determined that the data item should be synchronized with the second device (based on the set).

일부 실시예들에서, 디바이스들의 전체 그룹 내의 디바이스들의 각각의 쌍은 데이터 아이템들을 동기화시키는 데 사용하기 위해 이들 자신들 사이에 (예컨대, 오프-더-레코드(OTR) 메시징 프로토콜을 이용하여) 보안 채널을 생성한다. 일부 실시예들에서, 뷰들이 보안 채널에 대한 임의의 추가적인 요건들을 부과하지 않는 한, 제1 디바이스는 양측 모두의 디바이스들이 참여하는 모든 뷰들에 대한 식별된 동기화 데이터 아이템들을 보안 채널을 통해 제2 디바이스로 전송한다. 뷰가 보안 채널에 추가적인 요건들을 부과할 때(예컨대, 검증 서브그룹 내에서의 멤버십에 필요한 암호화 키로 데이터 아이템들을 암호화하는 것), 제1 디바이스는 다수의 상이한 보안 채널들을 사용하여 데이터 아이템들의 세트를 제2 디바이스와 동기화시킬 수 있다. 이러한 경우, 일부 실시예들에서 프로세스(1500)는 각각의 채널에 대해 별개로 수행된다.In some embodiments, each pair of devices within the entire group of devices establish a secure channel between themselves (e.g., using an off-the-record (OTR) messaging protocol) for use in synchronizing data items. Generate. In some embodiments, unless the views impose any additional requirements on the secure channel, the first device sends the identified synchronization data items for all views to which both devices participate through the secure channel to the second device. Transfer to. When a view imposes additional requirements on a secure channel (e.g., encrypting data items with an encryption key required for membership within a verification subgroup), the first device uses a number of different secure channels to create a set of data items. It can be synchronized with the second device. In this case, in some embodiments process 1500 is performed separately for each channel.

다음으로, 프로세스는 (1510에서) 양측 모두의 디바이스들(동기화를 수행하는 로컬 디바이스 및 데이터가 동기화될 디바이스)이 참여하는 뷰들의 세트를 식별한다. 일부 실시예들에서, 디바이스 내의 뷰 평가자 모듈은 원격 디바이스가 멤버인 링들에 기초하여, 원격 디바이스가 참여하는 뷰들의 세트를 생성한다. 상기에 논의된 바와 같이, 각각의 디바이스는 그룹 내의 각각의 다른 디바이스가 멤버인 링들을 추적하여, 데이터가 뷰들을 판정하는 데 사용될 수 있게 한다. 유사하게, 디바이스는, 그 자신의 링 멤버십들에 기초하여, 그것이 어느 뷰들에 참여하는지를 알고 있다.Next, the process (at 1510) identifies the set of views to which devices of both sides (the local device performing the synchronization and the device to which the data will be synchronized) participate. In some embodiments, the view evaluator module in the device generates a set of views in which the remote device participates, based on rings in which the remote device is a member. As discussed above, each device tracks the rings in which each other device in the group is a member, so that data can be used to determine views. Similarly, the device knows which views it participates in, based on its own ring memberships.

프로세스(1500)는 (1515에서) 식별된 세트에서의 임의의 뷰(양측 모두의 디바이스들이 참여하는 뷰들)에 대해 태깅되고 이전에 원격 디바이스와 동기화되지 않았던 새로운 동기화 데이터 아이템들을 식별한다. 디바이스는 그의 키체인의 일부이고 원격 디바이스가 또한 참여하는 적어도 하나의 뷰에 속하는 데이터(즉, 그것이 멤버인 뷰들에 속하는 데이터)를 단지 동기화시킨다. 제1 디바이스가 (예컨대, 새로운 패스워드의 사용자 입력, 새로운 사진의 임포트 또는 다운로드 등으로부터) 동기화 데이터 아이템들의 세트에 추가할 새로운 데이터 아이템을 수신할 때, 일부 실시예들의 디바이스는 데이터를 하나 이상의 뷰들에 속하는 것으로서 동적으로 태깅한다. 예를 들어, 데이터가 내부에 생성된 애플리케이션(예컨대, Wi-Fi 네트워크들/패스워드들 대 온라인 계정 사용자명들/패스워드들), 사용자명/계정이 액세스를 얻는 웹사이트의 타입(예컨대, 금융 웹사이트 대 비금융 웹사이트), 데이터가 기업과 관련되는지 아닌지의 여부 등에 기초하여 데이터가 태깅될 수 있다. 데이터 아이템들을 원격 디바이스와 동기화시킬 때, 제1 디바이스는 그것이 저장하고 제2 디바이스로 아직 전송되지 않은(그리고 제2 디바이스가 참여하는 뷰들에 속하는) 모든 동기화 데이터 아이템들을 식별한다.Process 1500 identifies new synchronization data items that have been tagged for any view (views in which both devices participate) in the identified set (at 1515) and have not previously been synchronized with the remote device. The device is part of its keychain and only synchronizes data belonging to at least one view to which the remote device also participates (i.e. data belonging to the views it is a member of). When the first device receives a new data item to add to the set of synchronization data items (e.g., from a user input of a new password, import or download of a new photo, etc.), the device of some embodiments may transfer the data to one or more views. Dynamically tagged as belonging. For example, the application for which data was created internally (e.g., Wi-Fi networks/passwords vs. online account usernames/passwords), username/type of website to which the account gains access (e.g., financial web Site vs. non-financial websites), data can be tagged based on whether the data is relevant to the company or not. When synchronizing data items with a remote device, the first device identifies all synchronization data items it stores and has not yet transferred to the second device (and belongs to the views to which the second device participates).

식별된 데이터 아이템들로, 프로세스(1500)는 (1520에서) 이러한 새로운 데이터 아이템들이 로컬 디바이스 상에 저장될 때 이들을 암호화해제한다. 일부 실시예들에서, 암호화해제 프로세스는 로컬 디바이스의 개인 키, 즉, 그 디바이스에게만 알려져 있는 키를 사용한다. 일부 실시예들에서, 데이터 아이템들은 디바이스 공개 키를 사용하여 암호화된 암호화 형태로 디바이스 상에 저장된다. 일부 실시예들은 또한 링에 조인하는 데 사용되는 키 쌍(예컨대, 사용자 패스워드 기반 키 쌍, 기업 키 쌍 등)의 공개 키와 같이 디바이스 상의 저장을 위한 하나 이상의 추가적인 키들로 데이터 아이템들을 암호화한다. 디바이스 상의 저장을 위해 데이터 아이템을 암호화하는 데 사용되는 각각의 공개 키에 대해, 프로세스는 대응하는 개인 키를 사용하여 데이터 아이템을 암호화해제한다.With the identified data items, process 1500 (at 1520) decrypts these new data items as they are stored on the local device. In some embodiments, the decryption process uses the private key of the local device, ie, a key known only to that device. In some embodiments, data items are stored on the device in an encrypted form encrypted using the device public key. Some embodiments also encrypt data items with one or more additional keys for storage on the device, such as the public key of the key pair (eg, user password based key pair, corporate key pair, etc.) used to join the ring. For each public key used to encrypt the data item for storage on the device, the process decrypts the data item using the corresponding private key.

다음으로, 프로세스는 (1525에서) 아이템들이 전송될 보안 채널의 요건들에 따라 원격 디바이스로의 전송을 위해 데이터 아이템들을 암호화한다. 언급된 바와 같이, 일부 실시예들은 디바이스들 사이의 메시지들을 암호화하는 데 사용되는 공유 키에 의존하는 패스워드 인증 키 교환(PAKE)을 사용한다. 일부 경우들에서, 특정 뷰에 대한 뷰 요건들은, 추가적인 키(예컨대, 링에 조인하기 위해 소유가 요구되는 키, 특정 뷰에 대한 요건인 멤버십)를 사용하는 것과 같은, 특정 뷰에 속하는 데이터 아이템들을 동기화시키기 위한 보안 채널에 대한 추가적인 제한들을 부과할 수 있다. 따라서, 일부 실시예들은 적어도 공유 키로, 그리고 가능하다면 추가적인 키들로 데이터 아이템들을 암호화한다.Next, the process encrypts the data items for transmission to the remote device according to the requirements of the secure channel to which the items will be transmitted (at 1525). As mentioned, some embodiments use a password authentication key exchange (PAKE) that relies on a shared key used to encrypt messages between devices. In some cases, the view requirements for a particular view include data items belonging to a particular view, such as using an additional key (e.g., a key that needs to be owned to join a ring, membership that is a requirement for a particular view). Additional restrictions can be imposed on the secure channel for synchronization. Thus, some embodiments encrypt data items at least with a shared key, and possibly additional keys.

마지막으로, 프로세스는 (1530에서) 디바이스들 사이의 보안 채널에 걸쳐 뷰에 대한 암호화된 아이템들을 원격 디바이스로 전송한다. 상이한 실시예들에서, 이러한 보안 채널은 수신 디바이스가 잠금해제될 때에도 일시적인 저장을 허용하는 중앙집중형 서비스(예컨대, 양측 모두의 디바이스들이 로그인되는 클라우드 서비스 계정을 위한 저장소)를 통과시킬 수 있다. 그러나, 일부 실시예들에서, 보안 채널의 사용은 중간자 공격들에 대해 이러한 통신들을 보호한다. 다른 실시예들은 (예컨대, 블루투스 접속을 통해) 직접 피어-투-피어 접속들을 사용한다. 암호화된 아이템들의 수신 시에, 일부 실시예들에서 원격 디바이스는 (채널 상에서 암호화된 바와 같은) 아이템들을 암호화해제하고, 그 자신의 공개 키를 사용하여 로컬 저장을 위해 이들을 재암호화한다. 일부 실시예들에서, 원격 디바이스는 또한 프로세스(1500)와 유사한 프로세스를 수행하여 그의 새로운 데이터 아이템들 중 임의의 것을 로컬 디바이스와 동기화시킨다.Finally, the process sends (at 1530) encrypted items for the view to the remote device over a secure channel between devices. In different embodiments, this secure channel may pass through a centralized service that allows temporary storage even when the receiving device is unlocked (eg, storage for a cloud service account to which devices on both sides are logged in). However, in some embodiments, the use of a secure channel protects these communications against man-in-the-middle attacks. Other embodiments use direct peer-to-peer connections (eg, via a Bluetooth connection). Upon receipt of encrypted items, in some embodiments the remote device decrypts the items (as encrypted on the channel) and re-encrypts them for local storage using its own public key. In some embodiments, the remote device also performs a process similar to process 1500 to synchronize any of its new data items with the local device.

도 16 및 도 17은 데이터를 서로 동기화시키는 한 쌍의 디바이스들(1600, 1650)을 개념적으로 도시한다. 구체적으로, 도 16은, 2개의 스테이지들(1605, 1610)을 통한, 제1 디바이스(1600)에 의한 동기화를 위한 새로운 데이터 아이템의 수신을 도시한다. 제1 스테이지(1605)는 2개의 디바이스들(1600, 1650) 각각에 의해 저장된 아이템들을 도시한다. 이러한 예에서, 제1 디바이스(1600)는 뷰들(V1, V2)에 참여하는 한편, 제2 디바이스(1650)는 뷰들(V1, V3)에 참여한다. 도시된 바와 같이, 제1 디바이스는 아이템 1(1615), 아이템 2(1620), 및 아이템 3(1625)을 저장한다. 2개의 제1 아이템들(1615, 1620)은 제1 뷰(V1)에 속하는 한편, 제3 아이템(1625)은 제2 뷰(V3)에 속하고, 데이터 아이템들이 그에 따라 태깅된다. 제2 디바이스는 아이템 1(1615), 아이템 2(1620), 및 아이템 4(1630)를 저장한다. 제4 아이템(1630)은 V3에 속하는데, 이는 이러한 아이템이 제2 디바이스(1650) 상에만 저장되는 이유이다. 마지막으로, 이러한 스테이지는 상이한 키들에 의한 데이터 아이템들의 암호화를 표현하기 위해 이러한 그리고 후속 도면들에서 사용되는 표현들을 나타내는 범례를 도시한다. 제1 디바이스(1600) 상에 저장된 아이템들은 제1 디바이스의 키로 암호화되는 한편, 제2 디바이스(1650) 상에 저장된 아이템들은 제2 디바이스의 키로 암호화된다.16 and 17 conceptually illustrate a pair of devices 1600 and 1650 that synchronize data with each other. Specifically, FIG. 16 shows the reception of a new data item for synchronization by the first device 1600 through two stages 1605 and 1610. The first stage 1605 shows items stored by each of the two devices 1600 and 1650. In this example, the first device 1600 participates in the views V1 and V2, while the second device 1650 participates in the views V1 and V3. As shown, the first device stores item 1 (1615), item 2 (1620), and item 3 (1625). The two first items 1615 and 1620 belong to the first view V1, while the third item 1625 belongs to the second view V3, and data items are tagged accordingly. The second device stores item 1 (1615), item 2 (1620), and item 4 (1630). The fourth item 1630 belongs to V3, which is why this item is stored only on the second device 1650. Finally, this stage shows a legend representing the representations used in these and subsequent figures to represent the encryption of data items by different keys. Items stored on the first device 1600 are encrypted with the key of the first device, while items stored on the second device 1650 are encrypted with the key of the second device.

제2 스테이지에서, 제1 디바이스(1600)의 사용자(이 사용자는 또한 제2 디바이스(1650)의 사용자이고, 그에 따라 디바이스들은 데이터를 서로 동기화시킨다)는 애플리케이션(1640)을 통해 데이터 아이템 5(1635)를 디바이스에 제공한다. 이는 사용자가 패스워드를 입력하게 하는 웹 브라우저 애플리케이션, 패스워드를 사용하는 제3자 애플리케이션, 사용자가 새로운 파일을 생성하게 하는 애플리케이션(예컨대, 워드 프로세싱 애플리케이션을 통한 문서, 카메라 애플리케이션을 통해 캡처된 이미지 등), 또는 디바이스(1600)가 데이터를 수신하게 하는 다른 애플리케이션일 수 있다.In the second stage, the user of the first device 1600 (this user is also a user of the second device 1650, and the devices thus synchronize data with each other) are sent via the application 1640 to data item 5 1635. ) To the device. These include web browser applications that allow users to enter passwords, third-party applications that use passwords, applications that allow users to create new files (e.g., documents through word processing applications, images captured through camera applications, etc.), Or it could be another application that allows the device 1600 to receive data.

이러한 제5 데이터 아이템(1635)은 제1 디바이스(1600) 상의 데이터 태거(1645)로 전송되고, 그 데이터 태거는 데이터 아이템을 제1 뷰(V1)에 속하는 것으로서 식별하고, 아이템을 그에 따라 태깅한다. 이는 아이템이 수신되게 한 애플리케이션(1640), 또는 데이터 아이템을 식별하는 다른 데이터(그의 파일 타입, 그것이 연관된 웹 도메인 등)에 기인할 수 있다. 아이템은 또한 (예컨대, RSA, DSS, 타원 곡선 암호화 등과 같은 비대칭 암호화를 수행하는) 암호화 함수(1655)로 전송된다. 암호화 함수(1655)는 제1 디바이스(도시되지 않음)의 공개 키를 사용하여 저장을 위해 데이터 아이템(1635)을 암호화한다. 일부 실시예들에서, 이 도면에 도시된 바와 같이, 이러한 정보가 민감하지 않고 디바이스가 뷰 데이터에 액세스하기 위해 암호화해제가 요구되어서는 안 되기 때문에, 뷰 정보는 암호화되지 않는다.This fifth data item 1635 is transmitted to the data tagger 1645 on the first device 1600, the data tagger identifies the data item as belonging to the first view V1, and tags the item accordingly. . This may be due to the application 1640 that caused the item to be received, or other data that identifies the data item (its file type, the web domain it is associated with, etc.). The item is also sent to an encryption function 1655 (e.g., performing asymmetric encryption such as RSA, DSS, elliptic curve encryption, etc.). The encryption function 1655 encrypts the data item 1635 for storage using the public key of the first device (not shown). In some embodiments, as shown in this figure, the view information is not encrypted because this information is not sensitive and the device should not be required to decrypt the view data to access the view data.

도 17은 3개의 스테이지들(1705 내지 1715)을 통한 제1 디바이스(1600)로부터의 새로운 데이터 아이템(1635)의 제2 디바이스(1650)와의 동기화를 도시한다. 제1 스테이지(1705)에 도시된 바와 같이, 제1 디바이스(1600) 상의 뷰 평가자 모듈(1720)은 동기화 엔진(1725)에게 데이터를 제2 디바이스와 동기화시키도록 통지한다. 디바이스들의 뷰들로의 맵핑은, V1이 디바이스들 양측 모두가 참여하는 유일한 뷰인 것을, 그리고 그에 따라 V1에 속하는 것으로서 태깅된 데이터 아이템들만이 디바이스들 사이에서 동기화되어야 함을 나타낸다.FIG. 17 shows the synchronization of a new data item 1635 from the first device 1600 with the second device 1650 through three stages 1705-1715. As shown in the first stage 1705, the view evaluator module 1720 on the first device 1600 notifies the synchronization engine 1725 to synchronize the data with the second device. The mapping of devices to views indicates that V1 is the only view in which both devices participate, and thus only data items tagged as belonging to V1 should be synchronized between devices.

따라서, 제2 스테이지(1710)에서, 제1 디바이스(1600)는 새로운 데이터 아이템(1635)을 제2 디바이스(1650)로 전송한다. 이 도면에서 새로운 데이터 아이템(1635)의 표현에 대해 여러 파선 및 점선으로 도시된 바와 같이, 제1 디바이스는 그 자신의 개인 키(및 잠재적으로 필요한 임의의 다른 키)를 사용하여 저장된 데이터 아이템을 암호화해제하고, 이어서 디바이스들 사이의 보안 채널에 대해 공유 키를 사용하여 데이터 아이템의 평문 버전을 암호화한다. 이어서, 제1 디바이스(1600) 상의 동기화 엔진(1725)은 보안 채널에 걸쳐 암호화된 데이터 아이템(1635)을 전송하는데, 여기서 그것은 제2 디바이스(1650) 상의 동기화 엔진(1730)에 의해 수신된다. 일부 실시예들에서, 보안 채널의 요건으로서, 데이터 아이템(1635) 상의 뷰 태그는 또한 공유 키를 사용하여 암호화된다. 언급된 바와 같이, 2개의 디바이스들(1600, 1650) 사이의 직접 접속으로서 도시되었지만, 일부 실시예들에서, 데이터 아이템(1635)은 제1 디바이스(1600)에 의해 중앙 리포지토리(예컨대, 클라우드 저장소)로 전송되고, 그에 후속하여 제2 디바이스(1650)에 의해 리포지토리로부터 인출된다.Thus, in the second stage 1710, the first device 1600 transmits the new data item 1635 to the second device 1650. As shown by several dashed and dashed lines for the representation of the new data item 1635 in this figure, the first device encrypts the stored data item using its own private key (and potentially any other key required). Release, and then encrypt the plaintext version of the data item using the shared key over the secure channel between the devices. The synchronization engine 1725 on the first device 1600 then transmits the encrypted data item 1635 over a secure channel, where it is received by the synchronization engine 1730 on the second device 1650. In some embodiments, as a requirement of a secure channel, the view tag on data item 1635 is also encrypted using a shared key. As mentioned, although shown as a direct connection between two devices 1600, 1650, in some embodiments, data item 1635 is a central repository (e.g., cloud storage) by first device 1600 And subsequently fetched from the repository by the second device 1650.

제3 스테이지(1715)는 데이터 아이템(1635)을 저장하는 제2 디바이스(1650)를 도시한다. 데이터 아이템을 수신한 후에, 디바이스(1650)는 보안 채널의 공유 키(및 V1에 대한 채널 요건들에 따라, 필요한 임의의 다른 키들)를 사용하여 아이템을 암호화해제하고, 이어서 그 자신의 공개 키(그리고 가능하다면 추가적인 암호화 키들)를 사용하여 저장을 위해 키를 암호화한다.The third stage 1715 shows a second device 1650 that stores a data item 1635. After receiving the data item, the device 1650 decrypts the item using the secure channel's shared key (and any other keys required, depending on the channel requirements for V1), and then its own public key ( And, if possible, use additional encryption keys) to encrypt the key for storage.

언급된 바와 같이, 상이한 실시예들에서 동기화 데이터 아이템들은 패스워드/사용자명 조합들, Wi-Fi 네트워크들 및 대응하는 패스워드들, 암호화 키들, 파일들 등을 포함하는 여러 상이한 타입들의 아이템들을 포함할 수 있다. 일부 실시예들에서, 데이터 아이템들은 내포된 키들의 계층 구조를 통해 클라우드 서비스에 저장된 애플리케이션 관련 데이터로의 액세스를 가능하게 하는 애플리케이션 특정 키들을 포함한다. 즉, 디바이스 상의 각각의 애플리케이션(또는 디바이스 상의 애플리케이션들의 서브세트 각각)에 대해, 동기화 데이터는 애플리케이션 특정 개인 키(예컨대, 사진 애플리케이션 키)를 포함한다.As mentioned, in different embodiments synchronization data items may include several different types of items including password/username combinations, Wi-Fi networks and corresponding passwords, encryption keys, files, etc. have. In some embodiments, the data items include application specific keys that enable access to application related data stored in the cloud service through a hierarchy of nested keys. That is, for each application on the device (or each subset of applications on the device), the synchronization data includes an application specific private key (eg, photo application key).

애플리케이션 특정 개인 키가 키들 및 데이터 필드들의 트리에 저장된 데이터에 액세스하는 데 사용되고, 이는 궁극적으로 애플리케이션 데이터 자체로의 액세스를 허용한다. 이러한 보호 구조체는 도 18 및 도 19에 도시된다. 도 18은 일부 실시예들에서 중앙집중형 리포지토리(예컨대, 클라우드 저장소)에 저장되고 디바이스가 다운로드하는 것이 가능한 컨테이너 구조체(1800)를 도시한다. 컨테이너 구조체(1800)는 그 자신의 개인 키(1805)(또는 개인 키를 생성하는 데 사용되는 시드 데이터)를 포함하여 애플리케이션 특정 공개 키로 암호화된다. 따라서, 이러한 컨테이너 개인 키로의 액세스는 키체인 데이터 아이템으로서 동기화되는 애플리케이션 특정 개인 키의 소유를 필요로 한다. 애플리케이션의 하이 레벨 오버뷰를 표현하는 컨테이너 구조체(1800)는, 액세스하기 위해 어떠한 키들도 필요로 하지 않는 암호화되지 않은 필드들(1810)(Field_1 내지 Field_M)의 세트뿐만 아니라, 컨테이너 공개 키(1805)로 각각 암호화되는(그리고 그에 따라 액세스를 위해 컨테이너 개인 키의 소유를 필요로 하는) 필드들(1815)(Field_M+1 내지 Field_N)의 세트 양측 모두를 포함한다.An application specific private key is used to access the data stored in the tree of keys and data fields, which ultimately allows access to the application data itself. This protective structure is shown in FIGS. 18 and 19. FIG. 18 shows a container structure 1800 stored in a centralized repository (eg, cloud storage) and capable of being downloaded by a device in some embodiments. The container structure 1800 is encrypted with an application specific public key, including its own private key 1805 (or seed data used to generate the private key). Thus, access to these container private keys requires possession of an application specific private key that is synchronized as a keychain data item. The container structure 1800 representing a high-level overview of the application is a container public key 1805, as well as a set of unencrypted fields 1810 (Field_1 to Field_M) that do not require any keys to access. Each contains both sides of the set of fields 1815 (Field_M+1 through Field_N) that are encrypted (and therefore require possession of the container private key for access).

또한, 컨테이너 공개 키는 구역 구조체(zone structure)(1900)의 일부인 구역 개인 키(1905)를 암호화하는 데 사용된다. 따라서, 구역 구조체로의 액세스는 컨테이너 개인 키(1805)로의 액세스를 필요로 하고, 이는 차례로 애플리케이션 특정 서비스 키로의 액세스를 필요로 한다. 컨테이너 구조체(1800)와 마찬가지로, 구역 구조체(1900)는 여러 개의 암호화되지 않은 필드들(1910)(Field_1 내지 Field_Q), 및 구역 키로 암호화된 여러 개의 필드들(1915)(Field_Q+1 내지 Field_R)을 포함한다. 컨테이너가 애플리케이션의 하이 레벨 오버뷰를 표현하지만, 일부 실시예들에서 구역은 컨테이너 내의 특정 데이터베이스 또는 테이블을 표현한다. 예를 들어, 구역은 애플리케이션과 연관된 사진들의 세트를 표현할 수 있는데, 이때 각각의 사진은 레코드에 의해 표현된다(그리고 레코드들은 구역에 의해 표시된다).In addition, the container public key is used to encrypt the zone private key 1905 which is part of the zone structure 1900. Thus, access to the zone structure requires access to the container private key 1805, which in turn requires access to the application specific service key. Like the container structure 1800, the zone structure 1900 includes several unencrypted fields 1910 (Field_1 to Field_Q), and several fields 1915 encrypted with a zone key (Field_Q+1 to Field_R) Include. While the container represents a high level overview of the application, in some embodiments the zone represents a specific database or table within the container. For example, a zone may represent a set of photos associated with an application, where each photo is represented by a record (and records are represented by a zone).

일부 실시예들에서, 구역에 의해 참조되는 레코드들 각각은 애플리케이션 데이터의 특정 조각(예컨대, 특정 사진)에 대한 키를 포함할 수 있다. 일부 실시예들에서, 각각의 레코드는 그의 구역 공개 키로 암호화된 키를 가지며, 그에 따라 액세스하기 위해 구역 개인 키를 필요로 한다. 레코드는 암호화되지 않은 필드들 및 암호화된 필드들을 갖는 구역 및 컨테이너처럼 구조화된다. 예를 들어, 사진 레코드에 대한 필드들은 사진에 대한 제목, 위치, 타임스탬프 등뿐만 아니라, 실제로 사진을 잠금해제하는 키를 저장할 수 있다. 일부 실시예들에서, 구역 키에 의해 잠금해제된 레코드 키는 공개/개인 키 쌍의 개인 키보다는 대칭 키이다.In some embodiments, each of the records referenced by a zone may include a key for a specific piece of application data (eg, a specific photo). In some embodiments, each record has a key encrypted with its zone public key, thus requiring a zone private key to access. Records are structured like zones and containers with unencrypted fields and encrypted fields. For example, fields for a photo record may store a title, location, timestamp, etc. for the photo, as well as a key to actually unlock the photo. In some embodiments, the record key unlocked by the zone key is a symmetric key rather than the private key of the public/private key pair.

동기화 프로세스를 통해 공유되는 것에 더하여, 미국 가특허 출원들 제62/168,894호 및 제62/172,128호뿐만 아니라, 미국 특허 출원 제14/871,498호 및 미국 특허 공개 제2014/0093084호에 기술된 바와 같이, 일부 실시예들에서는 보안 에스크로 시스템(secure escrow system)을 통해 애플리케이션 특정 키체인 데이터 아이템들이 복구가능하다.In addition to being shared through the synchronization process, as described in U.S. Provisional Patent Applications 62/168,894 and 62/172,128, as well as U.S. Patent Application Nos. 14/871,498 and U.S. Patent Publication No. 2014/0093084. In some embodiments, application-specific keychain data items may be recovered through a secure escrow system.

V.V. 그룹 멤버십에 대한 동적 변경들Dynamic changes to group membership

도 2 내지 도 6에 도시된 바와 같이, 일부 실시예들에서, 디바이스들은 다수의 링들의 멤버들일 수 있다. 또한, 디바이스들은 디바이스들이 새롭게 요건들을 충족시키게 되도록 또는 더 이상 다양한 링들의 요건들을 충족시키지 않도록 디바이스들의 속성들이 변경될 때 이러한 링들 안팎으로 동적으로 이동할 수 있다. 디바이스의 속성들이 변경되어(예컨대, 특정 암호화 시크릿을 포함하는 프로파일이 디바이스 상에 설치되는 것, 사용자가 디바이스 패스코드 길이를 변경하는 것 또는 패스코드를 디바이스에 추가하는 것 등) 디바이스가 링에 대해 적격하게 될 때, 디바이스는, 전술된 바와 같이, 링 내에서의 멤버십을 위한 요청을 생성 및 전송한다. 다른 한편으로, 디바이스의 속성들이 변경되어 디바이스가 현재 멤버인 링 내에서의 멤버십을 위한 요건들을 디바이스가 더 이상 충족시키지 못할 때, 디바이스는 그것이 더 이상 링의 멤버이어서는 안 된다는 것을 검출하고, 이러한 통지를 링의 멤버들인 다른 디바이스들로 송신한다.2-6, in some embodiments, devices may be members of multiple rings. In addition, devices can move dynamically in and out of these rings as the properties of the devices change so that the devices are newly meeting the requirements or no longer meet the requirements of the various rings. The properties of the device are changed (e.g., a profile containing a specific encryption secret is installed on the device, the user changes the device passcode length, or adds the passcode to the device, etc.) When eligible, the device generates and sends a request for membership in the ring, as described above. On the other hand, when the device's properties change so that the device no longer meets the requirements for membership in the ring in which the device is currently a member, the device detects that it should no longer be a member of the ring, and this Send notifications to other devices that are members of the ring.

링에 조인하거나 그를 이탈하는 디바이스는 하나 이상의 뷰들에의 디바이스의 참여에도 또한 영향을 미칠 수 있다. 예를 들어, 디바이스가 링에 조인할 때, 그 디바이스는 새로운 뷰에 현재 참여하는 것이 가능할 수 있고, 그에 따라 그 새로운 뷰에 속하는 데이터를 (동기화 프로세스를 통해) 수신해야 한다. 다른 한편으로, 디바이스가 링을 이탈할 때, 디바이스가 더 이상 멤버가 아닌 특정 링 내에서의 멤버십을 필요로 하는 하나 이상의 뷰들에 디바이스가 참여하는 것이 더 이상 허용되지 않을 수도 있다. 이는 특정 디바이스와 연관된 다른 디바이스들에 의해 인식될 것이고, 그 다른 디바이스들은 이러한 영향받는 뷰들에 속하는 데이터를 특정 디바이스와 더 이상 공유하지 않을 것이다. 또한, 일부 실시예들에서, 특정 디바이스는 그것이 더 이상 자격이 부여되지 않은 모든 데이터 아이템들을 삭제할 것이다. 다른 실시예에서, 디바이스가 더 이상 뷰에 대한 새로운 데이터를 수신하지 않더라도, 사용자가 디바이스 상에서 데이터를 유지하기를 원할 경우에, 디바이스는 임의의 데이터를 삭제하기 전에 사용자에게 문의한다.A device joining or leaving the ring may also affect the device's participation in one or more views. For example, when a device joins the ring, the device may be currently able to participate in a new view, and therefore must receive (via a synchronization process) data pertaining to that new view. On the other hand, when the device leaves the ring, the device may no longer be allowed to participate in one or more views that require membership within a particular ring in which the device is no longer a member. This will be recognized by other devices associated with the particular device, and those other devices will no longer share data pertaining to these affected views with the particular device. Also, in some embodiments, a particular device will delete all data items for which it is no longer entitled. In another embodiment, if the user wants to keep the data on the device even if the device no longer receives new data for the view, the device queries the user before deleting any data.

도 20은 디바이스의 링 멤버십, 및 후속하여, 그의 뷰 참여를 동적으로 수정하기 위한 일부 실시예들의 프로세스(2000)를 개념적으로 도시한다. 프로세스(2000)가 디바이스에 의해 수행되어, 일부 실시예들에서, 그 자신의 링 멤버십을 평가하고 이어서 그의 뷰 참여를 평가한다. 상기에 나타낸 바와 같이, 디바이스는 스마트폰, 스마트워치, 태블릿, 랩톱 컴퓨터, 데스크톱 컴퓨터, 또는 관련 디바이스들 사이에서 동기화 시스템에 참여하는 임의의 다른 디바이스일 수 있다.20 conceptually illustrates a process 2000 of some embodiments for dynamically modifying a device's ring membership, and subsequently, its view participation. Process 2000 is performed by the device, in some embodiments, evaluating his own ring membership and then his view participation. As indicated above, the device may be a smartphone, smartwatch, tablet, laptop computer, desktop computer, or any other device that participates in a synchronization system between related devices.

도시된 바와 같이, 프로세스(2000)는 (2005에서) (프로세스를 실행하는 디바이스의) 디바이스 구성물의 변경을 식별하는 것으로 시작한다. 이러한 디바이스 구성물의 변경은 사용자가 디바이스의 패스코드 변경한 것(예컨대, 4자리 패스코드로부터 긴 패스코드로 또는 그 반대로 변경하는 것, 디바이스 상에서 패스코드의 사용을 제거하는 것, 패스코드를 디바이스에 추가하는 것 등), 디바이스 상에 애플리케이션을 설치하는 것, 디바이스의 운영 체제를 업그레이드하는 것, 애플리케이션 또는 디바이스 설정들을 수정하는 것, 새로운 암호화 시크릿을 습득하는 것 등의 결과일 수 있다. 일부 실시예들은 열거된 세트의 링 요건들과 관련된 변경들을 정기적으로 체크하지만, 일부 실시예들에서 프로세스(2000)는 디바이스에 대한 특정 변경들이 프로세스(2000)의 특정 동작들이 수행되게 하는 이벤트 구동식이다.As shown, process 2000 begins with (at 2005) identifying a change in the device configuration (of the device executing the process). Changes to the device configuration include changes to the device's passcode by the user (e.g., changing from a four-digit passcode to a long passcode or vice versa, eliminating the use of a passcode on the device, and transferring the passcode to the device). Adding, etc.), installing an application on the device, upgrading the operating system of the device, modifying the application or device settings, acquiring a new encryption secret, and the like. While some embodiments regularly check for changes related to the enumerated set of ring requirements, in some embodiments process 2000 is an event driven event that causes specific changes to the device to be performed. to be.

프로세스는 (2010에서) 변경으로 인해 링 멤버십에의 임의의 추가들이 발생하는지 여부를 판정한다. 상기의 도 2 내지 도 6의 링들(200, 300, 400, 500, 600)을 참조하면, 그러한 변경들의 예들은, 사용자가 스마트폰(110) 또는 테이블(115) 상의 패스코드를 4개의 문자들보다는 적어도 12개의 문자들을 갖는 것으로 변경한 경우, 기업 구성물이 홈 데스크톱(130) 또는 이러한 디바이스들 중 어느 하나에 설치된 경우, 디바이스 패스코드가 스트리밍 비디오 셋톱 박스(125)에 추가된 경우 등일 수 있다. 상기에 논의된 바와 같이, 많은 다른 타입들의 변경들로 인해 또한 디바이스가 링 내에서의 멤버십에 대해 적격하게 될 수 있다.The process determines whether (in 2010) any additions to the ring membership occur due to the change. Referring to the rings 200, 300, 400, 500, 600 of Figs. 2 to 6 above, examples of such modifications are to allow the user to enter the passcode on the smartphone 110 or table 115 in 4 characters. Rather, it may be changed to have at least 12 characters, a case where an enterprise configuration is installed on the home desktop 130 or one of these devices, a case where a device passcode is added to the streaming video set-top box 125, and the like. As discussed above, many other types of changes may also make the device eligible for membership in the ring.

디바이스 구성물에 대한 변경으로 인해 적어도 하나의 링 내에서의 멤버십에 대한 적격성이 발생할 때, 프로세스는 (2015에서) 링에 조인하기 위한 요청을 생성하고 이러한 서명된 요청을 링 내의 다른 디바이스들로 전송한다. 일부 실시예들에서, 디바이스는 도 11의 프로세스(1100)를 수행하여 2015에서 서명된 링을 생성 및 전송한다. (멤버십 요청이 유효한 것으로 가정하여) 일단 디바이스가 링에 성공적으로 조인하였다면, 링 멤버십으로 인해 디바이스가 하나 이상의 추가적인 뷰들에 참여하게 되는 경우, 프로세스(1500) 또는 유사한 프로세스는 다른 디바이스들 중 하나에 의해 수행되어 이러한 추가적인 뷰들에 속하는 데이터 아이템들을 이러한 디바이스와 동기화시킬 수 있다.When a change to the device configuration results in eligibility for membership in at least one ring, the process generates a request to join the ring (in 2015) and sends this signed request to other devices in the ring. . In some embodiments, the device performs process 1100 of FIG. 11 to create and transmit a ring signed in 2015. Once the device has successfully joined the ring (assuming the membership request is valid), if the ring membership causes the device to participate in one or more additional views, then process 1500 or a similar process is performed by one of the other devices. Can be performed to synchronize data items belonging to these additional views with these devices.

프로세스는 또한 (2020에서) 변경으로 인해 디바이스에 대한 임의의 링들로부터의 제거가 발생하는지 여부를 판정한다. 다시 도 2 내지 도 7의 링들을 참조하면, 그러한 변경들의 예들은 스마트폰(105) 또는 랩톱(120) 중 어느 하나로부터의 기업 구성물의 제거, 디바이스들(105 내지 120 또는 130) 중 임의의 디바이스로부터의 패스코드의 제거, 스마트폰(105), 랩톱(120), 또는 데스크톱(130) 상의 패스워드의 단축 등일 수 있다. 많은 다른 타입들의 변경들(예컨대, 디바이스로부터 패스워드 또는 암호화 키를 철회하는 것)은 또한 디바이스가 링 내에서의 멤버십 적격성도 또한 상실하게 할 수 있다.The process also determines (at 2020) whether the change is causing removal from any rings to the device. Referring again to the rings of FIGS. 2-7, examples of such changes are the removal of the enterprise component from either the smartphone 105 or the laptop 120, any of the devices 105-120 or 130 May be removal of the passcode from, shortening of the password on the smartphone 105, laptop 120, or desktop 130, and the like. Many other types of changes (eg, revoking a password or encryption key from the device) can also cause the device to lose membership eligibility in the ring as well.

디바이스 구성물 변경들 중 어느 것으로도 임의의 링들로부터의 디바이스의 제거가 발생하지 않은 경우, 프로세스(2000)가 종료된다. 그러나, 그렇지 않으면, 프로세스는 (2025에서) 링 내의 다른 디바이스들에게 링으로부터의 디바이스의 제거에 관해 통지한다. 일부 실시예들은 이러한 변경을 나타내기 위해 디바이스의 개인 키로 서명된 메시지를 전송한다. 링 내의 다른 디바이스들에게 통지하는 것에 더하여, 일부 실시예들은 또한 그 특정 링에 있지 않은 임의의 다른 관련 디바이스들(예컨대, 동일한 사용자의 다른 디바이스들)에게 통지한다. 예를 들어, (기업 구성물이 디바이스로부터 제거되었기 때문에) 스마트폰(105)이 링(500)으로부터 제거된 경우, 그것은 일부 실시예들에서 디바이스들(110 내지 130) 모두에게 통지할 것이다.If none of the device configuration changes have resulted in the removal of the device from any rings, the process 2000 ends. However, otherwise, the process notifies other devices in the ring (at 2025) about the removal of the device from the ring. Some embodiments send a message signed with the device's private key to indicate this change. In addition to notifying other devices in the ring, some embodiments also notify any other related devices that are not in that particular ring (eg, other devices of the same user). For example, if the smartphone 105 is removed from the ring 500 (because the enterprise component has been removed from the device), it will notify all of the devices 110-130 in some embodiments.

디바이스 변경이 디바이스의 링 상태에 영향을 미치는지 아닌지의 여부를 판정하는 것에 더하여, 디바이스가 링을 이탈하는 경우, 프로세스(2000)는 또한 디바이스에 대한 잠재적인 뷰 참여 변경들을 처리한다. 따라서, 프로세스는 (2030에서) 링 멤버십 제거로 인해 뷰들 중 임의의 뷰로부터의 제거가 발생하는지 여부를 판정한다. 임의의 특정 뷰에 대한 참여가 하나 이상의 링들 내에서의 멤버십에 기초하여 판정되므로, 뷰 참여를 판정하는 데 사용되는 링들 중 하나로부터의 제거로 인해 디바이스가 더 이상 뷰에 참여하기에 적격하지 않게 될 것이다. 예를 들어, 이전 단락의 예를 사용하면, 링(500)으로부터의 스마트폰(105)의 제거로 인해 그에 후속하여 스마트폰이 더 이상 제2 뷰(800)에 참여하기에 적격하지 않게 될 것이다.In addition to determining whether a device change affects the device's ring state, if the device leaves the ring, process 2000 also handles potential view participation changes for the device. Thus, the process determines (at 2030) whether removal from any of the views occurs due to ring membership removal. Since participation in any particular view is determined based on membership within one or more rings, removal from one of the rings used to determine view participation will cause the device to no longer be eligible to participate in the view. will be. For example, using the example in the previous paragraph, the removal of the smartphone 105 from the ring 500 will subsequently result in the smartphone no longer eligible to participate in the second view 800. .

디바이스가 뷰로부터 제거될 때 뷰에 참여하는 다른 디바이스들에게 통지할 필요가 없는데, 이는 다른 디바이스들이 필요한 링들 중 하나로부터의 디바이스의 제거에 기초하여 동일한 결론을 이끌어낼 것이기 때문이다. 그러나, 일부 실시예들에서, 프로세스(2000)는 (2035에서) 디바이스가 참여하는 임의의 뷰들에 더 이상 속하지 않는 임의의 동기화 데이터 아이템들을 삭제한다. 상기에 언급된 바와 같이, 일부 실시예들은 이러한 데이터를 자동으로 삭제하지 않지만, 그 대신에 (사용자가 잃고 싶지 않은 어떠한 데이터도 잃지 않도록) 데이터가 삭제되어야 하는지 여부를 사용자에게 문의하도록 프롬프트한다. 일부 실시예들에서, 사용자에게 프롬프트할지 여부는 뷰에 좌우된다. 예를 들어, 기업 뷰가 특정 레벨의 보안을 필요로 하는 경우, 기업은 디바이스가 더 이상 보안 제약들을 충족시키지 못하는 경우 데이터를 유지하는 옵션을 사용자에게 제공하는 것을 원하지 않을 수도 있다. 그러나, 그러한 뷰는 뷰로부터의 제거를 발생시킨 변경을 되돌리는 옵션(예컨대, 보다 짧은 패스워드로 변경을 되돌리는 것)을 사용자에게 제공할 수 있다.There is no need to notify other devices participating in the view when the device is removed from the view, since other devices will draw the same conclusion based on the removal of the device from one of the required rings. However, in some embodiments, process 2000 deletes (at 2035) any synchronization data items that no longer belong to any views to which the device participates. As mentioned above, some embodiments do not automatically delete such data, but instead prompt the user to ask if the data should be deleted (so that the user does not lose any data he does not want to lose). In some embodiments, whether to prompt the user is view dependent. For example, if an enterprise view requires a certain level of security, the enterprise may not want to provide users with the option of retaining data if the device no longer meets security constraints. However, such a view may provide the user with the option of reverting the change that caused the removal from the view (eg, reverting the change with a shorter password).

도 21a 및 도 21b는 4개의 스테이지들(2105 내지 2120)을 통해 디바이스들 중 하나가 링으로부터 제거되도록 그의 패스워드가 변경될 때의 도 16 및 도 17로부터의 디바이스들(1600, 1650)을 도시한다. 제1 스테이지(2105)에 도시된 바와 같이, 제2 디바이스(1650)는 뷰(V3)에 속하는 데이터 아이템(1630)뿐만 아니라, 뷰(V1)에 속하는 동기화 데이터 아이템들(1615, 1620, 1635)을 저장한다. 이러한 스테이지에서, 디바이스(1650)의 사용자는 그의 패스코드를 12자리 패스코드("012345678910")로부터 4자리 패스코드 "1234"로 수정한다.21A and 21B show devices 1600 and 1650 from FIGS. 16 and 17 when their password is changed such that one of the devices is removed from the ring through four stages 2105-2120. . As shown in the first stage 2105, the second device 1650 includes not only the data item 1630 belonging to the view V3, but also synchronization data items 1615, 1620, and 1635 belonging to the view V1. Save it. In this stage, the user of device 1650 modifies his passcode from a 12-digit passcode ("012345678910") to a four-digit passcode "1234".

그 결과, 제2 스테이지(2110)에서, 제2 디바이스(1650)의 링 평가자(2125)는 디바이스의 패스코드가 더 이상 충분히 길지 않기 때문에 디바이스가 더 이상 링(링 3)의 멤버여서는 안 된다는 것을 식별한다. 따라서, 제2 디바이스(1650)는 제2 디바이스가 더 이상 링(3)의 멤버가 아닌 것을 제1 디바이스에게 통지하는 메시지(2130)를 제1 디바이스(1600)로 전송한다. 일부 실시예들에서, 도시된 바와 같이, 메시지는 링 상태의 변경에 대한 이유를 나타내지만, 다른 실시예들은 추가적인 데이터 없이 통지를 단순히 전송한다.As a result, in the second stage 2110, the ring evaluator 2125 of the second device 1650 states that the device should no longer be a member of the ring (ring 3) because the passcode of the device is no longer long enough. Identify that. Accordingly, the second device 1650 transmits a message 2130 to the first device 1600 informing the first device that the second device is no longer a member of the ring 3. In some embodiments, as shown, the message indicates the reason for the change in ring state, but other embodiments simply send the notification without additional data.

제3 스테이지에서, 제1 디바이스(1600) 및 제2 디바이스(1650) 양측 모두는 링 3으로부터의 제2 디바이스의 제거를 프로세싱한다. 제1 디바이스 상의 링 평가자(2135)는 이러한 링으로부터의 제2 디바이스의 제거를 나타내고, 또한 링 상태의 변경을 뷰 평가자(1720)에게 통지하여, 뷰 평가자가 장래의 동기화 동작들을 위해 제2 디바이스의 뷰 상태가 조금이라도 변경되었는지 여부를 판정할 수 있다. 제2 디바이스 상에서, 링 평가자(2125)는 뷰 평가자(2140)에게 이러한 동일 변경을 통지하고, 뷰 평가자는 그 결과(즉, 링 3 멤버십이 뷰(V1)에 대한 요건이기 때문에) 제2 디바이스(1650)가 더 이상 뷰(V1)에 참여하지 않아야 한다는 것을 식별한다.In a third stage, both the first device 1600 and the second device 1650 process the removal of the second device from ring 3. The ring evaluator 2135 on the first device indicates the removal of the second device from this ring, and also notifies the view evaluator 1720 of a change in the ring state, so that the view evaluator is able to use the second device for future synchronization operations. It can be determined whether the view state has changed even a little. On the second device, the ring evaluator 2125 notifies the view evaluator 2140 of this same change, and the view evaluator as a result (i.e., because ring 3 membership is a requirement for view V1) the second device ( 1650) should no longer participate in view V1.

따라서, 뷰 평가자(2140)는 제2 디바이스로부터 데이터 아이템들(1615, 1620, 1635)을 제거하는데, 이는 이들이 디바이스가 더 이상 참여하지 않는 뷰(V1)에 속하기 때문이다. 제4 스테이지(2140)는 이러한 결과를 도시하고, 이때 제2 디바이스(1650)가 아이템(1630)(뷰(V3)에 속함)만을 저장한다.Accordingly, the view evaluator 2140 removes data items 1615, 1620, 1635 from the second device because they belong to the view V1 to which the device no longer participates. The fourth stage 2140 shows this result, in which case the second device 1650 stores only the item 1630 (which belongs to the view V3).

VI.VI. 전자 시스템Electronic system

수많은 전술된 특징들 및 적용예들은 컴퓨터 판독가능 저장 매체(또한 컴퓨터 판독가능 매체로도 지칭됨) 상에 기록된 한 세트의 명령어들로서 명시되는 소프트웨어 프로세스들로서 구현된다. 이러한 명령어들이 하나 이상의 계산 또는 프로세싱 유닛(들)(예컨대, 하나 이상의 프로세서들, 프로세서들의 코어들, 또는 다른 프로세싱 유닛들)에 의해 실행될 시, 그들은 프로세싱 유닛(들)이 명령어들에서 지시된 동작들을 수행하도록 한다. 컴퓨터 판독가능 매체들의 예들은, CD-ROM들, 플래시 드라이브들, 랜덤 액세스 메모리(RAM) 칩들, 하드 드라이브들, 소거가능한 프로그래밍가능 판독 전용 메모리(erasable programmable read-only memory, EPROM)들, 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리(electrically erasable programmable read-only memory, EEPROM)들 등을 포함하지만 이로 제한되지는 않는다. 컴퓨터 판독가능 매체들은 무선으로 또는 유선 접속들을 통해 전달하는 반송파(carrier wave)들 및 전자 신호들을 포함하지 않는다.Many of the above-described features and applications are implemented as software processes specified as a set of instructions recorded on a computer-readable storage medium (also referred to as a computer-readable medium). When these instructions are executed by one or more computation or processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they Let's do it. Examples of computer readable media include CD-ROMs, flash drives, random access memory (RAM) chips, hard drives, erasable programmable read-only memory (EPROM), electrically Including, but not limited to, electrically erasable programmable read-only memory (EEPROM), and the like. Computer-readable media do not include carrier waves and electronic signals that carry wirelessly or over wired connections.

본 명세서에서, 용어 "소프트웨어"는 판독 전용 메모리에 위치한 펌웨어, 또는 프로세서에 의해 프로세싱되는 메모리로 판독될 수 있는, 자기 저장소에 저장된 애플리케이션들을 포함하는 것으로 의미된다. 또한, 일부 실시예들에서, 다수의 소프트웨어 발명들은 보다 큰 프로그램의 하위-부분들로서 구현되면서, 별개의 소프트웨어 발명들로 남아 있을 수 있다. 일부 실시예들에서, 다수의 소프트웨어 발명들은 또한 별개의 프로그램들로서 구현될 수 있다. 마지막으로, 본 명세서에 기술된 소프트웨어 발명을 함께 구현하는 별개의 프로그램들의 임의의 조합은 본 발명의 범주 내에 있다. 일부 실시예들에서, 소프트웨어 프로그램들은, 하나 이상의 전자 시스템들 상에서 동작하도록 설치될 시에, 소프트웨어 프로그램들의 동작들을 실행 및 수행하는 하나 이상의 특정 기계 구현예들을 정의한다.In this specification, the term "software" is meant to include firmware located in read-only memory, or applications stored in magnetic storage, which can be read into memory processed by a processor. Further, in some embodiments, multiple software inventions may remain separate software inventions, implemented as sub-parts of a larger program. In some embodiments, multiple software inventions may also be implemented as separate programs. Finally, any combination of separate programs that together implement the software invention described herein is within the scope of the invention. In some embodiments, software programs define one or more specific machine implementations that, when installed to operate on one or more electronic systems, execute and perform operations of the software programs.

A.A. 모바일 디바이스Mobile device

일부 실시예들의 사용자 데이터 공유는 스마트폰들(예컨대, 아이폰들®) 및 태블릿들(예컨대, 아이패드들®)과 같은 모바일 디바이스들 상에서 발생한다. 도 22는 그러한 모바일 컴퓨팅 디바이스의 아키텍처(2200)의 일례이다. 도시된 바와 같이, 모바일 컴퓨팅 디바이스(2200)는 하나 이상의 프로세싱 유닛들(2205), 메모리 인터페이스(2210), 및 주변기기 인터페이스(2215)를 포함한다.User data sharing in some embodiments occurs on mobile devices such as smartphones (eg, iPhones®) and tablets (eg, iPads®). 22 is an example of an architecture 2200 of such a mobile computing device. As shown, mobile computing device 2200 includes one or more processing units 2205, memory interface 2210, and peripherals interface 2215.

주변기기 인터페이스(2215)는 다양한 센서들, 및 카메라 서브시스템(2220), 유선 통신 서브시스템(들)(2223), 무선 통신 서브시스템(들)(2225), 오디오 서브시스템(2230), I/O 서브시스템(2235) 등을 포함하는 서브시스템들에 커플링된다. 주변기기 인터페이스(2215)는 프로세싱 유닛들(2205)과 다양한 주변기기들 사이의 통신을 가능하게 한다. 예를 들어, 배향 센서(2245)(예컨대, 자이로스코프) 및 가속도 센서(2250)(예컨대, 가속도계)가 배향 및 가속도 기능들을 가능하게 하도록 주변기기 인터페이스(2215)에 커플링된다.Peripheral interface 2215 includes various sensors, and camera subsystem 2220, wired communication subsystem(s) 2223, wireless communication subsystem(s) 2225, audio subsystem 2230, I/O It is coupled to subsystems including subsystem 2235 and the like. Peripheral interface 2215 enables communication between processing units 2205 and various peripherals. For example, orientation sensor 2245 (eg, gyroscope) and acceleration sensor 2250 (eg, accelerometer) are coupled to peripherals interface 2215 to enable orientation and acceleration functions.

카메라 서브시스템(2220)은 하나 이상의 광 센서들(2240)(예컨대, 전하 결합 디바이스(charged coupled device, CCD) 광 센서, 상보성 금속-산화물-반도체(CMOS) 광 센서 등)에 커플링된다. 광 센서들(2240)과 커플링된 카메라 서브시스템(2220)은 이미지 및/또는 비디오 데이터 캡처링과 같은 카메라 기능들을 가능하게 한다. 유선 통신 서브시스템(2223) 및 무선 통신 서브시스템(2225)은 통신 기능들을 가능하게 하는 역할을 한다.The camera subsystem 2220 is coupled to one or more optical sensors 2240 (eg, a charged coupled device (CCD) optical sensor, a complementary metal-oxide-semiconductor (CMOS) optical sensor, etc.). Camera subsystem 2220 coupled with optical sensors 2240 enables camera functions such as image and/or video data capture. Wired communication subsystem 2223 and wireless communication subsystem 2225 serve to enable communication functions.

일부 실시예들에서, 무선 통신 서브시스템(2225)은 무선 주파수 수신기들 및 송신기들, 및 광 수신기들 및 송신기들(도 22에는 도시되지 않음)을 포함한다. 일부 실시예들의 이러한 수신기들 및 송신기들은 GSM 네트워크, Wi-Fi 네트워크, 블루투스 네트워크 등과 같은 하나 이상의 통신 네트워크들을 통해 동작하도록 구현된다. 오디오 서브시스템(2230)은 스피커에 커플링되어 오디오를 출력한다(예컨대, 음성 내비게이션 명령어들을 출력한다). 또한, 오디오 서브시스템(2230)은 일부 실시예들에서 음성 인에이블형 기능들을 가능하게 하도록 마이크로폰에 커플링된다.In some embodiments, the wireless communication subsystem 2225 includes radio frequency receivers and transmitters, and optical receivers and transmitters (not shown in FIG. 22). These receivers and transmitters of some embodiments are implemented to operate over one or more communication networks such as a GSM network, a Wi-Fi network, a Bluetooth network, and the like. The audio subsystem 2230 is coupled to a speaker and outputs audio (eg, outputs voice navigation commands). Further, the audio subsystem 2230 is coupled to the microphone to enable voice-enabled functions in some embodiments.

I/O 서브시스템(2235)은 디스플레이, 터치 스크린 등과 같은 입력/출력 주변기기 디바이스들과 프로세싱 유닛들(2205)의 데이터 버스 사이에서의 주변기기 인터페이스(2215)를 통한 전달을 수반한다. I/O 서브시스템(2235)은 터치 스크린 제어기(2255) 및 다른 입력 제어기들(2260)을 포함하여, 입력/출력 주변기기 디바이스들과 프로세싱 유닛들(2205)의 데이터 버스 사이에서의 전달을 가능하게 한다. 도시된 바와 같이, 터치 스크린 제어기(2255)는 터치 스크린(2265)에 커플링된다. 터치 스크린 제어기(2255)는 다수의 터치 감응 기술들 중 임의의 것을 이용하여 터치 스크린(2265) 상에서의 접촉 및 이동을 검출한다. 다른 입력 제어기들(2260)은 하나 이상의 버튼들과 같은 다른 입력/제어 디바이스들에 커플링된다. 일부 실시예들은 터치 상호작용들 대신 또는 이에 더해 근-터치 상호작용(near-touch interaction)들을 검출할 수 있는, 근-터치 감응 스크린 및 대응하는 제어기를 포함한다.I/O subsystem 2235 entails transfer via peripheral interface 2215 between input/output peripheral devices such as displays, touch screens, etc. and the data bus of processing units 2205. The I/O subsystem 2235 includes a touch screen controller 2255 and other input controllers 2260 to enable transfer between input/output peripheral devices and the data bus of the processing units 2205. do. As shown, the touch screen controller 2255 is coupled to the touch screen 2265. The touch screen controller 2255 detects contact and movement on the touch screen 2265 using any of a number of touch sensitive technologies. Other input controllers 2260 are coupled to other input/control devices such as one or more buttons. Some embodiments include a near-touch sensitive screen and a corresponding controller capable of detecting near-touch interactions instead of or in addition to touch interactions.

메모리 인터페이스(2210)는 메모리(2270)에 커플링된다. 일부 실시예들에서, 메모리(2270)는 휘발성 메모리(예컨대, 고속 랜덤 액세스 메모리), 비휘발성 메모리(예컨대, 플래시 메모리), 휘발성 메모리와 비휘발성 메모리의 조합, 및/또는 임의의 다른 타입의 메모리를 포함한다. 도 22에 도시된 바와 같이, 메모리(2270)는 운영 체제(OS)(2271)를 저장한다. OS(2271)는, 기본 시스템 서비스들을 처리하고 하드웨어 의존형 태스크들을 수행하기 위한 명령어들을 포함한다.Memory interface 2210 is coupled to memory 2270. In some embodiments, the memory 2270 is a volatile memory (e.g., fast random access memory), a nonvolatile memory (e.g., flash memory), a combination of volatile and nonvolatile memory, and/or any other type of memory. Includes. 22, the memory 2270 stores an operating system (OS) 2271. The OS 2271 includes instructions for handling basic system services and performing hardware dependent tasks.

메모리(2270)는 또한 (예컨대, 피어-투-피어 데이터 공유를 위해, 또는 클라우드 기반 데이터 공유를 위해 인터넷을 통해 서버에 접속하기 위해) 하나 이상의 추가적인 디바이스들과 통신하는 것을 가능하게 하는 통신 명령어들(2274); 그래픽 사용자 인터페이스 프로세싱을 가능하게 하는 그래픽 사용자 인터페이스 명령어들(2276); 이미지 관련 프로세싱 및 기능들을 가능하게 하는 이미지 프로세싱 명령어들(2278); 입력 관련(예컨대, 터치 입력) 프로세스들 및 기능들을 가능하게 하는 입력 프로세싱 명령어들(2280); 오디오 관련 프로세스들 및 기능들을 가능하게 하는 오디오 프로세싱 명령어들(2282); 및 카메라 관련 프로세스들 및 기능들을 가능하게 하는 카메라 명령어들(2284)을 포함한다. 전술된 명령어들은 단지 예시적이며, 메모리(2270)는 일부 실시예들에서 추가적인 그리고/또는 다른 명령어들을 포함한다. 예를 들어, 스마트폰용 메모리는 전화 관련 프로세스들 및 기능들을 가능하게 하는 전화 명령어들을 포함할 수 있다. 전술된 명령어들은 별도의 소프트웨어 프로그램들 또는 모듈들로서 구현될 필요는 없다. 모바일 컴퓨팅 디바이스의 다양한 기능들은, 하나 이상의 신호 프로세싱 및/또는 주문형 반도체들을 비롯하여 하드웨어 및/또는 소프트웨어로 구현될 수 있다.The memory 2270 also includes communication instructions that enable communication with one or more additional devices (e.g., for peer-to-peer data sharing, or to access a server over the Internet for cloud-based data sharing). (2274); Graphical user interface instructions 2276 to enable graphical user interface processing; Image processing instructions 2278 to enable image related processing and functions; Input processing instructions 2280 that enable input related (eg, touch input) processes and functions; Audio processing instructions 2282 to enable audio related processes and functions; And camera instructions 2284 that enable camera related processes and functions. The instructions described above are exemplary only, and memory 2270 includes additional and/or other instructions in some embodiments. For example, a memory for a smartphone may contain phone instructions that enable phone related processes and functions. The above-described instructions need not be implemented as separate software programs or modules. The various functions of the mobile computing device may be implemented in hardware and/or software, including one or more signal processing and/or application specific semiconductors.

도 22에 도시된 컴포넌트들이 별개의 컴포넌트들로 도시되어 있지만, 당업자는 2개 이상의 컴포넌트들이 하나 이상의 집적 회로들 내에 통합될 수 있음을 인식할 것이다. 또한, 2개 이상의 컴포넌트들이 하나 이상의 통신 버스들 또는 신호 라인들에 의해 함께 커플링될 수 있다. 또한, 많은 기능들이 하나의 컴포넌트에 의해 수행되는 것으로 기술되었지만, 당업자는 도 22와 관련하여 기술된 기능들이 2개 이상의 집적 회로들에 분할될 수 있다는 것을 인식할 것이다.Although the components shown in FIG. 22 are shown as separate components, one of ordinary skill in the art will recognize that two or more components may be incorporated into one or more integrated circuits. Further, two or more components may be coupled together by one or more communication buses or signal lines. Further, although many functions have been described as being performed by one component, those skilled in the art will recognize that the functions described in connection with FIG. 22 may be divided into two or more integrated circuits.

B.B. 컴퓨터 시스템Computer system

도 23은 본 발명의 일부 실시예들을 구현하는 전자 시스템(2300)의 다른 예를 개념적으로 도시한다. 전자 시스템(2300)은 컴퓨터(예컨대, 데스크톱 컴퓨터, 개인용 컴퓨터, 태블릿 컴퓨터 등), 전화, PDA, 또는 임의의 다른 종류의 전자 또는 컴퓨팅 디바이스일 수 있다. 그러한 전자 시스템은 다양한 타입들의 컴퓨터 판독가능 매체들 및 다양한 다른 타입들의 컴퓨터 판독가능 매체들을 위한 인터페이스들을 포함한다. 전자 시스템(2300)은 버스(2305), 프로세싱 유닛(들)(2310), 그래픽 프로세싱 유닛(GPU)(2315), 시스템 메모리(2320), 네트워크(2325), 판독 전용 메모리(2330), 영구 저장 디바이스(2335), 입력 디바이스들(2340), 및 출력 디바이스들(2345)을 포함한다.23 conceptually shows another example of an electronic system 2300 implementing some embodiments of the present invention. The electronic system 2300 may be a computer (eg, a desktop computer, a personal computer, a tablet computer, etc.), a telephone, a PDA, or any other kind of electronic or computing device. Such electronic systems include interfaces for various types of computer readable media and various other types of computer readable media. Electronic system 2300 includes bus 2305, processing unit(s) 2310, graphics processing unit (GPU) 2315, system memory 2320, network 2325, read-only memory 2330, and permanent storage. Device 2335, input devices 2340, and output devices 2345.

버스(2305)는 전자 시스템(2300)의 다수의 내부 디바이스들을 통신가능하게 접속시키는 모든 시스템, 주변기기, 및 칩셋 버스들을 총괄하여 표현한다. 예를 들어보면, 버스(2305)는 판독 전용 메모리(2330), GPU(2315), 시스템 메모리(2320), 및 영구 저장 디바이스(2335)와 프로세싱 유닛(들)(2310)을 통신가능하게 접속시킨다.Bus 2305 collectively represents all system, peripheral, and chipset busses that communicatively connect the multiple internal devices of electronic system 2300. For example, bus 2305 communicatively connects read-only memory 2330, GPU 2315, system memory 2320, and persistent storage device 2335 with processing unit(s) 2310. .

이러한 다양한 메모리 유닛들로부터, 프로세싱 유닛(들)(2310)은 본 발명의 프로세스들을 실행하기 위해 실행할 명령어들 및 프로세싱할 데이터를 검색한다. 프로세싱 유닛(들)은 서로 다른 실시예들에서 단일 프로세서 또는 멀티-코어 프로세서일 수 있다. 일부 명령어들은 GPU(2315)에 전달되어 그 GPU에 의해 실행된다. GPU(2315)는 다양한 계산들을 없애거나 프로세싱 유닛(들)(2310)에 의해 제공된 이미지 프로세싱을 보완할 수 있다. 일부 실시예들에서, 그러한 기능은 코어이미지(CoreImage)의 커널 셰이딩 언어(kernel shading language)를 사용하여 제공될 수 있다.From these various memory units, processing unit(s) 2310 retrieves instructions to be executed and data to be processed to execute the processes of the present invention. The processing unit(s) may be a single processor or a multi-core processor in different embodiments. Some instructions are passed to the GPU 2315 and executed by the GPU. The GPU 2315 may eliminate various calculations or supplement the image processing provided by the processing unit(s) 2310. In some embodiments, such functionality may be provided using the kernel shading language of CoreImage.

판독 전용 메모리(ROM)(2330)는 프로세싱 유닛(들)(2310) 및 전자 시스템의 다른 모듈들에 의해 필요한 정적 데이터 및 명령어들을 저장한다. 다른 한편으로, 영구 저장 디바이스(2335)는 판독 및 기입 메모리 디바이스이다. 이러한 디바이스는 전자 시스템(2300)이 오프될 시에도 명령어들 및 데이터를 저장하는 비휘발성 메모리 유닛이다. 본 발명의 일부 실시예들은 영구 저장 디바이스(2335)로서 (자기 또는 광 디스크 및 그의 대응하는 디스크 드라이브, 통합형 플래시 메모리와 같은) 대용량 저장 디바이스를 사용한다.Read-only memory (ROM) 2330 stores static data and instructions required by the processing unit(s) 2310 and other modules of the electronic system. On the other hand, the persistent storage device 2335 is a read and write memory device. Such a device is a nonvolatile memory unit that stores instructions and data even when the electronic system 2300 is turned off. Some embodiments of the present invention use a mass storage device (such as a magnetic or optical disk and its corresponding disk drive, integrated flash memory) as the persistent storage device 2335.

다른 실시예들은 영구 저장 디바이스로서 (플로피 디스크, 플래시 메모리 디바이스 등 및 그의 대응하는 드라이브와 같은) 제거가능한 저장 디바이스를 사용한다. 영구 저장 디바이스(2335)와 같이, 시스템 메모리(2320)는 판독 및 기입 메모리 디바이스이다. 그러나, 저장 디바이스(2335)와 달리, 시스템 메모리(2320)는 휘발성 판독 및 기입 메모리, 예컨대 랜덤 액세스 메모리이다. 시스템 메모리(2320)는 프로세서가 런타임 시 필요한 명령어들 및 데이터의 일부를 저장한다. 일부 실시예들에서, 본 발명의 프로세스들은 시스템 메모리(2320), 영구 저장 디바이스(2335), 및/또는 판독 전용 메모리(2330)에 저장된다. 예를 들어, 다양한 메모리 유닛들은 일부 실시예들에 따라 멀티미디어 클립들을 프로세싱하기 위한 명령어들을 포함한다. 이러한 다양한 메모리 유닛들로부터, 프로세싱 유닛(들)(2310)은 일부 실시예들의 프로세스들을 실행하기 위해 실행할 명령어들 및 프로세싱할 데이터를 검색한다.Other embodiments use a removable storage device (such as a floppy disk, flash memory device, etc. and its corresponding drive) as a permanent storage device. Like persistent storage device 2335, system memory 2320 is a read and write memory device. However, unlike storage device 2335, system memory 2320 is a volatile read and write memory, such as random access memory. The system memory 2320 stores some of the instructions and data required by the processor at runtime. In some embodiments, the inventive processes are stored in system memory 2320, persistent storage device 2335, and/or read only memory 2330. For example, various memory units include instructions for processing multimedia clips in accordance with some embodiments. From these various memory units, processing unit(s) 2310 retrieves instructions to execute and data to process to execute the processes of some embodiments.

버스(2305)는 또한 입력 및 출력 디바이스들(2340, 2345)에 접속한다. 입력 디바이스들(2340)은 사용자가 전자 시스템으로 정보를 전송하게 하고 상기 전자 시스템에 대한 커맨드들을 선택하게 할 수 있다. 입력 디바이스들(2340)은 문자 및 숫자로 이루어진 키보드들 및 포인팅 디바이스들(또한 "커서 제어 디바이스들"이라고도 칭함), 카메라들(예컨대, 웹캠들), 마이크로폰들 또는 음성 커맨드들을 수신하는 유사한 디바이스들 등을 포함한다. 출력 디바이스들(2345)은 전자 시스템에 의해 발생된 이미지들 또는 그렇지 않다면 출력 데이터를 디스플레이한다. 출력 디바이스들(2345)은 프린터들 및 디스플레이 디바이스들, 예컨대 음극선관(CRT) 또는 액정 디스플레이(LCD), 나아가 스피커들 또는 유사한 오디오 출력 디바이스들을 포함한다. 일부 실시예들은 입력 디바이스와 출력 디바이스 양측 모두로서 기능하는 디바이스들 예컨대 터치스크린을 포함한다.Bus 2305 also connects to input and output devices 2340 and 2345. Input devices 2340 may allow a user to transmit information to the electronic system and select commands for the electronic system. Input devices 2340 include letter and numeric keyboards and pointing devices (also referred to as “cursor control devices”), cameras (eg, webcams), microphones or similar devices that receive voice commands. And the like. Output devices 2345 display images generated by the electronic system or otherwise output data. Output devices 2345 include printers and display devices, such as a cathode ray tube (CRT) or liquid crystal display (LCD), as well as speakers or similar audio output devices. Some embodiments include devices such as touch screens that function as both an input device and an output device.

마지막으로, 도 23에 도시된 바와 같이, 버스(2305)는 또한 네트워크 어댑터(도시되지 않음)를 통해 전자 시스템(2300)을 네트워크(2325)에 커플링한다. 이러한 방식으로, 컴퓨터는 컴퓨터들의 네트워크(예컨대 근거리 네트워크("LAN"), 광역 네트워크("WAN"), 또는 인트라넷), 또는 네트워크들의 네트워크, 예컨대 인터넷의 일부일 수 있다. 전자 시스템(2300)의 임의의 또는 모든 컴포넌트들은 본 발명과 함께 사용될 수 있다.Finally, as shown in FIG. 23, bus 2305 also couples electronic system 2300 to network 2325 via a network adapter (not shown). In this way, the computer may be part of a network of computers (eg, a local area network (“LAN”), a wide area network (“WAN”), or an intranet), or a network of networks, eg the Internet. Any or all components of electronic system 2300 may be used with the present invention.

일부 실시예들은 전자 컴포넌트들, 예컨대 마이크로프로세서들, 기계 판독가능 또는 컴퓨터 판독가능 매체(대안으로, 컴퓨터 판독가능 저장 매체들, 기계 판독가능 매체들, 또는 기계 판독가능 저장 매체들로 지칭됨)에 컴퓨터 프로그램 명령어들을 저장한 저장소 및 메모리를 포함한다. 그러한 컴퓨터 판독가능 매체들 중 일부 예들은 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)® 디스크들, 초고밀도 광 디스크들, 임의의 다른 광 또는 자기 매체들, 및 플로피 디스크들을 포함한다. 컴퓨터 판독가능 매체들은 적어도 하나의 프로세싱 유닛에 의해 실행 가능하고 다양한 동작들을 수행하기 위한 명령어들의 세트들을 포함하는 컴퓨터 프로그램을 저장할 수 있다. 컴퓨터 프로그램들 또는 컴퓨터 코드의 예시들은 기계 코드를 포함하고, 예컨대 컴파일러, 및 인터프리터를 사용하여 컴퓨터, 전자 컴포넌트 또는 마이크로프로세서에 의해 실행되는 보다 높은-레벨 코드를 포함한 파일들에 의해 만들어진다.Some embodiments rely on electronic components, such as microprocessors, machine-readable or computer-readable media (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). It includes a storage and memory storing computer program instructions. Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROMs), recordable compact discs (CD-Rs), rewritable compact discs (CD-RWs), read-only DVDs ( digital versatile discs) (e.g., DVD-ROM, dual-layer DVD-ROM), various recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g. , SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and writeable Blu-Ray® discs, ultra-high density optical discs , Any other optical or magnetic media, and floppy disks. Computer-readable media may store a computer program executable by at least one processing unit and including sets of instructions for performing various operations. Examples of computer programs or computer code are made by files containing machine code and containing higher-level code executed by a computer, electronic component, or microprocessor using, for example, a compiler, and an interpreter.

상기 논의가 소프트웨어를 실행시키는 마이크로프로세서 또는 멀티-코어 프로세서들을 주로 언급하지만, 일부 실시예들은 하나 이상의 집적 회로들, 예컨대 ASIC(application specific integrated circuit)들 또는 FPGA(field programmable gate array)들에 의해 수행된다. 일부 실시예들에서, 그러한 집적 회로들은 회로 자체 상에 저장된 명령어들을 실행시킨다. 또한, 일부 실시예들은 프로그래밍가능 논리 디바이스(programmable logic device, PLD)들, ROM, 또는 RAM 디바이스들에 저장된 소프트웨어를 실행시킨다.Although the above discussion mainly refers to microprocessors or multi-core processors executing software, some embodiments are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). do. In some embodiments, such integrated circuits execute instructions stored on the circuit itself. Furthermore, some embodiments execute software stored in programmable logic devices (PLDs), ROM, or RAM devices.

본 명세서 및 본 출원의 임의의 청구항들에서 사용된 바와 같이, 용어들 "컴퓨터", "서버", "프로세서", 및 "메모리" 모두는 전자 또는 다른 기술적인 디바이스들을 지칭한다. 이러한 용어들은 사람 또는 사람들의 그룹들을 배제한다. 본 명세서의 목적들을 위해, 용어들 "디스플레이" 또는 "디스플레이하는"은 전자 디바이스 상에서 디스플레이하는 것을 의미한다. 본 명세서 및 본 출원의 임의의 청구항들에서 사용된 바와 같이, 용어들 "컴퓨터 판독가능 매체", "컴퓨터 판독가능 매체들", 및 "기계 판독가능 매체"는 컴퓨터에 의해 판독가능한 형태로 정보를 저장하는 유형적인(tangible) 물리적 객체들에 전적으로 한정된다. 이러한 용어들은 임의의 무선 신호들, 유선 다운로드 신호들, 및 임의의 다른 임시 신호들을 배제한다.As used in this specification and any claims of this application, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technical devices. These terms exclude people or groups of people. For the purposes of this specification, the terms “display” or “displaying” mean displaying on an electronic device. As used in this specification and any claims of this application, the terms "computer-readable medium", "computer-readable medium", and "machine-readable medium" refer to information in computer-readable form. It is entirely limited to the tangible physical objects it stores. These terms exclude any wireless signals, wired download signals, and any other temporary signals.

본 발명이 다수의 특정 상세 사항들을 참조하여 기술되었지만, 당업자는 본 발명이 본 발명의 사상으로부터 벗어남이 없이 다른 특정 형태들로 구체화될 수 있다는 것을 인식할 것이다. 예를 들어, 다수의 도면들(도 11, 도 12, 도 15, 및 도 20을 포함함)은 프로세스들을 개념적으로 도시한다. 이러한 프로세스들의 특정 동작들은 도시되고 기술된 정확한 순서로 수행되지 않을 수도 있다. 특정 동작들은 하나의 연속적인 시리즈의 동작들로 수행되지 않을 수도 있으며, 상이한 특정 동작들이 상이한 실시예들에서 수행될 수 있다. 더욱이, 프로세스는 여러 개의 하위-프로세스들을 사용하여, 또는 보다 큰 매크로 프로세스의 일부로서 구현될 수 있다. 따라서, 당업자는 본 발명이 상기의 예시적인 상세 사항들에 의해 제한되는 것이 아니라 오히려 첨부된 청구범위에 의해 정의된다는 것을 이해할 것이다.While the invention has been described with reference to a number of specific details, those skilled in the art will recognize that the invention may be embodied in other specific forms without departing from the spirit of the invention. For example, a number of drawings (including FIGS. 11, 12, 15, and 20) conceptually illustrate processes. Certain operations of these processes may not be performed in the exact order shown and described. Certain operations may not be performed in one successive series of operations, and different specific operations may be performed in different embodiments. Moreover, a process can be implemented using several sub-processes, or as part of a larger macro process. Accordingly, one of ordinary skill in the art will understand that the invention is not limited by the above exemplary details, but rather is defined by the appended claims.

Claims (1)

명세서 및 도면에 따른 방법 또는 장치.Method or apparatus according to the specification and drawings.
KR1020217005075A 2015-05-31 2016-03-31 Synchronization and verification groups among related devices KR102377249B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227008901A KR102631750B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201562168893P 2015-05-31 2015-05-31
US62/168,893 2015-05-31
US201562172127P 2015-06-07 2015-06-07
US62/172,127 2015-06-07
US14/872,013 2015-09-30
US14/872,013 US10198182B2 (en) 2015-05-31 2015-09-30 Synchronization and verification groups among related devices
KR1020207003179A KR102221123B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices
PCT/US2016/025431 WO2016195798A1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207003179A Division KR102221123B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227008901A Division KR102631750B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices

Publications (2)

Publication Number Publication Date
KR20210022157A true KR20210022157A (en) 2021-03-02
KR102377249B1 KR102377249B1 (en) 2022-03-22

Family

ID=57397217

Family Applications (7)

Application Number Title Priority Date Filing Date
KR1020227008901A KR102631750B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices
KR1020217005075A KR102377249B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices
KR1020177034699A KR102075829B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups between related devices
KR1020247003196A KR20240017980A (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices
KR1020197023625A KR102113440B1 (en) 2015-05-31 2016-03-31 Dynamic group membership for devices
KR1020207003179A KR102221123B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices
KR1020177034263A KR102012579B1 (en) 2015-05-31 2016-03-31 Dynamic group membership to devices

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227008901A KR102631750B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices

Family Applications After (5)

Application Number Title Priority Date Filing Date
KR1020177034699A KR102075829B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups between related devices
KR1020247003196A KR20240017980A (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices
KR1020197023625A KR102113440B1 (en) 2015-05-31 2016-03-31 Dynamic group membership for devices
KR1020207003179A KR102221123B1 (en) 2015-05-31 2016-03-31 Synchronization and verification groups among related devices
KR1020177034263A KR102012579B1 (en) 2015-05-31 2016-03-31 Dynamic group membership to devices

Country Status (6)

Country Link
US (5) US10198182B2 (en)
EP (1) EP3304947A1 (en)
KR (7) KR102631750B1 (en)
CN (3) CN107667515B (en)
AU (4) AU2016271071B2 (en)
WO (2) WO2016195799A1 (en)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013130644A1 (en) 2012-02-28 2013-09-06 Centurylink Intellectual Property Llc Apical conduit and methods of using same
US9407443B2 (en) 2012-06-05 2016-08-02 Lookout, Inc. Component analysis of software applications on computing devices
US9786997B2 (en) 2013-08-01 2017-10-10 Centurylink Intellectual Property Llc Wireless access point in pedestal or hand hole
US10154325B2 (en) 2014-02-12 2018-12-11 Centurylink Intellectual Property Llc Point-to-point fiber insertion
US9780433B2 (en) 2013-09-06 2017-10-03 Centurylink Intellectual Property Llc Wireless distribution using cabinets, pedestals, and hand holes
US10276921B2 (en) 2013-09-06 2019-04-30 Centurylink Intellectual Property Llc Radiating closures
JP6826360B2 (en) * 2015-02-27 2021-02-03 インフォサイエンス株式会社 Member information management system and member information management program
US10198182B2 (en) 2015-05-31 2019-02-05 Apple Inc. Synchronization and verification groups among related devices
US10623162B2 (en) 2015-07-23 2020-04-14 Centurylink Intellectual Property Llc Customer based internet of things (IoT)
US10375172B2 (en) 2015-07-23 2019-08-06 Centurylink Intellectual Property Llc Customer based internet of things (IOT)—transparent privacy functionality
CN114756520A (en) 2015-10-02 2022-07-15 谷歌有限责任公司 Method and system for synchronizing offline data in a computing system
US10412064B2 (en) * 2016-01-11 2019-09-10 Centurylink Intellectual Property Llc System and method for implementing secure communications for internet of things (IOT) devices
US20170288866A1 (en) * 2016-03-30 2017-10-05 AVAST Software s.r.o. Systems and methods of creating a distributed ring of trust
US10601595B2 (en) * 2016-05-04 2020-03-24 Avaya Inc. Secure application attachment
US10832665B2 (en) 2016-05-27 2020-11-10 Centurylink Intellectual Property Llc Internet of things (IoT) human interface apparatus, system, and method
US10249103B2 (en) 2016-08-02 2019-04-02 Centurylink Intellectual Property Llc System and method for implementing added services for OBD2 smart vehicle connection
US10110272B2 (en) 2016-08-24 2018-10-23 Centurylink Intellectual Property Llc Wearable gesture control device and method
US10687377B2 (en) 2016-09-20 2020-06-16 Centurylink Intellectual Property Llc Universal wireless station for multiple simultaneous wireless services
US9867112B1 (en) 2016-11-23 2018-01-09 Centurylink Intellectual Property Llc System and method for implementing combined broadband and wireless self-organizing network (SON)
US10426358B2 (en) 2016-12-20 2019-10-01 Centurylink Intellectual Property Llc Internet of things (IoT) personal tracking apparatus, system, and method
US10637683B2 (en) 2016-12-23 2020-04-28 Centurylink Intellectual Property Llc Smart city apparatus, system, and method
US10193981B2 (en) 2016-12-23 2019-01-29 Centurylink Intellectual Property Llc Internet of things (IoT) self-organizing network
US10735220B2 (en) 2016-12-23 2020-08-04 Centurylink Intellectual Property Llc Shared devices with private and public instances
US10222773B2 (en) 2016-12-23 2019-03-05 Centurylink Intellectual Property Llc System, apparatus, and method for implementing one or more internet of things (IoT) capable devices embedded within a roadway structure for performing various tasks
US10150471B2 (en) 2016-12-23 2018-12-11 Centurylink Intellectual Property Llc Smart vehicle apparatus, system, and method
US10146024B2 (en) 2017-01-10 2018-12-04 Centurylink Intellectual Property Llc Apical conduit method and system
EP3352492A1 (en) * 2017-01-19 2018-07-25 Giesecke+Devrient Mobile Security GmbH Authentication method
US10218697B2 (en) * 2017-06-09 2019-02-26 Lookout, Inc. Use of device risk evaluation to manage access to services
SG10201706070TA (en) * 2017-07-25 2019-02-27 Mastercard International Inc Offline Payment Using Virtual Card Account Number
US10862831B2 (en) 2017-08-03 2020-12-08 Digital 14 Llc System, method, and computer program product providing end-to-end security of centrally accessible group membership information
US10627794B2 (en) 2017-12-19 2020-04-21 Centurylink Intellectual Property Llc Controlling IOT devices via public safety answering point
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US11057776B2 (en) 2018-01-11 2021-07-06 Mediatek Inc. Device identifying method, identifying device, and device pairing method
US11765046B1 (en) * 2018-01-11 2023-09-19 Cisco Technology, Inc. Endpoint cluster assignment and query generation
US10812435B2 (en) * 2018-02-28 2020-10-20 Ringcentral, Inc. Systems and methods for suppressing repetitive notifications about messages in messaging groups
US10867033B2 (en) * 2018-03-22 2020-12-15 Microsoft Technology Licensing, Llc Load distribution enabling detection of first appearance of a new property value in pipeline data processing
US11799955B2 (en) * 2018-06-03 2023-10-24 Apple Inc. Data synchronization across multiple devices
US11604443B2 (en) * 2018-08-23 2023-03-14 Johnson Controls Tyco IP Holdings LLP System and method for distributed device configuration and authorization
GB2578864B (en) * 2018-09-24 2022-09-21 Metrarc Ltd Trusted ring
CN109616145B (en) * 2018-12-12 2020-12-11 广州酷狗计算机科技有限公司 Method and device for generating ring signal file and computer readable storage medium
CN111432381B (en) * 2019-01-09 2023-04-28 联发科技股份有限公司 Device identification method, identification device, and device pairing method
CN109922440B (en) * 2019-01-31 2021-11-23 维沃移动通信有限公司 Data synchronization method, device, mobile terminal and storage medium
EP3616360B1 (en) * 2019-03-29 2021-07-07 Advanced New Technologies Co., Ltd. Managing cryptographic keys based on identity information
AU2019204723C1 (en) 2019-03-29 2021-10-28 Advanced New Technologies Co., Ltd. Cryptographic key management based on identity information
WO2019120324A2 (en) 2019-03-29 2019-06-27 Alibaba Group Holding Limited Cryptography chip with identity verification
CA3057398C (en) 2019-03-29 2021-07-06 Alibaba Group Holding Limited Securely performing cryptographic operations
US11677554B2 (en) * 2019-06-01 2023-06-13 Apple Inc. Key registration transparency for secure messaging
CN110535657B (en) * 2019-08-21 2022-03-04 上海唯链信息科技有限公司 Method and device for mutual identity authentication of multiple private key management devices
SE544340C2 (en) * 2019-11-19 2022-04-12 Assa Abloy Ab Secure configuration of a target device performed by a user device
US10819522B1 (en) * 2020-01-03 2020-10-27 BlockGen Corp. Systems and methods of authentication using entropic threshold
DE102022106864A1 (en) 2022-03-23 2023-09-28 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Method for determining whether a portable device belongs to an associated group of portable devices based on a blockchain
US11863617B1 (en) * 2022-11-18 2024-01-02 Accenture Global Solutions Limited Dynamic decentralized hierarchical Holon network system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130332607A1 (en) * 2012-06-08 2013-12-12 Apple Inc. Synchronizing Handles For User Accounts Across Multiple Electronic Devices
US20140281540A1 (en) * 2013-01-18 2014-09-18 Apple Inc. Keychain syncing

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3963417B2 (en) 1999-11-19 2007-08-22 株式会社東芝 Communication method and electronic device for data synchronization processing
AU2002234258A1 (en) 2001-01-22 2002-07-30 Sun Microsystems, Inc. Peer-to-peer network computing platform
US6671695B2 (en) 2001-06-18 2003-12-30 The Procter & Gamble Company Dynamic group generation and management
US20040109025A1 (en) * 2002-08-28 2004-06-10 Jean-Marie Hullot Computer program comprising a plurality of calendars
KR101015319B1 (en) 2002-09-05 2011-02-16 파나소닉 주식회사 Group formation management system, group management device, and recording medium
US8037202B2 (en) * 2002-10-31 2011-10-11 Oracle America, Inc. Presence detection using mobile agents in peer-to-peer networks
US7526649B2 (en) * 2003-12-30 2009-04-28 Intel Corporation Session key exchange
US7313580B2 (en) * 2005-02-08 2007-12-25 Domenico Vellante Systems and methods for sharing information between a user group and associated document
US20070019616A1 (en) 2005-06-29 2007-01-25 Olli Rantapuska Group formation using mobile computing devices
CN101098267B (en) * 2006-06-28 2011-07-20 华为技术有限公司 Method and system for establishing cluster conversation
JP4793948B2 (en) 2006-09-27 2011-10-12 パイオニア株式会社 Communication system, terminal, communication method, and communication processing program
KR100959074B1 (en) 2007-12-12 2010-05-20 한국전자통신연구원 The security group creation and authentication on the p2p network
US8019900B1 (en) * 2008-03-25 2011-09-13 SugarSync, Inc. Opportunistic peer-to-peer synchronization in a synchronization system
CN101594574B (en) * 2008-05-30 2012-05-23 三星电子株式会社 Method for realizing group information management of mobile terminal
US8458462B1 (en) * 2008-08-14 2013-06-04 Juniper Networks, Inc. Verifying integrity of network devices for secure multicast communications
KR101172793B1 (en) 2008-12-19 2012-08-10 주식회사 디지캡 Master terminal device for registering and managing the terminal device included in personal using scope, method and system for using the same
US8694578B2 (en) * 2009-05-29 2014-04-08 Microsoft Corporation Swarm-based synchronization over a network of object stores
CN102083008A (en) * 2009-11-27 2011-06-01 中兴通讯股份有限公司 Method and system for dynamic management of colony terminal automatic grouping members
JP5556207B2 (en) * 2010-02-04 2014-07-23 ソニー株式会社 Wireless communication apparatus, wireless communication method, and program
US8495420B2 (en) * 2010-07-16 2013-07-23 Commvault Systems, Inc. Registry key federation systems and methods
US9077644B2 (en) 2010-12-08 2015-07-07 At&T Intellectual Property I, L.P. Methods and apparatus for communicating with groups of devices sharing an attribute
CN102036181A (en) * 2010-12-15 2011-04-27 东莞宇龙通信科技有限公司 Group communication method and device with contacts
US8386619B2 (en) * 2011-03-23 2013-02-26 Color Labs, Inc. Sharing content among a group of devices
US8850191B2 (en) * 2011-04-28 2014-09-30 Netapp, Inc. Scalable groups of authenticated entities
US20130036211A1 (en) 2011-08-01 2013-02-07 Samsung Electronics Co., Ltd. Coordinated service to multiple mobile devices
US9424439B2 (en) 2011-09-12 2016-08-23 Microsoft Technology Licensing, Llc Secure data synchronization
US9661073B2 (en) * 2011-11-18 2017-05-23 Google Inc. Web browser synchronization with multiple simultaneous profiles
US9832258B2 (en) * 2012-01-06 2017-11-28 Google Llc Mode indicators for applications, web applications, and browser extensions
US9054919B2 (en) * 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US8984582B2 (en) 2012-08-14 2015-03-17 Confidela Ltd. System and method for secure synchronization of data across multiple computing devices
KR20140034339A (en) * 2012-08-23 2014-03-20 삼성전자주식회사 User terminal apparatus for uploading contents, user terminal apparatus for downloading contents, server, contents sharing system and their contents sharing method
US9106411B2 (en) 2012-09-30 2015-08-11 Apple Inc. Secure escrow service
US8782766B1 (en) * 2012-12-27 2014-07-15 Motorola Solutions, Inc. Method and apparatus for single sign-on collaboration among mobile devices
KR101981258B1 (en) * 2013-01-04 2019-05-22 삼성전자주식회사 Method for sharing contents using personal cloud device, Electronic device and Personal Cloud System thereof
US9124637B2 (en) * 2013-01-18 2015-09-01 Apple Inc. Data protection for keychain syncing
US10313264B2 (en) * 2014-05-28 2019-06-04 Apple Inc. Sharing account data between different interfaces to a service
US9424021B2 (en) * 2014-12-09 2016-08-23 Vmware, Inc. Capturing updates to applications and operating systems
US10198182B2 (en) 2015-05-31 2019-02-05 Apple Inc. Synchronization and verification groups among related devices
US10079880B2 (en) * 2015-06-07 2018-09-18 Apple Inc. Automatic identification of invalid participants in a secure synchronization system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130332607A1 (en) * 2012-06-08 2013-12-12 Apple Inc. Synchronizing Handles For User Accounts Across Multiple Electronic Devices
US20140281540A1 (en) * 2013-01-18 2014-09-18 Apple Inc. Keychain syncing

Also Published As

Publication number Publication date
KR20190097313A (en) 2019-08-20
AU2021200403A1 (en) 2021-03-18
CN107667515A (en) 2018-02-06
CN115484275A (en) 2022-12-16
EP3304947A1 (en) 2018-04-11
KR102377249B1 (en) 2022-03-22
AU2021200403B2 (en) 2022-05-19
KR20220040506A (en) 2022-03-30
US10318154B2 (en) 2019-06-11
US20230259276A1 (en) 2023-08-17
WO2016195798A1 (en) 2016-12-08
US11669244B2 (en) 2023-06-06
US10747435B2 (en) 2020-08-18
AU2020203360B2 (en) 2020-11-19
AU2016271071B2 (en) 2018-11-29
WO2016195799A1 (en) 2016-12-08
KR20180006397A (en) 2018-01-17
CN107667515B (en) 2021-07-09
CN107736001A (en) 2018-02-23
KR102221123B1 (en) 2021-02-25
AU2016271071A1 (en) 2017-12-21
US20190272101A1 (en) 2019-09-05
KR20200015821A (en) 2020-02-12
KR20240017980A (en) 2024-02-08
KR102012579B1 (en) 2019-08-20
US20160349999A1 (en) 2016-12-01
KR102113440B1 (en) 2020-05-20
KR20170140372A (en) 2017-12-20
KR102631750B1 (en) 2024-02-01
AU2020203360A1 (en) 2020-06-11
AU2019201374A1 (en) 2019-03-21
US20190347007A1 (en) 2019-11-14
US10198182B2 (en) 2019-02-05
US20160352526A1 (en) 2016-12-01
KR102075829B1 (en) 2020-02-10
AU2019201374B2 (en) 2020-03-05

Similar Documents

Publication Publication Date Title
KR102221123B1 (en) Synchronization and verification groups among related devices
US10153900B2 (en) Secure escrow service
KR102113910B1 (en) Automatic identification of invalid participants in a secure synchronization system
US9842062B2 (en) Backup accessible by subset of related devices

Legal Events

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