Shamirs geheimes Sharing-Programm

Stellen Sie sich ein Szenario vor, in dem Sie einen Banktresor sichern müssen. Ohne Schlüssel, der Ihnen am ersten Arbeitstag ausgehändigt wird, gilt es als absolut uneinnehmbar. Ihr Ziel ist es, den Schlüssel sicher aufzubewahren.

Angenommen, Sie beschließen, den Schlüssel immer bei sich zu haben, um bei Bedarf Zugang zum Tresor zu ermöglichen. Sie werden jedoch schnell feststellen, dass eine solche Lösung in der Praxis nicht gut skalierbar ist, da Sie jedes Mal physisch anwesend sein müssen, um den Tresor zu öffnen. Was ist mit dem versprochenen Urlaub? Darüber hinaus ist die Frage noch beängstigender: Was wäre, wenn Sie den einzigen Schlüssel verloren hätten?

Mit dem Gedanken an einen Urlaub beschließen Sie, eine Kopie des Schlüssels anzufertigen und diese einem anderen Mitarbeiter anzuvertrauen. Sie verstehen jedoch, dass dies auch nicht ideal ist. Durch die Verdoppelung der Schlüsselanzahl verdoppelt sich auch die Wahrscheinlichkeit eines Schlüsseldiebstahls.

In Ihrer Verzweiflung zerstören Sie das Duplikat und beschließen, den Originalschlüssel in zwei Hälften zu teilen. Nun denken Sie, dass zwei vertrauenswürdige Personen mit Schlüsselfragmenten physisch anwesend sein müssen, um den Schlüssel abzuholen und den Tresor zu öffnen. Das bedeutet, dass der Dieb zwei Fragmente stehlen muss, was doppelt so schwierig ist wie der Diebstahl eines Schlüssels. Allerdings merkt man schnell, dass dieses Schema nicht viel besser ist als nur ein Schlüssel, denn wenn jemand die Hälfte des Schlüssels verliert, kann der vollständige Schlüssel nicht wiederhergestellt werden.

Das Problem kann mit einer Reihe zusätzlicher Schlüssel und Schlösser gelöst werden, dieser Ansatz wird jedoch schnell erforderlich sein много Schlüssel und Schlösser. Sie entscheiden, dass das ideale Schema darin besteht, den Schlüssel zu teilen, damit die Sicherheit nicht ausschließlich von einer Person abhängig ist. Sie kommen außerdem zu dem Schluss, dass es einen bestimmten Grenzwert für die Anzahl der Fragmente geben muss, damit bei Verlust eines Fragments (oder wenn die Person in den Urlaub fährt) der gesamte Schlüssel funktionsfähig bleibt.

Wie man ein Geheimnis teilt

Diese Art von Schlüsselverwaltungsschema wurde 1979 von Adi Shamir erdacht, als er seine Arbeit veröffentlichte „Wie man ein Geheimnis teilt“. Der Artikel erklärt kurz das sogenannte Shamirs geheimes Sharing-Programm Schwellenwertschema zur effektiven Aufteilung eines geheimen Werts (z. B. eines kryptografischen Schlüssels). Shamirs geheimes Sharing-Programm Teile. Dann, wann und nur dann zumindest Shamirs geheimes Sharing-Programm von Shamirs geheimes Sharing-Programm Wenn die Teile zusammengebaut sind, können Sie das Geheimnis leicht wiederherstellen Shamirs geheimes Sharing-Programm.

Aus sicherheitstechnischer Sicht besteht eine wichtige Eigenschaft dieses Schemas darin, dass ein Angreifer absolut nichts lernen sollte, wenn er es nicht zumindest getan hat Shamirs geheimes Sharing-Programm Teile. Sogar die Anwesenheit Shamirs geheimes Sharing-Programm Teile sollten keine Auskunft geben. Wir nennen diese Eigenschaft Semantische Sicherheit.

Polynominterpolation

Schwellen-Shamir-Schema Shamirs geheimes Sharing-Programm rund um das Konzept aufgebaut Polynominterpolation. Wenn Sie mit diesem Konzept nicht vertraut sind, ist es eigentlich ganz einfach. Generell gilt: Wenn Sie jemals Punkte auf einem Diagramm gezeichnet und diese dann mit Linien oder Kurven verbunden haben, haben Sie es bereits verwendet!

Shamirs geheimes Sharing-Programm
Durch zwei Punkte können Sie eine unbegrenzte Anzahl von Polynomen 2. Grades zeichnen. Um das einzige daraus auszuwählen, benötigen Sie einen dritten Punkt. Illustration: Wikipedia

