Сверхвозрастающая последовательность
Сверхвозрастающей называется последовательность, каждый член которой больше суммы всех предыдущих членов. Более формально, последовательность положительных целых чисел — сверхвозрастающая, если выполнено условие[1]Шаблон:Sfn:
Данный класс последовательностей широко используется в ранцевой криптосистеме Меркля-Хеллмана.
Например, является сверхвозрастающей, а — нет.
Способы построения сверхвозрастающей последовательности
Пусть перед нами стоит задача построить сверхвозрастающую последовательность для некоторого количества объектов . Элемент выбирается случайным образом из равномерного распределения натуральных чисел по такому отрезку: . Следующий элемент выбирается равномерно из отрезка , идущий за ним член последовательности выбирается из отрезка , элемент случайным образом выбирается из отрезка . Очевидно, что при подобных распределениях членов последовательности условие сверхвозрастаемости будет выполняться, так как нижняя граница каждого отрезка в точности равна увеличенной на единицу сумме всех правых границ предыдущих отрезковШаблон:Sfn. Для примера построим таким способом несколько сверхвозрастающих последовательностей при :
| n | Отрезок | Пример 1 | Пример 2 | Пример 3 |
|---|---|---|---|---|
| 1 | 5 | 10 | 32 | |
| 2 | 56 | 49 | 64 | |
| 3 | 98 | 113 | 97 | |
| 4 | 225 | 225 | 225 | |
| 5 | 481 | 510 | 493 |
Построение со случайно выбранным шагом
Если — случайно выбранные числа, то остальные элементы сверхвозрастающей последовательности можно найти из неравенстваШаблон:Sfn:
Пусть , . Тогда, для примера, последовательность удовлетворяет условию и является сверхвозрастающей.
Построение на основе последовательности Фибоначчи
Шаблон:Основная статья Каждый элемент последовательности Фибоначчи удовлетворяет соотношению: , нулевой и первый члены которого: . Из этого видно, что первые члены последовательности Фибоначчи: . Иногда можно столкнуться с обобщенной последовательностью Фибоначчи. Это последовательность, члены которой выполняют условие уравнения: . То есть обобщённая последовательность получается из классической путем изменения первых двух членов последовательности Фибоначчи и сохраняет принцип образования следующих членов. Для построения сверхвозрастающей последовательности используется форма именно обобщённой последовательности Фибоначчи. Для того, чтобы вычислить любой член сверхвозрастающей последовательности , необходимо выбрать четыре элемента: два начальных ( и ) и два положительных множителя ( и )Шаблон:Sfn.
Получаем следующие случаи:
- Последовательность удовлетворяет условию сверхвозрастаемости при .
- Последовательность не является сверхвозрастающей при .
- При последовательность начинает удовлетворять условию сверхвозрастаемости после нескольких итераций.
- При последовательность остаётся сверхвозрастающей.
Для примера возьмём . Первые элементы полученной сверхвозрастающей последовательности: .
Построение по имеющейся сверхвозрастающей последовательности
Условию сверхроста удовлетворяет ряд степеней числа . Зная сверхвозрастающую последовательность , можно построить новую с помощью набора . Для реализации необходимо применить к набор следующих операцийШаблон:Sfn:
Подробный пример для выбранной сверхвозрастающей последовательности :
Получили новую сверхвозрастающую последовательность .
Использование сверхвозрастающей последовательности в криптографии
Сверхвозрастающие рюкзаки
Шаблон:Основная статья Криптосистема Меркла-Хеллмана основана на «задаче о рюкзаке» — алгоритме шифрования с открытым ключом — описанном ниже. Задача выглядит следующим образом: задана последовательность неповторяющихся положительных целых чисел. Пусть число также принадлежит множеству натуральных чисел. Если такое возможно, необходимо найти набор псевдослучайной двоичной последовательности , чтобы выполнялось условие: Шаблон:Sfn.
Пусть — сверхвозрастающая последовательность. В таком случае мы сталкиваемся с «лёгкой» проблемой рюкзака, которую не составляет труда решить. Для этого сравнивается с элементом . Если , то , значение уменьшается на и происходит переход к члену последовательности . Действие повторяется, пока процесс не закончится. Если в итоге , то решение задачи найдено в виде последовательности , в противном случае — его не существуетШаблон:Sfn.
Если последовательность не сверхвозрастающая (или нормальная), то рюкзаки представляют собой «трудную» проблему, решить которую можно только перебором всех возможных вариантов.
Закрытый ключ в алгоритме Меркла-Хеллмана — это последовательность весов проблемы сверхвозрастающего рюкзака, в свою очередь открытый ключ — это последовательность весов проблемы нормального рюкзака с тем же решением. Существует способ преобразования проблемы сверхвозрастающего рюкзака в проблему нормального рюкзака посредством модульной арифметики. Для того, чтобы получить нормальную последовательность рюкзака, будем использовать сверхвозрастающую последовательность рюкзака. Для примера возьмём последовательность чисел: , и умножим по модулю каждый элемент этой последовательности на число . На накладывается условие: значение модуля должно быть больше суммы всех элементов последовательности, например, . А множитель должен быть взаимно простым числом с модулем, например, . В таком случае нормальной последовательностью рюкзака будетШаблон:Sfn:
Получаем нормальную последовательность чисел: . Сверхвозрастающая последовательность рюкзака является закрытым ключом, а нормальная последовательность рюкзака — открытым.
Схема многостороннего разделение секрета
Схема многостороннего разделения секрета с использованием сверхвозрастающей последовательности была предложена в 2017 году. Уникальность схемы состоит в том, что она не только является многосторонней, но и реализует структуру последовательного доступа по уровням. В алгоритме используется схема Шамира, а точнее генерация долей секрета, за которой следует фаза восстановления секретаШаблон:Sfn.
Приведём алгоритм реализации схемы многостороннего разделения секрета.
Генерация долей секрета Шаблон:Sfn
Шаг 1.1. Выбирается секрет , где — некоторое простое число, которое известное всем сторонам и задаёт конечное поле размера . Пусть , где — количество участников, между которыми нужно разделить секрет .
Шаг 1.2. Преобразуем секрет в -битную псевдослучайную двоичную систему счисления и сформируем последовательность .
Шаг 1.3. Составим двоичную последовательность длиной из случайно подобранных элементов: .
Шаг 1.4. Используем операцию исключающее «ИЛИ» между элементами последовательностей из Шага 1.2 и Шага 1.3. В результате получаем новую последовательность: .
Шаг 1.5. Построим сверхвозрастающую последовательность случайных чисел длиной : .
Шаг 1.6. Вычисляем сумму , которая будет известна всем участникам. Псевдокод функции:
Function bugsum(a, b);
Input: и .
Output: sum.
sum;
for i r do
sum sum ;
end
return sum;
Шаг 1.7. Выбираем простое число , которое будет объявлено всем участникам, и такое, что: и для , где число уровней, а общее количество участников на уровне .
Шаг 1.8. Распределяем среди всех участников уровня с помощью , где определяет степень многочлена схемы Шамира на уровне . Далее необходимо перевести в десятичную систему элементы последовательности Шага 1.3 и также распределить их по уровню с помощью .
Фаза восстановления секретаШаблон:Sfn
Шаг 2.1. Как минимум, участников восстанавливают секрет на уровне и получают долю для .
Шаг 2.2. На первом уровне проверяется, действительно ли выполняется для суммы, полученной на Шаге 1.6. Если неравенство верно, первый уровень выводит и отправляет на второй уровень новое значение суммы: . В противном случае он выводит и отправляет на следующий уровень и добавляет свой выходной бит в пустую последовательность . Необходимо пройти все уровни, постепенно заполняя последовательность .
Шаг 2.3. На уровне выполняется восстановление секрета и заполнение последовательности . Повторяем вычисления, которые проводились на Шаге 1.4 с операцией исключающее «ИЛИ»: .
Шаг 2.4. Наконец, получили секретную двоичную последовательность, которую можно преобразовать в десятичную, чтобы получить секрет .
Примечания
Литература
Ссылки
- ↑ Richard A. Mollin, An Introduction to Cryptography (Discrete Mathematical & Applications), Chapman & Hall/CRC; 1 edition (August 10, 2000), ISBN 1-58488-127-5