Was ist Zweifaktor Authentifizierung?
Workflow
Demo
Sicherheitsüberlegungen
Max Maischein
DZ BANK Frankfurt
Deutsche Zentralgenossenschaftsbank
Informationsmanagement TxB
Wer darf zugreifen?
Jeder
Passwörter
Zertifikate
...
Wissen (Passwort)
Haben (Gegenstand)
Sein (Fingerabdruck)
Keyboard Sniffer
Passwortweitergabe
Monatlicher Passwortwechsel
Einmalkennwörter
Bequemer: Automatischer Wechsel
Echtes One Time Pad ("iTan")
Zweiter Kanal (SMS auf Handy, "mTan")
Zugangscode dynamisch generieren (RSA Token, Battle.Net Authenticator (WoW), ...)
Programm im Handy als Token ("Soft-Token")
Initiative for Open Authentication
TOTP Algorithmus, RFC 6238
Keine Netzwerkverbindung benötigt
"Google Authenticator" im Google Play Store
Auch für iGeräte verfügbar
http://www.dynalogin.org - kompatible Alternative
UTC Zeit ist gleich rund um die Welt
Secret + UTC = Zugangscode
UTC Zeit ist gleich rund um die Welt
Secret + UTC = Zugangscode
UTC Zeit ist gleich rund um die Welt
Secret + UTC = Zugangscode
UTC Zeit ist gleich rund um die Welt
Secret + UTC = Zugangscode
Secret ist äquivalent zum Zugangscode!
Anmelden mit Passwort
Setup der Zwei-Faktor Anmeldung
... Später mal ...
Anmelden mit Passwort UND Handy
Setup muss einfach sein
Manuelle Eingabe des Shared Secret
Lange base32 strings (RFC 3548)
Beispiel: oyztamdsmjtwymtr
Setup muss einfach sein
Manuelle Eingabe des Shared Secret
Besser mit QRCode
Besser mit QRCode
CPAN hat da was.
1: # Secret pro Nutzer 2: my $auth = Auth::GoogleAuthenticator->new( 3: secret => 'test@example.com' 4: );
1: # Secret pro Nutzer 2: my $auth = Auth::GoogleAuthenticator->new( 3: secret => 'test@example.com' 4: ); 5: print "Registration key " . $auth->registration_key() . "\n";
1: # Secret pro Nutzer 2: my $auth = Auth::GoogleAuthenticator->new( 3: secret => 'test@example.com' 4: ); 5: print "Registration key " . $auth->registration_key() . "\n"; 6: print "Expected OTP value " . $auth->totp() . "\n";
1: # Secret pro Nutzer 2: my $auth = Auth::GoogleAuthenticator->new( 3: secret => 'test@example.com' 4: ); 5: print "Registration key " . $auth->registration_key() . "\n"; 6: print "Expected OTP value " . $auth->totp() . "\n"; 7: 8: my $verified = $auth->verify( $user_input ) 9: ? 'verified' 10: : 'not verified'; 11: print "$verified\n";
1: ->registration_url( $label, $type )
Erzeugt die otpauth://
URL
1: ->registration_url( "test2 <OTP>" )
Erzeugt die otpauth://
URL
1: my $au=Auth::GoogleAuthenticator->new( 2: secret=>'test@example.com' 3: ); 4: print $au->registration_url('test2 <OTP>')
1: ->registration_url( "test2 <OTP>" )
Erzeugt die otpauth://
URL
1: my $au=Auth::GoogleAuthenticator->new( 2: secret=>'test@example.com' 3: ); 4: print $au->registration_url('test2 <OTP>') 5: 6: otpauth://totp/test2 <OTP>?secret=orsxg5camv4gc3lqnrss4y3pnu
1: ->registration_url( "test2 <OTP>" )
Erzeugt die otpauth://
URL
1: print $au->registration_url('test2 <OTP>') 2: 3: otpauth://totp/test2 <OTP>?secret=orsxg5camv4gc3lqnrss4y3pnu
Secret ist Passwort-äquivalent
Hashing nicht möglich
RFC 6238 hat keine Umgangshinweise für das Secret
Secret-Wechsel ist leicht
Immer zweiten Mechanismus (gehashtes Passwort)
Zeitlimit für Zweifaktor-Sessions
1: Kennwort TOTP 2-Faktor
1: Kennwort TOTP 2-Faktor 2: 3: Austausch
1: Kennwort TOTP 2-Faktor 2: 3: Austausch Mittel
1: Kennwort TOTP 2-Faktor 2: 3: Austausch Mittel Leicht
1: Kennwort TOTP 2-Faktor 2: 3: Austausch Mittel Leicht Leicht
1: Kennwort TOTP 2-Faktor 2: 3: Austausch Mittel Leicht Leicht 4: 5: 6: Datenleck
1: Kennwort TOTP 2-Faktor 2: 3: Austausch Mittel Leicht Leicht 4: 5: 6: Datenleck Schwer 7: (bcrypt)
1: Kennwort TOTP 2-Faktor 2: 3: Austausch Mittel Leicht Leicht 4: 5: 6: Datenleck Schwer Leicht 7: (bcrypt)
1: Kennwort TOTP 2-Faktor 2: 3: Austausch Mittel Leicht Leicht 4: 5: 6: Datenleck Schwer Leicht Schwer 7: (bcrypt)
Google - "Kennwort-Protokolle" (IMAP, POP3, ...) umgehen Zwei-Faktor
EverNote - Direkte Links zu Daten umgehen Zwei-Faktor
...
Alles umrüsten (Google!)
Kennwortreset bzw. Handyverlust?!
Ansatz: 3 Master-Reset Kennwörter ausdrucken (PUK)
Auth::GoogleAuthenticator verwendet
Authen::OATH
Imager::QRCode
Dancer
"Google Authenticator" im Google Play Store
http://code.google.com/p/google-authenticator/
Auch für iGeräte verfügbar
Der Beispielcode ist online auf CPAN in
Auth::GoogleAuthenticator
http://www.dynalogin.org - noch ein Android Soft-Token
"Google Authenticator" im Google Play Store
http://code.google.com/p/google-authenticator/
Auch für iGeräte verfügbar
Der Beispielcode ist online auf CPAN in
Auth::GoogleAuthenticator
http://www.dynalogin.org - noch ein Android Soft-Token
Fragen?
Max Maischein (corion@cpan.org
)