GPG ile Şifreli Mesajlaşma ve Dijital İmza
Özellikle kriptografiyle uğraşanlar ya da teknolojiye hakim kişiler arasında, iletişim bilgilerine GPG anahtarlarını eklediklerini hiç fark ettiniz mi? Uzun bir süredir bunun çok havalı bir şey olduğunu düşünüyordum.
Son zamanlarda üzerinde çalıştığım kurumsal bir proje, GPG’ye olan takdirimi daha da artırdı. Bu proje, bankalara SFTP üzerinden dosya gönderip almayı içeriyordu ve bu da dosyaların GPG ile şifrelenmesini ve şifresinin çözülmesini gerektiriyordu. Bu süreç, bana GPG’nin nasıl çalıştığını ve neden bu kadar güçlü bir araç olduğunu uygulamalı olarak anlamamı sağladı.
Bu yazıda o deneyimi paylacağım. GPG’nin ne olduğunu, PGP’den nasıl farklılaştığını ve en önemlisi nasıl kullanabileceğini anlatacağım. İster dosyalarını güvenli hale getirmek, ister iletişimlerini korumak, ister sadece bir kriptografi ustası gibi hissetmek iste, GPG bilmeye değer bir araç—ve açık anahtarını paylaşmak belki de yapabileceğin en havalı şey olabilir.

Arka Plan
GPG (GNU Privacy Guard), verileri şifrelemek ve dijital olarak imzalamak için kullanılan açık anahtarlı bir kriptografi aracıdır. PGP (Pretty Good Privacy) ile aynı prensiplere dayanır ve onun açık kaynaklı alternatifidir.
GPG, verileri güvenli bir şekilde iletmek için simetrik ve asimetrik şifrelemenin gücünü birleştirir. İşte nasıl çalıştığını basitleştirilmiş bir şekilde anlatan bir açıklama:

1. Adım: Rastgele Bir Simetrik Anahtar Oluşturulur
Bir mesajı veya dosyayı şifrelediğinizde, GPG önce rastgele bir simetrik anahtar üretir. Bu anahtar, içeriği AES gibi hızlı ve güvenli bir simetrik şifreleme algoritmasıyla şifrelemek için kullanılır.
2. Adım: Simetrik Anahtar, Alıcının Açık Anahtarıyla Şifrelenir
Daha sonra GPG, simetrik anahtarın kendisini alıcının açık anahtarıyla şifreler. Bu adım sayesinde yalnızca karşılık gelen özel anahtara sahip olan alıcı, simetrik anahtarı çözüp içeriğe ulaşabilir.
3. Adım: Şifrelenmiş Mesaj ve Anahtar Gönderilir
Şifrelenmiş içerik ve şifrelenmiş simetrik anahtar bir araya getirilir ve alıcıya gönderilir.
4. Adım: Alıcı, Simetrik Anahtarı Çözer
Alıcı, özel anahtarını kullanarak şifrelenmiş simetrik anahtarı çözer. Özel anahtar yalnızca alıcıya ait olduğundan, bu anahtara başkası erişemez.
5. Adım: Simetrik Anahtar, İçeriği Çözmek İçin Kullanılır
Simetrik anahtar çözüldükten sonra, alıcı bu anahtarı kullanarak içerikteki gerçek veriyi şifreli halinden çözer ve orijinal mesaj ya da dosyaya ulaşır.
GPG Neden Güvenli ve Verimlidir?
GPG ile her veri şifrelemede yeni bir simetrik anahtar oluşturulur. Bu rastgelelik, aynı mesajı defalarca şifreleseniz bile her seferinde farklı şifreli çıktılar elde edilmesini sağlar.
AES gibi simetrik şifreleme algoritmaları, asimetrik algoritmalara göre çok daha hızlıdır. Bu hibrit yaklaşım, hem güvenliği hem de verimliliği bir arada sunar.
Açık/özel anahtar kullanımı sayesinde yalnızca hedef alıcı, simetrik anahtarı çözebilir ve bu da sürecin tamamını güvence altına alır.
Simetrik ve asimetrik şifrelemenin bu şekilde bir araya gelmesi, hem performans hem de güvenlik açısından dengeli bir yapı sunar. Bu da GPG’yi güvenli iletişim ve dosya paylaşımı için ideal bir araç haline getirir.
GPG Anahtarlarınızı Oluşturmak
Dosyaları şifrelemeye veya şifresini çözmeye başlamadan önce, kendi GPG anahtarlarınızı oluşturmanız gerekir. Bu işlem, biri açık (public), diğeri özel (private) olmak üzere bir anahtar çifti yaratmayı içerir. Açık anahtar başkalarıyla paylaştığınız anahtardır; özel anahtar ise sizde kalır ve sizin açık anahtarınızla şifrelenmiş mesajları veya dosyaları çözmek için kullanılır.
Öncelikle, sisteminizde GPG yüklü olduğundan emin olun. Aşağıdaki komutları kullanarak GPG’yi yükleyebilirsiniz:
1 2 3 4 5 6 |
sudo apt update sudo apt install gnupg |
Anahtar oluşturma sürecini başlatmak için aşağıdaki komutu çalıştırın:
1 2 3 4 5 |
gpg --full-generate-key |
Bu komut sizi kurulum süreci boyunca yönlendirecektir. Aşağıdaki bilgileri girmeniz istenecek:
🔑 Anahtar Türü (Key type): Varsayılan seçeneği, yani genellikle “RSA and RSA” olanı seçin. Bu seçenek hem imzalama hem de şifreleme için RSA algoritmasını kullanır.
🔐 Anahtar Boyutu (Key size): Bir anahtar boyutu belirtin. Önerilen 3072-bit RSA anahtarıdır. Bu uzunluk, 128-bit AES anahtarına denktir ve 2030 sonrasına kadar güvenli olduğu düşünülmektedir.
⏳ Geçerlilik Süresi (Expiration date): Süresiz geçerli olması için bu değeri 0 olarak ayarlayın. Dilerseniz belirli bir süre de tanımlayabilirsiniz.
👤 Kullanıcı Kimliği (User ID): Adınızı ve e-posta adresinizi girin. Bu bilgiler, anahtarı listelerken onun kimliğini tanımlamak için kullanılır.
🔒 Parola (Passphrase): Özel anahtarınızı korumak için güçlü bir parola belirleyin. Bu parola, anahtarınızı izinsiz kullanıma karşı korur.
Anahtarınız oluşturulduktan sonra, aşağıdaki komutu kullanarak onu listeleyebilirsiniz:
[…] GPG’nin (GNU Privacy Guard) son sürümü, varsayılan olarak eliptik eğri tabanlı algoritmaları benimseyerek önemli bir değişikliğe gitmiştir—özellikle, şifreleme için ECDH (Eliptik Eğri Diffie-Hellman) ve imzalar için EdDSA (Edwards-eğrisi Dijital İmza Algoritması). Aslında, GPG sürüm 2.1’den beri eliptik eğri kriptografisini (ECC) desteklemekteydi, ancak 2.3 sürümüyle birlikte artık varsayılan olarak ECC anahtar çiftleri üretmeye başlamıştır. Bu değişiklik, RSA’nın hegemonyasının sonunu işaret etmektedir; çünkü eliptik eğri kriptografisi (ECC), çok daha yüksek verimlilikle aynı güvenlik seviyesini vaat etmektedir. […]