Skip to main content

Сибирь (Siberiae2ee)

Библиотека сквозного шифрования (E2EE) исключительно на российских криптостандартах.

  • ГОСТ Р 34.12-2015 — блочный шифр «Кузнечик»
  • ГОСТ Р 34.11-2012 — хэш-функция «Стрибог» (256/512)
  • ГОСТ Р 34.10-2012 — эллиптическая кривая, ECDH
  • ГОСТ Р 34.13-2015 — режим аутентифицированного шифрования MGM

100% использование ГОСТа.

PyPI version

🚀 Быстрый старт После установки библиотеки Вы можете сразу использовать сквозное шифрование. Принцип работы:

Каждый пользователь генерирует пару ключей (приватный + публичный).

Отправитель шифрует сообщение публичным ключом получателя, создавая зашифрованный пакет.

Получатель расшифровывает пакет своим приватным ключом.

Никто, кроме получателя, не может прочитать сообщение — даже сервер, передающий пакет.

🔐 Основные возможности Генерация ключей (SiberiaUser)

Шифрование и расшифровка сообщений (encrypt_for, decrypt_from)

Эфемерные ключи для каждого сообщения (прямая секретность)

Подтверждение ключа (key confirmation) — защита от подмены

Безопасное хранение приватного ключа с шифрованием паролем

💻 Примеры кода

  1. Создание пользователей и обмен зашифрованными сообщениями 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)

  1. Безопасное хранение приватного ключа Приватный ключ нельзя хранить в открытом виде. Зашифруйте его с помощью пароля:

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,

создав объект на основе этого приватного ключа (продвинутое использование)

  1. Запуск тестов (проверка работоспособности) 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)

Source distribution for siberiae2ee 0.1.2
File Size Uploaded
siberiae2ee-0.1.2.tar.gz 15.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for siberiae2ee 0.1.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 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