DDFF (1)
Gracialo679

Gracialo679

ความปลอดภัย และความเป็นส่วนตัวเบื้องต้นสำหรับผู้ใช้งานบิตคอยน์ (Basic of Security and Privacy for Bitcoin User)

HD wallet คืออะไร? มันทำงานอย่างไร? และทำไมเราจึงไม่ควรใช้ Address ซ้ำ ๆ บทความนี้เราจะมาไขข้อข้องใจของมือใหม่เหล่านี้กัน

ผู้ถือบิตคอยน์มือใหม่มักจะได้รับคำแนะนำจากรุ่นพี่ว่า ‘อย่าใช้ Address ซ้ำ’ นั่นดูเป็นคำแนะนำที่ไม่ได้เข้าใจยาก แต่เมื่อถามต่อว่าทำไมจึงไม่ควรทำอย่างนั้นกลับไม่สามารถอธิบายสั้น ๆ ง่าย ๆ ได้เลย และในบทความนี้เราจะพยายามอธิบายเหตุผลที่อยู่เบื้องหลังคำอธิบายนี้กัน

ทำไมเราจึงไม่ควรใช้ Address ซ้ำ?

ในยุคเริ่มแรก เราใช้เพียง Private Key และ Public Key โดย Private Pey เป็นตัวเลขที่ถูกสุ่มมา ส่วน Public Key เกิดจากการคำนวณมาจาก Private Key อีกทีหนึ่ง

กระบวนการคำนวณหา Public Key จาก Private Key นี้เป็นกระบวนการที่ย้อนกลับไม่ได้ หรือที่เรียกว่า Trapdoor Function ซึ่งการแปลง Private Key เป็น Public Key ในระบบของบิตคอยน์นี้เราใช้กระบวนการที่มีชื่อว่า ECDSA (Elliptic Curve Digital Signature Algorithm)

