SRP

SRP

Secure Remote Password Protocol (SRPP) — протокол парольной аутентификации, устойчивый к прослушиванию и MITM-атаке и не требующий третьей доверенной стороны. SRP содержит некоторые элементы из других протоколов обмена ключами и идентификации, при этом вносит небольшие усовершенствования и уточнения. Протокол сохраняет стойкость и эффективность протоколов класса Encrypted key exchange, при этом избавляясь от некоторых их недостатков.

Содержание

Обзор

Протокол SRP позволяет пользователю идентифицировать себя на сервере, при этом не передавая своего пароля, то есть подтвердить тот факт, что он знает свой пароль, и только этот факт. Он имеет ряд полезных качеств:

  • устойчив к атакам перебора по словарю при прослушивании канала (что часто может иметь место), что даже позволяет использовать слабо устойчивые к перебору пароли без риска ухудшения безопасности,
  • предохраняет прошедшие сессии и пароли от будущего разглашения,
  • работает при условиях наличия канала, не только не защищенного от прослушивания, но и не защищенного от подмены (в том смысле, что злоумышленник не может получить никакой дополнительной информации из возможности подмены, а лишь предотвратить коммуникацию),
  • не требует наличия какого-либо дополнительного защищённого канала,
  • пользовательские пароли хранятся в формате, не эквивалентном открытому тексту пароля, так что злоумышленник, каким-либо образом получивший базу данных сервера, не может использовать её непосредственно для получения пароля пользователя или ложного представления пользователя в диалоге с сервером.

SRP эффективно реализует Доказательство с нулевым разглашением между пользователем и сервером, хранящим информацию о его пароле. При прослушивании за один раз злоумышленником может быть проверена только одна версия пароля, начиная с версии 6 данного протокола. Данный протокол имеет много ревизий, на данный момент последняя ревизия — 6a.

В результате работы данного протокола обе стороны получают длинный секретный ключ, проверяемый на соответствие между сторонами после получения. В случаях, когда помимо аутентификации необходимо шифрование данных, SRP предоставляет более надёжные, чем SSH, и более быстрые, чем Deffie-Hellman, средства для достижения этой цели. Протокол SRP версии 3 описывается в RFC 2945. SRP версии 6 также используется для аутентификации в SSL/TLS и других стандартах, таких как EAP и SAML, и в данный момент стандартизуется IEEE P1363 и ISO/IEC 11770-4.

Принцип работы

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

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

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

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

  • x = H(s, p) (s выбирается произвольным образом)
  • v = gx (вычисление верификатора пароля)

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

  1. Клиент -> Сервер: I, A = ga (идентифицируется, a — произвольное)
  2. Сервер -> Клиент: s, B = kv + gb (посылает сохраненное s, произвольное b)

На обоих сторонах: u = H(A, B)

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

  1. x = H(s, p) (пользователь вводит пароль)
  2. S = (B — kgx)(a + ux) (вычисляется ключ сессии)
  3. K = H(S) (K — это искомый ключ для шифрования)

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

  1. S = (Avu)b (вычисление ключа сессии)
  2. K = H(S) (K — это искомый ключ для шифрования)

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

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

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

Сравнение с некоторыми типами алгоритмов

Речь пойдет о простых типах алгоритмов аутентификации и их уязвимостях в сравнении с данным, что покажет преимущества SRP.

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

Модифицируя первый алгоритм, получаем аутентификацию с запросом и подтверждением (challenge-responce), где обмен происходит так:

  • Клиент — Сервер: username+r, где r — произвольный текст
  • Сервер — Клиент: с, где с — произвольный текст (challenge)

после этого клиент вычисляет хеш от трех величин: r, c, password, и посылает его обратно. Данный метод уязвим к перебору, так как злоумышленник, имея r, c, hash, может подобрать пароль клиента.

Анализируя первые два алгоритма, можно прийти к третьему, который защищен и от перебора по словарю. Семейство таких протоколов называется Encrypted key exchange (EKE). Суть этого алгоритма в том, что обе стороны генерируют свои открытые ключи для асимметричного шифрования, и обмениваются или с помощью симметричного алгоритма, используя известный обоим пароль пользователя как ключ. Данное семейство протоколов имеет широкое распространение, с разными реализованными модификациями, добавляющими некоторые свойства:

  1. При получении пароля злоумышленник не может расшифровать обмен данными, который уже состоялся, либо при получении сессионного ключа какого-либо сеанса он не может узнать пароль пользователя (даже полным перебором), однако, по-прежнему, на сервере хранится аналог открытого текста пароля, который может быть украден для получения собственно пароля (например, DH-EKE, SPEKE).
  2. При получении информации из базы данных сервера, злоумышленник не может получить из них пароль, но теряется предыдущее свойство(например, A-EKE).
  3. Модификация обладает свойствами 1 и 2 за счет введения дополнительного раунда обмена ключами, однако претерпевает сильную потерю в производительности из-за значительных дополнительных вычислений.

Для того, чтобы избежать всех указанных уязвимостей и получить алгоритм с хорошей скоростью работы, была разработана концепция AKE (Asymmetric key exchange), отличающаяся от предыдущих прежде всего тем, что при передаче данных отсутствует всякое шифрование, которое избавляет систему от ненужных затрат вычислительной мощности и возможных уязвимостей определенных алгоритмов шифрования. Одной из реализаций AKE и является SRP.

См. также

Ссылки

  • http://srp.stanford.edu/design.html - краткое описание принципов работы
  • http://srp.stanford.edu/ndss.html - основная статья автора протокола об этом протоколе.
  • RFC 2945 SRP RFC, детально описывает схему аутентификации SRP
  • RFC 2944 Полное описание варианта Telnet Authentication для SRP, основанная на RFC 2941, Telnet Authentication
  • RFC 5054 Использование SRP для TLS аутентификации и обмена ключами

Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "SRP" в других словарях:

  • srp — sȓp m <N mn sȑpovi/sȓpi ekspr. knjiš.> DEFINICIJA agr. oruđe u obliku luka kojim se žanju žitarice, trava i sl.; kosica SINTAGMA srp i čekić pov. pol. znak komunističkih partija ONOMASTIKA pr. (nadimačko): Sèrpak (Zagreb i okolica), Sŕpak… …   Hrvatski jezični portal

  • SRP — steht für: Sam Rainsy Partei, eine Partei in Kambodscha Schottel Ruderpropeller, ein Antrieb für Schiffe Seating Reference Point, der Sitzbezugspunkt oder auch R Punkt, der die Sitzposition des Fahrers im Kraftfahrzeug beschreibt Secure Remote… …   Deutsch Wikipedia

  • SRP — COMMERCE written abbreviation for suggested retail price * * * SRP UK US noun [C] COMMERCE ► ABBREVIATION for SUGGESTED RETAIL PRICE(Cf. ↑suggested retail price) …   Financial and business terms

  • SRP — may refer to:In politics: * Self Defense of the Republic of Poland, a political party in Poland * Serbian Radical Party, a nationalist political party in Serbia * Socialist Reich Party ( Sozialistische Reichspartei ), a far right political party… …   Wikipedia

  • SRP — SRP,   Abkürzung für Sozialistische Reichspartei …   Universal-Lexikon

  • sȓp — m 〈N mn sȑpovi/sȓpi ekspr. knjiš.〉 agr. oruđe u obliku luka kojim se žanju žitarice, trava i sl.; kosica ∆ {{001f}}∼ i čekić pov. pol. znak komunističkih partija …   Veliki rječnik hrvatskoga jezika

  • SRP — (Suggested Retail Price) recommended retail price, selling price that the manufacturer suggests …   English contemporary dictionary

  • śrp-1 — Definition: To burn. seraph, back formation from plural seraphim, from Hebrew śǝrāpîm, plural of śārāp, fiery serpent, seraph, from śārap, to burn …   The American Heritage dictionary of the English language

  • śrp-2 — Definition: Arabic root, to be noble, highborn. sherif, from Arabic šarīf, noble, highborn, from šarufa, to be noble, highborn …   The American Heritage dictionary of the English language

  • ṣrp — Definition: To burn, smelt, refine. silver, probably ultimately from Akkadian ṣarpu, refined, silver, verbal adjective of ṣarāpu, to refine …   The American Heritage dictionary of the English language


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»