โมเดลระบบรักษาความปลอดภัยของ Talisman

wc
We are Talisman ประเทศไทย
2 min readOct 14, 2022

โดย 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

--

--