2009-04-08 6 views
2

Ich muss einige sichere Kommunikation zwischen einem Windows-Dienst und einer asp.net-Website tun. Auf der asp.net-Website erzeuge ich ein Schlüsselpaar, indem ich meinen öffentlichen Schlüssel an meinen Windows-Dienst sende und dann die verschlüsselte Nachricht von meinem Dienst erhalte und mit asp.net entschlüssle.asp.net Generating RSA öffentlichen Schlüsselpaar ohne einen Schlüssel speichern

Das erste Problem ist dies .. Die user profile is not created in asp.net, also muss ich RSAParams.Flags = CspProviderFlags.UseMachineKeyStore ;.

Dies funktioniert nicht in meinem Hosting-Provider, weil ich keinen Zugriff auf meine Maschine haben.

Ich denke, meine Lösung wäre, das Schlüsselpaar im Speicher zu generieren und niemals den Keystore zu verwenden, ist das möglich?

Antwort

2

Kasse http://www.codeproject.com/KB/security/EZRSA.aspx Exerpt aus dem Artikel:

„Hilfe Was sollen wir tun ?? Ein bisschen googeln um, und eine kurze E-Mail an unserem (sehr gut) Web-Hosting-Anbieter Flüssiges Six, ergaben, dass der Grund für Dies liegt tief in der Windows-Crypt-API, auf der RSACryptoServiceProvider basiert.Im Wesentlichen würde die Sicherheit des Windows-Keystores dadurch beeinträchtigt, dass Skripts ihre eigenen privaten Schlüssel laden, so dass alle vernünftigen Webhosting-Provider das Skript deaktivieren stiehlt/überschreibt die privaten Schlüssel des Hostinganbieters. Das erscheint mir als ein großes Snafu in der Windows Crypt API, aber da gehst du. Ich glaube, wir sind festgefahren.

Etwas mehr Googeln ergab zwei wesentliche Ressourcen: Chew Keong TANs hervorragendste BigInteger-Klasse und einige LGPL 'C'-Codes für die erforderlichen Berechnungen und die PKCS # 1-Kapselung von XySSL (ursprünglich geschrieben von Christopher Devine). Diese Ressourcen waren besonders nützlich für mich, weil (a) die Fähigkeit, Zahlen mit Hunderten von Ziffern zu manipulieren, ein Spezialgebiet ist und (b) ich ASN.1 hasse (auf dem das PKCS # 1-Format aufgebaut ist). Die Berechnungen selbst sind täuschend einfach.

Ein Tag oder zwei der Stitching und Patching später und EZRSA wurde geboren. EZRSA macht so ziemlich alles, was RSACryptoServiceProvider kann, aber vollständig in verwaltetem Code und ohne Verwendung der Windows Crypt API. Als Ergebnis wird es überall ausgeführt, unabhängig davon, welche Vertrauensstufe Ihr Webhosting-Provider Ihnen auferlegt (was wir brauchen). "

Ich hoffe, es hilft!

Verwandte Themen