Utilia

Compartició de secrets de Shamir

Divideix una contrasenya o frase de recuperació en N parts de manera que qualsevol M la reconstrueixin, amb l'esquema de Shamir sobre GF(256), al navegador.

La divisió i la combinació s'executen íntegrament al teu navegador. El secret i les parts no s'envien enlloc; els nombres aleatoris provenen de crypto.getRandomValues.

Divideix un secret

    Combina parts

    Com dividir un secret

    1. Escriu o enganxa el text que vols protegir a Secret (text): una frase de recuperació, una contrasenya mestra, una clau de xifratge…
    2. Defineix el Nombre de parts (N) i les Parts necessàries per reconstruir-lo (M). Per exemple, N = 5 i M = 3 vol dir que qualsevol 3 de les 5 parts reconstrueixen el secret, i que 2 parts no revelen res.
    3. Fes clic a Divideix el secret. Cada part apareix en una línia pròpia amb un botó Copia; també pots fer servir Copia totes les parts o Baixa les parts (.txt).
    4. Fes clic a Prova: combina les primeres M parts per comprovar que les parts funcionen abans de repartir-les.
    5. Dona cada part a una persona diferent o desa-la en un lloc diferent. No les guardis totes juntes, o la divisió no serveix de res.

    Com reconstruir el secret

    1. Enganxa almenys M parts a Parts, una per línia, en qualsevol ordre. Les línies en blanc s’ignoren.
    2. Fes clic a Combina les parts. El text apareix sota Secret recuperat, i l’estat indica quins números de part s’han fet servir.
    3. Si una part té una errada, prové d’una altra divisió o apareix dues vegades amb contingut diferent, l’eina diu quina i per què, en lloc de retornar text sense sentit.

    Com funciona la compartició de secrets de Shamir

    Adi Shamir va publicar l’esquema el 1979. Per compartir un byte s amb llindar M, es tria un polinomi aleatori de grau M − 1 el terme constant del qual és s: f(x) = s + a₁x + … + a₍M−1₎x^(M−1). La part número x és el valor f(x). Qualsevol conjunt de M punts determina el polinomi, de manera que la interpolació de Lagrange a x = 0 retorna s; amb menys de M punts, tots els valors de s són igualment probables, i per tant les parts no filtren res del secret.

    Aquesta eina treballa al cos finit GF(256) (el que fa servir AES, amb el polinomi de reducció x⁸ + x⁴ + x³ + x + 1), de manera que cada byte del secret en UTF-8 té el seu propi polinomi i les parts fan exactament la mateixa longitud que el secret. Els coeficients aleatoris provenen de crypto.getRandomValues, el generador aleatori criptogràfic del navegador. Tot s’executa en local: el secret i les parts no surten mai del teu dispositiu.

    Format de les parts

    Una part té un aspecte com 3-2-5f1c…: el llindar M, el número de part X (de l‘1 al 255) i després les dades hexadecimals. Les dades contenen els valors del polinomi per al secret seguits d’un CRC-32 de 4 bytes del secret, i acaben amb una suma de control CRC-32 de 4 bytes de la mateixa part. La suma de control detecta errors en copiar; el CRC intern mostra quan s’han barrejat parts de secrets diferents. Les parts creades per altres eines de Shamir fan servir altres formats i no es poden combinar aquí.

    Preguntes freqüents

    Com he de triar N i M?

    M és quantes persones o llocs han de cooperar, i N − M és quantes parts et pots permetre perdre. 3 de 5 és una opció habitual: es poden perdre o destruir dues parts, i cap parella de titulars no pot reconstruir el secret per si sola.

    És segur desar una part al núvol?

    Una sola part, o qualsevol grup de menys de M, no revela res del secret. Tot i així, guarda menys de M parts en un mateix compte o lloc; si no, aquell lloc per si sol conté el secret.

    Aquesta eina xifra el secret?

    No en el sentit habitual: no hi ha cap contrasenya. La protecció prové del llindar. Pots combinar-ho amb xifratge, per exemple dividint la contrasenya d’un fitxer xifrat.

    Què passa si dono més de M parts?

    Les primeres M parts reconstrueixen el secret i les addicionals es comproven amb elles. Si una part no hi encaixa, s’informa, cosa que ajuda a detectar una part malmesa o aliena.

    Puc dividir un fitxer?

    Aquesta eina divideix text de fins a 10.000 bytes. Per a un fitxer, xifra’l amb una contrasenya aleatòria forta i divideix la contrasenya.