Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Тип протокола аутентификации
Type of authentication protocol
В компьютерной безопасности аутентификация по схеме «вызов-ответ» — это семейство протоколов, в котором одна сторона предъявляет запрос («вызов»), а другая сторона должна предоставить верный ответ («ответ») для прохождения аутентификации. Самым простым примером протокола «вызов-ответ» является аутентификация по паролю, где вызов заключается в запросе пароля, а верным ответом является правильный пароль. Злоумышленник, способный перехватить процесс аутентификации по паролю, может затем аутентифицироваться, повторно используя перехваченный пароль. Одним из решений является использование нескольких паролей, каждый из которых помечен идентификатором. Проверяющая сторона может предъявить идентификатор, а сторона, проходящая аутентификацию, должна ответить правильным паролем для этого идентификатора. Если предположить, что пароли выбираются независимо друг от друга, злоумышленник, перехвативший одну пару сообщений «вызов-ответ», не получит никакой информации, которая могла бы помочь ему при другом вызове в другое время. Например, когда другие методы защиты связи недоступны, вооруженные силы США используют цифровой шифр AKAC 1553 TRIAD для аутентификации и шифрования некоторых сообщений. TRIAD включает в себя список трехбуквенных кодов вызова, которые проверяющая сторона должна выбирать случайным образом, и случайные трехбуквенные ответы на них. Для повышения безопасности каждый набор кодов действителен только в течение определенного периода времени, обычно 24 часов. Более интересная техника аутентификации по схеме «вызов-ответ» работает следующим образом. Предположим, Боб контролирует доступ к какому-то ресурсу. Алиса пытается получить доступ. Боб выдает вызов, например, «52w72y». Алиса должна ответить строкой символов, которая «подходит» к вызову Боба. Соответствие определяется алгоритмом, согласованным Бобом и Алисой. (Правильный ответ может быть таким простым, как «63x83z», при этом алгоритм изменяет каждый символ вызова, используя шифр Цезаря. В реальном мире алгоритм был бы гораздо сложнее.) Боб каждый раз выдает новый вызов, и, следовательно, знание предыдущего правильного ответа (даже если он не «скрыт» средствами связи, используемыми между Алисой и Бобом) не имеет никакой ценности.
In computer security, challenge response authentication is a family of protocols in which one party presents a question ("challenge") and another party must provide a valid answer ("response") to be authenticated. The simplest example of a challenge response protocol is password authentication, where the challenge is asking for the password and the valid response is the correct password. An adversary who can eavesdrop on a password authentication can then authenticate itself by reusing the intercepted password. One solution is to issue multiple passwords, each of them marked with an identifier. The verifier can then present an identifier, and the prover must respond with the correct password for that identifier. Assuming that the passwords are chosen independently, an adversary who intercepts one challenge response message pair has no clues to help with a different challenge at a different time. For example, when other communications security methods are unavailable, the U. S. military uses the AKAC 1553 TRIAD numeral cipher to authenticate and encrypt some communications. TRIAD includes a list of three letter challenge codes, which the verifier is supposed to choose randomly from, and random three letter responses to them. For added security, each set of codes is only valid for a particular time period which is ordinarily 24 hours. A more interesting challenge response technique works as follows. Say Bob is controlling access to some resource. Alice comes along seeking entry. Bob issues a challenge, perhaps "52w72y". Alice must respond with the one string of characters which "fits" the challenge Bob issued. The "fit" is determined by an algorithm agreed upon by Bob and Alice. (The correct response might be as simple as "63x83z", with the algorithm changing each character of the challenge using a Caesar cipher. In the real world, the algorithm would be much more complex.) Bob issues a different challenge each time, and thus knowing a previous correct response (even if it is not "hidden" by the means of communication used between Alice and Bob) is of no use.
Прочие некриптографические протоколы
Протоколы «вызов-ответ» также используются для подтверждения чего-либо, кроме знания секретного значения. Например, CAPTCHA является разновидностью теста Тьюринга, предназначенной для определения, является ли пользователь веб- или мобильного приложения человеком. В первых CAPTCHA задачей, представленной пользователю, было искаженное изображение текста, а пользователю предлагалось ввести этот текст. Искажение было разработано для затруднения автоматического оптического распознавания символов (OCR) и предотвращения возможности для компьютерной программы выдать себя за человека.
Challenge response protocols are also used to assert things other than knowledge of a secret value. CAPTCHAs, for example, are a variant on the Turing test, meant to determine whether a viewer of a Web or mobile application is a real person. In early CAPTCHAs, the challenge sent to the viewer was a distorted image of some text, and the viewer responded by typing in that text. The distortion was designed to make automated optical character recognition (OCR) difficult and prevent a computer program from passing as a human.
Криптографические методы
Некриптографическая аутентификация была в целом достаточной в эпоху до появления Интернета, когда пользователь мог быть уверен, что система, запрашивающая пароль, действительно является той системой, к которой он пытается получить доступ, и что никто, вероятно, не перехватывает канал связи для наблюдения за вводом пароля. Для решения проблемы незащищенного канала необходим более сложный подход. Многие криптографические решения включают двустороннюю аутентификацию, при которой и пользователь, и система должны убедить друг друга в знании общего секрета (пароля), при этом сам секрет никогда не передается в открытом виде по каналу связи, где могут находиться злоумышленники. Один из способов реализации этого – использование пароля в качестве ключа шифрования для передачи случайно сгенерированной информации в качестве запроса (challenge), после чего другая сторона должна вернуть в качестве ответа аналогично зашифрованное значение, являющееся предопределенной функцией исходного запроса, тем самым доказывая свою способность расшифровать запрос. Например, в Kerberos запрос представляет собой зашифрованное целое число N, а ответ – зашифрованное целое число N + 1, что доказывает способность другой стороны расшифровать целое число N. Хеш-функция также может быть применена к паролю и случайному значению запроса для создания ответа. Другой вариант использует вероятностную модель для генерации рандомизированных запросов, обусловленных входными данными модели. Такие зашифрованные или хешированные обмены не раскрывают пароль непосредственно перехватчику. Однако они могут предоставить достаточно информации для того, чтобы перехватчик смог вывести пароль, используя атаку по словарю или метод перебора. Использование информации, генерируемой случайным образом при каждом обмене (и когда ответ отличается от запроса), предотвращает возможность атаки повторного воспроизведения, когда злоумышленник просто записывает обмененные данные и повторно передает их позже, чтобы обмануть одну из сторон, заставив ее поверить в аутентификацию новой попытки подключения. Протоколы аутентификации обычно используют криптографический одноразовый номер (nonce) в качестве запроса, чтобы гарантировать уникальность каждой последовательности запрос-ответ. Это защищает от перехвата с последующим повторным воспроизведением. Если реализация истинного nonce непрактична, сильный криптографически безопасный генератор псевдослучайных чисел и криптографическая хеш-функция могут генерировать запросы, которые крайне маловероятно встретятся более одного раза. Иногда важно не использовать временные nonce, поскольку они могут ослабить серверы в разных часовых поясах и серверы с неточными часами. Также важно использовать временные nonce и синхронизированные часы, если приложение уязвимо для атаки с задержкой сообщения. Эта атака заключается в копировании злоумышленником передачи, блокируя ее доставку до места назначения, что позволяет ему воспроизвести захваченную передачу с выбранной им задержкой. Это легко осуществить по беспроводным каналам. Временной nonce может быть использован для ограничения атакующего в повторной отправке сообщения, но с ограничением по времени истечения срока действия, возможно, менее одной секунды, что, вероятно, не повлияет на работу приложения и, следовательно, смягчит атаку. Взаимная аутентификация выполняется с использованием рукопожатия запрос-ответ в обоих направлениях: сервер убеждается, что клиент знает секрет, а клиент убеждается, что сервер знает секрет, что защищает от подмены реального сервера злоумышленником. Аутентификация запрос-ответ может помочь решить проблему обмена ключами сеанса для шифрования. Используя функцию вывода ключа, значение запроса и секрет могут быть объединены для генерации непредсказуемого ключа шифрования сеанса. Это особенно эффективно против атаки «человек посередине», поскольку злоумышленник не сможет вывести ключ сеанса из запроса, не зная секрета, и, следовательно, не сможет расшифровать поток данных.
Non cryptographic authentication was generally adequate in the days before the Internet, when the user could be sure that the system asking for the password was really the system they were trying to access, and that nobody was likely to be eavesdropping on the communication channel to observe the password being entered. To address the insecure channel problem, a more sophisticated approach is necessary. Many cryptographic solutions involve two way authentication, where both the user and the system must each convince the other that they know the shared secret (the password), without this secret ever being transmitted in the clear over the communication channel, where eavesdroppers might be lurking. One way this is done involves using the password as the encryption key to transmit some randomly generated information as the challenge, whereupon the other end must return as its response a similarly encrypted value which is some predetermined function of the originally offered information, thus proving that it was able to decrypt the challenge. For instance, in Kerberos, the challenge is an encrypted integer N, while the response is the encrypted integer N + 1, proving that the other end was able to decrypt the integer N. A hash function can also be applied to a password and a random challenge value to create a response value. Another variation uses a probabilistic model to provide randomized challenges conditioned on model input. Such encrypted or hashed exchanges do not directly reveal the password to an eavesdropper. However, they may supply enough information to allow an eavesdropper to deduce what the password is, using a dictionary attack or brute force attack. The use of information which is randomly generated on each exchange (and where the response is different from the challenge) guards against the possibility of a replay attack, where a malicious intermediary simply records the exchanged data and retransmits it at a later time to fool one end into thinking it has authenticated a new connection attempt from the other. Authentication protocols usually employ a cryptographic nonce as the challenge to ensure that every challenge response sequence is unique. This protects against Eavesdropping with a subsequent replay attack. If it is impractical to implement a true nonce, a strong cryptographically secure pseudorandom number generator and cryptographic hash function can generate challenges that are highly unlikely to occur more than once. It is sometimes important not to use time based nonces, as these can weaken servers in different time zones and servers with inaccurate clocks. It can also be important to use time based nonces and synchronized clocks if the application is vulnerable to a delayed message attack. This attack occurs where an attacker copies a transmission whilst blocking it from reaching the destination, allowing them to replay the captured transmission after a delay of their choosing. This is easily accomplished on wireless channels. The time based nonce can be used to limit the attacker to resending the message but restricted by an expiry time of perhaps less than one second, likely having no effect upon the application and so mitigating the attack. Mutual authentication is performed using a challenge response handshake in both directions; the server ensures that the client knows the secret, and the client also ensures that the server knows the secret, which protects against a rogue server impersonating the real server. Challenge response authentication can help solve the problem of exchanging session keys for encryption. Using a key derivation function, the challenge value and the secret may be combined to generate an unpredictable encryption key for the session. This is particularly effective against a man in the middle attack, because the attacker will not be able to derive the session key from the challenge without knowing the secret, and therefore will not be able to decrypt the data stream.
Хранение паролей
Чтобы избежать хранения паролей, некоторые операционные системы (например, Unix-подобные) хранят хеш пароля, а не сам пароль. При аутентификации системе необходимо лишь проверить, совпадает ли хеш введенного пароля с хешем, хранящимся в базе данных паролей. Это затрудняет получение паролей злоумышленником, поскольку сам пароль не хранится, и крайне сложно подобрать пароль, соответствующий заданному хешу. Однако это создает проблему для многих (но не всех) алгоритмов "вызов-ответ", которым требуется общий секрет как у клиента, так и у сервера. Поскольку сам пароль не хранится, алгоритм "вызов-ответ" обычно вынужден использовать хеш пароля в качестве секрета вместо самого пароля. В этом случае злоумышленник может использовать непосредственно хеш, а не пароль, что делает сохраненные хеши столь же уязвимыми, как и сами пароли. SCRAM – это алгоритм "вызов-ответ", который решает эту проблему.
To avoid storage of passwords, some operating systems (e. g. Unix type) store a hash of the password rather than storing the password itself. During authentication, the system need only verify that the hash of the password entered matches the hash stored in the password database. This makes it more difficult for an intruder to get the passwords, since the password itself is not stored, and it is very difficult to determine a password that matches a given hash. However, this presents a problem for many (but not all) challenge response algorithms, which require both the client and the server to have a shared secret. Since the password itself is not stored, a challenge response algorithm will usually have to use the hash of the password as the secret instead of the password itself. In this case, an intruder can use the actual hash, rather than the password, which makes the stored hashes just as sensitive as the actual passwords. SCRAM is a challenge response algorithm that avoids this problem.