MoneroSwapper MoneroSwapper
การศึกษา

RingCT เจาะลึก: Monero ซ่อนจำนวนเงินธุรกรรมอย่างไร

MoneroSwapper Team · · · 3 min read · 81 views

บทนำสู่ Ring Confidential Transactions

เมื่อ Monero เปิดตัวครั้งแรกในปี 2557 มันได้รับการออกแบบบนพื้นฐานของโปรโตคอล CryptoNote โดยใช้ ring signatures (ลายเซ็นวง) และ stealth addresses (ที่อยู่สเตลธ์) เพื่อซ่อนตัวผู้ส่งและผู้รับในทุกธุรกรรม อย่างไรก็ตาม ยังมีช่องโหว่ที่ชัดเจนในแบบจำลองความเป็นส่วนตัว: จำนวนเงินธุรกรรมยังคงมองเห็นได้อย่างสมบูรณ์บนบล็อกเชน ใครก็ตามสามารถเห็นได้ว่ากำลังโอน XMR จำนวนเท่าไหร่ ซึ่งเปิดช่องให้มีการวิเคราะห์ยอดคงเหลือและการโจมตีการเปิดเผยตัวตนอย่างซับซ้อน Ring Confidential Transactions หรือที่รู้จักกันในชื่อ RingCT ได้เปลี่ยนแปลงทุกอย่างนี้

RingCT ถูกนำมาใช้งานในเดือนมกราคม 2560 พร้อมกับการ hard fork ของ Monero ที่บล็อก 1,220,516 และกลายเป็นข้อบังคับสำหรับทุกธุรกรรม ทำให้มั่นใจได้ว่าจำนวนเงินที่โอนในทุกธุรกรรม Monero ถูกซ่อนไว้ด้วยการเข้ารหัสอย่างแท้จริง บทความนี้ให้การสำรวจด้านเทคนิคอย่างละเอียดว่า RingCT ทำงานอย่างไร ทำไมมันถึงสำคัญ และการอัปเกรดที่ตามมาอย่าง Bulletproofs+ ได้ปรับปรุงระบบอย่างไร

ทำไมการซ่อนจำนวนเงินธุรกรรมจึงสำคัญ

ก่อน RingCT ความเป็นส่วนตัวของ Monero อาศัยสองเสาหลัก: ring signatures ทำให้ไม่ชัดเจนว่า output ใดเป็นการใช้จ่ายจริง และ stealth addresses ทำให้มั่นใจว่าไม่มีสองธุรกรรมที่ส่งไปยังผู้รับคนเดียวกันจะใช้ที่อยู่ on-chain เดียวกัน แต่จำนวนเงินที่มองเห็นได้สร้างช่องโหว่ร้ายแรง:

  • การวิเคราะห์ยอดคงเหลือ: หากผู้สังเกตการณ์สามารถเห็นจำนวนเงิน พวกเขาสามารถจับคู่ inputs และ outputs ข้ามธุรกรรม ค่อยๆ สร้างภาพของการไหลของเงินแม้จะไม่รู้ที่อยู่
  • การระบุตัวตนด้วยจำนวนเงิน: จำนวนเงินที่ไม่ซ้ำกันหรือผิดปกติ (เช่น 7.31849 XMR) สามารถเชื่อมโยงผู้ส่งกับผู้รับได้หากทั้งสองฝ่ายรู้จำนวนเงินนั้น
  • การลดประสิทธิภาพของ ring signatures: เมื่อจำนวนเงินมองเห็นได้ decoy outputs ในวงต้องมีจำนวนเงินตรงกับ output จริง ทำให้ anonymity set ลดลงอย่างมากและทำให้การตัดออกทางสถิติเป็นไปได้
  • การสอดแนมทางธุรกิจ: ธุรกิจที่รับชำระเงินสามารถถูกสร้างโปรไฟล์โดยคู่แข่งที่สังเกตจำนวนเงินที่เข้ามา

ด้วย RingCT ช่องโหว่การโจมตีทั้งหมดเหล่านี้ถูกทำให้เป็นกลาง ฟิลด์จำนวนเงินถูกแทนที่ด้วย cryptographic commitment ที่พิสูจน์ความถูกต้องทางคณิตศาสตร์โดยไม่เปิดเผยค่าที่แท้จริง

Pedersen Commitments: รากฐานทางคณิตศาสตร์

หัวใจของ RingCT คือ Pedersen commitment scheme ซึ่งเป็น cryptographic primitive ที่ให้ใครบางคนผูกมัดกับค่าโดยไม่เปิดเผยมัน ในขณะที่ยังคงเปิดใช้การตรวจสอบทางคณิตศาสตร์ได้

Pedersen commitment สำหรับค่า v มีรูปแบบ:

C = vG + rH

ที่นี่ G และ H คือ generator points บนเส้นโค้งวงรี (ในกรณีของ Monero คือเส้นโค้ง Ed25519) v คือจำนวนเงินธุรกรรม และ r คือ blinding factor สุ่มที่รู้เฉพาะผู้เข้าร่วมเท่านั้น คุณสมบัติที่สำคัญคือเมื่อให้แค่ C มันไม่สามารถคำนวณหา v หรือ r ได้เลย ปัญหา discrete logarithm รับประกันความปลอดภัยนี้

คุณสมบัติ Homomorphic

Pedersen commitments มีคุณสมบัติที่น่าทึ่ง: มัน additively homomorphic หมายความว่าหากคุณบวก commitments สองอันเข้าด้วยกัน ผลลัพธ์คือ commitment ที่ถูกต้องสำหรับผลรวมของค่าเดิม โดยเฉพาะ:

C1 + C2 = (v1 + v2)G + (r1 + r2)H

คุณสมบัตินี้คือสิ่งที่ทำให้ confidential transactions เป็นไปได้โดยไม่เปิดเผยจำนวนเงิน นักขุดและโหนดสามารถตรวจสอบว่าผลรวมของ input commitments เท่ากับผลรวมของ output commitments (บวกกับ commitment ค่าธรรมเนียม) ยืนยันว่าไม่มีการสร้าง XMR จากอากาศ โดยไม่เคยเห็นจำนวนเงินจริงเลย

สำหรับธุรกรรมที่ถูกต้อง สิ่งต่อไปนี้ต้องเป็นจริง: commitments ของ inputs ทั้งหมดลบด้วย commitments ของ outputs ทั้งหมดลบด้วย commitment ของค่าธรรมเนียมต้องเท่ากับศูนย์ หากสมการนี้สมดุล ธุรกรรมได้รับการพิสูจน์ทางคณิตศาสตร์ว่าอนุรักษ์มูลค่า

Range Proofs: ป้องกันจำนวนเงินติดลบ

มีปัญหาที่ละเอียดอ่อนแต่สำคัญมากกับ Pedersen commitments เพียงอย่างเดียว เนื่องจาก commitment scheme ทำงานบน mathematical group ตัวเลขติดลบจึงถูกต้อง ผู้โจมตีสามารถสร้างธุรกรรมที่มี output ของ -1000 XMR และ output อีกอันของ +1000 XMR บวกกับจำนวน input Commitments จะยังคงสมดุล แต่ผู้โจมตีจะสร้าง XMR ขึ้นมาจากความว่างเปล่าได้

เพื่อป้องกันสิ่งนี้ ทุกธุรกรรม RingCT รวมถึง range proof สำหรับแต่ละ output Range proof คือ zero-knowledge proof ที่แสดงว่าค่าที่ผูกมัดอยู่ในช่วงที่กำหนด (โดยทั่วไป 0 ถึง 2^64 - 1) โดยไม่เปิดเผยค่านั้นเอง

Borromean Range Proofs ดั้งเดิม

การนำ RingCT ไปใช้งานแบบเดิมใช้ Borromean ring signatures เพื่อสร้าง range proofs แต่ละบิตของจำนวนเงินที่ผูกมัดต้องการ ring signature เป็นของตัวเอง ส่งผลให้ขนาด proof ขยายเป็นเส้นตรงตามจำนวนบิต สำหรับ 64-bit range proof หมายถึง 64 ring signatures ต่อ output แม้จะถูกต้องทางการเข้ารหัส แต่ proofs เหล่านี้มีขนาดใหญ่ ประมาณ 6 KB ต่อ output ทำให้ธุรกรรมหนักขึ้นอย่างมีนัยสำคัญ

