Potrebbero validationKey e decryptionKey essere trovati con la forza bruta da valore del cookie crittografato?

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

Domanda

Sto usando il seguente codice per generare un token criptato:

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);

Questo codice utilizza la chiave e l'algoritmo specificato nella app / web.config:

<system.web>
    <machineKey validationKey="SOME KEY" 
                decryptionKey="SOME OTHER KEY" 
                validation="SHA1" />
</system.web>

Ora supponiamo che io do il testo cifrato così generato a un partner. È capace di bruta forzatura:

  1. Il valore che viene memorizzato nella cifra (l'ID utente che non rappresenta le informazioni sensibili e non si preoccupa di me molto)
  2. Il valore del validationKey e decryptionKey usato per creare il cifrario (questo sarebbe catastrofica perché sarebbe in grado di generare token e impersonare qualsiasi utente)

Suppongo che la risposta ad entrambe le domande è sì, ma come realistico le sue possibilità sono e pensi che dargli la cifra rappresenterebbe una minaccia per la sicurezza al mio sistema? Grazie in anticipo per le vostre risposte.

È stato utile?

Soluzione

Ciò che si descrive qui è un chiaro attacco noto. L'attaccante apprende sia testi in chiaro e dei testi cifrati corrispondenti e il suo obiettivo è quello di trovare le chiavi. cifrari moderni sono progettati per essere sicuro contro questo tipo di attacchi.

In realtà qualsiasi cifra moderno è stato progettato per essere sicuro contro gli attacchi ancora più forti come gli attacchi in chiaro scelti e attacchi testo cifrato scelto. Anche se l'attaccante è permesso di scegliere testo in chiaro e il testo cifrato corrispondente o scegliere un qualsiasi numero di testi cifrati e imparare la decrittazione di esso, poi lui / lei dovrebbe non essere ancora in grado di imparare la chiave.

Questo rende la progettazione di una nuova cifra molto duro. Ma per fortuna, abbiamo già buoni algoritmi come AES.

Vorrei anche aggiungere che tutti gli attacchi sopra presuppongono che l'attaccante conosce tutti i dettagli della cifra che viene utilizzato. L'unica cosa che non sa è la chiave utilizzata. Questo è noto come il principio di Kerkhoff.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top