บริบทนิดหน่อย
เนื่องจากคุณใช้ MQTT กับ AWS IoT คุณคาดว่าจะใช้ใบรับรอง X.509สำหรับการตรวจสอบสิทธิ์และความปลอดภัย Amazon มีคำแนะนำเล็กน้อยเกี่ยวกับวิธีที่คุณควรรักษาความปลอดภัยใบรับรองของคุณดังนั้นฉันจะเสนอราคาที่นี่:
ใบรับรองเปิดใช้งานคีย์แบบอสมมาตรเพื่อใช้กับอุปกรณ์ ซึ่งหมายความว่าคุณสามารถเบิร์นคีย์ส่วนตัวลงในที่เก็บข้อมูลที่ปลอดภัยบนอุปกรณ์ได้โดยไม่ต้องให้วัสดุการเข้ารหัสลับที่มีความละเอียดอ่อนออกจากอุปกรณ์
เนื่องจากปัจจุบันคุณกำลังใช้Read Out Protection (RDP) ของ STM32 ทั้งหมด แต่ผู้โจมตีที่ได้รับการกำหนดมากที่สุดจะมีปัญหาในการเข้าถึงใบรับรองของคุณในรูปแบบปัจจุบันของคุณ:
การป้องกันการอ่านออกทั่วโลกช่วยให้รหัสเฟิร์มแวร์ในตัว (โหลดไว้ล่วงหน้าในหน่วยความจำแฟลช) เพื่อป้องกันวิศวกรรมย้อนกลับการทุ่มตลาดโดยใช้เครื่องมือดีบั๊กหรือวิธีการอื่น ๆ ของการโจมตีที่ล่วงล้ำ
- ระดับ 0 - ไม่มีการป้องกัน (ค่าเริ่มต้น)
- ระดับ 1 - หน่วยความจำแฟลชได้รับการปกป้องจากการอ่านโดยการดีบักหรือการทิ้งโค้ดโดย RAM ที่โหลดมา
- ระดับ 2 - คุณสมบัติการดีบักทั้งหมดถูกปิดใช้งาน
ที่เก็บข้อมูลภายนอกจะปลอดภัยหรือไม่
มันอาจจะไม่เป็นที่เชื่อถือได้ หากรหัสส่วนตัวของลูกค้าของคุณถูกขโมยผู้โจมตีสามารถส่งข้อมูลที่ดูเหมือนจะมาจากอุปกรณ์ของคุณเมื่อไม่ได้เป็นจริง แม้ว่ามันจะไม่ชัดเจนว่าคุณกำลังส่งข้อมูลใดข้อมูลที่ไม่น่าเชื่อถืออาจมีความเสี่ยงด้านความปลอดภัย
บิตใดที่ฉันจำเป็นต้องให้เป็นส่วนตัว?
เมื่อคุณสร้างใบรับรองอุปกรณ์ใน AWS IoT คุณควรเห็นภาพเช่นนี้:
ภาพจากหน้าสร้างและเปิดใช้งานใบรับรองอุปกรณ์ของเอกสาร AWS IoT
คีย์ส่วนตัวคือสิ่งที่คุณต้องการเก็บรักษา ... เป็นส่วนตัวและควรเก็บไว้ในหน่วยความจำที่มีการป้องกันการอ่านอย่างแน่นอนหากเป็นไปได้ พับลิกคีย์และใบรับรองถูกออกแบบมาเพื่อแชร์ดังนั้นหากคุณไม่มีพื้นที่เหลือเพียงพอคุณสามารถย้ายคีย์เหล่านั้นไปยังที่เก็บข้อมูลภายนอกได้อย่างปลอดภัย คุณสามารถรับบริบทเพิ่มเติมอีกเล็กน้อยบนหน้าSSL / TLS ทำงานอย่างไร ที่ Information Security Stack Exchange และการเข้ารหัสคีย์สาธารณะบน Wikipedia ฉันคิดว่าฉันจะทำให้คุณเป็นความเสียหายถ้าฉันไม่ได้รวมภาพนี้ไว้เพื่ออธิบายว่าทำไมคีย์ส่วนตัวต้องเป็นความลับ:
.
ภาพจากWikipediaซึ่งเผยแพร่สู่สาธารณสมบัติ
กุญแจสาธารณะของอุปกรณ์ของคุณคือสิ่งที่ AWS IoT ใช้ในการเซ็นข้อความเพื่อส่งไปยังอุปกรณ์ของคุณ (แต่ไม่ได้พิสูจน์ว่าใครกำลังส่งข้อความ ) ดังนั้นจริงๆแล้วมันไม่ใช่หายนะครั้งใหญ่ถ้ามีคนขโมยกุญแจสาธารณะเพราะมันไม่ได้หมายความว่าเป็นความลับ
คีย์ส่วนตัวคือสิ่งที่ใช้อุปกรณ์ของคุณเพื่อถอดรหัสข้อความจึงเป็นปัญหาที่ใหญ่กว่าเล็กน้อยถ้าโจมตีขโมยนี้
คุณยังถามว่าจะเกิดอะไรขึ้นถ้าผู้โจมตีขโมยใบรับรอง RootCA ถ้ามีคนขโมยกุญแจส่วนตัว AWS IOT ของมันจะร้ายแรง แต่ใบรับรอง RootCA บนอุปกรณ์ของคุณไม่ได้ว่า สิ่งRootCA.crt
ที่อเมซอนให้แก่คุณนั้นเป็นสาธารณะอย่างสมบูรณ์และมีจุดประสงค์เพื่อให้คุณสามารถตรวจสอบได้ว่าคุณไม่ได้ถูกโจมตี แต่อย่างใด
อุปกรณ์ที่ถูกแฮ็กสามารถทำอะไรได้เสียหาย
อุปกรณ์ที่ถูกขโมยของคุณสามารถดำเนินการตามที่ระบุไว้ในนโยบายเท่านั้น พยายามที่จะปฏิบัติตามหลักการของสิทธิน้อย ; ให้สิทธิ์เฉพาะอุปกรณ์ของคุณที่จำเป็นอย่างยิ่งเท่านั้นดังนั้นหากสิ่งที่เลวร้ายที่สุดเกิดขึ้นมันไม่สามารถทำลายความเสียหายได้มากเกินไป สำหรับกรณีเฉพาะของคุณ:
สิ่งนี้ได้รับอนุญาตให้เผยแพร่ได้เพียง 2 แชนเนล (ชื่อและช่องฟีดข้อมูล) ซึ่งเชื่อมต่อกับตัวประมวลผลข้อมูลซึ่งจะไม่สนใจแพ็กเก็ตอันธพาลใด ๆ ที่เข้ามา
ดีแล้ว. การโจมตีใด ๆ ควรถูกแยกออกเป็นสองหัวข้อ MQTT ที่อุปกรณ์สามารถเผยแพร่ได้ดังนั้นจะไม่ก่อให้เกิดอันตรายในวงกว้าง