Към съдържанието

Идентичност и членство

Никъде в bae няма система от акаунти. Идентичността на устройство е Ed25519 двойка ключове, която то генерира за себе си и пази в ключодържателя на операционната система; публичният ключ е идентичността. Кой принадлежи към библиотека е набор от подписани записи в облачния дом, проверими от всеки, който ги държи, издадени от никакъв сървър. Механизмът е на coven; тази страница описва как bae го използва.

Записи за членство

Връзка към този раздел

Всеки owner записва поток само с добавяне от подписани записи за членство в облачния дом: този ключ е добавен с тази роля, този ключ е премахнат. Всеки запис сочи към предишния, а всеки owner подписва глава, която обявява върха на неговия поток, така че доставчик, който изпуска или пренарежда записи, се открива, вместо да му се вярва. Това, което библиотеката приема, е обединението на проверения поток на всеки owner.

При всяко изтегляне авторът на всеки changeset се проверява срещу този запис: подписан от текущ член, с роля, която може да пише. Changeset-и от премахнати устройства, от ключове, които никога не са добавяни, или с невалидни подписи не се прилагат. Доставчикът съхранява записите, но не може да ги подправи; само притежатели на owner ключове могат да променят членството.

Owner и Member и двете четат и пишат библиотеката; owners допълнително одобряват и премахват устройства. Основаващото устройство на bae е owner и всяко устройство, което то одобри, се присъединява като member. (В основния механизъм съществува трета роля, последовател само за четене, която bae в момента не задава.)

Обменът за присъединяване

Връзка към този раздел

Добавянето на устройство е обмен на два кода с явна човешка проверка по средата:

  1. Присъединяващото се устройство генерира двойката си ключове и показва join request: публичния си ключ, кратък отпечатък от него и (за OAuth доставчици) облачния акаунт, с който да се сподели папката.
  2. Owner декодира заявката, и двата екрана показват същия отпечатък. Човекът проверява, че съвпадат; това е стъпката, която спира подменен ключ.
  3. Одобрението прави три неща наведнъж: дава на акаунта на новото устройство достъп до облачния дом (споделяне на папка при потребителски облаци, вградени идентификационни данни при S3, CloudKit споделяне при iCloud), запечатва ключа на библиотеката към публичния ключ на новото устройство и подписва запис за членство, който го добавя. Всичко това се пакетира в invite code.
  4. Присъединяващото се устройство използва поканата, отваря ключа, стартира от последния snapshot и синхронизира.

Поканата е запечатана към заявяващия ключ: прихващането й не дава нищо.

Премахването на member добавя подписано премахване и завърта ключа на библиотеката към ново поколение, което премахнатият ключ никога не получава (вижте Шифроване). При хранилище, което може да отнема достъп, достъпът също се отнема. Това, което вече е синхронизирано към премахнатото устройство, остава при него; данни не могат да бъдат върнати. Всичко след завъртането е извън обсега му.

Кодове за възстановяване

Връзка към този раздел

Кодът за възстановяване умишлено заобикаля членството: това са координатите на облачния дом плюс ключа на библиотеката, в един низ, който сам дава достъп, за възстановяване на собствената ви библиотека без останал одобряващ. Генерира се при поискване, съхранява се автоматично в iCloud Keychain на Apple платформи и е точно толкова чувствителен, колкото самата библиотека.