# GNU Privacy Guard
GNU Privacy Guard (GnuPG ya da GPG), şifreleme yazılımı PGP yerine GPL lisanslı bir özgür yazılım alternatifidir. Özgür Yazılım Vakfı'nın GNU projesinin bir parçası olarak geliştirilmektedir ve en önemli maddi yardımını Alman hükûmetinden almıştır. GPG, IETF'nin OpenPGP standartıyla tamamen uyumludur. PGP'nin güncel sürümleri GPG ve diğer OpenPGP uyumlu sistemlerle uyumluluk göstermektedir. Aynı zamanda bazı eski sürümlerde de bu uyumluluk söz konusudur, fakat güncel sürümün tüm özellikleri eski sürümlerce desteklenmemektedir. Kullanıcıların bu uyum sorunlarını anlamaları ve bunları göz önünde bulundurarak çalışmaları gerekmektedir.


## Genel bakış.
GnuPG, geleneksel simetrik anahtar şifrelemesini hızlı yapması ve tek seferlik kullanılan bir oturum anahtarını şifrelerken alıcının açık anahtarlı şifreleme kullanması nedeniyle bir hibrit-şifreleme yazılımıdır.
GnuPG 1.x serisi entegre bir şifreleme kütüphanesi kullanır, GnuPG 2.x serisi ise bunu Libgcrypt ile değiştirmiştir.
GnuPG, GnuPG kullanıcıları tarafından ayrı ayrı oluşturulan asimetrik anahtar çiftlerini kullanarak mesajları şifreler. Ortaya çıkan ortak anahtarlar, diğer kullanıcılar ile İnternet anahtar sunucuları gibi çeşitli yollar vasıtasıyla değiştirilebilir. Bu anahtarların değişimi çok büyük önem taşımaktadır çünkü "Açık anahtar" ↔ "Açık anahtarın sahibi" ilişkisi kaybolursa kimlik sahteciliği(kendini farklı bir kişi gibi gösterme) yapılabilir, o nedenle bu değişim işlemi dikkatli bir şekilde yapılmalıdır. Gönderilen bir mesaja kriptografik dijital imza eklemek de mümkündür, böylece göndericinin doğrulaması yapılabilir. Bu şekilde, kimlik sahteciliği saldırılarının da önüne geçilmiş olunur. Ayrıca, dijital imza kullanılarak belirli bir yazışmanın gönderim esnasında bozulması durumuna karşın mesaj bütünlüğü kontrolü yapılarak mesajın bütünlüğü de doğrulanabilir.
GnuPG ayrıca simetrik anahtar algoritmalarını da destekler. Varsayılan olarak ise CAST5 simetrik algoritmasını kullanır. GnuPG patentli veya başka şekilde kısıtlanmış yazılım veya algoritmalar kullanmaz. Bunun yerine, GnuPG, çeşitli patentli olmayan algoritmalar kullanır.
GnuPG Uzun bir süredir PGP'de kullanılan IDEA(Uluslararası Veri Şifreleme Algoritması)'yı desteklemiyordu. Aslında bir eklenti indirerek IDEA'yı GnuPG'de kullanmak mümkündür, ancak IDEA'nın patentlendiği ülkelerde bazı kullanımlar için lisans gerektirebilir. 1.4.13 ve 2.0.20 sürümleriyle başlayan GnuPG, IDEA'nın son patentinin 2012'de sona ermesi nedeniyle IDEA'yı desteklemektedir. IDEA'nın desteği, "Kullanıcılardan gelen sorulardan kurtulmak için ya eski veriler şifrelenmeli ya da anahtarlar PGP'den GnuPG'ye taşınmalı" amacıyla tasarlanmıştır, bu nedenle düzenli kullanım için önerilmez.
GnuPG, 2.0.26 ve 1.4.18 sürümlerinde aşağıdaki algoritmaları desteklemektedir:
Açık anahtarlı şifreleme
RSA, ElGamal, DSA
Simetrik Anahtarlı Şifreleme
3DES, IDEA (versiyon 1.4.13 ve 2.0.20'den itibaren), CAST5, Blowfish, Twofish, AES-128, AES-192, AES-256, Camellia-128, -192 and -256 (versiyon 1.4.10 ve 2.0.12'den itibaren)
Özet(Hash) Fonksiyonu
MD5, RIPEMD-160, SHA-1, SHA-256, SHA-384, SHA-512, SHA-224
Sıkıştırma
ZIP, ZLIB, BZIP2


