Intelligente Lösungen
in neuer Dimension

Ubuntu: Externes Laufwerk verschlüsseln

Damit unsere Daten nicht versehentlich in fremde Hände geraten können, verschlüssel wir alle externen Datenträger. Hier beschreibe ich, wie wir dabei vorgehen.

Diese Anleitung wurde erstellt mit Ubuntu-20.04 und Ventoy-1.0.36

Ausgangslage

Ich habe einen frischen externen Datenträger besorgt, im aktuellen Fall eine SanDisk SSD. Auf dem Karton steht: “SanDisk Extreme Portable SSD 500 GB”.

Der Datenträger wird zunächst inventarisiert:

  • Inventarnummer vergeben
  • Seriennummer und andere Details ermitteln
  • Alles in die Inventarliste aufnehmen

Seriennummer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
uli:~$ sudo lshw -c disk
...
*-disk
       Beschreibung: SCSI Disk
       Produkt: Extreme SSD
       Hersteller: SanDisk
       Physische ID: 0.0.0
       Bus-Informationen: scsi@8:0.0.0
       Logischer Name: /dev/sdc
       Version: 1012
       Seriennummer: 5c9597f3c824                     
       Größe: 465GiB (500GB)
       Fähigkeiten: partitioned partitioned:dos
       Konfiguration: ansiversion=6 logicalsectorsize=512 sectorsize=4096 signature=00497595

Partitionierung

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uli:~$ lsblk
... 
sdc                                             8:32   0 465,8G  0 disk  
└─sdc1                                          8:33   0 465,8G  0 part  /media/uli/Extreme SSD

uli:~$ sudo fdisk /dev/sdc
...
Befehl (m für Hilfe): p
Festplatte /dev/sdc: 465,78 GiB, 500107837440 Bytes, 976773120 Sektoren
Festplattenmodell: Extreme SSD     
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 4096 Bytes
E/A-Größe (minimal/optimal): 4096 Bytes / 1048576 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x00497595

Gerät      Boot Anfang      Ende  Sektoren  Größe Kn Typ
/dev/sdc1         2048 976773119 976771072 465,8G  7 HPFS/NTFS/exFAT

Befehl (m für Hilfe): q

Laufwerke

Starten mit Windows-Taste – “lauf” – Laufwerke (oder Kommandozeile gnome-disks):

gnome-disks

Man erkennt:

  • eine Partition
  • exFAT

Formatieren mit Ventoy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
uli:$ sudo ./Ventoy2Disk.sh -i -r 450000 /dev/sdc

**********************************************
      Ventoy: 1.0.36  x86_64
      longpanda admin@ventoy.net
      https://www.ventoy.net
**********************************************

Disk : /dev/sdc
Modell: SanDisk Extreme SSD (scsi)
Size : 465 GB
Style: MBR

You will reserve 450000 MB disk space 

Attention:
You will install Ventoy to /dev/sdc.
All the data on the disk /dev/sdc will be lost!!!

Continue? (y/n) y

Double-check. Continue? (y/n) y

Create partitions on /dev/sdc by parted in MBR style ...
Done
mkfs on disk partitions ...
create efi fat fs /dev/sdc2 ...
mkfs.fat 4.1 (2017-01-24)
success
mkexfatfs 1.3.0
Creating... done.
Flushing... done.
File system created successfully.
writing data to disk ...
sync data ...
esp partition processing ...

Install Ventoy to /dev/sdc successfully finished.

Danach ist die Platte so formatiert:

  • /dev/sdc1 – 28 GB – exFAT
  • /dev/sdc2 – 34 MB – EFI
  • Freier Platz – 472 GB

Crypto-Partition anlegen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
uli:~ $ sudo fdisk /dev/sdc
...
Befehl (m für Hilfe): n
Partitionstyp
   p   Primär (2 primär, 0 erweitert, 2 frei)
   e   Erweitert (Container für logische Partitionen)
Wählen (Vorgabe p): p
Partitionsnummer (3,4, Vorgabe 3): 3
Erster Sektor (55173120-976773119, Vorgabe 55173120): 
Letzter Sektor, +/-Sektoren oder +/-Größe{K,M,G,T,P} (55173120-976773119, Vorgabe 976773119): 

