Sdílet prostřednictvím


Ověřené podrobnosti šifrování v ASP.NET Core

Volání IDataProtector.Protect jsou ověřené operace šifrování. Metoda Protect nabízí důvěrnost i pravost a je svázaná s řetězem účelu, který byl použit k odvození této konkrétní instance IDataProtector z jeho kořenového IDataProtectionProvider.

IDataProtector.Protect přebírá bajt[] parametr prostého textu a vytvoří datovou část chráněnou bajtem[], jejíž formát je popsán níže. (Existuje také přetížení rozšiřující metody, které přebírá parametr prostého textu řetězce a vrací datovou část chráněnou řetězcem. Pokud toto rozhraní API používá chráněný formát datové části, bude mít stále následující strukturu, ale bude zakódovaná jako base64url.)

Chráněný formát datové části

Chráněný formát datové části se skládá ze tří primárních komponent:

  • 32bitová hlavička magic, která identifikuje verzi systému ochrany dat.

  • 128bitové ID klíče, které identifikuje klíč použitý k ochraně této konkrétní datové části.

  • Zbývající část chráněné datové části je specifická pro zapouzdření šifrovaného klíče. V následujícím příkladu představuje klíč AES-256-CBC + HMACSHA256 encryptor a datová část je dále rozdělena následujícím způsobem:

    • Modifikátor 128bitového klíče.
    • 128bitový inicializační vektor.
    • 48 bajtů výstupu AES-256-CBC.
    • Značka ověřování HMACSHA256.

Níže je znázorněna ukázková datová část chráněná.

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

Z formátu datové části nad prvními 32 bity nebo 4 bajty jsou magická hlavička identifikující verzi (09 F0 C9 F0)

Další 128 bitů nebo 16 bajtů je identifikátor klíče (80 9C 81 0C 19 66 19 40 95 36 53 F8 AA FF EE 57)

Zbývající část obsahuje datovou část a je specifická pro použitý formát.

Upozorňující

Všechny datové části chráněné na daný klíč budou začínat stejnou hlavičkou 20 bajtů (magická hodnota, ID klíče). Správci můžou tuto skutečnost použít k diagnostickým účelům, aby se při vygenerování datové části odhadli. Například výše uvedená datová část odpovídá klíči {aaaaaaaaaa-0b0b-1c1c-2d2d-333333333}. Pokud po kontrole úložiště klíčů zjistíte, že datum aktivace tohoto konkrétního klíče bylo 2015-01-01 a jeho datum vypršení platnosti bylo 2015-03-01, pak je vhodné předpokládat, že datová část (pokud není manipulována) vygenerována v tomto okně, dát nebo vzít malý faktor fudge na obou stranách.