Contents

ปกป้องสคริปต์ Python ของคุณจากวิศวกรรมย้อนกลับด้วย Pyarmor

Python มีความชัดเจนในระดับสูง ซึ่งเอื้อต่อการใช้งานอย่างกว้างขวางในโดเมนต่างๆ อย่างไรก็ตาม แอตทริบิวต์นี้ยังนำเสนอความท้าทายบางอย่างในแง่ของความปลอดภัย ไม่สามารถมองข้ามศักยภาพของการบุกรุกและการแสวงประโยชน์โดยไม่ได้รับอนุญาตจากหน่วยงานที่แข่งขันกันหรือตัวแทนที่ประสงค์ร้าย การกระทำดังกล่าวอาจส่งผลให้เกิดการผลิตซ้ำข้อมูลที่ละเอียดอ่อนและส่วนประกอบที่เป็นกรรมสิทธิ์ ซึ่งจะทำให้ทั้งความน่าเชื่อถือของซอฟต์แวร์และความเชื่อมั่นที่ผู้ใช้ปลายทางได้รับจากซอฟต์แวร์ลดลง

การเพิ่มการป้องกันซอฟต์แวร์ของคุณผ่านการใช้งานคุณลักษณะด้านความปลอดภัยขั้นสูง รวมถึงการทำให้โค้ดสับสนและการตรวจสอบสิทธิ์ใช้งาน ทำหน้าที่เสริมการป้องกันจากความเสี่ยงที่อาจเกิดขึ้น การรักษาความลับของการเขียนโปรแกรมและการรักษาความไว้วางใจของผู้ใช้ภายในระบบนิเวศดิจิทัลเป็นส่วนสำคัญของกระบวนการนี้ ซึ่งอยู่เหนือการพิจารณาขั้นตอนเพียงอย่างเดียว

ทำความเข้าใจกับ Pyarmor

Pyarmor เป็นไลบรารีบรรทัดคำสั่ง ช่วยปกป้องและทำให้สคริปต์และแพ็คเกจ Python สับสน โดยจะแปลงโค้ด Python ดั้งเดิมให้เป็นรูปแบบที่เข้าใจได้ยากขึ้นในขณะที่ยังคงฟังก์ชันการทำงานไว้ กระบวนการทำให้งงงวยเปลี่ยนชื่อตัวแปร ฟังก์ชัน และคลาสเป็นชื่อที่ไม่สื่อความหมาย นอกจากนี้ยังลบความคิดเห็นและปรับโครงสร้างรหัสใหม่ สิ่งนี้ทำให้โค้ดยากที่จะทำวิศวกรรมย้อนกลับ แก้ไข หรือคัดลอก

Pyarmor นำเสนอการป้องกันที่ครอบคลุมสำหรับรูปแบบต่างๆ ของสินทรัพย์ที่ใช้ Python รวมถึงการป้องกันไฟล์สคริปต์แต่ละไฟล์ เช่นเดียวกับมาตรการรักษาความปลอดภัยระดับแพ็คเกจ และการรวมการตรวจสอบสิทธิ์ใช้งานภายในโค้ดเอง

การติดตั้ง Pyarmor Library

PyArmour ซึ่งเป็นชุดซอฟต์แวร์ที่ออกแบบมาเพื่อการสื่อสารที่ปลอดภัยและการดำเนินการเข้ารหัสใน Python ได้ถูกเพิ่มลงใน Python Package Index (PyPI) ซึ่งทำหน้าที่เป็นที่เก็บส่วนกลางของชุดซอฟต์แวร์ที่สร้างขึ้นโดยใช้ภาษาโปรแกรมยอดนิยม ในการติดตั้งแพ็คเกจนี้ คุณสามารถใช้เครื่องมือ Pip โดยดำเนินการตามคำแนะนำต่อไปนี้:

 pip install pyarmor

คุณไม่จำเป็นต้องวาง Pyarmor ไว้ในโฟลเดอร์เดียวกับโปรเจ็กต์ของคุณ เนื่องจากอาจติดตั้งที่ตำแหน่งใดก็ได้บนอุปกรณ์ของคุณและให้การป้องกันสคริปต์ Python ที่อยู่ในไดเร็กทอรีใดๆ

ในการรันสคริปต์อย่างปลอดภัยภายในบริบทของโปรเจ็กต์โดยไม่ต้องมีการติดตั้ง Pyarmor บนระบบเป้าหมาย ต้องติดตั้งอันแรกในโฟลเดอร์เดียวกันกับที่โปรเจ็กต์อยู่ เหตุผลเบื้องหลังข้อกำหนดนี้อยู่ที่ข้อเท็จจริงที่ว่าโค้ดที่ได้รับการป้องกันมีส่วนประกอบที่จำเป็นซึ่งอ้างอิงถึงสภาพแวดล้อมรันไทม์ของ Pyarmor โดยเฉพาะ ซึ่งขาดไม่ได้สำหรับการดำเนินการเนื้อหาในนั้น

การรักษาความปลอดภัยสคริปต์ Python แต่ละรายการ

การใช้ Pyarmor เพื่อป้องกันสคริปต์แต่ละรายการนำเสนอกระบวนการที่ตรงไปตรงมา โดยเห็นได้จากตัวอย่างต่อไปนี้ของสคริปต์ซึ่งคำนวณผลรวมของค่าตัวเลขสองค่า

 def add_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)

โปรดใช้อินเทอร์เฟซเทอร์มินัลเพื่อไปยังตำแหน่งที่ติดตั้ง Pyarmor จากนั้น ให้ดำเนินการตามคำแนะนำที่ตามมาเพื่อป้องกันและปกปิดสคริปต์ของคุณโดยแทนที่’main.py’ด้วยชื่อเรื่องของสคริปต์เฉพาะของคุณ

 pyarmor gen --output dist main.py

หลังจากดำเนินการตามคำสั่งที่กำหนด Pyarmor จะสร้างไดเร็กทอรีใหม่ที่มีชื่อว่า “dist” ซึ่งมีสคริปต์ที่ได้รับการป้องกันของคุณอยู่ภายในขอบเขต

/th/images/safeguarding-python-scripts-aganist-reverse-engineering-using-pyamor-dist-directory.jpg

เพื่อให้สามารถเข้าถึงเนื้อหาของสคริปต์ที่มีการป้องกันได้ จำเป็นต้องปลดล็อกหรือปิดใช้งานมาตรการรักษาความปลอดภัยที่มีอยู่ กระบวนการนี้สามารถเรียกว่า"การเปิด"สคริปต์ และอาจเกี่ยวข้องกับการป้อนรหัสผ่านหรือการดำเนินการอื่นเพื่อให้สิทธิ์ในการดูเนื้อหา

/th/images/safeguarding-python-scripts-aganist-reverse-engineering-using-pyamor-encrypted-script.jpg

การแสดงกราฟิกดังกล่าวข้างต้นแสดงให้เห็นถึงผลลัพธ์ของกระบวนการเข้ารหัสของ Pyarmor และปกปิดการคำนวณทางคณิตศาสตร์ขั้นพื้นฐาน ดังนั้นความสามารถในการแยกแยะการทำงานของมันจึงลดลงอย่างมากเมื่อตรวจสอบด้วยสายตาเพียงอย่างเดียว

ในการเรียกใช้สคริปต์ที่เข้ารหัส ให้เข้าถึงเทอร์มินัลหรือพรอมต์คำสั่ง และนำทางไปยังโฟลเดอร์ที่มีไดเร็กทอรี’dist’จากนั้น ใช้คำสั่งต่อไปนี้เพื่อเริ่มต้นสคริปต์:

 python dist/main.py 

โปรดเรียกใช้โค้ดที่ให้ไว้แทนไฟล์ main.py ที่มีอยู่ และตรวจสอบให้แน่ใจว่าฟังก์ชันทั้งหมดทำงานอย่างถูกต้องเมื่อทำการทดสอบอย่างละเอียด

ปกป้องแพ็คเกจ Python ทั้งหมด

Pyarmor นำเสนอโซลูชั่นที่สะดวกสำหรับการรักษาความปลอดภัยของแพ็คเกจที่อาจประกอบด้วยโมดูลจำนวนมาก แทนที่จะปกป้องทีละโมดูล Pyarmor ช่วยให้สามารถปกป้องแพ็คเกจทั้งหมดได้อย่างครอบคลุมในคราวเดียว สิ่งนี้ช่วยขจัดความจำเป็นในการดำเนินการด้วยตนเองที่น่าเบื่อและใช้เวลานาน ทำให้นักพัฒนามั่นใจในความปลอดภัยของโค้ดเบสได้ง่ายขึ้น

พิจารณาสถานการณ์สมมติที่มีโมดูล Python พื้นฐานที่เรียกว่า “sample\_package” ซึ่งแสดงการกำหนดค่าองค์กรต่อไปนี้:

 sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py 

