2 Eylül 2018 Pazar

HTTPS Nasıl Çalışır ?

HTTPS - Nedir ? Nasıl Çalışır ?

Merhaba Arkadaşlar,
Geçtiğimiz günlerde birkaç Offensive Security ile ilgilenen arkadaş ile yapmış olduğum HTTPS üzerine bir sohbet üzerine ve HTTPS'in aslında çok yanlış anlaşıldığını farketmemle birlikte yazının konusu belli oldu.

Öncelikle birkaç temel terimden bahsedelim daha sonra HTTPS hakkında bilgi vermeye çalışalım.

Hash Algorithm: Security terimi olan Hash Algortihm'in temel amacı "Integrity" i sağlamaktır. Yani benim elimde bir 10 Bbyte lık bir data var.
Bu datayı istemciye göndermeden önce bir Hash Algoritmasına(MD5, SHA1 vb.) sokuyorum ve bana bir değer üretiyor. Üretilen değer 128 bitlik bir hash değeri.
Bu 128 Bitlik Hash(1) değerini datanın sonuna ekledikten sonra [Data+Hash(1)] şeklinde istemciye gönderiyorum. Daha sonra istemci Datayı aynı Hash Algoritmasına
sokuyor ve çıkan Hash(2) değeri ile göndericinin göndermiş olduğu Hash(1) değerini kıyaslıyor. Kullanılan Hash Algoritmaları evrensel olduğu için aynı data için
üretmiş olduğu değer dünyanın her yerinde aynıdır ve işin daha da güzel tarafı eğer data içerisindeki 1 bit bile değişirse (Bit 1 iken 0 ya da 0 iken 1 olursa)
çıkan Hash değeri bambaşka bir hal alır, baştan aşağıya değişir. Sonuç olarak kıyaslanan Hash(1) ve Hash(2) aynı ise data bolzulmadan ya da bir saldırgan tarafından
değiştilmeden gelmiştir. Data güvenilirdir.

Symmetric Key Algorithm: Symmetric Key Algorithm gönderilen Datanın tek bir anahtar ile kriptolandığı ve sadece aynı anahtar tarafından dekript edildiği algoritmadır. DES, 3DES, AES vb.
bu kriptolama algoritmalarına örnektir. Temel amacı "Confidentiality" i sağlamaktır. Bu kritolamayı yapan anahtar "Secret Key" olarak isimlendirilir ve gönderici
ile istemci arasında data transferi öncesinde güvenli bir yol ile paylaşılmalıdır. (Symmetric Encryption sağlandı.)



Asymmetric Key Algorithm: Asymmetric Key Algorithm gönderilen Datanın 1 anahtar tarafından kriptolandığı ve farklı bir anahtar tarafından da dekript edildiği algoritmadır.
Bu anahtarlar "Public Key" ve "Private Key" olarak adlandırılmaktadır. Public Key'in kriptoladığı
Data dünyada sadece Private Key tarafından dekript edilebilir.
Private Key'in kriptoladığı Data ise sadece Public Key tarafından dekript edilebilir. Diffie-Hellman, RSA vb. algoritmalar Asymmetric-Key Algoritmalara örnek olarak
verilebilir. Temel amacı "Confidentiality" i sağlamaktır. (Asymmetric Encryption sağlandı.)



PKI (Public Key Infrastructure): Güvenilir olmayan ortam üzerinden Symmetric Encryption için kullanılacak olan "Secret Key" in paylaşılması için kurulmuş olan sistemdir.
Ayrıca Sertifikaları imzalamak için de kullanılır. Pratik kullanımından birazdan behsedilecektir.   

Bugün internette yapmış olduğumuz alışveriş, bankacılık işlemleri, ödeme vb. birçok işlemin kötü 3. şahıslar tarafından çalınmasının karşısındaki en büyük
engel olan HTTP'nin SSL veya TLS protokolleri kullanılarak çalıştırılması, yani HTTPS hakkında konuşacağız.
HTTP'de yapılan data alışverişi Cleartext(kriptosuz), HTTPS ile yapılan data alışverişi ise Ciphertext(kriptolu) olarak gerçekleşir.



HTTPS
Peki HTTPS tam olarak nasıl çalışıyor da faturalarımız, kredi kartlarımız, sosyal medya hesaplarımızı ona emanet edebiliyoruz.

İlk olarak bir kullanıcı browserına https://www.losev.org.tr yazıyor.

HELLO

Kullanıcı bilgisayarı tarafından LOSEV'in Web Serverına "ClientHello" mesajı gönderilir. Bu mesaj, clientın hangi SSL versiyonunu desteklediğini ve hangi
"Cipher Suite" in kullanılacağı bilgisini içerir. Cipher Suite, Client tarafından desteklenen PKI, Symmetric Algoritma ve Hash Algoritmalarının listesi şeklinde
düşünülebilir.
ClientHello paketini alan Web Server, ServerHello paketi hazırlar ve Clienta gönderir. ServerHello paketi hangi PKI, Symmetric Algoritma ve Hash Algoritmasının
kullanılacağını seçer.

Sertifika Paylaşımı

Server Clienta SSL Sertifikasını gönderir.(Digital Certificate) Bu sertifika, Server Domain bilgisi, Public Key, Sertifikanın hangi şirkete ait olduğu,
Digital imza (Digital Signature) ve Sertifikanın ne zamana kadar geçerli olduğu bilgisini içerir.






















