Mega хранение файлов. Облачное хранилище MEGA

После запуска в какой-то мере скандального сервиса MEGA разговоры о его защищенности немного побурлили и затихли. На сегодняшний день сервис живет своей жизнью и его никто даже не поломал. Из всех разговоров почему-то был упущен термин «User Controlled Encryption» (UCE, или Контролируемая пользователем криптография), которой кичится MEGA. Под словом «упущен» я подразумеваю тот факт, что мы не рассмотрели все возможности, которые дает нам криптографический движок, выполняющийся в JavaScript на стороне клиента.

Конечно, сам сервис MEGA под этим подразумевает всего лишь то, что ключи шифрования не хранятся на сервере, а вся их криптография выполняется в контексте браузера. При этом после запуска сервиса было много разговоров о том, что в нем используются нестойкие криптографические алгоритмы и что вообще все плохо и мы все умрем, а наши файлы прочитает ФСБ. Это подтолкнуло меня на мысль расширить понятие «UCE» и действительно взять криптографию под свой контроль, а именно - заменить или дополнить некоторые механизмы обеспечения безопасности сервиса.

В этой статье я частично разложу по полочкам магию, которая происходит в двух мегабайтах JavaScript-кода MEGA и покажу, как можно переопределить некоторые методы, чтобы перестать волноваться и полюбить криптографию. В результате мы получим сервис облачного хранения файлов с двухфакторной аутентификацией и аппаратным шифрованием критически важной информации.

MEGA, UCE и все-все-все

Итак, начнем с того, что рассмотрим технологии, на которых построена клиентская часть сервиса, как происходит регистрация новых пользователей, аутентификация зарегистрированных пользователей, смена пароля и загрузка/скачивание файлов.

JavaScript

Как вам уже может быть известно, вся клиентская часть сервиса основана на JavaScript, в коде главной страницы прописаны контрольные суммы SHA-256 для всех скриптов и страниц, которые загружаются браузером. Сама загрузка происходит следующим образом: у всех файлов проверяются контрольные суммы, после чего они объединяются в один BLOB, который отдается браузеру. По исходному коду js-файлов видно, что их писали разные люди и порой встречаются забавные перлы, как например последствия копипаста, бессмысленные условия и просто странные переменные.

В процессе изучения исходного кода сайта я также заметил, что он довольно активно обновляется, разработчики исправляют мелкие ошибки и оптимизируют уже написанный код, что не может не радовать. Сам код написан весьма прямолинейно и без излишней накрутки в виде прототипов: сайт обходится тремя сотнями глобальных переменных и более чем 8000 функций. Разбираться в архитектуре сайта и менять его код было весьма просто.

Из сторонних фреймворков MEGA использует jQuery (без него сейчас никуда), Ext JS и SJCL . Последний как раз реализует криптографическое ядро с AES-шифрованием. SJCL также обуславливает интересный формат хранения ключей и прочих байт-массивов: вместо того, чтобы просто гонять байты в обычном массиве, они «сжимаются» в формат, который именуется a32. Его суть в том, что содержимое любого массива байт пакуется в 32-битные числа и записывается в массив меньшей длины. То есть, каждые 4 байта массива преобразуются в один банальный int. В коде сайта есть функции, которые выполняют всевозможные преобразования над импровизированным множеством {a32 array, string, base64 string}.

Ключевая информация

Прежде, чем перейти к описанию процессов регистрации и аутентификации, стоит рассмотреть информацию, которая подлежит зашифрованию, а именно:
  • Мастер-ключ учетной записи , который создается случайным образом в момент регистрации пользователя и имеет длину в 128 бит. Да и в принципе, длина всех ключей, используемых для симметричного шифрования, равна 128 бит.
  • Закрытый ключ RSA : создается в момент регистрации на основе движений мыши и ввода с клавиатуры. В данной статье я не буду акцентировать внимание на ассиметричной криптографии, поскольку она используется для общего доступа к загруженным файлам, а у меня стояла задача изменить процесс аутентификации и шифрования данных пользователя.
  • Индивидуальные ключи файлов и сами файлы , загружаемые на сервис. Ключи создаются случайным образом при загрузке файла, для зашифрования данных файла используется сам этот ключ, а для зашифрования атрибутов - ключ, созданный на основе индивидуального ключа файла и его контрольной суммы.

Ближе к коду

Сейчас я предлагаю разобрать процессы регистрации и аутентификации, посмотреть, как создается мастер-ключ и как производится его зашифрование.
Я тут попытался изобразить на бумажке эти процессы и дабы дать вам понять всю суть безумия, даже сделал вот такую фотку:

Регистрация нового пользователя

Сам по себе процесс регистрации довольно запутанный, после заполнения пользователем анкеты вызывается могучая кучка функций, но нас интересует функция api_createuser:

// создание нового пользователя и его мастер-ключа function api_createuser(ctx, invitecode, invitename, uh) { var i; var ssc = Array(4); // session self challenge, will be used to verify password 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(); // генерирование случайного мастер-ключа u_k for (i = 4; i--;) ssc[i] = rand(0x100000000); // генерирование случайной аутентификационной последовательности if (d) console.log("api_createuser - masterkey: " + u_k + " passwordkey: " + ctx.passwordkey); // зашифрование мастер-ключа на текущем пароле и отправка его на сервер (поле k) // поле ts представляет собой конкатенацию ssc с ее зашифрованным значением req = { a: "up", 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.cipher.aes(u_k), ssc))) }; if (invitecode) { req.uh = uh; req.ic = invitecode; req.name = invitename; } if (d) console.log("Storing key: " + req.k); api_req(, ctx); }
В этой функции нас интересуют следующие вещи:

  • u_k - сам мастер-ключ, глобальная переменная. Массив из 4х 32-битных чисел, который создается функцией api_create_uk
  • ssc - просто случайный массив, который зашифровывается на мастер-ключе, конкатенируется со своим открытым значением и отправляется на сервер. Позже он будет использован для проверки корректности мастер-ключа при аутентификации
  • sjcl - криптографическая библиотека, реализующая AES
  • rand() - местная реализация генератора псевдослучайных чисел, основанная на RC4
  • encrypt_key() - функция-краеугольный камень симметричной криптографии сервиса. Принимает инициализированный ключом объект sjcl и массив, который надо зашифровать. Код функции приведен ниже и, надеюсь, не нуждается в пояснениях.
// encrypt/decrypt 4- or 8-element 32-bit integer array function encrypt_key(cipher, a) { if (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; }
В итоге после регистрации на сервер отправляются:
  • Мастер-ключ, зашифрованный на ключе, выведенном из пароля учетной записи
  • Строка вида ssc||encrypt_AES-128(u_k, ssc)

Вход пользователя в систему

Теперь можно плавно перейти к процессу аутентификации. Вкратце оно производится так:
  1. Пользователь вводит логин/пароль
  2. Если первый этап аутентификации пройден, то с сервера приходит зашифрованный мастер-ключ и аутентификационная последовательность (ssc), созданная при регистрации
  3. Производится расшифрование мастер-ключа на введенном пользователем пароле
  4. На мастер-ключе расшифровывается аутентификационная последовательность и сравнивается со своим открытым значением - таким образом проверяется корректность мастер-ключа и пароля.
За все вышеописанное отвечает callback-функция api_getsid2:

// расшифрование мастер-ключа после входа пользователя в систему function api_getsid2(res, ctx) { var t, k; var r = false; if (typeof res == "object") { // инициализируем sjcl-aes текущим паролем учетки var aes = new sjcl.cipher.aes(ctx.passwordkey); // если нам в ответе сервера пришел мастер-ключ... if (typeof res.k == "string") { k = base64_to_a32(res.k); if (k.length == 4) { // ... то расшифровываем его k = decrypt_key(aes, k); // и пере-инициализируем sjcl-aes, используя мастер-ключ aes = new sjcl.cipher.aes(k); // если нам пришла ssc из процесса регистрации if (typeof res.tsid == "string") { t = base64urldecode(res.tsid); // зашифровываем первую половину строки и сравниваем со значением с сервера // если они совпали - значит, все явки и пароли сошлись и можно впустить юзера if (a32_to_str(encrypt_key(aes, str_to_a32(t.substr(0, 16)))) == t.substr(-16)) r = ; } // ниже разбирается закрытый ключ RSA-пары, нам это пока не интересно else if (typeof res.csid == "string") { var t = mpi2b(base64urldecode(res.csid)); var privk = a32_to_str(decrypt_key(aes, base64_to_a32(res.privk))); var rsa_privk = Array(4); // decompose private key for (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 (typeof rsa_privk[i] == "number") break; privk = privk.substr(l); } // check format if (i == 4 && privk.length < 16) { // TODO: check remaining padding for added early wrong password detection likelihood r = ; } } } } } ctx.result(ctx, r); }
Как бонус к регистрации/аутентификации можно взглянуть на процесс смены пароля.

