Pour assurer la sécurité de vos données et répondre aux exigences relatives à l’envoi de fichiers de preuve à Genetec Clearance™, vous devez chiffrer vos données conformément aux principes de chiffrement des appareils en périphérie.
La norme de chiffrement pour Clearance est le chiffrement côté client Azure Blob Storage. Pour obtenir des conseils sur les bibliothèques de chiffrement, consultez la conception de référence.
Pour chiffrer un élément de preuve :
Récupérez la clé publique de l'utilisateur sur l'API Key Store Service.
Générez une nouvelle clé AES256 symétrique à usage unique pour le fichier (AES_CBC_256) en local.
Chiffrez le fichier à l'aide de la clé AES256 générée avec un remplissage PKCS7 (et transférez-le en même temps).
Protégez la clé AES256 avec RSA-OAEP.
Envoyez la clé chiffrée aux métadonnées de stockage d'objets blob Azure nommées
x-ms-meta-encryptiondata. Voir le SDK azure.Une fois les métadonnées de chiffrement envoyées, terminez la ressource/preuve.
Exemple de métadonnées (JSON et C#)
{
"ContentEncryptionIV":"3wpX+/BH7lI3GzNm9PAdng==",
"EncryptionAgent":{
"EncryptionAlgorithm":"AES_CBC_256",
"Protocol":"1.0"
},
"EncryptionMode":"FullBlob",
"WrappedContentKey":{
"Algorithm":"RSA-OAEP",
"EncryptedKey":"Bhm18f+hikcK5EMqMS28SgYRqIqCnuZMpEyJME6vsOo+2AUtvh3wWjYdNBP29PQ4MH2l5yHAJmKu0AIa/A3bmOm+tFIXfXkwQug9r7fCy8HOUK6Jhf2T/SqwGcjqOfbALkSQ74X6n1X+6C32cVhccfz7vFtVYKbGhKn81xTQqn2f15C417OKIsuZLdWIcTOqEE+OW4ouZT0900I4M6rYk28GmV3Bht59bVI3hIk5DuI3obFeYR0YpKZGkONxPyNsCnz5xmmth/SVl8/SRlmtFHf43H2zyeFmol3qdLYEngJaW1cmeCj6ArBIVYH6eEbFPg2Cu+bvmxL5qHtinjLVHA==",
"KeyId":"https://dems-prod-eus-keyvault.vault.azure.net/keys/genetec-key/7b2cad59333347b989beccad2144d4ff"
}
}[ExcludeFromCodeCoverage]
internal class EncryptionDataModel
{
public byte[] ContentEncryptionIV { get; set; }
public EncryptionDataAgentModel EncryptionAgent { get; set; }
public string EncryptionMode { get; set; } = "FullBlob";
public object KeyWrappingMetadata { get; set; }
public EncryptionDataContentKeyModel WrappedContentKey { get; set; }
}
[ExcludeFromCodeCoverage]
internal class EncryptionDataContentKeyModel
{
public string Algorithm { get; set; } = "RSA-OAEP";
public byte[] EncryptedKey { get; set; }
public string KeyId { get; set; }
}
[ExcludeFromCodeCoverage]
internal class EncryptionDataAgentModel
{
public string EncryptionAlgorithm { get; set; } = "AES_CBC_256";
public string Protocol { get; set; } = "1.0";
}