(Full disclosure: sono già un partecipante attivo qui e su StackOverflow, ma per ragioni che dovrebbero, si spera, essere ovvio, ho scelto di porre questa particolare domanda in modo anonimo).
Attualmente lavoro per un piccolo negozio di software che produce software venduto commercialmente per gestire aziende di piccole e medie dimensioni in un paio di industrie abbastanza specializzate. Poiché queste industrie sono rivolte al cliente, gran parte del software è correlata alla memorizzazione e alla gestione delle informazioni dei clienti. In particolare, l'archiviazione (e la messa in sicurezza) delle informazioni sulla carta di credito del cliente. Con ciò, ovviamente, arriva la conformità PCI.
Per farla breve, mi rimangono un paio di domande sul perché certe cose sono state fatte come erano, e sfortunatamente sono senza molte risorse al momento. Questo è un piccolo negozio molto (riporto direttamente al proprietario, così come l'unico altro impiegato a tempo pieno) e il proprietario non ha una risposta a queste domande, e lo sviluppatore precedente è ... err ... non disponibile.
Problema 1: ricodifica periodica
A partire da ora, il software richiede all'utente di eseguire una nuova crittografia di tutte le informazioni sensibili nel database (in pratica numeri di carta di credito e password utente) se una di queste condizioni è vera:
-
Nel database sono presenti informazioni non crittografate di informazioni sensibili (aggiunte tramite un'istruzione di database manuale anziché tramite l'oggetto business, ad esempio). Questo non dovrebbe accadere durante l'uso normale del software.
-
La chiave attuale è stata utilizzata per più di un determinato periodo di tempo. Credo che siano 12 mesi, ma non ne sono certo. Il punto qui è che la chiave "scade".
Questa è la mia prima incursione nello sviluppo di soluzioni commerciali che si occupa di PCI, quindi sono sfortunatamente maleducato sulle pratiche coinvolte. C'è qualche aspetto della conformità PCI che impone (o anche solo raccomanda strongmente) l'aggiornamento periodico dei tasti?
Questo non è un grosso problema per me se non al momento non ho una buona spiegazione da dare agli utenti finali se chiedono il motivo per cui gli viene richiesto di eseguirlo.
Domanda 1: il concetto di standard di scadenza chiave e, in tal caso, è semplicemente lo standard del settore o un elemento di PCI?
Problema 2: archiviazione chiavi
Ecco il mio vero problema ... la chiave di crittografia è memorizzata nel database , semplicemente offuscata. La chiave viene riempita a sinistra ea destra con pochi byte inutili e alcuni bit vengono ruotati, ma fondamentalmente non c'è nulla che impedisca a una persona intraprendente di esaminare il nostro codice (puntinato), determinando il modello utilizzato per trasformare la chiave memorizzata nella chiave reale, quindi usando quella chiave per eseguire amok. Mi sembra una pratica orribile, ma voglio assicurarmi che questa non sia solo una di quelle pratiche "sorridenti e tolleranti" che le persone in questo settore hanno intrapreso. Ho sviluppato un approccio alternativo che impedirebbe un tale attacco, ma sto solo cercando un controllo di sanità mentale qui.
Domanda 2: questo metodo di memorizzazione delle chiavi è la memorizzazione della chiave nel database utilizzando un metodo di offuscamento esistente nel codice client: normale o pazzesco?
Credimi, so che il consiglio gratuito vale ogni centesimo che ho pagato per questo, nessuno qui è un avvocato (o almeno non offre consulenza legale), caveat emptor, ecc. ecc., ma io Sto cercando qualsiasi input che tutti voi possiate fornire. Grazie in anticipo!