«Стой! Кто идет?»: аутентификация и авторизация в...

Post on 25-Jan-2017

660 Views

Category:

Software

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

22 октября 2015 года

Стой! Кто идет? Аутентификация и авторизация в

корпоративных системах

Владислав Иофе

Архитектор

О компании

2/67

Проектирование Заказная разработка

Бережное внедрение Масштабных IT-систем

О себе

В 2005 окончил мехмат

Ташкентского государственного университета

С 2004 занимаюсь корпоративным

программным обеспечением

В 2008 пришел в CUSTIS

Работал разработчиком, техлидом,

тимлидом, сейчас занимаюсь архитектурой

3/67

Аннотация

4/67

При проектировании и реализации корпоративных систем всегда

возникает целый ряд вопросов: нужно ли самим разрабатывать

систему контроля доступа? Как аутентификация и авторизация

встраиваются в архитектуру приложения? Возможно ли сделать

вход в систему одновременно простым, удобным и безопасным?

Что делать с паролями от сотен сайтов?!

На семинаре мы:

рассмотрим разные методы аутентификации и авторизации,

попробуем обойти их

познакомимся с промышленными стандартами

и современными трендами в этой сфере

дадим ответы на указанные вопросы с позиций проектировщика,

пользователя, разработчика, тестировщика и инженера сопровождения

уделим особое внимание архитектуре и юзабилити

Семинар рассчитан на студентов и молодых специалистов,

интересующихся проектированием, разработкой и сопровождением

подсистем контроля доступа в корпоративных приложениях

Мотивация

Ни разу не специалист

по информационной безопасности

Но в корпоративном ПО много

«сквозной функциональности» (cross-cutting concerns)

Примеры:

Аутентификация (Authentication)

Авторизация (Authorization)

Кэширование (Caching)

Связь (Communication)

Обработка ошибок (Exception Management)

Журналирование (Logging)

Валидация (Validation) 5/67

Сквозная функциональность

Таких функциональностей много одновременно

Нам приходится знать, как они устроены

Мы хотим делать их удобными

Нам приходится думать, как их встраивать в приложение

6/67

Сегодня не будет

Математики

Криптографии

Информационной

безопасности

Зато будут

Методы

UX

Архитектура

План

Вступление, мотивация

Аутентификация

Терминология, способы и пр.

Протоколы

В атаку!

Single sign-on

Перерыв ☕

Аутентификация

UX

Настоящее и будущее

Авторизация

Виды

Архитектура

Зрелость модели контроля доступа

Заключение 7/67

Терминология

Идентификация (identification) – это

установление идентификатора субъекта

(пользователя или процесса). Иногда

идентификацией называют сам факт

присвоения идентификатора.

8/67

Терминология

Идентификация (identification) – это

установление идентификатора субъекта

(пользователя или процесса). Иногда

идентификацией называют сам факт

присвоения идентификатора.

Аутентификация (authentication, AuthN) –

это проверка подлинности

предъявленного субъектом

идентификатора. В русском языке в термин

вкрался досадный лишний слог.

8/67

Терминология

Идентификация (identification) – это

установление идентификатора субъекта

(пользователя или процесса). Иногда

идентификацией называют сам факт

присвоения идентификатора.

Аутентификация (authentication, AuthN) –

это проверка подлинности

предъявленного субъектом

идентификатора. В русском языке в термин

вкрался досадный лишний слог.

Авторизация (authorisation, authorization,

AuthZ) – это определение и предоставление

субъекту прав на выполнение

определенных действий

8/67

Вопрос

Приведите примеры, в которых

происходит идентификация

без аутентификации?

9/67

Вопрос

Приведите примеры, в которых

происходит идентификация

без аутентификации?

9/67

Терминология и UX

10/67

Вопрос

Банк предоставляет услугу аренды

сейфовой ячейки с анонимным доступом.

Для доступа к ячейке достаточно

предъявить специальную пластиковую

