Beberapa hari yang lalu, saya dengan beberapa teman mendapat tugas untuk mengikuti training yang diadakan oleh pihak Gemalto. Training kali ini mencoba untuk membahas bagaimana cara kerja HSM (Hardware Security Module), yang dalam hal ini adalah Safenet Luna PCIe, sebuah HSM keluaran Safenet yang merupakan General Purpose HSM.
Fungsi utama HSM adalah untuk melakukan penghitungan fungsi kriptografi, mulai dari encrypt, decrypt, signing, hashing dan lainnya. Penggunaan HSM diperlukan untuk mengamankan key yang akan kami keluarkan nantinya. Key tersebut akan aman karena disimpan dalam HSM yang sangat sulit untuk “dibobol” secara langsung. (Pembahasan HSM secara terperinci akan saya lakukan di postingan lainnya).
Setelah penjelasan mengenai HSM yang dilakukan secara teori selesai, kini tibalah saatnya kami masuk pada bagian praktek. Untuk memahami lebih dalam lagi, pemaparan teori tidaklah cukup, perlu adanya praktek untuk bagian HSM ini. Praktek tersebut meliputi pemasangan HSM pada server, cara mendeteksi HSM tersebut setelah terpasang, instalasi luna client pada server agar dapat berhubungan dengan HSM, serta cara menggunakan beberapa bagian tambahan dari HSM ini seperti USB token dan Number Pad.
HSM sudah terpasang pada server dan sudah terdeteksi juga pada ketika kami menjalankan perintah lspci. Tahapan selanjutnya adalah instalasi Luna Client. Pihak Gemalto sudah menyiapkan beberapa depedencies yang dibutuhkan lengkap dengan bash script untuk memudahkan proses instalasi ini. Oh iya, saya lupa menjelaskan, OS yang saya gunakan pada server dimana HSM ini terpasang adalah CentOS 7 64 bit.

Sebelum mengeksekusi script install.sh yang sudah dipersiapkan, terlebih dahulu server kita harus sudah memenuhi prerequisites yang diminta seperti C compiler dan make build.
MASALAH DATANG
Setelah semua persyaratan yang dibutuhkan terinstall, sekarang masuk tahap ekskusi file install.sh. Setelah mengeksekusi file tersebut, muncul error pada terminal dengan detail seperti berikut:
+ make -f vkdroot-linux-2.6.mf
make -C ./driver -f vkd-linux-2.6.mf
make[1]: Entering directory `/root/rpmbuild/BUILD/vkd-5.4.1/driver'
ln -sf vkd-linux-2.6.mf Makefile
make -C /lib/modules/`uname -r`/build SUBDIRS=`pwd` modules
make[2]: Entering directory `/usr/src/kernels/3.10.0-514.26.2.el7.x86_64'
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_driver.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_linux.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_dualport.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_queue.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_conf.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_dualport_queue.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_cb_dualport_queues.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_cb_rw_request_pool.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_cb_hios.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_dma.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_dma_callback.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_dp_callback.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/vip_mem_cache.o
CC [M] /root/rpmbuild/BUILD/vkd-5.4.1/driver/pkp_driver.o
/root/rpmbuild/BUILD/vkd-5.4.1/driver/pkp_driver.c:60:47: fatal error: asm/system.h: No such file or directory
#include <asm/system.h> /* cli(), *_flags */
^
compilation terminated.
make[3]: *** [/root/rpmbuild/BUILD/vkd-5.4.1/driver/pkp_driver.o] Error 1
make[2]: *** [_module_/root/rpmbuild/BUILD/vkd-5.4.1/driver] Error 2
make[2]: Leaving directory `/usr/src/kernels/3.10.0-514.26.2.el7.x86_64'
make[1]: *** [default-local] Error 2
make[1]: Leaving directory `/root/rpmbuild/BUILD/vkd-5.4.1/driver'
make: *** [target-driver] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.vCXrpI (%build)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.vCXrpI (%build)
Error: Failed to build Luna PCI-E driver. Please contact SafeNet support for help.


Dugaan saya, masalah tersebut muncul karena script tersebut membutuhkan system.h yang harusnya terletak pada folder /usr/src/kernels/3.10.0-514.el7.x86_64/arch/x86/include/asm/, tapi kenyataanya tidak ada alias tidak ditemukan. system.h merupakan salah satu library dari kernel-header yang dibutuhkan oleh file install.sh tersebut (*Tolong koreksi saya apabila penjelasan ini salah).
Pada CentOS 7 yang sudah menggunakan kernel 3.10.x, keberadaan system.h sudah digantikan oleh switch_to.h yang berada pada folder /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/arch/x86/include/asm/. System.h hanya terdapat sampai kernel 3.3.x. Kernel-header pada kernel versi lebih dari 3.3.x sudah dihilangkan, hal itu bisa dilihat dari tidak ditemukannya paket kernel-header pada saat saya mencoba menginstallnya.

PENYELESAIAN
Sempat terlintas untuk melakukan install ulang dengan mengganti CentOS 7 menjadi CentOS 6, namun rasanya hal tersebut terlalu memakan waktu. Dengan bermodalkan keisengan, salah seorang teman saya mengcopykan file switch_to.h dan kemudian me-rename file tersebut menjadi system.h untuk memenuhi permintaan dari file install.sh tersebut. Setelah mengeksekusi file install.sh kembali, voilaaaaa… Instalasi berhasil 🙂
TAHAPAN INSTALASI
Benar saja, cara tersebut ternyata sukses. Berikut ini saya sertakan screenshot instalasinya

Pilih Luna PCI-E

Pada tahapan ini, langsung next saja.



Comments are closed.