
लगातार कुंजी पारदर्शिता लॉग अपडेट प्राप्त करता है और उन्हें क्रिप्टोग्राफ़िक रूप से सत्यापित करता है, एक संक्षिप्त उपसर्ग और लॉग ट्री दृश्य बनाए रखता है, और जब अपडेट मान्य होते हैं तो हस्ताक्षरित ट्री हेड लौटाता है।
Signal की key transparency सेवा के लिए तृतीय-पक्ष ऑडिटर का एक रेफरेंस इम्प्लीमेंटेशन, जो key transparency विनिर्देश पर आधारित है।
यह सेवा Java में Micronaut फ्रेमवर्क का उपयोग करके लिखी गई है। बिल्ड और यूनिट परीक्षण के लिए, चलाएँ
./mvnw clean test
रूट निर्देशिका में।
मुख्य वर्ग Auditor है, जो एक अनुसूचित कार्य चलाता है जो key transparency सेवा से अपडेट की एक धारा का अनुरोध करता है। यह key transparency सेवा के prefix tree और log tree का एक संक्षिप्त दृश्य बनाए रखता है, प्रत्येक अपडेट को क्रमिक रूप से सत्यापित करने और स्वीकार करने के लिए केवल उतनी ही जानकारी संग्रहीत करता है जितनी आवश्यक है। यदि ऑडिटर ने एक निश्चित संख्या में अपडेट संसाधित किए हैं या एक निश्चित समय बीत चुका है, तो ऑडिटर key transparency सेवा को एक signed tree head वापस भेजता है, जो यह दर्शाता है कि दिए गए अपडेट तक prefix और log trees पर उसका दृश्य मेल खाता है। यदि दूरस्थ कॉल सफल होती है, तो ऑडिटर अपने स्टेट डेटा को AuditorStateRepository में लिखता है, जिसका उपयोग वह ऑडिटर के पुनरारंभ होने पर key transparency लॉग में अपनी सबसे हाल की स्थिति से फिर से शुरू करने के लिए कर सकता है।
यदि ऑडिटर को किसी अपडेट को सत्यापित करने में असंगति मिलती है, तो वह InvalidProofException फेंकता है और key transparency सेवा को signed tree heads भेजना बंद कर देता है।
सेवा को चलाने के लिए Auditor, KeyTransparencyServiceClient, और AuditorStateRepository बीन्स की आवश्यकता होती है। नीचे दी गई तालिका उन बीन्स को इंस्टेंशिएट करने के लिए आवश्यक कॉन्फ़िगरेशन प्रॉपर्टीज़ का वर्णन करती है।
हम बग ट्रैकिंग के लिए GitHub का उपयोग करते हैं। सुरक्षा संबंधी मुद्दों को [email protected] पर भेजा जाना चाहिए।
हम प्रत्यक्ष तकनीकी सहायता प्रदान नहीं कर सकते। अपने स्वयं के वातावरण में इस सॉफ़्टवेयर को चलाने में सहायता हमारे अनौपचारिक सामुदायिक फ़ोरम में प्राप्त करें।
कॉपीराइट 2025 Signal Messenger, LLC
AGPLv3 के तहत लाइसेंस प्राप्त: https://www.gnu.org/licenses/agpl-3.0.html
| प्रॉपर्टी | आवश्यक? | विवरण |
|---|
auditor.private-key | हाँ | PKCS#8 प्रारूप में Ed25519 निजी कुंजी, जो मानक base64 में एन्कोडेड है और key transparency सेवा को भेजे गए tree head पर हस्ताक्षर करने के लिए उपयोग की जाती है। इसे openssl genpkey -algorithm ed25519 के माध्यम से उत्पन्न करके PEM हेडर और फुटर को हटाकर प्राप्त किया जा सकता है। |
auditor.public-key | हाँ | एक X509 प्रारूप में Ed25519 सार्वजनिक कुंजी, जो मानक base64 में एन्कोडेड है और auditor.private-key की समकक्ष है। |
auditor.key-transparency-service-signing-public-key | हाँ | PKCS#8 प्रारूप में Ed25519 सार्वजनिक कुंजी, जो मानक base64 में एन्कोडेड है और क्लाइंट द्वारा tree head पर key transparency सेवा के हस्ताक्षर को सत्यापित करने के लिए उपयोग की जाती है। |
auditor.key-transparency-service-vrf-public-key | हाँ | PKCS#8 प्रारूप में Ed25519 सार्वजनिक कुंजी, जो मानक base64 में एन्कोडेड है और क्लाइंट द्वारा यह सत्यापित करने के लिए उपयोग की जाती है कि Verifiable Random Function (अनुरोधित खोज कुंजी) का इनपुट आउटपुट (prefix tree को ट्रैवर्स करने के लिए उपयोग किया जाने वाला commitment index) से मेल खाता है। |
auditor.client-certificate | हाँ | PKCS#8 प्रारूप में PEM-एन्कोडेड प्रमाणपत्र जो पारस्परिक TLS के दौरान क्लाइंट की पहचान साबित करने के लिए उपयोग किया जाता है। |
auditor.client-private-key | हाँ | PKCS#8 प्रारूप में PEM-एन्कोडेड निजी कुंजी जो पारस्परिक TLS के दौरान क्लाइंट प्रमाणपत्र के स्वामित्व को सत्यापित करने के लिए उपयोग की जाती है। |
auditor.batch-size | हाँ | एक एकल प्रतिक्रिया में key transparency सेवा द्वारा लौटाए जाने वाले अपडेट की अधिकतम संख्या। यह मान 1000 से कम या उसके बराबर होना चाहिए। |
auditor.interval | नहीं | वह समय अंतराल जिस पर ऑडिटर कार्य को key transparency अपडेट्स को संसाधित करने के लिए चलना चाहिए। डिफ़ॉल्ट 1 मिनट है। |
auditor.signature.interval | नहीं | वह अंतराल जिस पर ऑडिटर को key transparency सेवा को एक signed tree head भेजना चाहिए, समय अवधि के रूप में। डिफ़ॉल्ट 1 घंटा है। |
auditor.signature.page-size | नहीं | वह अंतराल जिस पर ऑडिटर को key transparency सेवा को एक signed tree head भेजना चाहिए, अपडेट की संख्या के रूप में। डिफ़ॉल्ट 1,000,000 है। |
auditor.key-transparency-host | हाँ | key transparency सेवा का होस्टनाम। |
auditor.key-transparency-port | हाँ | key transparency सेवा से कनेक्ट करने के लिए पोर्ट। |
storage.dynamodb.region | ठीक एक storage.<type> निर्दिष्ट किया जाना चाहिए | ऑडिटर स्टेट संग्रहीत करने के लिए उपयोग की जाने वाली DynamoDB तालिका का AWS क्षेत्र। |
storage.dynamodb.table-name | ठीक एक storage.<type> निर्दिष्ट किया जाना चाहिए | ऑडिटर स्टेट संग्रहीत करने के लिए उपयोग की जाने वाली DynamoDB तालिका का नाम। |
storage.file.name | ठीक एक storage.<type> निर्दिष्ट किया जाना चाहिए | ऑडिटर स्टेट संग्रहीत करने के लिए उपयोग की जाने वाली फ़ाइल का नाम। |