Stocare mega fișiere. Serviciu cloud Mega

Sunt sigur că toți utilizatorii activi de internet au auzit despre povestea închiderii popularului serviciu de găzduire a fișierelor Megaupload și despre nenorocirile creatorului său. Și cu siguranță știu despre noul proiect numit Kim Dotcom Mega. Permiteți-ne să vă reamintim că acest serviciu este reîncarnarea creației anterioare a lui Kim, dar pe o platformă complet diferită.

La crearea acestuia s-au luat în considerare toate deficiențele și erorile Megaupload și s-a pus accentul în primul rând pe stabilitatea serviciului de găzduire a fișierelor. Și nu numai la încărcările de rețea, ci și la atacurile deținătorilor de drepturi de autor. Pentru a realiza acest lucru, se acordă o mare atenție confidențialității și securității datelor dumneavoastră. Toate fișierele pe care le încărcați sunt criptate cu un algoritm special, astfel încât administrația serviciului habar nu are despre conținutul conturilor dvs. și, în consecință, nu poate fi făcută responsabilă pentru acesta. În același scop, serverele Mega sunt situate în țări diferite, așa că dacă există probleme cu legile dintr-o țară, acest lucru nu va duce la prăbușirea întregului serviciu și datele dumneavoastră vor rămâne intacte.

Astăzi dorim să vă prezentăm mai aproape de lucrul acestui serviciu și să vă oferim un mic tur de captură de ecran al funcțiilor acestuia.

Pentru a începe trebuie să vă înregistrați. Pentru a face acest lucru, trebuie să furnizați numele, adresa de e-mail și parola. Serviciul este perfect rusificat și perfect proiectat.

După finalizarea înregistrării, vi se va trimite un link de conectare la adresa de e-mail pe care ați furnizat-o. Făcând clic pe link, va trebui să așteptați câteva minute până când sunt generate chei secrete speciale pentru dvs., cu care datele vor fi criptate.

Intrăm în stocarea noastră în cloud. Totul aici este clar și simplu: arborele folderelor este în stânga, zona de afișare a fișierelor este în centru, iar bara de instrumente este în partea de sus. Fișierele pot fi descărcate făcând clic pe butonul Încărcare nouă sau pur și simplu trageți-l în fereastra de service. Descărcările sunt excepțional de rapide.

Fișierele pot fi organizate în foldere. Mutarea fișierelor între foldere se face prin glisare și plasare sau folosind meniul contextual (vezi mai jos). Nivelul de imbricare a directoarelor nu este limitat.

Un link pentru descărcarea fișierului este generat în fereastra pop-up care apare.
Observați opțiunile din partea de sus a acestei ferestre. Doar dacă este activat Link la fișier, atunci destinatarul dvs. nu va putea descărca fișierul fără a introduce o parolă specială, pe care o puteți trimite separat prin e-mail. În acest fel, puteți posta link-uri de descărcare în locuri publice, cum ar fi un blog sau un forum, dar permiteți doar anumitor persoane să descarce.
Dacă este marcat suplimentar Cheia fișierului, atunci oricine poate descărca fișierul folosind linkul creat. Casete de selectare NumeȘi mărime fișier adăugați caracteristicile corespunzătoare ale fișierului.

Meniul contextual al folderului este ușor diferit. Există un punct aici Partajarea. Cu acesta, vă puteți invita angajații, prietenii sau familia să împărtășească. Invitațiile sunt trimise prin e-mail și accesul poate varia. Numai citire - doar vizionare, Citeste, scrie— vizualizarea și încărcarea fișierelor dvs. într-un folder, Acces complet— vizualizarea, descărcarea și ștergerea fișierelor.

În capitolul Cont puteți vedea volumul spațiului de stocare, puteți cumpăra spațiu suplimentar, puteți modifica setările de transfer de date și alte opțiuni.

Câteva impresii personale

Serviciu de partajare a fișierelor Mega face o impresie grozavă. Viteză de operare excelentă, interfață clară și plăcută, 50 de gigaocteți de spațiu pe disc, fără restricții privind traficul și dimensiunea fișierelor descărcate, plus libertatea completă și confidențialitatea datelor dvs. Este doar un fel de vacanță!

Capacitățile serviciului Mega pot fi utilizate pentru o varietate de scopuri. În primul rând, aceasta este diseminarea diferitelor tipuri de informații, care vor mulțumi foarte mult pirații de pe toate continentele. Cu toate acestea, posibilitatea de acces limitat folosind parole poate fi utilă și pentru vânzarea legală a creațiilor acestora, de exemplu de către muzicieni. Partajarea folderelor face din Mega un instrument interesant pentru organizarea lucrului de la distanță. Și, desigur, o copie de rezervă banală a informațiilor care sunt importante pentru tine.

Singurul lucru care îi lipsește Mega în această etapă este un client desktop și mobil pentru diferite sisteme de operare. Având în vedere vârsta fragedă a serviciului, se poate spera că dezvoltatorii pur și simplu nu au avut încă timp și un astfel de client va apărea în curând. După aceasta, nu văd niciun obstacol pentru ca Mega să devină noul standard pentru stocarea fișierelor în cloud.

După lansarea serviciului MEGA oarecum scandalos, conversațiile despre securitatea acestuia au început să fiarbă puțin și s-au stins. Astăzi serviciul își trăiește propria viață și nimeni nici măcar nu l-a rupt. Din anumite motive, termenul „User Controlled Encryption” (UCE, sau User Controlled Cryptography), cu care se laudă MEGA, a fost omis din toate conversațiile. Ceea ce vreau să spun prin „ratat” este faptul că nu am acoperit toate posibilitățile pe care ni le oferă un motor de criptografie care rulează în JavaScript pe partea clientului.

Desigur, serviciul MEGA în sine înseamnă pur și simplu că cheile de criptare nu sunt stocate pe server, ci toate al lor criptografia se realizează în contextul browserului. Mai mult, după lansarea serviciului, s-a vorbit mult despre faptul că folosește algoritmi criptografici slabi și că în general totul este rău și vom muri cu toții, iar fișierele noastre vor fi citite de FSB. Acest lucru mi-a dat ideea să extind conceptul de „UCE” și să preiau cu adevărat controlul asupra criptografiei, și anume, să înlocuiesc sau să completez unele dintre mecanismele de securitate ale serviciului.

În acest articol, voi descompune o parte din magia care se întâmplă în doi megaocteți de cod JavaScript MEGA și voi arăta cum puteți trece peste unele metode pentru a nu mai face griji și pentru a iubi criptografia. Ca urmare, vom primi un serviciu de stocare a fișierelor în cloud cu autentificare cu doi factori și criptare hardware a informațiilor critice.

MEGA, UCE și toate, toate, toate

Deci, să începem prin a ne uita la tehnologiile pe care este construită partea client a serviciului, cum sunt înregistrați noi utilizatori, cum sunt autentificați utilizatorii înregistrați, parolele sunt modificate și fișierele sunt încărcate/descărcate.

JavaScript

După cum probabil știți deja, întreaga parte client a serviciului se bazează pe JavaScript; codul paginii principale conține sume de control SHA-256 pentru toate scripturile și paginile care sunt încărcate de browser. Descărcarea în sine are loc după cum urmează: sumele de control sunt verificate pentru toate fișierele, după care sunt combinate într-un singur BLOB, care este dat browserului. Codul sursă al fișierelor js arată că au fost scrise de diferiți oameni și uneori există bijuterii amuzante, cum ar fi consecințele copy-paste, condiții fără sens și variabile pur și simplu ciudate.

În procesul de studiu a codului sursă al site-ului, am observat și că acesta este actualizat destul de activ, dezvoltatorii corectează erori minore și optimizează codul deja scris, ceea ce este o veste bună. Codul în sine este scris foarte simplu și fără prototipuri inutile: site-ul folosește trei sute de variabile globale și peste 8.000 de funcții. A fost foarte ușor să înțelegi arhitectura site-ului și să-i schimbi codul.

Printre cadrele terțe, MEGA folosește jQuery (nu poți trăi fără el acum), Ext JS și SJCL. Acesta din urmă implementează un nucleu criptografic cu criptare AES. SJCL oferă, de asemenea, un format interesant pentru stocarea cheilor și a altor matrice de octeți: în loc să stocheze pur și simplu octeți într-o matrice obișnuită, aceștia sunt „comprimați” într-un format numit a32. Esența sa este că conținutul oricărei matrice de octeți este împachetat în numere de 32 de biți și scris într-o matrice de lungime mai mică. Adică, fiecare 4 octeți ai matricei sunt convertiți într-un int banal. Codul site-ului conține funcții care efectuează tot felul de transformări pe un set improvizat (a32 array, string, string base64).

Informatie cheie

Înainte de a trece la descrierea proceselor de înregistrare și autentificare, merită să luați în considerare informațiile care fac obiectul criptării, și anume:
  • Cheia principală a contului, care este creat aleatoriu în momentul înregistrării utilizatorului și are o lungime de 128 de biți. Și, în principiu, lungimea tuturor cheilor utilizate pentru criptarea simetrică este de 128 de biți.
  • cheie privată RSA: Creat în momentul înregistrării pe baza mișcărilor mouse-ului și a introducerii tastaturii. În acest articol, nu mă voi concentra pe criptografia asimetrică, deoarece este folosită pentru partajarea fișierelor descărcate, iar sarcina mea a fost să schimb procesul de autentificare și criptare a datelor utilizatorului.
  • Cheile de fișiere individuale și fișierele în sine, încărcat în serviciu. Cheile sunt generate aleatoriu atunci când un fișier este încărcat, cheia în sine este folosită pentru a cripta datele fișierului și o cheie creată pe baza cheii individuale a fișierului și suma de control este utilizată pentru a cripta atributele.

Mai aproape de cod

Acum îmi propun să analizăm procesele de înregistrare și autentificare, să vedem cum este creată cheia principală și cum este criptată.
Am încercat să descriu aceste procese pe hârtie și pentru a vă oferi o înțelegere a esenței nebuniei, am făcut chiar această fotografie:

Înregistrarea unui nou utilizator

Procesul de înregistrare în sine este destul de confuz; după ce utilizatorul completează chestionarul, sunt apelate o mulțime de funcții, dar ne interesează funcția api_createuser:

// crearea unui utilizator nou și a funcției cheie master api_createuser(ctx, invitcode, invitename, uh) ( var i; var ssc = Array(4); // sesiune self challenge, va fi folosită pentru a verifica parola var req, res; if (!ctx.passwordkey) ( ctx.passwordkey = Array(4); for (i = 4; i--;) ctx.passwordkey[i] = rand(0x100000000); ) if (!u_k) api_create_u_k(); // generează o cheie principală aleatorie u_k pentru (i = 4; i--;) ssc[i] = rand(0x100000000); // generează o secvență de autentificare aleatorie dacă (d) console.log("api_createuser - masterkey: " + u_k + " passwordkey: " + ctx.passwordkey); // criptați cheia principală pe parola curentă și trimiteți-o la server (câmpul k) // câmpul ts este concatenarea lui ssc cu valoarea sa criptată req = ( a: „sus” , k: a32_to_base64(encrypt_key(new sjcl.cipher.aes(ctx.passwordkey), u_k)), ts: base64urlencode(a32_to_str(ssc) + a32_to_str(encrypt_key(new sjcl.cipherk.a) , ssc))) ); if (invitecode) (req.uh = uh; req.ic = invitcode; req.name = nume invitație; ) if (d) console.log("Cheie de stocare: " + req.k); api_req(, ctx); )
În această funcție ne interesează următoarele lucruri:

  • u_k este cheia principală în sine, o variabilă globală. O matrice de 4 numere pe 32 de biți, care este creată de funcția api_create_uk
  • ssc este pur și simplu o matrice aleatorie care este criptată cu cheia principală, concatenată cu valoarea sa publică și trimisă la server. Mai târziu, va fi folosit pentru a verifica corectitudinea cheii principale în timpul autentificării
  • sjcl - bibliotecă criptografică care implementează AES
  • rand() - implementarea locală a unui generator de numere pseudoaleatoare bazat pe RC4
  • encrypt_key() este piatra de temelie a criptografiei simetrice a serviciului. Acceptă un obiect sjcl inițializat cu o cheie și o matrice care trebuie criptată. Codul funcției este dat mai jos și, sperăm, nu are nevoie de explicații.
// criptează/decriptează funcția matrice întregi pe 32 de biți cu 4 sau 8 elemente encrypt_key(cipher, a) ( dacă (a.length == 4) return cipher.encrypt(a); var x = ; for (var i = 0;i< a.length; i += 4) x = x.concat(cipher.encrypt(, a, a, a])); return x; }
Ca urmare, după înregistrare, următoarele sunt trimise către server:
  • Cheie principală criptată cu cheia derivată din parola contului
  • Șir ca ssc||encrypt_AES-128(u_k, ssc)

Logare utilizator

Acum puteți trece fără probleme la procesul de autentificare. Pe scurt, se procedează astfel:
  1. Utilizatorul introduce datele de conectare/parola
  2. Dacă prima etapă de autentificare este trecută, atunci o cheie principală criptată și o secvență de autentificare (ssc) creată în timpul înregistrării sunt primite de la server
  3. Cheia principală este decriptată folosind parola introdusă de utilizator
  4. Secvența de autentificare este decriptată pe cheia principală și comparată cu valoarea deschisă a acesteia - verificându-se astfel corectitudinea cheii principale și a parolei.
Funcția de apel invers api_getsid2 este responsabilă pentru toate cele de mai sus:

// decriptează cheia principală după ce utilizatorul se conectează la funcția api_getsid2(res, ctx) ( var t, k; var r = false; if (typeof res == "obiect") ( // inițializează sjcl-aes cu contul curent parola var aes = new sjcl.cipher.aes(ctx.passwordkey); // dacă am primit o cheie principală în răspunsul serverului... if (typeof res.k == „șir”) ( k = base64_to_a32(res. k); dacă (k.length == 4) ( // ... atunci decriptați-l k = decrypt_key(aes, k); // și reinițializați sjcl-aes folosind cheia principală aes = new sjcl.cipher. aes(k); // dacă am primit ssc din procesul de înregistrare if (typeof res.tsid == „șir”) ( t = base64urldecode(res.tsid); // criptăm prima jumătate a șirului și comparăm cu valoarea de la server // dacă s-au potrivit - înseamnă că toate login-urile și parolele au fost de acord și puteți lăsa utilizatorul să intre dacă (a32_to_str(encrypt_key(aes, str_to_a32(t.substr(0, 16)))) == t .substr(-16)) r = ; ) // Cheia privată a perechii RSA este analizată mai jos, încă nu ne interesează acest lucru altfel dacă (typeof res.csid == „șir”) ( var t = mpi2b( base64urldecode(res.csid)); var privk = a32_to_str(decrypt_key(aes, base64_to_a32(res.privk))); var rsa_privk = Array(4); // descompune cheia privată pentru (var i = 0; i< 4; i++) { var l = ((privk.charCodeAt(0) * 256 + privk.charCodeAt(1) + 7) >> 3) + 2; rsa_privk[i] = mpi2b(privk.substr(0, l)); if (tip de rsa_privk[i] == „număr”) break; privk = privk.substr(l); ) // verificați formatul dacă (i == 4 && privk.length< 16) { // TODO: check remaining padding for added early wrong password detection likelihood r = ; } } } } } ctx.result(ctx, r); }
Ca bonus la înregistrare/autentificare, puteți arunca o privire asupra procesului de schimbare a parolei.

