Verschlüsselung

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen

GnuPG

Das grafische Frontend zu GnuPG ist KGpg

KGpg wird als Miniprogramm gestartet. Zugriff über den Systemabschnitt der Kontrolleiste.
  • Konsolenbefehl zum Öffnen der Schlüsselverwaltung
kgpg -k
  • Revocation Zertifikat erzeugen
gpg --output revoke.asc --gen-revoke <key-id>

Die Datei revoke.asc sicher aufbewahren und das Zertifikat ausdrucken. Falls man die Passphrase vergessen hat oder der private Schlüssel nicht mehr sicher ist, dann folgende Kommandos ausführen:

keyserver=keys.gnupg.net
gpg --import revoke.asc
gpg --keyserver $keyserver --send-keys <key-id>

Info: https://www.hackdiary.com/2004/01/18/revoking-a-gpg-key/

Verschlüsseltes Loop-Device

Anlegen eines Containers für ein verschlüsseltes Dateisystem

  • Mit YAST
Partitionierer / Crypt-Dateien / Crypt-Datei hinzufügen
  • oder ...

Im folgenden Beispiel wird als Pfadname für den Container /sda2/container angenommen.

container_file="/sda2/container"
dd if=/dev/urandom of=container_file bs=1M count=250 
cryptsetup -c aes-xts-plain64 -s 512 -h sha512 -y luksFormat container_file
cryptsetup luksOpen container_file container

Verschlüsselten Container mounten

Folgendes Skript hängt den Container in das Dateisystem ein.

Das Skript verarbeitet den Pfadnamen des Containers als Eingabeparameter. Containerdatei und Mountpoint müssen den gleichen Dateinamen haben.
/usr/local/bin/mount_container.sh
param=$1
if [ $# -eq 0 ] ; then
cat << 'delimiter'
---------------------------------------------------------
Beschreibung
Usage 1:
   mount_container.sh <Pfad zum Containerfile>
Usage 2:
   Aufruf ohne Parameter: Pfad zum Containerfile wird abgefragt.
---------------------------------------------------------
delimiter
     read -p "Pfad zum Containerfile eingeben: " param
fi
if [ -z $param ] ; then exit ; fi
SAFE=$param
CRYPTNAME=$(basename $param)
MNT=/mnt/$CRYPTNAME
FS=ext2
LOOPDEV=`/sbin/losetup -f`
if [ "`/sbin/losetup -a | grep -c "$SAFE"`" != "0" ]; then
       echo "bereits eingehängt"
       exit
fi
/sbin/losetup $LOOPDEV $SAFE
/sbin/cryptsetup luksOpen $LOOPDEV $CRYPTNAME
/bin/mount -t $FS /dev/mapper/$CRYPTNAME $MNT

Nach Ausführen dieses Skriptes als root sollte im Dateimanager Dolphin in der Sidebar nun der Container auftauchen.

Aushängen des verschlüsselten Containers

Das Skript zum Aushängen des Containers:

/usr/local/bin/umount_container.sh
param=$1
if [ $# -eq 0 ] ; then
cat << 'delimiter'
---------------------------------------------------------
Beschreibung
Usage 1:
   umount_container.sh <Pfad zum Containerfile>
Usage 2:
   Aufruf ohne Parameter: Pfad zum Containerfile wird abgefragt.
---------------------------------------------------------
delimiter
     read -p "Pfad zum Containerfile eingeben: " param
fi
if [ -z $param ] ; then exit ; fi
SAFE=$param
CRYPTNAME=container
MNT=/mnt/$(basename $param)
LOOPDEV=`losetup -a | grep "$SAFE" | sed "s/: .*//"`
if [ "`losetup -a | grep -c "$SAFE"`" != "1" ]; then
       echo "nicht eingehängt"
       exit
fi
/bin/umount $MNT
/sbin/cryptsetup luksClose $CRYPTNAME
/sbin/losetup -d $LOOPDEV

Siehe auch https://wiki.ubuntuusers.de/LUKS/Containerdatei/

Integration in den KDE-Desktop

Mit kmenuedit zwei Starterdateien erzeugen, eine zum Einhängen und eine zum Aushängen des Containers.

Unter "Erweitert" muss man anklicken:
Im Terminal starten
Mit anderer Benutzerkennung starten: root

Hier der Inhalt der zwei Desktop-Dateien, die man natürlich auch manuell erzeugen kann:

~/.local/share/applications/Mount Container.desktop
[Desktop Entry]
Comment=Verschlüsselten Container einhängen
Exec=/usr/local/bin/mount_container.sh /sda2/container
GenericName=Container einhängen
Icon=kipi-dropbox
Name=Mount Container
NoDisplay=false
Path[$e]=
StartupNotify=false
Terminal=1
TerminalOptions=
Type=Application
X-KDE-SubstituteUID=true
X-KDE-Username=root[/code]
~/.local/share/applications/Umount Container.desktop
[Desktop Entry]
Comment=Verschlüsselten Container aushängen
Exec=/usr/local/bin/umount_container.sh /sda2/container
GenericName=Container aushängen
Icon=preferences-web-browser-adblock
Name=Umount Container
NoDisplay=false
Path[$e]=
StartupNotify=true
Terminal=1
TerminalOptions=
Type=Application
X-KDE-SubstituteUID=true
X-KDE-Username=root/code]

Konfiguration

/etc/crypttab