Ügyféloldali titkosítás üzenetsorokhoz
A .NET-hez és Pythonhoz készült Azure Queue Storage-ügyfélkódtárak támogatják az ügyfélalkalmazásokon belüli adatok titkosítását az Azure Storage-ba való feltöltés előtt, valamint az adatok visszafejtését az ügyfélre való letöltés során. Az ügyfélkódtárak az Azure Key Vault-nal való integrációt is támogatják a tárfiókkulcsok kezeléséhez.
Fontos
Az Azure Storage mind a szolgáltatásoldali, mind az ügyféloldali titkosítást támogatja. A legtöbb esetben a Microsoft szolgáltatásoldali titkosítási funkciók használatát javasolja az adatok védelmének megkönnyítése érdekében. A szolgáltatásoldali titkosítással kapcsolatos további információkért lásd: Inaktív adatok Azure Storage-titkosítása.
Tudnivalók az ügyféloldali titkosításról
Az Azure Queue Storage ügyfélkódtára az AES-t használja a felhasználói adatok titkosításához. Az ügyféloldali titkosítás két verziója érhető el az ügyfélkódtárban:
- A 2. verzió a Galois/Counter Mode (GCM) módot használja az AES-sel.
- Az 1. verzió titkosítási blokkláncolási (CBC) módot használ az AES-sel.
Figyelmeztetés
Az ügyféloldali titkosítás 1. verziójának használata már nem ajánlott az ügyfélkódtár CBC-mód implementációjában jelentkező biztonsági rés miatt. További információ erről a biztonsági résről: Az Azure Storage az ügyféloldali titkosítás frissítése az SDK-ban a biztonsági rés kezelése érdekében. Ha jelenleg az 1-es verziót használja, javasoljuk, hogy frissítse az alkalmazást a 2- es verzió használatára, és migrálja az adatokat. További útmutatást a következő, Az alkalmazások biztonsági résének elhárítása című szakaszában talál.
Az alkalmazások biztonsági résének elhárítása
A Queue Storage ügyfélkódtár CBC-mód implementációjában észlelt biztonsági rés miatt a Microsoft azt javasolja, hogy azonnal hajtsa végre az alábbi műveletek egyikét:
Fontolja meg a szolgáltatásoldali titkosítási funkciók használatát az ügyféloldali titkosítás helyett. A szolgáltatásoldali titkosítási funkciókkal kapcsolatos további információkért lásd: Inaktív adatok Azure Storage-titkosítása.
Ha ügyféloldali titkosítást kell használnia, akkor migrálja az alkalmazásokat az ügyféloldali titkosítás v1-ről az ügyféloldali titkosítás v2-be.
Az alábbi táblázat összefoglalja azokat a lépéseket, amelyek szükségesek ahhoz, hogy az alkalmazásokat ügyféloldali titkosítási v2-be migrálja:
Ügyféloldali titkosítás állapota | Javasolt műveletek |
---|---|
Az alkalmazás ügyféloldali titkosítást használ az ügyfélkódtár olyan verziója, amely csak az 1. ügyféloldali titkosítást támogatja. | Frissítse az alkalmazást úgy, hogy az ügyféloldali titkosítást 2-es verziójú ügyféloldali titkosítást támogató ügyfélkódtárat használja. A támogatott verziók listáját az ügyféloldali titkosítás SDK-támogatási mátrixában találja. Frissítse a kódot az ügyféloldali titkosítás v2 használatára. |
Az alkalmazás ügyféloldali titkosítást használ az ügyféloldali titkosítást támogató ügyfélkódtár 2-es verziójával. | Frissítse a kódot az ügyféloldali titkosítás v2 használatára. |
Emellett a Microsoft azt javasolja, hogy tegye meg a következő lépéseket az adatok védelmének érdekében:
- Konfigurálja a tárfiókokat úgy, hogy privát végpontok használatával biztosítsa a virtuális hálózat (VNet) és a tárfiók közötti összes forgalmat egy privát kapcsolaton keresztül. További információ: Privát végpontok használata az Azure Storage-hoz.
- Csak adott hálózatokra korlátozza a hálózati hozzáférést.
SDK támogatási mátrix ügyféloldali titkosításhoz
Az alábbi táblázat azt mutatja be, hogy a .NET-hez és a Pythonhoz készült ügyfélkódtárak mely verziói támogatják az ügyféloldali titkosítást:
.NET | Python | |
---|---|---|
Ügyféloldali titkosítás v2 és v1 | 12.11.0-s és újabb verziók | 12.4.0-s és újabb verziók |
Csak ügyféloldali titkosítás v1 | 12.10.0-s és korábbi verziók | 12.3.0-s és korábbi verziók |
Ha az alkalmazás ügyféloldali titkosítást használ a .NET vagy a Python ügyfélkódtár korábbi verziójával, először frissítenie kell a kódot egy olyan verzióra, amely támogatja az ügyféloldali titkosítás v2-t. Ezután vissza kell fejtenie és újra kell titkosítania az adatokat az ügyféloldali titkosítás v2-vel. Szükség esetén használhatja az ügyfélkódtár olyan verzióját, amely támogatja az ügyféloldali titkosítás v2-t az ügyfélkódtár egy korábbi verziójával, miközben migrálja a kódot.
Az ügyféloldali titkosítás működése
Az Azure Queue Storage ügyfélkódtárai borítéktitkosítással titkosítják és visszafejtik az adatokat az ügyféloldalon. A borítéktitkosítás egy vagy több további kulccsal titkosítja a kulcsot.
A Queue Storage ügyfélkódtárai az Azure Key Vault függenek az ügyféloldali titkosításhoz használt kulcsok védelméhez. Az Azure Key Vault kapcsolatos további információkért lásd: Mi az az Azure Key Vault?.
Titkosítás és visszafejtés a boríték technikával
A boríték technikán keresztüli titkosítás a következőképpen működik:
Az Azure Storage-ügyfélkódtár létrehoz egy tartalomtitkosítási kulcsot (CEK), amely egyszeri használatú szimmetrikus kulcs.
A felhasználói adatok titkosítása a CEK használatával történik.
A CEK ezután a kulcstitkosítási kulccsal (KEK) burkolódik (titkosítva). A KEK-et egy kulcsazonosító azonosítja, és lehet aszimmetrikus kulcspár vagy szimmetrikus kulcs. A KEK-et helyileg kezelheti, vagy egy Azure-Key Vault tárolhatja.
Maga az Azure Storage-ügyfélkódtár soha nem fér hozzá a KEK-hez. A kódtár meghívja a Key Vault által biztosított kulcsburkoló algoritmust. A felhasználók dönthetnek úgy, hogy egyéni szolgáltatókat használnak a kulcsburkoláshoz/kicsomagoláshoz, ha szükséges.
A titkosított adatok ezután feltöltődnek az Azure Queue Storage-ba. A burkolt kulcs és néhány további titkosítási metaadat interpolációja történik a titkosított adatokkal.
A boríték technikával történő visszafejtés a következőképpen működik:
- Az Azure Storage-ügyfélkódtár feltételezi, hogy a felhasználó helyileg vagy egy Azure-Key Vault kezeli a KEK-t. A felhasználónak nem kell tudnia a titkosításhoz használt kulcsot. Ehelyett beállíthat és használhat egy kulcsfeloldót, amely feloldja a kulcsok különböző kulcsazonosítóit.
- Az ügyfélkódtár letölti a titkosított adatokat az Azure Storage-ban tárolt bármely titkosítási anyaggal együtt.
- A becsomagolt CEK ezután le van bontva (visszafejtve) a KEK használatával. Az ügyfélkódtár nem fér hozzá a KEK-hez a folyamat során, de csak az Azure Key Vault vagy más kulcstároló kibontási algoritmusát hívja meg.
- Az ügyfélkódtár a CEK használatával fejti vissza a titkosított felhasználói adatokat.
Üzenettitkosítás/visszafejtés
Mivel az üzenetsor-üzenetek bármilyen formátumúak lehetnek, az ügyfélkódtár egy egyéni formátumot határoz meg, amely tartalmazza az inicializálási vektort (IV) és a titkosított tartalomtitkosítási kulcsot (CEK) az üzenet szövegében.
A titkosítás során az ügyfélkódtár 16 bájtból álló véletlenszerű IV-et hoz létre, valamint egy 32 bájtos véletlenszerű CEK-et, és ezzel az információval végrehajtja az üzenetsor szövegének borítékos titkosítását. Ezután a rendszer hozzáadja a burkolt CEK-et és néhány további titkosítási metaadatot a titkosított üzenetsorhoz. Ez a módosított üzenet (alább látható) a szolgáltatásban van tárolva.
<MessageText>{"EncryptedMessageContents":"6kOu8Rq1C3+M1QO4alKLmWthWXSmHV3mEfxBAgP9QGTU++MKn2uPq3t2UjF1DO6w","EncryptionData":{…}}</MessageText>
A visszafejtés során a rendszer kinyeri a burkolt kulcsot az üzenetsorból, és le van bontva. A IV is ki lesz nyerve az üzenetsor-üzenetből, és a fel nem írt kulccsal együtt használja az üzenetsor-üzenet adatainak visszafejtéséhez. A titkosítási metaadatok kicsik (500 bájt alatt), így bár az üzenetsor üzeneteinek 64 KB-os korlátja felé számít, a hatásnak kezelhetőnek kell lennie. A titkosított üzenet Base64 kódolású, ahogy a fenti kódrészlet is mutatja, amely az elküldött üzenet méretét is kiterjeszti.
Az üzenetsorban lévő üzenetek rövid élettartamú jellege miatt nem szükséges az üzenetsor-üzenetek visszafejtése és újbóli visszafejtése az ügyféloldali titkosítás v2-re való frissítés után. A kevésbé biztonságos üzeneteket a rendszer a normál üzenetsor-használat során elforgatja.
Ügyféloldali titkosítás és teljesítmény
Ne feledje, hogy a tárolási adatok titkosítása további teljesítményterhelést eredményez. Amikor ügyféloldali titkosítást használ az alkalmazásban, az ügyfélkódtárnak biztonságosan létre kell hoznia a CEK-et és a IV-et, titkosítania kell magát a tartalmat, kommunikálnia kell a kiválasztott kulcstárolóval a kulcsok beágyazásához, valamint további metaadatok formázásához és feltöltéséhez. Ez a többletterhelés a titkosítandó adatok mennyiségétől függ. Javasoljuk, hogy az ügyfelek mindig teszteljék az alkalmazásaikat a fejlesztés során.