TgWitness / दस्तावेज़ीकरण

संदर्भ / साक्ष्य

टाइमस्टैम्प

हस्ताक्षरित चेकपॉइंट्स के लिए RFC 3161 टाइमस्टैम्प: प्राधिकरण को क्या भेजा जाता है और प्रतिक्रिया कैसे सत्यापित की जाती है।

TgWitness RFC 3161 अनुरोध तैयार करता है और टाइमस्टैम्प अथॉरिटी (TSA) प्रतिक्रियाओं को सत्यापित करता है। यह मैन्युअल प्रक्रिया न तो कोई TSA चुनती है और न ही डेटा सबमिट करती है; एविडेंस मोड एक शेड्यूल (एविडेंस फॉर्मेट) पर दोनों काम करता है। एक तैयार अनुरोध अभी तक एक टाइमस्टैम्प प्रमाण नहीं है।

प्रमाण क्या बाँधता है#

प्रवाह आरेखखाते के अवलोकन → SHA-256 चेन और Ed25519 हस्ताक्षर; SHA-256 चेन और Ed25519 हस्ताक्षर → हस्ताक्षरित चेकपॉइंट; हस्ताक्षरित चेकपॉइंट → सटीक-बाइट हैश और यादृच्छिक नॉनस; सटीक-बाइट हैश और यादृच्छिक नॉनस → RFC 3161 अनुरोध; RFC 3161 अनुरोध → स्वतंत्र टीएसए; स्वतंत्र टीएसए → हस्ताक्षरित TSA प्रतिक्रिया; हस्ताक्षरित चेकपॉइंट → डेटा, नॉनस और स्पष्ट CA ट्रस्ट सत्यापित करें; हस्ताक्षरित TSA प्रतिक्रिया → डेटा, नॉनस और स्पष्ट CA ट्रस्ट सत्यापित करेंखाते के अवलोकनSHA-256 चेन और Ed25519हस्ताक्षरहस्ताक्षरित चेकपॉइंटसटीक-बाइट हैश औरयादृच्छिक नॉनसRFC 3161 अनुरोधस्वतंत्र टीएसएहस्ताक्षरित TSAप्रतिक्रियाडेटा, नॉनस और स्पष्टCA ट्रस्ट सत्यापितकरें
चित्र को पाठ के रूप में
  1. खाते के अवलोकन → SHA-256 चेन और Ed25519 हस्ताक्षर
  2. SHA-256 चेन और Ed25519 हस्ताक्षर → हस्ताक्षरित चेकपॉइंट
  3. हस्ताक्षरित चेकपॉइंट → सटीक-बाइट हैश और यादृच्छिक नॉनस
  4. सटीक-बाइट हैश और यादृच्छिक नॉनस → RFC 3161 अनुरोध
  5. RFC 3161 अनुरोध → स्वतंत्र टीएसए
  6. स्वतंत्र टीएसए → हस्ताक्षरित TSA प्रतिक्रिया
  7. हस्ताक्षरित चेकपॉइंट → डेटा, नॉनस और स्पष्ट CA ट्रस्ट सत्यापित करें
  8. हस्ताक्षरित TSA प्रतिक्रिया → डेटा, नॉनस और स्पष्ट CA ट्रस्ट सत्यापित करें

कलेक्टर का हस्ताक्षर रिकॉर्ड को उसकी कुंजी से बांधता है। एक विश्वसनीय TSA प्रतिक्रिया यह स्थापित कर सकती है कि TSA द्वारा बताए गए समय पर एक विशेष चेकपॉइंट मौजूद था। फिर चेकपॉइंट जर्नल उपसर्ग को बांध सकता है। यह प्रत्येक टेलीग्राम कार्रवाई के समय या कैप्चर की गई सामग्री की सच्चाई को स्थापित नहीं करता है।

प्रक्रिया#

  1. कलेक्टर कुंजी फिंगरप्रिंट को एक अलग विश्वसनीय चैनल के माध्यम से सुरक्षित रखें। एक कुंजी जो केवल जाँचे गए ZIP द्वारा प्रदान की गई हो, कलेक्टर की पहचान के लिए अपर्याप्त है।
  2. Exports → Prepare timestamp request में, चयनित वर्कस्पेस का रिक्वेस्ट ZIP डाउनलोड करें। checkpoint.json, timestamp.tsq, SHA256SUMS और README.txt को एक्सट्रेक्ट करें। चेकपॉइंट बाइट्स को न बदलें।
  3. जांच के लिए उपयुक्त एक TSA चुनें। इसके प्रलेखित तरीके का उपयोग करके timestamp.tsq सबमिट करें, HTTP सेवा के लिए application/timestamp-query के साथ। मूल बाइनरी उत्तर को 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 का समर्थन करना चाहिए। विंडोज पर वेरिफायर मानक गिट इंस्टॉलेशन को भी खोजता है। OpenSSL 3.5.9 का परीक्षण एक सिंथेटिक CA/TSA के साथ स्थानीय रूप से किया गया था।

  1. चेकपॉइंट के बाद हस्ताक्षरित जर्नल ZIP निर्यात करें ताकि इसमें वह उपसर्ग शामिल हो। स्वतंत्र रूप से ज्ञात फिंगरप्रिंट का उपयोग करके सत्यापित करें:
python tgwitness/verify.py evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json
  1. कलेक्टर के बाहर ज़िप, चेकपॉइंट, अनुरोध, उत्तर, प्रमाणपत्र श्रृंखला, सत्यापन परिणाम और हैंडऑफ़ रिकॉर्ड को सुरक्षित रखें। प्राप्ति पर सत्यापन दोहराएँ।

सहेजे गए चेकपॉइंट से अनुरोध तैयार करने के लिए:

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

तैयारी JSON को मानकीकृत करती है और आर्काइव में मिलान करने वाले चेकपॉइंट को शामिल करती है। TSA सत्यापन के लिए उस आर्काइव से चेकपॉइंट बाइट्स का उपयोग करें, भले ही इनपुट फ़ाइल में अलग-अलग व्हाइटस्पेस थे।

सत्यापन सीमाएँ#

जाँचें वर्तमान व्यवहार
डेटा सटीक चेकपॉइंट बाइट्स का SHA-256 प्रतिक्रिया से मेल खाना चाहिए
अनुरोध --request के साथ, मूल क्वेरी और नॉनस सत्यापित किए जाते हैं
TSA हस्ताक्षर OpenSSL हस्ताक्षर और स्पष्ट CA तक की चेन को सत्यापित करता है
कलेक्टर हस्ताक्षर अलग से पिन की गई कुंजी के साथ जर्नल सत्यापक द्वारा सत्यापित
रद्दीकरण कोई स्वचालित OCSP/CRL पुनर्प्राप्ति नहीं
दीर्घकालिक वैधता प्रमाणपत्र की समाप्ति के बाद कोई अभिलेखीय सत्यापन नहीं
निर्धारित प्रस्तुति सबूत मोड, डिफ़ॉल्ट रूप से बंद

--request तकनीकी रूप से वैकल्पिक है, लेकिन इसे छोड़ देने से मूल नॉन्स के सत्यापन को रोकता है। इस पूरी प्रक्रिया के लिए, परिणाम का request_checked सत्य होना चाहिए। प्रमाणपत्र सत्यापन इंस्टॉल किए गए OpenSSL के नियमों और सत्यापन समय का पालन करता है। दीर्घकालिक संरक्षण के लिए एक अलग प्रमाणपत्र/रद्दीकरण साक्ष्य नीति की आवश्यकता होती है।

एक मान्य क्रिप्टोग्राफिक हस्ताक्षर स्वतः ही एक प्रमाणित टाइमस्टैम्प या कानूनी स्वीकार्यता का निर्धारण नहीं है। यदि किसी ऑपरेटर ने टाइमस्टैम्पिंग से पहले अवलोकन गढ़े, तो TSA उन बाइट्स को एंकर करता है; यह उनकी सत्यता स्थापित नहीं करता।

हैंडऑफ़ रिकॉर्ड#

मामले की पहचानकर्ता, प्रेषक और प्राप्तकर्ता, यूटीसी स्थानांतरण समय और उसका स्रोत, उद्देश्य, फ़ाइलनाम/SHA-256 मान, कलेक्टर फिंगरप्रिंट, अनुक्रम सीमा, ज्ञात अंतराल, सत्यापनकर्ता संस्करण और सत्यापन परिणाम को रिकॉर्ड करें। इस रिकॉर्ड पर हस्ताक्षर करें और इसे अपने संगठन की प्रक्रिया के माध्यम से स्वतंत्र रूप से बनाए रखें। TgWitness में एक बहु-उपयोगकर्ता कस्टडी-रिकॉर्ड सिस्टम लागू नहीं किया गया है।

विकास के दौरान किसी स्वतंत्र लाइव TSA से संपर्क नहीं किया गया। स्थानीय परीक्षण संगतता और बदले गए डेटा, नॉनस या CA के अस्वीकृति की जाँच के लिए एक सिंथेटिक CA/TSA बनाते हैं।