The OpenNET Project / Index page

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

В Python задействованы криптофункции с математическим доказательством надёжности

19.04.2025 10:34

Объявлено об успешном завершении инициативы по замене в Python реализаций криптографических алгоритмов, предлагаемых в модулях hashlib и hmac, на варианты с математическим доказательством надёжности, подготовленные проектом "HACL*". Работа по переходу на функции с математическим доказательством надёжности велась с 2022 года и была инициирована после выявления переполнения буфера в реализации алгоритма SHA3, используемой в Python-модуле hashlib.

В основной репозиторий проекта СPython принят код с новыми реализациями криптографических хэш-функций и алгоритмов HMAC (механизм проверки подлинности сообщений). Все предоставляемые по умолчанию в Python хэш-функции и HMAC заменены на верифицированные варианты. Среди прочего, добавлена реализация HMAC-BLAKE2, использующая SIMD-инструкции AVX2 для ускорения вычислений. Предполагается, что верифицированный код войдёт в состав осеннего релиза Python 3.14.

Новые реализации криптографических функций перенесены из библиотеки HACL*, развиваемой исследователями из французского государственного института исследований в информатике и автоматике (INRIA), подразделения Microsoft Research и университета Карнеги — Меллона. Библиотека HACL* поддерживает типовые криптографические функции, которых достаточно для работы TLS 1.3 и полной поддержки API NaCl (Networking and Cryptography library), такие как Curve25519, Ed25519, AES-GCM, Chacha20, Poly1305, SHA-2, SHA-3, HMAC и HKDF. По производительности библиотека HACL* близка к OpenSSL, но в отличие от последней предоставляет дополнительные гарантии надёжности и безопасности.

Код HACL* написан на подмножестве функционального языка F*, предлагающем систему зависимых типов и уточнений, позволяющих задавать точные спецификации (математическую модель) и гарантировать отсутствие ошибок в реализации при помощи SMT-формул и вспомогательных инструментов доказательства. Эталонный код на F* транслируется в код на языке Си при помощи компилятора KaRaMeL и доступен для интеграции с другими проектами.

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

Процесс перехода на верифицированный код занял два с половиной года и потребовал доработки библиотеки HACL*, функциональность которой была расширена возможностями, необходимыми для прозрачной замены имеющейся функциональности hashlib. Например, в HACL* была добавлена поддержка потокового режима работы HMAC, предоставлены дополнительные режимы работы алгоритмов Blake2, реализован новый API для SHA3, охватывающий все варианты алгоритмов семейства Keccak, обеспечены необходимые средства уведомления об ошибках (например, при проблемах с выделением памяти), разработаны скрипты для автоматизации переноса в репозиторий Python новых версий HACL*.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Уязвимость в библиотеке с основной реализацией алгоритма SHA-3
  3. OpenNews: Mini-C для трансляции программ на языке Си в представление на языке Rust
  4. OpenNews: Утечка токена для полного доступа к GitHub-репозиториям проекта Python
  5. OpenNews: Один из ключевых разработчиков Python отстранён на три месяца из-за нарушения кодекса поведения
  6. OpenNews: Выпуск языка программирования Python 3.13
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63104-python
Ключевые слова: python, crypt, hacl, verify
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (3), 11:39, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Заголовок хайповый. Математически доказана не "надёжность" алгоритмов (чтобы доказать их надёжность надо доказать, что P != NP)), а что в реализации сишники за границы буферов не вышли и что реализация соответствует спецификации, которую именно под неё написали ресёрчеры.
     
     
  • 2.11, Аноним (11), 12:32, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • –5 +/
    > чтобы доказать их надёжность надо доказать, что P != NP

    есть квантовые компы, при чём тут надёжность и П != НП?

     
     
  • 3.16, Аноним (16), 15:09, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://opennet.ru/61700-nist
     
     
  • 4.40, Аноним (11), 17:59, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    где в новости про PQC? там обычная крипта
     
  • 2.21, Аноним (-), 15:55, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Заголовок хайповый. Математически доказана не "надёжность" алгоритмов (чтобы доказать
    > их надёжность надо доказать, что P != NP)),

    Э, на минуточку, зачем это доказывать для вычислений хешей? Это ж не публичная криптография.

     
     
  • 3.24, Аноним (24), 16:15, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Эмм, вообще-то все реальные схемы с публичной криптографией опираются на коллизи... большой текст свёрнут, показать
     
  • 2.26, Аноним (26), 16:47, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Заголовок хайповый. Математически доказана не "надёжность" алгоритмов

    Заголовок не хайповый - это просто нелепая отсебятина от переводчика. В оригинальных текстах слово "математика" даже близко нигде не упоминается.

    Это зовется "формальная верификация".

     
  • 2.27, Аноним (-), 16:50, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Они доказали следующее The Low source code for each primitive is verified for ... большой текст свёрнут, показать
     
     
  • 3.47, Аноним (47), 18:40, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > (мне кажется, проблема останова хуже, чем любая NP проблема).

    ну вот это что такое? как можно понятие неразрешимости мешать с понятием сложности? Ну вот на днях была статья под заголовком "The Halting Problem is a terrible example of NP-Harder", что простите? пример нп-сложной? это что за ересь?

    //buttondown.com/hillelwayne/archive/the-halting-problem-is-a-terrible-example-of-np/

     
  • 3.49, Аноним (49), 18:55, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > фишка в том, что когда rust загнал программиста в клетку shared^mutable, то после этого отсутствие датарейсов легко доказывается

    Этот kremlin (переименнованный согласно повестке в karamel) загоняет более жесткие ограничения чем раст.

     
     
  • 4.57, Аноним (-), 01:42, 20/04/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.32, Аноним (32), 17:11, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А где там сишники? Онм вам уже по ночам снятся? В новости сказано, что библиотека написана на F*.
     
     
  • 3.45, Аноним (45), 18:09, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Пока этот Ф не лезет в проекты на сишке с нетерпимой необходимостью засунуть этот Ф прямо в проект мотивируя это тем что он там какой-то супер какой а сишка эта ващще (нахрен тогда припёрлись) - всем сишникам включая меня на этот Ф пофик, пусть компилит там себе в питоне что ему надо
     

  • 1.4, YetAnotherOnanym (ok), 11:42, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Стальная дверь в картонной хижине.
     
     
  • 2.9, Омнонном (?), 12:02, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    с тремя стенами
     
  • 2.22, Аноним (-), 16:02, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Стальная дверь в картонной хижине.

    Не понимаю за что ему минус. Этому брейнфаку-2.0 с его pypy и чем там еще и характерными программерами - мало что поможет. Там код обычно пишут - толи скопировав из AI, толи программер сам такое спагетти нагенерил, обработка ошибок и всяких странных действий пользователя? Что вы! Поэтому большей части этих картонных макетов можно CVE навесить одной левой. Но большая их часть даже этого просто не стоит. Много чести для одноразовых картонных шляп с периодом жизни в год.

     
     
  • 3.33, Аноним (32), 17:17, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не нервничайте так. Реальные программы на ugly Rust, тем более, все будут писаться с помощью этого самого AI.
     

  • 1.5, Аноним (5), 11:42, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Математическая верификация реализации крипто функций в библиотеке HACL* - это очень круто.
    Осталось только верифицировать саму среду исполнения - Python и все будет совсем замечательно.
     
     
  • 2.6, Аноним (6), 11:49, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зачем? Вон в pyca/cryptography ржавчину запихнули, и вот это уж действительно сбоку припёка. А тут всё в порядке, надёжные алгоритмы должны быть в стандартной библиотеке.
     

  • 1.14, Ivan_83 (ok), 12:56, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Фигнёй какой то страдают.

    Для начала не понятно как вообще можно было так реализовать (скопипастить референсную реализацию на С) чтобы там накосячить.
    Потом вместо использования SIMD SHA они опять что то не то сделали.

    В общем питон стремительно копит техдолг и пилит важные либы на фриковских языках, видимо очень хочется работать только в убунте на амд64, примерно как опенврт собирается на полутора линуксах.

     
     
  • 2.28, Аноним (26), 16:57, 19/04/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.36, Аноним (32), 17:23, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    OpenWRT, как бы сама по себе, ОС. Или вы имеете ввиду, полностью кросс-собрать его из исходников под обычным GNU/Linux на компе? Так, вдоде, на любом дистре это возможно сделать.
     

  • 1.17, Аноним (47), 15:09, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Project Everest - название говорит само за себя, все чем занимаются майки - булшит псевдонаучный, чем им TLA+ не понравился, AWS уже свалил с него как только Лемпорта на пенсию отправили?
     
  • 1.25, zionist (ok), 16:39, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > По производительности библиотека HACL* близка к OpenSSL, но в отличие от последней предоставляет дополнительные гарантии надёжности и безопасности.

    Интересно, почему Тео, до сих пор, не озаботился математическими доказательствами? Подозрительно!

     
     
  • 2.29, Аноним (26), 16:59, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Интересно, почему Тео, до сих пор, не озаботился математическими доказательствами?

    Потому что дядя-работодатель на заплатил за это Тео.

     
  • 2.31, Аноним (-), 17:04, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ничего подозрительного Математические доказательства кода только сейчас становя... большой текст свёрнут, показать
     
  • 2.37, Аноним (32), 17:28, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому, что INRIA не интересен Тео с его 0.01%-ной ОС? Только его OpenSSL был бы интересен, но, наверное, написанное именно на Сишке математически не верифицировать.
     

  • 1.30, Аноним (30), 17:03, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Направление неплохое, не какое-то раст безобразие. Но мелкософт и инструментарий напрягают.
     
     
  • 2.41, Нуину (?), 18:01, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Но мелкософт и инструментарий напрягают

    А то, что Гвидо работает в мс и команда ускорения питона (да, такая есть) из мс тебя не напрягает?

     

  • 1.42, yurikoles (ok), 18:03, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Эталонный код на F* транслируется в код на языке Си при помощи компилятора KaRaMeL и доступен для интеграции с другими проектами.

    Мне кажется это слабое звено. Непонятно какая разница на сколько надёжен оригинальный код, если реально всё равно используется выхлоп на C, производный от него.

     
     
  • 2.46, Аноним (-), 18:32, 19/04/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.48, Аноним (47), 18:49, 19/04/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.50, Аноним (26), 19:01, 19/04/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.53, Аноним (32), 19:17, 19/04/2025 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 2.56, Аноним (56), 01:05, 20/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В карамел доказывается экивалентность семантики кода на F и С
     

  • 1.43, Нуину (?), 18:03, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Штош... будет крайне забавно, когда в реализации найдут уязвимость)

    зы что-то скорости? Медленнее небось?

     
  • 1.54, нокия (?), 23:23, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это может быть полезно не только в пайтон, конечно:

    Low Subset*
    Compiles to C/Wasm via KaRaMeL, enabling verified systems code (e.g., HACL*’s cryptographic primitives)

    Очень круто!

     
  • 1.55, _ (??), 00:02, 20/04/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

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



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

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