Utilia

Partajarea secretelor Shamir

Împarte o parolă sau o frază de recuperare în N fragmente, dintre care oricare M o reconstituie, prin schema Shamir peste GF(256), local, în browserul tău.

Împărțirea și combinarea rulează integral în browserul tău. Secretul și fragmentele nu sunt trimise nicăieri; numerele aleatorii vin din crypto.getRandomValues.

Împarte un secret

    Combină fragmente

    Cum împarți un secret

    1. Scrie sau lipește textul de protejat în Secret (text): o frază de recuperare, o parolă principală, o cheie de criptare…
    2. Setează Numărul de fragmente (N) și Fragmente necesare pentru reconstituire (M). De exemplu, N = 5 și M = 3 înseamnă că oricare 3 dintre cele 5 fragmente reconstituie secretul, iar 2 fragmente nu dezvăluie nimic.
    3. Apasă Împarte secretul. Fiecare fragment apare pe propria linie, cu un buton Copiază; poți și să Copiază toate fragmentele sau să Descarcă fragmentele (.txt).
    4. Apasă Test: combină primele M fragmente ca să verifici că fragmentele funcționează înainte să le împarți.
    5. Dă fiecare fragment unei persoane diferite sau păstrează-l într-un loc diferit. Nu le ține pe toate la un loc, altfel împărțirea nu are rost.

    Cum reconstitui secretul

    1. Lipește cel puțin M fragmente în Fragmente, câte unul pe linie, în orice ordine. Liniile goale sunt ignorate.
    2. Apasă Combină fragmentele. Textul apare sub Secret recuperat, iar starea spune ce numere de fragmente au fost folosite.
    3. Dacă un fragment are o greșeală de tastare, provine din altă împărțire sau apare de două ori cu conținut diferit, instrumentul spune care și de ce, în loc să returneze date fără sens.

    Cum funcționează schema Shamir

    Adi Shamir a publicat schema în 1979. Ca să partajezi un octet s cu pragul M, alegi un polinom aleatoriu de gradul M − 1 al cărui termen liber este s: f(x) = s + a₁x + … + a₍M−1₎x^(M−1). Fragmentul cu numărul x este valoarea f(x). Oricare M puncte determină polinomul, deci interpolarea Lagrange în x = 0 dă înapoi s; cu mai puțin de M puncte, orice valoare a lui s este la fel de probabilă, așa că fragmentele nu dezvăluie nimic despre secret.

    Instrumentul lucrează în corpul finit GF(256) (cel folosit de AES, cu polinomul de reducere x⁸ + x⁴ + x³ + x + 1), deci fiecare octet al secretului UTF-8 are propriul polinom, iar fragmentele au exact aceeași lungime ca secretul. Coeficienții aleatorii vin din crypto.getRandomValues, generatorul aleatoriu criptografic al browserului. Totul rulează local: secretul și fragmentele nu părăsesc niciodată dispozitivul tău.

    Formatul unui fragment

    Un fragment arată ca 3-2-5f1c…: pragul M, numărul fragmentului X (de la 1 la 255), apoi date hexazecimale. Datele conțin valorile polinomului pentru secret, urmate de un CRC-32 de 4 octeți al secretului, și se încheie cu o sumă de control CRC-32 de 4 octeți a fragmentului însuși. Suma de control prinde greșelile de copiere; CRC-ul interior arată când s-au amestecat fragmente din secrete diferite. Fragmentele create de alte instrumente Shamir folosesc alte formate și nu pot fi combinate aici.

    Întrebări frecvente

    Cum aleg N și M?

    M este câte persoane sau locuri trebuie să coopereze, iar N − M este câte fragmente îți poți permite să pierzi. 3 din 5 este o alegere uzuală: două fragmente se pot pierde sau distruge, iar nicio pereche de deținători nu poate reconstitui secretul singură.

    Este sigur să păstrez un fragment în cloud?

    Un singur fragment, sau orice grup mai mic de M, nu dezvăluie nimic despre secret. Totuși, ține mai puțin de M fragmente în orice cont sau loc, altfel acel loc singur deține secretul.

    Criptează acest instrument secretul?

    Nu în sensul obișnuit: nu există o parolă. Protecția vine din prag. Le poți combina, de exemplu împărțind fraza-parolă a unui fișier criptat.

    Ce se întâmplă dacă dau mai mult de M fragmente?

    Primele M fragmente reconstituie secretul, iar cele în plus sunt verificate față de ele. Un fragment care nu se potrivește este semnalat, ceea ce ajută la depistarea unui fragment deteriorat sau străin.

    Pot împărți un fișier?

    Instrumentul împarte text de până la 10.000 de octeți. Pentru un fișier, criptează-l cu o frază-parolă aleatorie puternică și împarte în schimb fraza-parolă.