Encrypted password in a plain text file
daisho 19.06.2023 - 10:03 6575 7
daisho
VereinsmitgliedSHODAN
|
Gleich vorweg: Ich bin kein Entwickler, ich hab kein Studium dazu und ich muss es auch nicht machen also braucht keiner Angst haben dass "wieder jemand an etwas arbeitet von dem er keine Ahnung hat" Möchte eigentlich nur den Workflow verstehen wie sowas ordentlich gemacht gehört. Habe ein 3rd Party Programm für die Arbeit untersucht weil das ein verschlüsseltes Passwort abspeichert und es war selbst für mich kein Problem die super duper AES256 Verschlüsselung zu knacken weil die encryption strings recht offensichtlich in der Binary zu lesen waren Beispiel: Windows user password gespeichert in einem Plain-Text-File (.txt z.B.), natürlich verschlüsselt (AES256 blah). Ein static encryption string im Code ist natürlich schwachsinnig und verhindern dass den jemand ausliest kann man wohl auch nicht > also by default insecure. Wie macht man das normalerweise so dass mehr als 1 PC das File auslesen kann aber auch nach aktuellen Standards secure ist? Könnte mir vorstellen irgendein 3rd Party (openssl?) keystore worauf dann alle notwendigen Parteien Zugriff haben? Oder (falls vorhanden) via Domain Authentication check wenn alle Parteien in derselben Domain sind oder Trust Relationship haben?
|
Longbow
Here to stay
|
Bin mir grad nicht ganz sicher ob ich den Post auch verstanden hab - aber so "shared Credential" Dinge für einen kleinen Kreis Menschen handhaben wir aktuell mit einem Keepass File, wo eben alle relevanten Personen das Master-PW wissen und div. Service Accounts in dem File anlegen/ändern können.
Wenns machine2machine während eines build Prozesses oder so sein soll, dann wirds irgendein Vault Ding wie Hachicorp brauchen.
|
COLOSSUS
AdministratorGNUltra
|
Jedes (zur symmetrischen Verschluesselung genutzte) Secret, das dein Code verarbeiten muss, muss im Klartext durch diesen Code durch. Alles andere faellt unter asymmetrische Kryptographie, und eignet sich nicht fuer den von dir gebrauchten Zweck (ein Secret wo quasi offen liegenzulassen, sodass man es zwar als z. b. kryptographisch dazu autorisierte Entiaet zur authn verwenden, aber der Verwender es nicht auch irgendwie *anders* als zur authn verarbeiten kann). Alternativen dazu waeren in der Theorie Kryptosysteme, die https://en.wikipedia.org/wiki/Homomorphic_encryption nutzen. Ich glaube nicht, dass es das schon (praktisch nutzbar) gibt. Eine andere Alternative ist, diese Funktionalitaet in Hardware (bspw. ein TPM) oder ein Remote-System einzuwickeln, an welches du dieses Vertrauen (das Secret zur authn zu verwenden, es aber nicht irgendwie anders auszuwerten oder weiterzugeben) delegierst. Ist aus meiner Sicht meistens Schlangenoel, aber mindestens seit alle moeglichen technisch wohl weitestgehend ahnungbefreiten Compliance-Leute damit happy sind, dass der Public-Cloud-Provider der Wahl eine Checkbox mit "encrypt this datastore" anbietet, und damit ist dann alles leiwand, ist das industrieweit stark verbreitet.
|
daisho
VereinsmitgliedSHODAN
|
Bin mir grad nicht ganz sicher ob ich den Post auch verstanden hab - aber so "shared Credential" Dinge für einen kleinen Kreis Menschen handhaben wir aktuell mit einem Keepass File, wo eben alle relevanten Personen das Master-PW wissen und div. Service Accounts in dem File anlegen/ändern können. Es geht da mehr darum dass ein Programm auf das File bzw. die Config zugreifen will/muss um sich dann mit den darin enthaltenen Credentials wo anders anzumelden. Eine andere Alternative ist, diese Funktionalitaet in Hardware (bspw. ein TPM) oder ein Remote-System einzuwickeln, an welches du dieses Vertrauen (das Secret zur authn zu verwenden, es aber nicht irgendwie anders auszuwerten oder weiterzugeben) delegierst. Ist aus meiner Sicht meistens Schlangenoel, [...] Auf Hardware-TPM ausweichen hab ich auch schon gelesen, d.h. die eigentliche Encryption macht dann nicht die eigene Software sondern halt das TPM Modul - ob man damit Security bzw. deren Haftung einfach nur "verschiebt" sei mal dahin gestellt. So oder so ist generell fraglich warum man ein Windows Passwort irgendwo lokal auf der Festplatte (verschlüsselt) ablegen will. Da wird es ja bessere Möglichkeiten geben (zumindest Windows Credential Manager oder wwi) ...
|
Smut
takeover & ether
|
Im Prinzip suchst du ein HSM bzw. KMS system. TPM ist denke ich hier etwas umständlich weil du schreibst dass mehrere PCs zugreifen sollen. (Klar kann man das auch mit TPM bauen ist mir aber ehrlich gesagt nicht untergekommen bisher).
Alternativ den symmetrischen Schlüssel beim applikationsstart manuell eingeben.
|
mr.nice.
differential image maker
|
Ich verwende dafür die in Powershell integrierten Funktionen convert-tosecurestring und convert-fromsecurestring. Am Ende hast du ein Keyfile und einen Securekey, den du z.B. nur über eine TLS gesicherte powershell übermittelst und mit dem Keyfile zur Authentifizierung verwenden kannst, ohne das eigentliche Passwort offenbaren zu müssen, das keyfile sollte klarerweise auch per ACL zugriffsbeschränkt sein. Andere Betriebssysteme haben ähnliche Funktionen vermutlich auch und irgendwas oder irgendwem muss man die Geheimnisse letztlich immer anvertrauen. Achtung, secure und encrypted darf nicht verwechselt werden. https://learn.microsoft.com/de-de/p...=powershell-7.2Hier eine gute Hilfestellung: https://www.pdq.com/blog/secure-pas...entials-part-1/https://www.pdq.com/blog/secure-pas...entials-part-2/
Bearbeitet von mr.nice. am 19.06.2023, 18:35
|
daisho
VereinsmitgliedSHODAN
|
Im Prinzip suchst du ein HSM bzw. KMS system. TPM ist denke ich hier etwas umständlich weil du schreibst dass mehrere PCs zugreifen sollen. (Klar kann man das auch mit TPM bauen ist mir aber ehrlich gesagt nicht untergekommen bisher).
Alternativ den symmetrischen Schlüssel beim applikationsstart manuell eingeben. HSM ist ja TPM im Endeffekt oder? TPM stelle ich mir für den Anwendungszweck (Programm, automatisiert) auch kompliziert vor. Vermute um es wirklich secure zu machen bräuchte man ein KMS System. Im Endeffekt ist sämtliche Software die z.B. eingegebene Passwörter speichert (z.B. in Registry) genauso betroffen. Wenn man weiß wer (Binary) das Passwort dort AES oder wie auch immer verschlüsselt und das nicht via KMS oder HSM passiert > insecure. Solange es auf einer einzelnen Maschine bleibt ist TPM vermutlich die einfachste Lösung (das TPM wie Colo andeutet vermutlich seine eigenen Vulnerabilitäten hat und damit das Security-Konzept aushebeln kann/wird sei mal dahin gestellt).
|
Smut
takeover & ether
|
TPM ist Ansich nicht Netzwerkfähig. Es ist ähnlich aber in IT Umgebungen ist mir TPM nicht untergekommen. Ich denke mit HSM/KSM fällt dir die Recherche leichter. Hashicorp vault würd ich mir mal ansehen - also ob das in die Richtung geht. Implementierung sowie betriebskonzept ist wichtig ansonsten baut man etwas das um nix besser ist als der key am filesystem.
|