Hash Là Gì ? 1 Vài Dạng Hash Cơ Bản - Knowledge Base
Hash (hàm băm) là một trong những phần quan trọng nhất của thứ công nghệ mã hóa giúp giữ an toàn cho dữ liệu. Hash được ứng dụng nhiều trong lĩnh vực bảo mật, vd như nổi trội gần nhất là blokchain, bitcoin … Vậy hash là gì, có nhũng dạng nào, chúng ta cùng tìm hiểu nhé.
Mục lục
- I. Hash là gì ?
- II. Mục đích của hash function
- 1. Kiểm tra sự toàn vẹn của tệp tin
- 2. Xác minh mật khẩu
- III. Một số dạng Hash cơ bản
- 1. MD5
- 2. SHA-1
- 3. RIPEMD-160
- 4. Bcrypt
- 5. Whirlpool
- 6. SHA-2
- 7. SHA-3
- 8. BLAKE2
- IV. Kết luận
I. Hash là gì ?
Hash hay còn gọi là hàm băm, là một trong những phần quan trọng nhất của công nghệ bảo mật. Hashing là quá trình sử dụng những thuật toán, công thức toán học biến nội dung đầu vào có kích thước, độ dài bất kỳ thành đầu ra tiêu chuẩn có độ dài nhất định. Quá trình đó sử dụng những Hàm băm (Hash function).
Một cách tổng quát hash function là bất kỳ hàm nào có thể được sử dụng để ánh xạ dữ liệu có kích thước tùy ý thành các giá trị kích thước cố định. Các giá trị được trả về bởi hàm băm được gọi là giá trị băm, mã băm, thông điệp băm, hoặc đơn giản là “hash”.
Ví dụ một số giá trị băm của MD5 và SHA-256
- MD5(“hello”) = 5D41402ABC4B2A76B9719D911017C592
- SHA-256(“hello”) = 2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824
II. Mục đích của hash function
1. Kiểm tra sự toàn vẹn của tệp tin
Đặc điểm của hash function, cùng một giá trị sẽ cho ra cùng một giá trị băm. Vậy nên ta có thể đối chiếu tệp tin ta tải trên mạng về với bản gốc bằng cách so sánh giá trị băm của chúng với nhau. Nếu chúng có chung giá trị băm tức là tệp tin của bạn trùng với bản gốc, nếu không tệp tin của bạn đã bị sửa đổi hoặc bị hỏng.
Một số trường hợp, tệp tin của bạn tải về bị can thiệp bởi bên thứ ba trước khi đến thiết bị của bạn và chúng có thể cài mã độc vào tệp tin đó. Việc kiểm tra giá trị băm giúp đảm bảo tệp tin của bạn an toàn.
2. Xác minh mật khẩu
Trong những thiết kế cơ sở dữ liệu hiện nay, mật khẩu được lưu không phải mật khẩu của bạn dưới dạng văn bản đơn thuần mà là giá trị hash của chúng. Khi bạn nhập mật khẩu, mật khẩu của bạn sẽ được xử lý qua hàm hash, sau đó sẽ được so sánh với giá trị băm trong cơ sở dữ liệu để quyết định bạn có được chứng thực để sử dụng dịch vụ 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, những gì bị lộ ra ngoài là những giá trị băm chứ không phải mật khẩu gốc.
Để an toàn hơn, hệ thống còn thêm giá trị “salt” vào mật khẩu gốc của bạn, rồi cho chạy qua hàm băm, sau đó mới lưu vào cơ sở dữ liệu. Vậy nên kể cả khi giá trị băm của mật khẩu bạn bị lộ và bị giải mã, kẻ tấn công vẫn chưa thể có được mật khẩu thực sự của bạn do nó đã được thêm vào giá trị “salt”.
III. Một số dạng Hash cơ bản
Có nhiều thuật toán băm mật mã; ở đây chúng ta nhắc đến một số thuật toán cơ bản được sử dụng thường xuyên.
1. MD5
MD5 được Ronald Rivest thiết kế vào năm 1991 để thay thế hàm băm MD4 trước đó và được đưa thành tiêu chuẩn vào năm 1992 trong RFC 1321. MD5 tạo ra một bản tóm tắt có kích thước 128 bit (16 byte). Tuy nhiên, đến đầu những năm 2000 thì hàm băm MD5 trở lên không an toàn trước sức mạnh tính toán của các hệ thống tính toán thế hệ mới.
Với sức mạnh tính toàn và sự phát triển của công nghệ thám mã thời gian gần đây, chúng ta có thể tính toán các va chạm trong MD5 với độ phức tạp phép toán chỉ trong vòng vài giây khiến thuật toán không phù hợp với hầu hết các trường hợp sử dụng trong thực tế.
2. SHA-1
SHA-1 được phát triển như một phần của dự án Capstone 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 năm 1993 với tiêu đề Secure Hash Standard, FIPS PUB 180, bởi NIST (Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ).
Nó đã bị NSA rút lại ngay sau khi xuất bản và được thay thế bởi phiên bản sửa đổi, được xuất bản năm 1995 trong FIPS PUB 180-1 và thường được đặt tên là SHA-1. SHA-1 tạo ra bản tóm tắt có kích thước 160 bit (20 byte). Các va chạm chống lại thuật toán SHA-1 đầy đủ có thể được tạo ra bằng cách sử dụng tấn công phá vỡ. Do đó, hàm băm này cho đến nay được coi là không đủ an toàn.
3. RIPEMD-160
RIPEMD (viết tắt của RACE Integrity Primitives Evaluation Message Digest) là họ hàm băm được phát triển tại Leuven, Bỉ, bởi ba nhà mật mã học Hans Dobbertin, Antoon Bosselaers và Bart Preneel của nhóm nghiên cứu COSIC thuộc đại học Katholieke Universiteit Leuven.
RIPEMD lần đầu tiên được công bố vào năm 1996 dựa trên các nguyên tắc thiết kế được sử dụng trong MD4. RIPEMD-160 tạo ra một bản tóm tắt gồm 160 bit (20 byte). RIPEMD có hiệu năng tương tự như SHA-1 nhưng ít được phổ biến hơn. Và cho đến nay RIPEMD-160 chưa bị phá vỡ.
4. Bcrypt
Bcrypt là một hàm băm mật khẩu được thiết kế bởi Niels Provos và David Mazières, dựa trên mật mã Blowfish, và được trình bày tại USENIX vào năm 1999. Bên cạnh việc kết hợp một giá trị ngẫu nghiên salt để bảo vệ chống lại các tấn công rainbow attack, bcrypt còn là một hàm có khả năng thích ứng: theo thời gian, số lần lặp có thể được tăng lên để làm cho nó chậm hơn, do đó nó vẫn có khả năng chống lại các cuộc tấn công vét cạn ngay cả khi tăng sức mạnh tính toán có lớn đến mức nào đi chăng nữa.
5. Whirlpool
Whirlpool là một hàm băm mật mã được thiết kế bởi Vincent Rijmen và Paulo S. L. M. Barreto. Nó được mô tả đầu tiên vào năm 2000. Whirlpool dựa trên phiên bản sửa đổi đáng kể của Tiêu chuẩn mã hóa nâng cao (AES). Whirlpool tạo ra một bản tóm tắt có độ dài 512 bit (64 byte) của dữ liệu.
6. SHA-2
SHA-2 về thực chất bao gồm hai thuật toán băm: SHA-256 và SHA-512. SHA-224 là một biến thể của SHA-256 với các giá trị khởi tạo và đầu ra bị cắt bỏ khác nhau. SHA-384 và SHA-512/224 và SHA-512/256 ít được biết đến là tất cả các biến thể của SHA-512. SHA-512 an toàn hơn SHA-256 và thường nhanh hơn SHA-256 trên các máy 64 bit như AMD64.
Do có nhiều phiên bản thuật toán khác nhau do đó kích thước đầu ra của họ SHA-2 cũng khác nhau tùy theo thuật toán. Phần mở rộng của tên phía sau tiền tố “SHA” chính là độ dài của thông điệp băm đầu ra. Ví dụ với SHA-224 thì kích thước đầu ra là 224 bit (28 byte), SHA-256 tạo ra 32 byte, SHA-384 tạo ra 48 byte và cuối cùng là SHA- 512 tạo ra 64 byte. Và chúng ta có thể đã biết rằng Bitcoin sử dụng hàm băm SHA-256 là một phiên bản trong họ SHA-2 này.
7. SHA-3
SHA-3 được NIST phát hành vào ngày 5 tháng 8 năm 2015. Đây có lẽ là tiêu chuẩn hàm băm mới nhất cho đến hiện nay. SHA-3 là một tập con của họ nguyên thủy mật mã rộng hơn là Keccak. Thuật toán Keccak được đưa ra bởi Guido Bertoni, Joan Daemen, Michael Peeters và Gilles Van Assche. Keccak dựa trên cấu trúc bọt biển (sponge).
Cấu trúc này cũng có thể được sử dụng để xây dựng các nguyên thủy mã hóa khác như các hệ mật mã dòng. SHA-3 cũng có các kích cỡ đầu ra tương tự như SHA-2 bao gồm: 224, 256, 384 và 512 bit.
8. BLAKE2
Một phiên bản cải tiến của BLAKE có tên BLAKE2 đã được công bố vào ngày 21 tháng 12 năm 2012. BLAKE được phát triển bởi Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn và Christian Winnerlein với mục tiêu thay thế các thuật toán băm phổ biến như MD5 và SHA-1. Khi chạy trên các kiến trúc 64 bit x64 và ARM, BLAKE2b cho tốc độ nhanh hơn SHA-3, SHA-2, SHA-1 và MD5.
Mặc dù BLAKE và BLAKE2 chưa được tiêu chuẩn hóa như SHA-3, nhưng nó đã được sử dụng trong nhiều giao thức bao gồm hàm băm mật khẩu Argon2 do hiệu quả cao mà nó mang lại cho các dòng CPU hiện đại. Do BLAKE cũng là ứng cử viên cho tiêu chuẩn SHA-3, vì vậy, BLAKE và BLAKE2 đều có các kích thước đầu ra giống như SHA-3 và có thể tùy chọn khi sử dụng trong thực tế.
IV. Kết luận
Bai viết trên đã đề cập về khái niệm, mục đích sử dụng và 1 số hàm băm phổ biến. Qua đó sẽ giúp chúng ta hiểu rõ hơn về cách thức, tầm quan trọng của hàm băm (hash function). Hiểu đơn giản, hash function là 1 trong các phương thức mã hóa dữ liệu.
Bạn có thể tham khảo thêm bài viết về mã hóa tại đây.
P.A Việt Nam giúp các bạn lựa chon chứng chỉ SSL phù hợp với nhu cầuhttps://www.pavietnam.vn/vn/tu-van-ssl.htmlTham khảo chứng chỉ số SSL của các hãng bảo mật nổi tiếngSectigo – ComodoGeotrustDigicert
Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/
Rate this postNo related posts.
Từ khóa » Băm Dữ Liệu
-
Hash (hàm Băm) Là Gì Và Cách Thức Hoạt động Như Thế Nào?
-
Giới Thiệu Về Một Số Hàm Băm Và ứng Dụng Trong Một Số Sản Phẩm ...
-
[PDF] HÀM BĂM HASH FUNCTIONS - Cit..vn
-
Hashing (băm) Là Gì? | Binance Academy
-
Hash (hàm Băm) Là Gì? Định Nghĩa, Khái Niệm - LaGi.Wiki
-
Hash Là Gì Và Hash Dùng Để Làm Gì? - CodeLearn
-
Sự Khác Biệt Giữa Băm Và Mã Hóa Là Gì - Strephonsays
-
Cấu Trúc Dữ Liệu Bảng Băm Và ứng Dụng Của Bảng Băm - TEK4
-
Phương Pháp Băm Trong Hệ Quản Trị Cơ Sở Dữ Liệu – DBMS Hashing
-
Bảng Băm Trong C++ | TopDev
-
Các Hàm Băm Và Tính Toàn Vẹn Dữ Liệu - Mã Hóa Bảo Mật Trong Wimax
-
Mã Hóa Hàm Băm Trực Tuyến