Hash Là Gì Và Hash Dùng Để Làm Gì?

Băm là một kỹ thuật rất quan trọng và có tính ứng dụng cao, đặc biệt là trong lĩnh vực bảo mật. Bài viết hôm nay sẽ cung cấp cho các bạn những hiểu biết cơ bản về hashing và một số ứng dụng thực tế của nó.

Băm (băm)?

Băm là quá trình biến đầu vào thành nội dung có kích thước và độ dài tùy ý, sau đó sử dụng các thuật toán và công thức toán học để biến nó thành đầu ra tiêu chuẩn có độ dài nhất định. Quá trình này sử dụng hàm băm.

Ví dụ: bạn tải xuống một video trên youtube và chạy nó thông qua hàm băm có tên là md5 trả về một chuỗi dài 32 ký tự hoặc bạn tải xuống một hình ảnh từ internet và chuyển nó qua hàm md5 để chạy nó, bạn vẫn nhận được một Chuỗi dài 32 ký tự. Thậm chí, nếu bạn chạy từ “apple” thông qua hàm băm md5 khác, kết quả sẽ là “1f3870be274f6c49b3e31a0c6728957f”, cũng là một chuỗi 32 ký tự. Các thuật toán băm khác hoạt động tương tự, bất kể bạn nhập gì vào hàm, đầu ra luôn là một chuỗi có độ dài nhất định.

Băm mật mã

Như tên gợi ý, loại hàm băm này được sử dụng cho mục đích mã hóa dữ liệu. Các hàm băm mật mã tương tự như các hàm băm thông thường, nhưng có nhiều đặc điểm khác, quan trọng nhất là không thể đảo ngược. Điều này có nghĩa là khi bạn có hàm băm, bạn không thể biết giá trị ban đầu là gì. Dễ dàng như uống một ly sinh tố thơm ngon, nhưng không thể liệt kê hết các thành phần của nó.

Ngoài ra, hàm băm mật mã còn một số tính chất khác như tránh xung đột (xảy ra khi hai giá trị khác nhau nhưng trả về hai kết quả giống nhau khi chạy hàm băm), tính hiệu quả (thời gian tính toán của hàm băm phải nhanh ) và độ nhạy (một thay đổi nhỏ trong giá trị ban đầu có thể thay đổi hoàn toàn hàm băm).

Một số hàm băm thường dùng

md5

md5 được thiết kế bởi ronald rivest vào năm 1991 để thay thế hàm băm md4 trước đó và trở thành tiêu chuẩn trong rfc 1321 vào năm 1992. md5 tạo ra thông báo 128 bit (16 byte). Tuy nhiên, vào đầu những năm 2000, md5 và các hàm băm sau này không tránh khỏi khả năng tính toán của các hệ thống máy tính thế hệ tiếp theo. Với những tiến bộ gần đây về sức mạnh tính toán và kỹ thuật phân tích mật mã, chúng ta có thể tính toán các va chạm ở md5 có độ phức tạp 2^21, một thao tác chỉ mất vài giây khiến thuật toán này không phù hợp. Thích hợp cho hầu hết các trường hợp sử dụng thực tế.

Cát 1

sha-1, viết tắt của Thuật toán băm an toàn, được phát triển như một phần của dự án quan trọng nhất của chính phủ Hoa Kỳ. Phiên bản đầu tiên, thường được gọi là sha-0, được xuất bản bởi nist (Viện Tiêu chuẩn và Công nghệ Quốc gia) vào năm 1993 dưới tên fips pub 180 cho Tiêu chuẩn băm an toàn. Nó đã bị NSA thu hồi ngay sau khi xuất bản và được thay thế bằng một phiên bản sửa đổi, được xuất bản trong pub fips 180-1 vào năm 1995, thường được đặt tên là SHA-1. sha-1 tạo ra một bản tóm tắt có kích thước 160 bit (20 byte). Xung đột chống lại thuật toán sha-1 đầy đủ có thể được tạo ra bằng cách sử dụng một cuộc tấn công phá hoại. Do đó, hàm băm này được coi là kém an toàn hơn cho đến nay.

Cát 2

sha-2 là một tập hợp các hàm băm mật mã do Cơ quan An ninh Quốc gia Hoa Kỳ (nsa) thiết kế và phát hành lần đầu vào năm 2001. Chúng được xây dựng bằng cách sử dụng merkle-damgård, có khả năng nén một chiều là cấu trúc từ mật mã khối chuyên dụng được xây dựng bằng davies-meyer.

Băm để làm gì?

Kiểm tra tính toàn vẹn của tệp

Là một hàm băm, cùng một giá trị tạo ra cùng một giá trị băm. Vì vậy, chúng tôi có thể so sánh các tệp chúng tôi đã tải xuống trực tuyến với các tệp gốc bằng cách so sánh hàm băm của chúng. Nếu chúng có cùng hàm băm, thì tệp của bạn giống với tệp gốc, nếu không thì tệp của bạn đã bị sửa đổi hoặc bị hỏng. Trong một số trường hợp, tệp bạn tải xuống bị bên thứ ba giả mạo trước khi đến thiết bị của bạn và họ có thể cài đặt mã độc vào tệp đó. Kiểm tra hàm băm giúp giữ an toàn cho các tệp của bạn.

Xác minh mật khẩu

Bạn nên biết rằng trong các thiết kế cơ sở dữ liệu hiện đại, mật khẩu của bạn không được lưu trữ ở dạng văn bản thuần túy mà là các giá trị băm của chúng, và đó là một điều tốt. Khi bạn nhập mật khẩu của mình, mật khẩu của bạn sẽ chạy qua một hàm băm, sau đó hàm băm này được so sánh với giá trị băm trong cơ sở dữ liệu để xác định xem bạn có được xác thực để sử dụng dịch vụ hay không. Điều này làm giảm đáng kể thiệt hại khi cơ sở dữ liệu bị tấn công, khi các giá trị băm của bạn bị lộ thay vì mật khẩu của bạn. Để tăng cường bảo mật, hệ thống cũng tạo mật khẩu gốc của bạn, chạy nó thông qua hàm băm và lưu nó vào cơ sở dữ liệu. Vì vậy, ngay cả khi hàm băm của mật khẩu của bạn bị lộ và được giải mã, kẻ tấn công vẫn không thể lấy được mật khẩu thực của bạn vì nó đã được “xử lý muối”.

Tạm thời

Như bạn thấy, hashing là một kỹ thuật rất quan trọng và có tính ứng dụng cao, đặc biệt là trong lĩnh vực bảo mật. Các nhà phát triển phải liên tục thiết kế các thuật toán băm mới, bởi vì sự phát triển nhanh chóng của công nghệ có thể nhanh chóng giải mã các thuật toán cũ. Khi một thuật toán bị bẻ khóa, nó không còn an toàn tuyệt đối nữa. Nắm được các tính chất cơ bản và nguyên lý hoạt động chính của hàm băm là điều bắt buộc đối với mọi lập trình viên.

Related Articles

Back to top button