Elektronik İmza Olarak GPG
Merhaba!
Bu yazıda GnuPG ya da daha çok bilinen adıyla GPG(Gnu Privacy Guard) nedir, ne için kullanılır ve GPG komutları ne işe yarar onu yazacağım. Fakat; GPG’ nin daha iyi anlaşılması için gelin önce birkaç konuya göz atalım.
Elektronik İmza:
Günümüzün hızla gelişen internet imkanlarıyla beraber riskler de artıyor. Artık bize ulaşan bir verinin güvenilirliği, eksikliği ya da fazlalığı ve gerçekten kim tarafından gönderildiği gibi konularda bazı soru işaretlerine sahibiz. İşte; elektronik imza bu soru işaretlerini tamamen silmese de bir nebze azaltan bir elektronik veridir. Peki, terim olarak nedir bu elektronik imza? “E-imza” olarak da nitelendirilen elektronik imza; kısaca elektronik ortamlarda imza yerine kullabilen, bu nedenle de tıpkı günlük hayattaki kullanımı gibi kimlik doğrulamasını sağlayan bir sistemdir. Bu imzanın kullanılmasıyla beraber:
- İmzalanan verinin, imzalayan kişi tarafından gönderildiği ve gönderilmek istenen alıcı tarafından teslim alındığı ( Kimlik doğrulama ),
- Gönderilen verinin kasten ya da yanlışlıkla değiştirilmediği ( Veri bütünlüğü ),
- Gönderen kişinin doğrulandığı kadar, teslim alan kişinin de hedef olan kişi olduğu ( İnkar edememe ), gibi birtakım özellikleri sağlanmış olur.
Gönderici- alıcı arasındaki kimlik dığrulamasını yapan ve veri bütünlüğünü koruyan bu imza günümüzde de e-posta, telif hakları ve e-devlet uygulamaları gibi bir çok alanda kullanılmaktadır.
Açık Anahtarlı Şifreleme:
Asimetrik şifreleme de denir. Bunun sebebi; anahtarların oluşturulurken asimetrik şifreleme algoritması kullanmalarıdır.
Açık anahtarlı şifreleme bir anahtar çifti mekanizmasına dayanır. Bunlardan biri genel anahtar diğeri ise özel anahtardır. Genel anahtar; şifreli veri gönderiminde, elektronik imzanın doğrulanmasında kullanılabilirken özel anahtar; şifreli gelen verinin deşifre edilmesinde ve bir verinin elektroni imza ile teyit edilmesinde kullanılır.
Kişiler genel anahtarlarını gönderen kişinin veri şifrelemesi için halka açabilirken, özel anahtarın gizli kalması önemli bir husustur. Çünkü; özel anahtar kişilerin güvenli bir şekilde şifreli olarak gelen veriyi açmalarına ve benzer şekilde gönderen kişi olduğunu ispatlamalarına olanak sağlar. Eğer yanlışlıkla ya da kasten başka kişilerin eline geçerse gizliliğin ve güvenliğin hiçbir garantisi kalmaz.
Genel anahtar ve özel anahtar birbirlerinden farklı olsalar da matematiksel olarak bağlantılıdırlar. Bunu bir anahtar- kilit çifti gibi düşünebiliriz. Birbirlerine benzemezler ama birbirlerini tamamlarlar.
PGP( Pretty Good Privacy ):
PGP; dosya imzalamak; metin, e-posta, hard disk ve dizin şifrelemek ya da bunlarını şifresini çözmek gibi işlemleri yaparak veri güvenliğinin yanı sıra kişisel güvenliği de sağlayan bir programdır. Hibrid bir kripto sistem olan PGP, şifreleme için klasik ve asimetrik şifreleme yöntemlerini kullanır. O zaman bakalım PGP, bu şifreleme ve şifre çözme işlemlerini nasıl gerçekleştiriyor.
PGP ile Şifreleme ve Deşifreleme Nasıl Gerçekleşir? : Aslında bu işleyişi 3 adımda özetleyebiliriz.
- Şifrelenecek olan metin sıkıştırılır. Böylece; küçük boyutlu bir veride şifre analiz yöntemi yapılması zorlaştırılır.
- Sıkıştırılmış olan metin, oturum anahtarı ( session key ) ile şifrelenir.
-
Oturum anahtarı alıcının genel anahtarı ile şifrelenir ve metne eklenir.
Alıcıya şifreli halde gelen veri, ancak alıcının özel anahtarı ile açılabilir. PGP’ nin sunduğu güvenlik de buradan sağlanmış olunur. Açılan veriden oturum anahtarı elde edildikten sonra metin bu anahtar ile deşifre edilerek orjinal metne ulaşılmış olunur. Bu şekilde sadece gönderen- alıcı arasında şifreli veri transferini sağlayan PGP ile kişisel güvenliğinizi hem sağlamış hem de kişisel güvenlik vaad etmiş olursunuz.
GPG başlığını daha iyi anlamak için gerekli bilgileri verdiğimize göre şimdi esas konumuza geri dönebiliriz.
GPG( GNU Privacy Guard ):
GPG; OpenPGP standartıyla uyumlu olan özgür bir yazılımdır. Bu programı PGP’ nin GPL( GNU General Public License ) lisanslı ve daha gelişmiş hali olarak düşünebiliriz. Yani; GPG, verilerin gizliliğini şifreleme yöntemiyle sağlarken kimlik doğrulaması da yapar. GPG, bir grafiksel kullanıcı arayüze sahip olsa da komut satırından işlem yapmak hem daha hızlı hem daha kullanışlı olduğundan GPG ile yapılacak olan işlemleri bakalım hangi komutlarla gerçekleştirebiliriz.
İlk olarak bilgisayarınızda GPG komut satırı aracı yani “gpg” olup olmadığını kontrol etmelisiniz. Eğer yok ise ve Debian tabanlı bir dağıtım kullanıyorsanız:
sudo apt-get install gpg
komutu ile bilgisayarınıza “gpg” kurulumunu gerçekleştirebilirsiniz. Gerekli araca da sahip olduğumuza göre işte gpg’ yi günlük hayatınızda kullanabileceğiniz pratik ve yararlı komutlar:
Anahtar Çifti Oluşturma:
gpg--gen-key
Özel ve genel anahtar olmak üzere anahtar çifti oluşturur.
Anahtar Yönetimi:
gpg --list-secret-keys
Kayıtlı özel anahtarları ve bu anahtarlara ait id, geçerlilik bitiş ve oluşturulma tarihi, e-posta adresi..vb. gibi ayrıntıları listeler.
gpg --list-keys
Kayıtlı genel anahtarları ve bu anahtara ait id, geçerlilik bitiş ve oluşturulma tarihi, e-posta adresi..vb. gibi ayrıntıları listeler.
gpg --fingerprint
Kayıtlı olan anahtarların parmak izlerini( fingerprint ) listeler.
gpg --delete-secret-key anahtar_id
Id’ si belirtilen özel anahtarı siler.
gpg --delete-key anahtar_id
Id’ si belirtilen genel anahtarı siler.
gpg -ao dosya_adi.asc --export-secret-keys anahtar_id
Id’ si belirtilen özel anahtarı ASCII zırhlı halde dışa aktararak “dosya_adi.asc” adlı bir dosyaya yazar. Bu dışarı aktarma işlemi; özel anahtarınızı örneğin USB gibi bir harici depolama aygıtıyla başka bilgisayarlarda da kendi hesabınızla gpg kullanımını sağlar.
gpg -ao dosya_adi.asc --export key_id
Id’ si belirtilen genel anahtarı ASCII zırhlı halde dışa aktararak “dosya_adi.asc” adlı bir dosyaya yazar.
gpg --allow-secret-key-import --import dosya_adi
“dosya_adi” isimli özel anahtarı içe aktararak, bilgisayarınızda kayıtlı olan özel anahtarlara eklemeyi sağlar.
gpg --import dosya_adi
“dosya_adi” isimli genel anahtarı içe aktararak bilgisayarınızda kayıtlı olan genel anahtarlara eklemeyi sağlar.
İptal Sertifikası:
İptal sertifikası anahtarın geçerliliğinin iptalini beyan etmek için kullanılır. Bu nedenle çoğunlukla genel anahtar için oluşturulur.
gpg --ao iptalsertifikasi.asc --gen-revoke anahtar_id
Belirtilen anahtar id’ ye ait anahtar için ASCII zırhlı biçimde “iptalsertifikasi.asc” adıyla iptal sertifikası oluşturur.
gpg --import iptalsertifikasi.asc
Belirli bir anahtar için oluşturulmuş “iptalsertifikasi.asc” adlı sertifikayı içe aktararak o anahtarın iptalini sağlar.
Şifreleme- Deşifreleme İşlemleri:
Şifreleme ve deşifreleme işlemleri için anahtarlara ihtiyacımız olduğunu biliyoruz. “gpg” aracı ile bu işlemleri arayüz yerine komut satırından saniyeler içerisinde yapabiliriz.
gpg -e -u "[email protected]" -r "[email protected]" dosya_adi
“dosya_adi” isimli dosyayı genel anahtarı olan alıcıya özel olarak, gönderen tarafından şifreler. Bu işlem sonucunda; “dosya_adi.gpg” isimli bir çıktı elde edilir.
gpg -e -u "[email protected]" -r "[email protected]" --sign dosya_adi
“dosya_adi” isimli dosyayı genel anahtarı olan alıcıya özel olarak, gönderen tarafından şifreler ve imzalar. Bu işlem sonucunda; “dosya_adi.gpg” ismiyle şifreli ve imzalı bir çıktı elde edilir.
NOT: Gönderen e- posta adresi belirtmek şart değildir. Birden fazla özel anahtarınızın olduğu durumda; ön tanımlı olan hangisiyse şifreleme işleminde o kullanılır.
gpg -d dosya_adi.gpg
Şifreli halde olan “dosya_adi” isimli dosyayı deşifre eder ve sonucu ekrana yazdırır.
gpg -o yenidosya_adi -d dosya_adi.gpg
Şifreli halde olan “dosya_adi” isimli dosyayı deşifre eder ve sonucu “yenidosya_adi” isimli dosyaya yazar.
Anahtar Düzenleme:
gpg --edit-key anahtar_id
Id’ si belirtilen anahtarla ilgili çeşitli düzenlemeler yapmak için kullanılır
passwd -> Düzenleme yapılan anahtarın parolasını değiştirir.
sign -> Düzenleme yapılan anahtarı imzalar.
addphoto -> Düzenleme yapılan anahtara fotoğraf ekler.
showphoto -> Düzenleme yapılan anahtarda bir fotoğraf varsa görüntüler.
Eğer anahtarınızda belirli değişiklikler yaptıysanız ve bu değişiklikleri kaydedip çıkmak istiyorsanız “save”, hiçbir değişiklik yapmadan ya da yaptığınız değişiklikleri kaydetmeden çıkmak istiyorsanız “quit” yazarak bu komutu sonlandırabilirsiniz.
NOT: Daha fazla ve ayrıntılı düzenlemeleri “help” yazarak görüntüleyebilirsiniz.
Anahtar Sunucusuyla İşlemler:
Anahtar sunucusu; şifreli anahtarları tutan ve gerektiğinde bunları diğer kullanıcılara sağlayan bir sunucudur. Kullanıcılar anahtar sunucusunda genel anahtarlarını paylaşarak ya da ihtiyaç duyduklarında alıcının genel anahtarını buradan çekerek şifreleme/ deşifreleme işlemlerini kolaylaştırırlar. pgp.mit.edu , pool.sks-keyservers.net , keys.gnupg.net en sık kullanılan anahtar sunucularıdır.
gpg --keyserver sunucu_url --send-keys anahtar_id
Id’ si belirtilen anahtarı URL’ i belirtilen anahtar sunucusuna gönderir. Anahtar üzerinde herhangi bir değişiklik yapıldıktan sonra bunu sunucularda da görmek için bu komut herhangi bir değişiklikten sonra kullanılmalıdır !
gpg --keyserver sunucu_url --recv-keys anahtar_id
Id’ si belirtilen anahtarı URL’ i belirtilen anahtar sunucusundan çeker.
gpg --keyserver sunucu_url --search-keys kullanici_adi
Kullanıcı adı belirtilen kişinin, URL’ i belirtilen anahtar sunucusundaki anahtarlarını listeler. Ayrıca kişinin iptal edilmiş anahtarlarını da belirterek aradığınızı ve kullanılması gereken genel anahtarı ayırt etmenizi sağlar.