PythonKyber
Привязки Python для постквантовой криптографии Kyber с использованием pqcrypto
Пару слов про алгоритм Kyber
Kyber — это схема постквантового шифрования, основанная на решении задачи «среднего проблемы» в теории вычислительной сложности, известной как «проблема вычисления полиномиального представления». Он использует математическую структуру, называемую решётками, и является одной из рекомендованных схем для использования в постквантовых системах безопасности, поскольку он предполагает стойкость против атак с использованием квантовых компьютеров.
Вот как работает Kyber на высоком уровне:
-
Ключи:
- Публичный ключ — используется для шифрования данных.
- Приватный ключ — используется для дешифрования.
-
Процесс шифрования:
- Шифрование в Kyber включает в себя выбор случайного вектора и применение операции на решётке для создания зашифрованного сообщения.
- Зашифрованное сообщение состоит из нескольких частей, и для его дешифрования нужен приватный ключ.
-
Процесс дешифрования:
- Для дешифрования приватный ключ используется для извлечения исходного сообщения из зашифрованных данных.
- Процесс дешифрования использует операцию, которая является «обратной» операции шифрования, но с использованием приватного ключа.
-
Решётки:
- Секретность схемы основывается на сложности задачи нахождения точного представления решётки.
- В Kyber используется структура решётки для создания криптографических функций, которые являются вычислительно сложными для решения даже с использованием квантовых компьютеров.
-
Безопасность:
- Kyber имеет несколько параметров безопасности (например, размер ключа), которые можно настроить в зависимости от требуемого уровня безопасности.
- Безопасность схемы основана на проблемах, которые считаются сложными даже для квантовых компьютеров, что делает Kyber привлекательным для постквантовых криптографических систем.
Таким образом, основная идея Kyber заключается в использовании математических решёток и сложных операций над ними, чтобы обеспечить высокий уровень безопасности для передачи данных в условиях квантовой вычислительной угрозы.
Как самой библиотекой пользоватся
Есть по 3 функции на каждый уровень kyber.
- 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)
- 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)
- 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
Установка
- Способ через pip:
- Команда
pip install PythonKyber - Условия:
- Должен быть
maturin - Должен быть
RustиCargoесли нет подходящего колеса, pip будет устаналивать из sdist
- Должен быть
- Из исходников:
- Установить
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
Авторы
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| PythonKyber-1.0.2.tar.gz | 8.7 kB | Without provenance | Details for PythonKyber-1.0.2.tar.gz |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| PythonKyber-1.0.2-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details for PythonKyber-1.0.2-cp312-cp312-win_amd64.whl |
| 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 for PythonKyber-1.0.2-cp312-cp312-manylinux_2_34_x86_64.whl |
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
|
Security for PythonKyber 1.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.