Saya memiliki skenario berikut:
Proses tertentu (A) membuat file dan saya ingin menulis sebuah program yang membaca file-file ini untuk menghasilkan beberapa data statistik.
Masalahnya sederhana. Saya ingin memastikan bahwa file yang dibuat oleh (A) belum rusak / dipalsukan. Jadi satu-satunya yang diizinkan untuk mengubah / memodifikasi / membuat file-file itu adalah (A). Jika ada proses lain yang mengubah beberapa file atau membuat file serupa saya ingin mendeteksi ini dan menandai file ini sebagai dipalsukan / rusak. Saya harus benar-benar yakin bahwa file-file ini belum diubah dengan cara apa pun oleh proses lain selain (A).
Proses (A) hanya berjalan di sistem windows. Lebih khusus windows xp atau lebih tinggi.
Apakah ini mungkin? Apakah cukup untuk menonton filesystem atau haruskah saya menyuntikkan (A) untuk mendapatkan data output sebelum disimpan dalam file?
sumber
Jawaban:
Ini adalah masalah DRM dan sebenarnya tidak ada jawaban yang aman. Anda perlu menggunakan enkripsi sehingga hanya A yang dapat menandatangani data sebagai otentik, tetapi yang membutuhkan A untuk mengetahui rahasia yang dapat ditemukan oleh pengguna komputer, sehingga mereka dapat memalsukan informasi.
Anda dapat mencoba untuk memiliki server B di suatu tempat menandatangani data sehingga pemilik sistem A sedang berjalan tidak dapat melakukannya, tetapi kemudian bagaimana B tahu bahwa itu sebenarnya berbicara dengan program yang sah A dan bukan sesuatu yang dimasak oleh pengguna naik. Tidak ada cara untuk menentukan ini juga.
Satu-satunya cara nyata untuk melakukannya adalah membuat setiap tindakan penting terjadi sebagai hasil dari sesuatu di server serta semua kriteria yang perlu benar untuk memastikan versi data yang tepat. Inilah sebabnya mengapa logika sisi server banyak digunakan dalam MMO dan beberapa game online lainnya untuk mencegah kecurangan. Jika Anda tidak memiliki dan mengontrol perangkat keras, Anda tidak dapat mempercayainya. DRM mencoba, tetapi ini adalah pertempuran yang hilang kecuali kita sampai pada titik di mana pengguna yang memiliki sistem hanyalah "tamu" dari beberapa pihak ketiga yang benar-benar menjalankan sistem, dan itu adalah dunia yang sangat menakutkan karena banyak alasan lain.
sumber
Ada model keamanan untuk itu disebut model Clark-Wilson. Hanya satu aplikasi yang diizinkan untuk mengubah data.
Apa yang akan saya lakukan adalah membuat file dengan tanda tangan digital, dan memeriksa kesegarannya. Dengan begitu aplikasi Anda B dapat memastikan bahwa file ditulis oleh A dan tidak dimanipulasi oleh proses lain. Plus memeriksa kesegaran membantu Anda mengurangi serangan replay.
sumber
Saya mungkin akan memastikan bahwa aplikasi yang menghasilkan file juga membuat file Jumlah hash MD5 dari file. Simpan hash sum ke file terpisah di suatu tempat.
Pada titik berikutnya, mungkin ketika Anda perlu menggunakan file, Anda dapat mengulangi file dan memastikan jumlah MD5 masih cocok.
sumber
Microsoft
menawarkan gratis Verifikasi Integritas Checksum File untuk tujuan tersebut.Informasi yang disalin dari file readme:
1. Apa itu fciv?
Fciv adalah utilitas baris perintah yang menghitung dan memverifikasi hash file.
Itu menghitung a
MD5
atauSHA1
hash kriptografi dari isi file. Jika file diubah, hash berbeda.Dengan
fciv
, Anda dapat menghitung hash dari semua file sensitif Anda. Ketika Anda mencurigai bahwa sistem Anda telah disusupi, Anda dapat menjalankan verifikasi untuk menentukan file mana yang telah dimodifikasi. Anda juga dapat menjadwalkan verifikasi secara teratur.2. Fitur:
MD5
,SHA1
atau keduanya (defaultMD5
).3. Sintaks:
Untuk menampilkan hash MD5 file, ketik nama file fciv.exe
Hitung hash:
Daftar hash disimpan dalam database:
Verifikasi:
4. Format penyimpanan database:
file xml.
Hash disimpan di basis 64.
5. Verifikasi:
Anda dapat membangun basis data hash dari file sensitif Anda dan memverifikasinya secara teratur atau ketika Anda mencurigai bahwa sistem Anda telah dikompromikan.
Ia memeriksa setiap entri yang disimpan dalam db dan memverifikasi bahwa checksum itu tidak dimodifikasi.
sumber