Интернет магазин китайских планшетных компьютеров



Компьютеры - SRP - Принцип работы

30 мая 2011


Оглавление:
1. SRP
2. Принцип работы
3. Сравнение с некоторыми типами алгоритмов



Введем обозначения, необходимые для рассуждения:

  • q и N = 2q + 1 выбираются так, что N и q простые. N должно быть достаточно большим, чтобы дискретное логарифмирование по модулю N было практически неосуществимо.
  • Вся арифметика выполняется по модулю N.
  • g — генератор мультипликативной группы \mathbb{Z}_N^*
  • k — параметр, получаемый на обоих сторонах, например, k = H в ревизии 6а.
  • s — соль
  • I — идентификатор пользователя в системе сервера.
  • p — пароль пользователя, соответствующий I.
  • H — криптографическая хеш-функция, например, SHA-256
  • x — секретный ключ, x = H.
  • v — верификатор пароля на стороне сервера, v = g.
  • u — произвольный параметр для кодирования.
  • a,b — секретные одноразовые числа

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

Из исходных параметров вычисляются A,B. Сервер хранит пароли, используя следующую формулу:

  • x = H
  • v = g

После этого сервер хранит пару в своей базе данных. Аутентификация происходит по следующей схеме:

  1. Клиент -> Сервер: I, A = g
  2. Сервер -> Клиент: s, B = kv + g

На обоих сторонах: u = H

На стороне клиента:

  1. x = H
  2. S =
  3. K = H

На стороне сервера:

  1. S =
  2. K = H

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

Клиент -> Сервер: M = H xor H, H, s, A, B, K) и проверка на стороне сервера

Сервер -> Клиент: H и проверка на стороне клиента



Просмотров: 2443


<<< Space-time tradeoff
STU-III >>>