Caricamento sicuro / progettazione di download con server di archiviazione dannoso

1

Supponiamo di disporre di un server di archiviazione dannoso (un archivio di valori-chiave indipendente dall'utente, che supporta server.put(key, value) e server.get(key) ) che vogliamo utilizzare per l'archiviazione sicura di file per utente. Le due interfacce che voglio rendere sicure sono client.upload(username, filename, message) e client.download(username, filename) , che comunicano con server.put() e server.get() dietro la scena.

Ipotesi:

  • Ogni utente ha le proprie chiavi private archiviate in modo sicuro a livello locale e le chiavi pubbliche archiviate su un server con chiave pubblica protetta.
  • Il server dannoso potrebbe tentare di manomettere il messaggio caricato.
  • Il server dannoso può far caricare un file arbitrario dall'utente con qualsiasi nome e contenuto che desidera.
  • Il server dannoso non eseguirà il rollback di un file o lo eliminerà.
  • I nomi di file e i contenuti dei file non sono vuoti.

Requisiti:

  • Le lunghezze dei nomi di file e del contenuto non devono essere confidenziali (ad esempio, il server dannoso non farà caricare un utente su due file con lunghezze diverse e prova a indovinare quale file / ha caricato).
  • I nomi file e i file stessi devono essere riservati.
  • Il client deve rifiutare qualsiasi file che è stato manomesso o non caricato dall'utente specificato. (Ie, integrità e autenticazione).

Il design a cui sto pensando è:

  • Chiave (da utilizzare con il server di archiviazione) = encrypt(filename, priv_key_1)
  • Valore = signed(encrypt(message, priv_key_1), priv_key_2)

C'è qualche difetto in questo design?

    
posta Zizheng Tai 17.03.2017 - 00:20
fonte

0 risposte