Digital Sertifika evrensel olarak güven kazanmış Trusted CA ler tarafından verilir.(Comodo,GeoTrust vb.) Yani bir şirket belirli bir prosedüre göre başvuru
işlemini gerçekleştirir. Prosedürün işleyişine göre Public Key, şirket bilgileri gibi bilgiler Trusted CA ile paylaşılır ve Trusted CA de şirket için bir
Digital sertifika üretir. Burada dikkat edilmesi gereken bilgi şu şekildedir; Trusted CA ile sadece Public Sertifika paylaşımı yapılıyor Web Serverın Private Key'i
şirket tarafından kimse ile paylaşılmıyor. Yani bizim asıl gizliliğimizi sağlayan anahtar Web Serverımızda ve başka kimse tarafından bilinmiyor.
Trusted CA tarafından üretildikten sonra şirketimizle paylaşılan sertifikayı bir inceleyelim.
Foto Digital Cer Val.



Yukarıdaki şekilde bir Digital Sertifika var bu sertifikanın Domain Name, Şirket Bilgisi, Public Key gibi kısımların bulunduğu kısım bir X Hash Algoritmasına sokuluyor.
Çıkan değer Hash1 olsun. Daha sonra Trusted CA Hash1 değerini dünyada sadece kendisinin bildiği Private Key ile kriptoluyor ve Digital Sertifikanın
en alt kısmına ekleyerek sertifika oluşturma işlemini tamamlıyor. Bu Digital Sertifika, Trusted CA'e başvuru yapan şirkete teslim ediliyor. Burada
şunu unutmadan söyleyelim; Hash1 değeri oluşturulup Trusted CA tarafından sadece kendisinin bildiği ultra gizli private key ile kriptolanması işlemi
imzalama işlemidir. Kriptolanmış Hash1 Digital Signature olarak adlandırılır. Bu Digital Signature dünyadaki kabul görmüş bütün browserların sahip olduğu Public Key
sayesinde Dekript edilebilir. Yani browserlarımıza Trusted CA lerin Public Keyleri defaultta yüklü olarak gelir.



LOSEV'in WEB Serverına ait Digital Sertifika, Trusted CA tarafından verilmişti. Şimdi de WEB Server tarafından clienta gönderiliyor. Client öncelikle sertifikanın,
Digital Signature ile diğer kısmını birbirinden ayırır. Bunu Digital Signature ve A(Digital Signature dışındaki kısmı böyle isimlendirdik)
şeklinde böldüğünü farzedelim. A; Domain Name, Şirket Bilgisi, Public Key gibi değerlerin bulunduğu kısımdır.
Yukarıda Trusted CA tarafından, X Hash algoritmasına sokulmuştu.
Clientta aynı şekilde A'yı X Hash algoritmasına sokuyor. Çıkan değeri Hash2 olarak adlandıralım. 
Digital Signature; Hash1'in, Trusted CA'in Private Keyi ile kriptolanması sonucu oluşmuştu. Asymmetric Kriptonun çalışması nasıldı? Private Key ile kriptolanan
sadece onun Public Key i ile Dekript edilebilirdi. Bu mantığa göre Trusted CAlerin browserda Public Keyinin yüklü olduğunu söylemiştik. Digital Signature
clientın browserında yüklü olan Public Key ile Dekript edildi. Şu an Hash1 değerine ulaştık. Hash1 ile Hash2 aynı ise herhangi bir tehlike altında değiliz demektir.
Yani sertifika yolda bir saldırgan tarafından değiştirlmedi ya da doğal sebeplerden bolzulmadı diyebiliriz.

Eğer bir saldırgan sertifikanın Public Keyini değiştirip, kendisinin dekript edebildiği yani, Private Keyine sahip olduğu bir Public Key yerleştirirse
client bu sertifikayı alıp Digital Signature'u ile değiştirildiğini hemen farkedecektir. Çünkü saldırgan Trusted CA'in Private Keyine sahip olmadığı için
Digital Signature ı doğru oluşturamayacak ya da Digital Signature'ı hiç değiştirmezse de, Hash2 ile Hash1 farklı olacağından kendisini ele verecektir.

Secret Key Değişimi
 
Şu ana kadar Server ile kullanılacak metodları konuştuk sonrasında LOSEV WEB Serverdan Digital Sertifikayı aldık ve Digital Signature kontrolüyle
bunun gerçekten LOSEV'e ait olduğuna emin olduk. Şimdi Client bir Secret Key üretip onu Server ile paylşacaktır. Bu Secret Key ile yapılacak olan
bütün data alışverişi Server ve Client tarafından kriptolanacaktır ve yine aynı Secret Key tarafından server ve client tarafından dekript edilecektir. Yani
asıl data trafiği symmetric algoritma kullanılarak yapılacaktır. Client tarafından üretilen bu Secret Key sadece server ve client tarafından bilinecektir.
Peki nasıl ? Client Secret Key i ürettikten sonra, server tarafından Digital Sertifika içerisinde gönderilen Public Key i kullanarak kriptolayacaktır.
Public Key ile kriptolanan bu Secret Key dünyada sadece Private Key tarafından dekript edilebilir. Bu Private Key'de LOSEV WEB Serverda bulunmaktadır.
Kötü niyetli kişiler tarafından aradaki hat dinleniyor olsa bile Private Key e sahip olmadıkları için dekript edemeyecekler.
Artık Server ve Client Secret Key e sahip. Symmetric Algoritma, Asymmetric Algoritmaya göre daha hızlı çalıştığı için tercih ediliyor ve Data alışverişi
bu algoritma ile sağlanıyor.

HTTPS bir trafiği dinlemenin tek yolu kullanıcı bilgisayarına bir şekilde kendi Public Sertifikanı Trusted CA olarak yüklemektir.
Firewall üzerinden SSL Inspection yapmak isterseniz, Private Sertifikayı Firewall'a, Public Sertifikayı Trusted CA olarak clientlara yükleyebilirsiniz. 


 

Hiç yorum yok:

Yorum Gönder