Понимание ключевых понятий в Tink

Приступая к первой работе с Tink, вам следует усвоить несколько ключевых концепций, прежде чем начать свой путь; они описаны в следующих разделах.

Примитивы

Tink использует примитивы в качестве криптографических строительных блоков, управляющих базовым алгоритмом, что позволяет пользователям безопасно выполнять криптографические задачи. Примитив определяет детали криптографического алгоритма и тип ключа.

Типы ключей

Тип ключа реализует определённый примитив. Большинство примитивов предлагают несколько типов ключей на выбор в зависимости от ваших требований к безопасности, времени выполнения и дисковому пространству. Например, AES128_GCM — это AEAD , быстрый и эффективный для большинства задач. Подробнее см. в разделе «Поддерживаемые типы ключей по языкам» .

Наборы ключей и ручки для них

Tink использует наборы ключей для управления ключами. Набор ключей — это, по сути, набор ключей, обеспечивающий ротацию. Важные свойства набора ключей:

  • Каждый ключ в наборе ключей имеет уникальный идентификатор, уникальный для всего набора ключей. Этот идентификатор обычно добавляется в качестве префикса к каждому полученному шифротексту, подписи или тегу, чтобы указать, какой ключ был использован (подробнее см. в статье «Как Tink маркирует шифротексты »).
  • Только один ключ в наборе ключей может быть первичным . Первичный ключ в наборе ключей — это ключ, который используется в данный момент.
  • Все ключи в наборе ключей должны быть реализациями одного и того же примитива (например, AEAD), но могут иметь разные типы ключей (например, ключ AES-GCM и XCHACHA20-POLY1305).

Каждая реализация Tink предоставляет API для создания и редактирования наборов ключей. Однако мы рекомендуем использовать Tinkey — наш инструмент командной строки.

Пользователи работают с набором ключей, используя дескрипторы набора ключей . Дескриптор набора ключей ограничивает раскрытие конфиденциальной информации ключа. Он также абстрагирует набор ключей, позволяя пользователям получить примитив, который «обёртывает» весь набор ключей. Например, можно получить примитив AEAD для набора ключей с N ключами; шифрование и дешифрование с помощью полученного примитива затем используют первичный ключ из этого набора ключей.

Более подробную информацию см. в разделе «Проектирование набора ключей» .