Sep 09

Vorgabe:
Eine zusätzliche SSD mit kompletter Verschlüsselung als Laufwerk einbinden, wobei bei Booten keine zusätzliche Passwortabfrage erfolgen soll!

Lösung:

Die SDD ist in meinem Fall /dev/sdd und muß entsprechend eurer Konfiguration angepasst werden.

1. Primäre Partition mit voller Größe erstellen am einfachsten mittels
sudo cfdisk /dev/sdd
-> Erstellen -> volle Größe -> Schreiben -> Ende

2. Nach folgender Anleitung einrichten:

2.1. Anfang der zu verschlüsselnden Partition mit Zufallsbytes überschreiben:
sudo dd if=/dev/urandom bs=1M count=8 of=/dev/sdd1

2.2. Jetzt die Partition verschlüsseln:
sudo cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdd1

2.3. Zuweisung der verschlüsselten Partition /dev/sdd1 dem virtuellem Gerät sdd1_crypt welches dann unter /dev/mapper/sdd1_crypt erreichbar ist:
sudo cryptsetup luksOpen /dev/sdd1 sdd1_crypt

2.4. Die Partition unter dem virtuellen Gerät /dev/mapper/sdd1_crypt kann jetzt mit dem gewünschtem Dateisystem beschrieben werden (in meinem Fall ext4):
sudo mkfs.ext4 /dev/mapper/sdd1_crypt

2.5. Nun kann die Partition gemountet werden:
sudo mount /dev/mapper/sdd1_crypt /data2

3. Da die Festplatte beim Systemstart automatisch und ohne Eingabe des Passwortes ins System eingebunden (gemountet) werden soll, ist dies recht elegant mit einem Keyfile möglich, wobei diese Lösung hier nur Sinn macht, wenn das System komplett ebenfalls verschlüsselt ist und somit das Keyfile im /root des verschlüsselten Systems liegt!
Als Vorlage habe ich hier folgenden Beitrag genommen.

3.1. Ein zufälliges Keyfile erzeugen
sudo dd if=/dev/urandom of=/root/keyfile_0x000c58a6 bs=1024 count=4

3.2. Nur root darf Zugriff auf dieses Keyfile haben!
sudo chmod 0400 /root/keyfile_0x000c58a6

3.3. Das Keyfile für die verschlüsselte Partition /dev/sdd1 hinzufügen
sudo cryptsetup luksAddKey /dev/sdd1 /root/keyfile_0x000c58a6

3.4. In der crypttab einen Eintrag hinzufügen um das Keyfile dem virtuellen Gerät /dev/mapper/sdd1_crypt zuzuordnen
sudo nano /etc/crypttab

sdd1_crypt UUID=53baf3bf-dd24-64fa-bbcf-b144870c09d3 /root/keyfile_0x000c58a6 luks,discard

3.5. In der fstab die Partition zum mounten eintragen
sudo nano /etc/fstab

/dev/mapper/sdd1_crypt /data2 ext4 defaults 0 2

4. Rechner neu starten und die neue SSD steht unter /data2 komplett verschlüsselt zur Verfügung! 🙂

Tagged with:
Jun 02

Heute stand ich mit einem Kollegen vor einem Rätsel. Zur Implementierung eines Webservices, sollte der Anfrage ein MD5-Hash mitgeschickt werden und Perl und Java lieferten ein anderes Ergebnis als PHP?!?

Der Input-String: 0815658620090602%§Hjk25Tlu9v
Die Ergebnisse:
PHP: bfea1d1f6015503226064dca7fa7d6af
Java: 30588faeab54f18136bb8f0e47285984
Perl: 30588faeab54f18136bb8f0e47285984

Auf des Rätsels-Lösung kamen wir durch Zufall von selbst, nachdem Google leider keine Hilfe war, bzw. wir ja auch nicht wußten wonach wir genau suchen sollten.
PHP verwendet den ISO-8859-1(5) Zeichensatz, jedoch Java und Perl den UTF-8 Zeichensatz!
Der Übeltäter ist das §-Zeichen, welches den MD5-Hash in verschiedenen Zeichensätzen zu unterschiedlichen Ergebnissen führt! Sprich, den Input-String in Perl mit

my $cd = Locale::Recode->new
(from => 'UTF-8', to => 'ISO-8859-1');
$cd->recode($Input-String)

umwandeln und schon kommt auch in Perl das gleiche Ergebnis wie in PHP raus!

Also immer den Zeichensatz beachten, mit welchem der MD5-Hash erzeugt wird!

Tagged with:
preload preload preload