А вот облачное хранилище MEGA не так известно, хотя предлагает в бессрочное бесплатное пользование целых 50Gb, доступных сразу после регистрации!
Поскольку Вы собираетесь доверить сервису какие-то свои личные данные, то не лишним будет узнать откуда он собственно взялся, и кто за ним стоит…
Наверняка Вы слышали про такое хранилище как Megaupload. Оно было закрыто в 2012 году по решению властей США – причастные к созданию сервиса, в том числе его основатель Ким Дотком, были обвинены ФБР в нарушении авторских прав (хранение и распространение лицензионного контента). Спустя ровно год Ким Дотком запустил новый сервис на домене mega.co.nz.
В настоящее время вход в облако доступен по адресу mega.nz , поэтому если встретите аналогичные обзоры данного хранилища, где в качестве адреса будет указан mega co или mega co nz, знайте, что они безнадежно устарели:)
На главной страничке хранилища Вы увидите большую красную кнопку с призывом перетащить на неё файлы и начать пользоваться сервисом.
Складывается ощущение, что регистрация для работы вообще не нужна. В принципе это так – Вы можете сразу же загрузить в облако какие-то свои файлы и даже увидите их в хранилище. Однако без регистрации Ваши загруженные данные будут удалены из хранилища после закрытия странички или браузера:
Поэтому пройдите стандартный процесс регистрации, после чего Вы сразу получаете 50 гигабайт места в облаке совершенно бесплатно!
Mega nz огромное внимание уделят безопасности хранения данных и конфиденциальности. Подробно об этом поговорим чуть позже, а пока укажу на то, что надо обязательно сделать сразу после регистрации.
Это необходимая мера предосторожности, которой не стоит пренебрегать! Согласитесь, будет обидно потерять все свои файлы в облаке лишь потому, что Вы забыли пароль.
В левой части окна в меню нажмите на иконку облака:
Вы окажетесь в своем облачном диске. При помощи инструментов в верхней части окна Вы можете создавать новые папки, заливать туда файлы и даже загружать с компьютера готовые папки с файлами.
Работать с интерфейсом хранилища не сложнее чем с проводником в Windows. Клик правой клавишей мыши на папке или файле вызывает контекстное меню с целым набором возможностей.
С его помощью можно:
Разработчики конечно же учли свой опыт негативный опыт с Megaupload, поэтому при создании публичной ссылки будет показано такое окошко, с условиями которого Вам остается только согласиться:
Сервис не накладывает никаких ограничений на размер загружаемых файлов! В пределах своей квоты в 50 GB Вы можете загрузить тысячи небольших файлов, либо, к примеру, два файла по 25 гигабайт каждый. Однако следует помнить, что сами браузеры имеют функциональные ограничения на размер файлов, которые они могут скачать. Наиболее «уязвимы» в этом плане браузеры Internet Explorer, Firefox и Safari, которые еще полностью не поддерживают HTML5.
К любой папке в своем онлайн хранилище, Вы можете организовать общий доступ (расшарить её). Для этого проделайте следующие манипуляции:
После этого указанному пользователю на email придет письмо с ссылкой для доступа к расшаренной папке.
Помимо доступа к папкам, Вы можете разрешать любым пользователям скачивать из Вашего хранилища какие-то отдельные файлы.
Также в этом окошке можно отдельно скопировать сам ключ дешифрования. В чем же отличие между этими типами ссылок? А оно очень важное!
В первом случае пользователь, перейдя по ссылке, для скачивания файла должен будет ввести в специальное окошко ключ дешифрования, который Вы ему сообщите. А во втором случае, пользователь переходит по ссылке с уже «вшитым» ключом безопасности и может сразу же скачать файл.
Обзор функционала и настроек хранилища, не вошедших в обзор, смотрите в данном видео:
Я уверен, что все активные интернет пользователи слышали про историю закрытия популярного файлообменника Megaupload и злоключениях его создателя. И уж наверняка знают о новом проекте Кима Доткома под названием Mega . Напомним вам, что этот сервис является реинкарнацией предыдущего творения Кима, но совершенно на другой платформе.
При его создании были учтены все недостатки и ошибки Megaupload и упор сделан прежде всего на устойчивость файлообменника. Причем не только к сетевым нагрузкам, но и атакам правообладателей. Для этого огромное внимание уделено конфиденциальности и безопасности ваших данных. Все загруженные вами файлы шифруются специальным алгоритмом, поэтому администрация сервиса не имеет понятия о содержимом ваших аккаунтов и, соответственно, не может нести ответственность за него. С этой же целью серверы Mega находятся в разных странах, так что при проблемах с законами в одной стране это не повлечет краха всего сервиса и ваши данные останутся в неприкосновенности.
Сегодня мы хотим познакомить вас поближе с работой этого сервиса и предлагаем вам небольшой скриншот-тур по его функциям.
Для начала работы необходимо зарегистрироваться. Для этого нужно указать свое имя, почтовый адрес и пароль. Сервис прекрасно русифицирован и отлично оформлен.
После окончания регистрации вам вышлют ссылку для входа на указанный вами адрес электронной почты. Перейдя по ссылке, придется пару минут подождать пока для вас сгенерируются специальные секретные ключи, с помощью которых будут шифроваться данные.
Попадаем в свое облачное хранилище. Здесь все понятно и просто: слева дерево папок, по центру область отображения файлов, сверху панель инструментов. Файлы можно загружать нажатием на кнопку Новая закачка или простым перетаскиванием в окно сервиса. Загрузки происходят исключительно быстро.
Файлы можно организовать в папки. Перемещение файлов между папками производится перетаскиванием или с помощью контекстного меню (см. ниже). Уровень вложенности каталогов не ограничен.
В появившемся всплывающем окне генерируется ссылка для скачивания файла.
Обратите внимание на опции в верхней части этого окна. Если включено только Ссылка на файл
, то ваш адресат не сможет скачать файл без ввода специального пароля, который вы можете выслать ему отдельно по электронной почте. Таким образом можно публиковать ссылки на скачивание в общедоступных местах, например в блоге или форуме, но разрешать скачивать только определенным лицам.
Если же дополнительно отмечен Ключ файла
, то по созданной ссылке файл сможет скачать любой желающий. Чекбоксы Имя
и Размер файла
добавляют соответствующие характеристики файла.
Контекстное меню папок немного отличается. Здесь имеется пункт Совместный доступ . С его помощью вы можете пригласить к совместному использованию своих сотрудников, друзей или семью. Приглашения рассылаются по электронной почте, а доступ может быть разного уровня. Read only — только просмотр, Read & Write — просмотр и закачка своих файлов в папку, Full access — просмотр, закачка и удаление файлов.
В разделе Аккаунт можно просмотреть заполненность своего хранилища, купить дополнительное место, изменить настройки передачи данных и некоторые другие опции.
Файлообменный сервис Mega производит мега впечатление. Отличная скорость работы, понятный и приятный интерфейс, 50 гигабайт дискового пространства, отсутствие ограничений на трафик и размер закачиваемых файлов плюс полная бесплатность и приватность ваших данных. Это просто праздник какой-то!
Возможности сервиса Mega можно использовать в самых разных целях. Прежде всего это распространение различного вида информации, что очень порадует пиратов всех континентов. Впрочем, возможности ограниченого доступа по паролям могут пригодиться и для легальной продажи своих творений, например музыкантами. Совместный доступ к папкам делают Mega интересным инструментом для организации удаленной работы. Ну и конечно банальное резервное копирование важной для вас информации.
Единственное, что не хватает Mega на данном этапе — это десктопный и мобильный клиент для разных операционных систем. Учитывая юный возраст сервиса, можно иметь надежду, что разработчики просто еще не успели и в скором времени такой клиент появится. После этого я не вижу никаких препятствий для того, чтобы Mega стал новым стандартном для облачного хранения файлов.
Mega облако – это достаточно популярное хранилище для различных файлов, фотографий, видео и документов. Каждому пользователю, который создает свою учетную запись на сайте, предоставляется 50 Гб свободного места в хранилище абсолютно бесплатно. В дальнейшем этот объем можно увеличить за дополнительную плату, например, можно приобрести 4 Тб за 30 долларов в месяц.
Сейчас же я хочу сделать про облако Mega обзор и рассказать о его основных преимуществах. Многие пользователи называют данное облачное хранилище самым выгодным по соотношению цены и предоставляемого свободного места. Также там очень часто проводятся различные акции, например, можно купить пакет на один год и получить два месяца абсолютно бесплатно, что позволит сэкономить достаточно серьезную сумму.
Сейчас я расскажу своим читателям об основных преимуществах Mega хранилище:
Для того чтобы начать использовать облачное хранилище Mega, необходимо зарегистрироваться на официальном сайте. Для этого требуется:
Важно! При заполнении формы можно указывать любые данные. Однако адрес электронный почты должен быть настоящим, иначе вы не сможете начать пользоваться облачным хранилищем.
После того как регистрация была завершена, Mega файловое хранилище готово к работе. Для начала требуется:
Все папки, фотографии и документы, которые будут загружены в хранилище, можно будет просматривать с любого компьютера или же другого устройства.
Для того чтобы войти Mega хранилище файлов с компьютера потребуется:
На этом я бы хотел закончить свою стать об Mega, отзывы на которое вы можете найти в интернете. Отдельно хочу добавить, что те, кто пользуются браузером , могут установить специальное дополнение MEGA extension, которое позволяет значительно увеличить скорость загрузки файлов в облако. Также, после установки дополнения, можно осуществлять пакетную загрузку файлов в неограниченном объеме. Без установки каких-либо приложений лучше всего использовать браузер .
После запуска в какой-то мере скандального сервиса MEGA разговоры о его защищенности немного побурлили и затихли. На сегодняшний день сервис живет своей жизнью и его никто даже не поломал. Из всех разговоров почему-то был упущен термин «User Controlled Encryption» (UCE, или Контролируемая пользователем криптография), которой кичится MEGA. Под словом «упущен» я подразумеваю тот факт, что мы не рассмотрели все возможности, которые дает нам криптографический движок, выполняющийся в JavaScript на стороне клиента.
Конечно, сам сервис MEGA под этим подразумевает всего лишь то, что ключи шифрования не хранятся на сервере, а вся их криптография выполняется в контексте браузера. При этом после запуска сервиса было много разговоров о том, что в нем используются нестойкие криптографические алгоритмы и что вообще все плохо и мы все умрем, а наши файлы прочитает ФСБ. Это подтолкнуло меня на мысль расширить понятие «UCE» и действительно взять криптографию под свой контроль, а именно - заменить или дополнить некоторые механизмы обеспечения безопасности сервиса.
В этой статье я частично разложу по полочкам магию, которая происходит в двух мегабайтах JavaScript-кода MEGA и покажу, как можно переопределить некоторые методы, чтобы перестать волноваться и полюбить криптографию. В результате мы получим сервис облачного хранения файлов с двухфакторной аутентификацией и аппаратным шифрованием критически важной информации.
В процессе изучения исходного кода сайта я также заметил, что он довольно активно обновляется, разработчики исправляют мелкие ошибки и оптимизируют уже написанный код, что не может не радовать. Сам код написан весьма прямолинейно и без излишней накрутки в виде прототипов: сайт обходится тремя сотнями глобальных переменных и более чем 8000 функций. Разбираться в архитектуре сайта и менять его код было весьма просто.
Из сторонних фреймворков MEGA использует jQuery (без него сейчас никуда), Ext JS и SJCL . Последний как раз реализует криптографическое ядро с AES-шифрованием. SJCL также обуславливает интересный формат хранения ключей и прочих байт-массивов: вместо того, чтобы просто гонять байты в обычном массиве, они «сжимаются» в формат, который именуется a32. Его суть в том, что содержимое любого массива байт пакуется в 32-битные числа и записывается в массив меньшей длины. То есть, каждые 4 байта массива преобразуются в один банальный int. В коде сайта есть функции, которые выполняют всевозможные преобразования над импровизированным множеством {a32 array, string, base64 string}.
// создание нового пользователя и его мастер-ключа
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);
}
В этой функции нас интересуют следующие вещи:
// расшифрование мастер-ключа после входа пользователя в систему
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); } }
На момент скачивания файла в контексте браузера уже содержится объект, хранящий расшифрованные ключи файлов. Поэтому сначала имеет смысл рассмотреть процесс, который происходит сразу после аутентификации пользователя, а именно - загрузку файл-менеджера. После того как пользователя пустили на сервис, ему естественно хочется получить доступ к своим файлам (предположим, что они у него уже там были). Для этого нам нужно расшифровать сначала ключи файлов, а затем - их атрибуты. Этим делом занимается очередная пачка функций, из которых нас интересуют loadfm_callback и 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)
// ключ записан в виде "
После этого мы можем получить значение исходного ключа ul_key из контекста браузера следующим образом: dl_keyNonce = JSON.stringify();
Это преобразование происходит в функции startdownload . Если учесть, что значение dl_key == filekey из функции ul_chunkcomplete и выполнить нехитрые операции сложения по модулю, то мы заметим, что в переменной dl_keyNonce будет хранится значение ul_key , сгенерированное при загрузке файла. Иллюстрацию этому можно наблюдать в нижнем левом углу доски на фотографии в начале раздела про загрузку файлов.
Хочу отметить, что здесь я применил весьма хитрый метод. В данном случае нам важно, чтобы злоумышленник не мог расшифровать файл, даже если он перехватит пришедший с сервера ключ файла и будет знать мастер-ключ пользователя. Поэтому тут можно сыграть на особенностях архитектуры сервиса и использовать для за(рас)шифрования файлов значение ключа ul_keyNonce (оно же dl_keyNonce), полученное в результате зашифрования на токене значения ключа ul_key (или dl_key).
С момента написания этих статей в наш продукт добавилась возможность аппаратного шифрования по алгоритму ГОСТ 28147-89. Beta-версию плагина с функциональностью аппаратного шифрования по алгоритму ГОСТ 28147-89 можно скачать . Эта версия плагина еще не прошла полное тестирование, поэтому предупреждаю о том, что в ней могут быть ошибки, о нахождении которых прошу сообщать в личку.
В интерфейсе плагина симметричное зашифрование реализуется функцией encrypt , которая имеет следующий синтаксис:
encrypt(deviceId, keyLabel, data, resultCallback, errorCallback) → {string}
В качестве входных данных функция принимает:
Готовое расширение можно скачать . Разработано оно с помощью сервиса Crossrider , что дает расширения для трех браузеров (Chrome, Firefox и IE), но проверять его работу лучше в Chrome или Firefox, причем в первом оно работает гораздо стабильнее.
Код расширения до банального прост: он проверяет, находимся ли мы на странице сервиса и если это так, то просто подгружает дополнительные скрипты. Эти скрипты модифицируют код страницы, добавляя пару диалогов, и переопределяют следующие функции сервиса:
Затем можно выйти из сервиса и попробовать снова зайти, используя двухфакторную аутентификацию:
Аутентификация при этом происходит по следующей схеме:
Помните времена, когда 40 Гб на винчестере вашего компьютера казались непозволительной роскошью? Теперь счет идет на сотни гигабайт, а часто – и на терабайты, и мы так к этому привыкли, что занимаем место на дисках ПК без разбора – всем, чем угодно.
Между тем экономию и комфорт еще никто не отменял, и существование, процветание и радужные перспективы облачных хранилищ доказывают их состоятельность. Последние несколько лет услуги таких интернет-сервисов развиваются прямо-таки гигантскими шагами, и в качестве примера можно привести несколько облачных хранилищ данных:
1. Яндекс.Диск – предлагает новичкам 5 Гб бесплатного пространства для хранения файлов разных форматов и расширений плюс разные бонусы. Например, если вы пользуетесь почтой Яндекса 5 лет – вам подарят еще 2 Гб места на Диске.
2. Google Drive – бесплатные 15 Гб места.
3. Microsoft SkyDrive — 7 ГБ бесплатно вместо 25 Гб, предлагаемых ранее.
4. – 2 Гб плюс расширение дискового пространства за привлечение рефералов.
5. Apple iCloud – 5 бесплатных гигабайт пространства.
6. – здесь можно бесплатно занимать не более 40 МБ на каждую заметку, и использовать объем трафика для написания/редактирования заметок до 60 МБ в месяц.
7. Amazon Google Drive — 5 Гб.
8. Облачный сервис Box — 5 Гб.
9. Сервис SugarSync — 5 Гб.
10. Облачное хранилище Mega.сo.nz – 50 Гб бесплатного дискового пространства.
Все вышеперечисленные сервисы могут работать не только на стационарных ПК, но и на всех мобильных приложениях, что, несомненно, расширяет область их применения и увеличивает популярность. Но лидером по предлагаемым бесплатным гигабайтам является все же Mega.сo.nz – 50 Гб не шутки, их еще нужно умудриться чем-то заполнить, поэтому предлагаю подробнее поговорить об этом облачном сервисе — Mega.сo.nz. Кстати, я активно использую этот сервис, так как он стабилен, анонимен, да и создатели его – люди небезызвестные.
Руководитель компании, которая предлагает услуги этого хранилища — Kim Dotcom , основатель сервиса Megaupload, который закрылся два года назад с подачи Министерства юстиции и ФБР Америки. Возможно, вы помните ту историю. Собственно, обменник их старый был достаточно удобной штукой. Но теперь новое детище Кима стало еще круче. Поговорим о нем более подробно.
Сейчас сервис Mega обеспечивает не только обычное хранение данных в облаке с использованием на ПК, но, как и обещали ранее разработчики, они уже включили возможность работы с мобильных устройств — iPhone, iPad, устройств на , Win 8, монтирования файловой системы для Windows, и т.д. То есть, можно будет отправлять файлы сразу в облако. Например, ваши фотографии со смартфона будут храниться в гаджете, но одновременно будут передаваться и в Mega.сo.nz, так что вероятность непредвиденной утери или порчи файлов будет исключена полностью. Все ваши данные при передаче зашифровываются, и никто кроме вас не сможет их распаковать для чтения.
1. Главная особенность и отличие облачного сервиса Mega.co.nz от аналогичных ресурсов в предлагаемом первоначальном бесплатном объеме места на диске – 50 Гб. В Mega.co.nz вы можете загружать файлы любого объема, с любым расширением, в любом формате – никаких ограничений на этот счет не существует.
2. Аббревиатура MEGA – это название «MEGA Encrypted Global Access» (MEGA зашифрованный глобальный доступ).
3. Основные возможности Mega такие же, как и остальных ресурсов – это загрузка, хранение файлов на стороннем диске, и возможность обмена файлами со своими друзьями и коллегами путем передачи ссылок или зашифрованного доступа. Шифрование файлов в браузере происходит при помощи алгоритма AES, то есть, защита от несанкционированного доступа вам обеспечена. Шифруются также и ссылки для передачи файлов, и даже работники сервиса не имеют доступа к вашим данным. По крайней мере, они это утверждают.
4. Сервис по обмену и хранению файлов Mega – мультиязычный, поэтому при работе с ним у вас не возникнет языковых трудностей – достаточно в панели управления выбрать нужный язык.
Но для начала пользования облачным хранилищем вам необходимо пройти простенькую процедуру регистрации.
Как видно из ссылки на регистрацию, вход на сайт https://mega.co.nz/ происходит по защищенному соединению. Дальше на главной странице необходимо выбрать русский язык для удобной работы – меню находится вверху справа. Теперь можно пройти регистрацию:
При регистрации нужен настоящий электронный адрес, остальные данные можно просто взять из головы. После того, как заполним все поля и нажмем кнопку «Создать учетную запись», на нашу почту придет письмо со ссылкой-подтверждением нашей регистрации:
Нажмем на эту ссылку в письме и на странице сервиса подтвердим свою учетную запись – для этого есть форма в правом верхнем углу, то есть, просто вводим свой электронный адрес и пароль. Это делается один раз – дальше сервис будет использовать куки нашего браузера. При подтверждении регистрации нам будет предложено создать свой индивидуальный ключ, по которому будет определяться наша аутентификация. Создание ключа носит игровой характер, и я даже заигрался, пропустив момент, когда ключ уже был создан.
Игра выглядит как выбивание мячиком кирпичей, из которых состоит надпись MEGA. Как только вы наберете 100% по шкале вверху экрана, ключ будет создан:
И после нажатия кнопки «Завершить» переходите на свою страницу в облачном сервисе Mega.co.nz:
Есть совершенно небольшая разница в пользовании сервисом при работе на и Google Chrome, о которой я расскажу ниже. А пока – об общих пунктах управления и пользования. Справа на своей странице вы видите колонку управления и отображение структуры хранилища. Вверху – меню для закачки и просмотра файлов и управления ними. То есть, в выпадающем меню при уже закачанных файлах вы увидите возможность получить ссылку на файл, возможность его копирования, редактирования и т.д.
Пользователи браузера Mozilla Firefox могут установить в свой браузер дополнение MEGA extension . Разработчики этого дополнения обещают, что после его установки вы заметите значительное улучшение скорости загрузки файлов. Такой результат обеспечивается пакетной загрузкой неограниченного количества файлов без ограничения их размеров. Каждая ссылка в сервисе Mega.co.nz захватывается вашим приложением MEGA extension и остается локальной (скрипты JavaScript не загружаются с серверов). Надежные автоматические обновления сервис предоставляет благодаря криптографической подписи с зашифрованным ключом.
Без установки этого дополнения для более эффективной работы с сервисом Mega разработчики предлагают пользоваться браузером Google Chrome. Так как я всю свою компьютерную жизнь пользуюсь сразу несколькими браузерами, то и в Firefox я установил рекомендованное расширение, но, честно говоря, никакой разницы в работе облачного сервиса не заметил. Приложение можно устанавливать как из «Дополнений» браузера, так и из сервиса MEGA («Меню» – «Приложения» – «Приложение Firefox»)
Лучше пользоваться браузером Google Chrome, если вы собираетесь закачивать в облако целые папки с файлами — в Мозилле такой возможности нет, а Хром может загружать и файлы, и папки:
Вот так выглядит панель управления хранилищем в браузере Google Chrome, а в Mozilla Firefox просто нет кнопки «Закачать папку» — есть только кнопка «Закачать файл». При помощи кнопки «Закачать файл» можно загрузить файл в облако со своего персонального компьютера. После того, как вы нажмете на кнопку «Закачать папку» в Google Chrome, откроется окно Проводника, в нем выбираете папку для ее загрузки в файловое хранилище, и все – загрузка началась.
Теперь о том, как обойти эту проблему в Фаерфоксе. Допустим, вы хотите закачать папку целиком – не устанавливать же для этого новый браузер! Тогда нужно просто создать одноименную папку в Mega (пункт «Новая папка» в меню), и в нее уже закачивать все файлы (нажмите Ctrl + A, чтобы выбрать сразу все), которые находятся в такой же папке на компьютере.
Продолжаем ознакомление с сервисом. В пункте «Моя учетная запись» вы увидите не только то, что вы пользуетесь бесплатным аккаунтом, но и увидите ваш объем используемого пространства облака, а также сможете изменить настройки профиля или настроить передачу данных:
В настройках («Меню» — «Моя учетная запись») можно сделать многое. Например, изменить количество параллельных соединений на загрузку файлов, а также количество параллельных соединений при скачивании файлов. Можно также ввести ограничение и на скорость загрузки.
Если вы нажмете на кнопку меню «Меню» — «Моя учетная запись», то сможете подробнее ознакомиться с правилами использования облачного сервиса Mega.co.nz. О Pro-аккаунте много не расскажу, так как им еще не пользовался – хватает и бесплатных 50 Гб. Но после того как вы нажмете на кнопку «Повысьте свой статус» в своем бесплатном аккаунте, вы сможете выбрать любой платный пакет из предлагаемых, чтобы получить возможность хранить в облаке больший объем своих данных — от 500 Гб до 96 Тб. Я лично такой объем – 96 террабайта – плохо себе представляю, но, тем не менее, если хорошо подумать, то можно найти применение. Например, для резервного копирования баз данных сайтов и т.д.
Продолжим о работе с файлами – вы можете просто создать новую папку, чтобы загружать в нее какие-то тематические файлы. Для этого нажмите на кнопку «Новая папка» и переименуйте папку так, как вам нужно. В этой новой папке также можно создавать другие подпапки, в которые уже и загружать файлы. Если нажать на папку (файл) правой кнопкой мышки, то в выпавшем контекстном меню можно увидеть соответствующие команды для ваших действий с папкой (файлом). Как видите, возможностей много, в том числе и возможность получить ссылку для передачи другим пользователям. Ссылка будет зашифрованной.
Если вы не ограничили скорость загрузки файлов в настройках вашего облака, то скорость загрузки данных будет неограниченной, и будет зависеть только от скорости интернет-соединения вашего ПК. Дальше работа с папками/файлами происходит точно так же, как на обычном компьютере – вы можете их редактировать, получать на них ссылки, перемещать, разрешать к ним общий доступ, копировать, и т.д. Процесс загрузки и скачивания файлов отображается справа в нижней части страницы на сервисе – нажмите на значок
На папки, которые вы будете хранить в облачном хранилище Mega co nz, можно выставить права общего доступа. Для этого просто нажмите правую кнопку мышки на папке, а в выпавшем контекстном меню нажмите «Общий доступ». Дальше вы увидите окно «Общий доступ», в котором вам нужно указать электронный адрес того пользователя, которому вы хотите предоставить права общего доступа. Для этого пользователя вы можете настроить права — например, выставить права «Только для чтения», «Чтение и запись», «Полный доступ». После этого права на общий доступ могут позволять пользователям с выставленными вами полномочиями и редактировать файлы, или только просматривать их, или только скачивать. Таких пользователей может быть сколько угодно.
После того, как укажем электронный адрес для предоставления общего доступа, на его почту придет письмо со ссылкой, которая необходима для перехода в сервис и получения доступа к указанной папке. Папки, к которым предоставлен общий доступ, немного отличаются по внешнему виду от остальных папок облачного хранилища, и выглядят вот так:
В сервисе Mega.co.nz есть возможность предоставлять другим пользователям ссылки для скачивания файлов, которые вы размещаете в облачном сервисе Mega. Чтобы получить такую ссылку, необходимо правой кнопкой мышки щелкнуть по файлу, и в выпавшем контекстном меню нажать на пункт меню «Получить ссылку». В новом открывшемся окне вы увидите вашу (зашифрованную или незашифрованную) ссылку на скачивание файла. Вообще все ссылки на скачивание файлов в облачном сервисе Mega.co.nz выдаются двух типов, и вид ссылки будет зависеть от степени конфиденциальности ключей безопасности.
Если сама ссылка формируется в незашифрованном виде, то файл передается все равно зашифрованным, и только если пользователь перешел по этой ссылке, файл расшифровывается и становится доступным для скачивания. То есть, до того момента, пока кто-то не скачает этот файл, он будет храниться в зашифрованном виде. Если же сама ссылка будет зашифрована, то скачать по этой ссылке файл сможет только пользователь, получивший ссылку на файл вместе со специальным кодом безопасности (ключом). Без этого кода безопасности получатель не сможет скачать файл по ссылке.
На изображении ниже вы видите — если активирован пункт «С ключом файла», то зашифрованный код встраивается в саму ссылку, и она доступна для скачивания всем пользователям. И наоборот – если не поставить галочку на этом пункте, то адресный пользователь сможет скачать файл, только если введет отдельно переданный вами ключ.
Также пользователь, которому предназначалась ссылка на файл, может сохранить его в своем облаке, расположенном на Mega.co.nz. Для этого после получения ссылки нужно нажать кнопку «Импортировать». При таком варианте ссылка не будет скачиваться на компьютер, а просто будет перемещена с одного аккаунта на другой. Понятно, что для осуществления такой операции нужно, чтобы получатель тоже имел свое место на диске в облаке Mega.co.nz, точно так же, как, например, в . Все эти возможности вы видите на рисунке ниже:
Как скачать ссылку с индивидуальным ключом (второй вариант)? Ниже на изображении вы видите его решение. В случае с отдельно передаваемым ключом получатель сможет скачать файл, если получит от вас и ссылку, и ключ к скачиванию файла из облачного хранилища. Сам ключ вы получите копированием при передаче файла (на рисунке выше – пункт «Копировать ключи»). Все эти данные (и ссылку для общего доступа, и ссылку с отдельным ключом) вы отправляете пользователю обычным электронным письмом.
После перехода по ссылке «Дешифровать», в новом окне пользователь должен будет ввести полученный от вас ключ безопасности для скачивания файла, или для его сохранения в своем собственном облачном хранилище. После того, как ключ будет введен, пользователь должен нажать кнопку «Скачать» и поставить галочку на пункте «Я согласен с условиями предоставления услуг MEGA», или просто импортировать файл на свое облако.
После полного скачивания файла откроется окно «Скачивание завершено», и в нем пользователю будет предложено для завершения скачивания сохранить файл вручную в любом удобном месте на компьютере.
И последнее – все файлы, которые будут размещаться вами на сервисе облачного хранения данных Mega.co.nz, будут зашифрованными – я уже говорил об этом выше. С одной стороны, это здорово, но с другой — вы не сможете визуально просмотреть их содержимое, проиграть или прослушать аудио- и видеофайлы, пока они будут находиться в облаке. То есть, для пользования этими файлами вам необходимо будет переместить их на компьютер или мобильное устройство. Чтобы полностью удалить все закачанные файлы, нужно переместить их в корзину, а затем очистить и ее.