The OpenNET Project / Index page

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

Выпуск криптографической библиотеки Botan 3.0.0

12.04.2023 11:56

Доступен выпуск криптографической библиотеки Botan 3.0.0, применяемой в проекте NeoPG, форке GnuPG 2. Библиотека предоставляет большую коллекцию готовых примитивов, используемых в протоколе TLS, сертификатах X.509, шифрах AEAD, модулях TPM, PKCS#11, хэшировании паролей и постквантовой криптографии (подписи на основе хэша и согласование ключей на основе McEliece). Библиотека написана на языке C++ и поставляется под лицензией BSD.

Среди изменений в новом выпуске:

  • В кодовой базе разрешено применение стандарта C++20 (ранее использовался C++11), соответственно, повышены требования к компиляторам - для сборки теперь необходимы как минимум GCC 11, Clang 14 или MSVC 2022. Прекращена поддержка компиляторов HP и Pathscale, а также проектов Google NaCL и IncludeOS.
  • Внесена большая порция изменений, нарушающих обратную совместимость. Удалены многие устаревшие заголовочные файлы, например, специфичные для определённых алгоритмов (aes.h и т.п.). Удалены реализации функций и алгоритмов, ранее объявленных устаревшими (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1). При формировании энтропии для генератора псевдослучайных чисел прекращено использование /proc и /dev/random. Из API удалены некоторых классы (например, Data_Store), структуры и перечисления. По возможности прекращено возвращения и использование голых указателей.
  • Добавлена поддержка протокола TLS 1.3. Прекращена поддержка TLS 1.0, TLS 1.1 и DTLS 1.0. Из реализации TLS удалена поддержка наборов шифров DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK и Camellia CBC, анонимных шифров, хэшей SHA-1.
  • Добавлена поддержка алгоритма постквантовой криптографии Kyber, стойкого к подбору на квантовом компьютере.
  • Добавлена поддержка алгоритма постквантовой криптографии Dilithium для работы с цифровыми подписями.
  • Добавлена поддержка хеширования в формате точки на эллиптической кривой, использующего технику SSWU (draft-irtf-cfrg-hash-to-curve).
  • Добавлена поддержка криптографической хеш-функции BLAKE2b.
  • Предложен новый программный интерфейс T::new_object, возвращающий unique_ptr<T> вместо голого указателя "T*".
  • Добавлены новые функции и API: X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. Добавлен большой набор новых функций для использования в коде на языке Си (C89).
  • В реализации алгоритма Argon2 задействованы инструкции AVX2.
  • Уменьшен размер таблиц в реализациях алгоритмов Camellia, ARIA, SEED, DES и Whirlpool.
  • Предложена новая реализация DES/3DES, защищённая об большинства классов атак по сторонним каналам, оценивающих состояние кэша.
  • Реализация SHACAL2 оптимизирована для систем на базе архитектур ARMv8 и POWER.
  • Код расчёта битов чётности, преобразования bcrypt/base64 и определения типа строки ASN.1 избавлен от поиска в таблицах и теперь не зависит от обрабатываемых данных (выполняется постоянное время)


  1. Главная ссылка к новости (https://github.com/randombit/b...)
  2. OpenNews: Выпуск криптографической библиотеки Botan 2.12.0
  3. OpenNews: Выпуск криптографической библиотеки wolfSSL 5.1.0
  4. OpenNews: Google опубликовал библиотеку для выявления проблемных криптографических ключей
  5. OpenNews: Компания Tesla развивает криптографическую библиотеку liblithium
  6. OpenNews: Выпуск криптографической библиотеки OpenSSL 3.1.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58953-botan
Ключевые слова: botan, crypt
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (34) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:06, 12/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > В кодовой базе разрешено применение стандарта C++20 (ранее использовался C++11)

    Мое увожение, снимаю шляпу. А то некоторые луддиты только-только на C-89 планируют переходить.

     
     
  • 2.3, dasehak (ok), 12:14, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Кто?
     
     
  • 3.11, InuYasha (??), 12:38, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Не я - у меня C++98.
     
     
  • 4.18, Аноним (18), 13:30, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Не я - у меня C++98.

    Ну тоже так себе радость. На современных ++ некоторые вещи делаются менее мерзотно.

     
     
  • 5.32, soarin (ok), 19:12, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как-то асинхронное всё это сетевое дело писал на c++03
    Как без лямбд то тяжело... 🤨
    Страшно, жутко, противно, но что делать.
     
  • 2.4, Аноним (-), 12:14, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Общался с Си плюс-плюсниками, они говорили, что в основном сидят на С++11. На стандарты C++18 или C++20. Переходить не собираются.

    >А то некоторые луддиты только-только на C-89 планируют переходить.

    А-а! пердуны из старой школы, учившие "Си с классами". Ты видимо о них ...

     
     
  • 3.20, keydon (ok), 13:50, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Общался с Си плюс-плюсниками, они говорили, что в основном сидят на С++11. На стандарты C++18 или C++20. Переходить не собираются.

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

     
     
  • 4.24, FF (?), 15:33, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    так говоришь, как будто в суровом капиталистическом банковом энтерпрайзе не какая-нить джава 8
     
     
  • 5.26, жявамэн (ok), 15:37, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    мы мигрируемм на 11.
    свежие проекты на 17 сразу.
    мимо-из-банка-топ3-жява-бекундер
     
  • 5.45, 1 (??), 09:37, 13/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нормально там в капиталистическом банковом энтерпрайзе. COBOL ещё никто не отменял.
     
  • 5.50, _hide_ (ok), 13:44, 14/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    8 ява? Да Вы, батенька, зажрались, 6 с вкраплениями и аптайм контейнера под 10 лет. Вот это суровый интерпарйз, а 8... Не хипстерство, но уже не серьёзно как-то!
     
  • 4.25, FF (?), 15:35, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    и он еще SAP не видел
     
  • 4.28, Аноним (28), 15:46, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Необязательно люди в погонах. Бывают и люди в деловых костюмах, которые не хотят платить за адаптацию легаси или просто большой кодовой базы к новым стандартам.
     
  • 3.31, soarin (ok), 19:07, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > они говорили, что в основном сидят на С++11. На стандарты C++18 или C++20. Переходить не собираются.

    Ну это относительно более-менее, там уже не такая кардинальная разница 🤨
    Хотя и то как-то припрёт: а где optional? в c++17 только? вот это потеря-потерь 😮
    И бомбит 💣 от того, как луддитный вокруг мир 🌏

     
  • 2.5, Аноним (5), 12:14, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • –5 +/
    >C++

    Получаем по полсотни критических выходов за пределы памяти каждый релиз.

     
     
  • 3.6, Аноним (5), 12:16, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Потому что микрософту, гуглу, мозилдле, и т.д., не хватает денег нанять опеннетчика, да?
    Глупый вопрос.
     
  • 3.19, Аноним (18), 13:33, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >>C++ > Получаем по полсотни критических выходов за пределы памяти каждый релиз.

    У сабжа их столько за всю его историю не наберется наверное. Он вообще в списках CVE не отсвечивает. Толи код нормально пишут, толи неуловимый джо, но факт.

     
  • 3.21, keydon (ok), 13:53, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >>C++
    > Получаем по полсотни критических выходов за пределы памяти каждый релиз.

    И как же мы предыдущие 40 лет жили (ну окай, 20, до этого проблемы безопасности на локалхосте волновали меньше)?

     
  • 3.22, Аноним (28), 14:11, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Перестаньте писать на С++ в стиле С.
     

  • 1.23, Аноним (28), 14:18, 12/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Годный, нужный проект
     
  • 1.33, ip1982 (ok), 19:22, 12/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Удалены реализации функций и алгоритмов, ранее объявленных устаревшими (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1)

    Что за манеры? Кому мешало? Не нравится — не используй. А так они нужны как минимум для истории и экспериментов.

     
     
  • 2.44, n00by (ok), 07:59, 13/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное, на новую версию Си++ некому переписывать. Для истории и экспериментов есть старая версия библиотеки.
     

  • 1.35, Ivan_83 (ok), 22:18, 12/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Код расчёта битов чётности, преобразования bcrypt/base64 и определения типа строки ASN.1 избавлен от поиска в таблицах и теперь не зависит от обрабатываемых данных (выполняется постоянное время)

    И во сколько раз оно стало медленее?

     
     
  • 2.36, Аноним (36), 22:55, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это криптография. Тут "не выпустить ни одного бита данных по сторонним каналам" важнее, чем "сэкономить пару десятков тактов".
     
     
  • 3.41, Ivan_83 (ok), 07:34, 13/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Кому как.
     
  • 2.42, n00by (ok), 07:54, 13/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Быстрее стало, т.к. исключили промахи кеша данных.
     
     
  • 3.48, Ivan_83 (ok), 18:33, 13/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нет.
    Я эксперементировал с разными алгоритмами, в том числе base64 с таблицами и без таблиц, с таблицами практически всегда быстрее.
    Для base64 2 таблицы: одна на 64 байт другая на 256, первая влезает в кеш линию вторая требует нескольких кеш линий. Можно предварительно её всовывать в кеш через prefetch.

    Чтобы было понятно: один лукап по таблице заменяет несколько операций как минимум, в некоторых случаях это могут быть десятки и сотни операций (stribog).

     
     
  • 4.49, n00by (ok), 08:30, 14/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В синтетическом тесте таблицы кажутся быстрее, поскольку измеряется множество итераций и таблицы гарантировано оказываются в кеше, кроме первого к ним обращения. На практике как определить время чтения линейки кеша из ОЗУ? Я использовал симулятор конвейера в AMD CodeAnalyst, когда это было актуально (в AMD uProf функциональность отсутствует) - показывало сотни тактов. А "несколько операций" могут выполниться за 1-2 такта. В base64 вычислений существенно меньше, чем в stribog, и применяется алгоритм на данных сравнительно небольшого объёма, так что их сравнивать м.б. не вполне корректно.
     

  • 1.37, Аноним (37), 23:07, 12/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Добавлена поддержка хеширования в формате точки на эллиптической кривой

    В Dual EC DRBG реализовывали генератор случайных чисел на основе эллиптических кривых, ничего хорошего из этого не вышло.

     
     
  • 2.38, Аноним (36), 23:29, 12/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да, давайте плюнем и закопаем целый раздел теории чисел. Потому что в одну из реализаций алгоритма одна контора пыталась вставить бекдор.
     

  • 1.39, Аноним (39), 04:41, 13/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Глупый вопрос, а экспорты они ABI шные делают без плюсового манглинга или где?
     
     
  • 2.43, n00by (ok), 07:57, 13/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нескромный вопрос, а почему Вы сами не смогли найти ответ?

    Though Botan is written in C++ it is possible to use it from some other languages including

    Ready To Use

        C89 - Available out of the box in the header ffi.h. This C interface is also intended to be the preferred way of binding Botan to other languages, as it communicates exclusively through function calls operating on opaque structs, and without transferring ownership of memory. This makes it easy to call using ctypes-style FFI libraries.
        Python - Included in the distribution.
        Ruby
        Rust
        Haskell
        Odin

    Experimental/Work In Progress

        Java
        OCaml

     

  • 1.46, Аноним (46), 11:29, 13/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Поддерживает ли он Russian Trusted Root CA?
     
     
  • 2.47, Аноним (47), 12:57, 13/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    С чего бы библиотеке вообще знать про конкректные CA? Поддерживает любые, добавленные в список корневых сертификатов и использующие не-устаревшие алгоритмы. Используйте те что в стандартном pem формате, а не странный xml, все будет ок (ну, если вы им вообще доверяете).
     

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



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

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