Verschlüsselung in C# Web-Services


16

Ich bin auf der Suche nach einer einfachen Möglichkeit, meine Soap-Kommunikation in meinem C# Web-Service zu verschlüsseln.

Ich suchte in WSE 3.0, aber es scheint, Microsoft hat Unterstützung für sie fallen gelassen, und daher ist es nicht einfach zu bedienen.
Es scheint WCF könnte eine Option gewesen sein, aber ich möchte nicht von .NET 2.0 aktualisieren.

Beliebig einfach, einfache Verschlüsselungsmethode?

8

Ich denke, das kann helfen; Letztes Jahr haben wir dies verwendet, um die Webdienste zu komprimieren und es hat sehr gut funktioniert, ich glaube, es könnte mit Verschlüsselungsklassen verbessert werden;

Creating Custom SOAP Extensions - Compression Extension


0

Vielleicht bin ich naiv, aber würde die Kommunikation über https akzeptabel sein? Ich entwickle Web-Services, die auf 2.0 laufen und hatte Erfolg damit, IIS dazu zu bringen, https auf dem virtuellen Verzeichnis zu erzwingen.

Alternativ oder zusätzlich können Sie die HttpRequest.IsSecureConnection property überprüfen.


1

Vielleicht naiv ich zu sein, würde aber die Kommunikation zwingt über https akzeptabel zu sein? Ich entwickle Web Dienste, die auf 2.0 laufen und hatten Erfolg mit nur IIS zu erzwingen https auf dem virtuellen Verzeichnis.

Das wäre der einfachste Weg sein wahrscheinlich zu gehen, aber leider habe ich nicht die Kontrolle über die IIS-Konfiguration und nicht garantieren kann, dass es https laufen kann.

In diesem Fall vielleicht die beste Wette ist, um entweder von Fall zu Fall zu verschlüsseln Teile der SOAP-Nachrichten (immerhin Sie die gesamte Nachricht nicht müssen verschlüsselt werden - nur bestimmte sensible Felder), Oder Sie können ein HttpModule verwenden, um alle Nachrichten abzufangen und den Inhalt zu bearbeiten. In beiden Fällen müssen Sie wahrscheinlich benutzerdefinierte Proxys bereitstellen.


0

Wir verwenden tatsächlich WSE 3.0 in unserem Web-Services, die ursprünglich vorge WCF entwickelt wurden. Aus Sicherheitsgründen verwenden wir ein SAML-Token-basiertes System, das auf den Cryptography-Klassen in System.Security basiert.

Es funktioniert sehr gut. Diese Methode ist jedoch keineswegs "einfach".


2

Alles, was Sie tun, um "Verschlüsselung" bereitzustellen, die nicht SSL/TLS verwendet, ist wahrscheinlich anfällig. Jetzt müssen Sie sich fragen, ob es sich lohnt, Stunden zu verbrennen, die Sie für Funktionen auf einer Gummi-Hühner-Sicherheitsmaßnahme ausgeben könnten? Vielleicht ist es.

.NET-APIs wie DPAPI und die Win32-API crypt32 vereinfachen das Verschlüsseln von Datenblobs mit statischen Schlüsseln. Aber wie erhalten Ihre Kunden die Schlüssel? Jeder installierte SOAP-Client muss entweder den Schlüssel in seine Konfiguration einbrennen lassen oder über das unsichere Internet empfangen.

Dies ist das Problem, das SSL/TLS für Sie löst; Der Tanz, den Sie mit TLS-Zertifikaten machen, löst das Problem, öffentliche Schlüssel über nicht vertrauenswürdige Kanäle zu kommunizieren.


0

Sie können die Parameterverschlüsselung in C# mit der Erweiterung System.Security.Cryptography verwenden.

Das Verschlüsseln und Entschlüsseln Ihrer Parameter wäre schwieriger, aber viel sicherer.

How To: Encrypt and Decrypt Data Using a Symmetric (Rijndael) Key (C#/VB.NET)

ich für einen OTP dieses aproach bin mit (One Time Password) Web-Service, und es funktioniert gut für mich.