Gambaran Umum Perlindungan Data Inti ASP.NET
ASP.NET Core menyediakan API kriptografi untuk melindungi data, termasuk manajemen dan rotasi kunci.
Aplikasi web sering kali perlu menyimpan data sensitif. API perlindungan data Windows (DPAPI) tidak ditujukan untuk digunakan di aplikasi web.
Tumpukan perlindungan data ASP.NET Core dirancang untuk:
- Berikan solusi bawaan untuk sebagian besar skenario Web.
- Atasi banyak kekurangan sistem enkripsi sebelumnya.
- Berfungsi sebagai pengganti
<machineKey>
elemen dalam ASP.NET 1.x - 4.x.
Pernyataan masalah
Saya perlu mempertahankan informasi tepercaya untuk pengambilan nanti, tetapi saya tidak mempercayai mekanisme persistensi. Dalam istilah web, ini mungkin ditulis karena saya perlu melakukan pulang-pergi status tepercaya melalui klien yang tidak tepercaya.
Keaslian, integritas, dan pemeriksa perubahan adalah persyaratan. Contoh kanonis dari ini adalah token autentikasi cookie atau pembawa. Server menghasilkan saya Groot dan memiliki token izin xyz dan mengirimkannya ke klien. Klien menyajikan token itu kembali ke server, tetapi server membutuhkan semacam jaminan bahwa klien belum memalsukan token.
Kerahasiaan adalah persyaratan. Karena status bertahan dipercaya oleh server, status ini dapat berisi informasi yang seharusnya tidak diungkapkan ke klien yang tidak tepercaya. Contohnya:
- Jalur file.
- Izin.
- Handel atau referensi tidak langsung lainnya.
- Beberapa data khusus server.
Isolasi adalah persyaratan. Karena aplikasi modern digabungkan, komponen individual ingin memanfaatkan sistem ini tanpa memperhatikan komponen lain dalam sistem. Misalnya, pertimbangkan komponen token pembawa menggunakan tumpukan ini. Ini harus beroperasi tanpa gangguan apa pun, misalnya, dari mekanisme anti-CSRF juga menggunakan tumpukan yang sama.
Beberapa asumsi umum dapat mempersempit cakupan persyaratan:
- Semua layanan yang beroperasi dalam cryptosystem sama-sama tepercaya.
- Data tidak perlu dihasilkan atau dikonsumsi di luar layanan di bawah kontrol langsung kami.
- Operasi harus cepat karena setiap permintaan ke layanan web mungkin melalui cryptosystem satu atau beberapa kali. Persyaratan kecepatan membuat kriptografi simetris ideal. Kriptografi asimetris tidak digunakan sampai diperlukan.
Filsafat desain
ASP.NET Perlindungan data Core adalah tumpukan perlindungan data yang mudah digunakan . Ini didasarkan pada prinsip-prinsip berikut:
- Kemudahan konfigurasi. Sistem berusaha untuk konfigurasi nol. Dalam situasi di mana pengembang perlu mengonfigurasi aspek tertentu, seperti repositori kunci, konfigurasi spesifik tersebut tidak sulit.
- Menawarkan API dasar yang menghadap konsumen. API langsung diteruskan untuk digunakan dengan benar dan sulit digunakan dengan benar.
- Pengembang tidak perlu mempelajari prinsip manajemen utama. Sistem menangani pemilihan algoritma dan masa pakai kunci atas nama pengembang. Pengembang tidak memiliki akses ke bahan kunci mentah.
- Kunci dilindungi rest sebanyak mungkin. Sistem mencari tahu mekanisme perlindungan default yang sesuai dan menerapkannya secara otomatis.
API perlindungan data terutama tidak ditujukan untuk persistensi payload rahasia yang tidak terbatas. Teknologi lain, seperti Windows CNG DPAPI dan Azure Rights Management lebih cocok untuk skenario penyimpanan yang tidak terbatas. Mereka memiliki kemampuan manajemen kunci yang kuat secara sesuai. Meskipun demikian, API perlindungan data ASP.NET Core dapat digunakan untuk perlindungan jangka panjang data rahasia.
Audiens
Sistem perlindungan data menyediakan API yang menargetkan tiga audiens utama:
API konsumen menargetkan aplikasi dan pengembang kerangka kerja.
Saya tidak ingin mempelajari tentang bagaimana tumpukan beroperasi atau tentang bagaimana tumpukan dikonfigurasi. Saya hanya ingin melakukan beberapa operasi dengan probabilitas tinggi menggunakan API dengan sukses.
API konfigurasi menargetkan pengembang aplikasi dan administrator sistem.
Saya perlu memberi tahu sistem perlindungan data bahwa lingkungan saya memerlukan jalur atau pengaturan non-default.
API ekstensibilitas menargetkan pengembang yang bertugas menerapkan kebijakan kustom. Penggunaan API ini terbatas pada situasi langka dan pengembang dengan pengalaman keamanan.
Saya perlu mengganti seluruh komponen dalam sistem karena saya memiliki persyaratan perilaku yang benar-benar unik. Saya bersedia mempelajari bagian yang jarang digunakan dari permukaan API untuk membangun plugin yang memenuhi kebutuhan saya.
Tata letak paket
Tumpukan perlindungan data terdiri dari lima paket:
Microsoft.AspNetCore.DataProtection.Abstractions berisi:
- IDataProtectionProvider dan IDataProtector antarmuka untuk membuat layanan perlindungan data.
- Metode ekstensi yang berguna untuk bekerja dengan jenis ini. misalnya, IDataProtector.Protect
Jika sistem perlindungan data dibuat di tempat lain dan Anda mengkonsumsi API, referensi
Microsoft.AspNetCore.DataProtection.Abstractions
.Microsoft.AspNetCore.DataProtection berisi implementasi inti dari sistem perlindungan data, termasuk:
- Operasi kriptografi inti.
- Manajemen kunci.
- Konfigurasi dan ekstensibilitas.
Untuk membuat instans sistem perlindungan data, referensikan
Microsoft.AspNetCore.DataProtection
. Anda mungkin perlu mereferensikan sistem perlindungan data saat:- Menambahkannya ke IServiceCollection.
- Memodifikasi atau memperluas perilakunya.
Microsoft.AspNetCore.DataProtection.Extensions berisi API tambahan yang mungkin berguna bagi pengembang tetapi tidak termasuk dalam paket inti. Misalnya, paket ini berisi:
- Metode pabrik untuk membuat instans sistem perlindungan data untuk menyimpan kunci di lokasi pada sistem file tanpa injeksi dependensi. Lihat DataProtectionProvider.
- Metode ekstensi untuk membatasi masa pakai payload yang dilindungi. Lihat ITimeLimitedDataProtector.
Microsoft.AspNetCore.DataProtection.SystemWeb dapat diinstal ke aplikasi ASP.NET 4.x yang ada untuk mengalihkan operasinya
<machineKey>
untuk menggunakan tumpukan perlindungan data ASP.NET Core baru. Untuk informasi selengkapnya, lihat Mengganti machineKey ASP.NET di ASP.NET Core.Microsoft.AspNetCore.Cryptography.KeyDerivation menyediakan implementasi rutinitas hash kata sandi PBKDF2 dan dapat digunakan oleh sistem yang harus menangani kata sandi pengguna dengan aman. Untuk informasi selengkapnya, lihat Kata sandi hash di ASP.NET Core.
Sumber Daya Tambahan:
ASP.NET Core menyediakan API kriptografi untuk melindungi data, termasuk manajemen dan rotasi kunci.
Aplikasi web sering kali perlu menyimpan data sensitif. API perlindungan data Windows (DPAPI) tidak ditujukan untuk digunakan di aplikasi web.
Tumpukan perlindungan data ASP.NET Core dirancang untuk:
- Berikan solusi bawaan untuk sebagian besar skenario Web.
- Atasi banyak kekurangan sistem enkripsi sebelumnya.
- Berfungsi sebagai pengganti
<machineKey>
elemen dalam ASP.NET 1.x - 4.x.
Pernyataan masalah
Saya perlu mempertahankan informasi tepercaya untuk pengambilan nanti, tetapi saya tidak mempercayai mekanisme persistensi. Dalam istilah web, ini mungkin ditulis karena saya perlu melakukan pulang-pergi status tepercaya melalui klien yang tidak tepercaya.
Keaslian, integritas, dan pemeriksa perubahan adalah persyaratan. Contoh kanonis dari ini adalah token autentikasi cookie atau pembawa. Server menghasilkan saya Groot dan memiliki token izin xyz dan mengirimkannya ke klien. Klien menyajikan token itu kembali ke server, tetapi server membutuhkan semacam jaminan bahwa klien belum memalsukan token.
Kerahasiaan adalah persyaratan. Karena status bertahan dipercaya oleh server, status ini dapat berisi informasi yang seharusnya tidak diungkapkan ke klien yang tidak tepercaya. Contohnya:
- Jalur file.
- Izin.
- Handel atau referensi tidak langsung lainnya.
- Beberapa data khusus server.
Isolasi adalah persyaratan. Karena aplikasi modern digabungkan, komponen individual ingin memanfaatkan sistem ini tanpa memperhatikan komponen lain dalam sistem. Misalnya, pertimbangkan komponen token pembawa menggunakan tumpukan ini. Ini harus beroperasi tanpa gangguan apa pun, misalnya, dari mekanisme anti-CSRF juga menggunakan tumpukan yang sama.
Beberapa asumsi umum dapat mempersempit cakupan persyaratan:
- Semua layanan yang beroperasi dalam cryptosystem sama-sama tepercaya.
- Data tidak perlu dihasilkan atau dikonsumsi di luar layanan di bawah kontrol langsung kami.
- Operasi harus cepat karena setiap permintaan ke layanan web mungkin melalui cryptosystem satu atau beberapa kali. Persyaratan kecepatan membuat kriptografi simetris ideal. Kriptografi asimetris tidak digunakan sampai diperlukan.
Filsafat desain
ASP.NET Perlindungan data Core adalah tumpukan perlindungan data yang mudah digunakan . Ini didasarkan pada prinsip-prinsip berikut:
- Kemudahan konfigurasi. Sistem berusaha untuk konfigurasi nol. Dalam situasi di mana pengembang perlu mengonfigurasi aspek tertentu, seperti repositori kunci, konfigurasi spesifik tersebut tidak sulit.
- Menawarkan API dasar yang menghadap konsumen. API langsung diteruskan untuk digunakan dengan benar dan sulit digunakan dengan benar.
- Pengembang tidak perlu mempelajari prinsip manajemen utama. Sistem menangani pemilihan algoritma dan masa pakai kunci atas nama pengembang. Pengembang tidak memiliki akses ke bahan kunci mentah.
- Kunci dilindungi rest sebanyak mungkin. Sistem mencari tahu mekanisme perlindungan default yang sesuai dan menerapkannya secara otomatis.
API perlindungan data terutama tidak ditujukan untuk persistensi payload rahasia yang tidak terbatas. Teknologi lain, seperti Windows CNG DPAPI dan Azure Rights Management lebih cocok untuk skenario penyimpanan yang tidak terbatas. Mereka memiliki kemampuan manajemen kunci yang kuat secara sesuai. Meskipun demikian, API perlindungan data ASP.NET Core dapat digunakan untuk perlindungan jangka panjang data rahasia.
Audiens
Sistem perlindungan data menyediakan API yang menargetkan tiga audiens utama:
API konsumen menargetkan aplikasi dan pengembang kerangka kerja.
Saya tidak ingin mempelajari tentang bagaimana tumpukan beroperasi atau tentang bagaimana tumpukan dikonfigurasi. Saya hanya ingin melakukan beberapa operasi dengan probabilitas tinggi menggunakan API dengan sukses.
API konfigurasi menargetkan pengembang aplikasi dan administrator sistem.
Saya perlu memberi tahu sistem perlindungan data bahwa lingkungan saya memerlukan jalur atau pengaturan non-default.
API ekstensibilitas menargetkan pengembang yang bertugas menerapkan kebijakan kustom. Penggunaan API ini terbatas pada situasi langka dan pengembang dengan pengalaman keamanan.
Saya perlu mengganti seluruh komponen dalam sistem karena saya memiliki persyaratan perilaku yang benar-benar unik. Saya bersedia mempelajari bagian yang jarang digunakan dari permukaan API untuk membangun plugin yang memenuhi kebutuhan saya.
Tata letak paket
Tumpukan perlindungan data terdiri dari lima paket:
Microsoft.AspNetCore.DataProtection.Abstractions berisi:
- IDataProtectionProvider dan IDataProtector antarmuka untuk membuat layanan perlindungan data.
- Metode ekstensi yang berguna untuk bekerja dengan jenis ini. misalnya, IDataProtector.Protect
Jika sistem perlindungan data dibuat di tempat lain dan Anda mengkonsumsi API, referensi
Microsoft.AspNetCore.DataProtection.Abstractions
.Microsoft.AspNetCore.DataProtection berisi implementasi inti dari sistem perlindungan data, termasuk:
- Operasi kriptografi inti.
- Manajemen kunci.
- Konfigurasi dan ekstensibilitas.
Untuk membuat instans sistem perlindungan data, referensikan
Microsoft.AspNetCore.DataProtection
. Anda mungkin perlu mereferensikan sistem perlindungan data saat:- Menambahkannya ke IServiceCollection.
- Memodifikasi atau memperluas perilakunya.
Microsoft.AspNetCore.DataProtection.Extensions berisi API tambahan yang mungkin berguna bagi pengembang tetapi tidak termasuk dalam paket inti. Misalnya, paket ini berisi:
- Metode pabrik untuk membuat instans sistem perlindungan data untuk menyimpan kunci di lokasi pada sistem file tanpa injeksi dependensi. Lihat DataProtectionProvider.
- Metode ekstensi untuk membatasi masa pakai payload yang dilindungi. Lihat ITimeLimitedDataProtector.
Microsoft.AspNetCore.DataProtection.SystemWeb dapat diinstal ke aplikasi ASP.NET 4.x yang ada untuk mengalihkan operasinya
<machineKey>
untuk menggunakan tumpukan perlindungan data ASP.NET Core baru. Untuk informasi selengkapnya, lihat Mengganti machineKey ASP.NET di ASP.NET Core.Microsoft.AspNetCore.Cryptography.KeyDerivation menyediakan implementasi rutinitas hash kata sandi PBKDF2 dan dapat digunakan oleh sistem yang harus menangani kata sandi pengguna dengan aman. Untuk informasi selengkapnya, lihat Kata sandi hash di ASP.NET Core.
Sumber Daya Tambahan:
ASP.NET Core