Схема фейге фиата шамира
Доказательство нулевого знания было предложено С. Голдвассером, С. Микали и К. Рэкоффом в начале 1980-х годов. Это означает, что проверяющий может убедить верификатора в том, что определенный вывод верен, без предоставления верификатору какой-либо полезной информации. Нулевое доказательство - это, по сути, соглашение с участием двух или более сторон, то есть ряд шагов, которые две или более стороны должны предпринять для выполнения задачи. Доказательство с нулевым знанием должно включать в себя два аспекта: один - это проверяющий P, а другой - верификатор V. Проверяющий пытается доказать верификатору, что утверждение является правильным, или проверяющий обладает некоторыми знаниями, но не раскрывает какую-либо полезную информацию для верификатора. Доказательства с нулевым знанием в настоящее время широко используются в криптографии, особенно в протоколах аутентификации и цифровых подписях.
Например: A хочет доказать B, что он владеет ключом от комнаты. Предположим, что комната может быть разблокирована только ключом и не может быть открыта любым другим способом. В настоящее время есть два метода: (A) A показывает ключ к B, и B использует этот ключ, чтобы отпереть замок комнаты, доказывая тем самым, что у A есть правильный ключ от комнаты. (B) B определяет, что в комнате есть объект, A открывает дверь комнаты ключом, которым он владеет, а затем вынимает объект и представляет его B, чтобы доказать, что он действительно владеет ключом от комнаты. Этот последний метод является доказательством с нулевым знанием. Преимущество состоит в том, что в течение всего процесса проверки B вообще не видит ключ, что позволяет избежать утечки ключа.
Feige-Fiat-Shamir Аутентификация с нулевым знанием
С практической точки зрения, для обеспечения безопасности идентификации пользователя, протокол идентификации должен соответствовать, как минимум, следующим условиям:
- Идентификатор A может доказать верификатору B, что он действительно A (A доказывает B, что у него есть закрытый ключ A).
- После того, как Идентификатор A подтверждает свою личность для Верификатора B, Верификатор B не получает никакой полезной информации, и B не может подражать A, чтобы доказать третьей стороне, что он является A.
В 1986 году Фейге, Фиат и Шамир разработали протокол идентификации с нулевым знанием, основанный на идее нулевого знания. Это знаменитый протокол идентификации с нулевым знанием Фейге-Фиат-Шамир. Цель этого протокола состоит в том, что проверяющий P доказывает свою личность (закрытый ключ) верификатору V, и V не может выдать себя за P впоследствии.
Начнем с упрощенной версии протокола идентификации нулевого знания Фейге-Фиат-Шамира:
Перед выдачей закрытого ключа арбитр случайным образом выбирает модуль n, где n - произведение двух больших простых чисел. На практике n должно быть длиной не менее 512 бит, максимально близко к 1024 битам. Значение n может быть разделено между группой пруверов.
Доказательство с нулевым разглашением (знанием) (Zero-knowledge proof) представляет собой криптографический протокол, позволяющий одной из сторон (проверяющему, стороне B) убедиться в том, что вторая сторона (доказывающая, сторона A) знает какое-либо утверждение, при этом проверяющий не получает никакой другой информации о самом утверждении. Другими словами, А доказывает знание секрета, не разглашая самого секрета.
Использовать доказательства с нулевым знанием для доказательства идентичности было впервые предложено Уриелем Файгом, Амосом Фиатом и Ади Шамиром. В данном случае пользователь доказывает знание своего закрытого ключа, который в данном случае выступает в роли секрета, не раскрывая его. Таким образом, он доказывает свою идентичность.
Доказательство с нулевым разглашением обладает тремя основными свойствами:
1. Полнота. Если доказывающий знает утверждение, то он сможет убедить в этом проверяющего.
2. Корректность. Если доказывающий не знает утверждение, то он может обмануть проверяющего только с пренебрежимо малой вероятности.
3. Нулевое разглашение. Проверяющий, даже если он ведет себя нечестно, не узнает ничего кроме самого факта, что утверждение известно доказывающему.
Пещера нулевого знания
Хорошо поясняют доказательство с нулевым знанием Жан-Жак Кискатер и Луи Гиллу с помощью истории о пещере Али-Бабы (см. рисунок). Чтобы пройти сквозь пещеру, необходимо открыть дверь между C и D. Дверь открывается только тогда, когда кто-нибудь произносит волшебные слова. Пусть Пегги знает волшебные слова и хочет доказать это Виктору, не раскрывая самих слов.
Вот как происходит доказательство с нулевым знанием в данном случае:
1. Виктор находится в точке А.
2. Пегги проходит весь путь по пещере до двери либо по проходу C, либо по проходу D. Виктор не видит в какую сторону пошла Пегги. После того, как Пегги исчезнет в пещере, Виктор переходит в точку В.
3. Виктор кричит Пегги, чтобы она вышла из пещеры либо из левого прохода, либо из правого прохода.
4. Пегги, при необходимости используя волшебные слова, чтобы отпереть дверь, выходит из пещеры из того прохода, из которого просил ее выйти Виктор.
5. Пегги и Виктор повторяют этапы 1-4 некоторое количество раз.
В случае когда Пегги не знает секрета, то она не сможет обмануть Виктора, если этапы доказательства (аккредитации) повторяются несколько раз подряд. Так как она может выйти только из того прохода, в который она зашла, в каждом раунде протокола вероятность угадать, с какой стороны Виктор попросит ее выйти, составляет 50 %. Соответственно, ее вероятность обмануть Виктора также равна 50 %. Однако, вероятность обмануть его в двух раундах составит уже 25 %, а в n раундах у нее есть только один шанс из 2^n. Виктор может уверенно предположить, что если все n (n=10-20) раундов доказательства Пегги правильны, то она действительно знает тайные слова, открывающие дверь между точками С и D.
Если Виктор записывает все, что происходит на видеокамеру, то данная видеозапись не является доказательством для третьей стороны. Пегги и Виктор могли заранее договориться о том, откуда Виктор будет просить ее выйти. Тогда она будет каждый раз выходить из указанного Виктором места, не зная волшебных слов. С другой стороны, Виктор может подделать видеозапись, оставив в ней только удачные попытки Пегги, вырезав все остальное.
Следует отметить, что аналогия с пещерой не совсем верна. Так как для доказательства знания слов Пегги может просто входить с одной стороны, при этом Виктор видит в какую сторону она пошла, и выходить с другой. Однако, это протокол отлично описывает доказательство с нулевым знанием с математической точки зрения.
Протокол Фиата-Шамира
Одним из наиболее известных протоколов идентификации личности с помощью доказательства с нулевым знанием является протокол, предложенный Амосом Фиатом и Ади Шамиром, стойкость которого основывается на сложности извлечения квадратного корня по модулю достаточно большого составного числа n, факторизация которого неизвестна.
Предварительно, перед самим доказательством доверенный центр T выбирает и публикует модуль достаточно большого числа n = p*q, разложить на множители которое трудно. При этом p, q – простые числа и держатся в секрете. Каждый пользователь A выбирает секретное s из интервала (1, n−1) взаимно простое с n. Затем вычисляется открытый ключ v = s^2 (mod n).
Полученное v регистрируется центром доверия в качестве открытого ключа пользователя A, а значение s является секретом A. Именно знание этого секрета s необходимо доказать A стороне В без его разглашение за t раундов. Каждая аккредитация состоит из следующих этапов:
1. А выбирает случайное r из интервала (1, n−1) и отсылает x = r^2 (mod n) стороне B.
2. B случайно выбирает бит e (0 или 1) и отсылает его A.
3. А вычисляет y = r*s^e (mod n) и отправляет его обратно к B.
4. Сторона B проверяет равенство y^2 ≡ x*v^e (mod n). Если оно верно, то происходит переход к следующему раунду протокола, иначе доказательство не принимается.
Выбор е из множества предполагает, что если сторона А действительно знает секрет, то она всегда сможет правильно ответить, вне зависимости от выбранного e. Допустим, что А хочет обмануть B, выбирает случайное r и отсылает x = r^2 / v, тогда если е=0, то А удачно возвращает B y = r, в случае же е=1, А не сможет правильно ответить, т.к. не знает s, а извлечь квадратный корень из v по модулю n достаточно сложно.
Вероятность того, что пользователь А не знает секрета s, но убеждает в обратном проверяющего B будет оцениваться вероятностью равной p = =2^(–t), где t – число аккредитаций. Для достижения высокой достоверности его выбирают достаточно большим (t = 20 − 40). Таким образом, B удостоверяется в знании А тогда и только тогда, когда все t раундов прошли успешно.
Для того чтобы этот протокол корректно выполнялся, сторона А никогда не должна повторно использовать значение x. Если бы А поступил таким образом, а B во время другого цикла отправил бы А на шаге 2 другой случайный бит r, то B бы имел оба ответа А. После этого B может вычислить значение s, и ему будет известен секретный ключ Алисы.
Заключение
Для таких реализаций, как интеллектуальные карточки, описанные протокол Фиата-Шамира не слишком подходит, так как обмены с внешним миром требуют времени, а хранение данных для каждой аккредитации может быстро исчерпать ограниченные возможности карточки. Поэтому Гиллу и Кискатр разработали алгоритм идентификации с нулевым знанием, больше подходящий для подобных приложений. Обмены между Пегги и Виктором, а также параллельные аккредитации в каждом обмене сведены к абсолютному минимуму: для каждого доказательства существует только один обмен, в котором — только одна аккредитация. Существует также схема Шнорра, которая является альтернативой схеме Гиллу-Кискатра и Фиата-Шамира. Если тема понравиться, то я напишу про них в следующем своем топике.
При установлении подлинности пароля претендент должен передать свой секрет ( пароль ) верификатору; это может привести к перехвату информации Евой. Кроме того, нечестный верификатор может показать пароль другим или использовать его, чтобы исполнить роль претендент а.
При установлении подлинности объекта методом вызова-ответа секрет претендент а не передают верификатору. Претендент применяет некоторую функцию для обработки вызова, которая передана верификатором, но при этом включает свой секрет. В некоторых методах "вызова-ответа" верификатор фактически знает секрет претендент а, при этом он может неправильно использоваться нечестной верификацие й. В других методах верификатор может извлечь некоторую информацию о секрете претендент а, выбирая заранее запланированное множество вызовов.
В установлении подлинности с нулевым разглашением претендент доказывает, что он знает секрет, не показывая его.
Протокол Фиата-Шамира
В протоколе Фиата-Шамира (Amos Fiat, Adi Shamir) третье лицо, которому доверяют (см. "Управление ключами" ), выбирает два больших простых числа p и q , чтобы вычислить значение n = p x q . Значение n объявляется общедоступным. Значения p и q сохраняются секретными. Алиса, претендент , выбирает секретное число s между 1 и n - 1 . Она вычисляет v = s 2 mod n . Она сохраняет s как свой секретный ключ и регистрирует v как свой общедоступный ключ вместе с третьим лицом. Проверка Алисы Бобом может быть сделана в четыре шага, как показано на рис. 4.13.
- Алиса- претендент выбирает случайное число r между 0 , и n - 1 ( r называется "обязательство"). Она затем вычисляет значение
x = r 2 mod n ( x называется "свидетельство").
Давайте рассмотрим этот тщательно продуманный и интересный протокол. Алиса может быть честна (знает значение s ) или нечестна (не знает значение s ). Если она честна, она проходит каждый раунд. Если нет - она может пройти раунд, правильно предсказывая значение вызова. При этом могут возникнуть две ситуации:
- Алиса предполагает, что значение c (выход) будет 1 (предсказание). Она вычисляет / \gamma" />
и передает x как свидетельство.- Если ее предположение правильно (оказалось, что c был равен 1), она передает y = r как ответ. Мы можем видеть, что она передаст результат, который соответствует тесту = x^<\gamma с>)" />
. - Если ее предположение неправильно (оказалось, что c , было 0), она не может найти значение y , которое соответствует тесту. Она, вероятно, выходит из игры или передаст значение, которое не соответствует ожидаемому результату теста, и Боб прервет процесс.
- Если ее предположение правильно (оказалось, что c был равен 1), она передает y = r как ответ. Мы можем видеть, что она передаст результат, который соответствует тесту = x^<\gamma с>)" />
.
Мы можем видеть, что нечестный претендент имеет 50-процентный шанс на введение в заблуждение верификатора, проводящего испытание (предсказывая значение вызова). Другими словами, Боб назначает вероятность 1/2 для каждого раунда испытания. Если процесс повторяется 20 раз, вероятность уменьшается до (1/2) 20 или 9,54 x 10 -7 . Другими словами, просто невероятно, что Алиса может правильно предсказать 20 раз.
Пример "пещера Аладдина". Чтобы показать логику вышеупомянутого протокола, Жан-Жак Кискатер (Quisquater) и Гиом Гийу (Gillou) изобрели пример "пещера Аладдина" ( рис. 4.14).
Предположим, что есть подземная пещера с дверью в конце, которая может быть открыта только с помощью волшебного слова. Алиса утверждает, что она знает это слово и что она может открыть дверь. Вначале Алиса и Боб стоят у входа (точка 1). Алиса входит в пещеру и достигает разветвления (точка 2). Боб, стоя у входа, не может видеть Алису. Теперь начинается игра.
- Алиса выбирает, куда идти: или направо, или налево. И говорит об этом Бобу (соответствует передаче свидетельства x ).
- После того как Алиса исчезает в пещере, Боб подходит к разветвлению (точка 2) и просит, чтобы Алиса вышла или справа, или слева. Это соответствует передаче вызова ( c ).
- Если Алиса знает волшебное слово (свой секретный ключ), она может выйти с запрошенной стороны. Ей, вероятно, придется использовать волшебное слово (если она находится на неправильной стороне), или она может выйти, не используя волшебное слово (если она - на правильной стороне). Однако если Алиса не знает волшебное слово, она может выйти только с правильной стороны, если она разгадала вызов Боба. С вероятностью 1/2 Алиса может убедить глупого Боба, что она знает волшебное слово. Это соответствует ответу ( y ).
- Игра повторяется много раз. Алиса победит, если она все время проходит испытания положительно. Вероятность, что она победит в игре, если она не знает волшебное слово, очень низка. Другими словами, P = (1/2) N , где P - вероятность победы, если она не знает волшебное слово.
N - количество раз повторения испытания.
Протокол Фейге-Фиата-Шамира
Протокол Фейге-Фиата-Шамира (Feige-Fiat-Shamir) подобен первому подходу за исключением того, что он использует вектор секретных ключей [s1, s2 . sk] , вектор общедоступных ключей , \gamma _ \dots \gamma _]" />
и векторы признаков ( c1,c2. ck) . Секретные ключи выбраны случайно, но они должны быть взаимно простыми с n . Общедоступные ключи выбраны так, что = (s_^)^ mod n" />
. На рис. 4.15 показаны три шага в процессе.
имеет то же значение, что и x :
Три шага составляют раунд; проверка повторяется несколько раз со значением индекса s, равным 0 или 1 (выбирается случайно). Претендент должен провести испытание в каждом раунде, который проверяется. Если претендент ошибается в одном раунде, процесс прерывается и подлинность не подтверждается.
Протокол Кискатера-Гийу
Протокол Кискатера (Quisquater) и Гийу (Gillou) расширяет протокол Фиата-Шамира , в котором может быть использовано меньшее число раундов , чтобы доказать полномочность претендент а. Третье лицо, которому доверяют (см. "Управление ключами" ), выбирает два больших простых числа p и q , чтобы вычислить значение n = p x q .
Сторона, которой доверяют, также выбирает показатель e , который является взаимно-простым с , где . Значения n и e объявляются общедоступными; значения p и q сохраняются секретными. Сторона, которой доверяют, выбирает два числа для каждого объекта: число , которое является общедоступным, и число s , которое является секретным. Однако в этом случае отношения между и s определяются уравнением
Равенство может быть доказано так, как показано ниже:
При установлении подлинности пароля претендент должен передать свой секрет ( пароль ) верификатору; это может привести к перехвату информации Евой. Кроме того, нечестный верификатор может показать пароль другим или использовать его, чтобы исполнить роль претендент а.
При установлении подлинности объекта методом вызова-ответа секрет претендент а не передают верификатору. Претендент применяет некоторую функцию для обработки вызова, которая передана верификатором, но при этом включает свой секрет. В некоторых методах "вызова-ответа" верификатор фактически знает секрет претендент а, при этом он может неправильно использоваться нечестной верификацие й. В других методах верификатор может извлечь некоторую информацию о секрете претендент а, выбирая заранее запланированное множество вызовов.
В установлении подлинности с нулевым разглашением претендент доказывает, что он знает секрет, не показывая его.
Протокол Фиата-Шамира
В протоколе Фиата-Шамира (Amos Fiat, Adi Shamir) третье лицо, которому доверяют (см. "Управление ключами" ), выбирает два больших простых числа p и q , чтобы вычислить значение n = p x q . Значение n объявляется общедоступным. Значения p и q сохраняются секретными. Алиса, претендент , выбирает секретное число s между 1 и n - 1 . Она вычисляет v = s 2 mod n . Она сохраняет s как свой секретный ключ и регистрирует v как свой общедоступный ключ вместе с третьим лицом. Проверка Алисы Бобом может быть сделана в четыре шага, как показано на рис. 4.13.
- Алиса- претендент выбирает случайное число r между 0 , и n - 1 ( r называется "обязательство"). Она затем вычисляет значение
x = r 2 mod n ( x называется "свидетельство").
Давайте рассмотрим этот тщательно продуманный и интересный протокол. Алиса может быть честна (знает значение s ) или нечестна (не знает значение s ). Если она честна, она проходит каждый раунд. Если нет - она может пройти раунд, правильно предсказывая значение вызова. При этом могут возникнуть две ситуации:
- Алиса предполагает, что значение c (выход) будет 1 (предсказание). Она вычисляет / \gamma" />
и передает x как свидетельство.- Если ее предположение правильно (оказалось, что c был равен 1), она передает y = r как ответ. Мы можем видеть, что она передаст результат, который соответствует тесту = x^<\gamma с>)" />
. - Если ее предположение неправильно (оказалось, что c , было 0), она не может найти значение y , которое соответствует тесту. Она, вероятно, выходит из игры или передаст значение, которое не соответствует ожидаемому результату теста, и Боб прервет процесс.
- Если ее предположение правильно (оказалось, что c был равен 1), она передает y = r как ответ. Мы можем видеть, что она передаст результат, который соответствует тесту = x^<\gamma с>)" />
.
Мы можем видеть, что нечестный претендент имеет 50-процентный шанс на введение в заблуждение верификатора, проводящего испытание (предсказывая значение вызова). Другими словами, Боб назначает вероятность 1/2 для каждого раунда испытания. Если процесс повторяется 20 раз, вероятность уменьшается до (1/2) 20 или 9,54 x 10 -7 . Другими словами, просто невероятно, что Алиса может правильно предсказать 20 раз.
Пример "пещера Аладдина". Чтобы показать логику вышеупомянутого протокола, Жан-Жак Кискатер (Quisquater) и Гиом Гийу (Gillou) изобрели пример "пещера Аладдина" ( рис. 4.14).
Предположим, что есть подземная пещера с дверью в конце, которая может быть открыта только с помощью волшебного слова. Алиса утверждает, что она знает это слово и что она может открыть дверь. Вначале Алиса и Боб стоят у входа (точка 1). Алиса входит в пещеру и достигает разветвления (точка 2). Боб, стоя у входа, не может видеть Алису. Теперь начинается игра.
- Алиса выбирает, куда идти: или направо, или налево. И говорит об этом Бобу (соответствует передаче свидетельства x ).
- После того как Алиса исчезает в пещере, Боб подходит к разветвлению (точка 2) и просит, чтобы Алиса вышла или справа, или слева. Это соответствует передаче вызова ( c ).
- Если Алиса знает волшебное слово (свой секретный ключ), она может выйти с запрошенной стороны. Ей, вероятно, придется использовать волшебное слово (если она находится на неправильной стороне), или она может выйти, не используя волшебное слово (если она - на правильной стороне). Однако если Алиса не знает волшебное слово, она может выйти только с правильной стороны, если она разгадала вызов Боба. С вероятностью 1/2 Алиса может убедить глупого Боба, что она знает волшебное слово. Это соответствует ответу ( y ).
- Игра повторяется много раз. Алиса победит, если она все время проходит испытания положительно. Вероятность, что она победит в игре, если она не знает волшебное слово, очень низка. Другими словами, P = (1/2) N , где P - вероятность победы, если она не знает волшебное слово.
N - количество раз повторения испытания.
Протокол Фейге-Фиата-Шамира
Протокол Фейге-Фиата-Шамира (Feige-Fiat-Shamir) подобен первому подходу за исключением того, что он использует вектор секретных ключей [s1, s2 . sk] , вектор общедоступных ключей , \gamma _ \dots \gamma _]" />
и векторы признаков ( c1,c2. ck) . Секретные ключи выбраны случайно, но они должны быть взаимно простыми с n . Общедоступные ключи выбраны так, что = (s_^)^ mod n" />
. На рис. 4.15 показаны три шага в процессе.
имеет то же значение, что и x :
Три шага составляют раунд; проверка повторяется несколько раз со значением индекса s, равным 0 или 1 (выбирается случайно). Претендент должен провести испытание в каждом раунде, который проверяется. Если претендент ошибается в одном раунде, процесс прерывается и подлинность не подтверждается.
Протокол Кискатера-Гийу
Протокол Кискатера (Quisquater) и Гийу (Gillou) расширяет протокол Фиата-Шамира , в котором может быть использовано меньшее число раундов , чтобы доказать полномочность претендент а. Третье лицо, которому доверяют (см. "Управление ключами" ), выбирает два больших простых числа p и q , чтобы вычислить значение n = p x q .
Сторона, которой доверяют, также выбирает показатель e , который является взаимно-простым с , где . Значения n и e объявляются общедоступными; значения p и q сохраняются секретными. Сторона, которой доверяют, выбирает два числа для каждого объекта: число , которое является общедоступным, и число s , которое является секретным. Однако в этом случае отношения между и s определяются уравнением
Равенство может быть доказано так, как показано ниже:
Идентификатор (англ. acess identifier) - уникальный признак субъекта или объекта доступа.
Идентификация (англ. identification) - присвоение субъектам и объектам доступа идентификатора и (или) сравнение предъявляемого идентификатора с перечнем присвоенных идентификаторов.
Аутентификация (англ. authentication) - проверка принадлежности субъекту доступа предъявленного им идентификатора; подтверждение подлинности.
Заметим, что аутентификация без идентификации невозможна.
Идентификация позволяет субъекту (пользователю, процессу, действующему от имени определенного пользователя, или иному аппаратно-программному компоненту) назвать себя (сообщить свое имя). Посредством аутентификации вторая сторона убеждается, что субъект действительно тот, за кого он себя выдает.
Аутентификация бывает односторонней (обычно клиент доказывает свою подлинность серверу) и двусторонней (взаимной). Пример односторонней аутентификации – процедура входа пользователя в систему.
Субъект может подтвердить свою подлинность, предъявив один из следующих аутентификаторов:
- нечто, что он знает (пароль, личный идентификационный номер, криптографический ключ и т.п.);
- нечто, чем он владеет (паспорт, личную карточку или иное устройство аналогичного назначения);
- нечто, что есть часть его самого (голос, отпечатки пальцев, образец ДНК и т.п.).
Классификация методов реализации аутентификации
- Пароли
- С использованием hash-функции
- На основе шифрования с открытым ключом
- Сервер аутентификации Kerberos
- Биометрия
- Идентификационные карты и электронные ключи
Парольная аутентификация
Пароль - идентификатор субъекта доступа, который является его (субъекта) секретом. Дополнительно пароли можно классифицировать следующим образом.
- Одноразовые пароли
- Пароли со сроком действия
- Бессрочные пароли
Парольная аутентификация заключается в том, что введенный пользователем пароль сравнивается с паролем, хранимым в защищаемой информационной системе, и если они совпадают, то дается разрешение на использование защищаемых ресурсов.
Главное достоинство парольной аутентификации – простота и привычность. Пароли давно встроены в ОС, СУБД и программные продукты. При правильном использовании пароли могут обеспечить приемлемый для многих организаций уровень безопасности. Тем не менее, по совокупности характеристик их следует признать самым слабым средством проверки подлинности.
Парольная аутентификация имеет массу недостатков:
1. Цифр и латиницы – 5,5 часов;
2. Всех символов – 480 часов.
- Кроме перечисленных выше приемов взлома паролей, их можно подсмотреть (например, с помощью оптических приборов), сообщить другу/подруге, записать на бумажке и приклеить на клавиатуру или монитор и т.п.
Тем не менее, так как парольная защита используется во многих продуктах и системах, можно порекомендовать следующие меры, позволяющие повысить надежность парольной защиты:
Протоколы аутентификации с использованием hash-функций
Hash-функция (хеш-функция) - это труднообратимое преобразование данных (односторонняя функция), реализуемое, как правило, средствами симметричного шифрования со связыванием блоков. Результат шифрования последнего блока (зависящий от всех предыдущих) и служит результатом хеш-функции.
При идентификации/аутентификации пользователь вводит пароль, а по каналу связи высылается его хеш-образ. Проверяющая система сравнивает введенный хеш-образ с образом, хранящемся в информационной системе для этого пользователя и в случае их совпадения разрешает доступ. Таким образом, система не хранит паролей, что повышает ее защищенность (достоинство).
Недостаток приведенной схемы заключается в том, что все равно необходимо как-то передавать хеш-образ для хранения в системе или для аутентификации и на этом пути его может перехватить злоумышленник, а затем воспользоваться им.
Протокол аутентификации на основе шифрования с открытым ключом
Широкое распространение при идентификации и аутентификации получили протоколы на базе ассиметричного шифрования. Существует десятки разновидностей таких протоколов, наиболее известными из которых являются протокол на основе алгоритмов RSA, схемы Фейге-Фиата-Шамира, Эль-Гамаля, Шнорра и т.д.
Общую последовательность действий при аутентификации на основе шифрования с открытым ключом можно представить следующим образом:
Протокол на основе алгоритма RSA
Один из наиболее известных протоколов аутентификации - протокол на основе алгоритма RSA. Протокол состоит из следующих этапов:
Этап 1: Генерация ключей
Этап 2: Аутентификация
Протокол на основе схемы Фейге-Фиата-Шамира
Этот протокол является практической реализацией схемы с нулевым разглашением. Протокол состоит из следующих этапов:
'Этап 1. Генерация ключей (выполняет Посредник)
'Этап 2. Аутентификация
Рассмотренный порядок операций, выполненный 1 раз называется аккредитацией. Если первую операцию поменять местами со второй, то А, даже не зная закрытого ключа s, может подобрать такое значение r, которое будет приводить к успешной аккредитации в обоих случаях (b=0 и b=1). Подобрать же такое r, которое будет приводить к успешной аккредитации в обоих случаях одновременно невозможно. Таким образом, если А не знает закрытого ключа s, то вероятность успешной аккредитации (подбора r) равна 1/2. Аккредитация повторятся t раз, пока не будет достигнута требуемая вероятность 1/2^t, чтоА не знает закрытого ключа s.
Протокол на основе схемы Эль-Гамаля
Протокол аутентификации основан на протоколе шифрования Эль-Гамаля. Основные этапы протокола аутентификации:
Этап 1: Генерация ключей
Этап 2: Аутентификация
Протокол на основе схемы Шнорра
Этап 1: Генерация ключей (выполняет A)
Этап 2: Аутентификация
Для обеспечения стойкости протокола в 1989 г. Шнорр рекомендовал использовать p длиной 512 бит, q длиной 140 бит и t = 52.
Сервер аутентификации Kerberos
Kerberos – программный продукт, разработанный в середине 1980-х годов в Массачусетском технологическом институте и претерпевший с тех пор ряд принципиальных изменений. Клиентские компоненты Kerberos присутствуют в большинстве современных ОС.
Kerberos предназначен для решения следующей задачи. Имеется открытая (незащищенная) сеть, в узлах которой сосредоточены субъекты – пользователи, а также клиентские и серверные программные системы. Каждый субъект обладает секретным ключом. Чтобы субъект C мог доказать свою подлинность субъекту S (без этого S не станет обслуживать C), он должен не только назвать себя, но и продемонстрировать знание секретного ключа. C не может просто послать S свой секретный ключ, во-первых, потому, что сеть открыта (доступна для пассивного и активного прослушивания), а, во-вторых, потому, что S не знает (и не должен знать) секретный ключ C. Требуется менее прямолинейный способ демонстрации знания секретного ключа.
Последовательность аутентификации с помощью Kerberos:
Как видно из данного протокола, помимо идентификации/аутентификации, параллельно решается вопрос с обменом сеансовым ключом (симметричное шифрование с использованием доверенного центра).
Идентификация/аутентификация с помощью биометрических данных
Биометрия – древнейший способ идентификации. Собаки различают друг друга по лаю, кошки – по запаху, люди – по лицам, голосу, подписи и т.д.
В общем виде в информационной системе работа с биометрическими данными организована следующим образом. Сначала создается и поддерживается база данных характеристик потенциальных пользователей. Для этого биометрические характеристики пользователя снимаются, обрабатываются, и результат обработки (называемый биометрическим шаблоном) заносится в базу данных.
В дальнейшем для идентификации и аутентификации пользователя процесс снятия и обработки повторяется, после чего производится поиск в базе данных шаблонов (верификация). В случае успешного поиска личность пользователя и ее подлинность считаются установленными.
Классификация наиболее распространенных биометрических характеристик представлена на рисунке 1.
Недостатки биометрических средств:
- биометрический шаблон сравнивается не с результатом первоначальной обработки характеристик пользователя, а с тем, что пришло к месту сравнения. А, как известно, за время пути может много чего произойти;
- база шаблонов может быть изменена злоумышленником;
- некоторые биометрические данные человека меняются (как в результате старения, так и травм, ожогов, порезов, болезни, ампутации и т.д.), так что база шаблонов нуждается в постоянном сопровождении, а это создает определенные проблемы и для пользователей, и для администраторов;
- если у Вас крадут биометрические данные или их компрометируют, то это, как правило, на всю жизнь. Пароли, при всей их ненадежности, в крайнем случае можно сменить. Палец, глаз или голос сменить нельзя, по крайней мере быстро;
- биометрические характеристики являются уникальными идентификаторами, но их нельзя сохранить в секрете.
Идентификационные карты и электронные ключи
Использование идентификационных карт и электронных ключей - это один из вариантов идентификации и аутентификации. Такой способ аутентификации относится к категории "пользователь имеет" и, чаще всего, для дополнительной защиты, комбинируется с "пользователь знает". Идентификационная карта и электронный ключ содержат секретный ключ, на основе которого и производится аутентификация субъекта. Удобство использования заключается в том, что субъекту не нужно запоминать секретный ключ, он хранится в памяти устройства. Как правило, субъекту необходимо знать код, который существенно меньше ключа, хранящегося на карте или ключе. Код позволяет избежать использования карты или ключа злоумышленником, в случае утери или кражи устройства. Основным отличием электронного ключа от идентификационной карты в объеме хранимой информации и в функционале, заложенном в устройство. Электронный ключ хранит только секретный ключ, позволяющий произвести идентификацию и аутентификацию пользователя, а идентификационная карта может хранить , помимо ключа, дополнительные сведения и производить простые криптографические операции (если имеет необходимые для этого компоненты).
В настоящее время наиболее распространенными разновидностями карт и ключей являются:
- карты с магнитной полосой;
- контактные смарт-карты и USB-ключи;
- бесконтактные RFID-карты.
Существует ряд международных стандартов, определяющих практически все свойства пластиковых карт, начиная от физических свойств пластика, размеров, и заканчивая содержанием информации, размещаемой на карте тем или иным способом. Например:
Формат записи данных для первой и второй дорожки банковских карт представлен на следующем рисунке 2.
PAN (номер карточного счета, номер платежной карты) обычно представляет собой 16-значный номер карты, напечатанный на лицевой стороне карты.
Discretionary data (дискреционные данные) – данные зарезервированные для карточного эмитента (эмитент — организация, выпустившая ценные бумаги или платежные карты для развития и финансирования своей деятельности) и используемые им по своему усмотрению. Тем не менее, первые 8 символов этого поля стандартизованы и предназначены для подтверждения правильности введенного PIN-кода , выявления ситуаций повреждения магнитной полосы или грубой подделки карты.
PVKI (номер ключа проверки PIN-кода) представляет собой значение от 1 до 6 и определяет ключ расшифрования PVV.
PVV (значение проверки PIN-кода) и IBM 3624-offset представляют собой зашифрованное значение PIN-кода . В частности, алгоритм VISA PVV представляет собой следующую последовательность операций.
1. Определяется TSP (Transformed Security Parameter – преобразованный параметр безопасности), как последние 12 цифр PAN (за исключением крайней правой цифры) плюс PVKI плюс введенные 4 цифры PIN-кода. Например, PAN = 123456789012344510, PVKI = 110, PIN-код = 909010 -> TSP = 56789012344 1 909010.
2. TSP шифруется с помощью банковского ключа, соответствующего PVKI, по алгоритму тройного DES (DES-EDE2). Например, DES-EDE2 = 0FAB9CDEFFE7DCBA16.
3. Определяется PVV путем сканирования шестнадцатеричной строки DES-EDE2 слева-направо, пока не будет выбрано 4 цифры. Если после первого сканирования будут найдены менее 4 цифр, то при повторном сканировании выбираться будут только шестнадцатеричные цифры, которые конвертируются в цифры путем вычитания из них 10. Например, PVV = 0975 (0, 9, 7, F=5).
CVV (значение проверки подлинности карты) определяется по тому же алгоритму, что и PVV, только шифруемая строка (аналог TSP) формируется из следующих данных: 10 цифр PAN (за исключением крайней правой цифры) плюс срок действия карты (в формате ММГГ) плюс служебные коды (для приведенного выше примера, шифруемая строка – 789012344 1215 20110). Из-за того, что СVV/CVC слабо защищен от клонирования, в настоящее время он практически не используется и вместо него на картах ставятся нули.
LRC (продольный контроль избыточности) предназначен для контроля целостности всей дорожки. Количество единиц в битовом представлении всей дорожки, включая биты символа LRC за исключением четного паритетного бита символа LCR, должно быть четным. Четный паритетный бит символа LCR предназначен для контроля целостности только символа LCR.
Читайте также: