Hafta 5
Amaç : Simetrik ve asimetrik şifreleme, Sayılar Teorisine giriş, Asallık Testi, Özet fonksiyonlar.
Yazar : abdullahbagyapan
Asimetrik Şifreleme
Asimetrik şifreleme, anahtar çiftlerini(public key - private key) kullanan bir şifrelemedir. Her anahtar çifti, bir public key ve ona karşılık gelen bir private key'den oluşur.
Asimetrik şifrelemenin güvenliği, private key'in gizli tutulmasına bağlıdır; public key, açık bir şekilde herkese dağıtılabilir.
Public key'e sahip olan herkes bir mesajı şifreleyebilir ve bir şifreli metin elde edebilir, ancak yalnızca ilgili private key'in sahibi şifreli metni çözebilir.

Asimetrik Şifreleme Kullanarak Mesaj Şifreleyelim
1. Private Key Oluşturalım
openssl genpkey -algorithm RSA -out private_key.pem

2. Public Key Oluşturalım
openssl rsa -pubout -in private_key.pem -out public_key.pem

3. Mesaj Oluşturalım
echo "PAUSIBER" > message.txt
4. Mesajımızı Public Key ile Şifreleyelim
openssl pkeyutl -encrypt -inkey public_key.pem -pubin -in message.txt -out encrypted_message.bin
Görüntülemeye çalıştığımızda ise anlamsız sayı ve rakamlar görüyoruz.

5. Şimdi de Private Key Kullanarak Mesajımızı Çözelim
openssl pkeyutl -decrypt -inkey private_key.pem -in encrypted_message.bin -out decrypted_message.txt
Görüntülemeye çalıştığımızda ise şifrelediğimiz mesajı görüyoruz.

Simetrik Şifreleme
Simetrik şifreleme, hem düz metnin şifrelenmesi hem de şifreli metnin çözülmesi için aynı gizli anahtarı kullanan bir şifrelemedir.
Her iki tarafın da gizli anahtara erişimi olması gerekliliği, asimetrik şifrelemeye kıyasla simetrik şifrelemenin ana dezavantajlarından biridir.
Simetrik şifrelemede anahtar boyutu daha küçüktür, bu da daha az depolama alanı ve daha hızlı şifreleme anlamına gelir.
Gizli anahtarı karşı tarafa iletmek için asimetrik şifrelemeyle beraber tek seferlik şifreleme kullanılır.

Simetrik Şifreleme Kullanarak Mesaj Şifreleyelim
1. Rastgele Key Oluşturalım
head /dev/urandom -c 128 > secret.key

2. Mesaj Oluşturalım
echo "PAUSIBER" > message.txt
3. Mesajımızı Key ile Şifreleyelim
openssl enc -aes-128-cbc -in message.txt -kfile secret.key -out secret.bin

4. Şimdi de Key'imizi Kullanarak Mesajımızı Çözelim
openssl enc -aes-128-cbc -d -in secret.bin -kfile secret.key -out decrypted_message.txt
Görüntülemeye çalıştığımızda ise şifrelediğimiz mesajı görüyoruz.

Diffie Hellman Key Exchange
Diffie Hellman Key Exchange, halka açık ve güvenli olmayan bir kanal üzerinden güvenli şekilde simetrik anahtar oluşturma yöntemidir.
Birbirleri hakkında önceden bilgisi olmayan iki tarafın ortaklaşa paylaşılan gizli anahtar oluşturmasına olanak tanır.
Bu anahtar ile simetrik şifreleme kullanılarak sonraki iletişimler şifrelenir.

Sayılar Teorisi (Number Theory)
Sayılar Teorisi, öncelikle tam sayıların ve aritmetik fonksiyonların incelenmesine adanmış saf matematiğin bir dalıdır.
Kriptoloji tamamen sayılar teorisi ile ilgilidir ve tüm tam sayılar (0 ve 1 hariç) asal sayılardan oluşur, bu nedenle sayılar teorisi asal sayılarla çok ilgilenir.
İki asal sayının çarpımı public key olarak kullanılabilirken, asal sayıların kendisi de private olarak kullanılabilir.
RSA gibi bazı önemli kriptografik algoritmalar, büyük sayıların asal çarpanlarına ayrılmasının uzun zaman alması gerçeğine kritik olarak bağlıdır.
Asallık Testi (Primality Test)
Asallık testi, bir sayının asal olup olmadığını belirleyen bir algoritmadır. Matematiğin diğer alanları arasında kriptografi için kullanılır.
Çarpanlara ayırmanın hesaplama açısından zor bir problem olduğu için asallık testini yapmak daha kolaydır.
Big Prime Number Generator: https://bigprimes.org
Primality Test: https://bigprimes.org/primality-test
Özet Fonksiyonlar (Hash Functions)
Özet fonksiyonlar, rastgele boyuttaki verileri sabit boyutlu değerlere eşlemek için kullanılan bir fonksiyondur.
Özet fonksiyonların gizli anahtarı yoktur. Fonksiyonun kendisi herkese açıktı ve herkes fonksiyonu çalıştırabilir.
İyi bir özet fonksiyonu aşağıdaki özellikleri taşır:
- Terslenemezler
- Hızlı çalışırlar
- Özet değerinden verinin kendisi elde edilemez
- 2 farklı veri aynı özet değerine sahip olamaz
Özet Fonksiyonlarının Kullanımı
1. Mesaj Oluşturalım
echo "PAUSIBER" > message.txt
2. Mesajımızı Hashleyelim
sha256sum message.txt

Bu hafta neler yaptık ?
- Asimetrik Şifreleme ve Simetrik Şifrelemenin ne olduğunu öğrendik.
- Şifreleme algoritmaları kullanarak mesaj şifreledik.
- Simetrik Şifrelemenin dezavantajı olan anahtar paylaşımının nasıl yapıldığını öğrendik.
- Kriptolojinin arkasındaki matematiği öğrendik.
- Asal Sayıların kriptolojideki yerini ve nasıl kullanıldıklarını öğrendik.
- Özet Fonksiyonlarını ve nasıl kullanıldıklarını öğrendik.