Sekilas tentang Intel SGX dan perannya di cloud
Intel Software Guard Extensions (Intel SGX) adalah sekumpulan instruksi CPU yang membuat area terlindung pribadi (enklave) di ruang alamat aplikasi tempat kode tingkat pengguna berada. Teknologi tersebut menjamin kerahasiaan dan integritas data sensitif. Dengan mengisolasi mereka dalam suatu enklave, mereka mendapatkan perlindungan tambahan dari akses eksternal yang tidak sah, termasuk dari penyedia cloud, dan dari ancaman internal, termasuk serangan dari perangkat lunak yang memiliki hak istimewa.
Prinsip kerja.Teknologi Intel SGX mengalokasikan Memori Cadangan Prosesor (PRM) untuk menyimpan kode dan data enklaf. CPU melindunginya dari semua panggilan eksternal, termasuk akses kernel dan hypervisor. PRM berisi Enclave Page Cache (EPC) dari 4 blok halaman KiB, setiap halaman harus dimiliki oleh hanya satu enklave, dan statusnya ditangkap di Enclave Page Cache Metadata (EPCM) dan dipantau oleh CPU.
Keamanan EPC dipastikan oleh Memory Encryption Engine (MEE), yang menghasilkan kunci enkripsi yang disimpan di CPU. Diasumsikan bahwa halaman hanya dapat didekripsi di dalam inti prosesor fisik.
Manfaat.Intel SGX membantu meningkatkan tingkat kepercayaan pada cloud publik di pihak organisasi yang menggunakan data sensitif dalam pekerjaan mereka (kata sandi, kunci enkripsi, identifikasi, biometrik, data medis, serta informasi yang terkait dengan kekayaan intelektual). Kita berbicara tentang perwakilan dari berbagai macam industri - sektor keuangan, kedokteran dan perawatan kesehatan, ritel, pengembangan game, telekomunikasi, media.
Pendekatan Kami untuk Menerapkan Intel SGX
Untuk memungkinkan pengalokasian mesin virtual dengan enklave Intel SGX di cloud publik G-Core Labs, kami harus mulai dari mengompilasi kernel KVM dan QEMU yang telah ditambal hingga menulis skrip Python di layanan OpenStack Nova. Kami memutuskan untuk menentukan node komputasi yang direncanakan akan digunakan untuk mengalokasikan mesin virtual dengan keamanan tinggi ke dalam agregator terpisah - jenis sumber daya komputasi yang memerlukan konfigurasi tambahan. Pada node seperti itu perlu:
- Aktifkan dukungan Intel SGX BIOS.

- Instal QEMU / KVM yang ditambal.
Awalnya, kami tidak memiliki pemahaman tentang bagaimana ini harus bekerja dan apa pada akhirnya kami harus mengencangkan untuk mendapatkan VM dari konfigurasi yang diinginkan. Bagian dari Panduan Pengembang Intel membantu menyelesaikan masalah ini . Dengan bantuannya, kami belajar bagaimana menyiapkan node komputasi untuk bekerja dengan SGX dan parameter tambahan apa yang harus dimiliki file konfigurasi XML dari mesin virtual. Di sini kami menemukan informasi lengkap tentang cara membuat mesin tamu menggunakan Intel SGX menggunakan virtualisasi KVM. Untuk memastikan bahwa kami dapat memberikan dukungan untuk teknologi ini, kami menggunakan dua metode:
- Memeriksa bagian / dev / sgx / virt_epc di file / proc / $ PID / smaps:
[root@compute-sgx ~]# grep -A22 epc /proc/$PID/smaps 7f797affe000-7f797b7fe000 rw-s 00000000 00:97 57466526 /dev/sgx/virt_epc Size: 8192 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd wr sh mr mw me ms pf io dc dd hg
- Dan kami menggunakan skrip shell ini, setelah menginstal driver SGX (semua tindakan dilakukan di dalam VM):
[root@sgx-vm ~]# cat check_sgx.sh #!/bin/bash METRICS="sgx_nr_total_epc_pages \ sgx_nr_free_pages \ sgx_nr_low_pages \ sgx_nr_high_pages \ sgx_nr_marked_old \ sgx_nr_evicted \ sgx_nr_alloc_pages \ " MODPATH="/sys/module/isgx/parameters/" for metric in $METRICS ; do echo "$metric= `cat $MODPATH/$metric`" done [root@sgx-vm ~]# curl -fsSL https://raw.githubusercontent.com/scontain/SH/master/install_sgx_driver.sh | bash -s - install -p metrics -p page0 [root@sgx-vm ~]# ./check_sgx.sh sgx_nr_total_epc_pages= 2048 sgx_nr_free_pages= 2048 sgx_nr_low_pages= 32 sgx_nr_high_pages= 64 sgx_nr_marked_old= 0 sgx_nr_evicted= 0 sgx_nr_alloc_pages= 0
Perlu diingat bahwa jika satu halaman berukuran 4 KiB, maka 2048 halaman membutuhkan 8 MiB (2048 x 4 = 8192).
Mengembangkan kesulitan dan mengatasinya
Kurangnya dokumentasi teknis untuk mengintegrasikan Intel SGX ke OpenStack adalah kesulitan utama kami pada saat implementasi. Pencarian membawa kami ke sebuah artikel dari proyek SecureCloud, yang menyajikan cara untuk mengelola mesin virtual dengan kantong SGX.
Informasi yang ditemukan membantu untuk memahami apa sebenarnya yang harus kami kerjakan. Akibatnya, kami telah membentuk tugas-tugas berikut:
- Dapatkan layanan OpenStack Nova untuk menghasilkan file XML dengan parameter tambahan untuk mesin virtual dengan dukungan Intel SGX.
- Tulis filter OpenStack Nova scheduler untuk menentukan memori yang tersedia untuk enklave pada node komputasi dan melakukan beberapa pemeriksaan lainnya.
Eksekusi mereka cukup untuk mengintegrasikan Intel SGX ke cloud publik kami.
Selain itu, kami telah menambahkan kumpulan statistik dengan mempertimbangkan EPC:
# openstack usage show
Usage from 2020-11-04 to 2020-12-03 on project a968da75bcab4943a7beb4009b8ccb4a:
+---------------+--------------+
| Field | Value |
+---------------+--------------+
| CPU Hours | 47157.6 |
| Disk GB-Hours | 251328.19 |
| EPC MB-Hours | 26880.02 |
| RAM MB-Hours | 117222622.62 |
| Servers | 23 |
+---------------+--------------+
Lingkungan yang aman untuk menjalankan aplikasi dalam kontainer
Setelah belajar menyediakan VM berkemampuan Intel SGX, kami menggunakan platform SCONE Scontain untuk memastikan bahwa aplikasi dalam container dapat berjalan dengan aman jika terjadi ancaman perangkat lunak yang dilindungi. Dengan solusi ini untuk perlindungan sistem file transparan di lingkungan Docker, Kubernetes, dan Rancher, prosesor yang mendukung Intel SGX dan driver Linux SGX sudah cukup.
Peluncuran setiap kontainer hanya mungkin jika ada file konfigurasi yang dibuat oleh ekstensi klien dari platform SCONE. Ini berisi kunci enkripsi, argumen aplikasi, dan variabel lingkungan. File, lalu lintas jaringan, dan aliran I / O standar (stdin / stdout) dienkripsi secara transparan dan tidak dapat diakses bahkan oleh pengguna root.
Platform SCONE dilengkapi dengan layanan pengesahan dan konfigurasi bawaan yang memvalidasi aplikasi terhadap kebijakan keamanan yang diterima. Ini menghasilkan kunci pribadi dan sertifikat yang seharusnya hanya tersedia di dalam enklaf. Kerahasiaan dan integritas data dalam proses transfernya dijamin oleh protokol kriptografi TLS.
Driver SGX mencadangkan hingga 64 GB memori untuk setiap enklaf di ruang alamat virtual. Platform SCONE mendukung bahasa pemrograman C / C ++ / C # / Rust / Go / Python / Java. Karena kompiler khusus, kode sumber secara otomatis (tanpa perlu modifikasi tambahan) disiapkan untuk digunakan bersama dengan Intel SGX.
Kasus agregasi
Setelah menyelesaikan semua pekerjaan yang diperlukan pada integrasi Intel SGX, kami menghubungkan platform manajemen data terdistribusi Agregion ke cloud publik kami.
Ini dimaksudkan untuk pelaksanaan proyek pemasaran bersama oleh perwakilan dari berbagai industri - jasa keuangan dan asuransi, pemerintah, telekomunikasi, ritel. Mitra menganalisis perilaku konsumen, mengembangkan promosi barang dan jasa yang ditargetkan, mengembangkan program loyalitas yang diminta, bertukar, dan memproses kumpulan data anonim di platform Agregion. Karena kebocoran informasi rahasia sangat tidak diinginkan dan mengancam dengan risiko reputasi yang serius, perusahaan memberikan perhatian khusus pada masalah keamanan.
Perangkat lunak Aggregion sepenuhnya terintegrasi ke dalam penyedia data, yang berarti bahwa ia memiliki infrastruktur dengan dukungan Intel SGX. Sekarang pelanggan perusahaan dapat mempertimbangkan untuk terhubung ke cloud publik kami sebagai alternatif untuk menyewa atau membeli server fisik.
Prinsip kerja yang aman di platform Agregion. Di loop setiap pemasok, data sensitif diisolasi ke dalam kantong Intel SGX, yang sebenarnya merupakan kotak hitam: apa yang terjadi di dalamnya tidak tersedia untuk siapa pun, termasuk penyedia infrastruktur cloud. Verifikasi keadaan awal enklaf dan kemungkinan penggunaannya untuk menyimpan informasi rahasia dilakukan melalui pengesahan jarak jauh, saat MrEnclavemendefinisikan nilai hash.
Manfaat pelanggan potensial. Menggabungkan database dari beberapa vendor dapat meningkatkan keefektifan kampanye iklan bersama. Ketika audiens target dialokasikan sesuai dengan parameter yang ditentukan, pencocokan (pencocokan) segmen dilakukan langsung di dalam container dengan dukungan untuk enclave Intel SGX. Hanya hasil akhirnya yang ditampilkan di luar batas: misalnya, jumlah pengguna yang cocok dengan atribut yang dipilih. Efektivitas kampanye dinilai dengan cara yang sama: data tentang tayangan iklan dan penjualan yang diselesaikan diunggah ke kantong untuk menghitung peningkatan pembelian dari kelompok target relatif terhadap kelompok kontrol, yang kemudian dikirim untuk digunakan lebih lanjut.
kesimpulan
Kami memahami bahwa Intel SGX bukanlah obat mujarab untuk perlindungan data dan Anda dapat menemukan sejumlah artikel yang mengutuk teknologi ini, termasuk di Habré. Secara berkala, ada laporan serangan yang mampu mengekstraksi data sensitif dari enklave: misalnya, Meltdown dan Spectre pada 2018 membuka lubang SGX, dan SGAxe dan CrossTalk pada 2020. Pada gilirannya, Intel menangani kerentanan yang teridentifikasi melalui pembaruan mikrokode prosesor.
Mengapa kami memutuskan untuk menerapkan teknologi ini? Kami melihat penggunaan Intel SGX sebagai peluang untuk mengurangi area potensial serangan cyber dengan membuat loop perlindungan tambahan untuk infrastruktur cloud G-Core Labs bersama dengan teknologi keamanan informasi yang sudah digunakan dan dengan demikian meningkatkan kepercayaan pengguna kami dalam menyimpan dan memproses data rahasia. Kami berharap bahwa di masa mendatang kami belum berbagi dengan Anda kasus klien yang berhasil, meskipun kami tidak berjanji untuk mengklaim bahwa artikel kami tidak akan didasarkan pada cerita tentang menemukan dan menghilangkan kerentanan baru. Sementara itu, kami mengundang Anda untuk membagikan metode Anda untuk melindungi data sensitif di komentar.