ฟังก์ชั่นแฮชเข้ารหัสคืออะไร?

ฟังก์ชันแฮชเข้ารหัสเป็นอัลกอริธึมที่สามารถรันบนข้อมูล เช่น บุคคล ไฟล์ หรือรหัสผ่านเพื่อสร้างค่าที่เรียกว่าเช็คซัม

การใช้งานหลักของฟังก์ชันแฮชเข้ารหัสคือการตรวจสอบความถูกต้องของข้อมูล ไฟล์สองไฟล์สามารถถือว่าเหมือนกันได้ก็ต่อเมื่อเช็คซัมที่สร้างจากแต่ละไฟล์ โดยใช้ฟังก์ชันแฮชการเข้ารหัสเหมือนกัน เหมือนกัน

ฟังก์ชันแฮชเข้ารหัสที่ใช้กันทั่วไป ได้แก่ MD5 และ SHA-1แม้ว่าจะมีคนอื่นอีกมากมาย

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

ฟังก์ชันแฮชเข้ารหัส: กรณีใช้งาน

สมมติว่าคุณดาวน์โหลด เบราว์เซอร์ Firefox เวอร์ชันล่าสุด. ด้วยเหตุผลบางอย่าง คุณต้องดาวน์โหลดจากเว็บไซต์อื่นที่ไม่ใช่ของ Mozilla เนื่องจากไม่ได้โฮสต์บนไซต์ที่คุณเรียนรู้ที่จะไว้วางใจ คุณจึงต้องตรวจสอบให้แน่ใจว่าไฟล์การติดตั้งที่คุณเพิ่งดาวน์โหลดนั้นเหมือนกับไฟล์ที่ Mozilla นำเสนอทุกประการ

เมื่อใช้เครื่องคิดเลขเช็คซัม คุณจะคำนวณเช็คซัมโดยใช้ฟังก์ชันแฮชเข้ารหัสเฉพาะ เช่น SHA-2 จากนั้นเปรียบเทียบกับฟังก์ชันที่เผยแพร่บนไซต์ของ Mozilla หากเท่ากัน คุณจะมั่นใจได้อย่างสมเหตุสมผลว่าการดาวน์โหลดที่คุณมีนั้นเป็นไฟล์ที่ Mozilla ตั้งใจไว้ให้คุณ

ภาพถ่ายสูตรและภาพบนกระดานดำ
Yagi Studio / ภาพดิจิทัลวิชั่น / Getty

ฟังก์ชั่นแฮชเข้ารหัสสามารถย้อนกลับได้หรือไม่?

ฟังก์ชันแฮชเข้ารหัสได้รับการออกแบบมาเพื่อป้องกันความสามารถในการย้อนกลับเช็คซัมที่สร้างกลับไปเป็นข้อความต้นฉบับ อย่างไรก็ตาม แม้ว่าแทบเป็นไปไม่ได้เลยที่จะย้อนกลับ แต่ก็ไม่รับประกันว่าจะปกป้องข้อมูลได้ 100 เปอร์เซ็นต์

แฮกเกอร์อาจใช้ตารางสีรุ้งเพื่อค้นหาข้อความธรรมดาของเช็คซัม ตารางสีรุ้งคือพจนานุกรมที่แสดงรายการเช็คซัมนับพัน ล้านหรือพันล้านรายการควบคู่ไปกับค่าข้อความธรรมดาที่เกี่ยวข้อง

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

ต่อไปนี้คือเวอร์ชันที่เรียบง่ายของตารางเรนโบว์เพื่อแสดงให้เห็นว่าจะใช้งานอย่างไรเมื่อใช้ฟังก์ชันแฮชการเข้ารหัส SHA-1:

ตัวอย่างโต๊ะสีรุ้ง
ข้อความธรรมดา SHA-1 เช็คซัม
12345 8cb2237d0679ca88db6464eac60da96345513964
รหัสผ่าน1 e38ad214943daad1d64c102faec29de4afe9da3d
ฉันรักหมาของฉัน a25fb3505406c9ac761c8428692fbf5d5ddf1316
เจนนี่400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
ดัลลัส1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

แฮ็กเกอร์ต้องรู้ว่าอัลกอริธึมแฮชเข้ารหัสใดที่ใช้ในการสร้างเช็คซัมเพื่อหาค่า

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

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

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

รหัสผ่านและฟังก์ชันแฮชเข้ารหัส

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

