Kimlik Doğrulama
Bağlantı Durum Makinesi
Her TCP bağlantısı WaitingForAuth durumunda başlar. Veritabanı işlemlerine erişim yalnızca kimlik doğrulama sonrasında mümkündür.
┌─────────────────┐ LOGIN <kullanıcı> <parola> ┌───────────────────┐
│ WaitingForAuth │ ────────────────────────────► │ Authenticated │
│ (başlangıç) │ (doğrulama başarılı) │ { username } │
└─────────────────┘ └───────────────────┘
│ │
Hatalı parola / EXIT SQL / INDEX / EXIT
→ bağlantı kapatılır → normal işleme
LOGIN Komutu
LOGIN <kullanıcı_adı> <parola>
Başarılı Giriş
menzelet> LOGIN sa güçlüŞifre123
Giriş başarılı. Hoş geldiniz, sa!
Başarısız Giriş
Hatalı şifre veya geçersiz kullanıcı durumunda bağlantı otomatik olarak kapatılır (güvenlik nedeniyle).
Giriş Zorunluluğu
- Her yeni bağlantıda
LOGINkomutu zorunludur - Kimlik doğrulamadan önce SQL veya INDEX komutları reddedilir
- Giriş başarısız olursa bağlantı güvenle sonlandırılır
Şifreleme
| Özellik | Değer |
|---|---|
| Algoritma | Kriptografik hash (tek yönlü) |
| Salt | 16-byte rastgele (kullanıcıya özgü) |
| Yöntem | hash(salt + şifre) |
| Karşılaştırma | Sabit süreli (zamanlama saldırısı önlemi) |
Güvenlik Garantileri
| Koruma | Yöntem |
|---|---|
| Şifre saklama | Hash + kullanıcıya özgü 16-byte salt |
| Zamanlama saldırısı | Sabit süreli karşılaştırma |
| DoS koruması | Maksimum eşzamanlı bağlantı limiti |
| Bağlantı limiti aşımı | Hata mesajı gönderilip bağlantı güvenle kapatılır |
| Erken komut koruması | Kimlik doğrulama öncesi SQL komutları reddedilir |
AUDIT Kaydı
Her Authenticated komut sunucu loglarına kaydedilir:
[AUDIT] sa@127.0.0.1:54321 -> CREATE TABLE urunler (id INT, fiyat FLOAT)
[AUDIT] mehmet@192.168.1.50:42100 -> SELECT * FROM siparisler