Terima kasih kepada semua orang yang datang, hari ini kita akan berbicara tentang enkripsi hard drive penuh (FDE), yang tidak seaman yang Anda pikirkan. Angkat tangan Anda, yang dengan demikian mengenkripsi HDD komputer Anda. Luar biasa! Kalau begitu, selamat datang di DefCon!

Sepertinya 90% dari Anda menggunakan perangkat lunak sumber terbuka untuk mengenkripsi drive Anda agar dapat mengauditnya. Sekarang biarkan mereka yang mematikan komputer jika mereka membiarkannya tanpa pengawasan mengangkat tangan mereka. Saya pikir sekitar 20% dari mereka yang hadir. Katakan, siapa yang meninggalkan komputer Anda tanpa pengawasan selama beberapa jam, apakah masalah apakah itu dihidupkan atau dimatikan? Pertimbangkan saya mengajukan pertanyaan ini, pastikan Anda bukan zombie dan tidak tidur. Saya pikir hampir semua orang harus meninggalkan komputer mereka setidaknya selama beberapa menit.
Jadi mengapa kita mengenkripsi komputer kita? Sulit untuk menemukan seseorang yang akan mengajukan pertanyaan ini, jadi saya pikir sangat penting untuk merumuskan motivasi untuk tindakan spesifik di bidang keamanan. Jika kita tidak melakukan ini, kita tidak akan dapat memahami bagaimana mengatur pekerjaan ini.
Ada banyak dokumentasi untuk perangkat lunak enkripsi disk yang menjelaskan apa yang dilakukan perangkat lunak tersebut, algoritma apa yang digunakannya, kata sandi apa, dan sebagainya, tetapi hampir tidak ada yang mengatakan mengapa ini dilakukan.
Jadi, kami mengenkripsi komputer kami karena kami ingin mengontrol data kami, kami ingin menjamin kerahasiaan mereka dan tidak ada yang bisa mencuri atau mengubahnya tanpa sepengetahuan kami. Kami ingin memutuskan sendiri apa yang harus dilakukan dengan data kami dan mengendalikan apa yang terjadi padanya.
Ada situasi ketika Anda hanya harus memastikan kerahasiaan data, misalnya, jika Anda seorang pengacara atau dokter dengan informasi klien rahasia. Hal yang sama berlaku untuk dokumentasi keuangan dan akuntansi. Perusahaan diharuskan memberi tahu pelanggan tentang kebocoran informasi tersebut, misalnya, jika seseorang meninggalkan laptop yang tidak terlindungi di dalam mobil yang dicuri, dan sekarang informasi rahasia ini mungkin tersedia secara bebas di Internet.
Selain itu, perlu untuk mengontrol akses fisik ke komputer dan memastikan perlindungannya dari dampak fisik, karena FDE tidak akan membantu jika seseorang secara fisik mengendalikan komputer Anda.
Jika kami ingin memastikan keamanan jaringan, kami perlu mengontrol akses ke komputer pengguna akhir. Kami tidak akan dapat membangun Internet yang aman tanpa memastikan keamanan setiap pengguna akhir.

Jadi, kami menemukan aspek teoritis dari kebutuhan untuk enkripsi disk. Kita tahu bagaimana menghasilkan angka acak untuk memastikan keamanan utama, bagaimana mengontrol mode enkripsi blok yang digunakan untuk sepenuhnya mengenkripsi drive, bagaimana cara aman mewarisi kunci untuk kata sandi, sehingga kita dapat mengasumsikan bahwa "misi selesai," seperti Presiden Bush mengatakan, berbicara di naik kapal induk. Tetapi Anda tahu bahwa ini tidak benar, dan kami masih harus melakukan banyak hal untuk menyelesaikannya.
Bahkan jika Anda memiliki kriptografi tanpa cacat dan Anda tahu bahwa itu hampir mustahil untuk dipecahkan, dalam hal apa pun itu harus diimplementasikan pada komputer nyata, di mana Anda tidak memiliki analogi "kotak hitam" yang dapat diandalkan. Seorang penyerang tidak perlu menyerang kriptografi jika ia mencoba untuk memecahkan enkripsi disk penuh. Untuk melakukan ini, ia hanya perlu menyerang komputer itu sendiri atau menipu pengguna agar meyakinkannya untuk memberikan kata sandi, atau menggunakan keylogger keylogger, dll.
Penggunaan enkripsi yang sebenarnya tidak cocok dengan model keamanan FDE. Jika Anda melihat perangkat lunak yang dirancang untuk enkripsi disk penuh, Anda dapat melihat bahwa penciptanya membayar banyak perhatian pada aspek teoritis enkripsi. Saya akan mengutip kutipan dari dokumentasi teknis dari situs web TrueCrypt: "Program kami tidak akan melindungi data apa pun di komputer jika penyerang memiliki akses fisik ke komputer sebelum peluncuran atau selama pengoperasian TrueCrypt."

