TgWitness / التوثيق

مرجع / الأدلة

الطوابع الزمنية

الطوابع الزمنية وفقًا لمعيار RFC 3161 لنقاط التحقق الموقعة: ما الذي يتم إرساله إلى الجهة المختصة وكيف يتم التحقق من الرد.

تقوم TgWitness بإعداد طلبات RFC 3161 والتحقق من استجابات سلطة الطابع الزمني (TSA). لا يقوم هذا الإجراء اليدوي باختيار TSA ولا بإرسال البيانات؛ بينما يقوم «وضع الأدلة» بكلا الأمرين وفقًا لجدول زمني (تنسيق الأدلة). الطلب المُعدّ لا يُعدّ بعد دليلاً على الطابع الزمني.

ما الذي يثبت صحة الدليل#

مخطط تدفقملاحظات حول الحساب → سلسلة SHA-256 وتوقيعات Ed25519; سلسلة SHA-256 وتوقيعات Ed25519 → نقطة تفتيش موقعة; نقطة تفتيش موقعة → هاش بالبايت الدقيق ورقم عشوائي (nonce); هاش بالبايت الدقيق ورقم عشوائي (nonce) → طلب RFC 3161; طلب RFC 3161 → TSA المستقلة; TSA المستقلة → رد موقّع من إدارة أمن النقل (TSA); نقطة تفتيش موقعة → التحقق من البيانات، والرقم العشوائي (nonce)، والثقة الصريحة في سلطة التصديق (CA); رد موقّع من إدارة أمن النقل (TSA) → التحقق من البيانات، والرقم العشوائي (nonce)، والثقة الصريحة في سلطة التصديق (CA)ملاحظات حول الحسابسلسلة SHA-256 وتوقيعاتEd25519نقطة تفتيش موقعةهاش بالبايت الدقيقورقم عشوائي (nonce)طلب RFC 3161TSA المستقلةرد موقّع من إدارة أمنالنقل (TSA)التحقق من البيانات،والرقم العشوائي(nonce)، والثقةالصريحة في سلطةالتصديق (CA)
الرسم التخطيطي كنص
  1. ملاحظات حول الحساب → سلسلة SHA-256 وتوقيعات Ed25519
  2. سلسلة SHA-256 وتوقيعات Ed25519 → نقطة تفتيش موقعة
  3. نقطة تفتيش موقعة → هاش بالبايت الدقيق ورقم عشوائي (nonce)
  4. هاش بالبايت الدقيق ورقم عشوائي (nonce) → طلب RFC 3161
  5. طلب RFC 3161 → TSA المستقلة
  6. TSA المستقلة → رد موقّع من إدارة أمن النقل (TSA)
  7. نقطة تفتيش موقعة → التحقق من البيانات، والرقم العشوائي (nonce)، والثقة الصريحة في سلطة التصديق (CA)
  8. رد موقّع من إدارة أمن النقل (TSA) → التحقق من البيانات، والرقم العشوائي (nonce)، والثقة الصريحة في سلطة التصديق (CA)

يربط توقيع المجمع السجلات بمفتاحه. ويمكن لاستجابة موثوقة من TSA أن تثبت وجود نقطة تفتيش معينة في الوقت المحدد من قبل TSA. ويمكن لنقطة التفتيش بعد ذلك ربط بادئة السجل. ولا يثبت هذا وقت كل إجراء على Telegram أو صحة المحتوى الذي تم التقاطه.

الإجراء#

  1. يجب الاحتفاظ ببصمة مفتاح أداة التجميع عبر قناة موثوقة منفصلة. فالمفتاح المقدم من ملف ZIP الذي يخضع للفحص وحده لا يكفي لتحديد هوية أداة التجميع.
  2. في «التصدير» → «إعداد طلب الطابع الزمني»، قم بتنزيل ملف ZIP الخاص بالطلب لمساحة العمل المحددة. قم باستخراج ملفات checkpoint.json وtimestamp.tsq وSHA256SUMS و README.txt. لا تقم بتغيير بايتات نقطة التحقق.
  3. اختر TSA مناسبة للتحقيق. أرسل timestamp.tsq باستخدام الطريقة الموثقة الخاصة بها، مع application/timestamp-query لخدمة HTTP. احفظ الرد الثنائي الأصلي باسم timestamp.tsr، ونقطة النهاية، ووقت الاسترداد ونتيجة الطلب. يحتوي الطلب على هاش ورقم عشوائي بدلاً من الرسائل؛ ولا تزال بيانات الشبكة الوصفية تكشف عن الطلب.
  4. احصل على شهادة الجذر الموثوقة بشكل مستقل عن الرد، بالإضافة إلى أي شهادات وسيطة مطلوبة. لا تصبح الشهادة الموجودة في الرد موثوقة لمجرد أنها مدرجة فيه.
  5. من تثبيت موثوق لـ TgWitness، تحقق مما يلي:
python -m tgwitness.anchor verify --checkpoint checkpoint.json --request timestamp.tsq --response timestamp.tsr --ca trusted-tsa-root.pem

أضف --intermediates tsa-intermediates.pem أو --openssl /path/to/openssl إذا لزم الأمر. يجب أن يدعم OpenSSL ts. في نظام Windows، يقوم أداة التحقق أيضًا بالبحث في تثبيت Git القياسي. تم اختبار OpenSSL 3.5.9 محليًّا باستخدام CA/TSA اصطناعي.

  1. قم بتصدير ملف ZIP للسجل الموقّع بعد نقطة التحقق بحيث يتضمن تلك البادئة. تحقق باستخدام البصمة المعروفة بشكل مستقل:
python tgwitness/verify.py evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json
  1. الحفاظ على ملف ZIP ونقطة التحقق والطلب والرد وسلسلة الشهادات ونتائج التحقق وسجل التسليم خارج أداة التجميع. تكرار عملية التحقق عند الاستلام.

لإعداد طلب من نقطة تفتيش محفوظة:

python -m tgwitness.anchor prepare checkpoint.json --out timestamp-request.zip

تعمل عملية التحضير على توحيد تنسيق JSON وتضمين نقطة التحقق المطابقة في الأرشيف. استخدم بايتات نقطة التحقق من ذلك الأرشيف للتحقق بواسطة TSA، حتى لو كان ملف الإدخال يحتوي على مسافات بيضاء مختلفة.

حدود التحقق#

تحقق السلوك الحالي
البيانات يجب أن يتطابق SHA-256 لبايتات نقطة التحقق الدقيقة مع الاستجابة
طلب باستخدام --request، يتم التحقق من صحة الاستعلام الأصلي والقيمة العشوائية (nonce)
توقيع TSA يقوم OpenSSL بالتحقق من التوقيع وسلسلة الشهادات حتى الوصول إلى المرجع المصدق (CA) المحدد صراحةً
توقيع المجمع تم التحقق منها بشكل منفصل بواسطة أداة التحقق من السجلات باستخدام مفتاح مثبت
الإلغاء لا يوجد استرداد تلقائي لـ OCSP/CRL
صلاحية طويلة الأمد لا يتم التحقق من صحة الأرشيف بعد انتهاء صلاحية الشهادة
تقديم مجدول وضع الأدلة، معطّل افتراضيًّا

يُعد --request اختياريًا من الناحية الفنية، لكن حذفه يمنع التحقق من رقم التشفير العشوائي الأصلي. بالنسبة لهذا الإجراء الكامل، يجب أن تكون نتيجة request_checked صحيحة. يتبع التحقق من الشهادة قواعد OpenSSL المثبتة ومدة التحقق المحددة. يتطلب الحفظ طويل الأمد سياسة منفصلة بشأن الشهادات وأدلة الإلغاء.

التوقيع التشفيري الصحيح لا يُعتبر تلقائيًّا طابعًا زمنيًّا مؤهلاً أو تحديدًا للمقبولية القانونية. إذا قام المشغل بتلفيق الملاحظات قبل وضع الطابع الزمني، فإن TSA تثبت تلك البايتات؛ لكنها لا تثبت صحتها.

سجل التسليم#

سجل معرّف الحالة، والمرسل والمستلم، ووقت الإرسال بتوقيت UTC ومصدره، والغرض، وأسماء الملفات/قيم SHA-256، وبصمة المجمع، ونطاق التسلسل، والثغرات المعروفة، وإصدار أداة التحقق ونتيجة التحقق. قم بتوقيع هذا السجل والاحتفاظ به بشكل مستقل من خلال إجراءات مؤسستك. لا يتم تطبيق نظام سجلات الحفظ متعدد المستخدمين في TgWitness.

لم يتم الاتصال بأي جهة TSA مستقلة أثناء التطوير. تُنشئ الاختبارات المحلية جهة CA/TSA اصطناعية للتحقق من التوافق ورفض البيانات المعدلة أو الرقم العشوائي أو CA.