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:
- 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.
- 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:
- Anahtar Türü: Varsayılan seçenek olan
RSA and RSAseçeneğini onaylayın. - Anahtar Boyutu: 4096 bitten küçük olmayan bir boyut seçin.
- 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.
- Ad ve E-posta: Adınızı ve e-posta adresinizi girin.
- 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
~/.bashrcdosyanı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.


