Anda mungkin tidak ingin skrip Python penting Anda direkayasa ulang oleh aktor jahat. Inilah cara Anda dapat melindunginya.
Python sangat mudah dibaca dan digunakan secara luas. Meskipun keterbacaan ini mendorong kolaborasi, namun meningkatkan risiko akses tidak sah dan penyalahgunaan. Pesaing atau aktor jahat Anda dapat mereplikasi algoritme dan logika hak milik Anda tanpa perlindungan yang tepat. Ini akan berdampak negatif pada integritas perangkat lunak Anda dan kepercayaan pengguna Anda.
Menerapkan langkah-langkah keamanan yang kuat, seperti penyamaran dan verifikasi lisensi, membentengi perangkat lunak Anda dari potensi ancaman. Menjaga skrip Python bukan hanya praktik; ini adalah strategi penting untuk memastikan kerahasiaan inovasi Anda dan menjaga kepercayaan pengguna Anda di lanskap digital.
Memahami Pyarmor
Pyarmor adalah perpustakaan baris perintah. Ini membantu melindungi dan mengaburkan skrip dan paket Python. Itu mengubah kode Python asli menjadi bentuk yang lebih sulit dipahami dengan tetap mempertahankan fungsinya. Proses kebingungan mengganti nama variabel, fungsi, dan kelas menjadi nama non-deskriptif. Itu juga menghapus komentar dan merestrukturisasi kode. Ini membuat kode sulit untuk direkayasa ulang, dirusak, atau disalin.
Pyarmor dapat mengamankan skrip Python individu, dan seluruh paket dan bahkan menambahkan verifikasi lisensi ke kode Anda.
Memasang Perpustakaan Pyarmor
Pyarmor terdaftar di Python Package Index (PyPI). Gunakan pip untuk menginstalnya dengan menjalankan perintah berikut:
pip install pyarmor
Anda tidak harus menginstal Pyarmor di direktori yang sama dengan host proyek Anda. Anda dapat menginstalnya di mana saja di komputer Anda dan dapat mengamankan skrip Python apa pun dari direktori mana pun.
Namun, jika Anda ingin menjalankan skrip yang diamankan tanpa harus menginstal Pyarmor di mesin target, Anda harus menginstalnya di direktori yang sama dengan host proyek Anda. Ini karena skrip yang diamankan akan berisi referensi ke runtime Pyarmor, yang harus ada untuk menjalankan skrip.
Mengamankan Script Python Individu
Mengamankan skrip individu menggunakan Pyarmor itu sederhana. Skrip berikut yang menambahkan dua angka akan berfungsi sebagai contoh.
defadd_numbers(num1, num2):
result = num1 + num2
print("The sum of {} and {} is: {}".format(num1, num2, result))
# Example usage
num1 = float(input("Enter the first number: "))
num2 = float(input("Enter the second number: "))
add_numbers(num1, num2)
Gunakan baris perintah untuk menavigasi ke direktori tempat Anda menginstal Pyarmor. Kemudian jalankan perintah berikut untuk mengenkripsi dan mengaburkan skrip Anda. Mengganti main.py dengan nama skrip Anda.
pyarmor gen --output dist main.py
Setelah menjalankan perintah, Pyarmor membuat folder baru bernama dist. Di dalamnya terdapat skrip aman Anda.
Buka skrip yang diamankan untuk melihat isinya.
Tangkapan layar di atas menunjukkan output setelah Pyarmor mengaburkan dan mengenkripsi skrip tambahan sederhana. Anda sekarang tidak dapat mengetahui apa yang dilakukan skrip hanya dengan melihatnya.
Untuk menjalankan skrip yang diamankan, buka terminal atau prompt perintah Anda dan arahkan ke lokasi yang berisi dist direktori. Kemudian gunakan perintah berikut untuk menjalankan skrip:
python dist/main.py
Mengganti main.py dengan nama skrip Anda. Skrip harus berjalan sebagaimana mestinya tanpa kebingungan. Uji secara menyeluruh untuk memastikan semua fungsi berfungsi seperti yang Anda harapkan.
Menjaga Seluruh Paket Python
Paket dapat berisi beberapa modul atau ratusan modul tergantung pada tujuannya. Menjaga setiap modul secara terpisah bisa melelahkan. Untungnya, Pyarmor memiliki kemampuan untuk mengamankan seluruh paket tanpa Anda harus menentukan setiap modul secara terpisah.
Asumsikan Anda memiliki paket Python sederhana bernama sample_package dengan struktur sebagai berikut:
sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py
Kamu bisa buat modul sebanyak yang Anda inginkan.
Untuk mengenkripsi dan menyamarkan paket, buka terminal atau prompt perintah dan arahkan ke direktori tempat paket Anda berada. Kemudian jalankan perintah berikut:
pyarmor gen -O dist -r -i sample_package
Mengganti sample_package dengan nama paket Anda. Perintah ini akan mengenkripsi dan mengaburkan direktori paket Anda dan menyimpan keluaran yang dilindungi ke dist direktori. Gunakan paket yang dilindungi seperti yang Anda lakukan untuk paket Python lainnya.
Misalnya. Untuk menggunakan paket contoh di atas, buat skrip baru di dalam dist direktori:
from my_package import module1, module2
module1.say_hello()
module2.do_something()
Saat Anda menjalankan kode, paket harus berfungsi seperti sebelum mengamankannya.
Mengontrol Akses ke Skrip Anda
Anda mungkin ingin membatasi waktu pengguna menjalankan skrip Anda. Misalnya pada masa percobaan.
Untuk membatasi jumlah waktu skrip berjalan, gunakan perintah berikut saat mengaburkan skrip Anda.
pyarmor gen -O dist -e 30 main.py
Mengganti 30 dengan jumlah hari Anda ingin skrip aktif. Anda juga dapat menggantinya dengan tanggal yang tepat. Setelah hari berakhir, skrip akan kedaluwarsa.
Anda dapat menguji fungsi ini dengan menyetel tanggal yang sudah lewat. Ini seharusnya membuat menjalankan skrip menimbulkan kesalahan. Gunakan perintah berikut untuk mengaburkan skrip dengan tanggal kedaluwarsa:
pyarmor gen -O dist -e 2022-01-01 main.py
Kemudian jalankan skrip yang diamankan.
Kesalahan menunjukkan bahwa kunci lisensi kedaluwarsa sehingga skrip tidak dapat dijalankan.
Menyeimbangkan Keamanan dan Efisiensi
Meskipun Pyarmor menawarkan mekanisme kebingungan yang kuat untuk meningkatkan keamanan kode Anda, memang begitu penting untuk menyeimbangkan antara langkah-langkah keamanan dan menjaga efisiensi dan kinerja Anda perangkat lunak. Anda dapat mencapai ini dengan:
- Mengevaluasi kebutuhan akan kebingungan: Jika perangkat lunak Anda melibatkan algoritme hak milik, data sensitif, atau logika bisnis unik, pengaburan sangat bermanfaat. Namun, untuk skrip sumber terbuka dengan masalah kekayaan intelektual minimal, pertukaran antara keamanan dan kinerja lebih condong ke arah efisiensi.
- Menilai dampak kinerja: Kebingungan memperkenalkan overhead runtime tambahan karena operasi tambahan dan transformasi yang diterapkan pada kode. Dampak ini dapat diabaikan untuk skrip kecil, tetapi menjadi lebih terlihat untuk proyek yang lebih besar. Anda harus hati-hati menilai implikasi kinerja dari kebingungan dan melakukan pengujian untuk memastikan bahwa perangkat lunak Anda tetap responsif dan efisien.
- Melakukan update dan maintenance secara berkala: Perbarui kode, lisensi, dan mekanisme keamanan Anda yang disamarkan secara teratur untuk tetap berada di depan dari potensi kerentanan. Seimbangkan ini dengan kebutuhan untuk meminimalkan gangguan bagi pengguna Anda.
Bisakah Seseorang Memecahkan Kode yang Dikaburkan?
Retak perangkat lunak mengacu pada tindakan menghapus perlindungan salinan atau mekanisme lisensi dari aplikasi perangkat lunak. Untuk mendapatkan akses tidak sah ke fungsionalitas penuhnya tanpa membayarnya. Penting untuk dicatat bahwa mengaburkan perangkat lunak Anda tidak sepenuhnya melindunginya dari cracker.
Dengan tekad dan sumber daya yang cukup, kode yang disamarkan dapat dipecahkan. Inilah alasan mengapa Anda harus melakukan pembaruan dan pemeliharaan rutin untuk menambal setiap celah yang dicurigai.