You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/th/2-farm/lessons/6-keep-your-plant-secure
co-op-translator[bot] 2f4dff5e89
🌐 Update translations via Co-op Translator (#546)
4 weeks ago
..
README.md 🌐 Update translations via Co-op Translator (#546) 4 weeks ago
assignment.md 🌐 Update translations via Co-op Translator (#546) 4 weeks ago
single-board-computer-x509.md 🌐 Update translations via Co-op Translator (#546) 4 weeks ago
wio-terminal-x509.md 🌐 Update translations via Co-op Translator (#546) 4 weeks ago

README.md

รักษาความปลอดภัยให้กับอุปกรณ์ IoT ของคุณ

ภาพสเก็ตโน้ตภาพรวมของบทเรียนนี้

สเก็ตโน้ตโดย Nitya Narasimhan คลิกที่ภาพเพื่อดูภาพขนาดใหญ่ขึ้น

แบบทดสอบก่อนเรียน

แบบทดสอบก่อนเรียน

บทนำ

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

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

ในบทเรียนนี้เราจะครอบคลุม:

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

หากจำเป็น ให้ดูคำแนะนำใน คู่มือการล้างโครงการของคุณ เพื่อดูวิธีการทำ

ทำไมคุณถึงต้องรักษาความปลอดภัยให้อุปกรณ์ IoT?

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

หากแอปพลิเคชัน IoT ของคุณไม่ปลอดภัย อาจเกิดความเสี่ยงหลายประการ:

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

นี่เป็นสถานการณ์ที่เกิดขึ้นจริง และเกิดขึ้นตลอดเวลา ตัวอย่างบางส่วนได้กล่าวถึงในบทเรียนก่อนหน้า แต่ยังมีตัวอย่างเพิ่มเติมดังนี้:

  • ในปี 2018 แฮกเกอร์ใช้จุดเชื่อมต่อ WiFi ที่เปิดอยู่บนเทอร์โมสตัทของตู้ปลาที่เชื่อมต่ออินเทอร์เน็ตเพื่อเข้าถึงเครือข่ายของคาสิโนและขโมยข้อมูล The Hacker News - Casino Gets Hacked Through Its Internet-Connected Fish Tank Thermometer
  • ในปี 2016 Mirai Botnet ได้เปิดการโจมตีแบบปฏิเสธการให้บริการ (DDoS) ต่อ Dyn ผู้ให้บริการอินเทอร์เน็ต ทำให้ส่วนใหญ่ของอินเทอร์เน็ตล่ม Botnet นี้ใช้มัลแวร์เพื่อเชื่อมต่อกับอุปกรณ์ IoT เช่น DVR และกล้องที่ใช้ชื่อผู้ใช้และรหัสผ่านเริ่มต้น และจากนั้นเปิดการโจมตี The Guardian - DDoS attack that disrupted internet was largest of its kind in history, experts say
  • Spiral Toys มีฐานข้อมูลของผู้ใช้ของ CloudPets ที่เชื่อมต่อกับของเล่นที่เปิดเผยต่อสาธารณะบนอินเทอร์เน็ต Troy Hunt - Data from connected CloudPets teddy bears leaked and ransomed, exposing kids' voice messages.
  • Strava ติดแท็กนักวิ่งที่คุณวิ่งผ่านและแสดงเส้นทางของพวกเขา ทำให้คนแปลกหน้าสามารถเห็นได้ว่าคุณอาศัยอยู่ที่ไหน Kim Komndo - Fitness app could lead a stranger right to your home — change this setting.

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

💁 ความปลอดภัยเป็นหัวข้อที่กว้างมาก และบทเรียนนี้จะครอบคลุมเพียงพื้นฐานบางส่วนเกี่ยวกับการเชื่อมต่ออุปกรณ์ของคุณกับคลาวด์ หัวข้ออื่นๆ ที่จะไม่ครอบคลุมรวมถึงการตรวจสอบการเปลี่ยนแปลงข้อมูลระหว่างการส่ง การแฮกอุปกรณ์โดยตรง หรือการเปลี่ยนแปลงการกำหนดค่าอุปกรณ์ การแฮก IoT เป็นภัยคุกคามที่สำคัญจนมีการพัฒนาเครื่องมืออย่าง Azure Defender for IoT เครื่องมือเหล่านี้คล้ายกับโปรแกรมป้องกันไวรัสและเครื่องมือรักษาความปลอดภัยที่คุณอาจมีในคอมพิวเตอร์ของคุณ แต่ได้รับการออกแบบมาสำหรับอุปกรณ์ IoT ขนาดเล็กที่ใช้พลังงานต่ำ

การเข้ารหัส

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

ทั้งอุปกรณ์จริงและอุปกรณ์ที่ถูกแฮกสามารถใช้ ID เดียวกันเพื่อส่งข้อมูลเทเลเมทรี

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

หากใช้การเข้ารหัส ข้อความที่ถูกเข้ารหัสเท่านั้นที่จะได้รับการยอมรับ ข้อความอื่นๆ จะถูกปฏิเสธ

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

เทคนิคสำหรับการเข้ารหัสและถอดรหัสนี้เรียกว่า การเข้ารหัสลับ (Cryptography)

การเข้ารหัสในยุคแรก

การเข้ารหัสในยุคแรกๆ คือการเข้ารหัสแบบแทนที่ (Substitution Cipher) ซึ่งมีอายุย้อนไปถึง 3,500 ปี การเข้ารหัสแบบแทนที่เกี่ยวข้องกับการแทนที่ตัวอักษรหนึ่งด้วยตัวอักษรอื่น ตัวอย่างเช่น Caesar cipher ใช้การเลื่อนตัวอักษรในอักษรภาษาอังกฤษตามจำนวนที่กำหนด โดยมีเพียงผู้ส่งข้อความและผู้รับข้อความที่ตั้งใจเท่านั้นที่รู้ว่าต้องเลื่อนตัวอักษรไปกี่ตัว

รหัส Vigenère พัฒนาต่อไปโดยใช้คำเพื่อเข้ารหัสข้อความ ทำให้แต่ละตัวอักษรในข้อความต้นฉบับถูกเลื่อนด้วยจำนวนที่แตกต่างกัน แทนที่จะเลื่อนด้วยจำนวนตัวอักษรเดียวกันเสมอ

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

การเข้ารหัสในยุคปัจจุบัน

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

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

🎓 HTTPS ย่อมาจาก HyperText Transfer Protocol Secure

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

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

คีย์แบบสมมาตรและอสมมาตร

การเข้ารหัสมีสองประเภท - แบบสมมาตรและอสมมาตร

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

การเข้ารหัสแบบสมมาตรใช้คีย์เดียวกันในการเข้ารหัสและถอดรหัสข้อความ

หากคีย์ถูกขโมยระหว่างการส่ง หรือผู้ส่งหรือผู้รับถูกแฮกและคีย์ถูกค้นพบ การเข้ารหัสสามารถถูกถอดรหัสได้

การเข้ารหัสแบบสมมาตรปลอดภัยเฉพาะเมื่อแฮกเกอร์ไม่ได้รับคีย์ - หากได้รับ พวกเขาสามารถดักจับและถอดรหัสข้อความได้

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

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

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

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

การรักษาความปลอดภัยให้อุปกรณ์ IoT ของคุณ

อุปกรณ์ IoT สามารถรักษาความปลอดภัยได้โดยใช้การเข้ารหัสแบบสมมาตรหรืออสมมาตร การเข้ารหัสแบบสมมาตรง่ายกว่า แต่ปลอดภัยน้อยกว่า

คีย์แบบสมมาตร

เมื่อคุณตั้งค่าอุปกรณ์ IoT ของคุณให้ทำงานร่วมกับ IoT Hub คุณได้ใช้สตริงการเชื่อมต่อ ตัวอย่างสตริงการเชื่อมต่อคือ:

HostName=soil-moisture-sensor.azure-devices.net;DeviceId=soil-moisture-sensor;SharedAccessKey=Bhry+ind7kKEIDxubK61RiEHHRTrPl7HUow8cEm/mU0=

สตริงการเชื่อมต่อนี้ประกอบด้วยสามส่วนที่แยกด้วยเครื่องหมายเซมิโคลอน โดยแต่ละส่วนเป็นคีย์และค่า:

คีย์ ค่า คำอธิบาย
HostName soil-moisture-sensor.azure-devices.net URL ของ IoT Hub
DeviceId soil-moisture-sensor ID ที่ไม่ซ้ำกันของอุปกรณ์
SharedAccessKey Bhry+ind7kKEIDxubK61RiEHHRTrPl7HUow8cEm/mU0= คีย์แบบสมมาตรที่รู้โดยอุปกรณ์และ IoT Hub

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

ทำการทดลอง: คุณคิดว่าจะเกิดอะไรขึ้นหากคุณเปลี่ยนส่วน SharedAccessKey ของสตริงการเชื่อมต่อเมื่อเชื่อมต่ออุปกรณ์ IoT ของคุณ? ลองทำดู

เมื่ออุปกรณ์พยายามเชื่อมต่อครั้งแรก จะส่งโทเค็นลายเซ็นการเข้าถึงร่วม (SAS) ซึ่งประกอบด้วย URL ของ IoT Hub, เวลาหมดอายุของลายเซ็นการเข้าถึง (โดยปกติคือ 💁 เนื่องจากเวลาหมดอายุ อุปกรณ์ IoT ของคุณจำเป็นต้องทราบเวลาที่ถูกต้อง ซึ่งมักจะอ่านจากเซิร์ฟเวอร์ NTP หากเวลาไม่ถูกต้อง การเชื่อมต่อจะล้มเหลว หลังจากการเชื่อมต่อ ข้อมูลทั้งหมดที่ส่งไปยัง IoT Hub จากอุปกรณ์ หรือส่งจาก IoT Hub ไปยังอุปกรณ์ จะถูกเข้ารหัสด้วย shared access key

คุณคิดว่าจะเกิดอะไรขึ้นถ้าอุปกรณ์หลายตัวใช้ connection string เดียวกัน?

💁 การเก็บ key นี้ไว้ในโค้ดเป็นแนวปฏิบัติที่ไม่ดีในด้านความปลอดภัย หากแฮกเกอร์ได้โค้ดของคุณ พวกเขาก็จะได้ key ของคุณไปด้วย นอกจากนี้ยังทำให้ยากขึ้นเมื่อปล่อยโค้ด เนื่องจากคุณจะต้องคอมไพล์ใหม่พร้อมกับ key ที่อัปเดตสำหรับทุกอุปกรณ์ วิธีที่ดีกว่าคือโหลด key นี้จาก hardware security module ซึ่งเป็นชิปบนอุปกรณ์ IoT ที่เก็บค่าที่เข้ารหัสไว้และสามารถอ่านได้โดยโค้ดของคุณ

ในการเรียนรู้ IoT บางครั้งการใส่ key ลงในโค้ดจะง่ายกว่า เช่นที่คุณทำในบทเรียนก่อนหน้า แต่คุณต้องมั่นใจว่า key นี้จะไม่ถูกเช็คอินในระบบควบคุมโค้ดสาธารณะ

อุปกรณ์มี key 2 ตัว และ connection string ที่สอดคล้องกัน 2 ชุด สิ่งนี้ช่วยให้คุณสามารถหมุนเวียน key ได้ นั่นคือการสลับจาก key หนึ่งไปยังอีก key หนึ่งหาก key แรกถูกละเมิด และสร้าง key แรกใหม่

ใบรับรอง X.509

เมื่อคุณใช้การเข้ารหัสแบบอสมมาตรด้วยคู่ public/private key คุณจำเป็นต้องให้ public key ของคุณแก่ใครก็ตามที่ต้องการส่งข้อมูลถึงคุณ ปัญหาคือ ผู้รับ key ของคุณจะมั่นใจได้อย่างไรว่าเป็น public key ของคุณจริง ๆ ไม่ใช่ของคนอื่นที่แอบอ้างเป็นคุณ? แทนที่จะให้ key คุณสามารถให้ public key ของคุณอยู่ในใบรับรองที่ได้รับการตรวจสอบโดยบุคคลที่สามที่เชื่อถือได้ ซึ่งเรียกว่าใบรับรอง X.509

ใบรับรอง X.509 เป็นเอกสารดิจิทัลที่มีส่วน public key ของคู่ public/private key โดยปกติจะออกโดยองค์กรที่เชื่อถือได้หลายแห่งที่เรียกว่า Certification authorities (CAs) และลงนามดิจิทัลโดย CA เพื่อระบุว่า key นั้นถูกต้องและมาจากคุณ คุณเชื่อถือใบรับรองและเชื่อว่า public key มาจากผู้ที่ใบรับรองระบุว่าเป็นเจ้าของ เพราะคุณเชื่อถือ CA เช่นเดียวกับที่คุณเชื่อถือหนังสือเดินทางหรือใบขับขี่เพราะคุณเชื่อถือประเทศที่ออกเอกสารนั้น ใบรับรองมีค่าใช้จ่าย ดังนั้นคุณสามารถ 'self-sign' ได้ นั่นคือสร้างใบรับรองด้วยตัวคุณเองและลงนามโดยคุณเองเพื่อการทดสอบ

💁 คุณไม่ควรใช้ใบรับรองที่ self-signed สำหรับการปล่อยผลิตภัณฑ์จริง

ใบรับรองเหล่านี้มีหลายฟิลด์ รวมถึงข้อมูลว่า public key มาจากใคร รายละเอียดของ CA ที่ออกใบรับรอง ระยะเวลาที่ใบรับรองมีผล และตัว public key เอง ก่อนใช้ใบรับรอง ควรตรวจสอบว่าใบรับรองนั้นได้รับการลงนามโดย CA ดั้งเดิม

คุณสามารถอ่านรายการฟิลด์ทั้งหมดในใบรับรองได้ใน Microsoft Understanding X.509 Public Key Certificates tutorial

เมื่อใช้ใบรับรอง X.509 ทั้งผู้ส่งและผู้รับจะมี public และ private key ของตัวเอง รวมถึงใบรับรอง X.509 ที่มี public key ทั้งคู่จะแลกเปลี่ยนใบรับรอง X.509 กัน โดยใช้ public key ของกันและกันเพื่อเข้ารหัสข้อมูลที่ส่ง และใช้ private key ของตัวเองเพื่อถอดรหัสข้อมูลที่ได้รับ

แทนที่จะแชร์ public key คุณสามารถแชร์ใบรับรองได้ ผู้ใช้ใบรับรองสามารถตรวจสอบว่าใบรับรองมาจากคุณโดยตรวจสอบกับ certificate authority ที่ลงนามใบรับรองนั้น

ข้อดีอย่างหนึ่งของการใช้ใบรับรอง X.509 คือสามารถแชร์ระหว่างอุปกรณ์ได้ คุณสามารถสร้างใบรับรองหนึ่งใบ อัปโหลดไปยัง IoT Hub และใช้สำหรับอุปกรณ์ทั้งหมดของคุณ อุปกรณ์แต่ละตัวเพียงแค่ต้องรู้ private key เพื่อถอดรหัสข้อความที่ได้รับจาก IoT Hub

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

💁 จำไว้ว่า public key เป็นสิ่งที่เปิดเผยได้ - public key ของ Azure สามารถใช้เข้ารหัสข้อมูลที่ส่งไปยัง Azure เท่านั้น ไม่สามารถใช้ถอดรหัสได้ ดังนั้นจึงสามารถแชร์ได้ทุกที่ รวมถึงในโค้ดต้นฉบับ ตัวอย่างเช่น คุณสามารถดูได้ใน Azure IoT C SDK source code

มีคำศัพท์มากมายเกี่ยวกับใบรับรอง X.509 คุณสามารถอ่านคำจำกัดความของคำศัพท์บางคำที่คุณอาจพบได้ใน The laymans guide to X.509 certificate jargon

สร้างและใช้ใบรับรอง X.509

ขั้นตอนในการสร้างใบรับรอง X.509 คือ:

  1. สร้างคู่ public/private key หนึ่งในอัลกอริธึมที่ใช้กันอย่างแพร่หลายในการสร้างคู่ public/private key คือ RivestShamirAdleman(RSA)

  2. ส่ง public key พร้อมข้อมูลที่เกี่ยวข้องเพื่อการลงนาม โดย CA หรือโดยการ self-sign

Azure CLI มีคำสั่งในการสร้าง device identity ใหม่ใน IoT Hub และสร้างคู่ public/private key พร้อมกับสร้างใบรับรองที่ self-signed โดยอัตโนมัติ

💁 หากคุณต้องการดูขั้นตอนโดยละเอียดแทนที่จะใช้ Azure CLI คุณสามารถค้นหาได้ใน Using OpenSSL to create self-signed certificates tutorial in the Microsoft IoT Hub documentation

งาน - สร้าง device identity โดยใช้ใบรับรอง X.509

  1. รันคำสั่งต่อไปนี้เพื่อลงทะเบียน device identity ใหม่ พร้อมกับสร้าง key และใบรับรองโดยอัตโนมัติ:

    az iot hub device-identity create --device-id soil-moisture-sensor-x509 \
                                      --am x509_thumbprint \
                                      --output-dir . \
                                      --hub-name <hub_name>
    

    แทนที่ <hub_name> ด้วยชื่อที่คุณใช้สำหรับ IoT Hub

    คำสั่งนี้จะสร้างอุปกรณ์ที่มี ID เป็น soil-moisture-sensor-x509 เพื่อแยกความแตกต่างจาก device identity ที่คุณสร้างในบทเรียนก่อนหน้า คำสั่งนี้ยังจะสร้างไฟล์ 2 ไฟล์ในไดเรกทอรีปัจจุบัน:

    • soil-moisture-sensor-x509-key.pem - ไฟล์นี้มี private key สำหรับอุปกรณ์
    • soil-moisture-sensor-x509-cert.pem - ไฟล์นี้เป็นไฟล์ใบรับรอง X.509 สำหรับอุปกรณ์

    เก็บไฟล์เหล่านี้ให้ปลอดภัย! ไฟล์ private key ไม่ควรถูกเช็คอินในระบบควบคุมโค้ดสาธารณะ

งาน - ใช้ใบรับรอง X.509 ในโค้ดอุปกรณ์ของคุณ

ทำตามคู่มือที่เกี่ยวข้องเพื่อเชื่อมต่ออุปกรณ์ IoT ของคุณกับคลาวด์โดยใช้ใบรับรอง X.509:


🚀 ความท้าทาย

มีหลายวิธีในการสร้าง จัดการ และลบบริการ Azure เช่น Resource Groups และ IoT Hubs วิธีหนึ่งคือ Azure Portal - อินเทอร์เฟซบนเว็บที่ให้ GUI สำหรับจัดการบริการ Azure ของคุณ

ไปที่ portal.azure.com และสำรวจพอร์ทัล ดูว่าคุณสามารถสร้าง IoT Hub โดยใช้พอร์ทัลได้หรือไม่ จากนั้นลบมัน

คำแนะนำ - เมื่อสร้างบริการผ่านพอร์ทัล คุณไม่จำเป็นต้องสร้าง Resource Group ล่วงหน้า สามารถสร้างได้เมื่อคุณกำลังสร้างบริการ อย่าลืมลบมันเมื่อคุณทำเสร็จแล้ว!

คุณสามารถค้นหาเอกสาร คู่มือ และคำแนะนำมากมายเกี่ยวกับ Azure Portal ได้ใน Azure portal documentation

แบบทดสอบหลังการบรรยาย

Post-lecture quiz

ทบทวนและศึกษาด้วยตนเอง

งานที่ได้รับมอบหมาย

สร้างอุปกรณ์ IoT ใหม่


ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้