Hva SSH egentlig gjør
Selv om Splync bruker HTTPS for å beskytte ruten mellom smarttelefonen din og serveren vår, må vi fortsatt beskytte selve serveren for å sikre brukernes data. Apputviklere og systemadministratorer trenger en måte å komme inn på denne serveren for å vedlikeholde og distribuere oppdateringer — sikkert. Det er her SSH (Secure Shell) kommer inn. Det er en protokoll som lar autoriserte brukere logge inn på eksterne datamaskiner trygt, selv over upålitelige nettverk. SSH erstatter eldre, usikre metoder som Telnet, som sendte brukernavn og passord i klartekst.
Ideen bak “nøkler”
SSH stoler ikke på et vanlig passord. I stedet bruker det kryptografiske nøkler — et matchende par av en offentlig nøkkel og en privat nøkkel. Tenk på dem som en lås og en nøkkel som bare passer hverandre. Den offentlige nøkkelen ligger på serveren, og den private nøkkelen blir hos brukeren. Når du kobler til, utfordrer serveren deg til å bevise at du har den private nøkkelen, uten å noen gang avsløre den. Dette gjør det nesten umulig for noen som lytter å utgi seg for deg. Mens vanlige passord kan gjettes, lekkes eller gjenbrukes, er SSH-nøkler lange, tilfeldige kryptografiske strenger — praktisk talt umulige å gjette. Selv om noen klarer å sniffe tilkoblingen, ser de bare kryptert støy. Og siden SSH-nøkler aldri sendes over nettverket, er det ingenting å stjele underveis.
Hvordan en SSH-nøkkel faktisk ser ut
Hvis du aldri har sett en SSH-nøkkel før, kan det høres abstrakt ut — men det er egentlig bare en lang blokk med kodet tekst. En offentlig nøkkel er vanligvis noen hundre tegn lang, mens en privat nøkkel kan være godt over tusen tegn. Begge lagres som tekstfiler, men innholdet ser ut som tilfeldig støy — en blanding av bokstaver, tall og symboler. Den offentlige nøkkelen er trygg å dele; det er som å sette låsen din på serveren. Den private nøkkelen, derimot, er din unike digitale identitet og må aldri deles. Den lagres lokalt på datamaskinen din og brukes kun for å bevise at du er den du sier du er — uten å avsløre selve nøkkelen.
Offentlig nøkkel og privat nøkkel
En offentlig nøkkel er som en lås du fester til huset ditt. Alle kan se den fra gaten, akkurat som låsen på ytterdøren din. Men å se på låsen forteller ingen hvordan de skal åpne den. Med andre ord, alle kan se den, men bare den rette nøkkelen kan låse den opp. På den annen side er den private nøkkelen nøkkelen som åpner låsen — og den forblir trygt hos deg. Hvis noen andre får tak i din private nøkkel, kan de gå inn i huset ditt som om de var deg. Derfor må den alltid holdes hemmelig.
SSH-mekanisme
Hver offentlig nøkkel og privat nøkkel danner et unikt ett-til-ett-par. De genereres sammen gjennom en matematisk prosess slik at bare den spesifikke private nøkkelen kan matche sin tilsvarende offentlige nøkkel. Du kan tenke på dem som en spesiallaget lås og nøkkel — smidd sammen, og ingen annen nøkkel i verden passer til den låsen. Selv om du genererer et annet par ved å bruke den samme algoritmen (som RSA eller Ed25519), vil tallene inni være helt forskjellige. Matematikken som kobler de to er enveiskjøring: du kan enkelt hente den offentlige nøkkelen fra den private nøkkelen, men det er praktisk talt umulig å reversere prosessen og finne den private nøkkelen fra den offentlige. Det er derfor hver SSH-nøkkelpar er unik og sikker.
Hvordan SSH beviser hvem du er
Når du logger inn på en server med SSH, forlater aldri den private nøkkelen din datamaskin. I stedet sender serveren en tilfeldig utfordring — som et engangspuslespill — som bare din private nøkkel kan løse. Datamaskinen din signerer den utfordringen matematisk, og produserer et kort svar som serveren kan sjekke ved hjelp av din offentlige nøkkel. Hvis svaret passer, vet serveren at du har riktig privat nøkkel — uten å noen gang se den. Dette er magien med moderne kryptografi: du kan bevise din identitet uten å avsløre din hemmelighet. SSH-autentisering fungerer fordi din private nøkkel inneholder all informasjon å hente den offentlige nøkkelen, men det motsatte er praktisk talt umulig.
Hvordan utviklere bruker SSH i praksis
Hver gang utviklere distribuerer kode, oppdaterer en database eller starter en tjeneste på nytt, kobler de ofte til sine eksterne servere via SSH. Etter autentisering får de en sikker kommandolinjetilkobling til serveren. Derfra kan de administrere filer, starte tjenester på nytt eller inspisere logger — alt kryptert fra ende til ende. I tilfelle Splync, er SSH hvordan vi trygt administrerer vår skyserver. Hver administrativ handling — distribuere oppdateringer, sjekke logger, sikkerhetskopiere data — gjøres gjennom SSH-tilkoblinger beskyttet av kryptografiske nøkler. Ingen kan få tilgang til serveren uten riktig privat nøkkel. Selv om noen kjente vår IP-adresse, uten den nøkkelen, vil døren rett og slett ikke åpnes.
Kommer neste: Kryptering inne i serveren
SSH beskytter inngangen til serveren, og HTTPS beskytter data under transport. Men når data lander inne i databasen, hvordan holder vi det trygt? Det er der hashing og kryptering kommer inn — det siste forsvarslaget.