crittografia ASP.NET Machinekey

3

In Asp.NET è possibile utilizzare MachineKey.Protect per crittografare i dati. Stiamo pensando di utilizzarlo per crittografare alcuni dati che verranno memorizzati in campi nascosti all'interno di una pagina Web, questi campi nascosti vengono utilizzati quando la pagina web viene postata.

Ho letto che quando si cripta è meglio usare ogni volta un Vettore di inizializzazione diverso, come se lo stesso fosse usato più e più volte la crittografia diventa più facile da decifrare.

Sicuramente usando MachineKey.Protect più e più volte la crittografia diventa più facile da decifrare quando viene utilizzato lo stesso IV. I dati che sto proteggendo non sono molto sensibili, quindi non ho bisogno di una soluzione gold standard, sto solo controllando che non sto facendo qualcosa di molto debole. Se MachineKey.Protect è una soluzione di media potenza che va bene.

Grazie per il tuo aiuto.

    
posta Jake 18.05.2015 - 14:30
fonte

1 risposta

3

Il metodo MachineKey.Protect genera automaticamente un IV casuale durante la crittografia. Puoi vedere questo in effetti proteggendo gli stessi valori più volte:

for (int n = 0; n < 10; n++)
{
    byte[] data = MachineKey.Protect(Encoding.ASCII.GetBytes("This is a test."), "testing");
    var sb = new StringBuilder();
    for (int i = 0; i < data.Length; i++)
        sb.AppendFormat("{0:x2}", data[i]);
    Console.WriteLine(sb.ToString());
}

Output:

beb18d854f133f948e090a9d563d5670f3ccf9d337449357fba831e728e105fed44785e432d3f1dbe8c50a7f867570a3ce7d198b51faf34fb3f44511c876f715
dd62fe62ca56ff6f9cf4bb6b0f715f77106aa11ef081105099800850ce38a2d7d8d986f35f8e0db3ac32d5702a7cbfb2efb421770449a90587cd4895ec70a5af
fa548a8fb928fa3039eed3b2d0bf2fc53c4899da39acaad443170726f8a2fdfacf40684542b5429445c82f66cac529f94a750c2ec52532984e752e722f6accfa
ef37f809db93f2e8e1a45a58bc5def741239be955038b87d8712dcb8bfbae853e2dd21556b836dde41c56dcce6970c699107cc9a796dbbf14cf8ff231cfe7f08
fdb4e87ee327dfe4b0d3ae3edf66a4b3dc9eab7434d8e730eaf3424034bd2b6935b0b92613b13bf703cac6951d92761e9a34ec815dd5e66e9e514baf5181edab
1203a0891da6e7bc09f6037a3419be62a07dbb1b5e3c3ab2449e7163e5b082d9a6ef4338b17132e95e04ef8df00582afca2aa0576003260766f256659b971f11
0a96d6f17169789d86c0812c810826efe356c5ec5ad4f88d1d79620c7d9a31b665244e095ef711a3f555b29ac04dc684de4971396cdb621c34c6753ad16cbebe
0a537e35e7554831c0870e762996f3b9d23ed3ae3363133341097e7a80ed3fca12c9beb1592ecb1d4d2ca4cc2178837996484ee71773e4ce5dcd911220d38e17
9e943971c1847254cba338a69973d55e857e55fb0bdaf62b18bbe4cfd39647256d31ac88a9c75823594c062b2def6c618429af60618150f640590c6ef7a0d565
18028aa0c81dd5dc03ed972d0a066803841f1cb0a43eadbb4cf001ecafbc38f3604579f84196e9c6344cb3f676f53add0d4054b1daa5eca119c46522201ae27c

Se passi alle fonti decompilate per System.Web.dll e System.Security.dll , scoprirai che la chiamata MachineKey.Protect carica un fornitore da una factory che alla fine racchiude il DPAPI metodi di protezione - in particolare CryptProtectData , utilizzando l'hash dell'elenco delle finalità come campo" entropia facoltativa ". Il DPAPI applica automaticamente un sale e un MAC.

    
risposta data 18.05.2015 - 15:02
fonte

Leggi altre domande sui tag