กรณีศึกษา Starbucks Korea: การปลอมแปลงสัญญาณระบุตำแหน่งของ Indoor Positioning Systems
ไม่ได้จงใจแปลมาลงบล็อกครับ แต่เป็นงานวิชา Information security system ซึ่งแปลเพื่อไปนำเสนอในห้องเรียน แต่ไหน ๆ แปลมาแล้วเลยหยิบมาลงบล็อก เผื่อผู้ใดสนใจครับ แปลผิดหรือเขียนอธิบายคลาดเคลื่อนอย่างไรขออภัยด้วยครับ หรือส่งหลังไมค์มาบอกก็ได้ครับว่าเขียนผิด
Intro
ในปัจจุบันมีการทำนำการระบุตำแหน่งภายในอาคารมาใช้หลากหลายแบบ เช่น การระบุตำแหน่งผู้ใช้งานภายในห้างร้านซึ่ง GPS ไม่สามารถระบุตำแหน่งได้ชัดเจน โดยการระบุตำแหน่งภายในอาคารสามารถทำได้หลายแบบ ซึ่งอย่างง่ายดายคือการใช้การทำงานของ Wireless LAN
อย่างในกรณีนี้ ร้าน Starbuck ของประเทศเกาหลีใต้ได้นำการใช้งานเทคโนโลยีระบุตำแหน่งภายในอาคารเพื่อมาใช้ช่วยให้ลูกค้าไม่ต้องยืนต่อคิวสั่งเมนู แต่สามารถเข้าไปนั่งรอในร้านแล้วใช้แอพพลิเคชั่นของ Starbuck สั่งกาแฟได้เลย โดยใช้การระบุตำแหน่งภายในร้านช่วยยืนยันว่าลูกค้าคนนั้นได้สั่งเมนูจากภายในร้านสาขาไหน
การทำงาน
Starbuck เกาหลีใต้ใช้วิธีการระบุตำแหน่งภายในอาคารของลูกค้าผ่านการใช้คลื่นเสียงสูง หรือ Ultrasound ซึ่งมีความถี่เสียงสูงกว่าที่มนุษย์จะได้ยินที่ถูกปล่อยออกมาจากอุปกรณ์กำเนิดคลื่นเสียงภายในร้าน โดยเสียงที่ถูกปล่อยออกมานั้นมีการแฝงข้อมูลระบุตัวตนประจำสาขาอยู่ ทำให้แอพพลิเคชั่นที่ใช้ในการสั่งเมนูต่าง ๆ สามารถทราบได้ว่าผู้ใช้งานกำลังสั่งเมนูอยู่ที่สาขาใดของร้าน โดยขั้นตอนคร่าว ๆ จะมีดังนี้
- โดยเมื่อลูกค้าเดินเข้าร้านและทำการสั่งเมนูผ่านแอพพลิเคชั่น
- แอพฯ จะได้รับข้อมูลระบุตัวตนประจำสาขาจากเสียงความถี่สูงที่ได้รับจากตัวปล่อยสัญญาณภายในร้าน
- แอพฯ ส่งข้อมูลระบุตัวตนประจำสาขานั้นให้กับเซิร์ฟเวอร์ของสตาร์บัคส์
- เซิร์ฟเวอร์ตอบกลับข้อมูลของร้านโดยละเอียดให้แอพฯ
- แอพฯ ส่งข้อมูลรายละเอียดการสั่งซื้อกลับไปให้เซิร์ฟเวอร์รับออเดอร์
- เซิร์ฟเวอร์สำหรับรับออเดอร์ส่งเมนูของลูกค้าไปให้ระบบบริการของร้านสาขาที่ลูกค้าอยู่ ณ ตอนนั้น
ปัญหาทางด้านความปลอดภัย
เนื่องจากสัญญาณที่ถูกปล่อยมาในคลื่นความถี่สูงนั้นมีลักษณะเป็น Plain Text หรือข้อมูลที่ไม่ได้เข้ารหัส ทำให้ผู้โจมตีสามารถดักฟังสัญญาณแล้วปล่อยซ้ำในที่อื่น ๆ นอกเหนือจากร้านสาขาที่ติดตั้งเครื่องปล่อยสัญญาณนั้นได้
สิ่งที่ผู้โจมตีทดลองทำคือ การนำสัญญาณคลื่นความถี่เสียงสูงจากสาขา A ไปปล่อยใส่เหยื่อที่สาขา B ทำให้แอพฯ ของเหยื่อคิดว่าเหยื่อกำลังสั่งเมนูที่สาขา A ดังนั้น เมื่อเหยื่อสั่งเมนู เมนูของเหยื่อจะถูกพนักงานจากสาขา A รับ และทำให้ผู้โจมตีอ้างตัวเป็นเหยื่อเพื่อรับออร์เดอร์นั้นแทนได้
วิธีการโจมตี
วิธีการโจมตีจำเป็นต้องใช้ผู้โจมตีสองคน ประจำอยู่ทั้งสองสาขา และจำเป็นต้องใช้เครื่องมือปล่อยคลื่นความถี่เสียงสูงเพื่อปล่อยสัญญาณลวงใส่เหยื่อ ซึ่งสัญญาณที่ถูกปล่อยออกมาต้องเข้มข้นกว่าสัญญาณของร้าน จึงจะทำให้แอพฯ ของเหยื่อรับข้อมูลลวงจากผู้โจมตีแทนสัญญาณจริงได้
โดยสัญญาณที่รับมาได้นั้นสามารถกรองเสียงที่ไม่ต้องการออกโดยใช้เครื่องมือทั่วไปอย่าง Adobe Audition CC และส่งข้อมูลที่ดักมาได้ให้กับผู้โจมตีอีกคนผ่านการสื่อสารรูปแบบไหนก็ได้
หลักการและขั้นตอนการโจมตีมีดังนี้
- ผู้โจมตี หมายเลข 1 ประจำที่สาขา A และทำการดักรับและบันทึกสัญญาณความถี่เสียงสูงที่ถูกปล่อยออกมาภายในร้านสาขา A
- ผู้โจมตีหมายเลข 1 ส่งข้อมูลสัญญาณที่ได้ให้ผู้โจมตีหมายเลข 2
- ผู้โจมตีหมายเลข 2 ปล่อยสัญญาณที่รับมาใส่เหยื่อในสาขา B
- แอพฯ ของเหยื่อซึ่งอยู่ในสาขา B ได้รับสัญญาณลวงจากผู้โจมตีหมายเลข 2 ซึ่งเป็นสัญญาณจากสาขา A แทนที่จะเป็นสัญญาณจากสาขา B
- แอพฯ รับข้อมูลระบุตัวตนสาขาส่งให้เซิร์ฟเวอร์ระบุตำแหน่งข้อมูลรายละเอียดของร้าน
- เซิร์ฟเวอร์ตำแหน่งนร้านส่งข้อมูลกลับมาให้แอพฯ ของเหยื่อ
- แอพฯ ของเหยื่อส่งข้อมูลคำสั่งซื้อไปให้เซิร์ฟเวอร์รับออเดอร์ ซึ่งส่งไปในสถานะการสั่งซื้อจากสาขา A แทนที่จะเป็น B
วิธีการป้องกัน
การป้องกันสามารถทำได้ด้วยการเข้ารหัสข้อมูล และ Timestamp โดยแทนที่จะส่ง Plain Text ของข้อมูลระบุตัวตนประจำสาขา แต่เปลี่ยนเป็นให้ส่งข้อมูลตัวตนสาขาและ Timestamp ของเวลาที่สัญญาณถูกปล่อยออกมาที่ถูกเข้ารหัสไว้ด้วยกุญแจแบบสมมาตร โดยคนที่อ่านได้ หรือมีกุญแจถอดรหัสมีเพียง อุปกรณ์ปล่อยสัญญาณและเซิร์ฟเวอร์ของ Starbuck
การเข้ารหัส Timestamp และข้อมูลตัวตนสาขา จะช่วยให้ผู้โจมตีไม่สามารถแก้ไขข้อมูลได้ ซึ่งข้อมูลชุดนี้จะใช้เป็นข้อมูลเปรียบเทียบช่วงเวลาการส่งสัญญาณและการส่งออเดอร์ให้กับเซิร์ฟเวอร์ของระบบ Starbuck ซึ่งถ้าหาก Timestamp ของเวลาที่สัญญาณถูกปล่อยและ Timestamp ของเวลาที่มือถือส่งออเดอร์มาให้เซิร์ฟเวอร์มีความต่างกันมากกว่าค่าที่ตั้งไว้ก็จะทำการปฏิเสธเมนูที่สั่งมา
จากข้างต้น จะเขียนเป็นสมการเข้ารหัสได้ดังนี้
ในช่วงของการส่งสัญญาณจากเครื่องกำเนิดหาผู้ใช้เพื่อระบุตำแหน่ง จะมีสมการดังนี้
โดยที่ G คือ เครื่องกำเนิดสัญญาณความถี่ และ A คือแอพพลิเคชั่น Starbuck และ id กับ t คือ ข้อมูลตัวตนสาขาและ timestamp ตามลำดับ และ k คือ คีย์แบบสมมาตรที่แชร์กันระหว่างเครื่องกำเนิดสัญญาณและเซิร์ฟเวอร์
และในส่วนของการส่งข้อมูลจากแอพฯ ไปสู่เซิร์ฟเวอร์ของ Starbuck
โดยที่ S คือ เซิร์ฟเวอร์ของ Starbuck
สรุป
หลัก ๆ แล้วปัญหาทั้งหมดเกิดจากการที่ข้อมูลที่รับส่งจากเครื่องกำเนิดสัญญาณความถี่สูงไม่มีการเข้ารหัส และการส่งออเดอร์ไปหาเซิร์ฟเวอร์ไม่มีการยืนยันข้อมูลเพิ่มเติม ทำให้สัญญาณถูกปลอมแปลงได้ง่าย โดยอันที่จริงแล้วการป้องกันนั้นมีหลายวิธี นอกกจากการเข้ารหัสข้อมูลและ Timestamp
ปิดด้วยวิดีโอของเจ้าของผลงานครับ เขาไปทดลองปลอมสัญญาณตามงานวิจัยที่เขาทำ
อ้างอิงจาก: http://ieeexplore.ieee.org/document/7876970/