ในยุคแรกการโอนเงินให้กันในระบบบิตคอยน์ คือ การล็อคบิตคอยน์ (UTXOไว้ด้วย Public Key ตรง ๆ แต่ความน่ากังวลก็คือสิ่งที่กั้นไม่ให้ใครสามารถคำนวนย้อนกลับจาก Public Key มาหา Private Key นั้นมีเพียง ECDSA ขวางไว้เท่านั้น แม้ว่าตัว ECDSA เองในวันนี้จะเป็นกระบวนการที่ไม่สามารถทำย้อนกลับได้ แต่ในอนาคตเมื่อเทคโนโลยีพัฒนาขึ้นไปอะไร ๆ ก็ไม่แน่นอน ดังนั้นนักพัฒนาบิตคอยน์จึงพยายามเพิ่มความมั่นใจว่าจะไม่มีใครสามารถคำนวณย้อนหา Private Key ได้ด้วยการเพิ่มสิ่งที่เรียกว่า Address เข้าไปอีกชั้นหนึ่งซึ่งคำนวณต่อมาจาก Public Key อีกที

โดยที่การแปลง Public Key เป็น Address ก็เป็น Trapdoor Function เช่นเดียวกับ ECDSA แต่ว่าซับซ้อนแน่นหนากว่ากันมาก ได้แก่การนำไป hash ด้วย SHA256 และ RIPMD160 จากนั้นก็นำไปทำ checksum ด้วย SHA256 อีก 2 รอบ แล้วก็เข้ารหัสด้วยมาตรฐาน BASE58 ก็จะได้เป็น Bitcoin Address หรือเรียกได้อีกอย่างหนึ่งว่า Public Key Hash เพราะมันคือการนำ Public Key มา hash นั่นเอง

หากเปรียบเทียบ Trapdoor Function เป็นกำแพง ให้ลองจินตนาการถึงกำแพง 2 ชั้น ชั้นแรกคือ ECDSA ซึ่งบางหน่อยแต่ก็ถือว่ายังปลอดภัย ณ ปัจจุบัน เอาไว้กั้นระหว่าง Private Key และ Public Key ชั้นที่ 2 จะหนาขึ้นไปอีกพอสมควร กั้นระหว่าง Public Key ไปจนถึง Address

แต่เมื่อคุณโอน Bitcoin ออกจาก Address ใด ๆ ในกระบวนการโอนนั้นคุณจะต้องเปิดเผย Public Key ต่อเครือข่าย เพื่อให้โหนดต่าง ๆ สามารถ ยืนยันว่า Private Key ของคุณสามารถใช้เข้าถึงเงินได้จริง โดยการตรวจสอบความเข้ากันได้ของ Private Key กับ Public Key ที่คุณอ้างว่าเป็นเจ้าของ

และนั่นทำให้เมื่อ Address ไหนก็ตามที่เคยมีการโอนออกแล้ว จะเหลือแค่กำแพงบาง ๆ อีกชั้นเดียวเท่านั้นที่คอยปกป้อง Private Key เอาไว้ (แม้ตอนนี้ ECDSA จะยังปลอดภัยดีอยู่ แต่การหลบอยู่หลังกำแพงสองชั้น อย่างไรเสียก็อุ่นใจกว่าการมีกำแพงแค่ชั้นเดียว)

ดังนั้นเราจึง “ไม่ควรใช้ Address ที่เคยมีการโอน Bitcoin ออกมาแล้ว รับ Bitcoin อีก” (และเป็นสิ่งที่คุณควรทำเอาไว้ให้เป็นนิสัย เมื่อวันนึงที่ ECDSA อาจไม่ปลอดภัยอีกต่อไป คุณก็ยังมีกำแพงชั้น 2 ที่สามารถต้านทาน Titan ได้อยู่)

แต่ถ้า Address นั้นเป็น Address ที่เอาไว้รับ และเก็บอย่างเดียวในระยะยาวโดยยังไม่เคยโอนออกเลย คุณก็สามารถใช้ Address นั้นรับเงินซ้ำได้เรื่อย ๆ (เพียงแต่ก็อาจต้องแลกกับการเสีย Privacy เล็กน้อย)

เรียนรู้เพิ่มเติมได้ที่  CDC Bitcoin Talk #53 : How does it work? Part II wallets and keys นาทีที่ 36:14

ดังนั้นคุณคงพอนึกภาพออกว่า ในการใช้งานบิตคอยน์จริง ผู้ใช้งานบิตคอยน์ก็จะต้องมีชุดของ Private Key – Public Key – Address จำนวนมากที่ต้องจดเก็บไว้ให้ดี หากทุกครั้งที่เราต้องการใช้ Address ใหม่เราจะต้องสร้าง Private Key ขึ้นมาใหม่ด้วยการสุ่มซึ่งไม่มีความเกี่ยวข้องอะไรเลยกับ Private Key อื่น ๆ ที่เรามีอยู่ และต้องจดหรือแบ็คอัพ Private Key ทั้งหมดที่มีไว้ การใช้งานบิตคอยน์คงยุ่งยากมากและเสียงมากที่เราจะทำ Private Key ของเราหายเสียเอง

“มันจะเป็นไปได้ไหมที่เราจะจด Key แค่ชุดเดียวแต่สามารถสร้าง Address ใหม่ออกมารับเงินได้ไม่รู้จบ?”

คำถามนั้นคือที่มาของการคิดค้น Hierarchical Deterministic Wallet (HD wallet) ซึ่งเราจะมาทำความรู้จักกันต่อไป

Hierarchical Deterministic Wallet (HD wallet)

ชีวิตของผู้ใช้งานบิตคอยน์คงจะง่ายขึ้นมาก ถ้าเราสามารถจด Key แค่ชุดเดียวแล้วสร้าง Address ใหม่สำหรับรับเงินได้ไม่รู้จบ แทนที่จะต้องจด Private Key ทุกอันที่สุ่มสร้างขึ้นมา หรือแบ็คอัพไฟล์ wallet.dat ทุกครั้งที่สร้าง Address ใหม่

ปัจจุบันปัญหานี้ถูกแก้ไขแล้ว คือวอลเล็ตแบบปัจจุบันที่เราใช้งานกันซึ่งมันสามารถสร้าง Address ให้เราใช้งานได้เกินพอ โดยจด Recovery Seed Backup เพียงชุดเดียวเท่านั้น

วอลเล็ตแบบนี้เรียกว่า Hierarchical Deterministic Wallet หรือ HD wallet

แต่ก่อนที่จะพยายามเข้าใจ HD wallet เรามาทำความเข้าใจ wallet ลักษณะอื่น ๆ ก่อนที่จะมาเป็น HD wallet ดีกว่า

1. Conventional Wallet

Wallet ที่ Bitcoin Address – Private Key (Keypair) แต่ละตัวมีอิสระต่อกัน ไม่มีความเกี่ยวข้องใด ๆ กัน เป็นการ Random มาล้วน ๆ

เราต้องคอย Backup ไฟล์ wallet.dat เรื่อย ๆ เพราะ Keypair อาจจะถูกสร้างเพิ่มขึ้นมาเมื่อไหร่ก็ได้ หากลืม Backup แล้วทำอุปกรณ์หาย Bitcoin ก็สูญหายทั้งหมด

2. Sequential Deterministic Wallet (SD Wallet)

เป็นการสร้าง Private Key ขึ้นมาจาก String (Seed) ตัวหนึ่ง แล้วบวกด้วยตัวเลขไปเรื่อย ๆ Bitcoin Address ก็ถูกสร้างจาก Private Key แต่ละตัวเหมือนเดิมและสุดท้ายก็ถูกวางใส่เป็นคู่ ๆ ไว้ใน Wallet 

ขอแค่ Backup เจ้า Seed ที่เอาไว้สร้าง Private Key ไว้ จากนั้นถึงจะทำคอมพิวเตอร์หาย ทำไฟล์ wallet.dat หายก็ไม่กังวลละ เพราะแค่มี Seed ก็สามารถสร้าง Wallet ขึ้นมาใหม่ได้แล้ว

เนื่องจาก Seed ที่ใช้งานใน SD wallet เป็น String ที่ค่อนข้างยาว ผู้ใช้งานบางคนก็อาจจะจดผิดๆถูกๆ และมาพบที่หลังว่าที่จดมานั้นผิดได้ ซึ่งก็ทำให้อาจจะต้องสูญเสีย Bitcoin ไปทั้งหมดจากการที่จด Seed ผิด และด้วยการที่มันใช้งานยาก จึงทำให้เกิดข้อตกลงที่จะทำให้การใช้งาน Wallet ง่ายมากขึ้นและเป็นมาตรฐานเดียวกันขึ้นมาภายหลัง

3. Hierarchical Deterministic Wallet

HD wallet อยู่ในกลุ่ม Deterministic Wallet คือ Keypair ทั้งหลายจะถูกสร้างมาจาก Seed เพียงหนึ่งเดียว

Seed ใน HD Wallet จะไม่ใช่แค่ตัวเลขสุ่มง่าย ๆ เหมือนกับ SD Wallet แต่จะถูก Generate ขึ้นมาเป็นเลขขนาด 128, 256 bits และจะถูกนำมาสร้างเป็น Master Keypair (Private Key / Public Key)

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

เพียงแค่มี Master Seed หรือ Master Keypair ก็สามารถกู้ Wallet กลับมาได้เสมอ ต่อให้มี Account และ Address งอกเพิ่มขึ้นมาใหม่มากมายเท่าไรก็ตาม

Public Key และ Address ก็สามารถงอกเป็น Tree จาก Master Keypair เราจึงสามารถสร้าง Bitcoin Address เพิ่มขึ้นเรื่อย ๆ

ฟังดูยากใช่ไหม? แต่จริง ๆ แล้วกระบวนการทุกอย่างนี้รันอยู่ใน Hardware Wallet ด้วยมาตรฐาน BIP32, BIP39 และ BIP44 และมันถูกพัฒนามาให้ใช้งานได้ง่ายกว่า Wallet อีก 2 ตัวในข้างต้นอย่างมาก

ปัจจุบัน Hardware Wallet ที่เราซื้อใช้กันทุกวันนี้ ไม่ว่าจะแบรนด์ใด ก็ล้วนเป็น HD wallet มาตรฐานเดียวกันทั้งสิ้น

สำหรับผู้ที่ต้องการเก็บรักษา Bitcoin เอาไว้ใช้ในระยะยาว การเลือกใช้ Hardware Wallet สามารถตอบโจทย์ตรงนี้ได้ โดย Hardware Wallet เหล่านี้ไม่จำเป็นต้องมีการเชื่อมต่อกับอินเทอร์เน็ตตลอดเวลา ทำให้ปลอดภัยจากการถูกแฮ๊ก

ซึ่ง Wallet ที่ไม่มีการเชื่อมต่อกับอินเทอร์เน็ตตลอดเวลา เราจะเรียกว่า Cold Wallet ย้ำอีกครั้งว่า Hardware Wallet จะไม่ได้เก็บ Bitcoin เอาไว้ในอุปกรณ์แต่อย่างใด แต่จะเก็บรักษา Private Key เอาไว้

เอาล่ะผมจะไม่ย้อนไปถึงการได้มาซึ่ง Seed นะ ไปหาอ่านได้จากบทความเก่า

การที่จะเก็บ Bitcoin ด้วยตัวเอง ก็มีหลายอย่างต้องทำ และหลายอย่างต้องหลีกเลี่ยง ในการจัดการ Seed ด้วย Hardware Wallet ก็มีสิ่งที่คุณ “พึงระวัง” เอาไว้ เช่น

  • ห้ามให้ Recovery Seed กับใคร แม้แต่ทางผู้ผลิต Hardware Wallet เองก็จะไม่มีทางขอ Recovery Seed จากเรา
  • การป้อน Recovery Seed จะป้อนที่ตัว Hardware Wallet เท่านั้น จะไม่มี และไม่ควร ให้กรอก Seed ใน App, Browser หรือพิมพ์ผ่าน Keyboard คอมพิวเตอร์
  • ควรเลือกใช้เฉพาะ Hardware Wallet ที่ผ่าน Proof of Time มานานพอเท่านั้นในการใช้เก็บฺ Bitcoin ของคุณระยะยาว

เพื่อเปรียบเทียบให้เห็นภาพ ขอให้ทุกท่านคิดภาพตาม ดังนี้

Hardware Wallet = พวงกุญแจ

Seed = ที่ปั้มกุญแจ Seed แต่ละชุด ปั้มกุญแจได้คนละชุด ใช้แทนกันไม่ได้ เป็นส่วนที่สำคัญที่สุด

Private Key = ลูกกุญแจ ที่ใช้ Seed ปั้มขึ้นมา และใช้ในการไขเปิดกล่องที่คู่กันได้เท่านั้น

เราสามารถเปลี่ยนพวงกุญแจได้เสมอ แต่ที่ปั้มกุญแจซึ่งมีไว้สำหรับปั้มลูกกุญแจ  ที่ปั้มกุญแจที่ต่างกันจะนำไปสู่ลูกกุญแจที่แตกต่างกันอย่างสิ้นเชิง ซึ่งลูกกุญแจเหล่านี้จะถูกนำไปใช้งานกับ Wallet ของเรา

การเรียนรู้หลักการทำงานของ Wallet ดูเหมือนจะยุ่งยาก แต่เป็นเรื่องจำเป็นสำหรับคนที่ต้องการจะเก็บออมบิตคอยน์ในระยะยาว เพราะถ้านั่นคือเป้าหมายของเรา คงเป็นความคิดที่โง่มากหากจะฝากการเก็บออมของเราเอาไว้กับตัวกลางอย่าง Exchange เพราะ Bitcoin ที่เราซื้อและเก็บไว้ใน Exchange แท้จริงแล้วมันจะยังไม่ใช่ของเราหากเรายังไม่ได้โอนออกมาเก็บไว้ด้วยตัวเอง มันเป็นเพียงแค่ Balance เท่านั้น

ยอด Bitcoin ที่เราเห็นในกระดานจริง ๆ มันอาจเป็นแค่ตัวเลขกระทบยอดใน Account ของเรา ใน Exchange ที่เรากำลังใช้งานอยู่ ซึ่งถ้าหากมองในแง่ร้ายหน่อย ยอดนั้นอาจเป็นแค่ตัวเลขที่ไม่มี Bitcoin อยู่จริง ๆ ก็ได้

มันจึงอาจเพียงเป็นแค่คำมั่นสัญญาระหว่างคุณและ Exhange ซึ่ง Exchange ก็อาจจะผิดสัญญาที่ให้ไว้กับคุณได้เสมอ อย่างที่การล่มสลายของหลาย ๆ Exchange ก็ได้แสดงตัวอย่างให้คุณเห็นมาแล้ว

และมันยังสามารถที่จะถูกยึด อายัด ได้ตลอดเวลา โดยเจ้าหน้าที่ของรัฐ การที่เราจะเป็นเจ้าของ Bitcoin โดยแท้จริงนั้นคือคุณต้องถือและรักษา Private Key ที่จะเข้าถึง Bitcoin นั้นได้ ดั่งวลี 

"Not your keys, Not your coins"

Benjamin Franklin เคยกล่าวไว้ว่า :

ผู้ยอมสละเสรีภาพ เพื่อซื้อความปลอดภัยชั่วคราวเพียงเล็กน้อย ไม่คู่ควรได้รับทั้งเสรีภาพและความปลอดภัย

ส่วนผู้เขียนนั้นขอกล่าวว่า :

ผู้ใดที่ยอมเสียสละ Privacy เพื่อแลกกับความสะดวกชั่วคราวเพียงเล็กน้อย ผู้นั้นไม่ควรคู่ทั้ง Privacy, ความสะดวกและก็… Bitcoin ที่คุณมี

มันจึงอาจเพียงเป็นแค่คำมั่นสัญญาระหว่างคุณและ Exhange ซึ่ง Exchange ก็อาจจะผิดสัญญาที่ให้ไว้กับคุณได้เสมอ อย่างที่การล่มสลายของหลาย ๆ Exchange ก็ได้แสดงตัวอย่างให้คุณเห็นมาแล้ว

เกล็ดเล็กเกล็ดน้อย :: รู้หรือไม่ว่า 95% ของ Bitcoin ในทุกวันนี้ล้วนผ่านการ KYC มาแล้ว.. ถ้าคุณได้ Bitcoin ที่ผ่าน KYC มา ก็ง่ายที่จะติดตาม Bitcoin นั้น ๆ ซึ่งเชื่อมโยงกับ Identity ของคุณ และที่แย่กว่านั้น มันง่ายกับรัฐที่จะทำสิ่งเหล่านั้นซะด้วย และนี่คือบางส่วนที่พวกเค้าสามารถทำได้ ถ้าคิดจะทำ..

  • ติดตามพฤติกรรมการใช้งาน Bitcoin ของคุณ
  • ป้องกันไม่ให้คุณใช้บริการอื่นที่ถูก Regulate โดยรัฐได้
  • ตามยึด Bitcoin ของคุณ
  • ติดตามภาษีย้อนหลังกับคุณ
  • รู้ข้อมูลของคุณมากเกินกว่าที่ควรรู้

Gracialo679

** ทุกบาทหรือทุกซาโตชิที่ donate จะถูกส่งเข้ากระเป๋าของผู้เขียนโดยตรงครับ :) **

