สามารถโหลดโปรแกรมลงบนบอร์ด NodeMCU ได้หรือไม่?


13

ฉันกำลังใช้บอร์ด NodeMCU พร้อมความสามารถ WiFi เพื่อสร้างตัวติดตามสินทรัพย์อย่างง่าย ฉันจัดการเพื่อค้นหาภาพร่าง Arduino บางอย่างที่เปิดใช้งานการเชื่อมต่อกับ Azure IoT Hub และโพสต์ข้อความ

หนึ่งในกุญแจที่ฉันต้อง "โหลด" ลงบนบอร์ดคือสตริงการเชื่อมต่ออุปกรณ์ Azure และแน่นอนว่า SSID WiFi และรหัสผ่าน

ความกลัวของฉันคือบางคนอาจใช้บอร์ดและ "ดาวน์โหลด" ไฟล์เพื่อเข้าถึงข้อมูลรับรองความปลอดภัย

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


3
ฉันคิดว่าคำตอบจาก @Mike Ounsworth และ Bence Kaulics ที่นำมารวมกันเป็นทางเลือกที่ดีสำหรับฉัน น่าเสียดายที่ฉันไม่สามารถทำเครื่องหมายทั้งคู่เป็นคำตอบที่ยอมรับได้
แกะ

คำตอบ:


12

[ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้เชี่ยวชาญด้านความปลอดภัย / เข้ารหัสลับและจัดการกับคำถามสถาปัตยกรรมความปลอดภัยเช่นนี้ทุกวัน]

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

หากอุปกรณ์ IoT ของคุณมีที่เก็บฮาร์ดแวร์ในตัวมาเธอร์บอร์ดเช่น TPMs บางตัวหรือเทียบเท่ากับ Keystore ที่ได้รับการสนับสนุนฮาร์ดแวร์ Androidหรือ Apple Secure Enclave คุณสามารถใช้มันได้

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

IoT ขว้างประแจเข้าไปด้วยเหตุผลสองประการ:

  1. การสันนิษฐานว่าหมายเลขซีเรียลของฮาร์ดแวร์อาจไม่ซ้ำกันและ

  2. ซึ่งแตกต่างจากเซิร์ฟเวอร์ผู้โจมตีมีการเข้าถึงทางกายภาพกับอุปกรณ์ดังนั้นอาจจะได้รับเปลือกบนอุปกรณ์เพื่อเรียกใช้โปรแกรมถอดรหัส

ทั้งการเข้ารหัสฮาร์ดแวร์ (TPMs) และการเข้ารหัส "ฮาร์ดแวร์ลายนิ้วมือ" นั้นน่าสับสนที่สุดเพราะโดยพื้นฐานแล้วหากกระบวนการในท้องถิ่นสามารถถอดรหัสข้อมูลได้ผู้โจมตีสามารถเรียกใช้กระบวนการในเครื่องนั้นสามารถถอดรหัสได้


ดังนั้นเคล็ดลับมาตรฐานดูเหมือนจะไม่ทำงานที่นี่ คำถามแรกที่คุณต้องถามตัวเองคือ:

  • รูปแบบการคุกคามของฉันคืออะไร / โครงการนี้อยู่ในSecure <--> Convenientระดับใด?

ท้ายที่สุดฉันคิดว่าคุณต้องตัดสินใจsecurity > convenienceและมีมนุษย์ป้อนข้อมูลประจำตัวหลังจากบูตแต่ละครั้ง (ใช้คำตอบของ @BenceKaulics ) หรือคุณตัดสินใจว่าsecurity < convenienceและใส่ข้อมูลประจำตัวในอุปกรณ์อาจใช้สิ่งที่สับสนถ้าคุณ รู้สึกว่าสร้างความแตกต่าง


นี่เป็นปัญหาที่ยากขึ้นโดยธรรมชาติของอุปกรณ์ IoT

เพื่อความสมบูรณ์โซลูชันทางอุตสาหกรรมที่สมบูรณ์สำหรับปัญหานี้คือ:

  • มอบกุญแจสาธารณะ RSA ให้กับอุปกรณ์ IoT แต่ละเครื่องในเวลาที่ผลิต บันทึกกุญแจสาธารณะนี้ใน db กับหมายเลขซีเรียลของอุปกรณ์
  • จัดเก็บข้อมูลประจำตัวที่ละเอียดอ่อนบนเซิร์ฟเวอร์ที่เหมาะสมลองเรียกมันว่า "เกตเวย์"
  • เมื่ออุปกรณ์ IoT ตรวจสอบสิทธิ์กับเกตเวย์ (โดยใช้คีย์ RSA) เกตเวย์จะเปิดเซสชันโดยใช้ข้อมูลรับรองที่เก็บไว้และส่งโทเค็นเซสชันกลับไปยังอุปกรณ์
  • เพื่อความปลอดภัยที่ดีที่สุดเกตเวย์เป็นเกตเวย์แบบฟิสิคัล (หรือ VPN) เพื่อให้ทราฟฟิกทั้งหมดจากอุปกรณ์ IoT ผ่านเกตเวย์และคุณสามารถควบคุมกฎไฟร์วอลล์และสิ่งต่างๆได้มากขึ้น - ป้องกันอุปกรณ์ไม่ให้มีช่องสัญญาณโดยตรง (ไม่ใช่ VPN) การเข้าถึงอินเทอร์เน็ต

วิธีนี้และผู้โจมตีที่บุกรุกอุปกรณ์สามารถเปิดเซสชัน แต่ไม่สามารถเข้าถึงข้อมูลประจำตัวได้โดยตรง


2
ใช่. ส่วนใหญ่ของปัญหาคือสิ่งที่พยายามปกป้องที่นี่เป็นความลับร่วมที่เป็นรหัสผ่าน wifi ความลับที่ใช้ร่วมกันเป็นความคิดที่ไม่ดีเมื่อสามารถแยกอุปกรณ์ทางกายภาพ การออกแบบที่ดีกว่าจะแยกแต่ละอินสแตนซ์ของอุปกรณ์ (หรือคอมพิวเตอร์เครื่องอื่น) ในสภาพแวดล้อมการรักษาความปลอดภัยของตัวเองด้วยช่องทางที่ปลอดภัยไม่ซ้ำกันระหว่างแต่ละอุปกรณ์และระบบที่พวกเขาต้องการสื่อสารด้วย สำหรับเรื่องนี้ WiFi อาจไม่เหมาะกับแอพพลิเคชั่นมากนักเทียบกับบางส่วนของแบบจุดต่อจุด 2.4 GHz หรือแม้แต่โปรโตคอล "Esp Now"
Chris Stratton

1
จุดดี. คุณสามารถแก้ไขปัญหาความลับที่ใช้ร่วมกันโดยใช้ใบรับรองไคลเอ็นต์องค์กร WPA2 แทนรหัสผ่าน SSID (หากอุปกรณ์ IoT มีขนาดใหญ่พอที่จะมีสแต็ก TLS จำนวนมากจะไม่) ฉันไม่รู้อะไรเลยเกี่ยวกับ Azure IoT Hub แต่ฉันคิดว่าสตริง Azure Device Connection เหล่านั้นมีค่าใช้จ่ายต่ออุปกรณ์อยู่แล้ว น่าเสียดายที่สิ่งนี้ดูเหมือนจะสะอาดขาวดำระหว่าง "DIY ไม่มีความปลอดภัย" และ "ความปลอดภัยระดับอุตสาหกรรม" ซึ่งไม่ได้อยู่ระหว่างกันมากนัก
Mike Ounsworth

2
ฉันสงสัยว่าถ้าฉันสามารถเปิดเซสชันได้ตามต้องการทำไมฉันต้องมีหนังสือรับรอง
Andrew Savinykh

1
@AndrewSavinykh ขึ้นอยู่กับสิ่งที่เป็นข้อมูลประจำตัว บางทีสิ่งที่พวกเขาทำคือเปิดเซสชันซึ่งในกรณีนี้ใช่เหตุผลไม่มาก แต่อาจเป็นข้อมูลรับรองโดเมนของโดเมน Windows หรือให้สิทธิ์เข้าถึง API เพิ่มเติมที่ไม่ได้ใช้ / เข้าถึงได้จากอุปกรณ์ IoT บางทีคุณอาจตกลงกับเซสชันที่มาจากอุปกรณ์ที่ถูกบุกรุก แต่ไม่ตกลงกับเซสชันที่มาจากแล็ปท็อปของผู้โจมตี ใช่มันได้รับเฉพาะกรณีการใช้งานที่ค่อนข้างรวดเร็ว
Mike Ounsworth

3
หมายเลขซีเรียล ??? การค้นหาหมายเลขซีเรียลที่ไม่ซ้ำกันไม่น่าจะมีปัญหา แต่หมายเลขซีเรียลไม่เป็นความลับ พวกเขาไม่มีประโยชน์ที่จะสร้างกุญแจ ที่ใดในโลกที่ใช้หมายเลขซีเรียลเพื่อจัดทำคีย์“ เล่ห์เหลี่ยมมาตรฐาน”?
Gilles 'หยุดความชั่วร้าย'

6

ภัยคุกคามนั้นเป็นจริง แต่โชคดีที่ไม่ใช่คุณคนแรกหรือคนเดียวที่มีปัญหาด้านความปลอดภัยเหล่านี้

สิ่งที่คุณต้องการคือESP WiFi Managerคือสิ่งที่คุณต้องการที่นี่

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

คุณไม่จำเป็นต้อง hardcode ข้อมูลที่สำคัญและคุณสามารถใช้อุปกรณ์ของคุณในเครือข่าย WiFi ที่คุณต้องการโดยไม่จำเป็นต้องทำการ reflashing

มันทำงานอย่างไร

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

  • หากไม่สำเร็จ (หรือไม่มีการบันทึกเครือข่ายก่อนหน้า) จะย้าย ESP ไปที่โหมดจุดเข้าใช้งานและหมุน DNS และเว็บเซิร์ฟเวอร์ (ค่าเริ่มต้น ip 192.168.4.1)

  • ใช้อุปกรณ์ที่เปิดใช้งาน wifi ด้วยเบราว์เซอร์ (คอมพิวเตอร์โทรศัพท์แท็บเล็ต) เชื่อมต่อกับจุดเชื่อมต่อที่สร้างขึ้นใหม่

  • เนื่องจาก Captive Portal และเซิร์ฟเวอร์ DNS คุณจะได้รับป๊อปอัพประเภท 'เข้าร่วมเครือข่าย' หรือรับโดเมนใด ๆ ที่คุณพยายามเข้าถึงที่เปลี่ยนเส้นทางไปยังพอร์ทัลกำหนดค่า

  • เลือกหนึ่งในจุดเข้าใช้งานที่สแกนแล้วป้อนรหัสผ่านแล้วคลิกบันทึก

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

(เอกสารผู้จัดการ ESP WiFi)


1
หรือเพียงแค่ดาวน์โหลดบันทึกหรืออะไรก็ตามที่อยู่ในโหมด AP หวังว่าผู้โพสต์จะไม่พยายามใช้ wifi ในการติดตามทรัพย์สิน
Chris Stratton

1
@ChrisStratton :-) จริง ๆ แล้วฉันพยายามใช้ WiFi เพื่อติดตามสินทรัพย์ โชคดีที่เครือข่าย WiFI ที่ฉันใช้เป็นสาธารณะและเปิด แต่ฉันกังวลเกี่ยวกับความหมายเมื่อฉันต้องการใช้อีกที่ต้องการรหัสผ่าน ความจริงแล้วสตริงการเชื่อมต่อ AzureIoT Hub นั้นอยู่ในอุปกรณ์
แกะ

2
@rams แน่นอนว่าการอ่าน EEPROM ของอุปกรณ์นั้นไม่ใช่เรื่องใหญ่
Bence Kaulics

3
@ กราฟบนฮาร์ดแวร์ของคุณสามารถอ่าน EPROM ได้ อุปกรณ์รุ่นใหม่อาจมีพื้นที่แฟลชที่ปลอดภัยซึ่งได้รับการป้องกันที่ดีขึ้น แน่นอนว่านี่เป็นปัญหาที่ทราบซึ่งต้องการการสนับสนุนบนชิปเพื่อลองและทำอย่างถูกต้อง
Sean Houlihane

2
@SeanHoulihane - ESP8266 ไม่มี EEPROM แฟลช SPI ที่ใช้สำหรับทุกสิ่ง (รวมถึงการเลียนแบบฟังก์ชันการทำงานของ Arduino) นั้นอยู่นอก ESP8266 แม้จะอยู่ในโมดูลหลายชิปมันเป็นแม่พิมพ์ที่แตกต่างที่สามารถตรวจสอบได้ในห้องปฏิบัติการที่เหมาะสม
Chris Stratton

3

ใช่พวกเขาสามารถเข้าถึงรหัสผ่านของคุณถ้าคุณปล่อยให้มันเป็นข้อความธรรมดา

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


3
หากพวกเขาสามารถแยกรหัสผ่านที่แฮชซึ่งใช้งานได้ในขณะที่แฮชมีอะไรที่จะป้องกันไม่ให้ใช้งานโดยที่ไม่ได้ทำการย้อนกลับ
Chris Stratton

1
@ChrisStratton คุณพูดถูก วิธีการป้องกันสำหรับความปลอดภัยของข้อมูล SE คำถามนี้ถามเพื่อป้องกันการสูญเสียข้อมูลประจำตัว อย่างไรก็ตามโทรศัพท์มือถือยังไม่สามารถใช้รหัสผ่านที่แฮชเพื่อเชื่อมต่อกับเครือข่ายได้โดยไม่ต้องมีซอฟต์แวร์เพิ่มเติม
atakanyenel

