От паролей к CardSpace Сергей Березников Эксперт DocsVision Digital Design
Содержание Личностный кризис Интернет Обзор CardSpace Реализация Метасистема Идентификации Запуск CardSpace
А Вы кто?
Личностный кризис Интернет Мошенничество (фишинг) «Утомлённые паролями» Несовместимые, частные механизмы идентификации
Мошенничество (фишинг) Интернет – опасное место!
«Утомлённые паролями» Плохой выбор Плохое управление Плохое (пере-)использование
Что необходимо? Простой, согласованный, защищённый способ представления личности –Применимый всеми и для всего Быть открытым и никому не принадлежать Подходить для всех сценариев Работать с существующими и будущими системами –Вовлечь пользователя в управление своей личностью Защитить персональную информацию Помочь в принятии правильных решений Получить признание и принятие индустрии
Личностная метасистема Абстракция личности, основанная на Семи Законах Личность (identity): набор заявок (claims) в маркере безопасности (security token) Роли –Субъект –Поставщик личности –Заинтересованная сторона Протокол 1)Пользователя просят представиться 2)Пользователь выбирает поставщика личности 3)Поставщик выдаёт пользователю маркер 4)Пользователь предъявляет маркер безопасности инициатору запроса
Протокол взаимодействия Поставщик личности (Identity Provider - IP) Заинтересованная сторона (Relying Party - RP) Клиент Клиент желает получить доступ к ресурсу RP выставляет требования: формат, список заявок и издателя маркера безопасности 1 2 Пользователь 3 Клиент показывает список IP, удовлетворяющих этим требованиям Пользователь выбирает IP 4 5 У IP запрашивается маркер безопасности 6 IP генерирует маркер на основе требований RP 7 Пользователь подтверждает/отклоняет выдачу маркера 8 Маркер предъявляется RP RP просматривает заявки и предоставляет доступ
Как? WS-* и CardSpace! Описать политику… –WS-SecurityPolicy Извлечь политику… –WS-MetadataExchange Security Token Service… –WS-Trust Сообщения… –SOAP и WS-Security Формат маркера… –Всё, что желает RP и может предоставить IP Взаимодействие сторон происходит под руководством селектора личности (identity selector) на клиенте –CardSpace – селектор личности для Windows
Windows CardSpace Единообразный интерфейс Помогает избавиться от паролей Помогает защитить пользователей от подделок и мошенничества Поддерживает взаимную и многоступенчатую аутентификацию ПрощеБезопаснее Базируется на WS-* протоколах
Что такое Windows CardSpace? CardSpace – это селектор личности для Windows –Часть.NET Framework 3.0, использует WCF для реализации стека WS-* Цифровые личности пользователя – набор карточек –Карточки связаны с поставщиком личности –Содержат метаданные маркера безопасности Что они из себя представляют и где их взять –Отображаются при помощи специального защищённого пользовательского интерфейса Когда пользователь выбирает карточку… –CardSpace получает у поставщика личности маркер –С согласия пользователя передаёт его заинтересованной стороне Пользователь принимает непосредственное и активное участие в процессе
Поиграем за… 1)Поставщика 2)Сторону 3)Клиента
Роль 1: Поставщик личности Каждый поставщик личности должен иметь: –SSL сертификат Представляет личность поставщика, используется для подписи маркера Предпочтительны High Assurance сертификаты с логотипом –Security Token Service Обрабатывает запросы на получение маркера, аутентифицирует пользователя, создаёт маркер –Одну информационную карточку на пользователя Содержит метаданные маркера безопасности Примеры –Работодатель, школа, банк, клуб –Пользователь!
Поставщик личности = Пользователь Подходит для большинства веб-сайтов На клиенте нам нужно: –Security Token Service –Создание карточки –Ключи для подписи маркера Является частью системы CardSpace Персональные или самодельные карточки –Создаются пользователем в CardSpace UI –Фиксированный набор из 12 заявок –Маркеры безопасности в формате SAML 1.x –Карточка и данные - на клиенте
SSL сертификат –High Assurance сертификаты с логотипом Security Token Services –Купить у производителя –Создать на.NET Framework 3.0 –На устройстве… портативный STS Создаёт управляемые (managed) карточки –Одна на пользователя, подписана поставщиком –Поставщик определяет набор заявок, формат маркера, способ аутентификации –Карточка передаётся пользователю, но данные остаются у поставщика Поставщик личности != Пользователь
Роль 2: Заинтересованная сторона SSL сертификат –High Assurance сертификат с логотипом Требования к маркеру заданы в политике Обработка маркера безопасности –Расшифровать маркер, проверить подпись издателя, разобрать заявки, идентифицировать пользователя, авторизовать Примеры –Любой сайт или сервис
Заинтересованный = Веб-сервис Установить сертификат, использовать WCF, config и System.IdentityModel
Заинтересованный = Веб-сайт Веб-сайтам тоже нужны WS-*? Нет! Для поддержки CardSpace: –Изменить страницы входа и регистрации Добавить кнопку с тегом объекта CardSpace Добавить обработчик присланного маркера безопасности –Авторизованным пользователям традиционно выдать куки –Модифицировать базу учётных записей Добавить поле для заявки «идентификатор пользователя»
Интеграция с CardSpace Четыре основных задачи: 1.Изменить базу данных 2.Создать страницу ассоциации 3.Обновить страницу входа 4.Обновить страницу регистрации
CREATE PROCEDURE aspnet_cardspace_associate nvarchar(50) ) AS... CREATE PROCEDURE aspnet_cardspace_lookup nvarchar(50) ) AS Ассоциируем пользователя с карточкой
Update account with your Information Card
public partial class Associate_aspx : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // check if an xmlToken is posted string xmlToken = Request["xmlToken"]; if (xmlToken != null) { TokenHelper tokenHelper = new TokenHelper(xmlToken); // get the unique id string uniqueID = tokenHelper.getUniqueID(); if (uniqueID != null && uniqueID != "") { //store it with the account. MembershipUser user = Membership.GetUser(); MembershipHelper.AssociateUser( user.UserName, uniqueID); } 2b. Создаём страницу ассоциации
Sign in with your Information Card
public partial class Login_aspx : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string xmlToken = Request["xmlToken"]; TokenHelper tokenHelper = new TokenHelper(xmlToken); // Lookup the account using the uniqueId string username = MembershipHelper.GetUser( tokenHelper.getUniqueID()); if (username != null) { MembershipUser user = Membership.GetUser(username); // give the cookie back to the browser. FormsAuthentication.SetLoginCookie(user.UserName, false); } 3b. Обновляем страницу входа
Register with your Information Card
//... string xmlToken = Request["xmlToken"]; TokenHelper tokenHelper = new TokenHelper(xmlToken); string uniqueId = tokenHelper.getUniqueID(); string Address = tokenHelper.GetClaim( string username = tokenHelper.GetClaim( if (username != null) { MembershipUser user = CreateUser(name, Address,...); MembershipHelper.AssociateUser(user.UserName, uniqueID); } //... 4b. Обновляем страницу регистрации
Роль 3: Клиентское приложение «Толстый» клиент –Использовать WCF и System.IdentityModel Браузер –В IE7.0 есть icardie.dll Читает HTML тег и вызывает CardSpace –Другие браузеры в Windows могут делать то же самое Клиентам Mac, Linux нужен селектор личности и WS-* стек
Безопасность CardSpace Архитектура –Отдельный «рабочий стол» –Ограниченная учётная запись –Обслуживает сервис –Хранилище зашифровано и ACL –Защита PIN PKCS#5 Взаимодействие –Всё зашифровано (кроме WS-MEX) –Многоступенчатая аутентификация Секретность –Для каждой RP свой ключ для самодельных карт Пользователь всегда при деле –Пользователь всегда знает какую информацию он предоставляет –Идентификация сторон через Trust Dialog –Пользователь может защитить карточки PIN-кодом
Trust Dialog Пользователь выносит явное решение о доверии поставщику личности и заинтересованной стороне Идентифицируют X.509 сертификатами Диалог доверия отображает: –Предмет и издателя сертификата –High Assurance информацию и логотип RP: показывается при первом визите и последующих отказах IP: появляется при импорте карточки
демонстрация CardSpace
.NET 3.0 и CardSpace Встроена в Windows Vista Доступна для Windows XP и Windows Server 2003 Beta 2 выпущена CTP периодически RTM в конце 2006 Q2Q3Q Q2Q4Q Q3Q4 B1CTP V1 RTM B2CTP
Дополнительная информация.NET Framework 3.0 Beta.NET Framework 3.0 Beta – msdn.microsoft.com/windowsvista/downloads/getthe beta/ msdn.microsoft.com/windowsvista/downloads/getthe beta/ msdn.microsoft.com/windowsvista/downloads/getthe beta/ Internet Explorer 7.0 Beta 2Internet Explorer 7.0 Beta 2 – CardSpace в.NET 3.0 Developer CenterCardSpace в.NET 3.0 Developer Center – msdn.microsoft.com/winfx/reference/infocard/ msdn.microsoft.com/winfx/reference/infocard/ Kim Camerons Identity WeblogKim Camerons Identity Weblog –
Вопросы? Сергей Березников
© 2006 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.