Il mio obiettivo è implementare la crittografia asimmetrica in un sito Web ASP.NET per proteggere i numeri di previdenza sociale immessi dall'utente. Voglio crittografare gli SSN con una chiave pubblica, e visualizzare solo una versione mascherata, per l'utente (cioè XXX-XX-1234
). (Un'applicazione separata che si allontana dal sito Web avrà accesso alla chiave privata e decrittografa gli SSN per trasferirli su un altro sistema.)
Sto tentando di utilizzare RSACryptoServiceProvider
incorporato, ma continuo a ricevere un errore:
The system cannot find the file specified.
Funziona perfettamente sul mio computer, perché sono un amministratore sulla mia macchina. Ma sul server (Windows 2008 R2 Standard), si verifica un errore. Il sito web è in esecuzione come IIS APPPOOL\MyWebSiteName
.
Ho visto su un tutorial che avrei dovuto fornire l'autorizzazione NTFS di IIS per C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA
. Il motivo è che presumibilmente l'API RSA scrive i file temporanei in quella cartella, anche se gli si assegnano le chiavi in memoria. Ma ho provato diverse combinazioni di utenti e permessi e niente ha funzionato.
Mi rendo conto che potrei inserire la coppia di chiavi pubblica / privata in un contenitore di chiavi e utilizzare aspnet_regiis.exe
per concedere l'accesso IIS alla chiave, ma che vanifica lo scopo di mantenere la chiave privata separata dal sito web. Sono anche preoccupato che dare l'accesso a IIS a questa cartella comprometterebbe anche gli altri contenitori di chiavi di sistema ivi memorizzati.
Come faccio a far funzionare ASP.NET con RSACryptoServiceProvider
? O dovrei semplicemente usare qualche altro metodo per fare la crittografia RSA?