Метод Фибоначчи С Запаздываниями

Запаздывающие генераторы Фибоначчи (англ. lagged Fibonacci generator) — генераторы псевдослучайных чисел, также называемые аддитивными генераторами.

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

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

История

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

    Метод Фибоначчи С Запаздываниями 

носит название последовательность Фибоначчи.

В начале 50-х годов изучался данный алгоритм, однако, исследования показали, что этот генератор, как источник случайных чисел, был неэффективен. Грин (Green), Смит (Smith) и Клем (Klem) предложили доработанную формулу последовательности Фибоначчи в виде:

    Метод Фибоначчи С Запаздываниями 

Однако, положительный результат получался лишь при Метод Фибоначчи С Запаздываниями .

В 1958 году Митчел Дж. Ж. (Mitchell G. J.) и Мур Д. Ф. (Moore D. P.) вывели последовательность:

    Метод Фибоначчи С Запаздываниями  Метод Фибоначчи С Запаздываниями 

где Метод Фибоначчи С Запаздываниями , Метод Фибоначчи С Запаздываниями  — чётное число, Метод Фибоначчи С Запаздываниями  — произвольные целые не все чётные числа. Числа 24 и 55 выбраны так, чтобы определялась последовательность, младшие значащие двоичные разряды Метод Фибоначчи С Запаздываниями  которой имеют длину периода Метод Фибоначчи С Запаздываниями .

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

Числа 24 и 55 обычно называют запаздыванием, а числа Метод Фибоначчи С Запаздываниями , определённые в (1) — последовательностью Фибоначчи с запаздыванием.

Впоследствии, на основе этих работ было подобрано множество запаздываний, которые приводят к длинным периодам по модулю 2.

Формула

Аддитивные генераторы генерируют вместо случайных битов случайные слова.

Для работы аддитивному генератору требуется некое начальное состояние, которое является ключом — набор n-битовых слов: 16-битовых, 32-битовых, 64-битовых слов и т. д. — Метод Фибоначчи С Запаздываниями .

Зная начальное состояние, можно вычислить i-е слово генератора по формуле:

    Метод Фибоначчи С Запаздываниями 

причём период генератора должен быть более или равен Метод Фибоначчи С Запаздываниями .

Примеры алгоритмов, на основе аддитивных генераторов

1) Один из широко распространённых фибоначчиевых генераторов основан на следующей итеративной формуле:

    Метод Фибоначчи С Запаздываниями 

где Метод Фибоначчи С Запаздываниями  — вещественные числа из диапазона Метод Фибоначчи С Запаздываниями , Метод Фибоначчи С Запаздываниями  — целые положительные числа, называемые лагами. При реализации через целые числа достаточно формулы Метод Фибоначчи С Запаздываниями  (при этом будут происходить арифметические переполнения). Для работы фибоначчиеву генератору требуется знать Метод Фибоначчи С Запаздываниями  предыдущих сгенерированных случайных чисел. При программной реализации для хранения сгенерированных случайных чисел используется конечная циклическая очередь на базе массива. Для старта фибоначчиевому генератору требуется Метод Фибоначчи С Запаздываниями  случайных чисел, которые могут быть сгенерированы простым конгруэнтным методом.

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

    Метод Фибоначчи С Запаздываниями 

где Метод Фибоначчи С Запаздываниями  — число битов в мантиссе вещественного числа.

Выбор параметров

Лаги a и b — «магические» и их не следует выбирать произвольно. Рекомендуются следующие значения лагов: Метод Фибоначчи С Запаздываниями , Метод Фибоначчи С Запаздываниями  или Метод Фибоначчи С Запаздываниями . Качество получаемых случайных чисел зависит от значения константы, a чем оно больше, тем выше размерность пространства, в котором сохраняется равномерность случайных векторов, образованных из полученных случайных чисел. В то же время, с увеличением величины константы a увеличивается объём используемой алгоритмом памяти.

Значения Метод Фибоначчи С Запаздываниями  можно рекомендовать для простых приложений, не использующих векторы высокой размерности со случайными компонентами. Значения Метод Фибоначчи С Запаздываниями  позволяют получать числа, удовлетворительные для большинства алгоритмов, требовательных к качеству случайных чисел. Значения Метод Фибоначчи С Запаздываниями  позволяют получать очень качественные случайные числа и используются в алгоритмах, работающих со случайными векторами высокой размерности. Описанный фибоначчиев генератор случайных чисел (с лагами 20 и 5) используется в широко известной системе Matlab (автором первой версии этой системы был Д. Каханер).

В настоящее время подобрано достаточно много пар чисел a и b, приведём некоторые из них:

    Метод Фибоначчи С Запаздываниями 

2) Брюс Шнайер в своей работе «Прикладная криптография» приводит примеры 3-х алгоритмов на основе аддитивных генераторов:

Алгоритм Fish

«Fish — это аддитивный генератор, основанный на методах, используемых в прореживаемом генераторе. Он выдает поток 32-битовых слов, которые могут быть использованы (с помощью XOR) с потоком открытого текста для получения шифротекста или с потоком шифротекста для получения открытого текста. Название алгоритма представляет собой сокращение от Fibonacci shrinking generator — прореживаемый генератор Фиббоначи.

Во-первых, используйте два следующих аддитивных генератора. Ключом является начальные состояния этих генераторов.

    Метод Фибоначчи С Запаздываниями 
    Метод Фибоначчи С Запаздываниями 

