กรณีศึกษา Starbucks Korea: การปลอมแปลงสัญญาณระบุตำแหน่งของ Indoor Positioning Systems

ไม่ได้จงใจแปลมาลงบล็อกครับ แต่เป็นงานวิชา Information security system ซึ่งแปลเพื่อไปนำเสนอในห้องเรียน แต่ไหน ๆ แปลมาแล้วเลยหยิบมาลงบล็อก เผื่อผู้ใดสนใจครับ แปลผิดหรือเขียนอธิบายคลาดเคลื่อนอย่างไรขออภัยด้วยครับ หรือส่งหลังไมค์มาบอกก็ได้ครับว่าเขียนผิด

Intro

ในปัจจุบันมีการทำนำการระบุตำแหน่งภายในอาคารมาใช้หลากหลายแบบ เช่น การระบุตำแหน่งผู้ใช้งานภายในห้างร้านซึ่ง GPS ไม่สามารถระบุตำแหน่งได้ชัดเจน โดยการระบุตำแหน่งภายในอาคารสามารถทำได้หลายแบบ ซึ่งอย่างง่ายดายคือการใช้การทำงานของ Wireless LAN

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

การทำงาน

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

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

ปัญหาทางด้านความปลอดภัย

เนื่องจากสัญญาณที่ถูกปล่อยมาในคลื่นความถี่สูงนั้นมีลักษณะเป็น Plain Text หรือข้อมูลที่ไม่ได้เข้ารหัส ทำให้ผู้โจมตีสามารถดักฟังสัญญาณแล้วปล่อยซ้ำในที่อื่น ๆ นอกเหนือจากร้านสาขาที่ติดตั้งเครื่องปล่อยสัญญาณนั้นได้

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

วิธีการโจมตี

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

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

หลักการและขั้นตอนการโจมตีมีดังนี้

  1. ผู้โจมตี หมายเลข 1 ประจำที่สาขา A และทำการดักรับและบันทึกสัญญาณความถี่เสียงสูงที่ถูกปล่อยออกมาภายในร้านสาขา A
  2. ผู้โจมตีหมายเลข 1 ส่งข้อมูลสัญญาณที่ได้ให้ผู้โจมตีหมายเลข 2
  3. ผู้โจมตีหมายเลข 2 ปล่อยสัญญาณที่รับมาใส่เหยื่อในสาขา B
  4. แอพฯ ของเหยื่อซึ่งอยู่ในสาขา B ได้รับสัญญาณลวงจากผู้โจมตีหมายเลข 2 ซึ่งเป็นสัญญาณจากสาขา A แทนที่จะเป็นสัญญาณจากสาขา B
  5. แอพฯ รับข้อมูลระบุตัวตนสาขาส่งให้เซิร์ฟเวอร์ระบุตำแหน่งข้อมูลรายละเอียดของร้าน
  6. เซิร์ฟเวอร์ตำแหน่งนร้านส่งข้อมูลกลับมาให้แอพฯ ของเหยื่อ
  7. แอพฯ ของเหยื่อส่งข้อมูลคำสั่งซื้อไปให้เซิร์ฟเวอร์รับออเดอร์ ซึ่งส่งไปในสถานะการสั่งซื้อจากสาขา 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/