ดาวน์โหลดโปรแกรมฟรี
       
   สมัครสมาชิก   เข้าสู่ระบบ
THAIWARE.COM | ทิปส์ไอที
 

MD5 Algorithm คืออะไร ? การเข้ารหัสแบบนี้ มีความปลอดภัยหรือไม่ ? และข้อดี-ข้อเสีย

MD5 Algorithm คืออะไร ? การเข้ารหัสแบบนี้ มีความปลอดภัยหรือไม่ ? และข้อดี-ข้อเสีย
ภาพจาก : https://www.freepik.com/free-vector/stream-binary-code-design_16399103.htm
เมื่อ :
|  ผู้เข้าชม : 852
เขียนโดย :
0 MD5+Algorithm+%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3+%3F+%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%82%E0%B9%89%E0%B8%B2%E0%B8%A3%E0%B8%AB%E0%B8%B1%E0%B8%AA%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%99%E0%B8%B5%E0%B9%89+%E0%B8%A1%E0%B8%B5%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B8%9B%E0%B8%A5%E0%B8%AD%E0%B8%94%E0%B8%A0%E0%B8%B1%E0%B8%A2%E0%B8%AB%E0%B8%A3%E0%B8%B7%E0%B8%AD%E0%B9%84%E0%B8%A1%E0%B9%88+%3F+%E0%B9%81%E0%B8%A5%E0%B8%B0%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%94%E0%B8%B5-%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B9%80%E0%B8%AA%E0%B8%B5%E0%B8%A2
A- A+
แชร์หน้าเว็บนี้ :

MD5 Algorithm คืออะไร ? การเข้ารหัสแบบนี้ มีความปลอดภัยหรือไม่ ? และข้อดี-ข้อเสีย

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

บทความเกี่ยวกับ Encryption อื่นๆ

ข้อมูลเพิ่มเติม : Algorithm คืออะไร ? ดูการทำงาน ข้อดี-ข้อเสีย และประเภทของอัลกอริทึม

ในบทความนี้เราจะมาเรียนรู้กันว่า การแฮช MD5 คืออะไร ? และอัลกอริทึม MD5 ทำงานอย่างไร ?

เนื้อหาภายในบทความ

อัลกอริทึม MD5 คืออะไร ? (What is MD5 Algorithm ?)

อัลกอริทึมแฮช MD5 ย่อมาจาก "Message-Digest Algorithm" เป็นฟังก์ชันแฮชเชิง เข้ารหัส (Encrypt) เป็นอัลกอริทึมขนาด 128 บิต ที่ใช้ในการสร้าง และตรวจสอบ ลายเซ็นดิจิทัล (Digital Signature) หรือข้อความย่อ (Message Digest) แม้ว่า MD5 จะถูกประกาศว่า มีความ "ล้มเหลวทางคริปโตกราฟี" (Cryptographically Broken) มานานกว่าทศวรรษแล้ว แต่ในปัจจุบันก็ยังมีการใช้งานมันอย่างแพร่หลาย

โดยปัญหาของ MD5 ที่เป็นช่องโหว่ด้านความปลอดภัยที่รู้จักกันดี คือ ความเสี่ยงสูงต่อการเกิด "การชนกัน" (Collision) ซึ่งหมายถึงกรณีที่ ข้อความสองชุดที่แตกต่างกัน แต่กลับให้ค่าผลลัพธ์แฮชเหมือนกัน

MD5 สามารถใช้ในการ สร้าง (Generate) หรือ ตรวจสอบ (Verify) แฮชเชิงเข้ารหัสขนาด 128 บิต จากข้อความที่มีความยาวไม่แน่นอน ซึ่งเป็นฟังก์ชันแฮชเชิงเข้ารหัสที่ออกแบบมาเพื่อสร้างลายเซ็นดิจิทัล บีบอัดไฟล์ขนาดใหญ่ให้มีขนาดเล็กลงอย่างปลอดภัย และเข้ารหัสด้วยกุญแจลับ (Private Key) เพื่อนำไปจับคู่กับ กุญแจสาธารณะ (Public Key)

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

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

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

อัลกอริทึม MD5 ทำงานอย่างไร ? (How does MD5 Algorithm work ?)

อัลกอริทึม MD5 มีกระบวนการทำงาน ตามขั้นตอนดังต่อไปนี้

1. เพิ่มบิตพาดดิ้ง (Append Padding Bits)

ในขั้นตอนแรก จะมีการเพิ่มบิตพาดดิ้งลงในข้อความต้นฉบับ เพื่อให้ความยาวของข้อความทั้งหมดน้อยกว่าจำนวนเต็มของ 512 บิตอยู่ 64 บิต

ตัวอย่างเช่น หากเรามีข้อความที่มีขนาด 1,000 บิต จะต้องเพิ่มบิตพาดดิ้งเข้าไป เมื่อคำนวณแล้ว จะต้องเพิ่ม 472 บิตพาดดิ้ง ลงในข้อความต้นฉบับ หลังจากเพิ่มบิตพาดดิ้งแล้ว ขนาดของข้อความจะกลายเป็น 1,472 บิต ซึ่งน้อยกว่าจำนวนเต็มของ 512 บิตอยู่ 64 บิต (เช่น 512 × 3 = 1,536 บิต)

สมการที่ใช้ก็จะเป็น "ความยาว(ข้อความต้นฉบับ+บิตพาดดิ้ง) = 512 x i - 64 โดยที่ i เท่ากับ 1, 2, 3, ..."

2. เพิ่มบิตความยาว (Append Length Bits)

ในขั้นตอนนี้ จะมีการเพิ่มบิตความยาวลงในผลลัพธ์ของขั้นตอนแรกเพื่อให้จำนวนบิตทั้งหมดเป็นจำนวนเต็มที่หารด้วย 512 ลงตัว กล่าวคือ เราจะเพิ่ม 64 บิต เป็นบิตความยาวในผลลัพธ์ของขั้นตอนแรก

ผลลัพธ์ของขั้นตอนแรก = 512 x n - 64
บิตความยาว = 64

หลังจากเพิ่มทั้งสองส่วนแล้ว จะได้ค่า 512 x n ซึ่งเป็นจำนวนเต็มของ 512

3. กำหนดค่าเริ่มต้นของ MD Buffer (Initialize MD Buffer)

ในขั้นตอนนี้ เราจะใช้บัฟเฟอร์ 4 ตัว ตัวอย่างเช่น A, B, C และ D โดยแต่ละบัฟเฟอร์มีขนาด 32 บิต

  • A = 0x67425301
  • B = 0xEDFCBA45
  • C = 0x98CBADFE
  • D = 0x13DCE476

MD5 Algorithm คืออะไร ? การเข้ารหัสแบบนี้ มีความปลอดภัยหรือไม่ ? และข้อดี-ข้อเสีย
ภาพจาก: https://www.geeksforgeeks.org/computer-networks/what-is-the-md5-algorithm/

4. ประมวลผลบล็อกขนาด 512 บิต ทุกตัว (Process Each 512-bit Block)

เป็นขั้นตอนที่สำคัญที่สุดของอัลกอริทึม MD5 โดยจะมีการดำเนินการทั้งหมด 64 ขั้นตอน ใน 4 รอบ

  • รอบที่ 1: ทำงาน 16 ขั้นตอน
  • รอบที่ 2: ทำงาน 16 ขั้นตอน
  • รอบที่ 3: ทำงาน 16 ขั้นตอน
  • รอบที่ 4: ทำงาน 16 ขั้นตอน

ในแต่ละรอบจะใช้ฟังก์ชันที่แตกต่างกัน:

  • รอบที่ 1: ใช้ฟังก์ชัน F
  • รอบที่ 2: ใช้ฟังก์ชัน G
  • รอบที่ 3: ใช้ฟังก์ชัน H
  • รอบที่ 4: ใช้ฟังก์ชัน I

สำหรับการคำนวณฟังก์ชัน ปกติก็จะใช้ Logic Gates ได้แก่ OR, AND, XOR และ NOT โดยทำงานร่วมกับ บัฟเฟอร์ 3 ตัว ได้แก่ B, C และ D

รอบที่

ขั้นตอนการคำนวณ

1

(B และ C) หรือ ((ไม่ใช่ B) และ (D))

2

(B และ D) หรือ (C และ (ไม่ใช่ D))

3

B หรือ C หรือ D

4

C หรือ (B หรือ (ไม่ใช้ D))

หลังจากใช้ฟังก์ชันแล้ว ขั้นตอนต่อไปคือ การดำเนินการกับแต่ละบล็อก โดยในการดำเนินการ เราจะใช้

  • การบวกแบบ โมดูลัส (Modulo หรือเศษเหลือจากการหาร) 2³² 
  • M[i] - ข้อความขนาด 32 บิต
  • K[i] - ค่าคงที่ขนาด 32 บิต
  • <<

