SslStream do .NET está sempre negociando para a cifra menos seguro que eu tenho. Como posso mudar isso?

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

  •  01-07-2019
  •  | 
  •  

Pergunta

SslStream é suposto para negociar o tipo de cifra, comprimento da chave, algoritmo de hash, etc, com sua pilha de SSL. Quando usá-lo no meu código, eu acho que a negociação sempre padrão RC4 e MD5. Eu gostaria de usar 3DES ou AES para alguns maior segurança.

Olhando ao redor da web eu encontrar apenas algumas referências a este problema e nenhuma solução; um cartaz está reivindicando isso realmente faz sentido, já que o menor denominador comum entre as duas pilhas é ao mesmo tempo seguro tem a vantagem de ser mais rápido / utilizando menos recursos de CPU. Embora isso possa ser tecnicamente correto, meu trade-off particular entre a complexidade eo custo está em outro lugar (eu prefiro usar AES com uma chave de comprimento).

Se alguém puder ajudar eu apreciaria.

Foi útil?

Solução

Você pode selecionar quais protocolos estão disponíveis para seleção, fazendo algumas alterações de registo simples. Nós removemos a capacidade de selecionar RC4, por exemplo. Você só precisa fazer a mudança em uma das extremidades da conexão (por exemplo, servidor) porque o cliente eo servidor negociar para encontrar algoritmo comumente suportado

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

Os melhores cumprimentos James

Outras dicas

SslStream usa Schannel que é fornecido com o sistema operacional. As suites estão listados na ordem padrão em que eles são escolhidos pelo Provedor Microsoft Schannel para:

Windows Vista:

RSA COM AES_128 CBC SHA
RSA COM AES_256 CBC SHA
RSA COM RC4_128 SHA

...

Windows XP:

RSA COM RC4 128 MD5
RSA COM RC4 128 SHA

RSA COM 3DES CBC SHA

....

Você também pode modificar a lista de conjuntos de codificação, configurando o SSL Cipher Suíte Ordem definições de política de grupo usando o objeto de política de grupo snap-in no Microsoft Management Console (Windows Vista)

Mas a questão é que o Windows XP não inclui AES na lista de cifras disponíveis para SslStream. No entanto, é possível alterar as configurações do registro no Windows XP: HKLM \ System \ CurrentControlSet \ Control \ Lsa \ FIPSAlgorithmPolicy 1 para obter 3DES cifra.

Deve-se usar o conjunto mais seguro de algoritmos que estavam em ambas as listas. Acho que é difícil acreditar que não é, porque SslStream está envolvendo o SChannel SSPI, e se isso foram quebrados em seguida, Internet Explorer, IIS e tudo o mais no Windows seria quebrado também.

Pode ser que você tem uma versão desatualizada do SChannel.dll / Secur32.dll. Qual é a versão do sistema operacional e Internet Explorer que você tem instalado?

É possível desativar protocolos em SCHANNEL . você pode verificar que isso não foi feito?

Eu estou usando o XP SP3 e IE7 com todas as atualizações. O registro parece configurado com tudo habilitado.

Em Java você pode encomendar os vários algoritmos / cifras de acordo com suas necessidades e preferências. Pode estar lá é uma API semelhante em .NET ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top