// schimbarea funcției parolei utilizator changepw(currentpw, newpw, ctx) ( var pw_aes = new sjcl.cipher.aes(prepare_key_pw(newpw)); api_req([( a: "up", currk: a32_to_base64(encrypt_key(new sjcl) . cipher.aes(prepare_key_pw(currentpw)), u_k)), k: a32_to_base64(encrypt_key(pw_aes, u_k)), uh: stringhash(u_attr["email"].toLowerCase(), pw_aes) )], ctx); )
Codul pentru această funcție se explică de la sine: criptăm cheia principală cu două chei obținute din parolele vechi și noi, apoi trimitem aceste valori către server. Dacă parola curentă este corectă, aceasta este înlocuită cu una nouă. Aici am vrut să atrag mai multă atenție asupra funcției prepare_key_pw, care era implicit prezentă în toate operațiunile anterioare. Sarcina sa este de a converti parola șir într-o matrice a32 și apoi de a efectua operația de derivare a cheii după cum urmează:

// convertiți funcția de matrice de parole furnizată de utilizator prepare_key(a) ( var i, j, r; var aes = ; var pkey = ; for (j = 0; j)< a.length; j += 4) { key = ; for (i = 0; i < 4; i++) if (i + j < a.length) key[i] = a; aes.push(new sjcl.cipher.aes(key)); } for (r = 65536; r--;) for (j = 0; j < aes.length; j++) pkey = aes[j].encrypt(pkey); return pkey; }
Această caracteristică a provocat multe critici, deoarece se bazează pe un algoritm de acasă. În timpul scrierii acestui articol, creatorii serviciului au reușit să-și schimbe puțin codul, dar nu am observat modificări semnificative. Esența sa este că parola transmisă este criptată de 65536 de ori folosind o cheie constantă pentru a obține o cheie care nu se poate distinge de una aleatorie. De ce creatorii serviciului nu au folosit algoritmi existenți (de exemplu, PBKDF2) rămâne un mister.

Încărcarea și criptarea fișierelor

Pe scurt, întreg acest proces poate fi reprezentat astfel:

Vă avertizez, adâncirea în această imagine pentru o lungă perioadă de timp este periculoasă pentru creier, așa că mai jos vă voi spune cum se întâmplă totul.

După cum am spus deja, la încărcare, fiecare fișier își creează propria cheie aleatorie de matrice de 6 numere pe 32 de biți. Primele patru elemente ale acestei matrice sunt folosite pentru a cripta conținutul fișierului, iar ultimele două sunt folosite ca valori inițiale ale contorului care este utilizat pentru a calcula suma de control a fișierului. Această matrice este stocată în variabila globală ul_key. Conținutul său este introdus în șirul serializat JSON ul_KeyNonce .

Decriptarea în sine are loc folosind un Web Worker (dacă browserul acceptă această tehnologie) sau pur și simplu în interiorul codului paginii principale. Când un fișier este gata pentru a fi trimis, o nouă cheie, filekey , este creată pentru a-i cripta atributele (în prezent doar numele fișierului) pe baza ul_key și a sumei de control a fișierului. Această cheie este apoi criptată cu cheia principală și trimisă la server împreună cu atributele fișierului. Funcțiile initupload3 și api_completeupload2 sunt responsabile pentru toate aceste acțiuni. Filekey este creat în funcția ul_chunkcomplete, mai jos voi da o parte din ea.

// începe încărcarea fișierului: crearea cheii sale individuale și inițializarea funcției mecanismului de criptare initupload3() ( // ... cut =) // crearea unei chei individuale aleatorii pentru fișier // ul_key este folosit în codul paginii, / / ul_keyNonce este transmis la Web Worker și folosit acolo // pentru a cripta un fișier și a calcula suma de control al acestuia ul_key = Array(6); pentru (i = 6; i--;) ul_key[i] = rand(0x100000000); ul_keyNonce = JSON.stringify(ul_key); ul_macs = ; // ... următorul procesează coada de descărcare, nu prezintă interes... // inițializează sjcl-aes pentru un fișier bazat pe ul_key ul_aes = new sjcl.cipher.aes(); // ... // începe procesul de încărcare a fișierului: // citirea acestuia de pe disc, criptarea și trimiterea onUploadStart(ul_queue_num); ul_dispatch_chain(); ) // crearea unei chei pentru a cripta atributele fișierului funcția ul_chunkcomplete(slot,pos,response) ( // ... var t = ; // ul_macs - o matrice cu suma de verificare a fișierului obținută în interiorul lucrătorului pentru (p în ul_macs) t .push(p); // completarea și sortarea unei matrice temporare, dacă cineva știe de ce este aceasta - vă rugăm să explicați t.sort(function(a,b) ( return parseInt(a)-parseInt(b) )); pentru ( var i = 0;i< t.length; i++) t[i] = ul_macs]; // внутри condenseMacs производится зашифрование // и "уплотнение" контрольной суммы файла в массив из 4х элементов var mac = condenseMacs(t,ul_key); ul_settimeout(-1); // на основе контрольной суммы и ключа файла создается ключ для шифрования атрибутов // он же в зашифрованном виде позже будет отправлен на сервер var filekey = ; // ... } // завершение загрузки файла: зашифрование атрибутов и ключа файла и отправка их на сервер function api_completeupload2(ctx, ut) { var p; if (ctx.path && ctx.path != ctx.n && (p = ctx.path.indexOf("/")) >0) ( var pc = ctx.path.substr(0, p); ctx.path = ctx.path.substr(p + 1); fm_requestfolderid(ut, pc, ctx); ) else ( // criptează numele fișierului la cheia derivată din ul_key și checksum // ctx.k == filekey a = ( n: ctx.n ); if (d) console.log(ctx.k); var ea = enc_attr(a, ctx.k) ; if (d) console.log(ea); // transfer de atribute și cheie de fișier criptate pe cheia principală var req = ( a: "p", t: ut, n: [( h: ctx.t, t: 0, a: ab_to_base64(ea), // atribute k: a32_to_base64(encrypt_key(u_k_aes, ctx.k)), // == AES_encrypt(u_k, filekey) fa: ctx.fa )] ); if (ut) ( // a fost furnizată o țintă: criptați toate acțiunile relevante var sn = fm_getsharenodes(ut); if (sn.length) (req.cr = crypto_makecr(, sn, false); req.cr = ctx.t; ) ) api_req(, ctx.ctx); ) )

Descărcarea și decriptarea fișierelor

