Festplattenverschlüsselung auf fritzbox mit 2.6er kernel

C_Payne

Neuer User
Mitglied seit
12 Nov 2005
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
hi leute,

da ich meine mit luks verschlüsselte USB-HDD mit der fritzbox nutzen wollte habe ich mich mal daran gemacht die fritzbox cryptsetup-tauglich zu machen (ohne den kernel zu modifizieren also alles als module!)

ist alles noch sehr experimentell und nicht sehr ausgiebig getestet, trotzdem wollte ich die community mal teilhaben lassen.

ich habe ein kleines paket zusammengestellt das alle benötigten kernelmodule, cryptsetup, ein paar tools wie fdisk und mkfs.ext2 und die quellen enthält. (enthält natürlich keine proprietären binaries!!!)

Informationen zu luks findet man z.B. in der gentoo wiki:
http://de.gentoo-wiki.com/DM-Crypt

kurze Anleitung:

1. kernelmodule und cryptsetup auf die fritzbox---
dazu gibt es sicher genug anleitungen und ich will mich darüber hier nicht auslassen!

2. benötigte module laden: (reihenfolge beachten!!!)
1. crypto.ko
2. crypto_algapi.ko
3. cryptomgr.ko
4. blkcipher.ko
5. gf128mul.ko (nur für LRW und XTS)
6. dm-mod.ko
7. dm-crypt.ko

dann sollte man sich für eine verschlüsselung entscheiden

beispiel: aes-lrw-benbi

also noch aes_generic.ko und lrw.ko laden

dann kanns los gehen mit cryptsetup:

dazu muss man als erstes eine partition auf seiner HDD entsprechend mit luks formatieren:
(darauf achten das diese nich autmatisch gemountet wurde)

./cryptsetup -c aes-lrw-benbi -s 384 luksFormat /dev/sda1

wenn man die so formatierte cryptodisk dann starten will benutzt man

./cryptsetup luksOpen /dev/sda1 beliebigername

achtung die device nodes werden nicht wie üblich unter /dev/mapper erzeugt sonduern unter /var/mapper da schreibzugriff benötigt ist

dann kan man seine verschlüsselte disk(/var/mapper/beliebigername) mounten, formatiern was auch immer.

stoppen kann man die cryptodisk mit ./cryptsetup remove beliebigername


informiert mich bitte über bugs oder wenn es probleme gibt!!!


Für die Entwickler unter euch:

1.
2.6.13 hat noch keine Unterstützung für die moderneren Verfahren(namentlich LRW und XTS) also habe ich die Quellen der Crypto Api des Kernels 2.6.24 benutzt und entsprechend modifiziert das sie in dem aktuellen avm-kernel tree compilieren/funktionieren.

2.
das devicemapper modul entsprechend modifizieren, da sich in der crypto-api einiges getan hat

