0

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

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 ускорит процесс шифрования данных благодаря упрощенному набору криптоалгоритмов.

via OpenNET
Source: блог Google Online Security