คุณมีอิสระที่จะสร้างโมดูลได้ไม่จำกัดจำนวน หากมีความจำเป็น

เพื่อรักษาความปลอดภัยและปกปิดแพ็คเกจด้วยการเข้ารหัสและการปิดบัง โปรดเข้าถึงเทอร์มินัลหรืออินเทอร์เฟซพรอมต์คำสั่ง และดำเนินการต่อไปยังตำแหน่งที่เก็บแพ็คเกจของคุณ จากนั้นดำเนินการตามคำสั่งต่อไปนี้:

 pyarmor gen -O dist -r -i sample_package 

ใช้กระบวนการต่อไปนี้เพื่อรักษาความปลอดภัยไดเร็กทอรีแพ็คเกจของคุณ โดยการเข้ารหัสและปิดบังเนื้อหาภายในโฟลเดอร์ “dist” เวอร์ชันที่ได้รับการป้องกันสามารถใช้งานได้เหมือนกับแพ็คเกจ Python ทั่วไป โปรดแทนที่ “sample\_package” แทนชื่อแพ็คเกจเฉพาะของคุณ

หากต้องการใช้แพ็คเกจตัวอย่างที่ให้มา ให้สร้างสคริปต์ใหม่ภายในโฟลเดอร์"dist":

 from my_package import module1, module2

module1.say_hello()
module2.do_something()

การดำเนินการของรหัสไม่ควรเปลี่ยนฟังก์ชันการทำงานเมื่อดำเนินการในสถานะที่ปลอดภัย

การควบคุมการเข้าถึงสคริปต์ของคุณ

แนวทางหนึ่งที่เป็นไปได้ที่ควรพิจารณาเมื่อออกแบบสคริปต์ Python ของคุณคือการใช้กลไกในการจำกัดระยะเวลาการดำเนินการ โดยเฉพาะในช่วงทดลอง สิ่งนี้สามารถทำได้โดยการรวมตัวจับเวลาหรือตัวนับที่ติดตามเวลาที่ผ่านไปตั้งแต่เริ่มต้นของสคริปต์และยุติเมื่อถึงขีดจำกัดเวลาที่กำหนดไว้ล่วงหน้า เมื่อทำเช่นนั้น คุณจะมั่นใจได้ว่าผู้ใช้จะไม่สามารถใช้สคริปต์ได้อย่างต่อเนื่องเกินระยะเวลาทดลองใช้งานที่ระบุโดยไม่เสียค่าบริการหรือค่าปรับเพิ่มเติม

ในการควบคุมระยะเวลาที่สคริปต์ทำงาน ให้ใช้คำแนะนำข้างต้นในระหว่างขั้นตอนการปิดบังสคริปต์ของคุณ

 pyarmor gen -O dist -e 30 main.py 

โปรดแก้ไขข้อความที่ให้ไว้ดังนี้:“ปรับระยะเวลาโดยป้อนจำนวนวันหรือวันที่ที่แน่นอนในช่อง’วัน’เมื่อพ้นระยะเวลาที่กำหนด สคริปต์จะสิ้นสุดโดยอัตโนมัติ

ในการประเมินคุณสมบัติดังกล่าว คุณสามารถกำหนดวันที่ก่อนหน้าในปฏิทินของระบบ การดำเนินการนี้คาดว่าจะทริกเกอร์ข้อยกเว้นเมื่อเรียกใช้งานสคริปต์ หากต้องการปิดบังสคริปต์โดยใช้วันที่ที่ไม่ถูกต้อง ให้ใช้คำสั่งต่อไปนี้:

 pyarmor gen -O dist -e 2022-01-01 main.py

จากนั้นเรียกใช้สคริปต์ที่ปลอดภัย

/th/images/safeguarding-python-scripts-aganist-reverse-engineering-using-pyamor-error.jpg

ข้อความระบุว่าข้อมูลสิทธิ์ใช้งานถึงวันหมดอายุแล้ว ซึ่งขัดขวางการดำเนินการของสคริปต์ที่เกี่ยวข้อง

สร้างความสมดุลระหว่างความปลอดภัยและประสิทธิภาพ

