อะไรคือ Hash Fuction อ่ะ? มันเหมือนกัน HashBrown ไหม?

Kun Samaphat
Token X
2 min readJan 20, 2022

--

Hash function คืออะไร?

ถ้าอธิบายแปลความหมายแบบตรงตัวเลย hash function อาจจะหมายถึงกระบวนการเปลี่ยนข้อความหรือตัวอักษร ให้ออกมาเป็นชุดตัวอักษรแบบสุ่มที่ผ่านการเข้าสมการทางคณิตศาสตร์ โดยจะมีความยาวของชุดตัวอักษรที่มีความยาวจำกัด โดยไม่ว่าข้อความจะประกอบไปด้วยชุดคำหรือจัดเรียงแบบไหน สุดท้ายแล้วค่าความยาวของผลลัพธ์นั้นจะยาวเท่ากันเสมอ และไม่สามารถหาวิธีที่จะถอดรหัสว่าข้อความเริ่มต้นนั้นได้ว่าคืออะไร

เปรียบเทียบตัวอย่างง่ายๆ ว่า hash function คืออุโมงวิเศษที่ใช้หลักการของการเข้ารหัสทางคณิตศาสตร์(cryptographic hash) ที่จะทำให้เมื่อผ่านอุโมงนี้ไปแล้ว ไม่ว่าข้อความหรือตัวอักษรไม่ว่าจะอยู่ในรูปแบบใด จะมาออกเป็นชุดตัวอักษรแบบสุ่ม(hash value) เสมอ

มาดูตัวอย่างของจริงกันดีกว่าว่าทั้ง 3 ข้อความนี้ ที่มีความใกล้เคียงกันมากๆ เมื่อนำทั้ง 3 ข้อความไป hash แล้วจะเกิดอะไรขึ้น

  1. Hello world >> hash function >>

64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c

2. Hello world! >> hash function >>

c0535e4be2b79ffd93291305436bf889314e4a3faec05ecffcbb7df31ad9e51a

3. hello world! >> hash function >>

7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9

จะเห็นได้ว่าถึงมีการเปลี่ยนแปลงข้อความโดยการเพิ่มตัวอักษรพิเศษเข้าไป หรือแม้กระทั่งการเปลี่ยนจาก H พิมพ์ใหม่ เป็น h พิมพ์เล็ก ค่า hash value ก็จะต่างกันอย่างสิ้นเชิง

สามารถนำเอาข้อความมาทดลอง hash function(SHA-256) ได้ที่: https://andersbrownworth.com/blockchain/hash

โดยคุณสมบัติของค่า hash value จะมีดังต่อไปนี้

  • มีค่าความยาวของจำนวนตัวอักษรเท่ากันเสมอ
  • ไม่จะสามารถถูกแก้สมการย้อนกลับไป เพื่อหาค่าเริ่มต้นได้
  • เมื่อข้อความเริ่มต้นเหมือนกัน ถ้าผ่านการ hash แล้วจะได้ hash value เดิมเสมอ
  • Hash value ของ SHA-256 มีความเป็นไปได้ทั้งหมด 2²⁵⁶ ซึ่งในโลกความเป็นจริง แทบจะเป็นไปไม่ได้เลย ที่ข้อความเริ่มต้นต่างกันเมื่อ hash แล้ว จะได้ค่า hash value ที่เหมือนกัน

หมายเหตุ: Hash function มีหลายประเภท ที่ยกตัวอย่างข้างต้นจะใช้ hash function ที่ชื่อว่า SHA-256

แล้ว Hash function มีประโยชน์อย่างไร?

Hash function เองมีไว้เพื่อสร้างความปลอดภัยเป็นให้กับข้อมูลของเราและถูกนำไปใช้ในหลายๆ เรื่อง เช่น เรื่องของการรักษาความปลอดภัยของข้อมูล, ช่วยในการจัดเก็บข้อมูลอย่างเช่นพวก password ให้มีความปลอดภัยมากยิ่งขึ้นหรือแม้กระทั่งเทคโนโลยีของ blockchain ก็นำเอา hash function มาใช้เป็นตัวช่วยในการเข้ารหัสและโครงสร้างของ blockchain ด้วย

