Maison  >  Article  >  développement back-end  >  Partage de secrets additifs et automatisation du partage - à l'aide de Python

Partage de secrets additifs et automatisation du partage - à l'aide de Python

WBOY
WBOYavant
2023-08-18 14:13:131522parcourir

Le partage de secret additif est une méthode de partage d'un secret avec un groupe de participants, de telle sorte que le secret ne peut être reconstruit que lorsqu'un certain nombre de participants se réunissent et proposent leurs partages. Cette technologie est largement utilisée en cryptographie et en calcul multipartite sécurisé. Dans cet article, nous aborderons les concepts de partage additif de secrets et de préactivation de partage et comment les implémenter à l'aide de Python.

Introduction au partage de secrets additifs

Le partage de secrets additifs est une technique qui permet à un groupe de participants de partager des secrets sans révéler le secret à aucun participant individuel. Le secret est divisé en parts, chaque participant en recevant une. Le secret ne pourra être reconstruit que lorsqu'un certain nombre de participants se réuniront et proposeront leurs actions. Cette technique est également connue sous le nom de partage de secret à seuil.

L'idée de base du partage additif de secret est d'exprimer le secret sous la forme d'un polynôme de degré (t-1), où t est le seuil. Choisissez les coefficients du polynôme comme étant des entiers aléatoires. Chaque participant se voit ensuite attribuer un point sur le polynôme qui représente sa part. En interpolant à partir des points fournis par les participants, le secret peut être reconstitué.

Par exemple, supposons que nous ayons un secret S que nous souhaitons partager entre trois participants A, B et C. Nous choisissons un polynôme du 2ème degré à coefficients aléatoires. Ce polynôme est exprimé par S(x) = a0 + a1x + a2x^2. Chaque participant se voit ensuite attribuer un point (x, S(x)) sur le polynôme, où x est une valeur unique choisie pour chaque participant.

Participant A receives the point (1, S(1))
Participant B receives the point (2, S(2))
Participant C receives the point (3, S(3))

Maintenant, si deux joueurs se réunissent et fournissent leurs points, ils peuvent reconstruire le polynôme et donc le secret. Cependant, si un seul participant ne fournit que ses points, il ne pourra pas reconstituer le secret.

Implémentation du partage additif de secrets en Python

Pour implémenter le partage additif de secrets en Python, nous pouvons utiliser une bibliothèque Python appelée "secretsharing", qui fournit une API facile à utiliser pour implémenter le partage de secrets à seuil. La bibliothèque fournit une fonction appelée "split_secret" qui accepte un secret, un nombre de partages et un seuil en entrée et renvoie une liste de partages.

Voici un exemple de partage d'un secret entre trois participants en utilisant la fonction "split_secret" -

from secretsharing import SecretSharer

# Secret to be shared
secret = "mysecret"

# Number of shares to be generated
n = 3

# Threshold value
t = 2

# Generate shares
shares = SecretSharer.split_secret(secret, n, t)

# Print the shares
for share in shares:
   print(share)

Dans l'exemple ci-dessus, nous avons un secret "mysecret" que nous voulons partager entre trois parties partagées parmi les participants. Nous fixons la valeur seuil à 2, ce qui signifie que deux participants peuvent reconstruire le secret. La fonction "split_secret" génère trois partages et les imprime.

Reconstruct Secret

Pour reconstruire le secret, on peut utiliser la fonction "recover_secret" fournie par la bibliothèque "secretsharing". Cette fonction accepte une liste de partages en entrée et renvoie le secret. Voici un exemple de reconstruction d'un secret à l'aide de la fonction "recover_secret" :

from secretsharing import SecretSharer

# List of shares
shares = ["1-mysecret", "2-mysecret", "3-mysecret"]

# Reconstruct the secret
secret = SecretSharer.recover_secret(shares)

print(secret)

Dans l'exemple ci-dessus, nous avons une liste de stocks que nous souhaitons utiliser pour reconstruire le secret. La fonction "recover_secret" prend en entrée une liste de valeurs et renvoie le secret. Dans cet exemple, le secret est « monsecret ».

Présentation de Share Proactivization

Share Proactivization est une technologie qui permet à un groupe de participants d'actualiser de manière proactive leurs partages sans révéler de secrets. Cette technique est utilisée dans les situations où les secrets peuvent devoir être modifiés fréquemment, comme dans le cas de mots de passe partagés.

L'idée de base de Share Proactivation est que chaque participant génère un nouveau partage pour un nouveau secret et l'envoie aux autres. De nouveaux partages sont alors combinés pour reconstruire de nouveaux secrets. Les anciens partages sont supprimés et les nouveaux partages sont utilisés pour reconstruire de nouveaux secrets.

Implémentation de Share Proactivization en Python

Pour implémenter Share Proactivization en Python, nous pouvons utiliser la même bibliothèque "secretsharing" que pour le partage additif de secrets. La bibliothèque fournit une fonction appelée "create_share" qui accepte un secret et un ID de partage unique en entrée et renvoie un nouveau partage secret.

Voici un exemple d'actualisation active d'un partage à l'aide de la fonction "create_share" -

from secretsharing import SecretSharer

# New secret
new_secret = "mynewsecret"

# Share ID
share_id = "1"

# Create a new share
new_share = SecretSharer.create_share(new_secret, share_id)

print(new_share)

Dans l'exemple ci-dessus, nous avons un nouveau secret "mynewsecret" que nous souhaitons partager entre trois participants. Nous avons également un identifiant de partage « 1 » représentant le participant qui générera le nouveau partage. La fonction "create_share" accepte un nouveau secret et un nouveau ID de partage en entrée et renvoie le nouveau partage du secret.

Pour reconstruire un nouveau secret, on peut utiliser la même fonction "recover_secret" qu'avant. Cependant, cette fois nous utiliserons les nouveaux partages générés par chaque participant.

from secretsharing import SecretSharer

# List of new shares
new_shares = ["1-mynewsecret", "2-mysecret", "3-mysecret"]

# Reconstruct the new secret
new_secret = SecretSharer.recover_secret(new_shares)

print(new_secret)

Dans l'exemple ci-dessus, nous avons une nouvelle liste de stocks que nous souhaitons utiliser pour reconstruire de nouveaux secrets. La fonction "recover_secret" prend en entrée une liste de nouveaux titres et renvoie un nouveau secret, en l'occurrence "mynewsecret".

Conclusion

Le partage de secrets additifs et l'automatisation du partage sont une technique puissante qui peut être utilisée pour partager en toute sécurité des informations sensibles entre un groupe de participants. La bibliothèque « secretsharing » en Python fournit une API facile à utiliser pour implémenter ces techniques. En utilisant les fonctions "split_secret" et "create_share", nous pouvons facilement implémenter respectivement le partage additif de secrets et l'automatisation du partage. De plus, en utilisant la fonction "recover_secret", on peut facilement reconstruire le secret ou un nouveau secret.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer