วันพุธที่ 11 มิถุนายน พ.ศ. 2557

การเข้ารหัสทางเดียว (HASHING)

การ crack password ที่ถูกเข้ารหัสไว้แบบทางเดียว (hashing) เช่นพวก md5, sha1, sha256 ฯลฯเดี๋ยวนี้เวลาจะเก็บ password ของสมาชิก ก็มักจะ hash มันด้วย md5 ก่อน แล้วค่อยยัดลง database
แม้แต่ผู้ดูแลระบบเองก็ไม่เห็นว่า password ของสมาชิกคืออะไร
นั่นหมายความว่ามันถอดกลับมาเป็น password จริงๆ ไม่ได้  เพราะฉะนั้นเวลาที่เราต้องการตรวจสอบว่าสมาชิกกรอก password ถูกหรือเปล่า เราก็จะเอาสิ่งที่เขากรอกมา hash ด้วย md5 แล้วก็เอาไปเทียบกับสิ่งที่อยู่ในฐานข้อมูลว่าตรงกันหรือเปล่า ถ้าตรงกันก็แสดงว่ามันคือ password เดียวกันกับที่ตอนสมัคร
Hash function คือ การนำเอาข้อมูลอิเล็กทรอนิกส์ต้นฉบับที่จะส่ง มาผ่านกรบวนการทางด้านคณิตศาสตร์ที่เรียกว่า Hash Function เพื่อให้ได้ข้อมูลที่สั้น ที่เรียกว่า Digest หรือ ข้อมูลย่อย ก่อนที่จะทำการเข้ารหัส เนื่องจากข้อมูลต้นฉบับมักจะมีความยาวมาก ซึ่งจะทำให้กระบวนการเข้ารหัสใช้ระยะเวลานาน
คูณสมบัติ
1. ควรมีความจำเพราะเจาะจงในแต่ละข้อมูล
2. หากมีการเปลี่ยนแปลงข้อมูลเล็กแล้วค่าที่ Hash ออกมาจะต้องมีความแตกต่างกันอย่างสิ้นเชิง
3. หาได้ง่ายและใช้เวลาน้อย ควรเป็นฟังก์ชันที่ไม่ซับซ้อน สามารถสร้างโดยฮาร์ดแวร์และ
    ซอฟต์แวร์ได้ง่าย
4. ไม่ควรเป็นฟังก์ชันที่ย้อนกลับได้ คือ เมื่อทราบผลลัพธ์แล้วไม่มีทางทราบข้อมูลเลย
5. ข้อมูลที่ได้ต้องมีการซ้ำกันน้อยหรือไม่มีเลย
ในบรรดาฟังก์ชัน Hash ทั้งหลาย ฟังก์ชัน SHA-1 จัดว่าเป็นฟังก์ชันหนึ่งที่เป็นมาตรฐาน และมีการใช้งานกันอย่างกว้างขวาง ฟังก์ชัน SHA-1 จะใช้บล็อกข้อมูลขนาด 512 บิต โดยสร้างผลลัพธ์ MD ความยาว 160 บิตคงที่
ทีนี้แล้วเจ้า MD5 ละ
MD5 ย่อมาจาก Message-Digest algorithm 5 คือ รูปแบบการเข้ารหัสแบบ Hash ชนิดหนึ่ง
การเข้ารหัสแบบ Hash  (Cryptographic hash) คือ การแปลงรูปแบบของข้อมูลที่รับเข้ามาไม่ว่าขนาดเท่าใดก็ตาม ให้อยู่ในอีกรูปแบบหนึ่งที่มีขนาดคงที่ เพราะฉะนั้น จะไม่สามารถเรียกดูข้อมูลต้นฉบับได้ (Decrypt) ทำได้เพียงตรวจสอบว่าข้อมูลที่ให้มาแต่ละครั้งเหมือนกันหรือไม่ ความปลอดภัยจึงค่อนข้างสูง ในที่นี้ MD5 เป็นการเข้ารหัสแบบ 128-bit ให้ค่าเป็นตัวเลขฐาน 16 (0123456789abcd) ขนาด 32 ตัวอักษร แต่ก็มีบางประเภทที่ให้ค่าเป็น binary และ base64

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

การแปลงค่า MD5  ทำได้โดย วิธีการที่เรียกว่า Brute-Force (หาค่าตั้งแต่ a-z และนำไปเปรียบเทียบ จากนั้นก็เป็น aa-zz และต่อไปเรื่อยๆ) นอกเหนือไปจากนี้ยังมีวิธีการที่เรียกว่า Hash Collision (การชนกันของ Hash)  นอกจากการเข้ารหัสแบบ MD5 แล้วยังใีการเข้ารหัสแบบอื่น เช่น Encryption และ bytecode เป็นต้น
       จากข้อมูลเบื้องต้น เราสามารถสร้างความปลอดภัยได้ทั้งในโปรแกรมบนเครื่องคอมพิวเตอร์
และสมาร์ทโฟน เพียงแต่เราต้องศึกษาใหืท่องแท้และลึกซึ้ง ถึงข้อมูลการประยุกต์ใช้งานด้านต่างๆ
แหล่งที่มา : kokiuki,mairai.wordpress.com,mindphp.com