Utilia

Ndarja e sekretit Shamir

Ndaje një fjalëkalim ose frazë rikuperimi në N pjesë ashtu që çfarëdo M prej tyre ta rindërtojnë, me ndarjen e sekretit të Shamir mbi GF(256), lokalisht.

Ndarja dhe bashkimi ekzekutohen tërësisht në shfletuesin tënd. Sekreti dhe pjesët nuk dërgohen askund; numrat e rastësishëm vijnë nga crypto.getRandomValues.

Ndaj një sekret

    Bashko pjesët

    Si ta ndash një sekret

    1. Shkruaj ose ngjit tekstin për t’u mbrojtur te Sekreti (tekst): një frazë rikuperimi, një fjalëkalim kryesor, një çelës enkriptimi…
    2. Vendos Numrin e pjesëve (N) dhe Pjesët e nevojshme për rindërtim (M). Për shembull, N = 5 dhe M = 3 do të thotë që çfarëdo 3 nga 5 pjesët e rindërtojnë sekretin, ndërsa 2 pjesë nuk zbulojnë asgjë.
    3. Kliko Ndaj sekretin. Çdo pjesë shfaqet në rreshtin e vet me një buton Kopjo; mund të përdorësh edhe Kopjo të gjitha pjesët ose Shkarko pjesët (.txt).
    4. Kliko Provë: bashko M pjesët e para për të kontrolluar që pjesët funksionojnë para se t’i shpërndash.
    5. Jepi çdo pjesë një personi tjetër ose ruaje në një vend tjetër. Mos i mbaj të gjitha bashkë, përndryshe ndarja nuk ka kuptim.

    Si ta rindërtosh sekretin

    1. Ngjit të paktën M pjesë te Pjesët, një për rresht, në çfarëdo rendi. Rreshtat bosh shpërfillen.
    2. Kliko Bashko pjesët. Teksti shfaqet nën Sekreti i rikuperuar, dhe gjendja tregon cilat numra pjesësh u përdorën.
    3. Nëse një pjesë ka gabim shkrimi, vjen nga një ndarje tjetër ose shfaqet dy herë me përmbajtje të ndryshme, mjeti tregon cila dhe pse, në vend që të kthejë rezultat pa kuptim.

    Si funksionon ndarja e sekretit të Shamir

    Adi Shamir e publikoi skemën në vitin 1979. Për të ndarë një bajt s me prag M, zgjidhet një polinom i rastësishëm i shkallës M − 1 me term konstant s: f(x) = s + a₁x + … + a₍M−1₎x^(M−1). Pjesa me numër x është vlera f(x). Çfarëdo M pikash e përcaktojnë polinomin, ndaj interpolimi i Lagranzhit në x = 0 e kthen s; me më pak se M pika, çdo vlerë e s është njëlloj e mundshme, pra pjesët nuk zbulojnë asgjë për sekretin.

    Ky mjet punon në fushën e fundme GF(256) (atë që përdor AES, me polinomin e reduktimit x⁸ + x⁴ + x³ + x + 1), ndaj çdo bajt i sekretit UTF-8 merr polinomin e vet dhe pjesët janë saktësisht aq të gjata sa sekreti. Koeficientët e rastësishëm vijnë nga crypto.getRandomValues, gjeneratori kriptografik i numrave të rastësishëm i shfletuesit. Gjithçka ekzekutohet lokalisht: sekreti dhe pjesët nuk largohen kurrë nga pajisja jote.

    Formati i pjesës

    Një pjesë duket si 3-2-5f1c…: pragu M, numri i pjesës X (1 deri 255), pastaj të dhëna heksadecimale. Të dhënat përmbajnë vlerat e polinomit për sekretin, të ndjekura nga një CRC-32 4-bajtësh i sekretit, dhe mbarojnë me një shumë kontrolli CRC-32 4-bajtëshe të vetë pjesës. Shuma e kontrollit kap gabimet e kopjimit; CRC-ja e brendshme tregon kur janë përzier pjesë nga sekrete të ndryshme. Pjesët e krijuara nga mjete të tjera Shamir përdorin formate të tjera dhe nuk mund të bashkohen këtu.

    Pyetje të shpeshta

    Si duhet t'i zgjedh N dhe M?

    M është sa persona ose vende duhet të bashkëpunojnë, N − M është sa pjesë mund t’i lejosh vetes t’i humbasësh. 3 nga 5 është zgjedhje e zakonshme: dy pjesë mund të humbin ose shkatërrohen, dhe asnjë çift mbajtësish nuk e rindërton dot sekretin vetë.

    A është e sigurt të ruaj një pjesë në cloud?

    Një pjesë e vetme, ose çdo grup më i vogël se M, nuk zbulon asgjë për sekretin. Prapë, mbaj më pak se M pjesë në një llogari ose vend të vetëm, përndryshe ai vend i vetëm e mban sekretin.

    A e enkripton ky mjet sekretin?

    Jo në kuptimin e zakonshëm: nuk ka fjalëkalim. Mbrojtja vjen nga pragu. Mund t’i kombinosh të dyja, për shembull duke ndarë frazëkalimin e një skedari të enkriptuar.

    Çfarë ndodh nëse jap më shumë se M pjesë?

    M pjesët e para e rindërtojnë sekretin dhe të tjerat kontrollohen kundrejt tyre. Një pjesë që nuk përshtatet raportohet, gjë që ndihmon të dallohet një pjesë e dëmtuar ose e huaj.

    A mund të ndaj një skedar?

    Ky mjet ndan tekst deri në 10 000 bajt. Për një skedar, enkriptoje me një frazëkalim të fortë të rastësishëm dhe ndaje frazëkalimin.