การโอน Bitcoin เข้าไปยัง Address หนึ่งนั้น จำเป็นต้องใช้ Wallet ซึ่งจะเป็นซอฟต์แวร์ที่จัดการ private key การโอน และ Address ที่เป็นเป้าหมายของ Bitcoin สมมติผมได้ส่ง 1 BTC ไปยัง Address ของผู้อ่านจาก Wallet ของผม ใน Blockchain ก็จะทำการบันทึกว่าเกิดมี 1 BTC ถูกส่งไปที่ Address นี้ของคุณ
แต่คุณรู้หรือไม่ว่า ถ้าเกิดผมอยากจะส่ง Bitcoin อีก 1 BTC ไปให้คุณผู้อ่านอีกครั้งที่ Address เดิมกับที่เราใช้คราวที่แล้ว เรากำลังทำสิ่งที่เสี่ยงต่อความปลอดภัยในการใช้งาน Bitcoin
รู้จักกับคำว่า “Address Reuse”
Address Reuse เป็นศัพท์เทคนิคของการนำ Address เดิมๆมาใช้กับหลายๆ transaction หรือการโอนหลายๆครั้ง การกระทำนี้เป็นสิ่งที่ขัดกับ design ตั้งต้นของ Bitcoin ถึงแม้ว่าการทำธุรกรรมใน Blockchain จะตรวจสอบได้ว่ามีเงินจากไหนไปไหน แต่การใช้ Address แทนตัวบุคคล หรือสมุดบัญชีที่จะต้องเปิดในนามของบุคคลนั้นๆ ทำให้เรามีความเป็นส่วนตัวในการทำธุรกรรมมากขึ้น สามารถหลีกเลี่ยงการตรวจสอบจากรัฐบาล คนทั่วไป หรือผู้สงค์ร้ายได้
ในจุดนี้เราต้องแยกแยะระหว่างคำว่า Transparency ที่แปลว่า โปร่งใส ตรวจสอบได้ว่าตัวเลขจำนวน Bitcoin ใน Address นี้ถูกต้องจริงๆ กับ Anonimity หรือความนิรนาม เป็นสองเรื่องที่ Bitcoin แยกออกจากกัน
ด้วยการบันทึกรายการโอนและรับแบบกระจายตัวตาม node ต่างๆใน Blockchain สิ่งนี้ทำให้เกิด Transparency เราตรวจสอบได้ว่าเงินมาจากไหน ไม่มีการสร้างเงินมาจากอากาศ ไม่มีการเมคตัวเลขขึ้นมา แต่เราไม่สามารถบอกได้จริงๆ ว่าผู้ที่เป็นเจ้าของ Address นี้เป็นใครมาจากไหน เพราะเราไม่ได้แนบชื่อนามสกุลของคุณไปด้วย นี่คือ Anonimity หรือ Privacy ความเป็นส่วนตัว ที่ต้องเกิดจากคุณเท่านั้นที่จะยอมเปิดเผยตนเองว่านี่คือ Address ของฉัน และฉันยินดีให้คุณตรวจสอบ
ความเสี่ยงในการถูกขโมย Bitcoin
อีกจุดหนึ่งของการใช้ Address เดิมซ้ำๆ คือ การเพิ่มความเสี่ยงในถูกขโมย Bitcoin
สมมติ คุณมี Wallet ที่ประกอบไปด้วยหลากหลาย Address ทั้งหมดมี Bitcoin รวมกัน 3.21 BTC คุณกำลังจะโอนไปที่ Address A ที่เป็นของนาย Bob เป็นจำนวน 0.15 BTC
สิ่งที่เกิดขึ้นคือ Wallet จะหยิบ Bitcoin จาก Address หนึ่งที่ Wallet นี้ดูแลอยู่ ในกรณีนี้ Wallet หยิบยอด 0.2 BTC นี้ออกมา
แทนที่ จำนวน 0.15 BTC ที่เราต้องการจะถูกหักออกจากยอด 0.2 BTC แต่ความจริงแล้ว ยอดทั้ง 0.2 BTC จะถูกนำมาใช้ทั้งหมด
0.15 BTC จะวิ่งไปที่ Address A (ลูกศรแดงด้านบน)
และ ที่เหลืออีกจำนวน 0.05 BTC ที่ใน Bitcoin เราเรียกกันว่า Unspent Output หรือ Change หรือง่ายๆ คือ เงินทอน นั่นเอง จะถูกส่งไปที่ Address B ที่จะถูกสร้างขึ้นใหม่ด้วยกลไกของ Wallet ที่ทำการส่ง Bitcoin ครั้งนี้ (ลูกศรแดงด้านล่าง)
และแน่นอน เมื่อเราสร้าง Address B ใหม่เป็นของเรา เราย่อมมีกุญแจหรือ private key ไปยัง Address นี้ และนี่คือตัวอย่างของการโอน Bitcoin ที่เกิดขึ้นอย่างถูกต้องตาม design แม้กระทั่งเงินทอนก็ไม่ย้อนกลับไปที่ Address ตั้งต้นใน Wallet เพื่อความปลอดภัยของ Address นั้น
การที่มีการโอนเข้าไปที่ Address ใดก็ตาม จะทำให้ public key ซึ่งเป็นส่วนหนึ่งข้อมูลที่ใช้ในการยืนยันความถูกต้องในการโอน ถูกเปิดเผย โดยเราสามารถไปกดดูได้ในเว็บ Blockchain Explorer ทั่วไป เจ้าตัว public key นี้ ถึงแม้จะไม่ใช่ private key ที่เปรียบเสมือนกุญแจตู้เซฟของเรา แต่ public key ก็ถูกสร้างมาจาก private key มาก่อนด้วยสมการทางคณิตศาสตร์อันซับซ้อนซึ่งถูกออกแบบมาให้ ยากในการคิดย้อนกลับไปหา private key แต่ถ้าเราเอา private key มาใส่สมการนี้ จะได้ public key นี้ทันทีในเวลาไม่นาน
แล้วเรามี public key ไปทำไม?
เราเอามันไว้เพื่อยืนยันว่า private key นี้ถูกต้อง หรือกุญแจนี้สามารถไขตู้เซฟนี้ออกนั่นเอง โดยการที่เราจะบอกว่า “ถ้าจะไขตู้เซฟนี้ จะต้องใช้ private key ที่เป็นตัวเลข ‘123456’ เท่านั้นนะ” แล้วเอา private key มาเทียบกันว่าตรงไหม คนอื่นเขาก็รู้หมดว่า private key ของเราคืออะไร ก็โดนขโมยได้ เราเลยต้องมี public key ออกมาที่จะเป็นชุดตัวเลขที่สร้างได้จาก private key ที่ถูกต้องเท่านั้น ถ้า private key คือ กุญแจ public key ก็เหมือนเสียงคลิกที่บ่งบอกถึงความสำเร็จของกุญแจสามารถไขตู้เซฟได้
แล้วมันเสี่ยงในการถูกขโมยยังไง?
สำหรับในมุมมองของบางคนที่ มองโลกในแง่ร้ายหน่อย เขาอาจจะมองว่าไอ้สมการคณิตศาสตร์นี้ ถึงจะโฆษณาว่าไม่สามารถย้อนกลับไปหา private key ได้ แต่สักวันนึงมันต้องโดนจนได้แหละ อาจจะด้วย Quantum Computer ที่เป็นคอมพิวเตอร์พลังมหาศาลในอนาคตก็เป็นได้ เพราะฉะนั้น ถ้า Address นี้เคยเอาไปใช้โอน Bitcoin ออกแล้ว อย่าเอากลับไปใช้ให้คนอื่นโอนเข้า Address นี้อีก
ความเสี่ยงของความไม่เป็นส่วนตัว
คุณจะถูกตามดูได้ว่า แท้จริงแล้วคุณถือ Bitcoin ไว้เท่าไร ถ้าคุณเก็บ Bitcoin ไว้ที่ Address เดิมๆ ไม่กี่ Address หรือแย่สุดคือ Address เดียว ผมจะลองยกตัวอย่างเหตุการณ์ร้ายแรงที่อาจเกิดขึ้น
เหตุการณ์ที่ 1
- คุณเก็บ Bitcoin ไว้ใน Paper Wallet ที่มี Address เดียว
- สมมติว่าคุณมี Bitcoin ทั้งหมดในนั้น มูลค่า 1 ล้านบาท
- คุณซื้อ Bitcoin เพิ่มอีกนิดหน่อย แล้วเก็บไว้ใน Paper Wallet นี้
- คนที่ขาย Bitcoin ให้คุณ เอา Address ของคุณไป search ที่ Blockchain แล้วเจอว่าคุณมีถึง 1 ล้านบาท เก็บอยู่ใน Paper Wallet (สมมติว่า คนนั้นเห็นคุณใช้ Paper Wallet หรือเขาตั้งสมมติฐานว่าคนคนนี้ต้องเก็บ Bitcoin ทั้งหมดไว้ที่เดียวที่นี่ และน่าจะเป็น Cold Storage แน่ๆ)
- คนที่ขาย Bitcoin ให้คุณเอาเรื่องนี้ไปบอกต่อ
- มีคนพยายามจะฆ่าคุณ เพื่อเอา Paper Wallet นั้นไป
- หรือถ้าคุณรอดมาได้ วันหนึ่งบ้านคุณอาจจะโดนบุกรุก โจรบุกเข้ามาจับภรรยาและลูกคุณเป็นตัวประกัน และพวกเขารู้ด้วยว่าจะเรียกค่าไถ่เท่าไร
เหตุการณ์ที่ 2
- คุณใช้ Bitcoin Address เดียวมาตลอด ทุกคนเห็นหมดว่าคุณเอาเงินนี้ไปใช้ทำอะไรบ้าง
- เจ้าของห้องเช่าของคุณเห็นเงินเดือนคุณว่ามีเท่าไร ทีนี้เขารู้แล้วว่าจะขึ้นเงินค่าเช่าเท่าไรดี
- เจ้าของร้านแถวบ้านเห็นหมดว่าคุณเอาเงินไปใช้จ่ายอะไรบ้าง คุณถูกนินทาลับหลังกับเงินที่คุณเคยเอาไปซื้อหนังโป๊ออนไลน์ แต่แทบไม่เคยเอาไปบริจาคให้การกุศลเลย
- เพื่อนคุณขอยืมเงิน แต่คุณบอกปัดว่าไม่มีเลยช่วงนี้ แต่เพื่อนส่ง Blockchain Explorer ที่มี Address ของคุณพร้อมยอดเงินขึ้นมาเต็มจำนวน
แล้วนี่เรากำลังใช้ Address ซ้ำๆกันอยู่หรือเปล่า
ใน Wallet ส่วนใหญ่ที่เป็นซอฟต์แวร์ หรือ Online Wallet จะมีการจัดการเรื่อง Address และ private key อย่างถูกต้องตามหลักของ Bitcoin อยู่แล้ว นั่นแปลว่าใน Wallet หนึ่งไม่ได้มีแค่ Address เดียว แต่มีหลากหลาย Address และ private key และจะมีเจ้าสองอย่างนี้ใหม่เรื่อยๆ เพื่อป้องกันการ reuse นั่นเป็นเหตุผลว่าทำไมเวลาเราไปที่ Wallet ของบางเว็บไซต์เราจึงเห็นตัวเลือกในการสร้าง Address ใหม่ เพราะ Address เหล่านี้ถูกสร้างได้ไม่ยาก และมันเป็นการปลอดภัยกว่าที่จะใช้ Address ใหม่ๆเสมอ
แล้วใครบ้างที่กำลังใช้ Address ซ้ำอยู่
เหล่า Mining Pool ทั้งหลาย อาจมีความจำเป็นที่จะต้องใช้ Address ซ้ำ เพื่อเป็นการบอกแหล่งรวมของเหรียญที่ขุดได้ไว้ในที่เดียว ในจุดนี้อาจจะไม่ใช่สิ่งที่อันตรายนัก เพราะ Address นี้ไม่ได้เป็นของใครคนหนึ่ง แต่เป็นของ Pool
แต่สำหรับ Paper Wallet หรือ Wallet ใดก็ตามที่ใช้ Address เดิมๆไม่ยอมเปลี่ยนใหม่ Wallet เหล่านั้นกำลังทำให้คุณตกอยู่ในความเสี่ยงที่เราได้อธิบายไว้แล้วข้างต้น
แต่อย่าเพิ่งตกใจไป ไม่ใช่ว่าคุณต้องรีบทิ้ง Paper Wallet ของคุณ แล้วย้ายไปใช้ Wallet อื่น ความจริง Paper Wallet ก็มีความปลอดภัยในตัวของมันเองจากการที่ไม่ได้เชื่อมต่อกับอินเตอร์เน็ต การใช้ Address ซ้ำแค่ทำให้คุณสามารถถูกตามดูยอดเงินของคุณได้ หรืออาจจะโดนถอดรหัสจาก public key ไปหา private key ได้ แต่ถ้าคุณไม่แคร์ในกรณีแรก และคิดว่ากรณีที่สองนั้นไม่น่าจะเป็นไปได้ คุณก็สามารถใช้ Wallet ที่ใช้ Address ซ้ำๆเดิมๆนี้ต่อไปได้ โดยยินยอมรับความเสี่ยงที่จะเกิดขึ้น
และถ้าใครที่ใช้ Wallet อื่นๆที่ได้มาตรฐาน ไม่ว่าจะเป็น Online Wallet หรือ Hardware Wallet แล้วล่ะก็ คุณไม่จำเป็นต้องกังวลเรื่องการจัดการ Address เพราะ Wallet จะจัดการให้อย่างถูกต้องแน่นอน แต่ก็อย่าลืม เวลาต้องการจะรับ Bitcoin ที่โอนมาจากที่ไหนก็ตาม สร้าง Address ใหม่ไว้ เพื่อความปลอดภัย และความอุ่นใจของเรากันนะครับ
ที่มาของข้อมูล
https://www.cryptocoinsnews.com/bitcoin-transaction-really-works/
https://en.bitcoin.it/wiki/Transaction
https://bitcointalk.org/index.php?topic=139381.0
https://en.bitcoin.it/wiki/Address_reuse
กดคลิกเพื่อแสดงความเห็น