Bulletproofs: การปรับปรุงครั้งแรกที่สำคัญ

ในเดือนตุลาคม 2561 Monero ได้นำ Bulletproofs มาใช้ ซึ่งเป็นความก้าวหน้าในเทคโนโลยี range proof ที่พัฒนาโดย Benedikt Bünz และเพื่อนร่วมงานที่ Stanford Bulletproofs เป็นประเภทของ non-interactive zero-knowledge proof ที่มีการขยายขนาดแบบ logarithmic แทนที่จะเป็น linear ทำให้ขนาด range proof ลดลงประมาณ 80% นำ range proofs ของธุรกรรมสอง output ทั่วไปจาก ~13 KB ลงมาเหลือ ~2.5 KB

Bulletproofs ยังแนะนำ batch verification ซึ่งอนุญาตให้ range proofs หลายตัวภายในธุรกรรมเดียวถูกรวมเข้าด้วยกัน ธุรกรรมที่มีสอง outputs ไม่ต้องการขนาด proof สองเท่าของธุรกรรม output เดียว; proof ที่รวมกันใหญ่กว่าเพียงเล็กน้อย ทำให้ธุรกรรม Monero ถูกและตรวจสอบได้เร็วกว่าอย่างมีนัยสำคัญ

Bulletproofs+: การปรับปรุงเพิ่มเติม

ในเดือนสิงหาคม 2565 พร้อมกับ Monero hard fork ที่แนะนำ tail emission ด้วย Bulletproofs+ ได้แทนที่ Bulletproofs เดิม scheme ที่อัปเดตนี้ อิงจากงานวิจัยของ Heewon Chung และเพื่อนร่วมงาน ได้ลดขนาดเพิ่มเติมประมาณ 5-7% และปรับปรุงความเร็วการตรวจสอบ แม้ว่าการปรับปรุงจะเจียมเนื้อเจียมตัวกว่าการอัปเกรด Bulletproofs ดั้งเดิม แต่ก็แสดงให้เห็นถึงการเพิ่มประสิทธิภาพโปรโตคอลอย่างต่อเนื่อง

ก่อน RingCT vs หลัง RingCT: การเปรียบเทียบความเป็นส่วนตัว

การเข้าใจความแตกต่างระหว่าง Monero ก่อน RingCT และหลัง RingCT เผยให้เห็นว่าการอัปเกรดนี้ปฏิวัติอย่างไร:

  • การมองเห็นจำนวนเงิน: ธุรกรรมก่อน RingCT เปิดเผยจำนวนที่แน่นอน on-chain หลัง RingCT จำนวนทั้งหมดถูกซ่อนด้วย Pedersen commitments
  • ความยืดหยุ่น ring signature: ก่อน RingCT decoys ต้องเป็น outputs ที่มีมูลค่าเดียวกัน ทำให้ anonymity set จำกัดมาก หลัง RingCT output ใดๆ ก็สามารถเป็น decoy ได้โดยไม่คำนึงถึงจำนวนที่ซ่อนอยู่
  • โครงสร้างธุรกรรม: ธุรกรรมก่อน RingCT มักต้องการ inputs และ outputs หลายตัวที่จับคู่ denomination สร้างรูปแบบที่ระบุตัวตนได้ ธุรกรรมหลัง RingCT มีโครงสร้างสม่ำเสมอโดยไม่คำนึงถึงจำนวน
  • การต้านทานการวิเคราะห์บล็อกเชน: การรวมกันของจำนวนที่ซ่อนกับ ring signatures และ stealth addresses ได้ปิดช่องทางสุดท้ายที่สำคัญสำหรับการเฝ้าระวังบล็อกเชนแบบ passive