// смена пароля пользователя function 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); }
Код этой функции говорит сам за себя: мы зашифровываем мастер-ключ на двух ключах, полученных из старого и нового паролей, а затем отправляем эти значения на сервер. Если текущий пароль подошел, то он заменяется на новый. Тут я больше хотел обратить внимание на функцию prepare_key_pw , которая неявно присутствовала во всех предыдущих операциях. Ее задача - преобразовать строковый пароль в a32-массив, а потом выполнить операцию деривации ключа следующим образом:

// convert user-supplied password array function 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; }
Эта функция вызвала много нареканий, поскольку основана на доморощенном алгоритме. За время написания статьи создатели сервиса успели немного поменять ее код, но существенных изменений я тут не заметил. Ее суть состоит в том, что переданный пароль зашифровывается 65536 раз на константном ключе для того, чтобы получить неотличимый от случайного ключ. Почему создатели сервиса не воспользовались существующими алгоритмами (например, PBKDF2), остается загадкой.

Загрузка и зашифрование файлов

Вкратце весь этот процесс можно представить вот так:

Предупреждаю, долгое вникание в эту картинку опасно для мозга, поэтому ниже я расскажу, как же все это происходит.

Как я уже говорил, при загрузке для каждого файла создается свой случайный ключ-массив из 6ти 32-битных чисел. Первые четыре элемента этого массива используются для зашифрования содержимого файла, а два последних - как начальные значения счетчика, с помощью которого вычисляется контрольная сумма файла. Этот массив хранится в глобальной переменной ul_key . Его же содержимое заносится в JSON-сериализированную строку ul_KeyNonce .

Само за(рас)шифрование происходит с помощью Web Worker (если браузер поддерживает эту технологию) или просто внутри основного кода страницы. Когда файл становится готов к отправке, для зашифрования его атрибутов (на данный момент под атрибутами подразумевается только имя файла) создается новый ключ filekey , основанный на ul_key и контрольной сумме файла. Этот ключ затем зашифровывается на мастер-ключе и отправляется на сервер вместе с атрибутами файла. За все эти действия отвечают функции initupload3 и api_completeupload2 . Создание ключа filekey происходит в функции ul_chunkcomplete , ниже я приведу ее часть.

// начало загрузки файла: создание его индивидуального ключа и инициализация механизма шифрования function initupload3() { // ... вырезано =) // создание случайного индивидуального ключа файла // ul_key используется в коде страницы, // ul_keyNonce передавается в Web Worker и используется там // для зашифрования файла и вычисления его контрольной суммы ul_key = Array(6); for (i = 6; i--;) ul_key[i] = rand(0x100000000); ul_keyNonce = JSON.stringify(ul_key); ul_macs = ; // ... дальше идет обработка очереди загрузки, она не несет интереса... // инициализация sjcl-aes для файла на основе ul_key ul_aes = new sjcl.cipher.aes(); // ... // запуск процесса загрузки файла: // чтение его с диска, зашифрование и отправка onUploadStart(ul_queue_num); ul_dispatch_chain(); } // создание ключа для зашифрования атрибутов файла function ul_chunkcomplete(slot,pos,response) { // ... var t = ; // ul_macs - массив с контрольной суммой файла, полученной внутри worker"а for (p in ul_macs) t.push(p); // заполнение и сортировка временного массива, если кто знает зачем это - объясните пожалуйста t.sort(function(a,b) { return parseInt(a)-parseInt(b) }); for (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 { // зашифрование имени файла на ключе, выведенном из ul_key и контрольной суммы // 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); // передача атрибутов и зашифрованного на мастер-ключе ключа файла var req = { a: "p", t: ut, n: [{ h: ctx.t, t: 0, a: ab_to_base64(ea), // атрибуты k: a32_to_base64(encrypt_key(u_k_aes, ctx.k)), // == AES_encrypt(u_k, filekey) fa: ctx.fa }] }; if (ut) { // a target has been supplied: encrypt to all relevant shares var sn = fm_getsharenodes(ut); if (sn.length) { req.cr = crypto_makecr(, sn, false); req.cr = ctx.t; } } api_req(, ctx.ctx); } }

Скачивание и расшифрование файлов

Очевидно, что эти процессы должны быть просто обратными к зашифрованию файла. Единственное что может нести интерес - это получение значения ключа ul_key из пришедшего с сервера зашифрованного значения filekey .

На момент скачивания файла в контексте браузера уже содержится объект, хранящий расшифрованные ключи файлов. Поэтому сначала имеет смысл рассмотреть процесс, который происходит сразу после аутентификации пользователя, а именно - загрузку файл-менеджера. После того как пользователя пустили на сервис, ему естественно хочется получить доступ к своим файлам (предположим, что они у него уже там были). Для этого нам нужно расшифровать сначала ключи файлов, а затем - их атрибуты. Этим делом занимается очередная пачка функций, из которых нас интересуют loadfm_callback и process_f_f .

Вкратце процесс получения атрибутов файлов можно описать следующим алгоритмом:

  1. Дождаться загрузки файл-менеджера (loadfm_callback), где получить JSON с описанием всех загруженных файлов
  2. Создать массив farray , в который положить массив с информацией о файлах
  3. Запустить (рекурсивно) для каждого файла функцию process_f_f
  4. Для каждого файла, у которого есть ключ, расшифровать этот ключ и атрибуты (функция crypto_processkey) и сохранить их обратно в массив с информацией о файлах
  5. После этого сохранить расшифрованные значения в переменную FileStore (окончание рекурсии в process_f_f)
Ниже я приведу выдержки из кода, иллюстрирующие этот алгоритм

// callback загрузки файл-менеджера function loadfm_callback(json, res) { // ... // обработка JSON с информацией о файлах json = json; if (d) console.log(json); if (d) console.log(json); if (json.u) process_u(json.u, false); if (json.ok) process_ok(json.ok); if (json.s) { for (i in json.s) { if (u_sharekeys.h]) { sharingData.push({ id: json.s[i].h + "_" + json.s[i].u, userid: json.s[i].u, folderid: json.s[i].h, rights: json.s[i].r, date: json.s[i].ts }); sharednodes.h] = true; } } } // ... дальше ничего особого... // занесение информации о файлах в еще один глобальный массив farray = new Object; farray.f = json.f; // запуск его обработки, callback был объявлен выше // в этой функции и просто модифицирует верстку process_f(fi, false, callback); fi++; } // рекурсивная функция, в которой происходит расшифрование ключей и атрибутов файлов // вызывается из process_f function process_f_f(fid) { // условие окончания рекурсии - мы обработали все файлы в массиве farray if (!farray.f.i]) { if (farray.ap) FileStore.suspendEvents(); // запись данных в 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); return false; } var f = farray.f.i]; f.attrs = f.a; if (f.sk) u_sharekeys = crypto_process_sharekey(f.h, f.sk); // если файл подходит по типу и имеет ключ, то обработаем его if ((f.t !== 2) && (f.t !== 3) && (f.t !== 4) && (f.k)) { crypto_processkey(u_handle, u_k_aes, f); // описание этой функции ниже u_nodekeys = f.key; if ((typeof f.name !== "undefined") && (f.p == InboxID)) InboxCount++; } else { if (f.a) { if (!missingkeys) { missingkeys = true; newmissingkeys = true; } } f.k = ""; f.name = ""; } if (f.t == 2) RootID = f.h; else if (f.t == 3) InboxID = f.h; else if (f.t == 4) TrashbinID = f.h; else if ((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 + ":"); // сначала проверим, не является ли файл общим if (p) { // I don"t - do I have a suitable sharekey? for (id in u_sharekeys) { p = file.k.indexOf(id + ":"); if (p >= 0 && (!p || file.k.charAt(p - 1) == "/")) break; p = -1; } } // а затем уже можем перейти к расшифрованию if (p >= 0) { delete keycache; // слеш - видимо признак шары var pp = file.k.indexOf("/", p); if (pp < 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)); } // если мы корректно расшифровали ключ и атрибуты - сохраняем их в объект файла file.key = k; file.name = o.n; } } } else { if (d) console.log("Received no suitable key: " + file.h); if (!missingkeys) { newmissingkeys = true; missingkeys = true; } keycache = file.k; } }
После этого мы можем получить значение исходного ключа ul_key из контекста браузера следующим образом: dl_keyNonce = JSON.stringify();
Это преобразование происходит в функции startdownload . Если учесть, что значение dl_key == filekey из функции ul_chunkcomplete и выполнить нехитрые операции сложения по модулю, то мы заметим, что в переменной dl_keyNonce будет хранится значение ul_key , сгенерированное при загрузке файла. Иллюстрацию этому можно наблюдать в нижнем левом углу доски на фотографии в начале раздела про загрузку файлов.

«Перегрузка» криптографических операций

Несмотря на то, что вышеописанные принципы защиты файлов и ключей являются весьма безопасными, кому-то может не понравиться, что мы все равно зависим от реализации алгоритмов, которые предоставляет сервис. В этом случае мы можем разработать свое расширение для браузера, которое будет переопределять некоторые функции сервиса, реализуя в них дополнительное шифрование. А именно, я решил реализовать защиту ключевой информации (мастер-ключа и ключей файлов) с помощью аппаратного шифрования на неизвлекаемом ключе по алгоритму ГОСТ 28147-89. Бонусом к этому также будет и включение на сервисе двухфакторной аутентификации.
Итак, рассмотрим такой use-case:
  • Пользователь регистрируется на сервисе
  • Затем он устанавливает расширение
  • С его помощью производится аппаратное зашифрование мастер-ключа на неизвлекаемом с токена ключе
  • Зашифрованный таким образом мастер-ключ загружается на сервер
После этого будет невозможно получить значение мастер-ключа не обладая токеном и его PIN-кодом. Это даст:
  1. Двухфакторную аутентификацию на сервисе (без корректно расшифрованного мастер-ключа «завалится» функция api_getsid2)
  2. Без токена также нельзя будет сменить текущий пароль учетной записи
Следующим шагом будет зашифрование с помощью токена ключа шифрования файла (он же ul_key) и ключа атрибутов файла (filekey), который как раз хранится на сервере. Таким образом, мы получим, что каждый файл будут зашифрован на ключе, который никогда не попадет на сервер, куда уйдет зашифрованный нами filekey из функции api_completeupload2 . Атрибуты файлов будут зашифрованы на открытом значении filekey . Для пущей наглядности я набросал следующую схему, иллюстрирующую процесс загрузки файла:

Хочу отметить, что здесь я применил весьма хитрый метод. В данном случае нам важно, чтобы злоумышленник не мог расшифровать файл, даже если он перехватит пришедший с сервера ключ файла и будет знать мастер-ключ пользователя. Поэтому тут можно сыграть на особенностях архитектуры сервиса и использовать для за(рас)шифрования файлов значение ключа ul_keyNonce (оно же dl_keyNonce), полученное в результате зашифрования на токене значения ключа ul_key (или dl_key).

С момента написания этих статей в наш продукт добавилась возможность аппаратного шифрования по алгоритму ГОСТ 28147-89. Beta-версию плагина с функциональностью аппаратного шифрования по алгоритму ГОСТ 28147-89 можно скачать . Эта версия плагина еще не прошла полное тестирование, поэтому предупреждаю о том, что в ней могут быть ошибки, о нахождении которых прошу сообщать в личку.
В интерфейсе плагина симметричное зашифрование реализуется функцией encrypt , которая имеет следующий синтаксис:
encrypt(deviceId, keyLabel, data, resultCallback, errorCallback) → {string}
В качестве входных данных функция принимает:

  • Идентификатор устройства, number
  • Метку ключа для шифрования, number (если такого ключа нет, он будет сгенерирован)
  • Зашифровываемые данные, string (строка, содержащая в себе байт-массив вида "aa:bb:cc:dd")
  • Функции обратного вызова для успешного и неуспешного завершения операции шифрования
Расшифрование производится аналогично с помощью функции decrypt
Отдельное внимание стоит уделить метке ключа, поскольку она определяет, на каком ключе будет производится за(рас)шифрование данных. Метка представляет собой произвольную строку и в основном служит для удобной идентификации ключа. В данном случае я использую две ключевых пары: одну для за(рас)шифрования мастер-ключа, вторую - для зашифрования индивидуальных ключей файлов. Ключ, на котором зашифровывается мастер-ключ имеет метку, равную паролю пользователя (сейчас мне пришла в голову идея использовать хеш от строки e-mail||пароль, в ближайшее время я это исправлю). Для зашифрования ключей загружаемых файлов используется ключ с меткой, равной строковому представлению мастер-ключа (здесь также стоит использовать хеш от мастер-ключа).

Непосредственно разработка

Сразу хочу сделать замечание по поводу моего исходного кода: он, по сути, находится в альфа-версии, хотя и реализует описанную выше функциональность. Я не проверял, насколько моя переделка получилась совместимой с остальными функциями сервиса, поэтому все исходники я выложил на github и буду рад любой помощи по доработке этой системы. Поэтому я не буду засорять статью дальше огромными листингами, а лишь опишу общую схему работы расширения.

Готовое расширение можно скачать . Разработано оно с помощью сервиса Crossrider , что дает расширения для трех браузеров (Chrome, Firefox и IE), но проверять его работу лучше в Chrome или Firefox, причем в первом оно работает гораздо стабильнее.

Код расширения до банального прост: он проверяет, находимся ли мы на странице сервиса и если это так, то просто подгружает дополнительные скрипты. Эти скрипты модифицируют код страницы, добавляя пару диалогов, и переопределяют следующие функции сервиса:

  • changepw: отвечает за смену пароля
  • api_getsid2: один из callback"ов логина
  • api_completeupload2: callback завершения загрузки файла
  • loadfm_callback: callback загрузки файл-менеджера
  • processpacket: очередной callback, в котором расшифровываются атрибуты только что загруженного файла
  • parsepage: отвечает за рисование дополнительных диалогов
  • dologin: расширяет возможности аутентификации
  • initupload3: отвечает за создание ключа шифрования файла
  • startdownload: обратный разбор ключа файла и инициализация скачивания
Еще раз хочу предупредить, что не стоит тащить расширение на рабочий аккаунт (если тут кто-нибудь вообще пользуется этим сервисом), а лучше завести тестовый. Для того, чтобы воспользоваться расширением после его установки вам будет нужно:
  1. Для начала неплохо раздобыть Рутокен ЭЦП (или Рутокен Web) и установить плагин для браузера
  2. Установить расширение
  3. Залогиниться на сервис с отключенным расширением
  4. Включить расширение в браузере
  5. Зайти на страницу учетной записи
  6. Нажать на кнопку «Привязать токен»
  7. Ввести текущий пароль и выполнить эту операцию
