Параметр iron.defaults представляет собой
централизованный набор значений по умолчанию, используемых библиотекой
для операций сериализации, шифрования и защиты данных. Он задаёт базовую
конфигурацию, которая применяется при вызовах функций упаковки и
распаковки защищённых объектов, если разработчик явно не передал
собственные настройки.
Основная цель iron.defaults — обеспечить единообразное
поведение криптографических операций и снизить вероятность ошибок,
связанных с неполной или некорректной конфигурацией.
В основе механизма работы лежит принцип предсказуемой конфигурации: все критически важные параметры должны иметь значения по умолчанию, которые:
iron.defaults выступает как глобальный шаблон, который
используется при каждом вызове функций шифрования и проверки целостности
данных.
Типичная структура объекта iron.defaults включает набор
параметров, связанных с криптографией, временем жизни защищённых данных
и алгоритмами проверки целостности.
Пример логической структуры:
iron.defaults = {
password: undefined,
encryption: 'aes-256-cbc',
integrity: 'sha256',
ttl: 0,
timestampSkewSec: 60,
localtimeOffsetMsec: 0
};
Каждое поле отвечает за определённый аспект безопасности или поведения библиотеки.
Поле password является базовым элементом конфигурации.
Оно используется как ключевой секрет для симметричного шифрования
данных.
В контексте iron.defaults это поле часто оставляют
пустым, чтобы требовать явного задания ключа на уровне приложения.
Поле encryption определяет алгоритм симметричного
шифрования, применяемого к полезной нагрузке.
Наиболее часто используемое значение:
aes-256-cbcЭтот алгоритм обеспечивает баланс между производительностью и криптографической стойкостью.
Алгоритм шифрования отвечает за:
Поле integrity определяет алгоритм проверки целостности
данных.
Чаще всего используется:
sha256Интеграционная часть играет критическую роль, поскольку даже при невозможности расшифровать данные система должна уметь определить факт их модификации.
ttl задаёт время жизни защищённого объекта в
миллисекундах.
0 — отсутствие ограничения по времени;TTL особенно важен в сценариях:
Параметр timestampSkewSec определяет допустимое
отклонение системного времени при проверке TTL.
В распределённых системах часы на разных серверах могут отличаться. Этот параметр компенсирует такие расхождения.
Этот параметр задаёт смещение локального времени относительно UTC в миллисекундах.
В большинстве случаев значение устанавливается автоматически или остаётся равным нулю.
iron.defaults используется как базовый слой
конфигурации. При вызове функций типа seal/unseal происходит следующая
логика:
defaults.Такой подход позволяет:
В системе настроек действует строгая иерархия:
iron.defaultsЭто гарантирует, что разработчик всегда может переопределить поведение, не изменяя глобальную конфигурацию.
Использование iron.defaults напрямую связано с моделью
безопасности библиотеки.
Ключевые аспекты:
Особенно важно, что password не должен иметь разумного
дефолтного значения, так как это нарушило бы модель безопасности.
Разработчики могут изменять iron.defaults для адаптации
библиотеки под конкретные требования:
Однако любые изменения должны учитывать обратную совместимость и требования криптографической стойкости.
Если часть параметров не задана:
Такой подход предотвращает случайное использование небезопасных режимов работы.