Evident, aceste procese ar trebui să fie pur și simplu inversul criptării fișierului. Singurul lucru care poate fi de interes este obținerea valorii cheii ul_key din valoarea cheie de fișier criptată care a venit de la server.

În momentul în care fișierul este descărcat, contextul browserului conține deja un obiect care stochează cheile fișierului decriptat. Prin urmare, mai întâi are sens să luăm în considerare procesul care are loc imediat după autentificarea utilizatorului, și anume, descărcarea managerului de fișiere. După ce utilizatorul a fost permis să intre în serviciu, el dorește în mod natural să obțină acces la fișierele sale (presupunând că le avea deja acolo). Pentru a face acest lucru, trebuie să decriptăm mai întâi cheile fișierelor și apoi atributele acestora. Această problemă este tratată de un alt pachet de funcții, dintre care ne interesează loadfm_callback și process_f_f .

Pe scurt, procesul de obținere a atributelor fișierului poate fi descris de următorul algoritm:

  1. Așteptați să se încarce managerul de fișiere (loadfm_callback), de unde puteți obține JSON cu o descriere a tuturor fișierelor descărcate
  2. Creați un array farray în care să puneți o matrice cu informații despre fișiere
  3. Rulați (recursiv) funcția process_f_f pentru fiecare fișier
  4. Pentru fiecare fișier care are o cheie, decriptați acea cheie și atributele (funcția crypto_processkey) și salvați-le înapoi într-o matrice cu informații despre fișier
  5. După aceea, salvați valorile decriptate în variabila FileStore (sfârșitul recursiunii în process_f_f)
Mai jos voi furniza fragmente de cod care ilustrează acest algoritm

// apel invers pentru încărcarea funcției manager de fișiere loadfm_callback(json, res) ( // ... // procesează JSON cu informații despre fișierele json = json; if (d) console.log(json); if (d) console. log (json); dacă (json.u) process_u(json.u, false); dacă (json.ok) process_ok(json.ok); dacă (json.s) (pentru (i în json.s) (dacă ( u_sharekeys.h]) ( sharingData.push(( id: json.s[i].h + "_" + json.s[i].u, userid: json.s[i].u, folderid: json . s[i].h, drepturi: json.s[i].r, data: json.s[i].ts )); sharednodes.h] = true; ) ) ) // ... atunci nimic special . .. // introducerea informațiilor despre fișiere într-o altă matrice globală farray = nou obiect; farray.f = json.f; // pornind de procesare, apelul invers a fost declarat mai sus // ​​în această funcție și pur și simplu modifică procesul de aspect_f (fi, false , callback); fi++; ) // funcție recursivă în care cheile și atributele fișierelor sunt decriptate // apelată din funcția process_f process_f_f(fid) ( // condiție finală recursivitate - am procesat toate fișierele din matricea farray dacă (!farray.f.i ]) ( dacă (farray.ap) FileStore.suspendEvents(); // scrierea datelor în FileStore FileStore.loadData(farray.mdata, true); if (farray.ap) FileStore.resumeEvents(); if (d) console.log("call reqmissingkeys:"); crypto_reqmissingkeys(); if (farray.callback) farray.callback.fn(farray.callback); returnează fals; ) var f = farray.f.i]; f.attrs = f.a; if (f.sk) u_sharekeys = crypto_process_sharekey(f.h, f.sk); // dacă fișierul se potrivește cu tipul și are o cheie, atunci procesează-l dacă ((f.t !== 2) && (f.t !== 3) && (f.t !== 4) && (f.k)) ( crypto_processkey(u_handle) , u_k_aes , f); // descrierea acestei funcții mai jos u_nodekeys = f.key; if ((typeof f.name !== „nedefinit”) && (f.p == InboxID)) InboxCount++; ) else ( if (f.a) ( if ( !missingkeys) ( missingkeys = adevărat; newmissingkeys = adevărat; ) ) f.k = ""; f.name = ""; ) dacă (f.t == 2) RootID = f.h; else if (f.t == 3) InboxID = f.h; else if (f.t == 4) TrashbinID = f.h; altfel dacă ((f.t< 2) || (f.t == 5)) { // тут идет обработка расшаренных файлов } else { // подготовка массива для записи в FileStore farray.mdata.push({ id: f.h.replace(/[^a-z^A-Z^0-9^_^-]/g, ""), name: f.name, size: f.s, type: filetype(f.name, f.t), icon: fileicon(f.name, icontype), parentid: f.p, folder: f.t, owner: f.u, date: f.ts, attrs: f.attrs, key: f.key, r: f.r, su: f.su, fa: f.fa, }); if (f.p == TrashbinID) trashbinfull = true; if (((f.t) && (farray.ap)) || (f.p == InboxID)) refreshtree = true; } farray.i++; // проверка таймаута (видимо, чтобы загрузка файл-менеджера не выглядела слишком долгой) timeoutcount++; if (!(timeoutcount & 63)) { // если у нас больше 63 файлов - дальше грузим их асинхронно setTimeout("process_f_f(" + fid + ")", 1); timeoutcount2++; } // иначе - запускаем обработку следующего файла else process_f_f(fid); } // обработка ключа файла и его атрибутов function crypto_processkey(me, master_aes, file) { var id, key, k, n; if (!file.k) { if (!keycache) return; file.k = keycache; } id = me; // do I own the file? (user key is guaranteed to be first in .k) // ключ записан в виде ":/" var p = file.k.indexOf(id + ":"); // verificați mai întâi dacă fișierul este partajat dacă (p) ( // eu nu - am o cheie de partajare potrivită? pentru (id în u_sharekeys) ) ( p = fișier.k.indexOf(id + ":"); dacă (p >= 0 && (!p || fișier.k.charAt(p - 1) == "/")) pauză; p = -1; ) ) // și apoi putem trece la decriptare dacă (p >= 0) ( șterge keycache; // slash - aparent un semn de partajare var pp = file.k.indexOf("/", p) ; dacă (pag< 0) pp = file.k.length; p += id.length + 1; key = file.k.substr(p, pp - p); // we have found a suitable key: decrypt! if (key.length < 46) { // short keys: AES k = base64_to_a32(key); // check for permitted key lengths (4 == folder, 8 == file) if (k.length == 4 || k.length == 8) { // ключ расшифровывается либо на мастер-ключе, либо на общем ключе шары k = decrypt_key(id == me ? master_aes: new sjcl.cipher.aes(u_sharekeys), k); } else { if (d) console.log("Received invalid key length (" + k.length + "): " + file.h); return; } } else { // long keys: RSA if (u_privk) { var t = mpi2b(base64urldecode(key)); if (t) k = str_to_a32(crypto_rsadecrypt(t, u_privk).substr(0, file.t ? 16: 32)); else { if (d) console.log("Corrupt key for node " + file.h); return; } } else { if (d) console.log("Received RSA key, but have no public key published: " + file.h); return; } } // декодируем атрибуты файла var ab = base64_to_ab(file.a); // и расшифровываем их с помощью только что полученного ключа var o = dec_attr(ab, k); if (typeof o == "object") { if (typeof o.n == "string") { if (file.h) { u_nodekeys = k; if (key.length >= 46) rsa2aes = a32_to_str(encrypt_key(u_k_aes, k)); ) // dacă am decriptat corect cheia și atributele, le salvăm într-un obiect fișier file.key = k; file.name = o.n; ) ) ) else ( if (d) console.log ("Nu s-a primit nicio cheie adecvată: " + fișier.h); if (!missingkeys) ( chei lipsă noi = adevărat; chei lipsă = adevărat; ) keycache = fișier.k; ) )
După aceasta, putem obține valoarea cheii originale ul_key din contextul browserului astfel: dl_keyNonce = JSON.stringify();
Această conversie are loc în funcția startdownload. Dacă luăm în considerare că valoarea dl_key == filekey din funcția ul_chunkcomplete și efectuăm operații simple de adăugare modulo, vom observa că variabila dl_keyNonce va stoca valoarea ul_key generată la încărcarea fișierului. O ilustrare a acestui lucru poate fi văzută în colțul din stânga jos al panoului în fotografia de la începutul secțiunii despre încărcarea fișierelor.