## Tarihi.
GnuPG başlangıçta Werner Koch tarafından geliştirildi. İlk üretim versiyonu olan Versiyon 1.0.0, ilk GnuPG sürümünden (versiyon 0.0.0) sonra neredeyse iki yıl sonra 7 Eylül 1999'da piyasaya sürüldü. Alman Federal Ekonomi ve Teknoloji Bakanlığı 2000 yılında belgeleri ve girişi Microsoft Windows'a finanse etti. GnuPG, OpenPGP standardına uyumlu bir sistemdir. Başlangıçta Phil Zimmermann tarafından tasarlanan ve geliştirilen PGP, e-posta şifreleme programı ile birlikte çalışmak üzere tasarlanmıştır.


### Dallar.
Ocak 2018 itibarıyla iki aktif GnuPG dalı var:
  - "Modern" (2.2), eliptik eğri kriptografisi gibi çok sayıda yeni özelliğe sahip, eski "kararlı" (2.0) dalına göre, 28 Ağustos 2017'de GnuPG 2.2.0 sürümü ile değiştirildi. Başlangıç tarihi olarak 6 Kasım 2014'te piyasaya sürüldü.
  - Daha eski veya gömülü platformlar için daha uygun olan, daha eski, ancak hala tek başına sürdürülen "Klasik" (1.4). Başlangıçta 16 Aralık 2004'te yayınlandı.
