Utilia

Shamir-féle titokmegosztás

Oszd fel a jelszót vagy a helyreállítási kifejezést N részre úgy, hogy bármelyik M helyreállítsa, Shamir titokmegosztásával, helyben a böngésződben.

A felosztás és az összeállítás teljes egészében a böngésződben fut. A titok és a részek sehová nem kerülnek elküldésre; a véletlen számokat a crypto.getRandomValues szolgáltatja.

Titok felosztása

    Részek összeállítása

    Hogyan oszd fel a titkot

    1. Írd be vagy illeszd be a védendő szöveget a Titok (szöveg) mezőbe: helyreállítási kifejezést, mesterjelszót, titkosítókulcsot…
    2. Állítsd be A részek számát (N) és A visszaállításhoz szükséges részeket (M). Például N = 5 és M = 3 esetén az 5 részből bármelyik 3 helyreállítja a titkot, 2 rész pedig semmit sem árul el.
    3. Kattints a Titok felosztása gombra. Minden rész külön sorban jelenik meg Másolás gombbal; használhatod az Összes rész másolása vagy a Részek letöltése (.txt) lehetőséget is.
    4. Kattints a Teszt: az első M rész összeállítása gombra, hogy a kiosztás előtt ellenőrizd, működnek-e a részek.
    5. Minden részt adj egy másik embernek, vagy tárold máshol. Ne tartsd őket egy helyen, különben a felosztásnak semmi értelme.

    Hogyan állítsd vissza a titkot

    1. Illessz be legalább M részt a Részek, soronként egy mezőbe, tetszőleges sorrendben. Az üres sorokat az eszköz figyelmen kívül hagyja.
    2. Kattints a Részek összeállítása gombra. A szöveg a Helyreállított titok alatt jelenik meg, az állapotsor pedig megmondja, mely részsorszámokat használta az eszköz.
    3. Ha egy részben elírás van, másik felosztásból származik, vagy kétszer szerepel eltérő tartalommal, az eszköz megmondja, melyik és miért, ahelyett, hogy értelmetlen adatot adna vissza.

    Hogyan működik a Shamir-féle titokmegosztás

    Adi Shamir 1979-ben publikálta a sémát. Egyetlen s bájt M küszöbértékkel történő megosztásához válassz egy véletlen, M − 1 fokú polinomot, amelynek konstans tagja s: f(x) = s + a₁x + … + a₍M−1₎x^(M−1). Az x-edik rész az f(x) érték. Bármely M pont meghatározza a polinomot, így a Lagrange-interpoláció az x = 0 helyen visszaadja s-t; M-nél kevesebb pont esetén s minden értéke egyformán valószínű, tehát a részek semmit sem árulnak el a titokról.

    Az eszköz a GF(256) véges testben dolgozik (az AES is ezt használja, az x⁸ + x⁴ + x³ + x + 1 redukáló polinommal), ezért az UTF-8 titok minden bájtjához külön polinom tartozik, a részek pedig pontosan olyan hosszúak, mint a titok. A véletlen együtthatókat a crypto.getRandomValues, a böngésző kriptográfiai véletlenszám-generátora adja. Minden helyben fut: a titok és a részek nem hagyják el az eszközödet.

    A részek formátuma

    Egy rész így néz ki: 3-2-5f1c…: az M küszöbérték, az X részszám (1–255), majd hexadecimális adat. Az adat a titokhoz tartozó polinomértékeket tartalmazza, majd a titok 4 bájtos CRC-32 értékét, és a rész saját 4 bájtos CRC-32 ellenőrzőösszegével végződik. Az ellenőrzőösszeg a másolási hibákat fogja meg; a belső CRC jelzi, ha különböző titkok részeit kevered össze. Más Shamir-eszközök által készített részek más formátumot használnak, és itt nem állíthatók össze.

    Gyakori kérdések

    Hogyan válasszam meg az N és az M értékét?

    Az M az, hányan vagy hány helyen kell együttműködni, az N − M pedig az, hány részt engedhetsz meg magadnak elveszíteni. Gyakori választás az 5-ből 3: két részt elveszíthetsz vagy megsemmisülhet, és a birtokosok közül egyetlen pár sem tudja egyedül helyreállítani a titkot.

    Biztonságos az egyik részt a felhőben tárolni?

    Egyetlen rész, vagy bármely M-nél kisebb csoport semmit sem árul el a titokról. Ennek ellenére egy fiókban vagy helyen tarts M-nél kevesebb részt, különben az a hely egymaga birtokolja a titkot.

    Titkosítja ez az eszköz a titkot?

    A szokásos értelemben nem: nincs jelszó. A védelmet a küszöbérték adja. A kettőt kombinálhatod is, például egy titkosított fájl jelmondatát osztod fel.

    Mi történik, ha M-nél több részt adok meg?

    Az első M rész állítja helyre a titkot, a többit az eszköz ezekhez viszonyítva ellenőrzi. A nem illeszkedő részt jelzi, ami segít kiszúrni a sérült vagy idegen részt.

    Feloszthatok egy fájlt?

    Az eszköz legfeljebb 10 000 bájt hosszú szöveget oszt fel. Fájl esetén titkosítsd erős, véletlen jelmondattal, és a jelmondatot told fel részekre.