i

Passwörter - Theorie und Praxis

Time-based One-time Password (TOTP)

In tatsächlichen Anwendungen wird das im vorletzten Abschnitt beschriebene zählerbasierte HOTP-Verfahren abgewandelt, in dem vor dem Bilden des HMAC-Hashwertes statt des Zählers einfach der Zeitstempel aus dem letzten Abschnitt angehängt wird.

Damit erhält man das so genannte Time-based One-time Password (TOTP) Verfahren, indem man das im vorletzten Abschnit behandelte Python-Programm wei folgt um um die (einzeilige) Funktion totp ergänzt:

import hashlib, array, base64, hmac, time

def hotp(secret, counter, digits=6):
    # Umkodierung secretvon utf-8 in base32
    base32_secret = base64.b32decode(bytes(secret, 'utf-8'))
    # Kodierung von counter in bytes
    byte_counter = counter_2_bytes(counter)
    # Bilde hmac-Hashwert
    hmac_sha1 = hmac.new(base32_secret, byte_counter, hashlib.sha1).hexdigest()
    # Extrahiere aus hmac-Hashwert ein Integerwert
    # und gebe dessen letzte <digts> Stellen zurueck
    return hmac_2_digits(hmac_sha1)[-digits:]

def counter_2_bytes(counter):
    byte_counter = array.array('B')
    for i in reversed(range(0, 8)):
        byte_counter.insert(0, counter & 0xff)
        counter >>= 8
    return byte_counter

def hmac_2_digits(hmac_sha1):
    offset = int(hmac_sha1[-1], 16)
    binary = int(hmac_sha1[(offset * 2):((offset * 2) + 8)], 16) & 0x7fffffff
    return str(binary)

def totp(secret):
    return hotp(secret, int(time.time())//30, 6)

# TOTP
secret='MZXW633PN5XW6MZX'
print( totp(secret) )

Aufgabe 1

Erzeuge mit dem obigen Python-Programm ein gültiges TOTP und kontrolliere es mittels App auf einem Mobiltelefon.

Dazu kannst du wie bereits weiter oben erwähnt die kostenlose App FreeOTP (Android, iPhone) verwenden. Unter Android kannst du auch die ebenfalls kostenlose App andOTP verwenden. Beide Apps findest du auch im F-Droid-Appstore.

Aufgabe 2

Finde heraus, was in dem folgenden QR-Code kodiert ist: QR-Code HOTP

Aufgabe 3

Warum lassen durch eine Angreiferin abgefangene TOTP keinen Rückschlüsse auf das Geheimnis zu?

Suche

v
5.3.6.4
schuljahr.inf-schule.de/aktuell/gesellschaft/passwoerter_theorie_und_praxis/zweifaktor_authentifizierung/time_based_one_time_passwords_totp
schuljahr.inf-schule.de/aktuell/5.3.6.4

Rückmeldung geben