Sto cercando di sviluppare un servizio web (classico client / server) in cui il server non è affidabile, quindi è tenuto (crittograficamente) ignorante sui contenuti / messaggi effettivi.
Ovviamente, se non ti fidi del server, non dovresti fidarti di nessun client che il server ti assegni. Quindi il nostro cliente non avrebbe "parti mobili" - cioè, composto interamente da file statici (nessun PHP / Ruby / qualsiasi cosa, nessun database), solo un bundle di JS / HTML / CSS da distribuire separatamente.
Un client come questo potrebbe essere eseguito localmente sui computer delle persone o come una pagina GitHub o tramite qualsiasi server web. L'idea è che più persone sono in grado di estrarre un ZIP sul proprio computer (o usando un semplice FTP) di quanto sarebbe mai probabile ospitare il proprio server o configurare un database in modo appropriato.
Non sto cercando di evitare di essere mirato individualmente - sto cercando di evitare un singolo punto di attacco centralizzato, quindi ogni client dovrebbe essere compromesso individualmente per ottenere i messaggi per un particolare utente / gruppo.
Quali sarebbero le implicazioni / inconvenienti di sicurezza di un setup come questo?
Chiarimento: il metodo con cui viene ottenuto lo ZIP del client non è il problema a cui sono interessato. Le tecnologie esistono già per questo (firme di hash a chiave pubblica, eccetera). Il problema di "Come faccio a essere sicuro di avere una buona copia del cliente" è completamente equivalente a "Come posso essere sicuro di avere una buona copia del mio browser / Cygwin / antivirus" - Non sono interessato a nessun problema su questo che potrebbe anche essere applicato all'installazione di FireFox, per esempio.
Ciò che mi interessa sono i problemi di sicurezza con l'installazione, supponendo che sia disponibile una versione verificata del client.
P.S. - Sono consapevole che JavaScript crypto è disapprovato ( articolo di esempio qui ). Tuttavia, le critiche sembrano essere:
- Fai affidamento su come ottenere un client sicuro dal server non attendibile
- Il codice JavaScript non può essere sicuro che la VM che lo sta eseguendo sia sicuro
# 1 è esattamente quello che sto cercando di affrontare qui, e per # 2: se la VM JavaScript del tuo browser è dubbia, allora i tutti siti web non sono sicuri, così come i dettagli della tua carta di credito .