Türkçe
  • şifresiz
  • tek kullanımlık şifre
  • otp
  • zaman tabanlı otp
  • hash tabanlı otp

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

Bu makalede, iki farklı tek kullanımlık şifre metodunu tanıtacağız: e-posta/telefon + doğrulama kodu ve dinamik kod.

Darcy Ye
Darcy Ye
Developer

İnternet geliştiğinden beri, hemen hemen tüm ihtiyaçlarımızı karşılamak için çok çeşitli çevrimiçi hizmetler kullanıyoruz. Bu hizmetleri kullanmanın ilk adımı genellikle kayıt ve giriş yapmaktır. Kayıt ve oturum açmaya gelince, kullanıcı kimliği ve şifre doğrulaması hala yaygın bir şekilde kullanılıyor, ancak internet bağlanamayan bağımsız masaüstü bilgisayarların kullanıldığı günlerden bu yana otuz yıldan fazla zaman geçti.

Geçmişte sadece e-posta hesabımızın şifresini hatırlamamız gerekebilirdi, ancak şimdi sıklıkla onlarca veya hatta yüzlerce çevrimiçi hizmet kullanıyoruz ve hepsi için aynı şifreyi kullanamayız (bir hesaba ait şifre tehlikeye girerse, aynı şifreyi kullanan tüm hesaplar da risk altında olacaktır). Sonuç olarak, şifresiz oturum açma giderek popüler hale geliyor ve kademeli olarak ana yaklaşım olmaya başlıyor.

Şifresiz kimlik doğrulama için birçok farklı yöntem vardır, bunlarla sınırlı olmamak üzere sosyal oturum açma, e-posta/telefon + doğrulama kodu ve dinamik şifrelerle kimlik doğrulayıcı uygulamaların kullanımı. Son iki yöntem tek kullanımlık şifreler (OTP) olarak sınıflandırılabilir.

Tek Kullanımlık Şifre (OTP) Nedir?

Bir OTP, yalnızca tek bir oturum açma oturumu veya kısa bir süre için geçerli olan otomatik olarak üretilmiş bir karakter dizisidir. OTP yalnızca bir kez kullanılabildiği için, kaybolmuş veya çalınmış bir şifre gibi kimlik bilgisi sızıntısı riskini önleyebilir.

Teorik olarak, bir OTP belirli bir uzunlukta rastgele bir karakter dizisi olabilir, büyük ve küçük harfler ve hatta özel semboller içerebilir. Ancak kullanıcı deneyimi için, çoğu hizmet OTP kullanırken saf sayılar kullanır.

E-posta / telefon + doğrulama kodu

Birçok web sitesi, kayıtlı e-posta veya telefon numaranıza bir doğrulama kodu (veya geçiş kodu) göndererek kimliğinizi doğrulamanızı ister.

Diyelim ki Jack ve Joe bir tahmin oyununu oynuyorlar, Jack 0 ile 999 arasında bir sayı düşünüyor ve Joe'ya bu sayıyı bir dakika içinde tahmin etmesi için üç şans veriyor. Sayının aralıklarını bilmek dışında, Joe'nun başka bir bilgisi yoktur.

Hepimiz biliyoruz ki Joe'nun üç denemeyle bir dakika içinde sayıyı doğru tahmin etmesi neredeyse imkansız.

E-posta / telefon + doğrulama kodu aynı ilke üzerinde çalışır: doğrulama kodu genellikle çok kısa bir süre için geçerlidir, genellikle 10 dakikadan fazla olmaz (Jack'in Joe'ya "bir dakika" vermesine benzer şekilde). Ek olarak, doğrulama kodunu doğrulamak için kullanılan API veya yöntem genellikle kaba kuvvet saldırılarını önlemek için bir hız sınırına sahiptir (Jack'in Joe'ya "üç şans" vermesi gibi).

Potansiyel saldırganlar için bu yöntemi kırmak neredeyse imkansızdır. Ancak, sistem kullanıcıya doğrulama kodunu güvenilir bir kanal (e-posta veya telefon) aracılığıyla bildirir ve kullanıcının doğrudan doğrulamasına olanak tanır.

Dinamik kod

Dinamik kod, zaman tabanlı OTP (TOTP) olarak da bilinir, "dinamik" kelimesi zamanla değiştiği anlamına gelir. Genel olarak, bir web uygulaması TOTP kullanıyorsa, RFC6238 - TOTP: Zaman Tabanlı Tek Kullanımlık Şifre Algoritması standartlarını takip edecektir.

Hash tabanlı tek kullanımlık şifre

