İçeriğe geç
Hesap Güvenliği

Tek Kullanımlık Şifre (OTP, TOTP) Nedir, Nasıl Çalışır?

Güncellendi: Son kontrol: Eylül 2026 6 dk okuma

Kısaca cevap

Tek kullanımlık şifre (OTP, one-time password), yalnızca bir giriş veya bir işlem için geçerli olan kısa süreli koddur. Bankaların SMS ile gönderdiği işlem onay kodları, e-posta doğrulama kodları ve authenticator uygulamalarının her 30 saniyede ürettiği 6 haneli kodlar bu gruba girer. Uygulamaların kullandığı TOTP, gizli bir anahtar ile o anki saatten kod üretir (RFC 6238). Kod bir kez kullanılınca veya süresi dolunca geçersiz olur; kimseyle paylaşılmaz.

Bu sayfada

Tek kullanımlık şifre nedir?

Normal şifreniz her girişte aynıdır; biri öğrenirse siz değiştirene kadar kullanabilir. Tek kullanımlık şifre ise yalnızca bir kez ve kısa bir süre için geçerlidir. Türkiye Bankalar Birliği'nin elektronik bankacılık terimleri sözlüğü OTP'yi, yalnızca bir kez kullanılmak üzere rastgele oluşturulan harf ve/veya rakam dizisi olarak tanımlar; SMS ile iletilene de SMS OTP der.

OTP çoğu zaman normal şifrenizin yerine değil, yanında kullanılır. Girişte önce şifrenizi yazarsınız, ardından sistem ikinci kanıt olarak tek kullanımlık kodu ister. Bu yapıya iki faktörlü doğrulama denir; yöntemlerin karşılaştırması iki faktörlü doğrulama (2FA) yazısında.

Tek kullanımlık şifre türleri

TürKod nereden gelir?Nerede görürsünüz?
SMS OTPHizmet kodu üretir ve kayıtlı numaranıza SMS ile gönderir.Banka işlemleri, 3D Secure, e-Devlet iki aşamalı giriş, uygulama kayıtları
E-posta koduHizmet kodu e-posta adresinize gönderir.Yeni cihazdan giriş, e-posta adresi doğrulama
TOTP (zamana dayalı)Telefonunuzdaki uygulama kodu kendisi hesaplar.Google Authenticator, Microsoft Authenticator ve benzeri uygulamalar
HOTP (sayaca dayalı)Cihaz her basışta bir sonraki kodu hesaplar.Bazı donanım kod üreteçleri (token)
Yedek kodlarHizmet önceden bir liste verir, her kod bir kez kullanılır.2FA kurtarma, telefon kaybı

Telefonunuza gelen "Giriş yapan siz misiniz?" bildirimini onaylamak da bir doğrulama yöntemidir, ama bir kod değil onaydır. Yedek kodlar ise telefonunuza erişemediğinizde kullanılmak üzere önceden verilen, her biri bir kez geçerli kodlardır.

OTP nedir, bankada nasıl kullanılır?

"OTP nedir banka" diye aratanların çoğu, bankadan gelen SMS'teki kodu soruyor. Bankalar tek kullanımlık şifreyi şu işlemlerde kullanır:

  • İnternet ve mobil bankacılık girişi: Müşteri numarası ve şifreden sonra telefonunuza gelen kod veya mobil uygulamadaki onay.
  • Para transferi ve yeni alıcı tanımlama: İşlemi sizin yaptığınızı doğrulamak için.
  • 3D Secure ile internet alışverişi: Garanti BBVA'nın açıklamasına göre ödeme sırasında kart sahibinin cep telefonuna SMS ile tek kullanımlık bir şifre gönderilir; bu şifre belirli bir süre geçerlidir ve yalnızca o işleme özeldir.

Ziraat Bankası'nın müşterilerine yaptığı uyarı açıktır: cep telefonunuza gönderilen tek kullanımlık işlem onay şifresi yalnızca size özeldir ve banka personeli dahil kimseyle paylaşılmamalıdır. Aynı uyarıda, telefonla arayıp kart bilgilerini veya şifreleri okumanızı ya da tuşlamanızı isteyenlere itibar edilmemesi istenir.

Bir işlem başlatmadığınız halde bankanızdan kod geliyorsa, biri sizin bilgilerinizle işlem yapmaya çalışıyor olabilir. Kodu kimseye vermeyin ve bankanızı kartınızın arkasındaki veya resmi sitesindeki numaradan kendiniz arayın.

Doğrulama kodu nedir?