3. Cryptsetup hat auch eine kleine modifikation bekommen: neu ist die kommandozeilenoption -f womit man ein verzeichnis angeben kann wo die device-nodes erstellt werden. (ich habe es standartmäßig auf /var/ eingestellt da dort auf der fritzbox rw zugriff ist.


Grüße,

Christian
 

Anhänge

  • crypto-mod.tar.bz2
    2.5 MB · Aufrufe: 41
In wie weit packt die CPU der FB die AES-Verschlüsselung bei zB MP3-Streaming und gleichzeitigem Telefonieren? Würde als Laie vermuten, dass es zu Engpässen kommt.

Ciao
 
Benchmarks

hallo minze,

bin leider noch nicht zu benchmarks gekommen,

aber mp3's sind auf jeden kein problem...

und telefonieren ging sogar während der compiler lief noch ohne probleme.
wird halt prozesspriorität festgelegt.

kannst ja einfach mal nen test starten

time dd if=/dev/zero of=test.img bs=1024k count=128

damit schreibts 128 mbyte und gibt dir dann die zeit aus...(nimm fürs erste lieber mal nur 16mbyte oder so...)

bin leider grad unterwegs und hab die fritzbox zuhaus abgeschaltet.

nächste weekend bin ich wieder home,... dann mach ich mal nen benchmark.(so vom gefühl sag ich 500kbyte - 1mbyte/sec mit aes)

grüße, christian
 
Hallo C_Payne,
hab mal versucht die Module zu laden, was bis auf aes_generic.ko funktioniert. Fehlermeldung:
Code:
insmod: cannot insert 'aes_generic.ko': Success (22): Success
Das Modul ist danach nicht geladen. Gibt es noch besondere Voraussetzungen an die Fritzbox?

PS: Gibts auch eine Möglichkeit, eine Container-Datei zu erstellen?
 
Zuletzt bearbeitet:
Da hab ich auch nachgeschaut, es kommt aber beim laden der ganzen Module nur
Code:
device-mapper: 4.4.0-ioctl (2005-01-12) initialised: [email protected]
:(
 
Das ist wohl vom device-mapper und nicht von aes_generic.

Ohne weitere Hinweise ist es schwierig. Passen Kernel und Module zusammen?
 
Das ist eine interessante Frage. Nur habe ich leider keine Ahnung, wie ich das herausfinden könnte... hilf' mir doch bitte auf die Sprünge!
 
@ cuma

hast du die richtige reihenfolge verwendet und alles der reihe nach geladen?

für aes brauchst du halt crypto und crypto_algapi

wenn aes trotzdem nicht lädt dann poste mal bitte deine firmwareversion und fb-typ

ausserdem mal 'insmod -m'

getestet habe ich blos auf 7170 mit 29.04.49


christian

[EDIT]

les grad erst deine signatur und sehe das du deinen kernel ersetzt hast.

hab nun leider keine ahnung welche veränderungen an diesem vorgenommen wurden.

da müsstest du mir sagen was du an deinem Kernel verändert hast.

[/EDIT]
 
Zuletzt bearbeitet:
Hallo, ich habs auf einer 7170 probiert welche mittlerweile mit freetz und Firmware .49 läuft. Auch hier habe ich "replace kernel" beim imageerstellen ausgewählt, da ich sonst ext3 und für pptp manche Sachen nicht laden kann.
Code:
$ insmod -m
insmod: can't open '-m': No such file or directory
$ lsmod|grep cry
dm_crypt               11824  0
dm_mod                 57680  1 dm_crypt
cryptomgr               3264  0
crypto_algapi          14272  3 lrw,blkcipher,cryptomgr
crypto                  9296  3 lrw,dm_crypt,crypto_algapi

Ich habe alle Module in der Reihenfolge wie oben angegeben geladen, was auch alles ausser dem letzten klappt. Mein Skript:
Code:
insmod $pfad/modules/crypto/crypto.ko
insmod $pfad/modules/crypto/crypto_algapi.ko
insmod $pfad/modules/crypto/cryptomgr.ko
insmod $pfad/modules/crypto/blkcipher.ko
insmod $pfad/modules/crypto/gf128mul.ko
insmod $pfad/modules/device-mapper/dm-mod.ko
insmod $pfad/modules/device-mapper/dm-crypt.ko
insmod $pfad/modules/crypto/lrw.ko
insmod $pfad/modules/crypto/aes_generic.ko
 
ich nehm an das du diesen dahnisahne mod benutzt???..

ich werd mir mal die patches von dem geben... vielleicht find ich was...

werd auch mal die firmwareversion von dir ausprobieren...


grüsse
 
Ich benutzt den "Nachfolger" vom dsmod namens Freetz (ehemals ds-pre16)
Kann per svn bezogen werden. Infos dazu hier: http://trac.freetz.org/
Danke für deine Hilfe!
 
also die poblematik ist vermutlich die folgende:

in dem freetz-kernel ist die crypto-api bereits mit einkompiliert(die alte natürlich)
ist zwar verwunderlich das nur aes probleme macht, aber das sollte nicht weiter stören.

die kernelconfig liegt unter: freetz-trunk/make/linux
für die .49er firmware vermutlich Config.ohio-8mb_26.04.49

dort musst du CONFIG_CRYPTO entfernen.

zur sicherheit kannst du dann ja auch noch die .config in dem kernel-build-verzeichniss checken, hab nur keine zeit jetzte nen build zu starten.

allerdings entspricht das alles eigentlich nicht mehr meinem ansatz die sache ohne jegliche firmwareveränderungen zu realisieren.

alternativ kannst du in der .config die alte crypto-api aktivieren... nur dann ohne lrw und xts.

gruß, christian
 
Hallo,
dies ist eine blöde Sache. Den replaced kernel hab ich unter anderem extra wegen der CryptoAPI genommen, da der vpn-Server (pptp) sonst nicht läuft. Wird der dann nach der Veränderung noch laufen? Ich schau heut Abend selbst mal noch rein
 
die zwei module aus dem freetz tree habe ich auch dabei (sha1 und arc4)

ob nun dein vpn-server ohne veränderung mit der neuen api funktioniert kann ich nicht 100% sagen, aber ich denke es sollte keine probleme geben. (du musst halt vor dem starten des vpn dann crypto, crypto_algapi und sha1 /arc4 laden)

mein tipp: wenn du nur verschlüsseln willst und dir die modi xts und lrw egal sind dann behalte die api von dem freetz tree...
der 2.6.13er kernel unterstützt auch schon aes-cbc-essiv:sha256 und das wiederum ist ansich ausreichend sicher...
um das zu bewerkstelligen musst du eben die entsprechenden module in der .config aktivieren
(aes, sha256, dm-mod, dm-crypt)

grüsse christian
 
Hallo, es scheint zu funktionieren!
Also, ich habe die Dateien
Code:
aes.ko
dm-crypt.ko
dm-mod.ko
sha256.ko
erstellt und geladen.
Danach konnte ich mit
Code:
cryptsetup -c aes-cbc-essiv:sha256  -s 256 luksFormat
eine Partition anlegen.

Jetzt versuch ich mal noch cryptsetup selbst zu kompilieren, dann brauch ich keine deiner Dateien mehr :-]

Eine Frage bleibt aber noch offen: Was ist mit den Datenen crypto.ko, crypto_algapi.ko, cryptomgr.ko? Ich habe sie nicht geladen und erstellt wurden sie bei mir auch nicht. Wofür sind diese denn? Brauch ich sie?

Danke für deine Hilfe!
 
freut mich das das funktioniert....

also normalerweise kann man die crypto-api nicht als modul compilieren... nur fest in den kernel.
meine modifikation --> crypto.ko

die anderen module sind neu in der moderneren cryptoapi.
ich glaube die lassen sich sonst auch nur fest einkompilieren...

der sinn, warum man das nur fest einkompilieren kann ist mir nicht ganz klar.... eine einfache modifikation der initialisierungfunktion macht dies möglich... (__init ---> module_init)

der sinn meiner ganzen bemühungen war es halt die modis lrw und xts zu ermöglichen, da ich solche festplatten benutzte, und eine mod ohne kernel-replacement

die problematik mit dem cryptsetup ist die, das normalerweise die device-nodes in /dev/mapper erzeugt werden.
es gibt eine funktion im libdevmapper mit der man das setzen kann... diese rufst du einfach am anfang von cryptsetup.c auf.
bin leider mal wieder unterwegs, deswegen kann ich dir genaueres erst morgen sagen.
als build-environment hab ich debian-mipsel-etch genommen, da ich sowohl im cross-compile, als auch in meinem uclibc-mipsel-buildroot nur auf errors gestürzt bin.
achja, denk dran nen swap auf der box zu starten(32 meg oder so) sonst hängt der compile irgendwann...

@minze:

übrigens... bin mal zu nem schnellen benchmark gekommen....

aes-lrw-benbi auf usb1.1 macht ~600kbyte pro sekunde schreiben
unverschlüsselt sinds auch nur 1mbyte gewesen...

grüsse, christian
 
Achso, die Dateien crypto.ko, crypto_algapi.ko, cryptomgr.ko sind also die CryptoAPI an sich. Da ich für den pptpd Server schon irgendwo von hier einen Patch eingespielt hab, um sha4 und arc4 nutzen zu können, klappts wohl ohne die Datein.

Ich (cross-)compiliere auf dem PC unter Linux. Im dsmod ist eine komplette toolchain drinnen. Wenn man die Makefiles richtig anpasst, kommt sogar alles fast wie von selbst in die Firmware.
Ich versuch nun mal die 4 Module und cryptsetup da anzupassen. Da ich aber nciht der linux-c-compilier Meister bin dauert dies wohl etwas. Vorerst lass ich dai Dateien mal extern auf dem Stick

Falls du dsmod/freetz noch nicht ausprobiert hast, schau doch mal rein: scn runterladen, make menuconfig, make, fertig :-]

Benchmark:
Also dies hängt stark vom Dateisystem ab! Ich hab nur einen USB Stick zum testen:
Fat(plain): 600 kB/s
Ext(plain): 150 kB/s
Ext(crypt): auch 150 kB/s :-]
Der Stick ist so lahm, da fällt die Geschwindigkeit nicht ins Gewicht :-]

Aber bei mir sollen eh nur kleine Dateien drauf
 
der patch von cryptsetup!

bevor du das compilierst brauchst da aber noch die ein oder andere library..

grüsse, christian
 

Anhänge

  • cryptsetup.diff.txt
    1.7 KB · Aufrufe: 10

Neueste Beiträge

Statistik des Forums

Themen
244,878
Beiträge
2,220,031
Mitglieder
371,603
Neuestes Mitglied
broekar
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.