Farklı GnuPG 2.x sürümleri (ör. 2.2 ve 2.0 dallarından) aynı anda yüklenemez fakat herhangi bir GnuPG 2.x versiyonu ile birlikte bir "klasik" GnuPG versiyonu (yani 1.4 dalından) monte etmek mümkündür.
GnuPG 2.2'nin ("modern") piyasaya sürülmesinden önce, artık kullanımdan kaldırılan "kararlı" şube (2.0), ilk kullanım için 13 Kasım 2006'da yayımlanan genel kullanım için önerildi. Bu şube 31 Aralık 2017'de ömrünün sonuna ulaştı. Son versiyonu 29 Aralık 2017'de piyasaya sürülen 2.0.31 versiyonudur.
GnuPG 2.0'ın piyasaya sürülmesinden önce, tüm kararlı yayınlar tek bir daldan oluşturuldu. Diğer bir deyişle, 13 Kasım 2006'dan önce, birden fazla sürüm dalı paralel olarak muhafaza edilmemiştir. Bu eski, sırayla başarılı (1.4'e kadar) sürüm dalları şunlardır:
  - 1.0 dalı, başlangıç tarihi olarak 7 Eylül 1999'da, son sürüm olarak 1.0.7 ile ise 30 Eylül 2002'de yayınlandı.
  - 1.2 dalı, başlangıç tarihi olarak 22 Eylül 2002'de, son sürüm olarak 1.2.6 ile ise 26 Ekim 2004 tarihinde yayınlandı.


## GnuPG'nin kullanımı.
GPG kararlı, kaliteli bir yazılımdır. neredeyse tüm GNU/Linux dağıtımları ve FreeBSD, OpenBSD, NetBSD gibi özgür işletim sistemlerine sıklıkla dahil edilir.
Her ne kadar temel GPG yazılımı bir komut satırı arayüzüne sahipse de, grafiksel kullanıcı arayüzü ile kullanılmasını sağlayan pek çok yazılım vardır. Örneğin, en popüler Linux masaüstü yöneticileri GNOME ve KDE'nin elektronik posta işlemcileri Evolution ve KMail'e entegre edilmiştir. GNOME için, Seahorse adlı bir grafik son kullanıcı arayüzü mevcuttur. II. Dünya Savaşı'nda Almanların kullandığı ENIGMA şifreleme tekniğinin isminden esinlenerek Enigmail olarak adlandırılmış bir eklenti, Linux'un yanı sıra Microsoft Windows ve diğer işletim sistemlerinde de çalışan Mozilla ve Thunderbird yazılımlarıyla entegrasyonunu sağlar. Horde gibi web tabanlı yazılımlarla da kullanılması mümkündür. Ancak unutulmamalıdır ki, eklenti mekanizmaları, GPG'nin ya da OpenPGP standardının bir parçası olmadığı ve ne GPG ne de OpenPGP geliştiricileri tarafından geliştirildikleri için, bu eklentilerin kullanımı güvenlik riskleri yaratma potansiyeline sahiptir.
GPG ayrıca Mac OS X ve Microsoft Windows gibi platformlar için de derlenebilir. Mac OS X için, MacPGP denen özgür bir GPG portu bulunmaktadır. MacPGP, OS X kullanıcı arayüzüne ve yerel sınıf tanımlarına uyarlanmıştır. Platformlar arası derleme küçük bir iş değildir, en azından güvenlik risklerini ortadan kaldırmak için çok fazla efor gerekmektedir.


## Yöntemler.
Temel GnuPG programının bir komut satırı arayüzü olmasına rağmen, grafiksel kullanıcı arayüzü sağlayan çeşitli ön uçlar bulunmaktadır. Örneğin, GnuPG şifreleme desteği, en popüler Linux masaüstü bilgisayarları olan KDE ve GNOME'da bulunan grafik e-posta istemcileri olan KMail ve Evolution'a entegre edilmiştir. Ayrıca grafik GnuPG ön uçları, örneğin GNOME için Seahorse ve KDE için KGPG vardır.
macOS için, GPG Suite projesi, şifreleme ve anahtar yönetimi için OS entegrasyonu ve Installer paketleri aracılığıyla GnuPG kurulumları için bir dizi Aqua ön uç sağlar. Ayrıca, GPG Suite Installer, GnuPG tabanlı şifrelemeyi kullanmak için ilgili tüm OpenPGP uygulamalarını (GPG Keychain Access), eklentileri (GPGMail) ve bağımlılıkları (MacGPG) yükler.
GnuPG kurulup yapılandırıldığında, Psi ve Fire gibi anlık mesajlaşma uygulamaları otomatik olarak güvenlik sağlamaktadır. Horde gibi web tabanlı yazılımlar da bundan yararlanmaktadır. Çapraz platform uzantısı Enigmail, Mozilla Thunderbird ve SeaMonkey için GnuPG desteği sağlar. Benzer şekilde Enigform, Mozilla Firefox için GnuPG desteği sağlar. FireGPG, 7 Haziran 2010 tarihinde durduruldu.
2005 yılında g10 Code GmbH ve Intevation GmbH şirketleri, Windows için GnuPG, GNU Privacy Assistant ve son olarak Windows Explorer ve Outlook için GnuPG eklentilerini içeren bir yazılım paketi olan Gpg4win'i piyasaya sürdü. Bu araçlar standart bir Windows yükleyicisine eklenerek, GnuPG'nin Windows sistemlerine yüklenmesini ve kullanılmasını kolaylaştırır.
2018'de, Sevenuc Danışmanlık Şirketi, Mac App Store'da Guard7 isimli bir program yayınladı. Bu program GnuPG ile günlük çalışmayı macOS'ta kolay ve basit hale getirdi. Bu program GPG için bazı ek özelliklere sahip(Örn. "Kişileri gruplara ayırın", "Farklı anahtarlıklar değiştirin") grafiksel bir ön uç. Guard7, MacOS'un yerleşik Mail uygulamasıyla sorunsuz bir şekilde bütünleşir ve e-posta mesajı için düzinelerce alıcıyı kolayca düzenleyebilir. Dosya şifrelemek veya şifresini çözmek sadece Finder'dan Guard7'ye dosya sürüklemeyi gerektirir, bu çok kullanışlı ve basittir.


## GPG'yi Komut Satırından Çalıştırmak.
  - Versiyon Bilgisi öğrenme:
 gpg --version 
  - Açık ve gizli anahtar çifti üretme:
 gpg --gen-key
  - Parmak izlerini listeleme: 
 gpg --fingerprint
  - Makine üzerindeki açık anahtarları listeleme:
 gpg --list-keys 
  - Makine üzerindeki açık anahtarı dışarı aktarmak:
 gpg --output acik_anahtar.gpg --armor --export ABCDFE01
  - Dışarıdan bir açık anahtarı makineye ekleme:
 gpg --import acik_anahtar.gpg
  - Makine üzerindeki gizli anahtarları listeleme:
 gpg --list-secret-keys 
  - Makine üzerindeki gizli anahtarı dışarı aktarmak:
 gpg --output gizli_anahtar.gpg --armor --export-secret-key ABCDFE01
  - Dışarıdan gizli anahtarı makineye ekleme:
 gpg --allow-secret-key-import --import gizli_anahtar.gpg
  - Var olan anahtar ile veri şifreleme:
 gpg --encrypt --armor -r ABCDFE01 metin_dosyasi.txt
  - Şifrelenmiş metni çözme:
 gpg metin_dosyasi.txt.asc
  - İmzalı metin doğrulama:
 gpg --verify metin_dosyasi.txt.asc
  - Metni imzalama:
 gpg --clearsign metin_dosyasi.txt
"Verilen örneklerdeki 'ABCDFE01' ifadesi anahtarın kısa kodudur."


## Sınırlamalar.
Komut satırı tabanlı bir sistem olarak GnuPG 1.x, başka bir yazılıma eklenebilecek bir API olarak yazılmaz. Bunun üstesinden gelmek için, GnuPG'nin çıktısını ayrıştıran ve bileşenler arasında kararlı ve sürdürülebilen bir API sağlayan GPPME (GnuPG Made Easy'den kısaltılmıştır), GnuPG etrafında bir API eklemesi olarak oluşturulmuştur. Bu, şu anda birçok GPGME API çağrısı için GnuPG yürütülebilir dosyasına bir işlem dışı çağrısı gerektiriyor. Sonuç olarak, bir uygulamadaki olası güvenlik sorunları, işlem engeli nedeniyle gerçek kripto koduna yayılmamaktadır. GPGME'ye dayanan çeşitli grafik ön uçlar oluşturulmuştur.
GnuPG 2.0'dan beri, birçok GnuPG fonksiyonu, Libgcrypt'de doğrudan C API'leri olarak kullanılabilir.