карту (ранее выданную арендатору

ячейки) и ключ

11/67

Вопрос

Банк предоставляет услугу аренды

сейфовой ячейки с анонимным доступом.

Для доступа к ячейке достаточно

предъявить специальную пластиковую

карту (ранее выданную арендатору

ячейки) и ключ

Проводится ли в таком случае

аутентификация?

11/67

Вопрос

Банк предоставляет услугу аренды

сейфовой ячейки с анонимным доступом.

Для доступа к ячейке достаточно

предъявить специальную пластиковую

карту (ранее выданную арендатору

ячейки) и ключ

Проводится ли в таком случае

аутентификация?

Кто несет ответственность при пропаже

содержимого ячейки после посещения

ячейки анонимным пользователем?

11/67

Способы аутентификации

Пароли

Public Key Infrastructure (PKI)

Токены – делегирование аутентификации

12/67

Парольная аутентификация

Очень распространенная

Очень уязвимая

48% пользователей сообщают

пароли другим

3% – записывают на бумажке

60–70% – используют одинаковые

пароли на всех сайтах

В среднем около десятка–двух

паролей и ПИНов выдается

каждому пользователю

…13/67

Парольная аутентификация

Очень распространенная

Очень уязвимая

48% пользователей сообщают

пароли другим

3% – записывают на бумажке

60–70% – используют одинаковые

пароли на всех сайтах

В среднем около десятка–двух

паролей и ПИНов выдается

каждому пользователю

…13/67

«Пароли

мертвы…»

Билл Гейтс, 2004

Повышение надежности

Срок действия пароля

Ограничения

на длину снизу

Ограничения на символы

Прочие простые проверки

Не совпадает с логином

Не «123456789»

Не «qwerty»

Ограничение числа

неудачных попыток ввода

14/67

http://goo.gl/Cc6vF7

СИМ-СИМ, ОТКРОЙСЯ!

ХА! ТВОЙ ПАРОЛЬ

ПРОСРОЧЕН!

Квантовый скачок в «Тысяча и одной ночи»

15/67

http://goo.gl/kyiefE

Сообщения об ошибках,

которые запутывают злоумышленников

ПАРОЛЬ ВЕРНЫЙ, А ИМЯ ПОЛЬЗОВАТЕЛЯ

НЕВЕРНОЕ!

Факторы аутентификации

Знание

Долговременный или одноразовый пароль,

кодовое слово, ПИН, паспортные данные, …

16/67

Факторы аутентификации

Знание

Долговременный или одноразовый пароль,

кодовое слово, ПИН, паспортные данные, …

Обладание

Мобильный, карта, …

16/67

Факторы аутентификации

Знание

Долговременный или одноразовый пароль,

кодовое слово, ПИН, паспортные данные, …

Обладание

Мобильный, карта, …

Неотделимость

Отпечатки пальцев, радужная оболочка, сетчатка,

голос, лицо, ДНК, подпись, …

16/67

Факторы аутентификации

Знание

Долговременный или одноразовый пароль,

кодовое слово, ПИН, паспортные данные, …

Обладание

Мобильный, карта, …

Неотделимость

Отпечатки пальцев, радужная оболочка, сетчатка,

голос, лицо, ДНК, подпись, …

Интегрированность в общество

Доверенные друзья

16/67

Многофакторная аутентификация

Требование нескольких факторов

(часто разных категорий) существенно

повышает стойкость

17/67

One-time Password (Single-use Password)

В составе двухфакторной

аутентификации наиболее

популярен

Защищает от утечки

пароля или хэша

18/67

One-time Password (Single-use Password)

В составе двухфакторной

аутентификации наиболее

популярен

Защищает от утечки

пароля или хэша

18/67

Навязчив → не подходит

для типовых учетных записей

One-time Password (Single-use Password)

В составе двухфакторной

аутентификации наиболее

популярен

Защищает от утечки

пароля или хэша

18/67

Навязчив → не подходит

для типовых учетных записей

