🪙Bitcoin, explained
ระดับกลางการเข้ารหัสอ่าน 10 นาที

กุญแจสาธารณะและกุญแจส่วนตัวใน Bitcoin

กระเป๋าเงิน Bitcoin ของคุณคือตัวเลข ที่อยู่ของคุณคือจุดบนเส้นโค้ง ความสัมพันธ์ระหว่างทั้งสองคือประตูทางคณิตศาสตร์ทางเดียว — เปิดได้ง่าย แต่ย้อนกลับไม่ได้

กุญแจส่วนตัว Bitcoin — สร้างในเบราว์เซอร์ของคุณตอนนี้

···

ตัวเลข 64 หลักนั้นคือกุญแจส่วนตัว Bitcoin ใครก็ตามที่รู้ตัวเลขนี้สามารถลงนามธุรกรรมและใช้จ่ายเงินที่เกี่ยวข้องได้ ไม่มีใครสามารถหามันจากกุญแจสาธารณะได้ — แม้แต่คอมพิวเตอร์ทุกเครื่องบนโลกที่ทำงานนานกว่าอายุของจักรวาล

กุญแจส่วนตัวคืออะไร?

กุญแจส่วนตัวคือจำนวนเต็มสุ่มระหว่าง 1 ถึงตัวเลข 77 หลักที่เรียกว่า order ของกลุ่ม secp256k1 (n) ไม่มีอะไรมากกว่านั้น ไม่ต้องมีผู้ออกใบรับรอง ไม่ต้องลงทะเบียน — ใครก็ตามที่สร้างมันได้เป็นเจ้าของ

Bitcoin ใช้กุญแจ 256 บิต ขนาดเดียวกับแฮช SHA-256 มีกุญแจส่วนตัวที่ถูกต้องประมาณ 10⁷⁷ ตัว

สุ่ม

สร้างโดยอุปกรณ์ของคุณโดยใช้ entropy ของระบบปฏิบัติการ ไม่มีใครอื่นเห็นขั้นตอนนี้

ลับ

ไม่เคยส่งผ่านเครือข่าย เก็บไว้ในกระเป๋าเงินแบบเข้ารหัส สูญเสียมัน — สูญเสีย Bitcoin

256 บิต

เขียนเป็นอักขระ hex 64 ตัว หรือเข้ารหัสเป็น WIF (Wallet Import Format) สำหรับมนุษย์

สร้างกุญแจส่วนตัวจริงด้านล่าง แต่ละครั้งที่คลิกจะสร้างตัวเลขสุ่มแบบ cryptographic ที่เบราว์เซอร์ของคุณไม่เคยเห็นมาก่อน — และคำนวณกุญแจสาธารณะและที่อยู่ Bitcoin จากมัน

ตัวสร้างกุญแจ

secp256k1 · แบบสด

สร้างกุญแจใหม่ →

มีกุญแจส่วนตัวที่ถูกต้องประมาณ 10⁷⁷ ตัว โอกาสที่จะสร้างกุญแจเดิมสองครั้งนั้นเท่ากับการสุ่มเลือกอะตอมเดิมจากจักรวาลที่มองเห็นได้สองครั้ง

วิธีที่กุญแจสาธารณะถูกสร้างขึ้น

1

เส้นโค้ง secp256k1

Bitcoin ใช้เส้นโค้ง elliptic y² = x³ + 7 บน prime field F_p จุดบนเส้นโค้งนี้มีการคำนวณพิเศษ — คุณสามารถ "บวก" สองจุดเพื่อได้จุดที่สาม และผลลัพธ์จะเป็นจุดอื่นบนเส้นโค้งเดิมเสมอ

เส้นโค้งมีจุด generator พิเศษที่เรียกว่า G ซึ่งถูกกำหนดไว้ในโปรโตคอล Bitcoin กระเป๋าเงิน Bitcoin ทุกใบใช้ G เดียวกัน

secp256k1
p   = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
G.x = 79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
G.y = 483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8
n   = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
💡
พารามิเตอร์เหล่านี้ไม่ได้ถูกเลือกมาโดยพลการ 'secp256k1' เป็นมาตรฐาน (Certicom SEC2) ที่ค่าคงที่ทุกตัวได้มาจากสูตรที่กำหนดแน่นอน — ไม่มีความเป็นไปได้ที่จะฝัง backdoor
2

การคูณจุด: ประตูทางเดียว

กำหนดกุญแจส่วนตัว k และ generator G กุญแจสาธารณะของคุณคือ: publicKey = k × G ซึ่งหมายถึงการบวก G กับตัวเองจำนวน k ครั้ง เมื่อ k ≈ 10⁷⁷ นั่นคือการบวกมากมาย — แต่อัลกอริทึม double-and-add ทำได้ใน ~256 ขั้นตอนเท่านั้น

ผลลัพธ์คือจุด (x, y) บนเส้นโค้ง เข้ารหัสเป็น 33 ไบต์ในรูปแบบ compressed: ไบต์ prefix (02 หรือ 03 ขึ้นอยู่กับว่า y เป็นเลขคู่หรือคี่) บวกกับ x coordinate 32 ไบต์

k =
x (mod 43)y

Steps for k = 3

1G = (6, 34)
2Add: → (24, 31)
3Add: → (19, 4)

k·G = (19, 4)

Private key

k (256 bits)

→ k × G →~256 steps

Public key

(x, y) point

→ ?impossible

🔒 Private key

k = ???

3

ทำไมย้อนกลับไม่ได้ (ECDLP)

การหาค่า k จากเพียง k×G เรียกว่า Elliptic Curve Discrete Logarithm Problem (ECDLP) ไม่มีอัลกอริทึมที่มีประสิทธิภาพสำหรับ secp256k1 การโจมตีที่ดีที่สุดที่รู้จัก — Pollard's rho — ต้องการ ~2¹²⁸ operations

complexity
ไปข้างหน้า:  k × G  →  ~256 การดับเบิ้ล/บวกจุด  →  มิลลิวินาที
ย้อนกลับ: P → k  →  ~2¹²⁸ operations             →  เป็นไปไม่ได้ทางกายภาพ
คอมพิวเตอร์ควอนตัมสามารถรัน Shor's algorithm เพื่อทำลาย ECDLP ได้ — แต่คอมพิวเตอร์ควอนตัมที่ใหญ่พอที่จะคุกคาม secp256k1 ยังไม่มีอยู่จริง Bitcoin สามารถย้ายไปใช้ลายเซ็น post-quantum ได้หากจำเป็น

ลองหากุญแจส่วนตัว

ด้านล่างคือกุญแจสาธารณะของเส้นโค้งขนาดเล็ก คณิตศาสตร์เหมือนกันกับ secp256k1 — เพียงแต่ใช้ prime field ที่เล็กกว่ามาก เพื่อให้คุณลองทุกค่าได้จริงๆ

ท้าทาย ECDLPเส้นโค้งขนาดเล็ก · หา k

🎯 จุดกุญแจสาธารณะ — หากุญแจส่วนตัว k ที่สร้างจุดนี้

(0, 0)

Curve: y² = x³ + 7 (mod 43) · G = (6, 34)

การเดาของคุณสำหรับ k

คุณสามารถหาคำตอบได้โดยลอง k = 1, 2, 3… เพราะเส้นโค้งนี้มีจุดน้อยกว่า 50 จุด secp256k1 มีกุญแจส่วนตัวที่เป็นไปได้ 2²⁵⁶ ตัว การค้นหาแบบ exhaustive search แบบเดียวกันจะใช้เวลา 10⁵⁸ ปี

จากกุญแจสาธารณะสู่ที่อยู่ Bitcoin

1

แฮชกุญแจสาธารณะสองครั้ง

ที่อยู่ Bitcoin ไม่ใช่กุญแจสาธารณะเอง — มันคือฟังก์ชันแฮชสองตัวที่ใช้ต่อเนื่องกัน: SHA-256 แล้วตามด้วย RIPEMD-160 ได้ address hash 20 ไบต์ (160 บิต)

ทำไมต้องแฮช? เพื่อย่อที่อยู่และเพิ่มชั้นความปลอดภัยอีกชั้น แม้ว่า elliptic curve cryptography จะถูกทำลายในอนาคต ผู้โจมตีก็ยังต้องทำลายฟังก์ชันแฮชสองตัวพร้อมกัน

address derivation
ขั้น 1: SHA256(publicKey)32 ไบต์
ขั้น 2: RIPEMD160(ผลลัพธ์)20 ไบต์  (address hash)
ขั้น 3: เพิ่ม version byte (0x00 mainnet)
ขั้น 4: checksum = SHA256(SHA256(versioned))[0:4]
ขั้น 5: Base58Check(versioned + checksum)  → ที่อยู่แบบอ่านได้
2

ทำไมที่อยู่รับได้แต่พิสูจน์การเป็นเจ้าของไม่ได้

ใครก็สามารถส่ง Bitcoin ไปยังที่อยู่ของคุณได้ — พวกเขาแค่ต้องการ address hash 20 ไบต์ แต่เพื่อใช้จ่าย คุณต้องพิสูจน์ว่าคุณรู้กุญแจส่วนตัวที่สร้างกุญแจสาธารณะที่แฮชไปยังที่อยู่นั้น การพิสูจน์นั้นคือลายเซ็นดิจิทัล

💡
ที่อยู่ของคุณปรากฏบน blockchain ทุกครั้งที่มีคนส่ง Bitcoin ให้คุณ แต่มันไม่เปิดเผยข้อมูลใดๆ เกี่ยวกับกุญแจส่วนตัว — หรือแม้แต่กุญแจสาธารณะเต็ม (จนกว่าคุณจะใช้จ่าย)
3

ห่วงโซ่การสร้างทั้งหมด

Private key

random 256-bit

→ ×G →

secp256k1

Public key

33-byte point

→ SHA256+RIPEMD160 →

one-way

Address

Base58Check

ทุกขั้นตอนเป็นทางเดียว คุณสามารถแชร์ที่อยู่และกุญแจสาธารณะได้อย่างเปิดเผย กุญแจส่วนตัวยังคงเป็นความลับ — นั่นคือโมเดลความปลอดภัยทั้งหมด

ทำไมเรื่องนี้ถึงสำคัญกับ Bitcoin

Public-key cryptography คือเหตุผลที่ Bitcoin ไม่มีรหัสผ่าน ไม่มีบัญชี และไม่มีธนาคาร

ความเป็นเจ้าของ

Bitcoin ไม่มีบัญชี การเป็นเจ้าของ Bitcoin หมายถึงการรู้กุญแจส่วนตัว ไม่มีธนาคารสามารถอายัดมัน ไม่มีรัฐบาลยึดมันได้โดยไม่มีตัวเลขนั้น

ลายเซ็นดิจิทัล

เมื่อคุณใช้จ่าย Bitcoin คุณสร้างลายเซ็น ECDSA โดยใช้กุญแจส่วนตัว โนดตรวจสอบมันกับกุญแจสาธารณะ — พิสูจน์ว่าคุณอนุมัติธุรกรรมโดยไม่เปิดเผยกุญแจ

HD Wallet

กระเป๋าเงินสมัยใหม่สร้างคู่กุญแจหลายพันล้านคู่จาก master seed หนึ่งตัวโดยใช้ BIP32 วลีสำรองหนึ่งชุดปลดล็อกที่อยู่ไม่จำกัดทั้งหมดที่สร้างขึ้นอย่างกำหนดแน่นอน

ความเสี่ยงควอนตัม

ECDLP มีความเสี่ยงเชิงทฤษฎีต่อ Shor's algorithm บนคอมพิวเตอร์ควอนตัมในอนาคต ที่อยู่ Bitcoin ที่ยังไม่เคยใช้จ่าย (กุญแจสาธารณะยังไม่เปิดเผย) มีชั้นป้องกันแฮชเพิ่มเติม

ทุกธุรกรรม Bitcoin ที่เคยเกิดขึ้นคือการพิสูจน์ทางคณิตศาสตร์ของการเป็นเจ้าของกุญแจส่วนตัว — ตรวจสอบภายในมิลลิวินาทีโดยโนดหลายพันแห่งทั่วโลก โดยไม่มีบุคคลที่สามที่น่าเชื่อถือ

บทเรียนที่เกี่ยวข้อง