ASP.NET Core Data Protection'a Genel Bakış

ASP.NET Core, anahtar yönetimi ve döndürme dahil olmak üzere verileri korumak için bir şifreleme API'si sağlar.

Web uygulamalarının genellikle hassas verileri depolaması gerekir. Windows veri koruma API'si (DPAPI), web uygulamalarında kullanılmak üzere tasarlanmamıştır.

ASP.NET Core veri koruma yığını şu şekilde tasarlanmıştır:

  • Çoğu Web senaryosu için yerleşik bir çözüm sağlayın.
  • Önceki şifreleme sisteminin birçok eksikliğini giderin.
  • ASP.NET 1.x - 4.x içindeki öğenin yerini <machineKey> alır.

Sorun bildirimi

Daha sonra almak için güvenilir bilgileri kalıcı hale getirmem gerekiyor, ancak kalıcılık mekanizmasına güvenmiyorum. Web terimleri açısından bu, güvenilmeyen bir istemci aracılığıyla güvenilir duruma gidiş dönüş ihtiyacım olduğu için yazılabilir.

Orijinallik, bütünlük ve kurcalamaya karşı yazım denetleme bir gereksinimdir. Bunun kurallı örneği bir kimlik doğrulaması cookie veya taşıyıcı belirtecidir. Sunucu bir I am Groot oluşturur ve xyz izin belirtecine sahiptir ve istemciye gönderir. İstemci bu belirteci sunucuya geri sunar, ancak sunucunun, istemcinin belirteci sahte yapmadığına dair bir güvenceye ihtiyacı vardır.

Gizlilik bir gereksinimdir. Kalıcı duruma sunucu tarafından güvenildiğinden, bu durum güvenilmeyen bir istemciye açıklanmaması gereken bilgiler içerebilir. Örneğin:

  • Dosya yolu.
  • İzin.
  • Tanıtıcı veya başka bir dolaylı başvuru.
  • Sunucuya özgü bazı veriler.

Yalıtım bir gereksinimdir. Modern uygulamalar bileşen haline getirildiğinden, tek tek bileşenler sistemdeki diğer bileşenlere bakılmaksızın bu sistemden yararlanmak ister. Örneğin, bu yığını kullanarak taşıyıcı belirteç bileşenini göz önünde bulundurun. Herhangi bir girişim olmadan, örneğin aynı yığını kullanan bir CSRF önleme mekanizmasından çalışmalıdır.

Bazı yaygın varsayımlar gereksinimlerin kapsamını daraltabilir:

  • Şifreleme sistemi içinde çalışan tüm hizmetlere eşit şekilde güvenilir.
  • Verilerin doğrudan denetimimiz altındaki hizmetlerin dışında oluşturulması veya tüketilmesi gerekmez.
  • Web hizmetine yapılan her istek şifreleme sisteminden bir veya daha fazla kez geçebileceğinden işlemler hızlı olmalıdır. Hız gereksinimi simetrik şifrelemeyi ideal hale getirir. Asimetrik şifreleme gerekli olana kadar kullanılmaz.

Tasarım felsefesi

ASP.NET Temel veri koruması, kullanımı kolay bir veri koruma yığınıdır. Bu, aşağıdaki ilkeleri temel alır:

  • Yapılandırma kolaylığı. Sistem sıfır yapılandırma için çaba gösterir. Geliştiricilerin anahtar deposu gibi belirli bir yönü yapılandırması gereken durumlarda, bu belirli yapılandırmalar zor değildir.
  • Tüketiciye yönelik temel bir API sunar. API'leri doğru kullanmak için doğrudan ve yanlış kullanmak zordur.
  • Geliştiricilerin temel yönetim ilkelerini öğrenmesi gerekmez. Sistem, algoritma seçimini ve anahtar ömrünü geliştirici adına işler. Geliştiricinin ham anahtar malzemesine erişimi yoktur.
  • Anahtarlar, bekleyenler için mümkün olduğunca korunur. Sistem uygun bir varsayılan koruma mekanizmasını keşfeder ve otomatik olarak uygular.

