Slik kan du låse snokere ute fra dokumentene dine
Det er ikke vanskelig å gjøre informasjonen supersikker.
Innhold
Akkurat som Julius Cæsar hadde behov for å skjule kommandoene han sendte rundt til troppene sine i Romerriket for over 2000 år siden, har vi i det 21 århundret også av og til behov for å skjule innholdet i beskjedene vi utveksler. Metodene for å lure og overføre har forandret seg, men selve prinsippet i krypteringen er og blir tidløst: å holde de nesegreve på en armlengdes avstand.
Derfor skal vi nå se nærmere på hvordan gårsdagens kryptering kan hjelpe deg med å skjule innholdet i tekstfilene dine ved hjelp av Linux-terminalen og en meget sterk krypteringsalgoritme – som langt på vei overgår den Cæsar brukte.
En romersk luring
Flere krypteringsalgoritmer finnes i dag, men den første som ble kjent og benyttet i stor skala var det faktisk selveste Julius Cæsar som stod for. Krypteringsteknikken hans ble siden kalt for «Caesar Cipher», og er av typen substitusjonscipher. Cæsar byttet rett og slett ut en bokstav fra alfabetet med en annen, ved å forskyve et visst antall plasser mot venstre.
Meldingen «Angrip» ble altså kamuflert med Caesar Cipher ved å forskyve hver bokstav tre plasser mot venstre, noe som gir den krypterte meldingen «Xkdofm».
Bare prøv selv med følgende alfabet:
ABCDEFGHIJKLMNOPQRSTUVWXYZ XYZABCDEFGHIJKLMNOPQRSTUVW
Det er videre sagt at Cæsars kurerer, som i det langstrakte Romerriket kunne bruke flere måneder på å formidle beskjeder fra en krok til en annen, fikk de krypterte beskjedene fra keiseren risset inn i hodebunnen.
Om noen av sendebudene skulle bli tatt til fange eller falle, måtte de dermed barberes på hodet før fienden fikk tak i meldingen. Hvor mye motstanderne i så fall forstod av den krypterte meldingen på hodebunnen, er ukjent, men det er vel ikke helt usannsynlig at de tok det for å være et fremmed språk eller lignende.
I dag kommer man ikke langt med å bruke denne teknikken, noe russerne fikk merke under den første verdenskrigen. Da hadde nemlig russerne utviklet en krypteringsteknikk som var for avansert for sine egne tropper, noe som førte til at de måtte benytte en variant av Caesar Cipher. Dermed kunne motstanderne deres enkelt snappe opp og dekryptere meldingene de sendte til hverandre.
Hold det hemmelig
En god krypteringsalgoritme er i dag litt mer avansert enn oldtidens, og det som definerer om den er sikker eller ei er at den er basert på matematiske prinsipper, har blitt analysert opp og i mente av eksperter, og ikke har hatt vellykkede innbrudd over flere år. Man krypterer ikke for å skjule teksten, men for å skjule selve meningsinnholdet i den. Og det er nettopp dette vi skal gjøre.
Når vi skal kryptere filer, bruker vi ikke Cæsars metode, men en teknikk som heter symmetrisk kryptering ved hjelp av algoritmen AES, eller «Advanced Encryption Standard».
I symmetrisk kryptering beskytter man innholdet sitt med en nøkkel, eller et passord, som er lik for både krypteringen og dekrypteringen. Før to personer sender krypterte filer til hverandre, må de derfor bli enige om én felles nøkkel som filene skal krypteres utifra. Denne nøkkelen skal brukes av personen som ønsker å dekryptere de mottatte filene.
Siden all sikkerhet i symmetrisk kryptering ligger i at nøkkelen forblir ukjent for uvedkommede, må denne utveksles på en sikker måte og byttes jevnlig. I dag kan symmetriske krypteringsalgoritmer knekkes ved hjelp av såkalte «brute force angrep», og nettopp derfor må det stilles krav til nøkkelen.
Den må derfor være så lang og sammensatt at det er vanskelig for andre mennesker og datamaskiner å gjette den. For mens et menneske bare klarer å gjette noen hundre nøkler i timen, klarer en datamaskin flere milliarder. Jo større antall mulige tegn i nøkkelen, jo sikrere er den.
Dagens symmetriske ciphere er 3DES (som er utviklet sammen med NSA), AES og Blowfish. Av disse er det AES vi skal kikke nærmere på i dag.
Krypter i Linux-terminalen
For å kryptere og dekryptere tekstfilene våre skal vi bruke et program som heter «Openssl». Dette er et kommandolinjebasert program, og nettopp derfor sparker vi i gang terminalen i Ubuntu Linux, men andre Linux-distribusjoner vil naturligvis også gjøre susen.
Er du ikke helt komfortabel med terminalen? Les vår komplette guide til hvordan du tar den i bruk >>
Etter at vi har fyrt opp terminal-vinduet, er det kjekt å sikre at Openssl er installert, og av seneste versjon. Her finnes det flere ulike fremgangsmåter for hver distribusjon, men for Ubuntu 12.04, hvor det forøvrig kommer forhåndsinstallert, kan programmet oppdateres med kommandoene: «sudo apt-get update» og «sudo apt-get upgrade».
«sudo apt-get install openssl» installerer programmet om det av en eller annen grunn ikke ligger klart på disken din. Andre Debian-baserte distribusjoner benytter samme fremgangsmåte.
Nå skulle alt være klart for å sette i gang med å skjule tekstinnholdet av filene våre, men aller først trenger vi et eksempel-dokument med en tekst som skal gjøres hemmelig.
Lag en hemmelig melding
Vi høyreklikker på skrivebordet og opprettet et nytt tekstdokument med tittelen «ÅpenAngrepsplan.txt». Inne i filen kan du skrive hva du vil, men vi brukte teksten «Vi angriper ved soloppgang den 19. høstdagen.» Når du har funnet en passende kompromitterende eller pinlig tekst, eller begge deler, kan du lagre dokumentet og gå tilbake til terminalen.
Siden du lagret dokumentet ditt på skrivebordet, er det dit vi skal navigere terminalen. Dette gjør vi med kommandoen «cd Desktop», som betyr «Change Directory to Desktop».
> cd Desktop
Deretter kan vi åpne filen vi akkurat lagret, for å sjekke at inneholdet fortsatt er lesbart. Det lille programmet «cat» skriver ut inneholdet fra dokumentet vårt til terminalvinduet.
> cat ÅpenAngrepsplan.txt
> Vi angriper ved soloppgang den 19. høstdagen.
Teksten i dokumentet vårt er så klart fortsatt lesbar, men dette vil det bli en slutt på nå. Ved hjelp av sterk AES 256-bit kryptering skal NSA og andre nysgjerrige der ute virkelig få noe å bryne seg på. Fra terminalen hjelper programmet openssl oss å kryptere teksten med følgende kommando:
> openssl enc -e -aes-256-cbc -a -in ÅpenAngrepsplan.txt -out KryptertOgKodetAngrepsplan.txt.aes.b64
Kommandoen vi bruker starter med å fortelle at vi ønsker å encode, eller kode noe med «enc». Videre bruker vi opsjonen «-e» fordi inneholdet skal «encryptes», altså krypteres.
Så følger krypteringsalgoritmen vi ønsker å benytte, styrken på denne, og måten krypteringen skal skje på. Med andre ord forteller vi openssl-programmet at vi vil kryptere teksten vår ved hjelp av AES-kryptering med 256 bits styrke i såkalt blokkmodus.
Opsjonen «-a» sørger for at den krypterte teksten oversettes til lesbare tegn, slik at du kan kopiere den krypterte teksten du snart får, inn i et tekstdokument, en e-post, eller lignende. Helt til slutt spesifiserer vi hvilken tekst-fil som skal krypteres, og hvor den krypterte teksten til slutt skal gjøre av seg.
Denne nye filen kaller vi i vårt eksempel for «KryptertOgKodetAngrepsplan.txt.aes.b64». Filendelsen «.txt.aes.b64» er kun for at vi lettere skal kjenne igjen den krypterte filen, og gjør også dekrypteringsprosessen lettere, da vi ser at tekstfilen er kryptert med AES, og kodet i base64.
Åpnes med en nøkkel
Men en kryptert tekst er ikke mye verdt om alle har fri tilgang til å dekryptere den, og det er her den hemmelige nøkkelen kommer inn i bildet. En aldri så god krypteringsalgoritme hjelper deg lite om nøkkelen som reverserer den er lett å gjette. Derfor, som i et hvilket som helt annet passord, burde du velge en nøkkel som er minst 15 tegn lang og består at både tegn og bokstaver.
Nøkkelen du velger må du skrive inn to ganger når terminalen ber deg om det:
> enter aes-256-cbc encryption password:
> Verifying - enter aes-256-cbc encryption password:
Nå er teksten i dokumentet «ÅpenAngrepsplan.txt» sterkt kryptert og kodet for visning på skjerm. Vi sjekker allikevel hvordan teksten vår ser ut, med cat-programmet:
> cat KryptertOgKodetAngrepsplan.txt.aes.b64
> U2FsdGVkX1/LIz4PRpNHd/a2j4h2Y6ZKy/YqrCyDO0Qg75WiEJ7+aWEZ2D5Y3Jfd gXffjwUH3/rEOHmft+50rEy4278+ZOVVh/bAyg80P3o=
Og åpne opp igjen
Nå klarer du neppe å få mye mening ut av teksten din, og det gjør heller ingen andre som skulle komme til å snuble over den. Og om du lurte: Den samme teksten vil krypteres ulikt hver eneste gang, takket være avanserte algoritmen i AES-krypteringen.
En kryptert tekst er vel og bra, men en gang skal budskapet dens sannsynligvis avsløres igjen for riktig person. For å finne frem til den opprinnelige teksten, dekrypterer vi den krypterte filen:
> openssl enc -d -aes-256-cbc -a -in KryptertOgKodetAngrepsplan.txt.aes.b64 -out DekryptertAngrepsplan.txt
> enter aes-256-cbc decryption password:
Kommandoen for dekryptering ligner på den vi benyttet for å kryptere, men vi bruker nå opsjonen «-d» for dekryptering istedet for «-e». Vi spesifiserer videre hvilken fil som skal dekrypteres, og oppretter en ny fil hvor den dekrypterte teksten skal lagres. Vi legger den dekrypterte teksten fra «KryptertOgKodetAngrepsplan.txt.aes.b64», inn i filen «DekryptertAngrepsplan.txt».
Med cat-programmet ser vi at teksten vår har fått igjen sitt opprinnelige budskap:
> cat DektyptertAngrepsplan.txt
> Vi angriper ved soloppgang den 19. høstdagen.
I lys av den siste tidens overvåkningsskandaler kan det være lurt å vite hvordan man sikrer dataene sine, og i denne guiden har vi vist hvordan tekstfiler kan krypteres ved hjelp av terminalen i Linux.
Det er derimot ikke noe i veien for å kopiere ut tekst fra de krypterte dokumentene, og sende denne på e-post eller med lynmeldinger. Alt mottaker trenger å vite er den hemmelige nøkkelen, og fremgangsmåten for å dekryptere teksten.
Kryptering i terminal har sine fordeler, men løsningen er ikke optimal for de som ønsker å dukke helt under vannoverflata. Da må man ta helt andre steg >>