
يجلب باستمرار تحديثات سجل شفافية المفاتيح ويتحقق منها تشفيريًا، ويحافظ على عرض بادئة مكثفة وشجرة سجل، ويعيد رؤوس الأشجار الموقعة عندما تكون التحديثات صالحة.
تطبيق مرجعي لمدقق من طرف ثالث لخدمة شفافية المفاتيح من Signal، استناداً إلى مواصفات شفافية المفاتيح.
هذه الخدمة مكتوبة بلغة Java باستخدام إطار عمل Micronaut. للبناء واختبار الوحدات، شغّل
./mvnw clean test
في الدليل الجذري.
الفئة الرئيسية هي Auditor، والتي تشغّل مهمة مجدولة تطلب دفقاً من التحديثات من خدمة شفافية المفاتيح. تحتفظ بمنظر موجز لكل من شجرة البادئات وشجرة السجل الخاصة بخدمة شفافية المفاتيح، مخزّنةً القدر الكافي فقط من المعلومات للتحقق من كل تحديث وقبوله بالتسلسل. إذا عالج المدقق عدداً معيناً من التحديثات أو انقضى قدر معين من الوقت، يرسل المدقق رأس شجرة موقّعاً إلى خدمة شفافية المفاتيح، للإشارة إلى أن منظوره لشجرتي البادئات والسجل حتى التحديث المحدد متطابق. إذا نجح الاستدعاء البعيد، يكتب المدقق بيانات حالته إلى AuditorStateRepository، والتي قد يستخدمها لاستئناف العمل من أحدث موضع له في سجل شفافية المفاتيح إذا أُعيد تشغيل المدقق.
إذا واجه المدقق تبايناً أثناء التحقق من تحديث ما، فإنه يطرح استثناء InvalidProofException ويتوقف عن إرسال رؤوس الأشجار الموقّعة إلى خدمة شفافية المفاتيح.
لكي تعمل الخدمة، تحتاج إلى حبوب (Beans) Auditor وKeyTransparencyServiceClient وAuditorStateRepository. يصف الجدول أدناه خصائص الإعدادات اللازمة لإنشاء تلك الحبوب.
نستخدم GitHub لتتبع الأخطاء. يجب إرسال القضايا الأمنية إلى [email protected].
لا يمكننا تقديم دعم فني مباشر. احصل على المساعدة في تشغيل هذا البرنامج في بيئتك الخاصة من خلال منتدى المجتمع غير الرسمي.
حقوق النشر 2025 Signal Messenger، LLC
مرخّصة بموجب AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html
| Property | Required? | Description |
|---|
auditor.private-key | نعم | مفتاح خاص Ed25519 بتنسيق PKCS#8 مشفّر بترميز base64 القياسي، ويُستخدم لتوقيع رأس الشجرة المُرسل إلى خدمة شفافية المفاتيح. يمكن توليده عبر openssl genpkey -algorithm ed25519 مع تجاهل ترويسة وتذييل PEM. |
auditor.public-key | نعم | مفتاح عام Ed25519 بتنسيق X509 مشفّر بترميز base64 القياسي، وهو النظير المقابل لـ auditor.private-key. |
auditor.key-transparency-service-signing-public-key | نعم | مفتاح عام Ed25519 بتنسيق PKCS#8 مشفّر بترميز base64 القياسي، يستخدمه العملاء للتحقق من توقيع خدمة شفافية المفاتيح على رأس الشجرة. |
auditor.key-transparency-service-vrf-public-key | نعم | مفتاح عام Ed25519 بتنسيق PKCS#8 مشفّر بترميز base64 القياسي، يستخدمه العملاء للتحقق من أن المدخل إلى دالة عشوائية قابلة للتحقق (مفتاح البحث المطلوب) يطابق المخرج (فهرس الالتزام المستخدم لاجتياز شجرة البادئات). |
auditor.client-certificate | نعم | شهادة بتنسيق PKCS#8 ومشفّرة بتنسيق PEM، تُستخدم لإثبات هوية العميل أثناء TLS المتبادل. |
auditor.client-private-key | نعم | مفتاح خاص بتنسيق PKCS#8 ومشفّر بتنسيق PEM، يُستخدم للتحقق من ملكية شهادة العميل أثناء TLS المتبادل. |
auditor.batch-size | نعم | الحد الأقصى لعدد التحديثات التي يجب أن تعيدها خدمة شفافية المفاتيح في استجابة واحدة. يجب أن تكون هذه القيمة أقل من أو تساوي 1000. |
auditor.interval | لا | الفاصل الزمني الذي يجب أن تعمل فيه مهمة المدقق لمعالجة تحديثات شفافية المفاتيح. القيمة الافتراضية هي دقيقة واحدة. |
auditor.signature.interval | لا | الفاصل الزمني الذي يجب أن يُرسل فيه المدقق رأس شجرة موقّعاً إلى خدمة شفافية المفاتيح، من حيث المدة. القيمة الافتراضية هي ساعة واحدة. |
auditor.signature.page-size | لا | الفاصل الذي يجب أن يُرسل فيه المدقق رأس شجرة موقّعاً إلى خدمة شفافية المفاتيح، من حيث عدد التحديثات. القيمة الافتراضية هي 1,000,000. |
auditor.key-transparency-host | نعم | اسم مضيف خدمة شفافية المفاتيح. |
auditor.key-transparency-port | نعم | المنفذ المستخدم للاتصال بخدمة شفافية المفاتيح. |
storage.dynamodb.region | يجب تحديد واحد بالضبط من storage.<type> | منطقة AWS لجدول DynamoDB المستخدم لتخزين حالة المدقق. |
storage.dynamodb.table-name | يجب تحديد واحد بالضبط من storage.<type> | اسم جدول DynamoDB المستخدم لتخزين حالة المدقق. |
storage.file.name | يجب تحديد واحد بالضبط من storage.<type> | اسم الملف المستخدم لتخزين حالة المدقق. |