„Supraîncărcarea” operațiunilor criptografice

În ciuda faptului că principiile descrise mai sus pentru protejarea fișierelor și cheilor sunt foarte sigure, unora s-ar putea să nu le placă faptul că depindem în continuare de implementarea algoritmilor pe care îi furnizează serviciul. În acest caz, putem dezvolta propria noastră extensie de browser, care va suprascrie unele dintre funcțiile serviciului, implementând criptare suplimentară în ele. Și anume, am decis să implementez protecția informațiilor cheie (cheia principală și cheile fișierelor) folosind criptarea hardware pe o cheie neamovibilă conform algoritmului GOST 28147-89. Un bonus la acest lucru va fi și includerea autentificării cu doi factori în serviciu.
Deci, să luăm în considerare acest caz de utilizare:
  • Utilizatorul se înregistrează pe serviciu
  • Apoi instalează extensia
  • Cu ajutorul acestuia, criptarea hardware a cheii principale se realizează folosind o cheie care nu poate fi extrasă din token.
  • Cheia principală criptată în acest mod este încărcată pe server
După aceasta, va fi imposibil să obțineți valoarea cheii principale fără a deține simbolul și codul PIN al acestuia. Aceasta va da:
  1. Autentificare cu doi factori pe serviciu (fără o cheie principală decriptată corect, funcția api_getsid2 va eșua)
  2. Fără un token, nu veți putea modifica parola curentă a contului.
Următorul pas este criptarea utilizând simbolul cheii de criptare a fișierelor (cunoscut și ca ul_key) și cheia atributului fișierului (filekey), care este stocată pe server. Astfel, vom obține că fiecare fișier va fi criptat cu o cheie care nu va ajunge niciodată la server, unde va merge cheia de fișier pe care am criptat-o ​​din funcția api_completeupload2. Atributele fișierului vor fi criptate pe valoarea publică a filekey . Pentru o mai mare claritate, am schițat următoarea diagramă care ilustrează procesul de descărcare a unui fișier:

Vreau să remarc că aici am folosit o metodă foarte vicleană. În acest caz, este important pentru noi ca un atacator să nu poată decripta fișierul, chiar dacă interceptează cheia fișierului primită de la server și cunoaște cheia principală a utilizatorului. Prin urmare, aici puteți juca pe caracteristicile arhitecturii serviciului și puteți utiliza valoarea cheii ul_keyNonce (alias dl_keyNonce) obținută prin criptarea valorii cheii ul_key (sau dl_key) pentru a cripta fișierele.

De când au fost scrise aceste articole, produsul nostru a adăugat capacitatea de a utiliza criptarea hardware folosind algoritmul GOST 28147-89. Versiunea beta a pluginului cu funcționalitate de criptare hardware în conformitate cu algoritmul GOST 28147-89 poate fi descărcată. Această versiune a pluginului nu a fost încă testată complet, așa că vă avertizez că poate conține erori, vă rugăm să le raportați într-un mesaj personal.
În interfața pluginului, criptarea simetrică este implementată de funcția de criptare, care are următoarea sintaxă:
criptare (deviceId, keyLabel, data, resultCallback, errorCallback) → (șir)
Funcția are ca intrare:

  • ID dispozitiv, număr
  • Eticheta cheii de criptare, număr (dacă nu există o astfel de cheie, va fi generată)
  • Date criptate, șir (șir care conține o matrice de octeți de forma „aa:bb:cc:dd”)
  • Funcții de apel invers pentru finalizarea cu succes și fără succes a unei operațiuni de criptare
Decriptarea se face în același mod folosind funcția de decriptare
O atenție deosebită trebuie acordată etichetei cheii, deoarece aceasta determină pe ce cheie vor fi decriptate datele. Eticheta este un șir arbitrar și servește în principal la identificarea convenabilă a cheii. În acest caz, folosesc două perechi de chei: una pentru a cripta cheia principală, a doua pentru a cripta cheile de fișiere individuale. Cheia pe care este criptată cheia principală are o etichetă egală cu parola utilizatorului (acum mi-a venit ideea de a folosi un hash din e-mail||șirul de parole, voi remedia asta în curând viitor). Pentru a cripta cheile fișierelor descărcate, se folosește o cheie cu o etichetă egală cu reprezentarea șirului cheii principale (aici merită să utilizați și hash-ul cheii principale).

Dezvoltare directă

Aș dori să fac imediat o notă despre codul meu sursă: este, de fapt, într-o versiune alfa, deși implementează funcționalitatea descrisă mai sus. Nu am verificat cât de compatibilă s-a dovedit modificarea mea cu celelalte funcții ale serviciului, așa că am postat toate sursele pe github și voi fi bucuros pentru orice ajutor în finalizarea acestui sistem. Prin urmare, nu voi aglomera articolul în continuare cu liste uriașe, ci voi descrie doar schema generală a modului în care funcționează extensia.

Extensia finalizată poate fi descărcată. A fost dezvoltat folosind serviciul Crossrider, care oferă extensii pentru trei browsere (Chrome, Firefox și IE), dar este mai bine să-i verificați funcționarea în Chrome sau Firefox, iar în primul funcționează mult mai stabil.

Codul extensiei este destul de simplu: verifică dacă ne aflăm pe pagina de serviciu și dacă da, pur și simplu încarcă scripturi suplimentare. Aceste scripturi modifică codul paginii, adăugând câteva casete de dialog și înlocuiesc următoarele funcții de serviciu:

  • changepw: responsabil pentru schimbarea parolei
  • api_getsid2: unul dintre apelurile de conectare
  • api_completeupload2: apel invers pentru a finaliza încărcarea fișierului
  • loadfm_callback: managerul de fișiere încărcă apel invers
  • processpacket: un alt apel invers, în care atributele fișierului tocmai descărcat sunt decriptate
  • parsepage: responsabil pentru desenarea dialogurilor suplimentare
  • dologin: extinde capacitățile de autentificare
  • initupload3: responsabil pentru crearea cheii de criptare a fișierului
  • startdownload: analizați invers cheia fișierului și inițializați descărcarea
Încă o dată vreau să vă avertizez că nu ar trebui să trageți extensia pe contul dvs. de serviciu (dacă cineva de aici folosește acest serviciu), dar este mai bine să creați unul de testare. Pentru a utiliza extensia după instalare, veți avea nevoie de:
  1. Pentru a începe, este o idee bună să obțineți Rutoken EDS (sau Rutoken Web) și să instalați un plugin de browser
  2. Instalați extensia
  3. Conectați-vă la serviciu cu extensia dezactivată
  4. Activați extensia în browser
  5. Accesați pagina contului
  6. Faceți clic pe butonul „Bind token”.
  7. Introduceți parola curentă și efectuați această operațiune