ควรสังเกตว่า outputs ก่อน RingCT ยังคงมีอยู่บนบล็อกเชน Monero แม้ว่าไม่สามารถสร้างในธุรกรรมใหม่ได้ แต่ outputs เก่าที่ไม่ได้ใช้จากก่อนบล็อก 1,220,516 ในทางทฤษฎีอาจยังถูกใช้จ่ายได้ ชุมชน Monero ได้หารือเกี่ยวกับแนวทางต่างๆ เพื่อบรรเทาความเสี่ยงด้านความเป็นส่วนตัวที่เหลืออยู่จาก legacy outputs เหล่านี้

RingCT ทำงานร่วมกับ Ring Signatures อย่างไร

RingCT ไม่ใช่ฟีเจอร์แบบ standalone; มันทำงานร่วมกับ ring signatures ของ Monero เพื่อให้ความเป็นส่วนตัวของธุรกรรมอย่างครบถ้วน เมื่อผู้ใช้สร้างธุรกรรม ring signature พิสูจน์ว่า outputs ที่อ้างถึงอย่างใดอย่างหนึ่งกำลังถูกใช้จ่ายโดยไม่เปิดเผยว่าตัวไหน RingCT ขยายสิ่งนี้โดยพิสูจน์ว่าจำนวนที่ซ่อนอยู่สมดุลโดยไม่เปิดเผยมัน

นวัตกรรมสำคัญคือ scheme MLSAG (multilayered linkable spontaneous anonymous group) ที่ใช้ใน RingCT ดั้งเดิม ซึ่งต่อมาได้รับการอัปเกรดเป็น CLSAG (Concise Linkable Spontaneous Anonymous Group) ในปี 2563 CLSAG ลดขนาด signature ประมาณ 25% ในขณะที่รักษาการรับประกันความปลอดภัยเดิม ทั้งสอง scheme รวม amount commitments เข้ากับโครงสร้าง ring signature โดยตรง สร้าง proof แบบรวมของทั้งความไม่เปิดเผยตัวตนของผู้ส่งและความลับของจำนวนเงิน

มองไปข้างหน้า: FCMP++ และอื่นๆ

ชุมชนนักพัฒนา Monero ยังคงก้าวหน้าในรากฐานทางการเข้ารหัส โปรโตคอล Full Chain Membership Proofs (FCMP++) ที่กำลังจะมาแทนที่ ring signatures ทั้งหมด ซึ่งจะอนุญาตให้ทุก output ธุรกรรมบนบล็อกเชนทำหน้าที่เป็น decoy ที่เป็นไปได้ เมื่อรวมกับจำนวนที่ซ่อนของ RingCT สิ่งนี้จะให้ anonymity set เท่ากับชุด outputs Monero ทั้งหมดแทนที่จะเป็นขนาด ring ปัจจุบัน 16

Pedersen commitments และ range proofs ของ RingCT จะยังคงเป็น amount-hiding layer แม้ใน FCMP++ ความสวยงามทางคณิตศาสตร์ของ commitment scheme หมายความว่ามันยังคงมีประสิทธิภาพและปลอดภัยโดยไม่คำนึงถึงการเปลี่ยนแปลงระบบ membership proof ที่อยู่เหนือมัน

ความหมายเชิงปฏิบัติสำหรับผู้ใช้

สำหรับผู้ใช้ทั่วไปของ MoneroSwapper และบริการ Monero อื่นๆ RingCT ทำงานอยู่เบื้องหลังทั้งหมด ทุกธุรกรรมที่คุณส่งหรือรับได้รับประโยชน์จากจำนวนที่ซ่อนโดยอัตโนมัติ ไม่มีอะไรต้องกำหนดค่า ไม่มีความเป็นส่วนตัวเสริมที่ต้องเปิดใช้ และไม่มีทางที่จะส่งธุรกรรมแบบโปร่งใสโดยไม่ตั้งใจ ความเป็นส่วนตัวแบบบังคับโดยค่าเริ่มต้นนี้คือหลักการออกแบบหลักที่แยกแยะ Monero จากสกุลเงินดิจิทัลที่ฟีเจอร์ความเป็นส่วนตัวเป็นทางเลือก

