AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Grundsatzüberlegungen zum Thema Speichern von Passwörtern

Grundsatzüberlegungen zum Thema Speichern von Passwörtern

Ein Thema von Codehunter · begonnen am 10. Apr 2013 · letzter Beitrag vom 16. Apr 2013
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.235 Beiträge
 
Delphi 10.4 Sydney
 
#1

Grundsatzüberlegungen zum Thema Speichern von Passwörtern

  Alt 10. Apr 2013, 14:46
Hallo!

Nachdem die SuFu zu "Passwort speichern" knapp 450 Treffer liefert und nach ca. 30 Minuten noch nichts wirklich erquickliches dabei war, will ich doch mal einen neuen Thread aufmachen.

Angenommen, ich habe ein FTP-Programm bzw. schreibe eines. Darin will man als User ja seine FTP-Accounts hinterlegen. Zu jedem Account gibt es üblicherweise ein Passwort. Dieses soll verschlüsselt in einer Datei auf dem lokalen Rechner gespeichert werden. Soweit ist das ja nichts weltbewegendes, kann jedes x-beliebige FTP-Programm.

Was mich jetzt prinzipiell wundert: Keines der mir bekannten FTP-Programme fragt mich jemals nach einer Art Masterpasswort. Daraus folgt doch eigentlich, dass die Methode zur Verschlüsselung der Passwörter mehr oder weniger hartcodiert sein muss und die Sicherheit dabei vorrangig auf "Security by Obscurity" basiert. Oder mache ich einen Denkfehler?

Nehmen wir als Beispiel mal Dreamweaver. Da liegen die ganzen FTP-Accounts als Untermenge der Site-Konfiguration in Dateien vor. Wenn man weiß wo die Dateien liegen kann man sie einfach von einem Rechner zum nächsten kopieren und das dortige Dreamweaver hat alle Daten um sich mit FTP verbinden zu können. Insofern hat man zwar nie das FTP-Passwort im Klartext aber zumindest Zugang zum Server.

WS_FTP scheint bei der Verschlüsselung etwas kleverer zu sein. Hier werden die Passwörter anscheinend mit irgendwelchen Informationen verschlüsselt, die vom jeweiligen Rechner abgeleitet werden. Kopiert man die Account-Dateien auf einen anderen Rechner funktionieren die FTP-Logins nicht mehr. Genauso, wenn man das Windows auf dem eigenen Rechner neu aufsetzt und die gebackupten Account-Dateien zurückspielt.

Beide Varianten sind für mich nicht so recht befriedigend. Erstere ist unsicher, keine Frage. Die zweite ist sicherer, sabotiert aber prinzipbedingt die Funktion von Backups für den Fall einer Windows-Neuinstallation oder Austausch von Hardwarekomponenten an deren Vorhandensein die Entschlüsselung gekoppelt ist.

Angenommen, ich möchte bei meinem Programm ebenfalls auf die Notwendigkeit eines Master-Passwortes verzichten. Welche Möglichkeiten gibt es, Passwörter halbwegs sicher zu verschlüsseln und das verschlüsselte Resultat portabel zu halten? Je mehr ich darüber nachdenke umso weniger erscheint mir das möglich, wobei ich kein Krypto-Experte bin.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.578 Beiträge
 
#2

AW: Grundsatzüberlegungen zum Thema Speichern von Passwörtern

  Alt 10. Apr 2013, 15:38
Ich habe das damals wie folgt gemacht:Base64Encode(RCxEncode(PassEdit.Text, UserEdit.Text)) Das Passwort wurde also mit dem FTP-benutzernamen verschlüsselt und gespeichert. Damit ist es natürlich so dass die gleiche Datei überall anderes ebenso funktioniert. Die Hauptfunktion war aber eben auch, die Passwörter nicht im Klartext zu speichern. Ein netter Nebeneffekt dieser Methode (also den Usernamen einzubeziehen) ist, dass identische Passwörter oft nicht identisch gespeichert werden. (Mal abgesehen von anonymous/anonymous)

