ผู้สร้างภาษา C++ วิจารณ์รายงานของ NSA เกี่ยวกับภาษาโปรแกรมที่ปลอดภัย

บียาร์น สตรูสตรัป

Bjarne Stroustrup ตอบสนองต่อคำแนะนำของ NSA และขัดแย้งกับการจัดประเภท C++

บียาร์เน่ สตรูสทรัป ผู้สร้างภาษา C++ โพสต์คัดค้านการค้นพบรายงานของ NSA โดยแนะนำให้องค์กรต่างๆ เลิกใช้ภาษาโปรแกรมอย่าง C และ C++ ซึ่งเปลี่ยนการจัดการหน่วยความจำเป็นของนักพัฒนา หันไปใช้ภาษาอย่าง C#, Go, Java, Ruby, Rust และ Swift ที่ให้การจัดการหน่วยความจำโดยอัตโนมัติ หรือ ทำการตรวจสอบความปลอดภัยของหน่วยความจำในขณะคอมไพล์

ตามที่ Stroustrup, ภาษาที่ปลอดภัยที่กล่าวถึงในรายงานของ NSA ไม่ได้เหนือกว่า C++ จริงๆ ในแอปพลิเคชันที่สำคัญจากมุมมองของคุณ

NSA แนะนำให้องค์กรพิจารณาการเปลี่ยนแปลงเชิงกลยุทธ์กับภาษาโปรแกรมที่ใช้ ให้การป้องกันหน่วยความจำในตัวเพียงเล็กน้อยหรือไม่มีเลย เช่น C/C++ ให้กับภาษาที่ปลอดภัยต่อหน่วยความจำ
เมื่อเป็นไปได้

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

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

ตัวอย่างเช่น แนวทางหลักส่วนใหญ่ถูกนำไปใช้งานแล้วใน Microsoft Visual Studio Static Analyzer และโปรไฟล์ Memory-Safe คำแนะนำบางส่วนยังนำมาพิจารณาในเครื่องวิเคราะห์แบบคงที่ของ Clang tidy

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

น่าเสียดายที่การใช้งาน C++ ส่วนใหญ่ยังติดอยู่ในอดีตอันไกลโพ้น เพิกเฉยต่อการปรับปรุง รวมถึงวิธีการปรับปรุงความปลอดภัยอย่างมาก ตอนนี้ ถ้าฉันต้องพิจารณาภาษาที่ "ปลอดภัย" เหล่านั้นที่เหนือกว่า C++ สำหรับช่วงการใช้งานที่ฉันสนใจ ฉันจะไม่ถือว่าการที่ C/C++ พังทลายลงเป็นเรื่องเลวร้าย แต่นั่นไม่ใช่กรณี .

Bjarne Stroustrup ไม่เห็นด้วยที่สื่อสิ่งพิมพ์ของ NSA จำกัดแนวคิดของการปกป้องซอฟต์แวร์ไว้เพียงการปกป้องหน่วยความจำ อันที่จริง ลักษณะนี้เป็นตัวหารร่วมของสิ่งพิมพ์ทั้งหมดที่แนะนำให้ทิ้ง C หรือ C++ แทนภาษา Rust เพื่อรับประกันความปลอดภัยของซอฟต์แวร์ที่บริษัทขนาดใหญ่หลายแห่ง (Microsoft, Amazon ฯลฯ) รู้จัก

“ไม่มีคำจำกัดความเดียวของคำว่า 'ความปลอดภัย' และเราสามารถประสบความสำเร็จในการรักษาความปลอดภัยประเภทต่างๆ ผ่านการผสมผสานรูปแบบการเขียนโปรแกรม ไลบรารีสนับสนุน และใช้ประโยชน์จากการวิเคราะห์แบบคงที่” เขากล่าว ดังนั้น Bjarne Stroustrup จึงแนะนำว่าสิ่งที่ได้จาก C++ ในแง่ของความปลอดภัยของซอฟต์แวร์นั้นขึ้นอยู่กับผู้พัฒนาและโดยเฉพาะอย่างยิ่ง ความรู้เรื่องเครื่องมือที่ภาษานั้นนำเสนอ ความเชี่ยวชาญของเขาเกี่ยวกับคอมไพเลอร์ ฯลฯ

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

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

สุดท้าย หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการเผยแพร่ของผู้สร้าง C++ คุณสามารถดูรายละเอียดได้ใน ลิงค์ต่อไปนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา