Cryptology Academy · Lektion

Shamirs hemlighetsdelning: polynommatematik

Konstruera polynom över ändliga kroppar för att dela upp och återskapa hemligheter.

Lektion 2 av 413 steg

Shamirs hemlighetsdelning: polynommatematik är en gratis lektion i Cryptology Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cryptology Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Viktig insikt

Shamir's Secret Sharing (1979) kodar hemligheten som y-skärningen (f(0)) för ett slumpmässigt polynom av grad (k-1) över en ändlig kropp. Vilka k punkter som helst bestämmer entydigt polynomet (Lagrangeinterpolation); färre än k punkter avslöjar ingenting.

Polynomkonstruktion

För att dela hemligheten S med tröskeln k mellan n parter: välj ett primtal p > S och n. Välj slumpmässiga koefficienter a_1, ..., a_{k-1}. Definiera f(x) = S + a_1*x + a_2*x^2 + ... + a_{k-1}*x^{k-1} (mod p). Part i får andelen (i, f(i)).

Exempel: 2-av-3-schema

Hemlighet S=7, p=17, k=2 (linjärt polynom). Välj a_1=3. f(x)=7+3x mod 17. Andelar: (1,10), (2,13), (3,16). Vilka två punkter som helst bestämmer linjen. f(0)=7. En enda punkt: oändligt många möjliga linjer, ingen information om S.

Lagrangeinterpolation

Givet k punkter (x_1,y_1),...,(x_k,y_k), återskapas f(0) med Lagrange: S = sum_i y_i * prod_{j≠i} (0-x_j)/(x_i-x_j) mod p. All aritmetik är modulär. Inga flyttal — exakt rekonstruktion över den ändliga kroppen.

Python-implementation

from functools import reduce def lagrange(shares, p): xs = [s[0] for s in shares] ys = [s[1] for s in shares] result = 0 for i, (xi, yi) in enumerate(shares): num = reduce(lambda a,b: a*b%p, [(-xj)%p for j,xj in enumerate(xs) if j!=i], 1) den = reduce(lambda a,b: a*b%p, [(xi-xj)%p for j,xj in enumerate(xs) if j!=i], 1) result = (result + yi * num * pow(den, p-2, p)) % p return result

Bevisöversikt för perfekt säkerhet

För k-1 delar finns det exakt ett polynom av grad k-1 som går genom dessa k-1 punkter, för varje möjligt hemligt värde S. Om man känner till k-1 delar är därför varje värde på S i [0, p-1] lika sannolikt – ingen information avslöjas.

Val av primtal

p måste vara större än hemligheten och n. Ett vanligt val är p = 2^127-1 (Mersenne-primtal) för 128-bitarshemligheter. Detta säkerställer att alla delar ryms på 128 bitar och att aritmetiken blir effektiv. Alternativt kan p = 2^521-1 användas för 512-bitarshemligheter.

Verifiering av delar

Grundläggande SSS garanterar inte delarnas integritet: en illvillig deltagare kan skicka in en falsk del, vilket leder till att hemligheten återskapas felaktigt. Feldman VSS (Verifiable Secret Sharing) publicerar commitmenter g^{a_i} mod p, så att delar kan verifieras utan att polynomet avslöjas.

Proaktiv hemlighetsdelning

Delar kan förnyas regelbundet: generera ett nytt polynom med samma hemlighet S och distribuera nya delar; gamla delar blir ogiltiga. En angripare som tar kontroll över en deltagare efter förnyelsen får en oanvändbar gammal del. Detta används i system för långlivad nyckelhantering.

Implementeringar

ssss (kommandorad i Linux), python-secret-sharing, hashicorp/vault använder SSS för sin förseglingsmekanism och hårdvaruplånboken Trezor använder SSS för säkerhetskopiering av plånboksseed (SLIP-39). Alla arbetar över ändliga kroppar med stora primtal.

Begränsningar

SSS kräver en betrodd distributör för att generera och distribuera delar (distributören känner till hemligheten). Ett scenario utan distributör kräver DKG (Distributed Key Generation). Återskapandet avslöjar hemligheten för den som har k delar – detta undviks med MPC eller tröskelsignaturer.

Snabbkontroll

I Shamir's (3,5) hemlighetsdelning, hur många delar krävs minst för att återskapa hemligheten?

Sammanfattning

Shamir's SSS kodar hemligheter som polynomets skärningspunkt med y-axeln. Lagrangeinterpolation återskapar hemligheten från k delar. Perfekt informationsteoretisk säkerhet för färre än k delar. Nästa avsnitt: visuell och additiv hemlighetsdelning.

Gratis att börja

Lär dig Cryptology Academy med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
67
Lektioner
261

Vanliga frågor

Är lektionen ”Shamirs hemlighetsdelning: polynommatematik” gratis?

Ja – hela texten till ”Shamirs hemlighetsdelning: polynommatematik” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cryptology Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Shamirs hemlighetsdelning: polynommatematik”?

Konstruera polynom över ändliga kroppar för att dela upp och återskapa hemligheter. Ni övar på Cryptology Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cryptology Academy?

Du behöver inga förkunskaper. Utbildningen i Cryptology Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Shamirs hemlighetsdelning: polynommatematik”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cryptology Academy-lektionen?

Ja. Varje Cryptology Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Problemet med hemlighetsdelning
  2. Shamirs hemlighetsdelning: polynommatematik
  3. Visuell hemlighetsdelning och additiva scheman
  4. Tröskelsignaturer och användningsområden i verkligheten
← Tillbaka till Cryptology Academy