TOTP'yi tanıtmadan önce, RFC4226 - HOTP: HMAC Tabanlı Tek Kullanımlık Şifre Algoritması (HMAC bir hash algoritmasıdır) hakkında kısaca açıklama yapmamız gerekiyor. HOTP algoritması şu şekilde çalışır:

  1. Gizli Anahtar: HOTP, sunucu ve istemci arasında aynı olan paylaşılan bir gizli anahtar K gerektirir.

  2. Sayaç: HOTP'nin çekirdeği, her yeni şifre oluşturulduğunda artırılan bir sayaç olan C'dir.

  3. HMAC Hesaplaması:

    • Kimlik doğrulama kodunu hesaplamak için HMAC-SHA-1 (veya diğer hash fonksiyonları) kullanılır:

      hmac hesaplama
    • Burada, H 160 bitlik bir hash değeridir.

  4. Truncation: OTP oluşturmak için H hash değerinin bir kısmını çıkarın. 6 basamaklı bir OTP istediğimizi varsayalım, işlem şu şekilde olur:

    • H'nin son baytını kesme offseti O olarak çıkarın.
    • O'dan başlayarak 4 bayt çıkarın, bunları bir tamsayı T'ye çevirin.
    • T'nin son d basamağını alın, yani OTP = T mod 10^d.

Özetle, HOTP formülü şöyledir:

hash tabanlı otp hesaplama

d istediğimiz OTP uzunluğunu ifade eder (genellikle 6-8 basamak).

Zaman tabanlı tek kullanımlık şifre

TOTP, sayacın bir zaman adımı ile değiştirildiği HOTP'nin bir uzantısıdır. Dinamik bir doğrulama kodu oluşturmak için geçerli zamanı kullanır, böylece OTP otomatik olarak zamanı geçtikçe sona erir. Çalışma prensibi şöyledir:

  1. Zaman adımı: TOTP, HOTP sayacı C yerine geçerli zaman T kullanır. Zaman adımı önceden belirlenmiş sabit bir zaman aralığıdır (genellikle 30 saniye).

    • Örneğin, zaman adımının 30 saniye olduğunu varsayalım, ve geçerli Unix zaman damgası T'dir. TOTP sayacı şu şekilde hesaplanır: T' = T / zaman_adımı
    • Burada T′, saniye birimlerindeki zaman adımı sayacıdır.
  2. OTP Oluşturma: T′'yi HOTP algoritmasına yerleştirerek OTP'yi oluşturun:

    totp oluşturma
  3. Dinamik güncelleme: Çünkü TOTP zaman adımına dayanır, OTP zamanı geçtikçe değişir, böylece sunucu OTP geçerli zaman penceresi içinde olduğu sürece doğrulama yapabilir.

Özetle, TOTP formülü şöyledir:

totp hesaplama

Kimlik doğrulayıcı uygulamaları kullanarak edindiğimiz deneyimlere dayanarak, cihaz ve sunucu arasında gizli değeri bir QR kodu tarayarak veya doğrudan kopyalayıp yapıştırarak senkronize edebiliriz ve sonra gizli değerin aynı olduğundan emin olmak için mevcut dinamik kodu bir kez geçip girmemiz gerekir.

Mobil cihazları kullanmaya başladığımız ilk günlerde, farklı cihazların saatlerinin aynı olmadığını görebilir ve cihazların zamanını periyodik olarak manuel olarak ayarlamamız gerekebilirdi. Son yıllarda, hemen hemen tüm cihazlar ağ zaman hizmeti (NTP) kullanarak cihaz saatini düzenli olarak senkronize eder ve günceller. Cihazın saati tamamen doğru olmasa bile, sık güncellemeler zamanın farklı cihazlarda makul ölçüde tutarlı olmasını sağlayabilir. Bu varsayıma dayanarak, cihaz çevrimdışıyken bile dinamik kod kullanılabilir, oysa çevrimdışı bir durumda doğrulama kodu almak zor olurdu.

Kapanış notları

Bu makalede, iki farklı tek kullanımlık şifre yöntemini tanıttık: e-posta/telefon + doğrulama kodu ve dinamik kod.

E-posta/telefon + doğrulama kodu, iletişim altyapısı ve üçüncü taraf e-posta veya kısa mesaj hizmeti (SMS) kullanılarak uygulanır; dinamik kod ise dış hizmetler ve iletişim olanaklarına bağımlı değildir ve çevrimdışı kullanılabilir.

Logto, popüler, güçlü ve son derece genişletilebilir bir IAM (Kimlik ve Erişim Yönetimi) hizmeti olarak, her iki OTP yöntemini de destekler, kullanıcılara iş perspektifinden ihtiyaçlarına en iyi uyan çözümü seçme imkanı sağlar.