eCryptfs er et POSIX -kompatibelt lagdelt kryptografisk filsystem i Linux-kernen (introduceret i kerneversion 2.6.19).
Forskellen mellem eCryptfs og de fleste andre kryptografiske filsystemer er, at alle kryptografiske metadata er gemt inde i den krypterede fil. Dette gør det muligt at flytte sådanne filer gennem betroede kanaler, mens de stadig giver autoriserede personer adgang til indholdet af filerne.
eCryptfs er implementeret som et Linux-kernemodul, suppleret med forskellige hjælpeprogrammer til at arbejde med nøgler. Dette modul krypterer indholdet af filer ved hjælp af kernens kryptografiske API. Nøglelagermodulet trækker information fra overskrifterne på individuelle filer og sender disse data til krypteringsapplikationen. Baseret på de modtagne oplysninger bestemmes krypteringsregler, i henhold til hvilke der træffes en beslutning om yderligere handlinger (for eksempel bede brugeren om at indtaste en adgangskode eller dekryptere sessionsnøglen ved hjælp af den private nøgle).
eCryptfs er baseret på OpenPGP-filformatet beskrevet i RFC2440 [1] . Samtidig afveg udviklerne fra standarden for at bevare muligheden for tilfældig adgang til data i en fil. I henhold til OpenPGP-formatet skal kryptering og dekryptering udføres på hele indholdet af filen. Dette fører til, at der ikke kan læses en eneste byte fra filen, før den er fuldstændig dekrypteret. For at omgå dette problem uden at kompromittere systemsikkerheden opdeler eCryptfs dataene i omfang . Som standard er disse bidder filsystemets sidestørrelse (indstillet i kernen, typisk 4096 bytes ). For at læse data fra ét stykke skal det være fuldt dekrypteret, og for at skrive data til en blok skal hele blokken være krypteret.
Hver blok har sin egen unikke initialiseringsvektor. Adskillige initialiseringsvektorer er lagret i en blok, der går forud for flere efterfølgende datablokke. Når data skrives til en blok, bliver den tilsvarende initialiseringsvektor i blokken af sådanne vektorer opdateret og overskrevet, før blokken krypteres. Blokkene krypteres med en blokchiffer valgt baseret på reglerne svarende til den givne fil i chiffertekstbloksammenkædningstilstanden .
Implementering af kryptering på filsystemniveau og lagring af kryptografiske data sammen med selve filerne har visse fordele:
Hver eCryptfs-inode svarer til en inode i det underliggende filsystem og indeholder en kryptografisk kontekst forbundet med den. Denne kontekst omfatter:
eCryptfs kan cache den kryptografiske kontekst af hver fil for at fremskynde systemet.
For at undgå ordbogsangreb på adgangskoder, "salter" eCryptfs autentificeringsadgangskoder : adgangskoden er sammenkædet med en "salt"-streng, derefter hashes den sammenkædede streng iterativt (65537 gange som standard) for at generere en godkendelsessignatur, der svarer til adgangskoden.
eCryptfs fungerer så gennemsigtigt som muligt for alle applikationer, der arbejder med krypterede filer. I de fleste tilfælde, hvor adgangskontrol ikke kan håndhæves fuldt ud af værten, bør det faktum, at filen er krypteret, ikke være et problem for brugeren. Kryptering skal pr. definition sikre informationernes integritet og fortrolighed, og systemet løser disse problemer ved at bruge brugerautentificeringsdata til at generere nøgler og få adgang til indhold.
SessionsnøglerHver fil modtager en tilfældigt genereret sessionsnøgle, som bruges til at kryptere indholdet af filen. eCryptfs gemmer denne sessionsnøgle i filens kryptografiske metadata. Disse lagres igen af den respektive bruger. Når et program lukker en nyoprettet fil, krypterer eCryptfs sessionsnøglen nøjagtigt én gang for hvert godkendelsestoken, der er knyttet til den pågældende fil, i henhold til krypteringsreglerne. Disse krypterede sessionsnøgler skrives derefter til overskrifterne på de tilsvarende filer. Når applikationen senere åbner den krypterede fil, læser eCryptfs de krypterede sessionsnøgler og udtrækker dem fra filens kryptografiske kontekst. Systemet ser derefter på brugerens godkendelsestokens og prøver at matche de krypterede sessionsnøgler. Den først fundne nøgle bruges til at dekryptere sessionsnøglen. I det tilfælde, hvor intet token er egnet til dekryptering, handler systemet i overensstemmelse med arbejdspolitikken. Den næste handling kan for eksempel være en anmodning til PKI-modulet eller en anmodning om en adgangskode.
Brugte krypteringsalgoritmerFølgende symmetriske krypteringsalgoritmer [2] bruges til kryptering :
eCryptfs har flere værktøjer integreret for at gøre det nemmere at arbejde med systemet.
Det pluggbare autentificeringsmodul (PAM ) giver en mekanisme, der hjælper administratoren med at bestemme, hvordan slutbrugere vil blive autentificeret. PAM henter brugerens adgangskode og gemmer den i brugerdata. Adgangskoden gemmes som et usaltet godkendelsestoken. Fordelen ved dette system er fleksibilitet. Så adgangskodegodkendelse kan nemt erstattes med USB-nøglegodkendelse.
eCryptfs giver en brugerdefinerbar PKI (Public Key Infrastructure). PKI-modulet accepterer nøgler og data som input og returnerer krypterede eller dekrypterede data.
I 2014 reviderede webstedet DefuseSec [3] eCryptfs (næsten samtidig med revisionen af EncFS-systemet). Ifølge hans resultater er eCryptfs-systemet i øjeblikket sikkert at bruge. Det har dog brug for mere sikkerhedsforskning, da det ikke er udviklet af en kryptograf.