Hvordan å kryptere en Linux File System med DM-Crypt

Red.anm: File system som to ord refererer til utformingen av kataloger, som inkluderer ting som katalogen /dev som representerer forskjellige maskinvareenheter og ikke gjør det faktisk refererer til filer på harddisken. Og "filsystem" refererer til programvaren som styrer filer og kataloger.

Et vanlig spørsmål vi får fra Linux.com lesere om hvordan å implementere et filsystem krypteringsmetode for Linux. Før vi dykke inn i dette, ønsker jeg å lage to punkter:

Først, er det vanskelig å finne anstendig informasjon på nettet om dette. Så jeg kommer til å henvise deg til et par virkelig gode ressurser jeg klarte å finne.

For det andre er det viktig å forstå de tekniske detaljene for problemet. Og det er det jeg kommer til å ta opp her, etter som jeg skal gi deg noen tips om hvordan du skal gjøre kryptering, og deretter henvise deg til andre ressurser.

Folk fra tid til annen sier at de ønsker å kryptere sine data, men det er en fundamental del mangler i hva de spør: Hva gjør de ønsker å kryptere? Har de ønsker å kryptere dataene sine fra i en programvarepakke, og deretter lagre disse dataene på harddisken i en enkelt fil? For eksempel vil de liker Libreoffice til å lage en hel .odt tekstbehandlingsdokument, og kryptere det, og deretter skrive de krypterte resultatene til filsystemet som en enkelt fil, som i figuren nedenfor? Eller ville de liker Linux til å ta vare på krypterings seg på filsystemnivå?

Når det gjelder Linux å ta vare på den, Libreoffice ville ha å gjøre noe annet enn å lese og skrive filer som det for tiden gjør. Linux vil kryptere filen før du faktisk skriver det til disken, og dekryptere det etter å ha lest den tilbake. Dette er den tilnærmingen jeg tar her, men for dette er det mange andre spørsmål du må spørre. Og for å stille de riktige spørsmålene, må du forstå hvordan blokklagring fungerer. La oss se på det først.
Block Nivå Storage

Når et operativsystem fungerer med en lokal stasjon, bruker operativsystemet filsystemet programvare for å formatere disken, og deretter lese og skrive enkelte sektorer. Når du lagrer en fil, til filsystemet programvare tall ut sektorene skrive til. Når du leser en fil, tall filsystemet ut hvilke sektorer dataene er på, og deretter leser de sektorene og rekonstruerer filen for deg. For å administrere filene, bruker filsystemet forskjellige typer indekser som den lagrer også på disken. Forskjellige filsystemer bruker forskjellige metoder for å organisere dataene, og også inkludere ulike sikkerhetsmekanismer; sluttresultatet er forskjellige filsystemer som ext4 og NTFS
Low-Level detaljer

Nå som vi er klar på hvordan blokknivå enhetene fungerer, bør du vurdere dette. Operativsystemet bruker sitt filsystem programvare å skrive sektorene data til stasjonen. Filsystemet programvare bestemmer hvor du skal skrive sektorene data og hvordan du kan organisere dem, inkludert etablering av metadata som beskriver filnavn og hvordan de er organisert, og så videre. Men for at filsystemet programvare for å utføre selve lese og skriver til stasjonen, det må være til stede en enhetsdriver som gjør den faktiske kontroll av selve enheten, som vist på venstre side av neste figur. (Driverne er representert i filsystemet hierarki innenfor /dev katalogen.)

Høyre på dette punktet - stedet fra filsystemet programvare til enheten driver - det er et valg som skal gjøres i kryptering: Ønsker du filsystemet programvare for å gjøre krypterings før du skriver dataene? Eller, hva vi effektivt kile et stykke programvare i mellom filsystemet programvare og enhetsdriveren? På denne måten vil filsystemet fungere som det normalt gjør, men når den prøver å få tilgang til enheten, samtaler i stedet vil bli håndtert av kryptering programvare, som vist på høyre side av figuren nedenfor. Dette hvordan vi skal gjøre det for denne artikkelen. Men først la oss snakke om noen flere spørsmål.

(Forresten, hvis du ønsker å se hvordan enhetsdrivere eksistere i /dev katalog av Linux-systemet, sjekk ut denne artikkelen. Den dekker programmering, men hvis du er ikke en programmerer, klikk for å side 2, og bla ned til delen som er merket Hello, World! Bruke /dev /hello_world og lese første avsnitt for en strålende forklaring.)

Hvis du vil kryptere en hel partisjon, kan du vurdere å kryptere hele stasjonen. Men det er ett lite problem der. Hvis datamaskinen starter fra stasjonen, må drive en liten del dedikert til oppstart kode. Dette oppstart kode er maskinkode som datamaskinen leser inn og utfører for å starte datamaskinen. Hvis hele harddisken er kryptert, inkludert disse dataene, vil datamaskinen trenger noen måte å dekryptere data. Men datamaskinen ikke har et filsystem lastet ennå, så det kan ikke lese et program som dekrypterer den. Se hvor dette går? Dekryptering koden må være i BIOS selv. Men de fleste datamaskiner ikke har en slik kode. Og det betyr at boot record virkelig kan ikke være kryptert (selv om folk har diskutert ulike måter rundt dette problemet slik som å sette oppstart på en flyttbar USB-stasjon, samt hvordan man kan løse andre tekniske problemer).
Fjern Drives

Hvis stasjonen er ekstern, det finnes måter du kan få tilgang til data; Dette er viktig for å forstå hva slags kryptering er tilgjengelig for deg. De to måtene er:

Block-nivå lagring, akkurat som med lokale stasjoner, hvor filsystem programvare kan lese og skrive direkte til sektorene på fjern disk
< li>

