Рейтинг:6

Сдвиговый регистр с обратной связью на основе большинства

флаг br

Регистры сдвига с линейной обратной связью (LFSR) работать, взяв битовую строку фиксированной длины $b\in\{0,1\}^n$, а также фиксированные «отводы» (положения битов) и применение XOR к отводам, что дает один выходной бит, который добавляется в конец $b$ после его смещения.

Теперь XOR — это линейная функция.Естественная нелинейная функция, которую можно использовать на фиксированном наборе отводов, — это своего рода «голос большинства», который работает следующим образом: если большинство отводов $0$, то выводим $1$, наоборот. (Для этого лучше всего иметь нечетное количество нажатий.)

Можно найти простую реализацию регистра сдвига с обратной связью по мажоритарному принципу. здесь.

Конечно, применяя эту процедуру «большинства голосов» снова и снова, это в конечном итоге становится периодическим.

Вопрос. Учитывая фиксированную битовую длину $n$, какова нижняя граница максимальной длины периода, которая может быть достигнута при выборе подходящей начальной строки $b\in \{0,1\}^n$ и подходящий набор кранов?

Кроме того, мне не удалось выяснить, изучалась ли и где эта концепция.

John Deters avatar
флаг cn
Хотя это и не ответ на ваш вопрос, древние мэйнфреймы CDC имели инструкцию «Подсчет населения», CXi Xk, которая выводила число 1 битов, установленных в регистре Xk, для регистрации Xi. AKA «поп-счет» или «инструкция АНБ», первоначальное основное практическое использование этого оператора теоретически предполагалось как криптоанализ, предполагая, что это могло быть изучено или известно в 1960-х и 70-х годах. См. https://vaibhavsagar.com/blog/2019/09/08/popcount/#:~:text=Most%20CPU%20architectures%20in%20use%20today%20have%20an,%2800100110%29%20is%203% 20and%20popcount%20%2801100000%29%20 is%202. для получения дополнительной информации.
Dominic van der Zypen avatar
флаг br
Это действительно интересно - спасибо @JohnDeters за этот комментарий! Также я использую функцию в [моей реализации на GitHub] (https://github.com/dominiczypen/Majority_Feedback_Shift_Register/blob/main/mfsr.c), которая на самом деле называется popcount(). Возможно, использование счетчика всплывающих окон, встроенного в ЦП, было бы намного быстрее.
qwr avatar
флаг jp
qwr
x86 также имеет инструкцию popcount https://www.felixcloutier.com/x86/popcnt
b degnan avatar
флаг ca
Кстати, в реальном оборудовании большинство схем занимают много места. Простота, которую вы видите в C, — это несуществующий уровень ворот.
Рейтинг:2
флаг ru

Я бы не стал претендовать на лучшую нижнюю границу, чем 1.

Заметим, что для регистра сдвига с обратной связью по большинству голосов (далее MVFSR) при наличии $2k+1$ кранов, и если в какой-либо момент заполнение регистра имеет не более $к$ нулей (соответственно не более $к$ единицы), то регистр последовательно заполняется единицами (соответственно нулями) и достигает цикла 1.

Точно так же кажется, что есть много субстанциализма в том, что MVFSR с разреженными заполнениями с большим количеством нулей, вероятно, будет давать нулевую обратную связь, а плотные заполнения с большим количеством единиц, вероятно, будут давать одну обратную связь. Эвристически это приведет к уменьшению плотности заполнения от 1/2 к вышеуказанному вырождению.

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

Можно также отметить, что карта от заполнения к заполнению для MVFSR имеет много отображений два к одному, что дает плохую верхнюю границу конечной длины цикла. В общем заполняет где $к+1$ из первых $2k$ отводов ноль или один (т.е. там, где точно нет $к$ нули и $к$ те в первом $2k$ позиции касания) — это заполнения, в которых самый старый бит касания не имеет отношения к обратной связи, поэтому мы создаем два к одному.

poncho avatar
флаг my
На самом деле, следующий бит, который зацикливается, является обратным большинству отводов, поэтому я не верю, что длина цикла равна 1 (поскольку строка идентичных сдвинутых битов в конечном итоге станет большинством, и поэтому сдвиг в противоположном бите). Конечно, длина цикла 2 вполне возможна, если только не позаботиться о размещении отводов...
Dominic van der Zypen avatar
флаг br
Правильно - и извините, если вопрос, возможно, немного ввел в заблуждение... Я хотел спросить, как долго можно достичь периода, умно размещая краны и начальное значение $b$
Рейтинг:2
флаг ng

Я читаю вопрос как запрос $б(п)$, максимально возможное, чтобы мы могли показать различные точки касания (в нечетном количестве), и $n$-битовое состояние, приводящее к периодической последовательности (кратчайшего) периода не менее $б(п)$ шаги.

У меня есть конструкция с $b(n)=2n-2$ за $n\ge3$. Отводы — это следующие три бита, которые выпадают из MVFSR. Состояние — все нули, за исключением следующего бита, который выпадет из MVFSR. Вот иллюстрация с $n=8$: время идет слева направо, MVSFR смещается вниз, следующий бит вводится сверху, три касания отмечены значком *.

   0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0
   0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0
   0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0
   0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0
   0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0
*  0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
*  0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1
*  1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1

Если мы позволим одно касание, мы получим $b(n)=2n$.

я надеюсь, что $б(п)$ может быть улучшена (повышена), возможно, стать экспоненциальной, но это уже более чем $1$ из этот ответ, и $2$ из этот комментарий.

Dominic van der Zypen avatar
флаг br
Большое спасибо за ваш ответ -> было бы здорово увидеть, как $b(n)$ увеличивается до экспоненциального роста даже при небольшом количестве умно размещенных нажатий, может быть, всего на $3$?
Рейтинг:2
флаг ph

Я написал некоторый код, чтобы просто перебрать конфигурации касаний и начальные значения для небольших размеров регистров. Так что у меня есть некоторые значения, а не аналитический результат.Конечно, результаты зависят от отсутствия ошибок в коде (https://github.com/bmm6o/MVFSR).

для ширины 4 максимальная длина цикла 8
для ширины 5 максимальная длина цикла 10
для ширины 6 максимальная длина цикла 12
для ширины 7 максимальная длина цикла 14
для ширины 8 максимальная длина цикла 48
для ширины 9 максимальная длина цикла 48
для ширины 10 максимальная длина цикла 80
для ширины 11 максимальная длина цикла 108
для ширины 12 максимальная длина цикла 140
для ширины 13 максимальная длина цикла 270
для ширины 14 максимальная длина цикла 270
для ширины 15 максимальная длина цикла 270
для ширины 16 максимальная длина цикла 480
для ширины 17 максимальная длина цикла 752
для ширины 18 максимальная длина цикла 1520

Обобщение малых значений может быть рискованным, но кажется, что оно примерно удваивается, когда ширина увеличивается на 2. Эта последовательность отсутствует в OEIS.

Вы, наверное, поняли это, но ваш MVFSR развивается таким образом, что у большинства состояний есть ровно 2 прообраза. Я не уверен, как использовать это для вероятностной оценки распределения длины цикла, но кажется, что это было бы полезно.

Для большинства криптографических целей установление нижней границы максимальной длины цикла не является самым важным вопросом. Гораздо важнее минимальная длина или, по крайней мере, способ охарактеризовать короткие циклы и избежать их. Таким образом, существует серьезная проблема с MVFSR. При оптимальном выборе ответвления имеются циклы длиной всего $2n$.

kodlu avatar
флаг sa
вы говорите, что хотите ограничить минимальную длину цикла, но ваш вывод говорит «максимальная длина цикла»
флаг ph
Правильный. Я не уверен, что ОП задает правильный вопрос, но пока я отвечаю на тот, который был задан. Я планирую получить и другие ответы.
poncho avatar
флаг my
Я провел совершенно независимый поиск максимальной длины цикла (я даже не смотрел ваш код) и пришел к тем же результатам - ваш код кажется правильным
флаг ph
Спасибо, @пончо. Думаю, я просто очень удивлен, что это не монотонно.
poncho avatar
флаг my
Не то чтобы очень удивительно; есть более простые вещи (например, «каков максимальный порядок перестановки над k объектами»), которые также не являются строго монотонными...
poncho avatar
флаг my
Кроме того, я искал в другом направлении «для любой ширины и любого набора нечетного количества нажатий, какова минимальная длина цикла»; для ширины

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

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