หากคุณสามารถใช้ TCP แบบครบวงจรให้ใช้ TLS แบบ end-to-end (เช่นด้วย HTTPS)
อย่าประดิษฐ์ล้อเลื่อนโดยเฉพาะอย่างยิ่งเมื่อพูดถึงการเข้ารหัส - คนส่วนใหญ่เข้าใจผิด เว้นแต่อุปกรณ์ที่มีมากเกินไปมีทรัพยากร จำกัด เพื่อสนับสนุน TLS ถ้าคุณได้รับลงไปถึงระดับของ AES ที่คุณกำลังทำมันผิด # 1 ข้อผิดพลาดคือการเข้ารหัสและลืมที่จะตรวจสอบ - ถ้าคุณมีช่องทางการเข้ารหัสระหว่างเซิร์ฟเวอร์ของคุณกับคนที่อยู่ตรงกลางแทนที่จะเป็นช่องทางที่เข้ารหัสระหว่างเซิร์ฟเวอร์และอุปกรณ์ของคุณแล้วการเข้ารหัสไม่มีประโยชน์ใด ๆ . หากคุณไม่สามารถใช้ TLS ตรวจสอบให้แน่ใจว่าโปรโตคอลใดที่คุณใช้ตรวจสอบสิทธิ์ทุกอย่างและเข้ารหัสสิ่งที่ต้องเป็นความลับ
ในการใช้ TLS อย่างปลอดภัยให้คิดถึงสิ่งที่รับประกันว่าคุณต้องมีจากมุมมองของผู้เข้าร่วมแต่ละคน โดยทั่วไปแล้วอุปกรณ์จำเป็นต้องรู้ว่ามันกำลังพูดคุยกับเซิร์ฟเวอร์ที่ถูกกฎหมาย นั่นหมายความว่าจะต้องตรวจสอบใบรับรองของเซิร์ฟเวอร์ อุปกรณ์ต้องมีใบรับรอง X.509 ของหน่วยงานออกใบรับรองที่บันทึกว่าเชื่อถือได้ ต้องมีที่เก็บข้อมูลซึ่งผู้โจมตีไม่สามารถแก้ไขได้ แต่ไม่ต้องการการเก็บข้อมูลที่เป็นความลับ โปรดทราบว่าคุณไม่ควรกำหนดรหัสใบรับรองของเซิร์ฟเวอร์โดยตรงเนื่องจากจะไม่อนุญาตให้คุณเปลี่ยนใบรับรองนั้นหากถูกบุกรุก แต่อุปกรณ์จะเก็บข้อมูลประจำตัวที่คาดหวังไว้แทน(ชื่อโฮสต์) ของเซิร์ฟเวอร์และใบรับรองของผู้ออกใบรับรองที่รับรองว่ากุญแจสาธารณะบางอันเป็นของชื่อโฮสต์ที่คาดหวัง อย่าซ้ำล้ออีกครั้งพึ่งพาการตรวจสอบใบรับรองจากห้องสมุดหรือแอปพลิเคชัน TLS ของคุณ
หากเซิร์ฟเวอร์จำเป็นต้องรู้ว่ามันกำลังพูดคุยกับลูกค้าที่ถูกต้องลูกค้าแต่ละคนต้องมีใบรับรองลูกค้าของตนเอง ที่ต้องมีการจัดเก็บข้อมูลลับบนไคลเอนต์ ส่งใบรับรองไคลเอ็นต์ไปยังฟังก์ชันการเปิดเซสชัน TLS จากไลบรารี TLS ของคุณหรือตั้งค่าในการกำหนดค่าแอปพลิเคชัน
ที่ดูแลการสื่อสารระหว่างเซิร์ฟเวอร์ของคุณกับอุปกรณ์ของคุณ หากแอปพลิเคชันมือถือสามารถพูดคุยกับอุปกรณ์ได้โดยตรง (เช่นเพื่อให้สามารถทำการเชื่อมต่อได้ในขณะที่อยู่ในเครือข่าย wifi ในพื้นที่) คุณต้องทำการจับคู่ระหว่างสวิตช์อัจฉริยะกับโทรศัพท์มือถือก่อน การจับคู่หมายถึงการแลกเปลี่ยนกุญแจโดยเฉพาะอย่างยิ่งการแลกเปลี่ยนกุญแจสาธารณะถ้าทรัพยากรอนุญาตหรือมิฉะนั้นข้อตกลงของคีย์ลับ เป้าหมายของการจับคู่นี้คือเพื่อให้แน่ใจว่าอุปกรณ์แต่ละเครื่องรู้ว่าใครกำลังคุยอยู่
คุณจะต้องรักษาความปลอดภัยของช่องสัญญาณควบคุมเช่นกันไม่ว่าจะโดยตรงจากอุปกรณ์มือถือไปยังสมาร์ทสวิตช์หรือผ่านเซิร์ฟเวอร์ คิดเกี่ยวกับการอนุญาต: มีระดับการเข้าถึงสวิตช์ที่แตกต่างกันหรือไม่เช่นระดับการควบคุมที่อนุญาตให้ทำการกำหนดค่าใหม่และช่องสัญญาณพื้นฐานที่อนุญาตให้เปิด / ปิดสวิตช์ได้หรือไม่ โดยทั่วไปขั้นตอนนี้จะได้รับการจัดการโดยการรับรองความถูกต้องหลังจากสร้างแชนเนลที่ปลอดภัย (TLS ถ้าเป็นไปได้)
ข้อควรพิจารณาอีกประการคือการอัปเดตเฟิร์มแวร์ นั่นเป็นสิ่งที่ยุ่งยาก: ในอีกด้านหนึ่งไม่มีสิ่งใดที่เป็นความปลอดภัยแน่นอนดังนั้นคุณจะมีแพตช์รักษาความปลอดภัยที่จะใช้ทันที ในทางกลับกันกลไกการอัพเกรดเฟิร์มแวร์เป็นสิ่งที่ซับซ้อนและอาจมีข้อบกพร่อง อย่างน้อยที่สุดให้แน่ใจว่าการอัพเกรดเฟิร์มแวร์ของคุณได้รับการลงชื่อ การใช้ความปลอดภัยอย่างแท้จริงของช่องทางการสื่อสารสำหรับการอัพเกรดนั้นเป็นการหลบหลีกเพราะช่องสัญญาณที่เชื่อถือได้มีขนาดใหญ่กว่าการตรวจสอบความปลอดภัยแบบคงที่และบางครั้งคุณอาจต้องการใช้การอัปเดตเฟิร์มแวร์โดยไม่มีการเชื่อมต่อเครือข่าย นอกเหนือจากการตรวจสอบลายเซ็นแล้วคุณควรมีการป้องกันการย้อนกลับเพื่อให้ฝ่ายตรงข้ามสามารถ '