Share this post

5 Comments

  1. สอบถามครับ ถ้าโอนไปไม่เต็มจำนวนเช่นมี 1 BTC โอนไป 0.1 BTC ให้คนอื่น 0.9 BTC ที่เหลือจะอยู่ที่ Address เดิมหรือเปล่าครับ เราต้องทำอะไรหรือเปล่าครับ

    • ผมตอบไม่ได้ 100% เพราะไม่รู้ว่าคุณ control bitcoin คุณด้วยอะไร แต่ถ้า hw wallet ที่ใช้โปรแกรมกระเป๋าโดยทั่วไป ถ้าคุณโอนออก 0.1 BTC อีก 0.8xxxxBTC หลังหัก fees แล้วก็จะถูกย้ายไปที่กระเป๋าใบอื่น แต่อยู่ใน seed เดียวกัน // ถ้าไม่เชื่อไปซื้อมา 1 btc แล้วลองโอนให้ผม 0.1btc มาให้ผมก็ได้ คุณจะเหลือไม่ถึง 0.9 btc เพราะคุณต้องเสีย network fee ให้ miner ส่วนนึงด้วย

  2. ถ้าซื้อไม่ผ่านkyc มีช่องทางไหนบ้างครับ

    • ขุดเอง , ซื้อจากผู้ขุดที่ไม่ได้ทำ kyc , รับค่าจ้างจากผู้ขุดที่ไม่ได้ทำ kyc

Leave a Reply

Connect with

Your email address will not be published. Required fields are marked *


Related Posts

Privacy & Security
Gracialo679

การ Backup ชุด Seed

จากบทความก่อนที่คุณได้รู้วิธีการสร้างชุด Seed ด้วยตัวเองโดยไม่ต้องเชื่อใจผู้สร้าง Hardware Wallet คราวนี้ผมจะมาพูดถึงวิธีการเก็บ Seed ให้ปลอดภัย ว่าคุณต้องคำนึงถึงเรื่องอะไรบ้าง

Read More »
Create Seed
Privacy & Security
Gracialo679

การสร้างชุด Seed ด้วยตนเอง

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

Read More »