وثائق المسجل

توثيق تسجيل الإثبات والأدلة المقاومة للتلاعب.

وثائق المنتجات الأخرى

مسجل وقت تشغيل المسجل وهندسة الحزمة

Audience: Engineers changing ingest/runtime behavior, bundle export, or الجمهور: المهندسون الذين يغيرون سلوك الإدخال/التشغيل، تصدير الحزم، أو مسارات التحقق.


جدول المحتويات

  1. نظرة عامة تنفيذية
  2. دورة حياة محرك التسجيل
  3. إغلاق تلقائي وإغلاق القطع
  4. حدود المحول
  5. بناء حزمة خط الأنابيب
  6. 7-مرحلة التحقق
  7. حدود مزود الأدلة
  8. حالة تعزيز وقت التشغيل
  9. مرجع متقاطع ملف بملف

نظرة عامة تنفيذية

recorder هو طبقة التنسيق في وقت التشغيل. يقوم بإغلاق المدخلات غير الموثوقة في أظرف مرتبطة بسلسلة قابلة للإضافة فقط، ويتحكم في دورة حياة الأجزاء، ويبني حزمًا قابلة للنقل من جبر المحددات، ويحقق في الحزم بشكل غير متصل في الذاكرة.

F:crates/recorder/src/lib.rs L11-L29 F:crates/recorder/src/lib.rs L34-L56


دورة حياة محرك التسجيل

RecorderEngine يمتلك حالة المقطع النشط ويفرض الثوابت:

  • صفر أو واحد من القطاعات النشطة،
  • يبدأ التسلسل من 0 لكل جزء،
  • تقدم رأس السلسلة حسب الإضافة،
  • سلوك الإضافة فقط.

F:crates/recorder/src/engine.rs L22-L35 F:crates/recorder/src/engine.rs L108-L137

سلوك بدء التشغيل:

  • يتحقق من صحة RecorderConfig،
  • يرفض القيم غير الصحيحة لـ recorder_id أثناء التحقق من صحة التكوين،
  • يستعيد بيانات التعريف الخاصة بالجزء النشط إذا كانت موجودة،
  • executes startup read-back verification for active segment tails when startup_verification_depth > 0. F:crates/recorder/src/engine.rs L154-L197 F:crates/recorder/src/engine.rs L372-L543

سلوك الاستهلاك:

  • حساب تجزئة المحتوى وتجميع التجزئة،
  • حقن التوقيع الاختياري،
  • تخزين الإضافة،
  • in-memory chain-head and envelope-count update. F:crates/recorder/src/engine.rs L376-L436

تلقائي-الختم وختم القطع

يدعم التكوين None و AfterCount و AfterDuration و Combined. يتم رفض عتبات القيم الصفرية عند التحقق. يجب أن يلبي recorder_id نفس قيود شكل الهوية المستخدمة من قبل معرفات الممثل في وقت التشغيل، لذا فإن المعرفات غير الصالحة تفشل في الإغلاق عند بدء التشغيل بدلاً من ذلك في تدفقات المقطع/الختم. F:crates/recorder/src/config.rs L36-L85 F:crates/recorder/src/config.rs L117-L165

تدفق الإغلاق:

يتم استدعاء تقييم الإغلاق التلقائي بعد كل إضافة ناجحة لظرف البيانات. F:crates/recorder/src/engine.rs L505-L565


حدود المحول

LocalRecorderAdapter يلف RecorderEngine في tokio::sync::Mutex لتلبية متطلبات السمة المشتركة Send + Sync مع الحفاظ على الوصول الحصري القابل للتعديل في وقت التشغيل. F:crates/recorder/src/local_adapter.rs L20-L24

emit_envelope و emit_with_attachments كلاهما يستدعي التحقق من الفشل المغلق بشكل صريح قبل تفويض المسجل. F:crates/recorder/src/local_adapter.rs L120-L165 F:crates/recorder/src/validation.rs L46-L83


بناء حزمة خط الأنابيب

BundleBuilder::build خط الأنابيب:

  1. حل المحدد،
  2. قم بتجميع الأظرف حسب القطاع بشكل حتمي،
  3. بناء بيانات التعريف الخاصة بالشمول لكل شريحة،
  4. حساب الآباء المفقودين وإغلاق الإرفاق،
  5. تجميع بيان التحقق.

F:crates/recorder/src/bundle_builder.rs L17-L35 F:crates/recorder/src/bundle_builder.rs L129-L172

تشمل جبر المحددات محددات الشريحة/الوقت/التصفية/المعرف والاتحادات المركبة مع إزالة التكرار الحتمية عبر BTreeMap. F:crates/recorder/src/bundle_builder.rs L415-L479

تستخدم القطاعات الجزئية دعامات إثبات (chain_hash التي تسبق الظرف الأول المضمن) للتحقق من الاستمرارية. F:crates/recorder/src/bundle_builder.rs L255-L290


7-Phase Verifier

Verifier::verify ينفذ فحوصات الحزمة في الذاكرة بهذا الترتيب:

  1. تنسيق البيان / خوارزمية التجزئة وفحوصات سلامة الهيكلية،
  2. سلامة تجزئة المرفقات،
  3. تجزئة محتوى الظرف ووجود المرفقات،
  4. استمرارية سلسلة كل جزء،
  5. ربط سلفيات عبر القطاعات،
  6. التحقق من التوقيع مع جذر الثقة الاختياري + سياسة الثقة،
  7. تجميع الحكم.

قبل تنفيذ المرحلة، يفرض المدقق سياسة عمل محدودة ويفشل في حالة تجاوز الحدود (الأقسام، أظرف كل قسم، الأظرف الإجمالية، المرفقات الإجمالية، والمراجع المرفقة لكل ظرف).

