DEFCON 21. Kata sandi saja tidak cukup, atau mengapa enkripsi disk “terputus” dan bagaimana hal ini dapat diperbaiki. Bagian 2

DEFCON 21. Kata sandi saja tidak cukup, atau mengapa enkripsi disk “terputus” dan bagaimana hal ini dapat diperbaiki. Bagian 1

Ada hal-hal lucu, seperti penghitung yang meningkat secara monoton, yang dengannya Anda dapat mengontrol aktivitas TMP, dan kemudian memeriksa nilai yang diterima. Ada sejumlah kecil memori non-volatile yang dapat digunakan untuk kebutuhan Anda, tidak sebesar satu kilobyte, tetapi juga dapat bermanfaat. Ada penghitung jam yang memungkinkan Anda untuk menentukan berapa lama sistem telah bekerja sejak awal terakhir. Ada perintah yang bisa Anda berikan kepada TMP untuk melakukan hal-hal atas nama Anda, termasuk menghapus ingatan Anda sendiri jika perlu.



Lalu kami ingin mengembangkan protokol yang dapat dijalankan pengguna di komputer untuk memastikan bahwa komputer belum diretas, sebelum diautentikasi di komputer dan mulai menggunakannya. Apa yang berguna untuk protokol semacam itu, kita dapat mencoba untuk "menyegel" ke register konfigurasi platform?

Saya punya beberapa saran: ini adalah token untuk kata sandi pengguna satu kali, gambar atau animasi yang unik, misalnya foto Anda, sesuatu yang orisinal yang tidak mudah ditemukan di tempat lain. Anda juga dapat mematikan "video out" di komputer Anda ketika Anda berada dalam permintaan otentikasi dan mode otentikasi.

Anda mungkin juga ingin "menyegel" bagian dari kunci disk, dan ada beberapa alasan mengapa Anda ingin melakukan ini. Di bawah asumsi keamanan tertentu, ini memastikan bahwa sistem hanya akan mem-boot ke beberapa konfigurasi perangkat lunak yang disetujui yang Anda kontrol sebagai pemilik komputer. Pada akhirnya, ini berarti bahwa siapa pun yang ingin menyerang sistem Anda harus melakukan ini melalui meretas TMP, atau di kotak pasir yang Anda buat untuk mereka. Tentu saja, ini bukan perlindungan kriptografi yang sangat kuat, karena Anda tidak akan memiliki protokol yang memungkinkan pengguna untuk mengotentikasi secara aman dengan tingkat keamanan yang sama dengan yang diberikan AES, katakan. Tetapi jika Anda tidak dapat mengatur sesuatu seperti enkripsi RSA di kepala Anda sendiri, itu tidak akan pernah sempurna.



Saya menyebutkan bahwa di TPM ada perintah self-erase yang dapat dieksekusi melalui perangkat lunak. Karena TPM memerlukan konfigurasi sistem tertentu, sebelum memberikan "rahasia", Anda dapat melakukan sesuatu yang menarik, misalnya, penghancuran diri. Anda dapat mengembangkan perangkat lunak dan membuat protokol Anda sendiri untuk membatasi jumlah komputer yang gagal dimulai, Anda dapat mengatur batas waktu setelah kata sandi muncul di layar selama periode waktu tertentu, atau membatasi jumlah upaya memasukkan kata sandi yang salah.

Anda dapat mengatur batas waktu untuk me-restart komputer setelah siklus kerja sebelumnya, jika komputer berada dalam "keadaan beku" selama satu atau dua minggu, batasi akses ke komputer untuk periode waktu ketika Anda akan pergi ke luar negeri - Anda memblokirnya saat Anda berada di jalan untuk membuka kunci tidak lebih awal dari ketika Anda tiba di hotel.

Anda juga dapat melakukan beberapa hal lucu, misalnya, meninggalkan "burung kenari" kecil pada disk yang berisi data penting dari sudut pandang keamanan. Bahkan, ini hanya akan menjadi "stretch mark," yang memicu yang akan mengarah pada perubahan nilai penghitung monoton di dalam TPM.

Anda juga dapat membuat kata sandi penghancuran diri atau kode paksa untuk secara otomatis menjalankan perintah reset. Karena penyerang dapat menyerang dengan dua cara: meretas modul platform tepercaya atau menjalankan perangkat lunak berbahaya, Anda dapat memaksanya untuk bermain sesuai aturan ini dan benar-benar melakukan penghancuran diri yang efektif.

Modul Platform Tepercaya secara khusus dirancang agar sangat sulit untuk disalin, sehingga tidak mungkin untuk hanya mengkloningnya. Dengan cara ini, Anda dapat menggunakan hal-hal seperti penghitung monoton untuk mendeteksi setiap pemulihan atau serangan disc pemutaran. Dan segera setelah perintah yang jelas dijalankan di TPM, untuk penyerang yang ingin mengakses data Anda, permainan akan berakhir.
Ada beberapa kesamaan dengan sistem yang dibahas Jacob Appelbaum di konferensi Kongres Komunikasi Kekacauan bertahun-tahun yang lalu, pada tahun 2005. Dia menyarankan menggunakan server jaringan jarak jauh untuk mengimplementasikan banyak opsi ini, tetapi mengakui bahwa akan sulit untuk digunakan dalam praktik. Karena TPM adalah komponen terintegrasi dari sistem, Anda dapat memperoleh banyak manfaat hanya dengan modul TPM bawaan, dan bukan modul yang terletak di server jarak jauh. Pendekatan hibrida berpotensi terjadi. Anda dapat mengatur sistem, katakanlah, seperti di departemen TI, ketika Anda sementara memblokir sistem, dan itu dapat menjadi tersedia hanya setelah Anda menghubungkannya ke jaringan, hubungi administrator TI Anda dan mereka akan membukanya. Saya ragu untuk mendorong tumpukan jaringan di awal proses boot, hanya karena secara signifikan meningkatkan permukaan serangan. Tetapi itu masih mungkin.

Saya ingin mengklarifikasi bahwa seorang penyerang hanya dapat melakukan ini, dengan asumsi bahwa ia tidak akan dapat dengan mudah memecahkan TPM. Slide berikutnya menunjukkan gambar desain chip TPM, dibuat oleh Chris Tarnovsky dengan mikroskop. Chris berbicara dengan DefCon tahun lalu dan membuat presentasi di konferensi BlackHat tentang keamanan TPM beberapa tahun yang lalu.
Dia benar-benar melakukan pekerjaan yang bagus untuk memahami betapa sulitnya memecahkan hal ini. Dia mendaftar langkah-langkah penanggulangan, menemukan apa yang diperlukan untuk benar-benar memecahkan hal ini, dan kemudian menguji seluruh chip. Ada detektor cahaya, kisi aktif di papan TPM, berbagai skema yang benar-benar gila diterapkan untuk menyesatkan penyerang tentang apa yang sebenarnya dilakukan modul ini.

Tetapi jika Anda menghabiskan cukup waktu dan sumber daya dan cukup berhati-hati, Anda dapat mengatasi sebagian besar tindakan perlindungan. Anda dapat menghapus chip, letakkan dengan mikroskop elektron di workstation, temukan di mana bus dengan data yang tidak terenkripsi berada dan tarik semua rahasia darinya. Namun demikian, serangan seperti itu, bahkan jika Anda dengan hati-hati bersiap untuk itu dan mencari tahu di mana letaknya menggunakan mikroskop yang mahal, masih akan membutuhkan waktu dan upaya untuk menghapus perlindungan fisik chip dan tidak sengaja "menggorengnya" selama pembongkaran .



Pertimbangkan serangan reboot. Saya sebutkan sebelumnya bahwa dalam hampir semua kasus, TPM adalah chip terpisah pada motherboard. Ini adalah tautan yang sangat rendah dalam hierarki sistem. Ini bukan bagian dari CPU, seperti yang dilakukan dengan DRM di konsol video. Oleh karena itu, jika seorang hacker berhasil me-restart TPM, ini tidak akan memiliki efek yang tidak dapat dikembalikan pada sistem. Ini buruk, karena serangan semacam itu mungkin tidak Anda sadari.



Ini biasanya sebuah chip yang terletak di luar bus komputer LPC, yang itu sendiri adalah bus usang dan terletak di luar jembatan selatan motherboard. Dalam sistem modern, satu-satunya hal yang terletak di permukaan motherboard adalah TPM, BIOS, pengontrol keyboard, tapi saya pikir sebenarnya pengontrol fleksibel tidak lagi menggunakannya. Dan jika Anda menemukan cara untuk me-restart bus dengan sejumlah kecil kontak, Anda akan mengatur ulang TPM ke kondisi boot dari "sistem operasi baru". Anda mungkin akan kehilangan akses ke keyboard melalui konektor PS / 2, tetapi ini bukan masalah besar, tetapi Anda dapat memainkan urutan boot TPM di mana data rahasia "disegel" tanpa benar-benar melakukan urutan yang aman, dan Anda dapat menggunakannya untuk mengekstrak data.

Ada beberapa serangan yang mencoba menggunakan metode ini. Jika TPM menggunakan mode lama yang disebut Static Root of Trust for Measurement (SRTM), maka Anda dapat melakukannya dengan cukup mudah. Saya belum melihat penelitian tentang serangan yang berhasil terhadap teknologi baru yang dapat diandalkan untuk menerapkan opsi aktivasi modul Intel. Mungkin masih mungkin untuk menangkap bus LPC dan apa yang diteruskan ke CPU adalah area yang perlu penelitian lebih lanjut. Ini bisa menjadi cara lain untuk menyerang modul platform tepercaya.
Jadi, mari kita lihat diagram dari apa yang kita butuhkan untuk memiliki sistem boot dingin dengan konfigurasi yang andal. Ada banyak komponen yang agak rentan dalam arsitektur PC.



Misalnya, di BIOS Anda dapat menangkap tabel vektor interupsi dan memodifikasi hak baca disk, atau mencegat input keyboard, tutup semua fungsi register CPU - ada banyak opsi serangan. Menurut pendapat saya, Anda tidak perlu melakukan pemeriksaan keamanan dalam mode boot nyata dari BIOS, Anda hanya perlu mengukur kinerja proses booting.

Segera setelah Anda memasuki mode "preboot", yang sebenarnya hanya sistem operasi Anda, seperti disk RAM awal Linux, Anda mulai menjalankan protokol Anda dan melakukan hal-hal ini. Maksud saya, segera setelah Anda mulai menggunakan sumber daya sistem operasi, apa yang dilakukan seseorang di tingkat BIOS, yang beroperasi dengan tabel interupsi, tidak akan memengaruhi Anda dengan cara apa pun. Anda benar-benar tidak akan peduli.

Anda dapat memeriksa kinerja register. Misalnya, jika Anda bekerja dengan prosesor Core i5, maka Anda tahu bahwa itu akan mendukung hal-hal seperti bit larangan eksekusi, register debug, dan hal-hal lain yang orang bisa coba untuk menutupi kemampuan register.

Slide ini menunjukkan seperti apa diagram sistem seharusnya ketika diluncurkan dalam konfigurasi yang berfungsi.



Ada proyek bernama BitVisor yang mengimplementasikan banyak aspek keamanan enkripsi disk menggunakan register prosesor dan perlindungan IOMMU di memori utama Anda. Masalahnya adalah bahwa BitVisor adalah program yang agak spesifik dan jarang digunakan.
Xen adalah sejenis hypervisor open source kanonik yang mengambil bagian dalam banyak studi keamanan, di mana orang yakin bahwa itu berfungsi. Menurut pendapat saya, kita harus menggunakan Xen hypervisor sebagai antarmuka perangkat keras bare-level, dan kemudian menambahkan domain administratif Linux dom0 untuk menginisialisasi perangkat keras Anda.

Sekali lagi, di Xen, semua domain tervirtualisasi Anda berfungsi dalam mode tidak terprivasi, sehingga Anda sebenarnya tidak memiliki akses langsung ke register debug, ini adalah salah satu hal yang telah dilakukan. Xen membuat hypercalls yang memberi Anda akses ke hal-hal seperti itu, tetapi Anda dapat mematikan fitur ini di perangkat lunak.

Jadi, pendekatan yang saya gunakan adalah kita menempatkan kunci master di register debug. Kami membedakan dua register debug pertama untuk menyimpan kunci AES 128-bit, yang merupakan kunci utama kami.



Hal ini tidak pernah meninggalkan register CPU setelah dimasukkan oleh proses yang menerima kredensial pengguna. Kemudian kita menggunakan dua register kedua sebagai register spesifik dari mesin virtual - mereka dapat digunakan sebagai register debug biasa atau, seperti dalam kasus ini, kita dapat menggunakannya untuk mengenkripsi memori utama. Dalam kasus khusus ini, kita perlu memiliki beberapa perangkat yang terhubung langsung ke domain administrasi. Ini adalah prosesor grafis, yang merupakan perangkat PCI, keyboard, TPM - semua ini harus dapat diakses secara langsung.

Anda tidak dapat menggunakan perlindungan IOMMU untuk hal-hal ini, tetapi Anda dapat mengonfigurasi perlindungan ini untuk pengontrol jaringan, pengontrol penyimpanan, perangkat sewenang-wenang di bus PCI, yaitu, untuk komponen yang tidak memiliki akses ke domain administratif atau ruang memori hypervisor. Anda dapat mengakses hal-hal seperti jaringan dengan benar-benar menempatkan pengontrol jaringan dalam mesin virtual Net VM khusus. Hal-hal ini akan dipetakan ke perangkat tertentu yang memiliki keamanan IOMMU dikonfigurasi, sehingga perangkat semacam itu hanya dapat mengakses area memori mesin virtual ini.

Anda dapat melakukan hal yang sama dengan Storage Controller dan kemudian menjalankan semua aplikasi pada VM aplikasi dengan nol akses langsung ke perangkat keras. Jadi, bahkan jika seseorang mengendalikan browser web Anda atau mengirimkan file PDF berbahaya kepada Anda, ia tidak akan menerima apa pun yang akan membahayakan enkripsi disk.

Saya tidak dapat mengambil tanggung jawab untuk desain arsitektur ini, karena sebenarnya itu adalah dasar dari proyek yang sangat baik yang disebut Qubes OS.



Pengembangnya menggambarkan proyek ini sebagai formasi pragmatis Xen, Linux, dan beberapa alat khusus untuk mengimplementasikan banyak hal yang baru saja saya bicarakan. OS Qubes menerapkan kebijakan tamu yang tidak terjangkau dan menciptakan lingkungan sistem yang terpadu, sehingga tampaknya Anda bekerja dengan sistem yang sama, tetapi sebenarnya itu adalah sekelompok mesin virtual yang berbeda "di bawah satu tudung". Saya menggunakan ide ini untuk mengimplementasikan basis kode saya.

Jadi, alat yang saya kembangkan adalah kode eksperimental yang mengkonfirmasi konsep ini, saya menyebutnya Phalanx. Ini adalah Xen yang ditambal yang memungkinkan Anda untuk mengimplementasikan enkripsi disk menggunakan teknologi yang saya jelaskan.



Kunci utama terletak di 2 register debug pertama DR1-2, dua register debug kedua DR2-3 benar-benar tidak terbatas oleh domU. Untuk alasan keamanan, XMM mendaftarkan 0-12, digunakan sebagai memori operasi, DR2-3, dan kunci dienkripsi ketika mesin virtual beralih konteks. Saya juga membuat implementasi enkripsi yang sangat sederhana menggunakan modul kernel Linux zRAM, karena ini adalah elemen bawaan yang melakukan hampir semua hal kecuali kriptografi, jadi untuk enkripsi saya hanya menambahkan sepotong kode yang sangat kecil di atasnya. Seperti yang Anda ketahui, kode teraman adalah kode yang tidak perlu Anda tulis. Fitur zRAM yang baik adalah ia menyediakan Anda sejumlah bit yang diperlukan untuk mengimplementasikan hal-hal seperti AES Counter-Mode dengan aman.

Kami memiliki beberapa persyaratan perangkat keras. Anda memerlukan sistem yang mendukung instruksi AES baru, yang sangat umum, tetapi tidak semua sistem memilikinya. Kemungkinan besar, jika Anda memiliki prosesor Intel i5 atau i7, instruksi ini didukung.



Tetapi sisa "perangkat keras" harus diperiksa untuk memastikan bahwa ia mendukung semua fungsi yang diperlukan. Ekstensi perangkat keras virtualisasi HVE menjadi tersebar luas sekitar tahun 2006. Akan sedikit lebih sulit untuk menemukan komputer dengan IOMMU. Ini tidak ditunjukkan dalam spesifikasi unit sistem, dan Anda perlu mempelajari karakteristiknya, dan juga mencari tahu apa perbedaan antara VTX dan VTD dan seterusnya. Jadi, Anda mungkin harus mencari sistem yang mendukung hal-hal ini. Dan Anda, tentu saja, membutuhkan sistem dengan modul platform TPM tepercaya, karena jika tidak, Anda tidak akan dapat mengukur metrik beban sama sekali. Biasanya Anda melihat komputer kelas bisnis di mana Anda dapat memeriksa ketersediaan komponen yang diperlukan. Jika Anda menemukan Intel TXT dengan teknologi Eksekusi Tepercaya, ia akan memiliki hampir semua yang Anda butuhkan. Tim Qubes di Wiki menyajikan daftar kompatibilitas perangkat keras yang sangat baik, yang mencantumkan detail untuk banyak sistem yang menerapkan hal-hal seperti itu.

Jadi, untuk memastikan keamanan, kami memiliki beberapa asumsi tentang beberapa komponen sistem. TPM, tentu saja, adalah komponen yang sangat penting untuk memastikan integritas boot. Anda perlu memastikan bahwa tidak ada pintu belakang yang dapat mengatur ulang NVRAM, memanipulasi penghitung monoton, atau membuat sistem berpikir bahwa itu menggunakan keadaan tepercaya, meskipun dalam kenyataannya tidak. Berdasarkan komentar Tarnovsky, yang melakukan rekayasa balik chip ini, saya menetapkan batas sekitar 12 jam akses eksklusif ke komputer, yang diperlukan jika Anda ingin meluncurkan serangan TPM di atasnya untuk mengambil semua rahasia.

\

, IOMMU, , . , Intel , .

Xen. , , , . , Xen , , .
, . , , , , - . , . , .
, – . , , , , .



, , , . , , , — , , , .

— , . FDE , RAM.

, IOMMU, . TPM NVRAM, , – , , .

, , , 12 . , .

, , . , .

TPM — NVRAM, / LPC. TPM , , , , .



RAM . , RAM RAM, , , . , , Sony PS3.

, . , . , , , , , TPM . , , , , , RIPA – , .
. , , , . .

-, . OpenSSL , API, .

Qubes OS.



: , . .

– .

, , -. , , , . Terima kasih atas perhatian anda!


Terima kasih telah tinggal bersama kami. Apakah Anda suka artikel kami? Ingin melihat materi yang lebih menarik? Dukung kami dengan melakukan pemesanan atau merekomendasikannya kepada teman-teman Anda, diskon 30% untuk pengguna Habr pada analog unik dari server entry-level yang kami temukan untuk Anda: Seluruh kebenaran tentang VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps dari $ 20 atau bagaimana membagi server? (opsi tersedia dengan RAID1 dan RAID10, hingga 24 core dan hingga 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps hingga musim semi gratis ketika membayar selama setengah tahun, Anda dapat memesan di sini .

Dell R730xd 2 kali lebih murah? Hanya kami yang memiliki 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV dari $ 249 di Belanda dan Amerika Serikat! Baca tentang Cara Membangun Infrastruktur kelas menggunakan server Dell R730xd E5-2650 v4 seharga 9.000 euro untuk satu sen?

Source: https://habr.com/ru/post/id435178/


All Articles