festplattenverschlüsselung mit cgd

bsdagent

Auch im #bsdforen.de Chat
hi

ich habe in google, im forum und im chat versucht eine antwort für folgende frage zu finden:
kann ich mit cgd meine einzige festplatte, worauf sich netbsd befindet verschlüsseln?:confused:

ich habe den kernel cgd tauglich konfiguriert (pseudo-device cgd 4 # cryptographic disk driver), compiliert und aktiviert. ab da weis ich nicht weiter.:grumble:

wie kann ich das cgd für die aktuelle (einzige) fesplatte nutzen, damit alles verschlüsselt wird, inklusiv betriebsystem.:confused:

ich habe zwar ein artikel gefunden::belehren:

http://wiki.bsd-crew.de/index.php/V...latten_mit_dem_CryptoGraphic_Disk_Driver_(cgd)

doch bezieht sich der artikel auf eine festplatte, die keine daten hat.:eek:

kann mir bitte jemand weiter helfen?;'(

gruss
euer bsdagent
 
Zuletzt bearbeitet:
ich kenn das verschluesselungstool leider nicht.

allerdings glaube ich dass du probleme kriegst wenn du den kernel in einer verschluesselten partition ablegst.
der sollte somit als plaintext vorliegen.
den ganzen anderen rest darfst du natuerlich nach herzenslust verschluesseln.

bietet der netbsd-kernel die option an die root-partion zu crypten?
schafft er es selbststaendig nach dem key zu fragen?
oder braucht er dazu ein proggie im userspace?
 
Und nein, es ist immernoch nicht möglich eine benutzte Festplatte zu verschlüsseln und dabei die Daten darauf zu erhalten.
 
hi

erstmals danke für die antworten. :)

also soweit ich die antwort von elessar verstanden habe, ist es also nicht möglich, auf festplatten mit bestehenden daten zu verschlüsseln und auch netbsd selbst wäre nicht möglich zu verschlüsseln, da ja das betriebsystem schon auf der festplatte existiert. mal nebenbei gefragt: wird es jemals mit cgd möglich sein?

so zu meiner eigentlichen frage, wenn ich jetzt nach einer netbsd installation, eine weitere neue partition für "/home" erstellen, könnte ich ja mit cgd den userdaten teil verschlüsseln?
wenn das geht, wäre sowas auch mit einiegen teilen des betriebsystem, bsp. "/etc", "/usr" etc. möglich, indem ich die daten wärend der partitionserstellung für "/etc", "/usr" etc. auf einem usb stick halte?

zum schluss noch ne sicherheitsfrage, wenn das mit "/home", "/etc", "/usr" etc. funktioniert, wie sicher ist es den, wenn mir jemand bsp. die festplatte klaut (resp. ganzer laptop). kann der über den rest der festplatte, die ja offen sind auf die verschlüsselungsteile der festplatte zugreifen? indem er bsp. die festplatte in einen anderen computer einbaut und mounted oder andere techniken anwenden?

besten dank
bsdagent
 
Auf verschlüsselte Daten kann man nur zugreifen wenn man den Schlüssel hat. Klingt logisch, is auch so. Das is ja der ganze Sinn dahinter.

Und ob man mit cgd / verschlüsseln kann steht sicher in der Doku. Aber auch dann muss man das vor der Installation machen, nicht im laufenden Betrieb.
 
cgd braucht cgdconfig, um den schluessel in den kernel zu kriegen. / auf cgd ist also nicht moeglich. was ginge: ein kernel mit integrierter ramdisk, die dann / enthaelt, cgd konfiguriert und /usr und /var etc. nachmountet.

fuer den kernel selbst braeuchte man dann aber immer noch eine kleine unverschluesselte boot-partition. man kann das mit der ramdisk also gleich lassen und / unverschluesselt halten. ausserhalb von /usr und /var sollten eigentlich sowieso keine wichtigen daten liegen, die geheim sein muessten.
 
hi

erstmals danke für die antworten. :)

also soweit ich die antwort von elessar verstanden habe, ist es also nicht möglich, auf festplatten mit bestehenden daten zu verschlüsseln und auch netbsd selbst wäre nicht möglich zu verschlüsseln, da ja das betriebsystem schon auf der festplatte existiert. mal nebenbei gefragt: wird es jemals mit cgd möglich sein?

Man kann nicht die gesamte Festplatte verschlüsseln, da das System ja erstmal bis zu einer gewissen Stufe gebootet werden muss, bevor CGD greifen kann. Home, Swap und Temp lassen sich problemlos verschlüsseln, nicht-kritische Dateisysteme wie /var oder /usr/X11R6 sicherlich auch, aber /etc /bin /sbin etc. pp nicht, da ja die Binaries verfügbar sein müssen.

Ohne einen Bootloader, der ein System soweit hochbringt, das man CGD entschlüsseln kann, wird es niemals möglich sein, / zu verschlüsseln.

so zu meiner eigentlichen frage, wenn ich jetzt nach einer netbsd installation, eine weitere neue partition für "/home" erstellen, könnte ich ja mit cgd den userdaten teil verschlüsseln?

Ja, dafür ist CGD gedacht.

wenn das geht, wäre sowas auch mit einiegen teilen des betriebsystem, bsp. "/etc", "/usr" etc. möglich, indem ich die daten wärend der partitionserstellung für "/etc", "/usr" etc. auf einem usb stick halte?

Kommt auf den Teil an, Erläuterung siehe oben. Wobei hier fraglich ist warum du /usr verschlüsseln willst, normalerweise liegt da nichts wichtiges, nur System-Binaries.

zum schluss noch ne sicherheitsfrage, wenn das mit "/home", "/etc", "/usr" etc. funktioniert, wie sicher ist es den, wenn mir jemand bsp. die festplatte klaut (resp. ganzer laptop). kann der über den rest der festplatte, die ja offen sind auf die verschlüsselungsteile der festplatte zugreifen? indem er bsp. die festplatte in einen anderen computer einbaut und mounted oder andere techniken anwenden?

Wie o.g. habe ich /home, /tmp und swap mit cgd verschlüsselt. Solange keine wichtigen Daten außerhalb von /home landen, ist das recht sicher. Einzig die Kofigurationsdatei für cgd unter /etc/cgd/ ist gefährdet, da in ihr der SALT enthalten ist. Der Salt wird verwandt um Wörterbuch-Attacken gegen das Passwort zu erschweren. Mit dem Salt werden derartige Angriffe vereinfacht, man kann die Datei aber auch auf einem externen Datenträger unterbringen, bspw. einem USB-Stick. Bewahrt man den getrennt vom Laptop auf, ist es nahezu unmöglich die Daten zu cracken. Der größte Schwach- und damit Angriffspunkt ist das Passwort. Wenn du da ein einfaches nimmst, nutzt CGD nichts. Außerdem muss natürlich die Datensicherung verschlüsselt werden.

Da man normalerweise CGD auf einer leeren Partition einrichtet, sollte man die verschlüsselte Partition einmal mit Zufallsdaten (cat /dev/urandom oder MP3s oder Videos) befüllen, um Wasserzeichen-Attacken zu erschweren. Alte, unverschlüsselte Daten müssen zwingend mit destroy oder wipe sicher gelöscht werden.

Weiterhin kann man CGD mit CFS kombinieren. Da ein eingebundenes CGD nicht mehr schützt, da es ja transparent ist, bietet sich CFS an. Es ist in pkgsrc enthalten und funktioniert so ähnlich wie NFS, d.h. man hat ein verschlüsseltes Verzeichnis liegen und einen Dæmon, der auf lo0 lauscht. Gibt man das Passwort an, kann man auf die verschlüsselten Dateien zugreifen, wie über den lokalen Dæmon transparent entschlüsselt werden. Auf meinem Laptop habe ich CFS für meine Mailbox, GnuPG und einige Daten-Verzeichnisse in Gebrauch und mounte es nur ein, wenn ich in sicheren Umgebungen bin. In Unsicheren, bspw. zu einem Vortrag oder so, lasse ich CFS aus, so das selbst ein Einbrecher mit Root-zugriff die Daten erst knacken müsste.


