[Документация Yandex Cloud](../../index.md) > [Yandex Key Management Service](../index.md) > [Концепции](index.md) > Симметричное шифрование > Версия ключа

# Версия ключа

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

Доступны следующие операции с версиями ключа:
* Создание версии при [ротации ключа](#rotate-key).

    Алгоритм и размер криптографического материала новой версии определяются текущим алгоритмом шифрования ключа.
* Использование версии для шифрования и расшифрования данных.

    У ключа всегда есть основная версия, которая по умолчанию используется в операциях с ключом. Версию можно указать явно, тогда будет использован криптографический материал указанной версии. Прямо или косвенно, любые операции шифрования и расшифрования в KMS используют криптографический материал, содержащийся в одной из версий.
* Удаление версии.

    Нельзя удалить основную версию ключа.

Версии могут находиться в одном из следующих статусов:
* `Active` – версия активна и может использоваться для шифрования и расшифрования данных.
* `Scheduled For Destruction` – версия запланирована к уничтожению. То есть уже неактивна, но при необходимости  ее еще можно восстановить.
* `Destroyed` – версия удалена и не может быть восстановлена.

## Ротация ключа {#rotate-key}

Ротация ограничивает время использования криптографического материала. При ротации у ключа создается новая версия — заново генерируется криптографический материал (параметры определяются алгоритмом, заданным в ключе). Версия ключа, созданная при ротации, становится основной. При необходимости в качестве основной можно указать любую другую активную версию ключа. 

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

Ротация может быть ручной или автоматической. За это отвечает параметр ключа **Период ротации**.

## Удаление версии ключа {#version-distruct}

{% note alert %}

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

{% endnote %}

Чтобы удалить старые версии ключей без негативных последствий, воспользуйтесь методом [reEncrypt](../api-ref/SymmetricCrypto/reEncrypt.md). Эта операция расшифрует переданный шифртекст и зашифрует его основной версией ключа.

{% note info %}

Изменения, вызванные [eventually consistent операциями](consistency.md), становятся «видимыми» для метода reEncrypt с задержкой до трех часов.

{% endnote %}

В целях безопасности удаление происходит отложенно. Можно [запланировать удаление](../operations/version.md#delete) версии, указав время до удаления. Версия, запланированная на удаление, переходит в статус `Scheduled For Destruction`: ее нельзя использовать для шифрования и расшифрования, но все еще можно восстановить. Когда приходит время удаления, статус версии меняется на `Destroyed` и она удаляется безвозвратно.

## Примеры использования {#examples}

* [Шифрование данных с помощью CLI и API Yandex Cloud](../tutorials/encrypt/cli-api.md)
* [Auto Unseal в HashiCorp Vault](../tutorials/vault-secret.md)
* [Безопасная передача пароля в скрипт инициализации](../tutorials/secure-password-script/index.md)