SslStream de .NET siempre está negociando con el cifrado menos seguro que tengo.¿Cómo puedo cambiar esto?

StackOverflow https://stackoverflow.com/questions/91304

  •  01-07-2019
  •  | 
  •  

Pregunta

Se supone que SslStream negocia el tipo de cifrado, la longitud de la clave, el algoritmo hash, etc.con su pila SSL de pares.Cuando lo uso en mi código, encuentro que la negociación siempre tiene como valor predeterminado RC4 y MD5.Me gustaría usar 3DES o AES para mayor seguridad.

Buscando en la web encuentro sólo unas pocas referencias a este problema y ninguna solución;un cartel afirma que esto realmente tiene sentido, ya que el mínimo común denominador entre las dos pilas es seguro y tiene el beneficio adicional de ser más rápido y utilizar menos recursos de CPU.Si bien esto puede ser técnicamente correcto, mi equilibrio particular entre complejidad y costo radica en otra parte (prefiero usar AES con una clave larga).

Si alguien puede ayudar lo agradecería.

¿Fue útil?

Solución

Puede seleccionar qué protocolos están disponibles para su selección realizando algunos cambios simples en el registro.Eliminamos la posibilidad de seleccionar RC4, por ejemplo.Solo necesita realizar el cambio en un extremo de la conexión (por ejemplo, el servidor) porque el cliente y el servidor negocian para encontrar un algoritmo comúnmente compatible.

http://msdn.microsoft.com/en-us/library/ms925716.aspx

Mis mejores deseos James

Otros consejos

SSLStream utiliza Schannel que se suministra con el sistema operativo.Las suites se enumeran en el orden predeterminado en el que las elige Microsoft Schannel Provider para:

Windows Vista:

RSA CON AES_128 CBC SHA
RSA CON AES_256 CBC SHA
RSA CON RC4_128 SHA

...

Windows XP:

RSA CON RC4 128 MD5
RSA CON RC4 128 SHA

RSA CON 3DES CBC SHA

....

También puede modificar la lista de conjuntos de cifrado configurando el Orden del conjunto de cifrado SSL configuración de política de grupo mediante el complemento Objeto de política de grupo en Microsoft Management Console (Windows Vista)

Pero el problema es que Windows XP no incluye AES en la lista de cifrados disponibles para SSLStream.Sin embargo, es posible cambiar la configuración del Registro en Windows XP:HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy 1 para obtener 3DES cifrar.

Debería utilizar el conjunto de algoritmos más seguro que se encontraban en ambas listas.Me resulta difícil creer que no lo sea, porque SslStream está envolviendo el SSPI de SChannel, y si eso estuviera roto, entonces Internet Explorer, IIS y todo lo demás en Windows también estaría roto.

Es posible que tenga una versión desactualizada de SChannel.dll/Secur32.dll.¿Qué versión de SO y de Internet Explorer tienes instalada?

Es posible desactivar protocolos en SCHANNEL.¿Podrías comprobar que esto no se ha hecho?

Estoy usando XP SP3 e IE7 con todas las actualizaciones.El registro parece configurado con todo habilitado.

En Java puede ordenar los distintos algoritmos/cifrados según sus necesidades y preferencias.Puede que haya una API similar en .NET...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top