Utilia

Shamir Secret Sharing

Splits een wachtwoord of herstelzin op in N delen, zodat elke M ervan het geheim herstellen, met Shamir Secret Sharing over GF(256), lokaal in je browser.

Opsplitsen en samenvoegen gebeuren volledig in je browser. Het geheim en de delen worden nergens naartoe gestuurd; de willekeurige getallen komen van crypto.getRandomValues.

Een geheim opsplitsen

    Delen samenvoegen

    Zo splits je een geheim op

    1. Typ of plak de tekst die je wilt beschermen in Geheim (tekst): een herstelzin, een hoofdwachtwoord, een encryptiesleutel…
    2. Stel het Aantal delen (N) en de Delen nodig voor herstel (M) in. N = 5 en M = 3 betekent bijvoorbeeld dat elke 3 van de 5 delen samen het geheim herstellen, en dat 2 delen niets prijsgeven.
    3. Klik op Geheim opsplitsen. Elk deel verschijnt op een eigen regel met een knop Kopiëren; je kunt ook Alle delen kopiëren of Delen downloaden (.txt).
    4. Klik op Test: de eerste M delen samenvoegen om te controleren of de delen werken voordat je ze uitdeelt.
    5. Geef elk deel aan een andere persoon of bewaar het op een andere plek. Bewaar ze niet allemaal bij elkaar, anders heeft het opsplitsen geen zin.

    Zo herstel je het geheim

    1. Plak minstens M delen in Delen, één per regel, in willekeurige volgorde. Lege regels worden genegeerd.
    2. Klik op Delen samenvoegen. De tekst verschijnt onder Hersteld geheim en de statusregel vermeldt welke deelnummers zijn gebruikt.
    3. Bevat een deel een tikfout, komt het uit een andere opsplitsing of staat het er twee keer in met verschillende inhoud, dan zegt de tool welk deel het is en waarom, in plaats van onzin terug te geven.

    Hoe Shamir Secret Sharing werkt

    Adi Shamir publiceerde het schema in 1979. Om één byte s te delen met drempel M kies je een willekeurige veelterm van graad M − 1 waarvan de constante term s is: f(x) = s + a₁x + … + a₍M−1₎x^(M−1). Deel nummer x is de waarde f(x). Elke M punten bepalen de veelterm, dus Lagrange-interpolatie in x = 0 geeft s terug. Met minder dan M punten is elke waarde van s even waarschijnlijk, dus de delen verraden niets over het geheim.

    Deze tool rekent in het eindige lichaam GF(256) (hetzelfde als bij AES, met de reductieveelterm x⁸ + x⁴ + x³ + x + 1). Elke byte van het UTF-8-geheim krijgt dus een eigen veelterm, en de delen zijn precies even lang als het geheim. De willekeurige coëfficiënten komen van crypto.getRandomValues, de cryptografische toevalsgenerator van de browser. Alles draait lokaal: het geheim en de delen verlaten je apparaat nooit.

    Formaat van de delen

    Een deel ziet eruit als 3-2-5f1c…: de drempel M, het deelnummer X (1 tot 255) en daarna hexadecimale gegevens. Die gegevens bevatten de waarden van de veeltermen voor het geheim, gevolgd door een CRC-32 van 4 bytes van het geheim, en eindigen met een CRC-32-controlesom van 4 bytes van het deel zelf. De controlesom vangt kopieerfouten af; de interne CRC laat zien wanneer delen van verschillende geheimen door elkaar zijn gehaald. Delen die met andere Shamir-tools zijn gemaakt, gebruiken andere formaten en kunnen hier niet worden samengevoegd.

    Veelgestelde vragen

    Hoe kies ik N en M?

    M is het aantal mensen of plekken dat moet samenwerken, N − M is het aantal delen dat je kunt missen. 3 van 5 is een gangbare keuze: twee delen mogen verloren gaan of vernietigd worden, en geen enkel tweetal houders kan het geheim op eigen houtje herstellen.

    Is het veilig om één deel in de cloud te bewaren?

    Eén deel, of een groep van minder dan M delen, zegt niets over het geheim. Bewaar toch nooit M of meer delen in één account of op één plek, want dan heeft die plek in z’n eentje het geheim.

    Versleutelt deze tool het geheim?

    Niet in de gebruikelijke zin: er is geen wachtwoord. De bescherming komt van de drempel. Je kunt beide combineren, bijvoorbeeld door de wachtzin van een versleuteld bestand op te splitsen.

    Wat gebeurt er als ik meer dan M delen opgeef?

    De eerste M delen herstellen het geheim en de extra delen worden daartegen gecontroleerd. Een deel dat niet past wordt gemeld, zodat je een beschadigd of vreemd deel snel opmerkt.

    Kan ik een bestand opsplitsen?

    Deze tool splitst tekst tot 10.000 bytes. Voor een bestand versleutel je het eerst met een sterke, willekeurige wachtzin en splits je vervolgens die wachtzin op.