MicroID
MicroID — децентрализованный протокол идентификации. Он был изначально разработан в 2005 году Жереми Миллером[1]. MicroID представляет собой простой идентификатор, состоящий из хешированного коммуникационного/идентификационного URI и заявленного URL-адреса. Вместе эти два элемента создают хеш, который может быть подтверждён сторонними службами. В 2006 году Бен Лори указал на проблемы с приватностью MicroID[2], а в 2008 году Крис Эрвей подробно рассмотрел вопросы приватности этого протокола в техническом отчёте Брауновского университета[3].
Обмен MicroID
Пример вычисления хеша MicroID на псевдокоде:
MicroID = sha1( sha1("mailto:user@example.com") + sha1("http://example.net/") );
Вычисленный MicroID размещается на веб-странице для подтверждения. Проверяющая сторона самостоятельно генерирует MicroID и посещает страницу, чтобы проверить совпадение значения. Если значения совпадают, считается, что право собственности подтверждено.
MicroID основывается на коммуникационном URI. Поскольку как провайдер MicroID, так и проверяющий могут проверить коммуникационный URI, корректная реализация MicroID позволяет делать доверенные утверждения об идентичности.
Ограничения безопасности
MicroID фактически является контентным URI, подписанным электронной почтой или другим атрибутивом. Так как контентный URI известен для целей сравнения, любой, кто знает коммуникационный URI (например, адрес электронной почты), может подделать утверждение MicroID.
В частности, поскольку проверяющий обязательно сам генерирует MicroID для сравнения, очевидно, что любая сторона, которой доверено проверять MicroID пользователя, способна генерировать новые утверждения об авторстве от его имени.
То есть если вы можете проверить — вы можете и подделать.
Другими словами, всякий, кто способен проверить чей-тоMicroID на ресурсе X, может сгенерировать MicroID для любого другого документа.
Если идентичность пользователя не известна, владелец решил остаться анонимным и не позволяет другим проверять утверждение до определённого момента, когда он сам раскроет свою личность, то кто-то, имея адреса электронной почты, может провести тривиальную переборную атаку для определения владельца ресурса[4], а кто-то, имея URI, может провести такую же атаку для определения адреса электронной почты[5].
Таким образом, единственный оставшийся вариант безопасного применения — когда субъект генерирует надёжный криптографический одноразовый идентификатор (например, UUID), использует его для публикации документов с течением времени, а в будущем раскрывает UUID, чтобы доказать своё авторство; при этом с этого момента любой может делать любые утверждения от имени этого пользователя.
Ограничения приватности
Как было указано выше, MicroID — это хеш, полученный из публичного URI и полупубличного адреса электронной почты. Те, кто знают оба значения, могут проверить авторское утверждение на странице. Хеширование помогает скрыть электронную почту от лиц, которым она не должна быть известна, в первую очередь — от спамеров.
Однако исследования[3] популярных социальных сетей, таких как Last.fm, Digg и ClaimID, показывают, что переборная атака способна раскрыть адрес электронной почты в 20–25 % случаев.
Такая атака заключается в переборе адресов электронной почты, сформированных из публичных имен пользователей и другой доступной информации, то есть для каждого MicroID перебирается только несколько десятков вариантов. Тем не менее, исследование показало, что даже такой простой метод позволяет раскрыть адрес примерно в четверти случаев менее чем за секунду на пользователя. Следовательно, схема хеширования не может гарантировать приватность адреса электронной почты.
Архитектура утверждения MicroID
Пример успешного утверждения MicroID:
- Пользователь регистрируется на веб-сервисе. Этот сервис подтверждает электронную почту пользователя и размещает публичные страницы с MicroID, состоящим из хеша почты (коммуникационного URI) и URL-адреса страницы.
- Пользователь регистрируется на сервисе-проверяющем. Этот сервис также подтверждает электронную почту пользователя.
- Пользователь вводит URL страницы, которую он хочет подтвердить, в сервис-проверяющий. Сервис вычисляет MicroID и пытается найти совпадение на заявленной странице.
- Если MicroID на странице и у сервиса совпадают, право собственности считается подтверждённым.
MicroID и DOM
MicroID позволяет заявлять права на отдельные элементы семантического HTML. Например, MicroID, вставленный внутрь блочного элемента, будет означать заявку собственности на всё содержимое элемента. MicroID в заголовке страницы — заявку на всю страницу. Проверка возможна только на уровне URI.
Известные провайдеры MicroID
Известные верификаторы MicroID
Следующие веб-сервисы осуществляют проверку заявок MicroID:
- ClaimID
- Wink
Примечания
Ссылки
- http://microid.org — главная страница MicroID
- http://microid.org/blog — блог MicroID
- http://lists.ibiblio.org/mailman/listinfo/microid — почтовая рассылка MicroID
- http://microid.org/code/ — открытый исходный код MicroID