Extended Master Secret (EMS, RFC 7627), TLS 1.2 ve öncesinde master secret'ın hesaplanma şeklini güçlendiren bir uzantıdır. Amaç, el sıkışmanın belirli bir oturuma kriptografik olarak bağlanmasını sağlamak ve "triple handshake" saldırısı gibi oturum karışıklığı yöntemlerini engellemektir.
Sorun neydi?
Klasik TLS'te master secret; pre-master secret ile ClientHello ve ServerHello rastgele değerlerinden türetiliyordu. Bu değerler el sıkışmanın tamamını kapsamadığı için, saldırgan farklı iki bağlantıda aynı master secret'ı üretecek şekilde araya girebiliyordu. Oturum devam ettirme (session resumption) ve yeniden müzakere ile birleştiğinde bu, kimlik doğrulamanın karıştırılmasına yol açabiliyordu.
EMS çözümü
EMS ile master secret, pre-master secret ve o ana kadarki tüm el sıkışma mesajlarının özeti ("session hash") üzerinden hesaplanır. Böylece master secret, belirli bir el sıkışmaya ve kimliklere bağlanır.
- İstemci ClientHello'da
extended_master_secretuzantısını gönderir. - Sunucu destekliyorsa aynı uzantıyı yanıtlar.
- Oturum devamında EMS kullanımı değişirse devam ettirme reddedilmelidir.
TLS 1.3'te anahtar türetimi zaten tüm transkripte bağlıdır; bu nedenle ayrı bir EMS uzantısı gerekmez.
Kontrol etme
openssl s_client -connect example.com:443 -tls1_2 -servername example.com < /dev/null 2>/dev/null | grep -i "Extended master secret"
Çıktıda Extended master secret: yes görmeniz beklenir. OpenSSL 1.1.0 ve sonrasında EMS varsayılan olarak desteklenir.
Pratik notlar
- EMS için ayrı bir sunucu ayarı genellikle gerekmez; TLS kütüphanesini güncel tutmak yeterlidir.
- Çok eski istemciler EMS desteklemeyebilir; TLS 1.2 kullanan modern yazılımların büyük kısmı destekler.
- Mümkünse TLS 1.3'ü etkinleştirin.
Genel yapılandırmanızı SSL denetleme aracıyla sınayabilir, diğer protokol konuları için bilgi bankamıza bakabilirsiniz.