eCryptfs är ett POSIX -kompatibelt lager kryptografiskt filsystem i Linux-kärnan (introducerat i kärnversion 2.6.19).
Skillnaden mellan eCryptfs och de flesta andra kryptografiska filsystem är att all kryptografisk metadata lagras inuti den krypterade filen. Detta gör att sådana filer kan flyttas genom betrodda kanaler samtidigt som auktoriserade personer kan komma åt innehållet i filerna.
eCryptfs är implementerat som en Linux-kärnmodul, kompletterad med olika verktyg för att arbeta med nycklar. Denna modul krypterar innehållet i filer med hjälp av kärnans kryptografiska API. Nyckellagringsmodulen extraherar information från rubrikerna på enskilda filer och skickar dessa data till krypteringsapplikationen. Baserat på den mottagna informationen bestäms krypteringsregler, enligt vilka ett beslut fattas om ytterligare åtgärder (till exempel uppmana användaren att ange ett lösenord eller dekryptera sessionsnyckeln med den privata nyckeln).
eCryptfs är baserat på OpenPGP-filformatet som beskrivs i RFC2440 [1] . Samtidigt, för att bevara möjligheten till slumpmässig tillgång till data i en fil, avvek utvecklarna från standarden. Enligt OpenPGP-formatet måste krypterings- och dekrypteringsoperationer utföras på hela innehållet i filen. Detta leder till att inte en enda byte kan läsas från filen förrän den är helt dekrypterad. För att komma runt detta problem utan att kompromissa med systemsäkerheten delar eCryptfs upp data i omfattningar . Som standard är dessa bitar filsystemets sidstorlek (inställd i kärnan, vanligtvis 4096 byte ). För att läsa data från ett stycke måste det vara helt dekrypterat, och för att skriva data till ett block måste hela blocket krypteras.
Varje block har sin egen unika initialiseringsvektor. Flera initialiseringsvektorer lagras i ett block som föregår flera efterföljande datablock. När data skrivs till ett block uppdateras och skrivs motsvarande initialiseringsvektor i blocket av sådana vektorer över innan blocket krypteras. Blocken krypteras med ett blockchiffer valt baserat på reglerna som motsvarar den givna filen i chiffertextblocksammansättningsläget .
Implementering av kryptering på filsystemnivå och lagring av kryptografisk data tillsammans med själva filerna har vissa fördelar:
Varje eCryptfs-inod motsvarar en inod i det underliggande filsystemet och innehåller en kryptografisk kontext associerad med den. Detta sammanhang inkluderar:
eCryptfs kan cache det kryptografiska sammanhanget för varje fil för att påskynda systemet.
För att undvika ordboksattacker på lösenord, " salter " eCryptfs autentiseringslösenord: lösenordet sammanfogas med en "salt"-sträng, sedan hashas den sammanfogade strängen iterativt (65537 gånger som standard) för att generera en autentiseringssignatur som motsvarar lösenordet.
eCryptfs fungerar så transparent som möjligt för alla applikationer som fungerar med krypterade filer. I de flesta fall där åtkomstkontroll inte kan tillämpas fullt ut av värden bör det faktum att filen är krypterad inte vara ett problem för användaren. Kryptering måste per definition säkerställa informationens integritet och konfidentialitet, och systemet löser dessa problem genom att använda användarautentiseringsdata för att generera nycklar och komma åt innehåll.
SessionsnycklarVarje fil får en slumpmässigt genererad sessionsnyckel, som används för att kryptera innehållet i filen. eCryptfs lagrar denna sessionsnyckel i filens kryptografiska metadata. Dessa lagras i sin tur av respektive användare. När ett program stänger en nyskapad fil, krypterar eCryptfs sessionsnyckeln exakt en gång för varje autentiseringstoken som är associerad med den filen, enligt krypteringsreglerna. Dessa krypterade sessionsnycklar skrivs sedan till rubrikerna för motsvarande filer. När programmet senare öppnar den krypterade filen läser eCryptfs de krypterade sessionsnycklarna och extraherar dem från filens kryptografiska sammanhang. Systemet tittar sedan på användarens autentiseringstokens och försöker matcha de krypterade sessionsnycklarna. Den första hittade nyckeln används för att dekryptera sessionsnyckeln. I de fall då ingen token är lämplig för dekryptering, agerar systemet i enlighet med arbetspolicyn. Nästa åtgärd kan till exempel vara en begäran till PKI-modulen eller en begäran om ett lösenord.
Använda krypteringsalgoritmerFöljande symmetriska krypteringsalgoritmer [2] används för kryptering :
eCryptfs har flera verktyg integrerade för att göra det lättare att arbeta med systemet.
Den pluggbara autentiseringsmodulen ( PAM ) tillhandahåller en mekanism som hjälper administratören att avgöra hur slutanvändare ska autentiseras. PAM hämtar användarens lösenord och lagrar det i användardata. Lösenordet lagras som en osaltad autentiseringstoken. Fördelen med detta system är flexibiliteten. Så, lösenordsautentisering kan enkelt ersättas med USB-nyckelautentisering.
eCryptfs tillhandahåller en anpassningsbar PKI (Public Key Infrastructure). PKI-modulen accepterar nycklar och data som indata och returnerar krypterad eller dekrypterad data.
Under 2014 granskade sajten DefuseSec [ 3] eCryptfs (nästan samtidigt med granskningen av EncFS-systemet). Enligt hans resultat är eCryptfs-systemet för närvarande säkert att använda. Det behöver dock mer säkerhetsforskning eftersom det inte utvecklades av en kryptograf.