ĂvervĂ€g ett scenario dĂ€r du behöver sĂ€kra ett bankvalv. Det anses absolut ointagligt utan nyckel, som du fĂ„r redan första arbetsdagen. Ditt mĂ„l Ă€r att förvara nyckeln pĂ„ ett sĂ€kert sĂ€tt.
LÄt oss sÀga att du bestÀmmer dig för att ha nyckeln med dig hela tiden, och ge tillgÄng till lagringen efter behov. Men du kommer snabbt att inse att en sÄdan lösning inte skalar bra i praktiken, eftersom din fysiska nÀrvaro krÀvs varje gÄng du öppnar förrÄdet. Hur Àr det med semestern du blev lovad? Dessutom Àr frÄgan Ànnu mer skrÀmmande: tÀnk om du tappade bort din enda nyckel?
Med din semester i Ätanke bestÀmmer du dig för att göra en kopia av nyckeln och anförtro den till en annan anstÀlld. Du förstÄr dock att detta inte heller Àr idealiskt. Genom att dubbla antalet nycklar fördubblar du ocksÄ chansen för nyckelstöld.
I desperation förstör du dubbletten och bestÀmmer dig för att dela originalnyckeln pÄ mitten. Nu skulle du kunna tro att tvÄ betrodda personer med nyckelfragment mÄste vara fysiskt nÀrvarande för att hÀmta nyckeln och öppna valvet. Det betyder att en tjuv behöver stjÀla tvÄ bitar, vilket Àr dubbelt sÄ svÄrt som att stjÀla en nyckel. Men du inser snart att det hÀr schemat inte Àr mycket bÀttre Àn bara en nyckel, för om nÄgon tappar en halv nyckel kan hela nyckeln inte ÄterstÀllas.
Problemet kan lösas med en rad ytterligare nycklar och lĂ„s, men detta tillvĂ€gagĂ„ngssĂ€tt kommer snabbt att krĂ€va ĐŒĐœĐŸĐłĐŸ nycklar och lĂ„s. Du bestĂ€mmer dig för att den idealiska designen skulle vara att dela nyckeln sĂ„ att sĂ€kerheten inte helt förlitar sig pĂ„ en person. Du drar ocksĂ„ slutsatsen att det mĂ„ste finnas nĂ„gon tröskel för antalet fragment sĂ„ att om ett fragment försvinner (eller om en person Ă„ker pĂ„ semester) förblir hela nyckeln funktionell.
Hur man delar en hemlighet
Den hÀr typen av nyckelhanteringsplan tÀnkte Adi Shamir pÄ 1979 nÀr han publicerade sitt arbete . Artikeln förklarar kort den sk
tröskelschema för att effektivt dela upp ett hemligt vÀrde (sÄsom en kryptografisk nyckel) i
delar. DÄ, nÀr och bara nÀr Ätminstone
av
delar Àr monterade, kan du enkelt ÄterstÀlla hemligheten
.
Ur sÀkerhetssynpunkt Àr en viktig egenskap hos detta system att angriparen inte ska veta absolut nÄgonting om han inte har minst
delar. Till och med nÀrvaron
delar ska inte ge nÄgon information. Vi kallar denna fastighet semantisk sÀkerhet.
Polynominterpolation
Shamir tröskelschema
uppbyggd kring konceptet polynominterpolation. Om du inte Àr bekant med detta koncept Àr det faktiskt ganska enkelt. Faktum Àr att om du nÄgonsin har ritat punkter pÄ en graf och sedan kopplat dem med linjer eller kurvor, har du redan anvÀnt det!

Genom tvÄ punkter kan du rita ett obegrÀnsat antal polynom av grad 2. För att vÀlja den enda av dem behöver du en tredje poÀng. Illustration:
Betrakta ett polynom med grad ett,
. Om du vill rita den hÀr funktionen pÄ en graf, hur mÄnga poÀng behöver du? Tja, vi vet att detta Àr en linjÀr funktion som bildar en linje och dÀrför behöver den minst tvÄ punkter. Betrakta sedan en polynomfunktion med grad tvÄ,
. Detta Àr en kvadratisk funktion, sÄ det krÀvs minst tre punkter för att plotta grafen. Vad sÀgs om ett polynom med grad tre? Minst fyra poÀng. Och sÄ vidare.
Det riktigt coola med den hÀr egenskapen Àr att, givet graden av polynomfunktionen och Ätminstone
poÀng, kan vi hÀrleda ytterligare poÀng för denna polynomfunktion. Vi kallar extrapolering av dessa ytterligare punkter polynominterpolation.
Att hitta pÄ en hemlighet
Du kanske redan har insett att det Àr hÀr Shamirs smarta plan kommer in i bilden. LÄt oss sÀga vÄr hemlighet
- Ăr
. Vi kan vÀnda
till en punkt pÄ grafen
och kom fram till en polynomfunktion med grad
, vilket uppfyller denna punkt. LÄt oss komma ihÄg det
kommer att vara vÄr tröskel för nödvÀndiga fragment, sÄ om vi sÀtter tröskeln till tre fragment mÄste vi vÀlja en polynomfunktion med grad tvÄ.
VÄrt polynom kommer att ha formen
var
Đž
â SlumpmĂ€ssigt valda positiva heltal. Vi konstruerar bara ett polynom med grad
, dÀr den fria koefficienten
â Det hĂ€r Ă€r vĂ„r hemlighet
, och för var och en av de efterföljande
termer finns en slumpmĂ€ssigt vald positiv koefficient. Om vi ââĂ„tergĂ„r till det ursprungliga exemplet och antar det
, dÄ fÄr vi funktionen
.
Vid denna tidpunkt kan vi generera fragment genom att ansluta
unika heltal i
var
(eftersom det Àr vÄr hemlighet). I det hÀr exemplet vill vi fördela fyra fragment med en tröskel pÄ tre, sÄ vi genererar slumpmÀssigt poÀng
och skicka en poÀng till var och en av de fyra betrodda personerna, nyckelns vÀktare. Vi lÄter ocksÄ folk veta det
, eftersom detta anses vara offentlig information och Àr nödvÀndigt för Ätervinning
.
à terstÀlla hemligheten
Vi har redan diskuterat begreppet polynominterpolation och hur det ligger till grund för Shamirs tröskelschema
. NÀr nÄgon av tre av de fyra förvaltarna vill ÄterstÀlla
, de behöver bara interpolera
med sina egna unika poÀng. För att göra detta kan de bestÀmma sina poÀng
och berÀkna Lagrange-interpolationspolynomet med hjÀlp av följande formel. Om programmering Àr tydligare för dig Àn matematik, sÄ Àr pi i huvudsak en operatör for, vilket multiplicerar alla resultat, och sigma Àr for, vilket lÀgger ihop allt.


vid
vi kan lösa det sÄ hÀr och returnera vÄr ursprungliga polynomfunktion:

Eftersom vi vet det
, ÄterhÀmtning
gjort helt enkelt:

AnvÀnder osÀker heltalsaritmetik
Ăven om vi framgĂ„ngsrikt har tillĂ€mpat Shamirs grundidĂ©
, vi har ett problem som vi har ignorerat fram till nu. VÄr polynomfunktion anvÀnder osÀker heltalsaritmetik. Observera att för varje ytterligare poÀng en angripare fÄr pÄ grafen för vÄr funktion, finns det fÀrre möjligheter för andra poÀng. Du kan se detta med dina egna ögon nÀr du ritar ett ökande antal punkter för en polynomfunktion med heltalsaritmetik. Detta Àr kontraproduktivt för vÄrt uttalade sÀkerhetsmÄl, eftersom angriparen borde veta absolut ingenting förrÀn de Ätminstone har det
fragment.
För att visa hur svag den aritmetiska heltalskretsen Àr, övervÀg ett scenario dÀr en angripare fick tvÄ poÀng
och vet offentlig information som
. Av denna information kan han utlÀsa
, lika med tvÄ, och koppla in de kÀnda vÀrdena i formeln
Đž
.

Angriparen kan sedan hitta
, rÀknar
:

Sedan vi har definierat
som slumpmÀssigt valda positiva heltal finns det ett begrÀnsat antal möjliga
. Med hjÀlp av denna information kan en angripare hÀrleda
, eftersom allt större Àn 5 duger
negativ. Detta visar sig vara sant eftersom vi har bestÀmt oss 
Angriparen kan sedan berÀkna de möjliga vÀrdena
byter ut
ĐČ
:

