Açık Anahtar Kriptografisi ve PGP'ye Giriş

PGP'nin açılımı "Oldukça İyi Gizlilik" (Pretty Good Privacy)'dir ve aslında çok iyi gizlilik sağlar. Doğru bir şekilde kullanıldığında gönderdiğiniz mesajların, metinlerin ve hatta dosyaların içeriğinin, sağlam bütçeli devlet gözetim programları tarafından dahi okunmasını engelleyebilir. Edward Snowden "şifreleme işe yarıyor" dediğinde, PGP ve onunla alakalı yazılımlardan bahsediyordu. Ancak belirtmemiz gerekir ki devletlerin kişilerin bilgisayarlarından özel anahtarını çalması (bilgisayara el koyarak ya da fiziksel erişim ya da kimlik avı amacıyla zararlı yazılım yükleyerek) ve bununla tüm çabanızı boşa çıkarması ve hatta eski maillerinizi okuması duyulmamış şey değil. Bu durum şuna benzer; siz evinizin kapısına kırılması imkansız bir kilit takabilirsiniz, ancak yine de birisi, size hiç fark ettirmeden anahtarınızı cebinizden çalıp bir kopyasını alıp geri koyabilir—ve böylece kilidi kırmaya ihtiyaç duymadan evinize girebilir.

Maalesef, PGP kolay anlaşılabilir ya da kolay kullanılabilir olma konusunda pek iyi değildir. PGP'nin kullandığı güçlü şifreleme—açık anahtar şifrelemesi—oldukça marifetlidir, ancak tam anlamıyla kavraması güçtür. PGP yazılımı 1991 yılından beridir elimizin altında, bu da onu Microsoft Windows'un ilk versiyonları kadar eski yapar, ve görünümü de o günden bu yana pek değişmedi.

İyi haber ise, günümüzde PGP'nin bu antik tasarımını gizleyecek ve onu özellikle de PGP'nin en temel kullanım alanı olan epostaları şifrelemek ve doğrulamak için kullanılması daha kolay hâle getiren birçok program bulunmaktadır. Bu yazılımın kurulumunu ve kullanımını anlatan rehberleri ayrı bir yere ekledik.

PGP ve onu kullanan diğer programları kurcalamaya başlamadan önce açık anahtar şifrelemenin temellerini anlamak için birkaç dakika ayırmakta fayda var: sizin için neler yapabileceği, neler yapamayacağı ve ne zaman kullanmanız gerektiği gibi.

İki Anahtarın Hikayesi

Gözetimle savaşmak için şifrelemeyi kullandığımızda, yapmaya çalıştığımız şey şudur:

"Merhaba anne" gibi herkes tarafından açıkça okunabilecek bir mesajı alırız. Bunu şifreler ve bakan hiç kimsenin anlayamayacağı bir kodlanmış mesaja çeviririz ("OhsieW5ge+osh1aehah6," gibi). Bu mesajı internet üzerinden birçok kişinin okuyabileceğini ama hiç kimsenin anlayamayacağını umarak göndeririz. Ardından mesaj hedefine ulaşır ve yalnızca amaçlanan alıcımız onu deşifre edip orjinal mesajımıza çevirmenin bir yoluna sahip olur.

Başka hiç kimse yapamıyorken, bizim alıcımız mesajın kodunu nasıl çözeceğini nereden biliyordu? Başka kimsenin bilmediği bir ekstra bilgiye sahip olması gerekiyor. Buna kod çözme anahtarı diyelim, çünkü mesajımızın içindeki kodu çözebiliyor.

Alıcımız bu anahtarı nasıl biliyor? İster bu "mesajı aynaya tutmayı dene" ya da "alfabedeki her harfi kendinden bir sonraki harfe dönüştür" olsun, sıklıkla gönderen anahtarı önceden söylemiştir. Ancak bu stratejide bir sorun var. Eğer kodlanmış bir mesaj gönderirken birilerinin sizi dinlemesinden korkuyorsanız, bu anahtarı göndermek istediğinizde, birisinin bu konuşmanızı da dinlemediğinden nasıl emin olacaksınız? Eğer saldırgan mesajınızın kodunu nasıl çözeceğini biliyorsa, becerikli bir şekilde şifrelenmiş mesaj göndermenin hiçbir anlamı olmayacaktır. Ve eğer kod çözme anahtarlarını gönderebileceğiniz bir gizli yolunuz varsa, neden tüm gizli mesajlarınız için başka bir yola ihtiyacınız olsun?

Açık anatar kriptografisinin buna çok zarif bir çözümü vardır. Görüşmeye dahil olan herkesin iki anahtar yaratmak için bir yolu vardır. Bunlardan birisi gizli anahtardır, bunu kendilerine saklarlar ve başka kimseye vermezler. Diğeri ise açık anahtardır, bunu da kendileriyle iletişim kurmak isteyen herkese verirler. Açık anahtarınızı kimin gördüğü hiç önemli değildir. İsterseniz herkesin görmesi için çevrimiçi bir yere bile koyabilirsiniz.

"Anahtarlar", işin aslında belirli matematiksel özelliklere sahip olan çok büyük sayılardır. Açık anahtar ve gizli anahtar birbirine bağlıdır. Eğer bir şeyi, bir açık anahtar kullanarak kodlarsanız, başka birisi onun eşi olan gizli anahtar ile kodunu çözebilir.

Şimdi bunun nasıl çalışabileceğini görelim. Aarav'a bir gizli mesaj göndermek istediniz. Aarav bir gizli anahtara sahip, ve iyi bir açık anahtar kriptografisi kullanıcısı olarak, bağlı olan açık anahtarını da websitesine koymuş. Siz açık anahtarı indirirsiniz, mesajınızı onu kullanarak şifrelersiniz ve ona gönderirsiniz. O mesajın kodunu çözebilir, çünkü bağlı olan gizli anahtara sahip – ama başka kimse çözemez.

Zamanların işareti

Açık anahtar kriptografisi mesaj göndermek istediğiniz kişiye el altından kod çözme anahtarı ulaştırma çabasından sizi kurtarır, çünkü o kişi zaten anahtara sahiptir. Sizin yapmanız gereken yalnızca kodlama anahtarını almaktır, ki alıcı bunu ajanlar da dahil herkese verebilir. Çünkü bu anahtar yalnızca mesaj kodlamaya yarar ve bir mesajın kodunu çözmek için hiçbir faydası olmaz.

Ama dahası var! Eğer bir mesajı belirli bir açık anahtarla kodlarsanız, yalnızca eşleşen gizli anahtar kodu çözebilir. Ancak bunun tersi de geçerlidir. Eğer bir mesajı belirli bir gizli anahtarla şifrelerseniz, o mesaj yalnızca onunla eşleşen açık anahtarla deşifre edilebilir.

Peki bunun ne gibi bir faydası olabilir? İlk bakışta, gizli anahtarınızla dünyadaki herkesin (en azından açık anahtarınıza sahip olan herkesin) kırabileceği bir gizli mesaj yazmanın bir avantajı olmayacağını düşünebilirsiniz. Ancak düşünün, "Aazul'a 100 dolar ödeyeceğime söz veriyorum" diyen bir mesaj yazıyorum ve bunu gizli anahtarımla bir şifreli mesaja dönüştürüyorum. Mesajın kodunu herkes kırabilir—ama bu mesajı yalnızca bir kişi yazmış olabilir: gizli anahtarıma sahip olan kişi. Eğer gizli anahtarımı güvende tutmak konusunda iyi bir iş çıkardıysam da, o kişi yalnızca ben olabilirim demektir. Gerçekte, gizli anahtarımla onu kodlayarak, mesajın kesinlikle benden gelebileceğinin teminatını verdim. Bir diğer deyişle, gerçek dünyada yaptığım gibi, dijital dünyada bir mesajı imzaladım.

İmzalamak aynı zamanda mesajları kurcalanmaya karşı da korur. Eğer birisi "Aazul'a 100 dolar ödeyeceğime söz veriyorum" mesajını "Bob'a 100 dolar ödeyeceğime söz veriyorum" şeklinde değiştirmek isterse, mesajı sizin gizli anahtarınızla tekrar imzalaması mümkün olmayacaktır. Bu yüzden imzalı bir mesaj, belirli bir kaynaktan geldiğinin ve yolda değiştirilmediğinin garantisini verir.