Betrachten Sie ein Polynom mit Grad eins, Shamirs geheimes Sharing-Programm. Wenn Sie diese Funktion in einem Diagramm darstellen möchten, wie viele Punkte benötigen Sie? Nun, wir wissen, dass dies eine lineare Funktion ist, die eine Linie bildet, und deshalb benötigen wir mindestens zwei Punkte. Betrachten Sie als nächstes eine Polynomfunktion vom Grad zwei: Shamirs geheimes Sharing-Programm. Da es sich um eine quadratische Funktion handelt, sind zum Zeichnen des Diagramms mindestens drei Punkte erforderlich. Wie wäre es mit einem Polynom dritten Grades? Mindestens vier Punkte. Und so weiter und so fort.

Das wirklich Coole an dieser Eigenschaft ist, dass angesichts des Grades der Polynomfunktion und zumindest Shamirs geheimes Sharing-Programm Punkte können wir zusätzliche Punkte für diese Polynomfunktion ableiten. Wir nennen die Extrapolation dieser zusätzlichen Punkte Polynominterpolation.

Ein Geheimnis machen

Sie haben vielleicht schon herausgefunden, dass hier Shamirs cleverer Plan ins Spiel kommt. Nehmen wir an, unser Geheimnis Shamirs geheimes Sharing-Programm - Das Shamirs geheimes Sharing-Programm. Wir können uns umdrehen Shamirs geheimes Sharing-Programm bis zum Punkt in der Grafik Shamirs geheimes Sharing-Programm und erstelle eine Polynomfunktion mit einem Grad Shamirs geheimes Sharing-Programm, was diesen Punkt erfüllt. Erinnere dich daran Shamirs geheimes Sharing-Programm wird unser Schwellenwert für die erforderlichen Fragmente sein. Wenn wir den Schwellenwert also auf drei Fragmente festlegen, müssen wir eine Polynomfunktion mit einem Grad von zwei wählen.

Unser Polynom wird die Form haben Shamirs geheimes Sharing-ProgrammWo Shamirs geheimes Sharing-Programm и Shamirs geheimes Sharing-Programm sind zufällig ausgewählte positive ganze Zahlen. Wir bilden einfach ein Polynom mit einem Grad Shamirs geheimes Sharing-Programm, wo der freie Koeffizient Shamirs geheimes Sharing-Programm - Das ist unser Geheimnis Shamirs geheimes Sharing-Programm, und jedes der folgenden Shamirs geheimes Sharing-Programm term ist ein zufällig ausgewählter positiver Koeffizient. Wenn wir zum ursprünglichen Beispiel zurückkehren und davon ausgehen Shamirs geheimes Sharing-Programm, dann erhalten wir die Funktion Shamirs geheimes Sharing-Programm.

An diesem Punkt können wir durch Verbinden Fragmente erzeugen Shamirs geheimes Sharing-Programm eindeutige ganze Zahlen in Shamirs geheimes Sharing-ProgrammWo Shamirs geheimes Sharing-Programm (weil es unser Geheimnis ist). In diesem Beispiel möchten wir vier Fragmente mit einem Schwellenwert von drei verteilen, also generieren wir zufällig Punkte Shamirs geheimes Sharing-Programm und senden Sie einen Punkt an jede der vier vertrauenswürdigen Personen, die den Schlüssel behalten. Das sagen wir den Leuten auch Shamirs geheimes Sharing-Programm, da es sich um öffentliche Informationen handelt und für die Wiederherstellung notwendig ist Shamirs geheimes Sharing-Programm.

Geheime Wiederherstellung

Wir haben bereits das Konzept der Polynominterpolation diskutiert und wie es dem Schwellenwertschema von Shamir zugrunde liegt. Shamirs geheimes Sharing-Programm. Wenn drei von vier Treuhändern eine Wiederherstellung wünschen Shamirs geheimes Sharing-Programm, sie müssen nur interpolieren Shamirs geheimes Sharing-Programm mit ihren einzigartigen Punkten. Dazu können sie ihre Punkte definieren Shamirs geheimes Sharing-Programm und berechnen Sie das Lagrange-Interpolationspolynom mit der folgenden Formel. Wenn Ihnen das Programmieren klarer ist als die Mathematik, dann ist Pi im Wesentlichen ein Operator for, was alle Ergebnisse multipliziert, und Sigma ist fordas summiert alles.

Shamirs geheimes Sharing-Programm

Shamirs geheimes Sharing-Programm

bei Shamirs geheimes Sharing-Programm Wir können es wie folgt lösen und unsere ursprüngliche Polynomfunktion zurückgeben:

Shamirs geheimes Sharing-Programm

Da wir das wissen Shamirs geheimes Sharing-Programm, Erholung Shamirs geheimes Sharing-Programm geht ganz einfach:

Shamirs geheimes Sharing-Programm

Verwendung unsicherer Ganzzahlarithmetik

Obwohl wir die Grundidee von Shamir erfolgreich angewendet haben Shamirs geheimes Sharing-Programm, stehen wir vor einem Problem, das wir bisher ignoriert haben. Unsere Polynomfunktion verwendet unsichere Ganzzahlarithmetik. Beachten Sie, dass für jeden zusätzlichen Punkt, den ein Angreifer in unserem Funktionsdiagramm erhält, weniger Möglichkeiten für andere Punkte bestehen. Sie können dies mit eigenen Augen sehen, wenn Sie mithilfe der Ganzzahlarithmetik eine zunehmende Anzahl von Punkten für eine Polynomfunktion zeichnen. Dies ist im Hinblick auf unser erklärtes Sicherheitsziel kontraproduktiv, da der Angreifer erst dann absolut nichts wissen sollte, wenn er es zumindest weiß Shamirs geheimes Sharing-Programm Fragmente.

Um zu veranschaulichen, wie schwach das Ganzzahl-Arithmetikschema ist, stellen Sie sich ein Szenario vor, in dem der Angreifer zwei Punkte erhalten hat Shamirs geheimes Sharing-Programm und kennt öffentliche Informationen darüber Shamirs geheimes Sharing-Programm. Aus diesen Informationen kann er schließen Shamirs geheimes Sharing-Programm, gleich zwei, und verbinden Sie die bekannten Werte mit der Formel Shamirs geheimes Sharing-Programm и Shamirs geheimes Sharing-Programm.

Shamirs geheimes Sharing-Programm

Der Angreifer kann dann finden Shamirs geheimes Sharing-Programm, Zählen Shamirs geheimes Sharing-Programm:

Shamirs geheimes Sharing-Programm

Da haben wir definiert Shamirs geheimes Sharing-Programm Da es sich um zufällig ausgewählte positive ganze Zahlen handelt, ist die Anzahl der möglichen Zahlen begrenzt Shamirs geheimes Sharing-Programm. Anhand dieser Informationen kann ein Angreifer Rückschlüsse ziehen Shamirs geheimes Sharing-Programm, weil alles, was größer als 5 ist, ausreicht Shamirs geheimes Sharing-Programm Negativ. Dies stellt sich als wahr heraus, da wir festgestellt haben Shamirs geheimes Sharing-Programm

Der Angreifer kann dann die möglichen Werte berechnen Shamirs geheimes Sharing-Programmersetzen Shamirs geheimes Sharing-Programm в Shamirs geheimes Sharing-Programm:

Shamirs geheimes Sharing-Programm

Mit begrenzten Möglichkeiten für Shamirs geheimes Sharing-Programm Es wird deutlich, wie einfach es ist, Werte zu erfassen und zu überprüfen Shamirs geheimes Sharing-Programm. Hier gibt es nur fünf Möglichkeiten.

Lösung des Problems mit unsicherer Ganzzahlarithmetik

Um diese Schwachstelle zu beheben, schlägt Shamir die Verwendung modularer Arithmetik durch Ersetzen vor Shamirs geheimes Sharing-Programm auf Shamirs geheimes Sharing-ProgrammWo Shamirs geheimes Sharing-Programm и Shamirs geheimes Sharing-Programm ist die Menge aller Primzahlen.

Erinnern wir uns kurz daran, wie die modulare Arithmetik funktioniert. Zeigeruhren sind ein bekanntes Konzept. Sie benutzt also eine Uhr Shamirs geheimes Sharing-Programm. Sobald der Stundenzeiger zwölf überschreitet, kehrt er auf eins zurück. Eine interessante Eigenschaft dieses Systems besteht darin, dass wir allein durch einen Blick auf die Uhr nicht darauf schließen können, wie viele Umdrehungen der Stundenzeiger gemacht hat. Wenn wir jedoch wissen, dass der Stundenzeiger viermal die 12 überschritten hat, können wir mit einer einfachen Formel die Anzahl der verstrichenen Stunden vollständig ermitteln Shamirs geheimes Sharing-ProgrammWo Shamirs geheimes Sharing-Programm ist unser Teiler (hier Shamirs geheimes Sharing-Programm), Shamirs geheimes Sharing-Programm - das ist der Koeffizient (wie oft der Divisor ohne Rest in die ursprüngliche Zahl eingeht, hier). Shamirs geheimes Sharing-Programm), und Shamirs geheimes Sharing-Programm ist der Rest, der normalerweise einen Aufruf an den Modulo-Operator zurückgibt (hier). Shamirs geheimes Sharing-Programm). Wenn wir alle diese Werte kennen, können wir die Gleichung nach lösen Shamirs geheimes Sharing-Programm, aber wenn wir den Koeffizienten überspringen, können wir den ursprünglichen Wert nie wiederherstellen.

Wir können demonstrieren, wie dies die Sicherheit unserer Schaltung verbessert, indem wir die Schaltung auf unser vorheriges Beispiel anwenden und verwenden Shamirs geheimes Sharing-Programm. Unsere neue Polynomfunktion Shamirs geheimes Sharing-Programm, und die neuen Punkte Shamirs geheimes Sharing-Programm. Jetzt können die Schlüsselverwalter erneut die Polynominterpolation verwenden, um unsere Funktion zu rekonstruieren, nur dass diesmal auf die Additions- und Multiplikationsoperationen eine Modulo-Reduktion folgen muss. Shamirs geheimes Sharing-Programm (z.B Shamirs geheimes Sharing-Programm).

Nehmen wir anhand dieses neuen Beispiels an, dass der Angreifer zwei dieser neuen Punkte gelernt hat: Shamirs geheimes Sharing-Programmund öffentliche Informationen Shamirs geheimes Sharing-Programm. Diesmal zeigt der Angreifer basierend auf allen ihm vorliegenden Informationen die folgenden Funktionen an: Shamirs geheimes Sharing-Programm ist die Menge aller positiven ganzen Zahlen und Shamirs geheimes Sharing-Programm stellt den Modulkoeffizienten dar Shamirs geheimes Sharing-Programm.

Shamirs geheimes Sharing-Programm

Jetzt findet unser Eindringling wieder Shamirs geheimes Sharing-Programm, berechnend Shamirs geheimes Sharing-Programm:

Shamirs geheimes Sharing-Programm

Dann versucht er erneut, sich zurückzuziehen Shamirs geheimes Sharing-Programmersetzen Shamirs geheimes Sharing-Programm в Shamirs geheimes Sharing-Programm:

Shamirs geheimes Sharing-Programm

Diesmal hat er ein ernstes Problem. In der Formel fehlen Werte Shamirs geheimes Sharing-Programm, Shamirs geheimes Sharing-Programm и Shamirs geheimes Sharing-Programm. Da es unendlich viele Kombinationen dieser Variablen gibt, kann er keine zusätzlichen Informationen erhalten.

Sicherheitsüberlegungen

Shamirs geheimer Austauschplan legt nahe Informationssicherheit. Dies bedeutet, dass die Mathematik selbst gegen einen Angreifer mit unbegrenzter Rechenleistung stark ist. Das Schema enthält jedoch immer noch mehrere bekannte Probleme.

Das Shamir-Schema schafft beispielsweise nichts Fragmente, die überprüft werden sollenDas heißt, es steht den Menschen frei, gefälschte Fragmente vorzulegen und die Wiederherstellung des richtigen Geheimnisses zu behindern. Ein feindlicher Fragmentbewahrer mit ausreichend Informationen kann durch Veränderung sogar ein weiteres Fragment erzeugen Shamirs geheimes Sharing-Programm in Ihrem Ermessen. Dieses Problem wird mit gelöst überprüfbare Schemata zur Weitergabe von Geheimnissen, wie zum Beispiel das Feldman-Schema.

Ein weiteres Problem besteht darin, dass die Länge eines beliebigen Fragments gleich der Länge des entsprechenden Geheimnisses ist, sodass die Länge des Geheimnisses leicht zu bestimmen ist. Dieses Problem wird durch das Triviale gelöst Polsterung geheim durch beliebige Zahlen bis zu einer festen Länge.

Abschließend ist es wichtig zu beachten, dass unsere Sicherheitsbedenken möglicherweise über das System selbst hinausgehen. Bei echten kryptografischen Anwendungen besteht häufig die Gefahr von Seitenkanalangriffen, wenn ein Angreifer versucht, nützliche Informationen aus der Ausführungszeit, dem Caching, Abstürzen usw. der Anwendung zu extrahieren. Wenn dies ein Problem darstellt, sollten Sie die Verwendung von Schutzmaßnahmen während der Entwicklung sorgfältig in Betracht ziehen, z. B. Funktionen und konstante Suchvorgänge, das Speichern von Speicher auf der Festplatte verhindern und eine Reihe anderer Dinge berücksichtigen, die über den Rahmen dieses Artikels hinausgehen.

Demo

Auf Diese Seite Es gibt eine interaktive Demonstration von Shamirs geheimem Austauschprogramm. Die Demonstration erfolgte anhand der Bibliothek ssss-js, das selbst eine JavaScript-Portierung eines beliebten Programms ist ssss. Beachten Sie, dass große Werte berechnet werden Shamirs geheimes Sharing-Programm, Shamirs geheimes Sharing-Programm и Shamirs geheimes Sharing-Programm kann eine Weile dauern.

Source: habr.com

Kommentar hinzufügen