พอถึงขั้นตอนนี้ เราจะใช้บัฟเฟอร์ A, B, C และ D โดยผลลัพธ์ของ B จะถูกป้อนให้กับ C, C จะถูกป้อนให้กับ D, และ D จะถูกป้อนให้กับ J หลังจากดำเนินการดังกล่าว เราจะทำการคำนวณเพื่อหาผลลัพธ์ของ A

  1. ใช้ค่าผลลัพธ์ของ B, C และ D และใช้ฟังก์ชัน F กับค่าทั้งหมด จากนั้นนำค่าผลลัพธ์ที่ได้มาบวกแบบโมดูลัส 2³² กับ A
  2. นำค่าข้อความ M[i] มารวมกับผลลัพธ์ของขั้นแรก
  3. เพิ่มค่าคงที่ขนาด 32 บิต (K[i]) เข้าไปในผลลัพธ์ของขั้นที่สอง
  4. ทำการ เลื่อนบิตไปทางซ้าย (Left shift) ตามค่าที่กำหนด n และนำไปบวกแบบ โมดูลัส 2³²

หลังจากดำเนินการทุกขั้นตอน ผลลัพธ์ของ A จะถูกนำไปป้อนให้กับ B และขั้นตอนเดียวกันนี้จะถูกนำไปใช้กับฟังก์ชัน G, H และ I เมื่อทำครบ 64 ขั้นตอน เราจะได้ค่า MD (Message Digest) มา

5. ผลลัพธ์ (Output)

หลังจากดำเนินการครบทุกขั้นตอนแล้ว บัฟเฟอร์ A, B, C และ D จะเก็บค่าผลลัพธ์ของ MD5 โดยเริ่มต้นจากบิตต่ำสุดที่ A และสิ้นสุดที่บิตสูงสุดที่ D ตัวอย่างผลลัพธ์ เช่น "922547e866c89b8f677312df0ccec8ee"

อัลกอริทึม MD5 มีความปลอดภัย หรือไม่ ? (Is MD5 Algorithm Secure ?)

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

  • ผู้โจมตีต้องไม่สามารถสร้างข้อความที่ให้ค่าแฮช ตรงกับค่าที่กำหนดไว้ล่วงหน้าได้
  • ผู้โจมตีต้องไม่สามารถสร้างข้อความสองชุดที่แตกต่างกัน แต่ให้ค่าแฮชเดียวกันได้

จากเหตุผลทั้งสองข้อดังกล่าว ส่งผลให้ MD5 ไม่ถือเป็นวิธีการที่ปลอดภัยสำหรับการเข้ารหัสอีกต่อไป และไม่ควรใช้ในการตรวจสอบสิทธิ์แบบเข้ารหัส ตามข้อแนะนำของคณะทำงานเฉพาะกิจด้านวิศวกรรมอินเทอร์เน็ต หรือ Internet Engineering Task Force (IETF)

ในปี ค.ศ. 2011 (พ.ศ. 2554) IETF ได้เผยแพร่เอกสาร RFC 6151 เรื่อง "Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms" ซึ่งกล่าวถึงการโจมตีที่เกิดขึ้นกับ MD5 หนึ่งในตัวอย่างที่กล่าวถึงคือ สาธิตการสร้างคอลลิชัน (Collision) หรือค่าผลลัพธ์แฮชซ้ำกันภายในเวลาไม่ถึง หนึ่งนาที บนโน้ตบุ๊กธรรมดา ๆ และอีกหนึ่งกรณีที่สามารถสร้างคอลลิชันได้ภายในเวลาเพียง 10 วินาที บนระบบ Pentium 4 ความเร็ว 2.6 GHz

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

ข้อดี-ข้อเสีย ของ อัลกอริทึม MD5 (Pros and Cons of MD5 Algorithm)

ข้อดี

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

ข้อสังเกต

  • MD5 อาจสร้างค่าผลลัพธ์เดียวกันสำหรับข้อมูลนำเข้าที่แตกต่างกัน (Hash Collision)
  • MD5 มีความปลอดภัยน้อยกว่า SHA1, SHA256 และอัลกอริทึมเข้ารหัสสมัยใหม่อื่น ๆ
  • MD5 ถูกพิจารณาว่าเป็นอัลกอริทึมที่ไม่ปลอดภัย ดังนั้นปัจจุบันจึงนิยมใช้ SHA256 แทน MD5
  • MD5 ไม่ใช่อัลกอริทึมเข้ารหัสแบบสมมาตร (Symmetric) หรืออสมมาตร (Asymmetric)

 

ประวัติความเป็นมาของ อัลกอริทึม MD5 (History of MD5 Algorithm)

ค.ศ. 1991 (พ.ศ. 2534)

MD5 เป็นหนึ่งในชุดอัลกอริทึมแฮชที่ได้รับการออกแบบโดย ศาสตราจารย์ Ronald Rivest แห่งสถาบันเทคโนโลยีแมสซาชูเซตส์ (Massachusetts Institute of Technology - MIT) โดยก่อนหน้านี้งานวิเคราะห์ชี้ให้เห็นว่า MD4 ซึ่งเป็นรุ่นก่อนของ MD5 อาจมีช่องโหว่ด้านความปลอดภัย ดังนั้นในปี ค.ศ. 1991 (พ.ศ. 2534) Ronald Rivest จึงพัฒนา MD5 ขึ้นมาเพื่อใช้แทน MD4 ในฐานะอัลกอริทึมที่ปลอดภัยกว่า ซึ่งในเวลาต่อมา Hans Dobbertin ก็พบข้อบกพร่องใน MD4 จริง ๆ

ค.ศ. 1993 (พ.ศ. 2536)

ในปี ค.ศ. 1993 (พ.ศ. 2536) นักวิจัย Den Boer และ Bosselaers ได้นำเสนอผลการศึกษาขั้นต้นเกี่ยวกับช่องโหว่ของฟังก์ชันบีบอัดของ MD5 โดยพบว่าเกิด "Pseudo-Collision" หรือการชนกันของผลลัพธ์ค่าแฮชจากการใช้ เวกเตอร์เริ่มต้นสองตัวที่แตกต่างกัน แต่กลับได้ค่าแฮชเดียวกัน

ค.ศ. 1996 (พ.ศ. 2539)

ในปี ค.ศ. 1996 (พ.ศ. 2539) Hans Dobbertin ได้ประกาศพบ การชนกัน (Collision) ในฟังก์ชันบีบอัดของ MD5 แม้ว่าจะไม่ใช่การโจมตีต่อฟังก์ชันแฮช MD5 ทั้งหมด แต่ผลลัพธ์ที่พบก็เพียงพอที่จะทำให้นักเข้ารหัสแนะนำให้เปลี่ยนไปใช้ทางเลือกอื่น เช่น SHA-1 (ซึ่งต่อมาพบว่ามีช่องโหว่เช่นกัน) หรือ RIPEMD-160

ค.ศ. 2004 (พ.ศ. 2547)

ขนาดของค่าแฮช ที่มีขนาดเพียง 128 บิต เล็กพอที่จะทำให้สามารถใช้การโจมตีแบบ บรูทฟอร์ (Brute Force) ได้อย่างมีประสิทธิภาพ MD5CRK เป็นโครงการคำนวณแบบกระจายที่เริ่มต้นขึ้นในเดือน มีนาคม ค.ศ. 2004 (พ.ศ. 2547) โดยมีเป้าหมายเพื่อพิสูจน์ว่า MD5 ไม่มีความปลอดภัยในทางปฏิบัติผ่านการค้นหาคอลลิชัน 

MD5CRK สิ้นสุดลงไม่นานหลังจากวันที่ 17 สิงหาคม ค.ศ. 2004 (พ.ศ. 2547) เมื่อทีมนักวิจัย Xiaoyun Wang, Dengguo Feng, Xuejia Lai และ Hongbo Yu ประกาศว่าพบคอลลิชันของ MD5 อย่างสมบูรณ์ การโจมตีทางวิเคราะห์ของพวกเขาถูกระบุว่าใช้เวลาเพียง 1 ชั่วโมง บนระบบ IBM p690 Cluster

ค.ศ. 2005 (พ.ศ. 2548)

เมื่อวันที่ 1 มีนาคม ค.ศ. 2005 (พ.ศ. 2548) Arjen Lenstra, Xiaoyun Wang และ Benne de Weger ได้สาธิตการสร้างใบรับรอง X.509 สองใบ ที่มี Public Key ต่างกัน แต่กลับให้ค่าแฮช MD5 เดียวกัน ซึ่งถือเป็น การชนกัน (Collision) ที่สามารถนำไปใช้ได้จริง นอกจากนี้ การสร้างใบรับรองดังกล่าวยังรวมถึง Private Key สำหรับทั้งสอง Public Key อีกด้วย

ไม่กี่วันต่อมา Vlastimil Klima ได้นำเสนอ อัลกอริทึมที่ปรับปรุงใหม่ ซึ่งสามารถสร้าง การชนกันของ MD5 ได้ภายในเวลาเพียงไม่กี่ชั่วโมงบนโน้ตบุ๊กเครื่องเดียว

ค.ศ. 2006 (พ.ศ. 2549)

ต่อมาในวันที่ 18 มีนาคม ค.ศ. 2006 (พ.ศ. 2549) Vlastimil Klima คนเดิม ได้เผยแพร่อัลกอริทึมที่สามารถ ค้นหาคอลลิชันของ MD5 ได้ภายในหนึ่งนาทีบนโน้ตบุ๊กเครื่องเดียว โดยใช้เทคนิคที่เรียกว่า "Tunneling"

ค.ศ. 2009 (พ.ศ. 2552)

มีการเผยแพร่ "การร้องขอความคิดเห็น (Request for Comments - RFC) ที่เกี่ยวข้องกับ MD5 หลายรายการ ในปี ค.ศ. 2009 (พ.ศ. 2552) หน่วยบัญชาการไซเบอร์แห่งสหรัฐฯ (United States Cyber Command) ได้นำค่าผลลัพธ์แฮช MD5 ของคำแถลงภารกิจของพวกเขา มาใช้เป็นส่วนหนึ่งของสัญลักษณ์ทางการ

ค.ศ. 2010 (พ.ศ. 2553)

เมื่อวันที่ 24 ธันวาคม ค.ศ. 2010 (พ.ศ. 2553) Tao Xie และ Dengguo Feng ได้ประกาศการค้นพบ คอลลิชันของ MD5 แบบบล็อกเดียว (512 บิต) เป็นครั้งแรกที่เปิดเผยแพร่ต่อสาธารณะ ก่อนหน้านี้ การค้นพบการชนกันของ MD5 อาศัยการโจมตีแบบหลายบล็อก

ในกรณีนี้ Xie และ Feng ไม่ได้เปิดเผยวิธีการโจมตีใหม่ ด้วยเหตุผลด้านความปลอดภัย แต่พวกเขาได้ออกคำท้าต่อชุมชนวิจัยด้านเข้ารหัส โดยเสนอ รางวัล 10,000 ดอลลาร์สหรัฐฯ (ประมาณ 324,850 บาท) ให้กับผู้ค้นพบการชนกันแบบ 64 ไบต์ ก่อนวันที่ 1 มกราคม ค.ศ. 2013 (พ.ศ. 2556)

Marc Stevens รับคำท้านี้ และได้เผยแพร่ข้อความที่ชนกัน รวมถึงอัลกอริทึมการสร้าง และ โค้ดต้นฉบับ (Source Code)

ค.ศ. 2011 (พ.ศ. 2554)

ในปี ค.ศ. 2011 (พ.ศ. 2554) มีการอนุมัติเอกสาร RFC 6151 ซึ่งเป็นเอกสารเชิงข้อมูลที่ อัปเดตข้อพิจารณาด้านความปลอดภัยของ MD5 และ HMAC-MD5


ที่มา : www.geeksforgeeks.org , www.techtarget.com , en.wikipedia.org

0 MD5+Algorithm+%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3+%3F+%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%82%E0%B9%89%E0%B8%B2%E0%B8%A3%E0%B8%AB%E0%B8%B1%E0%B8%AA%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%99%E0%B8%B5%E0%B9%89+%E0%B8%A1%E0%B8%B5%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B8%9B%E0%B8%A5%E0%B8%AD%E0%B8%94%E0%B8%A0%E0%B8%B1%E0%B8%A2%E0%B8%AB%E0%B8%A3%E0%B8%B7%E0%B8%AD%E0%B9%84%E0%B8%A1%E0%B9%88+%3F+%E0%B9%81%E0%B8%A5%E0%B8%B0%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%94%E0%B8%B5-%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B9%80%E0%B8%AA%E0%B8%B5%E0%B8%A2
แชร์หน้าเว็บนี้ :
Keyword คำสำคัญ »
เขียนโดย
ระดับผู้ใช้ : Admin    Thaiware
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ
 
 
 

ทิปส์ไอทีที่เกี่ยวข้อง

 


 

แสดงความคิดเห็น

ความคิดเห็นที่ 1
วันนี้ 15:22:36
GUEST
Comment Bubble Triangle
Minna
Cabinet IQ
8305 State Hwy 71 #110, Austin,
TX 78735, United Ⴝtates
254-275-5536
Doors