Belgeler / 08
Kanıtların nasıl işlediğini görün
Bir mesaj değişebilir. Gözlemlediklerinizin kaydı, her zaman doğrulanabilir olmalıdır.
Aşağıdaki iki küçük denemeyi inceleyin. Bu denemeler kurgusal mesajlar kullanır, tarayıcınızda kalır ve hiçbir zaman Telegram'a bağlanmaz.
Tek mesaj, üç gözlem
Telegram yeni bir mesaj, bir düzenleme veya bir silme bildirimi gönderdiğinde, toplayıcı uygulama üç ayrı gözlem ekler. Düzenleme, ilk kaydı değiştirmez. Silme bildirimi ise onu silmez.
Mesaj, sohbet ekranından kayboldu.
- 01✓
message.newSaat 10:00'da buluşalım
- 02✓
message.editedSaat 11:00'da buluşalım
- 03✓
message.deleted#42 için silme bildirimi
Alınan üç gözlem de kayıt defterinde kalır.
Bir silme bildirimi, ne güvenilir bir silme zamanını ne de mesajı silen kişiyi belirtir. Bu değerlerin bilinmemesi, bir gözlem ile bir tahmin arasındaki ayrımı korur.
Bir kaydı değiştirin. Hash değerini takip edin.
Her kayıt, bir önceki kaydın hash değerini içerir. Kayıtın kendi hash değeri, bu bağlantı da dahil olmak üzere olay alanlarını kapsar. Harici olarak tutulan bir kontrol noktası, belirli bir günlük uzunluğunu ve başlangıç hash değerini sabitler.
h₁ = SHA-256(e₁)64 sıfırlı bağlantılarh₂ = SHA-256(e₂)h₁ etiketini içerirh₃ = SHA-256(e₃)h₂ içerirh₃Bu sabit sınırı, sağlanan kayıt defteriyle karşılaştırın.Bir olayın değiştirilmesi, o olayın hash değerini değiştirir. Zincirin yeniden oluşturulması, zincirin başını değiştirir. Zincirin sonunun kaldırılması, zinciri saklanan kontrol noktasından daha kısa hale getirir.
2 numaralı kaydı ve tam hash değerlerini inceleyin
Bu, örnekte yer alan tam UTF-8 JSON hash değeridir. Değerler hayali olup, dokuz alan ve serileştirme, kayıt defteri formatıyla uyumludur.
- Kaydedilen kayıt 2 hash
- Yeniden hesaplanan kayıt 2 hash
Asıl kurallar, birkaç satırda
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))
C, dokuz olay alanını UTF-8 JSON olarak serileştirir: sıralı anahtarlar, fazladan boşluk yok, ASCII kaçış karakterleri yok ve NaN/sonsuzluk yok. Olayın previous_hash değeri hi−1'dir. Görüntülenen h0, 64 sıfır karakteri anlamına gelir; imzalar 32 ham özet baytını kapsar.
Dokuz alan şunlardır: seq, observed_at, source_at, kind, chat_id, message_id, actor_id, payload ve previous_hash. Bu, TgWitness’in belgelenmiş JSON kodlamasıdır; hash ve imza kendileri hash giriş alanları değildir.
hexport[Ncheckpoint] = Hcheckpoint
Sabitlenmiş toplayıcı anahtarının altındaki kontrol noktası imzasını doğrulayın, ardından sınırını doğrulanmış günlükle karşılaştırın. Daha sonraki bir dışa aktarım daha fazla kayıt içerebilir; ancak yine de önceki kontrol noktasıyla uyumlu olmalıdır.
Üç soru, üç farklı kontrol
Hash değerlerini ve imzaları, ayrı bir güvenilir anahtarla karşılaştırarak doğrulayın.
02 / SÜREKLİLİKDaha önce neler korunmuştu?İmzalı bir dışa aktarım dosyasını, ayrı bir tanık tarafından tutulan kontrol noktalarıyla karşılaştırın.
03 / TESLİMATBu test olayları geldi mi?Her hesabın günlüğüyle, kontrollü gönderme, düzenleme ve silme işlemlerini karşılaştırın.
Eşleşen bir hash zinciri, bütünlük sorusuna yanıt verir. Ancak bu, mesajın Telegram üzerinden tam olarak iletildiğini, mesajın doğruluğunu veya bağımsız olarak güvenilir bir gözlem zamanını kanıtlamaz.
Vakalara ilişkin bilgilerin toplanmasından dava dosyasının hazırlanmasına kadar tüm soruşturma sürecini takip edin.