Richiesta di feedback desiderata - gestore di note web semplice e sicuro (javascript) [chiuso]

-1

Ho un'idea per un'applicazione web di cui vorrei discutere. Mi piace molto, ma è probabile che mi sia sfuggito un evidente buco di sicurezza. Oppure, forse fa schifo.

L'idea è un gestore di note di testo sicuro basato sul web, con le seguenti caratteristiche:

  • perché è web, è accessibile da qualsiasi luogo;
  • importazione / esportazione di note crittografate;
  • l'unica cosa memorizzata sul server sono note crittografate (nessun account utente! di seguito);
  • versione locale (usata sul tuo server);
  • la password non viene mai memorizzata da nessuna parte (non come hash o altro).

Ecco come funziona:

Il server conserva un database di note, dove ogni nota ha:

  • email dell'autore;
  • contenuto crittografato;
  • metadati (tempo modificato, ecc.)

Quando un utente apre l'app Web per la prima volta, richiede un'email.

(Oops, i nuovi utenti non sono autorizzati a pubblicare immagini! Si prega di seguire questo link per uno screenshot: dl.dropbox.com/u/456669/Screenshots/3EqQx.png)

Se questa e-mail non è stata utilizzata su questo dispositivo in precedenza, viene inviato un messaggio con il link di convalida. (Link, ovviamente, scade molto presto).

dl.dropbox.com/u/456669/Screenshots/VJXPN.png

Dopo la convalida, la combinazione dispositivo + email viene salvata in un cookie. Le note crittografate vengono caricate dal server.

Dopodiché, tutto il lavoro viene eseguito con Javascript, senza interazione con il server.

L'app chiede la password.

dl.dropbox.com/u/456669/Screenshots/O4iOp.png

Le note sono decifrate con password. Poi, c'è l'interfaccia utente reale per la gestione delle note (sarà molto bello, ma non è l'argomento della discussione).

Quando si salvano le modifiche per una nota, questa viene crittografata con la password inserita (che viene memorizzata nella variabile Javascript, o in modalità paranoico, nuovamente richiesta). La nota crittografata è sincronizzata con il server.

Perché mi piace l'idea

Ho accesso alle mie note sicure da qualsiasi luogo (casa, lavoro, ospiti, viaggi).

Posso essere sicuro che nessuno può accedere ai miei appunti. Se qualcuno inserisce la mia email, ricevo un'email di convalida, che rifiuto.

Se la mia e-mail è compromessa e un hacker accede alle mie note, ha ancora bisogno di una password per decrittografarle.

La password viene utilizzata solo per decrittografare le note. In altre parole, password errata significa semplicemente note disordinate sullo schermo.

Open source significa che posso installarlo sul mio server di casa e non mi fido di un servizio di terze parti.

Non perfetto

Mentre scrivevo ciò, mi è venuto in mente un problema. Poiché l'app non può controllare se una password è corretta (è l'idea!), Ci deve essere un modo per impedire all'utente di inserire la password errata, ottenere note "disordinate" e quindi salvarle sul server. Hmm! ...

Ad ogni modo, grazie per aver letto e grazie in anticipo per i tuoi pensieri e feedback!

    
posta Vlad Gerasimov 14.01.2013 - 16:54
fonte

1 risposta

4

Riesco a vedere alcuni difetti nel sistema che hai descritto:

  • Se un utente esistente desidera accedere ai suoi appunti, dovrebbe accedere al suo account e-mail e fare clic su un link per ogni visita?
    1. Se sì, come collegheresti il suo clic a una sessione utente valida?
    2. Se no, allora chiunque potrebbe scaricare le note crittografate per un messaggio di posta elettronica noto e provare a decrittografarle offline.
  • L'implementazione dell'algoritmo di crittografia in JavaScript non è la soluzione migliore. Un semplice XSS sul tuo sistema potrebbe rivelare la password dell'utente in testo semplice.
  • Un utente potrebbe utilizzare una password per ogni nota. Come poteva ricordare quale password è stata usata per quale nota?
  • Supponendo che tu in qualche modo lo costringa ad usare la stessa password ogni volta, come gestiresti le modifiche della password, dove dovresti decrittografare e criptare ogni nota, anche usando javascript.

È piuttosto difficile implementare una nuova soluzione che sia facile da usare, possa essere utilizzata su vari dispositivi ed è anche molto sicura.

Tieni presente che algoritmi e pratiche esistenti e ben noti sono probabilmente la scelta migliore al momento. È molto probabile che le soluzioni personalizzate siano difettose. Forse se fornisci maggiori dettagli su come gestiresti i punti sopra indicati, potremmo avere una visione migliore della soluzione e analizzarla meglio.

    
risposta data 14.01.2013 - 17:34
fonte

Leggi altre domande sui tag