Вопрос или проблема
Я хотел бы программировать свою криптографическую схему, которая использует некоторые вычисления на эллиптических кривых. Я реализовал это с помощью пакета sagemath, который является библиотекой Python. Это просто, но очень медленно. Мне нужно работать с очень большими числами (например, 256-битными целыми числами). Вычисления таких больших чисел медленны в sagemath.
Пожалуйста, предложите какие-нибудь библиотеки, которые быстры и просты в использовании для вычислений на эллиптических кривых. Я хотел бы иметь библиотеку, которая поддерживает генерацию эллиптических кривых, выбор случайного генератора эллиптической кривой, выполнение операций над группами на эллиптических кривых и т. д.
Я использую эту библиотеку: https://github.com/AntonKueltz/fastecdsa. Я обнаружил, что она работает быстрее, чем sage (я реализовал одну и ту же программу в обеих).
Ответ или решение
Для эффективной работы с эллиптическими кривыми и выполнения криптографических вычислений, особенно в контексте обработки больших целых чисел, важно выбирать подходящие библиотеки, обеспечивающие высокую скорость и удобство в использовании. В данном ответе я предложу несколько библиотек, которые могут значительно упростить вашу работу, учитывая ваш текущий опыт с библиотекой SageMath и вашу практику с библиотекой fastecdsa.
1. Fastecdsa
Вы уже использовали библиотеку fastecdsa, и это, безусловно, один из лучших вариантов для работы с эллиптическими кривыми на Python. Она предлагает:
- Высокая скорость: Библиотека реализует конструкции на основе быстрого алгоритма умножения, что делает операции на эллиптических кривых значительно быстрее по сравнению с SageMath.
- Удобный интерфейс: Простота использования позволяет сосредоточиться на разработке алгоритмов, а не на технических деталях.
- Поддержка различных типов кривых: Вы можете генерировать эллиптические кривые и выполнять операции над ними, что полностью удовлетворяет ваши требования.
2. PyCryptodome
PyCryptodome — это мощная библиотека для криптографических функций, включающая поддержку эллиптических кривых. Особенности:
- Широкий функционал: Библиотека включает множество криптографических примитивов и алгоритмов, что делает её универсальным инструментом.
- Оптимизированные функции: Быстрые реализации вычислений, встроенные оптимизации для работы с большими числами.
- Документация: Хорошо документированная, что облегчает быстрое освоение и интеграцию в ваши проекты.
3. Crypto++ (C++)
Если вы не против использовать C++, библиотека Crypto++ предлагает обширные возможности для работы с эллиптическими кривыми. Преимущества:
- Высокая производительность: Написанная на C++, она обеспечивает еще большую скорость по сравнению с Python-библиотеками.
- Мощные инструменты: Широкий спектр алгоритмов и протоколов, включая DSA, ECDSA.
- Гибкость: Поддержка множества различных типов эллиптических кривых.
4. OpenSSL
OpenSSL — это не только библиотека для работы с шифрованием, но и мощный инструмент для работы с эллиптическими кривыми.
- Широкая поддержка протоколов: Подходит для использования в системах, где важна поддержка стандартов.
- Кроссплатформенность: Может быть использована на различных операционных системах.
- Эффективность: Оптимизированные реализации криптографических алгоритмов.
Заключение
Для ваших нужд я рекомендую продолжить использование библиотеки fastecdsa, так как вы уже замечаете её преимущества по сравнению с SageMath. Кроме того, для расширения функционала стоит рассмотреть использование PyCryptodome или Crypto++, если вам нужно больше возможностей или производительности. На последок, OpenSSL будет отличным выбором, если вы хотите интегрировать другие криптографические функции в вашу систему.
Подбор правильной библиотеки зависит от ваших требований к производительности, удобству, а также предпочитаемому языку программирования. Удачи в вашем проекте!