Come impedire agli amministratori di sistema di manomettere il codice?

0

Supponiamo che tu abbia alcuni dati sensibili dell'utente che devi proteggere (ad esempio, per la conformità PCI) e lo hai fatto facendo in modo che il codice del server lo crittografi prima di memorizzarlo in un server separato dove nessun utente ha accesso ad entrambi.

Ma cosa si potrebbe fare per fermare chiunque stia distribuendo il codice modificandolo per salvarlo altrove in modo non criptato (o crittografato con la propria chiave), o altrimenti interrogando e decodificando il database manualmente (poiché il server stesso avrebbe bisogno di un modo per decrittografarlo esso)?

Ci si sente come se fosse usato qualcosa di DRM, ma in qualche modo dubito di ciò che accade nella pratica (e il DRM è intrinsecamente insicuro). Non vedo come un TPM possa essere d'aiuto a causa del server che deve essere in grado di crittografare e decifrare.

Cosa è necessario in merito a ciò quando si richiede la conformità PCI? Cosa viene spesso fatto per prevenire la "decrittazione" di cui sopra? Cosa cambierebbe se il server avesse solo bisogno di crittografare ("scrivere") e non decifrare ("leggere")?

Nota: non sto applicando per la conformità PCI - Sono solo interessato a come è fatto.

    
posta 小太郎 15.02.2016 - 08:49
fonte

2 risposte

3

In realtà non c'è controllo nell'applicazione stessa. Spesso, in pratica, ciò viene verificato utilizzando i principi dei due occhi per le distribuzioni (nessuno utente può accedere o modificare il sistema da solo) o utilizza soluzioni che eseguono la contabilità completa dei comandi come Powerbroker o CyberArk.

Si noti che questi sistemi dovrebbero quindi essere gestiti anche da team indipendenti.

    
risposta data 15.02.2016 - 09:50
fonte
2

La cosa migliore qui, sarebbe quella di firmare il codice, usando una root personalizzata importata nel server. (La PKI interna è consentita per la conformità PCI se il sistema PKI in questione è utilizzato solo internamente)

Impedire a qualcuno di modificare il software del server se ha accesso fisico è impossibile, quindi quello che devi fare è mettere il server fisicamente al sicuro, così 2 persone hanno bisogno di scansionare la loro carta di accesso allo stesso tempo per ottenere accesso al server. Preferibile, il doppio controllo viene distribuito allo sviluppatore (uno che scrive il codice) e al deployer (uno che distribuisce il codice).

Il meglio qui sarebbe avere 2 porte nella stanza del server (in serie), dove il deployer ha la scheda di accesso alla prima porta e lo sviluppatore ha la carta di accesso alla seconda porta. Ciò significa che entrambi devono essere uniti per essere in grado di eseguire la manutenzione fisica sul server.

Quindi è possibile avere un terminale di distribuzione tra queste 2 porte, dove il server accetterà solo il codice dal terminale di distribuzione se è firmato dalla radice personalizzata. Poiché questo terminale di distribuzione è dietro la prima porta, solo il deployer ha accesso a questo terminale, non allo sviluppatore. Ciò significa che lo sviluppatore e il deployer non hanno bisogno di venire insieme per installare nuovo software sul server, ma comunque, sia lo sviluppatore che il deployer devono accettare lo stesso codice, ma possono farlo in luoghi separati.

Si noti che tutti, anche quelli che hanno accesso solo a un sistema certificato PCI per la memorizzazione delle informazioni sui titolari di carta (con accesso parziale, intendo quando un accesso è bloccato, 2 persone devono riunirsi e autenticarsi, e la persona ha solo la metà di ciò che è necessario per ottenere l'accesso) deve essere completamente controllato, ad esempio è necessario richiedere fogli rap dal dipartimento di polizia, e forse è anche necessario controllare i parenti della persona da impiegare, quindi la persona che richiede lavoro non ha un padre che in precedenza ha rubato un banca. (Ad esempio, in Svezia, l'intero social network viene controllato quando si applica per impieghi molto sensibili, e questo controllo è fatto da "Polizia di sicurezza", in Svezia, chiamato SÄPO, e tu come richiedente si ottiene solo un sì o no, non si Puoi sapere chi nella tua rete di contatti sociali è "inaffidabile", per proteggere la privacy di queste persone, e persino che non ti è permesso di essere sospettato di alcun crimine negli ultimi 5 anni, anche se non hai mai è stato condannato)

Quindi i requisiti sono che le persone che hanno la possibilità di accedere a un ambiente PCI certificato per l'archiviazione dei dati dei titolari di carta devono essere attentamente controllati e, se li si controlla attentamente, non si dovrebbe avere questo problema fin dall'inizio che diventano "rogue" e possibilmente disabilitano qualsiasi protezione di sicurezza sul server.

La protezione delineata nei requisiti PCI, è lì per proteggere da accessi esterni in primis, ad esempio se qualcuno irrompe nel server con, diciamo un C4 e ruba il server, i dati dovrebbero essere illeggibili. Pertanto, è preferibile che qualsiasi chiave di crittografia esista solo nella RAM (dove una password, che preferibile esiste solo in 2 parti, una metà nella testa dello sviluppatore e una metà nella testa del deployer, deve essere digitata all'avvio), e qualsiasi tentativo di manomissione dovrebbe essere protetto da un allarme che spegne il server prima che qualcuno si avvicini troppo.

    
risposta data 15.02.2016 - 15:44
fonte

Leggi altre domande sui tag