pgp - pretty good privacy

 

PGP (Pretty Good Privacy) Nedir?

PGP (Pretty Good Privacy), dosyaları şifrelemek, dijital imzalar oluşturmak ve daha fazlası için kullanılan bir yazılımdır. GnuPG veya GPG ise, OpenPGP standardının açık kaynaklı bir uygulamasıdır.

GPG, özellikle e-posta iletişiminin gizliliğini korumak amacıyla yaygın olarak kullanılır. Bunun yanında, bir e-posta mesajını imzalayarak içeriğinin bütünlüğünü doğrulamak da mümkündür.

GPG Anahtarının Oluşturulması ve Kullanımı

Bir GPG anahtarı oluşturulurken yapılacak bazı önemli seçimler bulunmaktadır:

  1. İmzalama ve Şifreleme Seçenekleri: GPG anahtarı oluştururken, sadece imzalama mı yoksa hem imzalama hem de şifreleme yapma tercihini seçmeniz gerekir. Bu, anahtarın hangi amaçla kullanılacağını belirler.

  2. Kriptografik Algoritma Seçimi: GPG, farklı şifreleme algoritmalarını destekler. Örneğin, RSA, DSA, ve ECC (Eliptik Eğri Kriptografisi) gibi algoritmalar seçilebilir.

  3. Anahtar Geçerlilik Süresi: Anahtarın ne kadar süreyle geçerli olacağını belirlemeniz gerekir. Süresiz geçerli bir anahtar mı istersiniz, yoksa belirli bir süre sonunda mı geçerliliği sona ersin?

  4. Kişisel Bilgiler: Anahtarın sahibi olarak kimlik bilgilerinizi sağlarsınız. Genellikle ad, e-posta adresi ve anahtarın amacıyla ilgili bir açıklama girilir.

Aşağıda, bir GPG anahtarını oluşturmak için terminaldeki komutlardan örnekler yer almaktadır:

bash
gpg --full-gen-key gpg (GnuPG) 2.4.4; Copyright (C) 2024 g10 Code GmbH This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (9) ECC (sign and encrypt) *default* (10) ECC (sign only) (14) Existing key from card Your selection? 9 Please select which elliptic curve you want: (1) Curve 25519 *default* (4) NIST P-384 (6) Brainpool P-256 Your selection? 1 Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: strategos Email address: strategos@tryhackme.thm [...] pub ed25519 2024-08-29 [SC] AB7E6AA87B6A8E0D159CA7FFE5E63DBD5F83D5ED uid Strategos <strategos@tryhackme.thm> sub cv25519 2024-08-29 [E]

Bu süreçte şunları yapmış olduk:

  1. Kriptografik algoritmayı seçme: Burada ECC (Eliptik Eğri Kriptografisi) seçilmiştir ve Curve 25519 seçeneği tercih edilmiştir.

  2. Anahtarın geçerlilik süresini belirleme: Anahtarın süresiz geçerli olması istenmiştir.

  3. Kişisel bilgilerin girilmesi: Ad, e-posta adresi gibi bilgiler sağlanmıştır.

Anahtar başarıyla oluşturulduktan sonra, aşağıdaki gibi bir çıktı alırsınız:

css
pub ed25519 2024-08-29 [SC] AB7E6AA87B6A8E0D159CA7FFE5E63DBD5F83D5ED uid Strategos <strategos@tryhackme.thm> sub cv25519 2024-08-29 [E]

PGP/GPG ile Dosya Şifreleme ve İmzalama

PGP/GPG, sadece e-posta mesajlarını şifrelemekle kalmaz, aynı zamanda dosya şifreleme ve dijital imza oluşturma işlemleri için de kullanılabilir. Şifreleme işlemi sırasında, public key (açık anahtar) kullanılarak gönderilen mesajın gizliliği korunur. Alıcı, sadece private key (özel anahtar) ile bu mesajı çözebilir.

E-posta ile ilgili bir örnek:

  1. Anahtar Paylaşımı: GPG anahtar çiftini oluşturduktan sonra, public key (açık anahtar) alıcılarla paylaşılır.

  2. Mesaj Şifreleme: Alıcı, sizinle güvenli bir şekilde iletişim kurmak istediğinde, mesajlarını sizin public key’inizi kullanarak şifreler.

  3. Mesaj Çözme: Alıcıdan gelen şifrelenmiş mesajı çözmek için, sadece sizin private key’iniz gereklidir.

GPG Anahtarının Yedeklenmesi ve Taşınması

GPG anahtarınız oldukça önemli bir araçtır, bu yüzden yedeklenmesi gerekir. Örneğin, yeni bir bilgisayar aldığınızda, eski anahtarınızı bu yeni cihaza import ederek, şifrelenmiş mesajları yine çözebilirsiniz.

Anahtar yedeği alma:

bash
gpg --export-secret-keys > backup.key

Anahtarınızı yeni bilgisayara aktarma:

bash
gpg --import backup.key

Mesaj çözme:

bash
gpg --decrypt confidential_message.gpg

Pratik Uygulama:

  1. Anahtar Paylaşımı: Public key'inizi diğer kişilere gönderirsiniz.

  2. Mesaj Gönderme: Kişiler, mesajlarını şifrelemek için public key'inizi kullanır.

  3. Mesaj Çözme: Gönderilen şifreli mesajları private key'iniz ile çözebilirsiniz.

Anahtarınızı korumak önemlidir, çünkü şifreli mesajlar sadece sizin private key'inizle çözülebilir. Bu yüzden, private key’inizi güvenli bir yerde saklamak ve yedeğini almak gereklidir.

Şifreleme Anahtarı Korumaları: GPG anahtarlarını, tıpkı SSH özel anahtarlarını koruduğumuz gibi, parola ile koruyabilirsiniz. Eğer anahtarınız parola korumalıysa, bu parolayı kırmaya çalışabilirsiniz, bunun için John the Ripper ve gpg2john araçlarını kullanabilirsiniz. Bu görevde sağlanan anahtar parola ile korunmamaktadır.

GPG Komutları ve İpuçları

GPG’nin kullanımına dair detaylar için komut satırında man gpg komutuyla GPG'nin kılavuz sayfasına erişebilirsiniz.


English Translation

What is PGP (Pretty Good Privacy)?

PGP (Pretty Good Privacy) is software used for encrypting files, creating digital signatures, and more. GnuPG or GPG is an open-source implementation of the OpenPGP standard.

GPG is commonly used in email communication to protect the confidentiality of messages. Additionally, it can be used to sign an email message and confirm its integrity.

Creating and Using GPG Keys

When creating a GPG key, there are several important choices to make:

  1. Signing and Encryption Options: You choose whether you want the key for signing only or both signing and encryption. This defines the key’s intended purpose.

  2. Cryptographic Algorithm Selection: GPG supports different encryption algorithms, such as RSA, DSA, and ECC (Elliptic Curve Cryptography).

  3. Key Expiry Duration: You specify the validity of the key, whether it should be valid forever or expire after a certain period.

  4. Personal Information: You provide identifying details such as your name, email address, and a comment about the key's purpose.

Here is an example of the terminal commands when generating a GPG key:

bash
gpg --full-gen-key gpg (GnuPG) 2.4.4; Copyright (C) 2024 g10 Code GmbH This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (9) ECC (sign and encrypt) *default* (10) ECC (sign only) (14) Existing key from card Your selection? 9 Please select which elliptic curve you want: (1) Curve 25519 *default* (4) NIST P-384 (6) Brainpool P-256 Your selection? 1 Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: strategos Email address: strategos@tryhackme.thm [...] pub ed25519 2024-08-29 [SC] AB7E6AA87B6A8E0D159CA7FFE5E63DBD5F83D5ED uid Strategos <strategos@tryhackme.thm> sub cv25519 2024-08-29 [E]

Encrypting and Signing Files with PGP/GPG

PGP/GPG can be used for more than just email encryption; it also facilitates file encryption and digital signatures. During encryption, the public key is used to protect the message, and the recipient can decrypt it using the private key.

Backing Up and Transferring Your GPG Key

It’s essential to back up your GPG keys because they are critical. If you get a new computer, you can import your key to the new device and continue decrypting messages.

Backing up your key:

bash
gpg --export-secret-keys > backup.key

Importing your key:

bash
gpg --import backup.key

