Utilia

Shamirs hemlighetsdelning

Dela upp ett lösenord eller en återställningsfras i N delar där vilka M som helst återställer den, med Shamirs metod över GF(256), lokalt i webbläsaren.

Uppdelning och sammanslagning sker helt i din webbläsare. Hemligheten och delarna skickas aldrig någonstans; slumptalen kommer från crypto.getRandomValues.

Dela upp en hemlighet

    Slå ihop delar

    Så delar du upp en hemlighet

    1. Skriv eller klistra in texten som ska skyddas i Hemlighet (text): en återställningsfras, ett huvudlösenord, en krypteringsnyckel …
    2. Ange Antal delar (N) och Delar som behövs för återställning (M). N = 5 och M = 3 betyder till exempel att vilka 3 som helst av de 5 delarna återställer hemligheten, medan 2 delar inte avslöjar någonting.
    3. Klicka på Dela upp hemligheten. Varje del visas på en egen rad med en Kopiera-knapp. Du kan också använda Kopiera alla delar eller Ladda ner delarna (.txt).
    4. Klicka på Testa: slå ihop de första M delarna för att kontrollera att delarna fungerar innan du lämnar ut dem.
    5. Ge varje del till en annan person eller förvara den på ett annat ställe. Förvara inte alla tillsammans, då är uppdelningen meningslös.

    Så återställer du hemligheten

    1. Klistra in minst M delar i Delar, en per rad, i valfri ordning. Tomma rader ignoreras.
    2. Klicka på Slå ihop delarna. Texten visas under Återställd hemlighet, och statusraden anger vilka delnummer som användes.
    3. Om en del innehåller ett skrivfel, kommer från en annan uppdelning eller förekommer två gånger med olika innehåll talar verktyget om vilken det gäller och varför, i stället för att returnera skräp.

    Så fungerar Shamirs hemlighetsdelning

    Adi Shamir publicerade metoden 1979. För att dela en byte s med tröskeln M väljer man ett slumpmässigt polynom av grad M − 1 vars konstantterm är s: f(x) = s + a₁x + … + a₍M−1₎x^(M−1). Del nummer x är värdet f(x). Vilka M punkter som helst bestämmer polynomet, så Lagrangeinterpolation i x = 0 ger tillbaka s. Med färre än M punkter är varje värde på s lika sannolikt, så delarna läcker ingenting om hemligheten.

    Verktyget räknar i den ändliga kroppen GF(256) (samma som AES använder, med reduktionspolynomet x⁸ + x⁴ + x³ + x + 1). Varje byte i den UTF-8-kodade hemligheten får alltså ett eget polynom, och delarna blir exakt lika långa som hemligheten. De slumpmässiga koefficienterna kommer från crypto.getRandomValues, webbläsarens kryptografiska slumptalsgenerator. Allt körs lokalt: hemligheten och delarna lämnar aldrig din enhet.

    Delarnas format

    En del ser ut som 3-2-5f1c…: tröskeln M, delnumret X (1 till 255) och sedan hexadecimala data. Datan innehåller polynomvärdena för hemligheten följda av en CRC-32 på 4 byte för hemligheten, och slutar med en CRC-32-kontrollsumma på 4 byte för själva delen. Kontrollsumman fångar kopieringsfel, och den inre CRC:n visar om delar från olika hemligheter har blandats. Delar som skapats med andra Shamir-verktyg har andra format och kan inte slås ihop här.

    Vanliga frågor

    Hur väljer jag N och M?

    M är hur många personer eller platser som måste samarbeta, och N − M är hur många delar du har råd att förlora. 3 av 5 är ett vanligt val: två delar kan försvinna eller förstöras, och inget par av innehavare kan återställa hemligheten på egen hand.

    Är det säkert att lagra en del i molnet?

    En enskild del, eller vilken grupp som helst som är mindre än M, avslöjar ingenting om hemligheten. Ha ändå färre än M delar på ett och samma konto eller ställe, annars innehåller det stället ensamt hela hemligheten.

    Krypterar verktyget hemligheten?

    Inte i vanlig mening: det finns inget lösenord. Skyddet kommer från tröskeln. Du kan kombinera båda, till exempel genom att dela upp lösenfrasen till en krypterad fil.

    Vad händer om jag anger fler än M delar?

    De första M delarna återställer hemligheten, och de extra kontrolleras mot dem. En del som inte passar rapporteras, vilket hjälper dig att hitta en skadad eller främmande del.

    Kan jag dela upp en fil?

    Verktyget delar upp text på upp till 10 000 byte. För en fil krypterar du den med en stark, slumpmässig lösenfras och delar sedan upp lösenfrasen i stället.