Crittografia in parole semplici su un'idea?

0

Sono uno studente e ho una sfida sulla crittografia. Ho bisogno di una definizione chiara o di una definizione semplice per comprendere meglio la crittografia e la sicurezza correlata. Ho letto molto materiale, visto video, ma penso che il dominio di crittografia sia troppo confuso e complesso da comprendere. Quindi, spero che ci siano risposte semplici alle mie domande.

Supponiamo di creare database SQL Server (Angular and NodeJS come front e back) e di archiviare tutti i dati con la crittografia in modo che il server conservi tutti questi dati e nessun'altra persona possa utilizzare queste informazioni memorizzate.

  1. Come posso utilizzare un modello di crittografia in modo che i dati crittografati (utente / pass / token) possano essere visti da un amministratore, ma non visti (crittografati) da altri?

  2. Se questi dati (utente / pass / token) sono "rubati", gli altri saranno in grado di vedere anche i miei dati crittografati come farebbe un amministratore? Se, come posso prevenirlo dal punto di vista della sicurezza delle informazioni?

posta Maryam Koj 11.05.2018 - 10:51
fonte

2 risposte

2

Questa è una domanda molto ampia. Il funzionamento della crittografia dipende completamente dal tipo di crittografia utilizzata (un DB appositamente protetto, un file DB crittografato, crittografia utilizzando costrutti SQL speciali o crittografia basata su applicazioni, ecc.). Quindi dipende anche dal sistema chiave utilizzato, dalla chiave pubblica o dalla crittografia della chiave segreta e da come sono configurate le condizioni di gestione e accesso delle chiavi.

Se si utilizza una vista a volo d'uccello, la crittografia non ha senso: per decifrare (e, per crittografie simmetriche, anche per crittografare) è necessario accedere a una chiave segreta. Quindi, invece di proteggere i tuoi dati, ora devi proteggere una chiave. Questa chiave può tuttavia essere generata in anticipo ed è molto più piccola dei dati. Ma ancora più importante può avere una protezione diversa e può essere limitato all'accesso.

La chiave più protetta e meno accessibile è la più sicura. Questo ha un prezzo, ovviamente. Supponi di utilizzare una passphrase o una chiave privata su un dispositivo speciale. In tal caso, è necessario fornire la chiave durante l'avvio del DB e potrebbe essere necessario fornire un accesso continuo senza interrompere le misure di sicurezza.

Quindi sulle tue domande:

How I can use an encryption model so that this encrypted data (user/pass/token) can be seen by an admin, but not seen (encrypted) by others?

Criptando i dati in modo tale da poter essere decifrato solo da una chiave privata o segreta detenuta dall'amministratore. A volte una chiave dati è ad es. crittografato con la chiave dell'amministratore e tale chiave dati viene a sua volta utilizzata per crittografare i dati nel database (in modo da ottenere una struttura gerarchica in cui la sicurezza di una chiave dipende da un'altra chiave di livello superiore).

I'm not sure I understand. Where is the encryption key being stored, and how is access gained to it? What is the encrypted data and its relation to user/pass/token?

Dove viene memorizzata la chiave dipende dal sistema. Si spera che venga memorizzato in una sorta di negozio sicuro, ad es. protetto dal sistema operativo. Ma potrebbe anche essere una chiave statica nel codice dell'applicazione o memorizzata in un file di configurazione.

Le banche e tali tendono a memorizzare le chiavi più sensibili in HSM (se le chiavi devono essere direttamente accessibili) o offline (su un dispositivo di archiviazione offline che può essere utilizzato da un laptop hardened). Sulle smart card e HSM le chiavi possono essere usate , non recuperate (esportate) tranne che per scopi di backup. L'utilizzo delle chiavi generalmente richiede all'utente o al sistema di autenticarsi sul dispositivo di archiviazione.

Ma i libri sono stati scritti sulla gestione delle chiavi e alla fine potrebbe essere necessario leggerne alcuni per comprendere appieno come gestire i tasti.

    
risposta data 11.05.2018 - 18:18
fonte
1

Ecco un semplice pseudocodice nel framework MVC

Supponiamo tu abbia encrypt(key, string) e decrypt(key, string) function.

Nel tuo modello

Store(value) {
    cipherText=encrypt($your_key, value)
    query= (“update table set ‘field’= ?”, cipherText)
}

Retrieve(id) {
    cipherText = (“select field from table where id = ?”, id)
    value = decrypt($your_key, cipherText)
    return value
}

In breve, anche l'admin non dovrebbe essere in grado di vedere i semplici dati memorizzati nel DB, perché è crittografato prima di essere archiviato.

La tua chiave deve rimanere segreta, quindi gestila in qualche modo correttamente.

    
risposta data 11.05.2018 - 15:38
fonte