![]() |
Passworte: eierlegende Wollmilchsau gesucht
Ich habe bisher in meiner simplen Passwortverwaltung intern eingebaute, feste User/Passwortkombinationen eingesetzt, damit unser Servicepersonal sich jederzeit in interne Formulare einloggen kann.
Für die normalen Benutzer habe ich eine einfache Passworttabelle, in der User mit Zugriffsrechten eingetragen sind. Es geht auch nicht um irgendwelche kritischen Prozesse oder Daten. Es handelt sich um Industriemaschinen, bei denen halt der einfache Anlagenbediener nicht an allen Einstellungen rumfummeln soll. Leider kommt es bei der Inbetriebnahme durch unser Personal öfter (zu oft) vor, daß die Anlagenbediener die intern einprogrammierten Passworte mitbekommen. Jetzt will/soll ich da etwas umstricken, um die internen Passwörter zu ersetzen. Es soll aber möglichst simpel bleiben, dem Servicepersonal Zugriff zu erhalten. Hat jemand eine geniale Idee? |
AW: Passworte: eierlegende Wollmilchsau gesucht
Im normal fall würde ich sagen per Datenbank den gespeicherten Hash mit eingegebener Name/Passwort Kombination auf Gleichheit prüfen.
Für Hardkodiertes gibt es meines Wissens nach nichts "sicheres", da kann man nur generelle Zugriffe erlauben oder halt nicht, aber es ist nicht Personenbezogen (was bei einer Datenbank der Fall wäre). // edit Eine Überlegung: In deiner App Gruppen-Richtlinien festlegen (anstelle von Username) Eine Externe Datei mit Hashes für die Richtlinien generieren (anstelle von Passwort) Auf diese Weise kann man simpel die Anmeldungspasswörter jederzeit austauschen (am besten mit einem Generator.exe was nur admins starten dürfen) Also "Generator.exe" stellt einem eine simple GUI mit Feldern für die vergabe von Passwörter für die Richtlinien bereit Generator speichert den Hash vom den Richtliniennamen + Passwörtern in einer Datei (ini, xml, json etc... oder binär) Deine App.exe vergleicht in deiner Login Methode nun nur noch das Eingebene (Hash generieren) mit dem was in der Datei (ini, xml, json etc) steht, bei Gleichheit setze deine Richtlinien für diese Session und lasse den User rein :-D |
AW: Passworte: eierlegende Wollmilchsau gesucht
Zitat:
Oder soll es eine reine Softwarelösung bleiben ? Dann wird es schwierig. Ich mache da gerne einfach 6-stellige PIN-Code-Eingabe, die der Bedienende gut vor anderen abschirmen und schneller eingeben kann. Ist aber am Ende genauso sicher oder unsicher wie Passworteingabe. |
AW: Passworte: eierlegende Wollmilchsau gesucht
Für die Anmeldung mit erweiterten Rechten wird jedes mal eine zufällige Ziffernfolge generiert und angezeigt (auch zusätzlich als QR-Code).
Aus dieser Ziffernfolge wird nach einem geheimen Algo ein Passwort generiert, das einzugeben ist. Der Servicemitarbeiter hat eine App auf dem Handy, dass den QR-Code scannt (oder die Ziffernfolge wird eingegeben) und das Passwort berechnet und anzeigt. |
AW: Passworte: eierlegende Wollmilchsau gesucht
Zitat:
Ich habe mal sowas ähnliches, ohne App, mit Hash-Codes gemacht, mit fester Länge 4-6 Ziffern. Wenn der TE dafür die App bereitstelt ( natürlich mit FMX :stupid: ) dann könnte das gut klappen. |
AW: Passworte: eierlegende Wollmilchsau gesucht
Für sowas gibt es T-OTP. Time-based One-Time-Passwords (oder auch: Einmalkennwort
![]() Sind genau die gleichen Dinger, die auch durch alle gängigen Authenticator-Apps (Google Authenticator, Microsoft Authenticator etc.) unterstützt werden. Die Funktionsweise ist easy: In der Anwendung ist ein Geheimnis hinterlegt (so wie aktuell das Passwort). Das gleiche Geheimnis ist auch in der Authenticator-App hinterlegt. Basierend auf dem Geheimnis und der aktuellen Uhrzeit wird in der Authenticator-App ein 6-Stelliger Code generiert. Der wird in die Anwendung eingegeben. Dort wird der Code auch mit dem gleichen Algorithmus berechnet, und wenn der übereinstimmt ist der User drin. Da gibts auch ne Implementierung für Delphi: ![]() Eure Mitarbeiter bekommen also einfach den Code aufs Handy in der Authenticator-App und können sich die Passwörter bei Bedarf generieren. Der Kunde kommt nicht rein solange er nicht das Geheimnis aus der .exe extrahiert. Bei Bedarf könnt ihr auch pro Kunde ein separates Geheimnis generieren und dann hat der Mitarbeiter eben mehrere Einträge in der Authenticator-App. |
AW: Passworte: eierlegende Wollmilchsau gesucht
OTPs sind klasse an der Stelle. Du kannst sowas serverbasiert machen, wenn Du einfach nur allen Serviceleuten eine kleine Handyapp geben willst, damit die alle das gleiche Passwort zu jedem Zeitpunkt angezeigt bekommen. Willst Du es User-Basiert machen, dann baust es halt basierend auf den User-Daten und das Programm generiertdas OTP und die HandyApp generiert mit den gleichen Start-Daten das gleiche OTP
|
AW: Passworte: eierlegende Wollmilchsau gesucht
OTP ist das einzig halbwegs sichere, was mir dazu einfällt (wobei es mir erst einfiel, als Phoenix es erwähnte). Ich habe auch schon Delphi-Code dafür irgendwo gesehen. Die App für's Handy wäre eine Standard-App z.B. der Google Authenticator oder wenn's was freies sein darf FreeOTP.
|
AW: Passworte: eierlegende Wollmilchsau gesucht
Wenn es simpel bleiben soll dann das Normale Passwort mit aktuellem Datum kombinieren.
Zum Beispiel Tag + Passwort Teil 1 + Monat + Passwort Teil 2 + Jahr. Oder Das Datum mit fixen Zahlen kombinieren damit das nicht als Datum erkannt wird. |
AW: Passworte: eierlegende Wollmilchsau gesucht
Fido2 und WebAuthn könnten hier auch ins Spiel gebracht werden.
Ich hab mal kleinere Projekte mit dem Webauthn interface von Microsoft bzw. auch die Fido2.dll von Yubico gemacht.. check ![]() |
AW: Passworte: eierlegende Wollmilchsau gesucht
in den Beispielen von cnpack findet man ebenfalls ein OTP-Beispiel ähnlich dem von Phoenix
![]() |
AW: Passworte: eierlegende Wollmilchsau gesucht
TOTP mit Timestamp ist eine schöne Idee, das stimmt.
Ich gehe aber davon das die "Anlage" nicht unbedingt am Netz hängt oder sonstwie eine genaue Zeit bekommt. Wie ist in dem TOTP-Standard denn die "Genauigkeit" der Uhrzeit/Datum definiert ? Ich vermute mal die Uhrzeit kann in einem freilaufenden Windows mal ziemlich abweichen, ich habe sowas hier schon gesehen aber nie getestet. |
AW: Passworte: eierlegende Wollmilchsau gesucht
Zitat:
![]() dann in einen QR Code gesteckt werden und der wiederum kann von den Authenticator Apps (goolge oder Microsoft) gelesen werden. Die Periode lässt sich im URL angeben - Standard ist 30 Sekunden - und soweit ich gesehen habe machen das so ziemlich alle so. Ausserdem kann man die Anzahl der Digits angeben - Standard ist 6 - auch hier sollte nicht unbedingt am Standard gerüttelt werden. Diese Periode gibt eigentlich nur an in welchem Inervall sich der Code ändert. Clientseitig kannst du noch definieren welchen "Overlap" du zulässt. Wir erlauben da ein Window von +- 2min . D.h ein Code ist schlimmstenfalls 5 minuten gültig. Und... zu beachten gilt noch, dass die Authenticator aps die UTC time zone verwenden ;) Wenn es jemanden interessiert kann ich einen Teil unseres Sourcodes beisteuern. Er hat allerdings einige 3rd Party Abhängigkeiten (DEC, Indy, Dec, ZXingQR), die noch hinzugefügt werden müssten. |
AW: Passworte: eierlegende Wollmilchsau gesucht
Ja danke für die Links, da gibt es auch
![]() Die Frage bleibt bei mir aber offen, was wenn kein Internet und Anlage und Handy komplett andere Datetime gesetzt haben ( Offline-Betrieb ). Z.B. Anlage 11.06.22 14:00 und Handy 12.08.22 17:00 Ich habe das TOTP nicht im Detail gecheckt, aber ich bin aber immer davon ausgegangen das ein Timeserver oder zumindest eine einigermaßen verlässliche, gemeinsame Uhrzeit vorhanden sein muss. ![]() Vermutlich kann man dann nur noch HOTP mit einem Zähler benutzen, was aber auch Nachteile hat. Eine Idee wäre der URI einfach die aktuelle Datetime der Anlage mitzusenden, welche dann der Authenticator nutzen kann. Ich vermute mal mit der offenen Parameterbeschreibung wäre es möglich weitere, kundenspezifische Parameter anzuhängen. Oder braucht das Handy zum Entschlüsseln die Datetime gar nicht zu wissen ? |
AW: Passworte: eierlegende Wollmilchsau gesucht
TOTP ist ja Zeitbasiert und naja es ist ja das Ziel den SHA-1 hash mit key und counter zu errechnen wobei counter
Zeitbasiert ist - konkret die Unix UTC Zeit modulo der Periode. Die "Windowsize" ist ja dazu da um nicht ganz gleich laufende Systeme zu unterstützen aber bei Stunden wenn nicht Tagen macht das Verfahren ja wenig Sinn. Also entweder den counter selbst immer um eins hochzählen wenn die Eingabe gemacht wurde oder evt. noch besser: Einen Fido Key nehmen ;) das ist grad das so ziemlich Sicherste was es gibt. Das Funktioniert dann auch ganz ohne Passwort bzw. man muss es nur beim Erstellen angeben wenn gewünscht -> also einstecken, draufdrücken, fertig |
AW: Passworte: eierlegende Wollmilchsau gesucht
Dann kann aber auch ein böser Junge*innen einfach "irgendeine" Zeit mitgeben ... vorzugsweise Die, von der er den Code bereits kennt. :angle2:
Das ist ja grade der Grund, warum dafür eine externe, nicht beeinflussbare, Zeit verwendet wird. Andersrum ginge es, also die Authentificator-App bekommt die Zeit vom Server (nicht der Server die Zeit von der App), so lange man den Server als sicher betrachten kann. Wenn dein Rechner also kein "Internet" hat, dann gib ihm doch einfach eine andere Uhr? DCF77 |
AW: Passworte: eierlegende Wollmilchsau gesucht
Zitat:
Soweit ich weiß hat schon Albert Einstein an dem Problem gearbeitet, als er noch im Patentamt bechäftigt war, und hat wohl auch keine Lösung gefunden :stupid: Mein Projekt war z.B. eines mit einem kleinen 32-Bit Controller, ohne Wifi, ohne RTC, ohne großes Display ( nur kleines TN ), ohne sonstwas. Da muss man halt etwas tricksen, was dann natürlich nicht 100% sicher sein muss. Da habe ich mit einem OTP-Pool an PIN-Codes gearbeitet, die natürlich irgendwann mal aufgebraucht sein können, aber auch nur extrem selten benötigt werden. So habe ich auch die Aufgabe von dem den TN verstanden, nur ein paar vorwitzige Bediener abhalten. |
AW: Passworte: eierlegende Wollmilchsau gesucht
Probier mal:
![]() Die Seite zeigt recht schön was mit Webauthn/Fido2 so möglich ist -> die API sind nur ein paar Funktionsaufrufe. Wie gesagt... man braucht da halt nen Fido Key ;) |
AW: Passworte: eierlegende Wollmilchsau gesucht
Zitat:
|
AW: Passworte: eierlegende Wollmilchsau gesucht
![]() oder User Presence (also drücken des Keys) benutzt werden können. Also ein Pin reicht prinzipiell bzw. auch ein einfaches drücken. WebAuthn ist ja eigentlich auch fürs Web konzipiert und auch in allen aktuellen Browsern implementiert (über die Webauthn.dll). Das Ding ist nur... wenn die Zeit nicht aktuell ist, dann wird er auch kein Internet haben ;) also in diesem Fall muss ein Techniker vor Ort sein. |
AW: Passworte: eierlegende Wollmilchsau gesucht
Hmm...
Wenn die Uhrzeiten nicht übereinstimmen, kann es eigentlich nicht funktionieren (TOTP) und Webbasierende Authendkeys gehen wegen fehlendem Internet nicht. Alternativ kannst Du Dir deine eigene, angepasste TOTP KeyGen-Routine erstellen, bei der nicht die Uhrzeit des lokalen Systems genommen wird, sondern eine übergebene. Der Techniker muss dann in der HandyApp neben dem OQ-Code z.B. eine zusätzlich angezeigte Uhrzeit mit angeben, welche dann für den KeyGen verwendet wird, oder dein QRCode enthält zusätzlich die Uhrzeit zum Einscannen mit der Handy-App. Da beide Seiten (Maschinen und Handy-App) von Dir kommen, kannst Du hier ja beliebig erweitern. Kannst dann zwar keine fertigen Tools für TOTP verwenden, aber die Implementierung in Delphi und deiner App ist simpel und kannst Du als Source im Netz finden. |
AW: Passworte: eierlegende Wollmilchsau gesucht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz