Написать пост

Google представила открытую криптографическую библиотеку Tink

Аватар Наташа Маркова

Корпорация уже начала использовать ее в AdMob, Google Pay, Google Assistant и других своих внутренних проектах.

Обложка поста Google представила открытую криптографическую библиотеку Tink

Google представила открытую криптографическую библиотеку Tink с поддержкой языков Java, C++ и Objective-C, а также экспериментальной поддержкой Go и JavaScript. Примитивы продукта используют форк BoringSSL и фреймворк Java Cryptography Architecture.

Tink

Даже небольшие ошибки при использовании криптографических методов могут иметь серьезные последствия, а их тщательное изучение занимает десятилетия, пишет компания в своем блоге. Многие разработчики не имеют столько времени, поэтому при создании нового инструмента корпорация старалась сократить количество потенциальных ошибок работы с криптографическими API. Компания уже использует Tink в проектах AdMob, Google Pay, Google Assistant, Firebase и Android Search App.

Примитивы

В основе программного интерфейса лежат следующие примитивы:

  • AEAD (Authenticated Encryption with Associated Data) для симметричного шифрования блоков и потоков данных по фиксированному ключу. Инструмент не требует определения конкретных алгоритмов и их параметров. С его помощью можно быстро выполнить операции шифрования и дешифрования:import com.google.crypto.tink.Aead;import com.google.crypto.tink.KeysetHandle;import com.google.crypto.tink.aead.AeadFactory;import com.google.crypto.tink.aead.AeadKeyTemplates;// 1. Generate the key material.KeysetHandle keysetHandle = KeysetHandle.generateNew(AeadKeyTemplates.AES256_EAX);// 2. Get the primitive.Aead aead = AeadFactory.getPrimitive(keysetHandle);// 3. Use the primitive.byte[] plaintext = ...;byte[] additionalData = ...;byte[] ciphertext = aead.(plaintext, additionalData);
  • MAC (Message Authentication Codes) предоставляет коды аутентификации сообщений.

В Tink есть функции создания цифровой подписи и ее проверки, а также функции быстрого гибридного шифрования.

Особенности работы

Каждый примитив поддерживает работу в stateless-режиме, безопасные операции копирования и использование ключей длиной от 128 бит. Библиотека автоматически блокирует потенциально небезопасные операции, например, загрузку ключей из незашифрованных файлов на диске. Tink предоставляет API для ротации ключей и взаимодействия с внешними системами управления ключами: Google Cloud KMS, Amazon KMS, Android Keystore и Apple iOS KeyChain.

Библиотека имеет модульную архитектуру, позволяет подключать кастомные примитивы и заменять ими существующие без изменения программного кода конечных приложений. Из Tink можно исключать часть инструментов. Например, если в программе используется только проверка цифровой подписи, то для уменьшения размера кода приложения можно удалить компоненты симметричного шифрования.

В августе 2018 года создатели VPN-протокола WireGuard объявили о создании криптографической библиотеки Zinc, которая после внедрения в основное ядро Linux ускорит процесс шифрования данных благодаря упрощенному набору криптоалгоритмов.

Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий2К показов