Компромисс – после ввода

одноразового пароля

сохранять для пары

«пользователь-устройство»

super-cookie

Risk-based authentication

В зависимости от степени риска

проводимой операции или набора

факторов может быть запрошена

дополнительная аутентификация

Основной пароль для входа

в интернет-банк, OTP для платежа

Ввод OTP на новом устройстве

19/67

Ау! Где мы?

20/67

Вступление, мотивация

Аутентификация

Терминология, способы и пр.

Протоколы

В атаку!

Single sign-on

Перерыв ☕

Аутентификация

UX

Настоящее и будущее

Авторизация

Виды

Архитектура

Зрелость модели контроля доступа

Заключение

Аутентификация в вебе: HTTP Basic

Логин и пароль передаются на сервер

в открытом виде (base64 не в счет)

21/67

Аутентификация в вебе: HTTP Basic

Логин и пароль передаются на сервер

в открытом виде (base64 не в счет)

21/67

В это время на сервере…

22/67

Аутентификация в вебе: HTTP Digest

Схема challenge-response

HA1=MD5(username:realm:password)

HA2=MD5(method:digestURI)

response=MD5(HA1:nonce:HA2) 23/67

Аутентификация в вебе: HTTP Digest

Схема challenge-response

HA1=MD5(username:realm:password)

HA2=MD5(method:digestURI)

response=MD5(HA1:nonce:HA2) 23/67

Аутентификация в вебе: Forms

24/67

Аутентификация в вебе: Forms

24/67

Аутентификация в вебе: Forms

24/67

Не стандартизована

Вы можете реализовать любой протокол передачи

учетных данных сами!

После успешной аутентификации устанавливается сессия.

Реализуется путем возврата с клиента выданного сервером

authentication ticket-а (через cookie или в адресной строке)

Public and private key

25/67

Уязвимости

26/67

http://goo.gl/vmHsgw

ВЫХОД НА

ПОСАДКУ ГРАЖДАНКА! ВЫ ДОЛЖНЫ ВЫКИНУТЬ ЭТОТ ГЕЛЬ ДЛЯ РУК.

В НЕМ 120 МЛ!

Атака Man-in-the-middle (MITM)

27/67

«Опочтарение» (англ. Going postal), 2010

Атака Man-in-the-middle (MITM)

28/67

Игра в MITM

Каждые два ряда делятся на три

примерно равные команды

Каждая команда играет роли

и Алисы, и Боба, и Мэллори

Реквизит

Пара ключей

Калькулятор (в режиме «Научный»)

Бумага и ручка

29/67

Онлайн калькулятор

Игра в MITM (2)

Задачи

Мэллори

Узнать пароль, который передала Алиса Бобу

Подменить пароль, передаваемый Бобу

Алисы и Боба

Честно шифровать и дешифровывать сообщения

E(e, n, m) = me mod n

D(d, n, c) = cd mod n

Вам выданы две пары ключей

Сообщение m от Алисы – это число от 2 до 9

Если вы скомпрометировали ваш закрытый ключ,

вы можете запросить новую пару ключей у организаторов

30/67

Атака Man-in-the-middle (MITM)

31/67

Сертификат содержит:

Номер

Период действия

Владельца

Открытый ключ владельца

Реквизиты центра сертификации

Криптоалгоритм

Public Key Infrastructure, сертификаты

32/67

Сертификат содержит:

Номер

Период действия

Владельца

Открытый ключ владельца

Реквизиты центра сертификации

Криптоалгоритм

Public Key Infrastructure, сертификаты

32/67

Сертификат содержит:

Номер

Период действия

Владельца

Открытый ключ владельца

Реквизиты центра сертификации

Криптоалгоритм

Public Key Infrastructure, сертификаты

32/67

Сертификат содержит:

Номер

Период действия

Владельца

Открытый ключ владельца

Реквизиты центра сертификации

Криптоалгоритм

Public Key Infrastructure, сертификаты

32/67

Вопрос

А в чем может заключаться MITM-атака

при digest-аутентификации?

33/67

Вопрос

А в чем может заключаться MITM-атака

при digest-аутентификации?

33/67

Ау! Где мы?

34/67

Вступление, мотивация

Аутентификация

Терминология, способы и пр.

Протоколы

В атаку!

Single sign-on

Перерыв ☕

Аутентификация

UX

Настоящее и будущее

Авторизация

Виды

Архитектура

Зрелость модели контроля доступа

Заключение

Новые вводные

Передавать пароли кому попало –

плохая идея!

35/67

Новые вводные

Передавать пароли кому попало –

плохая идея!

Сколько же можно помнить и вбивать

разных паролей?

Компрометация универсального пароля

чревата

35/67

Новые вводные

Передавать пароли кому попало –

плохая идея!

Делегирование аутентификации!

Сколько же можно помнить и вбивать

разных паролей?

Компрометация универсального пароля

чревата

35/67

Новые вводные

Передавать пароли кому попало –

плохая идея!

Делегирование аутентификации!

Сколько же можно помнить и вбивать

разных паролей?

Компрометация универсального пароля

чревата

Single sign-on!

35/67

Kerberos

36/67

Сообщения между KDC и участниками шифруются

Сообщения от первой стороны для третьей стороны, передаваемое

второй, шифруется общим ключом первой и третьей сторон

Двусторонняя аутентификация

Усиленная безопасность

37/67

http://goo.gl/HY9tbJ

Сильная аутентификация

Двухфакторная

Взаимная

Но односторонняя на сегодняшний день

в вебе – норма

38/67

Central Authentication Service (CAS) Protocol

39/67

Single sign-out

Токен аутентификации / TGT действует довольно

долго – например, рабочий день

Инвалидация токена аутентификации / TGT

не приводит к мгновенному прекращению доступа

к приложению

Так же инвалидация сессии приложения приведет

к новой сессии (это же SSO!)

Инвалидация токена аутентификации / TGT приведет

к запросу учетных данных при доступе к другому

приложению в произвольный момент времени

40/67

Single sign-out

Токен аутентификации / TGT действует довольно

долго – например, рабочий день

Инвалидация токена аутентификации / TGT

не приводит к мгновенному прекращению доступа

к приложению

Так же инвалидация сессии приложения приведет

к новой сессии (это же SSO!)

Инвалидация токена аутентификации / TGT приведет

к запросу учетных данных при доступе к другому

приложению в произвольный момент времени

Конечно же, есть попытки обойти… Какие?

40/67

Неудобство и безопасность

41/67

http://goo.gl/6YIfa4

Все!

Я автостопом!

Контроль безопасности

аэропорта

Уберите жидкости, металлические

предметы, снимите обувь

и нижнее белье

Перерыв

42/67

Ау! Где мы?

43/67

Вступление, мотивация

Аутентификация

Терминология, способы и пр.

Протоколы

В атаку!

Single sign-on

Перерыв ☕

Аутентификация

UX

Настоящее и будущее

Авторизация

Виды

Архитектура

Зрелость модели контроля доступа

Заключение

Пользователи

44/67

Пользователи

Одни наедине

с программой

44/67

Пользователи

Одни наедине

с программой

Ленивы и любят

комфорт

44/67

Пользователи

Одни наедине

с программой

Ленивы и любят

комфорт

Изобретательны

в обходе неудобств

44/67

Пользователи

Одни наедине

с программой

Ленивы и любят

комфорт

Изобретательны

в обходе неудобств

Хотят быть

защищенными

44/67

Пользователи

Одни наедине

с программой

Ленивы и любят

комфорт

Изобретательны

в обходе неудобств

Хотят быть

защищенными

Самое слабое звено

44/67

Правило Что не так в юзабилити?

Стремиться к согласованности Ok

Уменьшать число действий в частых сценариях

(например, «горячие клавиши»)

Пользователь не может использовать «горячие клавиши»

Обеспечивать информативную обратную связь

для каждого действия

Невозможно/неудобно увидеть вводимый пароль

Доводить диалоги до логического конца Ok

Не провоцировать на ошибки и предлагать

простую обработку ошибок

Обычно системы только сообщают об успехе или неудаче.

Была ли ошибка в логине или пароле или мы ошиблись

в раскладке клавиатуры – узнать невозможно

Разрешать отмену любого действия Системы отслеживают неудачные попытки и блокируют

учетную запись

Дать пользователю чувство управляемости

системы и почувствовать ответственность

Пользователь отвечает на запросы системы, а не является

инициатором взаимодействий

Кратковременную память загружать

как можно меньше

Пользователи должны помнить уйму правил: как часто менять

пароль, сколько и каких символов, не забыть добавить

специальные символы, раскладку и т. д.

Authentication UX

45/67

Бен Шнейдерман, 1986

Правило Что не так в юзабилити?

Стремиться к согласованности Ok

Уменьшать число действий в частых сценариях

(например, «горячие клавиши»)

Пользователь не может использовать «горячие клавиши»

Обеспечивать информативную обратную связь

для каждого действия

Невозможно/неудобно увидеть вводимый пароль

Доводить диалоги до логического конца Ok

Не провоцировать на ошибки и предлагать

простую обработку ошибок

Обычно системы только сообщают об успехе или неудаче.

Была ли ошибка в логине или пароле или мы ошиблись

в раскладке клавиатуры – узнать невозможно

Разрешать отмену любого действия Системы отслеживают неудачные попытки и блокируют

учетную запись

Дать пользователю чувство управляемости

системы и почувствовать ответственность

Пользователь отвечает на запросы системы, а не является

инициатором взаимодействий

Кратковременную память загружать

как можно меньше

Пользователи должны помнить уйму правил: как часто менять

пароль, сколько и каких символов, не забыть добавить

специальные символы, раскладку и т. д.

А с точки зрения безопасности все эти меры предотвращают

атаки по словарю, угадывание и социальную инженерию

Authentication UX

45/67

Бен Шнейдерман, 1986

Сравнение видов аутентификации

Вид Безопасность UX

Пароли 2 2

Бесконтактные карты 3 3

Генераторы OTP 3 3

PKI (токены, УЭК и пр.) 5 3

Kerberos 5 3

Отпечатки, лицо и пр. 4 3

Подпись 3 3

Распознавание голоса 1 5

46/67

Настоящее и будущее: биометрия

Биометрия

Сетчатка

Радужная оболочка

Отпечатки пальцев

После терактов 9/11 IСAO

(Международная организация гражданской

авиации) разработала стандарты

биометрических документов

Биометрическая аутентификация

перспективна, но не может / не должна быть

единственным способом

47/67

Настоящее и будущее: биометрия

48/67

Аутентификация жестом

Настоящее: протоколы, стандарты

CAS

SAML – SSO для веб, стандартизирует формат

сообщений, а не метод аутентификации

OАuth – протокол аутентификации

и авторизации. Можно использовать

не только в веб, но он неинтероперабелен.

В версии 2.0 за аутентификацию

отвечает OpenID Connect.

49/67

Настоящее и будущее: FIDO Alliance

Сосредоточен на разработке двух открытых

расширяемых стандартов:

UAF – Universal Authentication Framework,

беспарольная аутентификация

с зарегистрированного устройства

U2F – Second Factor UX, двухфакторная

аутентификация с помощью устройств

и поддержкой браузера

50/67

Настоящее и будущее: FIDO Alliance

51/67

Ау! Где мы?

52/67

Вступление, мотивация

Аутентификация

Терминология, способы и пр.

Протоколы

В атаку!

Single sign-on

Перерыв ☕

Аутентификация

UX

Настоящее и будущее

Авторизация

Виды

Архитектура

Зрелость модели контроля доступа

Заключение

Этапы контроля доступа

53/67

