Gå til innhold

multi-passord autentisering / kryptering


Anbefalte innlegg

Sitter å funderer på et system som skal kreve at flere personer er tilstede for at data skal kunne leses/skrives. Tenker foreløpig kun på prinsippet. Data skal lagres kryptert, og det skal ikke være mulig, ei heller for de som drifter serveren å hente ut leselige data uten å kjenne passordene. Det finnes mange måter å gjøre dette på for en bruker. Man kan utvide det hele til en flerbrukervariant, hvor alle brukere må komme med sitt passord. Men hvordan kan man ordne slik at f.eks 3 av 5 brukere er nok for å gi tilgang?

 

EN-bruker-varianten:

-et passord brukes til å kryptere en krypteringsnøkkel og krypteringsnøkkelen brukes til å (de)kryptere data

-brukeren endrer passord ved at krypteringsnøkkelen dekrypteres med gammelt passord, og krypteres på nytt med nytt passord.

 

Flerbruker-varianten:

-krypteringsnøkkelen er delt i like mange deler som det er brukere

-et passord brukes til å kryptere den aktuelle brukerens del av krypteringsnøkkelen

-når alle brukere har detkryptert sin del av nøkkelen settes delene sammen til den komplette dekrypteringsnøkkelen som brukes til å (de)kryptere data

-brukeren endrer passord ved at vedkommendes del av krypteringsnøkkelen dekrypteres med gammelt passord, og krypteres på nytt med nytt passord.

 

Hvordan utvider man så dette slik at systemet ikke nødvendigvis må alle brukerenes autentisering for å gi tilgang til data?

 

En mulighet er at hver bruker har overlappende deler av krypteringsnøkkelen tilgjengelig med sitt passord.

 

Senario 1: Hvis man f.eks. har et system med 3 brukere, og ønsker at det skal holde at 2 brukere er tilstede for å gi tilgang:

- Krypteringsnøkkel er delt i 3 deler

- Bruker A har del 1 og 2 tilgjengelig, bruker B har del 2 og 3, bruker C har del 3 og 1.

- Uansett hvilken bruker som ikke er tilstede vil de to som er tilsted tilsammen kunne gi systemet nok info til å dekryptere alle delene av krypteringsnøkkelen.

 

Samme prinsipp kan utvides til flere brukere, men jeg føler ikke at det skalerer veldig bra. Så, er det noen som har bedre forslag til fremgangsmåte på dette?

Lenke til kommentar
Videoannonse
Annonse

Jeg er ikke sikker på at det vil skalere dårlig. Sånn jeg ser det vil hver bruker få et unikt subset av masterpassordet men hvert enkelt brukerpassord vil inneholde litt mindre informasjon enn masterpassordet så det vil være håndterlig ut fra et lagringsperspektiv.

 

Jeg tror jeg skulle klart å knotet ned noe generelt på en rolig kveld med blyant og papir. :)

 

Punktet der det virkelig begynner å bli hårete er vel hvis du skal ta hensyn til at antall brukere kan variere. ;)

Lenke til kommentar

Med en statisk brukergruppe ble det faktisk ganske enkelt.. :)

 

b=antall brukere totalt

n=Antall brukere som er nødvendig for å dekryptere

s=antall segmenter av masterpassordet hver bruker trenger å vite.

 

For en vilkårlig kombinasjon av b og n er s=b-n+1

 

Masterpassordet deles i b segmenter. Hver bruker blir tildelt s segmenter. Bruker 1 får segment 1 og de s-1 neste, bruker 2 får segment 2 og de s-1 neste osv. Pass på å bruke falsk addisjon på 's-1 neste' for at de siste brukerne får riktige segmenter (bruker 7 av 7 skal ha segment 7, segment 1 osv).

 

 

Visualiseres enkelt med blyant på et ruteark. ;)

Lenke til kommentar
  • 2 uker senere...

Den funker bare en vei..

 

Sett inn:

b=1000

n=100

 

Selv om 900 av 1000 er borte så kan du fortsatt gjenskape nøkkelen i sin helhet. Men hvis du snur på det så kan du, hvis du har litt flaks, fortsatt gjenskape nøkkelen selv om 998 er borte. Dette gir høy grad av redundans men liten grad av sikkerhet. Hvis du endrer b og n så får du andre 'knekkpunkter' men det viser at formelen kun virker en vei.

 

Jeg tror fortsatt dette er løsbart men da må du kanskje bruke en 'tabell' med en ny dimensjon per bruker og da nærmer vi oss den kompleksiteten du antydet i første posten..men det er bare en strøtanke jeg ikke klarer å utlede videre.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...