So als mögliche Vorgehensweise könntest du das Passwort mit der Windows UID verschlüsseln: Wenn man den Rechner von nem Backup wiederherstellt wird diese auch wieder die gleiche sein. Auf anderen Rechnern (oder auch für andere Benutzer auf dem gleichen PC) sind diese dann nicht direkt sichtbar wenn man die Datei kopiert.
  Mit Zitat antworten Zitat
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#3

AW: Grundsatzüberlegungen zum Thema Speichern von Passwörtern

  Alt 10. Apr 2013, 15:48
Hi

die Sicherheit wird wohl hauptsächlich darauf beruhen, dass nicht autorisierte Nutzer/Prozesse keine Leserechte an der PW-Datei haben.
Wenn dem so ist, sind wir schon mal ganz weit vorn!
alles Andere - wie Verschlüsselung - dient hauptsächlich dazu, dem Administrator/Hacker den Zugriff zu verwehren; inwieweit das sinnvoll
ist, muss jeder selbst wissen; wenn jemand die Maschine gehackt hat, ist was ganz anderes faul und ein Admin ist ein Admin ist ein Admin!

bei Windows wird (glaub ich) aus den Anmeldedaten ein Accessytoken erzeugt, mit dem man einen reproduzierbaren Key für diverse Verschlüsselungsgeschichten generieren kann - aber wenn ein Angreifer die Anmeldung am System auskundschaften kann (z.B. autologin), kann er auch das Token nachbauen
will man eine (PW)-Datei an ein System binden, geht das laut Lehrbuch über TPM oder auch CPUIID / HDDID / oder für ganz Leichtgläubige über MAC-Adressen

weiterführende Literatur:

Access Tokens
Security Descriptors
Securable Objects

mfg

Geändert von mentaltec (10. Apr 2013 um 15:55 Uhr)
  Mit Zitat antworten Zitat
Mschmidt

Registriert seit: 4. Jul 2010
Ort: Berlin
62 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Grundsatzüberlegungen zum Thema Speichern von Passwörtern

  Alt 10. Apr 2013, 16:13
Nun ja - grundsaetzlich scheint mir das speichern von Kennwoertern - egal wie - ein Sicherheitsrisiko zu sein. Und irgentwie kontakariert das Speichern der Kennwoerter deren Sinn : Die Autentifizierung des Anwenders.
Ich kann mir nicht sicher sein, ob das das Kennwort vom Anwender kommt, oder von der Platte.
In meinen entwickelten Anwendungen muss daher der Anwender immer sein usr/pwd eingeben, es sei denn, ich kann die Windowsanmeldung verwenden ( sspi, etc.)
Cheers mathias
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Grundsatzüberlegungen zum Thema Speichern von Passwörtern

  Alt 10. Apr 2013, 16:43
In welcher Form das in der Datei steht, ist doch eigentlich relativ wurscht, solange nur die Personen Zugang zu ihr haben, die ihn auch haben sollen. Dazu wichtig wäre ja primär die Rechteverwaltung des Datei- und Betriebssystems.
Das hilft natürlich nichts, wenn jemand sich einfach deine Festplatte schnappt, oder von CD/Memory-Stick was anderes bootet. Aber wenn deine FTP-Daten sensibel sind, dann wirst du sicherlich auch andere sensible/persönliche Daten auf der Platte haben, ergo solltest du sowieso Systemvoll- oder zumindest Heimatverschlüsselung haben.

Aber wenn es wirklich reines FTP ist, und dein Rechner geknackt wurde, dann hilft jede Verschlüsselung des Passworts doch eh nichts. Dann haut der Cracker 'nen Netzwerkrecorder drauf und schneidet mit, welche Daten der Client an den Server schickt.² Im Protokoll ist das Passwort eh Klartext. Also sollte es eigentlich auch keine großen Sorgen bereiten, sie gleich in Klartext abzuspeichern.¹



