[ Home] [ Tech] [ จิปาถะ] [ Cactus] Manager Online News
Group Blog
 
<<
ตุลาคม 2551
 1234
567891011
12131415161718
19202122232425
262728293031 
 
15 ตุลาคม 2551
 
All Blogs
 
MD5

ถ้าพูดถึงวิธีในการรักษาปลอดภัยของข้อมูล ไม่ให้โดนล้วงไปอ่านง่ายๆ หลายคนจะนึกถึงวิธีเข้ารหัส จะเข้ารหัสยังไงก็ได้ ให้มันอ่านไม่รู้เรื่องเข้าไว้ เพื่อให้คนที่ขโมยข้อมูลไปนั้น ไม่สามารถอ่านได้อย่างง่ายดาย

การเข้ารหัส มันก็มีอยู่สารพัดวิธี สุดแล้วแต่ใครจะคิดได้ ไม่ว่าจะเป็นวิธีที่โบราณสุดๆ อย่าง Ceasar Cipher ไปจนถึงวิธีที่กำลังนิยมในปัจุบันอย่าง Key-encryption

แต่ที่พูดถึงกันมากก็คือ MD5


Ronald Rivest คนคิด MD5 และหนึ่งในผู้ร่วมสร้าง RSA หน้าตาเป็นงี้แหละ

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

ถ้าพูดตามทฤษฏีก็คือ
MD5 เป็น Hashing Algorithm ครับ ไม่ใช่ Encryption

Hashing Algorithm หรือ Hashing Function นั้น เป็นลักษณะของการนำข้อมูลมาเข้าฟังก์ชันซักตัวนึง เพื่อให้ได้ค่าออกมาอีกค่าหนึ่ง

......แล้ว Hashing Function มันเอาไปเข้ารหัสไม่ได้หรือ?? huh.gif

ก็ แล้วแต่จะนำไปประยุกต์ใช้ครับ แต่ใน MD5 จะใช้ Hashing Function ในการสร้าง Digest ขึ้นมา เจ้า Digest เนี่ย จะเป็นข้อมูลที่มีความยาวคงที่ 128 bits ไม่ว่าข้อมูลจะมหาศาลซักเท่าใดก็ตาม ซึ่ง Digest ก็จะได้มาจากผลลัพธ์ของการนำข้อมูลของเรา ไปเข้า Hashing Function นี่แหละครับ

บางคนหัวใส(ไม่ใช่หัวล้าน) เอา Digest ไปย้อนกลับเข้า MD5 อีกครั้งนึง...หมดสิทธิ์ครับ เพราะ MD5 เป็นฟังก์ชันในลักษณะของ One-way Function เอาคำตอบย้อนกลับทำวิธีเดิมในลักษณะตรงกันข้าม หรือย้อนกลับเข้า Input อีกรอบ ก็ไม่ได้ค่าเดิมครับ tongue.gif

ข้อมูล 1 ตัว เมื่อนำไปผ่าน MD5 จะได้ Digest ขึ้นมา 1 ตัว เช่น
Thaiflashdev จะมี Digest เป็น 9e1afdaa0bac2ace1c692d711af10b6c
และถ้าลองเปลี่ยนข้อมูลซักนิดนึง ให้เป็น Thaiflashdef ก็จะได้ Digest เป็น a405441b6ed5edafcef1062cac13da33

จาก ตัวอย่างนี้จะเห็นว่า แม้ข้อมูลเปลี่ยนไปเพียงนิดเดียว Digest ที่ได้จาก MD5 นั้น จะเปลี่ยนแปลงไปจากเดิมมากเลยทีเดียว ฉะนั้นถ้าจะหวังว่าเพิ่มข้อมูลไป 1 ตัวแล้วเพิ่มค่า Digest ขึ้นอีก 1 นี่หมดสิทธิคับ วิธีตื้นๆ นี้ใช้กับ MD5 ไม่ได้หรอกครับ แต่ด้วยความที่ MD5 มันเปิดเผยอัลกอริทึมนั้น เราสามารถหา Digest ได้โดย....เอ่อ ไม่บอกดีกว่าคับ (แค่นี้ก็ชี้โพรงแล้ว อิอิ)

เมื่อผู้ส่งมีข้อมูล และมี Digest ที่ได้จาก MD5 แล้วทำอะไรได้??
...ก็ส่งไปให้ผู้รับสิครับ จะเก็บไว้ทำไม ถามได้ เอ้อ dry.gif

