Saat ini saya menggunakan thunderbird dengan gnupg untuk membaca email terenkripsi. Jika saya memahami perilaku swapping dengan benar, halaman memori yang berisi email yang didekripsi mungkin ditukar dan meninggalkan jejak pada hard disk yang secara teori nantinya dapat dipulihkan secara forensik.
Meskipun tentu saja mungkin untuk hanya menggunakan swapfile terenkripsi atau menonaktifkan swapping secara global selama menggunakan file sensitif, itu berdampak pada kinerja, mungkin dilupakan dan membutuhkan hak akses root.
Apakah mungkin untuk menandai file atau program tertentu agar tidak ditukar? Bahkan tanpa akses root? Bisakah seseorang menulis aplikasi yang dapat didistribusikan ke pengguna yang secara teknis naif dan yang isi memorinya tidak pernah ditukar ke disk?
sumber
cgexec
thunderbird ke dalamnya. Anda masih memerlukan akses root, tetapi itu adalah resolusi tingkat admin. Jika Anda mengembangkan aplikasi Anda sendiri, Anda akan menggunakan mlock .mlock
, Anda harus memeriksa.Jawaban:
Dalam komentar, saya menyarankan Anda membuat cgroup, atur
memory.swappiness
ke nol (untuk meminimalkan swapping) dan jalankan aplikasi Anda di dalamnya. Jika Anda melakukan itu, aplikasi Anda mungkin tidak akan bertukar kecuali Anda kehabisan memori fisik yang sangat rendah sehingga bertukar halaman untuk program-program dalam cgroup adalah satu-satunya cara untuk menyediakan cukup memori fisik.Untuk melakukan ini di RHEL 6.5:
Pastikan
libcgroup
paket diinstal. Ini memberi Anda akses ke alat userspace seperticgcreate
dancgexec
.Mulai dan aktifkan
cgconfig
layanan sehingga perubahan konfigurasi cgroup tetap ada di antara reboot. Pada RHEL layanan ini juga harus me-mount sistem file yang diperlukan di bawah/cgroup
pohon.Buat cgroup dengan
cgcreate -g memory:thunderbird
Tetapkan swappiness ke nol di grup ini dengan
cgset -r memory.swappiness=0 thunderbird
Gunakan
cgsnapshot -s > /etc/cgconfig.conf
untuk menyimpan konfigurasi persisten yang diperbarui untukcgconfig
layanan (semua perubahan hingga kini telah menjadi perubahan runtime. Anda mungkin ingin menyimpan file konfigurasi default di suatu tempat dan memberikannya sekali lagi sebelum menjadikannya konfigurasi persisten.Sekarang Anda dapat menggunakan
cgexec
untuk memulai aplikasi yang diinginkan dalamthunderbird
cgroup:[root @ xxx601 ~] # cgexec -g memory: thunderbird ls
anaconda-ks.cfg a.out foreman.log index.html install.log install.log.syslog node.pp sleep sleep.c ssl-build stack test
[root @ xxx601 ~] #
Saya tidak
thunderbird
menginstal sebenarnya kalau tidak saya akan melakukan itu. Tidak yakin mengapa format di atas kacau.Salah satu alternatif untuk
cgexec
memulai thunderbird dan menambahkan PID ketasks
file untuk aplikasi. Sebagai contoh:[root @ xxx601 ~] # cat / cgroup / memory / thunderbird / tugas
[root @ xxx601 ~] # pidof httpd
25926 10227 10226 10225 10163 10162 10161 10160 10159 10157 10156 10155 10152 10109
[root @ xxx601 ~] # echo 25926> / cgroup / memori / thunderbird / tugas
[root @ xxx601 ~] # cat / cgroup / memory / thunderbird / tugas
25926
Sekali lagi, perlu disebutkan bahwa ini secara teknis tidak mencegah swapping tetapi kurang memodifikasi aplikasi itu sendiri, itu mungkin taruhan terbaik Anda. Saya baru saja menemukan
memory.memsw.limit_in_bytes
yang sepertinya merupakan kontrol yang lebih langsung untuk memaksa tidak ada pertukaran, tetapi saya belum bermain-main dengannya sehingga benar-benar merasa nyaman mengatakan bahwa itu memperbaiki masalah Anda sepenuhnya. Yang mengatakan, itu mungkin sesuatu yang harus diperhatikan setelah ini.Jawaban sebenarnya adalah memiliki
mlock
informasi sensitif aplikasi untuk mengatasi masalah semacam ini. Saya bersedia bertaruh aplikasi seperti Thunderbird, memang, tetapi saya tidak cukup tahu tentang internal untuk mengomentari itu.sumber
chroot
dalamunshare
d--mount
namespace, juga, saya pikir. Lakukan itu dan saya berani bertaruh efek kinerja akhir akan lebih baik daripada swap terenkripsi.memory.swappiness=0
menurut Anda? Saya tidak tahu - tapi saya ingin tahu.MADV_DONTDUMP
. Namun, sebagian besar waktu, orang-orang yang khawatir tentang bertukar informasi sensitif khawatir tentang laptop yang dicuri dan area swap disisir. Pada titik mereka memulai dump inti, sistem telah sepenuhnya dikompromikan.Aplikasi dapat mengunci memori mereka sehingga tidak dapat ditukar.
Saya tidak tahu cara memengaruhi ini dari luar. Aplikasi harus ditulis untuk menggunakan ini dengan sendirinya. Dengan surat mungkin sangat sulit karena biasanya juga melibatkan program eksternal untuk melihat lampiran dan semacamnya.
Juga, bahkan dengan memlock ada kemungkinan itu berakhir pada partisi swap Anda - ketika Anda menggunakan suspend to disk yang menulis semua memori ke disk, terlepas dari preferensi non-swap.
Lebih mudah untuk hanya pergi enkripsi disk penuh di tempat pertama.
sumber
Ya, aplikasi dapat mencegah sebagian memorinya tidak ditukar, dengan
mlock
panggilan sistem. Namun, ini tidak terlalu berguna dalam kasus Anda.Data rahasia tidak hanya dalam memori aplikasi. Itu berakhir di file-file sementara di berbagai tempat (
/tmp
,/var/spool
, dll). Thunderbird sendiri menampilkan email yang didekripsi, jadi Anda harus menguncinya juga ke RAM.Jika Anda ingin memastikan bahwa disk Anda tidak akan berisi jejak file rahasia, Anda perlu mengenkripsi swap Anda serta semua lokasi potensial dari file sementara (khususnya,
/tmp
jika itu bukan tmpfs, dan sebagian besar/var
, selain itu) ke direktori home Anda tentu saja).Dampak swap terenkripsi pada kinerja kecil hingga nihil. Enkripsi jauh lebih cepat daripada disk I / O.
sumber
chroot
dan wadah namespace denganswapoff
akan menjadi alternatif yang lebih baik untuk swap terenkripsi. Jawaban yang sangat bagus - tidak ada jawaban lain yang menyebutkan efek sistem file lainnya. Saya sendiri, saya tidak punyaswap
- Saya tidak memiliki komputer dengan RAM kurang dari 4GB, dan saya tidak dapat melihat manfaat menggunakannya. Penggunaannya hanya praktis untuk mesin mana pun yang terkait dengan penangguhan - dan itu mudah ditulis.Saya hanya berpikir apakah akan lebih baik untuk memulai dengan mengubah prioritas proses aplikasi pada misalnya dengan skrip start-up memulainya dengan menggunakan prioritas tinggi
nice
danrenice
dan dengan perubahan prioritas I / O yang denganionice
dan kemudian melihat apa terjadiAnda dapat 'menyenangkan' aplikasi ke tingkat prioritas tertinggi mis.
-20
Dengan cara itu Anda masih meninggalkan OS untuk melakukan yang terbaik dengan membuat keputusan tentang kapan harus menukar proses aplikasi.Tetapi telah disarankan oleh orang lain jika Anda ingin lebih banyak kontrol dan rincian Anda harus mulai melihat
cgroups
dan pengaturanmemory.swappiness
sumber