## Zaafiyetler.
OpenPGP standardı, mesajların dijital olarak imzalanması için çeşitli yöntemleri belirtir. 2003'te, bu yöntemlerden birini daha verimli hale getirmeyi amaçlayan GnuPG'ye yapılan bir değişiklik nedeniyle bir güvenlik açığı ortaya çıkmıştır. Sadece GnuPG'nin (1.0.2 - 1.2.3 arası) bazı sürümleri için yalnızca dijital olarak imza mesajlarının bir yöntemini etkilemiştir ve anahtar sunucularda 1000'den daha az sayıda anahtar bulunmaktadır. Çoğu insan bu yöntemi kullanmadı, bu nedenle meydana gelen hasar (eğer varsa, hiçbiri kamuya bildirilmediğinden) asgari düzeyde görünmektedir. Bu yöntem için destek, bu keşif sonrasında yayımlanan GnuPG sürümlerinden kaldırılmıştır (1.2.4 ve üstü).
2006 yılının başında iki tane daha fazla güvenlik açığı keşfedilmiştir; birincisi, GnuPG'nin imza doğrulaması için komut dosyalarının kullanılması yanlış pozitif sonuçlara yol açabilir, ikincisi ise MIME olmayan mesajların, dijital imzanın kapsamadığı ancak imzalı mesajın bir parçası olarak rapor edilen veri enjeksiyonuna karşı savunmasız oluşudur. Her iki durumda da GnuPG'nin güncellenmiş versiyonları duyuru sırasında hazırlanmıştır.
Haziran 2017'de, Bernstein, Breitner ve diğerleri tarafından Libgcrypt içinde bir güvenlik açığı (CVE-2017-7526) keşfedildi: GnuPG tarafından kullanılan, RSA-1024 için bütün anahtarların ve RSA-2048 anahtarlarının 1/8'inden fazlasının geri üretilmesini sağlayan bir kütüphane. Bu yan kanal saldırısı, Libgcrypt'in üslenme bitleri için kayan bir pencere yöntemi kullanması ve bu durumun, sonuçta bitlerin bitiminden ve tam anahtar kurtarılmasından kaynaklandığı gerçeğinden yararlanmaktadır. Yine, GnuPG'nin güncellenmiş bir sürümü duyuru sırasında hazırlandı.
Ekim 2017'de, genellikle PGP / GPG ile kullanılan YubiKey 4 jetonlarında üretilen RSA anahtarlarını etkileyen ROCA güvenlik açığı açıklandı. Birçok yayınlanmış PGP anahtarının hassas olduğu bulunmuştur.


