Pull to refresh

Comments 31

Не обращались к меге — они ведь вполне могут привести ссылку на ваше расширение у себя в блоге?
Я планирую написать Доткому, когда мы здесь получим минимальный набор отзывов. Судя по тому, какой самопиар он разводит в Твиттере, его должно это заинтересовать.
Если это его заинтересует, то только в качестве PR. Цель использования шифрования на МЕГЕ защитить хостинг от правообладателей. Как бы это не было реализовано на МЕГЕ, оно свою задачу выполнят. Безопасность информации их вряд ли волнует.
Однако подобный подход может быть эффективен при организации защищенного обмена информацией на различных публичных чатах и сервисах электронной почты. Интересно было бы посмотреть такие решения.
Статья замечательная!
Даже интересно, что вообще можно в продолжении написать?
Начинаю изучать криптографию. Спасибо автору, за хороший пост по этой теме, пригодится в будущем.
было бы клево сделать мини API, где можно было бы например воткнуть Keccak вместо SHA и что нить вместо AES, хоть бы и для тестовых целей
В меге можно легко подменить нижний уровень криптографии (ядро AES, реализуемое библиотекой SJCL). Для этого надо всего лишь, чтобы эта подмена реализовала простой интерфейс с конструктором, принимающим пароль в виде массива из 4х или 8 элементов, и функции за(рас)шифрования таких же массивов. Таким образом мы заменим AES.
Хешей там используется несколько видов, помимо SHA есть еще HMAC-подобная функция хеширования stringhash, с помощью которой в сервисе хешируется e-mail пользователя в различных ситуациях. Его можно подменить также, как описано в статье.
На Питоновский SDK я натыкался в процессе написания статьи, там весьма хорошо расписана архитектура сервиса и возможности API MEGA.
А самое интересное — как они получают из JS доступ к КОНТЕНТУ загружаемого файла (и в меньшей степени — как отдают скачиваемый файл из JS-строки в диалог сохранения файла) — в статье и не написали… Разве в стандартных настройках безопасности браузера это можно сделать?
Как вам уже попытались подсказать выше, для современных браузеров используется HTML5 FileReader, если браузер его не поддерживает, то используется Flash-аплоадер.

По коду сайта процесс загрузки можно проглядеть по такой цепочке функций:
FileSelectHandler(event) -> startupload() -> initupload2() -> initupload3() -> ul_dispatch_chain() -> ul_dispatch_read()
Имя файла приходит из события, файлы затем забиваются в очередь, а непосредственно чтение происходит в ul_dispatch_read и читается с помощью метода readAsArrayBuffer. Чтение происходит блоками по 20 кб, по завершению вызывается метод onloadend, в котором содержимое файла записывается в очередь файлов на загрузку в виде Uint8Array.

Загрузка и запись файла происходит аналогично с помощью FileWriter. Имя файла живет внутри объекта FileWriter (dl_fw). Непосредственно запись на диск происходит в функции dl_dispatch_write при вызове dl_fw.write(dlblob);
Скажите, а ключ в Рутокен Web действительно неизвлекаемый? Или все операции драйвер выполняет?
В обоих видах токенов (Web и ЭЦП) ключ действительно неизвлекаемый. Все операции по шифрованию, подписи и т.п. реализованы аппаратно, а драйвер отвечает только за передачу команд на токен. Причем в современных операционных системах для работы с токенами не приходится устанавливать дополнительных драйверов, поскольку устройства работают по стандартизированным протоколам.
Еще замечу что после привязки ключа:
1. Вы потеряете все существующие файлы в меге
2. Для обмена файлами ваш аккаунт больше не подходит (до отвязки от рутокена, а следовательно очередной чистки)
3. Даже имея рутокен по публичной ссылке сейчас скачивание не работает.
Да, на счет второго и третьего я догадывался. Просто уже не было сил смотреть в сторону работы с общими файлами =)
По поводу первого — файлы не теряются, они просто перестают отображаться в файл-менеджере, ну и собственно нельзя будет их скачать. Если отвязать токен, то файлы отобразятся снова.
т.е. вы проверяли отвязку?
насколько я читал описание меги, там было прописано что смена шифра (считай смена пароля без знания текущего происходит с потерей файлов)
если то что вы написали верно, то файлы можно восстановить, просто сменив пароль на ранее использовавшийся, криптокод будет восстановлен и файлы появятся в файл менеджере.
Я возможно недостаточно полно рассказал про привязку токена.
Если снять галочку «Привязать токен к учетной записи» на странице аккаунта, то будет восстановлен старый мастер-ключ и отобразятся файлы, зашифрованные на нем. MEGA после логина всегда присылает полный список хранящихся файлов, но отображает только те, атрибуты которых удалось расшифровать.
Теперь разобрался, спасибо
Вопрос, в случае утери рутокена доступ к зашифровано информации возможно получить? Т.е. все рутокены имеют одинаковое криптографическое ядро, и таблицы необходимые для ГОСТ 28147-89?
Ядро и алгоритмы одинаковые, но ключевая пара, которая создается при первом вызове функции зашифрования, всегда будет уникальна. Так что токен надо всегда беречь как зеницу ока.
Ключевая пара хранится на самом токене и сбрасывается при форматировании?
и как же резервирование? Обычные ключи обычно есть рабочий, а есть копия в сейфе.
Это ограничение, накладываемое условием неизвлекаемости ключей шифрования. Они не могут покинуть токен и, следовательно, нельзя сделать копию токена. Если поступиться этим принципом, то можно импортировать ключевые пары на токен, но при этом они будут извлекаемыми в дальнейшем.

По поводу «копии в сейфе»: все серьезные системы обычно проектируются с поддержкой нескольких ключей таким образом, чтобы при утрате одного можно было бы восстановить доступ. Таковы уж сложности обеспечения должного уровня защищенности.
UFO just landed and posted this here
У меня везде стоит английская локаль, поэтому точно не могу сказать. У коллег видел русский интерфейс, но они возможно сами поменяли.
UFO just landed and posted this here
Я буду читать это себе на ночь каждый день.
Роскошно.
Просто — _Роскошно_.
И стиль, и смысл… и вапще :-)

Автор — «пещы истчо!»
С Доткомом то связывались??? Какие успехи? Статья супер!!! Респект за труды!!!
Спасибо за отзыв =)
Доткому пока не писал, потому что пока ведем общение с заинтересованными разработчиками здесь, это важнее.
Sign up to leave a comment.