* 4 *
Legitimasjon og autentisering
Ukens faktum
Etter den andre verdens krigen, ble det nå berømte paret Julius og Ethel
Rosenberg tiltalt for spionasje for Sovjetunionen i 1953.
De hadde improvisert et passordsystem: en dessertemballasje ble
revet i to og en del ble gitt til en kontaktperson som de senere
ville måtte idenifisere. Den komplekse formen var umulig å
forfalske. Kroppene våre bruker en lignende metode for å identifisere
molykyler i immunsystemet og luktesansen. Uten å matche unike egenskaper
er det umulig å verifisere identitet.
|
Kapittel 2 Gollmann, kapittel 9 Stallings
For å kunne implementere de grunnleggende Orange Book sikkerhetsmekanismene,
trenger vi å kunne følge identitetene til brukere som ber om systemressurser.
Autentisering betyr å finne ut om noe er autentisk. Vanligvis mener vi en
persons identitet. Det er to grunner til at vi ønsker å identifisere noen:
- Bruker-basert tilgangskontroll av filer og programmer
- Ansvar: koble handlinger til brukere for å føre regnskap i loggfiler
Login: brukernavn og passord
Når vi logger inn på et sikkert operativsystem blir vi spurt om brukernavn og
passord. Brukernavn påstår vår identitet og passordet brekrefter påstanden.
Hvis autentiseringen lykkes blir vi innvilget tilgang til systemet, og alle
våre aktiviter foregår da innen den identitens rammer. På Unix-aktige
systemer oppsummeres identiteten ved et globalt unikt tall eller user-ID (UID).
På Windows systemer brukes et security ID (SID) som er unik kun på den lokale
maskinen.
I distribuerte systemer, må vi spore identiteter mellom maskiner også.
Det betyr at vi enten må
- Bruke en felles identitet på alle maskiner
- Stole på legitimasjonen fra andre maskiner implisitt
- Brekrefte pånytt identiteten på de andre maskiner
Unix og Windows håndterer disse sakene ulikt. Unix systemer kan
konfigureres til å bruke alle løsningstypene. Windows bruker en
implisitt tillitsmodell (trust model) som er basert på en global
autentisering for et helt domene. Når en bruker gis tilgang til et domene
får han/hun rettigheter som tilsvarer domenet. Denne identiten er basert på
brukernavnet, ikke SIDen, da SIDen er forskjellig fra maskin til maskin.
I den originale Unix modellen måtte brukere dele et felles brukernavn
på andre maskiner dersom de skulle slippe å logge inn pånytt der. Ved å
bruke .rhosts filer kunne en bruker erklære tillit til en bruker
med samme navn på en fjernmaskin bare ved å skrive maskinen i en liste.
Det er opplagte problemer med passord legitimasjon
- Passord kan gjettes
- Passord kan avlyttes
Mange brukere velger bare svake passord og disse kan gjettes ved bruk av
ren regnekraft.
Denne type login kalles for unilateral (ensidig) autentisering,
dvs. det idenitifiserer brukeren overfor systemet. Den bekrefter ikke
identiteten til datasystemet overfor brukeren! Dette ville hett
bi-lateral (gjensidig) atentisering). Altså, ett problem som
kan oppstå er at en inntrenger kunne forfalske innloggingsprosessen
til en maskin, og samle opp passord og konto informasjon fra brukerne
som prøvde å logge seg inn. Unix prøver ikke å løse dette problemet
selv, men NT krever en `secure attention sequence' for å kunne logge inn.
Dersom brukeren taster CTRL+ALT+DEL, henvises de direkte til operativsystemet,
og ikke til andre programmer som prøver å etterligne OSet.
Hvor mange ganger skal vi måtte taste inn et passord? Trenger vi flere
passord til ulike sikkerhetsnivåer? F. eks.
- Login
- Tilgang til database
- Tilgang til intranett
I mange tilfeller holder det med en enkelt login (single sign-on).
Når identiteten er bekreftet får brukeren privilegier som gir tilgang til
alt som de har lov til å se. Men noen systemer må skilles, da de er helt
frakoblet legitimasjonssystemet som brukes for login. WWW er et slikt
system.
Biometrics
Det fins mange måter å gi et passord på. For eksempel,
biometrics er navnet som brukes
for å snakke om det fagfeltet som dreier seg om identifisering av
menneske fysiologi og psykologi for å autentisere.
- Signatur igjenkjenning (lett forfalsket)
- Finger avtrykk scanner
- Retina scan
- Iris scan
- Stemme igjenkjenning
- Skrivemønster analyse
Som filmen Gattaca noterte, er det ikke umulig å forfalske
biometriske data. Poenget med biometrikker er å komme unna problemene
med passordmodellen, men det fins et problem. De har faktisk alle de samme
problemene som passord modellen har, pluss et nytt problem: vi kan ikke bytte
våre biometriske signaturer dersom de blir stjålet eller forfalsket. Vi kan
i miste fall bytte digitale signaturer.
Biometriske scanne-enheter må selv være sikre. Selv om iris-igjenkjenning regnes
som nesten umulig å forfalske (i dag) fins det alltid mulighet for at
selve scanne-enheten kan mates med stjålet data, fanget opp tidligere.
Brukere må derfor være forsiktig med å stikke irisene sine i maksiner
de ikke vet så mye om.
Challenge/response protokoller
I challenge/response systemer (også kallt nonce eller number-once
metoder), genereres den som autentiserer en tilfeldig en gangs
utfordring (spørsmål) som klienten må svare på ved hjelp av en
eller annen hemmelig nøkkel. Det enkleste eksemplet på et slikt system
er login utfordringen: "Enter password".
Utfordringen ved broen i Monty Python filmen The search
for the holy grail ville ikke vært et forsvarlig system av to grunner:
det er basert på felles kunnskap som hvem som helst kunne kjent til. Det var
også mulig å hakke (og kræsje!) autentiserings enheten.
OSI sikkerhets arkitekturen (ISO 7498-2) skjelner mellom
origin authentication og entity authentication, dvs
hvem som snakker og hvor de snakker fra. ISO/IEC 9798 er en standard
som er under utvikling. Den publiseres i flere dokumenter. Vi skal
se nærmere på noen av ideene beskrevet der.
Vi definerer:
- Entity authentication: kontrollere IDen til et individ
- Origin authentication: lokalisere individet
- Unilateral authentication: bekrefte individet overfor datasystemet
- Mutual authentication: gjensidig bekreftelse av identitet
Entity/origin authentication kan oppnås bare innen visse tidsrammer.
Vanligvis sjekkes dette i begynnelsen av en sesjon mellom klient og
server. Når vi slutter å sjekke, er det mulig for noen å lure seg inn
eller bytte plass med en autentisert bruker. Dvs at for å sikre en hel
samtale over lang tid, må vi bruke en hemmlighet til å kryptere
samtalen, som kun de autentiserte partene kan (noe som utveklses/avtales
under autentiseringen).
Egenskapene til en autentiseringsprotokoll
La oss snakke litt mer formelt om autentisering via protocol.
Vi antar at det fins to parter: A (Alice) og B (Bob),
som utveksler et endelig antall beskjeder:
| |
| M1 |
| ---------------------> |
| M2 |
A | <-------------------- | B
| M3 |
| ---------------------> |
| M4 |
| <-------------------- |
| |.
A begynner protokollen ved å sende en beskjed til B, M1. B svarer
med M2 osv. Vi antar at beskjed N+1 ikke sendes før beskjed N er
oppfattet.
Under eller etter utvekslingen av protokollen må vi bli sikre på
følgende punkter:
- At beskjedene ble mottatt (hel) fra maskinene som skulle sende dem.
- At beskjedene ikke var `replays' av gamle beskjeder (de var ferske)
- At beskjed N+1 var den korrekte svaren til beskjed N, ikke et misvisende
svar til et annet spørsmål.
Det er ikke alltid mulig å tilfredstille alle disse kravene inntil hele
utvekslingen er over. Integriteten til beskjedene kan sjekkes på
flere måter (hvordan vet vi at ingen har endret beskjeden underveis)
- Kryptering - protokollen kan tolkes bare hvis begge parter kjenner
en felles hemmelighet
- Digital signatur: offentlig/privat nøkkel signatur
- Message digest: sjekksumm verdi sendes uavhengig som kan regnes ut
for å bekrefte at beskjeden er autentisk.
Vi må også sjekke av beskjeden er fersk (ikke et replay) av en tidligere
beskjed som ble avlyttet. Her fins det to metoder:
- Bruk av tidsstempel eller sekvensnummere
- Nonces, eller utfordringer
Obs at tidsstempler er avhengige av at systemklokkene er synkroniserte for begge
parter. Dette impliserer en avhengighet. Siden ingen overførsel er
momentant, må vi tillate visse akseptable tidsrammer hvor svar til
utfordringer godkjennes. Dette betyr at det fins en window of opportunity
eller mulighet for å utnytte protokollen. I nonce/challenge metoden, sendes
en random verdi i den første beskjeden som må sendes i svaret til beskjeden,
slik at begge parter er enige om en engangs sesjon-nøkkel. F. eks. verdien
kunne brukes for å kryptere sambandet slik at gamle beskjeder ville tolkes som
garbage. Det er opp til A å passe på at verdien er ny og ikke forutsigbar.
Forutsigbare sekvensangrep har blitt brukt mot TCP protokollen, for eksempel.
Eksempler
Betrakt den følgende beskjeden. En enkelt beskjed som sendes fra A
til B. Beskjeden innholder tiden t og en passordnøkkel som bare A og B
kjenner til (Kab).
EKSEMPEL 1:
| |
| M1(t,Kab) |
A | ---------------------> | B
| |
B kan verifisere As identitet, men A kan ikke identifisere Bs
identitet. B vet at A er A fordi beskjeden er kryptert med
Kab som bare A kan. B vet at beskjeden er fersk fordi
tiden kan sjekkes. A kan ikke være sikker på Bs identitet
forsi B beskrefter aldri sin identitet på noe vis.
EKSEMPEL 2:
| |
| M1(t1,Kab,S) |
A | ---------------------> | B
| M2(t2,Kab,S) |
| <--------------------- |
| |
Det andre eksemplet ligner på det første men A sender nå en utfordring
streng S for sesjonen. B svarer nå, og bruker også kyptertings nøkkelen
Kab. A kan nå finne ut at, siden B mottok beskjed M1 og svarte
med M2 riktig kryptert, at det faktisk må være B, da kun B kjenner til Kab.
Dette er gjensidig autentisering. Det krever toveis kommunikasjon.
Begge parter vet at sesjonen ikke er et replay fordi tiden sendes.
Dersom sesjonsnøkkelen også er unik, er tidsstemplene overflødige.
Nøkler
Sikkerheten rundt nøklene kan ikke understrekes nok her. Vi stoler implisitt
på kryptering som en bekreftelse på identitet. Dette betyr at vi stoler
på systemene hvor nøklene ligger.
Protokoller som er basert på en felles hemmelighet ab
trenger et seperat nøkkelpar for hver tillitsgruppe/sone.
En mulighet er å bruke en felles nøkkel for alle maskiner,
og ha maskinene identifisere seg selv som en del av protokollen:
M(t,K,hostname,S)
Dette antar at alle maskinene stoler på hverandre, Et alternativ er
å bruke PGP-stil RSA nøkler. Dette krever bare en måte å distribuere nøklene
på som kan stoles på. Dette gjøres often gjennom en tredje part, eller
Trusted Third Party (TTP).
Needham-Schroeder protocol
One protocol for establishing identity was devised in 1978 by
R. Needham and M. Schroeder. It uses the idea of a trusted third
party and private keys, or password-based encryption to
pass messages.
Suppose Alice wants to send a message to Bob. Both Alice and
Bob have already registered a secret key, protected by a password,
with a trusted key server (Sam). They assume that everyone else
in their local domain has done the same. The trick is to establish
an encryption key (K) from A to B, given only the keys they have
between themselves and Sam, without an attacker being able to
understand the messages. Essentially Alice asks Sam to encrypt a
message to Bob for her, without giving away Bob's key.
1. A -> S : A,B,Na
2. S -> A : {Na,B,Kab,{Kab}Kbs}Kas
3. A -> B : {Kab}Kbs
4. B -> A : {Nb}Kab
5. A -> B : {Nb-1}Kab
Recall that the curly braces mean a message which is encrypted, using the key
subscripted. In words, this says the following:
- Alice say to Sam: "I am Alice, I want to talk to Bob and I'm giving you
a random nonce Na."
- Sam replies, quoting her nonce to show that he is a good beauracrat,
confirms that the message is about a key with Bob, provides a key for
encrypting messages between Alice and Bob. He also provides a message for
Bob, already encrypted with the secret key that Bob and Sam share (Kbs). This
message contains Alice's name and the session key (Kab) for talking to Alice
privately. All of this is encrypted with the private key that Alice and Sam
share (Kas).
- Alice simply sends the message which Sam encrypted to Bob. This is already encrypted.
- Bob decrypts the message and replies using the session key (Kab)
with a nonce of his own to make sure that Alice is awake, i.e. that
this is not a replay.
- Alice responds that she received the nonce.
Alice and Bob are now ready to talk, using the key (Kab).
This protocol is the basic for the Kerberos system, which is used
in many Unix and Windows 2000 systems. The protocol is still controversial,
after 20 years because it is not possible for Bob to tell whether
the key (Kab) is fresh. It could also be twenty years old!
This is not necessarily a problem, in practice, but in principle
this might be exploited by an attacker.
Ukens tanke
Steganography dreier seg om å skule beskjeder inn i andre beskjeder, slik
at selve beskjedens eksistens er hemmlig. Nylig har man begynt å skjule
beskjeder i bilder...
|