Группа инженеров из компании Google представила проект Upspin, в рамках которого разработан экспериментальный фреймворк для организации безопасного совместного доступа к файлам. Upspin определяет набор протоколов, интерфейсов и реализаций программных компонентов, позволяющих связать в единое пространство имён различные данные, такие как ФС и сервисы хранения. Код эталонной реализации Upspin написан на языке Go и распространяется под лицензией BSD. Проект развивается сотрудниками Google, но не является официальным продуктом компании.

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

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

Upspin предлагает использовать для идентификации файла схему "ann@example.com/dir/file", состоящую из email пользователя и виртуального пути. Зная глобальный идентификатор файла, любой пользователь, при предоставлении ему доступа, может обратиться к этому файлу из любого локального приложения, как к обычному файлу в своей ФС, или из любого online-сервиса, поддерживающего Upspin. Кроме файлов и директорий Upspin позволяет организовать доступ к динамически меняющейся информации, такой как данные от датчиков или результаты запросов к сетевым сервисам. Для прикрепления глобального пространства имён к локальной ФС предоставляется FUSE-модуль. Для доступа также можно использовать программу upspin c набором типовых команд, таких как "cp". Для подключения к глобальной ФС достаточно установить одну из реализаций Upspin, создать ключи для своего email и зарегистрировать их в хранилище ключей.

Управление доступом производится путём создания в экспортируемой директории специального файла с именем Access, содержащего список полномочий, предоставленных другим пользователям. Например, добавив в файл правило "read: joe@here.com, mae@there.com", пользователи joe@here.com и mae@there.com получат возможность чтения файлов в текущей директории и поддиректориях. Кроме чтения, можно предоставить доступ к записи, просмотру содержимого каталога, удалению, созданию файлов и т.п. Возможно создание групповых политик, использование шаблонов (например, "read: all" и "*: all") и индивидуальное определение правил доступа к отдельным файлам.

Ключевой целью разработки является обеспечение наивысшего уровня безопасности. Производительности уделяется второстепенная роль. В частности, в Upspin применяются современные методы идентификации пользователей по открытым ключам. Для хранения и обнаружения открытых ключей планируется задействовать технологию Key Transparency (пока доступен только один экспериментальный централизованный сервер ключей key.upspin.io). По умолчанию применяется верификация содержимого по цифровой подписи и все данные передаются в зашифрованном виде с использованием end-to-end-шифрования, при котором закрытые ключи фигурируют только на конечных системах владельца файла и получателя. Подобный подход позволяет не только развернуть свой собственный сервер Upspin, но и делегировать хранение файлов в любое облачное хранилище, не опасаясь, что данные попадут в чужие руки в результате компрометации хранилища или диверсии персонала. При этом в Upspin не обеспечивается "forward secrecy", т.е. утечка закрытого ключа владельца, означает возможность доступа к перехваченным файлам.

Инфраструктуру Upspin составляют три компонента:

  • Сервер ключей, выполняет работу по хранению открытых ключей всех пользователей системы (приватные ключи хранятся отдельно, на стороне пользователей). Сервер ключей также имеет информацию о сетевых адресах серверов директорий. Пользователи могут воспользоваться уже работающим сервером ключей key.upspin.io или запустить свой собственный;
  • Сервер хранения, на котором непосредственно размещены хранимые данные. Каждый пользователь может запустить один или несколько серверов хранения;
  • Сервер директорий, предоставляющий информацию о том, какие данные размещены на серверах хранения. Сервер директорий может быть запущен в связке с сервером хранения для каждого пользователя или на группу пользователей, например, один на всю семью. Пользователь также может использовать сторонние серверы директорий и хранения, к которым ему предоставлен доступ (например, облачные сервисы).
  • Опционально реализован кэширующий сервер, который может применяться для кэширования данных при их передаче от удалённого сервера к клиенту.


Источник: http://www.opennet.ru/opennews/art.shtml?num=46082