Criptazione sicura dei dati ricevuti tramite HTTPS

1

Ricevo dati sensibili su una connessione HTTPS e devo archiviarli su disco, crittografati in modo che nessuno possa manometterli, ma per leggerli in seguito. Ogni utente nel sistema ha una password.

L'applicazione deve memorizzare le informazioni ricevute tramite HTTPS nel caso in cui non sia disponibile alcuna connessione Internet. Sincronizzazione una tantum e lettura di un file contenente le informazioni più importanti. Ovviamente, una sincronizzazione automatica avverrà quando è possibile stabilire una connessione. Le informazioni sono necessarie per garantire che l'utente abbia il permesso di compiere determinate azioni, quindi l'utente non dovrebbe essere in grado di manomettere il file .

Qual è il modo migliore per farlo?

1) Argomenti come questo , questo e questo suggeriscono di utilizzare una password e qualcosa come PBKDF2 per generare una chiave, che può essere usato per crittografare la chiave che crittografa i dati . Ho ragione nel capire questo?

2) In tal caso, la chiave che crittografa i dati dovrebbe anche essere derivata dalla password dell'utente? Per me questo sembra losco, per non dire altro.

3) Non ne so abbastanza del disassemblaggio, ma ho paura della possibilità che un avversario possa dirottare il file binario e manomettere i dati ricevuti dall'HTTPS, prima che venga crittografato. Si tratta di un rischio sostanziale? La crittografia deve essere eseguita sul server e, in caso affermativo, come cambia il protocollo?

Il prodotto funziona su OSX, Windows e probabilmente su Linux in futuro.

    
posta Stijn Frishert 23.03.2015 - 14:14
fonte

1 risposta

0

Fammi essere sicuro di capire. L'utente eseguirà un'applicazione locale in grado di decifrare il file crittografato e di archiviarlo (o parti di esso) in memoria in un formato leggibile.

Il tuo avversario è l'utente; si presume che l'utente voglia dirottare quelle autorizzazioni memorizzate nel file crittografato. Suppongo anche che l'utente sia root su quella macchina in modo da poter ispezionare la tua procedura client.

Su Linux, il tuo utente può eseguire il processo in modo tale che possa essere collegato a un debugger . L'utente può quindi eseguire la tua app e aggiungere un punto di interruzione su es. la chiamata di sistema open (), e inizia a ispezionare le istruzioni una alla volta quando il tuo file criptato viene aperto dalla tua app, fino al momento in cui è pronto. Quindi stampe semplici possono consentire all'utente di leggere il contenuto della variabile contenente le informazioni desiderate. Nessuna competenza di programmazione assemblatore necessaria.

Il problema è che ti stai affidando al codice eseguito dal tuo avversario per applicare le autorizzazioni e mantenere un segreto. Questo problema è impossibile da risolvere (in pratica, nel mondo accademico, puoi fidarti di certe programmi semplici per eseguire determinate azioni su un sistema operativo canaglia, a patto che l'hardware non sia manomesso, consultare Carta del rifugio in OSDI 14 ).

Quali sono le conseguenze di un attacco? Quali capacità ottiene l'utente se si concede a se stessa tutte le autorizzazioni contenute in questo file? Queste capacità influenzano (1) i dati locali, (2) il tuo server?

  1. l'utente può già fare ciò che vuole con i suoi dati locali su di lei macchina locale
  2. esegue controlli delle autorizzazioni sul lato server e concede solo nuove autorizzazioni sul lato server
risposta data 23.03.2015 - 14:59
fonte

Leggi altre domande sui tag