Вместо расширения можно воспользоваться следующим букмарклетом (проверено в Chrome, Safari, Firefox): javascript:(function(){if(document.getElementById("cryptorutokenjs")){alert("Плагин уже установлен");return}function loadRemoteScript(url){var script=document.createElement("script");script.type="text/javascript";script.src=url;document.head.appendChild(script)}function 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")})();

Демонстрация работы

Для начала подключим наше творение к сайту. Для этого:

Затем можно выйти из сервиса и попробовать снова зайти, используя двухфакторную аутентификацию:

Аутентификация при этом происходит по следующей схеме:

  1. Проверка пары логин-пароль на сервере
  2. Если логин-пароль правильные, то с сервера приходит зашифрованный мастер-ключ
  3. Посредством плагина производится запрос PIN-кода к токену
  4. Если PIN введен правильно, то производится расшифрование мастер-ключа на ключе с токена

Вместо заключения

Здесь мне так и хочется написать «продолжение следует...», поскольку я не осветил детали создания расширения и интересности прикручивания асинхронных функций шифрования в сервис, который в большинстве случаев использует синхронные вызовы. В заключении этой статьи я хотел бы еще раз обратиться к идее реализации client-side криптографии.
Подход к реализации дополнительных криптографических функций на стороне клиента может быть применен к любому веб-сервису, которому не важно, что хранить у себя на сервере: будь то файловое хранилище, почта или простейший чат. Например, можно реализовать защищенную почту на базе любого почтового сервиса с использованием шифрования сообщений в формате CMS и механизмов обмена ключами по алгоритму VKO GOST R 34.10-2001.
Спасибо за внимание, жду ваших вопросов и комментариев.javascript Добавить метки

Для обычного пользователя интернета в настоящее время не составляет особого труда найти и бесплатно использовать файлообменный облачный сервис - их достаточно много. Как говорится, на любой вкус и цвет.

Не будет исключением и новый файлообменный сервис MEGA . Как, вы ещё не слышали о MEGA ? MEGA - это новый онлайновый сервис хранения файлов, созданный известным бизнесменом Тимом Доткомом. Прежний его сервис - Megaupload.com - закрыли из-за сурового прессинга антипиратских лоббистов. Но, Тима отпустили на волю, и он взялся за старое и создал новый сервис по хранению файлов для пользователей. Ещё круче и ещё интереснее. И хотя проект пока что сыроват, у него явно есть будущее, так как у прежнего файлообменника Megaupload.com было немало поклонников.

Учитывая свой горький опыт, Тим Дотком пришёл к выводу, что все файлы, которые хранятся и закачиваются на сервис нужно шифровать. Это повысит безопасность использования пользователями облачного хранилища и пресечёт от «перехвата» личной информации. Вот в этом видео Ким делится своим мнением по поводу шифрования информации и не только.

Вернёмся к файлообменнику MEGA.

О том, что сервис защищён шифрованным соединением не трудно убедиться. Если взглянуть на адресную строку браузера (в данном случае браузера Google Chrome), то там указано, что соединение установлено по защищённому протоколу https:// . Буква s - означает secure (безопасный).

Раньше такую фишку использовали только платёжные системы и сайты, на которых нужно вводить платёжные данные. Теперь же его используют даже поисковики, например, Google.

Надеюсь, вам уже стало интересно. Так давайте зарегистрируемся на MEGA и узнаем что, да как там работает.

Я регистрировался в первые дни после открытия сервиса. Тогда он ещё сильно глючил, но, не смотря на это, мне удалось закачать некоторое количество файлов.

Стоит отметить тот факт, что сервис поддерживает несколько языков (в том числе и русский). Это несомненный плюс проекта.

Для того чтобы зарегистрироваться нужно зайти на сайт MEGA и найти кнопку "Регистрация ". Создаём новый аккаунт - указываем имя (можно придумать любой никнейм), свой e-mail и пароль.

Ставим галку в чекбоксе «» и жмём кнопу «Зарегистрироваться». На почтовый e-mail адрес вскоре после регистрации должно прийти письмо. В тексте письма нужно найти ссылку и перейти по ней. Это будет подтверждением регистрации. Вот, собственно, и всё. Регистрация завершена.

Заходим в аккаунт указав свай e-mail и пароль. Теперь создадим новую папку. Сделаем это для того, чтобы не запутаться, ведь в будущем файлов может быть много. Находим иконку красного облака в менеджере файлов и щёлкаем правой кнопкой мыши. Должно появиться выпадающее меню. Вот такое.

Назовём новую папку «Книги ». Будем складывать туда электронные книги, которые нам понравились:).

Жмём кнопку создать. Наблюдаем, что в менеджере файлов появилась новая папка "Книги".

Кроме того, что мы можем создать папку, мы можем удалить уже существующую. Делается это также просто. Нужно указать ту папку, которая нам больше не нужна, и, щёлкнув правой кнопкой мыши по ней выбрать в выпадающем меню пункт "Удалить ". Всё интуитивно понятно.

Вообще интерфейс очень напоминает операционную систему. Здесь также можно создать папку, переименовать её, переместить или копировать. То же самое можно проделывать и с обычными файлами. Попробуйте сами и вы быстро разберётесь.

Также есть специальная папка – «Корзина ». Да, да это та самая корзина, в которой скапливаются удалённые файлы и папки. Точно также как и в операционной системе. И это очень здорово, так как можно удалить файл по ошибке и горько пожалеть об этом. Тут же файлы удаляются сначала в «Корзину» и их можно восстановить при желании. Это делается простой командой переместить или копировать.

Судя по всему, корзина чистится только принудительно через пункт «Очистить корзину ». То есть удалённые файлы хранятся до тех пор, пока вы их сами не удалите полностью и безвозвратно.

Ну, да ладно, отвлеклись. Давайте попробуем закачать в созданную нами папку «Книги» какой-нибудь файл. Для пробы. Щёлкаем по папке «Книги» в панели «Менеджер файлов ». Далее жмём на кнопку «Закачать файл» что расположена в верхнем меню.

Появляется окно выбора файла, выбираем, жмём «Открыть».

Внизу страницы можно увидеть процесс загрузки файла.

Если в статусе указано «pending… », то это значит, что файл поставлен в очередь и ожидает загрузки. Такое бывает, если загружаются несколько файлов или папка с файлами. Не закрывайте окно браузера. Как только очередь загрузки дойдёт до файла со статусом ожидания («pending»), то начнётся процесс загрузки, который можно будет наблюдать.

Кроме загрузки отдельных файлов предусмотрена загрузка целых папок с файлами. Для этого жмём кнопку «Закачать папку» и в окне «Обзор папок» выбираем нужную, жмём ОК. После подтверждения выбора начнётся загрузка.

Тут стоит предупредить о том, что загрузка целых папок с множеством файлов может затянуться по времени на долгие часы. Время загрузки зависит как от нагрузки на сам сервис MEGA, так и от пропускной способности интернет-соединения.

Теперь поговорим о том, как можно получить ссылку на файл и передать её другому. Это же файлообменный сервис.

Если взглянуть на список файлов, то можно увидеть, что рядом с именем каждого файла есть вот такой значок. При нажатии на него появляется окно получения ссылки на файл («Ссылки »).

Со ссылками не так всё просто. Как уже говорилось, все файлы шифруются и передаются по сети защищёнными. В окне получения ссылки на файл есть несколько чекбоксов (окошки, где убирают или ставят галочки). В зависимости от того, какие чекбоксы мы отметим, будет зависеть то, какую ссылку мы получим.

    Если его отметить, то в окне появится только ссылка на файл. Но по этой ссылке файл не скачать. Нужен ключ к файлу. Он отобразится если отметить чекбокс ключ файла.

    Ключ файла . Это некая комбинация символов, которые дают доступ к файлу при скачивании. Его нужно будет ввести получателю файла в специальное поле на странице скачивания.

    Имя файла . Поставьте галочку в нём, если хотите, чтобы в ссылке было указано имя файла. То же самое касается и чекбокса «Размер файла ». Можно указывать, а можно и нет. Тут как изволите:)

Давайте посмотрим, что будет, если указать в параметрах ссылки только «» и «» + «Ключ файла ». Параметры «Имя файла » и «Размер файла » указывать не будем, так как они особо ни на что не влияют, а служат чисто информативными.

Далее откроем новую вкладку браузера и в адресную строку скопируем текст полученной ссылки. При этом можно использовать комбинацию горячих клавиш CTRL+V . Эта комбинация отвечает за вставку скопированного в буфер обмена текста. Перейдём по ссылке и увидим страницу на скачивание. Страничка очень красиво оформлена. В центральной области страницы увидим вот такое сообщение.

Опа! Тут с нас спрашивают какой-то decryption key . Только зная ключ к файлу его можно скачать. Вот этот ключ нам и предлагается получить в окне получения ссылок.

Итак, получим его и вставим в поле с надписью «Enter decryption key ». Не забываем поставить галочку в боксе рядом с надписью «Я согласен с условиями предоставления услуг MEGA ».

Жмём кнопку "Скачать " и ждём когда скачается файл.

Как видим, скорость загрузки файла составляет 864,5 кбит/сек. , что очень даже немало.

А что же делать тем, кто не любит играть в шпионов? В таком случае при получении ссылки на файл, ставим галочки в чекбоксах «» + «Ключ файла » и копируем её.

Всё, теперь ссылку можно вставить в текст электронного письма, сообщения ICQ и отправить тому, кому вы хотите передать файл. На странице загрузки файла никаких ключей при этом вводить не понадобится, достаточно только согласится с условиями предоставления услуг, и щёлкнуть по кнопке «Скачать ».

Теперь, когда с интерфейсом сервиса мы успешно разобрались, давайте заглянем в настройки. Переходим на вкладку «Аккаунт» и попадаем на страницу настроек и параметров.

Бесплатный тип аккаунта на MEGA позволяет использовать 50 Гбайт места в облачном хранилище.