Veri koruma API'leri öncelikli olarak gizli yüklerin süresiz kalıcılığına yönelik değildir. Windows CNG DPAPI ve Azure Rights Management gibi diğer teknolojiler, süresiz depolama senaryosuna daha uygundur. Bunlara karşılık olarak güçlü anahtar yönetimi özellikleri vardır. Buna göre, ASP.NET Core veri koruma API'leri gizli verilerin uzun süreli korunması için kullanılabilir.

Hedef Kitle

Veri koruma sistemi üç ana hedef kitleyi hedefleyen API'ler sağlar:

  1. Tüketici API'leri uygulama ve çerçeve geliştiricilerini hedefler.

    Yığının nasıl çalıştığı veya nasıl yapılandırıldığı hakkında bilgi edinmek istemiyorum. Api'leri başarıyla kullanma olasılığı yüksek olan bazı işlemler yapmak istiyorum.

  2. Yapılandırma API'leri uygulama geliştiricilerini ve sistem yöneticilerini hedefler.

    Veri koruma sistemine ortamımın varsayılan olmayan yollar veya ayarlar gerektirdiğini söylemem gerekiyor.

  3. Genişletilebilirlik API'leri, özel ilke uygulamaktan sorumlu geliştiricileri hedefler. Bu API'lerin kullanımı nadir durumlarla ve güvenlik deneyimi olan geliştiricilerle sınırlıdır.

    Sistemdeki bir bileşenin tamamını değiştirmem gerekiyor çünkü gerçekten benzersiz davranış gereksinimlerim var. Gereksinimlerimi karşılayan bir eklenti oluşturmak için API yüzeyinin yaygın olarak kullanılan bölümlerini öğrenmeye hazırım.

Paket düzeni

Veri koruma yığını beş paket içerir:

Ek kaynaklar

ASP.NET Core, anahtar yönetimi ve döndürme dahil olmak üzere verileri korumak için bir şifreleme API'si sağlar.

Web uygulamalarının genellikle hassas verileri depolaması gerekir. Windows veri koruma API'si (DPAPI), web uygulamalarında kullanılmak üzere tasarlanmamıştır.

ASP.NET Core veri koruma yığını şu şekilde tasarlanmıştır:

  • Çoğu Web senaryosu için yerleşik bir çözüm sağlayın.
  • Önceki şifreleme sisteminin birçok eksikliğini giderin.
  • ASP.NET 1.x - 4.x içindeki öğenin yerini <machineKey> alır.

Sorun bildirimi

Daha sonra almak için güvenilir bilgileri kalıcı hale getirmem gerekiyor, ancak kalıcılık mekanizmasına güvenmiyorum. Web terimleri açısından bu, güvenilmeyen bir istemci aracılığıyla güvenilir duruma gidiş dönüş ihtiyacım olduğu için yazılabilir.

Orijinallik, bütünlük ve kurcalamaya karşı yazım denetleme bir gereksinimdir. Bunun kurallı örneği bir kimlik doğrulaması cookie veya taşıyıcı belirtecidir. Sunucu bir I am Groot oluşturur ve xyz izin belirtecine sahiptir ve istemciye gönderir. İstemci bu belirteci sunucuya geri sunar, ancak sunucunun, istemcinin belirteci sahte yapmadığına dair bir güvenceye ihtiyacı vardır.

Gizlilik bir gereksinimdir. Kalıcı duruma sunucu tarafından güvenildiğinden, bu durum güvenilmeyen bir istemciye açıklanmaması gereken bilgiler içerebilir. Örneğin:

  • Dosya yolu.
  • İzin.
  • Tanıtıcı veya başka bir dolaylı başvuru.
  • Sunucuya özgü bazı veriler.

