Delen via


Versleuteling aan clientzijde voor wachtrijen

De Azure Queue Storage-clientbibliotheken voor .NET en Python ondersteunen het versleutelen van gegevens in clienttoepassingen voordat ze worden geüpload naar Azure Storage en het ontsleutelen van gegevens tijdens het downloaden naar de client. De clientbibliotheken ondersteunen ook integratie met Azure Key Vault voor sleutelbeheer van opslagaccounts.

Belangrijk

Azure Storage ondersteunt versleuteling aan de servicezijde en aan de clientzijde. Voor de meeste scenario's raadt Microsoft aan om versleutelingsfuncties aan de servicezijde te gebruiken voor het gebruiksgemak bij het beveiligen van uw gegevens. Zie Azure Storage-versleuteling voor data-at-rest voor meer informatie over versleuteling aan de servicezijde.

Over versleuteling aan de clientzijde

De Azure Queue Storage-clientbibliotheek maakt gebruik van AES om gebruikersgegevens te versleutelen. Er zijn twee versies van versleuteling aan de clientzijde beschikbaar in de clientbibliotheek:

Waarschuwing

Het gebruik van versie 1 van versleuteling aan de clientzijde wordt niet meer aanbevolen vanwege een beveiligingsprobleem in de implementatie van de CBC-modus van de clientbibliotheek. Zie Azure Storage update client-side encryption in SDK to address security vulnerability (Versleuteling aan de clientzijde bijwerken in SDK om beveiligingsproblemen op te lossen) voor meer informatie over dit beveiligingsprobleem. Als u momenteel versie 1 gebruikt, raden we u aan uw toepassing bij te werken om versie 2 te gebruiken en uw gegevens te migreren. Zie de volgende sectie , Het beveiligingsprobleem in uw toepassingen beperken, voor verdere hulp.

Het beveiligingsprobleem in uw toepassingen beperken

Vanwege een beveiligingsprobleem dat is gedetecteerd in de implementatie van de CBC-modus van de Queue Storage-clientbibliotheek, raadt Microsoft u aan om onmiddellijk een of meer van de volgende acties uit te voeren:

De volgende tabel bevat een overzicht van de stappen die u moet uitvoeren als u ervoor kiest om uw toepassingen te migreren naar versleuteling aan de clientzijde v2:

Versleutelingsstatus aan clientzijde Aanbevolen acties
De toepassing maakt gebruik van versleuteling aan de clientzijde, een versie van de clientbibliotheek die alleen versleuteling aan de clientzijde v1 ondersteunt. Werk uw toepassing bij om een versie van de clientbibliotheek te gebruiken die ondersteuning biedt voor versleuteling aan de clientzijde v2. Zie SDK-ondersteuningsmatrix voor versleuteling aan clientzijde voor een lijst met ondersteunde versies.

Werk uw code bij om versleuteling aan de clientzijde v2 te gebruiken.
De toepassing gebruikt versleuteling aan de clientzijde met een versie van de clientbibliotheek die versleuteling aan de clientzijde v2 ondersteunt. Werk uw code bij om versleuteling aan de clientzijde v2 te gebruiken.

Daarnaast raadt Microsoft u aan de volgende stappen uit te voeren om uw gegevens te beveiligen:

  • Configureer uw opslagaccounts voor het gebruik van privé-eindpunten om al het verkeer tussen uw virtuele netwerk (VNet) en uw opslagaccount via een privékoppeling te beveiligen. Zie Privé-eindpunten gebruiken voor Azure Storage voor meer informatie.
  • Beperk de netwerktoegang tot alleen specifieke netwerken.

SDK-ondersteuningsmatrix voor versleuteling aan clientzijde

In de volgende tabel ziet u welke versies van de clientbibliotheken voor .NET en Python welke versies van versleuteling aan de clientzijde ondersteunen:

.NET Python
Versleuteling aan clientzijde v2 en v1 Versies 12.11.0 en hoger Versies 12.4.0 en hoger
Alleen versleuteling aan clientzijde v1 Versies 12.10.0 en eerder Versies 12.3.0 en eerder

Als uw toepassing versleuteling aan de clientzijde gebruikt met een eerdere versie van de .NET- of Python-clientbibliotheek, moet u eerst uw code upgraden naar een versie die versleuteling aan clientzijde v2 ondersteunt. Vervolgens moet u uw gegevens ontsleutelen en opnieuw versleutelen met versleuteling aan de clientzijde v2. Indien nodig kunt u een versie van de clientbibliotheek gebruiken die versleuteling aan de clientzijde v2 naast een eerdere versie van de clientbibliotheek ondersteunt terwijl u uw code migreert.

Hoe versleuteling aan clientzijde werkt

De Azure Queue Storage-clientbibliotheken gebruiken envelopversleuteling om uw gegevens aan de clientzijde te versleutelen en te ontsleutelen. Envelopversleuteling versleutelt een sleutel met een of meer extra sleutels.

De Queue Storage-clientbibliotheken zijn afhankelijk van Azure Key Vault om de sleutels te beveiligen die worden gebruikt voor versleuteling aan de clientzijde. Zie Wat is Azure Key Vault? voor meer informatie over Azure Key Vault.

Versleuteling en ontsleuteling via de enveloptechniek

Versleuteling via de enveloptechniek werkt als volgt:

  1. De Azure Storage-clientbibliotheek genereert een inhoudsversleutelingssleutel (CEK), een symmetrische sleutel voor eenmalig gebruik.

  2. Gebruikersgegevens worden versleuteld met behulp van de CEK.

  3. De CEK wordt vervolgens verpakt (versleuteld) met behulp van de versleutelingssleutel voor sleutel (KEK). De KEK wordt geïdentificeerd door een sleutel-id en kan een asymmetrisch sleutelpaar of een symmetrische sleutel zijn. U kunt de KEK lokaal beheren of opslaan in een Azure-Key Vault.

    De Azure Storage-clientbibliotheek zelf heeft nooit toegang tot KEK. De bibliotheek roept het sleutelterugloop-algoritme aan dat wordt geleverd door Key Vault. Gebruikers kunnen desgewenst aangepaste providers gebruiken voor sleutelterugloop/uitpakken.

  4. De versleutelde gegevens worden vervolgens geüpload naar Azure Queue Storage. De verpakte sleutel wordt samen met enkele extra versleutelingsmetagegevens geïnterpoleerd met de versleutelde gegevens.

Ontsleuteling via de enveloptechniek werkt als volgt:

  1. In de Azure Storage-clientbibliotheek wordt ervan uitgegaan dat de gebruiker de KEK lokaal of in een Azure-Key Vault beheert. De gebruiker hoeft niet te weten welke specifieke sleutel is gebruikt voor versleuteling. In plaats daarvan kan een sleutel-resolver worden ingesteld en gebruikt die verschillende sleutel-id's naar sleutels omzet.
  2. De clientbibliotheek downloadt de versleutelde gegevens samen met het versleutelingsmateriaal dat is opgeslagen in Azure Storage.
  3. De verpakte CEK) wordt vervolgens uitgepakt (ontsleuteld) met behulp van de KEK. De clientbibliotheek heeft tijdens dit proces geen toegang tot de KEK, maar roept alleen het algoritme uitpakken van de Azure Key Vault of een ander sleutelarchief aan.
  4. De clientbibliotheek gebruikt de CEK om de versleutelde gebruikersgegevens te ontsleutelen.

Berichtversleuteling/-ontsleuteling

Aangezien wachtrijberichten van elke indeling kunnen zijn, definieert de clientbibliotheek een aangepaste indeling die de initialisatievector (IV) en de versleutelde inhoudsversleutelingssleutel (CEK) in de berichttekst bevat.

Tijdens de versleuteling genereert de clientbibliotheek een willekeurige IV van 16 bytes, samen met een willekeurige CEK van 32 bytes en voert de envelopversleuteling van de berichttekst in de wachtrij uit met behulp van deze informatie. De verpakte CEK en enkele aanvullende versleutelingsmetagegevens worden vervolgens toegevoegd aan het versleutelde wachtrijbericht. Dit gewijzigde bericht (hieronder weergegeven) wordt opgeslagen in de service.

<MessageText>{"EncryptedMessageContents":"6kOu8Rq1C3+M1QO4alKLmWthWXSmHV3mEfxBAgP9QGTU++MKn2uPq3t2UjF1DO6w","EncryptionData":{…}}</MessageText>

Tijdens het ontsleutelen wordt de verpakte sleutel uit het wachtrijbericht geëxtraheerd en uitgepakt. De IV wordt ook uit het wachtrijbericht geëxtraheerd en samen met de uitgepakte sleutel gebruikt om de gegevens van het wachtrijbericht te ontsleutelen. Versleutelingsmetagegevens zijn klein (minder dan 500 bytes), dus hoewel deze wel meetellen voor de limiet van 64 KB voor een wachtrijbericht, moet de impact beheersbaar zijn. Het versleutelde bericht is base64-gecodeerd, zoals wordt weergegeven in het bovenstaande fragment, waarmee ook de grootte van het bericht dat wordt verzonden, wordt uitgebreid.

Vanwege de korte levensduur van berichten in de wachtrij, is het niet nodig om wachtrijberichten te ontsleutelen en opnieuw te ontsleutelen na het bijwerken naar versleuteling aan de clientzijde v2. Minder veilige berichten worden geroteerd tijdens normaal wachtrijverbruik.

Versleuteling en prestaties aan clientzijde

Houd er rekening mee dat het versleutelen van uw opslaggegevens leidt tot extra overhead voor prestaties. Wanneer u versleuteling aan de clientzijde in uw toepassing gebruikt, moet de clientbibliotheek de CEK en IV veilig genereren, de inhoud zelf versleutelen, communiceren met het gekozen sleutelarchief voor sleutel-omhulling en aanvullende metagegevens opmaken en uploaden. Deze overhead is afhankelijk van de hoeveelheid gegevens die wordt versleuteld. We raden klanten aan om hun toepassingen altijd te testen op prestaties tijdens de ontwikkeling.

Volgende stappen