सामग्री पर जाएँ

पहचान और सदस्यता

bae में कहीं भी खाता प्रणाली नहीं है। उपकरण की पहचान वह Ed25519 keypair है जिसे वह अपने लिए बनाता है और OS keyring में रखता है; public कुंजी ही पहचान है। किसी लाइब्रेरी में कौन शामिल है, यह क्लाउड घर में हस्ताक्षरित records का समूह है, जिसे वे records रखने वाला कोई भी सत्यापित कर सकता है; इन्हें कोई सर्वर जारी नहीं करता। व्यवस्था coven की है; यह पेज बताता है कि bae उसे कैसे उपयोग करता है।

हर स्वामी क्लाउड घर में हस्ताक्षरित membership entries की केवल-जोड़ने वाली स्ट्रीम लिखता है: यह कुंजी इस भूमिका के साथ जोड़ी गई, यह कुंजी हटाई गई। हर entry पिछली entry से जुड़ती है, और हर स्वामी अपनी स्ट्रीम के सिरे की घोषणा करने वाला head sign करता है, इसलिए records गिराने या फिर से क्रम लगाने वाला प्रदाता पकड़ा जाता है, माना नहीं जाता। लाइब्रेरी जिसे स्वीकार करती है वह हर स्वामी की सत्यापित स्ट्रीम का मेल है।

हर pull पर, हर changeset का लेखक इसी record से जांचा जाता है: मौजूदा सदस्य द्वारा signed, लिख सकने वाली भूमिका के साथ। हटाए गए उपकरणों, कभी न जोड़ी गई कुंजियों, या अमान्य signatures वाले changeset लागू नहीं होते। प्रदाता records रखता है, पर उन्हें गढ़ नहीं सकता; सदस्यता केवल स्वामी कुंजियां रखने वाले बदल सकते हैं।

स्वामी और सदस्य दोनों लाइब्रेरी पढ़ और लिख सकते हैं; स्वामी इसके अलावा उपकरण स्वीकृत और हटाते हैं। bae का पहला उपकरण स्वामी होता है और वह जिन उपकरणों को स्वीकृत करता है वे सदस्य के रूप में जुड़ते हैं। (नीचे की व्यवस्था में तीसरी भूमिका, केवल-पढ़ने वाला अनुयायी, मौजूद है, जिसे bae अभी नहीं देता।)

जुड़ने की प्रक्रिया

इस अनुभाग का लिंक

उपकरण जोड़ना दो कोड का आदान-प्रदान है, जिसके बीच में स्पष्ट मानवीय जांच होती है:

  1. जुड़ने वाला उपकरण अपना keypair बनाता है और join request दिखाता है: अपनी public कुंजी, उसका छोटा fingerprint, और (OAuth प्रदाताओं के लिए) वह क्लाउड खाता जिसके साथ फोल्डर साझा करना है।
  2. स्वामी request डिकोड करता है, और दोनों screen वही fingerprint दिखाते हैं। व्यक्ति जांचता है कि वे मिलते हैं; यही चरण बदली हुई कुंजी को रोकता है।
  3. स्वीकृति तीन काम साथ करती है: नए सदस्य के खाते को क्लाउड घर तक पहुंच देती है (consumer clouds पर फ़ोल्डर share, S3 पर embedded credentials, iCloud पर CloudKit share), लाइब्रेरी कुंजी को नए सदस्य की public कुंजी से seal करती है, और उसे जोड़ने वाली membership entry sign करती है। यह सब invite code में रखा जाता है।
  4. जुड़ने वाला उपकरण invite लेता है, कुंजी खोलता है, ताजा snapshot से शुरुआत करता है और समन्वय करता है।

Invite requesting कुंजी के लिए sealed होता है: उसे बीच में पकड़ लेने से कुछ नहीं मिलता।

किसी सदस्य को हटाना signed removal जोड़ता है और लाइब्रेरी कुंजी को ऐसी नई पीढ़ी पर घुमाता है जो हटाई गई कुंजी को कभी नहीं मिलती (देखें एन्क्रिप्शन)। जहां संग्रहण पहुंच हटाई जा सकती है, वहां वह भी हटाई जाती है। हटाए गए उपकरण पर जो पहले ही समन्वय हो चुका था वह उसके पास रहता है; डेटा वापस नहीं लिया जा सकता। घुमाव के बाद की हर चीज उसकी पहुंच से बाहर होती है।

रिकवरी कोड जानबूझकर सदस्यता को पार करता है: यह क्लाउड घर के coordinates और लाइब्रेरी कुंजी को एक bearer string में रखता है, ताकि कोई जीवित स्वीकर्ता न होने पर अपनी लाइब्रेरी बहाल की जा सके। यह मांगने पर बनता है, Apple platforms पर अपने-आप iCloud Keychain में रखा जाता है, और लाइब्रेरी जितना ही संवेदनशील है।