İki Faktörlü Doğrulama: SMS, TOTP ve Passkey Farkı

İki Faktörlü Doğrulama: SMS, TOTP ve Passkey Farkı

Üç yöntem de "iki faktörlü doğrulama" başlığı altında satılıyor ama biri telefon numaranız çalındığında çöküyor, biri sahte siteye karşı korumuyor, biri ikisine de dayanıyor. Farkı bilmek kurulum kararını değiştiriyor.

İki faktörlü doğrulama açmak artık standart bir öneri; ama hangi yöntemi açtığınız, korumanın gerçekte ne kadar işe yaradığını belirliyor. Üç yaygın seçenek var ve aralarındaki fark "biri daha modern" değil: farklı saldırılara karşı koruyorlar.

SMS, TOTP ve passkey yöntemlerinin saldırı dayanıklılığı
Üç yöntem de parolanın tek başına yetmemesini sağlar; ayrıştıkları yer saldırganın araya girdiği andır.

Ortak nokta: parolanın tek başına yetmemesi

Üç yöntemin de çözdüğü asıl problem şu: veri sızıntılarında ele geçen parolalar başka sitelerde deneniyor ve kullanıcıların önemli bir kısmı aynı parolayı birden fazla yerde kullanıyor. İkinci bir faktör eklendiğinde, sızmış bir parola tek başına işe yaramaz hâle geliyor. Parolanın sunucuda nasıl saklanacağı ayrı bir konu; onu parola saklama ve oturum güvenliği yazısında ele almıştık.

SMS: en yaygın, en zayıf

Kullanıcı için en kolay yöntem; kurulum gerektirmez, herkesin telefonu var. Ama iki ciddi zaafı var.

Numaranın devredilmesi. Saldırgan, operatörü ikna ederek numarayı kendi SIM kartına taşıtabiliyor. Bu gerçekleştiğinde doğrulama kodları doğrudan saldırganın telefonuna gidiyor ve kullanıcı olan biteni ancak hattı çekmediğinde fark ediyor. Yüksek değerli hesaplarda (finans, kripto, yönetici panelleri) bu saldırının hedefli örnekleri düzenli olarak görülüyor.

Kodun aktarılabilir olması. SMS kodu, kullanıcının baktığı sitenin gerçek olup olmadığını bilmez. Sahte bir giriş sayfası kodu ister, kullanıcı girer, saldırgan aynı saniyede gerçek siteye iletir. Kod geçerlidir ve oturum açılır.

TOTP: cihazda üretilen kod

Authenticator uygulamalarının kullandığı yöntem. Sunucu ile uygulama arasında paylaşılan bir gizli anahtar ve zaman bilgisinden 30 saniyede bir yeni kod üretilir. Kod hiçbir yerden geçmez, cihazda hesaplanır.

Bu, SMS'in birinci zaafını tamamen kapatır: operatör zinciri devre dışıdır, numara devri işe yaramaz. Uygulaması da sunucu tarafında sade:

PHP
// Kayıt: gizli anahtar üretilir, QR olarak gösterilir
$secret = $totp->generateSecret();          // kullanıcıya bir kez
$uri    = $totp->provisioningUri($secret, $kullanici->eposta, 'Uygulama Adı');

// Doğrulama: saat kaymasına karşı ±1 pencere tolerans
$gecerli = $totp->verify($secret, $girilenKod, tolerance: 1);

Tolerans penceresini geniş tutmayın: iki dakikalık pencere, çalınan bir kodun kullanılabilirlik süresini gereksiz yere uzatır. Bir de kullanılan kodu tek seferlik olarak işaretleyin; aksi hâlde aynı kod 30 saniye boyunca tekrar tekrar geçerli olur.

TOTP'nin açık kalan tarafı ikinci zaaftır: kullanıcı sahte siteye kodu kendi eliyle girerse koruma çalışmaz.

Passkey: alan adına bağlı imza

Passkey (WebAuthn) mantığı farklıdır. Kayıt sırasında cihazda bir anahtar çifti üretilir; özel anahtar cihazdan hiç çıkmaz, sunucuda yalnızca açık anahtar durur. Giriş sırasında sunucu rastgele bir veri gönderir, cihaz onu imzalar, sunucu imzayı doğrular.

Kritik ayrıntı şu: imza, isteğin geldiği alan adına bağlıdır. Kullanıcı sahte bir siteye düşerse tarayıcı o alan adı için kayıtlı bir passkey bulamaz ve imza üretmez. Yani kullanıcı kandırılsa bile saldırı ilerlemez. Oltalamaya karşı bugün elimizdeki en güçlü koruma bu.

Passkey'i "parola yerine" ya da "parolaya ek" olarak kurabilirsiniz. Kurumsal panellerde ikinci faktör olarak başlamak daha az sürtünme yaratıyor; kullanıcı alışkanlığı oturduktan sonra parolasız girişe geçmek daha kolay oluyor.