În loc de extensie, puteți folosi următorul bookmarklet (testat în Chrome, Safari, Firefox): javascript:(function())(if(document.getElementById("cryptorutokenjs")))(alert("Plugin-ul este deja instalat" );return)funcție loadRemoteScript(url )(var script=document.createElement("script");script.type="text/javascript";script.src=url;document.head.appendChild(script))funcție loadRemoteStyle( url)(var style=document. createElement("link");style.rel="stylesheet";style.type="text/css";style.href=url;document.head.appendChild(style))loadRemoteStyle( "https://mega-crypto .googlecode.com/git/mega.css");loadRemoteScript("https://mega-crypto.googlecode.com/git/util.js");loadRemoteScript("https:/ /mega-crypto.googlecode.com /git/rutoken-extra.js");loadRemoteScript("https://mega-crypto.googlecode.com/git/rutoken-crypto.js");loadRemoteScript("https:/ /mega-crypto.googlecode.com /git/mega.js")))();

Demonstrație de muncă

Mai întâi, să conectăm creația noastră la site. Pentru aceasta:

Apoi, puteți să vă deconectați de la serviciu și să încercați să vă conectați din nou utilizând autentificarea cu doi factori:

Autentificarea are loc conform următoarei scheme:

  1. Verificarea perechii de conectare-parolă pe server
  2. Dacă autentificarea și parola sunt corecte, atunci o cheie principală criptată vine de la server
  3. Pluginul solicită un cod PIN pentru token
  4. Dacă PIN-ul este introdus corect, atunci cheia principală este decriptată pe cheia din token

În loc de o concluzie

Aici îmi vine să scriu „a fi continuat...”, din moment ce nu am acoperit detaliile creării extensiei și interesul înșurubării funcțiilor de criptare asincronă într-un serviciu care în majoritatea cazurilor folosește apeluri sincrone. În încheierea acestui articol, aș dori să mă întorc din nou la ideea implementării criptografiei la nivelul clientului.
Abordarea implementării unor funcții criptografice suplimentare pe partea clientului poate fi aplicată oricărui serviciu web căruia nu îi pasă de ce este stocat pe serverul său: fie că este vorba de stocare de fișiere, e-mail sau un simplu chat. De exemplu, puteți implementa e-mail securizat pe baza oricărui serviciu de e-mail folosind criptarea mesajelor în format CMS și mecanisme de schimb de chei folosind algoritmul VKO GOST R 34.10-2001.
Vă mulțumim pentru atenție, aștept cu nerăbdare întrebările și comentariile dumneavoastră.javascript Adaugă etichete

Stocarea în cloud rămâne un tip de serviciu stabilit în viața noastră. Au cunoscut o creștere rapidă, au experimentat suprasaturarea pieței, când noi „nori” s-au deschis aproape în fiecare săptămână și au experimentat o recesiune când acești „nori” au început să se închidă unul câte unul. Și acum ne confruntăm pur și simplu cu un tip de serviciu care s-a consacrat și a devenit obișnuit, a trecut testul timpului, ținând cont de caracteristicile și viteza industriei moderne.

Există destul de multe stocări în cloud. Fiecare are propriile sale caracteristici și propriul public. Unii oameni aleg un singur „nor”, ​​alții folosesc mai multe deodată. Am ales cele mai interesante zece dintre ele. Unul dintre criteriile pentru acest top este un plan gratuit cu spațiu gratuit în cloud, astfel încât fiecare utilizator să îl poată încerca singur. Fără încercare, doar un plan gratuit cu spațiu liber.

10. pCloud

Un nor destul de interesant și în dezvoltare rapidă. Blogul cloud este actualizat aproape în fiecare săptămână și este clar că dezvoltatorii lucrează activ la el. Îți oferă 10 GB gratuit, dar numai după câțiva pași simpli. Puteți obține încă câțiva GB. Există un sistem de recomandare care vă va permite, de asemenea, să vă măriți spațiul liber. De asemenea, este interesant că pCloud, pe lângă taxa lunară și anuală de abonament pentru funcții avansate, are și un plan de achiziție unică, doar plătești o anumită sumă și mărești volumul cloud-ului tău, pentru totdeauna, e greu să-ți amintești ce alte cloud face asta.

9. MEGA

Stocare criptată de la Kim Dotcom. Au existat zvonuri că i-a fost luat cloud-ul, despre alte vicisitudi neplăcute în managementul MEGA, dar asta nu împiedică stocarea în cloud să se dezvolte și să existe. Cloud-ul este construit pe un nivel destul de ridicat de criptare; pentru a face lucrul cu versiunea web mai confortabilă, este mai bine să instalați o extensie specială de browser pentru a face procesul de decodare mult mai rapid. Există aplicații pentru toate sistemele de operare populare. Principalul lucru care îi atrage pe mulți este că MEGA oferă 50 GB pe planul gratuit. Acest volum a fost la început și rămâne așa până astăzi.

8.MediaFire

Unul dintre cele mai vechi servicii din acest top, funcționează bine, dar se dezvoltă destul de lent. Nu există nicio versiune pentru computere, așa că trebuie să utilizați versiunea web, dar aplicațiile mobile sunt în regulă.

MediaFire a început ca un serviciu de găzduire de fișiere, dar în timp și-a dat seama de declinul acestor servicii și s-a reutilizat în stocarea în cloud. Utilizatorii vechi și cei care au reușit să se lase prinși în promoție au 50 GB spațiu liber, în timp ce altora li se acordă 10 GB, dar uneori devine posibil să crească gratuit cantitatea de spațiu disponibil.

7.Cutie

O altă stocare în cloud testată în timp. Box s-a concentrat inițial pe afaceri și acest lucru i-a permis să supraviețuiască până în prezent și să aibă o bază de utilizatori loiali. Ei oferă 10 GB gratuit și, uneori, există promoții pentru a obține 50 GB de spațiu gratuit. Dar planul gratuit are multe limitări. Toate aceste restricții vor fi eliminate dacă faceți upgrade la un abonament.

6. Cloud Mail.Ru

Mail.Ru Cloud s-a lansat cu 100 GB de spațiu liber, apoi a existat o promoție în care puteai obține 1 TB gratuit, apoi volumul a fost redus semnificativ, iar noilor conturi li se oferă o cantitate redusă de spațiu. Cloud-ul a primit un player audio încorporat, integrare cu Office Online și continuă să primească noi funcții și suport pentru noi formate, dar instabilitatea cu volumul liber nu îi permite să urce mai sus în clasament.

5. Yandex.Disk

Surprinzător de stabil, în ceea ce privește volumul, stocarea în cloud de la Yandex. La lansare au oferit 10 GB de stocare gratuită. Au trecut câțiva ani și au mai rămas 10 GB, dar există promoții constante când poți fie să obții temporar volum gratuit, fie să-ți crești cloud-ul în mod continuu. Să adăugăm aici suport pentru un număr mare de formate, integrare cu Office Online și dezvoltare constantă a aplicațiilor.

La sfârșitul anului 2017, Disk s-a desprins și el. Tot ceea ce încărcați pe Yandex.Disk de pe telefon nu va fi luat în considerare la calcularea volumului total. Se pare că aceasta nu este o promoție, deoarece nu sunt date termene limită. De asemenea, nu există restricții de dimensiune, ceea ce face această funcție chiar mai bună decât Google Foto.

