Seite 1 von 1

User Authentication

Verfasst: Dienstag 17. März 2015, 16:31
von lackschuh
Hallo

Aufbau:
Mein RPi ist mit einem WLAN verbunden, welches nicht auf das LAN zugreifen kann. Per NAT ist der Port 443 auf die interne IP des RPi weitergeleitet. Als Webserver habe ich ein SSL-ChrryPy (über BuiltinSSLAdapter) laufen und per Openssl mir die Zertifikate selbst erstellt. Als Web-Rahmenwerk dient mir bottle. Bis jetzt habe ich eine sqlite3 Datenbank, in welcher das Passwort als SHA-224 Hash steht. Ab hier beginnen meine Zweifel, denn...
...der User ``DasIch`` sagt in diesem Beitrag (http://www.python-forum.de/viewtopic.ph ... in#p266584), dass PWs „weder im plaintext, noch verschlüsselt“ in einer DB stehen dürfen.

Code: Alles auswählen

import hashlib
from passlib.hash import sha256_crypt
from passlib.context import CryptContext

# So, wie es zZ. ist
pw = hashlib.sha224('lackschuh').hexdigest()
print pw == pw


pw_hash = sha256_crypt.encrypt("lackschuh")
print sha256_crypt.verify('lackschuh', pw_hash)

# So, wie es sein sollte?
myctx = CryptContext(schemes=["sha256_crypt", "md5_crypt", "des_crypt"])
#hash1 = myctx.encrypt("lackschuh")
#print hash1
hash1 = '$5$rounds=110000$COypvqzGtFKXjBXq$mmnvlDsxrxiiwCfwMo2PEvHriNGt.6E9FRRLKsUJKF6'
print myctx.verify("lackschuh", hash1)
Speichere ich nun einfach den Salt – im obigen Fall die hash1 Zeichenkette und prüfe dann auf True, False?

Als Alternative hätte ich mir noch gedacht, mittels den Modulen ``spwd``, ``pwd`` und ``crypt`` die zuvor auf dem RPi angelegten User ohne root-Rechten auslesen zu lassen und das PW mit dem PW request vom Webinterface zu vergleichen. So würde ich mir die sqlite DB sparen.
Was ist da eher weiterzuverfolgen bzw. was sind die Nachteile?

Also mir geht es nicht um NSA sichere Anwendung, sondern eher ums Thema Sicherheit allgemein. (..zugegeben auch um Bequemlichkeit)

Re: User Authentication

Verfasst: Dienstag 17. März 2015, 16:42
von BlackJack
@lackschuh: Wenn in der DB ein Hash steht dann ist das ja weder das Password im Klartext noch verschlüsselt.

Re: User Authentication

Verfasst: Dienstag 17. März 2015, 16:48
von lackschuh
@BlackJack
Ist das nun gut, schlecht oder egal?

Und das Auslesen der "Unix shadow password database" ist das Blödsinn, welcher ich besser gleich wieder vergessen soll, oder wäre dies eine Alternative? Ich rechne ja nicht damit, dass ich bzw. die Seite attackiert werde (wobei ausschließen will ich es auch nicht)

Re: User Authentication

Verfasst: Freitag 20. März 2015, 23:39
von Leonidas
lackschuh hat geschrieben:@BlackJack
Ist das nun gut, schlecht oder egal?
Das ist an sich gut, aber nicht genug an sich. Denn wenn es gehasht ist kann man immer noch die Rückrichtung mittels Rainbow-Tables nachschlagen. Da würden sich eher Key-Derivation-Funktionen wie PBKDF2, bcrypt oder scrypt anbieten.