Skip to main content

PythonKyber

Привязки Python для постквантовой криптографии Kyber с использованием pqcrypto

Пару слов про алгоритм Kyber

Kyber — это схема постквантового шифрования, основанная на решении задачи «среднего проблемы» в теории вычислительной сложности, известной как «проблема вычисления полиномиального представления». Он использует математическую структуру, называемую решётками, и является одной из рекомендованных схем для использования в постквантовых системах безопасности, поскольку он предполагает стойкость против атак с использованием квантовых компьютеров.

Вот как работает Kyber на высоком уровне:

  1. Ключи:

    • Публичный ключ — используется для шифрования данных.
    • Приватный ключ — используется для дешифрования.
  2. Процесс шифрования:

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

    • Для дешифрования приватный ключ используется для извлечения исходного сообщения из зашифрованных данных.
    • Процесс дешифрования использует операцию, которая является «обратной» операции шифрования, но с использованием приватного ключа.
  4. Решётки:

    • Секретность схемы основывается на сложности задачи нахождения точного представления решётки.
    • В Kyber используется структура решётки для создания криптографических функций, которые являются вычислительно сложными для решения даже с использованием квантовых компьютеров.
  5. Безопасность:

    • Kyber имеет несколько параметров безопасности (например, размер ключа), которые можно настроить в зависимости от требуемого уровня безопасности.
    • Безопасность схемы основана на проблемах, которые считаются сложными даже для квантовых компьютеров, что делает Kyber привлекательным для постквантовых криптографических систем.

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

Как самой библиотекой пользоватся

Есть по 3 функции на каждый уровень kyber.

  1. Kyber512:
  • public_key, secret_key = PythonKyber.Kyber512.generate_keypair()
  • ciphertext, shared_secret_enc = PythonKyber.Kyber512.encapsulate(public_key)
  • shared_secret_dec = PythonKyber.Kyber512.decapsulate(secret_key, ciphertext)
  1. Kyber768:
  • public_key, secret_key = PythonKyber.Kyber768.generate_keypair()
  • ciphertext, shared_secret_enc = PythonKyber.Kyber768.encapsulate(public_key)
  • shared_secret_dec = PythonKyber.Kyber768.decapsulate(secret_key, ciphertext)
  1. Kyber1024:
  • public_key, secret_key = PythonKyber.Kyber1024.generate_keypair()
  • ciphertext, shared_secret_enc = PythonKyber.Kyber1024.encapsulate(public_key)
  • shared_secret_dec = PythonKyber.Kyber1024.decapsulate(secret_key, ciphertext)

Нормальный пример:

from PythonKyber import Kyber512, Kyber768, Kyber1024

# Пример для Kyber512
public_key_512, secret_key_512 = Kyber512.generate_keypair()
ciphertext_512, shared_secret_encrypted_512 = Kyber512.encapsulate(public_key_512)
shared_secret_decrypted_512 = Kyber512.decapsulate(secret_key_512, ciphertext_512)
assert shared_secret_encrypted_512 == shared_secret_decrypted_512

# Пример для Kyber768
public_key_768, secret_key_768 = Kyber768.generate_keypair()
ciphertext_768, shared_secret_encrypted_768 = Kyber768.encapsulate(public_key_768)
shared_secret_decrypted_768 = Kyber768.decapsulate(secret_key_768, ciphertext_768)
assert shared_secret_encrypted_768 == shared_secret_decrypted_768

# Пример для Kyber1024
public_key_1024, secret_key_1024 = Kyber1024.generate_keypair()
ciphertext_1024, shared_secret_encrypted_1024 = Kyber1024.encapsulate(public_key_1024)
shared_secret_decrypted_1024 = Kyber1024.decapsulate(secret_key_1024, ciphertext_1024)
assert shared_secret_encrypted_1024 == shared_secret_decrypted_1024

Установка

  1. Способ через pip:
  • Команда pip install PythonKyber
  • Условия:
    • Должен быть maturin
    • Должен быть Rust и Cargo если нет подходящего колеса, pip будет устаналивать из sdist
  1. Из исходников:
  • Установить Rust и Cargo
  • Клонировать репозиторий git clone https://github.com/kostya2023/PythonKyber.git
  • Создать venv или другую среду, python -m venv venv
  • Установить maturin
  • Прописать maturin build --release
  • После билдинга pip install target/wheels/PythonKyber*.whl

License

MIT См файл LICENSE

Авторы

Release files for PythonKyber 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PythonKyber 1.0.2
File Size Uploaded
PythonKyber-1.0.2.tar.gz 8.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for PythonKyber 1.0.2
File Interpreter ABI Platform
PythonKyber-1.0.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
PythonKyber-1.0.2-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details

Total release size: 486.9 kB

Release files / PythonKyber-1.0.2.tar.gz

Download URL PythonKyber-1.0.2.tar.gz
Size 8.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1f59121356b41783632d7df769eca1b39515fd832906a5585f7424713938e84e
BLAKE2b-256 checksum
How to use checksums
7e0c6276677c728473619a7e1acfe97359bcae62a72cf4fa7c8a9d82b6694e0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release files / PythonKyber-1.0.2-cp312-cp312-win_amd64.whl

Download URL PythonKyber-1.0.2-cp312-cp312-win_amd64.whl
Size 128.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
75b597d2e66b75640fad7666a09a045561441b3350d9740729d462d160fe54f6
BLAKE2b-256 checksum
How to use checksums
f39d72ea5f4254c71f39f548a380f8424b370a66ceb6aac0308009235133d21d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release files / PythonKyber-1.0.2-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL PythonKyber-1.0.2-cp312-cp312-manylinux_2_34_x86_64.whl
Size 350.1 kB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
5fc9dd8e82969337534f9432f7f82f11800d73087d63c14fbd7e5da77ffe62ce
BLAKE2b-256 checksum
How to use checksums
2b15e1777248da0a35e23a8447233a6777df9014373413e016ac015cb75941f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

1.0.2 This release

3 release files

1.0.1

3 release files

1.0.0

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page