Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Teknologi Internet of Things

Keamanan DDS dengan Cara Keras(ware) - SGX:Bagian 2 (Mikro + Keamanan + SCONE)

Ini Bagian 2 dalam enam -blog seri tentang topik ini. Jika Anda melewatkan ikhtisar Bagian 1, silakan baca di sini.

Pengembangan untuk Ekstensi Penjaga Perangkat Lunak (SGX) awalnya dirancang oleh Intel® untuk menjadi proses pemfaktoran ulang. Setiap aplikasi akan dirancang dari awal atau dirancang ulang untuk mempartisi rahasia dan kode pengelolaan rahasia dari kode lain, kemudian dikompilasi dengan kit pengembangan perangkat lunak (SDK) SGX untuk melindungi partisi kode sensitif. Ini selaras dengan tujuan Intel untuk mengurangi basis komputasi tepercaya (TCB) ke area sekecil mungkin.

Dengan aplikasi yang ada, bagaimanapun, ini adalah proses yang cukup. Dalam pengujian, Intel dan Akademi Angkatan Udara Amerika Serikat memfaktorkan ulang penampil PDF sumber terbuka dalam studi akses awal. Pemfaktoran ulang termasuk menambahkan kontrol akses ke bagian mana pun dari dokumen (redaksi digital) dan aplikasi Video Teleconferencing (VTC) sumber terbuka (enkripsi kabel ke layar). Prosesnya membutuhkan waktu dua tahun untuk menyelesaikan kedua proyek.

Karena pemfaktoran ulang/kompilasi ulang adalah pekerjaan berat dan, lebih buruk, tidak selalu memungkinkan karena akses kode, sejumlah proyek lain telah maju untuk membuat wadah/LibOS yang dilindungi SGX dan kompiler silang. Graphene dan SCONE adalah contoh bagus dari proyek yang tersedia untuk umum untuk menyelesaikan tugas ini. Saya telah melihat Graphene dan SCONE, dan keduanya memiliki pro/kontra untuk hasil akhir dari build yang sukses. Namun, SCONE sudah dapat mengkompilasi silang plugin RTI Connext® DDS Micro dan RTI Connext DDS Security hanya dengan tweak untuk membuat skrip dan/atau membuat perubahan pustaka musl sepele.

Selain itu, SCONE menghasilkan aplikasi yang ditautkan secara statis yang dapat dijalankan pada vanilla Ubuntu 16.04 dengan driver SGX (dan CPU yang mumpuni) terinstal.

Graphene memerlukan implementasi setidaknya satu panggilan sistem baru (getifaddrs) atau perubahan pada DDS untuk menghindari panggilan, serta beberapa perubahan pada panggilan DDS lain yang sering dilakukan di Connext DDS Micro dengan sistem operasi yang lebih terbatas (yaitu, nanosleep). Graphene juga harus dieksekusi sebagai wadah buruh pelabuhan. Akibatnya, fokus pertama ini adalah pada penerapan aplikasi Micro Connext DDS yang aman dengan SCONE. Kami akan berbicara lebih banyak tentang Graphene nanti di seri blog ini.

Salah satu proyek SCONE terdiri dari kompiler silang yang mengeluarkan biner yang dapat dieksekusi yang membungkus aplikasi dalam lingkungan yang dilindungi SGX. Kompilator silang ini secara statis menautkan ke musl daripada GLibC. Akibatnya, kami akan mengkompilasi secara statis semua komponen yang diperlukan untuk membangun aplikasi kami, termasuk OpenSSL dan Connext DDS Micro.

Untuk mengikuti, Anda memerlukan RTI DDS Connext Micro 3.0 (termasuk sumber yang dapat dibangun), sumber openssl 1.0.2r, dan SCONE. Produk RTI Connext DDS tersedia (dengan akses berlisensi) dengan menghubungi RTI; OpelSSL tersedia di https://www.openssl.org/source/; dan SCONE diakses melalui gambar yang dikuratori SCONE di dockerhub. Wadah SCONE ini bersifat pribadi, dan Anda harus mendapatkan akses dengan menghubungi SCONE melalui [email protected].

Sistem Host saya mampu SGX dan menjalankan Ubuntu 16.04 LTS. Anda dapat mengikuti tanpa sistem SGX. Jika Anda memiliki sistem SGX – dan ingin menggunakan SGX – Anda harus menginstal driver Intel SGX dari https://github.com/intel/linux-sgx-driver. Jika Anda membaca blog ini, Anda dianggap tahu cara menggunakan buruh pelabuhan, hub buruh pelabuhan, dan Linux (atau mau belajar).

Untuk memulai, saya meletakkan RTI DDS Connext Micro 3.0 dan OpenSSL 1.0.2r di direktori home saya. Saya membongkarnya di direktori home dan berakhir dengan dua direktori:

openssl-1.0.2r
rti_connext_dds_micro-3.0.0

Semua perintah berikut khusus untuk direktori ini. Login ke docker dan pastikan Anda berada di direktori home Anda. Jalankan perintah berikut untuk memulai penampung dalam mode interaktif. Jika Anda mengikuti tanpa SGX, hilangkan --device=/dev/isgx dari perintah.

cd ~
docker run -it --device=/dev/isgx -v "$PWD":/home
sconecuratedimages/crosscompilers:ubuntu

Saya telah menemukan bahwa wadahnya agak ringan pada beberapa alat yang diperlukan (dan beberapa nyaman). Untuk mengatasinya, instal alat secara langsung.

pembaruan yang tepat
apt install -y make default-jre cmake nano less
apt install -y perl --reinstall

Selanjutnya, mari kita kompilasi OpenSSL. Instal ulang Perl sebelumnya menangani beberapa modul yang kurang dalam skrip konfigurasi. Untuk membuat, menguji, dan menginstal OpenSSL ke wadah Anda, jalankan perintah berikut. Diperingatkan bahwa tes akan memakan waktu untuk diselesaikan. Untuk tolok ukur rata-rata, dibutuhkan waktu 45 menit untuk menjalankan perintah berikut pada i5 NUC.

cd /home/openssl-1.0.2r
./config
buat
buat tes
lakukan pemasangan
ekspor OPENSSLHOME=/usr/local/ssl

ln -s /usr/local/ssl/lib/libcrypto.a /usr/local/ssl/lib/libcryptoz.a
ln -s /usr/local/ssl/lib/libssl.a /usr/local/ssl/lib/libsslz.a

Tautan lunak di akhir perintah akan membantu dengan Makefile dalam contoh yang akan kita gunakan. Ya, ini sedikit meretas (apa yang Anda harapkan dari petugas keamanan?), tetapi berhasil.

Selanjutnya mari kita compile RTI DDS Micro 3.0. Jalankan perintah berikut.

cp /opt/scone/cross-compiler/x86_64-linux-musl/lib/libpthread.a /opt/scone/cross-compiler/x86_64-linux-musl/lib/libnsl.a

PATH=$PATH:/opt/scone/cross-compiler/libexec/gcc/x86_64-linux-musl/7.3.0/
ekspor RTIMEHOME=/home/rti_connext_dds_micro-3.0.0
ekspor RTIMEARCH=sgxLinux_x64gcc

cd /home/rti_connext_dds_micro-3.0.0/

./resource/scripts/rtime-make -DRTI_NO_SHARED_LIB:bool=true -DOPENSSLHOME=/usr/local/ssl --delete --target self --name $RTIMEEARCH -G "Unix Makefiles" --build -- config Rilis

Pada titik ini, kita harus memiliki perpustakaan dari OpenSSL dan RTI DDS Micro (termasuk keamanan) yang ditautkan ke musl daripada GLibC.

Mari beralih ke aplikasi pengujian. Jalankan perintah berikut.

cd /home/
cd rti_connext_dds_micro-3.0.0/example/unix/C/
cd HelloWorld_dpde_secure
rm -rf objs
buat

Jika semuanya berjalan dengan baik, kita akan memiliki penerbit dan pelanggan di direktori berikut:/home/rti_connext_dds_micro-3.0.0/example/unix/C/HelloWorld_dpde_secure/objs/sgxLinux_x64gcc/. Mari kita jalankan untuk melihat apa yang kita miliki.

SCONE_VERSION=1 SCONE_HEAP=87108864 ./objs/sgxLinux_x64gcc/HelloWorld_publisher

Outputnya akan terlihat seperti:

ekspor SCONE_QUEUES=1
ekspor SCONE_SLOTS=256
ekspor SCONE_SIGPIPE=0
ekspor SCONE_MMAP32BIT=0
ekspor SCONE_SSPIS=100
ekspor SCONE_SSLEEP=4000
ekspor SCONE_KERNEL=0
ekspor SCONE_HEAP=87108864
ekspor SCONE_STACK=81920
ekspor SCONE_CONFIG=/home/jason/sgx-musl.conf
ekspor SCONE_ESPINS=10000
ekspor SCONE_MODE=hw
ekspor SCONE_SGXBOUNDS=tidak
ekspor SCONE_VARYS=tidak
ekspor SCONE_ALLOW_DLOPEN=tidak
ekspor SCONE_MPROTECT=tidak
Revisi:4be39d5943d5c15e11fa17055b859de4a25c0288 (Kamis 23 Agustus 14:14:04 2018 +0200)
Cabang:cf-java-fix (kotor)
Opsi konfigurasi:--enable-shared --enable-debug --prefix=/home/christof/GIT/subtree-scone/built/cross-compiler/x86_64-linux-musl

Hash enklave:14fa1810e1d35799ba9910243cab89660b7146f96babb97a32caef9c06b3c9a2

[1555446711.154091000]ERROR:ModuleID=0 Errcode=17 X=1 E=0 T=1
osapi/posixThread.c:96/OSAPI_Thread_get_policy:sysrc=38
# Identitas CA, :file:security/ca/ca.pem
# Izin CA, :file:security/ca/ca.pem
# sertifikat PEER :file:security/ca/certs/publisher.pem
# kunci PEER :file:security/ca/certs/publisher_key.pem
# tata kelola XML :file:security/xml/governance.p7s
# izin XML :file:security/xml/permissions_publisher.p7s

[1555446711.159431000]ERROR:ModuleID=0 Errcode=17 X=0 E=1 T=1
/:-1/:

[1555446711.159704000]ERROR:ModuleID=0 Errcode=17 X=0 E=1 T=1
/:-1/:

[1555446711.197874000]ERROR:ModuleID=0 Errcode=17 X=0 E=1 T=1
/:-1/:
Halo Dunia! (0)

Halo Dunia! (1)
Halo Dunia! (2)
Halo Dunia! (3)
Halo Dunia! (4)

Jangan takut dengan kesalahan yang dilaporkan. Mereka hanya bersifat informasi dan disebabkan oleh perpustakaan Mikro DDS Connext yang mencoba memeriksa kemampuan untuk memanipulasi prioritas utas. Musl tidak mendukung ini. Kesalahan yang dilaporkan dapat dihapus dengan mengedit posixThread.c pada baris yang ditunjukkan (dalam hal ini, baris 96)

[1] [2] 下一页

Teknologi Internet of Things

  1. Keamanan DDS dengan Cara Keras (ware) - SGX Bagian 3:Layanan DDS yang Diperkuat
  2. Jalan menuju keamanan IoT industri
  3. Menangani kerentanan keamanan IoT industri
  4. Mengamankan IoT dari serangan cyber
  5. Mengamankan vektor ancaman IoT
  6. Hyperconvergence dan komputasi di tepi:Bagian 3
  7. Tantangan keamanan yang ditimbulkan oleh Internet of Things:Bagian 2
  8. Tantangan keamanan yang ditimbulkan oleh Internet of Things:Bagian 1
  9. Melindungi IoT Industri:Mengadopsi pendekatan generasi berikutnya – Bagian 2
  10. Keamanan memberdayakan potensi IoT yang sebenarnya