## Uygulama Desteği.
GPG'yi destekleyen önemli uygulamalar, ön uçlar ve tarayıcı uzantıları aşağıdakilerdir:
  - Claws Mail - GPG eklentisi olan bir e-posta istemcisi
  - Enigform - Firefox eklentisi
  - Enigmail - Mozilla Thunderbird ve SeaMonkey uzantısı
  - Evolution - Native GnuPG desteği ile bir GNOME Mail uygulaması
  - FireGPG - bir Firefox eklentisi (üretilmiyor)
  - Gnus - GNU Emacs'te bir mesaj ve haber okuyucu
  - Gpg4win - e-posta ve dosya şifrelemesi için araçlar ve kılavuzlar içeren bir Windows paketi
  - GPGMail - bir macOS Mail.app eklentisi
  - KGPG - GnuPG için bir KDE grafik ön ucu
  - KMail - kriptografi için GPG kullanan Kontact'ın (PIM yazılımı) e-posta istemcisi / e-posta bileşeni
  - MCabber - bir Jabber.org istemcisi
  - Mutt - yerleşik PGP / GPG desteğine sahip bir e-posta istemcisi
  - Psi (anlık mesajlaşma istemcisi)
  - The Bat! - GnuPG'yi bir OpenPGP sağlayıcı olarak kullanabilen e-posta istemcisi
  - WinPT - Windows için GPG'ye grafiksel bir ön uç (üretilmiyor)
  - Guard7 - macOS'ta GPG'nin grafiksel ön yüzü (Mac App Store'da mevcut)


## Medyadaki Yansıması.
Mayıs 2014'te The Washington Post, anon108 adında bir kullanıcı tarafından Ocak 2013'te Vimeo'ya gönderilmiş 12 dakikalık bir video rehberi "Gazeteciler için GPG" haberi yayınladı. The Post gazetesi, sesi dijital bir şekilde gizlenen ve amacı gazeteci Glenn Greenwald'e e-posta şifrelemesini öğretmek olan anon108'i, konuşma şeklinin Snowden'a benzemesi üzerine, kaçak NSA ihbarcısı Edward Snowden olarak tanımladı. Greenwald, videonun yazarlığını doğrulayamadığını söyledi.