Mutual Authentication nedir ve nerelerde kullanılır?

Bu flood’da Mutual Authentication (Karşılıklı Doğrulama) kavramının ne olduğunu ve nerelerde kullanıldığını anlatacağım.

Önceki flood’ların birinde bir web sitesine (örneğin bir bankanın online işlem merkezine) HTTPS ile bağlanırken tarayıcının iletişimin başında sunucudan dijital sertifikasını istediğini, bu sertifikanın kendisinin daha önceden güvenmekte olduğu bir CA - Certificate Authority tarafından doğrudan ya da dolaylı olarak imzalanıp imzalanmadığını kontrol ettiğini ve bu kontrol başarısız olduğunda bağlantının güvensiz olduğuna dikkat çektiğini belirtmiştik. İstemci bu işlemler ile aslında sunucunun kimliğini doğrulamaktadır.

Sunucu (örneğimizde banka web sunucusu) ise istemcinin kimliğini dijital sertifika yerine kullanıcı adı ve parola yanında SMS vb araçlarla doğrulamaktadır. Bu sayede iki taraf da birbirinin kimliğini doğrulayarak iletişim kurabilmektedir.

Yukarıda anlatılan karşılıklı doğrulama yönteminde istemci tarafının sunucuda önceden belirlenen bir parolayı (ve bazen SMS doğrulama kodunu) sunucuya sunması beklenmektedir. Online bankacılık örneğindeki gibi bir grup insan ve bir makine iletişiminde bu yöntem başarılıdır.

Aynı yöntemin bir grup insanın bir grup makine ile veya bir grup makinenin birbiri arasındaki iletişiminde kullanılması durumunda ise herbir makine ve kullanıcı için farklı parolaların oluşturulması ve dağıtılması ile ölçekleme ve yönetim problemleri ortaya çıkacaktır.

İşte Mutual Authentication ya da Mutual TLS Authentication tam bu noktada ortaya çıkmakta ve istemcinin sunucuyu dijital sertifikası ile doğruladığı gibi sunucunun da istemciyi dijital sertifikası ile doğrulaması işlemini tanımlamaktadır.

Anlaşılacağı üzere Mutual Authentication'da güvenilen üçüncü bir parti tarafından imzalanan sertifikalar kullanılmaktadır. SSL/TLS Handshake sırasında iki taraf birbirlerine dijital sertifikalarını göndermekte ve iki taraf da karşı tarafın kimliğini doğrulamaktadır.

Mutual Authentication'ın bir avantajı istemcinin dijital sertifikasında bulunan Public Key'e karşılık gelen Private Key'i doğrulama sırasında karşı tarafa göndermemesi ve böylece MITM - Man In the Middle riskini ortadan kaldırmasıdır. Bir başka avantajı ise kullanıcının parola girmeden hızlıca kimlik doğrulaması yapmasına olanak tanımasıdır. Uzak sunuculara bağlanmakta kullanılan SSH protokolünde Public Key Authentication kullanılması Mutual Authentication'a güzel bir örnektir. Kullanıcı parola girmeden sunucuya bağlanabilir.

Mutual Authentication'a daha güncel bir örnek ise Kubernetes Cluster'ını yönetmek için kullanılan kubectl aracının da Mutual Authentication kullanabilmesidir. kubectl, Kubernetes'in Api Server'ı ile Mutual Authentication ile kimlik doğrulaması yapar.

Mutual Authentication'ın en yoğun kullanımı verilen örneklerden de anlaşıldığı gibi B2B - Business to Business uygulamalarıdır. Örnek olarak merkezi banka sunucuları sahada dağıtık halde bulunan ATM ve POS cihazlarında kimlik doğrulamak için bu yöntemi kullanabilirler.

Mutual Authentication'ın yine en yoğun kullanım alanı bir cluster oluşturmak için bir araya gelen servislerin birbirlerinin kimliklerini doğrulamalarıdır. Gerçekleştirilen kimlik doğrulama işlemi sayesinde sunucular üzerinde çalışan servisler birbirlerini tanımlayabilir ve iletişim kurmak istedikleri gerçek servisler yerine trojan, vb zararlılarla iletişim kurmadıklarına emin olurlar. Yine popüler bir örnek olarak Kubernetes'in bütün bileşenleri (kubelet, Api Server, vb) birbirlerini Mutual Authentication ile doğrularlar.

Son olarak Mutual Authentication'da dijital sertifika ve sertifikanın içindeki Public Key'e karşılık gelen Private Key'in güvenli şekilde saklanması önemlidir. İnsan etkileşimi olan bilgisayarlarda bu bileşenleri bilgisayar üzerinde tutmak güvenlik açısından sakıncalıdır. Bu gibi durumlarda dijital sertifika ve Private Key bir USB cihazında veya SmartCard'da tutularak gerekli güvenlik sağlanabilir.