Шифрування
Усе, що bae кладе в хмарний дім, шифрується перед тим, як залишити пристрій; режиму без шифрування немає. bae не реалізує власної криптографії: уся схема належить coven, а ця сторінка описує, як bae її використовує.
| Ключ | Що він робить |
|---|---|
| Ключ сховища | шифрує бібліотеку та її записи участі |
| Ключ кола кожної людини | шифрує те, що людина тримає приватним: її приватну історію прослуховування і плейлисти |
| Ключ кожного файлу | шифрує один файл і передається лише всередині зашифрованих змін його рядка |
| Пара ключів підпису людини | підписує кожну зміну, яку надсилають її пристрої |
| Пара ключів запечатування людини | відкриває ключі, запечатані для цієї людини |
Ключ сховища випадковий і створюється, коли бібліотека отримує хмарний дім. Пари ключів людини спільно використовують усі її пристрої. Приватні ключі й ключі бібліотеки живуть у сховищі ключів OS, ніколи не у файлі чи базі даних. Вони потрапляють на пристрій двома способами, обидва описані в Ідентичність і членство: код відновлення несе власні пари ключів людини, а адміністратор, який схвалює запрошення, запечатує ключі сховища для ключа запечатування нової людини.
Ротація
Посилання на цей розділКлюч ніколи не змінюється на місці; додається новий. Після вилучення людини пристрій учасника, що лишився, додає новий ключ сховища й новий ключ для кожного кола, де вона була, перш ніж записати туди ще дані: усе, записане після цього, для неї нечитабельне, тоді як учасники, що лишилися, зберігають кожен старіший ключ і можуть читати всю історію. Вилучення одного пристрою нічого не обертає, бо інші пристрої людини спільно використовують його ключі; від вилучення те, що надсилає цей пристрій, не враховується.
Що запечатується
Посилання на цей розділКожен об’єкт у домі: зміни, snapshot-и, записи участі й файли. Вміст шифрується XChaCha20-Poly1305, кожна зміна підписується Ed25519, а ключі запечатуються для людей запечатаними скриньками X25519. Файли шифруються чанками по 64 KiB, кожен автентифікований окремо й прив’язаний до своєї позиції, тож чанк неможливо непомітно змінити, підмінити чи переставити. Чанкування пояснює, чому працює передавання: програвач може розшифрувати саме ті чанки, які забирає.
Що може бачити провайдер
Посилання на цей розділКількість об’єктів, розміри об’єктів, час завантажень, який обліковий запис записує кожен об’єкт і який пристрій завантажив кожен файл і snapshot, бо їхні шляхи називають пристрій. Не імена, не метадані, не аудіо, не обкладинки. Файли лежать під випадковими іменами, ніколи не під хешем свого вмісту. Серверного відновлення немає: якщо кожна людина втратить кожен пристрій і кожен код відновлення, бібліотеку втрачено; це і є задумана властивість.
Сховище ключів
Посилання на цей розділВідкриття бібліотеки читає її ключі зі сховища ключів OS. Сховище ключів, яке зараз заблоковане, заблокованим сеансом або сплячим екраном, відрізняється від зламаного: bae показує бібліотеку як заблоковану й пробує знову після розблокування, а не повідомляє, що бібліотека непридатна. Пристрій також може забути ключ, що блокує бібліотеку на цьому пристрої, доки її знову не буде розблоковано.