TOTP Üretici

Sonuçlar

Google Authenticator ya da Authy size her 30 saniyede bir değişen altı haneli bir kod gösterdiğinde, gördüğünüz şey TOTP'dir: paylaşılan bir gizli anahtar ile geçerli Unix zamanından hesaplanan, RFC 6238 ile standartlaştırılmış bir HMAC. Bu üretici aynı kodları herhangi bir Base32 gizli anahtardan hesaplar; yeni bir iki faktörlü kimlik doğrulama (2FA) entegrasyonunda hata ayıklamak, bir hizmetin kodlarınızı neden reddettiğini bulmak ya da algoritmanın farklı parametrelere nasıl tepki verdiğini izlemek için kullanışlıdır. Burada test anahtarları kullanın: kod bizim sunucumuzda hesaplanır, bu yüzden hesaplarınızı koruyan gerçek gizli anahtarların yeri bir web sayfası değil, bir kimlik doğrulayıcı uygulamadır.

Bu TOTP üretici nasıl çalışır

  1. 1

    Base32 gizli anahtarı yapıştırın

    A-Z harfleri ve 2-7 rakamları, yani otpauth:// QR kodlarının içindeki biçim. Boşluklar ve küçük harfler sorun değildir; bunun dışındaki her şey geçersiz Base32 olarak bildirilir.

  2. 2

    Özet algoritmasını seçin

    Hemen her hizmet SHA-1 kullanır; SHA-256 ya da SHA-512 seçeneğine yalnızca hizmet açıkça istediğinde geçin.

  3. 3

    Hane sayısını ve süreyi ayarlayın

    6, 7 ya da 8 hane ile 30 veya 60 saniyelik bir pencere seçin. Standart kombinasyon her 30 saniyede 6 hanedir.

  4. 4

    Geçerli kodu okuyun

    Kod her saniye yenilenir; geri sayım, geçerli pencerenin kaç saniyesi kaldığını gösterir.

  5. 5

    otpauth URI ile karşılaştırın

    Araç, parametreleriniz için otpauth:// URI adresini gösterir; böylece bir hizmetin kurulum QR kodunun kodladığı değerle karşılaştırabilirsiniz.

Algoritma sade bir dille

TOTP, sayacın yerini geçerli Unix zamanının zaman adımına (genellikle 30 saniye) bölünmüş halinin aldığı HOTP’tur (HMAC tabanlı tek kullanımlık parola, RFC 4226):

counter = floor(unix_time / 30)
hash = HMAC-SHA1(secret, counter_as_8_byte_big_endian)
offset = last byte of hash AND 0x0F
truncated = 4 bytes from offset, with the top bit zeroed
code = truncated mod 10^digits

Cihazınız ve sunucu, aynı gizli anahtar ve aynı saat üzerinde aynı hesabı yapar; böylece kod hiçbir yere gönderilmeden ikisi de aynı koda ulaşır. 6 haneli kod, kısaltılmış HMAC’in 10^6 modülünden ibarettir. Sihir yok, sadece özetleme.

Yaygın parametreler

Hizmet Algoritma Hane Süre
Çoğu web sitesi ve uygulama SHA-1 6 30 sn
GitHub SHA-1 6 30 sn
Cloudflare SHA-1 6 30 sn
Microsoft hesapları SHA-1 6 30 sn
Bazı bankalar ve kurumsal VPN’ler SHA-256 veya SHA-512 8 60 sn

Bir hizmet kodlarınızı reddediyorsa önce hane sayısını ve süreyi, sonra algoritmayı kontrol edin. Ayrıca bazı kimlik doğrulayıcı uygulamaların standart dışı parametreleri sessizce yok saydığını unutmayın (Google Authenticator geçmişte her şeyi SHA-1, 6 hane, 30 saniye olarak ele alırdı); bu yüzden her zaman kullanıcılarınızın kullanacağı uygulamanın aynısıyla test edin.