Eine neue Partition 3 des Typs „Linux“ und der Größe 439,5 GiB wurde erstellt.

Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert.
ioctl() wird aufgerufen, um die Partitionstabelle neu einzulesen.
Festplatten werden synchronisiert.

Crypto-Partition initialisieren

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uli:~ $ sudo cryptsetup --cipher aes-xts-plain64 --key-size 256 --hash sha256 --iter-time=10000 luksFormat /dev/sdc3

WARNING!
========
Hiermit werden die Daten auf »/dev/sdc3« unwiderruflich überschrieben.

Are you sure? (Type uppercase yes): YES
Geben Sie die Passphrase für »/dev/sdc3« ein: (mein-kennwort)
Passphrase bestätigen: (mein-kennwort)

uli:~ $ sudo cryptsetup open /dev/sdc3 sdc3_crypt
Geben Sie die Passphrase für »/dev/sdc3« ein: (mein-kennwort)

uli:~ $ sudo mkfs.exfat -n (intentarnummer) /dev/mapper/sdc3_crypt
mkexfatfs 1.3.0
Creating... done.
Flushing... done.
File system created successfully.

Kurztest

  1. Laufwerk trennen – Kabel ziehen
  2. Laufwerk wieder anschließen – Kabel einstecken
  3. Popup-Fenster erscheint: Kennwort eingeben! (mein-kennwort) –> dann dauert es grob 10 Sekunden!
  4. Sichten: Was wurde alles eingebunden?
    • Ventoy
    • (inventarnummer)

Prüfsummen erstellen

Wir haben auf dem Medium zwei Plattenbereiche, die unverschlüsselt sind. Wir wollen relativ sicher sein, dass uns da kein Virus oder ähnliches untergeschoben wird. Deshalb erzeuge ich unmittelbar nach dem Initialisieren des externen Mediums Prüfsummen im verschlüsselten Plattenbereich:

1
2
3
4
5
6
7
8
9
10
11
uli:$ cd /media/uli/(inventarnummer)
uli:$ mkdir -p checksums/2021-02-28
uli:$ ls -a ../Ventoy
.  ..
# Keine Dateien in Ventoy
uli:$ #(cd ../Ventoy; find . -type f|sort|xargs sha256sum) >checksums/2021-02-28/ventoy.sha256
uli:$ ./checksums/create.sh ../Ventoy >checksums/2021-02-28/ventoy.sha256
uli:$ sudo mount /dev/sdc2 /mnt
uli:$ #(cd /mnt; find . -type f|sort|xargs sha256sum) >checksums/2021-02-28/efi.sha256
uli:$ ./checksums/create.sh /mnt >checksums/2021-02-28/efi.sha256
uli:$ sudo umount /mnt

Prüfsummen verifizieren

1
2
3
4
5
uli:$ cd /media/uli/(inventarnummer)
uli:$ sudo mount /dev/sdc2 /mnt
uli:$ ./checksums/compare.sh /mnt checksums/2021-02-28/efi.sha256 || { echo UNTERSCHIEDE VORHANDEN; }
uli:$ ./checksums/compare.sh ../Ventoy checksums/2021-02-28/ventoy.sha256 || { echo UNTERSCHIEDE VORHANDEN; }
uli:$ sudo umount /mnt

Hilfsskripte

checksums/create.sh

1
2
3
4
5
6
#!/bin/sh

cd "$1"
find . -type f\
    |sort\
    |xargs sha256sum

checksums/compare.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
BN="$(basename "$0")"
D="$(dirname "$0")"

TMPDIR="/tmp/${BN}-$(date "+%Y%m%d-%H%M%S")-$(date|md5sum|cut -d" " -f1)-$$~"

cleanUp () {
    rm -rf "${TMPDIR}"
}

trap cleanUp 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15

mkdir "${TMPDIR}"

"${D}/create.sh" "$1" >"${TMPDIR}/current"

diff -u "$2" "${TMPDIR}/current"
RC=$?

cleanUp
exit $RC

Historie

  • 2021-03-06: Erste Version