Zaman tabanlı tek seferlik parola algoritması

**Zaman tabanlı tek seferlik parola algoritması** (**TOTP**), üretildiği zaman aralığının benzersizliğini alarak, tek seferlik parola üreten bir HMAC Tabanlı Bir-Zamanlı Parola algoritmasının (HOTP) uzantısıdır. İnternet Mühendisliği Görev Gücü standardı RFC 6238 olarak kabul edilmiştir. Açık Kimlik Doğrulama Girişiminin (OATH) temel taşıdır ve iki faktörlü kimlik doğrulama sistemlerinde kullanılır.

Ağ ya da insan kaynaklı gecikme veya senkronize edilmemiş saatler nedeniyle, tek seferlik parola, kimlik doğrulayıcı ile kimliği doğrulanacak taraf arasında bir süre boyunca aktif olmalıdır. Burada, taraflar arasında geçerliliği sağlamak için zaman daha büyük sürelere (örneğin, 30 saniye) düşürülür. Bununla birlikte, HOTP'de olduğu gibi, azalan benzersizlik, oran sınırlaması gibi ek önlemler gerektirir.

## Algoritma
TOTP kimlik doğrulaması oluşturmak için kimliği doğrulanacak taraf ve kimlik doğrulayıcı hem HOTP parametrelerini hem de aşağıdaki TOTP parametrelerini önceden belirlemelidir:

* *T<sub>0</sub>,* zaman adımlarını saymaya başlamak için kullanılan Unix zamanı (varsayılan 0'dır)
* *T<sub>x</sub>,* sayaç CT değerini hesaplamak için kullanılacak bir zaman aralığı (varsayılan 30 saniyedir)

Hem kimlik doğrulayıcı hem de kimliği doğrulanacak taraf, TOTP değerini hesaplar, ardından kimlik doğrulayıcı, kimliği doğrulanacak tarafından sağlanan TOTP değeriyle, yerel olarak üretilen TOTP değerinin aynı olup olmadığını kontrol eder. Bazı kimlik doğrulayıcılar, saatteki sapma, ağ gecikmesi veya kullanıcı gecikmelerinin hesaba katılması için mevcut saatten önce veya sonra üretilmiş olması gereken değerlere izin verir.

### TOTP değeri
TOTP, HOTP algoritmasını kullanarak sayacı geçerli zamana göre azalan olmayan bir değerle değiştirir.

: TOTP &thinsp; değer (*K*) = HOTP &thinsp; değer (*K*, *C<sub>T</sub>*)

Zaman sayacı, *C<sub>T</sub>,* tam sayı cinsinden olacak şekilde süre sayar. *T<sub>x</sub>,* Unix zaman, *T*'yi temel alan bir değerdir. *T*0 bir Unix dönemidir (epoch). Diğer değerler, tam sayı saniye cinsindendir.

:C_T = \left\lfloor\frac{T - T_0}{T_X}\right\rfloor,

Unix zamanının, özellikle artık saniye UTC'ye eklendiği durumlar başta olmak üzere, monotonik olmadığını unutmayın.

## Pratik düşünceler
Kimlik doğrulama işlemlerinin çalışması için kimliği doğrulanacak taraf ve kimlik doğrulayıcının saatlerinin kabaca senkronize edilmesi gerekir (kimlik doğrulayıcı tipik olarak kimliği doğrulanacak kişinin zaman bilgisinden ± 1 zaman aralığında farklılık gösteren zaman bilgisiyle oluşturulan tek seferlik parolaları kabul eder).

## Zayıf yönleri ve güvenlik açıkları
TOTP değerleri, diğer parolaların çalınabildiği gibi çalınabilir. Ancak, saldırganların kimlik bilgilerini sonradan toplamak yerine, gerçek zamanlı olarak vekil sunucuya ihtiyaçları vardır.

Oturum açma girişimlerini sınırlamayan uygulamalar, değerlerin kaba kuvvet yöntemiyle çalınmasına açık kapı bırakır.

Paylaşılan bilgiyi çalan bir saldırgan, ilerisi için yeni ve geçerli bir TOTP değeri üretebilir. Saldırgan büyük bir kimlik doğrulama veritabanını ihlal ederse, bu ciddi bir problem olabilir.

TOTP aygıtlarının pillerinin tükenmesi, senkronizasyonun bozulmasına neden olabileceği veya TOTP yazılımlarının bulunduğu telefonların çalınma ya da kaybolabilme durumu olabileceği için, tüm gerçek dünyadaki uygulamaların korumayı atlatma/iptal etme yöntemleri vardır (örneğin: basılı kodlar, e-posta sıfırlama yöntemi vs.). Bu, hatırı sayılır bir destek yüküne neden olabilir ve sahte kullanıcılara yararlanabilecekleri ek yollar sunar.

TOTP değerleri ekranda gösterdikleri süreden daha uzun süre geçerlidir (genellikle iki katı). Bu, kimliği doğrulayan ve kimliği doğrulanacak tarafların saatlerinin arasında büyük bir fark olabileceği durumlar için bir imtiyazdır.

Tüm tek seferlik parola tabanlı kimlik doğrulama şemaları (diğerlerinin yanı sıra TOTP ve HOTP dahil olmak üzere), yine de ele geçirilebilir, yani bir saldırgan, oturum açtıktan sonra kullanıcının oturumunu yönetebilir.

## Tarihçe
Endüstri destekli bir standart oluşturmak için birkaç OATH üyesinin işbirliği ile bir TOTP taslağı geliştirilmiştir. Bu standart, etkinlik tabanlı tek seferlik standart HOTP'yi tamamlar ve son kullanıcı kurum ve kuruluşlarına uygulama gereksinimlerine ve güvenlik yönergelerine en uygun teknolojileri seçmede daha fazla seçenek sunar. 2008 yılında, OATH, şartnamenin taslak bir versiyonunu IETF'ye sunmuştur. Bu sürüm, yazarların IETF'ye sunulan önceki sürümlere dayanarak teknik topluluktan aldığı tüm geri bildirimleri ve yorumları içerir.  Mayıs 2011'de, TOTP resmen RFC 6238 standardı olmuştur.

## Kaynakça

## Dış bağlantılar

* Jupyter Not Defteri'nde adım adım Python uygulaması