1 Software
Linux gebruikt de
DeviceMapper
als een software laag tussen het OS en de verschillende block devices (opslag volumes).
De DeviceMapper voorziet in encryptie,
en bovendien in nog tal van andere functies ten behoeve van block devices.
Voorbeelden hiervan zijn LVM en software RAID.
Bovendien levert de DeviceMapper ook nog extra functies zoals bv.
het aanmaken van zogenaamde snapshots.
2 Hoe werkt het ?
De
DeviceMapper
is een filter,
waardoor data vanaf een 'virtueel block device' gelezen wordt,
bewerkt wordt,
en vervolgens naar een andere 'virtueel block device' wordt doorgestuurd.
Wanneer de DeviceMapper gebruikt wordt om data te encrypteren,
zal deze een 'pseudo device' aanmaken in /dev/mapper.
Dit 'virtuele block device' wordt op dezelfde manier behandeld of benaderd
als elk ander 'block device'.
Met andere woorden de eindgebruiker, of het systeem, ziet het verschil niet
tussen een gewoon volume of een encrypted volume.
Alle data die door het 'pseudo device' passeert wordt geëncypteerd of gedeëncrypteerd,
naargelang de richting waarin de data stroomt.
De DeviceMapper module die dit werk verricht noemt dm-crypt,
deze module gebruikt een symmetrisch encryption algoritm zoals bijvoorbeed AES.
3 Devices waarvoor encryptie kan toegepast worden
Alle block devices kunnen gebruikt worden om encrypted data in op te slaan,
enkele voorbeelden:
- een gewone partitie, /etc/sda1
- een bestand, /home/account/encrypted-file-system
- een iSCSI device (volumes shared over het internet)
- een nfs volume (volumes shared over het netwerk)
4 Encryptie algoritmes
De moderne linux DeviceMapper kan alle crypto-modules die je kernel kan leveren gebruiken:
- Twofish
- AES
- DES
- en nog vele anderen
Met behulp van de opdracht
cat /boot/config-$(uname -r) | grep CRYPTO
kan men raadplegen welke crypto-kernel modules je 'current running kernel' ondersteund.
Het AES algoritme is momenteel de beste keuze, wat betreft sterkte.
5 Lengte van de encryptie sleutel
Hier moet men een gezond verstand evenwicht kiezen.
Een langer sleutel (meer bits) zal de encryptie/decryptie vertragen, maar zal tegelijkertijd moeilijker te kraken zijn.
Wanneer men een deugdelijk encryptie protocol gebruikt,
zal een eventuele hacker,
de zogenaamde brute force techniek moeten gebruiken om de sleutel te kraken.
Dit betekend voor hem dat hij iedere mogelijke sleutel zelf moet genereren en hem vervolgens gebruiken
om het volume te kunnen lezen.
Met andere woorden, het aantal mogelijke sleutels,
bepaald min of meer de tijd die een hacker zal nodig hebben,
om een correcte sleutel te vinden.
Een aantal voorbeelden:
- Een 256bit sleutel geeft ongeveer 1077, een 1 gevolgd door 77 nullen, verschillende sleutels
- Een 128bit sleutel geeft ongeveer 1038, een 1 gevolgd door 38 nullen, verschillende sleutels
Op dit ogenblik kan een gemiddelde PC ongeveer 3*105 (3 met 5 nullen) sleutels per seconde testen.
Dus een 128bit sleutel breken zal ongeveer 1025 jaar duren,
indien men een enkele PC gebruikt. (een 1 gevolgd door 25 nullen).
Zelfs een zeer uitgebreide cluster van supercomputers zal toch een aanzienlijke tijd nodig
(1000+ jaar)
hebben om een 128bit sleutel te kraken.
Waarom zou je dan toch een langer dan 128bits key willen gebruiken ?
Stel dat er een fout zou gevonden worden in het encryptie protocol,
waardoor de lengte van de sleutel aanzienlijk zou inkorten,
dan heb je met een 256bit toch nog een fatsoenlijke lengte.
6 De sleutel beschermen
De sleutel veilig opbergen is zeer belangrijk in deze toepassing.
Immers iedereen die over de sleutel beschikt kan het versleuteld volume uitlezen.
Het volgende beschrijft enkele methoden:
Methode |
Voordeel |
Nadeel |
Voorbeeld |
Passphrase (wachtwoord) |
Allen die het wachtwoord kennen kunnen het volume openen |
er zijn tal van rechnieken om iemand een wachtwoord te ontfutselen
als het wachtwoord vergeten is kan het volume niet meer geopend worden
|
|
Verwijderbare media |
De sleutel is alleen leesbaar als hij echt nodig is |
Het volume is niet langer beschermd wanneer het medium gestolen of gecopïeerd is
Het volume is niet langer bereikbaar wanneer het medium verloren is.
|
USB stick, diskette |
Encrypted sleutel |
de sleutel is op zijn beurt beschermd met een wachtwoord
men kan in dit geval het wachtwoord wijzigen door de sleutel opnieuw te encrypteren
men kan verschillend geëncrypteerde versies voor verschillende mensen aanmaken
|
Het volume is niet langer beschermd wanneer het medium gestolen of gecopïeerd is
Het volume is niet langer bereikbaar wanneer het medium verloren is.
|
USB stick, diskette |
smartcard |
wie de kaart heeft kan het volume uitlezen
|
oppassen voor diefstal van de kaart
geschikte kaartlezer nodig
|
|
belgium id |
bevat een pgp sleutel per individu
iedere belg heeft normaal zijn passpoort bij zich
iedereen kent het gevaar van paspoort diefstal
|
geschikte kaartlezer nodig
|
|
7 Hoe lang moet je wachtwoord zijn
Wanneer men besluit om een sleutel met een wachtwoord te gebruiken,
of een sleutel met een encryptie met een wachtwoord te beveiligen,
dan is het van belang dat men een wachtwoord met voldoende lengte kiest.
Zoals we hierboven gezien hebben is het zo goed als onmogelijk om de sleutel zelf te kraken.
Maar een aanvaller hoeft dat niet te doen als hij het wachtwoord kan raden.
Een kleine berekening:
Wanneer men letters, cijfers, een een beperkte set leestekens,
door elkaar gebruikt dan zijn er ongeveer 64 mogelijkheden per positie.
64 different karakters kunnen worden opgeslagen in 6bits.
Gebruikt men een enkel karakter als wachtwoord dan heeft
een aanvaller de letter geraden in maximaal 64 beurten.
Indien het wachtwoord bestaat uit meerdere letters,
dan zorgt iedere letter ervoor dat het aantal maximale pogingen
toeneemt met 64 keer.
Wil men woorden gebruiken voor het wachtwoord,
dan wordt veel gemakkelijker voor een aanvaller om de juiste woorden te raden.
Gebruikt men een 128bit sleutel,
en wil men een sterk wachtwoord dan moet men te minste 24 tekens gebruiken.
Om een 256bit sleutel te beschermen gebruikt men best tot 42 tekens voor je wachtwoord.