Bagikan melalui


Memberlakukan bacaan aman untuk koleksi HID

Bagian ini menjelaskan bagaimana aplikasi mode pengguna atau driver mode kernel dapat memberlakukan bacaan aman untuk koleksi HID tingkat atas.

Jika bacaan aman diaktifkan untuk koleksi, hanya klien "tepercaya" (yang memiliki hak istimewa SeTcbPrivilege) yang dapat memperoleh input dari file terbuka koleksi. Driver mode kernel memiliki hak istimewa SeTcbPrivilege secara default, tetapi aplikasi mode pengguna tidak. Untuk informasi tentang cara mendapatkan hak istimewa sistem dalam mode pengguna, lihat informasi tentang otorisasi dalam dokumentasi Microsoft Windows SDK.

Mekanisme ini disediakan terutama sehingga komponen sistem mode pengguna "tepercaya" dapat mencegah aplikasi mode pengguna tanpa hak istimewa SeTcbPrivilege mendapatkan input dari koleksi selama operasi sistem penting. Misalnya, komponen sistem mode pengguna "tepercaya" dapat mencegah aplikasi mode pengguna tanpa hak istimewa SeTcbPrivilege untuk mendapatkan informasi rahasia yang disediakan pengguna selama operasi masuk.

Klien "Tepercaya" menggunakan permintaan IOCTL_HID_ENABLE_SECURE_READ dan IOCTL_HID_DISABLE_SECURE_READ untuk mengaktifkan dan menonaktifkan bacaan aman untuk koleksi. Jika klien tanpa hak istimewa SeTcbPrivilege menggunakan permintaan ini, permintaan tidak mengubah status baca aman koleksi, dan driver kelas HID mengembalikan nilai status STATUS_PRIVILEGE_NOT_HELD.

Mengaktifkan dan menonaktifkan bacaan aman untuk koleksi berfungsi dengan cara berikut:

  • Driver kelas HID mempertahankan jumlah baca aman khusus file untuk setiap file koleksi yang terbuka. Driver kelas HID juga mempertahankan jumlah baca yang aman untuk koleksi, yang merupakan jumlah jumlah baca aman khusus file. Jumlah baca aman untuk koleksi diinisialisasi ke nol saat koleksi dibuat, dan jumlah baca aman untuk file diinisialisasi ke nol saat file dibuka.

  • Ketika driver kelas HID menerima permintaan aktif untuk file, itu bertambah 1 jumlah baca aman untuk file (dan kenaikan sebesar 1 jumlah baca aman untuk koleksi).

  • Ketika driver kelas HID menerima permintaan nonaktifkan untuk file:

    • Jika jumlah baca aman untuk file lebih besar dari nol, driver mengurangi 1 jumlah baca aman untuk file (dan penurunan sebesar 1 jumlah baca aman untuk koleksi).
    • Jika jumlah baca aman untuk file sama dengan nol, driver tidak mengubah jumlah baca aman.
  • Jika jumlah baca aman untuk koleksi lebih besar dari nol, driver kelas HID memberlakukan bacaan aman untuk koleksi. Jika tidak, driver tidak memberlakukan bacaan yang aman untuk koleksi.

  • Klien harus menggunakan permintaan nonaktifkan untuk membatalkan permintaan pengaktifan yang sesuai. Namun, jika klien tidak melakukan ini, driver kelas HID dengan tepat mengurangi jumlah baca aman untuk koleksi ketika memproses permintaan IRP_MJ_CLOSE untuk file. Ketika driver memproses permintaan tutup, driver mengurangi jumlah baca aman untuk koleksi dengan jumlah baca aman untuk file yang ditutup.