2013-08-20 10 views
5

Ho alcuni problemi relativi alla ricerca di un modo per ottenere la crittografia dei dati arbitrari che possono essere condivisi con più destinatari. Mega sembra fare esattamente questo. Per quanto ho letto, crittografa i dati prima che siano caricati sul server web. Eppure è possibile condividere quel file con gli altri. Come è fatto con la crittografia?Come funziona la crittografia di Mega per la condivisione?

Immaginate il seguente scenario:

  1. utente Alice carica un file al server, vengono codificati
  2. Alice vuole condividere il file con Bob e Dave. In che modo Bob e Dave possono accedere al file e vedere il suo contenuto originale (decrittografato)?
+0

[crittografia a chiave pubblica] (http://en.wikipedia.org/wiki/Public_key) –

risposta

2

In Mega, ogni utente ha un master key. Ogni utente ha anche una coppia di chiavi pubblica/privata. E ogni file è crittografato con diverse chiavi di sessione. Le chiavi di sessione sono crittografate nella chiave master dell'utente.

Se Alice vuole condividere il suo file con Bob, prima decodifica la chiave di sessione del file utilizzando la sua chiave master, quindi crittografa la chiave di sessione nella chiave pubblica di Bob.

Ora Bob può utilizzare la sua chiave privata per decrittografare il file di Alice.

Quanto sopra è solo una spiegazione intuitiva. Troverai maggiori informazioni dall'api di Mega (e dal suo codice sorgente).

8

Come è fatto con la crittografia?

La risposta è symmetric-key algorithm. Mega utilizza la crittografia a chiave simmetrica nel browser fornita da HTML5. Vedi la domanda "Quali algoritmi di crittografia MEGA utilizza internamente?" sotto.

Come diceva onemouth, il tuo data glob è crittografato con una chiave principale.

Ogni utente ha anche una coppia di chiavi pubblica/privata. E ogni file è crittografato con chiave di sessione diversa. Le chiavi di sessione sono criptate nella chiave master dell'utente.

Per capire come funziona tutto ciò significa guardare tutti i componenti e vedere come interagiscono. Mega spiega il processo di crittografia di chiavi simmetriche/condivisi sul loro sito web:

(link incorporati e il testo sottolineato nel testo citato da me inserito)

What encryption algorithms does MEGA use internally?

Per i trasferimenti di massa, AES 128 (riteniamo che l'utilizzo più elevato della CPU di AES-192 e AES-256 superi il vantaggio teorico di sicurezza , almeno fino all'avvento dei computer quantistici). Il controllo dell'integrità post-download viene eseguito tramite una variante Chunked di CCM, che è meno efficiente di OCB, ma non è gravata dai brevetti .

Per istituisce segreti tra gli utenti e far cadere file in tua casella di posta condivisi, RSA-2048 (la lunghezza della chiave è stato scelto come mezzo motivi tra "troppo insicuro" e "troppo lento"). Tutta la crittografia, la decodifica e la generazione della chiave è implementata in JavaScript, che consente di limitare il throughput a pochi MB/se causa un carico significativo della CPU. Noi attendiamo con impazienza l'implementazione della proposta HTML5 WebCrypto API in tutti i principali browser, eliminando questo collo di bottiglia . generatore di numeri casuali built-in di JavaScript è migliorata attraverso un mouse/tastiera timing-driven RC4 entropy pool così come cripto * casualità dove available (Chrome e Firefox solo al momento -. chiavi generate da Internet Explorer e Safari sono meno sicuri di quanto potrebbero essere).

How does folder sharing work?

È possibile condividere qualsiasi sottostruttura del vostro Cloud Drive con amici, familiari o colleghi . L'invito è via e-mail. Gli invitati che non hanno un account ancora riceveranno una notifica via e-mail con un link di registrazione. In alternativa, è possibile creare un collegamento pubblico a qualsiasi cartella e esportare la chiave crittografica specifica della cartella, rendendola accessibile senza un account MEGA . È quindi responsabilità dell'utente trasmettere in modo sicuro la chiave della cartella ai destinatari.

Per stabilire, modificare o eliminare una condivisione, è sufficiente fare clic con il pulsante destro del mouse su una cartella nel file manager e selezionare Condivisione. Sono disponibili tre livelli di accesso : sola lettura, lettura/scrittura (i file possono essere aggiunti, ma non eliminati), e completi (i file possono essere aggiunti e cancellati). Se hai aggiunto un indirizzo e-mail che non aveva ancora un account, devi essere online allo almeno una volta dopo che il destinatario ha completato la procedura di registrazione in modo che tu possa crittografare il segreto condiviso sulla sua nuova chiave pubblica.

Is data that I put in shared folders as secure my other data? cartelle condivise, per natura, sono solo sicuro come loro almeno membro sicuro.

Invece di una sola chiave principale, ora hai un'altra chiave che hai affidato a X numero di persone. La tua sicurezza è grande quanto la tua fiducia in quelle persone X.

Ogni file su Mega ha un ID univoco. Quindi, se le credenziali sono:

fileId=Abc123Ab 
shareKey=abcdefghijklmnopqrstuvwxyzZYXWVUT 
https://mega.co.nz/#!fileId!shareKey 

Cercando di scaricare

https://mega.co.nz/#!fileId 

si tradurrà in download del file crittografato. Il file non può essere decodificato a meno che l'utente non abbia la chiave di decodifica condivisa. Il modo in cui ottieni "shareKey" a qualcuno dipende da te. Ma chiunque abbia accesso a quella shareKey può decifrare il file scaricato, quindi inviare l'URL completo via email o altri mezzi non criptati è una cattiva idea. Una volta generato un shareKey (tramite "Ottieni link" nel webapi) non può essere modificato.

E inoltre,

Tuttavia, un compromesso della nostra infrastruttura server di base pone un ulteriore rischio: Le chiavi pubbliche possono essere manipolati, e le richieste chiave potrebbero essere contraffatti.

Quello che stanno dicendo è che i problemi di sicurezza che sorgono senza la condivisione abilitata aumentano perché le singole minacce della singola chiave privata compromettono.

Is my stored data absolutely secure? Tutti sicurezza è relativa. I seguenti esistono vettori di attacco - non sono specifici per MEGA, ma noi vogliono farvi sapere circa i rischi: conti individuali sono messi in pericolo da:

  • spyware sul computer. Un semplice keylogger è sufficiente, ma le credenziali e le chiavi di sessione possono anche essere estratte dalla memoria o dal filesystem .
  • Spalline. Non digitare la password mentre qualcuno potrebbe guardare le tue battute.
  • Password brute-forzante. Utilizza password complesse.
  • Phishing. Conferma sempre lo stato di sicurezza della tua connessione (https: //) e il nome di dominio corretto (mega.co.nz) prima di inserire la tua password . Gli attacchi su larga scala possono essere montati tramite:
  • Un attacco "uomo nel mezzo". Richiede l'emissione di un certificato SSL duplicato valido in combinazione con forgiatura e/o attacchi DNS sulle nostre rotte BGP (uno scenario in stile DigiNotar).
  • Accesso ai server Web che ospitano https://mega.co.nz/index.html e che sostituiscono tale file con una versione contraffatta (ciò non influisce sull'accesso tramite l'app installata). Si noti che la manipolazione del contenuto sul nostro contenuto statico distribuito CDN non rappresenta un rischio per la sicurezza, poiché tutto il contenuto attivo caricato da index.html è soggetto a verifica con un hash crittografico (si pensi a come una sorta di "avvio sicuro" per siti Web). Questo tipo di attacco richiede l'invio di codice dannoso al client ed è pertanto rilevabile .
  • Accesso alla nostra infrastruttura del server principale e creazione di richieste chiave forgiate su condivisioni esistenti. Questo tipo di attacco interessa solo i dati negli account con cartelle condivise ed è rilevabile anche sul lato client .

Inoltre, non tutti i dati è privato e le informazioni più user-identificabili viene memorizzato in chiaro.

Is all of my personal information subject to encryption? Nr.File Solo i dati e nomi di file/cartelle sono criptate. Informazioni a cui è necessario l'accesso operativo , come l'indirizzo e-mail , l'indirizzo IP, la struttura della cartella , la proprietà del file e le credenziali di pagamento, vengono memorizzate e elaborate non crittografate. Si prega di consultare la nostra politica sulla privacy per i dettagli.

Più particolare si possono avere nel loro documentazione API a https://mega.co.nz/#doc

12,2 Cryptography

Tutte le operazioni crittografiche simmetriche sono basati su AES-128. Funziona in modalità di concatenamento dei blocchi di codice per i file e i blocchi di attributo della cartella e in modalità contatore per i dati dei file effettivi. Ogni file e ogni nodo di cartella utilizza la propria chiave a 128 bit generata in modo casuale. I nodi file utilizzano la stessa chiave per il blocco dell'attributo ei dati del file , oltre a un valore di avvio del contatore casuale a 64 bit e un meta MAC a 64 bit per verificare l'integrità del file. Ogni account utente utilizza una chiave master simmetrica per crittografare in ECB tutte le chiavi dei nodi che mantiene nei propri alberi . Questa chiave master è memorizzata sui server MEGA, crittografata con un hash derivato dalla password di accesso dell'utente. L'integrità del file è verificata utilizzando CBC-MAC Chunked. Le dimensioni del blocco partono da 128 KB e da fino a 1 MB, il che equivale a un ragionevole equilibrio tra lo spazio richiesto per memorizzare i MAC del blocco e il sovraccarico medio per le letture parziali dell'integrità del controllo dell'integrità . Oltre alla chiave simmetrica, ogni account utente ha una coppia di chiavi RSA da 2048 bit per ricevere in modo sicuro i dati come chiavi condivise o chiavi di file/cartella. Il suo componente privato è memorizzato crittografato con la chiave simmetrica dell'utente.

12.3 cartelle condivise

Il proprietario della cartella è l'unico responsabile per la gestione degli accessi; Le azioni non sono transitive (le condivisioni non possono essere create sulle cartelle nelle condivisioni in entrata). Tutti i partecipanti a una cartella condivisa guadagno accesso crittografica attraverso una chiave comune su azioni specifiche, che viene passato da parte del proprietario (in teoria, da chiunque partecipando della quota, ma questo creerebbe un notevole rischio di sicurezza in caso di un compromesso dell'infrastruttura principale) ai nuovi partecipanti tramite RSA. Tutte le chiavi dei nodi in una cartella condivisa, incluso il nodo radice , sono crittografate su questa chiave di condivisione. La parte che aggiunge un nuovo nodo a una cartella condivisa è responsabile della fornitura della chiave appropriata di condivisione/nodo . Il nodo mancante/le chiavi specifiche della condivisione possono essere solo fornite dal proprietario della condivisione.

12,4 consegna non autenticato

MEGA supporta la trasmissione dei dati non autenticato sicuro. Qualsiasi utente registrato può ricevere file o cartelle nella posta in arrivo tramite la chiave pubblica RSA .

In definitiva, ti stai fidando del codice javascript che è autenticato da HTTPS. Quindi ti stai fidando del tuo motore javascript (browser web) per gestire correttamente la transazione. Infine, ti stai affidando al tuo sistema operativo per non consentire ad altri processi in esecuzione di individuare la chiave privata non crittografata nella RAM (vedi https://nzkoz.github.io/MegaPWN/).

Ci sono certamente delle precauzioni da seguire, ma è una delle migliori opzioni attualmente disponibili.Puoi sempre crittografare i tuoi file prima di caricarli su Mega con GPG per alleviare alcuni dei problemi descritti sopra.

+0

Sì, ma dove viene memorizzata la chiave privata dell'utente? Non crittografato sui server MEGA? Perché non devo inserirlo ogni volta che scarico un file tramite il browser, ad esempio? E qual è la chiave principale? La chiave privata dell'utente o un'altra ancora? –

+0

È all'interno del localStorage del browser che è simile ai cookie ma non viene inviato al server automaticamente, il server può recuperare il suo contenuto solo utilizzando il codice JS. – Annarfych