F:crates/recorder/src/verifier.rs L13-L26 F:crates/recorder/src/verifier.rs L95-L136 F:crates/recorder/src/verifier.rs L500-L651

جميع مقارنات التجزئة تستخدم المساواة في وقت ثابت. F:crates/recorder/src/verifier.rs L29-L52

يدعم مخرج التحقق أيضًا تجسيد النصوص الحتمية لاستخدام حزمة التدقيق. VerificationTranscript يلتقط إصدار المخطط، بيانات الحزمة الوصفية، بيانات الجذر الثقة الاختيارية، الحمولة الكاملة للحكم، وعدد الملخصات الحتمية. F:crates/recorder/src/verification_transcript.rs F:crates/recorder/src/verifier.rs


حدود مزود الأدلة

RecorderEvidenceProvider ينفذ خاصية EvidenceProvider من خلال التفويض لتخزين الاستعلام، وبناء الحزم، والمحقق. F:crates/recorder/src/evidence_provider.rs L48-L67

طرق:

  • list_bundles enumerates sealed segments with stable IDs derived from list_bundles يعد قائمة بالمقاطع المغلقة مع معرفات مستقرة مستمدة من معرفات المقاطع ويدعم دلالات المؤشر/الحد.
  • fetch_bundle resolves the requested bundle ID to a sealed segment and builds fetch_bundle يحل معرف الحزمة المطلوب إلى شريحة مختومة ويبني باستخدام BundleSelector::BySegment،
  • verify_bundle يفوض إلى مدقق من 7 مراحل،
  • query_envelopes يفوض استعلامات تصفية مخزن الأظرف.

تتضمن ضوابط حدود المزود الآن حدًا صريحًا للفشل المغلق لتطبيع/رفض حدود الطلبات وحدود تجسيد حزمة القطاعات.

F:crates/recorder/src/evidence_provider.rs L123-L286


حالة تعزيز وقت التشغيل

تم الانتهاء مؤخرًا من التشغيل:

  1. Verifier phase 6 now enforces trust-root key lookup, cryptographic signature المرحلة 6 من التحقق الآن تفرض البحث عن مفتاح الجذر الثقة، والتحقق من صحة التوقيع التشفيري، وفحوصات سياسة الثقة عند توفير جذر الثقة.
  2. Recorder startup now performs fail-closed read-back verification over the بدء تشغيل المسجل الآن يقوم بإجراء تحقق من القراءة المغلقة الفاشلة على آخر N مظروف من الجزء النشط (startup_verification_depth).
  3. Evidence provider now exposes stable bundle IDs and true fetch-by-ID مزود الأدلة الآن يكشف عن معرفات الحزم المستقرة ودلالات جلب حقيقية حسب المعرف للقطاعات المغلقة.
  4. Verifier phase 1 now fail-closes on manifest structural tampering (segment مرحلة التحقق 1 الآن تغلق بشكل فاشل عند التلاعب الهيكلي بالبيان (عدم تطابق بيانات المقطع وقائمة المرفقات).
  5. Recorder config validation now fail-closes malformed recorder_id values الآن تتحقق عملية التحقق من تكوين المسجل من القيم غير الصحيحة لـ recorder_id وتغلق بشكل فاشل قبل الوصول إلى سلوك الفتح/الإغلاق في وقت التشغيل.
  6. الآن يفرض Verifier حدود عمل محددة بشكل صريح عند حدود المكتبة.
  7. Evidence provider now enforces bounded query/list/materialization limits and مزود الأدلة الآن يفرض حدود استعلام/قائمة/تجسيد محددة ويرفض الحدود الكبيرة المقدمة من المتصلين.
  8. System tests now cover manifest structural tamper, single-open-segment تغطي اختبارات النظام الآن التلاعب الهيكلي في البيان، وإنفاذ القطعة المفتوحة الواحدة، ومسارات الفشل المغلقة بسبب فساد الاستمرارية من البداية إلى النهاية.
  9. Verifier transcript export support is implemented through Verifier::verify_with_transcript لإصدار العناصر الحتمية.

F:crates/recorder/src/verifier.rs L509-L651 F:crates/recorder/src/engine.rs L154-L197 F:crates/recorder/src/engine.rs L380-L543 F:crates/recorder/src/evidence_provider.rs L52-L300 F:system-tests/tests/suites/bundle.rs L563-L684 F:system-tests/tests/suites/recorder.rs L279-L327 F:system-tests/tests/suites/persistence.rs L375-L468


مرجع متقاطع لكل ملف

المنطقةالملفالملاحظات
دورة حياة المحركcrates/recorder/src/engine.rsتدفق الفتح/التسجيل/الإغلاق وتقدم السلسلة.
تكوين وقت التشغيلcrates/recorder/src/config.rsالثوابت الخاصة بالإغلاق التلقائي وتكوين بدء التشغيل.
حدود المحولcrates/recorder/src/local_adapter.rsتنفيذ المحول داخل العملية.
التحقق من المدخلاتcrates/recorder/src/validation.rsفشل مغلق في فحوصات الظرف غير المغلق.
منشئ الحزمةcrates/recorder/src/bundle_builder.rsحل المحدد وتجميع الحزمة الحتمي.
المدققcrates/recorder/src/verifier.rsخوارزمية التحقق ذات 7 مراحل.
مزود الأدلةcrates/recorder/src/evidence_provider.rsتنفيذ واجهة الأدلة من جانب السحب.
نموذج الخطأcrates/recorder/src/error.rsتصنيف الفشل الخاص بالتسجيل.