Kuyruklar için istemci tarafı şifrelemesi

.NET ve Python için Azure Kuyruk Depolama istemci kitaplıkları, Azure Depolama'ya yüklemeden önce istemci uygulamalarındaki verilerin şifrelenmesi ve istemciye indirilirken verilerin şifresinin çözülmesini destekler. İstemci kitaplıkları, depolama hesabı anahtar yönetimi için Azure Key Vault ile tümleştirmeyi de destekler.

Önemli

Azure Depolama hem hizmet tarafı hem de istemci tarafı şifrelemeyi destekler. Çoğu senaryoda Microsoft, verilerinizi korumada kullanım kolaylığı için hizmet tarafı şifreleme özelliklerinin kullanılmasını önerir. Hizmet tarafı şifrelemesi hakkında daha fazla bilgi edinmek için bkz. Bekleyen veriler için Azure Depolama şifrelemesi.

İstemci tarafı şifreleme hakkında

Azure Kuyruk Depolama istemci kitaplığı, kullanıcı verilerini şifrelemek için AES kullanır. İstemci kitaplığında istemci tarafı şifrelemenin iki sürümü vardır:

Uyarı

İstemci kitaplığının CBC modu uygulamasındaki bir güvenlik açığı nedeniyle istemci tarafı şifrelemenin 1. sürümünün kullanılması artık önerilmez. Bu güvenlik açığı hakkında daha fazla bilgi için bkz. Azure Depolama, güvenlik açığını gidermek için SDK'da istemci tarafı şifrelemesini güncelleştirme. Şu anda sürüm 1 kullanıyorsanız, uygulamanızı sürüm 2'yi kullanacak şekilde güncelleştirmenizi ve verilerinizi geçirmenizi öneririz. Daha fazla kılavuz için uygulamalarınızdaki güvenlik açığını azaltma başlıklı aşağıdaki bölüme bakın.

Uygulamalarınızdaki güvenlik açığını azaltma

Kuyruk Depolama istemci kitaplığının CBC modu uygulamasında bulunan bir güvenlik açığı nedeniyle, Microsoft aşağıdaki eylemlerden bir veya daha fazlasını hemen gerçekleştirmenizi önerir:

  • İstemci tarafı şifrelemesi yerine hizmet tarafı şifreleme özelliklerini kullanmayı göz önünde bulundurun. Hizmet tarafı şifreleme özellikleri hakkında daha fazla bilgi için bkz. Bekleyen veriler için Azure Depolama şifrelemesi.

  • İstemci tarafı şifreleme kullanmanız gerekiyorsa uygulamalarınızı istemci tarafı şifreleme v1'den istemci tarafı şifreleme v2'ye geçirin.

Aşağıdaki tabloda, uygulamalarınızı istemci tarafı şifreleme v2'ye geçirmeyi seçerseniz uygulamanız gereken adımlar özetlenmiştir:

İstemci tarafı şifreleme durumu Önerilen eylemler
Uygulama, istemci kitaplığının yalnızca istemci tarafı şifreleme v1'i destekleyen bir sürümünü istemci tarafı şifrelemesi kullanıyor. uygulamanızı istemci kitaplığının istemci tarafı şifreleme v2'yi destekleyen bir sürümünü kullanacak şekilde güncelleştirin. Desteklenen sürümlerin listesi için bkz. İstemci tarafı şifrelemesi için SDK destek matrisi .

kodunuzu istemci tarafı şifreleme v2 kullanacak şekilde güncelleştirin.
Uygulama, istemci tarafı şifreleme v2'yi destekleyen bir istemci kitaplığı sürümüyle istemci tarafı şifrelemesi kullanıyor. kodunuzu istemci tarafı şifreleme v2 kullanacak şekilde güncelleştirin.

Ayrıca Microsoft, verilerinizin güvenliğini sağlamaya yardımcı olmak için aşağıdaki adımları uygulamanızı önerir:

  • Özel bir bağlantı üzerinden sanal ağınız (VNet) ile depolama hesabınız arasındaki tüm trafiğin güvenliğini sağlamak için depolama hesaplarınızı özel uç noktaları kullanacak şekilde yapılandırın. Daha fazla bilgi için bkz. Azure Depolama için özel uç noktaları kullanma.
  • Ağ erişimini yalnızca belirli ağlara sınırlayın.

İstemci tarafı şifreleme için SDK destek matrisi

Aşağıdaki tabloda.NET ve Python için istemci kitaplıklarının hangi sürümlerinin istemci tarafı şifrelemenin hangi sürümlerini desteklediği gösterilmektedir:

.NET Python
İstemci tarafı şifreleme v2 ve v1 Sürüm 12.11.0 ve üzeri Sürüm 12.4.0 ve üzeri
Yalnızca istemci tarafı şifreleme v1 Sürüm 12.10.0 ve öncesi Sürüm 12.3.0 ve öncesi

Uygulamanız .NET veya Python istemci kitaplığının önceki bir sürümüyle istemci tarafı şifrelemesi kullanıyorsa, önce kodunuzu istemci tarafı şifreleme v2'yi destekleyen bir sürüme yükseltmeniz gerekir. Ardından, verilerinizin şifresini çözmeniz ve istemci tarafı şifreleme v2 ile yeniden şifrelemeniz gerekir. Gerekirse, kodunuzu geçirirken istemci kitaplığının önceki bir sürümüyle yan yana istemci tarafı şifreleme v2'yi destekleyen bir istemci kitaplığı sürümünü kullanabilirsiniz.

İstemci tarafı şifreleme nasıl çalışır?

Azure Kuyruk Depolama istemci kitaplıkları, istemci tarafındaki verilerinizi şifrelemek ve şifresini çözmek için zarf şifrelemesi kullanır. Zarf şifrelemesi, bir veya daha fazla ek anahtarla bir anahtarı şifreler.

Kuyruk Depolama istemci kitaplıkları, istemci tarafı şifreleme için kullanılan anahtarları korumak için Azure Key Vault kullanır. Azure Key Vault hakkında daha fazla bilgi için bkz. Azure Key Vault nedir?.

Zarf tekniğiyle şifreleme ve şifre çözme

Zarf tekniğiyle şifreleme aşağıdaki gibi çalışır:

  1. Azure Depolama istemci kitaplığı, tek seferlik kullanılan bir simetrik anahtar olan bir içerik şifreleme anahtarı (CEK) oluşturur.

  2. Kullanıcı verileri CEK kullanılarak şifrelenir.

  3. CEK daha sonra anahtar şifreleme anahtarı (KEK) kullanılarak sarmalanır (şifrelenir). KEK bir anahtar tanımlayıcısı ile tanımlanır ve asimetrik anahtar çifti veya simetrik anahtar olabilir. KEK'yi yerel olarak yönetebilir veya bir Azure Key Vault depolayabilirsiniz.

    Azure Depolama istemci kitaplığının kendisinin KEK'ye hiçbir zaman erişimi olmaz. Kitaplık, Key Vault tarafından sağlanan anahtar sarmalama algoritmasını çağırır. Kullanıcılar, isterse anahtar sarmalama/açma için özel sağlayıcılar kullanmayı seçebilir.

  4. Şifrelenmiş veriler daha sonra Azure Kuyruk Depolama'ya yüklenir. Sarmalanan anahtar, bazı ek şifreleme meta verileriyle birlikte şifrelenmiş verilerle ilişkilendirilir.

Zarf tekniğiyle şifre çözme işlemi aşağıdaki gibi çalışır:

  1. Azure Depolama istemci kitaplığı, kullanıcının KEK'yi yerel olarak veya bir Azure Key Vault yönettiğini varsayar. Kullanıcının şifreleme için kullanılan belirli anahtarı bilmesi gerekmez. Bunun yerine, anahtarlar için farklı anahtar tanımlayıcılarını çözümleyen bir anahtar çözümleyici ayarlanabilir ve kullanılabilir.
  2. İstemci kitaplığı, şifrelenmiş verileri ve Azure Depolama'da depolanan tüm şifreleme malzemelerini indirir.
  3. Sarmalanan CEK) daha sonra KEK kullanılarak çözülür (şifresi çözülür). İstemci kitaplığının bu işlem sırasında KEK'ye erişimi yoktur, ancak yalnızca Azure Key Vault veya diğer anahtar deposunun açılmayan algoritmasını çağırır.
  4. İstemci kitaplığı şifrelenmiş kullanıcı verilerinin şifresini çözmek için CEK kullanır.

İleti şifreleme/şifre çözme

Kuyruk iletileri herhangi bir biçimde olabileceğinden istemci kitaplığı, ileti metninde Başlatma Vektörünün (IV) ve şifrelenmiş içerik şifreleme anahtarının (CEK) bulunduğu özel bir biçim tanımlar.

Şifreleme sırasında istemci kitaplığı, 32 baytlık rastgele bir CEK ile birlikte 16 baytlık rastgele bir IV oluşturur ve bu bilgileri kullanarak kuyruk iletisi metninin zarf şifrelemesini gerçekleştirir. Sarmalanan CEK ve bazı ek şifreleme meta verileri daha sonra şifrelenmiş kuyruk iletisine eklenir. Bu değiştirilen ileti (aşağıda gösterilmiştir) hizmette depolanır.

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

Şifre çözme sırasında sarmalanan anahtar kuyruk iletisinden ayıklanır ve sarmalanmamıştır. IV ayrıca kuyruk iletisinden ayıklanır ve kuyruk iletisi verilerinin şifresini çözmek için eşlenmemiş anahtarla birlikte kullanılır. Şifreleme meta verileri küçük (500 bayt'ın altında), bu nedenle kuyruk iletisi için 64 KB sınırına doğru sayılsa da etki yönetilebilir olmalıdır. Şifrelenmiş ileti, yukarıdaki kod parçacığında gösterildiği gibi Base64 kodludur ve bu da gönderilen iletinin boyutunu genişletir.

Kuyruktaki iletilerin kısa süreli yapısı nedeniyle, istemci tarafı şifreleme v2'ye güncelleştirdikten sonra kuyruk iletilerinin şifresini çözme ve yeniden şifreleme gerekli olmamalıdır. Daha az güvenli iletiler normal kuyruk tüketimi sırasında döndürülür.

İstemci tarafı şifreleme ve performans

Depolama verilerinizi şifrelemenin ek performans yüküne neden olduğunu unutmayın. Uygulamanızda istemci tarafı şifreleme kullandığınızda, istemci kitaplığının CEK ve IV'yi güvenli bir şekilde oluşturması, içeriğin kendisini şifrelemesi, anahtar sarmalama için seçtiğiniz anahtar deposuyla iletişim kurması ve ek meta verileri biçimlendirmesi ve karşıya yüklemesi gerekir. Bu ek yük, şifrelenen veri miktarına bağlı olarak değişir. Müşterilerin geliştirme sırasında uygulamalarını her zaman performans açısından test etmelerini öneririz.

Sonraki adımlar