Karşılaştırma

SaldırıSMSTOTPPasskey
Sızmış parolanın denenmesiKorurKorurKorur
SIM takası / numara devriKorumazKorurKorur
Sahte siteye kod girmeKorumazKorumazKorur
Cihaz kaybıYeni SIM ile çözülürKurtarma kodu gerekirİkinci cihaz/kurtarma gerekir
Kullanıcı kurulum yüküYokOrtaDüşük (cihaz destekliyorsa)

Uygulamanıza koyarken

Sıralama önerisi net: passkey'i birincil, TOTP'yi ikincil, SMS'i yalnızca son çare olarak sunun. Bunun yanında sık atlanan üç ayrıntı var.

Kurtarma yolunu önce tasarlayın. Kayıt akışında tek kullanımlık kurtarma kodları üretip indirtmezseniz, telefon kaybı her seferinde manuel destek işine dönüşür. Bu kodları veritabanında düz metin değil, parolalar gibi karma (hash) olarak saklayın.

Ekleme ve silme işlemlerini loglayın. Bir hesaba yeni ikinci faktör eklenmesi, saldırganın kalıcılık sağlamak için attığı ilk adımdır. Bu olayı denetim kaydına yazın ve kullanıcıya bildirim gönderin. Nasıl kurgulanacağı için denetim izi yazısına bakabilirsiniz.

Doğrulama denemesini sınırlayın. Altı haneli bir kod, sınırsız denemeye izin verildiğinde kaba kuvvetle bulunabilir. Hesap başına ve IP başına deneme sınırı koyun; sınırlamanın neden tek başına yetmediğini en sık görülen açıklar yazısında tartışmıştık.

Zorunlu mu, isteğe bağlı mı?

Yönetici ve superadmin rolleri için zorunlu, normal kullanıcılar için teşvikli olması çoğu üründe dengeli bir çizgi. Zorunluluğu tüm kullanıcıya bir gecede uygulamak, kurtarma akışı olgunlaşmadan destek yükünü patlatıyor. Kademeli geçiş — önce yöneticiler, sonra yüksek yetkili roller, en son herkes — hem güvenlik hem işletme açısından daha sağlıklı ilerliyor.

Sonuç

İki faktörlü doğrulama açmak tek bir karar değil, üç ayrı korumanın hangisini seçtiğinizle ilgili bir karar. Bugün için makul kurgu şu: passkey'i öne çıkarın, TOTP'yi yaygın seçenek olarak tutun, SMS'i yalnızca başka yolu olmayan kullanıcılar için bırakın ve kurtarma akışını ilk günden yazın. Sırların nerede tutulacağı konusunda sır yönetimi yazısı da tamamlayıcı olacaktır.

Standardın kendisi ve tarayıcı desteği için: WebAuthn Guide.

Beğeniniz benzer içerikleri öne çıkarmamıza yardımcı olur.

Sık Sorulan Sorular

Hiç yoktan iyidir ama artık varsayılan olmamalı. SMS, SIM takası ve operatör kaynaklı numara devri saldırılarına açıktır; ayrıca kod, kullanıcıyı kandıran sahte bir siteye de aynı kolaylıkla girilir. Kullanıcı tabanınızın bir kısmı başka yöntem kuramıyorsa SMS'i yedek olarak bırakın, birincil yapmayın.

Çoğu senaryo için evet. Kodlar cihazda üretildiği için operatör zincirine bağımlı değil. Zayıf kaldığı tek yer, kullanıcıyı sahte bir siteye yönlendirip kodu anında gerçek siteye ileten saldırılardır; bu saldırıda kullanıcı kodu kendisi saldırgana verir.

Passkey, cihazda saklanan bir kriptografik anahtar çiftidir; oturum açarken sunucuya parola değil imza gönderilir. Alan adına bağlı çalıştığı için sahte siteye imza üretmez — oltalamaya karşı bugünkü en güçlü koruma budur. Parolayı tamamen kaldırabilir ya da ikinci faktör olarak kullanılabilir.

Bu, kurulumun en çok atlanan tarafı. Kayıt anında tek kullanımlık kurtarma kodları üretip kullanıcıya indirtin ve en az iki farklı yöntem kaydetmeye teşvik edin. Kurtarma yolunu tasarlamadan zorunlu ikinci faktör açmak, destek ekibinizi kilitleyen bir karardır.

S
superadmin

Bu yazıyı hazırladı. Sorularınız için iletişim sayfasından ulaşabilirsiniz.

Yorumlar (0)

Bu yazıya henüz yorum yapılmamış. İlk yorumu siz yazın!

Yorum Yaz

Yorumunuz onaylandıktan sonra yayınlanır. Ekibimiz gerekirse konuyla ilgili bir yanıt da paylaşır.

En az 10 karakter.