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

Ротация ключей

StarVault использует несколько ключей шифрования для различных целей, поддерживая их ротацию. Это позволяет периодически менять ключи или реагировать на потенциальные утечки и уязвимости. Важно сначала понять высокоуровневую архитектуру, прежде чем изучать ротацию ключей.

Для справки: StarVault запускается в запечатанном состоянии и распечатывается путем предоставления ключей распечатывания. По умолчанию StarVault использует алгоритм разделения секрета Шамира, чтобы разделить корневой ключ на 5 частей, из которых любые 3 необходимы для восстановления мастер-ключа. Корневой ключ используется для защиты ключа шифрования, который используется для защиты данных, записываемых в серверную часть хранилища.

Для поддержки ротации ключей необходимо изменять ключи распечатывания, корневой ключ и ключ шифрования серверной части. Этот процесс делится на две отдельные операции: rekey и rotate.

Операция rekey используется для генерации нового корневого ключа. В процессе выполнения операции можно изменить параметры разделения ключа, что позволяет варьировать количество частей и порог, необходимый для распечатывания. Для выполнения rekey необходимо предоставить количество ключей распечатывания, равное текущему пороговому значению. Это делается для предотвращения выполнения rekey и аннулирования существующего корневого ключа злоумышленником.

Процесс выполнения rekey довольно прост. Операция должна быть инициализирована с новыми параметрами для разделения и порога. После инициализации необходимо предоставлять текущие ключи распечатывания до тех пор, пока не будет достигнут порог. После достижения порога StarVault сгенерирует новый мастер-ключ, выполнит разделение и повторно зашифрует ключ шифрования новым корневым ключом. Затем оператору предоставляются новые ключи распечатывания, а старые ключи распечатывания становятся непригодными для использования.

Операция rotate используется для изменения ключа шифрования, который применяется для защиты данных, хранящихся на сервере. Этот ключ никогда не предоставляется и не виден операторам, у которых есть только ключи распечатывания. Это упрощает процесс ротации, так как не требует участия текущих владельцев ключей, в отличие от операции rekey. При запуске операции rotate генерируется новый ключ шифрования и добавляется в связку ключей. Новые данные, записываемые на серверную часть хранилища, шифруются новым ключом. Старые данные, записанные с предыдущими ключами шифрования, все еще могут быть расшифрованы, поскольку старые ключи сохраняются в связке ключей. Это позволяет выполнять ротацию ключей в режиме онлайн, без дорогостоящего процесса повторного шифрования.

Обе операции, rekey и rotate, могут выполняться в режиме онлайн и в высокодоступной конфигурации. Только активный экземпляр StarVault может выполнять любую из этих операций, но резервные экземпляры могут взять на себя активную роль после выполнения любой из этих операций. Это достигается за счет предоставления возможности обновления резервным экземплярам. Если текущий ключ шифрования - N, а ротация устанавливает N+1, StarVault создает специальный "ключ обновления", который предоставляет ключ шифрования N+1, защищенный ключом N. Этот ключ обновления доступен только в течение нескольких минут, что позволяет резервным экземплярам периодически проверять наличие обновлений. Это позволяет резервным экземплярам обновлять ключи и оставаться синхронизированными с активным StarVault без необходимости выполнения операторами повторного распечатывания.

Конечная точка rotate/config используется для настройки количества операций или временного интервала между автоматическиой ротацией ключа шифрования серверной части.

1. Руководство NIST по ротации

Рекомендуется периодическая ротация ключей шифрования, даже при отсутствии уязвимостей. В связи с характером используемого шифрования AES-256-GCM, ключи следует обновлять после выполнения приблизительно 232 шифрований, следуя рекомендациям публикации NIST 800-38D.

По умолчанию StarVault будет автоматически обновлять ключ шифрования серверной части после достижения 232 операций шифрования.

Операторы могут оценить количество шифрований, суммируя следующие показатели:

  • Метрика телеметрии vault.barrier.put.

  • Метрика vault.token.creation, где метка token_type равна batch.

  • Метрика merkle.flushDirty.num_pages.

  • Индекс WAL.

StarVault периодически сохраняет количество шифрований для поддержки ротации. Эта операция сохранения имеет тайм-аут в 1 секунду, чтобы не влиять на производительность при высокой нагрузке на StarVault. Поскольку сохранение шифрований связана с серверной частью, некоторым системам запечатывания (например, Transit) может потребоваться больше 1 секунды для ответа. В этом случае операторы могут изменить этот тайм-аут, установив переменную окружения VAULT_ENCRYPTION_COUNT_PERSIST_TIMEOUT на большее значение, например, "5 с".