реклама
Бургер менюБургер меню

Руслан Жук – Искра надежды (страница 1)

18

Руслан Жук

Искра надежды

Технология FractalCrypto Suite

1. Введение

FractalCrypto Suite представляет собой гибридную криптографическую систему, объединяющую свойства фрактальной геометрии, модульной арифметики и пост-квантовых хэш-функций. Система предназначена для создания высокоэнтропийных гамм, безопасного разделения секретов и шифрования данных в реальном времени, ориентирована на встраиваемые решения и защищённые каналы связи.

Основные принципы:

· Использование итеративного процесса множества Мандельброта в качестве источника детерминированного хаоса.

· Переход к 60-ричной системе счисления для расширения пространства состояний и повышения криптостойкости.

· Применение системы остаточных классов (СОК) для параллельных вычислений и снижения энергопотребления.

· Пост-квантовое усиление через хэш-функцию SHA-3 для обеспечения стойкости к известным атакам.

---

2. Архитектура системы

Система состоит из двух уровней:

1. Аппаратный уровень (опционально): FPGA-ускоритель, реализующий 60-ричную арифметику и генерацию фрактальных последовательностей. Взаимодействие через шину PCIe.

2. Программный уровень: библиотека на языках C/C++ с API для приложений, модуль ядра Linux для работы с FPGA, Python-обёртка и набор скриптов командной строки.

---

3. Математические основы

3.1. Фрактальный генератор на основе множества Мандельброта

Генератор псевдослучайных чисел строится на итерациях отображения:

Z_{n+1} = Z_n^2 + C, \quad Z_0 = 0,

где $C$ — фиксированная комплексная константа, выступающая в роли криптографического ключа.

Для повышения энтропии и нелинейности все числа представляются в 60-ричной системе счисления:

C = \sum_{k=-m}^{n} d_k \cdot 60^k, \quad d_k \in \{0,1,\dots,59\}.

Разрядность выбрана так, чтобы обеспечить достаточную точность и большой период (например, 60⁶⁴ состояний).

На каждой итерации вычисляется новое значение $Z_n$, которое затем хэшируется (например, через SHA-3) для получения выходного блока случайных бит. Количество итераций между выдачами блоков может варьироваться для усиления лавинного эффекта.

3.2. Система остаточных классов (СОК)

Для распараллеливания вычислений и уменьшения разрядности операндов используется представление чисел в системе остаточных классов. Выбирается набор попарно взаимно простых модулей:

\mathcal{M} = \{m_1, m_2, \dots, m_k\}.

Любое целое число $X < M = \prod_{i=1}^k m_i$ представляется кортежем остатков:

X \leftrightarrow (x_1, x_2, \dots, x_k), \quad x_i = X \bmod m_i.

Арифметические операции (сложение, умножение) выполняются независимо по каждому модулю, что позволяет реализовать их параллельно.

В FractalCrypto модули подобраны из условия баланса между вычислительной эффективностью и криптостойкостью. Оптимальный набор:

m_1=11,\; m_2=13,\; m_3=17,\; m_4=19,\; m_5=59,\; m_6=61.

Произведение $M \approx 1.6 \times 10^9$, что достаточно для представления 32-битных чисел с избытком. Малые модули обеспечивают быструю аппаратную реализацию, а модули 59 и 61 повышают энтропию.

3.3. Схема разделения секрета Асмута-Блума с фрактальной добавкой

Для разделения секретного сообщения $D$ на $n$ долей используется схема Асмута-Блума, модифицированная введением фрактальной случайной добавки $r$.

1. Выбирается целое число $r$, генерируемое фрактальным генератором (зависит от ключа и контекста).

2. Вычисляется произведение модулей $M = \prod_{i=1}^n m_i$.

3. Секрет $D$ (представленный как целое число) преобразуется:

D' = D + r \cdot M.

4. Доли вычисляются как остатки от деления $D'$ на каждый модуль:

s_i = D' \bmod m_i, \quad i=1,\dots,n.

Для восстановления секрета используется китайская теорема об остатках: по набору долей $s_i$ восстанавливается $D'$, затем $D = D' \bmod M$, при этом $r$ отбрасывается.

Фрактальная добавка $r$ обеспечивает равномерное распределение долей и защищает от атак, основанных на частичном знании долей.

3.4. Пост-квантовое усиление через хэш-функцию

Все выходные данные фрактального генератора перед использованием в криптографических целях дополнительно хэшируются с помощью SHA3-512 (или SHAKE256). Это:

· исключает возможные корреляции в итерационной последовательности;

· обеспечивает равномерное распределение бит;

· делает систему устойчивой к атакам, использующим свойства фракталов (например, восстановление параметров по конечному числу итераций).

---

4. Программные компоненты (описание)

4.1. Библиотека libfractalcrypto

Библиотека реализует следующие функции (интерфейс на C):

· fc_init(key_material) – инициализация генератора. Параметр key_material – массив байт, преобразуемый в 60-ричные цифры параметра $C$. Процесс преобразования включает интерпретацию ключа как большого целого и его разложение по основанию 60.

· fc_next_block(output) – генерация очередного 512-битного блока псевдослучайных данных. Алгоритм:

1. Выполнить 64 итерации отображения Мандельброта с текущим состоянием $Z$.

2. Полученное комплексное число представить в виде пары 256-битных целых (в СОК).

3. Применить SHA3-512 к конкатенации этих двух чисел.

· fc_crypt(input, output, length) – поточное шифрование/дешифрование. Для каждого блока входных данных длиной до 64 байт вызывается fc_next_block, полученная гамма складывается по XOR с входными данными.

· fc_split_secret(data, data_len, shares, moduli, count) – разделение секрета. Входные данные преобразуются в целое число $D$ (с учётом порядка байт). Генерируется фрактальная добавка $r$ (512 бит). Вычисляется $M$ и $D'$. Для каждого модуля $m_i$ вычисляется $s_i = D' \bmod m_i$. Доли сохраняются в массив shares.

· fc_combine_secret(output, output_len, shares, moduli, count) – восстановление секрета. По долям и модулям с помощью китайской теоремы об остатках восстанавливается $D'$, затем извлекается $D$ как $D' \bmod M$.

Все операции с большими числами реализованы через СОК, что позволяет эффективно использовать параллелизм.

4.2. Драйвер для FPGA (Linux kernel module)

Драйвер предоставляет интерфейс для пользовательских приложений через файл устройства /dev/fractal_crypto. Поддерживаются следующие операции:

· open() – инициализация FPGA, загрузка прошивки (если необходимо).

· ioctl(fd, IOCTL_GET_BLOCK, &buf) – запрос одного 512-битного блока от аппаратного генератора. FPGA выполняет итерации Мандельброта с аппаратной поддержкой 60-ричной арифметики и возвращает результат.