1 คะแนน โดย GN⁺ 2024-12-29 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ESP32 เป็นชิปที่พบได้ทั่วไปมาก ถึงขั้นที่ใน CCH น่าจะมีใช้อยู่หลายพันตัว แต่แกนสำคัญอย่าง Wi‑Fi stack เป็นแบบปิด จึงแก้ไขและตรวจสอบได้ยาก
  • เซสชัน 38c3 เริ่มจาก การทำ reverse engineering อุปกรณ์รอบข้าง Wi‑Fi และเล่ากระบวนการสร้าง Wi‑Fi stack แบบโอเพนซอร์ส
  • เป้าหมายไม่ใช่แค่การทำ implementation ทดแทน แต่คือการทำให้สามารถ ตรวจสอบและแก้ไขได้ด้วยตนเอง สำหรับซอฟต์แวร์ที่อาจจัดการข้อมูลอ่อนไหว
  • หาก stack ใหม่ตั้งหลักได้ ESP32 อาจขยายบทบาทจาก IoT SoC ทั่วไป ไปเป็น แพลตฟอร์มไร้สายราคาถูก สำหรับการวิจัยและการทดลอง
  • เมื่อฟังก์ชันต่าง ๆ เปิดให้ใช้งานได้เพียงพอ ก็จะนำไปใช้ได้ เช่น เครื่องมือ pentesting, เราเตอร์เมช B.A.T.M.A.N. และไคลเอนต์ AirDrop

เหตุผลที่ต้องเปิด Wi‑Fi stack แบบปิด

  • Wi‑Fi stack เดิมของ ESP32 ใช้งานได้ แต่เป็น implementation แบบปิด จึงตรวจสอบการทำงานภายในหรือปรับแก้ตามความต้องการได้ยาก
  • เป้าหมายหลักของ Wi‑Fi stack แบบโอเพนซอร์สคือการทำให้ส่วนที่อาจจัดการข้อมูลอ่อนไหวสามารถ แก้ไขและตรวจสอบ ได้
  • ใน CCH น่าจะมี ESP32 หลายพันตัว และทั้งหมดกำลังรัน Wi‑Fi stack แบบปิดเช่นนี้ ซึ่งทำให้ประเด็นนี้น่ากังวลยิ่งขึ้น

จาก reverse engineering สู่ stack ใหม่

  • โปรเจกต์เริ่มจากการทำ reverse engineering Wi‑Fi stack แบบ proprietary ของ ESP32
  • จากนั้นต่อยอดไปสู่การสร้าง Wi‑Fi stack แบบโอเพนซอร์ส ที่จัดการอุปกรณ์รอบข้าง Wi‑Fi ของ ESP32 ได้โดยตรง
  • ระหว่างทางยังครอบคลุมเรื่อง Wi‑Fi, ESP32, reverse engineering ทั่วไป และแนวทางการเข้าหาโปรเจกต์ลักษณะนี้ด้วย

การใช้งานเมื่อ ESP32 ถูกเปิดเต็มที่

  • หากฟังก์ชันของ ESP32 ถูกเปิดอย่างสมบูรณ์ ก็จะรับบทบาทได้หลากหลายขึ้นทั้งในฐานะเครื่องมือวิจัยและ IoT SoC
  • ตัวอย่างการใช้งานที่เป็นไปได้มีดังนี้
    • เครื่องมือ pentesting
    • เราเตอร์เมช B.A.T.M.A.N.
    • ไคลเอนต์ AirDrop

ข้อมูลเซสชันและเงื่อนไขการเผยแพร่

  • ผู้บรรยายคือ Frostie314159 และ Jasper Devreker
  • เป็น เซสชันความยาว 38 นาที ในแทร็ก Hardware & Making ของ 38c3 จัดที่ Saal 1 วันที่ 2024-12-27
  • วิดีโอและเสียงมีให้ในรูปแบบ MP4, WebM, MP3 และ Opus
  • เนื้อหาเผยแพร่ภายใต้เงื่อนไข http://creativecommons.org/licenses/by/4.0

1 ความคิดเห็น

 
GN⁺ 2024-12-29
ความคิดเห็นจาก Hacker News
  • บทความที่เกี่ยวข้อง: https://zeus.ugent.be/blog/23-24/open-source-esp32-wifi-mac/

    • ถ้าเวอร์ชันโอเพนซอร์ส เข้ากันได้กับ API แบบปิด ก็น่าจะมีข้อดีมาก
      ถ้าเข้ากันได้ ก็จะใช้คำแนะนำและตัวอย่างที่มีสะสมอยู่บนอินเทอร์เน็ตได้ตามเดิม และต้นทุนในการเริ่มต้นก็จะต่ำลงด้วย คนที่อยากแก้เลเยอร์ MAC เพียงนิดเดียวก็สามารถเข้าไปตามวิธีเดิมและแก้เฉพาะส่วนที่ต้องการได้ โดยไม่ต้องแบกรับภาระเรียนรู้ API ใหม่
    • ผมเป็นผู้เขียนเอง ซีรีส์บทความทั้งหมดก็อยู่ที่ https://esp32-open-mac.be/ ด้วย
  • ยังรู้สึกแปลกอยู่ไม่น้อยที่มีแต่ Espressif ที่ทำสำเร็จในการใส่ โมเด็ม WiFi ลงในไมโครคอนโทรลเลอร์ที่ค่อนข้างดี
    ST ยังตามหลังอยู่มากในด้านนี้

    • ตัวอย่างอื่นก็มีตระกูล BK72xx (BK7231T, BK7231N), ตระกูล RTL87xx (RTL8710BN, RTL8710BX) และ RP2040
      แต่ WiFi บนบอร์ด RP2040 W ดูเหมือนเป็นโมดูลภายนอก แหล่งที่มาคือ https://esphome.io
    • Espressif จัดส่วนผสมระหว่างราคาถูก เข้าถึงง่าย ฮาร์ดแวร์ใช้ง่าย ซอฟต์แวร์ใช้ง่าย และไม่มีข้อจำกัดไลเซนส์ประหลาด ๆ ได้ลงตัว
      หาซื้อทีละ 1 ชิ้นได้แทบทุกที่ และขายเป็นบอร์ด breakout หลายแบบที่มีไฟเลี้ยง USB พอร์ตโปรแกรม และขาที่ระบุชัดเจน พร้อมเอกสาร ตัวอย่าง Arduino IDE และ NodeMCU ครบถ้วน Arduino เองช่วงแรกก็คล้ายกัน แต่ติดอยู่กับชิป AVR ประสิทธิภาพต่ำอยู่นานเกินไป บอร์ดที่ไม่ใช่ของจีนก็แพง และไม่มี WiFi ส่วน Raspberry Pi Pico ฟีเจอร์ดี แต่ช่วงแรกของขาดแคลน ส่วนตัวอื่น ๆ จะใกล้เคียงกับ “ชิปเดี่ยว” ที่ซื้อจากที่อย่าง DigiKey ทำให้ค่าส่งแพง เอกสารยาวเกิน 600 หน้า แค่จะส่ง ping แรกก็ต้องอ่านเกิน 300 หน้า ต้องบัดกรีเข้ากับบอร์ด และโดยปกติการโปรแกรมก็ต้องใช้อุปกรณ์ราคาแพง
    • Nordic Semiconductor ก็มี ไมโครคอนโทรลเลอร์ที่มี Bluetooth และ WiFi เช่นกัน เพียงแต่พบเห็นได้น้อยกว่าโซลูชันของ Espressif มาก
    • โมดูลที่ใช้ TuYa ส่วนใหญ่ใน AliExpress เป็นของ Beken
    • TI มี ไมโครคอนโทรลเลอร์ WiFi+Bluetooth มาตั้งแต่เกือบ 10 ปีก่อนแล้ว และยังมี Cortex-M4 ให้ด้วย
  • ยังไม่ได้ดูวิดีโอ ถ้ามีพูดถึงแล้วก็ขอโทษ แต่สงสัยว่าการรับรองด้านไร้สายของ ESP32 ผูกอยู่กับ เฟิร์มแวร์กล่องดำ อย่างเป็นทางการหรือไม่
    ถ้าเป็นฮาร์ดแวร์เดียวกันแต่ใช้เฟิร์มแวร์โอเพน จะต้องส่งกลับไปให้หน่วยงานรับรองอย่าง FCC ตรวจความสอดคล้องอีกครั้งไหม?

    • ถ้าแจกจ่ายแบบนั้นก็ใช่ แต่ถ้าผู้ใช้ปลายทางแก้เองก็ไม่ใช่
      จำมาตรา CFR ไม่ได้ทันที แต่ FCC อนุญาตอย่างชัดเจนให้ใครก็ได้ใช้อุปกรณ์ที่ไม่ได้รับการรับรองในปริมาณน้อย หากอุปกรณ์นั้นละเมิดกฎอื่นก็ยังถือว่าผิดอยู่ แต่ข้อเท็จจริงที่ว่าแก้ฮาร์ดแวร์หรือซอฟต์แวร์ไม่ได้ถูกห้ามในตัวมันเอง
    • ผมมองว่าเป็นพื้นที่สีเทา ถ้าจำไม่ผิดมากนัก ในการรับรองจะทดสอบและบันทึกเฉพาะ สมรรถนะไร้สายในกรณีเลวร้ายที่สุด ส่วนเอกสารทางเทคนิคที่เหลือจะใกล้เคียงกับโบรชัวร์ที่ค่อนข้างละเอียดซึ่งมีบล็อกไดอะแกรมระดับสูงและทฤษฎีการทำงาน มากกว่าเอกสารออกแบบสมัยใหม่อย่างไฟล์ผลิต PCB หรือสคริปต์ build เฟิร์มแวร์
      แทบไม่ยอมรับการมีอยู่ของเฟิร์มแวร์ด้วยซ้ำ เหตุผลหนึ่งก็มีอยู่ อุปกรณ์ไร้สายย่านไม่ต้องขออนุญาตที่ผ่านการรับรองอย่าง WiFi ถูกคาดหวังให้ป้องกันการดัดแปลงเพื่อประโยชน์สาธารณะ ดังนั้นตอน FCC หารือข้อกำหนดรับรองเราเตอร์ WiFi จึงเคยพิจารณาขยายไปถึงซอฟต์แวร์ เช่น บังคับ secure boot กับเราเตอร์ WiFi ห่วย ๆ ที่เปราะบางทั้งหมด ซึ่งเป็นแนวคิดที่น่ากลัวมากและถูกยกเลิกไป ณ ตอนนี้ ผมมองว่าถ้าเฟิร์มแวร์ที่ได้ไม่ได้ทำให้เกิดการแผ่คลื่นนอกสเปกอย่างชัดเจน ก็ใกล้เคียงกับกึ่งถูกกฎหมายหรือกึ่งผิดกฎหมาย ไม่ใช่นักกฎหมาย
    • ใช่
  • https://github.com/esp32-open-mac

  • เคยมีไอเดียสำหรับ provisioning รหัสผ่าน WiFi สามารถส่ง SSID และรหัสผ่านได้โดยปรับเปลี่ยน ความยาวแพ็กเก็ต
    อุปกรณ์ IoT ใหม่ย่อมถอดรหัสแพ็กเก็ตไม่ได้ แต่สังเกตความยาวได้ ผมเคยทำตัวอย่าง implementation สำหรับ Linux ด้วย แต่หาไม่เจอเลยสักชิป IoT ที่ให้การเข้าถึง PHY ระดับต่ำพอสำหรับทำสิ่งนี้

    • SmartConfig ของ TI ทำงานแบบนั้นโดยใช้ฟิลด์ความยาว ดังนั้นก็ใช้ชิป IoT ที่ implement สิ่งนี้ได้ และ TI ก็มีชิปแบบนั้นอยู่ค่อนข้างมาก
    • https://www.keacher.com/xmas24/ ใช้ OOK ในการสื่อสารข้อมูล และมีข้อดีคือเก็บเกี่ยวพลังงานจากสัญญาณ WiFi ได้ จึงไม่ต้องใช้แบตเตอรี่
    • เป็นทางเลือกสุดท้าย ทำ reverse engineering ก็น่าจะได้ไม่ใช่หรือ หรือเป็นไปไม่ได้?
    • ถ้าเป็นสมัยนี้ผมคงใช้ WPA3 ไปเลย
  • ขอถามนอกเรื่องหน่อย หนึ่งในผู้บรรยายเปิดเผย หมายเลข DECT ไว้ แปลว่ายังมีคนพกโทรศัพท์รุ่นเก่า ๆ ไปใช้ในงานประชุมเทคนิคอยู่หรือ?

    • ระหว่างงานมีการเดินเครือข่ายหลายแบบสำหรับการสื่อสารด้วยเสียง ลองค้นดูแล้วโดยทั่วไปใช้ DECT, SIP, GSM ร่วมกัน
      ยังมีแดชบอร์ดสถานะที่แสดงตัวชี้วัดระหว่างงานด้วย
      [1] https://events.ccc.de/2024/12/22/38c3-poc-isdn-version/
      [2] https://dashboard.eventphone.de/d/de7sgxz63vzeoe/38c3?orgId=...
    • ใช่ ในแคมป์แฮกเกอร์มันค่อนข้างสะดวก และผมก็ยังมีอยู่เครื่องหนึ่ง
      โดยเฉพาะในโซนแคมป์ปิ้ง ความครอบคลุมของ WiFi อาจไม่สม่ำเสมอ ดังนั้นแม้เดินไปอาคารห้องน้ำหรือลานจอดรถก็ยังรับสายได้ เพราะใช้ย่านความถี่ของตัวเอง จึงไม่ทำให้ย่านที่ WiFi, Bluetooth, Zigbee ใช้แออัดขึ้นด้วย จะใช้แอปอะไรสักอย่างก็ได้ แต่ DECT เสถียรมากและระยะครอบคลุมก็ดีกว่า WiFi มาก ผมมีเครื่อง Siemens ดี ๆ ขนาดประมาณ Nokia 8210 เลยไม่ต้องพกอะไรที่เหมือนก้อนอิฐไปมา ตอนนี้แบตเตอรี่น่าจะใกล้ตายแล้ว แต่ก็เปลี่ยนได้ตามแบบแบตเตอรี่ยุคนั้น
  • ในบ้านพักอาศัยส่วนบุคคลในเยอรมนี DECT ยังได้รับความนิยมมาก
    ทนทานกว่า VoIP ผ่าน WiFi มาก

    • มองว่าเป็นธรรมเนียมของ CCC
    • ใช่ แต่ก็ใช้ GSM หรือ SIP ได้เช่นกัน และในทางปฏิบัติแม้จะใช้เครือข่ายสมัยใหม่ ก็ยังมักเรียกกันว่าเบอร์ DECT เพราะใช้พื้นที่หมายเลขเดียวกัน
      เพราะ DECT มีมาก่อน จึงกลายเป็นเหมือนคำสามัญสำหรับระบบโทรศัพท์ภายในไปแล้ว
  • สงสัยว่าการแฮ็กนี้ลงลึกแค่ไหน การส่งเฟรมดูเหมือนเป็นแค่การตั้งค่ารีจิสเตอร์ไม่กี่ตัวแล้วรออินเทอร์รัพท์ เลยคิดว่าอาจกำลังคุยกับ เลเยอร์เฟิร์มแวร์ อื่นที่ทำงานจริงอยู่ก็ได้
    ทำให้นึกถึงบอร์ด Raspberry Pi Pico แม้จะมี SoC หลัก RP2040 แต่ WiFi เป็นโมดูล WiFi/BT แยกต่างหาก (CYW43xx) ที่มีคอร์ Arm ของตัวเอง อินเทอร์เฟซรีจิสเตอร์ภายนอกของโมดูล WiFi ก็ไม่ได้มีเอกสารสาธารณะ แต่มีไดรเวอร์โอเพนซอร์ส (https://github.com/georgerobotics/cyw43-driver/tree/cf924bb0...) จึงพออนุมานสเปกได้ อย่างไรก็ตามไดรเวอร์นี้สุดท้ายก็สื่อสารกับซอฟต์แวร์ที่รันอยู่บนคอร์ Arm ภายในโมดูล และโค้ดนั้นผู้ผลิตให้มาเป็นเฟิร์มแวร์ไบนารีบล็อบขนาดใหญ่ บล็อบนั้นจริง ๆ อยู่ในไฟล์เฮดเดอร์ในไดเรกทอรี firmware ของรีโพที่ลิงก์ไว้ สงสัยว่าการแฮ็ก ESP32 ครั้งนี้สอดคล้องกับโครงสร้างนี้อย่างไร

  • ประทับใจที่ผู้นำเสนอๆ ดูเด็กมาก น่าสนใจที่ได้เห็นคนอายุน้อยขนาดนั้นสะสม ความรู้ทางเทคนิค ได้ถึงระดับนั้น

    • สมัยนี้ทุกอย่างเปิดเผยหมดแล้ว เด็ก ๆ สามารถเรียนรู้สิ่งที่ต้องการได้ตั้งแต่อายุน้อยลงเรื่อย ๆ
      หมากรุกเป็นตัวอย่างที่สมบูรณ์แบบ เมื่อก่อนความรู้จำนวนมากอยู่ในหนังสือ และบ่อยครั้งเป็นหนังสือภาษาต่างประเทศ ตอนนี้ทุกอย่างเปิดเผยหมดแล้ว และเมื่อมีฝีมือถึงระดับหนึ่ง ก็สามารถเล่นกับคู่แข่งระดับท็อป 100 ได้แบบสบาย ๆ ทำให้พัฒนาได้เร็วขึ้น
  • เข้าใกล้ ไลบรารี MicroPython ที่รองรับโหมด promiscuous ไปอีกก้าวแล้ว

    • ทำไมล่ะ? อันนั้น ESP SDK รองรับอยู่แล้ว
  • ดูโดยไม่ต้องดาวน์โหลด: https://media.ccc.de/v/38c3-liberating-wi-fi-on-the-esp32/pl...