Hashing được sử dụng để làm gì?

Hashing được sử dụng để làm gì?

Mục đích chính của hashing là xác minh tính toàn vẹn của một dữ liệu.

Vì hash được tạo ra là DUY NHẤT với dữ liệu input, nó hoạt động như một “dấu vân tay” duy nhất của dữ liệu input đó.

Điều này khiến hash trở nên hữu ích để xác minh tính toàn vẹn của dữ liệu được gửi qua các kênh giao tiếp không an toàn như internet. Tính toàn vẹn dữ liệu nghĩa là dữ liệu không bị thay đổi một cách không được phép.

Giá trị hash của dữ liệu nhận được có thể được so sánh với giá trị hash của dữ liệu trước khi gửi để xác định xem dữ liệu có bị thay đổi hay không.

Nếu tôi đăng cả tin nhắn và giá trị hash mà tôi tạo ra từ nó, bạn có thể tạo hash từ tin nhắn bạn nhận được và so sánh hai giá trị hash.

Sử dụng một ví dụ rất đơn giản, giả sử chúng ta sắp gặp nhau ăn trưa, và ngay trước khi tôi ra khỏi nhà, tôi nhớ lại lần gặp trước…

body odor

Tính cách của bạn thì rất dễ thương, nhưng mùi của bạn thì không dễ chịu chút nào. 😬

Vì vậy tôi muốn gửi cho bạn tin nhắn: “Làm ơn hãy xịt khử mùi.

Nhưng trước khi gửi, tôi chạy nó qua hàm băm (SHA-256). Hash là:

33ebb528eab107766343d0ac591952bb68ee959d45b7a8b399628e662f3bc1ef

Tôi gửi hash này cho bạn trước.*

SAU ĐÓ tôi mới gửi tin nhắn văn bản thực tế.

Khi bạn nhận được tin nhắn, bạn nghĩ: “WTF? Anh ấy thật sự vừa nói vậy với mình sao? Hay tin nhắn đã bị chặn trong lúc truyền và tin nhắn gốc bị thay đổi?”

xit khu mui

Vậy bạn chạy tin nhắn qua cùng hàm băm.

33ebb528eab107766343d0ac591952bb68ee959d45b7a8b399628e662f3bc1ef

Sau đó bạn so sánh hash của bạn với hash được gửi trước tin nhắn.

Nếu cả hai giá trị hash giống nhau, điều này chứng minh rằng:

  1. Tin nhắn đã được gửi đúng.
  2. Nách của bạn thật sự có mùi!
  3. Tin nhắn chưa bị ai đó cố tình thay đổi trong quá trình từ lúc tôi gửi đến lúc bạn nhận.

Tất nhiên, trong thế giới thực, máy tính của chúng ta sẽ làm tất cả những việc này thay cho chúng ta.

*Về mặt kỹ thuật, trước khi tôi gửi hash cho bạn, nó nên được bảo vệ bằng cách nào đó, nhưng tôi muốn giữ ví dụ đơn giản. Cách hash được bảo vệ trong quá trình truyền sẽ được đề cập ở bài học sau.

Ví dụ thực tế của Hashing: Mật khẩu trực tuyến

Điều này có thể làm bạn ngạc nhiên, nhưng bạn có lẽ gặp hashing hàng ngày… mỗi khi đăng nhập kiểm tra email. 📧

su dung hashing de dang nhap email

Khi bạn tạo địa chỉ email và mật khẩu, nhà cung cấp email của bạn có lẽ không lưu mật khẩu thực của bạn.

Thay vào đó, họ chạy mật khẩu qua hàm băm và lưu hash của mật khẩu bạn.

Mỗi lần bạn cố gắng đăng nhập vào tài khoản email, nhà cung cấp email sẽ hash mật khẩu BẠN nhậpso sánh hash này với hash họ đã lưu.

Chỉ khi hai hash khớp nhau, bạn mới được phép truy cập email.

Hãy xem tại sao họ KHÔNG lưu mật khẩu thực của bạn…

hashing mat khau

Nếu mật khẩu thực được lưu trữ, và hacker xâm nhập vào hệ thống, chúng có thể đánh cắp chúng. Điều này hoàn toàn không tốt cho người dùng sử dụng cùng một mật khẩu cho nhiều website!

Giải pháp là hash mật khẩu…

hashing mat khau 2

Bằng cách băm mật khẩu, công ty bảo vệ thông tin người dùng. Ngay cả khi hacker đột nhập vào hệ thống, chúng cũng không có được mật khẩu thực, mà chỉ có hash.

Hãy nhớ rằng, hash là không thể đảo ngược nên hacker không thể tìm ra mật khẩu thực chỉ bằng cách nhìn vào hash. Hashing đảm bảo dữ liệu được lưu ở trạng thái xáo trộn, nên khó bị đánh cắp hơn.

hashing mat khau 3

Mỗi khi bạn đăng nhập, nhà cung cấp email không lưu mật khẩu dạng văn bản thuần, tất cả những gì họ cần là hash.

Khi bạn nhập mật khẩu, nó sẽ được chạy qua hàm băm.

Output được so khớp với hash được lưu trong cơ sở dữ liệu.

Nếu giá trị hash giống nhau, mật khẩu là đúng.

Mật khẩu sai sẽ tạo ra hash khác với hash đã lưu. Hai hash sẽ KHÔNG khớp, nên nỗ lực đăng nhập của bạn sẽ THẤT BẠI.

Vậy như bạn thấy, hàm băm làm xáo trộn dữ liệu và khiến nó không thể đọc được. Ngay cả khi hacker tiếp cận được server của nhà cung cấp email, các thông tin được lưu cũng không thể giải mã.

Nguồn: https://www.babypips.com/crypto/learn/what-is-hashing-used-for