Utilizzare DPAPI: cifrare dati sensibili

di Daniele Bochicchio, in ASP.NET, C#, Data Protection API,

DataProtection API (DPAPI) è una delle novità introdotta con Windows 2000, che consente di utilizzare una cifratura su dati riservati (ad esempio salvati nel web.config), per rendere meno vulnerabili le applicazioni.
Capita spesso che il web.config contenga informazioni sensibili quali la stringa di connessione ad un database o le credenziali di accesso ad un servizio e DPAPI ci viene incontro con un meccanismo di cifratura che si implementa abbastanza facilmente.
Per prima cosa occorre creare una class libray specifica che, attraverso Interop, fornisca alle nostre classi l'accesso alle funzioni di DPAPI, che sono offerte da oggetti COM installati direttamente dal sistema operativo.
E' allegata a questo script e va referenziata nei progetti in cui se ne dovrà fare uso.

Lo script di oggi si occupa della prima parte, quella di cifratura dei dati, mentre il prossimo si occuperà del contrario.
Nel nostro esempio creeremo una pagina che utilizzerà questa funzione per creare la stringa criptata per l'accesso al nostro database, da salvare poi nel web.config:

using ASPItalia.com.Security;

// testo da rendere cifrato
public string Crypt(string originalText)
{
  // creo un'istanza della classe che usa DPAPI
  DPAPI dp = new DPAPI(DPAPI.Store.USE_MACHINE_STORE);

  // conversione in array di byte
  byte[] data = Encoding.ASCII.GetBytes(originalText);

  // stringa cifrata
  return Convert.ToBase64String(dp.Encrypt(data,null));
}

La chiave utilizzata da DPAPI è univoca per ogni computer, dunque la stessa stringa non può essere decifrata su un altro computer.
Per questa ragione la stringa stessa deve essere creata, ad esempio attraverso una pagina web protetta dall'autenticazione, sullo stesso server web sulla quale sarà utilizzata.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi