Рейтинг:1

Шифр Эвена-Мансура: эффективные алгоритмы выборки случайной перестановки

флаг cn

Мое понимание шифра Эвена-Мансура следующее:

  • Рисуем случайную перестановку $P$ из множества всех перестановок $P: \{0,1\}^n \стрелка вправо \{0,1\}^n$. Эта перестановка является общедоступной.
  • Генерируем два случайных ключа $k_1, k_2 \in \{0,1\}^n$.
  • Чтобы зашифровать сообщение $m \in \{0,1\}^n$, мы вычисляем $E_{k_1, k_2} = P(m \oplus k_1) \oplus k_2$.

Какие существуют алгоритмы, которые позволяют нам эффективно выбирать (и представлять) перестановку? $P$ из множества всех перестановок из $n$ битовые строки в $n$ битовые строки?

Рейтинг:1
флаг sa

Эвен-Мансур — это теоретическая модель для подтверждения результатов безопасности. Нужно было бы попробовать перестановки $n$ биты, скажем, для $n=128,$ так как полученное пространство $N=2^n$ объекты были бы слишком большими, чтобы их можно было хранить или манипулировать ими. Это похоже на то, что никто не использует чисто случайное равнораспределенное и i.i.d. последовательность битов как ключевой поток в режиме OTP в современной криптографии. Это слишком медленно.

Однако следующий алгоритм дает случайную перестановку на $\{1,2,\ldots, N\}.$ Здесь не делается никаких заявлений об оптимальной эффективности.

КОД ДЛЯ СЛУЧАЙНОЙ ПЕРЕСТАНОВКИ МАЛЕНЬКОГО СПИСКА

Вход: Список $A=[1,2,\ldots, N]$ из $N=2^n$ Предметы.

Задача: переставить значения в $А$ случайно.

Позволять $S:=\{u: и \in A\}.$ Позволять $В:=А$

для каждого $i=1,\ldots,N$ делать

$\quad$ Выберите случайное целое число $j \в S$

$\quad$ Изменить массив $В$ с помощью $B[j]:=A[i]$

$\quad$ Удалять $j$ из набора $S$

конец для Этот алгоритм выбирает $N,$ тогда $N-1$, тогда $N-2$ объекты единообразно и могут генерировать каждую перестановку с равной вероятностью, поскольку это делает $N\!$ выбор. Вывод: Список $А$ теперь случайно.

Существуют более эффективные способы выборки случайных перестановок, см., например, Йенс Густедт, «Эффективная выборка случайных перестановок», Журнал дискретных алгоритмов, Том. 6, выпуск 1, 2006 г. Также взгляните на перетасовку Фишера-Йейтса и перетасовку Кнута, Google вам в помощь.

Приведенный ниже алгоритм не совсем подходит, спасибо @kelalaka за исправление.

Вход: Список $A=\{1,2,\ldots, N\}$ из $N=2^n$ Предметы.

Задача: переставить значения в $А$ случайно.

для каждого $i=0,\ldots,N-1$ делать

$\quad$ Выберите случайное целое число $j$ с $i<j<N.$

$\quad$ Поменять местами записи $А[я]$ и $А[j].$

конец для

Вывод: Список $А$ теперь случайно.

kelalaka avatar
флаг in
Как мы знаем из сравнения сортировки, требуется около $n \log n$ свопов, чтобы превратить несортированный массив обратно в отсортированный. $N$-swap недостаточно для выборки всех перестановок, верно?
флаг pe
Фишер-Йейтс действительно приводит к равномерно случайной перестановке. Рассмотрим количество возможностей для $A[0]$, затем $A[1]$ и т. д.: $N\cdot N-1 \cdot \dots \cdot 1$ ​​= $N!$.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.