คราว นี้พอผู้รับ รับข้อมูลมา ก็เอาข้อมูลที่ได้รับ(ไม่รวม Digest) ไปผ่าน MD5 เพื่อหา Digest อีกรอบ เสร็จแล้วก็เอา Digest ที่เพิ่งได้นี้ มาเทียบกับ Digest ที่ได้รับมาจากผู้ส่ง ถ้าตรงกัน แสดงว่าข้อมูลที่ได้รับถูกต้องครับ ไม่มีใครมาทะลึ่งแก้ไขใดๆ ทั้งสิ้น (หรือไม่มี error ระหว่างส่งข้อมูล ประมาณว่าบิต 0 กลายเป็นบิต 1) rolleyes.gif

จากลักษณะการรับส่ง ข้อมูลโดยมี MD5 มาช่วยรักษาความปลอดภัยนั้น จะเห็นว่า มันไม่ได้ปกปิดข้อมูลอะไรให้เราเลย MD5 เพียงแค่ช่วยในเรื่องของความถูกต้องของข้อมูลเท่านั้นเองครับ (Data Integrity)

เนื่องจากว่าในเรื่องของความปลอดภัยนั้น ต้องมีคุณสมบัติอยู่ 3 ตัวคือ
1. Secracy การปกปิดข้อมูล
2. Authentic การยืนยันตัวตนผู้ใช้ (การใช้พาสเวิร์ด เป็นเพียงแค่ Identifier ยังไม่ถึงขั้น Authentic นะครับ แต่ก็พอกล้อมแกล้มได้)
3. Integrity การคงสภาพข้อมูล

แต่ MD5 ช่วยได้แค่ข้อ 3 เท่านั้นเอง ดังนั้นเราต้องหาวิธีอื่นๆ มาเสริมอีก 2 ข้อที่เหลือครับ ซึ่งก็แล้วแต่ครับ ว่าอยากได้ความปลอดภัยระดับไหน

ใน การใช้งานจริง เท่าที่ผมเคยเห็น จะมีการใช้ Encryption เข้ามาช่วย เพื่อปกปิดตัวข้อมูล หรือปกปิดตัว Digest ครับ ไม่ให้มองเห็นและแก้ไขได้ครับ หรือถ้าใครชอบดาวน์โหลด มักจะเห็นว่าข้างๆ Link สำหรับดาวน์โหลดจะมีเขียนไว้ว่า MD5: ....แล้วตามด้วย Digest นะครับ นั่นแหละครับ เอาไว้ให้ผู้ใช้เอา Digest นี้ไปตรวจสอบว่าแฟ้มที่เราดาวน์โหลดไป มีข้อมูลถูกต้องหรือไม่ ตามวิธีที่ได้บอกไปข้างต้นนั่นแหละครับ

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


ที่มา: //www.thaiflashdev.com
: //www.tosdn.com


Create Date : 15 ตุลาคม 2551
Last Update : 15 ตุลาคม 2551 6:26:49 น. 3 comments
Counter : 795 Pageviews.

 
ความรู้ใหม่(สำหรับผม)


โดย: อัสติสะ วันที่: 15 ตุลาคม 2551 เวลา:7:48:54 น.  

 
น่าสนใจทีเดียวครับ ขอบคุณสำหรับความรู้


โดย: civic_coupe วันที่: 15 ตุลาคม 2551 เวลา:22:51:19 น.  

 
ปัญหาเรื่องการเกิด digest ซ้ำกันนั้นไม่น่าจะเรียกว่าเป็นข้อบกพร่องนะครับ
เพราะไม่มี hashing algorithm ใดสามารถหลีกเลี่ยงได้ เหตุที่เป็น
เช่นนั้นเพราะการทำงานของ hashing function นั้นจะรับอินพุท
ขนาดใดๆ มาแล้วแปลงให้ได้ผลลัพธ์ซึ่งมีขนาดคงที่ในแต่ละ algorithm
เช่น MD5 ให้ผลลัพธ์ digest ขนาด 128 บิต ดังนั้นถ้าเราเตรียม
อินพุทที่แตกต่างกันจำนวน (2^128) + 1 แบบ ย่อมต้องเกิดการซ้ำกัน
ของ digest แน่นอน

ขนาดของ digest ที่ใหญ่ขึ้นจะทำให้โอกาสการซ้ำน้อยลง แต่ต้องแลก
ด้วยเวลาที่ใช้ในการคำนวณ ซึ่งต้องเพิ่มขึ้นตามกันไป


โดย: anonymous IP: 125.25.39.190 วันที่: 22 ธันวาคม 2551 เวลา:14:28:23 น.  

ชื่อ :
Comment :
  *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 

แมวอุณหภูมิห้อง
Location :
กรุงเทพ Thailand

[ดู Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 1 คน [?]




loading...

free counters

New Comments
Friends' blogs
[Add แมวอุณหภูมิห้อง's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.