Конференция MIX'2007: CardSpace

19.06.2007 2343   Комментарии (15)

Конференция MIX'2007: CardSpace

[начало]

На конференции в основном рассказывалось о трех технологиях/системах и демонстрировалось, где и как их применять. Эти системы - CardSpace, SilverLight и Expression Studio. В данной статье поговорим о CardSpace.

Сначала - преамбула... Как известно, в Интернете существует масса сервисов, требующих регистрации/идентификации: форумы, чаты, блоги, онлайновые магазины, системы управления контентом и тому подобное. Во время регистрации на них приходится заполнять практически одинаковые анкеты, подтверждать e-mail, запоминать пароль и так далее.

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

По этой причине неоднократно предпринимались попытки создать некие универсальные системы идентификации, которые можно было бы безопасно использовать на самых разнообразных сервисах. Корпорация Microsoft уже достаточно давно разработала систему под названием Microsoft Passport, с которой работают сотни миллионов пользователей. Однако эта система централизованная - то есть данные хранятся на специальных серверах системы, а это не может считаться совершенно безопасным подходом.

Также существует и пользуется популярностью система (протокол) OpenID, разработанная Брэдом Фицпатриком, одним из создателей LiveJournal. В отличие от Microsoft Passport, OpenID - это децентрализованная система идентификации. Вообще говоря, OpenID - это просто URL (адрес страницы). Главная задача OpenID (а точнее, OpenID-сервера) - подтвердить некоему сервису тот факт, что именно вы являетесь владельцем данного URL, при этом не передавая никакие личные данные вроде логина, пароля или адреса электронной почты.

Однако и у OpenID, несмотря на определенные плюсы, есть заметные минусы. Один из них заключается в том, что у OpenID-сервера (OpenID-провайдера) сохраняется информация о том, на каких сервисах (сайтах) вы используете свои данные OpenID. А это весьма неприятно и небезопасно.

В Microsoft попытались радикально решить проблему безопасной и удобной идентификации, создав систему под названием CardSpace, о которой подробно рассказывали на MIX'2007. (На этапе разработки эта система называлась InfoSpace, и это название сейчас можно изредка встретить в некоторых публикациях.) Что же это такое и чем CardSpace принципиально отличается от уже существующих систем?

Принципиальное отличие заключается в том, что CardSpace спроектирована по принципу идентификации, используемой в реальной жизни. Ведь как вас идентифицируют в реале? По документам. Причем по нескольким. У вас есть общегражданский паспорт, который служит идентификацией для огромного большинства самых разнообразных сервисов: заказы, билеты, гостиницы, аренда, кредиты и так далее. Ни в одном случае вас не просят выбрать какой-то уникальный логин и пароль, а просто проверяют ваш паспорт - его данные и будут соответствующим идентификатором. Владельцы сервиса доверяют организации, выдавшей паспорт (МВД), а выяснить, вы ли являетесь владельцем данного паспорта, они могут, сличив фотографию. Также в качестве идентификатора вашей личности могут служить права или заграничный паспорт. Во многих (но не во всех, разумеется) случаях вы можете выбрать, что именно показывать в качестве идентификатора: общегражданский паспорт, заграничный паспорт или права.

Ныне существующие системы идентификации в Интернете действуют по другому принципу: некий сервис, требуя ввести ваши данные, одновременно является системой, выдающей удостоверения, и системой, проверяющей эти удостоверения. Ну или, как в случае с MS Passport, есть некая удостоверяющая система, в которой хранятся все ваши данные.

С CardSpace выдачей удостоверения занимается специальная организация (сайт) - поставщик удостоверений, а сервис, требующий идентификации, принимает удостоверения пользователей от организации, которой он доверяет. При этом пользователь избавлен от необходимости при регистрации вводить какие-то данные (он просто указывает, какую именно карту идентификации хочет отправить на этот сайт), сервис получает требуемую информацию, и весь процесс достаточно безопасен.

Как это все происходит чисто технически?

1. Размещение карточки у поставщика

Пользователь выбирает какого-то поставщика удостоверений, заполняет на его сайте соответствующую форму, после чего получает карточку (ее называют Information Card) - подписанный файл, который хранится на его компьютере локально в базе карточек.


Принятая карта в списке Information Cards


Сервис CardSpace в "Панели управления"

2. Предоставление карточки сервису с тикетом от поставщика

Пользователь заходит на некий сервис, который умеет работать с карточками CardSpace, о чем символизирует специальный значок.


Значок работы с Information Card

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


Окно выбора установленных карточек

При этом сервис с помощью специальных протоколов HTTP/S (WS-Security, WS-Trust, WS-MetadataExchange и WS-SecurityPolicy) описывает свои требования к наличию определенных полей карточки, и в окне выбора появляются только такие Information Cards, которые отвечают этим требованиям.

После того как пользователь выберет нужную карточку, сервис обращается к поставщику удостоверений (в каждой карточке содержится информация о том, каким поставщиком она выдана) с просьбой предоставить специальный тикет (ticket), содержащий информацию о пользователе, - то есть идентифицировать его. И здесь очень важный момент заключается в том, что тикет, представляющий собой подписанное и зашифрованное XML-сообщение, поставщиком отправляется сначала пользователю, а затем от пользователя поступает на запрашивающий сервис. Таким образом, поставщик удостоверений ничего не знает о том, какие сервисы запрашивали информацию о данном пользователе.

Схематично этот процесс выглядит следующим образом:


Схема "удостоверяющий центр, пользователь, сервис"

3. Предоставление карточки непосредственно от пользователя

В технологии CardSpace также заложена возможность прямой работы пользователя с сервисом - минуя этап выдачи удостоверения и запроса тикета. В этом случае пользователь сам создает у себя карточки с необходимым набором информации, которые предоставляет по требованию каких-то сервисов. Если в случае с удостоверяющими сайтами Information Card является аналогом паспорта или водительского удостоверения, то в случае прямого обмена пользователя с сервисом Information Card выполняет функцию визитки, содержащей только те данные, которые в данный момент требуются. Ведь какому-то сервису вы готовы/должны раскрывать ваш адрес и телефон (яркий пример - интернет-магазин), а другому - не готовы (например, форум или блог). Для этих случаев создаются разные Information Cards.


Схема "пользователь - сервис"

Таким образом, области применения CardSpace могут быть весьма различны. Учитывая хорошую защищенность технологии, CardSpace могут использоваться (и уже используются) в различных платежных системах. В этом случае, например, банк выдает и удостоверяет карточку пользователя, с помощью которой пользователь потом может иметь доступ к сервисам онлайн-банкинга.

Ну а уж всевозможные форумы, блоги и чаты, для участия в которых всегда требуется идентификация, - там использование CardSpace экономит массу времени, да и значительно повышает безопасность.

Тут еще нужно отметить, что технология CardSpace базируется исключительно на открытых протоколах, что позволяет реализовать все компоненты системы (удостоверяющий центр, база карточек пользователя, принимающая сторона) на любых платформах (что, кстати, уже активно делается):

  • Novell, IBM, Sun, Ping Identity, BMC, VeriSign...

  • For Linux, MacOS, mobile devices,

  • For browsers Firefox, Safari...

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

© 1998–2020 Alex Exler
19.06.2007

Комментарии 15

Alex Exler: И здесь очень важный момент заключается в том, что тикет, представляющий собой подписанное и зашифрованное XML-сообщение, поставщиком отправляется сначала пользователю, а затем от пользователя поступает на запрашивающий сервис. Таким образом, поставщик удостоверений ничего не знает о том, какие сервисы запрашивали информацию о данном пользователе.


Дыры "от Микрософт" уже давно стали притчей. Уверен, что как только наметится хоть какая-то массовость, то повятся методы умеющие подменять эти тикеты. То бишь севис сделает попытку запросить подверждение у поставщика удостоверения, а пользователь сам сформирет и отправит ему это подтверждение не обращаясь к поставщику. Проще говоря - сэмулирует ответ поставщика. Конечно если сервис дейтвительно напрямую к поставщику не обращается, а все запросы-ответы происходят через посредничество пользователя.
CSE
01.07.07 13:58
0 0



> HTTP/S (WS-Security, WS-Trust, WS-MetadataExchange и WS-SecurityPolicy)

Технически некорректная неточная цитата из

http://blogs.gotdotnet.ru/personal/allo/PermaLink.aspx?guid=49B689DE-4DA3-48F7-B944-8B32CDE007AE

потому что HTTP/S это транспортный протокол (https://) а WS-* это application протоколы уровнем выше, которые могут быть транспортируемы как с помощью HTTP/S так и просто HTTP а также FTP, email и просто абстрактный обмен файлами.
eak
22.06.07 10:49
0 0

Это всё, конечно, удобно, но система односторонней направлености - только для удобства пользователей.

Это сравнимо с тем, что человек может в любой момент пойти и получить новый паспорт с новым именем и личными данными.

Кто бы еще придумал такую обязательную систему, чтобы у пользователя был всегда один и тот же ID и при, допустим, бане его на каком-нибудь ресурсе модератору не приходилось заморачиваться тем, что придется вылавливать клонов пользователя, а банить человека раз и навсегда... И так далее 😄
19.06.07 21:57
0 0

Почему - то очень напоминает просто метод идентификации пользователя сертификатами .. только упрощенный и надстроеный всеми вот этими танцами с требованием наличия полей итп.
19.06.07 11:50
0 0

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



По идее сервис то к поставщику как раз не обращается, иначе последний будет знать куда ходил пользователь... Непонятно написано.
19.06.07 13:03
0 0

Я конечно полезу сейчас искать то, что спрошу, но спросить всё-таки стоит.
1. Каким образом защищены "карточки" хранящиеся локально от доступа к ним всяких троянов и т.п.
2. В какой мере реализован функционал для хранения "карточек" на внешних носителях, например для полной переустановки системы
3. Есть ли какое-то решение для работы с "карточками" используя публичные компьютеры?
19.06.07 11:31
0 0

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



Идея хороша, осталось лишь дождаться ее массового внедрения.
19.06.07 11:12
0 0

Звучит неплохо (при том, что я слишком слаб в технической стороне вопроса). Только поставщик удостоверений в наших условиях, интересно, откуда будет получать исходные данные паспорта или водительского удостоверения?

Вариант с "визитными карточками", ИМХО, более прост и привлекателен, хотя у них разные цели и "судьбы".
19.06.07 10:03
0 0

Lisenkov: . Только поставщик удостоверений в наших условиях, интересно, откуда будет получать исходные данные паспорта или водительского удостоверения?



Ниоткуда. Он их и не должен получать. При регистрации же на форуме тоже никто данные паспорта или удостоверения не требует, правильно?
19.06.07 10:06
0 0