Serverseitigen Verschlüsselung - Private-Key für jeden Benutzer? - PW und lokale Sicherung des Private-Key?

Guten Morgen!

Ich befasse mich gerade mit der serverseitigen Verschlüsselung.
Ich kann jederzeit alle Dateien löschen, meine aktuelle Installation ist eine Testumgebung, also nicht “produktiv”. Nextcloud selber sollte erhalten bleiben.
Und nein, es geht hier nicht um E2E, die läuft sehr gut, und ja, ich will die serverseitigen Verschlüsselung!

Ich dachte, nach der Aktivierung im Backend bekäme ich irgendwann eine Nachricht über den Private-Key, dem jeder Benutzer dann ein PW verpassen und lokal sichern könnte. Den Master-Key habe ich ja verstanden und will den ja nicht einrichten - jeder Benutzer seinen eigenen Private-Key!

Aber leider nichts.
Es wäre gut, wenn ich für die ersten Schritte einen guten Einstieg bekäme. Dokumentationen lesen ist zwar wichtig, aber es artet dann immer wieder aufs Probieren aus.
Erfahrungen von Benutzern sind viel wertvoller! Oder eine wirklich gute Doku.

(1) Wo ist der Private-Key für jeden Benutzer? Und wie sichere (PW?) ich den vor unbefugtem Zugriff durch den Server-Admin?
Momentan sieht es so aus für eine Datei z.B.:
/home/mein/data/mein/files/mein_Verz/meine_Datei
/home/mein/data/mein/files_encryption/keys/files/mein_Verz/meine_Datei/OC_DEFAULT_MODULE/
mit den beiden Dateien

  • fileKey
  • master_22412x69y.shareKey

Und das für jede Datei. Wo ist der EINE Private-Key des Benutzers?

(2) Warum bekomme ich keine Info bezüglich PW und lokale Sicherung?

Mit
php8.0 occ encryption:status
erhalte ich
encryption:status

  • enabled: true
  • defaultModule: OC_DEFAULT_MODULE

Infos liefere ich natürlich gerne nach…

THX!

Nachtrag:
es sind alle über sftp getesteten Dateien auch wirklich verschlüsselt, wie es aussieht:
HBEGIN:oc_encryption_module:OC_DEFAULT_MODULE:cipher:AES-256-CTR:signed:true:HEND---------------…

Der Benutzer merkt nichts davon, transparent, ist das das Geheimnis?
Der Benutzer soll sich nicht mit der Verschlüsselung herumschlagen?
Aber ich hätte als Betreiber schon gerne die Info über die Private-Keys der Benutzer.

Hallo @rheadi

Die Frage ist schlussendlich vor was für Bedrohungen du dich genau schützen willst. Davon hängt nämlich die Art der Verschlüsselung ab, die du verwenden solltest. Wenn du physischen Zugriff auf den Server hast und es dir nur darum geht, die Daten im Falle eines Diebstahles der Disks oder des Servers zu schützen, kannst du die Nextcloud Verschlüsselung auch ganz weglassen und einfach die Disks auf Betriebssystemebene mit LUKS verschlüsseln. Ich würde das ehrlich gesagt bevorzugen, gegenüber dem Gebastel mit irgendwelchen PHP Libarys auf der Applikationsebene. Aber das bin vielleicht nur ich… :wink:

Anders sieht es aus, wenn du eine Zero Knowlage Strategie fahren willst auf dem Server. Dann müssen die Daten schon auf dem Client verschlüsslt werden. Das bringt aber wieder andere Einschränkungen… Siehe unten und im verlinkten Artikel.

Storage encryption

Threat model

Server Side Encryption protects data on storage as long as that storage is not on the same server as Nextcloud itself.

Per-user keys only offer additional protection over a server-wide key in the case of physical theft of the Nextcloud server and storage or a security breach of the sever provided the user(s) do NOT log in for the duration of the breach. A full, undetected Nextcloud server breach by skilled attackers or malicious server administrator still risks exposing user data.

