Konuyu Okuyanlar: 1 Ziyaretçi

Simetrik ve Asimetrik Şifreleme Farkı: AES ve RSA Temelleri

Simetrik ve Asimetrik Şifreleme Farkı: AES ve RSA Temelleri
[center]
[Resim: attachment.php?aid=202]
[/center]

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
  1. Simetrik vs asimetrik: anahtar modeli
  2. AES temelleri ve modlar
  3. RSA/ECC: şifreleme ve imza
  4. Hibrit şifreleme (TLS'in özü)
  5. Lab: OpenSSL ile denemeler
  6. İleri seviye: AEAD, anahtar ömrü, post-quantum notu
  7. 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.

Kod:
# 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ı)

Kod:
# 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).

Kod:
# 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

Kod:
# 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.sig

RSA ile büyük dosya şifrelemeyin; yavaştır ve pratikte hibrit kullanılır.

4) Hibrit Şifreleme (TLS'in Mantığı)
  1. Alice rastgele bir simetrik oturum anahtarı üretir
  2. Bu anahtarı Bob'un public key'i ile sarar (veya Diffie-Hellman ile ortak anahtar türetir)
  3. Asıl veri AES-GCM ile şifrelenir
  4. 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.

Kod:
# 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)

Kod:
# 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

Kod:
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
Kod:
# 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ı
Kod:
# Rastgele AES anahtarı ve nonce (GCM için nonce 12 byte tipik) openssl rand -hex 32 openssl rand -hex 12

Kod:
# Public key parmak izi (kendi anahtarınız) openssl pkey -pubin -in /tmp/ed.pub -outform DER 2>/dev/null | openssl dgst -sha256

Kod:
# TLS 1.3 cipher gözlemi (kendi host) echo | openssl s_client -connect 127.0.0.1:443 -tls1_3 2>/dev/null | head

Kaynakça
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).


Ek DosyalarEkran Görüntüleri
   
Cevapla



Hızlı Menü: