Modellazione di una crittografia basata su file per processo per linux

0

Sto provando a modellare & implementare una soluzione di crittografia trasparente per processo basata su file per Linux. Voglio che ogni processo abbia i propri file crittografati. Voglio bloccare firefox leggendo la mia chiave privata gpg ad esempio (diciamo che la mia chiave privata non è crittografata per impostazione predefinita)

Attualmente è il seguente:

  1. Aggancia i wrapper syscall (attraverso una libreria iniettata con LD_PRELOAD a livello globale) per l'accesso ai file (aperto, aperto, letto, scrivi, creat, chiudi) e controlla se il percorso per accedere è coperto dalla crittografia (ad esempio ~ / .mozilla). se il percorso non viene chiamato, viene chiamata la funzione normale.
  2. Chiedi al gestore delle chiavi (un demone privilegiato) le chiavi tramite un socket unix
  3. Encrypt (su write / aggiungi / crea) o decrypt (on read) i dati

Le mie domande sono:

  1. Sto usando recvmsg / sendmsg per trovare il pid che ha richiesto una chiave. Un avversario può manometterlo?
  2. Sto usando /proc/*something*/exe per trovare il percorso dell'eseguibile del pid. è sicuro (può un processo fingere?)
  3. Il gestore delle chiavi fornisce la stessa chiave ai processi con lo stesso percorso exec e uid. c'è un modo migliore per modellarlo?
posta dzervas 03.03.2018 - 16:51
fonte

1 risposta

1
  1. Penso che la tua ricerca sia l'isolamento, come Docker per sandboxing.
  2. LD_PRELOAD può funzionare per il crt, ma non funzionerà con le syscalls dirette, quindi potrebbe non funzionare per molte applicazioni e vanificare l'intero scopo del tuo precarico.
  3. Tieni presente che i browser moderni implementano sandbox molto difficili.
  4. Potresti esaminare SELinux , che è stato progettato per risolvere questo tipo di problemi dando a ogni file / processo / pacchetto un context
risposta data 03.03.2018 - 21:30
fonte

Leggi altre domande sui tag