Springe zum Hauptinhalt
Universitätsrechenzentrum
Geheimnisse verteilen

ToSCA Crypt

Sinn und Zweck

In ToSCA-Repositories werden Dateien zur Verteilung auf die Systeme einer Funktionsklasse bereitgestellt. ToSCA Crypt stellt ein einheitliches Verfahren zur Verfügung, das es ermöglicht, Dateien, die Geheimnisse wie z.B. Datenbankpasswörter, SSL Private Keys etc. enthalten, in ToSCA Repositories verschlüsselt zu speichern. Die Geheimnisse können trotzdem automatisch auf den Systemen einer Funktionsklasse verteilt werden, ohne dass sie manuell entschlüsselt werden müssen.

Funktionsweise kurz und knapp

  • Datei /etc/very_secret soll verschlüsselt in ToSCA-Repository gespeichert werden
  • initial
    • tosca-encrypt.sh /etc/very_secret erstellt Datei /etc/very_secret.toscacrypt
    • cp  /etc/very_secret.toscacrypt /afs/tu-chemnitz.de/ToSCA/ROOTS/LINUX/<FU_CLASS>/etc/ nur beim ersten mal nötig
  • Später: /etc/very_secret ändern
    • tosca-encrypt.sh /etc/very_secret aktualisiert /etc/very_secret.toscacrypt und kopiert sie automatisch nach /etc/very_secret.toscacrypt /afs/tu-chemnitz.de/ToSCA/ROOTS/LINUX/<FU_CLASS>/etc/

Ausführliche Informationen

Voraussetzung – persönlicher ToSCA-Schlüssel

Jeder Funktionsverantwortliche benötigt ein persönliches Schlüsselpaar für die Ver- und Entschlüsselung des Funktionsklassenschlüssels sowie der Dateien mit den Geheimnissen. Das persönliche Schlüsselpaar wird wie folgt generiert und mit einer zu merkenden Passphrase geschützt:

(Der persönliche ToSCA-Schlüssel kann auf jedem vom URZ administrierten System erzeugt werden.)

/usr/local/bin/tosca-mkpersonal-key.sh

Das persönliche Schlüsselpaar wird unter $HOME/.tosca-keys/ und der öffentliche Schlüssel zusätzlich unter /afs/tu-chemnitz.de/ToSCA/DATA/CRYPT/<login>/ abgelegt.

Was tun: Passphrase für persönlichen ToSCA-Schlüssel vergessen

Sie müssen einen neuen persönlichen ToSCA-Schlüssel erstellen. Wiederholen Sie dazu das Kommando:

/usr/local/bin/tosca-mkpersonal-key.sh

Anschließend müssen alle Funktionsklassenschlüssel, für die Sie Funktionsverantwortlicher sind, neu verschlüsselt werden. Das kann ein weiterer Funktionsverantwortlicher für die Funktionsklasse erledigen (mit gültigen ToSCA-Schlüssel) oder ein Plattformverantwortlicher.

/usr/local/bin/tosca-reencrypt-fuclass-key.sh  <FU-KLASSE>

Der Funktionsklassenschlüssel

Der Funktionsklassenschlüssel dient dem Ver- und Entschlüsseln aller schützenswerten Informationen aller Hosts einer Funktionsklasse. Vor dem Anlegen sollten die Funktionsverantwortlichen der Funktionsklasse ihren persönlicher ToSCA-Schlüssel bereitgestellt haben.
(Der Funktionsklassenschlüssel kann auf jedem vom URZ administrierten System erzeugt werden.)

/usr/local/bin/tosca-mkfuclass-key.sh <FU_CLASS>

Der Funktionsklassenschlüssel wird durch dieses Skript im AFS abgelegt. Soll er gleich auf dem Zielsystem verwendet werden, muss zunächst ein sys_update ausgeführt werden.

sys_update

Der Funktionsklassenschlüssel liegt nur auf den Hosts unverschlüsselt vor. Nach Installation oder Neuinstallation eines Hosts muss der Funktionsklassenschlüssel auf dem System durch einen Funktionsverantwortlichen oder Plattformadmin entsperrt werden.

sudo /usr/local/bin/tosca-unlock-machine.sh [<login>]

(Das eigene login ist bei der Ausführung des Scripts anzugeben, falls der eigene private Schlüssel nicht gefunden wird.)

Ändern sich die Funktionsverantwortlichen einer Funktionsklassen oder hat ein Funktionsverantwortlicher sein persönliches Schlüsselpaar geändert, dann muss der Funktionsklassenschlüssel erneut verschlüsselt werden. Dass können alle Funktionsverantwortlichen der Funktionsklasse oder Plattformadministratoren unter Benutzung des persönlichen Schlüsselpaars (Eingabe Passphrase erforderlich) realisieren.

/usr/local/bin/tosca-reencrypt-fuclass-key.sh FU_KLASSE
  

Datei verschlüsseln

Voraussetzung für die Verschlüsselung von Files ist ein entsperrter Funktionsklassenschlüssel auf dem Host. Um ein File mit Geheimnissen für die Ablage in einem ToSCA-Repository zu verschlüsseln:

sudo /usr/local/bin/tosca-encrypt.sh /etc/geheim.txt
cp /etc/geheim.txt.toscacrypt /afs/tu-chemnitz.de/ToSCA/ROOTS/SL_7/<FU_CLASS>/etc/

Datei entschlüsseln

Voraussetzung dafür ist wieder ein entsperrter Funktionsklassenschlüssel auf dem Host. Zum Entschlüsseln einzelner Files oder aller mit der Extension .toscacrypt hinterlegter Files im ToSCA-Repository:

sudo /usr/local/bin/tosca-decrypt.sh /etc/geheim.txt.toscacrypt
# oder
sudo /usr/local/bin/tosca-decrypt-all-files-from-repo.sh

Verhalten während der Systemwartung

Aktuell werden beim Wartungslauf (sys_update oder /etc/cron.cfengine/cfengine.hourly) alle mit der Extension .toscacrypt gefundenen Dateien aus dem Repo entschlüsselt. Veränderte entschlüsselte Dateien werden aktualisiert. Dabei wird eine Sicherung mit der Extension .tcsaved angelegt.

Neu angelegte entschlüsselte Dateien erben zunächst die Eigentümerschaft und Berechtigung der verschlüsselten Datei. Im ToSCA eingestellte Berechtigungen werden erst nach dem 2. Wartungslauf aktiv. Gegebenenfalls müssen hier die Berechtigungen und die Eigentümerschaft im ToSCA auch für die verschlüsselte Datei (Extension .toscacrypt) gesetzt werden.

Verschiedenes

Wie prüfe ich, das der Inhalt der verschlüsselten Files mit dem der unverschlüsslten identisch ist?

Mit dem Aufruf von tosca-diff werden Unterschiede in verschlüsselten Dateien sichtbar. Eine ausgegebene Kommandozeile weist zum erneuten Verschlüsseln der betroffenen Dateien an.

sudo /usr/local/bin/tosca-diff-decrypt.sh /etc/geheim.txt.toscacrypt

Wie prüfe ich, mit welchen Schlüsseln eine .toscacrypt-Datei verschlüsselt ist?

tosca-cryptinfo.sh file.toscacrypt

Wie hängen die ganzen Schlüssel miteinander zusammen?

Diagramm, das den Zusammenhang zwischen persönlichem ToSCA-Crypt-Schlüssel und den Funktionsklassenschlüsseln darstellt.