Аутентификация запрос – ответ - Википедия - Challenge–response authentication

В компьютерная безопасность, проверка подлинности запрос – ответ - это семейство протоколов, в которых одна сторона представляет вопрос («вызов»), а другая сторона должна предоставить действительный ответ («ответ»), чтобы быть аутентифицированный.[1]

Простейший пример протокола "вызов – ответ": пароль аутентификация, при которой проблема запрашивает пароль, а действительный ответ - правильный пароль.

Очевидно, что злоумышленник, который может прослушать аутентификацию по паролю, может затем аутентифицировать себя таким же образом. Одно из решений - выдать несколько паролей, каждый из которых помечен идентификатором. Проверяющий может запросить любой из паролей, и проверяющий должен иметь правильный пароль для этого идентификатора. Если предположить, что пароли выбираются независимо, злоумышленник, который перехватывает одну пару сообщений «вызов – ответ», не имеет никаких ключей, чтобы помочь с другим вызовом в разное время.

Например, когда другие безопасность связи методы недоступны, НАС. военные используют AKAC-1553 Цифровой шифр TRIAD для аутентификации и шифрования некоторых сообщений. TRIAD включает в себя список трехбуквенных кодов вызова, которые проверяющий должен выбирать случайным образом, и случайные трехбуквенные ответы на них. Для дополнительной безопасности каждый набор кодов действителен только в течение определенного периода времени, который обычно составляет 24 часа.

Более интересный метод «вызов – ответ» работает следующим образом. Сказать, Боб контролирует доступ к какому-либо ресурсу. Алиса приходит в поисках входа. Боб бросает вызов, например "52w72y". Алиса должна ответить одной строкой символов, которая "соответствует" вызову, брошенному Бобом. «Подгонка» определяется алгоритмом, «известным» Бобу и Алисе. (Правильный ответ может быть таким же простым, как «63x83z» (каждый символ ответа на один больше, чем символ вызова), но в реальном мире «правила» будут намного сложнее.) Боб каждый раз бросает новый вызов, и, таким образом, знание предыдущего правильного ответа (даже если он не «скрыт» средствами связи, используемыми между Алисой и Бобом) бесполезно.

Другие некриптографические протоколы

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

Криптографические методы

Некриптографическая аутентификация, как правило, была адекватной в дни до Интернет, когда пользователь мог быть уверен, что система, запрашивающая пароль, действительно была системой, к которой он пытался получить доступ, и что никто не мог подслушивать канал связи наблюдать за вводимым паролем. Чтобы решить проблему небезопасного канала, необходим более сложный подход. Многие криптографические решения включают двусторонняя аутентификация, где и пользователь, и система должны убедить друг друга, что они знают поделился секретом (пароль) без передачи этого секрета в ясном по каналу связи, где подслушивающие может скрываться.

Один из способов сделать это - использовать пароль в качестве шифрование ключ для передачи некоторой случайно сгенерированной информации в качестве испытание, после чего другой конец должен вернуться в качестве своего отклик аналогичным образом зашифрованное значение, которое является некоторой предопределенной функцией первоначально предложенной информации, тем самым доказывая, что оно смогло расшифровать вызов. Например, в Kerberos, вызов - это зашифрованное целое число N, а ответ - зашифрованное целое число N + 1, доказывая, что другой конец смог расшифровать целое число N. В других вариантах хеш-функция работает с паролем и случайным значением запроса для создания значения ответа.

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

Протоколы аутентификации обычно используют криптографический одноразовый номер как задача обеспечить уникальность каждой последовательности запрос-ответ. Это защищает от атака "человек посередине" и последующие повторная атака. Если реализовать истинный одноразовый номер нецелесообразно, сильное криптографически безопасный генератор псевдослучайных чисел и криптографическая хеш-функция могут создавать проблемы, которые вряд ли возникнут более одного раза. Иногда важно не использовать временные одноразовые номера, так как они могут ослабить серверы в разных часовых поясах и серверы с неточными часами. Также может быть важно использовать временные одноразовые номера и синхронизированные часы, если приложение уязвимо для атаки с отложенным сообщением. Эта атака происходит, когда злоумышленник копирует передачу, блокируя ее достижение адресатом, что позволяет им воспроизвести захваченную передачу после задержки по своему выбору. Это легко сделать по беспроводным каналам. Временной одноразовый номер может использоваться, чтобы ограничить злоумышленника повторной отправкой сообщения, но ограничен временем истечения, возможно, менее одной секунды, что, вероятно, не окажет влияния на приложение и, таким образом, уменьшит атаку.

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

Аутентификация запрос – ответ может помочь решить проблему обмена сеансовыми ключами для шифрования. Используя функция деривации ключа, значение запроса и секрет могут быть объединены для генерации непредсказуемого ключа шифрования для сеанса. Это особенно эффективно против атаки «злоумышленник посередине», поскольку злоумышленник не сможет получить сеансовый ключ из вызова, не зная секрета, и, следовательно, не сможет расшифровать поток данных.

Простой пример последовательности взаимной аутентификации

  • Сервер отправляет уникальное значение запроса sc клиенту
  • Клиент отправляет уникальное значение запроса cc к серверу
  • Сервер вычисляет SR = hash (cc + secret) и отправляет клиенту
  • Клиент вычисляет cr = hash (sc + secret) и отправляет на сервер
  • Сервер вычисляет ожидаемое значение cr и гарантирует, что клиент ответил правильно
  • Клиент рассчитывает ожидаемую стоимость SR и гарантирует, что сервер ответил правильно

куда

  • sc это вызов, созданный сервером
  • cc это вызов, созданный клиентом
  • cr это ответ клиента
  • SR это ответ сервера

Хранение паролей

Чтобы избежать хранения паролей, некоторые операционные системы (например, Unix -type) сохранить хеш пароля вместо того, чтобы хранить сам пароль. Во время аутентификации системе необходимо только убедиться, что хэш введенного пароля совпадает с хешем, хранящимся в базе данных паролей. Это затрудняет получение злоумышленником паролей, поскольку сам пароль не сохраняется, и очень сложно определить пароль, соответствующий заданному хешу. Однако это представляет проблему для многих (но не для всех) алгоритмов запрос-ответ, которые требуют, чтобы и клиент, и сервер имели общий секрет. Поскольку сам пароль не сохраняется, алгоритм запроса-ответа обычно должен использовать в качестве секрета хэш пароля, а не сам пароль. В этом случае злоумышленник может использовать фактический хэш, а не пароль, что делает хранимые хэши столь же чувствительными, как и фактические пароли. КАТИСЬ алгоритм запрос-ответ, позволяющий избежать этой проблемы.

Примеры

Примеры более сложных задач-ответов алгоритмы находятся:

  • Подтверждение пароля с нулевым разглашением и ключевые системы соглашений (такие как Безопасный удаленный пароль (SRP) )
  • Протокол аутентификации Challenge-Handshake (CHAP) (RFC  1994 )
  • CRAM-MD5, OCRA: алгоритм запроса-ответа OATH (RFC  6287 )
  • Механизм аутентификации с соленым запросом и ответом (SCRAM) (RFC  5802 )
  • ssh система "вызов-ответ", основанная на ЮАР [1].

Некоторые считают CAPTCHA своего рода аутентификация типа "вызов-ответ", которая блокирует спам-боты.[2]

Смотрите также

Рекомендации

  1. ^ Хенк С.А. ван Тилборг; Сушил Джаджодиа (8 июля 2014 г.). Энциклопедия криптографии и безопасности. Springer Science & Business Media. ISBN  978-1-4419-5906-5.
  2. ^ «Аутентификация запрос-ответ».