Hvad SSH egentlig gør
Splync bruger HTTPS til at beskytte forbindelsen mellem din smartphone og vores server, men vi skal stadig beskytte selve serveren for at sikre brugernes data. Appudviklere og systemadministratorer har brug for adgang til serveren for at vedligeholde og opdatere den — sikkert. Det er her, SSH (Secure Shell) kommer ind. Det er en protokol, der gør det muligt for autoriserede brugere at logge sikkert ind på fjerncomputere, selv over usikre netværk. SSH erstatter ældre, usikre metoder som Telnet, der sendte brugernavne og adgangskoder i klar tekst.
Idéen bag “nøgler”
SSH bruger ikke en almindelig adgangskode. I stedet anvender den kryptografiske nøgler — et matchende par af en offentlig nøgle og en privat nøgle. Tænk på dem som en lås og en nøgle, der kun passer sammen. Den offentlige nøgle er på serveren, mens den private nøgle forbliver hos brugeren. Når du forbinder, udfordrer serveren dig til at bevise, at du har den private nøgle, uden nogensinde at afsløre den. Dette gør det næsten umuligt for nogen at udgive sig for at være dig. Mens almindelige adgangskoder kan gættes, lækkes eller genbruges, er SSH-nøgler lange, tilfældige kryptografiske strenge — praktisk talt umulige at gætte. Selv hvis nogen opsnapper forbindelsen, ser de kun krypteret støj. Og da SSH-nøgler aldrig sendes over netværket, er der intet at stjæle undervejs.
Hvordan en SSH-nøgle ser ud
Hvis du aldrig har set en SSH-nøgle før, kan det virke abstrakt — men det er egentlig bare en lang blok af kodet tekst. En offentlig nøgle er typisk flere hundrede tegn lang, mens en privat nøgle kan være langt over tusind. Begge er gemt som tekstfiler, men deres indhold ligner tilfældig støj — en blanding af bogstaver, tal og symboler. Den offentlige nøgle er sikker at dele; det er som at sætte din lås på serveren. Den private nøgle er derimod din unikke digitale identitet og må aldrig deles. Den er gemt lokalt på din computer og bruges kun til at bevise, hvem du er — uden nogensinde at afsløre selve nøglen.
Offentlig nøgle og privat nøgle
En offentlig nøgle er som en lås, du sætter på dit hus. Alle kan se den fra gaden, ligesom låsen på din hoveddør. Men at se på låsen fortæller ingen, hvordan man åbner den. Med andre ord, alle kan se den, men kun den rigtige nøgle kan låse den op. Den private nøgle derimod er nøglen, der åbner låsen — og den bliver sikkert hos dig. Hvis nogen får fat i din private nøgle, kan de komme ind i dit hus, som om de var dig. Derfor skal den altid holdes hemmelig.
SSH-mekanisme
Hver offentlig nøgle og privat nøgle danner et unikt par. De genereres sammen ved en matematisk proces, så kun den specifikke private nøgle kan matche sin tilsvarende offentlige nøgle. Du kan tænke på dem som en skræddersyet lås og nøgle — smedet sammen, og ingen anden nøgle i verden passer til den lås. Selv hvis du genererer et andet par ved hjælp af den samme algoritme (som RSA eller Ed25519), vil tallene indeni være helt forskellige. Matematikken, der forbinder de to, er envejs: du kan nemt udlede den offentlige nøgle fra den private nøgle, men det er praktisk talt umuligt at omvendt processen og finde den private nøgle fra den offentlige. Det er derfor, hver SSH-nøglepar er unik og sikker.
Hvordan SSH beviser, hvem du er
Når du logger ind på en server med SSH, forlader din private nøgle aldrig din computer. I stedet sender serveren en tilfældig udfordring — som et engangspuslespil — som kun din private nøgle kan løse. Din computer underskriver den udfordring matematisk og producerer et kort svar, som serveren kan kontrollere ved hjælp af din offentlige nøgle. Hvis svaret passer, ved serveren, at du har den rigtige private nøgle — uden nogensinde at se den. Dette er magien ved moderne kryptografi: du kan bevise din identitet uden at afsløre din hemmelighed. SSH-godkendelse fungerer, fordi din private nøgle indeholder alle oplysninger til at udlede den offentlige nøgle, men det omvendte er praktisk talt umuligt.
Hvordan udviklere bruger SSH i praksis
Hver gang udviklere implementerer kode, opdaterer en database eller genstarter en tjeneste, forbinder de ofte til deres fjernservere via SSH. Efter godkendelse får de en sikker kommandolinjeforbindelse til serveren. Derfra kan de administrere filer, genstarte tjenester eller inspicere logfiler — alt sammen ende-til-ende krypteret. I Splyncs tilfælde er SSH måden, vi sikkert administrerer vores cloud-server på. Hver administrativ handling — implementering af opdateringer, kontrol af logfiler, sikkerhedskopiering af data — udføres gennem SSH-forbindelser beskyttet af kryptografiske nøgler. Ingen kan få adgang til serveren uden den korrekte private nøgle. Selv hvis nogen kendte vores IP-adresse, ville døren simpelthen ikke åbne uden den nøgle.
Kommer næste: Kryptering inde i serveren
SSH beskytter indgangen til serveren, og HTTPS beskytter data undervejs. Men når dataene lander i databasen, hvordan holder vi dem så sikre? Det er her hashing og kryptering kommer ind — det sidste forsvarslag.