Güvenlik modeli
Damga'nın tasarımındaki ilke: imza kullanıcının e-imza USB'sinde atılır ve PIN kullanıcının bilgisayarından başka hiçbir yerde açık halde bulunmaz. Sunucu belgeyi, şifreli zarfları ve sonucu taşır.
Kim neyi görür?
| Veri | Platform | Damga sunucusu | İmza sayfası (tarayıcı) | Damga uygulaması |
|---|---|---|---|---|
| Belge (PDF / XML) | ✓ | ✓ (30 gün) | ✓ | ✓ (bellekte) |
| TSA kimlik bilgileri | — | ✓ (config.php) | — | — |
| PIN | — | — (yalnız şifreli zarf) | ✓ (yazılırken) | ✓ (bir giriş süresince) |
| e-İmza USB'sindeki özel anahtar | — | — | — | — (USB'nin çipinden çıkmaz) |
| Tam T.C. kimlik no | ✓ (imzadan sonra) | ✓ | maskeli | ✓ |
| İmza | ✓ | ✓ | — | ✓ |
PIN'in yolu
- Uygulama her bağlantıda yeni bir ECDH P-256 anahtar çifti üretir; özel anahtar yalnız uygulamanın belleğindedir, genel anahtar sunucu üzerinden sayfaya gider.
- Sayfa, WebCrypto ile kendi geçici anahtarını üretir; ortak sırdan HKDF-SHA256 ile bir AES-256-GCM anahtarı türetir ve PIN'i şifreler.
- Ek doğrulanmış veri olarak istek, sertifika ve komut kimliği bağlanır: zarf başka bir sertifika ya da başka bir komut için yeniden kullanılamaz.
- Sunucu zarfı araca bir kez teslim eder ve siler.
- Uygulama zarfı açar, e-imza USB'sine giriş yapar, imzalar, çıkış yapar ve PIN dizisini sıfırlar.
Sayfanın kendisi Damga sunucusundan gelir; bu yüzden kullanıcı PIN'i yalnız Damga'nın adresindeki sayfaya yazmalıdır. Sayfa başka sitelerin içine gömülemez (frame-ancestors 'none'), satır içi betik çalıştırmaz (sıkı CSP).
Bağlantılar ve anahtarlar
| Anahtar | Uzunluk | Saklama | Geçerlilik |
|---|---|---|---|
| API anahtarı | 200 bit | SHA-256 özeti | Yenilenene dek |
İmza sayfası anahtarı (sign_url'nin # sonrası) |
192 bit | SHA-256 özeti | İstek süresince; yeni bağlantıyla geçersiz |
| Uygulama bağlantı anahtarı | 256 bit | SHA-256 özeti | "Damga'yı başlat"a her basışta yenilenir |
Sayfa anahtarı adresin # kısmındadır: tarayıcı onu sunucuya adres olarak göndermez, sunucu kayıtlarına ve Referer başlıklarına düşmez; sayfa açıldıktan sonra adres çubuğundan da silinir.
e-İmza USB'sini korumak
- Kilitli e-imza USB'sine PIN gönderilmez.
- e-İmza USB'si "son hak" dediğinde ya da o sertifikada 2 hatalı deneme varsa, sayfa ayrı bir onay ister; sunucu bu onay olmadan komutu kabul etmez.
- Bir istekte en fazla 8 imza denemesi yapılabilir.
Uygulamanın güvenliği
- Uygulama hiçbir kapıyı dinlemez; yalnız Damga sunucusuna HTTPS istekleri yapar ve yönlendirmeleri izlemez.
damga://bağlantısı sıkı ayrıştırılır: yalnız https sunucular (geliştirmede localhost), kullanıcı adı / sorgu içeren adresler reddedilir.- Tanımadığı bir Damga sunucusuna bağlanmadan önce kullanıcıya sorar.
- İndirilen belgenin SHA-256'sı sunucunun bildirdiğiyle karşılaştırılır; uygulama ve sayfa aynı parmak izini gösterir.
- e-İmza USB'sinden ve siteden gelen metinler HTML olarak yorumlanmaz.
Zaman damgası ve iptal bilgisi
- Zaman damgası sunucusunun (TSA) adresi ve kimlik bilgileri yalnız Damga sunucusunun
config.phpdosyasındadır. Damga uygulaması damgayı sunucudan ister (POST /agent/v1/{istek}/timestamp): yalnız o oturumun süren imza komutu için, komut başına sınırlı sayıda ve hız sınırıyla; gönderilen tek şey 32 baytlık bir SHA-256 özetidir. - Sunucu TSA yanıtını doğrular: durum, damgalanan özet, nonce, TSA imzası ve "Time Stamping" kullanımlı sertifika;
tsa.ca_bundletanımlıysa TSA zinciri. Verdiği damgaların özetini istekte saklar ve imzalı çıktıdaki damgaların bunlar olduğunu denetler: uygulama başka (ör. sahte ya da geriye tarihli) bir damga ekleyemez. - OCSP ve CRL bilgisini sunucu getirir ve imzalarını yayıncı CA'nın anahtarıyla doğrular; iptal edilmiş sertifikayla PAdES-B-LT imzası tamamlanmaz.
- PAdES'te imzadan sonra eklenen artımlı güncellemeler dar bir beyaz listeden geçer: yalnız DSS (sertifika / OCSP / CRL akışları, VRI), belge zaman damgası, görünmez imza alanı, kataloğun /DSS ve /AcroForm'u, sayfanın /Annots'u değişebilir. Sayfa içeriği, yazı tipi, açıklama, eylem ya da nesne akışı ekleyen her güncelleme imzayı geçersiz kılar.
XML belgeler (XAdES)
- XML'ler DOCTYPE / ENTITY tanımı içeremez (XXE ve "billion laughs" saldırılarına karşı); libxml ağa çıkmaz ve varlıkları yerine koymaz. Damga uygulaması da aynı belgeleri reddeder.
- İmza doğrulamada XML'de tek bir
ds:Signatureolmalı, başvurulan Id'ler belgede tek olmalı ve imza belgenin tamamını kapsamalı (imza sarma / XSW saldırılarına karşı). Yalnız C14N / exclusive C14N ve enveloped dönüşümü kabul edilir; XPath / XSLT dönüşümleri ve dış başvurular reddedilir.
Sunucu
- Sorgular parametre bağlamalıdır; tüm giriş alanları uzunluk ve biçim denetiminden geçer.
- Araçtan gelen cihaz listesi güvenilmez veri sayılır ve süzülür.
- Bildirimler HMAC-SHA256 ile imzalanır.
- Yönetim paneli tek parola, CSRF koruması,
SameSite=Strictoturum çerezi ve giriş denemesi sınırıyla korunur. - Belgeler web kökünün dışında,
storage/altında tutulur ve sonuçlanmadan 30 gün sonra silinir.
Hukuki not
Damga imzayı kullanıcının nitelikli elektronik sertifikası ve güvenli imza oluşturma aracı (USB e-imza aracı (token) ya da kart okuyucudaki akıllı kart) ile atar; Damga bir elektronik sertifika hizmet sağlayıcısı değildir. İmzanın 5070 sayılı Kanun kapsamında güvenli elektronik imza sayılması sertifikanın nitelikli olmasına bağlıdır. Sayfadaki "Nitelikli sertifika" etiketi sertifikanın keyUsage alanında nonRepudiation bulunduğunu gösterir.