โมเดลระบบรักษาความปลอดภัยของ Talisman
โดย Warp Lizard, Lead Engineer ของ Talisman
ภาพรวมของโมเดลระบบรักษาความปลอดภัย
หน้าที่หลักของ Cryptocurrency Wallet คือการจัดเก็บ Private Key ของคุณอย่างปลอดภัย และอนุญาตให้คุณสามารถทำธุรกรรมได้ โดยปกติแล้ว คีย์จะถูกเก็บในรูปแบบเข้ารหัสบนดิสก์ และ Wallet Application จะต้องการรหัสผ่านเพื่อถอดรหัสเพื่อใช้งาน แต่ละ Wallet จะมีกลไกที่แตกต่างกันเล็กน้อยสำหรับเรื่องนี้ สำหรับ Polkadot.js — ซึ่ง Talisman ใช้เป็นพื้นฐาน และยังคงใช้งานหลายๆส่วนประกอบอยู่ — ต้องใช้รหัสผ่านในการถอดรหัส (หรือ ‘ปลดล็อก’) คีย์จะถูกเก็บไว้ในหน่วยความจำส่วนขยายเป็นระยะเวลาหนึ่ง หลังจากนั้นจะถูกล็อคโดยอัตโนมัติ เมื่อมีการสร้างบัญชีใหม่ ผู้ใช้งานจะต้องกรอกรหัสผ่านเพื่อเข้ารหัสเป็นครั้งแรก ซึ่งหมายความว่าทุกคู่คีย์ (Keypair) สามารถเข้ารหัสด้วยรหัสที่แตกต่างกันได้
Talisman ได้ใช้แนวทางที่แตกต่างออกไปเล็กน้อย แม้ว่าเราจะยังคงใช้ Keyring Library เหมือนกันกับ Polkadot.js — ซึ่งกำหนดให้ทุกคู่คีย์ต้องมีการป้องกันด้วยรหัสผ่านที่แตกต่างกัน — เราต้องการให้ผู้ใช้งานใช้รหัสผ่านเดียวในการเข้าถึงบัญชีทั้งหมดของตน และลดจำนวนครั้งที่ต้องป้อนรหัสผ่าน โดยเพื่อให้ทำสิ่งนี้ได้ ส่วนขยายจำเป็นต้องเก็บรหัสผ่านในหน่วยความจำเพื่อให้สามารถสร้างบัญชีใหม่ด้วยรหัสผ่านเดียวกันได้ เมื่อคุณเข้าใช้งาน Talisman รหัสผ่านของคุณจะถูกตรวจสอบ โดยการพยายามถอดรหัสบัญชีที่เข้ารหัสไว้ และหากถูกต้องจะถูกเก็บไว้ในแซนด์บ็อกซ์สำหรับส่วนขยายในหน่วยความจำของเบราว์เซอร์จนกว่าคุณจะล็อค Wallet ของคุณหรือตัวจับเวลาการล็อคอัตโนมัติของคุณหมดอายุ รหัสผ่านจะไม่ถูกบันทึกลงดิสก์ เมื่อคุณอนุมัติการทำธุรกรรม คีย์ของคุณจะถูกปลดล็อกโดยรหัสผ่านที่เก็บไว้ ใช้ในการ Sign จากนั้นล็อคอีกครั้งทันที โดยที่คุณไม่จำเป็นต้องป้อนรหัสผ่านทุกครั้งที่ทำธุรกรรมเหมือนกับ Polkadot.js
ในส่วนของ Recovery Phase (Mnemonic) เป็นอย่างไร?
เมื่อคุณเริ่มใช้งาน Talisman และสร้าง Wallet ขึ้นมาใหม่ — Secret Recovery Phase จะถูกสร้างขึ้นสำหรับคุณ และถูกเก็บไว้ในส่วนขยายที่จัดเก็บไว้ในตัวเครื่อง หากคุณเริ่มต้นใช้งานโดย Import Secret Recovery Phase เข้ามา Phase ดังกล่าวก็จะถูกเก็บไว้ในที่เดียวกัน ก่อนจะเก็บ ข้อมูลนี้จะถูกเข้ารหัสโดยใช้รหัสผ่านของคุณเป็นคีย์ในการเข้ารหัส เมื่อคุณต้องการ Export Seed Phase ของคุณ เราต้องการให้คุณป้อนรหัสผ่านอีกครั้งเพื่อเป็นมาตรการรักษาความปลอดภัยเพิ่มเติม ก่อนที่เราจะแสดง Secret Recovery Phase
วิธีการนี้ปลอดภัยไหม?
ทุกการออกแบบระบบความปลอดภัย มันจะส่งผลต่อความปลอดภัยและความสะดวกสบายของผู้ใช้งานเสมอ การจัดเก็บรหัสผ่านในหน่วยความจำของส่วนขยายหมายความว่า ผู้โจมตีขั้นสูงที่เข้าถึงคอมพิวเตอร์ของคุณในขณะที่ปลดล็อกส่วนขยายอยู่ มีโอกาสที่จะสามารถทิ้งหน่วยความจำของส่วนขยายและค้นหารหัสผ่านได้ ช่องโหว่นี้พบเจอเช่นเดียวกันใน Polkadot.js อย่างไรก็ตาม ในกรณีนี้ ผู้โจมตีจะเข้าถึงได้เฉพาะ Private Key ของบัญชีที่ปลดล็อกเท่านั้น
เพื่อลดช่องโหว่นี้ Talisman ได้พัฒนาฟีเจอร์ Auto-lock ขึ้นมา เพื่อล้างรหัสผ่านจากหน่วยความจำของส่วนขยาย เนื่องจากเราต้องการให้ผู้ใช้งานของเราเป็นผู้กำหนดระดับความปลอดภัยเอง จึงไม่ได้เปิดใช้งานส่วนนี้เป็นค่าเริ่มต้น (Default) อย่างไรก็ตาม เราแนะนำให้ผู้ใช้งานเปิดใช้งานการตั้งค่านี้ และเร็วนี้ๆ เราจะยกระดับความปลอดภัยไปอีกขั้นหนึ่ง โดยเราจะแฮชรห้สผ่านก่อนที่จัดเก็บไว้ในหน่วยความจำของส่วนขยาย แม้ว่าจะยังคงสามารถดึงรหัสผ่านที่แฮชผ่านวิธีการเดียวกันได้ แต่ก็ช่วยลดความเสี่ยงโดยการทำให้ระบุรหัสผ่านได้ยากขึ้น และลดผลกระทบกรณีรหัสผ่านที่ใช้กับบริการอื่นๆ รั่วไหล
แม้ว่าเราจะจัดหาเครื่องมือที่ดีที่สุดเท่าที่จะเป็นไปได้ แต่เราก็คาดหวังให้ผู้ใช้งานคำนึงถึงความปลอดภัยของตนเองเนื่องจากไม่มีระบบใดที่สมบูรณ์แบบ ด้วยเหตุนี้ เราจึงสนับสนุนให้ผู้ใช้งานปฏิบัติตามแนวทางเหล่านี้:
- ใช้รหัสผ่านที่รัดกุม
- เปิดใช้งาน Auto-lock Timer
- ล็อค Extension ทุกๆครั้งที่มีคนอื่นมาใช้งานหรือเข้าถึงคอมพิวเตอร์ของคุณ
- ตรวจสอบว่ารหัสผ่าน และ Secret Recovery Phase ไม่ได้ถูกบันทึกไว้ที่อื่น
- ตรวจสอบว่าคอมพิวเตอร์ของคุณไม่มี Malware
การบันทึกข้อมูลภายนอก
Talisman ใช้บริการภายนอกเพื่อวัตถุประสงค์ในการบันทึก Error และข้อมูลการวิเคราะห์ผู้ใช้งานตามความต้องการ การบันทึกข้อมูล Error จะดำเนินการโดยใช้ Sentry เพื่อให้เราทราบเมื่อมี Bug ในซอฟต์แวร์ของเรา และสามารถติดตามสิ่งที่ผิดพลาดได้ สำหรับการวิเคราะห์ผู้ใช้งาน เราใช้ Posthog โดยการวิเคราะห์ผู้ใช้งานช่วยให้เราสามารถติดตามความถี่ และรูปแบบการใช้งานของแต่ละฟีเจอร์ เพื่อให้เราสามารถตอบสนองต่อความต้องการของผู้ใช้ และมั่นใจได้ว่าเรากำลังพัฒนาสิ่งที่ดีที่สุด เมื่อคุณเริ่มใช้งาน Talisman คุณสามารถเลือกที่จะเข้าร่วมหรือออกจากบริการเหล่านี้ได้ โดยที่คุณสามารถเลือกในหัวข้อ “Security and Privacy” ใน Settings หากคุณเลือกที่จะออกจากบริการเหล่านี้ Talisman จะไม่ทำการติดตามการใช้งานของคุณ
บริการทั้งสองได้ถูกตั้งค่าให้เก็บข้อมูลเท่าที่จำเป็น เราระมัดระวังในส่วนนี้เป็นพิเศษเพื่อให้แน่ใจว่าไม่มีข้อมูลระบุตัวตนส่วนบุคคลหรือข้อมูลความปลอดภัยที่ละเอียดอ่อนรั่วไหลได้จากบริการเหล่านี้ โดยทั้งป้องกันส่วนของ Application เอง และใช้ Data Scrubber ใน Backend เพื่อให้มั่นใจว่าหากมีการส่งข้อมูลที่ละเอียดอ่อนไปโดยไม่ได้ตั้งใจ ข้อมูลเหล่านั้นจะไม่ถูกบันทึก
การตอบสนองของเราต่อเหตุการณ์ Slope Wallet ถูกแฮค
ก่อนหน้านี้ในปี 2022 — Solana Wallet รายใหญ่ที่ชื่อว่า Slope ถูกแฮ็กและเงินทุนของผู้ใช้งานจำนวนมากหายไป เหตุการณ์ครั้งนี้มาจากการที่ Slope บันทึก Private Keys ไว้ที่ Sentry Error Tracking Services (สามารถศึกษาเพิ่มเติมจากบทวิเคราะห์ของ @zellic_io ได้ที่นี่) ซึ่งเป็นบริการเดียวกับที่เราใช้สำหรับติดตามข้อผิดพลาดของ Application แม้ว่าเราค่อนข้างจะระมัดระวังอยู่แล้ว แต่เราก็ได้ตรวจสอบทุกอย่างใหม่อีกครั้งหนึ่ง เราพบว่าไม่มีการบันทึกข้อมูลที่ละเอียดอ่อนไว้ใน Sentry และเรามั่นใจว่าการติดตามข้อมูลของ Sentry ไม่สามารถเข้าถึงข้อมูลละเอียดอ่อนที่ถูกบันทึกไว้ได้ เรายังตั้งค่า Data Scrubbers เพิ่มเติมบน Backend ของ Sentry และทดสอบโดยพยายามส่งข้อมูลที่ละเอียดอ่อนไปยัง Sentry ด้วยตนเอง อย่างไรก็ตาม หากคุณยังคงรู้สึกไม่สบายใจกับการบันทึกข้อมูลไปยัง Sentry คุณสามารถเลือกไม่ใช้ ในการตั้งค่าได้เสมอ แต่เราก็หวังว่าคุณจะเปิดการตั้งค่านี้ไว้เพื่อให้เราสามารถติดตาม Bug และนำไปพัฒนา Wallet ให้ดียิ่งขึ้น
เกี่ยวกับ Talisman
Talisman เป็นกระเป๋าเงิน web3 ที่ปลดล็อกจักรวาลของแอปพลิเคชันใน Polkadot และ Ethereum ส่วนขยายเบราว์เซอร์ Talisman ช่วยให้คุณจัดเก็บ ส่ง และรับสินทรัพย์ได้อย่างปลอดภัย ใช้เพื่อเชื่อมต่อกับแอพพลิเคชั่นทั่ว Polkadot, และ Parachains
Talisman เป็น non-custodial โดยได้รับการตรวจสอบแล้ว สนับสนุนอุปกรณ์ Ledger และยังเข้ากันได้กับ Ethereum ทำให้ผู้ใช้สามารถจัดเก็บ จัดการ และทำ ธุรกรรมกับ Ethereum dapps
Download | Webapp | Twitter | Discord | Youtube | Reddit | Telegram