Megosztás a következőn keresztül:


Kulcstitkosítás inaktív állapotban a Windowsban és az Azure-ban a ASP.NET Core használatával

Az adatvédelmi rendszer alapértelmezés szerint felderítési mechanizmust alkalmaz annak meghatározására, hogy a titkosítási kulcsokat hogyan kell titkosítani inaktív állapotban. A fejlesztő felülbírálhatja a felderítési mechanizmust, és manuálisan megadhatja, hogy a kulcsok hogyan legyenek titkosítva inaktív állapotban.

Figyelmeztetés

Ha megad egy explicit kulcsmegőrzési helyet, az adatvédelmi rendszer letiltja az alapértelmezett, nyugvó állapotban lévő kulcstitkosítást. Következésképpen a kulcsok már nincsenek titkosítva nyugalmi állapotban. Javasoljuk az explicit kulcstitkosítási mechanizmus megadását éles telepítéshez. A inaktív állapotú titkosítási mechanizmus beállításait ebben a témakörben ismertetjük.

Azure Key Vault

További információ: ASP.NET Core Data Protectionkonfigurálása.

Windows DPAPI

Csak Windows telepítésekre vonatkozik.

A Windows DPAPI használata esetén a rendszer titkosítja a kulcsanyagot a CryptProtectData használatával, mielőtt a tárolóban marad. A DPAPI egy megfelelő titkosítási mechanizmus az olyan adatokhoz, amelyeket soha nem olvasnak el az aktuális gépen kívül (bár ezekről a kulcsokról is lehet biztonsági másolatot készíteni az Active Directoryba). A DPAPI key-at-rest titkosítás konfigurálásához hívja meg az egyik ProtectKeysWithDpapi bővítménymetódust:

// Only the local user account can decrypt the keys
services.AddDataProtection()
    .ProtectKeysWithDpapi();

Ha a ProtectKeysWithDpapi paraméterek nélkül hívják meg, csak az aktuális Windows-felhasználói fiók tudja megfejteni a tárolt kulcsgyűrűt. Megadhatja, hogy a gép bármely felhasználói fiókja (nem csak az aktuális felhasználói fiók) képes legyen a kulcsgyűrű visszafejtésére:

// All user accounts on the machine can decrypt the keys
services.AddDataProtection()
    .ProtectKeysWithDpapi(protectToLocalMachine: true);

X.509-tanúsítvány

Ha az alkalmazás több gépen is el van osztva, célszerű lehet megosztott X.509-tanúsítványt (.pfx formátumot) terjeszteni a gépek között, és konfigurálni a üzemeltetett alkalmazásokat, hogy a tanúsítványt használják a kulcsok inaktív titkosításához.

Az alábbi példában a tanúsítvány ujjlenyomata a következőnek lesz átadva ProtectKeysWithCertificate:

services.AddDataProtection()
    .ProtectKeysWithCertificate("{CERTIFICATE THUMBPRINT}");

Az alábbi példában egy X509Certificate2 kerül átadásra a ProtectKeysWithCertificate-nek.

var cert = new X509Certificate2(...);

services.AddDataProtection()
    .ProtectKeysWithCertificate(cert);

A tanúsítvány létrehozásához használja az alábbi módszerek vagy bármely más megfelelő eszköz vagy online szolgáltatás egyikét:

További információ: Önaláírt tanúsítványok létrehozása a .NET parancssori felülettel.

A .NET-keretrendszer korlátozásai miatt csak a CAPI titkos kulcsokkal rendelkező tanúsítványok támogatottak. A korlátozások lehetséges kerülő megoldásait az alábbi tartalomban találja.

Windows DPAPI-NG

Ez a mechanizmus csak Windows 8/Windows Server 2012 vagy újabb rendszereken érhető el.

A Windows 8-tól kezdve a Windows operációs rendszer támogatja a DPAPI-NG (más néven CNG DPAPI) használatát. További információt a CNG DPAPI-ról szóló cikkben talál.

A főösszeg védelmi leíró szabályként van kódolva. A következő ProtectKeysWithDpapiNG hívó példában csak a megadott SID-del rendelkező, tartományhoz csatlakoztatott felhasználó tudja visszafejteni a kulcsgyűrűt.

public void ConfigureServices(IServiceCollection services)
{
    // Uses the descriptor rule "SID=S-1-5-21-..."
    services.AddDataProtection()
        .ProtectKeysWithDpapiNG("SID=S-1-5-21-...",
        flags: DpapiNGProtectionDescriptorFlags.None);
}

A ProtectKeysWithDpapiNG is rendelkezik egy paraméter nélküli túlterheléssel. Ezzel a kényelmi módszerrel adja meg a "SID={CURRENT_ACCOUNT_SID}" szabályt, ahol CURRENT_ACCOUNT_SID az aktuális Windows-felhasználói fiók SID-azonosítója:

public void ConfigureServices(IServiceCollection services)
{
    // Use the descriptor rule "SID={current account SID}"
    services.AddDataProtection()
        .ProtectKeysWithDpapiNG();
}

Ebben a forgatókönyvben az AD-tartományvezérlő felelős a DPAPI-NG műveletek által használt titkosítási kulcsok terjesztéséért. A célfelhasználó képes visszafejteni a titkosított hasznos terhet bármilyen tartományhoz csatlakoztatott gépről (feltéve, hogy a folyamat az ő identitása alatt fut).

Tanúsítványalapú titkosítás Windows DPAPI-NG

Ha az alkalmazás Windows 8.1/Windows Server 2012 R2 vagy újabb rendszeren fut, a Windows DPAPI-NG használatával tanúsítványalapú titkosítást végezhet. Használja a "CERTIFICATE=HashId:{CERTIFICATE THUMBPRINT}" szabályleíró sztringet, ahol a {CERTIFICATE THUMBPRINT} helyőrző a tanúsítvány hexán kódolt SHA1 ujjlenyomata:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDataProtection()
        .ProtectKeysWithDpapiNG("CERTIFICATE=HashId:{CERTIFICATE THUMBPRINT}",
            flags: DpapiNGProtectionDescriptorFlags.None);
}

Az adattárra mutatott alkalmazásoknak Windows 8.1/Windows Server 2012 R2 vagy újabb rendszeren kell futniuk a kulcsok visszafejtéséhez.

Egyéni kulcstitkosítás

Ha a beépített mechanizmusok nem megfelelőek, a fejlesztő egyéni IXmlEncryptorbeállítással megadhatja saját kulcstitkosítási mechanizmusát.