Toolypet
Zurück zum Blog
Security

Vollstaendiger 2FA-Leitfaden - TOTP, SMS, Hardware-Schluessel Vergleich und Implementierung

Arten und Sicherheitsstufen der Zwei-Faktor-Authentifizierung (2FA). Vor- und Nachteile von TOTP-Apps, SMS und Hardware-Schluesseln mit Implementierungsleitfaden fuer Entwickler.

Toolypet Team

Toolypet Team

Development Team

6 Min. Lesezeit

Vollstaendiger 2FA-Leitfaden: Was, Warum und Wie

Sobald Ihr Passwort geleakt ist, ist es vorbei.

Bis 2024 wurden ueber 10 Milliarden Passwoerter geleakt. Egal wie stark Ihr Passwort ist, es ist machtlos gegen Datenbankverlet zungen.

2FA (Zwei-Faktor-Authentifizierung) schuetzt Ihr Konto auch wenn Ihr Passwort kompromittiert ist.


Was ist 2FA?

2FA (Two-Factor Authentication) ist Authentifizierung mit zwei Faktoren.

Die drei Authentifizierungsfaktoren

FaktorBedeutungBeispiele
WissenEtwas, das Sie wissenPasswort, PIN
BesitzEtwas, das Sie habenTelefon, Hardware-Schluessel
InhaerenzEtwas, das Sie sindFingerabdruck, Gesicht

2FA kombiniert zwei dieser Faktoren.

Passwort (Wissen) + TOTP-App (Besitz) = 2FA
PIN (Wissen) + Fingerabdruck (Inhaerenz) = 2FA

Warum es notwendig ist

AngriffstypNur PasswortMit 2FA
PhishingGebrochenVerzoegert oder blockiert
Brute ForcePotenziell gebrochenBlockiert
DB-LeakGebrochenBlockiert
Shoulder SurfingGebrochenBlockiert

Vergleich der 2FA-Typen

1. SMS-Authentifizierung

Anmeldeversuch → 6-stelligen Code auf Telefon erhalten → Code eingeben
VorteileNachteile
Keine zusaetzliche App erforderlichAnfaellig fuer SIM-Swapping
Benutzern vertrautAnfaellig fuer Phishing
Schnell zu implementierenMobilfunkverbindung erforderlich

Sicherheitsbewertung: 2/5 (Niedrig)

SMS ist anfaellig fuer SIM-Swapping-Angriffe. Wenn Angreifer den Anbieter taeuschen und Ihre SIM klonen, koennen sie SMS abfangen.

2. TOTP-Apps (Empfohlen)

Zeitbasiertes Einmalpasswort
Neuer Code alle 30 Sekunden generiert

App-Beispiele: Google Authenticator, Authy, 1Password

VorteileNachteile
Funktioniert offlineApp-Installation erforderlich
Immun gegen SIM-SwappingRisiko des Verlusts von Wiederherstellungsschluesseln
KostenlosProbleme bei Geraeteverlust

Sicherheitsbewertung: 4/5 (Hoch)

3. Hardware-Sicherheitsschluessel

Physische Authentifizierung via USB oder NFC
Beispiele: YubiKey, Google Titan Key
VorteileNachteile
Vollstaendiger Phishing-SchutzKosten ($30-70)
Staerkste SicherheitRisiko des physischen Verlusts
Einfach zu benutzenNicht von allen Diensten unterstuetzt

Sicherheitsbewertung: 5/5 (Hoechste)

4. App-Push-Authentifizierung

Anmeldeversuch → Push-Benachrichtigung an App → Genehmigen/Ablehnen
Beispiele: Microsoft Authenticator, Duo
VorteileNachteile
BequemInternet erforderlich
Phishing-resistentApp-abhaengig

Sicherheitsbewertung: 4/5 (Hoch)


Wie TOTP funktioniert

Konzept

TOTP = HMAC-SHA1(geheimer Schluessel, Zeit) → 6-stellige Zahl
  1. Server und App teilen einen geheimen Schluessel (secret)
  2. Aktuelle Zeit wird in 30-Sekunden-Intervalle unterteilt
  3. Hash wird aus geheimem Schluessel + Zeit generiert
  4. 6-stellige Zahl wird aus dem Hash extrahiert

Da Server und App dieselbe Zeit und denselben Schluessel verwenden, generieren sie denselben Code.

Was im QR-Code steht

otpauth://totp/Dienst:Konto?secret=BASE32GEHEIM&issuer=Dienst
otpauth://totp/GitHub:user@example.com?secret=JBSWY3DPEHPK3PXP&issuer=GitHub

Beim Scannen des QR-Codes speichert die App diese Informationen.


TOTP-Implementierung fuer Entwickler

Node.js-Beispiel (otplib)

const { authenticator } = require('otplib');

// 1. Geheimnis generieren (bei Benutzerregistrierung)
const secret = authenticator.generateSecret();
// "JBSWY3DPEHPK3PXP"

// 2. QR-Code-URL generieren
const otpauthUrl = authenticator.keyuri(
  'user@example.com',
  'MyApp',
  secret
);
// Bild mit QR-Bibliothek generieren

// 3. Code verifizieren (bei Anmeldung)
const userToken = "123456";  // Benutzereingabe
const isValid = authenticator.verify({ token: userToken, secret });