Если хотите больше – платите денежку. Но, для личных целей вполне достаточно и этих 50 Гбайт. У платного типа аккаунта есть и свои плюсы. Во-первых, это увеличенная скорость загрузки. Во-вторых – увеличенный объём места на сервисе 500 Гбайт (Pro Ⅰ ), 2 Тбайт (Pro Ⅱ ), 4 Тбайт (Pro Ⅲ ).

Здесь же на странице показан процент занятого места в хранилище.

Также можно задать параметры передачи: ограничить скорость передачи, выставить количество параллельных соединений. Здесь же можно включить / выключить функцию пропуска одинаковых файлов при загрузке, а также использование защищённого протокола SSL . Отключение защищённого протокола передачи данных увеличивает скорость загрузки файлов, так как в этом случае не используется избыточный код.

На этой же странице можно посмотреть баланс (если используется платный тип аккаунта) и историю сессий.

В данной статье я продолжу рассказывать о работе с различными онлайн хранилищами и рассмотрим мы ещё 3 хороших сервиса: Облако Mail, Mega и Microsoft OneDrive.

Из данного руководства вы узнаете как зарегистрироваться в каждом из приведённых выше сервисов, а также о том, как с ними работать через Web интерфейс и специальное приложение для операционных систем (я покажу на примере Windows).

О работе с сервисами Яндекс и Google дисками я рассказывал в отдельной предыдущей статье — , поскольку они являются наиболее востребованными и популярными.

Каждый из вышеуказанных 3-х сервисов предоставляет свой определённый объём для хранения ваших данных бесплатно, а также имеет свои правила по расширению объёма как платными, так и бесплатными средствами.

Такую общую информацию и сравнение всех наиболее популярных онлайн дисков вы сможете прочитать в отдельной статье:

Начнём с сервиса Oблако@Mail.

Регистрация в сервисе Облако@Mail

Cервис Mail предоставляет удалённое хранилище данных бесплатным объёмом 100 Гб.

Рассмотрим поэтапно как зарегистрироваться и подключить себе аккаунт и получить сразу 100 Гб.

    Переходим на страницу сервиса Облако@Mail по ссылке:

    mail

    В самом низу открывшейся страницы будет большая кнопка «Попробовать облако». Нажимаем её:

    Появится форма для входа. Если у вас уже имеется аккаунт на Mail.ru (например, электронная почта), то просто введите логин, пароль и нажмите кнопку «Войти», после чего вы сразу окажитесь в своём аккаунте удалённого хранилища от Mail.

    Если же аккаунта на Mail.ru у вас нет, то кликайте по ссылке «Регистрация»:

    Откроется окно с регистрационной формой. Заполняйте все поля своими данными: Имя, Фамилия, Дата рождения, Город, Пол.

    В поле «Почтовый ящик» укажите желаемый логин, по которому вы в дальнейшем будете заходить на все сервисы Mail. Для вас также автоматически зарегистрируется почта формата: «Ваш логин@mail.ru».

    Ниже указываем пароль и повторяем его в следующей строке. Старайтесь указывать пароль посложнее для вашей же безопасности. При этом Mail должен сообщить о том, что пароль – сильный.

    Далее вы можете указать свой существующий номер телефона и завершить регистрацию, а можете не вводить номер (это можно сделать в любое время) и указать вместо него контрольный вопрос. Для этого нажмите ссылку «У меня нет мобильного телефона»:

    После клика по этой ссылке, ниже появится ещё 3 пункта. Нужно заполнить 2 верхних: «Секретный вопрос» и «Ответ». В первом вы, соответственно, выбираете контрольный вопрос и ниже указываете на него ответ. Этот ответ пригодится в случае, если вы забудете данные для входа в аккаунт:

    Нажимаем кнопку «Зарегистрироваться».

    Появится окно для ввода капчи. Просто указываем символы точно такие же как на картинке справа и нажимаем «Готово»:

    На этом регистрация уже завершена, но будут ещё появляться окна с настройками. Например, в следующем окне вам предлагают собрать всю вашу почту с других ящиков в один ящик только что созданный на Mail. Конечно, если вы постоянно будете пользоваться созданной почтой от Mail, это имеет смысл сделать, но мы сейчас говорим не о работе с почтой и поэтому нажимаем кнопку «Пропустить»:

    В любом случае настроить сбор почты можно будет в любое время через настройки аккаунта.

    Далее появится окно настроек, где предлагают поставить подпись, которая будет прикрепляться к каждому отправляемому вами письму с Mail и загрузить аватарку для аккаунта. На сервис «Облако», который мы рассматриваем это никак не влияет, и поэтому можете сделать это сейчас, а можете и потом. Нажимаем кнопку «Сохранить»:

    Это было последнее окно настроек, после которого вы перейдёте в ваш аккаунт Mail и по началу будет открыта почта. Перейдём к рассмотрению основных функций при работе с сервисом «Облако@Mail» через Веб-интерфейс.

Работа с сервисом «Облако@Mail» через Веб-интерфейс

После того как вы зарегистрируете аккаунт в Mail, сразу же будет выполнен вход в созданный аккаунт. Оттуда перейти на сервис онлайн хранилища можно кликнув по кнопке с изображением облака в верхней части окна:

Откроется окно с приветствием от сервиса, где мы просто нажимаем «Далее»:

И в последнем окне принимаем условия лицензионного соглашения, поставив соответствующую галочку и нажимаем «Начать работу»:

Переходим к возможностям работы с онлайн диском от Mail через Веб-интерфейс

После перехода в сервис онлайн-хранилище от Mail мы увидим вот такой интерфейс:

Начнём поэтапно рассматривать полезные функции:


На этом все самые главные функции по работе с сервисом Облако@Mail мы разобрали. Переходим к рассмотрению как работать с Облаком через очень удобное приложение для операционной системы Windows.

Работа с онлайн диском Облако@Mail через приложение для Windows

Работа с любым онлайн-диском через приложение для вашей системы намного удобнее и позволяет использовать больше возможностей, например, возможность загрузки папок, а не только файлов.

Рассмотрим всё поэтапно.

Установка приложения Облако@Mail на компьютер:

    Для начала необходимо скачать приложение. Сделать это можно прямо из главного окна аккаунта, кликнув по кнопке «Скачай приложение для компьютера»:

    Если будут просьбы, то могу также отдельно рассказать о работе с любыми подобными онлайн-хранилищами через Смартфоны / Планшеты, что тоже очень удобно!

    В новом окошке нам предлагают выбрать операционную систему, для которой будет скачано приложение. В наших примерах мы рассматриваем пока что только системы Windows. Но принцип работы с приложением на других системах полностью аналогичен. Итак, щёлкаем по кнопке с изображением Windows:

    Установочный файл загрузится на ваш компьютер. Находим его и запускаем:

    В первом окне установке выбираем язык и жмём «ОК»:

    На следующем этапе вы можете изменить путь установки, нажав кнопку «Обзор», если это необходимо. Но я рекомендую оставлять путь, заданный по умолчанию.

    Теперь будет предложено изменить папку в меню «Пуск». Смысла в этом нет, но если хотите поменять – нажимайте «Обзор» и выбирайте другую папку.

    В предпоследнем окне установки мы можем отключить автоматический запуск приложения при загрузке Windows и отключить создание значка на рабочем столе. Создать ярлык на рабочем столе или нет – решать вам и создать его можно будет и в дальнейшем в любое время. А вот функцию запуска вместе с Windows я рекомендую никогда не отключать чтобы ваши файлы всегда синхронизировались с вашим аккаунтом, и вы всегда имели доступ к последним версиям ваших файлов с любых ваших устройств. А то мало ли, забудете запустить приложение вручную и в таком случае изменения в ваших загруженных ранее файлах сохраняться на сервер уже не будут.

    После того как вы выбрали то что нужно, нажимаем «Далее»:

    Ну и в последнем окне нажимаем кнопку «Установить»:

    Установка, как правило, проходит в течении нескольких секунд.

    На последнем завершающем этапе нажимаем «Готово», оставив галочку «Запустить Cloud Mail.ru», для того чтобы приложение сразу запустилось:

Всё! Приложение теперь установлено на ваш компьютер. Приступим к работе с ним.

