Verschlüsselung
Collection field: EncryptionProfessional Edition+Einführung
Private Geschäftsdaten wie die Telefonnummer, E-Mail-Adresse oder Kartennummer von Kunden können verschlüsselt und anschließend als Chiffretext in der Datenbank gespeichert werden.

Verschlüsselungsmethode
Das Plugin generiert automatisch einen 应用密钥. Dieser Schlüssel wird im Verzeichnis /storage/apps/main/encryption-field-keys gespeichert.
Der Dateiname von 应用密钥 ist die Schlüssel-ID, und die Dateierweiterung lautet .key. Ändern Sie den Dateinamen nicht willkürlich.
Bewahren Sie die Datei 应用密钥 sorgfältig auf. Wenn die Datei 应用密钥 verloren geht, können verschlüsselte Daten nicht entschlüsselt werden.
Wenn das Plugin in einer Unteranwendung aktiviert ist, lautet das Standardverzeichnis für die Schlüssel /storage/apps/${子应用name}/encryption-field-keys.
Funktionsweise
Es wird Umschlagverschlüsselung verwendet.

Ablauf der Schlüsselerstellung
- Beim ersten Erstellen eines verschlüsselten Felds generiert das System automatisch einen 32-Bit-
应用密钥und speichert ihn Base64-kodiert im Standardspeicherverzeichnis. - Bei jedem Erstellen eines neuen verschlüsselten Felds wird für dieses Feld ein zufälliger 32-Bit-
字段密钥generiert. Dieser wird dann mit应用密钥und einem zufällig generierten 16-Bit-字段加密向量verschlüsselt (VerschlüsselungsalgorithmusAES) und anschließend im Feldoptionsder Tabellefieldsgespeichert.
Ablauf der Feldverschlüsselung
- Bei jedem Schreiben von Daten in ein verschlüsseltes Feld werden zunächst der verschlüsselte
字段密钥und字段加密向量aus dem Feldoptionsder Tabellefieldsabgerufen. - Der verschlüsselte
字段密钥wird mit应用密钥und字段加密向量entschlüsselt. Anschließend werden die Daten mit字段密钥und einem zufällig generierten 16-Bit-数据加密向量verschlüsselt (VerschlüsselungsalgorithmusAES). - Die Daten werden mit dem entschlüsselten
字段密钥signiert (Hash-AlgorithmusHMAC-SHA256) und Base64-kodiert in eine Zeichenfolge umgewandelt (der erzeugte数据签名wird später für die Datensuche verwendet). - Der 16-Bit-
数据加密向量und der verschlüsselte数据密文werden binär zusammengefügt und Base64-kodiert in eine Zeichenfolge umgewandelt. - Die Base64-kodierte Zeichenfolge von
数据签名und die Base64-kodierte Zeichenfolge des zusammengefügten数据密文werden durch '.' getrennt zusammengefügt. - Die endgültig zusammengesetzte Zeichenfolge wird in der Datenbank gespeichert.
Umgebungsvariablen
Wenn Sie 应用密钥 festlegen möchten, können Sie die Umgebungsvariable ENCRYPTION_FIELD_KEY_PATH verwenden. Das Plugin lädt die Datei unter diesem Pfad als 应用密钥.
Anforderungen an das Dateiformat von 应用密钥:
- Die Dateierweiterung muss
.keysein. - Der Dateiname wird als Schlüssel-ID verwendet; für die Eindeutigkeit wird die Verwendung einer UUID empfohlen.
- Der Dateiinhalt besteht aus Base64-kodierten 32-Bit-Binärdaten.
Feldkonfiguration

Auswirkungen der Verschlüsselung auf Filter
Verschlüsselte Felder unterstützen nur: gleich, ungleich, vorhanden und nicht vorhanden.

Methode zur Datenfilterung:
- Den
字段密钥des verschlüsselten Felds abrufen und den字段密钥mit应用密钥entschlüsseln. - Den vom Benutzer eingegebenen Suchtext mit
字段密钥signieren (Hash-AlgorithmusHMAC-SHA256). - Den signierten Suchtext mit dem Trennzeichen
.zusammenfügen und in der Datenbank eine Präfixsuche im verschlüsselten Feld durchführen.
Schlüsselrotation
Vergewissern Sie sich vor der Verwendung des Schlüsselrotationsbefehls nocobase key-rotation, dass die Anwendung dieses Plugin geladen hat.
Wenn die Anwendung in eine neue Umgebung migriert wurde und nicht weiterhin denselben Schlüssel wie in der alten Umgebung verwenden soll, können Sie den Befehl nocobase key-rotation verwenden, um 应用密钥 zu ersetzen.
Für die Ausführung des Schlüsselrotationsbefehls muss der Anwendungsschlüssel der alten Umgebung angegeben werden. Nach der Ausführung wird ein neuer Anwendungsschlüssel generiert und der alte Schlüssel ersetzt. Der neue Anwendungsschlüssel wird Base64-kodiert im Standardspeicherverzeichnis gespeichert.
Wenn 应用密钥 einer Unteranwendung ersetzt wird, muss der Parameter --app-name hinzugefügt werden, um name der Unteranwendung anzugeben.

