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

สารบัญ:

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

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

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

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

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

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

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

Image
Image

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

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

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

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

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

ตัวอย่างตารางสีรุ้ง
ข้อความธรรมดา SHA-1 Checksum
12345 8cb2237d0679ca88db6464eac60da96345513964
รหัสผ่าน1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog a25fb3505406c9ac761c8428692fbf5d5ddf1316
เจนนี่400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

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

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

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

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

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

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

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

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

MD5 สำหรับ 12345: 827ccb0eea8a706c4c34a16891f84e7b

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

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

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

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

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

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

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

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

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

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

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

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

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