if (isValid) {
  console.log("Authentifizierung erfolgreich");
} else {
  console.log("Ungueltiger Code");
}

Python-Beispiel (pyotp)

import pyotp

# 1. Geheimnis generieren
secret = pyotp.random_base32()

# 2. QR-Code-URL
totp = pyotp.TOTP(secret)
url = totp.provisioning_uri(name='user@example.com', issuer_name='MyApp')

# 3. Code verifizieren
user_token = "123456"
is_valid = totp.verify(user_token)

Sicherheitsueberlegungen

// Zeitabweichung zulassen (30 Sekunden vor und nach)
authenticator.options = {
  window: 1  // -30sek bis +30sek zulassen
};

// Wiederverwendung verhindern
// Verwendete Codes speichern und Wiederverwendung blockieren
const usedCodes = new Set();

function verifyOnce(token, secret) {
  if (usedCodes.has(token)) return false;

  if (authenticator.verify({ token, secret })) {
    usedCodes.add(token);
    // Nach 60 Sekunden loeschen (Speicherverwaltung)
    setTimeout(() => usedCodes.delete(token), 60000);
    return true;
  }
  return false;
}

Wiederherstellungscode-Verwaltung

Wenn Sie 2FA verlieren, koennen Sie nicht auf Ihr Konto zugreifen. Stellen Sie immer Wiederherstellungscodes bereit.

Generierung

const crypto = require('crypto');

function generateRecoveryCodes(count = 10) {
  const codes = [];
  for (let i = 0; i < count; i++) {
    // 8 Zeichen Grossbuchstaben + Zahlen
    const code = crypto.randomBytes(4).toString('hex').toUpperCase();
    codes.push(`${code.slice(0,4)}-${code.slice(4)}`);
  }
  return codes;
}

// ["A3F8-B2C1", "D4E5-F6G7", ...]

Speicherung

// Wiederherstellungscodes vor Speicherung hashen (bcrypt empfohlen)
const bcrypt = require('bcrypt');

async function storeRecoveryCodes(codes) {
  const hashedCodes = await Promise.all(
    codes.map(code => bcrypt.hash(code, 10))
  );
  // hashedCodes in DB speichern
}

// Bei Verwendung verifizieren
async function useRecoveryCode(inputCode, hashedCodes) {
  for (const hashed of hashedCodes) {
    if (await bcrypt.compare(inputCode, hashed)) {
      // Code loeschen (einmalige Verwendung)
      return true;
    }
  }
  return false;
}

Benutzererfahrung (UX) Tipps

1. 2FA-Einrichtung foerdern

Nach erster Anmeldung: "Richten Sie 2FA ein, um Ihr Konto zu schuetzen"
Vor sensiblen Aktionen: "2FA ist fuer diese Aktion erforderlich"

2. Schritt-fuer-Schritt-Anleitung

Schritt 1: Authenticator-App installieren (Google Authenticator Link bereitstellen)
Schritt 2: QR-Code scannen
Schritt 3: Mit 6-stelligem Code bestaetigen
Schritt 4: Wiederherstellungscodes speichern (betonen!)

3. Wiederherstellungscodes betonen

Warnung: Speichern Sie diese Codes an einem sicheren Ort.
Kontowiederherstellung ist bei Verlust unmoeglich.

[ Codes herunterladen ] [ Codes kopieren ]

Haeufig gestellte Fragen

F: Sollte ich SMS-2FA komplett vermeiden?

A: Es ist schwaecher als TOTP, aber viel besser als nichts. Verwenden Sie TOTP oder Hardware-Schluessel wenn moeglich, aber wenn ein Dienst nur SMS unterstuetzt, aktivieren Sie es auf jeden Fall.

F: Was wenn ich mein Telefon mit der 2FA-App verliere?

A: Melden Sie sich mit einem Wiederherstellungscode an und setzen Sie 2FA zurueck. Deshalb muessen Sie Wiederherstellungscodes separat und sicher aufbewahren.

F: Kann ich Backup-2FA registrieren?

A: Ja, registrieren Sie mehrere Geraete fuer dasselbe Konto (wenn der Dienst dies unterstuetzt), oder scannen Sie den QR-Code bei der Ersteinrichtung gleichzeitig auf mehreren Geraeten.


Zusammenfassung

2FA-TypSicherheitKomfortEmpfehlung
SMS2/55/5Letzter Ausweg
TOTP-App4/54/5Allgemein empfohlen
Hardware-Schluessel5/53/5Hohe Sicherheit
App-Push4/55/5Unternehmenseinsatz

Verwenden Sie mindestens TOTP. Passwoerter allein sind nicht ausreichend.


Verwandte Werkzeuge

WerkzeugZweck
TOTP-Generator2FA-Codes testen
Passwort-GeneratorStarke Passwoerter
Hash-GeneratorHashing-Tests
2FAMFATOTPAuthentifizierungSicherheitEntwicklung

Über den Autor

Toolypet Team

Toolypet Team

Development Team

The Toolypet Team creates free, privacy-focused web tools for developers and designers. All tools run entirely in your browser with no data sent to servers.

Web DevelopmentCSS ToolsDeveloper ToolsSEOSecurity