Bu kapsamlı rehber, modern güvenli iletişim sistemlerinde kullanılan gelişmiş şifreleme kavramlarını, algoritmalarını ve protokollerini inceliyor. Geliştiriciler ve güvenlik uzmanları için ideal.
Simetrik Şifreleme Algoritmaları
AES (Advanced Encryption Standard)
Simetrik şifrelemenin altın standardı, 2001'de ABD hükümeti tarafından kabul edildi.
Temel Özellikler
- Anahtar boyutları: 128, 192 veya 256 bit
- Blok boyutu: 128 bit
- Turlar: Anahtar boyutuna bağlı olarak 10, 12 veya 14
- Performans: Yüksek oranda optimize edilmiş, donanım hızlandırma mevcut
Yaygın Modlar
- GCM (Galois/Counter Mode): Kimlik doğrulamalı şifreleme, çoğu kullanım durumu için önerilir
- CBC (Cipher Block Chaining): Geleneksel mod, ayrı MAC gerektirir
- CTR (Counter): Paralelleştirilebilir, bazı protokollerde kullanılır
ChaCha20
Daniel J. Bernstein tarafından tasarlanan modern akış şifresi, AES alternatifi olarak giderek daha popüler.
Avantajlar
- Donanım hızlandırması olmayan cihazlarda AES'ten daha hızlı
- Sabit zamanlı uygulama (zamanlama saldırılarına karşı dirençli)
- Basit tasarım, güvenli bir şekilde uygulaması daha kolay
- Kimlik doğrulamalı şifreleme için Poly1305 ile birlikte kullanılır
Asimetrik Şifreleme
RSA (Rivest-Shamir-Adleman)
Anahtar değişimi ve dijital imzalar için yaygın olarak kullanılır.
Temel Hususlar
- Minimum anahtar boyutu: 2048 bit (uzun vadeli güvenlik için 4096 bit önerilir)
- Performans: Simetrik şifrelemeye kıyasla hesaplama açısından pahalı
- Padding şemaları: Şifreleme için OAEP, imzalar için PSS kullan
- Kuantum tehdidi: Kuantum bilgisayarlara karşı savunmasız (Shor algoritması)
Elliptic Curve Cryptography (ECC)
Daha küçük anahtar boyutlarında eşdeğer güvenlikle RSA'ya göre daha verimli alternatif.
Popüler Eğriler
- Curve25519: ECDH anahtar değişimi için tasarlandı, yaygın olarak benimsenmiş
- Ed25519: Dijital imzalar için, SSH ve GPG'de kullanılır
- P-256 (secp256r1): NIST standardı, yaygın olarak desteklenir
- P-384, P-521: Daha yüksek güvenlik seviyeleri
RSA'ya Göre Avantajlar
- 256-bit ECC ≈ 3072-bit RSA güvenliği
- Daha hızlı hesaplama
- Daha küçük anahtarlar ve imzalar
- Daha düşük bant genişliği ve depolama gereksinimleri
Anahtar Değişim Protokolleri
Diffie-Hellman (DH)
İki tarafın güvenli olmayan bir kanal üzerinden paylaşılan bir sır oluşturmasını sağlar.
Varyantlar
- Klasik DH: Orijinal uygulama
- ECDH: Elliptic Curve versiyonu (daha verimli)
- X25519: Curve25519 kullanan modern ECDH
Perfect Forward Secrecy (PFS)
Uzun vadeli anahtarlar ele geçirilse bile geçmiş iletişimlerin güvenli kalmasını sağlar.
Uygulama
- Her oturum için geçici anahtar çiftleri oluştur
- Oturum anahtarlarını kullandıktan sonra yok et
- TLS 1.3, Signal Protocol vb.'de kullanılır
Hash Fonksiyonları
SHA-2 Ailesi
- SHA-256: 256-bit çıktı, yaygın olarak kullanılır
- SHA-384, SHA-512: Daha yüksek güvenlik seviyeleri
- Uygulamalar: Dijital imzalar, sertifika doğrulama, şifre hash'leme (uygun tekniklerle)
SHA-3 (Keccak)
- SHA-2'den farklı yapı (sponge fonksiyonu)
- Uzunluk genişletme saldırılarına karşı dirençli
- Yüksek güvenlik marjı gerektiren uygulamalar için uygun
BLAKE2/BLAKE3
- SHA-2 ve SHA-3'ten daha hızlı
- Kriptografik olarak güvenli
- BLAKE3: Yüksek oranda paralelleştirilebilir, büyük veriler için mükemmel
Key Derivation Functions (KDF'ler)
PBKDF2 (Password-Based Key Derivation Function 2)
- Amaç: Şifrelerden kriptografik anahtarlar türetmek
- İterasyonlar: Minimum 100.000 (OWASP önerisi)
- Kullanım durumu: Şifre depolama, anahtar türetme
Argon2
Password Hashing Competition'ın (2015) kazananı, yeni uygulamalar için önerilir.
Varyantlar
- Argon2id: Hibrit (çoğu kullanım durumu için önerilir)
- Argon2i: Yan kanal saldırılarına karşı optimize edilmiş
- Argon2d: GPU saldırılarına karşı maksimum direnç
scrypt
- Bellek yoğun fonksiyon (donanım saldırılarına karşı dirençli)
- Litecoin, Tarsnap tarafından kullanılır
- Güvenlik ve uyumluluk arasında iyi denge
Message Authentication Codes (MAC'ler)
HMAC (Hash-based MAC)
- Hash fonksiyonunu gizli anahtarla birleştirir
- Kimlik doğrulama ve bütünlük sağlar
- Yaygın: HMAC-SHA256, HMAC-SHA512
Poly1305
- Tek kullanımlık kimlik doğrulayıcı
- Kimlik doğrulamalı şifreleme için ChaCha20 ile kullanılır
- Hızlı ve sabit zamanlı
Kimlik Doğrulamalı Şifreleme
Neden Önemli
Şifreleme tek başına bütünlüğü garanti etmez. Bir saldırgan, şifreli metni tespit edilmeden değiştirebilir. Kimlik doğrulamalı şifreleme bunu çözer.
AEAD (Authenticated Encryption with Associated Data)
- AES-GCM: En yaygın desteklenen
- ChaCha20-Poly1305: Mobil cihazlarda daha iyi
- AES-CCM: Bazı kablosuz protokollerde kullanılır
Dijital İmzalar
RSA İmzaları
- Padding: PSS (Probabilistic Signature Scheme) kullan
- Hash fonksiyonu: SHA-256 veya daha yüksek
- Anahtar boyutu: Minimum 2048 bit
ECDSA (Elliptic Curve Digital Signature Algorithm)
- RSA'dan daha küçük imzalar
- Dikkatli nonce üretimi gerektirir (zayıf RNG = ele geçirilmiş anahtar)
- Deterministik varyant (RFC 6979) önerilir
Ed25519
- Deterministik (RNG gerektirmez)
- Hızlı imza üretimi ve doğrulama
- Küçük imzalar (64 bayt)
- Yan kanal saldırılarına karşı dirençli
Modern Protokoller
Signal Protocol
Signal, WhatsApp, Facebook Messenger tarafından kullanılan son teknoloji uçtan uca şifreleme protokolü.
Temel Özellikler
- Double Ratchet: Anahtarları sürekli günceller
- Perfect Forward Secrecy: Geçmiş mesajlar güvenli kalır
- Post-Compromise Security: Anahtar ele geçirilmesinden kurtulur
- Asenkron: Alıcı çevrimdışı olsa bile çalışır
TLS 1.3
Transport Layer Security protokolünün en son sürümü.
İyileştirmeler
- Zayıf algoritmalar ve cipher suite'ler kaldırıldı
- Her zaman forward secrecy sağlar
- Daha hızlı handshake (1-RTT, 0-RTT seçeneği)
- Şifrelenmiş Server Hello
Noise Protocol Framework
Güvenli iletişim sistemleri oluşturmak için modern kriptografik protokol çerçevesi.
Uygulamalar
- WireGuard VPN
- Lightning Network
- I2P mesajlaşma
Post-Quantum Cryptography
Tehdit
Kuantum bilgisayarlar, Shor algoritmasını kullanarak RSA ve ECC'yi kırabilir. Simetrik algoritmalar daha az etkilenir ancak daha büyük anahtarlar gerektirir.
NIST Post-Quantum Adayları
- Kyber: Lattice tabanlı anahtar kapsülleme
- Dilithium: Lattice tabanlı dijital imzalar
- SPHINCS+: Hash tabanlı imzalar
Geçiş Stratejisi
- Hibrit yaklaşım: Klasik ve post-quantum algoritmaları birleştir
- Simetrik anahtar boyutlarını 256 bit'e çıkar
- NIST standardizasyon sürecini takip et
- Algoritma çevikliği için plan yap
Uygulama En İyi Pratikleri
Kendi Kripton Geliştirme
Yerleşik, hakemli kütüphaneleri kullan:
- libsodium: Üst düzey, kullanımı kolay
- OpenSSL: Kapsamlı, yaygın olarak desteklenir
- BoringSSL: Google'ın OpenSSL fork'u
- Ring: Rust kriptografi kütüphanesi
Anahtar Yönetimi
- Kritik anahtarlar için donanım güvenlik modülleri (HSM) kullan
- Anahtar rotasyon politikaları uygula
- Anahtarları asla kaynak koduna göm
- Birden fazla amaç için anahtar türetme kullan
- Anahtarları kullandıktan sonra bellekten güvenli bir şekilde sil
Güvenli Rastgele Sayı Üretimi
- Kriptografik olarak güvenli RNG (CSPRNG) kullan
- Asla standart rand() fonksiyonlarını kullanma
- İşletim sistemi RNG'leri: /dev/urandom (Linux), CryptGenRandom (Windows)
- Dile özgü: crypto.randomBytes (Node.js), secrets modülü (Python)
Zamanlama Saldırısı Önleme
- Sırlar için sabit zamanlı karşılaştırma kullan
- Gizli verilere dayalı dallanmadan kaçın
- Önbellek zamanlama saldırılarının farkında ol
- Zamanlama saldırısı direnci ile tasarlanmış kütüphaneler kullan
Test ve Doğrulama
Güvenlik Denetimleri
- Düzenli penetrasyon testleri
- Güvenlik uzmanları tarafından kod incelemeleri
- Üçüncü taraf güvenlik denetimleri
- Bug bounty programları
Uyumluluk
- FIPS 140-2/3: ABD hükümeti standardı
- Common Criteria: Uluslararası güvenlik sertifikasyonu
- PCI DSS: Ödeme kartı endüstrisi gereksinimleri
İleri Öğrenim İçin Kaynaklar
Kitaplar
- "Cryptography Engineering" - Ferguson, Schneier ve Kohno
- "Serious Cryptography" - Jean-Philippe Aumasson
- "Applied Cryptography" - Bruce Schneier
Çevrimiçi Kaynaklar
- Cryptopals Crypto Challenges
- Stanford'un Cryptography kursları (Coursera)
- IACR ePrint Archive
- Crypto Stack Exchange