Saya mencari sesuatu seperti kertas putih keamanan ini untuk iOS kecuali untuk OS X atau bahkan lebih baik, semacam laporan audit keamanan dari pakar independen. Setelah membaca dokumentasi seperti Panduan Pemrograman Layanan Keychain, saya bahkan lebih bingung tentang apa yang rentan terhadap serangan permusuhan pada cadangan yang tidak terenkripsi dari Sistem OS X.
Terakhir kali saya periksa, gantungan kunci login pengguna di OS X hampir seaman kata sandi. Saya ingat beberapa masalah yang mengecilkan kerahasiaan kunci untuk sesuatu seperti 111 bit (memori berkabut, jangan ragu untuk mengoreksi saya) karena beberapa masalah dengan bagaimana kata sandi dikonversikan menjadi kunci, tetapi itu sudah lama sekali dan semoga itu sudah diperbaiki.
Di sisi lain, saya telah diberitahu bahwa Keychain Sistem secara inheren kurang aman karena administrator dapat mengaksesnya dan penyusup memiliki banyak pilihan untuk menjadi administrator selain menebak kata sandi satu pengguna.
Khususnya, saya khawatir tentang menyimpan kata sandi yang digunakan dalam skrip otomatis di Keychain Sistem karena file sistem dicadangkan dan disimpan di luar situs tanpa enkripsi lebih lanjut. Dokumen dan data pengguna lainnya dienkripsi sebelum dibawa keluar-situs, tetapi saya memiliki kecurigaan yang mengganggu bahwa ada jalan yang saya lewati yang memulihkan kunci-kunci tersebut setelah Sistem Keychain dikompromikan (karena prosedur kami, tidak harus ada kekurangan kriptografi) . Jadi saya ingin memiliki pemahaman menyeluruh tentang bagaimana Keychain Sistem secara bersamaan diamankan namun dapat diakses oleh administrator mana pun.
Bagaimana kunci dibuat sedemikian rupa sehingga setiap pengguna administratif dapat membuka kunci Sistem Keychain?
Apakah ada batasan kriptografi yang membatasi apa yang dapat dilakukan oleh pengguna administratif dengan informasi di System Keychain?
Diberikan cadangan sistem yang tidak terenkripsi tanpa
/Users
, bagaimana Anda mendapatkan akses ke kunci di System Keychain?
Saya tertarik dengan OS X 10.5 Leopard dan versi yang lebih baru.
sumber
Jawaban:
Keychain sistem disimpan
/Library/Keychains/System.keychain
dan kunci untuk membukanya disimpan/var/db/SystemKey
(izin file default-nya hanya dapat dibaca oleh root). Lokasi file-file ini direferensikan dalam skrip security-checksystem (dari sumber security_systemkeychain ). Bahkan dimungkinkan untuk menguji penguncian / pembukaan kunci otomatis sistem keychain dengan menggunakanKerangka keamanan gantungan kunci memungkinkan program yang tidak memiliki hak istimewa untuk membuat permintaan informasi asalkan mereka berada di ACL yang disimpan dalam entri gantungan kunci. Jelas jika seorang pengguna telah melakukan root pada suatu sistem, mereka dapat secara langsung mengakses file yang menyimpan gantungan kunci sistem dan kunci untuk membukanya, sehingga mereka tidak harus membuat permintaan melalui kerangka kerja keamanan dan tidak terikat pada ACL yang disimpan dalam gantungan kunci. diri.
(Saya tidak benar-benar menjawab pertanyaan asli jadi mari kita lanjutkan ini)
The kerangka libsecurity keychain memungkinkan proses biasa untuk berinteraksi dengan sistem gantungan kunci dengan cara yang dikonfirmasi menggunakan kerangka komunikasi Apple XPC interprocess (IPC).
Program A mengirimkan permintaan untuk mengakses informasi gantungan kunci sistem menggunakan IPC. Pemeriksaan dilakukan bahwa pengguna yang meminta sudah ada di grup wheel dan juga tahu kata sandi pengguna di grup wheel. Setelah otorisasi dikonfirmasi,
kcproxy
daemon privilege dapat digunakan untuk mengakses materi/var/db/SystemKey
, membuka kunci sistem dan mengembalikan informasi yang diminta.Tidak - pengguna administratif diizinkan untuk mengakses / mengubah apa pun di gantungan kunci sistem. Bahkan jika mereka tidak bisa, mereka dapat menyalin file yang mendasarinya ke mesin lain di mana mereka memiliki kontrol penuh dan hanya membuka / mengaksesnya di sana.
Jika cadangan berisi salinan
/Library/Keychains/System.keychain
dan/var/db/SystemKey
kemudian saya akan menyalinnya ke lokasi masing-masing pada sistem OS X baru dan gunakansystemkeychain
untuk membuat yang kemudian membuka bekas dan membuang basis data gantungan kunci menggunakansecurity dump-keychain
.sumber
Sistem Keychain
System Keychain memiliki beberapa kemampuan unik. Ini didokumentasikan oleh halaman manual key rantai . Sebutan kata sandi master cenderung menjadi fokus Anda. The sistem gantungan kunci kode sumber tertentu kecil dan tersedia.
System Keychain,,
/System/Library/Keychains/System.keychain
adalah Keychain khusus untuk Apple dan daemon yang digunakan. Anda umumnya harus menghindari menggunakannya untuk skrip tingkat pengguna.Ulasan Kode: Gantungan Kunci
Apple menerbitkan kode sumber untuk Keychain dan kerangka kerja keamanan untuk Mac OS X 10.5; Anda dapat meninjau kode ini untuk mengetahui cara kerjanya.
Pendekatan Alternatif: Gantungan Kunci Terpisah
Anda dapat membuat Keychain terpisah untuk menyimpan kredensial skrip Anda. Kami merekomendasikan praktik ini kepada pelanggan kami. Anda dapat menggunakan keamanan alat baris perintah untuk mengakses, mengekstrak, dan mengelola Gantungan Kunci Anda tanpa menggunakan antarmuka grafis.
Pertimbangkan menyimpan kata sandi untuk skrip otomatis Anda di Gantungan Kunci terpisah - dan kecualikan Gantungan Kunci ini dari cadangan di luar situs Anda.
Saya menghargai menghapus Keychain dari cadangan Anda tidak ideal tetapi itu akan mengatasi masalah Anda. Saat memulihkan Mac, Anda harus mendapatkan Keychain kembali dari sumber yang berbeda; mungkin sumber atau saluran samping yang lebih tepercaya.
Anda selalu dapat menyimpan kata sandi Keychain terpisah di Keychain Sistem. Anda kemudian dapat membuka Keychain terpisah dari skrip. Jika back-up diserang, Anda hanya akan mengekspos password ke Keychain terpisah dan bukan Keychain itu sendiri karena file ini tidak dengan back-up di luar situs.
sumber
Apple baru-baru ini menerbitkan dokumen yang menguraikan praktik keamanannya , Anda mungkin menemukan beberapa jawaban di sana. Dokumen ini khusus untuk iOS tetapi banyak fitur keamanan memiliki banyak kesamaan dengan OS X.
sumber
Saya tidak memiliki pengetahuan khusus tentang Keychain * tetapi ini adalah praktik yang cukup standar.
Setelah selesai, Anda dapat mengubah "kata sandi" dengan memasukkan frasa sandi saat ini, mendekripsi kunci simetris, dan kemudian mengenkripsinya dengan kata sandi baru. Ini menghindari proses dekripsi / enkripsi yang panjang jika "foo" sangat besar.
Jadi bagaimana cara kerjanya untuk beberapa pengguna yang perlu mengakses plaintext of foo? Cukup mudah kok, Anda cukup membuat salinan kunci simetris terenkripsi satu kali untuk setiap pengguna. Dengan kata lain, lakukan langkah tiga untuk setiap pengguna.
Dalam praktiknya, semua ini disarikan dari tampilan dan pengguna akhir hanya perlu berurusan dengan kata sandi mereka sendiri.
Berkenaan dengan bagian 3 dari pertanyaan Anda, kunci pengguna tidak disimpan di rumah mereka. Mereka kemungkinan besar akan disimpan di
/private/var
suatu tempat. Jadi bahkan tanpa/Users
seseorang yang sebelumnya memiliki akses akan dapat membuka kunci sistem.* Mungkin gantungan kunci berfungsi berbeda.
sumber