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 составляют три компонента:
Опционально реализован кэширующий сервер, который может применяться для кэширования данных при их передаче от удалённого сервера к клиенту.
Сайт разработчика:
Что почитать?
Разместил: