Python CFFI bindings for Kyber post-quantum cryptography
Project description
KyberCFFI
Python CFFI привязки для пост-квантовой криптографии Kyber
Описание
KyberCFFI предоставляет Python привязки для эталонной реализации криптографического алгоритма Kyber - победителя конкурса NIST по пост-квантовой криптографии. Библиотека использует CFFI для эффективного взаимодействия с оригинальным C кодом Kyber.
Поддерживаемые варианты
- Kyber512 - Уровень безопасности 1 (эквивалент AES-128)
- Kyber768 - Уровень безопасности 3 (эквивалент AES-192)
- Kyber1024 - Уровень безопасности 5 (эквивалент AES-256)
Установка
pip install kybercffi
Требования
- Python >= 3.8
- CFFI >= 1.15.0
- C компилятор (автоматически используется при установке)
Быстрый старт
import kybercffi
# Создание экземпляра Kyber768
kyber = kybercffi.Kyber768()
# Генерация пары ключей
public_key, secret_key = kyber.generate_keypair()
# Инкапсуляция (создание общего секрета)
ciphertext, shared_secret = kyber.encapsulate(public_key)
# Декапсуляция (восстановление общего секрета)
recovered_secret = kyber.decapsulate(ciphertext, secret_key)
# Проверка
assert shared_secret == recovered_secret
print("Kyber работает корректно!")
Удобные функции
from kybercffi import generate_keypair, encapsulate, decapsulate
# Генерация ключей с указанием уровня безопасности
pk, sk = generate_keypair(security_level=3) # Kyber768
# Инкапсуляция
ct, ss = encapsulate(pk, security_level=3)
# Декапсуляция
ss2 = decapsulate(ct, sk, security_level=3)
Фабричный метод
# Создание экземпляра через фабрику
kyber512 = kybercffi.KyberKEM.create(security_level=1) # Kyber512
kyber768 = kybercffi.KyberKEM.create(security_level=3) # Kyber768
kyber1024 = kybercffi.KyberKEM.create(security_level=5) # Kyber1024
Информация о вариантах
# Получение информации о всех вариантах
info = kybercffi.get_kyber_info()
print(info)
# Получение информации о версии
version_info = kybercffi.get_version_info()
print(version_info)
Размеры ключей и зашифрованного текста
| Вариант | Открытый ключ | Секретный ключ | Зашифрованный текст | Общий секрет |
|---|---|---|---|---|
| Kyber512 | 800 байт | 1632 байта | 768 байт | 32 байта |
| Kyber768 | 1184 байта | 2400 байт | 1088 байт | 32 байта |
| Kyber1024 | 1568 байт | 3168 байт | 1568 байт | 32 байта |
Особенности
- ⚡ Высокая производительность - использует оптимизированную C реализацию
- 🛡️ Пост-квантовая безопасность - устойчив к атакам квантовых компьютеров
- 🌐 Кроссплатформенность - работает на Windows, Linux, macOS
- 📦 Простая установка - автоматическая сборка при установке
- 🔒 Криптографически безопасен - основан на эталонной реализации NIST
Лицензия
Проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.
Автор
Denis Magnitov
- Email: pm13.magnitov@gmail.com
- GitHub: Denis872
Ссылки
Поддержка
Если у вас возникли проблемы или вопросы, пожалуйста:
- Проверьте существующие Issues
- Создайте новый Issue с подробным описанием проблемы
- Укажите версию Python, ОС и версию kybercffi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kybercffi-0.1.2.tar.gz.
File metadata
- Download URL: kybercffi-0.1.2.tar.gz
- Upload date:
- Size: 103.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
158204519b39bcbb336dadbf4798562763854894bf6435f901b60ee666e26dca
|
|
| MD5 |
9a237cf1cf54a0b6cbcc85f582a83aab
|
|
| BLAKE2b-256 |
a4d42e4719e1cddaedc8abdbdfd160730248ea2bdb7a57d91c48543956751260
|
File details
Details for the file kybercffi-0.1.2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: kybercffi-0.1.2-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 177.8 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b06700b83abc9e6b66d5843f3f3b20e5906f617b947998fe535a2fa6acc4ab92
|
|
| MD5 |
b4fc6a93b149ac915fb17fb07a909921
|
|
| BLAKE2b-256 |
2872a03d1f66e8ea8c0a8813955416c22a4f33dbb30538b83d3ce47e9f81e438
|