Руслан Жук – Искра надежды (страница 1)
Руслан Жук
Искра надежды
Технология 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-ричной арифметики и возвращает результат.