ZeRKoX Skrevet 19. februar 2016 Del Skrevet 19. februar 2016 Så det dere sier er at den private nøkkelen finnes hos den som skal verifisere signaturen, og den offentlige finnes hos den som signerer? Og av en eller annen grunn så finner dere det smart å da kalle den private offentlig og omvendt? Nei. Den private nøkkelen ligger hos han som signerer, og den offentlige nøkkelen brukes så av andre for å verifisere signaturen. Husk at det i praksis ofte ikke er forskjell på privat og offentlig nøkkel. Det viktige er at det som krypteres av den ene kan ikke dekrypteres av samme nøkkel. Til dekryptering trengs den andre nøkkelen. Så kaller vi av enkelhetsgrunner den ene for privat og den andre for offentlig. Lenke til kommentar
ChiaroScuro Skrevet 19. februar 2016 Forfatter Del Skrevet 19. februar 2016 Sorry for wall of text, men det er litt detaljer som trenger litt forklaring Ikke misforstå. Det er flott at det lar seg gjøre. Jeg vil heller ikke vite hvordan det gjøres. Jeg må få vite prinsippet ellers får jeg ikke sove. Trikset er noe som kalles asymmetrisk kryptering. Det er krypteringsalgoritmer som fungerer slik at det er to nøkler involvert, og det som er kryptert med den ene kan bare dekrypteres med den andre. Vi kaller ofte disse nøklene for offentlige (public) og private nøkler. Så det facebook f.eks da gjør er å helt åpent poste den offentlige nøkkelen sin slik at du og alle andre kan laste ned denne. Når du da bruker denne nøkkelen for å kryptere data som du sender til facebook, så vil ikke du eller noen andre som har denne nøkkelen kunne dekryptere disse dataene fordi du da trenger den private nøkkelen. Den private nøkkelen er det bare facebook som har, og det er kun de som trenger denne. Med den private nøkkelen kan de dekryptere hva enn du sender til de. Det å kryptere ting med asymmetrisk kryptering er treigere enn å bruke symmetrisk kryptering (kryptering der samme nøkkel kan kryptere og dekryptere), så det som ofte blir gjort er at du og facebook sammen kommuniserer bittelitt med asymmetrisk kryptering for å bli enig om en symmetrisk nøkkel dere skal bruke for en gitt sesjon (dette kalles typisk nøkkelutveksling på norsk), og deretter bruker dere denne. Denne krypteringsprosessen fungerer helt fint, selv om du har "ugyldige" sertifikat. Sertifikatet inneholder riktignok den offentlige nøkkelen, men den blir ikke mindre sikker om sertifikatet går ut på dato eller så. Var dette oppklarende for hvordan HTTPS krypteringen fungerer, uten at en på forhånd har blitt enige om nøkler? Nå over på noe relatert, men litt annet alikevel; sertifikatene. Problemet med krypteringsskjemaet som er nevnt over er jo at du henter en offentlig nøkkel fra facebook som du så bruker til å kryptere din info som du så sender til facebook. I det skjemaet der er det jo ingenting som hindrer f.eks meg å sette opp min egen server på vei mellom deg og facebook, og så kan jeg bestemme hvilken nøkkel du laster ned. Ett såkallt MITM angrep. For å unngå falske servere slik som dette bruker man signerte sertifikater. Dette fungerer ca slik: På pc-en din har du en rekke sertifikater som du på forhånd "stoler" på (Altså; du har en rekke sertifikater som microsoft, apple, google m.fl. (De som lager OS-et du bruker, nettleseren du bruker og så videre) annser som trygge). Disse sertifikatene inneholder blandt annet en offentlig nøkkel, på lik linje som om at sertifikatet du hentet fra facebook hadde en offentlig nøkkel, men det er ikke samme nøkkelen. Vi har massevis av slike forhåndsinstallerte sertifikater, og de hører til noe vi kaller for CA (Certificate Authority). Siden det er en offentlig nøkkel, så har noen også en privat nøkkel ett eller annet sted. Når f.eks jeg vil sette opp en side med HTTPS lager jeg meg da ett nøkkelpar (en privat nøkkel med en tilhørende offentlig nøkkel), og så sender jeg den offentlige nøkkelen samt litt ekstra informasjon som domenenavn og slikt til en CA, og dette kalles for en CSR (Certificate Signing Request). En CSR er nesten ett helt sertifikat likt som det du får fra facebook når du besøker de. Jeg må så på ett eller annet vis bevise ovenfor CA at jeg eier det domenet som jeg sier at jeg har. Når CA er overbevist om at jeg er den jeg påstår at jeg er, så vil han lage en ett sertifikat for meg, som inneholder informasjonen jeg sendte med CSR-en, samt litt informasjon om sitt eget sertifikat. Han lager så en hash (sha1, sha256 eller lign.) av dette sertifikatet, krypterer denne hashen med sin egen private nøkkel, og så legger han denne krypterte hashen inn i sertifikatet han nettopp lagde. Nå er sertifikatet signert. Dette sertifikatet sendes til meg som bestillte dette, da det nå er klart til bruk. Legg merke til at jeg ikke på noe tidspunkt har hatt behov for å sende min private nøkkel til CA. Dette er en stor fordel, fordi da kan jeg vite at selv om CA har signert mitt sertifikat, så kan ikke han lese min trafikk. Det er det nemlig bare jeg som kan gjøre. Når jeg nå setter opp nettsiden min, med dette fine sertifikatet, så er siden klar for at du skal komme på besøk. Det som skjer da er at du først laster ned sertifikatet fra meg. Sertifikatet er jo offentlig, så det trenger ingen form for kryptering. Du vil så verifisere at sertifikatet er ekte, så det du da gjør er å først kikke i sertifikatet for å se hvilken CA som har signert det. Så leter du på din egen maskin etter CA-en sitt sertifikat, og når du finner dette så henter du ut CA-ens offentlige nøkkel fra dette sertifikatet. Nå henter du ut den krypterte hashen fra mitt sertifikat (som CA tidligere har kryptert med sin private nøkkel) og prøver å dekryptere denne med CA-ens offentlige nøkkel. Da sitter du igjen med en ukryptert hash. Du lager så en hash av resten av mitt sertifikat, og sammenligner denne med hashen som du nettopp dekrypterte, og er disse like så vet du at sertifikatet du hentet fra meg er det samme sertifikatet som CA på ett tidligere tidspunkt sjekket at virkelig tilhørte meg. Siden du nå vet at du snakker med min webserver, og ikke en som later som om at han er meg, så kan du bruke den offentlige nøkkelen i mitt sertifikat for å kommunisere med meg slik jeg beskrev lengre oppe. Ble dette oppklarende? Https Forstått. Må med skam melde: Jeg tenkte ikke på Public/private konseptet. Jeg hadde glemt det fullstendig. Vedr. resten, har jeg ikke rukket å lese det., men det kommer snart. Mange takk for måten du formidler informasjon:) Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå