Ich arbeite im Moment an einem Projekt, wo es u.a. darum geht Dokumente verschlüsselt abzuspeichern. Der einfachste Ansatz wäre es, mit einem globalen, symmetrischen Schlüssel alle Dokumente zu ver- und entschlüsseln. Wenn dann aber mal jemand das Volume und den Schlüssel rausträgt, hat er doch sämtliche Daten. Darum verfolge ich einen anderen Ansatz, nämlich für jeden Benutzer ein RSA-Schlüssselpaar zu erzeugen, womit dessen Dokumente dann ver- und entschlüsselt werden. Die Schlüssel sollen in der Datenbank abgelegt werden, wozu ich eine Base64-Kodierung verwende und sie als Zeichenkette abspeichere. Derzeit ist es nicht vorgesehen, dass der Benutzer seine Schlüssel je zu sehen bekommt, höchstens vielleicht einmal den öffentlichen Schlüssel, den er dann weitergibt (aber dafür habe ich im Moment noch keinen Use-Case), und der ist ja per Definition nicht sensitiv. (Die Datenbank ist nur für Leute zugänglich, die auch Zugriff aufs Backend-System haben und von dort aus ein Port-Forwarding einrichten können, sprich für die Admins.)
Bei privaten Schlüssel überlege ich mir aber schon, ob ich den einfach im Klartext ablegen soll. Denn wenn einer die Datenbank und das Dokument-Volume rausträgt, hat er wiederum Vollzugriff. Darum habe ich mir überlegt, die privaten Schlüssel wiederum zu verschlüsseln, was ich dann symmetrisch, etwa mit einem 256-Bit AES-Schlüssel bewerkstelligen würde. Dieser Schlüssel stünde dann als Umgebungsvariable im Backend-System zur Verfügung. Und die Konfiguration der Umgebungsvariablen ist wiederum in einem verschlüsselten Vault abgelegt, sodass ein Angreifer wirklich Zugriff auf die laufende Umgebung bräuchte.
Nun frage ich mich, ob das Verschlüsseln der privaten Schlüssel in dieser Form sinnvoll, unsicher, unnötig oder gar schädlich ist.
Spezielle Hardware-Module für die Schlüsselablage sind keine Option, zumal in diesem Projekt ein "Platform as Code"-Ansatz verwendet wird (Ansible Playbooks, OpenShift, Kubernetes, Docker... praktisch die volle Bullshit-Bingo-Karte ohne Blockchain und IoT

) Ein weiterer Store neben relationaler Datenbank und Dokumentablage wäre zwar möglich, aber mit massivem Zusatzaufwand (und wohl einer Release-Verspätung) verbunden, allem "Platform as Code"-Ansatz zum Trotz
