§ บทความ · พื้นฐาน

BIP-39 recovery phrase — คัมภีร์ความปลอดภัย

12/24 คำของ BIP-39 encode อะไร เก็บไว้ไหน บันไดของ threat model สำหรับการเก็บ และทำไม passphrase ฆ่า wallet มากกว่าที่ช่วย

โดย dont-trust-verify · เผยแพร่ 4 พฤษภาคม 2569

EN version →

12 หรือ 24 คำที่หลัง hardware wallet ของคุณคือ wallet ตัวจริง เครื่องพลาสติกที่อยู่บนโต๊ะคุณเป็นแค่เครื่องคำนวณที่รู้วิธีใช้คำพวกนี้ ถ้าจะเข้าใจอะไรเรื่องเดียวเกี่ยวกับ self-custody เข้าใจอย่างนี้ — แล้วเข้าใจว่ามันหมายความยังไงกับวิธีเก็บ ตรวจ และป้องกันคำพวกนี้

นี่คือบทความที่ผมอยากให้มีคนยื่นให้ผมในปี 2017 ตอนซื้อ hardware wallet แรก ดู seed card แวบเดียวแล้วยัดเข้าลิ้นชัก หกปีและพันครั้งที่เกือบเสีย นี่คือสิ่งที่ผมรู้จริง

TL;DR. 12 / 24 คำคือ entropy + checksum byte แมป deterministic ผ่าน list ของ 2,048 คำในพจนานุกรม คำเหล่านี้สร้าง Bitcoin address และ private key ทุกตัวที่ wallet ของคุณจะใช้ตลอดชีวิต คำเก็บอยู่ที่ที่คุณเขียนไว้เท่านั้น เก็บให้ดีหมายถึงป้องกัน 4 threat class: ไฟ / น้ำ / หาย (กายภาพ), โจร (คนในบ้านคุณ), บังคับ (คนถือประแจ), และ โง่ (คุณในอีก 5 ปี ที่ลืมว่าแผ่นเหล็กในลิ้นชักคืออะไร) แต่ละ threat มี mitigation ต่างกัน และคำตอบที่ดีที่สุดสำหรับอันหนึ่งมักผิดสำหรับอีกอัน

คำพวกนี้คืออะไรจริงๆ

BIP-39 คือ Bitcoin Improvement Proposal จากปี 2013 ที่นิยามวิธีแปลง entropy ของ wallet เป็น list คำที่จำง่ายในภาษาอังกฤษ (หรือภาษาอื่น)

กลไกย่อๆ:

  1. random-number generator ใน hardware ของ wallet สร้าง entropy 128 bit (สำหรับ phrase 12 คำ) หรือ 256 bit (24 คำ) ขั้นนี้เป็นขั้นเดียวที่ randomness กายภาพต้องดี ที่เหลือเป็น deterministic
  2. SHA-256 hash ของ bit เหล่านั้นถูกคำนวณ 4 bit แรก (12 คำ) หรือ 8 bit (24 คำ) ของ hash ถูกต่อท้ายเป็น checksum เพราะฉะนั้น phrase 12 คำ encode 128 bit ของ entropy + 4 bit checksum = 132 bit รวม
  3. 132 / 264 bit ถูกแบ่งเป็นกลุ่ม 11 bit แต่ละค่า 11 bit (0-2047) แมปเป็นคำใน wordlist BIP-39 ที่มี 2,048 คำพอดี
  4. จบ String ของคำคือ entropy + checksum ในรูปแบบที่จำง่ายขึ้น

เพื่อแปลงคำกลับเป็น Bitcoin key จริง phrase BIP-39 ถูกป้อนผ่าน PBKDF2 กับ HMAC-SHA512 รอบละ 2,048 iteration โดยใช้ optional passphrase เป็น salt output คือ master seed — 512 bit ของวัสดุที่ derive ทางวิทยาการรหัสที่ algorithm BIP-32 hierarchical deterministic (HD) wallet ใช้สร้างทุก address ที่คุณจะเห็น

3 ข้อสรุปที่ต้องจำ:

คำพวกนี้อยู่ที่ไหนจริงๆ

นี่คือคำถามที่ Ledger / Trezor / Coinkite ถูก phishing ตลอด: “ส่ง seed ของคุณมาให้เรา verify” vendor ทุกเจ้าที่ถูกต้องมีคำตอบเดียวกัน:

Seed อยู่ที่ไม่มีที่ไหนยกเว้นที่คุณเขียนไว้ Vendor ไม่มี Vendor ไม่ต้องการ Vendor กู้ให้คุณไม่ได้ ไม่มีใครได้

ภายในเครื่อง seed ไม่เคยออกจาก secure element หลังจากสร้าง เมื่อคุณเซ็น transaction เครื่องใช้ seed derive private key ที่เกี่ยวข้อง เซ็น transaction และคืน signature seed เองไม่เคยผ่าน USB cable ไม่เคยผ่าน Bluetooth ไม่เคยผ่าน air gap (นี่คือสิ่งที่ทำให้ hardware wallet เป็น hardware wallet)

เมื่อคุณ wipe เครื่อง seed หายไปจากเครื่อง ถ้าคุณไม่เขียนไว้ และเครื่อง wipe wallet หายไปตลอดกาล ไม่มีการกู้คืน ไม่มีลิงก์ “ลืม password” ไม่มีเบอร์ support ให้โทร

นี่คือ asymmetry ของ self-custody: คุณมีพลังทั้งหมด และคุณมีความรับผิดชอบทั้งหมด พร้อมกัน

4 threat class

ผมเห็นเพื่อนเสีย Bitcoin ครบทั้ง 4 อย่างนี้ กลยุทธ์เก็บที่ต่างกันแมปกับ threat ต่างกัน คำตอบที่ดีที่สุดขึ้นกับว่าคุณ optimize ต่อ threat ตัวไหน

Threat 1 — ไฟ / น้ำ / หาย (การเสื่อมทางกายภาพ)

หมึกบน seed card paper ละลายในห้องใต้ดินที่น้ำท่วม การ์ดเองไหม้ในไฟไหม้บ้าน คุณย้ายบ้าน 3 ครั้งใน 10 ปี การย้ายครั้งหนึ่งทำกล่องหาย เชิงสถิติ นี่คือวิธีที่ self-custodian เสียเหรียญบ่อยที่สุด

บันได mitigation:

ราคาแผ่นเหล็ก $20-100 expected value ของการไม่มีถ้ามียอดถือสำคัญใดๆ ติดลบมหาศาล นี่คือ upgrade ความปลอดภัย ROI สูงสุดใน self-custody ซื้อในสัปดาห์เดียวกับที่ตั้ง wallet

Threat 2 — โจร (คนในบ้านคุณ)

แขกในบ้านเจอ seed card ในลิ้นชัก โจรเจอตอนเจาะ เพื่อนของเพื่อนของรูมเมตได้ยินเรื่อง Bitcoin คุณและเริ่มค้นหา สมาชิกครอบครัวค้น safe

บันได mitigation:

Multisig คือคำตอบที่ถูกสำหรับยอดถือเหนือ ~1 BTC ในความเห็นผม ต่ำกว่านั้น operational complexity tax เกินประโยชน์ความปลอดภัยสำหรับคนส่วนใหญ่

Threat 3 — การบังคับ (wrench attack $5)

xkcd 538 เป็นแผนภาพที่ดีที่สุดใน cryptography ถ้าคนถือประแจ threat model ไม่ใช่การเก็บ seed ของคุณ — มันคือคุณ Attacker ไม่ต้องทำลาย encryption ต้องทำลายคุณ

บันได mitigation:

สำหรับคนส่วนใหญ่ คำตอบมีเหตุผลที่สุดคือข้อแรก: ปิดปาก การคุยโม้สาธารณะเรื่อง Bitcoin holdings คือ leading indicator ของ “คนที่จะถูกปล้น”

Threat 4 — โง่ / ตัวเองในอนาคต

นี่คือ threat ที่คนเตรียมน้อยที่สุดและเสียให้บ่อยที่สุด

8 ปีจากนี้ แผ่นเหล็กคุณอยู่ใน fireproof safe ในตู้ คุณย้ายบ้าน 2 ครั้ง คุณกำลังเก็บกล่องอุปกรณ์อิเล็กทรอนิกส์เก่า เจอสิ่งที่ดูเหมือนแผ่นเหล็กที่มีคำสุ่ม คุณจำไม่ได้ว่าตรงกับ wallet ไหน คุณจำไม่ได้ว่าเป็น wallet จริงหรือ testnet practice ที่ทำหลายปีก่อน ภรรยาถามว่าแผ่นนี้คืออะไร คุณไม่มีคำตอบที่มั่นใจ

บันได mitigation:

BIP-39 passphrase — เมื่อช่วย เมื่อฆ่าคุณ

“คำที่ 25” คือ feature ที่ทรงพลังที่สุดและอันตรายที่สุดใน BIP-39

มันทำอะไรจริงๆ: เปลี่ยน master seed ทั้งหมด 24 คำ + passphrase “trezor” สร้าง wallet หนึ่ง 24 คำ + passphrase “treezor” สร้าง wallet ที่ต่างกันสมบูรณ์ ที่มี address ต่างกันสมบูรณ์ ที่ไม่มี link on-chain กับอันแรก

เมื่อช่วย:

เมื่อฆ่าคุณ:

Passphrase เหมาะถ้า:

  1. คุณจำได้ AND บันทึกใน location แยกที่ทายาทหาเจอ AND ทดสอบกู้คืนกับมัน AND เข้าใจว่ามันทำอะไร
  2. ยอดถือใหญ่พอจะ justify operational complexity
  3. คุณ sober เรื่อง failure mode

ถ้าไม่แน่ใจว่าทำครบ 4 ข้อ อย่าใช้ seed 24 คำมาตรฐานในแผ่นเหล็กพอสำหรับคนส่วนใหญ่ จำนวน self-custodian ที่เสีย Bitcoin มากกว่าให้ passphrase ที่ลืมมากกว่าให้ attacker ไม่น้อยเลย

วิธี verify ว่า backup ทำงานจริง

เขียน 24 คำและใส่ใน safe เป็นเงื่อนไขจำเป็นแต่ไม่พอ คุณไม่รู้ว่า backup work จนกว่าจะทดสอบ

procedure ทดสอบกู้คืน (ทำปีละครั้ง):

  1. Wipe hardware wallet อีกเครื่อง (ไม่ใช่เครื่องหลัก) หรือใช้ software wallet บน laptop air-gapped ที่ install ใหม่
  2. พิมพ์ 24 คำลงใน ถ้ามี passphrase ใส่ด้วย
  3. Verify 5 receiving address แรกตรง wallet หลักของคุณแน่นอน ถ้าไม่ตรง คุณมี seed ผิด, derivation path ผิด, passphrase ผิด หรือทั้งสาม
  4. อย่าย้ายเงิน นี่คือ verification ไม่ใช่ migration Wipe เครื่องทดสอบเมื่อเสร็จ

ใช้ BIP-39 validator บนเว็บนี้ confirm phrase ที่เขียนไว้มี checksum byte valid ก็ได้ บอกได้ว่า phrase self-consistent ทางคณิตศาสตร์ — คุณไม่ได้สลับตัวอักษรหรือคำ บอกไม่ได้ว่า generate wallet ถูก (เฉพาะขั้นที่ 3 ข้างบนทำได้)

ผมบอกได้ไม่กี่กี่คนที่ไม่เคยทดสอบ backup จนเจอตอนต้องการใช้จริงปีหลังว่ามี typo ในคำที่ 9

”ดี” หน้าตาเป็นยังไง

สำหรับ self-custodian ที่มี Bitcoin $5K-$500K (ช่วงพบบ่อยสุด):

สำหรับ $500K+: เพิ่ม multisig (Sparrow + 3 hardware wallet ที่ 3 location, quorum 2-of-3) และพิจารณาทนายมรดกที่ formalize แผน

สำหรับต่ำกว่า $1K: แผ่นเหล็กเกินไป กระดาษใน fireproof box พอ อย่าให้ความสมบูรณ์เป็นศัตรูของความดี

”แย่” หน้าตาเป็นยังไง

story โลกจริงที่ผมได้ยินบ่อยสุด:

ทุกอันป้องกันได้ด้วยน้อยกว่าราคา hardware wallet และ afternoon ของงานระมัดระวัง

เครื่องมือ

อ่านต่อ