Авторизация

Discretionary access control, DAC

Mandatory access control, MAC

Role-based access control, RBAC

Attribute-based access control, ABAC

Гибридные модели

54/67

Discretionary access control

Избирательное управление доступом

Для каждой пары субъект – объект

задается перечисление допустимых

разрешений (например: Read, Write,

List, Execute)

Часто объект имеет привязанного

субъекта-владельца. Владелец может

устанавливать разрешения

для других субъектов

55/67

Mandatory access control

Мандатное управление доступом

Объекты несут метку конфиденциальности

Субъект ограниченно управляет объектами,

которыми владеет

Модель Белла – Лападулы

Субъекты также несут метку

“No read up”

“No write down”

56/67

Role-based access control

Управление доступом на основе ролей

Субъекту присваивается роль или роли

Выдаются разрешения заданным ролям

Реализует DAC и MAC

Может быть усложнен введением

наследования ролей

Очень распространен

в корпоративных приложениях

Пример: Пользователь может подтвердить

заказ, если его роль – менеджер

57/67

Role-based access control

Управление доступом на основе ролей

Субъекту присваивается роль или роли

Выдаются разрешения заданным ролям

Реализует DAC и MAC

Может быть усложнен введением

наследования ролей

Очень распространен

в корпоративных приложениях

Пример: Пользователь может подтвердить

заказ, если его роль – менеджер

Вопрос: Как ограничить менеджера только

московскими заказами?

57/67

Attribute-based access control

Управление доступом на основе атрибутов

Субъекты и объекты наделяются атрибутами

Политики вычисляют условия, заданные через

выражения атрибутов субъекта и объекта

Пример: Пользователь может подтвердить

заказ, если подразделение пользователя равно

подразделению, в котором создан заказ,

и должность субъекта – менеджер

58/67

Сравнение методов контроля доступа

59/67

DAC RBAC ABAC

Изменения без участия программиста ✔ ✔ ✔Описание близко́ к бизнес-терминам ✘ ✔ ✔

Простота разработки ✔ ? ✘

Сравнение методов контроля доступа

Кстати, в блоге CUSTIS на «Хабрахабре» вы можете

найти статьи про ABAC:

http://habrahabr.ru/company/custis/blog/248649/

http://habrahabr.ru/company/custis/blog/258861/

59/67

DAC RBAC ABAC

Изменения без участия программиста ✔ ✔ ✔Описание близко́ к бизнес-терминам ✘ ✔ ✔

Простота разработки ✔ ? ✘

Какая модель контроля доступа

здесь используется?

60/67

Как сквозная функциональность «прорастает»

61/67

Как сквозная функциональность «прорастает»

61/67

Как можно улучшить (1)

62/67

Как можно улучшить (1)

62/67

Как можно улучшить (2)

63/67

Зрелость авторизации корпоративного ПО

64/67

Базовая Стандартная Усовершенствованная/

Федеративная

Клиент-серверная

архитектура

N-уровневая

архитектура

Сервис-

ориентированная

архитектура

Аутентификация

как авторизация

Обычно RBAC RBAC, доступны

глобальные роли

Каждое приложение

реализует авторизацию

Шлюз авторизации,

возможна

кроссплатформенная

авторизация

Контроль доступа

на уровне ресурсов

Контроль доступа

на уровне приложения

Авторизация через

сервисную шину (ESB)

Другие смежные вопросы

Протоколы

SPNEGO/Negotiate

Темы

Identity and Access Management (IAM)

Access Management

User provisioning

Audit

65/67

Ау! Где мы?

66/67

Вступление, мотивация

Аутентификация

Терминология, способы и пр.

Протоколы

В атаку!

Single sign-on

Перерыв ☕

Аутентификация

UX

Настоящее и будущее

Авторизация

Виды

Архитектура

Зрелость модели контроля доступа

Заключение

Спасибо!

Вопросы?

67/67

Владислав Иофе

viofe@custis.ru

top related