TLS Encrypted Client Hello (ECH), istemci ile sunucu arasındaki ilk el sıkışma (handshake) sırasında gönderilen ClientHello mesajının şifrelenmesini sağlayan önemli bir güvenlik uzantısıdır. Bu uzantı, ağdaki gözlemcilerin istemcinin hangi sunucuyla iletişim kurmaya çalıştığını görmesini engelleyerek gizliliği artırır. Sunucu, bir ClientHello mesajında "encrypted_client_hello" uzantısını aldığında, diğer TLS parametrelerini müzakere etmeden önce ECH'yi kabul edip etmeyeceğine karar verir. Başarılı bir şifre çözme işlemi, istemcinin TLS sürüm tercihleri gibi bilgilerin bile değişebileceği yeni bir ClientHello'nun işlenmesini gerektirir.
Sunucu, ECH işleme sürecine bir dizi aday ECHConfig değeri toplayarak başlar. Bu aday listesi, ECHClientHello.config_id değerini bilinen ECHConfig'lerin tanımlayıcılarıyla karşılaştırarak veya tüm bilinen ECHConfig değerlerini aday olarak toplayıp deneme şifre çözme işlemiyle nihai seçimi yaparak belirlenir. Özellikle ECHClientHello.config_id'nin izleme vektörü olarak kullanılabileceği durumlarda, tüm adayları deneme yöntemi tercih edilebilir. Aksi takdirde, uygulamalar genellikle config_id eşleştirme yöntemini kullanır.
Aday ECHConfig değerleri toplandıktan sonra, sunucu her birini sırayla deneyerek "encrypted_client_hello" uzantısının şifresini çözmeye çalışır. Bu süreçte, sunucu ECHConfig'in ECHClientHello.cipher_suite tarafından belirtilen şifre paketini desteklediğini ve istemcinin belirttiği ECH sürümünün ECHConfig.version ile eşleştiğini doğrular. Doğrulamalar başarılı olduğunda, sunucu ECHClientHello.payload'u, ilgili ECHConfig'e karşılık gelen özel anahtar skR'yi kullanarak SetupBaseR fonksiyonu ile şifresini çözer. Şifre çözme başarılı olursa, EncodedClientHelloInner'dan ClientHelloInner yeniden yapılandırılır. Son olarak, sunucu ClientHelloOuter'daki "server_name" uzantısının ECHConfig.contents.public_name değeriyle eşleşip eşleşmediğini isteğe bağlı olarak doğrulayabilir ve ClientHelloInner'ın geçerli bir "inner" tipinde "encrypted_client_hello" uzantısı içerdiğini ve TLS 1.2 veya daha düşük bir sürüm sunmadığını kontrol eder.
İnternet trafiğinin gizliliğini artırarak kullanıcıların hangi sunucularla iletişim kurduğunu üçüncü taraflardan gizler.