Fil-nivå lagring der operativsystemet sender filer til en ekstern server, som har sitt eget operativsystem og filsystem programvare; Dette ekstern server i svinger skriver filene til sin disk.

Med filnivå lagring, du har ikke mange valg når det gjelder kryptering. Hvis du ønsker å kryptere dataene, må du kryptere det i søknaden din før du sender den videre til en ekstern server for lagring.

Men med blokknivå ekstern lagringsplass du har alternativer. For eksempel, hvis du bruker en sky vertstjeneste der du kan feste ulike volumer til en server du tildelt, du vanligvis bruker block-level lagring. Volumene er ikke nødvendigvis knyttet fysisk til hosted server; ennå, kan serveren tilgang til dem som om de er, og formatere volumet og lese og skrive enkeltsektorer akkurat som om harddisken er montert lokalt. Hva dette betyr er med blokknivå ekstern lagringsplass du kan utføre kryptering på filsystem nivå akkurat som du kanskje på den lokale datamaskinen og lokal stasjon.
Programvare

Nå vet vi hva vi ønsker å utrette; spørsmålet er, hvordan gjør du det? Det viser seg Linux har en programvarepakke innebygd som bruker metoden jeg forklarte tidligere av kile programvare i mellom filsystemet programvare og enhetsdrivere. Programvaren er kalt dm-krypten. Og dm-crypt krypterer dataene og skriver det på lagringsenheten (ved hjelp av enhetsdriver) med en lagringsformat kalt LUKS.

LUKS (Linux Unified Key Setup) er formatet som brukes på selve stasjonen , og er i hovedsak brukt i stedet for et filsystem som ext4. Den dm-crypt system sitter mellom filsystem programvare; filsystemet programvaren leser og skriver ext4, og ext4 data blir presset gjennom dm-crypt som deretter lagrer dataene i LUKS format på stasjonen. Dermed kan du effektivt har et filsystem som ext4 eller NTFS sitter "på toppen av" den krypterte LUKS format.

Merk at dm-crypt er navnet på delsystem, og at du bruker ulike verktøy til jobbe med det. Det er ingen enkelt kommando som heter dm-crypt. Det er noen programmer du kan bruke til å administrere dm-crypt:?

  • cryptsetup: Dette er et kommandolinjeprogram som gir deg lavnivå tilgang til å styre etableringen av en DM- .? krypten administrert enhet

    cryptmount. Dette programmet gir flere funksjoner, og er litt mer brukervennlig, som du kan se i denne artikkelen fra et par år siden


    Andre funksjoner

    En kul ting om dm-crypt systemet er at det ikke trenger å arbeide direkte med en disk driver. I stedet kan det spare alle dataene til en enkelt fil i stedet for å bruke LUKS og en hel partisjon. Hva det betyr er at du kan ha dm-crypt opprette en enkelt fil innen hvilke du kan opprette en hele filsystemet. Deretter kan du montere det enkelt fil som en egen stasjon, og deretter få tilgang til den fra en hvilken som helst programvare akkurat som du ville enhver annen stasjon.
    Cloud Drives

    Fordi noen sky tilbydere (for eksempel Amazon Web Services) gi deg full root-tilgang til de blokk enheter som er koblet til serverne, kan du benytte deg av dm-crypt; du kan formatere en blokk enhet med LUKS format, og deretter forberede den for dm-crypt system; Da kan du formatere det hele med en ext4 filsystem. Sluttresultatet er en fullt kryptert stasjon lever i skyen, en som du klarer deg selv. Lyst til å prøve det? Her er en tutorial på å gjøre det ved hjelp av cryptsetup programmet.

    Noen andre cloud leverandører ikke gir deg direkte tilgang til blokkenhet som AWS gjør. For eksempel ikke Digital Ocean ikke gi deg direkte tilgang; men du kan fortsatt lage en fil og sette opp dm-crypt å bruke denne filen, og deretter opprette det de kaller en "container" i filen som representerer filsystemet. Faktisk er prosessen den samme som hva du vil oppnå å lage en kryptert container fil på din egen lokale maskin. Og her er Digital Ocean tutorial på å lage en dm-crypt LUKS container fil. Legg merke til i denne opplæringen som i likhet med blokkenhet, oppretter du en hel fil system (som ext4), men i dette tilfellet at filsystemet lever inne i containeren filen.
    Lokale stasjoner

    Og det bringer oss til hvordan du kan oppnå alt dette lokalt. Opplæringen ovenfor for å opprette en kryptert stasjon på Amazon har de samme trinnene for å skape den lokalt på en av dine egne harddisker. Men her er en annen tutorial som gir steg-for-steg instruksjoner for å gjøre det lokalt på din egen harddisk, også bruker cryptsetup.

    Hvis du ønsker å opprette en lokal container-enhet som inneholder en hel kryptert filsystem, bare Følg trinnene i Digital Ocean tutorial ovenfor

    Eller hvis du ønsker å bruke det andre programmet, cryptmount, for å kryptere en hel partisjon eller opprette en container fil, følg denne opplæringen.; forfatteren, Carla Schroder, kjenner henne ting og gir noen gode skritt.
    Konklusjon

    Det er omtrent det. Det som er viktig om å vite hvordan å kryptere er å fullt ut forstå først hva du egentlig prøver å oppnå - ha et program kryptere og dekryptere dataene, eller har operativsystemet håndtere kryptering; og om å kryptere en hel partisjon eller bare enkeltfiler; og om å skape en beholder for å holde de krypterte filer. Deretter kan du følge trinnene på de tutorials jeg knyttet til her og få jobben gjort riktig. Anmeldelser