Сибирь (Siberiae2ee)
Библиотека сквозного шифрования (E2EE) исключительно на российских криптостандартах.
- ГОСТ Р 34.12-2015 — блочный шифр «Кузнечик»
- ГОСТ Р 34.11-2012 — хэш-функция «Стрибог» (256/512)
- ГОСТ Р 34.10-2012 — эллиптическая кривая, ECDH
- ГОСТ Р 34.13-2015 — режим аутентифицированного шифрования MGM
100% использование ГОСТа.
🚀 Быстрый старт После установки библиотеки Вы можете сразу использовать сквозное шифрование. Принцип работы:
Каждый пользователь генерирует пару ключей (приватный + публичный).
Отправитель шифрует сообщение публичным ключом получателя, создавая зашифрованный пакет.
Получатель расшифровывает пакет своим приватным ключом.
Никто, кроме получателя, не может прочитать сообщение — даже сервер, передающий пакет.
🔐 Основные возможности Генерация ключей (SiberiaUser)
Шифрование и расшифровка сообщений (encrypt_for, decrypt_from)
Эфемерные ключи для каждого сообщения (прямая секретность)
Подтверждение ключа (key confirmation) — защита от подмены
Безопасное хранение приватного ключа с шифрованием паролем
💻 Примеры кода
- Создание пользователей и обмен зашифрованными сообщениями python from siberiae2ee import SiberiaUser
Алиса и Боб генерируют свои ключи
alice = SiberiaUser() bob = SiberiaUser()
Алиса шифрует сообщение для Боба
message = b"Привет, Боб! Это секретное сообщение." packet = alice.encrypt_for(bob.pub_bytes, message)
print(f"Зашифрованный пакет ({len(packet)} байт) готов к отправке.")
Боб расшифровывает сообщение от Алисы
try: plain_text = bob.decrypt_from(alice.pub_bytes, packet) print("Расшифровано:", plain_text.decode('utf-8')) except ValueError as e: print("Ошибка расшифровки:", e)
- Безопасное хранение приватного ключа Приватный ключ нельзя хранить в открытом виде. Зашифруйте его с помощью пароля:
python from siberiae2ee import encrypt_private_key, decrypt_private_key
Преобразуем приватный ключ Алисы в байты
private_bytes = alice.priv.to_bytes(32, 'big')
Шифруем его с паролем
encrypted_blob = encrypt_private_key(private_bytes, "МойОченьСложныйПароль")
Сохраняем encrypted_blob в файл или базу данных
with open("alice_key.enc", "wb") as f: f.write(encrypted_blob)
... позже ...
Читаем из файла и расшифровываем
with open("alice_key.enc", "rb") as f: encrypted_blob = f.read()
decrypted_priv = decrypt_private_key(encrypted_blob, "МойОченьСложныйПароль")
Теперь из decrypted_priv можно восстановить SiberiaUser,
создав объект на основе этого приватного ключа (продвинутое использование)
- Запуск тестов (проверка работоспособности) bash
Клонируйте репозиторий
git clone https://github.com/ITechRos/siberiae2ee.git cd siberiae2ee
Запустите тесты
python -m pytest tests/
или просто
python tests/test_vectors.py Успешное выполнение тестов подтверждает, что все криптоалгоритмы работают согласно ГОСТ.
🛡️ Примечания по безопасности Всегда храните приватный ключ зашифрованным.
Публичный ключ можно передавать открыто.
Используйте эфемерные ключи (уже реализовано в encrypt_for) — каждое сообщение шифруется временной парой, поэтому компрометация долговременного ключа не раскроет предыдущие сообщения.
Библиотека реализована на чистом Python, что удобно для аудита. Однако для максимальной защиты от атак по времени в production рекомендуется проводить независимый криптоанализ.
📄 Лицензия MIT — делайте что угодно, но сохраняйте уведомление об авторстве.
Установка
pip install siberiae2ee
Metadata
Release files for siberiae2ee 0.1.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 | |
|---|---|---|---|
| siberiae2ee-0.1.2.tar.gz | 15.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| siberiae2ee-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.6 kB
Release files / siberiae2ee-0.1.2.tar.gz
| Download URL | siberiae2ee-0.1.2.tar.gz |
|---|---|
| Size | 15.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d58892a97a726655555c55ca94959f377474a482e745c44fd186ba2e08bb8ec6
|
|
BLAKE2b-256 checksum How to use checksums |
d93b9c633940af8482548c0f407ebbc0d3c062aa33a31910ad14beb4af234062
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|
Release files / siberiae2ee-0.1.2-py3-none-any.whl
| Download URL | siberiae2ee-0.1.2-py3-none-any.whl |
|---|---|
| Size | 14.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ccd69859d59e2808cb89411833d08e57942bb68674dbb6614a34be2b59876b9f
|
|
BLAKE2b-256 checksum How to use checksums |
9125c5f1409e5a5f3545675a87318248ceba4930826f426f36933afba4667ce2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|