İçeriğe atla
FerdiGidenby FerdiSoftBETA v2.4
Güvenlik

Google Authenticator ile İki Adımlı Doğrulama (TOTP) Nasıl Çalışır?

Şifreniz çalınsa bile hesabınızı koruyan TOTP algoritmasını, QR kodun içinde ne olduğunu ve PHP ile nasıl doğrulandığını adım adım anlattık.

Ferdi GidenFerdi Giden 2 dk okuma 94
Google Authenticator ile İki Adımlı Doğrulama (TOTP) Nasıl Çalışır?
İçindekiler
  1. TOTP nedir?
  2. QR kodun içinde ne var?
  3. Kod nasıl hesaplanır?
  4. Güvenli bir uygulama için 4 kural
  5. Sonuç

Şifreler tek başına artık yeterli değil. Veri sızıntılarında ele geçen milyonlarca parola, iki adımlı doğrulamayı (2FA) her hesap için zorunlu hâle getiriyor. Bu yazıda Google Authenticator gibi uygulamaların kullandığı TOTP (Time-based One-Time Password) yöntemini sade bir dille ve kod örnekleriyle açıklıyoruz.

TOTP nedir?

TOTP, telefonunuzdaki uygulama ile sunucunun aynı gizli anahtarı ve aynı saati kullanarak, birbirleriyle hiç konuşmadan aynı 6 haneli kodu üretmesidir. Kod her 30 saniyede bir değişir; ele geçirilse bile kısa sürede değersiz hâle gelir.

QR kodun içinde ne var?

Kurulum sırasında taradığınız QR kod aslında şu biçimde bir adrestir:

otpauth://totp/FerdiGiden:ferdi?secret=JBSWY3DPEHPK3PXP&issuer=FerdiGiden
  • secret: Base32 ile kodlanmış gizli anahtar
  • issuer: Hesabın hangi siteye ait olduğu
  • period / digits: Varsayılan olarak 30 saniye ve 6 hane

Gizli anahtarı içeren QR kodu asla üçüncü taraf bir "QR oluşturucu" servisine göndermeyin. FerdiGiden'de QR kod tamamen tarayıcınızda üretilir.

Kod nasıl hesaplanır?

  1. Geçen süre 30'a bölünür ve zaman adımı bulunur.
  2. Zaman adımı, gizli anahtarla HMAC-SHA1 algoritmasından geçirilir.
  3. Sonuçtan dinamik olarak 4 bayt seçilir ve son 6 hane alınır.
$adim = intdiv(time(), 30);
$hmac = hash_hmac('sha1', pack('J', $adim), $anahtar, true);
$o    = ord($hmac[19]) & 0x0F;
$sayi = ((ord($hmac[$o]) & 0x7F) << 24) | (ord($hmac[$o + 1]) << 16)
      | (ord($hmac[$o + 2]) << 8) | ord($hmac[$o + 3]);
$kod  = str_pad($sayi % 1000000, 6, '0', STR_PAD_LEFT);

Güvenli bir uygulama için 4 kural

  1. Saat kaymasına tolerans: Bir önceki ve bir sonraki adımı da kabul edin (±30 sn).
  2. Tekrar kullanım engeli: Başarılı kodun zaman adımını kaydedin; aynı kod ikinci kez kabul edilmesin.
  3. Şifreli saklama: Gizli anahtarı veritabanında AES-256 ile şifreleyin.
  4. Kurtarma kodları: Telefon kaybolursa hesaba erişim için tek kullanımlık yedek kodlar verin.

Sonuç

TOTP, kurulumu bir dakika süren ama hesabınızı şifre sızıntılarına karşı büyük ölçüde koruyan bir katmandır. FerdiGiden üyeliğinizde Profil → Güvenlik sayfasından iki adımlı doğrulamayı hemen açabilirsiniz.

Paylaş:
Ferdi Giden

Yazar

Ferdi Giden @admin
Sistem YöneticisiDoğrulanmış GeliştiriciBeta KullanıcıFerdiSoft KatılımcısıDoğrulanmış ProfilGüvenlik Bilinci

PHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.

Yorumlar 0

Yorum yapmak ve tartışmaya katılmak için giriş yapın. Rozetleriniz yorumlarınızda görünür.

Henüz yorum yok. İlk yorumu siz yazın!

Ücretsiz Teklif Al