2013-07-16

ว่าด้วยเรื่อง MD5

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

ก่อนอื่นเลยนั้น MD5 คืออะไร

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

   การที่เราจะรู้ได้ว่า true value ก่อนการเข้ารหัส MD5 นั้นคืออะไร จะต้องมีการเทียบย้อนกลับ หรือจะพูดง่ายๆ ก็คือต้องมี ข้อมูลของ general value และค่า แฮช MD5 จำนวนมาก ในการเทียบย้อนกลับเพื่อหาค่า true value ที่แท้จริง

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

   ดังนั้น การทำให้การเข้ารหัสมีความแข็งแกร่งยิ่งขึ้นจึงเป็นเรื่องสำคัญ ซึ่งบางคน ใช้การเข้ารหัส MD5 ซ้อนกันหลายๆ ครั้ง หรือ ใช้การเข้ารหัสแบบอื่นร่วมด้วย

   แต่วันนี้เราจะมาเสนอ แนวคิดที่สามารถป้องกัน true value ได้อย่างมีประสิทธิภาพ

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

   เช่น "Hello True Password" MD5 จะได้เป็น "5911ddfddfd1dacdb8e9dadff407897f" ซึ่งถ้าเราตัดทิ้งจำนวนหนึ่งแบบคงที่ ในตัวอย่างจะตัด 4ตัวหน้าและ 2ตัวหลังก็จะเป็น "ddfddfd1dacdb8e9dadff40789" หลังจากนั้น ก็ทำการแฮช MD5 อีกลอบก็จะได้เป็น "722f23056d39e1dc909967e2b325a402"
   ซึ่งถ้าถูกย้อนขบวนการหรือการเทียบย้อนกลับแล้ว ค่าที่ได้คือ "ddfddfd1dacdb8e9dadff40789" เท่านั้น ไม่ใช่ true value "Hello True Password"

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

No comments:

Post a Comment