Как использовать Data Protection API в C#

Data Protection API (DPAPI) в C# предоставляет встроенные механизмы для шифрования и защиты данных. В .NET Core и .NET 5+ используется Microsoft.AspNetCore.DataProtection, обеспечивающий удобный способ хранения и управления зашифрованными данными.

Основные возможности Data Protection API

  • Шифрование и расшифровка данных — защита конфиденциальной информации.
  • Хранилище ключей — управление ключами шифрования с возможностью сохранения в файловой системе, реестре Windows или внешних хранилищах.
  • Защита временных данных — использование временных токенов и других методов контроля доступа.

Установка Data Protection API

Data Protection API доступен в пакете Microsoft.AspNetCore.DataProtection, который можно добавить через NuGet:

 dotnet add package Microsoft.AspNetCore.DataProtection

Использование Data Protection API

Пример шифрования и расшифровки данных с использованием IDataProtector:

using Microsoft.AspNetCore.DataProtection;
using System;

var provider = DataProtectionProvider.Create("SampleApp");
var protector = provider.CreateProtector("MySecretKey");

string protectedData = protector.Protect("Конфиденциальные данные");
string unprotectedData = protector.Unprotect(protectedData);

Console.WriteLine($"Зашифрованные данные: {protectedData}");
Console.WriteLine($"Расшифрованные данные: {unprotectedData}");

Настройка хранилища ключей

Data Protection API позволяет настраивать хранилище ключей в различных источниках:

  • Файловая система — для постоянного хранения ключей между перезапусками приложения.
  • Реестр Windows — надёжное хранилище для серверных приложений.
  • Azure Key Vault — защита ключей в облачном хранилище.

Пример настройки хранилища ключей в файловой системе:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDataProtection()
    .PersistKeysToFileSystem(new DirectoryInfo(@"C:\Keys"))
    .SetApplicationName("MyApp");
    
var app = builder.Build();

app.Run();

Использование Data Protection API в ASP.NET Core

Data Protection API интегрирован в ASP.NET Core и автоматически используется для защиты аутентификационных токенов, cookie-файлов и других конфиденциальных данных.

Добавление защиты данных в Startup.cs:

services.AddDataProtection()
    .PersistKeysToFileSystem(new DirectoryInfo(@"C:\Keys"))
    .SetApplicationName("MySecureApp");

Data Protection API предоставляет мощные инструменты для защиты данных в C#-приложениях, обеспечивая безопасное хранение и передачу конфиденциальной информации.