Client side end-to-end encryption

Threat model

End-to-end Encryption in Nextcloud is designed to protect user data against any attack scenario between user devices, even in case of a undetected, long-term security breach or against untrusted server administrators.

It does not protect the data on user devices themselves and theft of an unencrypted, unlocked user device would enable an attacker to get access to private keys.

https://nextcloud.com/blog/encryption-in-nextcloud/

1 Like

bb77
Das habe ich alles gelesen.
Nun doch noch eine (3). Frage:
warum wird die serverseitige Verschlüsselung nicht abgeschafft, wenn die NIX oder nur sehr selten etwas bringt? Nein, im Gegenteil werden Nextcloud-Betreiber in eine vermeintliche Sicherheit verwickelt mit auch noch zwielichtigen Warnhinweisen beim Aktivieren der serverseitigen Verschlüsselung - sehr salopp ausgedrückt: “machs, aber es bringt eh nichts!”

Aber zu meiner eigentlichen Frage:

und nebenbei:

Die serverseitige Verschlüsselung kann Sinn machen, wenn du keinen physischen Zugriff auf den Server hast. Wenn du z.B. irgendwelche Cloudinstanzen oder einen Root Server bei einem Hoster nutzt.

EDIT:

Aussage so nur bedingt korrekt… Erklärung hier: Serverseitigen Verschlüsselung - Private-Key für jeden Benutzer? - PW und lokale Sicherung des Private-Key? - #9 by bb77

Ich habe einen günstigen shared Webspace und der Server-Admin kann bei mir rumfummeln wie er möchte.
Deswegen betreibe ich ja auch noch E2E-Verschl.

Ja aber dann verstehe ich die Frage nicht ganz. Wennn deine User bereits E2E nutzen, brauchst dust du die “Serverseitige Verschlüsselung” nicht. Die Daten kommen dann ja bereis verschlüselt auf dem Server an. Imho ist das sogar die bessere und sichere Variante.

und nebenbei:

Es gibt immer wieder Helfer hier, die nicht die Fragen lesen oder verstehen können, sondern einem Ihren Willen aufzwingen wollen.
Wenn einer die Fragen nicht beantworten kann, warum schreibt er dann?

Ja aber willst du sie zusätzlich oder anstelle der E2E Verschlüsselung?

Zusätzlich bringt sie imho nichts, siehe mein vorheriges Post.

Anstelle der E2E-Verschlüsselung, bringt sie die genannten Nachteile im Artikel. Hat aber gegenüber gar keiner Verschlüsselung immer noch den Vorteil, dass der Hoster keinen Zugriff auf die Daten hat. Allerdings nur in der “Per user” Variante.

EDIT:
Fehlerhafte Aussage durchgestrichen. Erklärung siehe im nachfolgenden Post…

Ok ich muss mich teilw. entschuldigen :wink: Es stimmt so nicht ganz, was ich gesagt habe. Der Hoster kann theoretisch bei der serverseitigen Verschlüsselung zumindest zur Laufzeit, in bestimmten Situationen, auf die Daten zugreifen…

Ich kann dir technisch nicht bis ins Detail erklären wie alles funktioniert, (und dafür entschuldige ich mich nicht!) ändert aber nichts daran wie die Dinge prinzipbedingt funktionieren:

Grundsätzlich gilt folgendes, völlig unabhängig von Nextcloud:

Generell ist Serverside Encryption und auch Disk Encryption, dazu da, um die Daten im Falle eines Diebstahls der physischen HW zu schützen. Das nützt dir bei einem fremdgehosteteten Server wenig. Es nützt allenfalls dem Betreiber der Server, um seine Kunden im Falle eines Diebstahls zu schützen. Macht also vorallem dann Sinn, wenn du den Server vollständig unter Kontrolle hast. Hast du keine vollständige Kontrolle über den Server, bietet dir nur Clientseitige Verschlüsselung vollständigen Schutz.