แม้ว่า Pyarmor จะมีเทคนิคการทำให้งงงวยที่ครอบคลุมซึ่งออกแบบมาเพื่อเสริมการป้องกันรหัสของคุณ สิ่งสำคัญคือต้องสร้างสมดุลระหว่างการปรับปรุงคุณลักษณะด้านความปลอดภัยและการรักษาประสิทธิภาพการดำเนินงานและประสิทธิภาพของซอฟต์แวร์ของคุณ สิ่งนี้สามารถทำได้โดยการใช้กลยุทธ์ที่มีประสิทธิภาพเพื่อป้องกันภัยคุกคามที่อาจเกิดขึ้นในขณะเดียวกันก็ปรับประสิทธิภาพของระบบให้เหมาะสม

ในสถานการณ์ที่อัลกอริธึมที่เป็นกรรมสิทธิ์ ข้อมูลที่เป็นความลับ หรือหลักการทางธุรกิจที่โดดเด่นตกอยู่ในความเสี่ยง การพิจารณาการทำให้งงงวยเป็นมาตรการสำคัญในการปกป้องทรัพย์สินเหล่านี้มีความจำเป็นอย่างยิ่ง ในทางกลับกัน เมื่อต้องรับมือกับแอปพลิเคชันโอเพ่นซอร์สที่มีความเกี่ยวข้องกับทรัพย์สินทางปัญญาค่อนข้างน้อย การตัดสินใจที่จะจัดลำดับความสำคัญของความปลอดภัยมากกว่าประสิทธิภาพจะมีความเกี่ยวข้องมากขึ้น

การใช้การทำให้งงงวยอาจส่งผลให้โอเวอร์เฮดรันไทม์เพิ่มขึ้น ซึ่งอาจไม่สำคัญสำหรับสคริปต์ขนาดเล็ก แต่จะเด่นชัดขึ้นเมื่อขนาดโปรเจ็กต์เพิ่มขึ้น สิ่งสำคัญคือต้องประเมินผลกระทบที่อาจเกิดขึ้นกับประสิทธิภาพผ่านการวิเคราะห์และทดสอบอย่างละเอียดเพื่อรักษาประสิทธิภาพและการตอบสนองของซอฟต์แวร์

การตรวจทานและบำรุงรักษาซอฟต์แวร์ของตนเป็นระยะๆ เป็นสิ่งสำคัญเพื่อจัดการกับช่องโหว่ที่เกิดขึ้นใหม่หรือส่วนประกอบที่ล้าสมัย สิ่งสำคัญคือต้องสร้างสมดุลระหว่างการทำให้มั่นใจว่าระบบยังคงปลอดภัยและเป็นปัจจุบัน ในขณะเดียวกันก็หลีกเลี่ยงการขัดจังหวะโดยไม่จำเป็นสำหรับผู้ใช้ปลายทาง การปรับปรุงโค้ดที่สับสนเป็นประจำ การใช้แนวทางปฏิบัติด้านสิทธิ์การใช้งานในปัจจุบัน และการนำมาตรการรักษาความปลอดภัยที่มีประสิทธิภาพมาใช้ องค์กรสามารถลดความเสี่ยงและรับประกันการดำเนินงานที่ราบรื่น

ใครสามารถถอดรหัสรหัสที่สับสนได้หรือไม่?

การละเมิดลิขสิทธิ์ซอฟต์แวร์ หรือที่เรียกว่าการแคร็กซอฟต์แวร์ เกี่ยวข้องกับการข้ามมาตรการรักษาความปลอดภัยและข้อจำกัดด้านสิทธิ์ใช้งานที่กำหนดในแอปพลิเคชันเพื่อใช้คุณสมบัติที่สมบูรณ์โดยไม่ต้องซื้ออย่างถูกต้องตามกฎหมาย แม้ว่าการใช้เทคนิคต่างๆ เช่น การทำให้โค้ดยุ่งเหยิงอาจขัดขวางความพยายามของโจรสลัดได้ในระดับหนึ่ง แต่ก็ไม่สามารถป้องกันการเข้าถึงฟังก์ชันการทำงานของโปรแกรมโดยไม่ได้รับอนุญาตได้ทั้งหมด

ด้วยความทุ่มเทที่แน่วแน่และวิธีการที่กว้างขวาง แม้แต่รหัสที่ปกปิดอย่างซับซ้อนก็อาจยอมจำนนต่อความพยายามอย่างขยันขันแข็งในที่สุด ดังนั้นจึงจำเป็นอย่างยิ่งที่จะต้องดำเนินการอัปเดตอย่างต่อเนื่องและบำรุงรักษาอย่างพิถีพิถันอย่างสม่ำเสมอเพื่ออุดช่องโหว่ที่อาจเกิดขึ้น