Según una encuesta reciente de Positive Technologies, las vulnerabilidades de fuga de datos y los problemas de seguridad afectan al 44 % de las aplicaciones web. Los datos confidenciales están presentes en todas las aplicaciones web y el robo de datos ocurre cuando esos datos no están protegidos adecuadamente. Entonces, para una protección de datos adecuada, ASP.NET Core utiliza API criptográficas, además del algoritmo de cifrado para proteger los datos y evitar cualquier pérdida de datos. Los datos que no deberían ser accesibles para todos en un entorno compartido se pueden proteger mediante el proveedor de protección de datos ASP.NET.
En este blog, cubriremos cómo funciona el proveedor de protección de datos ASP.NET y el rol de NCache como proveedor de almacenamiento de claves.
ASP.NET Core Proveedor de protección de datos
La protección de datos es una característica de ASP.NET Core que le permite proteger sus datos utilizando varios métodos de encriptación. AES-256-CBC y HMACSHA256 son los algoritmos de protección de carga útil estándar, utilizados respectivamente para la confidencialidad y la autenticidad. Las dos subclaves esenciales para estos métodos se derivan de una clave maestra de 512 bits que se modifica cada 90 días por carga útil.
1 2 3 |
services.AddDataProtection() // use a 14-day lifetime instead of a 90-day lifetime .SetDefaultKeyLifetime(TimeSpan.FromDays(14)); |
La clave generada se almacena/mantiene utilizando proveedores de almacenamiento de claves.
Proveedores de almacenamiento de claves
El sistema de protección de datos emplea un mecanismo de descubrimiento predeterminado para determinar dónde deben permanecer las claves criptográficas. El desarrollador puede anular el mecanismo de descubrimiento predeterminado y especificar manualmente la ubicación.
1. Proveedor de almacenamiento de claves predeterminado
De forma predeterminada, las claves persisten en una carpeta temporal especificada en Windows en ASP.NET Core, pero almacenar las claves en la ubicación predeterminada tiene un inconveniente: varias instancias de aplicaciones web no pueden acceder a las claves. Por lo tanto, para que las claves estén disponibles en varios servidores y todas las instancias de aplicaciones web puedan acceder a ellas, el usuario debe especificar manualmente una ubicación para la persistencia de la clave.
2. NCache como proveedor de almacenamiento clave
Para que las claves estén disponibles en varios servidores, ASP.NET Core le permite configurar su proveedor de almacenamiento de claves. Aquí podemos usar NCache como proveedor de almacenamiento de claves, las claves persisten en un caché y, dado que NCache es un caché compartido en todo el clúster, esto hace que las claves estén disponibles para todas las instancias de aplicaciones web. Usando el método, PersistKeysToNCache
.
- Persistir claves paraNCache
PersistKeysToNCache
es el punto de entrada donde el usuario puede especificar el nombre de caché y la etiqueta de caché donde las claves persistirán durante la configuración NCache como proveedor de almacenamiento de claves.
Configurando NCache como proveedor de almacenamiento clave
NCache funciona como un proveedor de almacenamiento de claves para almacenar las claves de los servicios de protección de datos, y su configuración es sencilla y fácil. Para configurar NCache ASP.NET Core Proveedor de protección de datos, siga los pasos a continuación.
Paso 1: Configurar el servicio de protección de datos
ASP.NET Core proporciona middleware para la protección de datos. Este middleware debe agregarse a la colección de servicios utilizando el AddDataProtection()
método. Proveer DirectoryInfo
apuntando al repositorio donde se deben almacenar las claves.
- Abra la inicio.cs archivo de su proyecto.
- En
ConfigureServices()
método, agregue el siguiente servicio:
1 2 3 4 |
public void ConfigureServices(IServiceCollection services) { services.AddDataProtection(); } |
Paso 2: Instale el paquete NuGet
El primer paso es instalar el paquete NuGet que permite compartir ASP.NET Core Claves de protección de datos en NCache. Para instalar el paquete NuGet, primero abra Visual Studio e ir a Herramientas -> Administrador de paquetes NuGet -> Consola de administrador de paquetes y luego busque el paquete NuGet AspNetCore.DataProtection.NCache
.
Paso 3: Configurar NCache como proveedor de almacenamiento de claves para el servicio de Protección de Datos
Después de instalar el paquete NuGet, primero debe configurar NCache como proveedor de almacenamiento de claves para almacenar claves para servicios de protección de datos.
1 2 3 4 5 6 |
public void ConfigureServices(IServiceCollection services) { string cacheName = "demoCache"; string cacheTag = "encryptions_keys_tag"; services.AddDataProtection().PersistKeysToNCache(cacheName, cacheTag); } |
Para un uso posterior NCache como proveedor de almacenamiento clave en ASP.NET Core proveedor de protección de datos, implemente la aplicación de muestra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
using System; using Microsoft.Extensions.DependencyInjection; using Microsoft.AspNetCore.DataProtection; using Alachisoft.NCache.AspNetCore.DataProtection; namespace DataProtectionSample { public class Program { static void Main(string[] args) { string cacheName = "demoLocalCache"; string cacheTag = "MyEncryptionKeys"; var serviceCollection = new ServiceCollection(); serviceCollection.AddDataProtection() .PersistKeysToNCache(cacheName,cacheTag); var services = serviceCollection.BuildServiceProvider(); // create an instance of MyClass using the service provider var instance = ActivatorUtilities.CreateInstance(services); instance.RunSample(); } } Public class MyClass { IDataProtector _protector; // the 'provider' parameter is provided by DI public MyClass(IDataProtectionProvider provider) { _protector = provider.CreateProtector("Contoso.MyClass.v1"); } public void RunSample() { Console.Write("Enter input: "); string input = Console.ReadLine(); // protect the payload string protectedPayload = _protector.Protect(input); Console.WriteLine($"Protect returned: {protectedPayload}"); // unprotect the payload string unprotectedPayload = _protector.Unprotect(protectedPayload); Console.WriteLine($"Unprotect returned: {unprotectedPayload}"); } } } |
Conclusión
ASP.NET Core garantiza que los datos agregados estén seguros mediante el uso de API criptográficas además de algoritmos de cifrado, que son igualmente importantes. Esencialmente, NCache actúa como un proveedor de almacenamiento de claves para almacenar claves y luego las hace accesibles para múltiples instancias de aplicaciones web. Por lo tanto, descargue una versión de prueba de 60 días completamente funcional ahora y utilícela usted mismo.
Gran información. Gracias por compartir