O.Auth 3
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:
// JavaScript
// 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