Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Разграничение прав доступа для групп пользователей
    • Создание L7-балансировщика с профилем безопасности Smart Web Security через Ingress-контроллер Application Load Balancer
    • Централизованная публикация в интернете и защита приложений от DDoS
    • Передача логов с виртуальной машины в Cloud Logging
    • Запись логов балансировщика в PostgreSQL
    • Безопасное хранение паролей для GitLab CI в виде секретов Yandex Lockbox
    • Сервисный аккаунт с профилем OS Login для управления ВМ с помощью Ansible
    • Передача логов с Container Optimized Image в Cloud Logging
    • Добавление HTML-страницы для работы SmartCaptcha
    • Создание L7-балансировщика с профилем безопасности
    • Настройка алертов в Monitoring
    • Загрузка аудитных логов в MaxPatrol SIEM
    • Загрузка аудитных логов в SIEM Splunk
    • Загрузка аудитных логов в SIEM ArcSight
      • Какой способ шифрования выбрать?
      • Шифрование с помощью CLI и API Yandex Cloud
      • Шифрование с помощью SDK Yandex Cloud
      • Шифрование с помощью AWS Encryption SDK
      • Шифрование с помощью Google Tink
    • Шифрование для бакета Object Storage на стороне сервера
    • Шифрование секретов в HashiCorp Terraform
    • Управление ключами KMS с HashiCorp Terraform
    • Auto Unseal в HashiCorp Vault

В этой статье:

  • Добавление зависимости
  • Шифрование и расшифрование
  1. Безопасность
  2. Шифрование данных
  3. Шифрование с помощью Google Tink

Шифрование данных с помощью Google Tink

Статья создана
Yandex Cloud
Обновлена 27 декабря 2024 г.
  • Добавление зависимости
  • Шифрование и расшифрование

Tink — это библиотека шифрования от Google, альтернатива AWS Encryption. Библиотека помогает сосредоточиться на задаче шифрования и расшифрования данных, не отвлекаясь на выбор правильного алгоритма и параметров шифрования.

Поддерживаются Java и Go версии клиентов для Tink, позволяющие шифровать и расшифровывать данные на ключах Yandex Key Management Service. Данные шифруются по схеме envelope encryption (объем открытого текста не ограничен).

Добавление зависимостиДобавление зависимости

Перед началом работы необходимо добавить зависимости.

Java
Go

Добавьте зависимости с помощью Apache Maven:

<dependency>
    <groupId>com.yandex.cloud</groupId>
    <artifactId>kms-provider-tink</artifactId>
    <version>2.6</version>
</dependency>

Выполните команду:

go get github.com/yandex-cloud/kms-clients-go/yckmstink

Шифрование и расшифрованиеШифрование и расшифрование

В коде используются следующие переменные:

  • endpoint – api.cloud.yandex.net:443.
  • credentialProvider или credentials – определяет способ аутентификации, подробнее читайте в разделе Аутентификация в SDK Yandex Cloud.
  • keyId – идентификатор ключа KMS.
  • plaintext – открытый текст.
  • ciphertext – шифртекст.
  • aad – AAD-контекст.
Java
Go

Создайте Aead-объект и используйте методы encrypt и decrypt для шифрования и расшифрования данных:

AeadConfig.register();
KmsClients.add(new YcKmsClient(credentialProvider).withEndpoint(endpoint));

String keyUri = "yc-kms://" + keyId;
Aead kmsAead = KmsClients.get(keyUri).getAead(keyUri);
Aead aead = new KmsEnvelopeAead(AeadKeyTemplates.AES256_GCM, kmsAead);

...

byte[] ciphertext = aead.encrypt(plaintext, aad);

...

byte[] plaintext = aead.decrypt(ciphertext, aad);

Создайте aead-объект и используйте методы encrypt и decrypt для шифрования и расшифрования данных:

sdk, err := ycsdk.Build(context, ycsdk.Config{
  Endpoint:    endpoint,
  Credentials: credentials,
})
if err != nil {...}

kmsAead := yckmstink.NewYCAEAD(keyId, sdk)
aead := aead.NewKMSEnvelopeAEAD(*aead.AES256GCMKeyTemplate(), kmsAead)

...

ciphertext, err := aead.Encrypt(plaintext, aad)
if err != nil {...}

...

plaintext, err := aead.Decrypt(ciphertext, aad)
if err != nil {...}

См. такжеСм. также

  • Google Tink.
  • Java-клиент для Tink.
  • Примеры использования Java-клиента для Tink.
  • Go-клиент для Tink.
  • Примеры использования Go-клиента для Tink.

Была ли статья полезна?

Предыдущая
Шифрование с помощью AWS Encryption SDK
Следующая
Шифрование для бакета Object Storage на стороне сервера
Проект Яндекса
© 2025 ООО «Яндекс.Облако»