Nasıl çalışır
- Kayıt: her dakika, saat disiplin yazılımının o anki ölçümleri tek satırlık bir JSON kaydına yazılır: durum, stratum, sapma, hata üst sınırı, kaynak sayısı ve varsa olaylar.
- Ağaç: bir UTC gününün kayıtları bir Merkle ağacının yapraklarıdır. Ağacın kökü, o günün bütün kayıtlarının tek bir 32 baytlık özetidir; tek bir kaydın tek bir harfi değişse kök değişir.
- İmza: her yeni kayıtta günün başlığı — gün, kayıt sayısı, kök ve bir önceki günün kökü — günlük anahtarıyla imzalanır.
- Zincir: her gün, bir önceki günün kökünü taşıdığı için günler birbirine bağlıdır; geçmiş bir günü değiştirmek sonraki bütün günlerin imzasını bozar.
- Doğrulama: yukarıdaki sorgu günün kayıtlarını indirir, kökü tarayıcınızda yeniden hesaplar ve imzayı denetler. Sunucuya güvenmeniz gerekmez; yalnızca açık anahtarı bilmeniz yeterlidir.
Günlük açık anahtarı (Ed25519, base64) — tıkla, kopyala:
—Kayıt alanları
| Alan | Anlamı |
|---|---|
| t | Kaydın yazıldığı an (UTC, ISO 8601) |
| seq | Kaydın o gün içindeki sıra numarası; ağaçtaki yaprak dizini |
| state | locked kaynaklara kilitli · holdover kaynak yok, kendi osilatörüyle sürüyor · unsynchronised eşitlenmemiş |
| stratum | O anki katman |
| reference | Saati süren kaynak: ülke / tür / koruma / sıra |
| offset | Sistem saatinin seçilen kaynağa göre anlık sapması (saniye) |
| rms_offset | Sapmanın uzun dönem ortalaması (saniye) |
| root_delay · root_dispersion | Birincil saate gidiş-dönüş ve birikmiş belirsizlik (saniye) |
| error_bound | Yayımlanan hata üst sınırı: kök gecikme ÷ 2 + kök dağılım (saniye) |
| frequency_ppm · skew_ppm | Osilatör düzeltmesi ve belirsizliği |
| leap | Artık saniye durumu |
| sources | Toplam, kullanılabilir ve NTS korumalı kaynak sayısı |
| events | logger_start, state_change, reference_change, stratum_change |
Dosyalar
| /timelog/index.json | Günlüğün ilk ve son günü, açık anahtar |
| /timelog/latest.json | Son kayıt ve son imzalı başlık |
| /timelog/YYYY/AA/GG.jsonl | O günün kayıtları, satır başına bir kayıt |
| /timelog/YYYY/AA/GG.head.json | O günün imzalı başlığı |
| /timelog/pubkey.pem · pubkey.txt | Günlük açık anahtarı |
| /timelog/verify.py | Kanıt paketi doğrulayıcısı |
Başlığın imzalanan gövdesi beş satırdır: günlük adı, gün, kayıt sayısı, kök (base64) ve önceki günün kökü. Yaprak özeti SHA-256(0x00 ‖ satır), düğüm özeti SHA-256(0x01 ‖ sol ‖ sağ) biçimindedir (RFC 6962).
Komut satırından doğrulama
İndirdiğiniz kanıt paketi tek başına yeterlidir: kaydı, kaydı köke bağlayan yolu, imzalı başlığı ve açık anahtarı içerir. Doğrulayıcı hiçbir sunucuya bağlanmaz.
curl -O https://ntp.nerzen.com/timelog/verify.py python3 verify.py nerzen-timeproof-*.json \ --key "$(curl -s https://ntp.nerzen.com/timelog/pubkey.txt)"
curl -s https://ntp.nerzen.com/timelog/latest.json # son kayıt + imzalı başlık curl -s https://ntp.nerzen.com/timelog/2026/10/01.jsonl | wc -l # başlıktaki kayıt sayısıyla aynı olmalı
Sınırlar
- Öz beyandır. Günlük, sunucunun kendi ölçtüğünü kaydeder; saatin gerçekten doğru olduğunu değil, o anda ne bildirdiğimizi ve bunu sonradan değiştirmediğimizi kanıtlar.
- İmza anahtarı sunucudadır. Sunucuyu ele geçiren biri yeni kayıtlar imzalayabilir. Ancak o günün başlığını önceden kaydetmiş biri varken eski bir günü fark edilmeden değiştiremez.
- Bağımsız tanık yok. Başlıklar şimdilik yalnızca bizim anahtarımızla imzalı. Güvenceyi artırmak isterseniz
latest.json'u düzenli aralıklarla kendiniz saklayın; elinizdeki başlıkla çelişen bir geçmiş sunamayız. - Çözünürlük bir dakikadır. İki kayıt arasındaki kısa bir olay günlükte görünmeyebilir.
- Kalibrasyon belgesi ya da yasal zaman damgası değildir.
- Günlük kesilirse o dakikaların kaydı olmaz; boşluk kayıt zamanlarından açıkça görülür ve sonradan doldurulamaz.
Sık sorulan sorular
Bu günlük ne işe yarar?
Sistemlerinizin zamanı bizden aldığı bir olayı sonradan incelerken, o anda sunucumuzun durumunu — kilitli miydi, hata sınırı neydi, kaynak değişti mi — bizim sözümüze değil, o an imzalanmış bir kayda dayanarak görebilirsiniz.
Kanıt paketi nedir?
Tek bir kaydı, onu günün köküne bağlayan özet yolunu, imzalı başlığı ve açık anahtarı içeren küçük bir JSON dosyasıdır. Olay raporuna ekleyebilir, yıllar sonra bile çevrimdışı doğrulayabilirsiniz.
NTS ile aldığım zamanı da kanıtlar mı?
Hayır. Günlük sunucunun durumunu kaydeder, tek tek istemcilere verilen yanıtları değil. İmzalı tekil yanıt için Roughtime kullanın.
Neden kendi biçiminiz yerine bilinen yapılar?
Merkle ağacı ve özet kuralları sertifika şeffaflığı günlüklerinde kullanılanla aynıdır (RFC 6962); imza Ed25519'dur. Böylece doğrulama için bizim yazılımımıza değil, herkesin elindeki araçlara ihtiyaç olur.