Эта статья является кандидатом в добротные статьи

Псевдослучайная функция Наора — Рейнгольда: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Оформление
Строка 1: Строка 1:
'''Псевдослучайная функция Наора — Рейнгольда''' — {{iw|псевдослучайная функция|псевдослучайная функция|en|Pseudorandom function family}}, введённая в 1997 году {{iw|Наор, Мони|Мони Наором|en|Moni Naor}} и {{iw|Рейнгольд, Омер|Омером Рейнгольдом||Omer Reingold}} для построения различных [[Криптографические примитивы|криптографических примитивов]] в [[Симметричные криптосистемы|симметричном шифровании]] и [[Криптосистема с открытым ключом|криптографии с открытым ключом]]<ref name="NaorReingold" />. Отличительными особенностями данной псевдослучайной функции являются низкая [[вычислительная сложность]]<ref name="NaorReingold" /> и высокая [[Криптографическая стойкость|криптографичекая стойкость]]{{переход|Безопасность псевдослучайной функции}}. Данные свойства вместе с тем фактом, что распределение значений данной функции близко к [[Равномерное распределение|равномерному]]{{переход|Равномерность распределения}}, позволяют использовать ее в качестве основы для многих [[Криптографические примитивы|криптографических схем]]{{переход|Применение псевдослучайной функции}}.
'''Псевдослучайная функция Наора — Рейнгольда''' — {{iw|псевдослучайная функция|псевдослучайная функция|en|Pseudorandom function family}}, введённая в 1997 году {{iw|Наор, Мони|Мони Наором|en|Moni Naor}} и {{iw|Рейнгольд, Омер|Омером Рейнгольдом||Omer Reingold}} для построения различных [[Криптографические примитивы|криптографических примитивов]] в [[Симметричные криптосистемы|симметричном шифровании]] и [[Криптосистема с открытым ключом|криптографии с открытым ключом]]<ref name="NaorReingold" />. Отличительными особенностями данной псевдослучайной функции являются низкая [[вычислительная сложность|вычислительная сложность{{переход|Вычислительная сложность}}]] и высокая [[Криптографическая стойкость|криптографичекая стойкость]]{{переход|Безопасность псевдослучайной функции}}. Данные свойства вместе с тем фактом, что распределение значений данной функции близко к [[Равномерное распределение|равномерному]]{{переход|Равномерность распределения}}, позволяют использовать ее в качестве основы для многих [[Криптографические примитивы|криптографических схем]]{{переход|Применение псевдослучайной функции}}.


== Постановка ==
== Постановка ==
Строка 6: Строка 6:
: <math>f_{a}(x) = g^{a_{0}\cdot a_{1}^{x_{1}} a_{2}^{x_{2}}...a_{n}^{x_{n}}} \in \mathbb F_p</math>
: <math>f_{a}(x) = g^{a_{0}\cdot a_{1}^{x_{1}} a_{2}^{x_{2}}...a_{n}^{x_{n}}} \in \mathbb F_p</math>


где <math> x = x_1,..., x_n </math> — это [[Двоичное число|двоичное]] представление целого числа <math>x,</math> <math> 0 \leq x < 2^n</math>, с добавлением ведущих нулей, если это необходимо<ref>{{Статья|автор=Igor E. Shparlinski|год=2000-12|doi=10.1016/s0020-0190(00)00133-2|issn=0020-0190|выпуск=3|страницы=95–99|издание=Information Processing Letters|заглавие=Linear complexity of the Naor–Reingold pseudo-random function|ссылка=http://dx.doi.org/10.1016/s0020-0190(00)00133-2|том=76}}</ref>.
где <math> x = x_1,..., x_n </math> — это [[Двоичное число|двоичное]] представление целого числа <math>x,</math> <math> 0 \leq x < 2^n</math>, с добавлением ведущих нулей, если это необходимо<ref name=":1">{{Статья|автор=Igor E. Shparlinski|год=2000-12|doi=10.1016/s0020-0190(00)00133-2|issn=0020-0190|выпуск=3|страницы=95–99|издание=Information Processing Letters|заглавие=Linear complexity of the Naor–Reingold pseudo-random function|ссылка=http://dx.doi.org/10.1016/s0020-0190(00)00133-2|том=76}}</ref>.


=== Пример ===
=== Пример ===
Строка 16: Строка 16:


== Вычислительная сложность ==
== Вычислительная сложность ==
Построение псевдослучайной функции Наора — Рейнгольда требует <math>n</math> умножений по модулю <math>p</math> и одно [[Возведение в степень по модулю|возведение в степень]] также по модулю <math>p</math>, которое может быть сделано за <math>O(\frac{n}{\log n})</math><ref name="NaorReingold" />.
Построение псевдослучайной функции Наора — Рейнгольда требует <math>n</math> умножений по модулю <math>p</math> и одно [[Возведение в степень по модулю|возведение в степень]] также по модулю <math>p</math>, которое может быть сделано за <math>O\left(\frac{n}{\log n}\right)</math><ref name="NaorReingold" /><ref>{{Статья|ссылка=http://link.springer.com/10.1007/3-540-47555-9_18|автор=Ernest F. Brickell, Daniel M. Gordon, Kevin S. McCurley, David B. Wilson|заглавие=Fast Exponentiation with Precomputation|год=1993|ответственный=Rainer A. Rueppel|язык=en|место=Berlin, Heidelberg|издание=Advances in Cryptology — EUROCRYPT’ 92|издательство=Springer Berlin Heidelberg|том=658|страницы=200–207|isbn=978-3-540-56413-3|doi=10.1007/3-540-47555-9_18}}</ref>.


Для {{iw|Схемная сложность|схемной сложности|en|Circuit complexity}} данной функции было показано<ref>{{Статья|автор=Moni Naor, Omer Reingold|год=2004-03-01|doi=10.1145/972639.972643|issn=0004-5411|выпуск=2|страницы=231–262|издание=Journal of the ACM|заглавие=Number-theoretic constructions of efficient pseudo-random functions|ссылка=http://dx.doi.org/10.1145/972639.972643|том=51}}</ref>, что существует такой [[полином]] <math>p(x)</math>, что для любого <math>a = (a_0, a_1,..., a_n) \in ({\mathbb F}_l)^{n+1} </math>, <math>f_{a}(x)</math> может быть реализована схемой из пороговых элементов глубины <math>d</math> и размера, не превышающего <math>p(n)</math>. Это означает, что функции Наора — Рейнгольда принадлежит {{iw|Класс TC0|классу TC<sup>0</sup>|en|TC0}} в терминах {{iw|Булевы схемы|булевых схем|en|Circuit complexity#Size and Depth}}.
Для {{iw|Схемная сложность|схемной сложности|en|Circuit complexity}} данной функции было показано, что существует такой [[полином]] <math>p(x)</math>, что для любого <math>a = (a_0, a_1,..., a_n) \in ({\mathbb F}_l)^{n+1} </math>, <math>f_{a}(x)</math> может быть реализована схемой из пороговых элементов глубины <math>d</math> и размера, не превышающего <math>p(n)</math>. Это означает, что функции Наора — Рейнгольда принадлежит {{iw|Класс TC0|классу TC<sup>0</sup>|en|TC0}} в терминах {{iw|Булевы схемы|булевых схем|en|Circuit complexity#Size and Depth}}<ref name="NaorReingold" />.


== Применение псевдослучайной функции ==
== Применение псевдослучайной функции ==
Псевдослучайная функция Наора — Рейнгольда может быть использована в качестве основы многих [[Криптографические примитивы|криптографических схем]], включая [[симметричное шифрование]], [[Аутентификация|аутентификацию]] и [[Электронная подпись|электронные подписи]]<ref>{{Статья|автор=Aggelos Kiayias, Stavros Papadopoulos, Nikos Triandopoulos, Thomas Zacharias|год=2013|doi=10.1145/2508859.2516668|isbn=978-1-4503-2477-9|заглавие=Delegatable pseudorandom functions and applications|ссылка=http://dx.doi.org/10.1145/2508859.2516668|место=New York, New York, USA|издательство=ACM Press|издание=Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security - CCS '13}}</ref><ref name=":0" />.
Псевдослучайная функция Наора — Рейнгольда может быть использована в качестве основы многих [[Криптографические примитивы|криптографических схем]], включая [[симметричное шифрование]], [[Аутентификация|аутентификацию]] и [[Электронная подпись|электронные подписи]]<ref>{{Статья|автор=Aggelos Kiayias, Stavros Papadopoulos, Nikos Triandopoulos, Thomas Zacharias|год=2013|doi=10.1145/2508859.2516668|isbn=978-1-4503-2477-9|заглавие=Delegatable pseudorandom functions and applications|ссылка=http://dx.doi.org/10.1145/2508859.2516668|место=New York, New York, USA|издательство=ACM Press|издание=Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security - CCS '13}}</ref><ref name=":0" />.


Также было показано<ref>{{Статья|автор=Oded Goldreich, Shafi Goldwasser, Silvio Micali|ответственный=George Robert Blakley, David Chaum|год=1985|doi=10.1007/3-540-39568-7_22|isbn=978-3-540-15658-1|язык=en|страницы=276–288|заглавие=On the Cryptographic Applications of Random Functions (Extended Abstract)|ссылка=http://link.springer.com/10.1007/3-540-39568-7_22|том=196|место=Berlin, Heidelberg|издательство=Springer Berlin Heidelberg|издание=Advances in Cryptology}}</ref>, что данная функция может быть использована в:
Также было показано, что данная функция может быть использована в<ref>{{Статья|ссылка=http://link.springer.com/10.1007/3-540-39568-7_22|автор=Oded Goldreich, Shafi Goldwasser, Silvio Micali|заглавие=On the Cryptographic Applications of Random Functions (Extended Abstract)|год=1985|ответственный=George Robert Blakley, David Chaum|язык=en|место=Berlin, Heidelberg|издание=Advances in Cryptology|издательство=Springer Berlin Heidelberg|том=196|страницы=276–288|isbn=978-3-540-15658-1|doi=10.1007/3-540-39568-7_22}}</ref>:


* {{iw|динамически идеальное хеширование|динамически идеальном хешировании|en|Dynamic perfect hashing}}: даже если злоумышленник может изменить распределение ключей в зависимости от значений, которые функция хеширования присвоила предыдущим ключам, он не сможет умышленно вызвать коллизии.
* {{iw|динамически идеальное хеширование|динамически идеальном хешировании|en|Dynamic perfect hashing}}: даже если злоумышленник может изменить распределение ключей в зависимости от значений, которые функция хеширования присвоила предыдущим ключам, он не сможет умышленно вызвать коллизии.
Строка 31: Строка 31:


== Безопасность псевдослучайной функции ==
== Безопасность псевдослучайной функции ==
Псевдослучайная функция Наора — Рейнгольда имеет высокую [[Криптографическая стойкость|криптографичекую стойкость]]. Пусть злоумышленнику известны значения функции в нескольких точках, например, <math> f_{a}(1) = g^{a_0 a_{1}}, f_{a}(2) = g^{a_0 a_{2}}, </math> <math> f_{a}(3) = g^{a_0 a_{1}a_{2}},\dots,f_{a}(k) = g^{a_0 a_{1}^{x_{1}} a_{2}^{x_{2}}...a_{n}^{x_{n}}}</math>и ему необходимо вычислить <math> f_{a}(k + 1)</math>. Если <math>x_1 = 0</math>, то чтобы получить <math>f_{a}(k+1) = g^{a_0 a_{1}a_{2}^{x_{2}} \dots a_{n}^{x_{n}}}</math>, злоумышленнику необходимо решить {{iw5|Задача Диффи — Хеллмана|задачу Диффи — Хеллмана|en|Diffie–Hellman problem}} для <math> f_a (1)= g^{a_0 a_{1}} </math> и <math>f_{a}(k) = g^{a_0 a_{2}^{x_{2}} ...a_{n}^{x_{n}}}</math>. Но по {{iw5|Предположение о сложности Диффи — Хеллмана|предположению о сложности Диффи — Хеллмана|en|Computational Diffie–Hellman assumption}} не существует эффективного алгоритма, способного решить данную задачу<ref name="NaorReingold" />.
Псевдослучайная функция Наора — Рейнгольда имеет высокую [[Криптографическая стойкость|криптографичекую стойкость]]. Пусть злоумышленнику известны значения функции в нескольких точках: <math> f_{a}(1) = g^{a_0 a_{1}}, f_{a}(2) = g^{a_0 a_{2}},\dots,f_{a}(k) = g^{a_0 a_{1}^{x_{1}} a_{2}^{x_{2}}...a_{n}^{x_{n}}}</math>и ему необходимо вычислить <math> f_{a}(k + 1)</math>. Если <math>x_1 = 0</math>, то чтобы получить <math>f_{a}(k+1) = g^{a_0 a_{1}a_{2}^{x_{2}} \dots a_{n}^{x_{n}}}</math>, злоумышленнику необходимо решить {{iw5|Задача Диффи — Хеллмана|задачу Диффи — Хеллмана|en|Diffie–Hellman problem}} для <math> f_a (1)= g^{a_0 a_{1}} </math> и <math>f_{a}(k) = g^{a_0 a_{2}^{x_{2}} ...a_{n}^{x_{n}}}</math>. Но по {{iw5|Предположение о сложности Диффи — Хеллмана|предположению о сложности Диффи — Хеллмана|en|Computational Diffie–Hellman assumption}} не существует эффективного алгоритма, способного решить данную задачу<ref name="NaorReingold" />.


Поток чисел генерируемый [[Генератор псевдослучайных чисел|псевдослучайной функцией]] также должен быть непредсказуемым, то есть, он должен быть неотличим от совершенно случайного набора чисел. Пусть <math> \mathcal{A}^f </math> обозначает алгоритм, который имеет доступ к [[Вычисления с оракулом|оракулу]], который вычисляет <math> f_{a}(x)</math>. Предположим, что {{iw|предположение Диффи — Хеллмана||en|Decisional Diffie–Hellman assumption}} выполняется для <math> \mathbb F_p </math>. Тогда для любого [[Класс PP|вероятностного полиномиального алгоритма]] <math> \mathcal{A} </math> и достаточно большого <math>n</math> выполнено<ref>{{Книга|год=1998|isbn=3-540-64657-4, 978-3-540-64657-0|страниц=x, 640 pages|место=Berlin|издательство=Springer|заглавие=Algorithmic number theory : third international symposium, ANTS-III, Portland, Oregon, USA, June 21-25, 1998 : proceedings|ссылка=https://www.worldcat.org/oclc/39257018}}</ref>:
Поток чисел генерируемый [[Генератор псевдослучайных чисел|псевдослучайной функцией]] также должен быть непредсказуемым, то есть, он должен быть неотличим от совершенно случайного набора чисел. Пусть <math> \mathcal{A}^f </math> обозначает алгоритм, который имеет доступ к [[Вычисления с оракулом|оракулу]], который вычисляет <math> f_{a}(x)</math>. Предположим, что {{iw|предположение Диффи — Хеллмана||en|Decisional Diffie–Hellman assumption}} выполняется для <math> \mathbb F_p </math>. Тогда для любого [[Класс PP|вероятностного полиномиального алгоритма]] <math> \mathcal{A} </math> и достаточно большого <math>n</math> выполнено<ref>{{Книга|год=1998|isbn=3-540-64657-4, 978-3-540-64657-0|страниц=x, 640 pages|место=Berlin|издательство=Springer|заглавие=Algorithmic number theory : third international symposium, ANTS-III, Portland, Oregon, USA, June 21-25, 1998 : proceedings|ссылка=https://www.worldcat.org/oclc/39257018}}</ref>:
Строка 40: Строка 40:


== Линейная сложность ==
== Линейная сложность ==
Одним из естественных показателей того, насколько последовательность может быть полезной для [[Криптография|криптографических]] целей, является размер её линейной сложности. Линейная сложность <math>n</math> — элементной последовательности <math>W(x), x = 0,1,2,..., n - 1</math>, над кольцом <math> \mathcal{R}</math> — это длина <math>l</math> кратчайшего линейного [[Рекуррентное соотношение|рекуррентного соотношения]] <math>W(x + l) = A_{l-1} W(x +l-1) + ... + A_0 W(x), x = 0,1,2,..., n - (l-1)</math>, где <math>A_0,...,A_{l-1}</math> ∈ <math> \mathcal{R}</math><ref name=":1">{{Статья|автор=Igor E. Shparlinski|год=2000-12|doi=10.1016/s0020-0190(00)00133-2|issn=0020-0190|выпуск=3|страницы=95–99|издание=Information Processing Letters|заглавие=Linear complexity of the Naor–Reingold pseudo-random function|ссылка=http://dx.doi.org/10.1016/s0020-0190(00)00133-2|том=76}}</ref><ref name=":2">{{Статья|автор=Marcos Cruz, Domingo Gómez, Daniel Sadornil|год=2010-09|doi=10.1016/j.ffa.2010.05.005|issn=1071-5797|выпуск=5|страницы=329–333|издание=Finite Fields and Their Applications|заглавие=On the linear complexity of the Naor–Reingold sequence with elliptic curves|ссылка=http://dx.doi.org/10.1016/j.ffa.2010.05.005|том=16}}</ref>. Для функции Наора — Рейнгольда было показано, что существуют такие <math>\gamma > 0</math> и <math>n \geqslant (1+\gamma)\log l</math>, что для любого <math>\delta > 0 </math> и достаточно большого <math>l</math> линейная сложность <math>L_a</math> последовательности <math> f_{a}(x)</math>, <math>0 \leq x < 2^n</math>, удовлетворяет следующему неравенству<ref name=":1" />:
Одним из естественных показателей того, насколько последовательность может быть полезной для [[Криптография|криптографических]] целей, является её линейная сложность. Линейная сложность <math>n</math>-элементной последовательности <math>W(x),\; x = 0,\dots, n - 1</math>, над кольцом <math> \mathcal{R}</math> — это длина <math>l</math> кратчайшего линейного [[Рекуррентное соотношение|рекуррентного соотношения]] <math>W(x + l) = A_{l-1} W(x +l-1) + \dots + A_0 W(x),\; x = 0,\dots, n - (l-1)</math>, где <math>A_0,\dots,A_{l-1} \in \mathcal R</math><ref name=":1" /><ref name=":2">{{Статья|автор=Marcos Cruz, Domingo Gómez, Daniel Sadornil|год=2010-09|doi=10.1016/j.ffa.2010.05.005|issn=1071-5797|выпуск=5|страницы=329–333|издание=Finite Fields and Their Applications|заглавие=On the linear complexity of the Naor–Reingold sequence with elliptic curves|ссылка=http://dx.doi.org/10.1016/j.ffa.2010.05.005|том=16}}</ref>. Для функции Наора — Рейнгольда было показано, что существуют такие <math>\gamma > 0</math> и <math>n \geqslant (1+\gamma)\log l</math>, что для любого <math>\delta > 0 </math> и достаточно большого <math>l</math> линейная сложность <math>L_a</math> последовательности <math> f_{a}(x)</math>, <math>0 \leq x < 2^n</math>, удовлетворяет следующему неравенству<ref name=":1" />:


: <math>L_{a} \geqslant \begin{cases}
: <math>L_{a} \geqslant \begin{cases}
Строка 60: Строка 60:
p^{\left (\tfrac{1}{8}\right )}l^{\left (\tfrac{-3}{8}\right )}\log^{2}p &\text{ если } p^{\left (\tfrac{1}{2}\right )} > l \geqslant p^{\left (\tfrac{1}{3}\right )} \\
p^{\left (\tfrac{1}{8}\right )}l^{\left (\tfrac{-3}{8}\right )}\log^{2}p &\text{ если } p^{\left (\tfrac{1}{2}\right )} > l \geqslant p^{\left (\tfrac{1}{3}\right )} \\
\end{cases}</math>
\end{cases}</math>
: и <math>\gamma = 2,5 - \log 3 = 0,9150...</math>.
: и <math>\gamma = 2,5 - \log 3 \approx 0,9150\dots</math>.


Это свойство не имеет непосредственного криптографического значения, но если бы оно не было выполнено, это могло бы повлечь катастрофические последствия для применения функции<ref name=":3" />.
Это свойство не имеет непосредственного криптографического значения, но если бы оно не было выполнено, это могло бы повлечь катастрофические последствия для применения функции<ref name=":3" />.


== Последовательности на эллиптической кривой ==
== Последовательности на эллиптической кривой ==
Анализ [[Эллиптическая кривая|эллиптической кривой]] этой функции позволяет улучшить [[Криптографическая стойкость|криптографическую стойкость]] соответствующей системы. Пусть <math>p > 3</math> — [[Простое число|простое]] число и <math>E</math> — эллиптическая кривая над <math> \mathbb F_p </math>. Тогда любой вектор <math>a = (a_0, a_1, \dots , a_n) \in ({\mathbb F}_{l}^*)^{n+1}</math> определяет конечную [[последовательность]] <math>f_{a}(x) = (a_0a_{1}^{x_{1}} a_{2}^{x_{2}}\dots a_{n}^{x_{n}})G </math> в [[Подгруппа|подгруппе]] <math>\langle G\rangle</math>, где <math>x = x_1 \dots x_n</math> — битовое представление <math>x, 0 \leq x < 2^{n}</math>, а <math> G \in {\mathbb F}_p</math>, — некоторый элемент на <math>E</math> с [[мультипликативный порядок|мультипликативным порядком]] <math>l</math>. В таких обозначениях последовательность эллиптической кривой Наора — Рейнгольда определяется как <math> u_{k} = X (f_{a}(k))\; </math>, где <math>X (P)</math> — это абсцисса <math> P \in E </math><ref name=":2" />.
Анализ [[Эллиптическая кривая|эллиптической кривой]] этой функции позволяет улучшить [[Криптографическая стойкость|криптографическую стойкость]] соответствующей системы. Пусть <math>p > 3</math> — [[Простое число|простое]] число и <math>E</math> — эллиптическая кривая над <math> \mathbb F_p </math>. Тогда любой вектор <math>a = (a_0, a_1, \dots , a_n) \in ({\mathbb F}_{l}^*)^{n+1}</math> определяет конечную [[последовательность]] <math>f_{a}(x) = (a_0a_{1}^{x_{1}} a_{2}^{x_{2}}\dots a_{n}^{x_{n}})G </math> в [[Подгруппа|подгруппе]] <math>\langle G\rangle</math>, где <math>x = x_1 \dots x_n</math> — битовое представление <math>x,\; 0 \leq x < 2^{n}</math>, а <math> G \in {\mathbb F}_p</math>, — некоторый элемент на <math>E</math> с [[мультипликативный порядок|мультипликативным порядком]] <math>l</math>. В таких обозначениях последовательность эллиптической кривой Наора — Рейнгольда определяется как <math> u_{k} = X (f_{a}(k))\; </math>, где <math>X (P)</math> — это абсцисса <math> P \in E </math><ref name=":2" />.


Если предположение Диффи — Хеллмана выполнено, то индекса <math>k</math> не достаточно для вычисления <math>u_k</math> за полиномиальное время.
Если предположение Диффи — Хеллмана выполнено, то индекса <math>k</math> не достаточно для вычисления <math>u_k</math> за полиномиальное время. Для [[Эллиптическая кривая|эллиптической кривой]] Наора — Рейнгольда было показано, что существуют такие <math>\gamma > 0</math> и <math>n \geqslant (1+\gamma)\log l</math>, что для любого <math>\delta > 0 </math> и достаточно большого <math>l</math> линейная сложность <math>L_a</math> последовательности <math>(u_k)_{k=0}^{2^n -1}</math> удовлетворяет следующему неравенству<ref name=":2" />:


:<math>L_{a} \geqslant \min\left(l^{\frac{1}{3} - \delta}, \frac{l^{(\gamma-3\delta)}}{\log^2l}\right)</math>
Для [[Эллиптическая кривая|эллиптической кривой]] Наора — Рейнгольда было показано<ref name=":2" />, что существуют такие <math>\gamma > 0</math> и <math>n \geqslant (1+\gamma)\log l</math>, что для любого <math>\delta > 0 </math> и достаточно большого <math>l</math> линейная сложность <math>L_a</math> последовательности <math>(u_k)_{k=0}^{2^n -1}</math> удовлетворяет следующему неравенству:

:<math>L_{a} \geqslant \min(l^{\frac{1}{3} - \delta}, \frac{l^{(\gamma-3\delta)}}{\log^2l})</math>


для всех, кроме не более чем <math>O((l - 1)^{n - \delta})</math> векторов <math> a \in (\mathbb F_{l}^*)^{n+1} </math>.
для всех, кроме не более чем <math>O((l - 1)^{n - \delta})</math> векторов <math> a \in (\mathbb F_{l}^*)^{n+1} </math>.

Версия от 15:28, 29 ноября 2019

Псевдослучайная функция Наора — Рейнгольда — псевдослучайная функция[англ.], введённая в 1997 году Мони Наором[англ.] и Омером Рейнгольдом[англ.] для построения различных криптографических примитивов в симметричном шифровании и криптографии с открытым ключом[1]. Отличительными особенностями данной псевдослучайной функции являются низкая [[вычислительная сложность|вычислительная сложность[⇨]]] и высокая криптографичекая стойкость[⇨]. Данные свойства вместе с тем фактом, что распределение значений данной функции близко к равномерному[⇨], позволяют использовать ее в качестве основы для многих криптографических схем[⇨].

Постановка

В криптографии под семейством псевдослучайных функций понимают набор функций (которые могут быть эффективно вычислены за полиномиальное время), обладающих следующим свойством: злоумышленник не может эффективно найти какое-либо существенное различие между поведением функции из данного семейства и истинной случайной функции[2]. Пусть — это -битное простое число,  — простое число, являющееся делителем , а , — некоторый элемент с мультипликативным порядком по модулю . Тогда функция Наора — Рейнгольда определяется некоторым -мерным вектором над полем и равна:

где  — это двоичное представление целого числа , с добавлением ведущих нулей, если это необходимо[3].

Пример

Пусть и . В качестве с мультипликативным порядком можно выбрать . Тогда при , и функция вычисляется как

Так как двоичное представление числа  — это .

Вычислительная сложность

Построение псевдослучайной функции Наора — Рейнгольда требует умножений по модулю и одно возведение в степень также по модулю , которое может быть сделано за [1][4].

Для схемной сложности[англ.] данной функции было показано, что существует такой полином , что для любого , может быть реализована схемой из пороговых элементов глубины и размера, не превышающего . Это означает, что функции Наора — Рейнгольда принадлежит классу TC0[англ.] в терминах булевых схем[англ.][1].

Применение псевдослучайной функции

Псевдослучайная функция Наора — Рейнгольда может быть использована в качестве основы многих криптографических схем, включая симметричное шифрование, аутентификацию и электронные подписи[5][2].

Также было показано, что данная функция может быть использована в[6]:

Безопасность псевдослучайной функции

Псевдослучайная функция Наора — Рейнгольда имеет высокую криптографичекую стойкость. Пусть злоумышленнику известны значения функции в нескольких точках: и ему необходимо вычислить . Если , то чтобы получить , злоумышленнику необходимо решить Шаблон:Iw5 для и . Но по Шаблон:Iw5 не существует эффективного алгоритма, способного решить данную задачу[1].

Поток чисел генерируемый псевдослучайной функцией также должен быть непредсказуемым, то есть, он должен быть неотличим от совершенно случайного набора чисел. Пусть обозначает алгоритм, который имеет доступ к оракулу, который вычисляет . Предположим, что предположение Диффи — Хеллмана[англ.] выполняется для . Тогда для любого вероятностного полиномиального алгоритма и достаточно большого выполнено[7]:

, где  — пренебрежимо мало.

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

Линейная сложность

Одним из естественных показателей того, насколько последовательность может быть полезной для криптографических целей, является её линейная сложность. Линейная сложность -элементной последовательности , над кольцом  — это длина кратчайшего линейного рекуррентного соотношения , где [3][8]. Для функции Наора — Рейнгольда было показано, что существуют такие и , что для любого и достаточно большого линейная сложность последовательности , , удовлетворяет следующему неравенству[3]:

для всех, кроме не более чем векторов .

Равномерность распределения

Статистическое распределение экспоненциально близко к равномерному распределению почти для всех векторов :

пусть  — расхождение[англ.] множества или, другими словами, отклонение распределения значений псевдослучайной функции от равномерного распределения. Было показано, что если  — это битовая длина , тогда для всех векторов справедливо неравенство , где[9]:

и .

Это свойство не имеет непосредственного криптографического значения, но если бы оно не было выполнено, это могло бы повлечь катастрофические последствия для применения функции[9].

Последовательности на эллиптической кривой

Анализ эллиптической кривой этой функции позволяет улучшить криптографическую стойкость соответствующей системы. Пусть  — простое число и  — эллиптическая кривая над . Тогда любой вектор определяет конечную последовательность в подгруппе , где  — битовое представление , а , — некоторый элемент на с мультипликативным порядком . В таких обозначениях последовательность эллиптической кривой Наора — Рейнгольда определяется как , где  — это абсцисса [8].

Если предположение Диффи — Хеллмана выполнено, то индекса не достаточно для вычисления за полиномиальное время. Для эллиптической кривой Наора — Рейнгольда было показано, что существуют такие и , что для любого и достаточно большого линейная сложность последовательности удовлетворяет следующему неравенству[8]:

для всех, кроме не более чем векторов .

См. также

Примечания

  1. 1 2 3 4 Moni Naor, Omer Reingold. Number-theoretic constructions of efficient pseudo-random functions // Journal of the ACM. — 2004-03-01. — Т. 51, вып. 2. — С. 231–262. — ISSN 0004-5411. — doi:10.1145/972639.972643.
  2. 1 2 Thierry Mefenza Nountu. Pseudo-random generators and pseudo-random functions : cryptanalysis and complexity measures (англ.). — 2017-11-28.
  3. 1 2 3 Igor E. Shparlinski. Linear complexity of the Naor–Reingold pseudo-random function // Information Processing Letters. — 2000-12. — Т. 76, вып. 3. — С. 95–99. — ISSN 0020-0190. — doi:10.1016/s0020-0190(00)00133-2.
  4. Ernest F. Brickell, Daniel M. Gordon, Kevin S. McCurley, David B. Wilson. Fast Exponentiation with Precomputation (англ.) // Advances in Cryptology — EUROCRYPT’ 92 / Rainer A. Rueppel. — Berlin, Heidelberg: Springer Berlin Heidelberg, 1993. — Vol. 658. — P. 200–207. — ISBN 978-3-540-56413-3. — doi:10.1007/3-540-47555-9_18.
  5. Aggelos Kiayias, Stavros Papadopoulos, Nikos Triandopoulos, Thomas Zacharias. Delegatable pseudorandom functions and applications // Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security - CCS '13. — New York, New York, USA: ACM Press, 2013. — ISBN 978-1-4503-2477-9. — doi:10.1145/2508859.2516668.
  6. Oded Goldreich, Shafi Goldwasser, Silvio Micali. On the Cryptographic Applications of Random Functions (Extended Abstract) (англ.) // Advances in Cryptology / George Robert Blakley, David Chaum. — Berlin, Heidelberg: Springer Berlin Heidelberg, 1985. — Vol. 196. — P. 276–288. — ISBN 978-3-540-15658-1. — doi:10.1007/3-540-39568-7_22.
  7. Algorithmic number theory : third international symposium, ANTS-III, Portland, Oregon, USA, June 21-25, 1998 : proceedings. — Berlin: Springer, 1998. — x, 640 pages с. — ISBN 3-540-64657-4, 978-3-540-64657-0.
  8. 1 2 3 Marcos Cruz, Domingo Gómez, Daniel Sadornil. On the linear complexity of the Naor–Reingold sequence with elliptic curves // Finite Fields and Their Applications. — 2010-09. — Т. 16, вып. 5. — С. 329–333. — ISSN 1071-5797. — doi:10.1016/j.ffa.2010.05.005.
  9. 1 2 Igor E. Shparlinski. On the Uniformity of Distribution of the Naor–Reingold Pseudo-Random Function // Finite Fields and Their Applications. — 2001-04. — Т. 7, вып. 2. — С. 318–326. — ISSN 1071-5797. — doi:10.1006/ffta.2000.0291.

Литература

  • Naor, Moni; Reingold, Omer (2004), "Number-theoretic constructions of efficient pseudo-random functions", Journal of the Association for Computing Machinery, 51: 231—262
  • Shparlinski, Igor (2003), Cryptographic Applications of Analytic Number Theory: Complexity Lower Bounds and Pseudorandomness (first ed.), Birkhäuser Basel, ISBN 978-3-7643-6654-4
  • Goldreich, Oded (1998), Modern Cryptography, Probabilistic Proofs and Pseudorandomness (first ed.), Springer, ISBN 978-3-540-64766-9