Encriptación en C# Web-Services


16

Estoy buscando una manera simple de cifrar mi comunicación jabón en mi C-Web-Service.

Estaba buscando en WSE 3.0 pero parece que Microsoft dejó de admitirlo, y por lo tanto no es fácil de usar.
Parece que WCF podría haber sido una opción, pero prefiero no actualizar desde .NET 2.0.

Cualquiera simple, método de cifrado directo?

8

Creo que esto puede ayudar; el año pasado usamos esto para comprimir los servicios web y funcionó muy bien, creo que podría mejorarse con clases de cifrado;

Creating Custom SOAP Extensions - Compression Extension


0

Quizás estoy siendo ingenuo, pero ¿sería aceptable forzar la comunicación a través de https? Desarrollo servicios web que se ejecutan en 2.0 y que han tenido éxito con solo lograr que IIS aplique https en el directorio virtual.

Alternativamente, o además, puede marcar el HttpRequest.IsSecureConnection property.


1

Tal vez estoy siendo ingenuo, pero habría obligando a que la comunicación sea a través de https ser aceptable? Desarrollo servicios web que se ejecutan en 2.0 y han tenido éxito con solo obtener IIS a aplicar https en el directorio virtual .

Esa sería la forma más sencilla de ir probablemente, pero por desgracia no tiene control sobre la configuración de IIS , y no puede garantizar que puede funcionar https.

En ese caso, tal vez la mejor apuesta es a uno u otro caso por caso porciones cifrar de los mensajes SOAP (después de todo, puede que no necesite todo el mensaje a cifrar - sólo ciertos campos sensibles), o puede optar por utilizar un HttpModule para interceptar todos los mensajes y operar en los contenidos. En cualquier caso, es probable que deba proporcionar proxies personalizados.


0

Utilizamos realmente WSE 3.0 en nuestros servicios web, que fueron desarrollados originalmente pre-WCF. Por seguridad, utilizamos un sistema SAML basado en token basado en las clases de Criptografía en System.Security.

Funciona muy bien. Sin embargo, este método no es de ninguna manera "simple".


2

Todo lo que haga para proporcionar "cifrado" que no utilice SSL/TLS es probable que sea vulnerable. Ahora tiene que preguntarse, ¿vale la pena quemar horas de desarrollo que podría estar gastando en características en una medida de seguridad de caucho y pollo? Tal vez lo sea

.NET Las API como DPAPI y la API Win32 crypt32 facilitan el cifrado de blobs de datos con claves estáticas. ¿Pero cómo van a recibir tus clientes las llaves? Cualquier cliente SOAP instalado tendrá que tener la clave grabada en su configuración, o recibirla en la insegura Internet.

Este es el problema que SSL/TLS resuelve para usted; el baile que haces con certificados TLS es lo que resuelve el problema de comunicar claves públicas sobre canales que no son de confianza.


0

Puede utilizar el cifrado de parámetros en C# utilizando la extensión System.Security.Cryptography.

Encriptar los parámetros y descifrarlos sería más difícil pero mucho más seguro.

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

estoy usando este abordaje para un servicio web OTP (One Time Password), y funciona bien para mí.