ตอนที่ 19 เราเห็นแล้วว่ากุญแจส่วนตัวและกุญแจสาธารณะผูกกันด้วยคณิตศาสตร์ทางเดียว คำนวณไปข้างหน้าได้ แต่ย้อนกลับไม่ได้ และเราทิ้งท้ายไว้ว่า ความสัมพันธ์นี้ทำให้เราสามารถ “พิสูจน์” ความเป็นเจ้าของเงินได้โดยไม่ต้องโชว์กุญแจส่วนตัวให้ใครเห็นเลย
วันนี้เราจะมาดูกลไกการทำงานของสิ่งที่เรียกว่า ลายเซ็นดิจิทัล (Digital Signature) กันครับ!
🔏 ลายเซ็นดิจิทัล (Digital Signature) คืออะไร?
ลายเซ็นดิจิทัลคือ หลักฐานทางคณิตศาสตร์ ที่พิสูจน์ว่า:
- ผู้เซ็นเป็นเจ้าของกุญแจส่วนตัว (Private Key) ที่จับคู่กับกุญแจสาธารณะ (Public Key) ดอกนั้นจริง
- เจ้าของเป็นผู้อนุมัติธุรกรรมนี้ด้วยความยินยอม
- โดยที่ตัวกุญแจส่วนตัวไม่จำเป็นต้องปรากฏให้ใครในโลกเห็นแม้แต่นิดเดียว
ด้วยวิธีนี้ เราจึงสามารถปลดล็อกเงินใน UTXO เพื่อส่งต่อให้ผู้อื่นได้อย่างปลอดภัย โดยกุญแจส่วนตัวยังคงนอนนิ่งอยู่ในอุปกรณ์ของเราอย่างมิดชิด
🔗 ทำไมคนอื่นถึงขโมยลายเซ็นเราไปใช้ต่อไม่ได้?
คำถามที่หลายคนสงสัยคือ: ถ้าลายเซ็นดิจิทัลถูกแปะไว้บนธุรกรรมที่ทุกคนในโลกมองเห็น แล้วผู้ไม่หวังดีจะก๊อปลบลายเซ็นของเราไปแปะในธุรกรรมของเขาเพื่อขโมยเงินไม่ได้เหรอ?
คำตอบคือ เป็นไปไม่ได้เด็ดขาดครับ!
เพราะลายเซ็นดิจิทัลของบิทคอยน์ ถูกหลอมรวมเข้ากับเนื้อหาของธุรกรรมนั้น ๆ อย่างแนบแน่น:
- เวลาที่กระเป๋าเงินของเราสร้างลายเซ็น มันจะนำ กุญแจส่วนตัว มาคำนวณผสมกับ ข้อมูลของธุรกรรมฉบับนั้นโดยเฉพาะ (เช่น ยอดเงิน, ผู้รับ, หมายเลขอ้างอิง)
- หากใครพยายามก๊อปลายเซ็นนี้ไปแปะในธุรกรรมอื่น ข้อมูลจะไม่ตรงกัน และการตรวจสอบจะล้มเหลวทันที
- หากมีใครแอบแก้ไขข้อมูลธุรกรรมระหว่างทางแม้แต่ตัวอักษรเดียว ลายเซ็นนั้นก็จะกลายเป็นโมฆะทันที
ลายเซ็นดิจิทัลจึงทำหน้าที่ 2 อย่างพร้อมกัน: พิสูจน์ตัวตนผู้สั่งการ และ ประทับตราครั่งล็อกข้อมูลห้ามแก้ไข
⚙️ 2 ขั้นตอนสำคัญ: การเซ็น (Signing) vs การตรวจสอบ (Verifying)
การทำงานของลายเซ็นดิจิทัลแบ่งออกเป็น 2 ฟากอย่างชัดเจน:
- การเซ็นชื่อ (Signing): ทำงานเฉพาะบนเครื่องของผู้ส่งเงิน โดยนำกุญแจส่วนตัว + ข้อมูลธุรกรรม มาผ่านสมการจนได้ออกมาเป็นลายเซ็นดิจิทัล
- การตรวจสอบ (Verifying): ทำงานบนโหนดทุกเครื่องในเครือข่าย โดยนำลายเซ็น + ข้อมูลธุรกรรม + กุญแจสาธารณะของผู้ส่ง มาตรวจสอบ
จุดที่งดงามที่สุดคือ: ในขั้นตอนการตรวจสอบ ทุกคนใช้เฉพาะข้อมูลสาธารณะที่เปิดเผยได้ทั้งหมด! ไม่มีใครจำเป็นต้องเห็นกุญแจส่วนตัวของเรา แต่คณิตศาสตร์สามารถรับประกันได้อย่างเด็ดขาดว่าคนเซ็นถือกุญแจส่วนตัวจริง
🧩 ผ่าโครงสร้างลายเซ็น: ส่วนประกอบ (r, s)
ลายเซ็นดิจิทัลมาตรฐานของบิทคอยน์ (ECDSA) ประกอบด้วยตัวเลข 2 ตัวประกบกันคือ $(r, s)$:
- ชิ้นส่วน $r$ (สุ่มพิกัด): เริ่มจากการสุ่มตัวเลขชั่วคราวขึ้นมาตัวหนึ่ง แล้วนำไปคูณกับจุดกำเนิด $G$ บนเส้นโค้งวงรี จนได้พิกัด $x$ ออกมาเป็นค่า $r$ ชิ้นส่วนนี้ช่วยให้การเซ็นชื่อในแต่ละครั้งมีค่าไม่ซ้ำกันเลย แม้จะเซ็นจากกุญแจดอกเดิมก็ตาม
- ชิ้นส่วน $s$ (รหัสลายเซ็น): เกิดจากการนำกุญแจส่วนตัว คูณกับ $r$ บวกด้วยค่าแฮชของข้อมูลธุรกรรม แล้วหารด้วยตัวเลขสุ่มชั่วคราว
ค่าแฮชของธุรกรรมที่ถูกผสมเข้าไปในชิ้นส่วน $s$ นี่เอง คือสิ่งที่เย็บลายเซ็นให้ติดแน่นกับธุรกรรมฉบับนั้นเพียงฉบับเดียว
🔍 โหนดทั้งเครือข่ายตรวจสอบความถูกต้องอย่างไร? (ECDSA)
เมื่อโหนดได้รับธุรกรรม มันจะนำค่า $(r, s)$ และกุญแจสาธารณะมารันสมการบนเส้นโค้งวงรี:
- นำข้อมูลธุรกรรมและค่า $s$ ไปคำนวณจุดแรกบนเส้นโค้ง
- นำค่า $r, s$ และกุญแจสาธารณะ ไปคำนวณจุดที่สองบนเส้นโค้ง
- นำจุดทั้งสองมารวมกัน จะได้จุดที่สามบนเส้นโค้งวงรี
- หากพิกัด $x$ ของจุดที่สามตรงกับค่า $r$ พอดี $\rightarrow$ ลายเซ็นถูกต้องสมบูรณ์!
- หากไม่ตรง $\rightarrow$ โหนดจะปฏิเสธและทิ้งธุรกรรมนั้นทันที
กลไกทั้งหมดนี้มีชื่ออย่างเป็นทางการว่า ECDSA (Elliptic Curve Digital Signature Algorithm) ซึ่งทำงานโดยอาศัยกฎคณิตศาสตร์ล้วน ๆ โดยไม่ต้องพึ่งพาความไว้เนื้อเชื่อใจระหว่างมนุษย์เลยแม้แต่น้อย
🧠 สรุปวันนี้ จำแค่นี้
- ลายเซ็นดิจิทัล (Digital Signature) คือหลักฐานทางคณิตศาสตร์ที่พิสูจน์ว่าเราถือกุญแจส่วนตัวจริง โดยไม่ต้องเปิดเผยกุญแจให้ใครเห็น
- ห้ามใส่กุญแจส่วนตัวลงในธุรกรรม เพราะทุกคนในเครือข่ายมองเห็นข้อมูลได้ทั้งหมด
- ลายเซ็นผูกติดกับธุรกรรมฉบับนั้นโดยเฉพาะ ไม่สามารถก๊อปไปใช้กับรายการอื่น และป้องกันการแอบแก้ข้อมูลระหว่างทางได้
- ลายเซ็นมาตรฐาน (ECDSA) ประกอบด้วยตัวเลข 2 ตัวคือ $(r, s)$
- โหนดทั่วโลกสามารถตรวจสอบลายเซ็นได้อย่างเป็นอิสระ โดยใช้เพียงกุญแจสาธารณะและข้อมูลธุรกรรม
🔮 ตอนหน้า:
เรารู้แล้วว่าลายเซ็นดิจิทัลถูกฝังอยู่ในธุรกรรมทุกรายการ และมันกินพื้นที่จัดเก็บในแต่ละบล็อกไม่น้อยเลย
ตอนหน้าเราจะมาดูการอัปเกรดครั้งประวัติศาสตร์ของบิทคอยน์ ที่ย้ายข้อมูลลายเซ็นเหล่านี้ไปอยู่อีกส่วนหนึ่ง ทำให้ธุรกรรมเบาลง ค่าธรรมเนียมถูกลง และแก้บั๊กสำคัญของระบบ การอัปเกรดนั้นมีชื่อว่า SegWit ครับ!





