vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Wie Entschlüsseln mit x509Certificate2 ohne Passwortdialog? [DEUTSCHE FASSUNG] 
Autor: LastUser
Datum: 27.03.13 12:06

Hallo,

Ich möchte Daten entschlüsseln die zertifikatsbasiert (asymmetrisch) verschlüsselt sind, ohne dass ein Passwort-Dialog aufpoppt. Das notwendige Passwort soll über das Programm bereitgestellt werden.

Zusammenfassung:
Ich habe ein x509 Softwarezertifikat in den persönlichen Zertifikatsstore unter hohen Sicherheitseinstellungen installiert. Die Verschlüsselung funktioniert, die Entschlüsselung funktioniert ebenfalls, nur wird hier das Passwort zum Zugriff auf den privaten Schlüssel via Dialogfenster abgefragt.
Wie kann ich das Passwort zum Zugriff auf den privaten Schlüssel im Vorhinein festlegen?


Aktueller Status:
Mit Hilfe der folgenden Funktion verschlüssele ich meine Daten. Das x509 Zertifikat wird aus dem persönlichen Zertifikatsstore importiert und an die Funktion übergeben.

Public Function EncryptWithCertPubKey(cert As _
  System.Security.Cryptography.X509Certificates.X509Certificate2, data As Byte( _
  )) As Byte()
Dim rsa As System.Security.Cryptography.RSACryptoServiceProvider = TryCast( _
cert.PublicKey.Key, System.Security.Cryptography.RSACryptoServiceProvider)
Return rsa.Encrypt(data, True)
End Function
Entschlüsselung mit dem x509 Softwarezertifikat (cert) aus dem persönlichen Zertifikatsstore (es enthält natürlich den private Schlüssel)
Das Passwort (certPass) wurde festgelegt als das Zertifikat in den Store unter hoher Sicherheit installiert worden ist.
Ein Export in Raw-Data und anschließender Import (hier im Konstruktor) schien mir ein Weg um gleichzeitig das Passwort im Voraus angeben zu können.

Public Function DecryptWithCertKey(cert As _
  System.Security.Cryptography.X509Certificates.X509Certificate2, certPass As _
  String, data As Byte()) As Byte()
Dim rawdata As Byte() = cert.Export( _
Security.Cryptography.X509Certificates.X509ContentType.Pkcs12, certPass)
Dim cert2 As New System.Security.Cryptography.X509Certificates.X509Certificate2( _
rawdata, certPass)
Dim rsa2 As System.Security.Cryptography.RSACryptoServiceProvider = TryCast( _
cert2.PrivateKey, System.Security.Cryptography.RSACryptoServiceProvider)
Return rsa2.Decrypt(data, True)
End Function
Leider erscheint der Passwortdialog schon beim Export, also den Zugriff auf den privaten Schlüssel, und das obwohl das Passwort übergeben wurde (Wird der Dialog mit dem Passwort bedient, dann funktioniert auch alles.)
cert.Export(Security.Cryptography.X509Certificates.X509ContentType.Pkcs12, _
  certPass)
Es gibt nun die Property KeyPassword bei den CSP Parametern. Diese Eigenschaft ist extra dafür gedacht ein betreffendes Passwort für z.B. eine Smartcard im Voraus zu setzen, so dass zur Nutzungszeit kein Dialog erscheint.
Z.B.:
Dim certPass As New System.Security.SecureString
Dim cspp As New System.Security.Cryptography.CspParameters(1, "Microsoft Strong" & _
  "Cryptographic Provider")
cspp.KeyPassword = certPass
Ich finde leider keine Möglichkeit die beiden Welten miteinander zu verheiraten. Irgendwie müssen die CSP-Parameter mit in das x509Certificate2 eingebracht werden (oder umgekehrt), ggf. auch über den RSACryptoprovider.

Falls jemand sich mit dem Thema auskennt, wäre etwas Unterstützung sehr willkommen.




PS: Aufgrund der geringen Resonanz auf die englischsprachige Variante dieser Anfrage, hier das Ganze noch einmal in Deutsch. Sorry für den Doppelpost und für den vorhergehenden Post in Englisch.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Wie Entschlüsseln mit x509Certificate2 ohne Passwortdialog? ...1.348LastUser27.03.13 12:06

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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