การเข้ารหัส password ในฐานข้อมูลระหว่าง AES กับ MD5

เริ่มโดย WinWinSolution, 23 กรกฎาคม 2011, 09:39:30

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

icez

md5 ไม่ใช่การเข้ารหัสนะครับ มันคือการทำ checksum (ผลรวมเป็น hash) ของข้อมูลที่ป้อนเข้าไป
ซึ่งการทำ checksum เนี่ย มันคือการ " บวก ลบ คูณ หาร " ข้อมูลที่ป้อนเข้าไปให้ออกมาเป็นเลขชุดนึงที่มีความยาวแน่นอน

และที่บอกว่ามันถอดรหัสไม่ได้ สาเหตุเพราะ ถ้าถามคุณว่า เลข 100000 เกิดจากเลขอะไรมาบวกกันบ้าง
โดยไม่บอกว่ามีเลขกี่ชุดมาบวกกัน จะมีใครตอบได้บ้างมั้ยครับว่าคำตอบคืออะไร? นี่คือหลักการของการทำ checksum ครับ

เพราะงั้น md5 ถอดรหัสไม่ได้แน่นอน แต่สามารถทำให้รหัสซ้ำกันได้ โดยที่ข้อมูลไม่ต้องเหมือนกัน
(มีคนเจอช่องโหว่นี้มาแล้ว)

ตัวที่จะเอามาใช้แทน md5 ได้ก็คือ sha1 ครับ
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

dreamer

อ้างถึงจาก: icez ใน 24 กรกฎาคม 2011, 16:50:55
md5 ไม่ใช่การเข้ารหัสนะครับ มันคือการทำ checksum (ผลรวมเป็น hash) ของข้อมูลที่ป้อนเข้าไป
ซึ่งการทำ checksum เนี่ย มันคือการ " บวก ลบ คูณ หาร " ข้อมูลที่ป้อนเข้าไปให้ออกมาเป็นเลขชุดนึงที่มีความยาวแน่นอน

และที่บอกว่ามันถอดรหัสไม่ได้ สาเหตุเพราะ ถ้าถามคุณว่า เลข 100000 เกิดจากเลขอะไรมาบวกกันบ้าง
โดยไม่บอกว่ามีเลขกี่ชุดมาบวกกัน จะมีใครตอบได้บ้างมั้ยครับว่าคำตอบคืออะไร? นี่คือหลักการของการทำ checksum ครับ

เพราะงั้น md5 ถอดรหัสไม่ได้แน่นอน แต่สามารถทำให้รหัสซ้ำกันได้ โดยที่ข้อมูลไม่ต้องเหมือนกัน
(มีคนเจอช่องโหว่นี้มาแล้ว)

ตัวที่จะเอามาใช้แทน md5 ได้ก็คือ sha1 ครับ


ขอข่าวนี้ได้มั้ยครับ ว่ามีคนเจอช่องโหว่ แล้วอะครับ

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

ถ้าเจอช่องโหว่จริงพวกนักคณิตศาสตร์ที่พูสูจน์อัลกอร์พวกนี้ ก็หน้าแต่กกันหมดเลยอะดิ

vii

อ้างถึงจาก: dreamer ใน 24 กรกฎาคม 2011, 21:08:43
อ้างถึงจาก: icez ใน 24 กรกฎาคม 2011, 16:50:55
md5 ไม่ใช่การเข้ารหัสนะครับ มันคือการทำ checksum (ผลรวมเป็น hash) ของข้อมูลที่ป้อนเข้าไป
ซึ่งการทำ checksum เนี่ย มันคือการ " บวก ลบ คูณ หาร " ข้อมูลที่ป้อนเข้าไปให้ออกมาเป็นเลขชุดนึงที่มีความยาวแน่นอน

และที่บอกว่ามันถอดรหัสไม่ได้ สาเหตุเพราะ ถ้าถามคุณว่า เลข 100000 เกิดจากเลขอะไรมาบวกกันบ้าง
โดยไม่บอกว่ามีเลขกี่ชุดมาบวกกัน จะมีใครตอบได้บ้างมั้ยครับว่าคำตอบคืออะไร? นี่คือหลักการของการทำ checksum ครับ

เพราะงั้น md5 ถอดรหัสไม่ได้แน่นอน แต่สามารถทำให้รหัสซ้ำกันได้ โดยที่ข้อมูลไม่ต้องเหมือนกัน
(มีคนเจอช่องโหว่นี้มาแล้ว)

ตัวที่จะเอามาใช้แทน md5 ได้ก็คือ sha1 ครับ


ขอข่าวนี้ได้มั้ยครับ ว่ามีคนเจอช่องโหว่ แล้วอะครับ

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

ถ้าเจอช่องโหว่จริงพวกนักคณิตศาสตร์ที่พูสูจน์อัลกอร์พวกนี้ ก็หน้าแต่กกันหมดเลยอะดิ

คุณไม่ต้องไปกังวลเรื่องการยอมรับอะไรกับ md5 มากหรอกครับ
http://php.net/manual/en/function.md5.php md5
http://www.php.net/manual/en/function.sha1.php sha1
อย่างที่คุณ icez ว่ามามันคือการคำณวนจริงๆ (Calculate)

ลำพังใช้แค่ md5 ทีเดียว คุณอาจหนาวๆร้อนๆได้ แต่ถ้าคุณเอามันมาผสมกัน เช่นเอาคีย์หลักของเว็บผสมลงไป อาจจะทำหลายๆชั้น ตย.
md5(md5($key.":".$password.$key));
ผลลัพธ์ของรหัสผ่าน abcd ก็ออกมาแตกต่างจาก md5 รอบเดียวธรรมดาๆแล้ว
แล้วยิ่งถ้าเอา sha1 ผสมเข้าไปด้วย ยิ่งดูยากยุ่งเหยิงแกะไม่ออกเข้าไปใหญ่
อันนี้ตอบโจทย์สำหรับคนที่กลัวการเจอช่องโหว่รหัสซ้ำนะครับ ถ้าใส่คีย์ซ้ำๆซ้อนๆ จัดตำแหน่งเอาเอง อาจใช้ sha1 มาช่วยอีกทีสองที เก่งยังไงก็แกะยาก

