Aracılığıyla paylaş


ASP.NET Core'da kimliği doğrulanmış şifreleme ayrıntıları

IDataProtector.Protect çağrısı, kimliği doğrulanmış şifreleme işlemleridir. Protect yöntemi hem gizlilik hem de orijinallik sunar ve bu belirli IDataProtector örneğini kök IDataProtectionProvider'dan türetmek için kullanılan amaç zincirine bağlıdır.

IDataProtector.Protect bir bayt[] düz metin parametresi alır ve biçimi aşağıda açıklanan bir bayt[] korumalı yük üretir. (Ayrıca bir dize düz metin parametresi alan ve dize korumalı bir yük döndüren bir uzantı yöntemi aşırı yüklemesi de vardır. Bu API kullanılırsa korumalı yük biçimi yine de aşağıdaki yapıya sahip olur, ancak base64url ile kodlanmış olur.)

Korumalı yük biçimi

Korumalı yük biçimi üç birincil bileşenden oluşur:

  • Veri koruma sisteminin sürümünü tanımlayan 32 bit sihirli üst bilgi.

  • Bu yükü korumak için kullanılan anahtarı tanımlayan 128 bit anahtar kimliği.

  • Korunan yükün geri kalanı, bu anahtar tarafından kapsüllenen şifreleyiciye özgüdür. Aşağıdaki örnekte anahtar bir AES-256-CBC + HMACSHA256 şifreleyiciyi temsil eder ve yük aşağıdaki gibi daha da alt bölümlere ayrılır:

    • 128 bit anahtar değiştirici.
    • 128 bit başlatma vektöru.
    • 48 bayt AES-256-CBC çıkışı.
    • HMACSHA256 kimlik doğrulama etiketi.

Örnek korumalı yük aşağıda gösterilmiştir.

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

İlk 32 bit veya 4 bayt üzerindeki yük biçiminden sürümü tanımlayan sihirli üst bilgidir (09 F0 C9 F0)

Sonraki 128 bit veya 16 bayt anahtar tanımlayıcısıdır (80 9C 81 0C 19 66 19 40 95 36 53 F8 AA FF EE 57)

Geri kalanı yükü içerir ve kullanılan biçime özgüdür.

Uyarı

Belirli bir anahtara korunan tüm yükler aynı 20 baytlık (sihirli değer, anahtar kimliği) üst bilgisiyle başlar. Yönetici istrator'lar bu gerçeği tanılama amacıyla kullanarak yükün ne zaman oluşturulduğunu tahmin edebilir. Örneğin, yukarıdaki yük {0c819c80-6619-4019-9536-53f8aaffee57} anahtarına karşılık gelir. Anahtar deposunu denetledikten sonra bu anahtarın etkinleştirme tarihinin 2015-01-01 ve son kullanma tarihinin 2015-03-01 olduğunu fark ederseniz, yükün (üzerinde oynanmadıysa) bu pencere içinde oluşturulduğunu varsaymak mantıklıdır, her iki tarafta da küçük bir fudge faktörü verin veya alın.