อ่าน 3 นาที
ความหลากหลายของซอฟต์แวร์
ความหลากหลายของซอฟต์แวร์ เป็นสาขาการวิจัยเกี่ยวกับการทำความเข้าใจและการออกแบบความหลากหลายในบริบทของซอฟต์แวร์
ความหลากหลายของซอฟต์แวร์
ความหลากหลายของซอฟต์แวร์เป็นสาขาการวิจัยเกี่ยวกับการทำความเข้าใจและการออกแบบความหลากหลายในบริบทของซอฟต์แวร์
พื้นที่
มีการหารือเกี่ยวกับความหลากหลายของซอฟต์แวร์ในด้านต่างๆ ในการสำรวจเกี่ยวกับความหลากหลายเพื่อความทนทานต่อข้อผิดพลาด[ 1 ]หรือเพื่อความปลอดภัย[ 2 ] [ 3 ]
พื้นที่หลักๆ ได้แก่:
- ความหลากหลายของการออกแบบ, การเขียนโปรแกรมแบบหลายเวอร์ชัน , ความหลากหลายของข้อมูลเพื่อความทนทานต่อข้อผิดพลาด
- การสุ่ม
- ความแปรปรวนของซอฟต์แวร์[ 4 ]
เทคนิค
การแปลงโค้ด
เป็นไปได้ที่จะขยายความหลากหลายของซอฟต์แวร์ผ่านกระบวนการแปลงอัตโนมัติที่สร้างความหลากหลายสังเคราะห์ "มัลติคอมไพเลอร์" คือคอมไพเลอร์ที่ฝังเอ็นจิ้นการกระจายความหลากหลาย[ 5 ]สภาพแวดล้อมการดำเนินการแบบหลายตัวแปร (MVEE) มีหน้าที่ในการเลือกตัวแปรที่จะดำเนินการและเปรียบเทียบผลลัพธ์[ 6 ]
เฟรด โคเฮนเป็นหนึ่งในผู้ส่งเสริมแนวทางดังกล่าวในช่วงแรกๆ เขาเสนอชุดการแปลงการเขียนใหม่และการเรียงลำดับโค้ดใหม่โดยมีเป้าหมายเพื่อสร้างฟังก์ชันระบบปฏิบัติการเวอร์ชันต่างๆ จำนวนมาก[ 7 ]แนวคิดเหล่านี้ได้รับการพัฒนามาเรื่อยๆ ตลอดหลายปีที่ผ่านมา และนำไปสู่การสร้างแผนการปกปิดแบบบูรณาการเพื่อปกป้องฟังก์ชันหลักในระบบซอฟต์แวร์ขนาดใหญ่[ 8 ]
แนวทางอื่นในการเพิ่มความหลากหลายของซอฟต์แวร์ในการป้องกันประกอบด้วยการเพิ่มความสุ่มในกระบวนการหลักบางอย่าง เช่น การโหลดหน่วยความจำ ความสุ่มหมายความว่าโปรแกรมเวอร์ชันเดียวกันทั้งหมดทำงานแตกต่างกัน ซึ่งจะสร้างความหลากหลายของพฤติกรรมของโปรแกรม แนวคิดนี้ได้รับการเสนอและทดลองครั้งแรกโดยStephanie Forrestและเพื่อนร่วมงานของเธอ[ 9 ]
งานวิจัยล่าสุดเกี่ยวกับความหลากหลายของซอฟต์แวร์อัตโนมัติได้สำรวจรูปแบบต่างๆ ของการแปลงโปรแกรมที่เปลี่ยนแปลงพฤติกรรมของโปรแกรมเล็กน้อย เป้าหมายคือการพัฒนาโปรแกรมหนึ่งโปรแกรมให้กลายเป็นกลุ่มโปรแกรมที่หลากหลายซึ่งให้บริการที่คล้ายคลึงกันแก่ผู้ใช้ แต่มีโค้ดที่แตกต่างกัน[ 10 ]ความหลากหลายของโค้ดนี้ช่วยเพิ่มการป้องกันผู้ใช้จากการโจมตีเพียงครั้งเดียวที่อาจทำให้โปรแกรมทั้งหมดล่มพร้อมกัน
ตัวดำเนินการการแปลงประกอบด้วย: [ 11 ]
- การสุ่มจัดวางโครงสร้างโค้ด: เรียงลำดับฟังก์ชันในโค้ดใหม่
- การสุ่มจัดวางตัวแปรส่วนกลาง: จัดลำดับใหม่และเพิ่มช่องว่างให้กับตัวแปรส่วนกลาง
- การสุ่มตัวแปรแบบเรียงซ้อน: จัดเรียงตัวแปรใหม่ในแต่ละเฟรมเรียงซ้อน
- การสุ่มเค้าโครงฮีป
ความหลากหลายของซอฟต์แวร์ตามธรรมชาติ
เป็นที่ทราบกันดีว่าฟังก์ชันการทำงานบางอย่างมีให้ใช้งานในรูปแบบที่สลับเปลี่ยนกันได้ ความหลากหลายตามธรรมชาตินี้สามารถนำมาใช้ประโยชน์ได้ ตัวอย่างเช่น ได้มีการแสดงให้เห็นแล้วว่ามีประโยชน์ในการเพิ่มความปลอดภัยในระบบคลาวด์[ 12 ]
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ความหลากหลายของซอฟต์แวร์
ความหลากหลายของซอฟต์แวร์ เป็นสาขาการวิจัยเกี่ยวกับการทำความเข้าใจและการออกแบบความหลากหลายในบริบทของซอฟต์แวร์
พื้นที่
มีการหารือเกี่ยวกับความหลากหลายของซอฟต์แวร์ในด้านต่างๆ ในการสำรวจเกี่ยวกับความหลากหลายเพื่อความทนทานต่อข้อผิดพลาด [ 1 ] หรือเพื่อความปลอดภัย [ 2 ] [ 3 ]
การแปลงโค้ด
เป็นไปได้ที่จะขยายความหลากหลายของซอฟต์แวร์ผ่านกระบวนการแปลงอัตโนมัติที่สร้างความหลากหลายสังเคราะห์ "มัลติคอมไพเลอร์" คือ คอมไพเลอร์ ที่ฝังเอ็นจิ้นการกระจายความหลากหลาย [ 5 ] สภาพแวดล้อมการดำเนินการแบบหลายตัวแปร (MVEE)...
ความหลากหลายของซอฟต์แวร์ตามธรรมชาติ
เป็นที่ทราบกันดีว่าฟังก์ชันการทำงานบางอย่างมีให้ใช้งานในรูปแบบที่สลับเปลี่ยนกันได้ ความหลากหลายตามธรรมชาตินี้สามารถนำมาใช้ประโยชน์ได้ ตัวอย่างเช่น ได้มีการแสดงให้เห็นแล้วว่ามีประโยชน์ในการเพิ่มความปลอดภัยใน ระบบคลาว ด์ [ 12 ]