Poderia validationKey e decryptionKey ser encontrada pela força bruta do valor do cookie criptografado?
-
21-08-2019 - |
Pergunta
Eu estou usando o seguinte código para gerar um criptografado token:
var ticket = new System.Web.Security.FormsAuthenticationTicket(
2,
"",
DateTime.Now,
DateTime.Now.AddMinutes(10),
false,
"user id here");
var cipherText = System.Web.Security.FormsAuthentication.Encrypt(ticket);
Esse código usa a chave e algoritmo especificado na app / web.config:
<system.web>
<machineKey validationKey="SOME KEY"
decryptionKey="SOME OTHER KEY"
validation="SHA1" />
</system.web>
Agora, suponha que eu dou o texto cifrado assim gerada a um parceiro. Ele é capaz de força bruta:
- O valor que é armazenado na cifra (o ID do usuário que não representa informações confidenciais e não me incomoda muito)
- O valor do validationKey e decryptionKey usado para criar a cifra (isso seria catastrófico, porque ele seria capaz de gerar fichas e personificar qualquer usuário)
Suponho que a resposta a ambas as perguntas é sim, mas como realista suas chances são e você acha que dando-lhe a cifra representaria uma ameaça de segurança para o meu sistema? Agradecemos antecipadamente por suas respostas.
Solução
O que você descreve aqui é um ataque de texto simples conhecido. O atacante aprende tanto plaintexts e as mensagens cifradas correspondentes e seu objetivo é encontrar as chaves. cifras modernos são projetados para ser seguro contra este tipo de ataques.
Na verdade, qualquer cifra moderna é projetado para ser seguro contra ataques ainda mais fortes, tais como ataques texto plano escolhido e escolhidos ataques texto cifrado. Mesmo se o atacante é permitido escolher texto simples e correspondente texto cifrado ou escolher qualquer número de mensagens cifradas e aprender a descriptografia dele, então ele / ela ainda não deve ser capaz de aprender a chave.
Isso faz projetar uma nova cifra muito difícil. Mas, felizmente, já temos boas cifras tais como AES.
Gostaria também de acrescentar que todos os ataques acima assumem que o atacante conhece todos os detalhes da cifra que é usado. A única coisa que ele não sabe é a chave que é usado. Isto é conhecido como princípio da Kerkhoff.