Skip to content

PHPCrypton: A Code Obfuscation Extension

Cover

Sebuah ekstensi PHP yang digunakan untuk mengenkripsi dan meng-obfuskasi kode sumber PHP. Sistem menerapkan algoritma enkripsi RSA-256 dan obfuskasi layout.

PHP menempati urutan pertama dalam kategori "Most Popular Server-Side Programming Languages", berdasarkan hasil survei yang dilakukan oleh W3Techs dengan persentase penggunaan sebesar 78,9%. Aspek keamanan bagi pengembang yang berkaitan dengan hak kekayaan intelektual dan hak cipta merupakan tantangan penting di balik pertumbuhan pesat PHP dalam pengembangan aplikasi web. Dalam laporan yang dibuat oleh WhiteSource "Total Known Open Source Vulnerabilities Per Language" PHP berada di peringkat kedua setelah bahasa C, dengan sebanyak 17% dari semua kerentanan yang dilaporkan dalam sepuluh tahun terakhir. Salah satu kelemahan utama dari aplikasi berbasis web adalah kode sumber tidak dikompilasi melainkan diunggah dan diproses oleh server web. Akibatnya, pembajak dapat dengan mudah mengubah (revese engineer), mereplikasi, atau mendistribusikan ulang kode sumber tanpa persetujuan pengembang. Obfuskasi merupakan salah satu solusi untuk masalah ini. Penelitian ini bertujuan untuk mengembangkan penelitian Ismanto & Salman dengan menambahkan obfuskasi layout pada pendekatan obfuskasi sebelumnya untuk meningkatkan aspek keamanan. Pada penelitian ini dikembangkan ekstensi PHP yang dapat melakukan obfuskasi layout dan enkripsi menggunakan algoritme AES-256. Design Research Methodology digunakan dalam penelitian ini. Selain itu, uji performa, uji fungsional, uji ukuran file terobfuskasi, uji keamanan, dan uji kompatibilitas dilakukan pada hasil implementasi. Hasil pengujian menunjukkan bahwa Ekstensi PHP yang dihasilkan dalam penelitian ini dapat berjalan sesuai dengan kebutuhan fungsional dan non-fungsional yang telah dirancang.

Judul penelitian

Proteksi Kode Sumber PHP Menggunakan Obfuskasi Layout dan Algoritme Enkripsi AES-256

Implementasi

PHPCrypton dikembangkan untuk dapat melakukan obfuskasi layout dan enkripsi menggunakan algoritme AES-256 pada kode sumber PHP. Terdapat dua fungsi yang dapat digunakan oleh pengguna PHPCrypton yaitu single obfuscation dan directory obfuscation. Single obfuscation merupakan fungsi PHPCrypton yang melakukan obfuskasi layout dan enkripsi pada satu berkas PHP yang telah ditentukan sedangkan directory obfuscation merupakan fungsi yang melakukan obfuskasi layout dan enkripsi pada suatu direktori yang telah ditentutkan.

PHPCrypton dikembangkan menggunakan PHP-CPP yang merupakan library C++ khusus untuk mengembangkan ekstensi PHP. Untuk memudahkan dalam memahami bagaimana PHPCrypton pada masing-masing perangkat pengguna, berikut merupakan gambaran bagaimana PHPCrypton pada arsitektur PHP webserver.

Arsitektur

PHPCrypton yang telah ditambahkan pada perangkat pengguna berada pada tempat yang sama dan berjalan layaknya ekstensi bawaan PHP lainnya seperti yang telah digambarkan pada gambar di atas.

Berikut merupakan skema dari alur berjalannya ekstensi PHP yang dikembangkan pada tahap implementasi program dapat dilihat pada gambar di bawah ini.

Mekanisme obfuskasi

Pada pengembangan ekstensi menggunakan library PHP-CPP, setelah membuat tiga berkas yaitu Main.cpp, Makefile, dan PHPCrypton.ini maka selanjutnya dilakukan kompilasi berkas Main.cpp untuk mendapatkan berkas ekstensi PHP *.so dan dilakukan instalasi PHPCrypton ke dalam interpreter PHP. Dengan membuka phpinfo, kita dapat memeriksa bahwa ekstensi PHPCrypton telah terpasang di PHP.

phpcrypton

Setelah implementasi selesai, kemudian dilakukan pengujian dengan tujuan untuk memastikan ekstensi yang telah dikembangkan dapat berjalan sesuai dengan perancangan yang telah dibuat pada tahap sebelumnya. Pada penelitian ini dilakukan pengujian yang terdiri dari uji fungsional, uji ukuran berkas terobfuskasi, uji performa, uji keamanan, dan uji kompatibilitas.

Berdasarkan hasil penelitian yang dilakukan, diperoleh beberapa kesimpulan untuk menjawab rumusan masalah dalam penelitian ini:

  1. Berdasarkan uji keamanan yang dilakukan pada hasil berkas terobfuskasi PHPCrypton, didapatkan hasil bahwa hasil kode sumber terobfuskasi PHPCrypton tidak dapat dilakukan proses deobfuskasi menggunakan program deobfuscator lainnya. Oleh karena itu, adanya penggunaan PHPCrypton dapat mengatasi kemungkinan terjadinya modifikasi, duplikasi, dan pembajakan. Selain itu, berdasarkan uji keamanan pada berkas .so PHPCrypton, didapatkan hasil bahwa kunci AES-256 yang digunakan dalam berkas .so PHPCrypton telah diubah menjadi Base64. Oleh karena itu akan memakan waktu lebih lama untuk mencari dan mengetahui letak kunci dalam bahasa mesin. Ketika kunci asli sulit ditemukan pada proses reverse engineering, keamanan berkas *.so PHPCrypton meningkat.

  2. Berdasarkan uji fungsional yang dilakukan pada dua fungsi PHPCrypton didapatkan hasil bahwa kedua fungsi tersebut berhasil melakukan obfuskasi layout dan enkripsi menggunakan algoritme AES-256 pada kode sumber PHP.

  3. Berdasarkan uji ukuran berkas terobfuskasi didapatkan hasil bahwa perubahan ukuran berkas sebelum dan sesudah dilakukan obfuskasi layout dan enkripsi menggunakan PHPCrypton memiliki rata-rata perubahan besar ukuran berkas terobfuskasi sebesar 105,62 %.

  4. Berdasarkan uji performa yang dilakukan didapatkan hasil bahwa perubahan waktu akses halaman web sebelum dan sesudah dilakukan obfuskasi layout dan enkripsi

Tangkapan Layar

  1. Contoh file yang telah melalu proses obfuskasi dan enkripsi
    File terobfuskasi

  2. Salah satu aplikasi yang diuji
    AUT

Peneliti

  • Isma Khairunisa

Supervisor

  • Herman Kabetta
  • Hermawan Setiawan
  • Girinoto

Publikasi

I. Khairunisa and H. Kabetta, "PHP Source Code Protection Using Layout Obfuscation and AES-256 Encryption Algorithm," 2021 6th International Workshop on Big Data and Information Security (IWBIS), Depok, Indonesia, 2021, pp. 133-138, doi: 10.1109/IWBIS53353.2021.9631842.