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
Авторы
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 | |
|---|---|---|---|
| PythonKyber-1.0.2.tar.gz | 8.7 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|