Pada prinsipnya, seluruh model keamanan mereka terlihat seperti ini: "jika program kami mengenkripsi disk dengan benar dan mendekripsi disk dengan benar, kami telah melakukan tugas kami." Saya minta maaf untuk teks yang ditampilkan pada slide berikutnya, jika sulit bagi Anda untuk membacanya, saya akan melakukannya sendiri. Ini adalah kutipan dari korespondensi antara pengembang TrueCrypt dan peneliti keamanan Joanna Rutkovskaya tentang serangan "pembersih".
TrueCrypt: “Kami tidak pernah mempertimbangkan kemungkinan serangan perangkat keras, kami hanya menganggap yang terburuk. Setelah penyerang "bekerja" di komputer Anda, Anda hanya perlu berhenti menggunakannya untuk menyimpan informasi rahasia. Prosesor TPM crypto tidak dapat mencegah serangan perangkat keras, misalnya, menggunakan keyloggers.
Joanna Rutkovskaya bertanya kepada mereka: "Bagaimana saya bisa menentukan apakah penyerang" bekerja "di komputer Anda atau tidak, karena Anda tidak membawa laptop setiap saat?", Yang dijawab pengembang: "Kami tidak peduli bagaimana pengguna memastikan keselamatan dan keamanan komputer Anda. Misalnya, pengguna dapat menggunakan kunci atau meletakkan laptop saat mereka berada di dalam lemari yang dapat dikunci atau brankas. ” Joanna menjawabnya dengan sangat tepat: "Jika saya akan menggunakan kunci atau brankas, mengapa saya memerlukan enkripsi Anda sama sekali"?

Jadi, mengabaikan kemungkinan serangan semacam itu adalah bohong, kita tidak bisa melakukan itu! Kita hidup di dunia nyata di mana sistem ini ada dengan yang kita berinteraksi dan yang kita gunakan. Tidak ada cara untuk membandingkan 10 menit serangan yang dilakukan hanya menggunakan perangkat lunak, misalnya, dari flash drive, dengan sesuatu yang dapat Anda lakukan dengan memanipulasi sistem hanya dengan perangkat keras.
Dengan demikian, tidak peduli apa yang mereka katakan, keamanan fisik dan ketahanan terhadap serangan fisik bergantung pada FDE. Tidak masalah apa yang Anda berikan pada model keamanan Anda, dan setidaknya jika mereka tidak ingin bertanggung jawab, mereka harus dengan sangat jelas dan jujur menjelaskan kepada pengguna betapa mudahnya perlindungan yang mereka tawarkan dapat diretas.
Slide berikut memperlihatkan diagram boot FDE abstrak, yang digunakan oleh sebagian besar komputer modern.

