Sto pensando al modo più sicuro per archiviare dati sicuri (ad esempio numeri di carta di credito) con l'obbligo di inviarli in testo chiaro a API di terze parti (quindi l'hashing non entra in gioco).
Sono arrivato a una soluzione che sembra essere più sicura rispetto a quella tipica "memorizzali crittografati e decifrati quando devi utilizzarli utilizzando la stessa chiave".
L'idea è di crittografarlo e archiviarlo sul server dell'applicazione direttamente dopo averlo acquisito dall'utente con una chiave pubblica.
La chiave privata non verrebbe memorizzata sul server delle applicazioni. Invece il server delle applicazioni invierà il messaggio all'API di terze parti utilizzando i valori crittografati.
La seconda parte della soluzione sarebbe un proxy HTTP su un server separato che indirizza i messaggi all'API di terze parti e decrittografa i valori crittografati. La chiave privata verrebbe memorizzata solo sul proxy e non verrebbe memorizzata su disco (solo nella RAM - ogni riavvio richiederebbe l'inserimento della chiave privata).
Sembra che usare il proxy come una scatola nera che non avrebbe bisogno di cambiare nonostante lo sviluppo dell'applicazione aiuterebbe a proteggerlo meglio del server delle applicazioni (a cui più persone devono avere accesso). Inoltre, a causa della necessità di non memorizzare la chiave privata sul disco, non sarebbe un problema inserire la chiave dopo ogni riavvio del server proxy poiché non dovrebbe essere riavviata frequentemente come una macchina server delle applicazioni .
Qualche idea su vantaggi e svantaggi di tale soluzione? Ci sono delle applicazioni che potrebbero aiutarmi a raggiungerlo (proxy con capacità di usare codice di trasformazione personalizzato, metodo di memorizzazione sicura dei valori nella RAM)?