Skip to main content

Реализация схемы разделения секрета Фельдмана-Шамира

Project description

Feldman-Shamir Secret Sharing

Python - реализация схемы совместного использования секретов Фельдмана-Шамира с возможностью проверки (VSS) - пороговой криптосистемы, которая позволяет разделить секрет на общие ресурсы со свойствами проверяемости.

Ключевые особенности

  • ** Совместное использование секретов с возможностью проверки **: Участники могут проверить действительность своих акций
  • ** Пороговая криптография **: Секрет может быть восстановлен только при объединении достаточного количества акций
  • ** Обязательства Фельдмана **: Для проверки используются гомоморфные обязательства
  • ** Арифметика простых полей **: Работает с большими простыми полями для обеспечения безопасности
  • ** Гибкие параметры **: Настраиваемый порог и количество общих ресурсов

Быстрый старт

```python
from FELDSHAM import FeldmanShamirSecretSharing, generate_prime, find_generator

1. Сгенерируйте криптографические параметры

(в рабочей среде они должны быть исправлены и доступны заранее)

prime = generate_prime(256)  # 256-bit prime
generator = find_generator(prime)

2. Инициализируйте схему

scheme = FeldmanShamirSecretSharing(prime, generator)

3. Определите секрет и параметры совместного

secret = 0xDEADBEEF  # Ваш секрет (должен быть < prime)
total_shares = 5      # Общее количество акций для создания
threshold = 3         # Минимальные доли, необходимые для восстановления

4. Генерируем доли и обязательства

shares, coefficients = scheme.generate_shares(secret, total_shares, threshold)
commitments = scheme.generate_commitments(coefficients)

5. Проверьте долю (должно быть возвращено значение True)

is_valid = scheme.verify_share(shares[0], commitments)

6. Восстановите секрет из общих

recovered_secret = scheme.reconstruct_secret(shares[:threshold])
print(f"Original secret: {secret}, Recovered secret: {recovered_secret}")

Установка

Установите пакет из PyPI с помощью pip:

pip install feldman-shamir-secret-sharing

5. Подробное руководство

### Генерация параметров

Для использования в рабочей среде вам следует предварительно сгенерировать и безопасно распространять прайм и генератор:

```python
from feldman_shamir import generate_prime, find_generator

Сгенерировать 2048-битное простое число (рекомендуется для создания)

p = generate_prime(2048)

Найти генератор для мультипликативной группы

g = find_generator(p)

Эти параметры следует заранее сообщить всем участникам

Подтверждение доли Каждый участник может подтвердить свою долю, используя обязательства:

Участник получает:

- their share (x, y)

- commitments [g^a0, g^a1, ..., g^at]

my_share = shares[2]  # (x, y) tuple

if scheme.verify_share(my_share, commitments):
    print("Share is valid!")
else:
    print("Invalid share detected!")
Error Handling
The library raises specific exceptions for error cases:
from feldman_shamir import SecretSharingError

try:
    # Attempt reconstruction with insufficient shares
    scheme.reconstruct_secret(shares[:threshold-1])
except SecretSharingError as e:
    print(f"Error: {e}")

6. Теория и безопасность

### Математическая основа

Схема основана на полиномиальной интерполяции по конечным полям:

1. **Совместное использование**: Генерируется случайный многочлен степени (t-1):

f(x) = a0 + a1*x + a2*x² + ... + a(t-1)*x^(t-1), где a0 - это секрет.

2. **Проверка**: Использование гомоморфных свойств:

g^y ≡? product(g^(a_j)^(x^j) mod p for j=0..t-1

### Замечания по безопасности

- Для обеспечения безопасности в рабочей среде используйте как минимум 2048-битные простые числа
- Секретность должна быть меньше модуля простого числа
- Общие данные и параметры должны передаваться надежно
- Эта реализация предназначена для образовательных целей - проконсультируйтесь с экспертами по криптографии для использования в рабочей среде

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

feldsham-0.0.6-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file feldsham-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: feldsham-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for feldsham-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a153aed70b67fa86cfff59d2062da08b8be067c83f8bf0a5a0081937a442d3f3
MD5 4e791721aaff5bb9051368404fae0023
BLAKE2b-256 be1642990a71d8d580beee23dcef20f0486f8bfbbe23c45f7d1241b245017d92

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