Med begrÀnsade alternativ för
det blir tydligt hur enkelt det Àr att vÀlja och kontrollera vÀrdena
. Det finns bara fem alternativ hÀr.
Lös problemet med osÀker heltalsaritmetik
För att eliminera denna sÄrbarhet föreslÄr Shamir att du anvÀnder modulÀr aritmetik, ersÀtter
pÄ
var
Đž
â mĂ€ngden av alla primtal.
LÄt oss snabbt komma ihÄg hur modulÀr aritmetik fungerar. En klocka med visare Àr ett bekant koncept. Hon anvÀnder en klocka alltsÄ
. SÄ snart timvisaren passerar tolv ÄtergÄr den till ett. En intressant egenskap hos detta system Àr att vi bara genom att titta pÄ klockan inte kan hÀrleda hur mÄnga varv timvisaren har gjort. Men om vi vet att timvisaren har passerat 12 fyra gÄnger, kan vi helt bestÀmma antalet timmar som har gÄtt med en enkel formel
var
Àr vÄr divisor (hÀr
),
Àr koefficienten (hur mÄnga gÄnger divisorn gÄr in i det ursprungliga talet utan en rest, hÀr
) och
Àr resten, vilket vanligtvis returnerar ett modulo-operatörsanrop (hÀr
). Att kÀnna till alla dessa vÀrden gör att vi kan lösa ekvationen för
, men om vi missar koefficienten kommer vi aldrig att kunna ÄterstÀlla det ursprungliga vÀrdet.
Vi kan visa hur detta förbÀttrar sÀkerheten för vÄrt system genom att tillÀmpa schemat pÄ vÄrt tidigare exempel och anvÀnda
. VÄr nya polynomfunktion
, och de nya punkterna
. Nu kan nyckelhÄllarna Äterigen anvÀnda polynominterpolation för att rekonstruera vÄr funktion, men denna gÄng mÄste additions- och multiplikationsoperationerna Ätföljas av moduloreduktion
(t.ex
).
Med det hÀr nya exemplet, lÄt oss anta att angriparen lÀrde sig tvÄ av dessa nya punkter,
och offentlig information
. Den hÀr gÄngen matar angriparen, baserat pÄ all information han har, följande funktioner, var
Àr mÀngden av alla positiva heltal, och
representerar modulkoefficienten
.

Nu hittar vÄr angripare igen
, berÀknar
:

Sedan försöker han igen
byter ut
ĐČ
:

Den hÀr gÄngen har han ett allvarligt problem. Formel saknar vÀrden
,
Đž
. Eftersom det finns ett oÀndligt antal kombinationer av dessa variabler kan han inte fÄ nÄgon ytterligare information.
SÀkerhetsövervÀganden
Shamirs hemliga delningsschema antyder sÀkerhet ur informationsteoretisk synvinkel. Det betyder att matematiken Àr motstÄndskraftig Àven mot en angripare med obegrÀnsad datorkraft. Kretsen innehÄller dock fortfarande flera kÀnda problem.
Till exempel skapar inte Shamirs plan fragment som ska kontrolleras, det vill sÀga mÀnniskor kan fritt presentera falska fragment och störa ÄterstÀllningen av den korrekta hemligheten. En fientlig fragmenthÄllare med tillrÀcklig information kan till och med producera ett annat fragment genom att byta
efter eget gottfinnande. Detta problem löses med hjÀlp av verifierbara hemlighetsdelningssystem, sÄsom Feldmans schema.
Ett annat problem Àr att lÀngden pÄ ett fragment Àr lika med lÀngden pÄ motsvarande hemlighet, sÄ lÀngden pÄ hemligheten Àr lÀtt att bestÀmma. Detta problem kan lösas med trivial stoppning hemlig med godtyckliga nummer upp till en fast lÀngd.
Slutligen Àr det viktigt att notera att vÄra sÀkerhetsproblem kan strÀcka sig lÀngre Àn sjÀlva designen. För kryptografiska applikationer i den verkliga vÀrlden finns det ofta hot om sidokanalattacker dÀr en angripare försöker extrahera anvÀndbar information frÄn applikationskörningstid, cachning, krascher, etc. Om detta Àr ett problem, bör man under utvecklingen noggrant övervÀga att anvÀnda skyddsÄtgÀrder som funktioner och konstanttidsuppslagningar, förhindra att minne sparas pÄ disk och ett antal andra övervÀganden som ligger utanför den hÀr artikelns rÀckvidd.
ĐĐ”ĐŒĐŸ
PÄ Det finns en interaktiv demonstration av Shamirs hemliga delningsschema. Demonstration baserad pÄ biblioteket , som i sig Àr en JavaScript-port för det populÀra programmet . Observera att man berÀknar stora vÀrden
,
Đž
kan ta ett tag.
KĂ€lla: will.com
