C# Passwort verschlüsseln und in Powershellscript verwenden

Magic1416

Lieutenant
Registriert
Dez. 2003
Beiträge
530
Hi,

ich habe eine c# Winform Application welche bestimmte Configurartionsfiles in XML oder INI Files erstellt. Diese Files werden zum Zwecke der Serverautomatisierung nun mittels Powershellscript weiterverarbeitet.
Bisher habe ich Passworter einfach Blank in den Configfiles abgespeichert. Das ist natürlich schlecht. Da das ganze langsam Richtung produktiven Einsatz geht, muss das Passwort natürlich in verschlüsselter Form abgelegt werden. Meine Recherchen brachten mich bisher auf die Klasse System.Security.Cryptography.ProtectedData.
Allerdings frage ich mich, wie das sicher sein soll. Denn ich muss ja irgendwo einen Encryption Key angeben um wieder Entschlüsseln zu können. (In der o.g. Klasse ist das das Feld optionalEntropy). Und dieser Key würde ja wieder irgendwo Blank im Powershell Script stehen und würde somit einem findigen Admin die Möglichkeit zur Entschlüsselung bieten, alleine durch lesen des Powershellcodes.

Ich bräuchte da von Euch deshalb den passenden Denkanstoß, wie ich nun möglichst sicher, ein PW in einem File ablegen kann, und dieses wieder in einem Powershell Script zur Laufzeit entschlüsseln kann, ohne dass ich den Key sichtbar da drin ablegen muss.

Auch wenn mein Ansatz komplett falsch ist, würde ich mich über eine alternative Idee freuen.

Danke Gruß Magic
 
Magic1416 schrieb:
Allerdings frage ich mich, wie das sicher sein soll. Denn ich muss ja irgendwo einen Encryption Key angeben um wieder Entschlüsseln zu können. (In der o.g. Klasse ist das das Feld optionalEntropy). Und dieser Key würde ja wieder irgendwo Blank im Powershell Script stehen und würde somit einem findigen Admin die Möglichkeit zur Entschlüsselung bieten, alleine durch lesen des Powershellcodes.
Richtig! Lösung: keine. Entweder nimmt dein Gegenüber bereits verschlüsselte/gehashte Werte an oder du musst eben mit Plain Text arbeiten.
 
Hallo,
das einzige was hier funktionieren könnte ist ein public-private-Key Verfahren. Damit müsste eine Anwendung nur den öffentlichen Schlüssel des jeweils anderen Programms kennen und müsste ihren privaten nicht veröffentlichen.

Allerdings bin ich jetzt wirklich kein PowerShell Crack, und kann dir daher nicht sagen, ob es geht und mit wieviel Aufwand es sich mit der PS realisieren lässt. Mit C# ist es kein Problem, nur etwas Aufwand :)

Greetz
hroessler
 
Zuletzt bearbeitet von einem Moderator:
Das würde gehen ja, ähnlich SSH. Lässt sich mit PowerShell wunderbar lösen, hat ja schließlich ein .NET-Framework in der Hinterhand. Prinzipiell, wenn es bereits ne fertige Assembly o.ä. gibt, kann man die einfach via Add-Type hinzufügen. Evtl. lässt sich hier ja bereits was aus der WinSCP .NET Lib verwenden.
 
Hi,
gestaltet sich wohl aufwändiger als ich dachte. Ich werde mir die Sache mit dem Private Public Key etwas genauer ansehen.

Vielen Dank für Info

Gruß Magic
 
Zurück
Oben