4.iCloud

Dacă îți place tehnologia Apple, atunci cu siguranță ai întâlnit această stocare în cloud. Multe aplicații funcționează prin el, au loc backup și sincronizare. De asemenea, puteți utiliza iCloud ca stocare obișnuită în cloud. Să adăugăm aici o suită de birou de la Apple și o aplicație pentru Windows și vom obține o stocare bună în cloud cu o bază de fani loiali.

Dar dacă nu folosiți produse Apple, orice altă stocare în cloud din acest top ar fi o opțiune mai bună pentru dvs., deoarece vă va oferi mai multe opțiuni.

3. Dropbox

Dropbox este considerat serviciul care a început creșterea „explozivă” a stocării în cloud. Dropbox a fost unul dintre primii care a popularizat acest tip de serviciu și, deși nu are cel mai bun timp, serviciul continuă să se dezvolte și să câștige noi oportunități. Dropbox vă oferă doar 2 GB gratuit. Promoțiile care cresc volumul gratuit nu s-au mai realizat de mult timp, iar restricțiile tarifului gratuit nu permit utilizarea la maximum a cloud-ului. Din păcate, Dropbox nu mai este soluția ideală de stocare în cloud.

2.OneDrive

Stocare în cloud de la Microsoft. Există o integrare strânsă cu suita de birou Office Online, care este integrată și în alte servicii de stocare în cloud, cu acordul Microsoft. În mod implicit, este integrat în Windows 8.1 și Windows 10. Suportul de format este, de asemenea, destul de extins. Lucrând în acest nor, mulți utilizatori pot abandona în siguranță suita Microsoft Office cu drepturi depline sau Microsoft Office 365, care oferă doar capabilități avansate pentru sarcini mai profesionale.

Când achiziționați un abonament la Microsoft Office 365, vi se oferă și 1 TB de spațiu OneDrive ca bonus. Atât de mulți pur și simplu nu extind volumul cloud pe bază de plată, ci pur și simplu achiziționează un abonament la Office și, în același timp, măresc spațiul în cloud.

1. Google Drive

Stocarea în cloud Google are cel mai mare număr de formate de fișiere acceptate, care pot fi extinse cu extensii cloud suplimentare. Documentele mici de birou, precum și fotografiile și videoclipurile cu o extensie mică, nu sunt luate în considerare la calcularea spațiului disponibil în cloud. Și acest spațiu este de 15 GB.

Cloud-ul este integrat cu suita de birou în cloud Google Docs, care are o interfață simplă și ușor de utilizat, motiv pentru care este preferată de mulți pentru a fi folosită ca suită principală de birou. Mai recent, aplicațiile Google Drive și Google Photos au fost combinate într-o singură aplicație numită Google Backup & Sync. Au existat zvonuri despre o aplicație pentru Linux, dar până acum mulți continuă să folosească clienți neoficiali și acesta este aproape singurul dezavantaj serios al liderului actualului top.

Sunt sigur că toți utilizatorii activi de internet au auzit despre povestea închiderii popularului serviciu de găzduire a fișierelor Megaupload și despre nenorocirile creatorului său. Și cu siguranță știu despre noul proiect numit Kim Dotcom Mega. Permiteți-ne să vă reamintim că acest serviciu este reîncarnarea creației anterioare a lui Kim, dar pe o platformă complet diferită.

La crearea acestuia s-au luat în considerare toate deficiențele și erorile Megaupload și s-a pus accentul în primul rând pe stabilitatea serviciului de găzduire a fișierelor. Și nu numai la încărcările de rețea, ci și la atacurile deținătorilor de drepturi de autor. Pentru a realiza acest lucru, se acordă o mare atenție confidențialității și securității datelor dumneavoastră. Toate fișierele pe care le încărcați sunt criptate cu un algoritm special, astfel încât administrația serviciului habar nu are despre conținutul conturilor dvs. și, în consecință, nu poate fi făcută responsabilă pentru acesta. În același scop, serverele Mega sunt situate în țări diferite, așa că dacă există probleme cu legile dintr-o țară, acest lucru nu va duce la prăbușirea întregului serviciu și datele dumneavoastră vor rămâne intacte.

Astăzi dorim să vă prezentăm mai aproape de lucrul acestui serviciu și să vă oferim un mic tur de captură de ecran al funcțiilor acestuia.

Pentru a începe trebuie să vă înregistrați. Pentru a face acest lucru, trebuie să furnizați numele, adresa de e-mail și parola. Serviciul este perfect rusificat și perfect proiectat.

După finalizarea înregistrării, vi se va trimite un link de conectare la adresa de e-mail pe care ați furnizat-o. Făcând clic pe link, va trebui să așteptați câteva minute până când sunt generate chei secrete speciale pentru dvs., cu care datele vor fi criptate.

Intrăm în stocarea noastră în cloud. Totul aici este clar și simplu: arborele folderelor este în stânga, zona de afișare a fișierelor este în centru, iar bara de instrumente este în partea de sus. Fișierele pot fi descărcate făcând clic pe butonul Încărcare nouă sau pur și simplu trageți-l în fereastra de service. Descărcările sunt excepțional de rapide.

Fișierele pot fi organizate în foldere. Mutarea fișierelor între foldere se face prin glisare și plasare sau folosind meniul contextual (vezi mai jos). Nivelul de imbricare a directoarelor nu este limitat.

Un link pentru descărcarea fișierului este generat în fereastra pop-up care apare.
Observați opțiunile din partea de sus a acestei ferestre. Doar dacă este activat Link la fișier, atunci destinatarul dvs. nu va putea descărca fișierul fără a introduce o parolă specială, pe care o puteți trimite separat prin e-mail. În acest fel, puteți posta link-uri de descărcare în locuri publice, cum ar fi un blog sau un forum, dar permiteți doar anumitor persoane să descarce.
Dacă este marcat suplimentar Cheia fișierului, atunci oricine poate descărca fișierul folosind linkul creat. Casete de selectare NumeȘi mărime fișier adăugați caracteristicile corespunzătoare ale fișierului.

Meniul contextual al folderului este ușor diferit. Există un punct aici Partajarea. Cu acesta, vă puteți invita angajații, prietenii sau familia să împărtășească. Invitațiile sunt trimise prin e-mail și accesul poate varia. Numai citire - doar vizionare, Citeste, scrie— vizualizarea și încărcarea fișierelor dvs. într-un folder, Acces complet— vizualizarea, descărcarea și ștergerea fișierelor.

În capitolul Cont puteți vedea volumul spațiului de stocare, puteți cumpăra spațiu suplimentar, puteți modifica setările de transfer de date și alte opțiuni.

Câteva impresii personale

Serviciu de partajare a fișierelor Mega face o impresie grozavă. Viteză de operare excelentă, interfață clară și plăcută, 50 de gigaocteți de spațiu pe disc, fără restricții privind traficul și dimensiunea fișierelor descărcate, plus libertatea completă și confidențialitatea datelor dvs. Este doar un fel de vacanță!

Capacitățile serviciului Mega pot fi utilizate pentru o varietate de scopuri. În primul rând, aceasta este diseminarea diferitelor tipuri de informații, care vor mulțumi foarte mult pirații de pe toate continentele. Cu toate acestea, posibilitatea de acces limitat folosind parole poate fi utilă și pentru vânzarea legală a creațiilor acestora, de exemplu de către muzicieni. Partajarea folderelor face din Mega un instrument interesant pentru organizarea lucrului de la distanță. Și, desigur, o copie de rezervă banală a informațiilor care sunt importante pentru tine.