Açık anahtar kriptografisi açık anahtarını bildiğiniz herkese güvenli bir şekilde şifreli mesajlar göndermenizi sağlar. Eğer başkaları sizin açık anahtarınızı biliyorsa, onlar da size, sadece sizin kodunu çözebileceğiniz mesajlar gönderebilir. Ve eğer insanlar sizin açık anahtarınızı biliyorsa, mesajlarınızı imzalayarak insanlara o mesajın yalnızca sizden gelebileceğinin güvencesini verebilirsiniz. Ve eğer siz başkalarının açık anahtarını biliyorsanız, onlar tarafından imzalanmış mesajların kodunu çözebilir ve mesajın yalnızca o kişiden geldiğine emin olabilirsiniz.

Ne kadar çok kişi sizin açık anahtarınızı bilirse açık anahtar kriptografisinin o kadar kullanışlı olacağını sanırız açık bir şekilde anladınız. Ayırca açıktır ki, gizli anahtarınızı gerçekten güvende tutmalısınız. Eğer bir başkası gizli anahtarınızın kopyasını ele geçirirse, sizmiş gibi davranabilir ve mesajları sizin tarafınızdan yazılmış gibi göstermek için imzalayabilir. PGP, bir gizli anahtarı "iptal etme" özelliğine sahiptir ve insanları artık güvenilmez olduğuna dair uyarabilir, ancak bu çok iyi bir çözüm değildir. açık anahtar kriptografisi sistemlerini kullanırken dikkat edilmesi gereken en önemli kısım, gizli anahtarınızı çok dikkatli bir şekilde korumaktır.

PGP nasıl çalışır

Pretty Good Privacy ağırlıklı olarak açık ve gizli anahtarlar yaratmaya ve onları kullanmaya dair küçük ayrıntılarla ilgilenir. Onunla açık/gizli anahtar eşleri yaratabilir, gizli anahtarınızı bir parolayla koruyabilir ve onu ve açık anahtarınızı kullanarak metin şifreleyebilir ve imzalayabilirsiniz. Ayrıca diğer insanların açık anahtarlarını indirmenize ve sizin açık anahtarınızı, diğer insanların onu bulabileceği depolar olan "açık anahtar sunucularına" yüklemenize imkan verir. Eposta yazılımınıza PGP-uyumlu yazılımları kurmak için rehberlerimize bakabilirsiniz.

Eğer bu ön bakıştan alacağınız bir şey varsa, o da şudur: gizli anahtarınızı güvenli bir yerde saklayın ve uzun bir parolayla koruyun. Açık anahtarınızı sizinle iletişim kurmak ya da bir mesajın sizden geldiğini doğrulamak isteyen herkese verebilirsiniz.

Gelişmiş PGP: The Web of Trust (Güven Ağı)

Açık anahtar kriptografisinin çalışma biçiminde potansiyel bir açığı fark etmiş olabilirsiniz. Düşünelim ki, Barack Obama'ya ait olduğunu söyleyen bir anahtar yarattım ve dağıtmaya başladım. Eğer insanlar bana inanırsa, anahtarı kullanarak Barack'a gizli mesajlar göndermeye başlayabilir. Ya da bu anahtar ile imzalanan her şeyin Barack'ın yaptığı yeminli bir açıklama olduğunu düşünebilirler. Bu çok nadirdir, ancak gerçek hayatta gerçekleştiği görüldü, hatta bu dökümanın yazarlarından birkaçının da başına geldi—onlara yazan bazı insanlar kandırıldı! (Bu sahte anahtarları yapanlar mesajlara yolda sızıp okuyabildiler mi, yoksa güvenli bir iletişim kurmak isteyen insanların işini zorlaştırmak için mi bunu yaptılar kesin olarak bilemiyoruz.)

Saldırganların gerçekleştirebileceği bir diğer sinsi saldırı da çevrimiçi konuşan iki kişinin arasında oturmak, tüm konuşmalarını gizlice dinlemek ve zaman zaman kendi yanlış mesajlarını konuşmaya sızdırmaktır. İnternetin mesajları birçok farklı bilgisayar ve özel şahışlar üzerinden dolaştıran tasarımı sayesinde, böyle bir saldırı oldukça mümkündür. Bu koşullar altında ("ortadaki adam saldırısı" denir), önceden sözleşmeden bir anahtar takası gerçekleştirmek oldukça riskli bir hâl alır. Barack Obama olduğunu düşündüğünüz birisi "İşte anahtarım," der ve size bir açık anahtar dosyası gönderir. Ancak birisinin o zamana kadar bekleyip tam da anahtar dosyası gelirken iletişimi bozarak onun yerine kendi anahtarını konuşmaya sızdırmadığından nasıl emin olabiliriz?