เมื่อคุณแลกเปลี่ยน Bitcoin, Ethereum หรือสกุลเงินดิจิทัลอื่นๆ เป็น Monero ผ่าน MoneroSwapper ในขณะที่ XMR ของคุณมาถึงกระเป๋าเงิน จำนวนเงินจะถูกซ่อนจากผู้สังเกตการณ์ภายนอกทั้งหมด ไม่มีใครที่ตรวจสอบบล็อกเชนสามารถระบุได้ว่าคุณได้รับเท่าไหร่ ยอดคงเหลือของคุณเท่าไหร่ หรือคุณใช้เงินอย่างไรต่อไป

RingCT และกฎหมายในประเทศไทย

ในประเทศไทย สำนักงานคณะกรรมการกำกับหลักทรัพย์และตลาดหลักทรัพย์ (ก.ล.ต.) และธนาคารแห่งประเทศไทย (ธปท.) กำกับดูแลการใช้งานสกุลเงินดิจิทัล ภายใต้กรอบกฎหมายปัจจุบัน Monero ถูกจัดประเภทเป็นสินทรัพย์ดิจิทัลและอยู่ภายใต้ข้อบังคับ พ.ร.ก. สินทรัพย์ดิจิทัล พ.ศ. 2561 ผู้ใช้ควรศึกษาและปฏิบัติตามข้อกำหนดของ ก.ล.ต. เกี่ยวกับการรายงานและการเก็บภาษีในส่วนที่เกี่ยวข้อง เทคโนโลยี RingCT ช่วยให้ธุรกรรม Monero เป็นส่วนตัวในระดับโปรโตคอล แต่ผู้ใช้ยังต้องรับผิดชอบด้านกฎหมายตามที่ใช้บังคับในเขตอำนาจของตน

ความปลอดภัยด้านเทคนิคและขีดจำกัดของ RingCT

แม้ว่า RingCT จะมีความแข็งแกร่งด้านความเป็นส่วนตัวอย่างโดดเด่น แต่ก็มีขีดจำกัดและสมมติฐานเกี่ยวกับความปลอดภัยที่ควรทำความเข้าใจ:

  • สมมติฐาน Discrete Logarithm: ความปลอดภัยของ Pedersen commitments ขึ้นอยู่กับความยากของปัญหา discrete logarithm บนเส้นโค้งวงรี Ed25519 หากนักวิทยาศาสตร์ค้นพบอัลกอริทึมที่ทำลาย discrete logarithm ได้ (เช่น ด้วยคอมพิวเตอร์ควอนตัมขนาดใหญ่เพียงพอ) RingCT จะถูกทำลาย นี่คือสาเหตุที่ชุมชน Monero ติดตามการพัฒนาการเข้ารหัสหลังควอนตัมอย่างใกล้ชิด
  • ความลับของ Blinding Factor: หาก blinding factor r รั่วไหล ใครก็ตามสามารถระบุจำนวนเงินธุรกรรมได้ การใช้งาน Monero ที่ดีต้องทำให้แน่ใจว่า r ถูกสร้างด้วยความสุ่มที่เพียงพอและจัดเก็บอย่างปลอดภัย
  • ข้อมูล Off-chain: หาก sender และ receiver แลกเปลี่ยนข้อมูลนอกบล็อกเชน (เช่น ผ่านการสื่อสารที่ไม่ปลอดภัย) บุคคลที่สามอาจเรียนรู้จำนวนเงินได้แม้จะซ่อนไว้บนบล็อกเชน
  • Transaction Timing: แม้ว่าจำนวนเงินจะซ่อนไว้ แต่รูปแบบ timing ของธุรกรรมยังสามารถให้ข้อมูล metadata บางส่วนแก่ผู้สังเกตการณ์ที่มีความซับซ้อนได้

วิธีทดสอบและตรวจสอบ RingCT ด้วยตัวเอง

