OneKey Transfer คือฟีเจอร์ภายในแอป OneKey ที่จะถ่ายโอน Private Keys จาก Software Wallet ของคุณไปยังอุปกรณ์อื่นอย่างปลอดภัย คู่มือนี้จะอธิบายถึงชั้นความปลอดภัยต่างๆ ที่ปกป้องข้อมูลของคุณ
หมายเหตุเกี่ยวกับ Wallet: ปัจจุบันฟีเจอร์นี้ใช้ได้กับ Software Wallet เท่านั้น การรองรับ Hardware Wallet มีความซับซ้อนมากกว่าและจะเพิ่มเข้ามาในเวอร์ชันต่อๆ ไป
หลักการหลัก
ความปลอดภัยของเราสร้างขึ้นจากคำมั่นสัญญาหลักสามประการ:
โอเพ่นซอร์ส & น่าเชื่อถือ
โค้ดของแอปและเซิร์ฟเวอร์ของเราเป็นสาธารณะ ทุกคนสามารถตรวจสอบเพื่อยืนยันการอ้างสิทธิ์ด้านความปลอดภัยของเราได้
โค้ดไคลเอนต์: https://github.com/OneKeyHQ/app-monorepo
การเข้ารหัสแบบ End-to-End (E2EE)
ข้อมูลของคุณจะถูกเข้ารหัสบนอุปกรณ์ของคุณและถอดรหัสบนอุปกรณ์ปลายทางเท่านั้น ไม่มีใครระหว่างทาง—แม้แต่ OneKey—ที่จะสามารถอ่านข้อมูลได้
Zero-Knowledge ของเซิร์ฟเวอร์
เซิร์ฟเวอร์ของเราทำหน้าที่เพียงแค่ควบคุมการสื่อสารเพื่อเชื่อมต่ออุปกรณ์ของคุณเท่านั้น เซิร์ฟเวอร์ไม่มีสิทธิ์เข้าถึงหรือรับรู้ข้อมูลที่กำลังถูกถ่ายโอน
วิธีการสร้างกุญแจเข้ารหัส
ข้อมูลของคุณจะถูกล็อคด้วยกุญแจที่ประกอบขึ้นจากส่วนประกอบหลายส่วนที่แยกจากกัน ผู้โจมตีจะต้องขโมยส่วนประกอบทั้งหมดจากสถานที่ที่แตกต่างกันพร้อมกันจึงจะสามารถพยายามถอดรหัสได้
1. Dynamic Shared Key (ECDHE)
คืออะไร: กุญแจที่แชร์แบบชั่วคราว ใช้ครั้งเดียว สร้างขึ้นโดยตรงระหว่างอุปกรณ์ทั้งสองของคุณเมื่อเริ่มต้นเซสชัน
ประเด็นสำคัญ: กุญแจนี้จะไม่ถูกส่งหรือเห็นโดยเซิร์ฟเวอร์ ทำให้การเชื่อมต่อปลอดภัยแม้ว่า Pairing Code ของคุณจะถูกดักจับได้ (เช่น ผ่านการบันทึกหน้าจอ)
2. Pairing Code
10 ตัวอักษรแรก: ส่งไปยังเซิร์ฟเวอร์เพื่อระบุว่าอุปกรณ์ใดต้องการเชื่อมต่อ
40 ตัวอักษรสุดท้าย: ใช้เป็นส่วนประกอบลับสำหรับกุญแจเข้ารหัสสุดท้าย ส่วนนี้ จะไม่ ถูกส่งไปยังเซิร์ฟเวอร์
3. ส่วนประกอบลับเพิ่มเติม
จากอุปกรณ์ของคุณ (ภายในเครื่อง): รหัสผ่านล็อคหน้าจอของอุปกรณ์, ตัวเลขสุ่มสำหรับการโอน, ID เฉพาะสำหรับอินสแตนซ์แอปของคุณ และรหัสลับในแอป (salt)
จากคลาวด์ (เซิร์ฟเวอร์): ID การเชื่อมต่อชั่วคราวและตัวเลขสุ่มอีกตัวที่สร้างโดยเซิร์ฟเวอร์สำหรับเซสชัน
กล่าวโดยสรุป การสร้างกุญแจจากหลายแหล่งนี้จะสร้างชั้นความปลอดภัยที่แข็งแกร่งอย่างเหลือเชื่อ หากต้องการมีโอกาสถอดรหัสข้อมูลของคุณ ผู้โจมตีจะต้องเจาะระบบเซิร์ฟเวอร์ (เพื่อขโมยข้อมูล, รับส่วนประกอบกุญแจฝั่งคลาวด์, และแก้ไขกุญแจ ECDHE ผ่านการโจมตีแบบ Man-in-the-Middle) และบันทึกหน้าจอแอปของคุณ (เพื่อขโมย Pairing Code และส่วนประกอบกุญแจภายในเครื่องอื่นๆ) พร้อมกัน
การป้องกันและการยืนยัน
เราใช้มาตรการเชิงรุกหลายอย่างเพื่อป้องกันการโจมตีและรับรองว่าคุณเป็นผู้ควบคุม
การป้องกันฝั่งเซิร์ฟเวอร์
ป้องกันการโจมตีแบบ Brute-Force:
Rate Limiting: อุปกรณ์เดียวสามารถส่งคำขอได้เพียงครั้งเดียวทุกๆ 3 วินาที เพื่อป้องกันการโจมตีแบบรัวเร็ว
Attempt Limits: Pairing Code สามารถลองได้เพียง 10 ครั้งเท่านั้น หลังจากการล้มเหลว 10 ครั้ง เซสชันจะถูกยกเลิก
การยืนยันที่ผู้ใช้ควบคุม
การตรวจสอบรหัสผ่านล็อคหน้าจอ
สิ่งที่คุณต้องทำ: คุณต้องป้อนรหัสผ่านของโทรศัพท์เพื่ออนุมัติการโอน
ความสำคัญ: เพื่อให้แน่ใจว่าผู้ที่หยิบโทรศัพท์ที่ปลดล็อคของคุณไปจะไม่สามารถขโมยคีย์ของคุณได้
การยืนยันทางกายภาพด้วยรหัส 6 หลัก
สิ่งที่คุณต้องทำ: หลังจากการจับคู่ คุณต้องยืนยันด้วยตนเองว่ารหัส 6 หลักตรงกันบนหน้าจออุปกรณ์ทั้งสองของคุณ
ความสำคัญ: สิ่งนี้จะหยุดการโจมตีแบบ Man-in-the-Middle แฮกเกอร์ไม่สามารถทำการโอนสำเร็จได้เนื่องจากไม่เห็นรหัสบนอุปกรณ์เครื่องที่สองของคุณ
Pairing Code ที่ใช้ได้ครั้งเดียว
คืออะไร: Pairing Code จะหมดอายุหลังจากการใช้งานสำเร็จเพียงครั้งเดียว
ความสำคัญ: ฟีเจอร์นี้มีการป้องกันการเชื่อมต่อล่วงหน้า หากแฮกเกอร์ขโมยโค้ดของคุณและเชื่อมต่อก่อน การพยายามเชื่อมต่อที่ถูกต้องของคุณจะ ตัดการเชื่อมต่อของแฮกเกอร์โดยบังคับ เพื่อให้แน่ใจว่าเฉพาะคุณเท่านั้นที่สามารถดำเนินการต่อไปได้
ตัวเลือกขั้นสูง
ด้วยโค้ดโอเพ่นซอร์สของเรา คุณสามารถเพิ่มความปลอดภัยและความเป็นส่วนตัวของการถ่ายโอนข้อมูลของคุณได้:
โฮสต์เซิร์ฟเวอร์ของคุณเอง: ติดตั้งโค้ดเซิร์ฟเวอร์ของเราบน เซิร์ฟเวอร์ของคุณเอง จากนั้นเชื่อมต่อโดยเลือกตัวเลือก "Custom Server" ในแอป สิ่งนี้จะทำให้คุณควบคุมข้อมูลได้อย่างสมบูรณ์
การโอนผ่าน LAN (เร็วๆ นี้): ในเวอร์ชันต่อๆ ไป แอป OneKey Desktop จะสามารถทำหน้าที่เป็น ตัวส่งต่อเครือข่ายเฉพาะที่ (LAN) สิ่งนี้จะช่วยให้อุปกรณ์ของคุณถ่ายโอนข้อมูลได้โดยไม่ต้องผ่านอินเทอร์เน็ตสาธารณะ ทำให้เกิดการแยกทางกายภาพอย่างแท้จริง
