Rehber Web'i şifreleyin: HTTPS Everywhere

fly-d-4Tu-sIOXeA0-unsplash.jpg

İçindekiler
  1. HTTP ve HTTPS nedir?​
  2. HTTP ve HTTPS arasındaki fark nedir?​
  3. HTTPS protokolü içerisindeki şifreleme nedir?​
  4. HTTPS Everywhere kullanılmasına gerek bulunmakta mıdır?​
  5. HTTPS Everywhere eklentisini dahili olarak kullanan hizmetler nelerdir?​



HTTP ve HTTPS nedir?

HTTP.png
HTTP işlevsel olarak, Web'in veri iletişiminin temelini oluşturan bir protokol olarak karşımıza çıkmaktadır. Temelini öğrenmek gerekirse; HTTP protokolü sayesinde kullanıcılar, Web tarayıcıları üzerindeki gönderdikleri (yani istemci ile gönderdikleri) istek mesajı ile veri aktarımı yapmak istedikleri sunucudan yanıt beklerler. Buna karşılık olarak sunucu, kendisine gönderilen istek mesajına yanıt vererek isteğin sonuçlanmasını sağlar.

Örneğin, Google veya herhangi bir arama motoru üzerinde aratmak istediğiniz kelimeleri girdiniz ve sonrasında da karşınıza çıkan sonuçlar arasından birisini seçerek internet sitesine girmek istediniz. Bu durumda tarayıcınız, istemci konumundadır. Erişmek istediğiniz internet sitesi ise, sunucu konumundadır. İnternet sitesine erişmenizin isteğini sağlayan ise, internet sitesine girmek için üzerine tıkladığınız bağlantı adresidir. Bağlantı adresine tıkladığınızda, sunucuya gönderilmesi için bir dizi HTTP isteği oluşturarak gönderirsiniz. Bu sayede de internet sitesine giriş işleminiz sonuçlanmış olur.


HTTPS.jpeg
HTTPS, HTTP isteklerini ve yanıtlarını şifrelemek için TLS (veya SSL) kullanılan bir protokoldür. Sonunda bulunan S kelimesi, Secure olarak adlandırılan Güvenli anlamından gelmektedir. HTTP isteğinde bulunduğunuzda ve yanıtlarınızda, karşı tarafın (örneğin saldırgan) bu verileri şifrelenmiş (yani rastgele karakterlerden oluşmuş bir şekilde) bir şekilde gözükmesini sağlamaktadır.



HTTP ve HTTPS arasındaki fark nedir?

Kavramların açıklamalarına baktığımızda temel farkın, şifreleme olduğunu görüyoruz. Örnek olması bakımından, Cloudflare üzerindeki bulunan istek satırlarına göz atabiliriz.

HTTP isteği gönderilirken:

[CODE title="HTTP İsteği"]GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en[/CODE]

HTTP isteği yanıtlanırken:
[CODE title="HTTP İsteği Yanıtlanması"]HTTP/1.1 200 OK
Date: Wed, 30 Jan 2019 12:14:39 GMT
Server: Apache
Last-Modified: Mon, 28 Jan 2019 11:17:01 GMT
Accept-Ranges: bytes
Content-Length: 12
Vary: Accept-Encoding
Content-Type: text/plain

Hello World![/CODE]

Buradan da anlaşılacağı üzere, gönderilen veya alınan veriler herhangi bir şekilde şifrelenmiş bir şekilde değildir. Bu yüzden herhangi bir saldırgan, bu verilere rahatça göz atabilir fakat HTTPS devreye girdiğinde durum, aşağıdaki gibi gerçekleşecektir.

HTTP isteği gönderilirken:
[CODE title="HTTP İsteği"]GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en[/CODE]

Saldırgan kişinin göreceği istek:
[CODE title="Şifrelenmiş İçerik"]t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVRWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHQ==
[/CODE]

Aynı şekilde saldırgan kişi, sunucunun yanıtını da şifrelenmiş bir şekilde görecektir. Bu sayede veriler, herhangi bir suistimale uğrama (güvenlik veya gizlilik riskine karşı) potansiyeli içerisinde olmayacaklardır.

HTTPS protokolü içerisindeki şifreleme nedir?

HTTP
ile aralarındaki temel farkın şifreleme olduğunu öğrendiğimize göre, bu şifrelemenin nasıl bir şekilde elde edildiğini de öğrenebiliriz.

TLS (Transport Layer Security yani Taşıma Katmanı Güvenliği), bilgisayar ağı üzerinden güvenli haberleşmeyi sağlamak için tasarlanmış kriptolama protokolleridir. Bu protokoller, açık anahtarlı şifreleme adı verilen bir teknoloji kullanır. Bu şifrelemede iki anahtar vardır, bir açık anahtar ve bir gizli anahtardır. Açık anahtar, sunucunun SSL sertifikası aracılığıyla istemci cihazlarıyla paylaşılır. Bir istemci bir sunucuyla bağlantı açtığında, iki cihaz, aralarındaki diğer iletişimi şifrelemek için oturum anahtarları adı verilen yeni anahtarlar üzerinde anlaşmak için açık ve gizli anahtarı kullanır.

