Расшифровка блочного блоба не выполняется на другом сервере - PullRequest
0 голосов
/ 16 апреля 2019

Справочная информация:

  • 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 метаданные большого двоичного объекта), который препятствует расшифровке большого двоичного объекта на другом сервере?

...