Работа с Облаком Mail через установленное на компьютер приложение:

    Первым делом необходимо войти в аккаунт. Окно авторизации будет отображено сразу после того, как вы установите приложение.

    Вводим логин и пароль от аккаунта в Mail (он должен указываться в формате вашей электронной почты на Mail), оставляем галочку «Я согласен с условиями лицензионного соглашения» и нажимаем «Войти»:

    После этого приложение будет запущено. Оно отобразится в трее Windows и вы получите уведомление:

    Доступ к папке вашего аккаунта Облако@Mail.ru .

    Итак, приложение работает. Для того чтобы увидеть файлы, которые уже загружены в Облако, откройте специально созданную папку «Cloud Mail.ru». Это можно сделать с ярлыка на рабочем столе:

    Также всегда открыть папку диска вы можете, щёлкнув 2 раза по значку Cloud Mail в трее.

    В папке вы уже увидите все свои ранее загруженные через Веб-интерфейс файлы, например:

    Загрузить файлы на Облако через приложение проще простого. Просто скопируйте в папку Cloud Mail.ru все файл и папки, которые хотели бы загрузить на ваш онлайн-диск Mail:

    Обратите внимание, что теперь, пользуясь приложением для компьютера, можно загружать помимо файлов и целиком папки!

    Чтобы проверить, загрузились ли файлы на ваш диск до конца, щёлкните правой кнопкой мыши по значку приложения в трее:

    Если все файлы загружены, вверху будет надпись: «Синхронизировано», если же ещё идёт загрузка, то будет написано «Идёт синхронизация».

    Удалить файлы с вашего хранилища также просто. Для этого нужно лишь удалить их из папки Cloud Mail.Ru, находящейся на вашем компьютере.

    Рассмотрим последнюю важную функцию через приложение – доступ для скачивания к выбранному файлу другим пользователям.

    Для того чтобы получить ссылку на скачивание любого файла, находящегося на вашем диске через приложение, откройте папку Cloud Mail.ru, где находятся все ваши файлы, щёлкните правой кнопкой мыши по нужному из них и выберите пункт «Облако@Mail.Ru: Скопировать публичную ссылку»:

На этом все основные функции по работе с сервисом Облако@Mail.Ru мы разобрали, и пора переходить к следующему сервису – Mega.

Регистрация в сервисе Mega

Рассмотрим процесс создания аккаунта в файловом хранилище Mega, который предоставляет бесплатно 50 Гб свободного дискового пространства. Как видите, по умолчанию сервис англоязычен, но поменять язык можно будет на русский сразу после создания аккаунта.

Итак, начнём регистрацию:

На этом создание вашего аккаунта закончено! Теперь перейдём к рассмотрению функционала через стандартный Веб-интерфейс (т.е. через браузер).

Работа с онлайн-хранилищем Mega через Веб-интерфейс

После того как вы зарегистрируете аккаунт, интерфейс сервиса будет выглядеть вот так:

Начнём поэтапно рассматривать все основные функции сервиса:

Теперь рассмотрим взаимодействие с онлайн-хранилищем Mega через специальное приложение для Windows.

Управление онлайн хранилищем Mega через приложение для Windows

Начнём с установки приложения:

    Для начала приложение как обычно нужно скачать. Сделать это можно из аккаунта.
    Переходим в раздел «Меню», выбираем подменю «Приложения» и далее пункт «Приложение синхронизации»:

    На новой странице спускаемся чуть вниз и нажимаем кнопку «Загрузить бесплатно для Windows»:

    Начнётся автоматическое скачивание файла. Иногда нужно указать папку для скачивания вручную. Это зависит от браузера.

    После того как файл скачается, найдите его на компьютере и запустите:

    Начнётся процесс установки. Подобные программы, как правило, имеют практически одинаковый процесс установки. В первом окне выбираем язык и нажимаем «ОК»:

    Принимаем лицензионное соглашение кнопкой «Принять»:

    На следующем этапе рекомендую переключить кнопку на пункт «Install for anyone using this computer», что означает – установить для всех пользователей данного компьютера, чтобы в дальнейшем не возникало проблем с доступом к программе:

    В следующем окне можно указать другое название для папки в меню «Пуск», куда будут помещены ярлыки программы. Удобнее всего оставить имя, заданное по умолчанию. Нажимаем кнопку «Установить»:

    Начнётся процесс скачивания дополнительных файлов для установки, который займёт около минуты:

    В последнем окне нажимаем кнопку «Готово», оставив галочку «Запустить MEGAsync 1.0.36»:

    Программа установлена к этому моменту и теперь начнётся некоторые этапы настройки. В следующем окне отмечаем пункт «У меня есть учётная запись MEGA», если вы уже проходили регистрацию, например, по инструкции из данной статьи:

    Если же вы ещё не регистрировались, то выберите второй пункт и пройдите регистрацию. Рассматривать повторно я, соответственно, уже этот процесс не буду.

    В новом окне вводим логин (E-Mail) и пароль, которые вы указывали при регистрации и нажимаем «Вперёд»:

    Теперь из двух вариантов синхронизации выбираем «Полная синхронизация», для того чтобы все файлы и папки, которые вы уже успели загрузить в хранилище Mega, синхронизировались с вашим компьютером (т.е. вы сможете увидеть загруженные папки и файлы прямо на своём компьютере):

    Нажимаем кнопку «Вперёд».

    Теперь нам предоставляется возможность изменить папку для хранилища Mega на вашем компьютере. В эту папку вы будете загружать все файлы, которые хотите, чтобы те оказались на онлайн-диске. Можно оставить папку, заданную по умолчанию, а можно и поменять, нажав «Изменить». Я, как правило, оставляю пути прежними, потому что так удобнее и, в принципе, изменять путь не имеет смысла.

    После этого нажимаем «Вперёд»:

    В последнем окне жмём единственную кнопку «Готово»:

На этом установка приложения завершена. Сразу после установки вы получите уведомление, а в трее Windows будет значок приложения – Mega:

Переходим к принципу работы с сервисом Mega через установленное приложение.

Управление онлайн хранилищем Mega через приложение

Приложение Mega для компьютера не имеет никаких настроек и управление им проще простого. Справится совершенно любой пользователь компьютера:)

Разберём всё что нам доступно через приложение:

С хранилищем Mega тоже разобрались. И теперь рассмотрим последний сервис, о котором я обещал поговорить в данной статье – Microsoft OneDrive.

Регистрация в облачном хранилище Microsoft OneDrive

Хранилище OneDrive от корпорации Microsoft предоставит вам 15 Гб свободного места бесплатно, что соизмеримо с бесплатным объёмом, предоставляемым Google.

Начнём процесс регистрации:

Сразу после выполнения последнего шага будет открыта страница с вашим онлайн хранилищем на OneDrive.

Рассмотрим как с ним работать через браузер.

Работа с OneDrive через Веб-интерфейс

Интерфейс сервиса OneDrive выглядит вот таким образом:

Как видите, он в принципе аналогичен всем подобным сервисам, которые мы рассматривали ранее. Принцип взаимодействия тут тоже точно такой же. Разберём его:


В общем ничего сложного в данном сервисе тоже нету:)

Ну и напоследок покажу как работать с OneDrive через приложение, как я показывал ранее для всех подобных сервисов.

Работа с OneDrive через приложение для Windows

Приложение для работы с онлайн хранилищем OneDrive не поддерживается операционной системой Windows XP!

Установка приложения на компьютер:

Всё! Приложение OneDrive для компьютера полностью установлено и настроено. Осталось рассмотреть как с ним работать.

Управление онлайн хранилищем OneDrive через приложение для Windows

Ну а в принципе управления вашим хранилищем в OneDrive через установленное приложение нет ничего нового. Всё совершенно также, как и в рассмотренных ранее подобных сервисах. Прочтите ниже и убедитесь в этом сами:)

Ну вот собственно и всё. Больше в приложении OneDrive каких-то особенных функций нет. Всё точно также, как и в рассмотренных ранее приложениях от других разработчиков.

Сегодня я рассказал вам о работе с ещё 3-мя сервисами, предоставляющими нормальный бесплатный объём для хранения файлов и на этом, пожалуй, остановлюсь. Конечно, подобных сервисов можно перечислить ещё с десяток, но очень многие не предоставляют бесплатного больше 5 Гб свободного места. Например, известный Dropbox бесплатно предоставляет только 2 Гб места, что слишком мало, а за расширение, соответственно, нужно платить деньги.

Поэтому, я думаю, что тех сервисов, с которыми вы ознакомились в моих статьях, вам хватит выше крыши для удобной работы с вашими данными:)

Удачного Вам дня! Пока;)

В сегодняшней статье я расскажу вам о том, что в сети Интернет появился новый облачный сервис Mega. Многие сталкиваются с проблемой хранения и передачи информации. Все больше и больше пользователей интернета интересуют альтернативные сервисы хранения. И вот, наконец запущен новый облачный сервис хранения информации Mega.

