Stiamo sviluppando un'applicazione web in cui alcuni utenti non registrati (clienti) devono inviare i dettagli della carta di credito ad altri utenti (commercianti), che, presumibilmente, sono conformi PCI.
Stiamo cercando di ottenere la conformità PCI, ma il processo richiederà sicuramente molto tempo. Pertanto stiamo esaminando altre soluzioni che non richiedono il rilascio di una certificazione e che ci proteggono dal furto di dati sensibili.
Il nostro piano è:
- Fai generare al commerciante una chiave privata e una pubblica
- Memorizza la chiave privata nel suo browser usando localstorage (e fornisce un mezzo per eseguirne il backup)
- Fornire la chiave pubblica nel modulo utilizzato da un client
- Prima che il client invii i dati, crittografa tutto con la chiave pubblica del commerciante
- Archivia i dati crittografati nel nostro server
- Fornisci i dati crittografati al commerciante
- Fai decrittografare i dati nel browser utilizzando il suo codice privato
L'idea era di usare JavaScript e la libreria jsencrypt .
Vedi problemi di sicurezza in questo flusso di lavoro? Pensi che abbiamo ancora bisogno della conformità PCI quando si utilizza un sistema del genere? Il ragionamento è che, per chiunque non abbia la chiave privata, questi sono solo byte casuali.
L'unico attacco a cui riesco a pensare è qualcuno che compromette il server e sostituisce una chiave pubblica mercantile con la propria chiave. Ma poteva anche rubare un gettone per un altro gateway di pagamento e fingere la comunicazione necessaria per fare qualcosa di brutto.
Sappiamo di servizi come Paymill, Braintree e Stripe (che offrono librerie lato client piuttosto buone) ma non sono adatti alla nostra soluzione (o meglio: sono alternative che renderemo disponibili per i commercianti - ma dovrebbe essere a loro decidere).
Grazie in anticipo
EDIT: Sono completamente d'accordo con voi ragazzi e preferirei lavorare con soluzioni di terze parti.
Il problema è che stiamo lavorando in un mercato in cui la maggior parte dei nostri concorrenti sono piccole aziende che lavorano senza la conformità PCI (e la maggior parte di loro anche senza HTTPS !!). I nostri concorrenti ricevono semplicemente dati CC, li memorizzano e danno accesso agli utenti.
Sappiamo dei rischi di tale approccio, ma gli utenti non lo fanno e preferiscono le loro soluzioni ai nostri perché preferiscono avere tutti i dati CC, invece di avere solo i pulsanti per eseguire le azioni.