Что обеспечивает наилучшую аутентификацию
Информационная безопасность
Практика информационной безопасности
Страницы
вторник, 15 декабря 2009 г.
ISSP \ Домен 02. Управление доступом. Тест
2. Что является производной из парольной фразы и фактически используется для аутентификации в системе?
3. Какое из следующих утверждений правильно описывает пароли?
4. В чем заключается смысл внедрения принципа разделения обязанностей?
5. Что из перечисленного ниже не является логическим управлением доступом?
6. Модель управления доступом должна отдавать предпочтение _____________ способам
7. Какая политика управления доступом применяется, когда в среде используется недискреционная модель?
8. Как используется протокол запрос/ответ в случае применения токенов?
9. Какая модель управления доступом является управляемой пользователем?
10. Что обеспечивает наилучшую аутентификацию?
11. Что из перечисленного ниже не является частью реализации аутентификации посредством Kerberos?
12. Какая модель реализует матрицы контроля доступа для управления взаимодействием субъектов с объектами?
13. Что означает аутентификация?
14. Если компания имеет большую текучесть кадров, какая структура управления доступом подойдет ей лучше всего?
15. Для чего обычно используется пароль?
16. Процесс взаимной аутентификации подразумевает, что _______________.
17. Примером какого типа функций безопасности является просмотр журналов регистрации событий?
18. При использовании дискреционного управления доступом, кто имеет полномочия предоставления прав доступа к данным?
19. Что может быть единой точкой отказа при использовании функциональности единого входа?
20. Какую роль играет биометрия в управлении доступом?
21. Что (или кто) определяет, какую модель управления доступом следует использовать компании – дискреционную, мандатную или недискреционную?
22. Какой тип атаки пытается перебрать все возможные варианты?
23. Что из перечисленного ниже правильно описывает понятие спуфинга?
24. Что из перечисленного ниже не является преимуществом централизованного администрирования управления доступом?
25. Что из перечисленного ниже лучше всего описывает то, что дает компаниям ролевое управление доступом в части снижения административных расходов?
26. Что из перечисленного ниже лучше всего описывает каталоги (directories) и то, как они относятся к управлению идентификацией?
27. Что из приведенного ниже не является частью инициализации (provisioning) пользователей?
28. Что из перечисленного ниже является технологией, позволяющей пользователю помнить только один пароль?
29. Что из перечисленного ниже не является системой выявления вторжений (IDS) на основе аномалий?
30. Что из перечисленного ниже имеет отношение к этому рисунку:
Как ты реализуешь аутентификацию, приятель?
Все знают о стандартной аутентификации пользователя в приложении. Это олдскульная процедура регистрации — пользователь вводит адрес почты, пароль и т. д., — а затем при входе мы сравниваем почту и/или пароль с сохранёнными данными. Если совпадает, даём доступ. Но времена изменились, и сегодня появилось много других методов аутентификации. Если хотите оставаться востребованным программистом/разработчиком в этом меняющемся, словно калейдоскоп, мире разработки ПО, то вы должны знать обо всех этих новых методах.
Нельзя отрицать, что в любых приложениях и ОС «аутентификация» — крайне важный элемент обеспечения сохранности пользовательских данных и регулирования доступа к информации. Чтобы понять, какой метод аутентификации для вас лучше, нужно разбираться в достоинствах и недостатках всех методов, а также неплохо представлять, как же они работают.
Здесь я постараюсь рассказать о большинстве распространённых сегодня методов аутентификации. Это не подробное техническое руководство, а лишь способ познакомить вас с ними. Хотя методы описаны с учётом применения в вебе, эти идеи можно реализовать и в других условиях.
Будем считать, вы уже знаете о том, что большая часть веба/интернета построена на протоколе HTTP. Также вам нужно знать, как работают веб-приложения, что означает аутентификация пользователя в приложении и что такое клиент-серверная архитектура.
Аутентификация на основе сессий
Протокол HTTP не отслеживает состояния, и, если мы аутентифицируем пользователя с помощью имени и пароля, наше приложение не будет знать, тот ли это человек, что и в предыдущем запросе. Нам придётся аутентифицировать снова. При каждом запросе HTTP не знает ничего о том, что происходило до этого, он лишь передаёт запрос. Так что, если вам нужны личные данные, придётся снова логиниться, чтобы приложение знало, что это точно вы. Может сильно раздражать.
Чтобы избавиться от этого неудобства, придумали аутентификацию на основе сессий/кук, с помощью которых реализовали отслеживание состояний (stateful). Это означает, что аутентификационная запись или сессия должны храниться и на сервере, и на клиенте. Сервер должен отслеживать активные сессии в базе данных или памяти, а на фронтенде создаётся кука, в которой хранится идентификатор сессии. Это аутентификация на основе куки, самая распространённый и широко известный метод, используемый уже давно.
Процедура аутентификации на основе сессий:
У этого метода несколько недостатков.
Аутентификация на основе токенов
Аутентификация на основе токенов в последние годы стала очень популярна из-за распространения одностраничных приложений, веб-API и интернета вещей. Чаще всего в качестве токенов используются Json Web Tokens (JWT). Хотя реализации бывают разные, но токены JWT превратились в стандарт де-факто.
При аутентификации на основе токенов состояния не отслеживаются. Мы не будем хранить информацию о пользователе на сервере или в сессии и даже не будем хранить JWT, использованные для клиентов.
Процедура аутентификации на основе токенов:
У метода есть ряд преимуществ:
Благодаря всему этому аутентификация на основе токенов сегодня набирает популярность.
Беспарольная аутентификация
Первой реакцией на термин «беспарольная аутентификация» может быть «Как аутентифицировать кого-то без пароля? Разве такое возможно?»
В наши головы внедрено убеждение, что пароли — абсолютный источник защиты наших аккаунтов. Но если изучить вопрос глубже, то выяснится, что беспарольная аутентификация может быть не просто безопасной, но и безопаснее традиционного входа по имени и паролю. Возможно, вы даже слышали мнение, что пароли устарели.
Беспарольная аутентификация — это способ конфигурирования процедуры входа и аутентификации пользователей без ввода паролей. Идея такая:
Вместо ввода почты/имени и пароля пользователи вводят только свою почту. Ваше приложение отправляет на этот адрес одноразовую ссылку, пользователь по ней кликает и автоматически входит на ваш сайт / в приложение. При беспарольной аутентификации приложение считает, что в ваш ящик пришло письмо со ссылкой, если вы написали свой, а не чужой адрес.
Есть похожий метод, при котором вместо одноразовой ссылки по SMS отправляется код или одноразовый пароль. Но тогда придётся объединить ваше приложение с SMS-сервисом вроде twilio (и сервис не бесплатен). Код или одноразовый пароль тоже можно отправлять по почте.
И ещё один, менее (пока) популярный (и доступный только на устройствах Apple) метод беспарольной аутентификации: использовать Touch ID для аутентификации по отпечаткам пальцев. Подробнее о технологии.
Если вы пользуетесь Slack, то уже могли столкнуться с беспарольной аутентификацией.
Medium предоставляет доступ к своему сайту только по почте. Я недавно обнаружил, что Auth0, или Facebook AccountKit, — это отличный вариант для реализации беспарольной системы для вашего приложения.
Что может пойти не так?
Если кто-то получит доступ к пользовательским почтам, он получит и доступ к приложениям и сайтам. Но это не ваша головная боль — беспокоиться о безопасности почтовых аккаунтов пользователей. Кроме того, если кто-то получит доступ к чужой почте, то сможет перехватить аккаунты в приложениях с беспарольной аутентификацией, воспользовавшись функцией восстановления пароля. Но мы ничего не можем поделать с почтой наших пользователей. Пойдём дальше.
В чём преимущества?
Как часто вы пользуетесь ссылкой «забыли пароль» для сброса чёртового пароля, который так и не смогли вспомнить после нескольких неудачных попыток входа на сайт / в приложение? Все мы бываем в такой ситуации. Все пароли не упомнишь, особенно если вы заботитесь о безопасности и для каждого сайта делаете отдельный пароль (соблюдая все эти «должен состоять не менее чем из восьми символов, содержать хотя бы одну цифру, строчную букву и специальный символ»). От всего этого вас избавит беспарольная аутентификация. Знаю, вы думаете сейчас: «Я использую менеджер паролей, идиот». Уважаю. Но не забывайте, что подавляющее большинство пользователей не такие техногики, как вы. Это нужно учитывать.
Беспарольная аутентификация хороша не только для пользователей, но и для вас как разработчика. Вам не нужно реализовывать механизм восстановления паролей. Все в выигрыше.
Если вы думаете, что какие-то пользователи предпочтут старомодные логин/пароль, то предоставьте им оба варианта, чтобы они могли выбирать.
Сегодня беспарольная аутентификация быстро набирает популярность.
Единая точка входа (Single Sign On, SSO)
Обращали внимание, что, когда логинишься в браузере в каком-нибудь Google-сервисе, например Gmail, а потом идёшь на Youtube или иной Google-сервис, там не приходится логиниться? Ты автомагически получаешь доступ ко всем сервисам компании. Впечатляет, верно? Ведь хотя Gmail и Youtube — это сервисы Google, но всё же раздельные продукты. Как они аутентифицируют пользователя во всех продуктах после единственного входа?
Этот метод называется единой точкой входа (Single Sign On, SSO).
Реализовать его можно по-разному. Например, использовать центральный сервис для оркестрации единого входа между несколькими клиентами. В случае с Google этот сервис называется Google Accounts. Когда пользователь логинится, Google Accounts создаёт куку, которая сохраняется за пользователем, когда тот ходит по принадлежащим компании сервисам. Как это работает:
Очень простое описание единой точки входа: пользователь входит один раз и получает доступ ко всем системам без необходимости входить в каждую из них. В этой процедуре используется три сущности, доверяющие другу прямо и косвенно. Пользователь вводит пароль (или аутентифицируется иначе) у поставщика идентификационной информации (identity provider, IDP), чтобы получить доступ к поставщику услуги (service provider (SP). Пользователь доверяет IDP, и SP доверяет IDP, так что SP может доверять пользователю.
Выглядит очень просто, но конкретные реализации бывают очень сложными. Подробнее об этом методе аутентификации.
Аутентификация в соцсетях
Уверен, эта картинка знакома всем:
Это часто называют аутентификацией в соцсетях (Social sign-in) или социальным логином (Social Login). Вы можете аутентифицировать пользователей по их аккаунтам в соцсетях. Тогда пользователям не придётся регистрироваться отдельно в вашем приложении.
Формально социальный логин — это не отдельный метод аутентификации. Это разновидность единой точки входа с упрощением процесса регистрации/входа пользователя в ваше приложение.
Лучшее из двух миров
Пользователи могут войти в ваше приложение одним кликом, если у них есть аккаунт в одной из соцсетей. Им не нужно помнить логины и пароли. Это сильно улучшает опыт использования вашего приложения. Вам как разработчику не нужно волноваться о безопасности пользовательских данных и думать о проверке адресов почты — они уже проверены соцсетями. Кроме того, в соцсетях уже есть механизмы восстановления пароля.
Как использовать
Как разработчик вы должны разбираться в работе этого метода аутентификации. Большинство соцсетей в качестве механизма аутентификации используют авторизацию через OAuth2 (некоторые используют OAuth1, например Twitter). Разберёмся, что такое OAuth. Соцсеть — это сервер ресурсов, ваше приложение — клиент, а пытающийся войти в ваше приложение пользователь — владелец ресурса. Ресурсом называется пользовательский профиль / информация для аутентификации. Когда пользователь хочет войти в ваше приложение, оно перенаправляет пользователя в соцсеть для аутентификации (обычно это всплывающее окно с URL’ом соцсети). После успешной аутентификации пользователь должен дать вашему приложению разрешение на доступ к своему профилю из соцсети. Затем соцсеть возвращает пользователя обратно в ваше приложение, но уже с токеном доступа. В следующий раз приложение возьмёт этот токен и запросит у соцсети информацию из пользовательского профиля. Так работает OAuth (ради простоты я опустил технические подробности).
Для реализации такого механизма вам может понадобиться зарегистрировать своё приложение в разных соцсетях. Вам дадут app_id и другие ключи для конфигурирования подключения к соцсетям. Также есть несколько популярных библиотек/пакетов (вроде Passport, Laravel Socialite и т. д.), которые помогут упростить процедуру и избавят от излишней возни.
Двухфакторная аутентификация (2FA)
Двухфакторная аутентификация (2FA) улучшает безопасность доступа за счёт использования двух методов (также называемых факторами) проверки личности пользователя. Это разновидность многофакторной аутентификации. Наверное, вам не приходило в голову, но в банкоматах вы проходите двухфакторную аутентификацию: на вашей банковской карте должна быть записана правильная информация, и в дополнение к этому вы вводите PIN. Если кто-то украдёт вашу карту, то без кода он не сможет ею воспользоваться. (Не факт! — Примеч. пер.) То есть в системе двухфакторной аутентификации пользователь получает доступ только после того, как предоставит несколько отдельных частей информации.
Другой знакомый пример — двухфакторная аутентификация Mail.Ru, Google, Facebook и т. д. Если включён этот метод входа, то сначала вам нужно ввести логин и пароль, а затем одноразовый пароль (код проверки), отправляемый по SMS. Если ваш обычный пароль был скомпрометирован, аккаунт останется защищённым, потому что на втором шаге входа злоумышленник не сможет ввести нужный код проверки.
Вместо одноразового пароля в качестве второго фактора могут использоваться отпечатки пальцев или снимок сетчатки.
При двухфакторной аутентификации пользователь должен предоставить два из трёх:
Большинство хакеров охотятся за паролями и PIN-кодами. Гораздо труднее получить доступ к генератору токенов или биологическим свойствам, поэтому сегодня двухфакторка обеспечивает высокую безопасность аккаунтов.
То есть это универсальное решение? Возможно, нет.
И всё же двухфакторка поможет усилить безопасность аутентификации в вашем приложении. Как реализовать? Возможно, стоит не велосипедить, а воспользоваться существующими решениями вроде Auth0 или Duo.
Аутентификация или авторизация?
Некоторые путают термины «аутентификация» и «авторизация». Это разные вещи.
Поздравляю, вы успешно дочитали длинную, нудную и скучную статью.
Что такое аутентификация
Создайте рассылку в конструкторе за 15 минут. Отправляйте до 1500 писем в месяц бесплатно.
Отправить рассылку
Аутентификация [1] — это процесс проверки подлинности чего-либо. Термин чаще всего используется в среде информационных технологий. Примером аутентификации может быть сравнение пароля, введенного пользователем, с паролем, который сохранен в базе данных сервера. Подобная проверка может быть как односторонней, так и взаимной — все зависит от способа защиты и политики безопасности сервиса.
Методы аутентификации
Методы аутентификации разделяются в зависимости от типа ресурса, структуры и тонкостей организации сети, удаленности объекта и технологии, которая используется в процессе распознавания. На основании степени конфиденциальности можно выделить несколько уровней аутентификации:
Классификация способов аутентификации
Все методы аутентификации можно разделить на одностороннюю (проверка осуществляется только одной стороной) и взаимную (в проверке данных принимают участие обе стороны). Также выделяют однофакторный и криптографический способ. Самым популярным примером применения однофакторных систем являются пароли. В зависимости от уровня организации и степени конфиденциальности данных, они могут быть многоразовыми (менее защищенный вариант) и одноразовыми.
Все способы аутентификации можно расположить по возрастанию их сложности.
Базовая аутентификация
При применении этого вида аутентификации логин пользователя и его пароль входят в состав веб-запроса. Любой перехватчик пакета информации без труда узнает засекреченные данные.
Данный способ не рекомендуется использовать даже в ситуациях, когда засекреченные данные не несут существенной информации ни для пользователя, ни для интернет-ресурса. Данное обстоятельство связано с тем, что большинство людей используют в сети один и тот же пароль для всех сервисов, которыми они пользуются. По данным Sophos (компания-производитель средств информационной безопасности), 41% интернет-пользователей применяют одни и те же данные для регистрации для различных платформах, будь то банковская страница или форум, посвященный их любимому хобби.
Дайджест-аутентификация
Вид аутентификации, который подразумевает передачу пользовательских паролей в хешированном состоянии. На первый взгляд может показаться, что уровень защиты в данном случае немногим отличается от базовой проверки. На деле это не так: к каждому паролю добавляется произвольная строка, состоящая из символов (хэш), которая генерируется отдельно на каждый новый веб-запрос. Постоянное обновление хеша не дает злоумышленнику возможности расшифровать пакет данных — каждое новое подключение образует другое значение пароля.
На основе данного метода аутентификации работает большинство интернет-браузеров (Mozilla, Google Chrome, Opera).
HTTPS
Этот протокол дает возможность шифрования не только логина и пароля пользователя, но и всех остальных данных, передаваемых между интернет-клиентом и сервером. Используется для ввода личной информации:
У протокола есть один существенный недостаток — он значительно замедляет скорость соединения.
Аутентификация с предъявлением цифрового сертификата
Такой способ подразумевает использование протоколов с запросом и соответствующим ответом на него. Страница аутентификации направляет к пользователю определенный набор символов («адрес»). Ответом является запрос сервера, который подписан при помощи персонального ключа. Аутентификация [2] по открытому ключу применяется в качестве защитного механизма в следующих протоколах:
Аутентификация с использованием Cookies
Куки — небольшой массив данных, который отправляется интернет-сервером и хранится на ПК пользователя. Браузер при каждой попытке подключения к данному ресурсу посылает Cookies как одну из составных частей HTTP-запроса. Данная технология, помимо аутентификации, используется для:
Как средство аутентификации куки используются для систем безопасности чатов, форумов и различных интернет-игр. Cookies обладают низкой степенью защиты — если сессия плохо фильтруется, то похитить их не составляет труда. Поэтому применяется дополнительная привязка по IP-адресу, с которого пользователь вошел в систему.
Децентрализованная аутентификация
Выделяют несколько основных протоколов, работающих по принципу децентрализованной аутентификации:
Отслеживание процесса аутентификации пользователем
Безопасность пользовательских данных во многом зависит от поведения самого пользователя. Многие веб-ресурсы отслеживают подозрительную активность и уведомляют об этом владельца учетной записи. К примеру, Google фиксирует IP-адреса, с которых осуществлялся вход в систему, логирует процесс авторизации и предоставляет пользователю произвести следующие настройки:
Другой пример — компания IBM. Включив функцию аудита сеансов пользователя, вы получаете доступ к следующей информации:
Многие веб-сервисы позволяют отслеживать процесс аутентификации при помощи какого-то одного значения, например, IP-адреса (необъективно, если у вас динамический IP).
Многофакторная аутентификация
Многофакторная аутентификация подразумевает предъявления более чем одного «доказательства» способа аутентификации для доступа к данным. Такими «доказательствами» могут быть:
Одной из разновидностей многофакторной аутентификации является двухфакторная (также называется двухэтапной или двойной). Такой способ подразумевает под собой проверку данных пользователя на основании двух отличных друг от друга компонентов.
Примером двухэтапной аутентификации являются сервисы от Google и Microsoft. При попытке авторизации с нового устройства, помимо логина и пароля, необходимо также ввести код, состоящий из шести (Google) или восьми (Microsoft) знаков. Получить его можно одним из перечисленных способов:
Выбрать способ подтверждения можно в личном кабинете вашей учетной записи.
Основными преимуществами двойной аутентификации является удобство (смартфон всегда под рукой) и безопасность (постоянное изменение кода подтверждения). Данный метод также имеет определенные недостатки. Проблемы с мобильной сетью могут стать помехой для получения кода подтверждения, а само смс-сообщение может быть перехвачено злоумышленниками. Существует также некоторая задержка при получении SMS — она связана с процедурой проверки подлинности.
Двухфакторная аутентификация используется сервисами Facebook, Web Money, Yandex, Microsoft, Google и другими. Все они используют свои собственные программы-аутентификаторы, каждая из которых подчиняется определенным стандартам.
Ошибки аутентификации при подключении к беспроводным сетям
Подключаясь к беспроводной сети, пользователь также проходит через процесс аутентификации. Существует несколько способов проверки подлинности такого типа. Они зависят от настроек роутера, количества абонентов, вида беспроводной сети (домашняя, общественная, корпоративная). Чаще всего используется тип шифрования WPA-PSKWPA2-PSK2 mixed. Он является достаточно защищенным и подходит для применения в различных видах сетей. Для большей безопасности многие частные организации используют шифрование, где каждый пользователь имеет индивидуальный пароль, привязанный к ПК.
Ошибки аутентификации чаще всего возникает при несоответствии вида шифрования и набранной парольной фразы. Пути решения проблемы будут отличаться для пользователей ПК и владельцев мобильных телефонов.
Как убрать ошибки аутентификации на компьютере
Если после введения ключевой фразы вы получаете уведомление об ошибке аутентификации, то в первую очередь вам необходимо проверить следующее:
Как узнать пароль от Wi-Fi?
Если вы забыли свою парольную фразу, то узнать ее можно в настройках роутера. Для этого подключитесь к нему при помощи кабеля и откройте любой интернет-браузер. Напишите IP маршрутизатора в адресной строке. Посмотреть его можно в инструкции или на корпусе роутера. Еще один способ узнать IP-адрес — использовать командную строку. Для этого используйте комбинацию Win+R и в появившемся окне введите команду «CMD». Запустится командная строка, где вам необходимо будет ввести «ipconfig». Строка «Основной шлюз» является требуемым IP-адресом.
Введите IP-адрес в адресной строке браузера. В появившемся окне введите логин и пароль для входа (по умолчанию admin и admin соответственно). В меню выберите пункт «Расширенные настройки» и перейдите в подраздел «Wi-Fi». Найдите параметры безопасности — именно здесь можно обнаружить тип шифрования, название сети и пароль.
Пароль введен правильно, но войти в сеть не удается
Аутентификация может не состояться при сбое самого роутера. Решается простой перезагрузкой девайса. В таких ситуациях также рекомендуется проверить канал роутера. Для этого в настройках WiFi перейдите в раздел «Основные настройки», а там — в подпункт «Канал». Желательно установить значение «Автоматически».
Если и это не помогло, то необходимо проверить Wi-Fi-адаптер компьютера. Проверьте наличие и правильность работы драйверов в вашем диспетчере устройств. Перейдите во вкладку «сетевые адаптеры» и найдите свой Wi-Fi модуль. Если рядом с устройством есть восклицательный знак, значит его работа некорректна — отсутствуют или не работают драйвера. Переустановите их, и проблема с аутентификацией должна решиться.
Проблемы с аутентификацией на мобильном устройстве
Процесс аутентификации на мобильном девайсе происходит следующим образом:
Что значит уведомление «Ошибка аутентификации»? Данное сообщение показывает, что проблема кроется в неправильно введенном пароле или параметрах безопасности роутера. Неработающий Wi-Fi после уведомления «Сохранено» свидетельствует о неполадках самой беспроводной сети.
Как исправить?
Прежде чем изменять параметры роутера, убедитесь, что пароль введен правильно, у вас не включен Caps Lock или кириллица/латынь. Только после этого обращайтесь к настройкам Wi-Fi:
Еще один вариант, который может вам помочь — это специальное приложение для устройств Android — Wi-Fi Fixer (доступен для скачивания в Google Play). Оно автоматически исправляет ошибки беспроводной сети и позволяет вам подключиться к роутеру при ошибке аутентификации.