Autentiserad krypteringsinformation i ASP.NET Core

Anrop till IDataProtector.Protect är autentiserade krypteringsåtgärder. Metoden Protect erbjuder både konfidentialitet och autenticitet, och den är kopplad till den syfteskedjan som användes för att härleda specifikt denna IDataProtector-instans från dess ursprungliga IDataProtectionProvider.

IDataProtector.Protect tar en byte[] klartextparameter och genererar en byte[] skyddad nyttolast, vars format beskrivs nedan. (Det finns också en överlagring av tilläggsmetoden som tar en strängparameter i klartext och returnerar en strängskyddad nyttolast. Om det här API:et används har det skyddade nyttolastformatet fortfarande strukturen nedan, men den kommer att vara base64url-kodad.)

Skyddat nyttolastformat

Det skyddade nyttolastformatet består av tre primära komponenter:

  • En 32-bitars magisk rubrik som identifierar versionen av dataskyddssystemet.

  • Ett 128-bitars nyckel-ID som identifierar nyckeln som används för att skydda just den här nyttolasten.

  • Resten av den skyddade nyttolasten är specifik för krypteraren som omfattas av denna nyckel. I exemplet nedan representerar nyckeln en AES-256-CBC + HMACSHA256 kryptering, och nyttolasten delas upp ytterligare enligt följande:

    • En 128-bitars nyckelmodifierare.
    • En 128-bitars initieringsvektor.
    • 48 byte AES-256-CBC-utdata.
    • En HMACSHA256 autentiseringstagg.

Nedan visas en exempelskyddad nyttolast.

09 F0 C9 F0 80 9C 81 0C 19 66 19 40 95 36 53 F8
AA FF EE 57 57 2F 40 4C 3F 7F CC 9D CC D9 32 3E
84 17 99 16 EC BA 1F 4A A1 18 45 1F 2D 13 7A 28
79 6B 86 9C F8 B7 84 F9 26 31 FC B1 86 0A F1 56
61 CF 14 58 D3 51 6F CF 36 50 85 82 08 2D 3F 73
5F B0 AD 9E 1A B2 AE 13 57 90 C8 F5 7C 95 4E 6A
8A AA 06 EF 43 CA 19 62 84 7C 11 B2 C8 71 9D AA
52 19 2E 5B 4C 1E 54 F0 55 BE 88 92 12 C1 4B 5E
52 C9 74 A0

Från nyttolastformatet ovanför de första 32 bitarna, eller 4 byte, är den magiska rubriken som identifierar versionen (09 F0 C9 F0)

Nästa 128 bitar eller 16 byte är nyckelidentifieraren (80 9C 81 0C 19 66 19 40 95 36 53 F8 AA FF EE 57)

Resten innehåller nyttolasten och är specifikt för formatet som används.

Varning

Alla nyttolaster som skyddas av en viss nyckel börjar med samma 20-bytesrubrik (magiskt värde, nyckel-ID). Administratörer kan använda det här faktumet för diagnostiska ändamål för att uppskatta när en nyttolast genererades. Nyttolasten ovan motsvarar till exempel nyckeln {aaaaaaaaaa-0b0b-1c1c-2d2d-3333333333333}. Om du efter att ha kontrollerat nyckelrespositoriet upptäcker att den här specifika nyckelns aktiveringsdatum var 2015-01-01 och dess förfallodatum var 2015-03-01, är det rimligt att anta att nyttan (om den inte manipulerades) genererades inom det tidsfönstret, med en ungefärlig justeringsfaktor på båda sidor.