GPG ile Dosya Şifreleme ve Şifre Çözme Rehberi

GPG kullanarak dosyaları simetrik ve genel anahtarlı şifreleme yöntemleriyle nasıl koruyacağınızı öğrenin. Adım adım komutlar ve en iyi uygulamalar.

I
ITWISE
2 görüntülenme
GPG ile Dosya Şifreleme ve Şifre Çözme Rehberi

Giriş

Verilerinizi güvende tutmak, özellikle hassas bilgiler içeren dosyalar söz konusu olduğunda kritik bir gerekliliktir. GPG (GNU Privacy Guard), Linux sistemlerinde standart olarak kullanılan ve OpenPGP standardını destekleyen güvenilir bir araçtır. Bu rehberde, GPG kullanarak dosyaları hem simetrik hem de genel anahtarlı şifreleme yöntemleriyle nasıl koruyacağınızı, şifreli dosyaları diğer kullanıcılarla nasıl paylaşacağınızı ve komut dosyalarında nasıl kullanacağınızı öğreneceksiniz.

GPG Nedir ve Neden Kullanmalısınız?

GPG, verilerinizi hem şifreleyebilen hem de imzalayabilen bir araçtır. İki temel şifreleme yöntemi sunar:

  1. Simetrik Şifreleme: Tek bir parola hem dosyanın şifrelenmesi hem de çözülmesi için kullanılır. Bu yöntem, basit ve hızlıdır, ancak parola paylaşımı gerektirir.
  2. Genel Anahtarlı Şifreleme: Her kullanıcının bir genel ve özel anahtarı vardır. Genel anahtarınızı paylaşarak diğerleri dosyaları sizin için şifreleyebilir, ancak sadece sizin özel anahtarınız dosyaları çözebilir.

GPG, verilerinizi bulut depolama hizmetlerinde, e-postalarda veya yerel makinelerinizde güvenli bir şekilde saklamak için idealdir.

GPG Kurulumu

Gereksinimler

GPG, çoğu Linux dağıtımında varsayılan olarak yüklüdür. Kurulu olup olmadığını kontrol etmek için aşağıdaki komutu çalıştırın:

gpg --version

Eğer kurulu değilse, aşağıdaki komutlarla kurulumu gerçekleştirebilirsiniz:

  • Ubuntu/Debian ve türevleri:
    sudo apt update
    sudo apt install gnupg
  • Fedora/RHEL ve türevleri:
    sudo dnf install gnupg2

Simetrik Şifreleme: Dosyaları Bir Parola ile Koruma

Adım 1: Dosyayı Şifreleme

Simetrik şifreleme, bir parola kullanarak dosyayı hem şifreleyen hem de çözen basit bir yöntemdir. Aşağıdaki komutla bir dosyayı şifreleyin:

gpg -c veritabani_yedek.sql

Komut çalıştırıldığında GPG, sizden bir parola girmenizi ve tekrar girmenizi isteyecektir. Parola girildikten sonra, şifrelenmiş dosya veritabani_yedek.sql.gpg adıyla oluşturulur. Orijinal dosya olduğu yerde kalır.

Adım 2: Şifreli Dosyayı Kontrol Etme

Şifreli dosyanın doğru şekilde oluşturulduğunu doğrulamak için, aşağıdaki komutlarla dosyayı çözün ve orijinal dosya ile karşılaştırın:

gpg -o /tmp/veritabani_yedek.sql -d veritabani_yedek.sql.gpg
cmp veritabani_yedek.sql /tmp/veritabani_yedek.sql

cmp komutu herhangi bir çıktı vermiyorsa, dosyalar aynıdır ve şifreleme başarılı olmuştur. Doğrulama tamamlandıktan sonra geçici dosyayı ve orijinal dosyayı silin:

rm /tmp/veritabani_yedek.sql
rm veritabani_yedek.sql

Parola Seçimi ve ASCII Çıktısı

Parola seçerken uzun ve karmaşık bir parola kullanmaya özen gösterin. Kısa veya tahmin edilebilir parolalar, şifrelemenin güvenliğini ciddi şekilde zayıflatır. Ayrıca, ASCII formatında çıktı almak için -a seçeneğini kullanabilirsiniz:

gpg -c -a notlar.txt

Bu komut, notlar.txt.asc adıyla bir metin dosyası oluşturur ve bu dosya kopyalanabilir veya e-posta yoluyla gönderilebilir.

Genel Anahtarlı Şifreleme: Dosyaları Diğer Kullanıcılarla Güvenli Bir Şekilde Paylaşma

Adım 1: GPG Anahtar Çifti Oluşturma

Genel anahtarlı şifreleme için ilk adım, bir anahtar çifti oluşturmaktır. Aşağıdaki komutla bir anahtar çifti oluşturabilirsiniz:

gpg --full-generate-key

Komut çalıştırıldığında, aşağıdaki adımları izleyin:

  1. Anahtar Türü: Varsayılan seçenek olan RSA and RSA seçeneğini onaylayın.
  2. Anahtar Boyutu: 4096 bitten küçük olmayan bir boyut seçin.
  3. Anahtarın Geçerlilik Süresi: Anahtarın ne kadar süreyle geçerli olacağını belirleyin. Varsayılan olarak kalıcı bir anahtar oluşturabilirsiniz.
  4. Ad ve E-posta: Adınızı ve e-posta adresinizi girin.
  5. Parola: Özel anahtarınızı korumak için bir parola belirleyin.

Anahtar çifti oluşturulduktan sonra, aşağıdaki komutla anahtarlarınızı listeleyebilirsiniz:

gpg --list-keys

