Автор: Юрий Павленко
Компания: Extra Systems
Год разработки: 2026
Контакты: esbc@extrasystems.biz
ESBC представляет собой 512-битный блочный шифр, разработанный специально для современных 64-битных вычислительных архитектур. В отличие от классических шифров (включая AES), создававшихся в эпоху 32-битных и 8-битных систем, ESBC с самого начала проектировался с учетом возможностей и особенностей сегодняшних процессоров.
Ключевая идея разработки — полная прозрачность алгоритма и отсутствие любых фиксированных констант, которые могли бы служить потенциальными векторами для внедрения закладок (бэкдоров). Все элементы шифра, включая таблицы подстановки (S-блоки) и раундовые ключи, генерируются динамически из пользовательского ключа с использованием сменного генератора псевдослучайных чисел (по умолчанию — RC4, может быть заменен на любой другой PRNG).
| Параметр | Значение |
| Размер блока: | 64 байта (512 бит) |
| Структура блока: | Матрица 8×8 байт (8 uint64_t) |
| Количество раундов: | 32 |
| Количество полураундов: | 2 на каждый раунд (всего 64) |
| Тип S-боксов: | Динамические, ключ-зависимые перестановки 256 элементов |
| Генерация ключей: | Настраиваемый PRNG (реализация по умолчанию — RC4) |
Главная инновация ESBC — двойное применение циклических сдвигов в каждом раунде:
1. Первый сдвиг («shift_encode/shift_decode») — применяется к строкам матрицы до транспонирования.
2. Транспонирование («transpose_the_matrix») — строки становятся столбцами.
3. Второй сдвиг — применяется уже к столбцам исходной матрицы.
Такой подход обеспечивает:
- Горизонтальную диффузию — перемешивание битов внутри строк
- Вертикальную диффузию — перемешивание битов между строками
- Разрушение байтовых границ — сдвиги выполняются на битовом уровне, а не на байтовом
В результате один измененный бит открытого текста после нескольких раундов влияет на хаотически распределенное множество битов шифротекста, что значительно усложняет дифференциальный и линейный криптоанализ.
В ESBC отсутствуют какие-либо фиксированные таблицы или константы непонятного происхождения. Вся ключевая информация создается процедурой «make_key_data» из предоставленного пользователем ключа:
- «shuffle_key» — 8-битные ключи для битового перемешивания (исключены значения 0x00 и 0xFF)
- «shift_key» — значения циклических сдвигов (1-63, исключен 0)
- «xlat_encode_table / xlat_decode_table» — пара обратимых S-боксов (случайные перестановки 256 элементов)
- «step_key» — 64-битные раундовые ключи для сложения
Каждый элемент генерируется независимо, что исключает возможность наличия скрытых зависимостей или закладок на этапе проектирования.
Функции «add_const» и «sub_const» вносят дополнительную нелинейность, зависящую от:
- Номера раунда (i) — кубическая зависимость (i+1)³
- Номера полураунда (semi_step) — сдвиг базы
- Позиции строки в матрице (j) — квадратичная зависимость
Результирующая добавка вычисляется по формуле:
d = ((j + s + 1)² × (i + s + 1)³)² // 10-я степень! d ^= (~d << 32) // нелинейное перемешивание
Это гарантирует, что каждая строка матрицы в каждом полураунде получает уникальное псевдослучайное значение.
Главное преимущество ESBC перед существующими стандартами (включая AES) — принципиальная невозможность наличия бэкдоров, основанных на фиксированных константах или S-блоках. Поскольку все таблицы и ключи генерируются динамически из ключа пользователя, не существует "магических чисел", которые могли бы быть специально подобраны для создания скрытых уязвимостей.
При желании пользователь может заменить используемый PRNG (по умолчанию RC4) на любой другой источник случайности, например:
- ChaCha20
- Аппаратный генератор случайных чисел (RDRAND)
- Хеш-функцию в режиме счетчика
Таким образом, безопасность ESBC опирается исключительно на стойкость ключа и выбранного PRNG, а не на доверие к разработчику или стандартизирующим организациям.
В полном соответствии с принципом Керкгоффса (шифр должен оставаться стойким, даже если противнику известны все детали алгоритма, кроме ключа), мы публикуем полный исходный код ESBC. Прозрачность реализации позволяет любому желающему:
- Провести независимый криптоанализ
- Убедиться в отсутствии скрытых закладок
- Адаптировать код под свои нужды (в рамках выбранной лицензии)
- Заменить PRNG на предпочитаемый источник случайности
ESBC предлагает свежий взгляд на блочное шифрование, адаптированный под реалии 64-битных систем и современные требования к прозрачности криптографических алгоритмов. Ключевые инновации — двойные битовые сдвиги до и после транспонирования, полная динамическая генерация всех таблиц и отсутствие фиксированных констант — делают этот шифр не только конкурентоспособным по производительности, но и устойчивым к целому классу потенциальных атак, связанных с закладками на этапе проектирования.
Мы приглашаем криптографическое сообщество к анализу, тестированию и обсуждению нашего подхода.
Контент этой страницы доступен также на украинском, английском, немецком и французском языке.
| © Extra Systems, 2026 |
|