Эти последовательности прореживаются попарно в зависимости от младшего значащего бита Метод Фибоначчи С Запаздываниями : если его значение равно 1, то пара используется, если 0 — игнорируется. Метод Фибоначчи С Запаздываниями  — это последовательность используемых слов Метод Фибоначчи С Запаздываниями , a Метод Фибоначчи С Запаздываниями  — это последовательность используемых слов Метод Фибоначчи С Запаздываниями . Для генерации двух 32-битовых слов-результатов Метод Фибоначчи С Запаздываниями  и Метод Фибоначчи С Запаздываниями  эти слова используются парами — Метод Фибоначчи С Запаздываниями .

    Метод Фибоначчи С Запаздываниями 
    Метод Фибоначчи С Запаздываниями 
    Метод Фибоначчи С Запаздываниями 
    Метод Фибоначчи С Запаздываниями 

Этот алгоритм быстр, на процессоре i486/33 реализация Fish на языке С шифрует данные со скоростью 15-Мбит/с. К сожалению он также не безопасен, порядок вскрытия составляет около 240

Алгоритм Pike

«Pike — это обедненная и урезанная версия Fish, предложенная Россом Андерсоном, тем, кто взломал Fish . Он использует три аддитивных генератора. Например:

    Метод Фибоначчи С Запаздываниями 
    Метод Фибоначчи С Запаздываниями 
    Метод Фибоначчи С Запаздываниями 

Для генерации слова потока ключей взгляните на биты переноса при сложении. Если все три одинаковы (все нули или все единицы), то тактируются все три генератора. Если нет, то тактируются только два совпадающих генератора. Сохраните биты переноса для следующего раза. Окончательным выходом является XOR выходов трех генераторов.

Pike быстрее Fish, так как в среднем для получения результата нужно 2.75 действия, а не 3. Он также слишком нов, чтобы ему доверять, но выглядит очень неплохо».

Алгоритм Mush

«Mush представляет собой взаимно прореживающий генератор. Его работу объяснить легко. Возьмем два аддитивных генератора: А и В. Если бит переноса А установлен, тактируется В. Если бит переноса В установлен, тактируется А.Тактируем А и при переполнении устанавливаем бит переноса. Тактируем В и при переполнении устанавливаем бит переноса. Окончательным выходом является XOR выходов А и В. Проще всего использовать те же генераторы, что и в Fish:

    Метод Фибоначчи С Запаздываниями 
    Метод Фибоначчи С Запаздываниями 

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

Примечания

Литература

  • Фергюсон Н., Шнайер Б. Практическая криптография. — Диалектика, 2005. — 418 с.
  • Лифшиц Ю. №9 // Современные задачи криптографии. - Курс лекций.. — Лаборатория мат. логики ПОМИ РАН, 2005.
  • Жельников В. Криптография от папируса до компьютера. — 1996. — 325 с.
  • William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. Numerical Recipes in C: The Art of Scientific Computing. — 1992.
  • Ross Anderson. On Fibonacci Keystream Generators. — Computer Laboratory,. Pembroke Street, Cambridge CB2 3QG.

Ссылки

Tags:

Метод Фибоначчи С Запаздываниями ИсторияМетод Фибоначчи С Запаздываниями ФормулаМетод Фибоначчи С Запаздываниями Примеры алгоритмов, на основе аддитивных генераторовМетод Фибоначчи С Запаздываниями ПримечанияМетод Фибоначчи С Запаздываниями ЛитератураМетод Фибоначчи С Запаздываниями СсылкиМетод Фибоначчи С ЗапаздываниямиАнглийский языкГенератор псевдослучайных чисел

🔥 Trending searches on Wiki Русский:

ССШойгу, Сергей КужугетовичУэст, КаньеRuTracker.orgСмоленскFallout 76Манчестер СитиШаламе, ТимотиСердюков, Анатолий ЭдуардовичPinterestСпециальная военная операцияГеоргиевская лентаКёнигсбергСкинхедыЕльцин, Борис НиколаевичВторжение России на Украину (2022)Российские железные дорогиБуккакэУзбекистанЛеонардо да ВинчиПересильд, Анна АлексеевнаВьетнамСтрейзанд, БарбраДжомолунгмаНиколай IIЯндекс ДискСанада, ХироюкиПригожин, Евгений ВикторовичСталин, Василий ИосифовичЗахват автобуса с детьми в ОрджоникидзеМедаль «За содружество во имя спасения»Зернов, Денис ИгоревичАхматова, Анна АндреевнаЖивотныеДжарвис, КосмоКороль и ШутЛунаИванов, Сергей БорисовичГитлер, АдольфШувалов, Павел АлексеевичРусско-турецкая война (1877—1878)КалининградНаполеон IMrBeastМексикаЯндекс ВидеоТолстой, Пётр ОлеговичСамараМедаль «Генерал армии Хрулёв»Хаверц, КайСунак, РишиТеррористические акты 11 сентября 2001 годаИндонезияКруз, ТомFalloutКуколдКитаева, МарияMinecraftТелефонные коды странСписок государств и зависимых территорий по площадиМигель (хореограф)РумынияСталинградская битваСнигирь, Юлия ВикторовнаМухаммедСолнечная системаШри-ЛанкаWhatsAppДи Каприо, ЛеонардоМосковский метрополитенPornhubМозякин, Сергей ВалерьевичДуров, Павел Валерьевич2023 год в киноЛукашенко, Александр ГригорьевичЦаликов, Руслан Хаджисмелович🡆 More