Google выпустила многоязычную кроссплатформенную криптографическую библиотеку под названием Tink. Идея состоит в том, что у него есть криптографические API-интерфейсы, которые безопасны, просты в правильном использовании и труднее использовать неправильно.
Tink имеет открытый исходный код и построен на основе существующих библиотек, таких как BoringSSL и Java Cryptography Architecture. Однако разработчики улучшили алгоритмы для решения проблем, обнаруженных разработчиками Google, работающими над Project Wycheproof. Wycheproof используется для тестирования криптографических библиотек против известных атак. Он разработан и поддерживается членами группы безопасности Google, но не является официальным продуктом Google. Wycheproof предоставляет тесты для большинства криптографических алгоритмов, включая RSA, шифрование с эллиптической кривой и аутентифицированное шифрование.
Разработчики решили, что Tink поможет программистам, использующим его, избежать потенциальных проблем с безопасностью в их коде. Приведен один пример: базовый режим шифрования требует одноразовых идентификаторов, а повторное использование одноразовых идентификаторов делает его небезопасным. В этом случае Tink останавливает передачу пользователем одноразовых номеров.
Другой способ работы Tink — это изоляция API-интерфейсов для потенциально опасных операций, таких как загрузка ключей открытого текста с диска), что позволяет разработчикам обнаруживать и ограничивать опасное использование.
Тинк поддерживает следующие примитивы:
AEAD (аутентифицированное шифрование с соответствующей датой)
MAC (коды аутентификации сообщений)
Цифровые подписи
Гибридное шифрование
Примитив — это интерфейс, который определяет, какие операции предлагает примитив. Он может иметь несколько реализаций, и пользователь выбирает, какая реализация будет использоваться, указав ключ соответствующего типа. Ключевая структура — это буфер протокола, который содержит все материалы и параметры, необходимые для работы примитива.
Помимо криптографических функций, Tink можно использовать для управления ключами и поддерживает системы удаленного управления ключами (KMS). Текущая версия поддерживает Google Cloud KMS, Amazon KMS и Android Keystore. Поддержка Apple iOS KeyChain планируется в будущей версии. Что касается языковой поддержки, Tink можно использовать с Java, C ++ и Objective-C. В следующей версии запланирована поддержка C #, Go и JavaScript / Node.