Из Википедии, бесплатной энциклопедии
  (Перенаправлено из ответа на вызов )
Перейти к навигации Перейти к поиску

В компьютерной безопасности , аутентификации запрос-ответ представляет собой семейство протоколов , в которых одна сторона представляет вопрос ( «вызов») , а другая сторона должна обеспечить правильный ответ ( «ответ») , чтобы быть аутентификацией . [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 ) хранят хэш пароля.вместо того, чтобы хранить сам пароль. Во время аутентификации системе необходимо только убедиться, что хэш введенного пароля совпадает с хешем, хранящимся в базе данных паролей. Это затрудняет получение злоумышленником паролей, поскольку сам пароль не сохраняется, и очень сложно определить пароль, соответствующий заданному хешу. Однако это представляет проблему для многих (но не для всех) алгоритмов запрос-ответ, которые требуют, чтобы и клиент, и сервер имели общий секрет. Поскольку сам пароль не сохраняется, алгоритм запроса-ответа обычно должен использовать в качестве секрета хэш пароля, а не сам пароль. В этом случае злоумышленник может использовать фактический хэш, а не пароль, что делает хранимые хэши столь же чувствительными, как и фактические пароли.SCRAM - это алгоритм запроса -ответа, который позволяет избежать этой проблемы.

Примеры [ править ]

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

  • Системы подтверждения пароля с нулевым разглашением и системы согласования ключей (например, Secure Remote Password (SRP) )
  • Протокол аутентификации вызов-рукопожатие (CHAP) ( RFC  1994 )
  • CRAM-MD5 , OCRA: алгоритм запроса-ответа OATH ( RFC 6287 ) 
  • Механизм аутентификации с соленым запросом и ответом (SCRAM) ( RFC 5802 ) 
  • Система запрос-ответ ssh основана на RSA [1] .

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

См. Также [ править ]

  • Протокол аутентификации вызов-рукопожатие
  • Фильтрация спама типа "вызов – ответ"
  • CRAM-MD5
  • Криптографическая хеш-функция
  • Криптографический одноразовый номер
  • Kerberos
  • Протокол Отуэя – Риса
  • Протокол Нидхема – Шредера
  • Протокол Wide Mouth Frog
  • Соглашение о ключах с аутентификацией паролем
  • Механизм аутентификации с соленым запросом и ответом
  • SQRL
  • Протокол ограничения расстояния
  • Отражение атаки
  • Воспроизвести атаку
  • Атака "человек посередине"
  • WebAuthn

Ссылки [ править ]

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