22 Ağustos 2011

https nasıl çalışır

Posted by: Fırat Celal Erdik 22 Ağustos 2011
Öncelikli olarak http'nin sonuna gelen "s"(secure) takısının ne demek olduğundan ve neden buna ihtiyaç duyulduğundan bahsedip https bağlantısının nasıl sağlandığına değinmeye çalışacağım.İnternette kullanılan tüm üst seviye(http,smtp v.s) ve alt seviye protokoller(tcp,udp v.s) maalesef geliştirilirken güvenlik göz önünde bulundurulmadığı için çeşitli güvenlik zaafiyetlerini yapılarında barındırarak üretilmiştirler.Http protokolünün de yapısında barındırdığı güvenlik zaafiyetleri sebebi ile https kullanımına başvurulmuştur.Nedir http protokolünün yapısal güvenlik zaafiyeti? Http bilindiği üzere alt protokollerden tcp protokolünü kullanır.Tcp'nin kendi barındırdığı güvenlik zaafiyetleri bir yana http protokolü ile data iletiminin clear text(şifresiz) yapılması en büyük güvenlik zaafiyetidir.


Man in the middle atakları ile kolaylıkla araya girilip bu havada uçuşan şifresiz data sniff edilebilmekte ve yapılan http bağlantılardaki kullanıcı adı ve parolalar rahatlıkla ele geçirilebilmektedir.İşte bu açıdan bakıldığında http protokolü zayıf ve güvensiz bir protokoldür.Bu secure olmayan protokolün secure hale getirilmesi için http protokolü ssl veya tls ile birlikte kullanılarak https adını almıştır.Kısaca Https için http + ssl/tls demek yerinde olacaktır.Bu arada tls, ssl'in orjinal adıdır.Bunların her ikiside aynı şifreleme protokolüdür.Zaman içinde tls(transport layer security) yerine ssl(secure socket layer) kavramının kullanımı tercih edilmiştir.Bu şifreleme protokolleri transport layer(iletim katmanında) kullanılır.Ve handshaking(3'lü el sıkışmayı) işlemini gerektiren şifreleme protokolleridir.Http/https ve tls/ssl ile ilgili bu bilgileri verdikten sonra https'in nasıl çalıştığına değinmek istiyorum.Bu işlemi 3 adımda anlatmaya çalışacağım.
  • Https bağlantısının sağlanması ve data iletiminin güvenli olarak bu protokol üzerinden geçmesi için öncelikle client ve server tarafında Tcp connection kurulmuş olması gerekiyor.Buda bilindiği üzere 3'lü el sıkışmanın(handshake) gerçekleşmesini zorunlu kılmaktadır.Nedir bu 3'lü el sıkışma hemen hatırlamaya çalışalım.İstemci tarafı sunucu tarafına bir SYN(Synchronize) bayrağı set edilmiş tcp paketi gönderir.Buna yanıt olarak suncuu tarafından istemci tarafına bir ACK(Acknowledgment) dönülür.Böylece half connection(yarım tcp bağlantısı) sağlanmış olur.Diğer yarısınında sağlanıp full tcp conneciton sağlanması için bu sefer sunucu tarafı istemci tarafına gönderdiği ACK'e ek olarak bir SYN daha gönderirir.Bunun anlamı bende seninle bağlantı kurmak istiyorum.Bunu alan istemci tarafı son olarak sunucu tarafına bir ACK gönderir ve TCP connection kurulmuş olur.Bu arada istemci tarafından server tarafına ilk gönderilen SYN içerisindeki sequence number değeri(x) rast gele üretilir.Fakat bu SYN paketine dönülen ACK içindeki sequence number değeri x+1 olmak zorundadır.Bu durumda tcp half conneciton sağlanmış olunuyor.Bu diğer half connection içinde geçerlidir.Yani server tarafının gönderdiği SYN paketindeki sequence number değeri(y) random üretilir ve buna dönülen ACK içerisindekindeki değer y+1 olması gerekir.
  • 3'lü el sıkışma ile tcp bağlantısı kurulduktan sonra sunucu tarafı ssl bağlantısının sağlanması için istemci tarafına kendisini tanıtan sertfikasını gönderir.
  • Sunucu tarafından gelen bu sertfikanın hizmet sağlayıcısının kök dizini eğer client tarafındaki kullanılan browser tarafından tanınıyorsa istemci tarafı bunun güvenilir bir ssl sertfikası olduğunu düşünüp bağlantıyı tamamlayacaktır.Fakat eğer tanınmıyorsa veya diğer bir değişle CA(certificate authority) otoritesi sağlanmamış bir sertfika ise istemci tarafından bu kullanıcıya güvensiz sertfika uyarısı dönülecektir.Bu uyarı kullanıcı tarafından kabul edilirse Https bağlantısı kurulmuş ve data iletimi sağlanmış olacaktır.Fakat buda MITM atağına uğranılma ihtimalini göze almak demektir.İstemci ve server tarafında bağlantı kurulduktan sonra data alış verişi yapmaya hazır hale gelinmiş olunacaktır.Burada sertfikayı gönderen tarafın karşısında bunu onaylayan eğer bir kullanıcı ise mitm atakları ile araya girip kullanıcıyı fake sertfikalar ile aldatmak kolaydır.Fakat muhatabımız bir kullanıcı değilde bir uygulama ise burada işimiz oldukça zorlaşacaktır.Ssl'in uygulama içerisine gömüldüğü durumlarda fake sertfikanın uygulamaya kabul ettirilmesi çok da mümkün olmayacaktır.Çünkü uygulamaya gömülen ssl sadece güvenilir sertfikaları kabul etmesi şeklinde configre edilmiş olacaktır.
Makalelerin kötüye kullanım kullanıcının sorumluluğundadır. | networkpentest.net. Blogger tarafından desteklenmektedir.