Decrypting messages:

bash
gpg --decrypt confidential_message.gpg

Practical Example

  1. Key Sharing: You share your public key with others.

  2. Message Sending: Others encrypt messages to you using your public key.

  3. Message Decryption: You decrypt the received encrypted messages with your private key.

It’s important to keep your private key secure because only it can decrypt the messages sent to you. Hence, you should always store your private key in a secure location and back it up.


***


Şifreleme (Cryptography), Şifre Kırma (Cryptanalysis) ve Saldırı Yöntemleri: Brute Force & Dictionary Attack


🔐 Cryptography (Şifreleme Bilimi) Nedir?

Cryptography, yani şifreleme bilimi, bilgi ve iletişimi yetkisiz kişilerden korumak amacıyla geliştirilmiş matematiksel yöntemleri içerir. Amacı:

  • Verinin gizliliğini sağlamak (sadece yetkili kişiler okuyabilsin),

  • Verinin bütünlüğünü korumak (değiştirilemediğini garanti etmek),

  • Kimlik doğrulama sağlamak (mesajı kimin gönderdiğini kanıtlamak),

  • Ve inkâr edilemezlik (gönderenin mesajı inkâr edememesi).

Bu bilim, mesajları şifreli (anlaşılamaz) hale getirerek çalışır. Mesajı tekrar anlaşılabilir hale getirmek için özel bir anahtar gerekir.


🧠 Cryptanalysis (Şifre Çözümleme) Nedir?

Cryptanalysis, şifrelenmiş bilgileri anahtar olmadan çözme sanatıdır. Diğer bir deyişle:

  • Amaç, bir şifreleme sistemini kırmak veya

  • Şifreli mesajın içeriğine ulaşmak için açıklar bulmaktır.

Bu, siber güvenlik uzmanlarının olduğu kadar siber saldırganların da başvurduğu bir disiplindir.


💣 Brute-Force Attack (Kaba Kuvvet Saldırısı)

Bu saldırı türünde saldırgan, bir parolayı veya şifreleme anahtarını bulmak için tüm olasılıkları teker teker dener.

Örneğin:

  • 4 basamaklı bir PIN kodu varsa (0000 - 9999 arası), saldırgan hepsini sırayla dener.

  • Avantajı: Sonunda doğruyu bulur.

  • Dezavantajı: Çok zaman ve işlem gücü gerektirir.


📚 Dictionary Attack (Sözlük Tabanlı Saldırı)

Eğer saldırgan, hedef parolanın bir kelime olabileceğini düşünüyorsa (örneğin: “password”, “123456”, “letmein”), her olasılığı denemek yerine, sık kullanılan parolaların bulunduğu bir “sözlük dosyası” kullanır.

  • Bu yöntem, brute-force’tan çok daha hızlıdır çünkü yalnızca olası (ve zayıf) şifreler denenir.

  • Günümüzde çoğu zayıf parola bu şekilde kolayca ele geçirilebilir.


📌 Bu Odada Ne Öğrendin?

Bu TryHackMe odasında şu konuların temelleri işlendi:

  • Asimetrik şifreleme (Public Key Cryptography): Herkese açık bir anahtar (public key) ile şifreleme, sadece size özel olan gizli anahtar (private key) ile çözme mantığı.

  • RSA: Asimetrik kriptografinin en çok bilinen algoritmalarından biri.

  • Diffie-Hellman: Ortak anahtar değişimini güvenli şekilde yapmayı sağlayan bir protokol.

  • SSH Anahtarları: Sunucuya parolasız güvenli giriş için kullanılan anahtar çiftleri.

  • Dijital İmzalar ve Sertifikalar: Verinin gerçekten belirli bir kişiden gelip gelmediğini ve değişmediğini doğrulamak için kullanılır.

  • OpenPGP: E-posta gibi iletişimlerde güvenliği sağlamak için kullanılan açık standart bir şifreleme sistemi.


🔜 Sıradaki Konu: Hashing (Özetleme)

Artık veri şifrelemenin ve anahtar değişiminin temellerini öğrendin. Sırada, verilerin sabit uzunlukta özetlerini çıkaran ve güvenliğin başka bir temel taşı olan hashing konusu var.