ASP.NET Core Veri koruma

Web uygulamalarının genellikle güvenliğe duyarlı verileri depolaması gerekir. Windows masaüstü uygulamaları için bir veri koruma apı 'si (dpapı) sağlar, ancak Windows dpapı web uygulamalarında kullanılmak üzere tasarlanmamıştır. ASP.NET Core veri koruma yığını, bir geliştiricinin anahtar yönetimi ve döndürme dahil olmak üzere verileri korumak için kullanabileceği basit ve kullanımı kolay bir şifreleme apı 'si sağlar.

ASP.NET Core veri koruma yığını, < > ASP.NET 1. x-4. x içindeki machineKey öğesi için uzun süreli değiştirme işlevi görecek şekilde tasarlanmıştır. Bu, eski şifreleme yığınının birçok eksikine yönelik olarak tasarlanmıştır ve bu da çoğu kullanım durumunda Modern uygulamaların karşılaştığı büyük bir çözüm sunar.

Sorun bildirimi

Genel sorun açıklaması tek bir tümcede succinctly belirtilebilir: daha sonra alımı sağlamak için güvenilir bilgileri kalıcı hale getirmeniz gerekiyor, ancak Kalıcılık mekanizmasına güvenmiyor. Web koşullarında bu, "güvenilmeyen bir istemci aracılığıyla güvenilir duruma gidiş dönüş olması gerekir." şeklinde yazılmış olabilir.

Bunun kurallı örneği, bir kimlik doğrulama cookie veya taşıyıcı belirteçtir. Sunucu bir "I ÖÖ ve XYZ izinleri var" belirtecini oluşturur ve istemciye ister. Daha sonraki bir tarihte, istemci bu belirteci sunucuya geri sunacaktır, ancak sunucunun belirteci sahte olmadığı bir tür güvence ihtiyacı vardır. Bu nedenle, ilk gereksinim: özgünlük (deyişle bütünlük, yetkisiz sağlama).

Kalıcı duruma sunucu tarafından güvenildiğinden, bu durumun işletim ortamına özgü bilgiler içerebileceğini tahmin ederiz. Bu, bir dosya yolu, izin, bir tanıtıcı veya başka bir dolaylı başvuru biçiminde veya sunucuya özgü başka bir veri parçası olabilir. Bu tür bilgiler genellikle güvenilmeyen bir istemciye açıklanmamalıdır. Bu nedenle, ikinci gereksinim: Gizlilik.

Son olarak, modern uygulamalar bileşen olduğundan, gördük, tek tek bileşenlerin, sistemdeki diğer bileşenlere bakılmaksızın bu sistemden yararlanmak ister. Örneğin, bir taşıyıcı belirteç bileşeni bu yığını kullanıyorsa aynı yığını da kullanan bir anti-CSRF mekanizmasından parazit olmadan çalışır. Bu nedenle son gereksinim: yalıtım.

Gereksinimlerimizin kapsamını daraltmak için daha fazla kısıtlama sağlayabiliriz. //Tr.wikipedia.org/wiki/RSA içinde çalışan tüm hizmetlerin eşit olarak güvenilir olduğunu ve verilerin doğrudan denetimizin altında oluşturulmaları veya hizmetlerin dışında harcanması gerektiğini varsaytık. Ayrıca, Web hizmetine yönelik her istek//tr.wikipedia.org/wiki/RSA 'e bir veya daha fazla kez gidebilecek olduğundan, bu işlemlerin mümkün olduğunca hızlı olmasını gerektiririz. Bu, simetrik şifrelemeyi senaryolarımız için ideal hale getirir ve bu tür bir süre kadar asimetrik şifrelemeyi indirimleriz.

Tasarım felseü

Mevcut yığın ile ilgili sorunları tanımlayarak başladık. Bunu yaptıktan sonra, mevcut çözümlerin Yatayı gözettik ve mevcut bir çözüm, yalnızca bir çok aranan yeteneğe sahip değil. Daha sonra çeşitli temel ilkelere göre bir çözüm sunuyoruz.

  • Sistemin yapılandırma basitliği sağlaması gerekir. İdeal olarak, sistem sıfır-yapılandırma olabilir ve geliştiriciler bir yerden çalışır. Geliştiricilerin belirli bir yönü (anahtar deposu gibi) yapılandırması gereken durumlarda, söz konusu yapılandırmaların basit hale getirilmesi için dikkate alınması gerekir.

  • Basit bir tüketiciye yönelik API sunar. API 'Lerin düzgün şekilde kullanılması kolay ve yanlış kullanılması zor olmalıdır.

  • Geliştiriciler anahtar yönetim ilkelerini öğrenmemelidir. Sistem, geliştirici adına algoritma seçimini ve anahtar yaşam süresini işlemelidir. İdeal olarak, geliştirici ham anahtar malzemesine asla erişemez.

  • Anahtarlar mümkün olduğunda Rest 'te korunmalıdır. Sistem uygun bir varsayılan koruma mekanizmasını göstermelidir ve bunu otomatik olarak uygular.

Bu ilkeler göz önünde bulundurularak basit ve kullanımı kolay bir veri koruma yığını geliştirdik.

ASP.NET Core veri koruma apı 'leri öncelikle gizli yüklerin sınırsız kalıcılığı için tasarlanmamıştır. Windows CNG dpapı ve Azure Rights Management gibi diğer teknolojiler, sınırsız depolama senaryosuna daha uygundur ve bunlara karşılık olarak güçlü anahtar yönetim özelliklerine sahiptir. yani, bir geliştiricinin gizli verilerin uzun süreli korunması için ASP.NET Core veri koruma apı 'lerini kullanmasını engelleyen bir şey yoktur.

Hedef kitle

Veri koruma sistemi beş ana pakete bölünmüştür. Bu API 'lerin çeşitli yönleri üç ana hedef kitleye sahiptir;

  1. Tüketici API 'Lerine genel bakış hedef uygulama ve çerçeve geliştiricileri.

    "Yığının nasıl çalıştığı veya nasıl yapılandırıldığı hakkında bilgi almak istemiyorum. API 'Leri başarılı bir şekilde kullanmanın yüksek olasılığa karşı basit bir şekilde bir işlem gerçekleştirmek istiyorum. "

  2. Yapılandırma API 'leri , uygulama geliştiricileri ve sistem yöneticileri için hedef.

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

  3. Genişletilebilirlik API 'Leri, geliştiricilerin özel ilke uygulama ücretlendirme aşamasında hedeflemesini hedefler. Bu API 'lerin kullanımı nadir durumlarla ve deneyimli güvenlik özellikli geliştiricilerle sınırlı olacaktır.

    "Gerçekten benzersiz davranış gereksinimlerine sahip olduğumu sistem içindeki bir bileşenin tamamını değiştirmem gerekiyor. Gereksinimlerimi yerine getiren bir eklenti oluşturmak için API yüzeyinin yaygın olarak kullanılan parçalarını öğrenmek istiyorum. "

Paket düzeni

Veri koruma yığını beş paketten oluşur.

Ek kaynaklar

Web ASP.NET Core konak grubu