Современные информационные технологии/4. Информационная безопасность
Станкевич Ф. В.
Карагандинский Государственный
Технический Университет, г. Караганда, Казахстан
Аутентификация на базе
электронно-цифровой подписи на эллиптических кривых
Для
обеспечения безопасности информационной системы каждый пользователь в любой
момент времени должен быть однозначно аутентифицирован. На сегодня, наиболее
распространенный вид аутентификации это – парольная аутентификация. Она
получила широкое распространение благодаря важному достоинству – простоте. При
данном подходе возникает проблема защиты пароля от перехвата и проблема
хранения пароля на сервере.
Использование
защищенного соединения при аутентификации решает проблему защиты пароля при
передаче. Однако, необходимость покупки сертификата и затрат на разворачивание PKI
(Public Key
Infrastructure) на сервере, приводит к тому, что многие по прежнему используют
для аутентификации открытый канал и ваши пароли доступа могут быть перехвачены
злоумышленником, имеющим доступ к сети, в которой вы работаете.
Рассмотрим
наиболее популярный способ аутентификации на сегодняшний день. Типичная
ситуация состоит в том, что сервер хранит в БД хеш-значение пароля пользователя
и в процессе аутентификации, получив пароль от пользователя, вычисляет его
хеш-значение и сравнивает его с эталоном. Хранение в БД хэш-значения пароля,
вместо самого пароля, позволяет защититься от кражи аутентификационных данных. Но,
несмотря на это каждый раз при аутентификации пароль передается в канале связи
в открытом виде. А перехват пароля дает злоумышленнику полный доступ к
соответствующему аккаунту.
Рассмотрим
несколько решений проблемы построения безопасного механизма аутентификации при
небезопасном соединении:
1. Решение с шифрованием
пароля самое простое и имеет огромное преимущество — внедрение такой схемы не
требует перерегистрация пользователей. Безопасность этого решения не на высоте,
но все равно лучше, чем пароли, передаваемые в открытом виде.
2. Для защиты от
перехвата пароля был придуман механизм Дайджест аутентификации. При каждом
сеансе сервер посылает клиенту случайное число Rnd, клиент в ответ посылает
H(Rnd+Hash(pwd)). В результате перехват ничего не даст злоумышленнику,
однако теперь появляется слабое место – БД сервера. Хранимый в БД пароль или
хэш-значение пароля позволят воссоздать необходимый для авторизации ответ
клиента. Хищение такой БД становится серьезной угрозой безопасности механизма
аутентификации.
3. Использование
ассиметричной криптографии для аутентификации пользователя позволяет не
передавать и не хранить пароль в БД ни в открытом виде, ни в виде хеш-значения.
Механизм аутентификации происходит на основе проверки электронно-цифровой
подписи (ЭЦП) клиента, при помощи открытого ключа, который хранить в БД на
сервере.
Ниже предложен
один из вариантов решения данной проблемы, с использованием асимметричной
криптографии на базе эллиптических кривых.
Итак,
рассмотрим непосредственно сам алгоритм:
Регистрация
1. Клиент выбирает идентификатор
(login) и пароль (password);
2. На их основе
формируется закрытый ключ m (private
key). Который вычисляется как модуль от результата хеширования
значения login + password. Хеширование можно
производить при помощи одной их
общеизвестных хеш-функций, например, SHA-256.
3. На основе закрытого
ключа формируется открытый ключ YU(xU,
yU) (public key),
который вычисляется как m-кратная композиция на
эллиптической кривой точки G, YU
= [m]G или
где G
– генератор
эллиптической кривой, т.е. точка на эллиптической кривой с координатами (xG,
yG), которая удовлетворяет условию, что ряд G,
[2]G, [3]G, …, [n]G
содержит
все множество целых точек на эллиптической кривой, причем n
есть
мощность множества эти точек и [n]G = O, O – точка
в бесконечности.
Операция
композиции точки G, т.е. G + G,
производиться по следующим правилам:
, x = k2 -2xG (mod p), y = k(xG – x) -
yG (mod p), где
Y = X3 +aX +
b (mod p) –
есть эллиптическая кривая.
4. Идентификатор и
открытый ключ отравляются на сервер и сохраняются в БД.
Аутентификация
1. Клиент вводит идентификатор
и пароль;
2. На их основе
формируется закрытый ключ (см. п.1 «Регистрации»)
3. Клиент получает от
сервера случайное число(RNDServer) и генерирует свое
случайное число(RNDClient);
4. С помощью закрытого
ключа клиент формирует ЭЦП (r, s) суммы
чисел RNDServer и RNDClient по алгоритму ГОСТ P34.10-2001.
Алгоритм формирования ЭЦП заключается в следующем:
а) Вычисляется значение
хеш-функции h (см. п.2 «Регистрации») от RNDServer + RNDClient
б) выбирается случайное
число k, 0 < k <q,
где q – большое простое число удовлетворяющее равенству n = cq, c – некоторое
число, n – мощность множества точек на эллиптической
кривой.
в) вычисляется P =
[k]G = (x,y);
г) вычисляется число r = x
mod q (при r=0 возвращаемся
к пункту б);
д) вычисляется s = (kh +rxU)
mod q (при s=0 возвращаемся
к пункту б);
5. Клиент отправляет на
сервер login, RNDclient и ЭЦП;
6. Сервер проверяет
корректность ЭЦП с помощью открытого ключа клиента, хранящегося в БД, по
следующему алгоритму:
а) Вычисляется значение
хеш-функции h (см. п.2 «Регистрации») от RNDServer + RNDClient
б) убеждается, что 0
< r, s < q;
в) вычисляет u1 = s∙h-1 mod
q и u2 = -r∙h-1 mod
q, где h-1 есть число
удовлетворяющее равенству hh-1 mod
q ≡ 1
г) вычисляется
композиция точек на кривой P (x, y) =
[u1]G + [u2]YU,
если P = O, отвергает подпись;
д) если x
mod q = r, принимает
подпись, в противном случае отвергает ее.
Такой подход
позволит аутентифицироваться на сервере, никогда не передавая серверу пароль,
ни при регистрации, ни при аутентификации. Алгоритм на эллиптических кривых
более стоек, чем RSA, что позволяет использовать более короткие ключи, и как
следствие, снижает требования к производительности.
Литература:
1. Интернет
http://habrahabr.ru/post/123372 – Аутентификация на базе ЭЦП.
2. Рябко Б.Я., Фионов А.Н. Основы современной криптографии и стеганографии – Горячая
Линия-Телеком, 2010 г. – 232с.
3. С. Г. Баричев, В. В. Гончаров, Р. Е. Серов Основы
современной криптографии – Горячая Линия-Телеком, 2002 г. – 175с.