ไข่ส้มวิทยา ไข่ส้มวิทยา
หมวดที่ 3: ธุรกรรมและกุญแจดิจิทัล ตอนที่ 19

กุญแจสาธารณะ (Public Keys): คำนวณมาจากกุญแจส่วนตัวยังไง ทำไมไปข้างหน้าได้แต่ย้อนกลับไม่ได้

เข้าใจการคูณบนเส้นโค้งวงรี (Elliptic Curve Multiplication) และ Compressed Public Key

#Bitcoinมือใหม่ #PublicKey #EllipticCurve #secp256k1
สไลด์ปกตอนที่ 19: กุญแจสาธารณะ (Public Keys): คำนวณมาจากกุญแจส่วนตัวยังไง ทำไมไปข้างหน้าได้แต่ย้อนกลับไม่ได้
🔍 แตะเพื่อขยายรูป
สไลด์ประกอบบทเรียนตอนที่ 19 — แตะเพื่อดูแบบเต็มจอ

ตอนที่ 18 เราเจาะลึกกุญแจส่วนตัว (Private Key) ไปแล้วครับ
ว่ามันคือตัวเลขสุ่ม 256 บิต ที่ใครก็สร้างเองได้ โดยไม่ต้องขอใคร

วันนี้เราจะต่อจากตรงนั้น
เพราะตัวเลขสุ่มตัวนี้ไม่ได้จบที่ตัวมันเอง
มันจะถูกหยิบไปคำนวณต่อจนกลายเป็นกุญแจอีกดอกหนึ่ง
ที่เรียกว่ากุญแจสาธารณะ (Public Key)

คำถามของวันนี้คือ
เขาคำนวณกันยังไง
แล้วทำไมถึงบอกว่า คำนวณไปข้างหน้าได้ แต่ย้อนกลับไม่ได้เลย

🔁 เปิดเรื่องด้วยเรื่องใกล้ตัว: ทำไมต้องมีทั้งเลขบัญชีและรหัสผ่าน

เวลาเราให้เพื่อนโอนเงินเข้าบัญชี
เราส่งแค่เลขบัญชีให้เขา
เราไม่เคยส่งรหัสผ่านธนาคารไปด้วย

เพราะเลขบัญชีเอาไว้ “รับ”
ส่วนรหัสผ่านเอาไว้ “จ่าย”

ถ้าให้ทั้งคู่ เงินเราจบหายหมดแน่

ในบิทคอยน์ก็มีคู่แบบนี้เหมือนกัน

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

แล้วความเจ๋งอยู่ตรงนี้ครับ
กุญแจสาธารณะไม่ใช่ของอีกชิ้นที่ต้องสุ่มใหม่
แต่มันถูก “คำนวณออกมา” จากกุญแจส่วนตัวโดยตรง

⛰️ หัวใจของวันนี้: คณิตศาสตร์ทางเดียว (Trapdoor Function)

ตอนที่ 17 เราเคยพูดถึง “คณิตศาสตร์ทางเดียว” แบบผ่าน ๆ
วันนี้มาผ่าให้เห็นกัน

ในโลกคณิตศาสตร์ มีฟังก์ชันบางประเภทที่มีนิสัยแปลกมาก
คือคำนวณไปข้างหน้าง่าย แต่ย้อนกลับแทบเป็นไปไม่ได้

ชื่ออย่างเป็นทางการคือ ฟังก์ชันประตูลับ (Trapdoor Function)

บิทคอยน์เลือกใช้ฟังก์ชันประเภทนี้ตัวหนึ่ง
เรียกว่า การคูณบนเส้นโค้งวงรี (Elliptic Curve Multiplication)

ซึ่งเป็นวิธีที่ระบบเอาไว้สร้างกุญแจสาธารณะจากกุญแจส่วนตัวครับ

ผลก็คือ

ถ้าเรามีกุญแจส่วนตัว
เราคำนวณหากุญแจสาธารณะได้สบาย ๆ ในเสี้ยววินาที

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

นี่แหละเหตุผลที่เรากล้าเปิดเผยกุญแจสาธารณะให้คนทั้งโลกเห็น
โดยไม่ต้องกลัวว่าใครจะล้วงเอากุญแจส่วนตัวของเราไป

📈 แล้วการคูณบนเส้นโค้งวงรีคืออะไร มาดูกันช้า ๆ

มันคือกราฟเส้นโค้งเส้นหนึ่ง
หน้าตาคล้าย ๆ โค้งที่กลมด้านล่าง แล้วชันขึ้นด้านบน

วาดอยู่บนแผนที่ที่มีแกน x กับแกน y
เหมือนที่เราเคยเรียนสมัยมัธยม

เส้นโค้งเส้นนี้มีคุณสมบัติพิเศษอยู่ข้อหนึ่ง

ถ้าเราลากเส้นตรงสัมผัสที่จุดหนึ่งบนโค้ง
เส้นนั้นจะไปตัดกับโค้งอีกจุดหนึ่งเสมอ

พอได้จุดตัด เราก็เอาจุดนั้นมากระจกพลิกขึ้นลงตามแกน x
จุดสุดท้ายที่ได้ คือคำตอบของ “การคูณ” หนึ่งรอบ

ฟังแล้วอาจงง ลองนึกภาพง่าย ๆ แบบนี้ครับ

เหมือนการเด้งลูกบิลเลียดบนโต๊ะที่ขอบโต๊ะเป็นรูปโค้งพิเศษ

ทุกครั้งที่คูณ คือการเด้งลูกตามกติกาที่กำหนดไว้แน่นอน
ไม่มีสุ่ม ไม่มีลุ้น คำนวณยังไงก็ออกมาตำแหน่งเดิมเสมอ

🎯 จุดเริ่มต้นคือจุดเดียวกันของทุกคนในโลก

บนเส้นโค้งที่บิทคอยน์ใช้ มีจุดเริ่มต้นที่ตกลงกันไว้ล่วงหน้า
เรียกว่า จุดกำเนิด (Generator Point) หรือย่อว่า G

ทุกคนในเครือข่ายใช้จุด G จุดเดียวกันหมด

แล้วการสร้างกุญแจสาธารณะก็ตรงไปตรงมาครับ

เอาจุด G ไป “คูณ” ด้วยตัวเลขกุญแจส่วนตัวของเรา

หมายความว่าอย่างไร

ถ้ากุญแจส่วนตัวของเราคือเลข 2 ก็คูณ G ด้วย 2
ลูกบิลเลียดเด้งตามกติกาไปจอดที่ตำแหน่งใหม่ เรียกว่า 2G

แต่กุญแจส่วนตัวจริงของเราไม่ใช่เลข 2
มันคือเลขมหาศาลที่มีเลขศูนย์ตามหลัง 77 ตัว จากตอนที่ 18

ดังนั้นการคูณจริง ๆ คือการให้ลูกบิลเลียดเด้งไปมาบนโค้ง
เป็นจำนวนครั้งเท่ากับตัวเลขมหาศาลตัวนั้น

จุดสุดท้ายที่ลูกบิลเลียดจอดอยู่ คือพิกัดบนแผนที่
มีค่า x กับค่า y

พิกัดสองตัวนี้รวมกัน คือกุญแจสาธารณะของเราครับ

สังเกตความเหลื่อมล้ำตรงนี้ไว้ครับ

คอมพิวเตอร์มีทางลัดในการเด้ง ไม่ต้องเด้งทีละครั้งจริง ๆ
คำนวณไปข้างหน้าเลยเร็วมาก

แต่ถ้าเราเห็นแค่ตำแหน่งที่ลูกบิลเลียดจอดอยู่
เราไม่มีทางรู้ว่ามันเด้งมากี่ครั้ง

จะรู้ได้ทางเดียวคือลองเด้งดูทีละครั้งไล่ไปเรื่อย ๆ
ซึ่งด้วยจำนวนระดับ 77 หลัก ทำไม่สำเร็จแน่นอน

✂️ เกร็ดน่ารู้: ทำไมกุญแจสาธารณะสมัยใหม่ถึงสั้นลง

กุญแจสาธารณะยุคแรกเก็บทั้งพิกัด x และ y เต็ม ๆ
ยาวเป็นสองเท่า และขึ้นต้นด้วยรหัส 04

แต่คนพบว่า โค้งวงรีเส้นนี้มาจากสมการเดียว
ดังนั้นถ้ารู้ค่า x เราคำนวณหาค่า y ย้อนขึ้นมาได้เอง

ปัญหาเดียวคือ y ได้คำตอบสองอัน
อันบนแกนกับอันล่างแกน

เลยเกิดรูปแบบใหม่ที่เรียกว่า กุญแจสาธารณะแบบบีบอัด (Compressed Public Key)

เก็บแค่ค่า x อย่างเดียว
แล้วติดป้ายกำกับไว้ข้างหน้าว่า y ตัวนั้นอยู่เหนือแกนหรือใต้แกน

รหัส 02 หมายถึงอยู่เหนือแกน
รหัส 03 หมายถึงอยู่ใต้แกน

แค่นี้กุญแจก็สั้นลงครึ่งหนึ่งแล้ว
ไม่เสียความปลอดภัยอะไรเลย

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

🔗 ทำไมต้องออกแบบให้สองกุญแจผูกกันแบบนี้

คำตอบคือ เพราะการคูณบนโค้งวงรีให้ของขวัญสองชิ้นพร้อมกัน

ชิ้นแรก คือทางเดียวที่กล่าวไป
เปิดเผยกุญแจสาธารณะได้ ไม่มีใครย้อนหากุญแจส่วนตัวได้

ชิ้นที่สอง คือสองกุญแจนี้มีความสัมพันธ์ทางคณิตศาสตร์ผูกกันแน่น

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

เวลาเราจะใช้จ่ายเงินก้อนที่ล็อกไว้กับกุญแจสาธารณะของเรา
จากที่เรียนในตอนที่ 16 ว่าต้องปลดล็อกด้วยลายเซ็นดิจิทัล

ลายเซ็นนั้นแหละครับ คือหลักฐานที่สร้างจากกุญแจส่วนตัว
แต่ตรวจสอบได้ด้วยกุญแจสาธารณะที่ทุกคนเห็นอยู่แล้ว

ทั้งระบบจึงทำงานได้โดยที่กุญแจส่วนตัวไม่เคยต้องเดินทางออกไปไหน
นอนอยู่ในเครื่องเราดื้อ ๆ นั่นแหละ

📖 เปรียบเทียบให้เห็นภาพ:

ลองนึกถึงบ้านหลังหนึ่งที่มีประตูล็อกแบบพิเศษ

ลูกกุญแจอยู่ในมือเราคนเดียว
แต่ทุกคนเห็นตัวล็อกหน้าบ้านได้เต็ม ๆ

ถ้าวันหนึ่งมีใครสงสัยว่าเราเป็นเจ้าของบ้านจริงไหม
เราไม่จำเป็นต้องยื่นลูกกุญแจให้เขาดู

เราแค่เดินไปหน้าบ้าน แล้วไขล็อกเปิดประตูต่อหน้าทุกคน

แค่นั้นทุกคนก็เชื่อแล้วว่าเรามีกุญแจจริง

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

🔮 ตอนหน้า: วันนี้เรารู้แล้วว่าสองกุญแจผูกกันแบบย้อนกลับไม่ได้
และเราพิสูจน์ความเป็นเจ้าของได้โดยไม่โชว์กุญแจส่วนตัว

แต่พิสูจน์ยังไงล่ะ

กระบวนการที่ว่านี้มีชื่อว่า ลายเซ็นดิจิทัล (Digital Signature)

ตอนหน้าเราจะมาดูกันครับว่า
กระดาษแผ่นดิจิทัลแผ่นนี้ถูกเซ็นยังไง
แล้วคนทั้งเครือข่ายตรวจสอบยังไงโดยไม่ต้องเชื่อใครเลย

🧠 สรุปวันนี้ จำแค่นี้

  • กุญแจสาธารณะ (Public Key) ไม่ได้สุ่มใหม่ แต่ถูกคำนวณออกมาจากกุญแจส่วนตัวโดยตรง คู่เดียวกันเสมอ
  • วิธีคำนวณเรียกว่า การคูณบนเส้นโค้งวงรี (Elliptic Curve Multiplication) คือการเด้งไปมาบนกราฟโค้งจากจุดกำเนิด (Generator Point) ตามจำนวนครั้งเท่ากับเลขกุญแจส่วนตัว จุดสุดท้ายที่จอดคือกุญแจสาธารณะ
  • ฟังก์ชันประตูลับ (Trapdoor Function) คำนวณไปข้างหน้าง่าย แต่ย้อนกลับจากกุญแจสาธารณะไปหากุญแจส่วนตัวแทบเป็นไปไม่ได้ จึงเปิดเผยกุญแจสาธารณะได้อย่างปลอดภัย
  • กุญแจสาธารณะสมัยใหม่นิยมใช้แบบบีบอัด (Compressed Public Key) เก็บแค่พิกัด x แล้วติดรหัส 02 หรือ 03 บอกว่า y อยู่เหนือหรือใต้แกน สั้นลงครึ่งหนึ่ง ประหยัดพื้นที่บล็อกเชน
  • สองกุญแจมีความสัมพันธ์ทางคณิตศาสตร์ผูกกันแน่น ทำให้เราพิสูจน์ความเป็นเจ้าของได้โดยไม่ต้องโชว์กุญแจส่วนตัวเลย

🖼️ สไลด์ทั้งหมดของตอนนี้ (8 รูป)

สไลด์ประกอบบทเรียนตอนที่ 19 รูปที่ 2สไลด์ประกอบบทเรียนตอนที่ 19 รูปที่ 3สไลด์ประกอบบทเรียนตอนที่ 19 รูปที่ 4สไลด์ประกอบบทเรียนตอนที่ 19 รูปที่ 5สไลด์ประกอบบทเรียนตอนที่ 19 รูปที่ 6สไลด์ประกอบบทเรียนตอนที่ 19 รูปที่ 7สไลด์ประกอบบทเรียนตอนที่ 19 รูปที่ 8
ทบทวนความเข้าใจ

แบบทดสอบท้ายบทเรียน

ตอบคำถาม 3 ข้อ เพื่อเช็กความเข้าใจของตัวเองได้เลย

1. กุญแจสาธารณะ (Public Key) เกิดขึ้นมาจากอะไร?

2. ฟังก์ชันคณิตศาสตร์ที่บิทคอยน์ใช้สร้าง Public Key มีชื่อว่าอะไร?

3. กุญแจสาธารณะแบบบีบอัด (Compressed Public Key) มีประโยชน์อย่างไร?

อ่านตอนนี้จบแล้วใช่ไหม?

กดบันทึกเพื่อติดตามความก้าวหน้าการเรียนของคุณ