ตอนที่ 18 เราเจาะลึกกุญแจส่วนตัว (Private Key) ไปแล้วว่ามันคือตัวเลขสุ่ม 256 บิต ที่ใครก็สร้างเองได้บนเครื่องโดยไม่ต้องขออนุญาตใคร
วันนี้เราจะมาต่อยอดจากจุดนั้นครับ เพราะตัวเลขสุ่มตัวนี้จะถูกนำไปคำนวณต่อจนกลายเป็น กุญแจสาธารณะ (Public Key)
คำถามสำคัญคือ: ระบบคำนวณอย่างไร และทำไมถึงกล่าวว่าคำนวณไปข้างหน้าได้ง่ายดาย แต่ไม่มีใครในโลกสามารถคำนวณย้อนกลับได้เลย?
🔁 ทำไมต้องมีทั้งกุญแจส่วนตัวและกุญแจสาธารณะ?
เวลาเราให้เพื่อนโอนเงินเข้าบัญชี เราจะส่งเพียง “เลขที่บัญชี” ให้เขา โดยไม่เคยส่ง “รหัสผ่าน” ไปด้วย เพราะเลขที่บัญชีมีไว้สำหรับ รับเงิน ส่วนรหัสผ่านมีไว้สำหรับ สั่งจ่ายเงิน
ในบิทคอยน์ก็ใช้แนวคิดคู่กุญแจ (Key Pair) แบบนี้เช่นกัน:
- กุญแจส่วนตัว (Private Key): เปรียบเหมือนรหัสผ่าน ห้ามเปิดเผยเด็ดขาด
- กุญแจสาธารณะ (Public Key): เปรียบเหมือนเลขที่บัญชี เปิดเผยต่อสาธารณะได้ เพื่อให้คนอื่นใช้ส่งเงินมาให้เรา
และสิ่งที่ยอดเยี่ยมคือ กุญแจสาธารณะไม่ได้สุ่มขึ้นมาใหม่ แต่มันถูกหล่อหลอมและคำนวณออกมาจากกุญแจส่วนตัวของเราโดยตรง!
⛰️ หัวใจสำคัญ: คณิตศาสตร์ทางเดียว (Trapdoor Function)
ในโลกคณิตศาสตร์ มีฟังก์ชันประเภทหนึ่งที่มีคุณสมบัติพิเศษคือ คำนวณไปข้างหน้าได้ง่ายมาก แต่แทบเป็นไปไม่ได้เลยที่จะคำนวณย้อนกลับ เรียกว่า ฟังก์ชันประตูลับ (Trapdoor Function)
บิทคอยน์เลือกใช้คณิตศาสตร์ที่ชื่อว่า การคูณบนเส้นโค้งวงรี (Elliptic Curve Cryptography - secp256k1):
- หากเรามีกุญแจส่วนตัว คอมพิวเตอร์จะคำนวณหากุญแจสาธารณะได้ในพริบตา (เสี้ยวของมิลลิวินาที)
- แต่ถ้าใครเห็นเฉพาะกุญแจสาธารณะ แล้วพยายามจะคำนวณย้อนกลับไปหากุญแจส่วนตัว ต่อให้ใช้ซูเปอร์คอมพิวเตอร์ที่ทรงพลังที่สุดในโลก ก็ไม่สามารถทำได้สำเร็จ!
นี่คือเหตุผลที่เราสามารถแจกกุญแจสาธารณะให้คนทั้งโลกเห็นได้อย่างสบายใจ โดยไม่ต้องกังวลว่าใครจะแอบขโมยกุญแจส่วนตัวไป
📈 การคูณบนเส้นโค้งวงรี (Elliptic Curve Multiplication) ทำงานอย่างไร?
ลองนึกถึงกราฟเส้นโค้งสมมาตรบนแกนพิกัด $x$ และ $y$ ที่มีสมการเฉพาะตัวคือ $y^2 = x^3 + 7$ (มาตรฐาน secp256k1)
เส้นโค้งนี้มีคุณสมบัติทางเรขาคณิตที่มหัศจรรย์: เมื่อเราลากเส้นตรงตัดผ่านจุดสองจุดบนเส้นโค้ง เส้นตรงนั้นจะพุ่งไปตัดกับเส้นโค้งที่จุดที่สามเสมอ จากนั้นนำจุดที่สามมาสะท้อนข้ามแกน $x$ เพื่อให้ได้จุดผลลัพธ์ใหม่
🎱 เปรียบเทียบง่าย ๆ
เหมือนการตีลูกบิลเลียดบนโต๊ะที่มีขอบโค้งพิเศษ ทุกครั้งที่เราส่งแรงตี ลูกบิลเลียดจะวิ่งชิ่งไปตามกฎเกณฑ์ที่ตายตัวและแม่นยำ 100% เสมอ
🎯 จุดกำเนิด (Generator Point G) ที่ทุกคนในโลกใช้ร่วมกัน
บนเส้นโค้งวงรีของบิทคอยน์ มีการตกลงจุดเริ่มต้นจุดหนึ่งไว้ล่วงหน้า เรียกว่า จุดกำเนิด (Generator Point หรือจุด G) ซึ่งทุกคนในโลกจะใช้จุดเดียวกันนี้
สูตรคำนวณกุญแจสาธารณะ ($K$) จึงเรียบง่ายมาก: $$K = k \times G$$ (โดยที่ $k$ คือกุญแจส่วนตัวของเรา, $G$ คือจุดกำเนิดคงที่, และ $K$ คือกุญแจสาธารณะ)
หมายความว่า เรานำจุด $G$ มาทำการบวกซ้ำ ๆ บนเส้นโค้งเป็นจำนวนรอบเท่ากับตัวเลขของกุญแจส่วนตัว ($k$) ลูกบิลเลียดจะวิ่งเด้งไปมาบนกราฟ จนกระทั่งหยุดนิ่งที่พิกัดสุดท้าย $(x, y)$ ซึ่งพิกัดคู่นี้แหละครับคือ กุญแจสาธารณะของเรา!
คอมพิวเตอร์มีสูตรลัดทางคณิตศาสตร์ในการกระโดดข้ามจุด ทำให้คำนวณไปข้างหน้าได้เร็วมาก แต่สำหรับคนที่เห็นเพียงจุดจอดสุดท้าย $(x, y)$ จะไม่มีทางรู้ได้เลยว่าลูกบิลเลียดกระโดดมากี่รอบ นอกจากจะต้องลองไล่นับทีละครั้ง ซึ่งเป็นไปไม่ได้ในทางปฏิบัติเพราะตัวเลขมีมากถึง 77 หลัก
✂️ เกร็ดน่ารู้: Compressed Public Key ทำไมกุญแจสมัยใหม่ถึงสั้นลงครึ่งหนึ่ง?
กุญแจสาธารณะแบบดั้งเดิม (Uncompressed) ต้องเก็บทั้งพิกัด $x$ และ $y$ เต็ม ๆ ทำให้มีความยาว 65 ไบต์ (ขึ้นต้นด้วย 04)
แต่เนื่องจากเส้นโค้งมีสมการที่แน่นอน หากเรารู้ค่า $x$ เราจะสามารถคำนวณหาค่า $y$ ได้เสมอ เพียงแต่ค่า $y$ จะมีความเป็นไปได้ 2 ค่า (บนแกน หรือ ล่างแกน)
นักพัฒนาจึงคิดค้น กุญแจสาธารณะแบบบีบอัด (Compressed Public Key):
- เก็บเฉพาะค่าพิกัด $x$ (ความยาวเพียง 33 ไบต์)
- แปะรหัสระบุขั้วไว้ด้านหน้า:
02หาก $y$ เป็นเลขคู่, หรือ03หาก $y$ เป็นเลขคี่
วิธีนี้ทำให้ขนาดกุญแจสาธารณะลดลงไปเกือบครึ่งหนึ่ง ช่วยประหยัดพื้นที่จัดเก็บบนบล็อกเชนและลดค่าธรรมเนียมธุรกรรมได้อย่างมหาศาล
🔗 ความสัมพันธ์ทางคณิตศาสตร์ที่ตัดไม่ขาด
การเชื่อมโยงกุญแจทั้งสองด้วยเส้นโค้งวงรี มอบจุดเด่น 2 ประการให้บิทคอยน์:
- ทางเดียว (One-way): เผยกุญแจสาธารณะได้ ปลอดภัย 100%
- พิสูจน์ได้ (Verifiable): กุญแจทั้งสองผูกกันแน่นด้วยสมการ ทำให้เราสามารถสร้าง ลายเซ็นดิจิทัล (Digital Signature) เพื่อพิสูจน์ว่าเราถือกุญแจส่วนตัวจริง โดยไม่ต้องนำกุญแจส่วนตัวออกมาแสดงให้ใครเห็นเลย
📖 เปรียบเทียบให้เห็นภาพ
เหมือนบ้านที่มีประตูล็อกพิเศษ ลูกกุญแจอยู่ในกระเป๋าเราคนเดียว แต่ทุกคนสามารถมองเห็นรูกุญแจหน้าบ้านได้อย่างชัดเจน เมื่อมีใครถามว่าเราเป็นเจ้าของบ้านจริงไหม เราไม่จำเป็นต้องยื่นลูกกุญแจให้เขาเอาไปดู เราเพียงแค่เดินไปไขปลดล็อกประตูต่อหน้าเขา ทุกคนก็เชื่ออย่างสนิทใจแล้วว่าเราถือกุญแจจริง ลายเซ็นดิจิทัลก็ทำหน้าที่เปรียบเสมือนการไขล็อกต่อหน้าทุกคนเช่นเดียวกันครับ
🧠 สรุปวันนี้ จำแค่นี้
- กุญแจสาธารณะ (Public Key) คำนวณมาจากกุญแจส่วนตัว (Private Key) โดยตรง ไม่ได้สุ่มขึ้นมาใหม่
- ใช้สมการ การคูณบนเส้นโค้งวงรี ($K = k \times G$) ซึ่งเป็นฟังก์ชันทางเดียว คำนวณไปข้างหน้าง่าย แต่ย้อนกลับไม่ได้
- จุดกำเนิด (G): จุดเริ่มต้นบนกราฟเส้นโค้งที่ทุกคนในเครือข่ายใช้ร่วมกัน
- Compressed Public Key: บันทึกเฉพาะพิกัด $x$ และเครื่องหมายกำกับ ทำให้กุญแจสั้นลงครึ่งหนึ่งและประหยัดพื้นที่บล็อกเชน
- ความสัมพันธ์ทางคณิตศาสตร์ช่วยให้เราสามารถพิสูจน์ความเป็นเจ้าของผ่านลายเซ็นดิจิทัลได้โดยไม่ต้องเปิดเผยกุญแจส่วนตัว
🔮 ตอนหน้า:
เรารู้แล้วว่ากุญแจทั้งสองผูกกันอย่างแน่นหนา แต่เราจะนำกุญแจส่วนตัวไปสร้าง “ลายเซ็นดิจิทัล (Digital Signature)” อย่างไร และคนทั้งโลกตรวจสอบลายเซ็นนี้ได้อย่างไรโดยไม่ต้องเชื่อใจใคร? ตอนหน้าเราจะมาเจาะลึกกระบวนการเซ็นชื่อดิจิทัลกันครับ!