Seperti yang kita ketahui, bootloader diambil dari SSD / HDD menggunakan BIOS dan disalin ke memori utama di sepanjang jalur transfer data Storage Controller - PCI Bus - Platform Controller Hub. Bootloader kemudian meminta pengguna untuk informasi otentikasi, seperti kata sandi atau kunci kartu pintar. Kemudian kata sandi beralih dari keyboard ke prosesor, setelah itu bootloader mengambil kendali, sementara kedua komponen - OS dan kunci - tetap berada dalam memori untuk memastikan transparansi proses enkripsi dan dekripsi disk. Ini adalah pandangan ideal dari proses tersebut, menunjukkan bahwa tidak ada yang akan mencoba melakukan intervensi dengan cara apa pun. Saya pikir Anda sangat menyadari beberapa cara untuk meretas ini, jadi mari kita daftarkan hal-hal yang bisa salah jika seseorang mencoba menyerang Anda. Saya membagi serangan menjadi 3 level.
Yang pertama adalah non-invasif, tidak memerlukan penangkapan komputer Anda, karena dilakukan menggunakan flash drive dengan malware. Anda tidak perlu "membongkar" sistem jika Anda dapat dengan mudah menghubungkan komponen perangkat keras apa pun seperti kartu PCI, ExpressCard atau Thunderbolt ke dalamnya - adaptor Apple terbaru yang menyediakan akses terbuka ke bus PCI.
Serangan tingkat kedua akan membutuhkan obeng, karena Anda mungkin perlu untuk sementara waktu menghapus komponen sistem untuk mengatasinya di lingkungan kecil Anda sendiri. Tingkat ketiga, atau "serangan besi solder", adalah yang paling sulit, di sini Anda secara fisik menambah atau memodifikasi komponen sistem, seperti chip, untuk mencoba memecahkannya.
Salah satu jenis serangan tingkat pertama adalah bootloader yang dikompromikan, juga dikenal sebagai serangan "pelayan jahat", di mana Anda perlu mengeksekusi beberapa kode yang tidak terenkripsi sebagai bagian dari proses boot sistem, sesuatu yang dapat Anda unduh sendiri menggunakan informasi pribadi Anda sehingga akses sisa data yang dienkripsi di hard drive Anda. Ada beberapa cara berbeda untuk melakukan ini. Anda dapat secara fisik mengubah bootloader di sistem penyimpanan. Anda dapat membahayakan BIOS atau memuat BIOS jahat yang mengendalikan adaptor keyboard atau prosedur membaca disk dan memodifikasinya agar tahan terhadap pelepasan hard drive. Tetapi bagaimanapun juga, Anda dapat memodifikasi sistem sehingga ketika pengguna memasukkan kata sandi, ia akan menulis ke disk dalam bentuk yang tidak dienkripsi, atau melakukan sesuatu yang serupa, itu tidak akan sulit bagi peretas.
Anda dapat melakukan hal serupa di level sistem operasi. Ini terutama benar jika Anda tidak menggunakan enkripsi disk penuh, tetapi enkripsi wadah.

Ini juga bisa terjadi ketika sistem diserang oleh eksploit, berkat penyerang mendapatkan hak root dan dapat membaca kunci dari memori utama, ini adalah metode serangan yang sangat umum. Kunci ini dapat disimpan pada hard disk sebagai teks biasa untuk digunakan oleh penyerang atau dikirim melalui jaringan ke sistem Command & Control.
Kemungkinan lain adalah intersepsi keyboard menggunakan keylogger, apakah itu perangkat lunak, perangkat keras atau sesuatu yang eksotis, seperti kamera jarum atau misalnya mikrofon yang merekam suara yang menyertai penekanan tombol pengguna dan mencoba mencari tahu apa itu. kunci. Sulit untuk mencegah serangan seperti itu, karena berpotensi termasuk komponen yang berada di luar sistem.

Saya juga ingin menyebutkan serangan pemulihan data, yang lebih dikenal sebagai Serangan Boot Dingin. Jika 5 tahun yang lalu Anda bertanya kepada orang yang sangat mengerti komputer apa saja fitur keamanan memori utama, mereka akan mengatakan bahwa ketika daya dimatikan, data menghilang dengan sangat cepat.
Tetapi pada tahun 2008, penelitian yang sangat baik diterbitkan oleh Princeton, yang menemukan bahwa pada kenyataannya, bahkan pada suhu kamar, ada sangat sedikit kehilangan data dalam memori RAM selama beberapa detik. Dan jika Anda mendinginkan modul ke suhu cryogenic, Anda bisa mendapatkan beberapa menit, di mana hanya sedikit degradasi data dalam memori utama terjadi.

Dengan demikian, jika kunci Anda ada di memori utama dan seseorang telah menghapus modul dari komputer Anda, mereka dapat menyerang kunci Anda dengan menemukan di mana ia berada di memori utama di tempat yang bersih. Ada beberapa metode untuk mengatasi hal ini di tingkat perangkat keras, misalnya, memaksa isi memori dihapus ketika daya dimatikan atau dinyalakan ulang, tetapi ini tidak akan membantu jika seseorang hanya mengeluarkan modul dan meletakkannya di komputer lain atau di bagian peralatan khusus untuk mengekstraksi isi memorinya.
Akhirnya, ada kemungkinan akses langsung ke memori. Setiap PCI - perangkat di komputer Anda memiliki kemampuan untuk membaca dan menulis konten dari sektor apa saja di memori utama dalam mode normal. Mereka bisa melakukan apa saja.

Ini dikembangkan bahkan ketika komputer jauh lebih lambat dan kami tidak ingin prosesor pusat "mengasuh" setiap transfer data ke perangkat dari memori utama. Dengan demikian, perangkat mendapatkan akses langsung ke memori, prosesor dapat memberi mereka instruksi yang bisa mereka selesaikan, tetapi data akan tetap ada di memori kapan pun Anda membutuhkannya.
Ini masalahnya, karena perangkat PCI dapat diprogram ulang. Banyak dari hal-hal ini memiliki firmware yang dapat ditulisi, yang dapat Anda upgrade ke sesuatu yang bermusuhan. Dan ini dapat membahayakan keamanan seluruh sistem operasi, karena akan memungkinkan segala bentuk serangan, bahkan untuk memodifikasi OS itu sendiri atau mengekstrak kunci secara langsung. Dalam forensik komputer, ada peralatan yang dirancang untuk hal-hal seperti itu dalam proses investigasi kejahatan: mereka menghubungkan sesuatu ke komputer Anda dan mengeluarkan isi memori. Anda dapat melakukan ini menggunakan FireWire, ExpressCard atau Thunderbolt ... Faktanya, semua ini adalah port eksternal yang menyediakan akses ke bus sistem internal.
Jadi, alangkah baiknya jika dimungkinkan untuk tidak menyimpan kunci dalam RAM, karena kami agak menunjukkan bahwa RAM tidak terlalu dapat diandalkan dari sudut pandang keamanan. Apakah ada toko kunci khusus atau peralatan kriptografi khusus? Ya ada. Anda dapat menggunakan akselerator kriptografi untuk server web untuk memproses lebih banyak transaksi SSL per detik. Mereka tahan terhadap gangguan yang tidak sah. Otoritas sertifikasi CA memiliki hal-hal yang menyimpan kunci rahasia teratas mereka, tetapi mereka tidak benar-benar dirancang untuk operasi berkinerja tinggi seperti menggunakan enkripsi disk. Jadi, apakah ada opsi lain?
Bisakah kita menggunakan prosesor sebagai semacam modul kripto perangkat keras semu? Bisakah kita menghitung sesuatu seperti algoritma cipher blok AES simetris dalam CPU, hanya menggunakan sesuatu seperti register CPU, bukan RAM?

Intel dan AMD menambahkan instruksi baru yang hebat ke prosesor yang mengambil pekerjaan mengeksekusi AES, jadi sekarang Anda dapat melakukan operasi enkripsi blok primitif hanya dengan satu instruksi pembuatan sederhana. Pertanyaannya adalah, bisakah kita meninggalkan kunci kita di memori, atau dapatkah kita melakukan proses ini tanpa mengandalkan memori utama? Prosesor x86 modern memiliki set register yang agak besar, dan jika ada di antara Anda yang benar-benar mencoba untuk menambahkan semua bit yang ada di dalamnya, Anda mendapatkan sekitar 4 kilobyte. Jadi, kita sebenarnya dapat menggunakan beberapa CPU untuk menyimpan kunci dan menciptakan ruang untuk operasi enkripsi.
Satu kemungkinan adalah dengan menggunakan register perangkat keras untuk debug breakpoints. Dalam prosesor Intel yang khas ada 4 register seperti itu, dan dalam sistem x64 masing-masing akan berisi pointer 64-bit. Ini adalah 256 bit ruang disk potensial yang tidak akan pernah digunakan oleh kebanyakan orang. Tentu saja, keuntungan menggunakan register debug adalah hak istimewa mereka, karena hanya sistem operasi yang dapat mengaksesnya. Ada keuntungan bagus lainnya di sini, misalnya, ketika Anda mematikan daya prosesor ketika Anda mematikan sistem atau masuk ke mode tidur, Anda benar-benar kehilangan seluruh isi register, sehingga Anda tidak perlu takut akan "restart dingin".
Seorang pria dari Jerman, Tilo Muller, mengimplementasikan hal serupa yang disebut TRESOR untuk Linux pada tahun 2011. Dia menguji kinerja sistem seperti itu dan menyimpulkan bahwa itu bekerja tidak lebih lambat daripada dengan perhitungan AES reguler oleh perangkat lunak.
Bagaimana dengan menyimpan dua kunci 128-bit alih-alih satu kunci? Ini akan membawa kita ke ruang cryptomodule yang lebih besar. Kita dapat menyimpan satu kunci utama yang tidak pernah meninggalkan prosesor saat boot, dan kemudian memuat dan menurunkan versi kunci yang kita perlukan untuk melakukan operasi tambahan dan menyelesaikan tugas tambahan.
Masalahnya adalah kita dapat menyimpan kode atau kunci kita di luar memori utama, tetapi CPU tetap akan memproses isi memori. Jadi, penggunaan DMA, teknologi akses memori langsung, melewati prosesor sentral, atau manipulasi lainnya, memungkinkan Anda untuk mengubah sistem operasi dan menyimpan dumpnya di luar register memori utama, atau, jika metode yang lebih eksotis digunakan, di luar register debug.
Bisakah kita melakukan sesuatu dengan angle of attack DMA? Ternyata, ya, kita bisa. Baru-baru ini, sebagai bagian dari teknologi baru untuk meningkatkan virtualisasi server, untuk alasan kinerja, orang-orang suka dapat terhubung, katakanlah, adaptor jaringan ke server virtual, sehingga harus terhubung melalui hypervisor.

Teknologi IOMMU telah dirancang sedemikian rupa sehingga Anda dapat mengisolasi perangkat PCI di partisi memori kecil Anda sendiri, dari mana ia tidak dapat secara sewenang-wenang membaca dan menulis di mana saja dalam sistem. Ini sangat ideal: kita dapat mengonfigurasi izin IOMMU untuk melindungi sistem operasi kami atau apa yang kami gunakan untuk memproses kunci, dan melindunginya dari akses acak.
Sekali lagi, teman kami dari Jerman, Tilo Muller, menerapkan versi TRESOR pada pelindung mikrobit yang disebut BitVisor, yang melakukan ini. Ini memungkinkan Anda untuk menjalankan sistem operasi terpisah dan secara transparan mengakses enkripsi disk, dan yang hebat adalah Anda tidak perlu khawatir tentang hal itu atau tahu apa-apa tentang itu. , , IOMMU , - .

, , , , , . , – , .
, , . , RAM , , . , , , , SSH-, PGP-, « », .

: RAM? , , , , .

, , , – , ! 2010 RAM. — : “clear”, , , . 10-50 . , , , -, – 10% . , . , , ? , TPM , , , .
-, , . , , - CPU.
, . , , , . , , - . , ? , . ? , - , , , “ ” , .

, . , , . — Trusted Platform Module – , . , , , , TPM . , «» , . , , . , , .

? -. - , - «» , . , .
, – -, . , RSA/SHA1, , , - . - , . , .
23:10
DEFCON 21. , «» . Bagian 2Terima 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?