Библиотека Tink помогает разрабатывать безопасный код


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.


Добавить комментарий