สำหรับผู้ที่ต้องการตรวจสอบการทำงานของ RingCT อย่างเป็นอิสระ มีเครื่องมือหลายอย่างให้ใช้:

  • Monero Blockchain Explorer: เยี่ยมชม xmrchain.net หรือ exploremonero.com และดูธุรกรรม Monero ใดๆ คุณจะเห็นว่าจำนวนเงินแสดงเป็น "?" หรือซ่อนไว้ สังเกตว่า commitments และ range proofs แสดงอยู่
  • Monero CLI Wallet: ใช้คำสั่ง show_transfer เพื่อดูรายละเอียดธุรกรรมในกระเป๋าเงินของคุณ ซึ่งรวมถึง key images และ commitment data
  • monero-python Library: นักพัฒนาสามารถใช้ไลบรารี Python นี้เพื่อโต้ตอบกับบล็อกเชน Monero และตรวจสอบ RingCT โดยตรงผ่านโค้ด
  • Source Code: โค้ดต้นฉบับทั้งหมดของ Monero เปิดเผยบน GitHub นักพัฒนาสามารถตรวจสอบการใช้งาน RingCT ได้ในไฟล์ src/ringct/

การเปรียบเทียบ RingCT กับโปรโตคอล Privacy อื่นๆ

เพื่อให้เห็นบริบท มาเปรียบเทียบ RingCT กับแนวทาง confidential transactions อื่นๆ ในระบบนิเวศสกุลเงินดิจิทัล:

  • Zcash (zk-SNARKs): Zcash ใช้ zk-SNARKs เพื่อซ่อนทั้งผู้ส่ง ผู้รับ และจำนวนเงินในธุรกรรม "shielded" อย่างไรก็ตาม ธุรกรรม shielded เป็นทางเลือก ทำให้ผู้ใช้จำนวนมากยังคงส่งธุรกรรม transparent เพื่อประหยัดค่าธรรมเนียม ทำให้ anonymity set เล็กลง ใน Monero RingCT เป็นบังคับสำหรับทุกคน
  • Mimblewimble (Grin/Beam): Mimblewimble ใช้ Pedersen commitments ที่คล้ายกันแต่ละ cut-through transactions เพื่อลดขนาดบล็อกเชน แนวทางนี้มีข้อดีในด้านการขยายขนาด แต่ลดความยืดหยุ่นของ script
  • Bitcoin Taproot/Confidential Transactions: Bitcoin มีข้อเสนอสำหรับ confidential transactions แต่ยังไม่ได้รับการนำมาใช้เนื่องจากข้อกังวลเกี่ยวกับขนาดธุรกรรมและความซับซ้อน
  • Ethereum Privacy Layers: โปรโตคอลความเป็นส่วนตัวบน Ethereum เช่น Tornado Cash อาศัยสัญญาอัจฉริยะและไม่ใช่ความเป็นส่วนตัวระดับโปรโตคอล ทำให้ susceptible ต่อการวิเคราะห์ metadata ประเภทต่างๆ

สรุป

Ring Confidential Transactions เป็นหนึ่งในนวัตกรรมความเป็นส่วนตัวที่สำคัญที่สุดในประวัติศาสตร์ของสกุลเงินดิจิทัล โดยการรวม Pedersen commitments กับ range proofs RingCT ได้แก้ปัญหาความโปร่งใสสำคัญสุดท้ายในโปรโตคอล CryptoNote ดั้งเดิม การปรับปรุงที่ตามมาผ่าน Bulletproofs และ Bulletproofs+ ทำให้ระบบมีประสิทธิภาพมากขึ้นเรื่อยๆ โดยไม่ทำให้ความปลอดภัยลดลง เมื่อ Monero ยังคงพัฒนาด้วยเทคโนโลยีอย่าง FCMP++ รากฐานของ RingCT ในเรื่องจำนวนที่ซ่อนยังคงเป็นชั้นความเป็นส่วนตัวที่ถาวรและจำเป็นในกองซ้อน privacy stack ของ Monero ทำให้ Monero ยังคงเป็นสกุลเงินดิจิทัลที่ให้ความเป็นส่วนตัวโดยค่าเริ่มต้นที่แข็งแกร่งที่สุดในตลาด

แชร์บทความนี้

บทความที่เกี่ยวข้อง

พร้อมที่จะแลกเปลี่ยนหรือยัง?

แลกเปลี่ยน Monero แบบไม่ระบุตัวตน

ไม่ต้อง KYC • ไม่ต้องสมัคร • แลกเปลี่ยนทันที

แลกเปลี่ยนเดี๋ยวนี้