Справочная информация:
- C # 4.6.1
- Azure SDK 9.3.3
- Аутентификация через сервис-принципал / сертификат
Блоковые двоичные объекты шифруются во время загрузки с помощью BlobEncryptionPolicy
(техника конверта), инстанцированного симметричным ключом и без распознавателя ключа.
Загрузить:
var simKey = new SymmetricKey(kid);
var policy = new BlobEncryptionPolicy(new SymmetricKey(kid), null);
var options = new BlobRequestOptions() { EncryptionPolicy = policy };
var blob = cloudBlobContainer.GetBlockBlobReference("blob");
using (var stream = File.OpenRead(@"C:\tmp\blob.txt"))
{
blob.UploadFromStream(stream, stream.Length, null, options, null);
}
Скачать:
var policy = new BlobEncryptionPolicy(new SymmetricKey(theSameKid), null);
var options = new BlobRequestOptions() { EncryptionPolicy = policy };
var blob = cloudBlobContainer.GetBlockBlobReference("blob");
using (var np = File.Open(@"C:\tmp\blob-2.txt", FileMode.Create))
{
blob.DownloadToStream(np, null, options, null);
}
Работает нормально, когда выгрузка и загрузка выполняются с одного и того же сервера.
При загрузке с другого сервера выдается ошибка: Data is not authentic
CallStack:
Microsoft.Azure.KeyVault.Cryptography.Algorithms.AesKw.AesKwDecryptor.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)
Microsoft.Azure.KeyVault.SymmetricKey.UnwrapKeyAsync(Byte[] encryptedKey, String algorithm, CancellationToken token)
Есть ли какая-то особенность сервера, вовлеченная в вычисление ключа или процесс шифрования (т. Е. encryptiondata
метаданные большого двоичного объекта), который препятствует расшифровке большого двоичного объекта на другом сервере?