กุญแจสาธารณะ (Public Keys): คำนวณมาจากกุญแจส่วนตัวยังไง ทำไมไปข้างหน้าได้แต่ย้อนกลับไม่ได้
เข้าใจการคูณบนเส้นโค้งวงรี (Elliptic Curve Multiplication) และ Compressed Public Key
ตอนที่ 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 รูป)
แบบทดสอบท้ายบทเรียน
ตอบคำถาม 3 ข้อ เพื่อเช็กความเข้าใจของตัวเองได้เลย
1. กุญแจสาธารณะ (Public Key) เกิดขึ้นมาจากอะไร?
2. ฟังก์ชันคณิตศาสตร์ที่บิทคอยน์ใช้สร้าง Public Key มีชื่อว่าอะไร?
3. กุญแจสาธารณะแบบบีบอัด (Compressed Public Key) มีประโยชน์อย่างไร?
อ่านตอนนี้จบแล้วใช่ไหม?
กดบันทึกเพื่อติดตามความก้าวหน้าการเรียนของคุณ





