신원과 구성원
bae에는 어디에도 계정 시스템이 없습니다. 라이브러리의 각 사람은 coven 구성원입니다. 무작위의 영구적인 구성원 id와 두 개의 키 쌍, 즉 서명용 키 쌍과 키가 봉인되는 대상 키 쌍을 가지며, 이는 그 사람의 모든 기기가 공유하고 각 기기의 OS 키링에 보관됩니다. 기기는 자체 id를 가진 하나의 설치로, 한 구성원에게 속합니다. 라이브러리에 속한 사람은 클라우드 홈의 서명된 레코드 집합으로 표현되며, 각 구성원의 기기가 이를 확인하고 어떤 서버도 발급하지 않습니다. 이 장치는 coven의 것입니다. 이 페이지는 bae가 그것을 어떻게 쓰는지 설명합니다.
구성원 기록
이 섹션으로 연결클라우드 홈에 있는 라이브러리의 전체 기록은 번호 매겨진 하나의 순서이며, 모든 기기가 같은 순서로 적용합니다. 구성원이나 설정의 변경은 이 순서 안의 관리 항목으로, 작성자의 키로 서명되고 바로 앞의 상태를 기준으로 판정되므로 모든 기기가 스스로 같은 결론에 이릅니다. 항목은 작성자에게 그 권한이 있을 때만 유효하며, 라이브러리에는 항상 적어도 한 명의 관리자가 남습니다.
기기가 보내는 모든 변경은 이 레코드와 대조됩니다. 현재 구성원이 서명했는지, 제거되지 않은 기기에서 왔는지 확인합니다. 제거된 기기나 구성원, 한 번도 추가되지 않은 키, 유효하지 않은 서명에서 온 변경은 반영되지 않습니다. 제공자는 레코드를 저장하지만 위조할 수 없습니다.
관리자와 구성원은 둘 다 라이브러리를 읽고 씁니다. coven은 라이브러리 쓰기에서 권한을 확인하지 않으므로 읽기 전용 역할은 유지될 수 없습니다. 관리자는 추가로 사람을 초대하고 제거하며, 역할을 바꾸고, 라이브러리 이름을 바꿉니다. 라이브러리에 클라우드 홈을 준 사람이 첫 관리자입니다.
| 작업 | 누가 |
|---|---|
| 사람 초대 | 관리자 |
| 기기 추가 | 본인이, 새 기기에서, 자신의 복원 코드로 |
| 기기 제거 | 그 기기의 주인, 또는 모든 관리자 |
| 사람 제거 | 관리자 |
| 라이브러리 이름 변경 | 관리자 |
사람의 프로필, 평점, 기록, 재생 목록은 소유자 row입니다. 그 사람의 기기만 바꿀 수 있으므로, 누군가의 평점으로 표시되는 것은 실제로 그 사람이 남긴 것입니다.
내 기기 추가
이 섹션으로 연결복원 코드는 기기가 그 사람의 것임을 증명하므로 승인이 필요 없습니다.
- 새 기기는 그 사람의 다른 기기가 보여주는 QR 코드를 스캔하거나, Apple 기기에서는 iCloud 키체인에서, 또는 직접 입력해 코드를 받습니다.
- 저장소에 닿습니다. Dropbox와 OneDrive에서는 그 사람 자신의 계정에 로그인하고, S3에서는 QR 코드가 코드 옆에 담은 그 사람의 액세스 키를 씁니다.
- 라이브러리를 불러오고, 코드의 키가 현재 구성원의 것인지 확인한 뒤, 그 키로 서명한 항목으로 자신을 새 기기로 등록합니다.
그 뒤 키가 교체된 코드는 실패합니다. 복원은 항상 새 기기를 만들며, 다른 설치의 보내지 않은 편집은 구하지 않습니다.
사람 초대
이 섹션으로 연결- 관리자가 그 사람의 제공자 계정을 입력하고 역할을 고릅니다. bae는 라이브러리 폴더를 그 계정과 공유하거나, S3에서는 그 사람을 위한 액세스 키를 만들고, 초대를 보여줍니다. 초대는 라이브러리 위치, 그 사람을 위해 고른 구성원 id, 일회용 비밀, 라이브러리의 현재 이름을 담은 QR 코드입니다. 만든 뒤 하루가 지나면 만료됩니다.
- 그 사람의 기기가 초대를 스캔하고, 그 사람의 계정에 로그인하고, 키 쌍을 만든 뒤 저장소에 참가 요청을 씁니다. 요청은 초대의 비밀에서 파생한 키로 암호화되고 새 키로 서명됩니다.
- 비밀을 가진 유일한 기기인 관리자의 기기가 요청을 보여주고, 관리자가 승인합니다.
- 승인하면 모든 스토어 키가 그 사람의 새 봉인 키에 봉인되고, 그다음 그 사람을 받아들이는 항목이 추가됩니다.
- 새 기기가 키를 열고, 라이브러리를 불러오고, 자신을 등록한 뒤, 입력한 이름으로 그 사람의 프로필을 씁니다.
초대를 거절하거나 만료되게 두면, 초대가 준 제공자 접근 권한이 회수됩니다.
기기나 사람을 제거하는 것은 관리 항목이며, 순서 안에서의 그 위치가 기록상의 경계선이 됩니다. 제거된 기기나 사람이 그 뒤에 보내는 것은 반영되지 않고, 그 전에 도착한 것은 남습니다. 사람을 제거하면 그 사람의 기기와 비공개 서클도 제거되며, 그 사람이 가졌던 키는 더 많은 데이터가 쓰이기 전에 교체됩니다(암호화 참고). 저장소 접근을 끊는 것은 제공자 쪽 작업입니다. 라이브러리를 가진 계정의 기기가 폴더 공유를 해제하고, S3에서는 그 사람의 액세스 키가 삭제됩니다. 제거된 기기에 이미 동기화된 것은 그 기기에 남습니다. 데이터를 되돌려 보낼 수는 없습니다.
복원 코드
이 섹션으로 연결복원 코드는 구성원 id와 현재 개인 키 쌍, 라이브러리의 store id와 저장 위치를 담습니다. 저장소 자격 증명, 로그인 토큰, 라이브러리 이름은 절대 담지 않습니다. 요청할 때 표시되고, Apple 플랫폼에서는 iCloud 키체인에 자동 저장되며, 라이브러리 자체만큼 민감합니다. 코드를 가지고 저장소에 접근할 수 있는 사람은 라이브러리에게 그 사람 자체입니다. 모든 기기와 코드를 잃은 사람은 관리자가 기존 구성원 id로 다시 초대할 수 있으며, 그러면 그 사람의 키가 교체됩니다.