- HotspotHelper API ที่มีมาตั้งแต่ iOS 9 อาจเปิดทางให้แอปรับข้อมูลจุดเชื่อมต่อ WiFi รอบตัว และกลายเป็นช่องทางติดตามตำแหน่งโดยไม่ต้องได้รับความยินยอมจากผู้ใช้
- แอปสามารถอ่าน SSID และ BSSID ของเครือข่ายรอบข้างจาก callback ที่ลงทะเบียนไว้ แล้วส่งไปยังเซิร์ฟเวอร์เพื่อใช้กับตรรกะการประเมินตำแหน่ง
- เนื่องจากจุดเชื่อมต่อ WiFi ส่วนใหญ่อยู่กับที่ เมื่อนำไปรวมกับบริการสาธารณะอย่าง Precisely หรือ Google Geolocation API ก็สามารถทำ การระบุตำแหน่งด้วย WiFi ได้
- การทำงานนี้ไม่ได้เกิดขึ้นเฉพาะตอนผู้ใช้กำลังใช้งานหน้าจอตั้งค่าเท่านั้น แต่ยังอาจเกิดขึ้นได้ในระหว่างที่อุปกรณ์สแกนหา WiFi รอบตัวแม้เครื่องจะถูกล็อกอยู่ และผู้ใช้ไม่มีทางรู้หรือปิดมันได้
- แอปที่มีการใช้งานกว้างขวางอย่าง WeChat และ Alipay ก็มีการใช้ความสามารถนี้ ทำให้เกิดข้อเรียกร้องว่า Apple ควรมี ตัวเลือกอนุญาต/ปฏิเสธอย่างชัดเจน แบบเดียวกับสิทธิ์ตำแหน่งหรือการแจ้งเตือน
ข้อมูล WiFi ที่ HotspotHelper API เปิดเผย
- Apple เปิดให้ใช้ API HotspotHelper มาตั้งแต่ iOS 9 เพื่อให้แอปขอฟังก์ชันช่วยเหลือระบบในการเชื่อมต่อกับจุดเชื่อมต่อ WiFi ได้
- โค้ดตัวอย่างแสดงลำดับการทำงานที่แอปรับข้อมูลเครือข่าย WiFi ผ่าน
NEHotspotHelper.register- รับรายการเครือข่ายรอบตัวจาก
command.networkList - อ่าน
network.ssidและnetwork.bssidจากแต่ละเครือข่าย - สามารถส่งค่าเหล่านี้ต่อไปยังตรรกะติดตามตำแหน่ง เช่น
trackLocation(withSSID:andMACAddress:)
- รับรายการเครือข่ายรอบตัวจาก
- แม้วัตถุประสงค์เดิมอาจเป็นการช่วยให้เชื่อมต่อได้ราบรื่นขึ้น แต่แอปก็สามารถนำ SSID และ BSSID ที่ได้รับไปใช้เป็นข้อมูลติดตามตำแหน่งได้เช่นกัน
ช่องทางที่ทำให้ประเมินตำแหน่งได้โดยไม่ต้องขอความยินยอมจากผู้ใช้
- ข้อมูลจุดเชื่อมต่อ WiFi รอบตัวสามารถใช้เป็นจุดอ้างอิงในการประเมินตำแหน่งของผู้ใช้ได้
- จุดเชื่อมต่อ WiFi ส่วนใหญ่มักไม่เคลื่อนที่หลังติดตั้ง
- สามารถใช้รายการจุดเชื่อมต่อรอบตัวเพื่อทำ trilateration หรือประเมินตำแหน่งปัจจุบันของผู้ใช้ได้
- ตัวอย่าง API สาธารณะมี Precisely Location By Wi-fi Access Point และ Google's Geolocation API
- ความสามารถนี้ไม่ได้ถูกเปิดใช้งานเฉพาะตอนที่ผู้ใช้กำลังปรับตั้งค่าบางอย่างอย่างชัดเจนเท่านั้น
- แอปที่ลงทะเบียนไว้สามารถถูกรันได้เมื่ออุปกรณ์กำลังสแกนหาจุดเชื่อมต่อ WiFi รอบตัว
- รวมถึงกรณีที่เครื่องถูกล็อกและอยู่ในกระเป๋าของผู้ใช้ด้วย
- แอปสามารถดึง SSID และ MAC address รอบตัวแล้วส่งขึ้นเซิร์ฟเวอร์ได้ และถ้านักพัฒนาต้องการ ก็อาจติดตามตำแหน่งได้แทบจะเรียลไทม์
- ผู้ใช้แทบไม่มีทางรู้จากหน้าจอว่ากระบวนการนี้กำลังเกิดขึ้น และก็ไม่มีตัวเลือกสำหรับปิดความสามารถนี้
กรณีของ WeChat และ Alipay
- WeChat และ Alipay ถูกกล่าวถึงว่าเป็นแอปหลักที่มีการใช้งานความสามารถนี้แล้ว
- ทั้งสองแอปถูกใช้งานอย่างแพร่หลายในจีนแผ่นดินใหญ่ และเกี่ยวข้องกับหลายด้านในชีวิตประจำวันของผู้คน
- เมื่อแอปที่มีผู้ใช้จำนวนมากเช่นนี้มีความเป็นไปได้ในการติดตามตำแหน่งโดยไม่ต้องได้รับความยินยอม ผลกระทบย่อมขยายวงกว้าง
- แม้จุดประสงค์ของการเก็บข้อมูลอาจเป็นเพื่อปรับปรุงประสบการณ์ผู้ใช้หรือช่วยเชื่อมต่อ WiFi ใกล้เคียง แต่เมื่อฝั่งเซิร์ฟเวอร์ทำงานอย่างไม่โปร่งใส ก็ยังคงมีปัญหาเรื่อง ความโปร่งใสและความรับผิดชอบ
การตอบสนองของ Apple และโมเดลสิทธิ์ที่ควรมี
- ประเด็นนี้ถูกค้นพบตั้งแต่ราว 2 ปีก่อน และมีการแชร์เป็นวิดีโอบน Bilibili แต่การรับรู้ในวงกว้างยังมีจำกัด
- มีการส่งข้อกังวลไปยัง Apple และได้รับอีเมลตอบกลับ แต่หลังจากนั้นก็ไม่มีความคืบหน้าเพิ่มเติม
- Apple ควรเพิ่มตัวเลือกให้ผู้ใช้ ปิดใช้งาน ความสามารถนี้ได้ เช่นเดียวกับการตั้งค่าความเป็นส่วนตัวสำหรับตำแหน่งและการแจ้งเตือน
- ก่อนที่แอปจะเข้าถึงความสามารถนี้ ควรต้องขอสิทธิ์อย่างชัดเจน และผู้ใช้ควรเลือกได้ว่าจะอนุญาตหรือปฏิเสธการเข้าถึงขณะใช้งานแอป
- HotspotHelper ยังคงเป็นประเด็นถกเถียงระหว่างคำมั่นด้านความเป็นส่วนตัวของ Apple กับการคุ้มครองข้อมูลผู้ใช้
3 ความคิดเห็น
ความคิดเห็นบน Hacker News
เมื่อดูเอกสารที่ลิงก์ไว้ API นี้ดูเหมือนมีไว้เพื่อช่วยให้ แอปที่สร้างโดยเจ้าของ WiFi hotspot เชื่อมต่อผู้ใช้เข้ากับฮอตสปอตนั้น: https://developer.apple.com/documentation/networkextension/h...
NEHotspotHelperช่วยให้แอปเข้าร่วมกระบวนการยืนยันตัวตนของเครือข่ายฮอตสปอตได้ ในกรณีเครือข่าย Wi‑Fi ที่ผู้ใช้ต้องโต้ตอบกับเครือข่ายก่อนจึงจะเข้าถึงอินเทอร์เน็ตในวงกว้างได้นอกจากนี้ยังระบุว่า API นี้มีประโยชน์เฉพาะกับการผสานรวมฮอตสปอตเท่านั้น ส่วนงานอื่น ๆ เช่น การผสานรวมอุปกรณ์เสริม หรือการระบุตำแหน่งจาก Wi‑Fi มีข้อจำกัดทั้งเชิงเทคนิคและเชิงธุรกิจ และก่อนใช้งานต้องได้รับอนุมัติสิทธิ์พิเศษ
com.apple.developer.networking.HotspotHelperจาก Appleถ้าอย่างนั้นก็ชวนสงสัยว่าทำไมแอปอย่าง WeChat หรือ Alipay ถึงได้รับสิทธิ์นี้
การใช้ API แบบนี้ควรต้องแสดงหน้าต่างขอสิทธิ์ที่ผู้ใช้มองเห็นได้ก่อนที่แอปจะได้รับการแจ้งเตือนในเบื้องหลัง และผู้ใช้ควรเลือกได้ระหว่าง “อนุญาตครั้งเดียว, อนุญาตระหว่างใช้งาน, อนุญาตในเบื้องหลัง, ไม่อนุญาต”
กิจกรรมของแอปก็ควรถูกแสดงใน App Privacy Report ด้วย
WeChat เป็น “ซูเปอร์แอป” และยังพออ้างได้ว่าใช้เชื่อมต่อ Wi‑Fi hotspot ได้ แต่สำหรับ Alipay ผมนึกคำอธิบายไม่ค่อยออก
CoreLocationAPI และได้รับอนุญาตให้เข้าถึงตำแหน่งแบบแม่นยำจากผู้ใช้แล้ว เพราะเป็นสถานการณ์ที่แอปได้ตำแหน่งแบบแม่นยำอยู่แล้ว จึงดูไม่เป็นอันตรายNEHotspotConfigurationAPI ดูเหมือนขอบเขตของบทความนี้จะอยู่ตรงนี้พอดีNEDNSSettingsManagerที่ใช้งานอยู่ ไม่รู้แน่ชัดว่าคืออะไร แต่ดูคล้ายฝั่ง VPNอนึ่ง API นี้ต้องใช้ สิทธิ์พิเศษ และจะได้มาก็ต่อเมื่อต้องยื่นคำขอต่อ Apple พร้อมชี้แจงเหตุผลการใช้งานให้สมเหตุสมผล
มันไม่ใช่ API ทั่วไปที่แอปไหน ๆ ก็ใช้ได้
แน่นอนว่าพวกเขาเป็น “ซูเปอร์แอป” และบริการ Wi‑Fi hotspot ก็อาจเป็นหนึ่งในฟีเจอร์ที่ให้บริการ แต่ยิ่งเป็นแบบนั้น สิทธิ์นี้ก็ควรเป็นสิทธิ์ที่ผู้ใช้มอบให้ได้ เหมือน “การเข้าถึงเครือข่ายภายใน”
ถ้าผมไม่สนใจฟีเจอร์ฮอตสปอต ผมก็ไม่อยากให้แอปมีความสามารถนั้น
ถ้าไม่ได้ลองใช้แอปทดสอบเองก็ไม่รู้ว่าสิทธิ์นี้เป็นแบบนั้นหรือไม่ แต่ผมคิดว่าควรถามการอนุญาตจากผู้ใช้
สงสัยว่า Apple วิเคราะห์การใช้สิทธิ์นี้และเพิกถอนเมื่อมีการใช้ในทางที่ผิดหรือไม่
ในทำนองเดียวกัน ผมจำได้ว่าตอน “สแกนดัล” Facebook VPN นั้น Apple เคยเพิกถอนใบรับรองการเซ็นแบบ enterprise ของ Facebook
ฟังดูเหมือนกำลังบอกว่า “ไม่ต้องกังวล คุณกับผมเอาไปใช้ในทางที่ผิดไม่ได้ มีแต่ บริษัทใหญ่และผู้รวบรวมข้อมูล เท่านั้นที่ทำได้”
ผู้เขียนน่าจะเป็นคนจีนเลยกังวลเรื่อง WeChat กับ Alipay แต่ก็สงสัยว่า Facebook กับ Google จะเป็นอย่างไร
เดิมคิดอยู่แล้วว่าผู้ใช้น่าจะได้รับพรอมป์ให้อนุญาตสิทธิ์นี้
ช่วงนี้แอปมักถามค่อนข้างบ่อยว่าจะอนุญาตให้เข้าถึง “เครือข่ายท้องถิ่น” หรือไม่ ผมเข้าใจว่าเป็นความสามารถในการมองเห็นฮอตสปอต Wi‑Fi ในเครื่อง จึงแทบจะปฏิเสธเสมอ
พออ่านบทความนี้แล้วก็ไปปิดใน Spotify ด้วย
แต่ผู้ใช้ส่วนใหญ่น่าจะไม่รู้ว่าข้อมูลนี้สามารถใช้ อนุมานตำแหน่ง ได้ ดังนั้นกล่องโต้ตอบขอสิทธิ์ควรต้องปรับปรุง
อย่างแรก การทำงานถูกออกแบบมาไม่ดี ต่างจากสิทธิ์อื่น ๆ ไม่มีวิธีเรียกพรอมป์ขึ้นมาอย่างชัดเจน และมันจะเด้งขึ้นมาแบบกะทันหันเมื่อ Apple เห็นว่าเหมาะสม
แม้จะจำเป็นต่อฟีเจอร์หลัก ก็ไม่มีทางอธิบายให้ผู้ใช้เข้าใจอย่างเป็นธรรมชาติ และไม่มีวิธีตรวจสอบด้วยว่าสิทธิ์ถูกอนุญาตแล้วหรือยัง
อย่างที่สอง และสำคัญกว่า คือแอปของ Apple เองไม่แสดงคำเตือนนี้ ทำให้เงื่อนไขการแข่งขันไม่เป็นธรรม
AirPlay และอื่น ๆ ทำงานได้อย่างลื่นไหล แต่เทคโนโลยีคู่แข่งกลับทำไม่ได้ และเมื่อนักพัฒนาไม่รู้สถานะสิทธิ์ ประสบการณ์ผู้ใช้ก็แย่ลง
ถ้า Apple จะนำข้อจำกัดมาใช้ ก็ควรใช้กับแอปของตัวเองด้วย AirPlay และ AirDrop ควรถามสิทธิ์เข้าถึง Bluetooth และเครือข่ายท้องถิ่นตามลำดับ แอป Photos ควรแสดงพรอมป์ “เลือกรูปภาพ, อนุญาตทั้งหมด, ปฏิเสธ” ตอนเปิดใช้งาน และแอป Camera ก็ไม่ควรเขียนลงคลังรูปภาพได้โดยไม่มีพรอมป์แบบเดียวกัน
แบบนั้น Apple ถึงจะมีแรงจูงใจให้ออกแบบประสบการณ์ผู้ใช้รอบข้อจำกัดเหล่านี้ให้ดี และหาวิธีที่สร้างสรรค์กว่าแทนกล่องโต้ตอบที่ชวนสับสน
ตอนนี้ไม่มีแรงจูงใจให้ออกแบบให้ดี นักพัฒนา iOS ที่เคยจัดการ API เหล่านี้จะรู้ว่าการออกแบบมันแย่ เพราะมีข้อจำกัดที่ตามอำเภอใจและคาดไม่ถึง
AirPlay ไม่ต้องใช้สิทธิ์นี้
เอกสาร: https://developer.apple.com/documentation/technotes/tn3111-i...
การรีวิวคงกันแอปสแปมเล็ก ๆ ได้ แต่เหมือนที่ผู้เขียนและคนอื่น ๆ บอกไว้ คงกัน ผู้เล่นรายใหญ่ ไม่ได้
แต่ยังไม่ชัดเจนว่าเมื่อมีสิทธิ์นี้อยู่ ผู้ใช้จะเห็นพรอมป์ให้ปฏิเสธการใช้ API ได้หรือไม่
มีวิธีดูไหมว่าแอปยอดนิยมไหนใช้สิ่งนี้บ้าง
เช่นเดียวกับคนส่วนใหญ่ที่นี่ ผมไม่ได้ติดตั้ง WeChat หรือ Alipay แต่สงสัยพวก Instagram, Facebook, WhatsApp, Twitter, TikTok, Snapchat, Chrome, Firefox, Photoshop, Lightroom
ไม่ควรต้องดาวน์โหลดและติดตั้งแอปเพื่อดูว่ามันจะพยายามทำอะไร
App Store รู้อยู่แล้วว่าข้อมูลนี้คืออะไร และการแสดงไว้ในรายละเอียดแอปก่อนดาวน์โหลดก็น่าจะง่ายมาก
ควรพูดถึงปัญหาที่ iOS/macOS เปิด อุปกรณ์ไร้สาย Wi‑Fi และ Bluetooth ทุกครั้งหลังอัปเดตระบบด้วย
ตรงข้ามกับเพลงกล่อมจากฝ่ายการตลาด มันดูเหมือนอุปกรณ์ที่จงใจสร้างมาเพื่อเพิ่มการสอดส่องให้สูงสุด
เพราะคน 99% ใช้หรือต้องการมัน จึงเลือกไม่ติดตามสถานะการตั้งค่า และ Apple ก็ชอบคีย์บอร์ดกับเมาส์ Bluetooth ด้วย
ตอนนี้เริ่มสงสัยแล้วว่าแอปอื่น ๆ ไหนบ้างที่มีสิทธิ์นี้
มีวิธีดูไหมว่าในบรรดาแอปที่ติดตั้งอยู่ในโทรศัพท์ของผม แอปไหนมีสิทธิ์นี้บ้าง
นี่เป็นหนึ่งในปัญหาใหญ่ของแพลตฟอร์มที่ ถูกล็อกอย่างสมบูรณ์
การรับประกันว่าเจ้าของแพลตฟอร์มจะเคารพความเป็นส่วนตัวและป้องกันการละเมิดจากผู้อื่น สุดท้ายก็เป็นแค่สัญญาเกี่ยวก้อยเท่านั้น
ความปลอดภัยของแพลตฟอร์มคอมพิวติ้งเป็นเรื่องยากอยู่แล้ว และโดยเฉพาะความเป็นส่วนตัวก็ถูกนิยามในเชิงวัฒนธรรมอย่างคลุมเครือกว่าความปลอดภัยคอมพิวเตอร์ทั่วไป ซึ่งมักนิยามด้วยการเลี่ยงการควบคุมการเข้าถึงทางเทคนิค
ประเด็นสำคัญคือ Apple พยายามทำหน้าที่เป็น ภัณฑารักษ์ ที่ควบคุมระบบนิเวศหรือไม่
ในอดีตตอน Uber ทำเรื่องน่าสงสัย Apple ก็เคยเล่นเกมไก่เพื่อบังคับให้หยุด
แน่นอนว่า Alipay กับ WeChat อาจยากกว่า เพราะตลาดจีนใหญ่มากและสำคัญต่อความสำเร็จปัจจุบันของ Apple
น่าสนใจว่าในอีกไม่กี่ปีข้างหน้า Apple จะปรับตัวกับเรื่องนี้อย่างไร
แพลตฟอร์มแบบเปิดก็มีปัญหานี้ และอาจพึ่งพาสัญญาเกี่ยวก้อยหนักกว่าด้วยซ้ำ
ถ้าไม่ได้หมายความว่า “ถ้าปัญหานี้แก้ไม่ได้ งั้นแพลตฟอร์มแบบเปิดยังดีกว่า” ผมก็ไม่ค่อยเข้าใจประเด็น
ปัญหาของตรรกะนั้นคือ นี่เป็นเพียงกรณีล้มเหลวหนึ่งในหลายปัญหา และอาจแก้ได้ภายหลัง แต่แพลตฟอร์มแบบเปิดมีปัญหานี้พร้อมกับปัญหาอื่น ๆ อีกมากที่ยังไม่ได้รับการแก้
ได้ยินคำบ่นว่าชื่อนี้เกินจริง ถ้ามีข้อเสนอชื่อที่ดีกว่า แม่นยำกว่า และเป็นกลางกว่า ก็ยินดีให้เปลี่ยน
ไม่แน่ใจนัก แต่พออ่านบทความแล้ว ชื่อปัจจุบันไม่ได้ให้ความรู้สึกว่าเป็นข้อเท็จจริงเท่าไร
การใช้
NEHotspotHelperต้องมีสิทธิ์พิเศษcom.apple.developer.networking.HotspotHelperซึ่งต้องยื่นขอ และ Apple ก็คงไม่อนุมัติให้ถ้าแอปไม่มีความจำเป็นที่สมเหตุสมผลอย่างไรก็ตาม เรื่องนี้ดูเหมือนจะแสดงให้เห็นความไม่เข้ากันระหว่างกลยุทธ์ด้านความเป็นส่วนตัวของ Apple กับ ซูเปอร์แอป อย่าง WeChat และ Alipay
เมื่อบริษัทหนึ่งยัดทุกฟีเจอร์เข้าไปในแอปเดียว จู่ ๆ แอปนั้นก็จะมีสิทธิ์ทุกอย่าง และทำให้ยากต่อการเข้าใจว่าข้อมูลอ่อนไหวถูกใช้เมื่อไรและอย่างไร
ฝั่งตะวันตกปกติไม่ได้สร้างแอปกันแบบนี้ เช่น Comcast มีแอป “WiFi Hotspots” แยกต่างหาก
ที่ตลกคือเมื่อสองวันก่อนเพิ่งโพสต์ว่าจะรวมฟีเจอร์นั้นเข้าไปในแอป Xfinity หลัก ดังนั้นฝั่งตะวันตกก็อาจกำลังไล่ตามอยู่ก็ได้
ผม/ฉันกดปฏิเสธทันที และถ้าผลคือฟังก์ชันของแอปพัง ก็ลบแอปนั้นทิ้งไปด้วย
Google Maps ที่คอยตื๊อให้เปิดบริการตำแหน่งที่แม่นยำ และถามว่าไม่ได้ไปหาเพื่อนแต่กำลังนำทางอยู่หรือไม่ พร้อมทั้งให้อนุญาตเข้าถึงรายชื่อผู้ติดต่อ ก็ปฏิเสธเหมือนกัน
com.apple.developer.networking.HotspotHelperสามารถเพิกถอนได้จากตรงไหนใน iOSการตั้งค่า → ความเป็นส่วนตัวและความปลอดภัย → เครือข่ายภายในเครื่อง หรือเป็นรายการอื่น
บริษัทที่ชูเรื่องความเป็นส่วนตัวเป็นจุดขาย แต่เบื้องหลังก็แอบดูดข้อมูลการแจ้งเตือนและตำแหน่งของผู้ใช้ออกไปนี่เอง
ฉันนึกมาตลอดว่าเพราะฟีเจอร์นั้นถูกบล็อกไว้ เลยทำให้การแจ้งเตือนขึ้น-ลงรถไฟใต้ดินเป็นไปไม่ได้ แต่จริง ๆ มีฟีเจอร์นี้อยู่แล้วสินะ งั้นทำไมถึงใช้ไม่ได้เฉพาะบน iPhone ล่ะ...