Облачный сервис Mega

В данной статье мы вместе с вами разберем, чем же хорош и удобен сервис облачного хранения Mega. Какой объем информации можно на нем хранить? Чем облачный сервис хранения файлов отличается от других сервисов хранения.

Я столкнулся с тем, что мне в моей работе возникла необходимость надежного хранения информации, в случае необходимости передача файлов третьим лицам, быстрота передачи файла, наличие большого объема хранения информации. Ну и самое важное, я уже об этом упоминал это надежность хранения информации.

Лучший облачный сервис

Я побродил по интернету, почитал про разные облачные сервисы. Почитал про сравнение облачных сервисов. Ну не один сервис облачного хранения мне из имеющегося набора в сети не приглянулся. То маленький объем для хранения данных. То маленькая скорость передачи информации. То ограничения на размер передаваемых файлов. То необходимо платить за хранение информации. Не все облачные сервисы гарантируют на хранимые файлы. Всем требованиям в комплексе, о которых я говорил выше, не отвечал ни один из просмотренных мною сервисов.

Я долго искал и случайно натолкнулся на бесплатный сервис облачного хранения Mega. Мне понравились его характеристики описанные в статье. Тем более облачный сервис только открылся. Его запуск состоялся 19 января вечером. Совпадение или нет, но точно в то же время, год назад был закрыт сайт Megaupload. По информации, имеющейся , в течение 10 минут вся пропускная способность канала к основному провайдер-центру в Германии была занята. В течение часа было зарегистрировано первых 100 000 пользователей. В течение двух часов было зарегистрировано уже 250 000, а за неполные сутки - 1 миллион.

Для информации:

Новый облачный сервис удаленного хранения данных Mega, был создан компанией Кима Доткома - основателя сервиса Megaupload, который был закрыт ровно год назад по инициативе Минюста и Федерального бюро расследований США. А сам Дотком со своими коллегами был арестован по обвинению в пиратстве.

В настоящее время облачный сервис Mega предлагает простое хранение информации в облаке, но по заверениям основателя вскоре компания обещает подключить к сервису доступ с мобильных устройств, средства синхронизации для устройств iPad, iPhone и устройств на Android, а также сборок файловой системы для Windows. Все файлы, которые загружаются в сервис, шифруются. Никто, кроме пользователя, не может узнать, что в них содержится.

Сервис Mega предоставляет 50 Гбайт для хранения информации бесплатно, а для платных пользователей цены начинаются от $9,99 в месяц за 500 Гбайт дискового пространства и 2 Тбайта трафика.

Смотрите сами. Каждому, кто зарегистрировался на сервисе, он выделяет 50 ГБ дискового пространства. Скорость скачивания и загрузки файлов ограничивается только пропускной способностью канала вашего Интернет-провайдера. Отсутствуют ограничения на размеры передаваемого файла. И самое главное, что меня очень в этом сервисе привлекло, это наличие возможности шифрования передаваемого файла.

По утверждению разработчиков, третьи лица (в том числе и сами разработчики облачного сервиса Mega) не могут узнать, о том, что хранится в вашем облачном хранилище. Все данные, которые находятся на сервисе, хранятся в зашифрованном виде и могут быть доступны только при вводе пароля и логина. А как известно этими данными владеете, только вы. И я надеюсь, вы их храните в надежном месте.

Многолетняя практика показывает, что удобно хранить все пароли в нескольких местах: записывать в блокнот и хранить в электронном виде. Для этого имеется большой арсенал программ.

Сервис облачного хранения Mega, имеет перед другими сервисами очень большое преимущество в части недоступности информации третьим лицам. Даже когда вашей информацией заинтересуются правоохранительные органы. Если, к примеру, правоохранительные органы добились разрешение на допуск в ваше файловое облачное хранилище. То по известным нам с вами причинам, я о них говорил выше, у них не получится расшифровать, ту информацию, которую вы там храните.

Всё вышесказанное уверенно подтолкнуло меня выбрать именно сервис облачного хранения Mega. На мой взгляд он займет первое место, среди существующих подобных облачных сервисов, включая и самые известные облачные сервисы хранения данных – Яндекс , Google Drive и Dropbox.

Ну что друзья переходим к практической части. Сейчас вы узнаете, как взять себе бесплатно 50 Гб дискового пространства в облачном хранилище файлов Mega.

Как создать облачный сервис для себя

Что бы зарегистрироваться вам необходимо зайти по этой ссылке Mega .

Затем вам нужно заполнить данные (придумываем логин-пароль и вводим адрес электронной почты).

Необходимо согласиться с правилами использования облачного сервиса (помечаем галочку) и нажимаем на кнопку «Зарегистрироваться».

После вышеуказанных действий вам на ящик электронной почты, который вы указали при регистрации, поступит сообщение с адресом страницы подтверждения регистрации.

Теперь займемся заполнением своего облачного диска. На облачный можно загружать со своего компьютера, как отдельные файлы, так и целые папки. Для этого необходимо выбрать в разделе меню «Загрузить папку» или «Загрузить файл». В нашем случае я загрузил отдельный заархивированный файл. Для этого я кликнул на вкладку «Загрузить файл» и выбрал на компьютере файл, который необходимо загрузить на мой облачного хранилища файлов.

После нажатия на кнопку «Открыть» начинается скачивание выбранного файла, причём на очень приличной скорости.

Далее в следующем окне помечаем галочками, в каком виде будете отправлять ссылку. В целях безопасности можно отправить отдельно ссылку на скачивание и отдельно ключ к файлу, а можно и все сразу, смотрите сами, как вам будет удобнее. Нажимаем на вкладку «Скопировать в буфер». И отправляем ссылку удобным для вас способом.

Получив ссылку, пользователь при переходе по ней попадает на страницу скачивания. И скачивает переданный вами файл или папку. Передача файла или папки идет в зашифрованном виде. На картинке ниже показано окно когда пользователь получает ссылку без пароля и с паролем. Когда получает пользователь без пароля необходимо пароль вводить в отдельное окно дополнительно, а когда уже с паролем необходимо только нажать на кнопку "Скачать" и файл будет скачан вам на компьютер.

Ну вот дорогой друг в данной статье мы с вами рассмотрели облачный сервис Mega. Вы узнали о том, что он из себя представляет, какие у него преимущества перед другими облачными сервисами Сети . Рассмотрели как зарегистрироваться на нем и принцип его работы.

Mega.co - облачное хранилище, которое предлагает своим пользователям бесплатно 50 ГБ дискового пространства для хранения данных. Такое предложение звучит заманчиво, не правда ли?

Многим такая весомая прибавка к жесткому диску не помешает. Все данные, размещенные в облачном хранилище Mega.co, хранятся в зашифрованном виде.

После того, как по решению властей США в 2012 году был закрыт крупнейший файлообменник Megaupload, его основатель Ким Дотком запустил новый облачный сервис для хранения файлов в Интернете.

Основатель Megaupload скрылся от преследования представителей закона США в Новой Зеландии. Ровно через год после закрытия популярного файлообменника, которым пользовались более 160 миллионов пользователей со всего мира, был запущен новый проект - облачное файловое хранилище Mega.

Сейчас в сети Интернет можно встретить довольно много подобных файловых хранилищ, например, и другие.

Основное отличие облачного хранилища Mega.co от подобных ресурсов в том, что в настоящий момент, облачное хранилище бесплатно предлагает зарегистрированным пользователям по 50 ГБ дискового пространства для хранения своих файлов. В Mega co nz нет ограничений по размеру загружаемых в хранилище файлов.

Название сервиса MEGA расшифровывается как «MEGA Encrypted Global Access» (Зашифрованный глобальный доступ MEGA).

Облачное хранилище позволяет загружать на сервер файлы, хранить их там, а также обмениваться файлами с другими пользователями. В процессе загрузке файлы шифруются в браузере с помощью алгоритма AES, что обеспечивает их защиту от несанкционированного доступа.

Физически файлы хранятся в облачном хранилище в зашифрованном виде, администрация облачного сервиса не имеет к ним доступа.

Файлообменный сервис Mega имеет поддержку многих языков, в том числе и русского языка. Для начала использования облачного хранилища, в нем необходимо будет зарегистрироваться.

Mega.co.nz

Регистрация в Mega.co