Das ist so, weil bei serverseitiger Verschlüsselung eben auch die Entschlüsselung auf dem Server passiert, und so hat ein Admin prinzipbedingt auch immer irgendwie die Möglichkeit, zumindest zur Laufzeit und/oder im Falle einer Sicherheitslücke, auf die Daten zuzugreifen.

Bei Clientseitiger Verschlüsselung werden die Daten auf dem Clientgerät ver- und entschlüsselt, sprich der Server sieht zu keinem Zeitpunkt irgendwelche unverschlüsselten Daten. Nennt sich auch Zero Knowledge. Und nochmal: Das ist die einzige Variante, die dich bzw. deine Daten 100% schützt auf einem Server, den du nicht selbst unter Kontrolle hast.

Du fragst: Warum man dann die Serverseitige Verschlüsselung in Nextcloud nicht abschafft?

Weil es vielleicht auch bei einem Server, den man selbst unter Kontrolle hat, Gründe geben kann keine Diskverschlüsselung oder Clientseitige Verschlüsselung zu verwenden und man aber trotzdem die Daten der Nextcloud im Falle eines Diebstahls verschlüsselt wissen will.

BTW: wenn der ursprüngliche Plan war server side encryption zusammen mit end to end encryption zu verwenden, sei auf diese Limitierung hingewiesen: E2EE is currently not compatible to be used together with server-side encryption. GitHub - nextcloud/end_to_end_encryption: Server API to support End-to-End Encryption

szaimen
prima :+1:, puuuh thx, hätte sonst fast auf 1.7.1 aktualisiert.

Endlich habe ich was gefunden:
https://www.wm-loose.de/news/14-news/86-nextcloud_verschluesselung_deaktivieren.html

  • Generating user keys

Gut erklärt, Thread erledigt!

Also was verwendest du dann jetzt? Server side encryption mit user keys?

Ich habe jedenfalls nie ausgeführt.
encryption:enable-master-key Enable the master key. Only available for fresh installations with no existing encrypted data! There is also no way to disable it again.

Also nehme ich an laut Beschreibung in der PDF:
Generating user keys
When the system administrator enables the module, keys have to be generated for users.

  1. Nextcloud generates a private/public keypair for every user upon their first login. The RSA key is 4096 bits and is generated using “openssl_pkey_new”
  2. A private key password is generated by running the users’ login password through a PBKDF2 key derivation with 100,000 iterations, a salt which is specific for the Nextcloud instance and 32 (AES-256) or 16 (AES-128) byte key size (this can be configured). This password is used to encrypt the private key of the user. When using an instance key (default), this password is stored in config.php and used to generate the key.
  3. The keys are stored in “data/$username/files_encryption/OC_DEFAULT_MODULE” as “$username.publicKey” and “$username.privateKey”.
  4. Two more key pairs are generated for the system, one for public link shares and optionally one for recov-ery. These are stored in the encryption folder (data/files_encryption).Note: System administrators can enable the recovery key feature which allows them to recover data in case a user forgot their password. However, users have a choice in enabling this feature for their account. This results in effectively having a server key, increasing performance and adding the features like group handling and SSO support that are associated with a server key.

Bei mir steht im Pfad (geschwärzt sind nur Nummern):
grafik

Also verwendest du jetzt Server side encryption mit user keys?

Ja, anders möchte ich es auch nicht.
Jeder Benutzer seinen Private-Key mit seinem Login geschützt.

szaimen
sorry, aber nicht ganz leichtes Thema.
Ich habe aktiviert:
“Key type: master key
This is the default encryption mode in Nextcloud. …”

Sieht man auch an meinem Bild oben: master…

https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/encryption_details.html

"Key type: master key

This is the default encryption mode in Nextcloud. With master key encryption enabled there is one central key that is used to secure the files handled by Nextcloud. The master key is protected by a password that can be generated by the server administrator. The advantage of the master key encryption is that the encryption is transparent to the users but has the disadvantage that the server administrator is able to decrypt user files without knowing any user password."