Heim > Backend-Entwicklung > Python-Tutorial > Additives Secret-Sharing und Share-Automatisierung – mit Python

Additives Secret-Sharing und Share-Automatisierung – mit Python

WBOY
Freigeben: 2023-08-18 15:05:45
nach vorne
1613 Leute haben es durchsucht

Additive Secret Sharing ist eine Methode, ein Geheimnis an eine Gruppe von Teilnehmern weiterzugeben, sodass das Geheimnis nur rekonstruiert werden kann, wenn eine bestimmte Anzahl von Teilnehmern zusammenkommt und ihre Anteile beisteuert. Diese Technologie wird häufig in der Kryptographie und der sicheren Mehrparteienberechnung eingesetzt. In diesem Artikel besprechen wir die Konzepte des additiven Secret-Sharings und der Share-Voraktivierung sowie deren Implementierung mit Python.

Einführung in Additive Secret Sharing

Additive Secret Sharing ist eine Technik, die es einer Gruppe von Teilnehmern ermöglicht, Geheimnisse zu teilen, ohne das Geheimnis einem einzelnen Teilnehmer preiszugeben. Das Geheimnis wird in Anteile aufgeteilt, wobei jeder Teilnehmer einen Anteil erhält. Das Geheimnis lässt sich erst rekonstruieren, wenn eine bestimmte Anzahl an Teilnehmern zusammenkommt und ihre Anteile anbietet. Diese Technik wird auch als Threshold Secret Sharing bezeichnet.

Die Grundidee des additiven Teilens von Geheimnissen besteht darin, das Geheimnis als Polynom vom Grad (t-1) auszudrücken, wobei t der Schwellenwert ist. Wählen Sie die Koeffizienten des Polynoms als zufällige ganze Zahlen. Jedem Teilnehmer wird dann ein Punkt auf dem Polynom zugewiesen, der seinen Anteil darstellt. Durch Interpolation unter Verwendung der von den Teilnehmern bereitgestellten Punkte kann das Geheimnis rekonstruiert werden.

Angenommen, wir haben ein geheimes S, das wir unter den drei Teilnehmern A, B und C teilen möchten. Wir wählen ein Polynom 2. Grades mit zufälligen Koeffizienten. Dieses Polynom wird ausgedrückt als S(x) = a0 + a1x + a2x^2. Jedem Teilnehmer wird dann ein Punkt (x, S(x)) auf dem Polynom zugewiesen, wobei x ein eindeutiger Wert ist, der für jeden Teilnehmer ausgewählt wird.

Participant A receives the point (1, S(1))
Participant B receives the point (2, S(2))
Participant C receives the point (3, S(3))
Nach dem Login kopieren

Wenn nun zwei beliebige Spieler zusammenkommen und ihre Punkte angeben, können sie das Polynom und damit das Geheimnis rekonstruieren. Wenn ein einzelner Teilnehmer jedoch nur seine Punkte angibt, kann er das Geheimnis nicht rekonstruieren.

Additives Secret-Sharing in Python implementieren

Um das additive Secret-Sharing in Python zu implementieren, können wir eine Python-Bibliothek namens „secretsharing“ verwenden, die eine benutzerfreundliche API zum Implementieren des Schwellenwert-Secret-Sharing bereitstellt. Die Bibliothek stellt eine Funktion namens „split_secret“ bereit, die ein Geheimnis, eine Anzahl von Anteilen und einen Schwellenwert als Eingabe akzeptiert und eine Liste von Anteilen zurückgibt.

Hier ist ein Beispiel für das Teilen eines Geheimnisses zwischen drei Teilnehmern mithilfe der Funktion „split_secret“ –

aus 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)
Nach dem Login kopieren

Im obigen Beispiel haben wir ein Geheimnis „mysecret“, das wir zwischen drei geteilten Parteien teilen möchten unter den Teilnehmern. Wir setzen den Schwellenwert auf 2, was bedeutet, dass zwei beliebige Teilnehmer das Geheimnis rekonstruieren können. Die Funktion „split_secret“ generiert drei Freigaben und druckt diese aus.

Geheimnis rekonstruieren

Um das Geheimnis zu rekonstruieren, können wir die Funktion „recover_secret“ verwenden, die von der Bibliothek „secretsharing“ bereitgestellt wird. Diese Funktion akzeptiert eine Liste von Freigaben als Eingabe und gibt das Geheimnis zurück. Hier ist ein Beispiel für die Rekonstruktion eines Geheimnisses mithilfe der Funktion „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)
Nach dem Login kopieren

Im obigen Beispiel haben wir eine Liste von Aktien, die wir zur Rekonstruktion des Geheimnisses verwenden möchten. Die Funktion „recover_secret“ verwendet als Eingabe eine Liste von Aktien und gibt das Geheimnis zurück. In diesem Beispiel ist das Geheimnis „mysecret“.

Einführung in die Share Proactivization

Share Proactivization ist eine Technologie, die es einer Gruppe von Teilnehmern ermöglicht, ihre Shares proaktiv zu aktualisieren, ohne Geheimnisse preiszugeben. Diese Technik wird in Situationen verwendet, in denen Geheimnisse häufig geändert werden müssen, beispielsweise im Fall gemeinsamer Passwörter.

Die Grundidee der Share Proactivation besteht darin, dass jeder Teilnehmer einen neuen Share für ein neues Secret generiert und an andere sendet. Anschließend werden neue Anteile kombiniert, um neue Geheimnisse zu rekonstruieren. Alte Anteile werden verworfen und neue Anteile werden zur Rekonstruktion neuer Geheimnisse verwendet.

Aktivierung der Freigabe in Python implementieren

Um die Proaktivierung der Freigabe in Python zu implementieren, können wir dieselbe „Secretsharing“-Bibliothek wie für die additive Freigabe von Geheimnissen verwenden. Die Bibliothek stellt eine Funktion namens „create_share“ bereit, die ein Geheimnis und eine eindeutige Freigabe-ID als Eingabe akzeptiert und eine neue geheime Freigabe zurückgibt.

Hier ist ein Beispiel für die aktive Aktualisierung einer Freigabe mithilfe der Funktion „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)
Nach dem Login kopieren

Im obigen Beispiel haben wir ein neues Geheimnis „mynewsecret“, das wir unter drei Teilnehmern teilen möchten. Wir haben auch eine Freigabe-ID „1“, die den Teilnehmer darstellt, der die neue Freigabe erstellen wird. Die Funktion „create_share“ akzeptiert ein neues Geheimnis und eine neue Freigabe-ID als Eingabe und gibt den neuen Anteil des Geheimnisses zurück.

Um ein neues Geheimnis zu rekonstruieren, können wir die gleiche „recover_secret“-Funktion wie zuvor verwenden. Dieses Mal werden wir jedoch die von jedem Teilnehmer generierten neuen Anteile verwenden.

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)
Nach dem Login kopieren

Im obigen Beispiel haben wir eine neue Lagerliste, die wir zur Rekonstruktion neuer Geheimnisse nutzen wollen. Die Funktion „recover_secret“ verwendet als Eingabe eine Liste neuer Aktien und gibt ein neues Geheimnis zurück, in diesem Fall „mynewsecret“.

Fazit

Additive Secret Sharing und Sharing-Automatisierung ist eine leistungsstarke Technik, mit der vertrauliche Informationen sicher zwischen einer Gruppe von Teilnehmern ausgetauscht werden können. Die „secretsharing“-Bibliothek in Python bietet eine benutzerfreundliche API zur Implementierung dieser Techniken. Durch die Verwendung der Funktionen „split_secret“ und „create_share“ können wir problemlos die additive gemeinsame Nutzung von Geheimnissen bzw. die Automatisierung der gemeinsamen Nutzung implementieren. Darüber hinaus können wir mit der Funktion „recover_secret“ das Geheimnis oder ein neues Geheimnis leicht rekonstruieren.

Das obige ist der detaillierte Inhalt vonAdditives Secret-Sharing und Share-Automatisierung – mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage