Yanlış okumadıysam giden gelen paketleri sniffleyince SSL'nin güvenli olmadığı yazılmış.
Aslında ilk başta düşününce böyle olması çok normal geliyor sonuçta giden gelen bütün dataları inceleyip editleyebilirsek kurbanın sahip olduğu tüm bilgilere sahip oluruz.
SSL protokolünde asymmetric key encryption kullanılır, yani bu kısaca ne demek, her keyin bir eşi vardır.
e encryption fonksiyonumuz,
d decryption fonksiyonumuz,
p plain datamız,
k1,k2 keylerimiz olsun.
p = d(e(p,k1),k2) = d(e(p,k2),k1) != d(e(p,k1),k1) != d(e(p,k2),k2)
türkçesi de bir key ile şifrelediğin şeyi ancak ve ancak diğer key ile çözebilirsin vice versa. Tabi bu kadar özel bi key çiftini yaratmak için, özel de bi algoritma lazım ama konu o değil, sadece böyle keyler olduğunu varsayabiliriz
SSL'de exchange edilen keyler ise public keylerdir. Yani public keyler adı üstünde publiclerdir ve herkese dağıtılırlar, diğer eşleri ise yani private keyler local sistemde saklanırlar ve kimseye verilmemeleri/gösterilmemeleri gerekir. Public keyleri sniffing ile almak bakkaldan bişey almak yerine çıkan müşterilerden bişey satın almak gibi yani.
Peki tüm bunlar nasıl işliyor?
Servera bağlandığınız zaman siz oradan bir sertifika istiyorsunuz, bu sertifika çeşitli şeyler içeriyor bizi ilgilendirenlerse bağlandığımız serverın public key'ini ve sertifikanın orasıyla burasıyla oynanmadığına dair koca bir hash içermesi. Bu sayede ilk adım tamamlanmış oluyor. Yani size gelen encrypted datayı siz eğer serverın public keyi ile decrypt edebiliyorsanız bunun o istediğiniz serverdan geldiğine emin olabilirsiniz.
İkinci adım ise sizin gönderdiklerinizi sadece muhattabınız olan serverın okumasını istiyorsunuz, çünkü asıl kredi kartı şu bu bilgileri burada, bunun için de ne yapıyoruz herkesin bildiği muhattab serverın public keyi ile kendi bilgilerimizi encrypt ediyoruz ve gönderiyoruz. Bu data snifflenirse ne olur? Hiç bir şey olmaz çünkü serverın public keyi ile şifrelenmiş şey sadece ve sadece serverın bildiği private key ile açılabilir, en azından asymmetric key encryption bize bunu garanti ediyor, umarım ediyordur veya
Şu anda sistemde tek bir açık kaldı, dikkatli okuduysanız server bize güvenli olmayan http üzerinden sertifikayı ve public keyi atıyor, eğer man in the middle varsa bu sertifikanın public keyini değiştirip hashini de tabi tekrar yaratıp altına yapıştırıp bize gönderebilir. Bunu engelleyen şey ise browserımızı indirirken içinde zaten public keyler ve çeşitli sertifikalarla iniyor. Hiç bir public key içinde olmasa bile garanti edilen şey bu sertifikaları düzenleyen denetleyen Certificate Authority(CA)'lerin kendi sertifikalarının olduğu. Eğer elinizde tek doğru olduğuna emin olduğunuz sertifika bile varsa bahsettiğimiz yöntemi kullanarak diğer web serverların bize gönderdiği sertifikaların&public keylerin geçerli olup olmadığına emin olabiliriz buna da chain of trust deniyor. Elimizde tüm sertifika bilgilerinin sahibine ulaşan tamamen güvenilir bir yol varsa ki var, kime güvenip kime güvenemeyeceğimizi kesin olarak ayırt edebiliriz demektir.
Bu kadar anlattım ama aslında sistem tam olarak böyle işlemiyor, dikkat ettiyseniz burda tek taraflı bir güven var, yani banka bilgileri alıyor ama o bilgileri gönderenin gerçekten bizim bilgisayarımız olup olmadığını bilemiyor. Buna ihtiyacı da yok aslında, atıyorum iki banka arası bilgi akışıyla karşılaştırdığımız zaman.
Sistem hem tek taraflı hem de çift taraflı güven ortamı oluşturabilsin diye ara bir noktada bizim bilgisayarımız da random olarak bir private key oluşturup, bundan public keyi hesaplıyıp, bankanın public keyi ile bu public keyi encrypt edip bankaya gönderir, böylece banka o bulduğu public keyle açabildiği her şeyin bizden gelmiş olduğunu anlar. Bu niye çift taraflı değil çünkü zaten random olarak atıyoruz yani bidahaki girişimizde aynı falan kalmayacak. Ama bankanın da pre-determined bi public key havuzu olduğunu varsayarsak mesela diğer bankaların pkleri bulunan, o zaman çift taraflı güven ortamı oluşabilir
Son olarak da handshakingden sonra veya yeterince öpüşüp koklaştıtktan sonra asymmetric key encryption bırakılır ve ortak karar verilen bi symmetric key encryptiona geçilir, bunun sebebi ise asymmetric encryptionın baya bir cpu-cycle yemesi ki bir de keyin uzunluğu düşünülünce..
No comments:
Post a Comment