The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

30.08.2018 20:24

Компания Google представила открытую криптографическую библиотеку Tink, нацеленную на предоставление простого для корректного применения криптографического API, при использовании которого трудно допустить ошибки, способные привести к снижению безопасности. Предоставляется полноценная поддержка языков Java (в том числе для Android), C++ и Obj-C, а также экспериментальная поддержка Go и JavaScript. Код поставляется под лицензией Apache 2.0.

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

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

Основу программного интерфейса Tink составляет набор криптографических примитивов, каждый из которых охватывает определённую область без углубления в детали, например, для симметричного шифрования по ключу предлагается примитив AEAD, предоставляющий две операции - шифрование и расшифровка, и не требующий от разработчика выбора конкретных алгоритмов шифрования и определения их параметров (например, векторов инициализации (nonce)). Перед использованием примитива выполняется его регистрация, после чего генерируется или загружается необходимый для операции набор ключей и привязывается к примитиву.

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

  • AEAD (Authenticated Encryption with Associated Data) - симметричное аутентифицированное шифрование по фиксированному ключу с опциональной возможностью прикрепления аутентифицированных, но не зашифрованных, связанных данных. Поддерживается как шифрование блоков, так и потоков данных;
  • MAC (Message Authentication Codes) - коды аутентификации сообщений для обеспечения целостности и аутентификации источника данных;
  • Функции для создания цифровой подписи и её проверки (PublicKeySign и PublicKeyVerify);
  • Функции гибридного шифрования, сочетающие скорость симметричного шифрования с удобством шифрования по открытым ключам;

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

