OTP Nedir? Tek Kullanımlık Şifre Nasıl Çalışır?
OTP (tek kullanımlık şifre) nedir, HOTP ve TOTP farkı nedir, kod hangi kanallardan iletilir ve hangisi ne kadar güvenlidir? Kavramın sade anlatımı.
Bir siteye giriş yaparken, ödeme onaylarken ya da şifrenizi sıfırlarken telefonunuza gelen o altı haneli sayıya OTP deniyor. Açılımı One-Time Password, yani tek kullanımlık şifre. Bu yazı OTP'nin ne olduğunu ve nasıl üretildiğini anlatıyor; kurumsal doğrulama SMS'i göndermek istiyorsanız OTP SMS sayfamız o işin pratik tarafını ele alıyor.
OTP neden var? Parola neden yetmiyor?
Parolanın tek ve temel sorunu şudur: çalınabilir ve çalındığı fark edilmez. Bir veri sızıntısında ele geçen parola aylarca kullanılabilir, üstelik aynı parolayı başka sitelerde de kullanan kişiler için tek bir sızıntı zincirleme hesap kaybına dönüşür.
OTP bu denklemi değiştirir. Kod her seferinde yeniden üretilir, tek kullanımdan sonra geçersizleşir ve yalnızca kullanıcının fiziksel olarak sahip olduğu bir şeye ulaşır: telefonu. Saldırgan parolayı bilse bile ikinci adımı geçemez. Güvenliğin "bildiğiniz bir şey + sahip olduğunuz bir şey" biçiminde iki ayağa yayılması budur.
HOTP ve TOTP: kod nasıl üretiliyor?
Kod rastgele değildir. Sunucu ile kullanıcı arasında önceden paylaşılmış gizli bir anahtar vardır ve iki taraf da aynı anahtardan aynı kodu bağımsız olarak hesaplar. Anahtarın kendisi hiçbir zaman iletilmez. İki standart yaygın kullanılır:
| HOTP | TOTP | |
|---|---|---|
| Dayandığı değişken | Sayaç (her istekte bir artar) | Zaman (genellikle 30 saniyelik dilimler) |
| Kod ne zaman ölür? | Kullanılınca veya sonraki kod üretilince | Zaman dilimi dolunca, kendiliğinden |
| Tipik kullanım | Donanım token'ları, tek seferlik bağlantılar | Doğrulayıcı uygulamalar (Google Authenticator vb.) |
| Zayıf noktası | Sayaçlar kayarsa senkron bozulur | Cihaz saati şaşarsa kod tutmaz |
TOTP aslında HOTP'nin üzerine kuruludur; tek farkı sayaç yerine "şu anki zamanın 30'a bölünmüş hâlini" kullanmasıdır. Doğrulayıcı uygulamalardaki kodun otuz saniyede bir yenilenmesinin ve yanındaki halkanın erimesinin sebebi de budur.
SMS ile gelen kodlar çoğu zaman bu iki standardın dışındadır: sunucu rastgele bir sayı üretir, veritabanında son kullanma zamanıyla saklar ve kullanıcının girdiğiyle karşılaştırır. Daha basittir, ama güvenliği tamamen kodun iletildiği kanala bağlıdır.
Kod hangi kanaldan gelir? Karşılaştırma
OTP'nin üretilmesi ile kullanıcıya ulaştırılması ayrı problemlerdir ve zayıf halka genellikle ikincisidir.
| Kanal | Güçlü yanı | Zayıf yanı |
|---|---|---|
| SMS | Kurulum gerektirmez, her telefonda çalışır, tamamlanma oranı en yüksek | SIM takası ve şebeke katmanı riskleri; iletim üçüncü taraflardan geçer |
| Doğrulayıcı uygulama | Kod cihazda üretilir, hiçbir yerden geçmez; internetsiz çalışır | Kurulum ve kurtarma kodu gerektirir; telefon kaybında erişim sorunu |
| E-posta | Maliyetsiz, adres zaten kayıtlıdır | E-posta hesabı ele geçmişse koruma sıfırdır; teslimat gecikebilir |
| Anlık bildirim / uygulama içi onay | Tek dokunuşla onay, kod yazma hatası yok | Yalnızca kendi uygulamasını kurmuş kullanıcıda çalışır |
Buradan çıkan sonuç "SMS'i bırakın" değildir. Kurulum gerektiren yöntemler daha güvenli ama daha dar kitlelidir; herkese açık bir e-ticaret sitesinde zorunlu doğrulayıcı uygulama, güvenlik kazancından çok terk edilmiş sepet üretir. Yaygın çözüm, varsayılanı SMS yapıp isteyen kullanıcıya daha güçlü seçeneği açmaktır.
OTP mesajı yazarken sık yapılan hatalar
- Kodu cümlenin ortasına gömmek. Telefonlar bildirim üzerinden kodu otomatik okuyabilir; kod net biçimde ayrışmazsa bu çalışmaz ve kullanıcı uygulamalar arasında gidip gelmek zorunda kalır.
- Kodun ne için istendiğini yazmamak. "Doğrulama kodunuz: 483920" ile "Giriş işleminiz için doğrulama kodunuz: 483920" arasında güvenlik farkı vardır: ikincisi, kullanıcı o an giriş yapmıyorsa saldırıyı görünür kılar.
- Uyarı cümlesini atlamak. Kodu kimsenin talep etmeyeceğini belirten kısa bir not, sosyal mühendislik denemelerinin çoğunu boşa çıkarır.
- Aynı kanaldan pazarlama mesajı da göndermek. Doğrulama trafiği gecikmeye tahammülsüzdür; kampanya kuyruğunun arkasına düşen kod, kullanıcı vazgeçtikten sonra ulaşır.
Sonuç
OTP, parolanın en zayıf yanını kapatan basit ama etkili bir fikirdir: kısa ömürlü, tek kullanımlık ve kullanıcının elindeki cihaza bağlı bir kanıt. Kodun nasıl üretildiğinden çok hangi kanaldan, ne kadar hızlı ve ne kadar anlaşılır biçimde iletildiği belirleyicidir.
Doğrulama kodlarınızı öncelikli bir kanaldan ve marka adınızla göndermek istiyorsanız OTP SMS sayfasına, kodu kendi sisteminizden tetiklemek için SMS API sayfasına bakabilirsiniz.
Sıkça sorulan sorular
OTP ile 2FA aynı şey mi?
Hayır, biri diğerinin parçasıdır. 2FA (iki adımlı doğrulama) bir güvenlik yaklaşımıdır: kullanıcıdan bildiği bir şeye (parola) ek olarak sahip olduğu bir şeyi de kanıtlamasını ister. OTP ise o ikinci adımda kullanılan tek kullanımlık koddur. Yani her OTP bir 2FA aracıdır, ama 2FA yalnızca OTP ile kurulmaz; donanım anahtarı veya biyometri de ikinci adım olabilir.
OTP kodu kaç haneli ve ne kadar süre geçerli olmalı?
Yaygın uygulama 6 hanedir; 4 hane kullanıcı için kolaydır ama deneme yanılmaya daha açıktır, 8 hane güvenliği artırırken yazım hatasını da artırır. Geçerlilik süresinde ise iki uç da sorunludur: çok kısa süre kullanıcıyı kod gelmeden zaman aşımına uğratır, çok uzun süre çalınan kodun kullanılma penceresini büyütür. Pratikte 60-180 saniye aralığı çoğu senaryo için dengeli kabul edilir.
OTP kodunu SMS yerine uygulamadan almak daha mı güvenli?
Teknik olarak evet. SMS, SIM kart takası ve şebeke katmanındaki zayıflıklara açıktır; doğrulayıcı uygulama kodu cihazın içinde üretir, hiçbir yerden geçmez. Buna karşılık SMS'in kurulum gerektirmemesi ve her telefonda çalışması, geniş kitleye açık servislerde onu hâlâ en yüksek tamamlanma oranına sahip yöntem yapar. Çoğu işletme ikisini birlikte sunar: varsayılan SMS, isteyene uygulama.
Kullanıcıya kodu kimseyle paylaşmaması gerektiğini söylemek gerçekten işe yarıyor mu?
Tek başına yeterli değil ama ölçülebilir fayda sağlar. OTP dolandırıcılığının büyük bölümü teknik bir açıktan değil, kullanıcının kodu telefonda birine okumasından kaynaklanır. Mesaj metnine kodun ne için istendiğini ve kimsenin bu kodu talep etmeyeceğini yazmak, saldırganın uydurduğu senaryoyu kullanıcı gözünde tutarsız hale getirir.