O.Auth 3

Aus d.hack

Beschreibung

Jeder Authentifizierungsvorgang des Nutzers MUSS in Form einer Zwei-Faktor-Authentifizierung umgesetzt werden.

Kurzfassung

Zwei-Faktor-Authentifizierung.

Anmerkungen

Prüftiefe


EXAMINE


Der Evaluator prüft durch Quelltextanalyse und praktische Tests das Vorhandensein der Zwei-Faktor-Authentifizierung. Insbesondere prüft er, ob die verwendeten Faktoren aus unterschiedlichen Kategorien stammen (Wissen, Besitz, Inhärenz).

Lösungsansätze

Entwicklerseitig

Funktion
2FA (Zwei-Faktor-Authentifizierung) ist eine zusätzliche Schranke beim Login in Diensten. Typischerweise besteht diese aus zwei verschiedenen Kategorien wie Wissen (Passwort) und Besitz (Mobilfunkgerät oder Email) oder Biometrie (Fingerabdruck)[1].

Ein minimalistisches Beispiel einer SMS-Authentifizierung mit einem Einmalpin könnte dabei folgendermaßen aussehen:

// Funktion zur Generierung eines zufälligen 6-stelligen Einmalpasscodes
function generateOTP() {
    return str_pad(rand(0, 999999), 6, '0', STR_PAD_LEFT);
}

// Funktion zum Versenden eines Einmalpasscodes per SMS
function sendOTP($phoneNumber, $otp) {
    // Hier müsste die Integration mit einem SMS-Dienst wie Twilio erfolgen
    // Beispiel: Twilio API-Aufruf zum Versenden einer SMS
    // replace SID, Token, and Twilio phone number with your actual values
    $twilio_sid = 'your_twilio_sid';
    $twilio_token = 'your_twilio_token';
    $twilio_phone_number = 'your_twilio_phone_number';
    $client = new Twilio\Rest\Client($twilio_sid, $twilio_token);
    $client->messages->create(
        $phoneNumber,
        array(
            'from' => $twilio_phone_number,
            'body' => "Your OTP is: $otp"
        )
    );
}

// Beispielaufruf der Funktionen für die 2FA-Authentifizierung
$phoneNumber = '+1234567890'; // Beispiel-Telefonnummer des Benutzers
$otp = generateOTP(); // Einmalpasscode generieren
sendOTP($phoneNumber, $otp); // Einmalpasscode per SMS senden

// Hier müsste der Benutzer aufgefordert werden, den empfangenen Einmalpasscode einzugeben und zu überprüfen

Um 2FA-Funktionalität zu ermöglichen sind bereits einige Frameworks im Umlauf.

Framework Sprache
Authy PHP, Python, Ruby, Node.js, Java
Google Authenticator PHP, Python, Java, JavaScript
Duo Security Python, Java, JavaScript, .NET
AuthO PHP, Python, Java, JavaScript, .NET, Node.js

Quellen

BSI: Zwei-Faktor-Authentifizierung BSI: Zwei-Faktor-Authentifizierung, aufgerufen am 02.05.2024

Weiterführende Literatur

Christian Senk, et al.: Starke Authentifizierung für den sicheren Zugriff auf IT-Ressourcen in Föderationen Christian Senk, Dieter Bartmann: Starke Authentifizierung für den sicheren Zugriff auf IT-Ressourcen in Föderationen, 2011, aufgerufen am 02.05.2024

Wonsuk Choi, et al.: Sound-Proximity: 2-Factor Authentication against Relay Attack on Passive Keyless Entry and Start System Wonsuk Choi, Minhye Seo, and Dong Hoon Lee: Sound-Proximity: 2-Factor Authentication against Relay Attack on Passive Keyless Entry and Start System, 2018, aufgerufen am 02.05.2024