Настройка алгоритма шифрования

В основе Iron лежит механизм «sealing» — упаковки произвольных данных в криптографически защищённую строку. Архитектура построена на двух ключевых слоях:

  • симметричное шифрование полезной нагрузки
  • криптографическая проверка целостности и подлинности

Данные проходят последовательную обработку: сериализация → шифрование → вычисление MAC → кодирование в безопасный формат. Каждый слой конфигурируется отдельно, что позволяет тонко управлять балансом между безопасностью и производительностью.


Алгоритмы шифрования

Основной алгоритм шифрования в Iron — симметричный блочный шифр AES. В типовой конфигурации используется режим CBC с 256-битным ключом.

AES-256

Характеристики используемой схемы:

  • блочный шифр с фиксированным размером блока (128 бит)
  • ключ длиной 256 бит
  • режим цепочки блоков (CBC)
  • случайный IV для каждого сообщения

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


Параметры конфигурации алгоритма

Конфигурация шифрования в Iron определяется набором параметров:

  • encryption: выбор алгоритма шифрования
  • password: исходный секрет для генерации ключа
  • saltBits: размер соли для ключевого деривационного процесса
  • iterations: количество итераций PBKDF2
  • algorithm: хэш-функция для HMAC и деривации ключа

Каждый параметр влияет на устойчивость к атакам перебора и на производительность операций seal/unseal.


Настройка AES-256

Базовая схема шифрования использует AES-256-CBC. Ключ генерируется через PBKDF2 из пароля и соли:

K = PBKDF2(password, salt, iterations)

Далее ключ используется для симметричного шифрования:

C = AES_{256-CBC}(K, IV, P)

где:

  • P — исходные данные
  • IV — случайный вектор инициализации
  • C — шифротекст

Настройка AES в Iron обычно не требует ручной замены алгоритма, однако параметры режима могут быть переопределены через конфигурацию.


Настройка целостности данных (HMAC)

Поверх шифрования добавляется слой проверки целостности через HMAC. Он защищает от модификации зашифрованных данных.

HMAC = H(K_{mac}, C)

Где:

  • (K_{mac}) — ключ для MAC, производный от основного секрета
    1. — шифротекст

Используемая хэш-функция обычно SHA-256:

SHA-256

Выбор более сильного алгоритма увеличивает криптостойкость, но снижает скорость обработки. SHA-1 в современных конфигурациях рассматривается как устаревший вариант.


Параметры PBKDF2 и генерация ключей

Ключевой этап настройки алгоритма — контроль функции деривации ключа. PBKDF2 используется для превращения пароля в криптографический ключ фиксированной длины.

DK = PBKDF2(P, S, c, dkLen)

Где:

  • P — пароль
  • S — соль
  • c — число итераций
  • dkLen — длина ключа

Увеличение числа итераций повышает стойкость к brute-force атакам, но увеличивает время выполнения операций seal/unseal.

Практическая настройка включает:

  • минимальный безопасный порог итераций — десятки тысяч
  • увеличение saltBits снижает вероятность радужных таблиц
  • фиксированная длина ключа под AES-256 — 32 байта

Конфигурационные профили безопасности

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

Базовый профиль

  • AES-256-CBC
  • SHA-256
  • PBKDF2 с умеренным числом итераций
  • стандартная длина соли

Характеризуется балансом скорости и защиты, применяется в некритичных системах.


Усиленный профиль

  • увеличенное число итераций PBKDF2
  • расширенная соль
  • строгий контроль целостности через HMAC-SHA-256
  • защита от timing-атак за счёт унифицированного времени операций

Подходит для хранения сессионных токенов и чувствительных данных.


Максимально защищённый профиль

  • максимальные значения PBKDF2 итераций
  • увеличенная энтропия соли
  • строгая криптографическая проверка целостности
  • минимизация предсказуемых параметров шифрования

Используется в системах с повышенными требованиями к безопасности, где производительность вторична.


Влияние параметров на поведение алгоритма

Изменение каждого параметра влияет на криптографические свойства:

  • увеличение iterations усиливает защиту от перебора
  • увеличение saltBits снижает риск предвычислений
  • выбор SHA-256 повышает стойкость HMAC
  • AES-256 обеспечивает устойчивость к практическим атакам на симметричное шифрование

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


Пример конфигурации алгоритма

const Iron = require('@hapi/iron');

const options = {
  password: 'secure-password-should-be-long',
  encryption: {
    algorithm: 'aes-256-cbc'
  },
  integrity: {
    algorithm: 'sha256'
  },
  ttl: 24 * 60 * 60 * 1000,
  timestampSkewSec: 60,
  localtimeOffsetMsec: 0,
  saltBits: 256,
  iterations: 100000
};

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