Skip to main content

E2EE-библиотека на российских криптостандартах (ГОСТ).

Project description

Сибирь (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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

siberiae2ee-0.1.2.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

siberiae2ee-0.1.2-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file siberiae2ee-0.1.2.tar.gz.

File metadata

  • Download URL: siberiae2ee-0.1.2.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for siberiae2ee-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d58892a97a726655555c55ca94959f377474a482e745c44fd186ba2e08bb8ec6
MD5 abc3be936ab6dd9e53f87627e910f7c5
BLAKE2b-256 d93b9c633940af8482548c0f407ebbc0d3c062aa33a31910ad14beb4af234062

See more details on using hashes here.

File details

Details for the file siberiae2ee-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: siberiae2ee-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 14.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for siberiae2ee-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ccd69859d59e2808cb89411833d08e57942bb68674dbb6614a34be2b59876b9f
MD5 6991c515b40b3fca5d5df266224a8985
BLAKE2b-256 9125c5f1409e5a5f3545675a87318248ceba4930826f426f36933afba4667ce2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page