Thắc mắc về mã hóa MD5


Từ: 10:39 21/09/2012
Bài: 33
Cảm ơn: 30
Thích: 10

Có lần em nghe thấy: "Định hướng sẽ phát triển là mã hóa MD5 cho mật khẩu để nâng cao tính bảo mật"

Em đang thắc mắc: Mục đích chính của mã hóa MD5 là gì? - Khi mà vẫn có thể giải mã được MD5

Giải đáp giúp em với ạ? :D

Label
Từ: 14:19 26/07/2012
Bài: 87
Cảm ơn: 77
Thích: 12

Mục đích là để ...mã hóa chứ còn là gì hả bạn

Label
Từ: 12:10 27/09/2012
Bài: 155
Cảm ơn: 178
Thích: 28

MD5 là một dạng Hash. Dùng để "băm" chuỗi kí tự sang một dãy kí tự mã hóa. Đặc điểm của MD5 là mã hóa một chiều, tức là không có chiều giải mã ngược lại. Cách duy nhất để đoán được đoạn mã trước khi bị "băm" là so sánh nó với thu viện có sẵn. Quá trình so sánh này gọi là brute force. Với các chuỗi cần mã hóa nhưng quá đơn giản thì thường có thể brute force được ngay. Ví dụ như 123456, abcde...

Tuy có thể brute force được nếu mật khẩu không quá khó hoặc nằm trong danh sách các mật khẩu hay dùng nhưng nếu ta mã hóa MD5 2 -3lần thì có thể nói là rất ít trình brute force hay máy tính nào có thể giải mã ra được. Các Web App hiện đại đều dùng thêm một mã salt trong việc mã hóa mật khẩu của mình. Tuy nhiên một số cái không có thì vẫn đưa ra lời khuyên cho người dùng là hãy đặt mật khẩu thật khó đoán và lạ...

Một ví dụ về brote force

Chuỗi 123456 có mã MD5 là :e10adc3949ba59abbe56e057f20f883e

Sau đó vào trang http://www.md5cracker.org/ và thử Decrypt lại đoạn mã trên sẽ ra kết quả là 123456.

Lần 2 ta mã hóa tiếp đoạn e10adc3949ba59abbe56e057f20f883e

Ma MD5 của nó là 14e1b600b1fd579f47433b88e8d85291

Vào tiếp trang trên để Decrypt lại lần nữa thì vẫn ra được đoạn e10adc3949ba59abbe56e057f20f883e và tiếp tục Decrypt đoạn e10adc3949ba59abbe56e057f20f883e thì sẽ ra 123456

Tiep tục với một mã salt là a5ecd. Mã salt là một mã số duy nhất dành cho mỗi User. Sau đó gắn mã này vào mã MD5 của 123456 là e10adc3949ba59abbe56e057f20f883e sẽ thành e10adc3949ba59abbe56e057f20f883a5ecd. Sau đó mã hóa đoạn e10adc3949ba59abbe56e057f20f883ea5ecdta được mã 772970d7fca7a8528f0d0e3fbe39a99c. Vào lại trang trên Decrypt thì Not Found :D

Thân.

 

 

Label
Từ: 10:39 21/09/2012
Bài: 33
Cảm ơn: 30
Thích: 10

@puka. Vâng! Đúng là để mã hóa thật cool

@admin, Cảm ơn vì đã chia sẻ. Giờ thì mình biết thêm cách nữa là gắn thêm một đoạn mã nữa khi mã hóa ở những lần sau. Lúc đầu mình chỉ nghĩ đến việc mã hóa nhiều lần :)

có lẽ mã hóa nhiều lần + gắn thêm đoạn mã trong quá trình encrypt ở những lần sau cũng đã đủ bảo mật rồi! Không nhất thiết phải mã duy nhất dành cho người dùng đâu nhỉ? Vì như vậy khác gì xác định riêng một quy luật mã hóa của riêng mình đâu :3
 
P/S: Bạn thử giải mã đoạn mã trên bằng trang http://www.md5decrypt.org/ thử xem nhé!
Không not found nữa đâu :v
Label
Từ: 12:10 27/09/2012
Bài: 155
Cảm ơn: 178
Thích: 28

Vậy thì cái trang đó rất là mạnh rồi. :3 Tuy nhiên cũng rất khó để dò ra pass lần thứ 2 vì chuỗi sinh ra được sắp xếp lộn xộn, trong trường hợp trên là chèn salt vào cuối, nhưng cũng có cái chèn vào giữa của chuối, như vậy sẽ không biết chuỗi MD5 mã hóa lần thứ nhất nằm ở đâu :D

Còn chuỗi salt nó không chỉ dùng để thêm vào mã hóa, mà nó còn dùng với một só mục đích khác nữa là cá nhân hóa mật khẩu người dùng. Mình thấy các chuỗi salt thường chứa kí tự đặc biệt như dấu chấm, ngoặc (, #,$,%.... Nếu thử cái đó thì khó đấy. Ví dụ với chuỗi ntn:

e10adc3949ba59abbe56e057f20f883.$%al

Mà cái trang trên lưu data của hash mình nhập vào, lần đầu không được, nhưng lần thứ 2 sẽ được nếu mình Encrypt tại trang đó.

Trên thực tế thì người ta thường dùng các kĩ thuật bảo mật tránh lộ password thôi. Còn nếu lấy được mã dạng Hash thì cũng có rất nhiều cách để Decrypt cho nó. Ngoài MD5 thì có rất nhiều loại mã hóa khác tốt hơn như DES, AES...