Gizli anahtarları güvenle saklamak

  • Bir 2FA gizli anahtarını asla e-posta ya da mesajla göndermeyin. Bir gelen kutusuna girdiği anda, sağlayıcının günlüklerinde ve yedeklerinde süresiz kalır.
  • Kaydı QR kodu tarayarak yapın. QR kodu, gizli anahtarı, algoritmayı, hane sayısını ve süreyi tek ve net bir pakette taşıyan bir otpauth://totp/... URI içerir.
  • Kayıt anında yedekleyin. Kurtarma kodlarını ya da gizli anahtarın kendisini bir parola yöneticisinde saklayın; onlar olmadan telefonu kaybetmek sizi dışarıda bırakır.
  • Her hizmete ayrı gizli anahtar. Her hizmet kurulumda kendi gizli anahtarını üretir; biri sızarsa, eskisinin geçersiz kalması için o hizmette 2FA kaydını yenileyin.

Zaman kayması

TOTP yalnızca iki saat uyuştuğu sürece çalışır. Bu sayfa kodları sunucunun saatiyle hesaplar; buradaki kod telefonunuzdaki kimlik doğrulayıcıdan farklıysa ilk şüpheli cihazın saatidir. Çoğu doğrulayıcı her iki yönde bir pencerelik sapmayı kabul eder (30-60 saniye); bunun ötesinde, gizli anahtarı suçlamadan önce cihaz saatini NTP ile eşitleyin.

Burada test anahtarları kullanın

Bu araç kodu bizim sunucumuzda hesaplar: yazdığınız gizli anahtar her güncellemede HTTPS üzerinden iletilir ve aracın adımları arasında geçerken sayfa URL’sinde de görünür. Tek kullanımlık test anahtarlarıyla geliştirme, demo ve hata ayıklama için bu gayet uygundur. Ancak e-postanızı ya da banka hesabınızı koruyan gerçek gizli anahtarın yeri burası değildir; onun yeri telefonunuzdaki özel bir kimlik doğrulayıcı uygulamadır. Gerçek bir gizli anahtarı kimlik doğrulayıcınızın dışında bir yere zaten yapıştırdıysanız, anahtarın yenilenmesi için o hizmette 2FA kaydını baştan yapın.

Sık Sorulan Sorular

Bu sayfayı bir kasa değil, geliştirici ve test aracı olarak görün. Kod sunucu tarafında hesaplanır; yani gizli anahtar HTTPS üzerinden sunucumuza gider ve adımlar arasında sayfa URL’sinde görünebilir. Demo ya da geliştirme anahtarlarını gönül rahatlığıyla kullanın; önemsediğiniz bir hesabın gerçek gizli anahtarını asla yapıştırmayın. Yapıştırdıysanız, anahtarı yenilemek için o hizmette 2FA kaydını baştan yapın.

Önce parametreleri kontrol edin: algoritma, hane sayısı ve süre, hizmetin verdiğiyle birebir aynı olmalıdır. Sonra saatlere bakın: bu sayfa sunucunun saatini kullanır, dolayısıyla bir uyuşmazlık genellikle diğer cihaza işaret eder. Son olarak bazı uygulamaların standart dışı parametreleri yok saydığını hatırlayın; klasik örnek Google Authenticator’dır.

Yalnızca Base32: A’dan Z’ye harfler ve 2’den 7’ye rakamlar, isteğe bağlı = dolgusuyla. Boşluklar silinir, küçük harfler otomatik dönüştürülür. Onaltılık (hex) ya da ham bayt anahtarların önce Base32’ye çevrilmesi gerekir; aksi halde araç geçersiz Base32 anahtarı bildirir.

O hesabın 2FA’sının dışında kalırsınız. Hizmetin kurtarma akışını kullanın (kurtarma kodları, kimlik doğrulaması, SMS yedeği). Kurulumda kurtarma kodlarını ya da ilk QR kodunu her zaman güvenli bir yere kaydedin.

Evet. Sunucu tarafında en az 128 bit (RFC 4226, 160 bit önerir) rastgele bir gizli anahtar üretin, onu yalnızca bir kez QR kodu olarak gösterin ve gönderilen kodları aynı HMAC hesabını yaparak, genellikle her iki yönde bir pencerelik toleransla doğrulayın. Her teknoloji için olgun kütüphaneler var: pyotp (Python), otplib (JavaScript), rotp (Ruby).

İlgili Araçlar

Araç diğer dillerde mevcuttur