Çıktıda, genel anahtarınızın kimlik bilgilerini ve geçerlilik süresini görebilirsiniz.

Adım 2: Genel Anahtarınızı Dışa Aktarma

Diğer kullanıcılarla dosya paylaşabilmek için, genel anahtarınızı dışa aktarmanız gerekir. Aşağıdaki komutla genel anahtarınızı ASCII formatında dışa aktarın:

gpg --armor --export email@example.com > genel_anahtar.asc

Bu komut, genel_anahtar.asc adıyla bir dosya oluşturur. Bu dosyayı diğer kullanıcılarla paylaşabilirsiniz.

Adım 3: Diğer Kullanıcıların Genel Anahtarlarını İçe Aktarma

Başka bir kullanıcıdan genel anahtar aldığınızda, aşağıdaki komutla bu anahtarı içe aktarın:

gpg --import alici_anahtari.asc

Daha sonra, aşağıdaki komutla anahtarın doğruluğunu doğrulayabilirsiniz:

gpg --fingerprint email@example.com

Doğrulama tamamlandıktan sonra, aşağıdaki komutla anahtarı imzalayabilirsiniz:

gpg --sign-key email@example.com

Bu adım, GPG'in diğer kullanıcıların anahtarlarına güvenmesini sağlar.

Adım 4: Dosyayı Bir Kullanıcı için Şifreleme

Bir kullanıcı için dosya şifrelemek için aşağıdaki komutu kullanın:

gpg -e -r alici@example.com rapor.pdf

Bu komut, rapor.pdf.gpg adıyla bir şifreli dosya oluşturur. Dosyayı sadece alıcının özel anahtarıyla çözebilirsiniz.

Adım 5: Dosyayı İmzalama ve Şifreleme

Dosyanın hem güvenli hem de doğrulanabilir olmasını sağlamak için, dosyayı imzalayarak ve şifreleyerek gönderin. Aşağıdaki komutla dosyayı imzalayın ve şifreleyin:

gpg -s -u gonderen@example.com -e -r alici@example.com rapor.pdf

Bu komut, dosyayı hem imzalar hem de şifreler. Alıcı dosyayı çözdüğünde, imzanın doğruluğunu otomatik olarak kontrol eder.

Dizinleri Şifreleme

GPG, dosyaları şifreler, ancak dizinleri doğrudan şifreleyemez. Bir dizini şifrelemek için, dizini bir arşiv dosyasına dönüştürün ve ardından bu arşiv dosyasını şifreleyin. Aşağıdaki komutla bir dizini şifreleyin:

tar czf - proje/ | gpg -c -o proje.tar.gz.gpg

Bu komut, dizini bir arşiv dosyasına dönüştürür ve ardından bu arşiv dosyasını şifreler. Dizinleri geri yüklemek için aşağıdaki komutu kullanın:

gpg -d proje.tar.gz.gpg | tar xzf -

Komut Dosyalarında GPG Kullanımı

Otomatik yedekleme veya dağıtım komut dosyalarında GPG kullanırken, parolayı elle girmek mümkün olmayabilir. Bu durumlarda, parolayı bir dosyada saklayabilir ve GPG'e bu dosyadan okumasını söyleyebilirsiniz. Aşağıdaki komutla bir dosyayı otomatik olarak şifre çözün:

gpg --batch --yes --pinentry-mode loopback \
  --passphrase-file /root/.yedek_parola \
  -o yedek.sql -d yedek.sql.gpg

Dikkat: Parola dosyasını korumak için chmod 600 komutunu kullanın ve bu dosyayı versiyon kontrol sistemlerinden (örneğin Git) hariç tutun. Genel anahtarlı şifreleme kullanıldığında, komut dosyalarında parolaya ihtiyaç duyulmaz.

Sık Karşılaşılan Sorunlar ve Çözümleri

Hata: gpg: decryption failed: No secret key
Bu hata, dosyanın sizin özel anahtarınızla şifrelenmediğini gösterir. Dosyayı hangi anahtarın şifrelediğini kontrol etmek için aşağıdaki komutu kullanın:

gpg --list-packets dosya.gpg | head

Hata: gpg: public key decryption failed: Inappropriate ioctl for device
Bu hata, GPG'in parola girmek için bir terminal bulamamasından kaynaklanır. Çözüm olarak, aşağıdaki komutu kullanarak terminali belirtin:

export GPG_TTY=$(tty)

Bu ayarı kalıcı hale getirmek için ~/.bashrc dosyanıza ekleyin.

GPG parola girilmesini istemiyor
Bu durum, GPG ajanının parolayı önbelleğe almasından kaynaklanır. Parolayı yeniden girilmesini sağlamak için aşağıdaki komutu çalıştırın:

gpg-connect-agent reloadagent /bye

Sonuç

GPG, verilerinizi hem yerel makinelerde hem de bulut depolama hizmetlerinde güvenli bir şekilde saklamak için güçlü bir araçtır. Simetrik şifreleme, kendi dosyalarınızı korumak için basit ve etkili bir yöntemdir, ancak genel anahtarlı şifreleme, dosyaları diğer kullanıcılarla paylaşırken daha güvenli ve esnek bir çözüm sunar. Dosyaları imzalayarak da alıcılara dosyanın kimden geldiğini ve değiştirilmediğini doğrulama olanağı sağlarsınız.

GPG'i komut dosyalarında kullanırken, parola dosyalarını güvenli bir şekilde saklamaya ve yalnızca gerektiğinde kullanmaya özen gösterin. Ayrıca, genel anahtarlarınızı ve özel anahtarlarınızı yedeklemeyi unutmayın.

Kaynak

Linuxize