Hash Function คืออะไร?
Hash Function คือกระบวนการคณิตศาสตร์แบบทางเดียวที่เปลี่ย入力ข้อมูลใดๆ ให้เป็นผลลัพธ์สั้น ขนาดคงที่ที่เรียกว่า hash Input เดียวกัน ผลลัพธ์เหมือนเดิมเสมอทุกครั้ง คิดเหมือนลายนิ้วมือดิจิทัลของข้อมูลที่ไม่สามารถถอดรหัสย้อนกลับได้ง่ายๆ ใช่ มันง่ายขนาดนั้นเลย
Hash Function ไม่ใช่การเข้ารหัสที่คุณสามารถถอดออกได้ มันถูกออกแบบให้เป็นทางเดียว ดังนั้นคุณจึงเปรียบเทียบ hashes เพื่อตรวจสอบความสมบูรณ์แทนการ “ถอดรหัส” อะไรก็ตาม
Hash Function ทำงานอย่างไร
ทัวร์แบบสั้นๆ ไม่มีเรื่องบ่นอ้างอิง ลองจินตนาการว่าคุณพิมข้อความหรือรวมชุดธุรกรรม Algoritm จะประมวลผล input นั้นและคืนสตริงความยาวคงที่ที่ดูเหมือนสุ่มแต่สอดคล้องอย่างแน่นอนสำหรับ input นั้นๆ
- ขั้นตอนที่ 1: คุณป้อนข้อมูลเข้าไป ไม่จำกัดขนาด ตั้งแต่คำเดี่ยวไปจนถึงหัวบล็อกเต็ม
- ขั้นตอนที่ 2: อัลกอริทึมเข้ารหัสสับเปลี่ยนบิตในวิธีที่แม่นยำ แม้แต่คำว่า “hello” ก็ถูกแมปไปยัง hex digest ที่เฉพาะ
- ขั้นตอนที่ 3: คุณได้ผลลัพธ์ความยาวคงที่ ซึ่งทำให้การจัดเก็บและการเปรียบเทยนุ่มง่าย
- ขั้นตอนที่ 4: เปลี่ยนตัวอักษรหนึ่งตัวแล้วผลลัพธ์จะเปลี่ยนไปอย่างคาดเดาไม่ได้ ไม่มี hash ที่ “ใกล้เคียงกัน”
- ขั้นตอนที่ 5: บนบล็อกเชน Miners ทดลอง nonces นับไม่ถ้วนจนกว่า hash จะตรงกับเป้าหมายเครือข่าย
เกมการค้นหานั้นเรียกว่า การขุดเหมือง (mining) และมันทำให้บล็อกเป็นไปตามกฎ
ทำไม Hash Function ถึงสำคัญ
แล้วทำไมถึงต้องสนใจ? เพราะนี่คือวิธีที่บล็อกเชนเก็บบันทึกให้ตรวจสอบได้ง่ายและไม่ถูกแก้ไข
- ประโยชน์: การตรวจสอบความสมบูรณ์อย่างรวดเร็วช่วยประหยัดเวลา ค่าใช้จ่าย และความวุ่นวายเมื่อเคลื่อนย้ายข้อมูลและมูลค่า
- มุมมอง: มันคือกระดูกสันหลังของ Proof of Work เปลี่ยนไฟฟ้าและการคำนวณเป็นความมั่นคงที่สามารถตรวจสอบได้
- ความสำคัญ: คุณเห็นมันในธุรกรรม บล็อกเฮดเดอร์ Merkle และแม้กระทั่งการดาวน์โหลดไฟล์
เมื่อยืนยันไฟล์หรือธุรกรรม ให้เปรียบเทียบ hashes จากแหล่งที่เชื่อถือได้อย่างน้อยสองแหล่ง หากมีหนึ่งหลักต่างกัน ให้ถือว่าเป็นสัญญาณเตือน
ลักษณะสำคัญของ Hash Function
คุณสมบัติเหล่านี้ทำให้มันเป็นเครื่องมือที่ชื่นชอบตั้งแต่ Bitcoin ไปจนถึงการตรวจสอบไฟล์พื้นฐาน:
- Deterministic: อินพุตเดิมให้ output เดียวกันเสมอ
- Uniform: ผลลัพธ์ดูเป็นการกระจายอย่างสม่ำเสมอ ซึ่งช่วยลดรูปแบบที่ผู้บุกรุกอาจใช้ประโยชน์
- Fixed: ความยาว output ไม่ขึ้นกับขนาด input ซึ่งทำให้การจัดเก็บและการเปรียบเทียบง่าย
- Avalanche: การเปลี่ยน input เล็กน้อยทำให้ hash เปลี่ยนไปโดยสิ้นเชิง
- Oneway: เมื่อให้ hash แล้ว การหาคำที่ให้มันเกิดขึ้นควรเป็นไปได้ยาก
- Collision: การหาคู่ input สองอันที่ให้ hash เดียวกันควรเป็นเรื่องที่ยากอย่างมาก
Variations
เครือข่ายและแอปต่างๆ เลือกอัลกอริทึมที่แตกต่างกัน แต่ละรายการมีข้อแลกเปลี่ยนและบรรยากาศที่ต่างกัน:
- SHA256: ใช้ในบล็อก Bitcoin และระบบพิสูจน์หลายระบบ ผ่านการทดสอบการใช้งานและถูกตรวจสอบอย่างแพร่หลาย
- Keccak: Ethereum ใช้ Keccak 256 สำหรับ addresses และ contracts ยังเป็นที่นิยมในเครื่องมือ smart contract
- BLAKE3: ออกแบบใหม่ที่เน้นความเร็วและประสิทธิภาพขนานสำหรับข้อมูลขนาดใหญ่
- Speed: อัลกอริทึมบางตัวเร็วกว่า เหมาะกับ throughput ที่สูง
- Security: เลือกอันที่มีการ scrutinized สาธารณะมานานหลายปี
- Fit: เลือกตามที่ stack และ libraries ของคุณรองรับได้อย่างเรียบร้อย
hash จะพิสูจน์ได้ว่า data ยังอยู่ในสภาพเดิมเท่านั้น ไม่ได้พิสูจน์ว่าใครเป็นคนสร้างมัน นอกจากคุณจะจับคู่กับลายเซ็น
ตัวอย่าง
Bitcoin เปลี่ยน public key ให้เป็น wallet addresses ผ่านการ hash ผ่านอัลกอริทึมมาตรฐาน ดังนั้นที่อยู่จึงสั้น ตรวจสอบได้ และปลอดภัยต่อการแบ่งปัน
ข้อเท็จจริงสนุกๆ
MD5 และ SHA1 มีการชนกันที่ทราบอยู่แล้ว จึงทำให้วงการ crypto ถือว่าเป็นเทคโนโลยีเก่าที่น่าชื่นชม แต่ไม่ควรพึ่งพิงด้านความมั่นคง Retro แต่ไม่เหมาะกับทุนของคุณ
Wrap-Up
สรุปสั้นๆ: Hash Function มอบลายนิ้วมือที่เป็นเอกลักษณ์ให้กับข้อมูล เพื่อที่คุณจะระบุการดัดแปลงได้อย่างรวดเร็วและเชื่อถือในหลักฐานโดยไม่ต้องพึ่งพามือกลาง