Odniesienie / Dowody
Sygnatury czasowe
Sygnatury czasowe zgodne z RFC 3161 dla podpisanych punktów kontrolnych: jakie dane są przesyłane do organu certyfikującego oraz w jaki sposób weryfikowana jest odpowiedź.
TgWitness przygotowuje żądania zgodne z RFC 3161 i weryfikuje odpowiedzi od podmiotu uprawnionego do nadawania znaczników czasu (TSA). Ta procedura ręczna nie obejmuje ani wyboru podmiotu TSA, ani przesyłania danych; tryb dowodowy wykonuje obie te czynności zgodnie z harmonogramem (format dowodowy). Przygotowane żądanie nie stanowi jeszcze dowodu w postaci znacznika czasu.
Co potwierdza ten dowód#
Schemat w formie tekstowej
- Uwagi dotyczące konta → Łańcuch SHA-256 i podpisy Ed25519
- Łańcuch SHA-256 i podpisy Ed25519 → Podpisany punkt kontrolny
- Podpisany punkt kontrolny → Skrót z dokładnością do bajta oraz losowy nonce
- Skrót z dokładnością do bajta oraz losowy nonce → Żądanie zgodne z RFC 3161
- Żądanie zgodne z RFC 3161 → Niezależna agencja TSA
- Niezależna agencja TSA → Podpisana odpowiedź TSA
- Podpisany punkt kontrolny → Weryfikacja danych, wartości nonce oraz wyraźne zaufanie do urzędu certyfikacji (CA)
- Podpisana odpowiedź TSA → Weryfikacja danych, wartości nonce oraz wyraźne zaufanie do urzędu certyfikacji (CA)
Podpis kolektora wiąże zapisy z jego kluczem. Wiarygodna odpowiedź TSA może potwierdzić, że konkretny punkt kontrolny istniał w podanym przez TSA czasie. Punkt kontrolny może następnie powiązać prefiks dziennika. Nie ustala to jednak czasu każdej czynności w Telegramie ani prawdziwości zarejestrowanej treści.
Procedura#
- Należy zachować odcisk klucza kolektora za pośrednictwem oddzielnego, zaufanego kanału. Klucz pochodzący wyłącznie z badanego pliku ZIP nie jest wystarczający do identyfikacji kolektora.
- W sekcji Eksportuj → Przygotuj żądanie znacznika czasu proszę pobrać plik ZIP z żądaniem
dla wybranego obszaru roboczego. Proszę rozpakować pliki
checkpoint.json,timestamp.tsq,SHA256SUMSorazREADME.txt. Proszę nie zmieniać bajtów punktu kontrolnego. - Proszę wybrać TSA odpowiedni do danego dochodzenia. Proszę przesłać plik
timestamp.tsq, korzystając z udokumentowanej metody, a plikapplication/timestamp-query– w przypadku usługi HTTP. Proszę zapisać oryginalną odpowiedź binarną jako pliktimestamp.tsrwraz z punktem końcowym, czasem pobrania oraz wynikiem żądania. Żądanie zawiera skrót i licznik losowy zamiast samych wiadomości; metadane sieciowe nadal ujawniają treść żądania. - Należy uzyskać zaufany certyfikat główny niezależnie od treści odpowiedzi, a także wszelkie wymagane certyfikaty pośrednie. Certyfikat zawarty w odpowiedzi nie staje się zaufany wyłącznie z tego powodu, że się tam znajduje.
- Z poziomu zaufanej instalacji TgWitness proszę zweryfikować:
python -m tgwitness.anchor verify --checkpoint checkpoint.json --request timestamp.tsq --response timestamp.tsr --ca trusted-tsa-root.pem
W razie potrzeby proszę dodać --intermediates tsa-intermediates.pem lub --openssl /path/to/openssl.
OpenSSL musi obsługiwać ts. W systemie Windows narzędzie weryfikacyjne przeszukuje również standardową instalację Git.
OpenSSL w wersji 3.5.9 został przetestowany lokalnie przy użyciu syntetycznego certyfikatu CA/TSA.
- Proszę wyeksportować plik ZIP z podpisanym dziennikiem po osiągnięciu punktu kontrolnego, tak aby zawierał on ten prefiks. Proszę zweryfikować przy użyciu niezależnie znanego odcisku palca:
python tgwitness/verify.py evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json
- Należy zachować plik ZIP, punkt kontrolny, żądanie, odpowiedź, łańcuch certyfikatów, wyniki weryfikacji oraz zapis przekazania poza kolektorem. Weryfikację należy powtórzyć w momencie odbioru.
Aby przygotować zapytanie na podstawie zapisanego punktu kontrolnego:
python -m tgwitness.anchor prepare checkpoint.json --out timestamp-request.zip
Proces przygotowania standaryzuje format JSON i dołącza odpowiedni punkt kontrolny do archiwum. Należy wykorzystać bajty punktu kontrolnego z tego archiwum do weryfikacji TSA, nawet jeśli plik wejściowy zawierał inne znaki spacji.
Granice weryfikacji#
| Sprawdź | Obecne działanie |
|---|---|
| Dane | Wartość SHA-256 dokładnych bajtów punktu kontrolnego musi być zgodna z odpowiedzią |
| Zapytanie | W przypadku algorytmu --request weryfikowane są oryginalne zapytanie oraz wartość nonce |
| Podpis TSA | OpenSSL weryfikuje podpis oraz łańcuch certyfikatów aż do wskazanej instytucji certyfikującej (CA) |
| Podpis zbierającego | Oddzielnie zweryfikowane przez weryfikatora dziennika przy użyciu przypiętego klucza |
| Unieważnienie | Brak automatycznego pobierania plików OCSP/CRL |
| Długoterminowa ważność | Brak weryfikacji archiwalnej po wygaśnięciu certyfikatu |
| Zaplanowane przesłanie | Tryb dowodowy, domyślnie wyłączony |
--request jest technicznie opcjonalny, jednak jego pominięcie uniemożliwia weryfikację
oryginalnego wartości nonce. Aby procedura przebiegła w całości, wynik request_checked musi być prawdziwy.
Weryfikacja certyfikatu odbywa się zgodnie z zasadami i czasem weryfikacji zainstalowanego pakietu OpenSSL.
Długoterminowe przechowywanie wymaga odrębnej polityki dotyczącej certyfikatów i dowodów unieważnienia.
Ważny podpis kryptograficzny nie stanowi automatycznie kwalifikowanego znacznika czasu ani ustalenia dotyczącej dopuszczalności dowodowej. Jeśli operator sfabrykował obserwacje przed naniezieniem znacznika czasu, TSA zakotwicza te bajty; nie potwierdza to jednak ich prawdziwości.
Rejestr przekazania#
Należy zarejestrować identyfikator sprawy, nadawcę i odbiorcę, czas przesłania w formacie UTC oraz jego źródło, cel, nazwy plików/wartości SHA-256, odcisk palca kolektora, zakres sekwencji, znane luki, wersję weryfikatora oraz wynik weryfikacji. Proszę podpisać i przechowywać ten zapis niezależnie, zgodnie z procedurami obowiązującymi w Państwa organizacji. System rejestracji dowodów obsługujący wielu użytkowników nie jest zaimplementowany w TgWitness.
W trakcie opracowywania nie nawiązano kontaktu z żadnym niezależnym podmiotem TSA działającym w trybie rzeczywistym. W ramach testów lokalnych tworzony jest syntetyczny podmiot CA/TSA w celu sprawdzenia zgodności oraz odrzucenia zmienionych danych, wartości nonce lub certyfikatu CA.