Библиотека имеет модульную архитектуру и позволяет подключать свои реализации примитивов и заменять существующие примитивы и компоненты управления ключами, не меняя программный код конечных приложений. Например, в случае выявления уязвимости в каком-то алгоритме шифрования достаточно будет заменить примитив в самой библиотеке и перегенерировать ключи, при этом не трогая код приложений. В текущем виде предлагаемые примитивы базируются на использовании библиотек BoringSSL и Java Cryptography Architecture, которые выступают низкоуровневой основой.

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

  1. Главная ссылка к новости (https://security.googleblog.co...)
  2. OpenNews: Google представил Key Transparency, альтернативу серверам криптографических ключей
  3. OpenNews: Google опубликовал Wycheproof, инструментарий для проверки криптографических библиотек
  4. OpenNews: Разработчики VPN WireGuard представили новую криптографическую библиотеку Zinc
  5. OpenNews: Компания Google представила BoringSSL, форк OpenSSL
  6. OpenNews: Google перешел c OpenSSL на BoringSSL
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49202-google
Ключевые слова: google, crypt, tink
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (33) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Ivan_83 (ok), 23:36, 30/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Очередная попытка зайти на нишу криптолиб, брингссл то никому не впёрся.
     
     
  • 2.11, Аноним (11), 01:27, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да, нормально все с ним. Просто ты его не используешь вот и все.
     
     
  • 3.18, Ivan_83 (ok), 08:12, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Я у себя в коде пока TLS вообще не использую, но когда буду - LibreSSL. И порты у меня все с ним собраны.

    А боринг за пределами гугла почти никто не юзает, можно сказать что он мёртв.
    Как только гугль его забросит он помрёт.

    NSS тоже не очень то популярен.
    Всё потому что они выкидывают/не берут всё что не в ISO/RFC. Ещё боринг на плюсах, это тоже минус.
    Боринг появился скорее всего потому, что гост зашёл в опенссл, а кой кому очень не хотелось и единственный способ был форкнуть.

     
     
  • 4.22, нах (?), 09:30, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    странная идея. libressl сделана людьми, нихрена не сумевшими в ней разобраться, всех достижений - героическое удаление "неправильного" кода, который нормальный (или нормально настроенный) софт не использует, и не менее героическая попытка сначала убедить всех поддерживать ненужнофорк, поломавший в ста элементарнейших местах совместимость, а потом лихорадочный патчинг чтобы вернуть ее назад, потому что большинство даже послать их нax поленились, просто игнорируют.

    ни одной критической проблемы в openssl это им обойти не помогло.

    Своя есть как минимум одна, крошки старательно заметены под коврик, все делают вид что проблемы нет.

    > А боринг за пределами гугла почти никто не юзает

    libressl за пределами полутора фанатских локалхостов openbsd (где выбора просто нет) тоже почти никто не юзает. Причем если пользователи boring еще имеют какие-то серьезные причины ей пользоваться (например последние ускорялки nginx, правда, тех кому оно на самом деле поможет, единицы) помимо "победы над ненужным кодом", то пользующие либру - это просто жертвы промывки мозгов. Уверен, они никогда даже не заглядывали в ее код.

    > Боринг появился скорее всего потому, что гост зашёл в опенссл, а кой кому очень не хотелось

    осспди, вот ведь бред какой... А выглядел вменяемым.

    boring появился, потому что гуглю очень хочется зачем-то затащить всех в tls 1.3, и попутно позапрещать или шантажом вымутить полный отказ от всех предыдущих. (ну или ладно, сформулируем политкорректно - потому что гуглю надоело ждать этих тормозов и были нужны новые возможности и соврешенно не нужны большая часть legacy, им это дорого обходилось) Влияния на разработчиков не хватило, потому что это тюлени, на них никак нельзя повлиять, а своих для форка вполне хватает, а не хватит - индусы новых рожают каждые две секунды.

     
     
  • 5.43, Ivan_83 (ok), 02:56, 01/09/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Боринг появился сильно заранее чем TLS 1.3, не надо притягивать.

    Касательно проблем - есть табличка сравнения, там явно видно что у LibreSSL косяков ощутимо меньше нашлось.
    С LibreSSL (в отличии от боринга) у меня без проблем собирается софт.

     
     
  • 6.46, гугль (?), 12:36, 01/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    машину времени мы пока еще не изобрели, приходится сначала делать форк, а потом реализовывать в нем новые-прекрасные идеи, а не наоборот.

     
  • 4.42, Stax (ok), 02:07, 01/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    LibreSSL тот еще тормоз - от 2 до 6 раз медленнее, чем OpenSSL. Не поддерживает крипто устройства, не умеет мультитредность и т.п. А вот BoringSSL хоть и отстает от OpenSSL, но максимум на десятки процентов, а никак не в разы.

    https://calomel.org/aesni_ssl_performance.html

     
     
  • 5.44, Ivan_83 (ok), 03:00, 01/09/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У меня нет мест где я бы упирался в скорость LibreSSL, и криптоустройств тоже нет.
    Если либра отстаёт при использовании AES-NI то только потому что Тео активирует все подряд защиты при компеляции, а их там реально пачка, как и в OpenSSH.
     
  • 4.50, anonymous (??), 10:46, 10/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > А боринг за пределами гугла почти никто не юзает

    https://github.com/openssl/openssl/commit/4b5f7e7555340db28b285452cfd0cafe1854

     

  • 1.3, Отражение луны (ok), 23:41, 30/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Не смотря на мнение здешних хомяков Гугл очередной раз продемонстрировал, что  понимает основной источник избегаемых уязимостей - сам человек.
     
     
  • 2.15, Аноним (15), 03:30, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Только доходило до него это долго, NaCl появился 10 лет назад. Чем кстати эта гуглоподелка лучше?
     
     
  • 3.37, Анончик (?), 12:20, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Меньше доступа к низкоуровневым примитивам (соответственно, меньше всего может пойти не так). Чуть лучше, судя по всему, продуманная эргономика АПИ.

    Как конкретный пример: вызовы, требующие nonce, в Tink сами этот нонс генерят автоматически; а в NaCl это оставляется на усмотрение разработчика, и это один из самых частых источников ошибок.

     

  • 1.4, Петросян (?), 23:45, 30/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +13 +/
    защищенный линух от интела, криптографическая либа от гугла. Ждем сесурный андроид от яндекса
     
     
  • 2.5, Задорнов (?), 23:54, 30/08/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Уже был. Яндекс.Кит называется.
     
     
  • 3.6, Отражение луны (ok), 00:08, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Смысл которого был отсудить у Гугла через ФАС
     
  • 3.8, Аноним (8), 00:16, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А какого цвета он был?
     
     
  • 4.9, LineageOS (?), 00:34, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Такого же как любой другой с гугл сервисами.
     
  • 2.13, Вадик (??), 01:32, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Уже. Или ты не пользуешься android'ом?
     
  • 2.35, Аноним (35), 12:03, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    и новые стандарты шифрования от секретных служб.
     

  • 1.17, Какаянахренразница (ok), 07:55, 31/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Не поддерживает C??? Не взлетит.
     
  • 1.19, java developer (?), 09:04, 31/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    issue Nr1 - no PHP Implementation
    https://github.com/google/tink/issues/104
     
  • 1.20, Аноним (20), 09:04, 31/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Но зачем?
     
  • 1.24, Аноним (24), 09:31, 31/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > разработчики не имеющие опыта в криптографии

    Читать мануалы и общую литературу им религия не позволяет? Или манагер стоит над душой и зудит "давай-давай"?

     
     
  • 2.27, гугл (?), 10:03, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    тех, которым позволяет, мы нынче не нанимаем - во-первых, они хотят больше денег, во-вторых лезут со своими ценными идеями, вместо того чтоб выполнять команду быстро и не раздумывая.

     
     
  • 3.28, менеджер гугля (?), 10:04, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    к тому же они не из моей деревни, не говорят на моем диалекте хинди (а на английском я ничего не понимаю), и вообще я же должен поддерживать в первую очередь соседей (и их в моем подбангалорском пригороде миллионов этак пять, что-ли)

     
     
  • 4.30, Аноним (30), 10:35, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В Индии-то люди полиглоты.
     
     
  • 5.39, Анонимус_б6_выпуск_3 (?), 13:46, 31/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Индийский английский слышал?
     
     
  • 6.48, Васёк (?), 20:45, 03/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Нормально они говорят. С акцентом порой жутким, но уж будьте уверены, английским там владеют намного лучше, чем в среднем по России.
     
     
  • 7.49, турист (?), 21:43, 03/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    да, ни разу в Бурятии или там, под Магаданом не слышал прекрасного "what is your name? Gimme money!"

    не владеют, точняк! Правда, нахрен он нужен бурятам, неясно - а пару слов по китайски в нужной тональности, как ни удивительно, могут многие.

     

  • 1.26, Аноним (-), 09:47, 31/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А старая либа стала совсем nih?
     
  • 1.36, X4asd (ok), 12:09, 31/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    херня какая-то (простите).

    API для C нет .. да, спасибо конечно за C++ , но наколенные C++поделки в стиле Yandex нам не нужны.

    сборка через какой-то bazel ? почему не через meson?

     
  • 1.45, Аноним (45), 11:56, 01/09/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Как они вовремя - а ешё и аппаратный ключик выкатили на рынок!
    Корпорация "добра" нам пошифровать принесла.
     
  • 1.47, reiniger (ok), 14:38, 01/09/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Google представил криптографическую библиотеку Tink
    > трудно допустить ошибки, способные привести к снижению безопасности

    Криптографическая библиотека от шпионящего за всеми подряд? Это типа как комфортный курятник от лисы! А ведь навяжут её пиндосные корпоратели, навяжут, как своё хромое поделие везде и всюду понапихали!

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру