Selam TurkTeam, BlueTornado ile.
"Veriyi şifreledik" cümlesi tek başına yetmez: hangi model, hangi algoritma, anahtar nerede? Bu rehberde simetrik (AES) ile asimetrik (RSA/ECC) şifrelemenin farkını, ne zaman hangisinin kullanıldığını ve OpenSSL ile zararsız lab örneklerini anlatıyoruz. Hash/encoding farkı ve parola KDF konuları forumda ayrıca işlenir.
Konuda Anlatılacaklar
- Simetrik vs asimetrik: anahtar modeli
- AES temelleri ve modlar
- RSA/ECC: şifreleme ve imza
- Hibrit şifreleme (TLS'in özü)
- Lab: OpenSSL ile denemeler
- İleri seviye: AEAD, anahtar ömrü, post-quantum notu
- Kaynakça ve yasal uyarı
1) İki Model
Simetrik: Aynı gizli anahtar hem şifreler hem çözer. Hızlıdır; büyük veri için uygundur. Anahtar dağıtımı zordur (her iki taraf aynı sırrı güvenli paylaşmalı).
Asimetrik: Açık anahtar (public) ve özel anahtar (private). Public ile şifrelenen private ile açılır (şifreleme modeli). İmzada tersi: private imzalar, public doğrular. Yavaştır; genelde küçük veri / anahtar sarma / imza için kullanılır.
# Kavramsal
Simetrik: AES(key, plaintext) <-> AES(key, ciphertext)
Asimetrik: Encrypt(pub, msg) <-> Decrypt(priv, ct)
İmza: Sign(priv, msg) <-> Verify(pub, sig, msg)Alıntı:AES "daha iyi RSA" değildir; farklı işler yaparlar. Gerçek sistemler çoğunlukla ikisini birlikte kullanır (hibrit).
2) AES (Simetrik) Temelleri
AES blok şifresidir (128-bit blok). Anahtar uzunlukları: 128, 192, 256 bit. Güvenlik sadece "AES-256 seçtik" ile bitmez; mod ve IV/nonce yönetimi kritiktir.
- ECB: Aynı blok aynı çıktı -> kalıp sızdırır; kullanmayın
- CBC: IV gerekir; dolgu (padding) oracle tarihsel riskleri
- GCM (AEAD): Gizlilik + bütünlük; modern varsayılan tercih
- ChaCha20-Poly1305: AEAD alternatif (özellikle yazılımda hızlı)
# OpenSSL enc lab (AES-256-CBC + PBKDF2) - sadece eğitim
openssl rand -out /tmp/aes.key 32
echo -n "turkteam lab notu" > /tmp/pt.txt
openssl enc -aes-256-cbc -pbkdf2 -in /tmp/pt.txt -out /tmp/ct.bin -pass file:/tmp/aes.key
openssl enc -d -aes-256-cbc -pbkdf2 -in /tmp/ct.bin -out /tmp/pt2.txt -pass file:/tmp/aes.key
cat /tmp/pt2.txt
rm -f /tmp/aes.key /tmp/pt.txt /tmp/ct.bin /tmp/pt2.txtÜretimde kendi CBC sarmalayıcınızı yazmak yerine libsodium, OpenSSL EVP AEAD, dilin güvenilir kütüphanelerini kullanın.
[center][/center]
3) RSA ve ECC (Asimetrik)
RSA, büyük tamsayı çarpanlara ayırma zorluğuna dayanan klasik genel anahtar sistemidir. Günümüzde anahtar sarma ve dijital imza için hâlâ görülür; yeni tasarımlarda ECC (elliptik eğri) daha kısa anahtarlarla benzer güvenlik seviyesi sunar (ör. ECDSA P-256, Ed25519 imza).
# RSA anahtar çifti lab
openssl genrsa -out /tmp/priv.pem 2048
openssl rsa -in /tmp/priv.pem -pubout -out /tmp/pub.pem
echo -n "kucuk mesaj" > /tmp/msg.txt
openssl pkeyutl -encrypt -pubin -inkey /tmp/pub.pem -in /tmp/msg.txt -out /tmp/msg.enc
openssl pkeyutl -decrypt -inkey /tmp/priv.pem -in /tmp/msg.enc -out /tmp/msg.dec
cat /tmp/msg.dec
rm -f /tmp/priv.pem /tmp/pub.pem /tmp/msg.txt /tmp/msg.enc /tmp/msg.dec# Ed25519 imza örneği
openssl genpkey -algorithm Ed25519 -out /tmp/ed.priv
openssl pkey -in /tmp/ed.priv -pubout -out /tmp/ed.pub
echo -n "rapor ozeti" > /tmp/r.txt
openssl pkeyutl -sign -inkey /tmp/ed.priv -in /tmp/r.txt -out /tmp/r.sig
openssl pkeyutl -verify -pubin -inkey /tmp/ed.pub -in /tmp/r.txt -sigfile /tmp/r.sig
rm -f /tmp/ed.priv /tmp/ed.pub /tmp/r.txt /tmp/r.sigRSA ile büyük dosya şifrelemeyin; yavaştır ve pratikte hibrit kullanılır.
4) Hibrit Şifreleme (TLS'in Mantığı)
- Alice rastgele bir simetrik oturum anahtarı üretir
- Bu anahtarı Bob'un public key'i ile sarar (veya Diffie-Hellman ile ortak anahtar türetir)
- Asıl veri AES-GCM ile şifrelenir
- Bob private key / DH ile oturum anahtarını elde eder ve veriyi çözer
TLS el sıkışması bu fikrin standardize, sertifikalı ve çok daha ayrıntılı halidir.
# Kendi sunucunuzun TLS bilgisini görün
echo | openssl s_client -connect turkteam.org:443 -servername turkteam.org 2>/dev/null | egrep "Protocol|Cipher"[center][/center]
5) Ne Zaman Hangisi?
- Diskteki büyük yedek / dosya: simetrik (AES-GCM), anahtar KMS'te
- Anahtar dağıtımı / ilk güven: asimetrik veya DH + sertifika
- Yazılım güncellemesi doğrulama: dijital imza (asimetrik)
- Parola saklama: şifreleme değil, Argon2id gibi KDF
- API bütünlüğü: HMAC (simetrik) veya imza (asimetrik)
# Karar özeti
Gizlilik + hız -> AES-GCM
Kimlik / imza -> Ed25519 / ECDSA / RSA-PSS
İnternet oturumu -> TLS (hibrit)
Parola -> KDF (hash ailesi, şifreleme değil)6) İleri Seviye Notlar
- Nonce/IV yeniden kullanımı: GCM'de aynı anahtar+nonce felakettir
- Padding oracle: Kendi CBC+PKCS7 protokolünüzü yazmayın
- Anahtar ömrü: Rotate; sızan anahtar için olay planı
- Side-channel: Sabit zamanlı karşılaştırma; amatör crypto implementasyonu riskli
- Post-quantum: NIST PQC standartları (ML-KEM vb.) geçiş planlarında konuşuluyor; abartılı panik yerine envanter çıkarın
python3 - <<'PY'
import secrets, hmac, hashlib
print("key", secrets.token_bytes(32).hex())
print("hmac", hmac.new(b"k", b"msg", hashlib.sha256).hexdigest())
PY[center][/center]
7) Sonuç
Simetrik hız ve toplu gizlilik; asimetrik anahtar dağıtımı ve imza demektir. AES ve RSA rakip değil, tamamlayıcıdır. Labda OpenSSL ile deneyin; üretimde hazır, incelenmiş kütüphaneler ve KMS kullanın.
Ek: Geliştirici Anti-Pattern Listesi
# 1) ECB ile "AES yaptık" demek
# 2) IV'yi sabit 0x00.. seçmek
# 3) RSA PKCS#1 v1.5 ile yeni protokol tasarlamak (mümkünse OAEP / modern KEM)
# 4) Private key'i uygulama imajına gömmek
# 5) "Gizlilik için" hash kullanmak
# 6) Kendi TLS'inizi yazmak- Kütüphane seçimi: bakımı yapılan, sabit zamanlı ilkel sunan
- Protokol seçimi: TLS 1.2+ (tercihen 1.3), zayıf suite'leri kapatın
- Anahtar: en az AES-128 güvenliğine denk; pratikte AES-256 ve 2048+ RSA veya ECC
[center][/center]
Şüphede kalırsanız: hazır yüksek seviye API (libsodium sealed box, age, Tink) kullanın; düşük seviye blok şifre modlarını kendiniz birleştirmeyin.
Ek Lab Komutları
# Rastgele AES anahtarı ve nonce (GCM için nonce 12 byte tipik)
openssl rand -hex 32
openssl rand -hex 12# Public key parmak izi (kendi anahtarınız)
openssl pkey -pubin -in /tmp/ed.pub -outform DER 2>/dev/null | openssl dgst -sha256# TLS 1.3 cipher gözlemi (kendi host)
echo | openssl s_client -connect 127.0.0.1:443 -tls1_3 2>/dev/null | headKaynakça
- OWASP Cryptographic Storage Cheat Sheet
- OpenSSL man sayfaları
- NIST FIPS 197 - AES
- RFC 8446 - TLS 1.3
- NIST Post-Quantum Cryptography
- OWASP A02 Cryptographic Failures
Yasal Uyarı
Kriptografi eğitimi sistemleri korumak içindir. İzinsiz şifre çözme, haberleşmeye müdahale veya sistemlere yetkisiz erişim TCK 243-245 ve ilgili kanunlar kapsamında suç olabilir. Lab anahtarlarını üretimde kullanmayın.
Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).