ตัวอย่างการทำงานของ hash function ที่ช่วยในเรื่องของความปลอดภัย เช่น ถ้าเราจะส่งอีเมลไปยังปลายทางเราจะรู้ได้ยังไงว่าระหว่างทางข้อมูลภายในอีเมลนั้น ไม่ได้ถูกแก้ไขหรือเปลี่ยนแปลง

  • ขาส่งข้อมูล: เมื่อเราจะส่งข้อความว่า Hello world เราจะส่งค่า hash value ของข้อความไปด้วย
  • เมื่อปลายทางได้รับข้อมูล: ก็สามารถนำเอาข้อความ Hello world ไปผ่าน hash function เพื่อเปรียบเทียบ ถ้าได้ hash value ที่ตรงกัน ก็แสดงว่าข้อความนั้นถูกต้องและไม่ได้ถูกแก้ไขหรือปลอมแปลง

แล้ว Hash function ถูกนำมาใช้ยังไงในเทคโนโลยีของ Blockchain?

เราหลายคนอาจจะคุ้นชินกับข้อดีของ blockchain เรื่องของการที่ไม่สามารถเปลี่ยนแปลงหรือแก้ไขข้อมูลได้(immutable) หลังจากที่ข้อมูลถูกบันทึกลง blockchain แล้ว เจ้า hash function เนี่ยแหละที่เข้ามาช่วยทำให้สิ่งนี้เกิดขึ้นได้

ตัวอย่างการทำงาน blockchain ของ Bitcoin ที่นำเอาหลักการทำของงาน hash function ที่ชื่อว่า SHA-256 เข้ามาใช้งานด้วย

จากบทความก่อนหน้า เราพอจะทราบว่า blockchain นั้น แบ่งการเก็บข้อมูลเป็น block แล้วในแต่ละ block นั้นเชื่อมกันต่อกันไปเรื่อยๆ เราเลยเรียกมันว่า blockchain

โดยข้อมูลที่เก็บไว้ในแต่ละ block จะมีหลายส่วนด้วยกัน แต่หนึ่งในข้อมูลที่ทุก block จะต้องมีคือ ค่า hash value ของ block ก่อนหน้า ที่จะถูกเชื่อมต่อกันไปเรื่อยๆ ยกตัวอย่างเช่น

Block 1: ข้อมูลภายใน block 1

Block 2: ข้อมูลภายใน block 2 + hash value ของ block 1

Block 3: ข้อมูลภายใน block 3 + hash value ของ block 2

Block 4: ข้อมูลภายใน block 4 + hash value ของ block 3

จะเห็นได้ว่า เมื่อมีคนมาเปลี่ยนแปลงข้อมูลภายในของ block 2 ก็จะส่งผลให้ค่าของ hash value ของ block 2 นั้นเปลี่ยนไป คราวนี้เนื่องจาก hash value ของ block 2 ถูกเก็บไว้ที่ block 3 ด้วย ก็จะทำเรารู้ทันทีเลยว่า ข้อมูลของ block 3 ถูกแก้ไข เท่านี้ก็จะทำให้เมื่อข้อมูลภายใน blockchain ที่ถูกเปลี่ยนแปลงก็จะทราบได้ทันทีที่เปลี่ยนไป และด้วยเหตุนี้เอง hash function จึงมีประโยนช์อย่างมากในโครงสร้างของ blockchain ที่จะช่วยเรื่องของการป้องกัน การเข้ามาแก้ไขข้อมูลภายใน blockchain

หรือถ้าใครอยากทดลองเล่นตัว hash function เพื่อที่จะเข้าใจการทำงานของ blockchain มากยิ่งขึ้น สามารถกดเข้าไปเล่นได้ที่ https://andersbrownworth.com/blockchain/blockchain

--

--