Kanıt Zinciri (Audit Chain)
AnchorSpot kanıt zinciri, captive portal sisteminde gerçekleşen tüm olayları değiştirilemez biçimde kaydeden, hash zinciri ve RFC 3161 zaman damgası teknolojisine dayanan bir uyum altyapısıdır.
Hash Zinciri Yapısı
Her kayıt, bir önceki kaydın hash değerini ve kendi içeriğini kapsayan SHA-256 karması ile oluşturulur:
hash_chain_value = SHA256(previous_hash + current_record_json)
Başlangıç (genesis) kaydı:
{
"record_id": 1,
"previous_hash": "0000000000000000000000000000000000000000000000000000000000000000",
"event_type": "chain_init",
"tenant_id": "tenant_01HXQ2K9",
"timestamp": "2024-01-01T00:00:00.000Z",
"hash_chain_value": "a3f8c2e1d4b70912..."
}
Sonraki kayıt:
{
"record_id": 2,
"previous_hash": "a3f8c2e1d4b70912...",
"event_type": "session_start",
"payload": { "mac": "AA:BB:CC:DD:EE:FF", "identity": "+90532****567" },
"timestamp": "2024-01-01T08:14:33.000Z",
"hash_chain_value": "7b4d9f3ac1e5a8b2..."
}
Herhangi bir kayıt değiştirilirse o kaydın hash değeri değişir ve zincirleme olarak sonraki tüm kayıtların hash değerleri geçersizleşir. Bu durum tahrifatı matematiksel olarak kanıtlar.
Zincire Yazılan Olay Türleri
| Olay Türü | Tetikleyici |
|---|---|
session_start | Misafir kimlik doğrulamayı tamamladı |
session_end | Oturum süresi doldu veya cihaz ayrıldı |
session_extend | Yönetici oturumu uzattı |
session_revoke | Yönetici oturumu zorla sonlandırdı |
auth_success | Kimlik doğrulama başarılı |
auth_failure | Kimlik doğrulama başarısız |
voucher_create | Yeni voucher oluşturuldu |
voucher_redeem | Voucher kullanıldı |
voucher_expire | Voucher süresi doldu |
sponsor_decision | Sponsor onayladı veya reddetti |
admin_login | Yönetici paneline giriş |
admin_change | Yapılandırma değişikliği |
mac_block | MAC adresi engellendi |
data_export | Kanıt paketi dışa aktarıldı |
chain_anchor | Günlük Merkle kökü oluşturuldu |
Günlük Merkle Kökü ve RFC 3161 Zaman Damgası
Her gece 00:05 UTC'de çalışan otomatik süreç:
Gün içinde oluşan tüm kayıtlar
│
┌────────┴────────┐
│ Merkle Ağacı │
│ ┌────┬────┐ │
│ │L1 │L2 │ │
│ └─┬──┴─┬──┘ │
│ └────┘ │
│ Kök Hash │
└────────┬────────┘
│
TÜBİTAK Kamu SM TSA
(RFC 3161 zaman damgası)
│
.tst token (ASN.1 DER)
│
AnchorSpot veritabanı
+ yerel yedek (WORM)
Zaman damgası token'ı aşağıdaki alanları içerir:
- TSA sertifikası: TÜBİTAK Kamu SM imzası
- Hash algoritması: SHA-256
- Damgalanan hash: Günlük Merkle kökü
- Doğruluk zamanı: UTC, milisaniye hassasiyetiyle
- Seri numarası: Tekil token kimliği
TÜBİTAK Kamu SM, Bilgi Teknolojileri ve İletişim Kurumu (BTK) tarafından yetkilendirilmiş bir Onaylı Elektronik Sertifika Hizmet Sağlayıcısıdır. Verilen zaman damgaları 5070 sayılı Elektronik İmza Kanunu kapsamında yasal geçerliliğe sahiptir.
Tahrifat Tespiti
Zincirde herhangi bir kayıt değiştirilirse, silinirse veya eklenirse bütünlük doğrulaması başarısız olur:
# Zincir bütünlüğünü doğrula
anchorspot-verify chain \
--start 2024-01-01 \
--end 2024-01-31
# Örnek başarılı çıktı:
# ✓ 47,832 kayıt kontrol edildi
# ✓ Merkle kökü 31 günlük TSA token ile eşleşiyor
# ✓ Zincir bütünlüğü: TAMAM
# Örnek başarısız çıktı:
# ✗ Kayıt #12,847: Hash uyuşmazlığı tespit edildi
# Beklenen: a3f8c2e1...
# Bulunan: 99b7f4d2...
# ✗ Bu noktadan itibaren 1,204 kayıt geçersiz
Dışa Aktarma ve İçerme Kanıtları
Kanıt zinciri ZIP paketi, her kayıt için bireysel Merkle ağacı içerme kanıtı (inclusion proof) içerir. Bu kanıt, belirli bir kaydın belirli bir günün Merkle ağacına dahil olduğunu matematiksel olarak kanıtlar:
{
"record_id": 12847,
"leaf_hash": "c1e5a8b2f4d9...",
"merkle_path": [
{ "position": "left", "hash": "7b4d9f3a..." },
{ "position": "right", "hash": "a3f8c2e1..." },
{ "position": "left", "hash": "9d2c7e4f..." }
],
"merkle_root": "f8a3c1e5...",
"tsa_token": "BASE64_ENCODED_TST..."
}
# API üzerinden kanıt paketi indirme
curl -X GET "https://api.siperone.com/v1/compliance/audit-chain" \
-H "X-API-Key: YOUR_API_KEY" \
-G \
--data-urlencode "start=2024-01-01" \
--data-urlencode "end=2024-01-31" \
--output audit-chain.zip
Paketin içeriği:
audit-chain.zip
├── manifest.json ← Paket bütünlük özeti
├── records.jsonl ← Tüm olaylar (JSONL formatı)
├── inclusion-proofs/
│ ├── record_12847.json ← Bireysel içerme kanıtları
│ └── ...
├── merkle-roots/
│ ├── 2024-01-01.json
│ └── ...
└── tsa-tokens/
├── 2024-01-01.tst ← RFC 3161 binary token (ASN.1 DER)
└── ...
Yasal Kabul
AnchorSpot kanıt zinciri aşağıdaki yasal çerçeveler kapsamında delil olarak kabul edilmektedir:
| Kurum / Çerçeve | Geçerlilik |
|---|---|
| BTK (Bilgi Teknolojileri ve İletişim Kurumu) | 5651 denetimlerinde kabul |
| Türk Mahkemeleri | 5070 sayılı Kanun uyarınca elektronik delil |
| KVK Kurumu | KVKK denetimlerinde kabul |
| HMK (Hukuk Muhakemeleri Kanunu) | Md. 205 uyarınca belge delili |
Hukuki süreç başlatmadan önce kanıt paketini indirip yerel olarak yedekleyin. Paketi indirdikten sonra data_export olayı zincire eklenir; bu da paketin ne zaman, kim tarafından talep edildiğini kayıt altına alır.
Denetim Görünümü
Konsol üzerinden Uyum → Denetim Kaydı bölümünde:
- Tüm olaylar kronolojik sırayla listelenir
- Olay türüne, kullanıcıya veya tarih aralığına göre filtrelenebilir
- Her kaydın hash değeri ve zincir pozisyonu görüntülenebilir
- Anlık bütünlük durumu gösterilir (yeşil = tamam, kırmızı = uyuşmazlık)
Zincir sağlığı uyarısı aldığınızda derhal kontrol edin. BTK denetimlerinde kesintisiz zincir bütünlüğü aranır.