Wenn du wirklich paranoid bist, kannst du ein System mit CGD für Swap, Temp und Home aufsetzen und darin mit XEN eine weiteres System emulieren. Da XEN ein Image verlangt, kannst du dies in Home ablegen und somit mit CGD transparent verschlüsseln. Zusätzlich ginge noch CFS, dann ist es doppelt gesichert. In dem so verschlüsselten Image ist dann ein NetBSD installiert, mit dem du arbeiten kannst. Diese Variante ist aber echt pervers und gr
ottenlahm, also nicht wirklich empfehlenswert.

weitere Infos in:
Einführung in kryptographische Methoden: http://cryptomancer.ath.cx/~stefan/21c3/21c3-kryptograhie-paper.pdf

Methoden zur Datensicherung -- Strategien und Techniken für NetBSD -- http://www.net-tex.de/backup.pdf, behandelt Datensicherung und CGD/CFS

Verschlüsselte Dateisysteme für NetBSD: http://www.net-tex.de/netbsd/advocacy/druck/guug-uptimes-cgd_cfs.pdf
 
hi

erstmals danke für die antworten, vorallem die von kaishakunin, die informationen und links wahren sehr wertvoll.

so ich habe mal mit den informationen versucht mit cgd die partitionen zu verschlüsseln. vorerst zu meiner vorkonfiguration:
ich habe nach der netbsd installation nur "/" als partition.
weder swap noch anderes wurde partitioniert.

nach einem boot, habe ich folgendes für cgd konfiguriert:

kernel runtergeladen und für cgd konfiguriert und compiliert.

erstellen einer swap partition:

# disklabel -i sd0

partition> P
partition> b
Filesystem type [?] [unused]: swap
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: 6
Partition size ('$' for all remaning) [0c, 0s, 0M]: 5000M
partition> W
Label disk [n]? y
partition> Q

reinigung der partition:

# cgdconfig -s cgd0 /dev/sd0b aes-cbc 128 < /dev/urandom
# dd if=/dev/zero of=/dev/rcgd0d bs=32k

genau nach der letzen anweisung "dd if=/dev/zero of=/dev/rcgd0d bs=32k" kam der fehler:
cgd0: error 30
dd: /dev/rcgd0d: Read-Only file system
1+0 records in
0+0 records out
0 bytes transferred in 0.002 secs (0 bytes/sec)

was habe ich da falsch gemacht, so wie ich das sehe ist rcgd0d schreibgeschützt?

besten dank
bsdagent
 
Code:
# disklabel -i sd0

   partition> P
   partition> b
   Filesystem type [?] [unused]: swap
   Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: 6
   Partition size ('$' for all remaning) [0c, 0s, 0M]: 5000M
   partition> W
   Label disk [n]? y
   partition> Q

# cgdconfig -s cgd0 /dev/sd0b aes-cbc 128 < /dev/urandom
# dd if=/dev/zero of=/dev/rcgd0d bs=32k

   cgd0: error 30
   [B]dd: /dev/rcgd0d: Read-Only file system[/B]
   1+0 records in
   0+0 records out
   0 bytes transferred in 0.002 secs (0 bytes/sec)

Beantwortet das deine Frage oder hast du das schon gesehen und willst wissen warum?
 
hi

danke für die antwort, doch habe ich das problem gelöst :) , konnte nicht genug schnell posten, da der bsdforen.de server nicht erreichbar war ;'( .

warum es beim ersten fall nicht funktionierte! ich machte einen sehr blöden fehler, habe für / die ganze platte reserviert, verständlicherweise konnte die cgd partition nicht beschrieben werden.

BITTE GANZ UNTEN WEITER LESEN, HABE NOCH NE SCHLUSS FRAGE. :belehren:

hier meine konfigurationslösung :cool: (verschlüsselung von /var, /home und /usr) für die, die das gleiche problem haben, bitte beachten, dass die lösung für eine spezielle arbeit geschrieben wurde und deshalb in der SIE form ist:

Code:
installation der kernel software mit root rechten:

# ftp [url]ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-VERSION/source/sets/[/url]

ersetzen sie VERSION durch die echte betriebsystem version.

ftp> get syssrc.tgz
ftp> bye

# gzip -dc syssrc.tgz | (cd / ; tar xvf -)
# cd /usr/src/sys/arch

löschen sie alle ordner, die als name nicht die echte hardware architektur tragen.

konfiguration der kernel software mit root rechten:

# cd /usr/src/sys/arch/ARCHITECTURE/conf

ersetzen sie ARCHITECTURE durch die echte hardware architektur.

# cp GENERIC MYKERNEL
# echo "pseudo-device cgd 4 "\#" cryptographic disk devices" >> MYKERNEL
# config MYKERNEL

compilierung der kernel software mit root rechten:

# cd /usr/src/sys/arch/ARCHITECTURE/compile/MYKERNEL

ersetzen sie ARCHITECTURE durch die echte hardware architektur.

# make depend
# make

installation der kernel software mit root rechten:

# cd /usr/src/sys/arch/ARCHITECTURE/compile/MYKERNEL

ersetzen sie ARCHITECTURE durch die echte hardware architektur.

# mv /netbsd /netbsd.old
# mv netbsd /
# reboot

sicherung der betriebsystem daten mit root rechten:

# cd /
# dump -0f - /var |\
> ssh -o 'EscapeChar none' USER@HOST "cat > avar.fs"

ersetzen sie USER durch einen echten benutzername der entfernten hardware und
HOST durch einen echte konnektivität name der entfernten hardware.

# dump -0f - /home |\
> ssh -o 'EscapeChar none' USER@HOST "cat > ahome.fs"

ersetzen sie USER durch einen echten benutzername der entfernten hardware und
HOST durch einen echte konnektivität name der entfernten hardware.

# dump -0f - /usr |\
> ssh -o 'EscapeChar none' USER@HOST "cat > ausr.fs"

ersetzen sie USER durch einen echten benutzername der entfernten hardware und
HOST durch einen echte konnektivität name der entfernten hardware.

erstellen einer betriebsystem partition mit root rechten:

# disklabel -i -I /dev/DEVICE

ersetzen sie DEVICE durch das echte hardware gerät.

partition> e
Filesystem type [?] [...]: ccd
Start offset ('x' to start after partition 'x') [...]: a
Partition size ('$' for all remaning) [...]: $
partition> W
Label disk [n]? y
partition> Q

reinigung der betriebsystem partition mit root rechten:

# cgdconfig -s cgd0 /dev/DEVICEe ALGORITHM BIT < /dev/urandom

ersetzen sie DEVICE durch das echte hardware gerät,
ALGORITHM mit dem gewünschten algorithmus (empfehlung: aes-cbc) und
BIT mit der gewünschten anzahl bits (empfehlung: 128).

# dd if=/dev/zero of=/dev/rcgd0d bs=32k
# cgdconfig -u cgd0

konfiguration der cgd software mit root rechten:

# cgdconfig -g -V disklabel -o /etc/cgd/DEVICEe ALGORITHM BIT

ersetzen sie DEVICE durch das echte hardware gerät,
ALGORITHM mit dem gewünschten algorithmus (empfehlung: aes-cbc) und
BIT mit der gewünschten anzahl bits (empfehlung: 256).

# cgdconfig -V re-enter cgd0 /dev/DEVICEe

ersetzen sie DEVICE durch das echte hardware gerät.

erstellen verschlüsselter partitionen mit root rechten:

# disklabel -i -I /dev/cgd0
partition> a
Filesystem type [?] [...]: unused
Start offset ('x' to start after partition 'x') [...]: 0
Partition size ('$' for all remaning) [...]: 0
partition> b
Filesystem type [?] [...]: swap
Start offset ('x' to start after partition 'x') [...]: 0
Partition size ('$' for all remaning) [...]: SIZEM

ersetzen sie SIZE durch die gewünschte verschlüsselte paritionsgrösse für swap.

partition> e
Filesystem type [?] [...]: 4.2BSD
Start offset ('x' to start after partition 'x') [...]: b
Partition size ('$' for all remaning) [...]: SIZEM

ersetzen sie SIZE durch die gewünschte verschlüsselte paritionsgrösse für mount /var.

partition> f
Filesystem type [?] [...]: 4.2BSD
Start offset ('x' to start after partition 'x') [...]: e
Partition size ('$' for all remaning) [...]: SIZEM

ersetzen sie SIZE durch die gewünschte verschlüsselte paritionsgrösse für mount /home.

partition> g
Filesystem type [?] [...]: 4.2BSD
Start offset ('x' to start after partition 'x') [...]: f
Partition size ('$' for all remaning) [...]: $

partition> W
Label disk [n]? y
partition> Q

erstellen verschlüsselter dateisysteme mit root rechten:

# newfs /dev/rcgd0e
# newfs /dev/rcgd0f
# newfs /dev/rcgd0g

wiederherstellung der betriebsystem daten mit root rechten:

# mount /dev/cgd0e /var
# mount /dev/cgd0f /home
# mount /dev/cgd0g /usr
# cd /var
# /rescue/scp -S /rescue/ssh [email]USER@HOST:avar.fs[/email] avar.fs

ersetzen sie USER durch einen echten benutzername der entfernten hardware und
HOST durch einen echte konnektivität name der entfernten hardware.

# cat avar.fs | restore -rf -
# rm avar.fs ; rm rest*
# cd /home
# /rescue/scp -S /rescue/ssh [email]USER@HOST:ahome.fs[/email] ahome.fs

ersetzen sie USER durch einen echten benutzername der entfernten hardware und
HOST durch einen echte konnektivität name der entfernten hardware.

# cat ahome.fs | restore -rf -
# rm ahome.fs ; rm rest*
# cd /usr
# /rescue/scp -S /rescue/ssh [email]USER@HOST:ausr.fs[/email] ausr.fs

ersetzen sie USER durch einen echten benutzername der entfernten hardware und
HOST durch einen echte konnektivität name der entfernten hardware.

# cat ausr.fs | restore -rf -
# rm ausr.fs ; rm rest*

konfigurieren der verschlüsselten partitionen mit root rechten:

# echo "/dev/cgd0b none swap sw 0 0" >> /dev/fstab
# echo "/dev/cgd0b /tmp mfs rw,-s=SIZEm" >> /dev/fstab

ersetzen sie SIZE durch die verschlüsselte paritionsgrösse der swap verschlüsselten partition für mount /tmp.

# echo "/dev/cgd0e /var ffs rw,softdep 1 2" >> /dev/fstab
# echo "/dev/cgd0f /home ffs rw,softdep 1 2" >> /dev/fstab
# echo "/dev/cgd0g /usr ffs rw,softdep 1 2" >> /dev/fstab
# echo "cgd0 /dev/DEVICEe" > /etc/cgd/cgd.conf

ersetzen sie DEVICE durch das echte hardware gerät.

# echo "cgd=YES" >> /etc/rc.conf
# cd /
# umount /var
# umount /home
# umount /usr
# cgdconfig -u cgd0
# reboot

MEINE SCHLUSS FRAGE:
habe gelesen, dass der swap mit einem random schlüssel konfiguriert werden kann, was ist sicherer, via passphrase wie oben in der konfiguration oder via random schlüssel?

ausserdem habe ich gelesen, dass ich mit vnconfig eine sogenannte zwei faktor verschlüsselung erreiche, gilt das nur für dvd (wie im netbsd handbuch www.netbsd.org und http://www.bsdsupport.org/toc.php?paper=cgd beschrieben) oder geht das auch im anschluss mit der obigen konigurationsmethode?

besten dank
bsdagent
:) :) :)
 
Zuletzt bearbeitet:
Sicherer? Kommt drauf an was du erreichen willst.

Denk mal drüber nach was du erreichen willst und was die verschiedenen Optionen bewirken. Wenn du nicht verstehst was du machst isses eh egal, dann wirds auch ned klappen.
 
swap mit random verschluesseln.

bei jedem neuen systemstart sind die infos da drinne eh fuer die tonne. vielleicht erfordert das bei jedem boot ein mkswap auf die entsprechende partition, aber ich glaube dass das noch ertraeglich ist.
 
swap mit random verschluesseln.

bei jedem neuen systemstart sind die infos da drinne eh fuer die tonne. vielleicht erfordert das bei jedem boot ein mkswap auf die entsprechende partition, aber ich glaube dass das noch ertraeglich ist.

man: no entry for mkswap in the manual.

das war dann wohl eher linux..
 
Zurück
Oben