Sicurezza pratica per uno sviluppatore di database inesperto? (HIPAA)

3

Speriamo che la mia domanda non sia troppo specifica per essere posta qui, ma non ho trovato nulla di simile dopo alcune ricerche.

Essendo uno sviluppatore relativamente inesperto (solo un progetto di grandi dimensioni escluso questo alla mia portata), come posso proteggere al meglio i dati a riposo in MSSQL e in memoria?

Il server su cui questa applicazione verrebbe eseguita è di per sé HIPAA conforme alle mie conoscenze (non è mia responsabilità) ma immagino che una macchina client sarebbe altamente vulnerabile dall'interno, e una grave violazione HIPAA potrebbe costare caro alla mia famiglia. Non ho fretta di portare a termine questo progetto a scapito della qualità, perché sto cercando di aiutare l'azienda a farcela, non a farti accusare di accuse criminali ...

Se è troppo ampia o vaga di una domanda a cui rispondere, sarei felice di ottenere alcune raccomandazioni sulla sicurezza per i programmatori. Ci sono così tante informazioni contrastanti e disaccordo sulle migliori pratiche che una semplice ricerca su google per un laico della sicurezza è schiacciante. (Se aiuta, sto lavorando principalmente in C ++ e MSSQL, e limitato agli ambienti Windows, ed evito strumenti con licenza non "commerciali" come la peste.)

    
posta Austin McCool 16.01.2016 - 05:51
fonte

1 risposta

-1

Qualsiasi soluzione completa richiederà profondità , ad esempio sicurezza in livelli. Oltre a rafforzare il sistema, limitare l'accesso alla rete, disporre di un approccio sostanziale di registrazione, auditing e SIEM, è necessario proteggere anche i dati all'interno del database.

Ovviamente proteggi le informazioni di accesso con un algoritmo di hash strong come PBKDF2 con HMAC / SHA-256 e 100.000 versioni o bcrypt o scrypt. MD5 o SHA-1 con singole iterazioni è effettivamente testo in chiaro, anche con salatura. Bcrypt si occuperà anche del problema di salatura e del problema dei costi adattativi.

In particolare per HIPAA, proteggere le PII è fondamentale. Per informazioni sensibili che devi essere in grado di richiamare, è necessaria una crittografia strong (AES-128 o 256, utilizzando CBC, CTR (con nonces univoci) o modalità GCM consigliata). Anche la corretta gestione delle chiavi è fondamentale. L'utilizzo di un sistema DUKPT o di un altro schema di derivazione della chiave di trasformazione per ridurre la sovrapposizione delle chiavi o (idealmente) un HSM per gestire e proteggere le chiavi è una mossa strong in tal senso.

Per informazioni sensibili ma non necessarie per essere recuperabili, ma semplicemente ricercabili, una potente funzione hash crittografica (CHF) come SHA-256 (o anche meglio, HMAC / SHA-256) ti permetterà di fare (non- fuzzy) alla ricerca di quei dati nelle query proteggendole a riposo. Questo è meno comune negli ambienti aziendali, ma per quanto riguarda HIPAA dovrebbe essere valutato almeno in base alle esigenze di prestazioni.

Se hai domande più specifiche, sentiti libero di commentare qui. Se sono autosufficienti, possiamo rispondere in linea, ma quelli più grandi probabilmente meritano la loro stessa domanda sul sito.

Oh, e non tira mai la tua cripta . Ci sono librerie C # o .NET scritte da crittografi professionisti e sviluppatori di crittografia per fare tutto il necessario. Sono controllati, aggiornati e hanno un numero elevato di bulbi oculari su di loro. BouncyCastle è probabilmente il più noto.

    
risposta data 16.01.2016 - 07:48
fonte

Leggi altre domande sui tag