¹) Wie ich gerade sehe, macht Filezilla genau das.
²) Gleiches, wenn jemand deine (unverschlüsselte) HDD hat. Eine gewisse Datei ersetzen, dann klappt die Windows-Authentifizierung nicht mehr, man kann sich als du einloggen, Netzwerkrecorder einschalten, und mit dem FTP-Client verbinden. Dann hat er das Passwort, egal wie clever du sonst vorgehst.


Fazit: Wenn du Sicherheit willst, musst du schon irgendwo ein Master-Passwort (oder 'ne Keyfile auf'm USB-Stick, Magnetkarte, etc.) einbringen und ein anderes Protokoll wählen. Alles andere ist nur Placebo.

Edit: Oder war FTP nur ein Beispiel und es geht gar nicht darum? Dann solltest du dir unbedingt überlegen, inwiefern ähnliche Szenarien auch bei deinem Programm möglich sind!

Geändert von implementation (10. Apr 2013 um 16:47 Uhr)
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#6

AW: Grundsatzüberlegungen zum Thema Speichern von Passwörtern

  Alt 10. Apr 2013, 18:05
Grundregel Security: Überlege dir genau vor was du dich schützen willst. Mach dir ne Liste mit möglichen Angreifern und möglichen Angriffsszenarien [1]. Wenn du die Liste hast, kannst du dir überlegen, wogegen du dich überhaupt schützen kannst (wenn jemand die Festplatte klaut, kannst du als FTP-programm nicht viel dagegen tun. Das Mittel dagegen ist die Platte zu verschlüsseln. Aber das ist nicht Aufgabe eines FTP-Programms, also weiter... So in der Art. Damit kannst du dir dann ein sinnvolles Sicherheitskonzept ausarbeiten [2].

Kurz aus dem Bauch heraus: Nein, ohne eine Form von Masterpasswort wirst du nicht wirklich sicherer sein, als mit ner einfachen Verschleierung. Prinzipbedingt nicht.

mfg

Christian

[1] Man kann das auch noch systematischer machen. Attack Trees, FMECA, ... Im einfachsten Fall reicht aber auch ne Liste.
[2] Das hört sich jetzt einfach an, ist es aber leider nicht.
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Grundsatzüberlegungen zum Thema Speichern von Passwörtern

  Alt 10. Apr 2013, 18:26
Zitat:
Was mich jetzt prinzipiell wundert: Keines der mir bekannten FTP-Programme fragt mich jemals nach einer Art Masterpasswort. Daraus folgt doch eigentlich, dass die Methode zur Verschlüsselung der Passwörter mehr oder weniger hartcodiert sein muss und die Sicherheit dabei vorrangig auf "Security by Obscurity" basiert. Oder mache ich einen Denkfehler?
Nö da denkst du völlig richtig. Ich nutze FlashFXP das fragt auch nie nach einem PW. Die Accountdaten liegen zwar verschlüsselt in der Sites.dat wobei das nicht wirklich ein Hindernis darstellt. Diverse units zum endschlüsseln findest du dazu im Inet für Delphi. Sicherheit sieht wohl anders aus
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.235 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Grundsatzüberlegungen zum Thema Speichern von Passwörtern

  Alt 11. Apr 2013, 10:53
Die größte Sicherheitslücke ist immer der menschliche Faktor. Vermutlich kommt man doch inzwischen an die Grenzen des menschlich Machbaren. Man soll überall ein anderes, möglichst kompliziertes Passwort verwenden und dieses dann nirgendwo speichern oder aufschreiben. Bedenkt man die schiere Masse der Logins, mit denen man im IT-Alltag zu tun hat, dann ist das eigentlich gar nicht machbar. Wenn dann noch jemand auf die Idee kommt, Komplexitätsregeln und Wechselzyklen zu verlangen (z.B. die Standardeinstellung beim Windows Server 2008) dann ist man endgültig außerhalb des Beherrschbaren. Also braucht man technische Hilfsmittel, um Zugangsdaten zu verwalten.

Ich bin zwar grundsätzlich über den Anwendungsfall FTP auf das Problem aufmerksam geworden aber im Grunde betrifft es ja jede Art von Programm, dass seinerseits mehrere Logins anderer Dienste verwaltet.

FTP ist sicherlich ein ungünstiges Beispiel, da wie schon richtig bemerkt das Passwort im Klartext an den FTP-Server weitergereicht wird. Es ist eben ein Dinosaurier der Netzwerkprotokolle. SFTP soll die Probleme ja beheben.

Man könnte auch Instant Messenger wie Trillian oder diverse News-Push-Anwendungen als Beispiele anführen. Viele speichern die Passwörter der einzelnen Accounts *irgendwo* mit *irgendeiner* Verschlüsselung ohne Masterpasswort.

Das ist wohl in erster Linie dem Bestreben nach Usability geschuldet. Faktisch kollidiert diese aber mit der Sicherheit der Passwörter.

Richtig ist meiner Ansicht nach, dass JEDE reversible Verschlüsselung von Passwörtern ein Sicherheitsrisiko darstellt. Aber prinzipbedingt müssen derartige Programme genau das tun, denn nur das entschlüsselte Passwort lässt sich richtigerweise zum Login an die entsprechenden Dienste weiterreichen.

Ich persönlich finde es komfortabel, wenn man das Masterpasswort als eine Art Zufalls-Token generiert und auf einem USB-Stick hinterlegt. Man kann ja relativ viele Hardwaredaten aus dem Stick auslesen, sodass man das Token genau an diesen einen Stick koppeln kann. So ähnlich macht das glaub ich KeePass. Dann darf nur nicht der Stick kaputt oder verloren gehen sonst hat man datentechnischen Brettschiss

Ich bin einfach an euren Meinungen interessiert, welche grundsätzliche Herangehensweise man anwenden sollte.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#9

AW: Grundsatzüberlegungen zum Thema Speichern von Passwörtern

  Alt 11. Apr 2013, 11:16
Hi

bis jetzt hast Du uns ja noch nichtmal verraten, auf welcher Plattform sich das abspielt.
als Client Im Windows sollte das idR so laufen: wenn Du Dich das erste Mal mit einem Server verbindest, werden die eingegebenen Anmeldedaten im KeyTresor des users gespeichert, der zZt. angemeldet ist
gugg ma unter Systemsteuerung/Benutzerkonten/Anmeldeinformationsverwaltung und dort generische Anmeldeinformationen
dort landen imho auch die Kryptokeys/Zertifikate für verschlüsselte Verzeichnisse

wenn Du hingegen einen Server hast, speichert der nicht die Klartext-Anmeldeinformationen, sondern die, durch eine Einwegfunktion mit Salz erzeugten Hashes ; will ein Client nun Zugriff, wird seine Anweldung auch gehasht und dann mit der "shadow" verglichen

mfg mentaltec
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.658 Beiträge
 
Delphi 7 Personal
 
#10

AW: Grundsatzüberlegungen zum Thema Speichern von Passwörtern

  Alt 11. Apr 2013, 11:38
Worauf willst Du hinaus?
Eine eigene Anwendung mit eigenem Passwort?
Dann mach es doch so wie "alle" das was ein Passwort sein soll, durch eine Hash-Funktion und dann mit den vorhandenen (gehashten)Passwörtern vergleichen.

Willst Du Deine Passwörter irgendwo ablegen/speichern/dokumentieren?
auf einem Zettel mit einem 8bittigen prefix und postfix in Base16 notieren und den Zettel immer im linken Socken verwaren.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf