С 2004 занимаюсь корпоративным программным обеспечением В 2008 пришел в CUSTIS Работал разработчиком, техлидом, тимлидом, сейчас занимаюсь архитектурой 3/67
возникает целый ряд вопросов: нужно ли самим разрабатывать систему контроля доступа? Как аутентификация и авторизация встраиваются в архитектуру приложения? Возможно ли сделать вход в систему одновременно простым, удобным и безопасным? Что делать с паролями от сотен сайтов?! На семинаре мы: рассмотрим разные методы аутентификации и авторизации, попробуем обойти их познакомимся с промышленными стандартами и современными трендами в этой сфере дадим ответы на указанные вопросы с позиций проектировщика, пользователя, разработчика, тестировщика и инженера сопровождения уделим особое внимание архитектуре и юзабилити Семинар рассчитан на студентов и молодых специалистов, интересующихся проектированием, разработкой и сопровождением подсистем контроля доступа в корпоративных приложениях
знать, как они устроены Мы хотим делать их удобными Нам приходится думать, как их встраивать в приложение 6/67 Сегодня не будет Математики Криптографии Информационной безопасности Зато будут Методы UX Архитектура
пр. Протоколы В атаку! Single sign-on Перерыв ☕ Аутентификация UX Настоящее и будущее Авторизация Виды Архитектура Зрелость модели контроля доступа Заключение 7/67
или процесса). Иногда идентификацией называют сам факт присвоения идентификатора. Аутентификация (authentication, AuthN) – это проверка подлинности предъявленного субъектом идентификатора. В русском языке в термин вкрался досадный лишний слог. 8/67
или процесса). Иногда идентификацией называют сам факт присвоения идентификатора. Аутентификация (authentication, AuthN) – это проверка подлинности предъявленного субъектом идентификатора. В русском языке в термин вкрался досадный лишний слог. Авторизация (authorisation, authorization, AuthZ) – это определение и предоставление субъекту прав на выполнение определенных действий 8/67
доступом. Для доступа к ячейке достаточно предъявить специальную пластиковую карту (ранее выданную арендатору ячейки) и ключ Проводится ли в таком случае аутентификация? 11/67
доступом. Для доступа к ячейке достаточно предъявить специальную пластиковую карту (ранее выданную арендатору ячейки) и ключ Проводится ли в таком случае аутентификация? Кто несет ответственность при пропаже содержимого ячейки после посещения ячейки анонимным пользователем? 11/67
пользователей сообщают пароли другим 3% – записывают на бумажке 60–70% – используют одинаковые пароли на всех сайтах В среднем около десятка–двух паролей и ПИНов выдается каждому пользователю … 13/67
пользователей сообщают пароли другим 3% – записывают на бумажке 60–70% – используют одинаковые пароли на всех сайтах В среднем около десятка–двух паролей и ПИНов выдается каждому пользователю … 13/67 «Пароли мертвы…» Билл Гейтс, 2004
снизу Ограничения на символы Прочие простые проверки Не совпадает с логином Не «123456789» Не «qwerty» Ограничение числа неудачных попыток ввода 14/67 http://goo.gl/Cc6vF7 СИМ-СИМ, ОТКРОЙСЯ! ХА! ТВОЙ ПАРОЛЬ ПРОСРОЧЕН! Квантовый скачок в «Тысяча и одной ночи»
популярен Защищает от утечки пароля или хэша 18/67 Навязчив → не подходит для типовых учетных записей Компромисс – после ввода одноразового пароля сохранять для пары «пользователь-устройство» super-cookie
или набора факторов может быть запрошена дополнительная аутентификация Основной пароль для входа в интернет-банк, OTP для платежа Ввод OTP на новом устройстве 19/67
Терминология, способы и пр. Протоколы В атаку! Single sign-on Перерыв ☕ Аутентификация UX Настоящее и будущее Авторизация Виды Архитектура Зрелость модели контроля доступа Заключение
можете реализовать любой протокол передачи учетных данных сами! После успешной аутентификации устанавливается сессия. Реализуется путем возврата с клиента выданного сервером authentication ticket-а (через cookie или в адресной строке)
примерно равные команды Каждая команда играет роли и Алисы, и Боба, и Мэллори Реквизит Пара ключей Калькулятор (в режиме «Научный») Бумага и ручка 29/67 Онлайн калькулятор
пароль, который передала Алиса Бобу Подменить пароль, передаваемый Бобу Алисы и Боба Честно шифровать и дешифровывать сообщения E(e, n, m) = me mod n D(d, n, c) = cd mod n Вам выданы две пары ключей Сообщение m от Алисы – это число от 2 до 9 Если вы скомпрометировали ваш закрытый ключ, вы можете запросить новую пару ключей у организаторов 30/67
Терминология, способы и пр. Протоколы В атаку! Single sign-on Перерыв ☕ Аутентификация UX Настоящее и будущее Авторизация Виды Архитектура Зрелость модели контроля доступа Заключение
Делегирование аутентификации! Сколько же можно помнить и вбивать разных паролей? Компрометация универсального пароля чревата Single sign-on! 35/67
– например, рабочий день Инвалидация токена аутентификации / TGT не приводит к мгновенному прекращению доступа к приложению Так же инвалидация сессии приложения приведет к новой сессии (это же SSO!) Инвалидация токена аутентификации / TGT приведет к запросу учетных данных при доступе к другому приложению в произвольный момент времени 40/67
– например, рабочий день Инвалидация токена аутентификации / TGT не приводит к мгновенному прекращению доступа к приложению Так же инвалидация сессии приложения приведет к новой сессии (это же SSO!) Инвалидация токена аутентификации / TGT приведет к запросу учетных данных при доступе к другому приложению в произвольный момент времени Конечно же, есть попытки обойти… Какие? 40/67
Терминология, способы и пр. Протоколы В атаку! Single sign-on Перерыв ☕ Аутентификация UX Настоящее и будущее Авторизация Виды Архитектура Зрелость модели контроля доступа Заключение
Уменьшать число действий в частых сценариях (например, «горячие клавиши») Пользователь не может использовать «горячие клавиши» Обеспечивать информативную обратную связь для каждого действия Невозможно/неудобно увидеть вводимый пароль Доводить диалоги до логического конца Ok Не провоцировать на ошибки и предлагать простую обработку ошибок Обычно системы только сообщают об успехе или неудаче. Была ли ошибка в логине или пароле или мы ошиблись в раскладке клавиатуры – узнать невозможно Разрешать отмену любого действия Системы отслеживают неудачные попытки и блокируют учетную запись Дать пользователю чувство управляемости системы и почувствовать ответственность Пользователь отвечает на запросы системы, а не является инициатором взаимодействий Кратковременную память загружать как можно меньше Пользователи должны помнить уйму правил: как часто менять пароль, сколько и каких символов, не забыть добавить специальные символы, раскладку и т. д. Authentication UX 45/67 Бен Шнейдерман, 1986
Уменьшать число действий в частых сценариях (например, «горячие клавиши») Пользователь не может использовать «горячие клавиши» Обеспечивать информативную обратную связь для каждого действия Невозможно/неудобно увидеть вводимый пароль Доводить диалоги до логического конца Ok Не провоцировать на ошибки и предлагать простую обработку ошибок Обычно системы только сообщают об успехе или неудаче. Была ли ошибка в логине или пароле или мы ошиблись в раскладке клавиатуры – узнать невозможно Разрешать отмену любого действия Системы отслеживают неудачные попытки и блокируют учетную запись Дать пользователю чувство управляемости системы и почувствовать ответственность Пользователь отвечает на запросы системы, а не является инициатором взаимодействий Кратковременную память загружать как можно меньше Пользователи должны помнить уйму правил: как часто менять пароль, сколько и каких символов, не забыть добавить специальные символы, раскладку и т. д. А с точки зрения безопасности все эти меры предотвращают атаки по словарю, угадывание и социальную инженерию Authentication UX 45/67 Бен Шнейдерман, 1986
оболочка Отпечатки пальцев После терактов 9/11 IСAO (Международная организация гражданской авиации) разработала стандарты биометрических документов Биометрическая аутентификация перспективна, но не может / не должна быть единственным способом 47/67
веб, стандартизирует формат сообщений, а не метод аутентификации OАuth – протокол аутентификации и авторизации. Можно использовать не только в веб, но он неинтероперабелен. В версии 2.0 за аутентификацию отвечает OpenID Connect. 49/67
расширяемых стандартов: UAF – Universal Authentication Framework, беспарольная аутентификация с зарегистрированного устройства U2F – Second Factor UX, двухфакторная аутентификация с помощью устройств и поддержкой браузера 50/67
Терминология, способы и пр. Протоколы В атаку! Single sign-on Перерыв ☕ Аутентификация UX Настоящее и будущее Авторизация Виды Архитектура Зрелость модели контроля доступа Заключение
пары субъект – объект задается перечисление допустимых разрешений (например: Read, Write, List, Execute) Часто объект имеет привязанного субъекта-владельца. Владелец может устанавливать разрешения для других субъектов 55/67
Субъекту присваивается роль или роли Выдаются разрешения заданным ролям Реализует DAC и MAC Может быть усложнен введением наследования ролей Очень распространен в корпоративных приложениях Пример: Пользователь может подтвердить заказ, если его роль – менеджер 57/67
Субъекту присваивается роль или роли Выдаются разрешения заданным ролям Реализует DAC и MAC Может быть усложнен введением наследования ролей Очень распространен в корпоративных приложениях Пример: Пользователь может подтвердить заказ, если его роль – менеджер Вопрос: Как ограничить менеджера только московскими заказами? 57/67
Субъекты и объекты наделяются атрибутами Политики вычисляют условия, заданные через выражения атрибутов субъекта и объекта Пример: Пользователь может подтвердить заказ, если подразделение пользователя равно подразделению, в котором создан заказ, и должность субъекта – менеджер 58/67
вы можете найти статьи про ABAC: http://habrahabr.ru/company/custis/blog/248649/ http://habrahabr.ru/company/custis/blog/258861/ 59/67 DAC RBAC ABAC Изменения без участия программиста ✔ ✔ ✔ Описание близко́ к бизнес-терминам ✘ ✔ ✔ Простота разработки ✔ ? ✘
архитектура N-уровневая архитектура Сервис- ориентированная архитектура Аутентификация как авторизация Обычно RBAC RBAC, доступны глобальные роли Каждое приложение реализует авторизацию Шлюз авторизации, возможна кроссплатформенная авторизация Контроль доступа на уровне ресурсов Контроль доступа на уровне приложения Авторизация через сервисную шину (ESB)
Терминология, способы и пр. Протоколы В атаку! Single sign-on Перерыв ☕ Аутентификация UX Настоящее и будущее Авторизация Виды Архитектура Зрелость модели контроля доступа Заключение