Chiffrement
Collection field: EncryptionProfessional Edition+Présentation
Certaines données métier privées, telles que les numéros de téléphone des clients, les adresses e-mail et les numéros de carte, peuvent être chiffrées. Une fois chiffrées, elles sont stockées sous forme chiffrée dans la base de données.

Méthode de chiffrement
Le plugin génère automatiquement un应用密钥, qui est enregistré dans le répertoire /storage/apps/main/encryption-field-keys.
Le nom du fichier 应用密钥 correspond à l’ID de la clé, et son extension est .key. Ne modifiez pas arbitrairement le nom du fichier.
Conservez soigneusement le fichier 应用密钥. Si vous perdez le fichier 应用密钥, les données chiffrées ne pourront pas être déchiffrées.
/storage/apps/${子应用name}/encryption-field-keysFonctionnement
Le chiffrement par enveloppe est utilisé.

Processus de création des clés
- Lors de la première création d’un champ chiffré, le système génère automatiquement un
应用密钥de 32 bits et l’enregistre sous forme encodée en base64 dans le répertoire de stockage par défaut. - À chaque création d’un nouveau champ chiffré, un
字段密钥aléatoire de 32 bits est généré pour ce champ. Il est ensuite chiffré à l’aide de应用密钥et d’un字段加密向量aléatoire de 16 bits (algorithme de chiffrementAES), puis enregistré dans le champoptionsde la tablefields.
Processus de chiffrement des champs
- Chaque fois que des données sont écrites dans un champ chiffré, le
字段密钥et le字段加密向量chiffrés sont d’abord récupérés depuis le champ options de la table fields. - Utilisez
应用密钥et字段加密向量pour déchiffrer le字段密钥chiffré, puis chiffrez les données à l’aide de字段密钥et d’un数据加密向量aléatoire de 16 bits (algorithme de chiffrementAES). - Signez les données avec le
字段密钥déchiffré (algorithme de hachageHMAC-SHA256), puis convertissez la signature en chaîne encodée en base64 (le数据签名généré sera utilisé ultérieurement pour la recherche de données). - Concaténez en binaire le
数据加密向量de 16 bits et le数据密文chiffré, puis convertissez le résultat en chaîne encodée en base64. - Concaténez la chaîne encodée en base64
数据签名et la chaîne encodée en base64数据密文obtenue après concaténation, en les séparant par « . ». - Enregistrez la chaîne finale concaténée dans la base de données.
Variables d’environnement
Pour spécifier 应用密钥, utilisez la variable d’environnement ENCRYPTION_FIELD_KEY_PATH. Le plugin chargera le fichier situé à ce chemin en tant que 应用密钥.
应用密钥Exigences relatives au format du fichier :
- L’extension du fichier doit obligatoirement être
.key. - Le nom du fichier sera utilisé comme ID de clé. Il est recommandé d’utiliser un UUID afin de garantir son unicité.
- Le contenu du fichier doit être constitué de données binaires de 32 bits encodées en base64.
Configuration des champs

Impact du chiffrement sur le filtrage
Les champs chiffrés prennent uniquement en charge les opérateurs suivants : égal à, différent de, existe et n’existe pas.

Méthode de filtrage des données :
- Récupérez le
字段密钥du champ chiffré, puis déchiffrez le字段密钥à l’aide de应用密钥. - Utilisez 字段密钥 pour signer le texte de recherche saisi par l’utilisateur (algorithme de hachage HMAC-SHA256).
- Concaténez le texte de recherche signé avec le séparateur ., puis effectuez une recherche par correspondance de préfixe sur le champ chiffré dans la base de données.
Rotation des clés
Avant d’utiliser la commande de rotation des clés nocobase key-rotation, vérifiez que l’application a déjà chargé ce plugin.
Après la migration de l’application vers un nouvel environnement, si vous ne souhaitez plus utiliser la m ême clé que dans l’ancien environnement, vous pouvez utiliser la commande nocobase key-rotation pour remplacer 应用密钥.
L’exécution de la commande de rotation des clés nécessite de spécifier la clé d’application de l’ancien environnement. Une fois la commande exécutée, une nouvelle clé d’application est générée et remplace l’ancienne. La nouvelle clé d’application est enregistrée sous forme encodée en base64 dans le répertoire de stockage par défaut.
Si vous remplacez la sous-application 应用密钥, vous devez ajouter le paramètre --app-name afin de spécifier name

