Tanık Dokümantasyon

Kanıt ve doğrulama

#Bağımsız doğrulama

Ürünün merkezî iddiası, bir kaydın sonradan değiştirilemeyeceğidir. Bu iddia, tam olarak sizin ve denetçinizin onu bize sormadan kontrol edebildiği kadar değerlidir. Bu sayfa kontrolün nasıl yapıldığını anlatır; isteyen kendi doğrulayıcısını yazıp aynı cevabı alabilir.

#Üç katman

KatmanNe yaparKim doğrular
ZincirHer kayıt bir öncekinin özetini taşır. Aradan bir kayıt çıkarılır ya da değiştirilirse zincir kırılır.Kayıtları elinde tutan herkes, anahtarsız
Günlük checkpointHer gün zincirin son kaydı Ed25519 ile imzalanır.Açık anahtarı olan herkes
Aylık çapaAy kapanırken bölümün tamamı imzalı bir çapayla mühürlenir; bir sonraki ay bu çapaya bağlanır.Açık anahtarı olan herkes

Veritabanı tarafında ayrıca: uygulamanın veritabanı kullanıcısı denetim koleksiyonunda yalnız ekleme ve okuma yapabilir; güncelleme ve silme yetkisi yoktur.

#Özet nasıl hesaplanır

Kayıttan hash ve _id alanları çıkarılır, kalan nesne RFC 8785 (JCS) ile kanonik biçime çevrilir ve SHA-256(prev_hash ‖ kanonik_form) alınır. Sonuç küçük harfli onaltılıktır. Bölümün ilk kaydında prev_hash sabit bir başlangıç değeridir.

Checkpoint imzası, belgenin signature alanı çıkarılmış hâlinin aynı kanonik biçimi üzerinden Ed25519 ile atılır. Checkpoint'in last_seq kaydının hash'i, belgenin last_hash değeriyle aynı olmalıdır; bu adım zinciri imzaya bağlar.

#Doğrulayıcı aracı

Tanık ile birlikte gelen nev-verify, ağ geçidine bağımlı değildir ve çevrimdışı çalışır: kayıtlar bir USB bellekte, denetçi kendi bilgisayarında.

nev-verify --records kayitlar.jsonl \
           --checkpoint checkpoint.json \
           --public-key checkpoint.pem.pub
Çıkış koduAnlamı
0Doğrulandı
1Bulgu var; rapor hangisi olduğunu yazar
2Çalıştırılamadı: eksik argüman, okunamayan dosya

--json makine okunur çıktı verir. --checkpoint verilmezse yalnız zincir doğrulanır ve rapor bunun neyi kanıtlamadığını açıkça yazar.

#Girdiyi nereden alırsınız

Kayıtlar: konsol oturumuyla dönemi sayfa sayfa okuyun; sıra önemli değildir, araç kendisi sıralar.

curl -s --cookie "$COOKIE" \
  "http://localhost:8080/admin/v1/audit/records?part=2026-09&limit=500" \
  | jq -c '.records[]' >> kayitlar.jsonl
# yanıttaki page.next_before_seq null olana kadar &before_seq=<değer> ile tekrarlayın

Checkpoint: veritabanındaki audit_checkpoints koleksiyonunda.

Açık anahtar: imza anahtarı üretilirken yanına yazılan .pub dosyası. Denetçiye verilecek dosya odur; özel anahtar değil.

#Konsoldan doğrulama

Yönetim API'sindeki GET /admin/v1/audit/verify?part=2026-09 ucu aynı zincir doğrulamasını sunucu tarafında yapar ve sonucu döner. Bu, günlük kontrol için uygundur; bağımsız doğrulama için değildir, çünkü ürüne sormaktadır.

#Yedekten dönüşte

Geri yüklenen bir kurulumun "servisler ayağa kalktı" ile bitmediğini unutmayın: defterin bozulmadan döndüğünü nev-verify ile gösterin. Ayrıntı: Yedekleme.