Singurul lucru care îi lipsește Mega în această etapă este un client desktop și mobil pentru diferite sisteme de operare. Având în vedere vârsta fragedă a serviciului, se poate spera că dezvoltatorii pur și simplu nu au avut încă timp și un astfel de client va apărea în curând. După aceasta, nu văd niciun obstacol pentru ca Mega să devină noul standard pentru stocarea fișierelor în cloud.

Și Microsoft SkyDrive.

Dar stocarea în cloud MEGA nu este atât de cunoscută, deși oferă până la 50Gb pentru utilizare gratuită nelimitată, disponibilă imediat după înregistrare!


Dacă o „creștere” atât de substanțială a hard disk-ului nu v-ar face rău și doriți să aflați cum să obțineți aceiași 50 de gigaocteți și să-i gestionați eficient, atunci citiți recenzia de astăzi!

De unde a venit serviciul MEGA.NZ?

Deoarece veți încredința serviciului cu unele dintre datele dumneavoastră personale, ar fi o idee bună să aflați de unde provine de fapt și cine se află în spatele lui...

Cu siguranță ați auzit despre stocare precum Megaupload. Acesta a fost închis în 2012 prin decizia autorităților americane - cei implicați în crearea serviciului, inclusiv fondatorul său Kim Dotcom, au fost acuzați de FBI de încălcarea drepturilor de autor (stocare și distribuire de conținut licențiat). Exact un an mai târziu, Kim Dotcom a lansat un nou serviciu pe domeniul mega.co.nz.

În prezent, intrarea în cloud este disponibilă la mega.nz, așa că dacă întâlniți recenzii similare ale acestui depozit, unde mega co sau mega co nz este indicată ca adresă, fiți conștienți de faptul că sunt iremediabil depășite :)

Este necesară înregistrarea pentru Mega?

Pe pagina principală a depozitului, veți vedea un buton roșu mare care vă invită să trageți fișierele pe el și să începeți să utilizați serviciul.

Se simte că înregistrarea nu este deloc necesară pentru a funcționa. În principiu, acest lucru este adevărat - puteți încărca imediat unele dintre fișierele dvs. în cloud și chiar le puteți vedea în stocare. Cu toate acestea, fără înregistrare, datele descărcate vor fi șterse din stocare după închiderea paginii sau a browserului:

Prin urmare, treceți prin procesul standard de înregistrare, după care veți primi imediat 50 de gigaocteți de spațiu în cloud complet gratuit!

Setări necesare imediat după înregistrare

Mega nz va acorda o mare atenție securității și confidențialității stocării datelor. Vom vorbi despre asta în detaliu puțin mai târziu, dar deocamdată vă voi sublinia ce trebuie să faceți imediat după înregistrare.


Întrucât serviciul nu stochează parola dvs. pe serverele sale, dacă o pierdeți, nu veți putea recâștiga accesul la contul dvs. Pentru a evita această problemă, trebuie să descărcați și să salvați cheia de recuperare pe computer:

Aceasta este o precauție necesară care nu trebuie neglijată! De acord, va fi păcat să pierzi toate fișierele din cloud doar pentru că ți-ai uitat parola.

Cum se folosește Mega storage

În meniul din partea stângă a ferestrei, faceți clic pe pictograma nor:

Vă veți găsi în unitatea dvs. în cloud. Folosind instrumentele din partea de sus a ferestrei, puteți crea foldere noi, puteți încărca fișiere acolo și chiar puteți descărca foldere gata făcute cu fișiere de pe computer.

Lucrul cu interfața de stocare nu este mai dificil decât utilizarea Windows Explorer. Făcând clic dreapta pe un dosar sau fișier apare un meniu contextual cu o gamă întreagă de opțiuni.

Cu el poți:

  • Primiți informații despre un element (dimensiune, data creării etc.)
  • Atribuiți etichete de culoare și adăugați la Favorite
  • Redenumiți
  • Deplasați-vă în interiorul discului, copiați, ștergeți
  • Descarca
  • Partajați foldere
  • Creați un link public pentru a descărca fișiere

Dezvoltatorii, desigur, au ținut cont de experiența lor negativă cu Megaupload, așa că atunci când creează un link public, se va afișa următoarea fereastră, cu termenii căreia trebuie doar să fii de acord:

Serviciul nu impune nicio restricție cu privire la dimensiunea fișierelor descărcate! În limita cotei de 50 GB, puteți încărca mii de fișiere mici sau, de exemplu, două fișiere de 25 de gigaocteți fiecare. Cu toate acestea, rețineți că browserele în sine au limitări funcționale în ceea ce privește dimensiunea fișierelor pe care le pot descărca. Cele mai „vulnerabile” browsere în acest sens sunt Internet Explorer, Firefox și Safari, care nu acceptă încă pe deplin HTML5.

Crearea accesului partajat la folderele de fișiere

Puteți organiza accesul general la orice dosar din stocarea dvs. online (partajați-l). Pentru a face acest lucru, efectuați următoarele manipulări:

  1. Faceți clic dreapta pe el și selectați opțiunea „Partajare” din meniul contextual derulant.
  2. Specificați adresa de e-mail a utilizatorului căruia doriți să partajați accesul la folder (puteți specifica o listă întreagă de utilizatori simultan).
  3. Selectați metoda de acces: numai citire, citire-scriere sau acces complet.

După aceasta, utilizatorul specificat va primi un e-mail cu un link pentru a accesa folderul partajat.

Cum se creează un link către un fișier în stocarea Mega nz

Pe lângă accesul la foldere, puteți permite oricăror utilizatori să descarce fișiere individuale din spațiul de stocare.


Pentru a face acest lucru, faceți clic dreapta pe orice fișier din cloud și selectați opțiunea „Obțineți link”:

  1. Link fără cheie de decriptare
  2. Legătură cu cheie

Tot în această fereastră puteți copia separat cheia de decriptare în sine. Care este diferența dintre aceste tipuri de link-uri? Și este foarte important!

În primul caz, utilizatorul, după ce a urmat linkul, va trebui să introducă cheia de decriptare pe care i-o oferiți într-o fereastră specială pentru a descărca fișierul. Și în al doilea caz, utilizatorul urmează un link cu o cheie de securitate deja „conectată” și poate descărca imediat fișierul.

Pentru o prezentare generală a funcționalității de stocare și a setărilor care nu sunt incluse în recenzie, vedeți acest videoclip:

De ce se poate avea încredere în Mega cu datele personale?

  1. Dezvoltatorii acordă cea mai mare atenție confidențialității datelor stocate. Abrevierea MEGA în sine înseamnă Mega Encrypted Global Access, adică. Acces global mega criptat).
  2. Criptați fișierele direct în browser folosind algoritmul AES.
  3. Serviciul nu stochează parolele utilizatorului pentru a accesa unitatea cloud.
  4. Toate fișierele din stocare sunt criptate și nu pot fi vizualizate fără o cheie de securitate. Chiar dacă atacatorii obțin acces la serverele companiei, aceștia nu vor putea citi datele utilizatorilor.
  5. Chiar și pentru fișierele destinate descărcarii publice, cheile de acces pot fi generate separat.