| |
VB.NET - Fortgeschrittenevb.net Variable mit externem Programm auslesen | | | Autor: Knurzel | Datum: 18.07.11 19:15 |
| Hallo,
ich schreibe gerade eine Passwortverwaltung in vb.net.
Jetzt frage ich mich ob eine Variable in vb.net grundsätzlich sicher ist oder ob diese von einem anderen Programm/Code ausgelesen werden kann und entsprechend schutzbedürftig ist.
Theoretisch müsste der Inhalt doch mehr oder weniger plain im Arbeitsspeicher zu finden sein oder?
Die Frage wäre also ob es grundsätzlich möglich ist eine globale Variable in vb.net mit einem externen Programm auszulesen?
Ich dachte an Programme wie Process Explorer. Damit ist es mir jedoch nicht gelungen.
mfg
Knurzel | |
Re: vb.net Variable mit externem Programm auslesen | | | Autor: Knurzel | Datum: 19.07.11 17:44 |
| Hallo,
Danke für den Tip mit der SecureString Klasse. Ich hab mich dazu jetzt ein wenig eingelesen.
Leider sieht die Klasse nicht unbedingt „Programmiererfreundlich“ aus.
Vielleicht schildere ich mal mein Problem etwas ausführlicher, in der Hoffnung, dass jemand einen guten Tipp hat.
In meiner Passwortverwaltung gibt es einen Anmeldedialog, wo ein Passwort eingegeben werden muss.
Dieses Passwort wird als Salted Hash gegen den Wert in der Datenbank geprüft.
Zusätzlich wird der Salt und das Loginpasswort aber auch benutzt um bei den einzelnen Accounts die AES-verschlüsselten Kennwörter wieder zu entschlüsseln.
Dazu wird das Loginpasswort nach dem Login in einer globalen Variablen gespeichert und bleibt dort die ganze Zeit im Speicher.
Wenn ich jetzt die Anwendung sicherer machen will, müsste ich so wie ich es verstanden habe nicht nur die Variable schützen sondern auch die Login-Textbox.
Hat vielleicht jemand ein Anwendungsbeispiel der SecureString Klasse, dass zu oben genannter Problematik passt? Was mir noch nicht so klar ist, wie ich den SecureString dann sicher wieder als String für die Entschlüsselungsfunktionen benutzen kann?
Gibt es vielleicht eine praktikablere Lösung?
Kennt jemand ein Windows Tool mit dem man Variablen/etc. in Programmen auslesen kann? So könnte ich dann selbst schauen was ich alles schützen muss.
Vielen Dank
Knurzel | |
Re: vb.net Variable mit externem Programm auslesen | | | Autor: Micke | Datum: 19.07.11 18:26 |
| "Loginpasswort nach dem Login in einer globalen Variablen gespeichert "
ja mach, worüber stolperst denn da ? der anwender kennt das pw ja eh, was nützt es ihm das auszulesen ?
Micke | |
Re: vb.net Variable mit externem Programm auslesen | | | Autor: Knurzel | Datum: 19.07.11 18:40 |
| Wenn man davon ausgeht, dass die Passwortverwaltung vielleicht mal viele Installationen bekommt, dann wäre es schon gut wenn das Programm einen kleinen Schutz gegen Spyware etc. eingebaut hat. Also ich würde das von einer Passwortverwaltung erwarten. Schließlich ist eine Passwortverwaltung ja dazu da die geheimsten Daten sicher zu speichern. | |
Re: vb.net Variable mit externem Programm auslesen | | | Autor: Knurzel | Datum: 22.07.11 09:55 |
| Hi,
das Coding hab ich jetzt wie folgt umgesetzt:
Setzen des SecureString beim Login:
strLoginPW = New System.Security.SecureString
For i As Integer = 0 To txtLogin.Text.Length - 1
strLoginPW.AppendChar(txtLogin.Text(i))
Next
strLoginPW.MakeReadOnly() Zur Verwendung später:
Dim objIntPtr As IntPtr = _
System.Runtime.InteropServices.Marshal.SecureStringToBSTR(strLoginPW)
console.writeline(System.Runtime.InteropServices.Marshal.PtrToStringBSTR( _
objIntPtr)) Das Loginformular wird direkt wieder geschlossen und nach objfrm = nothing müsste doch dann der Inhalt der Logintextbox nicht mehr aus dem Speicher auslesbar sein - oder?
Es würde mich aber trotzdem noch interessieren ob man mit entsprechenden Tools noch etwas relevantes im Speicher findet. Vielleicht hat bezüglich der Tools noch jemand einen Tipp?
mfg
Knurzel
Beitrag wurde zuletzt am 22.07.11 um 09:57:53 editiert. | |
Re: vb.net Variable mit externem Programm auslesen | | | Autor: Maas | Datum: 22.07.11 12:48 |
| Gibt ZeroFreeBSTR denn auch den zuvor erzeugten String frei? Eigentlich ist es ja nur der Pointer.
Ich arbeite auch z.Z. mit SecureString und habe genau dieses Problem. Irgendwann braucht man ja in der Weiterverarbeitung den reinen String-Wert und dann schwirrt der natürlich auch im RAM rum. Eigentlich brauche ich für meinen Zweck auch nur den Byte()-Wert, aber ich schätze das macht keinen Unterschied!?!
Bei mir geht's um die Verarbeitung eines ConsumerSecrets für OAuth, um die OAuth-Signature zu erstellen. Das Secret wird als SecureString gehalten und übergeben, aber bei der Erstellung der Signature brauche ich ja dann den Klarwert. Ich habe halt jetzt direkt nach der Verarbeitung des Secrets die ZeroFreeBSTR-Methode eingebaut.
Oder gibt es da bessere Lösungen?
Für die Generierung orientiere ich mich an dieser Klasse. Für "consumerSecret" in GenerateSignature-Function benutze ich halt SecureString.
Maas | |
Re: vb.net Variable mit externem Programm auslesen | | | Autor: Maas | Datum: 22.07.11 15:33 |
| Danke!
Maas | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevDTA 3.0 Pro
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|