1
ใช่แล้วมันจะให้การป้องกันบางส่วนในกรณีที่ใช้รหัสผ่าน wifi ในระบบอื่นอีกครั้ง แต่ไม่มากกับการเชื่อมต่อที่ไม่ได้รับอนุญาตไปยังจุดเชื่อมต่อ wifi นั้น
Chris Stratton

1
@ChrisStratton ใช่แล้วตัวอย่างเช่นรายการที่อนุญาตของ MAC นั้นปลอดภัยกว่าการมีรหัสผ่านและการแฮช แต่ขั้นตอนเหล่านี้ใช้สำหรับการรักษาความปลอดภัย wifi โดยทั่วไปไม่ใช่เพื่อความเป็นส่วนตัวของข้อมูลประจำตัวบนอุปกรณ์สาธารณะ
atakanyenel

2
ไม่บัญชีขาวของ MAC เป็นเรื่องตลก - ไม่มีความลับเลย และแน่นอนว่า MAC นั้นสกัดมาจาก ESP8266 หรือแฟลช SPI ที่ถูกขโมย เกี่ยวกับสถานที่ที่ปลอดภัยเพียงแห่งเดียวใน MAC จะช่วยต่อต้านผู้ที่ใช้ GUI เพื่อเข้าร่วมเครือข่าย wifi หรือถ้าจุดเชื่อมต่อกำลังรอการเชื่อมต่อจากลูกค้าที่อาจปรากฏขึ้นมาบางวัน แต่ไม่เคยเชื่อมต่อกับมัน - เช่น ดาบในสิ่งของประเภทหิน
Chris Stratton

1

คำตอบง่ายๆ - ใช่ มันสามารถทำได้ อย่างน้อยคุณต้องทำการobfuscationเพื่อป้องกันน้อยที่สุด


1
Obfuscation ทำให้มันยากที่จะหาวิธีการที่อุปกรณ์ไม่สิ่ง แต่มันไม่มีประโยชน์ที่จะป้องกันโคลนของอุปกรณ์ มันไม่มีประโยชน์ที่จะป้องกันการแตกข้อมูลประจำตัว: สิ่งที่คุณต้องทำคือรันเฟิร์มแวร์ในอีมูเลเตอร์
Gilles 'หยุดความชั่วร้าย'

เห็นด้วยอย่างสิ้นเชิง. แรงจูงใจของฉันที่ให้คำตอบคือต้องทราบว่า <IoT ต้องคำนึงถึงความปลอดภัยของเครือข่าย> @Mike Ounsworth ให้คำตอบโดยละเอียดเกี่ยวกับการแก้ปัญหาด้วย AES และ / หรือโครงสร้างพื้นฐาน ฉันกำลังพิจารณาที่จะให้คำตอบเพิ่มอีกหนึ่งข้อ แต่ฉันไม่แน่ใจว่าจะเข้าสู่วิทยาการเข้ารหัสลับได้อย่างไร (ฉันยังต้องใช้เวลาหลายปีในการชำระเงินและโซลูชั่นธนาคาร) ความคิดของฉันคือเราต้องให้คำแนะนำเชิงปฏิบัติ / มีความสมดุลเพราะโดยปกติผู้คนจะหลีกเลี่ยงการเข้าไปในการเข้ารหัสเพื่อปกป้องอุปกรณ์ IoT ในสวนหลังบ้านของเขา
Amit Vujic

1
หากผู้คนต้องการสร้างอุปกรณ์ที่ไม่ปลอดภัยเพราะพวกเขาไม่สามารถทราบวิธีการสร้างอุปกรณ์ที่ปลอดภัยได้ฉันไม่เห็นเหตุผลที่จะเปิดใช้งานอุปกรณ์เหล่านั้น
Gilles 'SO- หยุดความชั่วร้าย'

ประสบการณ์ของฉันคือคนต้องการเรียนรู้ แต่ต้องมีความสมดุลระหว่างระดับความปลอดภัยและความซับซ้อน มีเรื่องราวที่โด่งดังในอุตสาหกรรมการชำระเงินเกี่ยวกับตลาดหลักทรัพย์ ( en.wikipedia.org/wiki/Secure_Electronic_Transaction ) ซึ่งมีความปลอดภัยสูง แต่มีความซับซ้อนในการนำไปปฏิบัติและเนื่องจากความล้มเหลวในทางปฏิบัติ
Amit Vujic

2
การทำให้งงงวยเพิ่มความซับซ้อนโดยไม่ต้องปรับปรุงความปลอดภัย นั่นไม่ใช่ความสมดุล
Gilles 'หยุดชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.