ทีนี้มันมีอีกทางหนึ่งที่ผมว่าคุณควรไปกังวลตรงนั้นมากกว่า นั่นคือการสุ่มเดารหัสผ่าน  (ขออภัยถ้ารู้แล้วครับ)
http://en.wikipedia.org/wiki/Brute-force_attack (brute force attack)
ซึ่งคนร้ายไม่ต้องมานั่งแฮค server เพื่อเอารหัสไปเทียบกับ database key อะไรนั่นเลย ใช้โปรแกรมสุ่มไปเรื่อยๆจนกว่าจะเจอ
คนที่จะโดนด้วยวิธีนี้ก็คือคนตั้งรหัสผ่านแบบง่ายๆ
ทางช่วยป้องกันก็คือนับจำนวนครั้งที่ log in ผิด เช่นเกิน 3 ครั้งให้ captcha โผล่มาและบังคับเช็ค captcha & ถ้าเกิน 10 ครั้งให้รอครึ่งชั่วโมง เป็นต้น
[direct=https://rundiz.com]PHP, HTML, JS, CSS[/direct]

icez

[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

bigz3105

อ้างถึงจาก: dreamer ใน 24 กรกฎาคม 2011, 21:08:43
อ้างถึงจาก: icez ใน 24 กรกฎาคม 2011, 16:50:55
md5 ไม่ใช่การเข้ารหัสนะครับ มันคือการทำ checksum (ผลรวมเป็น hash) ของข้อมูลที่ป้อนเข้าไป
ซึ่งการทำ checksum เนี่ย มันคือการ " บวก ลบ คูณ หาร " ข้อมูลที่ป้อนเข้าไปให้ออกมาเป็นเลขชุดนึงที่มีความยาวแน่นอน

และที่บอกว่ามันถอดรหัสไม่ได้ สาเหตุเพราะ ถ้าถามคุณว่า เลข 100000 เกิดจากเลขอะไรมาบวกกันบ้าง
โดยไม่บอกว่ามีเลขกี่ชุดมาบวกกัน จะมีใครตอบได้บ้างมั้ยครับว่าคำตอบคืออะไร? นี่คือหลักการของการทำ checksum ครับ

เพราะงั้น md5 ถอดรหัสไม่ได้แน่นอน แต่สามารถทำให้รหัสซ้ำกันได้ โดยที่ข้อมูลไม่ต้องเหมือนกัน
(มีคนเจอช่องโหว่นี้มาแล้ว)

ตัวที่จะเอามาใช้แทน md5 ได้ก็คือ sha1 ครับ


ขอข่าวนี้ได้มั้ยครับ ว่ามีคนเจอช่องโหว่ แล้วอะครับ

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

ถ้าเจอช่องโหว่จริงพวกนักคณิตศาสตร์ที่พูสูจน์อัลกอร์พวกนี้ ก็หน้าแต่กกันหมดเลยอะดิ

ถ้าคุณได้เรียน ทฤษฏีคอมไพเลอร์ มาคุณจะไม่พูดอย่างนี้หรอก
แต่ก่อนผมก็คิดเหมือนคุณนี่ละว่า พวก software ด้านความปลอดภัยต่าง ๆ นั้นมันไม่มีช่องโหว่

แต่หลังจากที่เรียนแล้วพบว่า ทฤษฏี ต่าง ๆ ในระบบคอมพิวเตอร์นั้นเจาะได้ทุกระบบครับมันมี

ช่องโหว่ทุกอย่างครับ ไม่มีอะไรเลยที่ยอมรับและปลอดภัย 100%
รับทำเว็บไซด์ขนาดเล็ก ไปจนถึง ERP
BIRD [SUPHAN] I'm Programmer,I have no life. colorful life.
web & mobile app developer. รับทำเว็บไซด์ & mobile app.
รับทำระบบดึงสินค้า & จัดการ shipping จากจีน
[direct=https://www.torfunbrand.com]ของเล่นเด็ก[/direct][direct=https://www.saledidi.com]ของเล่นเด็ก ราคาถูก[/direct]

dreamer

1. ผมเคยเรียนคอมไพล์เลอร์ ครับ
2. ผมยอมรับว่า ระบบ security ต่างๆ มีช่องโหว่ แต่ผมกำลังพูดถึง MD5 ครับ ไม่ใช่ระบบรักษาความปลอดภัย
3. ผมรู้ครับที่ ผลลัพธ์ของ MD5 เกิดจากคำนวณ ผมเคยรับจ้างเขียนโปรแกรมเพื่อคำนวณ MD5 ผมบอกเขาไปแล้วว่า php มี function นี้อยู่แล้ว แต่เขาอยากให้เขียนใหม่
4. เป้าหมายหลักของ MD5 คือการแปลงจากค่าหนึ่งไปเป็นอีกค่าหนึ่ง ซึ่งค่าที่เป็นผลลัพธ์จะต้องไม่ซ้ำกับค่ากับค่าที่แปลงมาจากค่าอื่นเลย นี่คือเป้าหมายของมัน  แต่ถ้าสมมุติว่ามันเกิดมีค่าที่ได้จากการทำ MD5 ของ 2 ค่าแล้วได้ผลลัพธ์เหมือนกัน แสดงว่ามันก็ผิดเป้าหมาย ผมจึงบอกว่ามันใช่ไม่ได้
5. ต่อจากข้อ 4 ถ้ามีการพิสูจน์ได้ว่า MD5 ของ 2 ค่าที่ต่างกัน ได้ผลลัพธ์เหมือนกัน อัลกอลิทึมที่สอนกันในชั้นเรียนก็ผิดสิครับ

ผมตอบก่อนที่จะไปอ่าน link ของคุณ icez นะครับ
อ่านเสร็จแล้วจะมาตอบอีกครั้งครับ

icez

อ้างถึงจาก: dreamer ใน 24 กรกฎาคม 2011, 23:16:02
1. ผมเคยเรียนคอมไพล์เลอร์ ครับ
2. ผมยอมรับว่า ระบบ security ต่างๆ มีช่องโหว่ แต่ผมกำลังพูดถึง MD5 ครับ ไม่ใช่ระบบรักษาความปลอดภัย
3. ผมรู้ครับที่ ผลลัพธ์ของ MD5 เกิดจากคำนวณ ผมเคยรับจ้างเขียนโปรแกรมเพื่อคำนวณ MD5 ผมบอกเขาไปแล้วว่า php มี function นี้อยู่แล้ว แต่เขาอยากให้เขียนใหม่
4. เป้าหมายหลักของ MD5 คือการแปลงจากค่าหนึ่งไปเป็นอีกค่าหนึ่ง ซึ่งค่าที่เป็นผลลัพธ์จะต้องไม่ซ้ำกับค่ากับค่าที่แปลงมาจากค่าอื่นเลย นี่คือเป้าหมายของมัน  แต่ถ้าสมมุติว่ามันเกิดมีค่าที่ได้จากการทำ MD5 ของ 2 ค่าแล้วได้ผลลัพธ์เหมือนกัน แสดงว่ามันก็ผิดเป้าหมาย ผมจึงบอกว่ามันใช่ไม่ได้
5. ต่อจากข้อ 4 ถ้ามีการพิสูจน์ได้ว่า MD5 ของ 2 ค่าที่ต่างกัน ได้ผลลัพธ์เหมือนกัน อัลกอลิทึมที่สอนกันในชั้นเรียนก็ผิดสิครับ

ผมตอบก่อนที่จะไปอ่าน link ของคุณ icez นะครับ
อ่านเสร็จแล้วจะมาตอบอีกครั้งครับ
เอาแบบไม่ต้องไปพึ่งพาอะไรเลยนะครับ


ผลลัพท์ของ MD5 มีความยาวตายตัวเสมอ คือ 128 bit รูปแบบค่าที่เป็นไปได้ของมันจึงมีแค่ 2^128 เท่านั้นครับ
ไม่มากมายอะไรนัก แค่ ราวๆ "340 ล้านล้านล้านล้านล้านล้าน" (3.4 x 1038) รูปแบบที่ไม่ซ้ำกัน
เพราะงั้น ถ้ามีรูปแบบมากกว่านี้อีก 1 รูปแบบ จะทำให้ผลลัพท์ "ต้อง" มีการซ้ำกับผลลัพท์ของข้อความต้นแบบก่อนหน้านี้แน่นอนครับ

[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

dreamer

ขอบคุณ คุณ icez

เท่าที่อ่านดูเขาพบอัลกอลิทึมในการหา data 2 ตัวที่มี MD5 เหมือนกันได้แล้ว ตั้งแต่ปี 2004-2005

คนที่ออกแบบอัลกอลิทึม ก็ออกมายอมรับเองว่า

MD5's designer Ron Rivest wrote, "md5 and sha1 are both clearly broken (in terms of collision-resistance),"

จากในข้อความนี้ก็แสดงว่า ทั้ง MD5 และ SHA1 ก็ใช้ไม่ได้ทั้งคู่

ใน wiki บอกว่าหน่วยงานของรัฐบาลของสหรัฐจะใช้การเข้ารหัสแบบ SHA-2

----
เรื่องรูปแบบที่เป็นไปได้ของการเข้ารหัส ผมก็ลืมคิดเรื่องนี้ไป

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

WinWinSolution

ขอบคุณครับสำหรับคำตอบทุกๆโพส  ขอบคุณครับ

:wanwan017:
if  you!=(solution)
    you=problem;
else exit ( ^ ^ );

WinWinSolution

update ผมลอง decode  md5 กับ เว็บนี้ดูมันถอดรหัสกลับมาได้ครับ
หรือยังงัยกันแน่ ช่วยดูหน่อยครับ

http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php
if  you!=(solution)
    you=problem;
else exit ( ^ ^ );

amazegu

อ้างถึงจาก: WinWinSolution ใน 26 กรกฎาคม 2011, 09:06:19
update ผมลอง decode  md5 กับ เว็บนี้ดูมันถอดรหัสกลับมาได้ครับ
หรือยังงัยกันแน่ ช่วยดูหน่อยครับ

http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php

รหัสมันง่ายเกินไปหรือเปล่าคับ ผมทดสอบกับพาสของผม มันบอกว่า Hash"xxx" not found in database. :wanwan023: :wanwan023: :wanwan023:

itportal

อ้างถึงจาก: amazegu ใน 26 กรกฎาคม 2011, 09:25:19
อ้างถึงจาก: WinWinSolution ใน 26 กรกฎาคม 2011, 09:06:19
update ผมลอง decode  md5 กับ เว็บนี้ดูมันถอดรหัสกลับมาได้ครับ
หรือยังงัยกันแน่ ช่วยดูหน่อยครับ

http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php

รหัสมันง่ายเกินไปหรือเปล่าคับ ผมทดสอบกับพาสของผม มันบอกว่า Hash"xxx" not found in database. :wanwan023: :wanwan023: :wanwan023:

เค้าเก็บรหัสผ่านที่แปลงผ่าน md5 ไว้ถึง 20,000,000 ข้อมูล เพราะฉะนั้น รหัสไหนที่เค้าไม่ได้ใส่ในดาต้าเบส จึงหาไม่เจอไงครับ

รหัสผ่าน อย่าตั้งเป็นคำง่ายๆ ที่มีความหมายในพจนานุกรม
[direct=http://phuketecho.blogspot.com/]ภูเก็ต[/direct] | [direct=http://www.phuketoriginalseafood.com]Phuket Seafood Restaurant[/direct] | [direct=http://www.phuketecho.com]Phuket classifieds[/direct]

WinWinSolution

อ้างถึงจาก: itportal ใน 26 กรกฎาคม 2011, 10:08:04
อ้างถึงจาก: amazegu ใน 26 กรกฎาคม 2011, 09:25:19
อ้างถึงจาก: WinWinSolution ใน 26 กรกฎาคม 2011, 09:06:19
update ผมลอง decode  md5 กับ เว็บนี้ดูมันถอดรหัสกลับมาได้ครับ
หรือยังงัยกันแน่ ช่วยดูหน่อยครับ

http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php

รหัสมันง่ายเกินไปหรือเปล่าคับ ผมทดสอบกับพาสของผม มันบอกว่า Hash"xxx" not found in database. :wanwan023: :wanwan023: :wanwan023:

เค้าเก็บรหัสผ่านที่แปลงผ่าน md5 ไว้ถึง 20,000,000 ข้อมูล เพราะฉะนั้น รหัสไหนที่เค้าไม่ได้ใส่ในดาต้าเบส จึงหาไม่เจอไงครับ

รหัสผ่าน อย่าตั้งเป็นคำง่ายๆ ที่มีความหมายในพจนานุกรม
อ้อ ครับ หมายความว่าโปรแกรมไม่ได้ ถอดรหัส แต่ค้นหารหัสในฐานข้อมูลมาให้เรานี่เองเหรอครับ
if  you!=(solution)
    you=problem;
else exit ( ^ ^ );