После входа на сайт https://mega.co.nz/ по защищенному соединению, на главной странице сервиса на верхней панели нужно выбрать русский язык для более удобного использования хранилища.

Затем необходимо нажать на кнопку «Регистрация» на верхней панели окна сервиса. В соответствующие поля следует ввести свои данные (необязательно настоящие, подойдет какой-нибудь логин), ввести адрес своей электронной почты (настоящий), а затем выбрать пароль для входа в облачное файлохранилище.

После установки флажка напротив пункта, посвященному согласию с предоставлением услуг этого сервиса, потребуется нажать на кнопку «Зарегистрироваться» для завершения процедуры регистрации в облачном хранилище Mega co.

После этого вам нужно будет войти в свой электронный почтовый ящик, указанный при регистрации, открыть письмо от Tim MEGA. а затем перейти по ссылке для завершения процесса регистрации в хранилище. Вам нужно будет ввести данные указанные при регистрации и войти в облачное файловое хранилище.

Как пользоваться Mega.co

После запуска хранилища перед вами открыто окно меню «Менеджер файлов». В самом верху находится панель меню, а ниже располагается область для работы с загруженными папками и файлами. Справа расположена колонка управления и отображения структуры хранилища.

Пользователям браузера Mozilla Firefox предлагается установить дополнение MEGA EXTENSION. Без установки дополнений разработчики рекомендуют использовать браузер Google Chrome. Так как у меня основной браузер Firefox, то я установил рекомендованное расширение для своего браузера.

Отличие в использовании сервиса именно в браузере Google Chrome состоит в том, что в отличие от других браузеров, используя Google Chrome, в облачное хранилище Mega.co можно будет загружать не только файлы, но и целые папки.

Вот так выглядит панель управления хранилища в браузере Mozilla Firefox. На панели расположена кнопка «Новая закачка». С помощью кнопки «Новая закачка» происходит загрузка файлов в облачное хранилище.

В браузере Google Chrome на панели расположены две кнопки «Закачать файл» и «Закачать папку». С помощью кнопки «Закачать файл», можно загрузить файл в облачное хранилище со своего компьютера. После нажатия на кнопку «Закачать папку», открывается окно Проводника, в котором вам нужно выбрать папку для ее загрузки в файловое хранилище.

Для того, чтобы это обойти, пользователи других браузеров могут создать в Mega папку с точно таким названием, как та папка на компьютере, которую нужно загрузить в хранилище. Затем необходимо открыть папку на компьютере и загрузить ее содержимое во вновь созданную папку в файловом хранилище. Таким образом, нужная папка будет полностью загружена в Mega.

В панели меню «Моя учетная запись» вы можете посмотреть на свой статус, объем используемого пространства хранилища, а также настроить передачу данных.

Здесь вы можете изменить количество параллельных соединений на загрузку и количество параллельных соединений на скачивание. Если вам это нужно, то вы можете ввести ограничение на скорость загрузки.

После нажатия на кнопку меню «Членство Pro», вы можете выбрать на выбор платный пакет для хранения более большего объема своих файлов от 500 ГБ до 4 ТБ.

Если вы нажмете на кнопку меню «Меню», то вы можете более подробно ознакомиться с правилами использования облачного хранилища Mega.co.

Можно создать новую папку, если нажать для этого на кнопку «Новая папка». Во вновь созданную папку, вы можете загружать файлы, а также создавать в этой папке, другие новые папки. После нажатия на папку правой кнопкой мыши, в контекстном меню вы можете выбрать соответствующие команды для дальнейших действий с папкой.

Для загрузки файлов в файловое хранилище Mega.co нужно нажать в браузере Google Chrome на кнопку «Закачать файл», а в других браузерах нажать на кнопку «Новая закачка». В открывшемся окне Проводника следует выбрать файл или сразу несколько файлов для загрузки в облачное хранилище.

Скорость загрузки файлов неограниченна, если вы не ограничили ее в настройках сервиса, и она зависит от скорости интернет-соединения вашего компьютера. Загруженные в облачное хранилище файлы вы можете перемещать по папкам, переименовывать, давать к ним общий доступ, получать на них ссылки, копировать или удалять.

Вы можете наблюдать за процессом загрузки и скачивания файлов в нижней части окна сервиса.

Работа с файлами в MEGA происходит через веб-интерфейс. Пока еще клиенты для компьютера и других устройств не выпущены.

Общий доступ к папкам в Mega.co

К папкам, которые хранятся в облачном сервисе Mega nz, можно предоставлять общий доступ. Для этого нужно нажать по папке правой кнопкой мыши, а в контекстном меню нажать на пункт «Общий доступ». После этого откроется окно «Общий доступ», в котором вы можете дать новому пользователю права на общий доступ к этой папке.

Вам нужно будет ввести адрес электронной почты пользователя и выбрать права использования новым пользователем общего доступа к папке, размещенной в вашем облачном хранилище. Вы можете предоставить другому пользователю такие права – «Только для чтения», «Чтение и запись», «Полный доступ».

На электронный адрес пользователя придет письмо со ссылкой, по которой ему нужно будет перейти для получения доступа к соответствующей папке, размещенной в облачном хранилище файлов Mega. Папки, к которым предоставлен общий доступ, немного отличаются по внешнему виду от остальных папок облачного хранилища.

Как получить ссылку в Mega. co

Для того, чтобы предоставить другим пользователям ссылку на скачивание файла, размещенного в облачном хранилище данных Mega, необходимо щелкнуть по файлу правой кнопкой мыши и в контекстном меню выбрать пункт «Получить ссылку».

В другом случае зашифрованный файл скачать сможет только тот пользователь, который получил ссылку на файл и специальный код безопасности. Без кода безопасности скачать файл по ссылке такого вида будет невозможно.

На этом изображении активированы два пункта «Ссылка на файл» и «Ключ файла». В этом случае, при переходе по ссылке такого вида, скачать данный файл сможет любой пользователь в интернете, который имеет доступ к этой ссылке.

Пользователь может сохранить файл в своем собственном хранилище Mega.co, если нажмет на кнопку «Импортировать». В этом случае, произойдет импорт файла из одного хранилища в другое, без скачивания файла на компьютер. Импортировать файлы можно будет в том случае, если у пользователя есть свое хранилище на сервисе Mega.co.

После перехода по ссылке, в новом окне пользователь должен будет ввести полученный от вас ключ безопасности для скачивания файла, или для его сохранения в своем файловом хранилище. После ввода ключа пользователю нужно будет нажать на кнопку «Скачать» и активировать пункт «Я согласен с условиями предоставления услуг MEGA».

Для того, чтобы получить ключ безопасности для скачиваемого файла, после копирования ссылки на файл, вам необходимо активировать кнопку «Ключ файла», другие кнопки в это время должны быть неактивными. Ключ файла вы должны будете предоставить другому пользователю вместе со ссылкой на скачивание файла.

После перехода по полученной от вас ссылке, в окне облачного сервиса Mega.co, пользователь должен будет ввести полученный от вас ключ безопасности. После ввода ключа файла, вам нужно будет согласиться с условиями предоставления услуг MEGA, а затем нажать на кнопку «Скачать».

При нажатии на кнопку «Импортировать файл» будет сохранен в облачном хранилище пользователя, если у этого пользователя есть свой аккаунт в облачном хранилище Mega co.

Далее откроется окно «Скачивание завершено», в котором пользователю для завершения скачивания предлагается сохранить файл вручную. Для этого в окне «Скачивание завершено» нажимаете на кнопку «Сохранить файл», а в открывшемся окне Проводника необходимо выбрать место сохранения скачанного файла, дать имя файлу, а потом нажать на кнопку «Сохранить».

После этого, файл будет сохранен на вашем компьютере.

Другие пункты «Имя файла» и «Размер файла» в окне «Ссылки», для скачивания файлов особого значения не имеют и содержат справочную информацию о скачиваемом файле.

Из-за того, что файлы, размещенные на сервисе облачного хранения данных, находятся в зашифрованном виде, вы не сможете их просматривать, проигрывать или прослушивать, пока они находятся в облачном хранилище. Для полного удаления файлов с облачного хранилища необходимо будет очистить «Корзину».

Выводы статьи

Облачное хранилище Mega co позволяет бесплатно хранить на своих серверах данные общим объемом 50 ГБ. Файлы сохраняются в облачном хранилище данных в зашифрованном виде, и самое главное, что весь этот объем для хранения данных предоставляется бесплатно.

Облачное хранилище Mega - бесплатно 50 ГБ для хранения данных (видео)