İletişim

Şifreleme (Encryption) Nedir?

Kısa tanım

Şifreleme (encryption), okunabilir veriyi bir algoritma ve anahtar kullanarak yalnızca doğru anahtara sahip olanların geri çözebileceği anlamsız bir biçime dönüştürme işlemidir. Aynı anahtarın hem şifrelemede hem çözmede kullanıldığı yönteme simetrik, açık ve özel anahtar çiftiyle çalışan yönteme asimetrik şifreleme denir. Web'de verinin iletim sırasında ve depolandığı yerde korunmasının temelidir.

Diğer adları: Encryption, kriptolama, veri şifreleme, simetrik şifreleme, asimetrik şifreleme

Düz metnin gizli anahtarla şifrelenip okunamaz şifreli metne dönüştüğünü ve yalnızca aynı anahtarla çözülebildiğini gösteren akış

Algoritma herkese açık, sır anahtardadır

Modern şifrelemenin temel ilkesi, güvenliğin algoritmanın gizliliğine değil anahtarın gizliliğine dayanmasıdır. AES veya ChaCha20 gibi algoritmalar herkese açık standartlardır; yıllardır incelendikleri için güvenilirler. Şifrelenmiş veriyi (ciphertext) ele geçiren biri algoritmayı bilse bile anahtar olmadan anlamlı bir şey elde edemez. Bu yüzden pratikteki zayıf nokta neredeyse hiçbir zaman algoritma değil, anahtarın nerede ve nasıl saklandığıdır.

Simetrik ve asimetrik şifreleme

SimetrikAsimetrik (açık anahtarlı)
AnahtarŞifreleyen ve çözen aynı gizli anahtarı paylaşırAçık anahtar herkese verilir, özel anahtar sahibinde kalır
Örnek algoritmalarAES, ChaCha20RSA, eliptik eğri (ECC) tabanlı yöntemler
HızÇok hızlı, büyük veriye uygunYavaş, küçük verilere uygun
ZorlukAnahtarı karşı tarafa güvenle iletmekAçık anahtarın gerçekten kime ait olduğunu doğrulamak

Gerçek sistemler ikisini birlikte kullanır. Bir web sitesine HTTPS ile bağlandığınızda TLS, asimetrik yöntemleri sunucunun kimliğini doğrulamak ve iki tarafın ortak bir oturum anahtarında anlaşması için kullanır; sayfanın kendisi ise bu anahtarla, hızlı bir simetrik algoritmayla şifrelenir. Sertifika, açık anahtarın gerçekten o alan adına ait olduğunu bir sertifika otoritesinin imzasıyla kanıtlar.

İletimde ve depolamada şifreleme

İletimde şifreleme (in transit), verinin ağda giderken okunmasını ve değiştirilmesini engeller: tarayıcı ile sunucu arasında TLS, sunucu ile veritabanı arasında TLS bağlantısı, e-posta sunucuları arasında STARTTLS. Depolamada şifreleme (at rest) ise disk, veritabanı, dosya deposu ve yedekler çalındığında ya da yanlış yere kopyalandığında verinin okunamamasını sağlar.

İkisi farklı tehditlere karşı korur ve biri diğerinin yerini tutmaz. Disk şifrelemesi, sunucu çalışırken uygulamanın veritabanını okuyan bir saldırgana karşı işe yaramaz; çünkü o anda veri zaten çözülmüş haldedir. Bu yüzden kimlik numarası veya sağlık bilgisi gibi çok hassas alanlar için uygulama katmanında, alan bazında şifreleme ayrıca düşünülür. KVKK veri sorumlularından uygun güvenlik düzeyini sağlayacak teknik tedbirleri almalarını ister; GDPR'ın 32. maddesi de şifrelemeyi bu tedbirler arasında açıkça sayar.

Uygulamada bir örnek

Node.js'in yerleşik crypto modülüyle AES-256-GCM kullanımı aşağıdaki gibidir. GCM modu, şifrelemenin yanında bir doğrulama etiketi de üretir; çözme sırasında veri değiştirilmişse işlem hata verir.

import { randomBytes, createCipheriv } from "node:crypto";

const key = loadKeyFromKms();          // 32 bayt; koda gömülmez
const iv = randomBytes(12);            // her şifrelemede yeni ve benzersiz
const cipher = createCipheriv("aes-256-gcm", key, iv);
const encrypted = Buffer.concat([cipher.update(iban, "utf8"), cipher.final()]);
const tag = cipher.getAuthTag();       // iv ve tag, şifreli veriyle birlikte saklanır

Kendi şifreleme algoritmanızı ya da protokolünüzü yazmayın; yaygın, bakımı yapılan kütüphanelerin üst seviye API'lerini kullanın. Aynı anahtarla aynı IV'yi tekrar kullanmak gibi küçük hatalar, sağlam bir algoritmayı bile etkisiz hale getirebilir.

Anahtar yönetimi ve sık karıştırılanlar

Şifreli veriyle anahtarı aynı veritabanında tutmak, kasanın anahtarını kasanın üzerine bırakmaktır. Anahtarlar bir anahtar yönetim servisinde (KMS) veya en azından uygulamadan ayrı bir gizli bilgi yönetimi çözümünde tutulmalı, erişimleri loglanmalı ve belirli aralıklarla döndürülmelidir.

Şifreleme iki kavramla sık karıştırılır. Kodlama (encoding), örneğin Base64, veriyi başka bir biçime çevirir ama anahtar kullanmaz; herkes geri çevirebilir, yani güvenlik sağlamaz. Hash ise tek yönlüdür: özetten orijinal veri geri elde edilemez. Geri okunması gereken veri şifrelenir; yalnızca doğrulanması gereken veri, örneğin parolalar, özetlenir.

İlgili terimler

← Sözlüğe dön