ข้ามไปที่เนื้อหาหลัก

พื้นฐานด้านความปลอดภัยของ Mnemonic

อัปเดตแล้ววันนี้

เมื่อใช้ Mnemonic เพื่อกู้คืนกระเป๋าเงินของคุณ มีโอกาสน้อยมากที่คุณจะป้อนคำผิดพลาด (ไม่ใช่คำที่อยู่ในรายการสำรอง แต่เป็นคำในฐานข้อมูล Mnemonic) และยังคงสามารถกู้คืนได้โดยใช้กระเป๋าเงินบนบล็อกเชน

นี่คือตัวอย่างและคำอธิบายของสถานการณ์ที่แทบจะเป็นไปไม่ได้นี้

ก่อนอื่น เราต้องเข้าใจกระบวนการสร้าง Mnemonic เพื่อที่จะเข้าใจว่าทำไม Mnemonic จึงสามารถใช้ได้แม้ว่าจะป้อนข้อมูลผิดก็ตาม

การสร้าง Mnemonic:

โดยใช้กระบวนการทำให้เป็นมาตรฐานที่ระบุไว้ใน BIP-39 กระเป๋าเงินจะสร้าง Mnemonic ขึ้นโดยอัตโนมัติ กระเป๋าเงินเริ่มต้นด้วยแหล่งเอนโทรปี จากนั้นจึงเพิ่มเช็คซัมก่อนที่จะจับคู่ตัวเลขสุ่มกับรายการคำ:
1. สร้างตัวเลขสุ่มขนาด 128 ถึง 256 บิต
2. ใช้เช็คซัมของตัวเลขสุ่มนี้เป็นบิตแรกๆ ของแฮช SHA256 (สี่บิตแรกนำมาจากบิตช่วย 12 บิต)
3. ที่ส่วนท้ายของลำดับสุ่ม ให้เพิ่มเช็คซัม
4. แยกชุดตัวเลขออกเป็นส่วนๆ ละ 11 บิต
5. ตัวเลขแต่ละตัวที่สอดคล้องกับส่วนประกอบ 11 บิตจะตรงกับพจนานุกรมที่มีอยู่แล้ว 2048 คำ
6. Mnemonic คือลำดับพยางค์ที่ได้

และเมื่อป้อนคำผิดพลาด เช่นในตัวอย่างต่อไปนี้ (ป้อนตำแหน่งแรกผิดพลาดเท่านั้น)

กระเป๋าเงินสร้าง Mnemonic เป็น: ribbon voice frame black oppose galaxy divide either tube maximum tired obvious

Hash ของ SHA256: 00101011 11111111

mceclip3.png

Mnemonic ที่ป้อนผิดพลาดเทียมคือ: rib voice frame black oppose galaxy divide either tube maximum tired obvious

Hash ของ SHA256:00101011 11101010

mceclip4.png

สี่บิตแรกของคู่ SHA256 แต่ละคู่เหมือนกัน ซึ่งแสดงว่าเช็คซัมก็เหมือนกัน

เนื่องจาก Mnemonic ทั้งสองคู่เป็นไปตาม BIP39 จึงสามารถกู้คืนได้โดยใช้กระเป๋าเงินบนบล็อกเชน

หากเราอธิบายแบบพื้นฐานในแง่ของความน่าจะเป็น: เลือกคำแบบสุ่มเป็นคำ Mnemonic สุดท้าย แล้วสุ่มเลือก Mnemonic อีก 11 คำเมื่อ Mnemonic มี 12 บิต เราสามารถหาชุดที่ถูกต้องได้ 16 ครั้ง ในขณะที่คำช่วย 24 บิตจะเป็น 256 ครั้ง

ดังนั้นจึงเป็นเรื่องปกติที่จะ "ป้อนคำผิดพลาดและได้รับ Mnemonic ที่ใช้งานได้" แต่นี่ไม่ได้หมายความว่าความปลอดภัยของ Mnemonic ไม่ถูกต้อง

บางครั้ง Mnemonic ถูกเข้าใจผิดว่าเป็น "Brain Wallets" แม้ว่าจะไม่ใช่สิ่งเดียวกันก็ตาม

ความแตกต่างหลักคือ Brain Wallets ประกอบด้วยคำที่ผู้ใช้เลือก ในขณะที่ Mnemonic ถูกสร้างขึ้นแบบสุ่มและแสดงให้ผู้ใช้

ความแตกต่างที่สำคัญที่สุดระหว่างทั้งสองคือแง่มุมที่ทำให้ Mnemonic ปลอดภัยยิ่งขึ้น ท้ายที่สุด มนุษย์มีความสามารถจำกัดในการสร้างตัวเลขสุ่ม

ซึ่งหมายความว่าเพียงเพราะ Mnemonic ที่เป็นไปตาม BIP39 ผ่านการทดสอบเทียม ไม่ได้หมายความว่าการใช้ Mnemonic ที่สร้างโดยกระเป๋าเงินนั้นไม่ปลอดภัย Mnemonic สองประเภทนี้แตกต่างกันในแง่ของความปลอดภัย Mnemonic ที่สร้างโดยกระเป๋าเงินมีความสุ่มมากกว่า (กล่าวคือ ปลอดภัยกว่า) ในขณะที่ Brain Wallet (ที่มี Mnemonic ผิดพลาด) มีโอกาสน้อยที่จะถูกสร้างขึ้นและใช้งานแบบสุ่ม

กระเป๋าเงินสร้างตัวเลขสุ่มอย่างแท้จริงโดยใช้วิธีการที่ปลอดภัยจากการเข้ารหัส (เช่น TRNG ของฮาร์ดแวร์) ดังนั้นคุณภาพของความสุ่มจึงไม่สามารถรับประกันได้จากการเลือก Mnemonic ตามปกติของผู้ใช้

นี่ไม่ใช่คำตอบที่ต้องการใช่ไหม