
Telefonunuzu uçak moduna alın, Wi-Fi’yi kapatın ve Google Authenticator ya da Microsoft Authenticator gibi bir doğrulama uygulamasını açın. Altı haneli kodların üretilmeye devam ettiğini göreceksiniz.
Peki telefon internete bağlı değilse bu kodlar nereden geliyor? Sunucu ile telefon nasıl aynı doğrulama kodunu üretebiliyor?
10 Saniyede Özet
Authenticator uygulamaları kodları internetten almaz; telefon, daha önce paylaşılan gizli anahtar ve mevcut zamanı kullanarak kodu kendi içinde üretir.
TOTP sistemi sayesinde telefon ve sunucu, birbirleriyle iletişim kurmadan aynı 6 haneli doğrulama kodunu hesaplayabilir; bu yüzden kodlar uçak modunda bile çalışır.
Güvenlik açısından en kritik unsur gizli anahtardır. QR kodu veya kurulum anahtarı ele geçirilirse başka biri de aynı doğrulama kodlarını üretebilir.
Cevap, iki faktörlü kimlik doğrulamada kullanılan TOTP sisteminde yatıyor.
Authenticator Kodu İnternetten Gelmiyor
Authenticator uygulamaları çoğu kişinin düşündüğü gibi her 30 saniyede bir sunucuya bağlanıp yeni kod indirmiyor.
Kod doğrudan telefonunuzun içinde hesaplanıyor.
Bu nedenle:
- Mobil veri kapalıyken,
- Wi-Fi bağlantısı yokken,
- Telefon uçak modundayken
Authenticator uygulaması doğrulama kodu üretmeye devam edebiliyor.
Bunun gerçekleşebilmesi için telefon ve giriş yaptığınız hizmetin daha önceden aynı gizli bilgiyi biliyor olması gerekiyor.
QR Kodu Okuttuğunuzda Ne Oluyor?
Bir hesapta iki aşamalı doğrulamayı etkinleştirirken genellikle ekranda bir QR kod gösteriliyor.
Authenticator uygulamasıyla bu QR kodu okuttuğunuzda uygulamaya hesabınıza özel bir gizli anahtar, yani “secret key” aktarılıyor.
Bu anahtar hem hizmet sağlayıcının sunucusunda hem de telefonunuzdaki Authenticator uygulamasında bulunuyor.
Bundan sonra iki cihazın sürekli haberleşmesine gerek kalmıyor.
Telefon ve sunucu aynı formülü kullanarak birbirlerinden bağımsız biçimde aynı doğrulama kodunu hesaplayabiliyor.
TOTP Nedir?
Bu sistemin adı TOTP, yani Time-based One-Time Password.
Türkçeye “zamana dayalı tek kullanımlık parola” şeklinde çevrilebilir.
Sistem temel olarak iki bilgi kullanıyor:
Gizli anahtar + mevcut zaman
Mevcut zaman belirli aralıklara bölünüyor. Authenticator uygulamalarında bu süre çoğunlukla yaklaşık 30 saniye.
Uygulama gizli anahtarı ve içinde bulunulan zaman aralığını kriptografik bir hesaplamadan geçiriyor. Sonuç daha sonra kullanıcıya gösterilen kısa bir sayısal koda dönüştürülüyor.
Ekranda gördüğümüz altı haneli kod böyle ortaya çıkıyor.
Örneğin telefon şu kodu hesaplayabilir:
482731
Aynı anda sunucu da kendi tarafında aynı gizli anahtarı ve aynı zaman aralığını kullanarak hesaplama yapıyor.
Sunucunun bulduğu sonuç da:
482731
oluyor.
Siz giriş ekranına kodu yazdığınızda telefon sunucuya Authenticator uygulamasından herhangi bir veri göndermiyor.
Sunucu yalnızca sizin yazdığınız kod ile kendi hesapladığı kodun uyuşup uyuşmadığını kontrol ediyor.
Telefon ve Sunucu Nasıl Aynı Kodu Buluyor?
Basitleştirilmiş olarak süreç şöyle çalışıyor:
Telefon:
Gizli anahtar + zaman → kriptografik hesaplama → 6 haneli kod
Sunucu:
Aynı gizli anahtar + aynı zaman → aynı hesaplama → aynı 6 haneli kod
İki taraf aynı verileri kullandığı için sonuç da aynı oluyor.
İşin ilginç tarafı ise telefon ile sunucunun bu işlem sırasında birbiriyle iletişim kurmasına gerek olmaması.
Telefonun Saatinin Doğru Olması Neden Önemli?
Sistemin temelinde zaman bulunduğu için telefonun saatinin ciddi biçimde yanlış olması Authenticator kodlarının çalışmamasına neden olabilir.
Örneğin telefonun saati sunucudan birkaç dakika farklıysa telefon farklı bir zaman aralığı için kod hesaplayabilir.
Bu durumda ekrandaki altı haneli sayı doğru görünse bile sunucu tarafından kabul edilmeyebilir.
Bu nedenle telefonlarda otomatik tarih ve saat ayarının açık tutulması öneriliyor.
Sunucular küçük saat farklarını tolere etmek için genellikle mevcut zaman diliminin hemen öncesindeki veya sonrasındaki kodları da kontrol edebiliyor ancak büyük saat farklılıkları yine sorun yaratabiliyor.
Altı Haneli Kod Tahmin Edilebilir mi?
Kodun yalnızca altı rakamdan oluşması ilk bakışta zayıf görünebilir.
Ancak güvenlik yalnızca bu altı rakama dayanmıyor.
Kodu oluşturabilmek için hesaba özel gizli anahtarın bilinmesi gerekiyor. Ayrıca kod kısa süre içinde geçerliliğini kaybediyor.
Dolayısıyla saldırganın yalnızca bir Authenticator kodunu görmesi, gelecekte üretilecek kodları hesaplayabilmesi için yeterli değil.
Asıl korunması gereken bilgi gizli anahtar.
Bu nedenle iki aşamalı doğrulama kurulurken verilen QR kodunun veya manuel kurulum anahtarının ekran görüntüsünü paylaşmamak gerekiyor.
Birisi bu gizli anahtarı ele geçirirse kendi Authenticator uygulamasına ekleyerek sizinle aynı doğrulama kodlarını üretebilir.
İnternet Hiç mi Gerekmiyor?
TOTP kodunun oluşturulması için internet bağlantısına ihtiyaç yok.
Ancak bu, Authenticator uygulamalarının yaptığı her işlemin çevrimdışı olduğu anlamına gelmiyor.
Örneğin bazı uygulamalarda:
- Hesapların buluta yedeklenmesi,
- Cihazlar arasında senkronizasyon,
- Hesap kurtarma,
- Yeni bir hesabın kurulması
gibi özellikler internet bağlantısı kullanabiliyor.
Fakat telefonunuzda daha önce kurulmuş standart bir TOTP hesabının altı haneli doğrulama kodunu oluşturmak için aktif internet bağlantısı gerekmiyor.
Uçak Modunda Bile Çalışmasının Sebebi Bu
Authenticator uygulamalarının çalışma mantığı aslında oldukça basit bir prensibe dayanıyor:
Telefon ve sunucu aynı gizli bilgiyi biliyor, aynı saate bakıyor ve aynı matematiksel işlemi gerçekleştiriyor.
Bu yüzden birbirleriyle konuşmadan aynı sonucu elde edebiliyorlar.
Telefonunuz internete bağlı olmasa bile saat çalışmaya devam ettiği için Authenticator uygulaması da yeni kodlar üretmeye devam ediyor.
Kısacası ekranda gördüğünüz Authenticator kodu internetten telefonunuza gönderilmiyor.
Telefonunuz o kodu kendisi hesaplıyor.