Tüm HTTP istekleri ve yanıtları daha sonra bu oturum anahtarlarıyla şifrelenir, böylece iletişimi kesen herkes düz metni değil, yalnızca rastgele bir karakter dizisini görebilir.

HTTPS Everywhere kullanılmasına gerek bulunmakta mıdır?

HTTPS.png

Tüm web sunucuları; belirtilen bu iki protokol arasından birisini (HTTP veya HTTPS) kullanmaktadırlar fakat risk olmaması açısından, HTTPS kullanılması gerekmektedir. HTTPS protokolü bulunmayan web siteleri bulunduğundan, eklentiler vasıtasıyla da problemimizi çözebiliriz. Bu durumda karşımıza, Electronic Frontier Foundation tarafından geliştirilen HTTPS Everywhere eklentisi çıkmaktadır.

Tarayıcınıza eklemek için, kendi sitelerinde bulunan istemciye tıklayabilir, varsayılan ayarları ile kullanabilir veya aşağıdaki örnekte de belirtildiği üzere kullanabilirsiniz.

httpseverywhere.png



Varsayılan ayarları dışında (kırmızı dikdörtgen içerisinde), görselde de belirtilen (mavi dikdörtgen içerisinde) seçeneği de açık tutabilirsiniz. @26318'ın da açılmasını önermiş olduğu opsiyonel olarak sunulan bu seçenek ile, HTTP protokolünü hâlâ daha sunucu içerisinde bulunduran siteler başta olmak üzere, tüm siteler içerisindeki HTTPS protokolü sorgulanacaktır ve buna bağlı olarak tüm sitelerde şifreleme işlemi gerçekleşmek istenecektir.

Brave ve Tor tarayıcıları üzerinde, dahili olarak bulunduğunu da belirtebiliriz. Bu tarayıcılara eklemek için herhangi bir mağazadan edinmenize gerek yoktur.




https-everywhere-infographic.png

Çalışma prensibinden olan şifreleme için sınırlı destek sunar ancak kullanımını zorlaştırır. Örneğin, varsayılan olarak şifrelenmemiş HTTP olarak veya şifrelenmemiş siteye geri dönen bağlantılarla şifrelenmiş sayfaları doldurabilirler. HTTPS Everywhere uzantısı, bu sitelere yapılan istekleri HTTPS'ye yeniden yazmak için akıllı teknoloji kullanarak bu sorunları giderir.







15 Nisan 2021 tarihinde gerçekleştirilen anlaşma sayesinde HTTPS Everywhere, DuckDuckGo içerisindeki akıllı şifreleme teknolojisini de kendi bünyesi içerisinde sunmaya başladı. Daha öncesinden, @26318'ın önerisiyle HTTPS Everywhere için bir makale oluşturmaya karar vermiştim fakat ortada olan anlaşma olaylarından dolayı, eklentinin içerisine eklenecek olan özelliğin de beklenmesi gerektiğini düşündüm. Bu durumdan dolayı makale, beklenilen zamandan daha uzun sürede oluşturulmaya başlandı.

HTTPS Everywhere eklentisi dışında, Smart HTTPS adında bir eklenti de bulunuyor fakat tam olarak farkının ne olduğu konusunda pek emin değilim. Geliştirme konusunda da GitHub üzerinde hâlâ daha güncel bir verisi bulunamamaktadır.

Smart HTTPS geliştirilmeye devam edilmiyor olabilir veya özellikler konusunda, iyileştirmeler yapılmıyor (geliştirici eklenti hakkında herhangi bir açıklama yapmadığından) gibi gözüküyor. Elde ettiğim veriler olmadığından dolayı da, karşılaştırma tarzında bir içerik de oluşturamadım. Bundan dolayı HTTPS Everywhere'ın tek başına kullanılması yeterli olacaktır diye düşünüyorum. Ek olarak; HTTPS konusunda bildiğiniz farklı eklentiler bulunuyorsa, konu içerisinde paylaşabilirsiniz.



Konu içerisinde eksik, hatalı ya da bilgilendirici olarak gördüğünüz alanları belirtebilir veya HTTPS Everywhere hakkındaki sorularınızı sorabilirsiniz.

Kaynakça
 
Her tarayıcıda bu sorunu yaşıyorsun değil mi? Tarayıcılar HTTPS yönlendirmesini yaparken bir sorun yaşıyor.
Sorun uzantıdan çok ağ sorunu gibi geldi. Ağ ayarlarını onarmayı deneyebilirsin. Ya da şimdilik bu uzantı yerine Smart HTTPS bakabilirsin. Brave, Firefox tarayıcılarında HTTPS çalışmaya zorla ayarı bulunuyor. Yakın zamanda Edge tarayıcısına da gelecek.

Ya da yukarıda gösterdiğim ''Olabilecek tüm siteler şifrelensin'' ayarını kapalı kullanabilirsin.
 
Kaldırayım mı hocam o zaman uzantıyı?
Evet. Kaldırmasanız bile kullanımdan kaldırılacak. :)

 

Geri
Yukarı