เนื่องจากฟังก์ชันแฮชเข้ารหัสจะสร้างเช็คซัมที่ไม่สามารถย้อนกลับได้ จึงปลอดภัยสำหรับคุณที่จะสร้างรหัสผ่านให้ง่ายเหมือน 12345, แทน 12@34$5เพียงเพราะว่าเช็คซัมเองไม่เข้าใจ? ไม่ และนี่คือเหตุผล

รหัสผ่านทั้งสองนี้เป็นไปไม่ได้ที่จะถอดรหัสเพียงแค่ดูที่เช็คซัม:

MD5 สำหรับ 12345:827ccb0eea8a706c4c34a16891f84e7b

MD5 สำหรับ 12@34$5:a4d3cc004f487b18b2ccd4853053818b

เมื่อมองแวบแรก คุณอาจคิดว่าใช้รหัสผ่านเหล่านี้ได้ สิ่งนี้เป็นจริงหากผู้โจมตีพยายามหารหัสผ่านของคุณโดยเดาเช็คซัม MD5 ซึ่งไม่มีใครทำ แต่ไม่เป็นความจริงหากมีการโจมตีโดยใช้กำลังเดรัจฉานหรือพจนานุกรม ซึ่งเป็นกลวิธีทั่วไป

การโจมตีด้วยกำลังเดรัจฉานจะเกิดขึ้นเมื่อมีการสุ่มแทงหลายครั้งเพื่อคาดเดารหัสผ่าน ในกรณีนี้ก็จะเดาได้ง่าย 12345แต่ค่อนข้างยากที่จะสุ่มหาอีกอันหนึ่ง การโจมตีด้วยพจนานุกรมมีความคล้ายคลึงกันตรงที่ผู้โจมตีสามารถลองทุกคำ ตัวเลข หรือวลีจากรายการรหัสผ่านทั่วไป (และที่ไม่ธรรมดา) และ 12345 เป็นหนึ่งในรหัสผ่านทั่วไปเหล่านั้น

แม้ว่าฟังก์ชันแฮชที่เข้ารหัสจะสร้างเช็คซัมที่ยากต่อการเดา คุณก็ยังควร ใช้รหัสผ่านที่ซับซ้อน สำหรับบัญชีผู้ใช้ออนไลน์และในเครื่องทั้งหมดของคุณ

ข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันแฮชเข้ารหัส

ดูเหมือนว่าฟังก์ชันแฮชเข้ารหัสจะเกี่ยวข้องกับการเข้ารหัส แต่ทั้งสองทำงานในลักษณะที่ต่างกัน

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

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

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

การชนกันอาจเกิดขึ้นได้เนื่องจากฟังก์ชันแฮชเข้ารหัสแต่ละรายการสร้างค่าความยาวคงที่โดยไม่คำนึงถึงข้อมูลที่ป้อน ตัวอย่างเช่น ฟังก์ชันแฮชเข้ารหัส MD5 สร้าง 827ccb0eea8a706c4c34a16891f84e7b 1f633b2909b9c1addf32302c7a497983 และ e10adc3949ba59abbe56e057f20f883e สำหรับสามคนที่แตกต่างกันโดยสิ้นเชิง บล็อกของข้อมูล

เช็คซัมแรกมาจาก 12345. ตัวที่สองสร้างจากตัวอักษรและตัวเลขมากกว่า 700 ตัว และตัวที่สามมาจาก 123456. อินพุตทั้งสามมีความยาวต่างกัน แต่ผลลัพธ์จะมีความยาวเพียง 32 อักขระเสมอตั้งแต่ MD5 เช็คซัม ถูกนำมาใช้

ไม่มีการจำกัดจำนวนของ checksum ที่สามารถสร้างได้ เนื่องจากการเปลี่ยนแปลงเล็กๆ น้อยๆ ในอินพุตควรจะสร้าง checksum ที่แตกต่างกันโดยสิ้นเชิง เนื่องจากมีการจำกัดจำนวนเช็คซัมที่ฟังก์ชันแฮชเข้ารหัสหนึ่งฟังก์ชันสามารถสร้างได้ จึงมีความเป็นไปได้เสมอที่คุณจะพบการชนกัน

นี่คือเหตุผลที่สร้างฟังก์ชันแฮชเข้ารหัสอื่น ๆ ในขณะที่ MD5 สร้างค่า 32 อักขระ SHA-1 สร้าง 40 อักขระ และ SHA-2 (512) สร้าง 128 ยิ่งจำนวนอักขระที่เช็คซัมมีมากเท่าใด โอกาสที่จะเกิดการชนกันก็จะยิ่งน้อยลงเท่านั้น