"Doğrulama kodu", tek kullanımlık şifrenin günlük dildeki adıdır. WhatsApp'a yeni telefonda girerken, bir alışveriş sitesine üye olurken ya da e-postanızı değiştirirken gelen kısa kodların hepsi aynı işi yapar: telefon numaranızın veya e-posta adresinizin gerçekten size ait olduğunu, işlemi sizin başlattığınızı kanıtlar.

Bu yüzden doğrulama kodu, o anki işlemin anahtarıdır. "Yanlışlıkla sana kod gönderdim, bana iletir misin?" mesajı klasik bir hesap ele geçirme yöntemidir: kodu gönderdiğinizde karşı taraf hesabınızı kendi telefonunda açar. Bu tür mesajların nasıl tanınacağını sahte şifre sıfırlama mesajları ve SMS dolandırıcılığı yazılarında anlattık.

TOTP nedir, nasıl çalışır?

TOTP (Time-based One-Time Password), zamana dayalı tek kullanımlık şifre demektir ve RFC 6238 standardında tanımlanmıştır. Authenticator uygulamalarının ürettiği kodlar budur. Çalışma adımları:

  1. Ortak gizli anahtar: Kurulumda hizmet size bir QR kod gösterir. İçindeki gizli anahtar hem hizmetin sunucusunda hem de telefonunuzda saklanır. Temel standart RFC 4226, bu anahtarın en az 128 bit olmasını şart koşar, 160 bit önerir.
  2. Zaman adımı: Uygulama, 1 Ocak 1970'ten bu yana geçen saniyeyi (Unix zamanı) adım süresine böler ve aşağı yuvarlar. RFC 6238'in önerdiği varsayılan adım 30 saniyedir; bu yüzden kodlar 30 saniyede bir değişir.
  3. Kod hesaplama: Bu sayı, gizli anahtarla HMAC fonksiyonundan geçirilir (varsayılan HMAC-SHA-1; standart SHA-256 ve SHA-512'ye de izin verir). Sonuçtan 6 haneli bir sayı çıkarılır.
  4. Karşılaştırma: Sunucu aynı hesabı kendisi yapar ve iki sonuç eşleşirse girişe izin verir.

Kod hiçbir yere gönderilmediği için internet gerektirmez; ama telefonun saati önemlidir. RFC 6238, ağ gecikmesi için en fazla bir önceki zaman adımının kabul edilmesini önerir ve doğrulayıcının başarıyla kullanılmış bir kodu aynı zaman diliminde ikinci kez kabul etmemesini şart koşar. Telefonunuzun saati birkaç dakika kaymışsa kodlar tutmaz; çözümü authenticator uygulaması yazısında anlattık.

HOTP ile TOTP farkı

HOTP (HMAC-based One-Time Password), RFC 4226'da tanımlanan temel algoritmadır. Zaman yerine bir sayaç kullanır: her kod üretildiğinde sayaç bir artar. Kod siz kullanana kadar geçerli kalabilir, bu yüzden sunucu sayaç kaymasını telafi etmek için birkaç sonraki değeri de kontrol eder. TOTP, HOTP'deki sayacın yerine zaman adımını koyar; böylece her kod kendiliğinden kısa sürede geçersiz olur. RFC 4226 kodun en az 6 haneli olmasını şart koşar; 7 veya 8 hane de mümkündür.

Yazılımcılar için: Python ile TOTP

Aşağıdaki örnek, standart kütüphaneyle HOTP ve TOTP hesaplar ve sonucu RFC'lerdeki test değerleriyle karşılaştırır. Yalnızca algoritmayı anlamak içindir; üretim sisteminde gizli anahtarı güvenli saklayan, deneme sınırı koyan ve kullanılmış kodu reddeden olgun bir kütüphane kullanın.

import hmac, hashlib, struct, time

def hotp(anahtar: bytes, sayac: int, hane: int = 6) -> str:
    mac = hmac.new(anahtar, struct.pack(">Q", sayac), hashlib.sha1).digest()
    ofset = mac[-1] & 0x0F
    sayi = struct.unpack(">I", mac[ofset:ofset + 4])[0] & 0x7FFFFFFF
    return str(sayi % 10 ** hane).zfill(hane)

def totp(anahtar: bytes, zaman: float | None = None, adim: int = 30, hane: int = 6) -> str:
    if zaman is None:
        zaman = time.time()
    return hotp(anahtar, int(zaman // adim), hane)

# RFC 4226 ve RFC 6238 test değerleriyle kontrol
anahtar = b"12345678901234567890"
print(hotp(anahtar, 0), hotp(anahtar, 1))   # 755224 287082
print(totp(anahtar, 59, hane=8))            # 94287082
print(totp(anahtar, 1111111109, hane=8))    # 07081804

Gerçek bir sistemde gizli anahtar, kriptografik olarak güvenli bir rastgele kaynaktan üretilmelidir (Python'da secrets modülü). Anahtar asla sabit bir metin veya random modülüyle üretilmemelidir.

Tek kullanımlık şifre ne kadar güvenli?

OTP, çalınan bir şifreyi tek başına işe yaramaz hale getirdiği için güçlü bir katmandır. Ama iki zayıf noktası vardır:

  • Sahte sayfalar: Kodu bir oltalama sayfasına yazarsanız saldırgan onu birkaç saniye içinde gerçek sitede kullanabilir. NIST'in dijital kimlik yönergesi (SP 800-63B) tek kullanımlık kodları bu nedenle oltalamaya dayanıklı saymaz.
  • SMS kanalı: SMS kodları SIM kart değiştirme dolandırıcılığıyla ele geçirilebilir; NIST, SMS'i "kısıtlı" doğrulama yöntemi olarak sınıflandırır. Ayrıntılar SMS ile doğrulama güvenli mi yazısında.

Sahte sayfalara karşı en dayanıklı seçenekler geçiş anahtarları (passkey) ve donanım güvenlik anahtarlarıdır. Hesabınız bunları desteklemiyorsa sıralama genellikle şöyledir: authenticator uygulaması, sonra SMS. SMS bile hiç ikinci adım olmamasından çok daha iyidir.

Tek kullanımlık şifre ile ilgili temel kurallar

  • Kodu yalnızca kendi başlattığınız işlemde, adresini kontrol ettiğiniz sayfaya veya resmi uygulamaya girin.
  • Kodu telefonda, mesajla veya e-postayla kimseye söylemeyin; banka, operatör, kargo ya da kamu kurumu bu kodu sizden istemez.
  • Kodu girmeden önce SMS'in tamamını okuyun. Mesajda anlatılan işlem sizin başlattığınız işlem değilse kodu kullanmayın.
  • Kod gerçek hesabınızı korur ama zayıf bir şifreyi telafi etmez. Her hesaba ayrı, uzun bir şifre için şifre üreticiyi kullanın.

Sık sorulan sorular

Tek kullanımlık şifre ne demek?

Tek kullanımlık şifre, yalnızca bir işlem veya bir giriş için geçerli olan, kısa süre sonra geçersiz olan koddur. Türkiye Bankalar Birliği OTP'yi yalnızca bir kez kullanılmak üzere rastgele oluşturulan harf veya rakam dizisi olarak tanımlar. Bir kez kullanıldıktan veya süresi dolduktan sonra aynı kod tekrar işe yaramaz.

OTP nedir, bankada ne işe yarar?

Bankalar OTP'yi internet ve mobil bankacılık girişlerinde, para transferlerinde ve 3D Secure ile yapılan kartlı internet alışverişlerinde işlemi onaylamak için kullanır. Kod genellikle kayıtlı cep telefonunuza SMS ile gelir ve yalnızca o işlem için geçerlidir. Bankanız bu kodu size telefonda, SMS'le veya e-postayla sormaz.

TOTP kodu nedir?

TOTP, zamana dayalı tek kullanımlık şifredir. Authenticator uygulamaları, kurulumda paylaşılan gizli anahtar ile o anki saatten her 30 saniyede bir yeni kod hesaplar. Kod telefonunuzda üretildiği için SMS beklemenize gerek yoktur.

Doğrulama kodu nedir, neden kimseyle paylaşılmaz?

Doğrulama kodu, bir giriş veya işlemin gerçekten sizin tarafınızdan yapıldığını kanıtlamak için gönderilen ya da üretilen tek kullanımlık koddur. Kodu isteyen kişi, çoğu zaman sizin adınıza başlattığı bir girişi veya ödemeyi tamamlamaya çalışıyordur. Kodu kimseye söylemeyin; bankalar ve kurumlar bu kodu sizden istemez.

SMS ile gelen tek kullanımlık şifre güvenli mi?

SMS kodu, yalnızca şifreyle korunan bir hesaba göre belirgin bir koruma sağlar, ancak SIM kart dolandırıcılığına ve kodu sahte sayfaya yazdırmaya açıktır. Hesabınız destekliyorsa authenticator uygulaması, geçiş anahtarı (passkey) veya güvenlik anahtarı daha güçlü seçeneklerdir.