Bir anahtarın belirli bir kişiye ait olduğunu nasıl kantılayabiliriz? Bunun bir yolu, anahtarı o kişiden direkt olarak almaktır, ancak bu, en başta yaşadığımız birilerine farkına varmadan gizli anahtar alma sorunumuzdan farksız bir durumdur. Yine de, insanlar özel buluşmalarında ya da herkese açık cryptoparty'lerde açık anahtr takası gerçekleştirirler.

PGP'nin "web of trust" (güven ağı) adı verilen biraz daha iyi bir çözümü var. Güven ağında, eğer bir anahtarın belirli bir kişiye ait olduğuna inanıyorsam, o anahtarı imzalayabilir ve imzamla birlikte açık anahtar sunucularına yükleyebilirim. Bu anahtar sunucuları da, o anahtarı soranlara imzalanmış anahtarları gönderir.

Basitçe anlatacak olursak, bir anahtarı ne kadar çok kişi imzalamışsa, o anahtarın iddia ettiği kişiye ait olduğuna daha çok inanırım. PGP sizin başkalarının anahtarlarını imzalamanıza ve ayrıca diğer imzacılara da güvenmenize imkan tanır; böylece eğer onlar bir anahtarı imzalarsa, yazılımınız o anahtarı otomatik olarak güvenilir sayacaktır.

Güven ağı birçok zorluğu da beraberinde getirir ve EFF gibi organizasyonlar bu soruna daha iyi çözümler bulabilmek için araştırmalarını sürdürmektedir. Ancak şimdilik, birebir anahtar teslim etmeye bir alternatif arıyorsanız, en iyi çözüm güven ağı ve açık anahtar sunucularını kullanmak olacaktır.

Metadata (Metaveri): PGP Ne Yapamaz

PGP tamamen mesajlarınızın gizli, özgün ve müdahale edilmemiş olmasını sağlamakla ilgilidir. Ancak sahip olduğunuz tek gizlilik sorunu bu olmayabilir. Daha önce bahsettiğimiz gibi, mesajlarınız hakkındaki bilgiler de içeriği gibi birçok şeyi açık edebilir (Bakınız "metaveri"). Eğer ülkenizin bilinen bir muhalifi ile PGP mesajları alışverişi yapıyorsanız, mesajlarınızın kodları çözülmese bile, yalnızca onlarla iletişim kurduğunuz için bile tehlikede olabilirsiniz. Ayrıca, kimi ülkelerde şifrelenmiş mesajların kodunu çözmeyi reddettiğiniz için hapis cezası bile alabilirsiniz.

PGP, kimlerle görüştüğünüzü ya da görüşürken PGP kullandığınızı gizlemek için hiçbir şey yapmaz. Hatta, eğer açık anahtarınız anahtar sunucularına yüklüyse ve başkalarının anahtarlarını imzalıyorsanız, aktif bir şekilde dünyaya hangi anahtarın sizin olduğunu ve kimleri tanıdığınızı ilan ediyorsunuz demektir.

Bunları yapmak zorunda değilsiniz. PGP açık anahtarınızı sessiz tutabilir, yalnızca güvendiğiniz insanlara verebilir ve onlara asla herkese açık anahtar sunucularına yüklememelerini söyleyebilirsiniz. Anahtarınıza isminizi eklemek zorunda da değilsiniz.

Belirli bir kişiyle iletişim kurduğunuzu gizlemek ise daha zordur. Bunu yapmanın bir yolu, her iki tarafın da anonim eposta hesapları kullanması ve bunlara yalnızca Tor kullanarak giriş yapmasıdır. Bunu yaparsanız PGP, eposta mesajlarınızı başkalarından gizli tutarak ve birbirinizin mesajlarına müdahale edilmediğinden emin olmanızı sağlayarak, faydalı olmaya devam edecektir.

Son güncelleme: 
2014-11-07
JavaScript license information