Yalıtım bir gereksinimdir. Modern uygulamalar bileşen haline getirildiğinden, tek tek bileşenler sistemdeki diğer bileşenlere bakılmaksızın bu sistemden yararlanmak ister. Örneğin, bu yığını kullanarak taşıyıcı belirteç bileşenini göz önünde bulundurun. Herhangi bir girişim olmadan, örneğin aynı yığını kullanan bir CSRF önleme mekanizmasından çalışmalıdır.

Bazı yaygın varsayımlar gereksinimlerin kapsamını daraltabilir:

  • Şifreleme sistemi içinde çalışan tüm hizmetlere eşit şekilde güvenilir.
  • Verilerin doğrudan denetimimiz altındaki hizmetlerin dışında oluşturulması veya tüketilmesi gerekmez.
  • Web hizmetine yapılan her istek şifreleme sisteminden bir veya daha fazla kez geçebileceğinden işlemler hızlı olmalıdır. Hız gereksinimi simetrik şifrelemeyi ideal hale getirir. Asimetrik şifreleme gerekli olana kadar kullanılmaz.

Tasarım felsefesi

ASP.NET Temel veri koruması, kullanımı kolay bir veri koruma yığınıdır. Bu, aşağıdaki ilkeleri temel alır:

  • Yapılandırma kolaylığı. Sistem sıfır yapılandırma için çaba gösterir. Geliştiricilerin anahtar deposu gibi belirli bir yönü yapılandırması gereken durumlarda, bu belirli yapılandırmalar zor değildir.
  • Tüketiciye yönelik temel bir API sunar. API'leri doğru kullanmak için doğrudan ve yanlış kullanmak zordur.
  • Geliştiricilerin temel yönetim ilkelerini öğrenmesi gerekmez. Sistem, algoritma seçimini ve anahtar ömrünü geliştirici adına işler. Geliştiricinin ham anahtar malzemesine erişimi yoktur.
  • Anahtarlar, bekleyenler için mümkün olduğunca korunur. Sistem uygun bir varsayılan koruma mekanizmasını keşfeder ve otomatik olarak uygular.

Veri koruma API'leri öncelikli olarak gizli yüklerin süresiz kalıcılığına yönelik değildir. Windows CNG DPAPI ve Azure Rights Management gibi diğer teknolojiler, süresiz depolama senaryosuna daha uygundur. Bunlara karşılık olarak güçlü anahtar yönetimi özellikleri vardır. Buna göre, ASP.NET Core veri koruma API'leri gizli verilerin uzun süreli korunması için kullanılabilir.

Hedef Kitle

Veri koruma sistemi üç ana hedef kitleyi hedefleyen API'ler sağlar:

  1. Tüketici API'leri uygulama ve çerçeve geliştiricilerini hedefler.

    Yığının nasıl çalıştığı veya nasıl yapılandırıldığı hakkında bilgi edinmek istemiyorum. Api'leri başarıyla kullanma olasılığı yüksek olan bazı işlemler yapmak istiyorum.

  2. Yapılandırma API'leri uygulama geliştiricilerini ve sistem yöneticilerini hedefler.

    Veri koruma sistemine ortamımın varsayılan olmayan yollar veya ayarlar gerektirdiğini söylemem gerekiyor.

  3. Genişletilebilirlik API'leri, özel ilke uygulamaktan sorumlu geliştiricileri hedefler. Bu API'lerin kullanımı nadir durumlarla ve güvenlik deneyimi olan geliştiricilerle sınırlıdır.

    Sistemdeki bir bileşenin tamamını değiştirmem gerekiyor çünkü gerçekten benzersiz davranış gereksinimlerim var. Gereksinimlerimi karşılayan bir eklenti oluşturmak için API yüzeyinin yaygın olarak kullanılan bölümlerini öğrenmeye hazırım.

Paket düzeni

Veri koruma yığını beş paket içerir:

Ek kaynaklar