Các hàm băm truyền thống cũng các hàm băm mật mã hóa đều mang tính tất định. Tính tất định nghĩa là, miễn là đầu vào không đổi, thì thuật toán băm luôn đưa ra cùng một đầu ra (còn gọi là đại diện hoặc băm).
Thông thường, các thuật toán băm của tiền mã hóa được thiết kế như các hàm băm một chiều, nghĩa là chúng không thể chuyển đổi trở lại một cách dễ dàng mà không phải mất nhiều thời gian tính toán và tài nguyên. Nói cách khác, có thể dễ dàng tạo kết quả đầu ra từ dữ liệu đầu vào, nhưng không thể chuyển đổi theo hướng ngược lại (tìm được dữ liệu đầu vào từ duy nhất kết quả đầu ra). Nói chung, việc tìm được dữ liệu đầu vào càng khó khăn, thì tính bảo mật của thuật toán băm đó càng cao.
Nội dung chính
Hàm băm hoạt động như thế nào?
Các hàm băm khác nhau sẽ tạo ra các kết quả đầu ra có kích thước khác nhau, nhưng kích thước của các kết quả đầu ra có thể nhận được luôn cố định, không đổi. Ví dụ, thuật toán SHA-256 chỉ có thể tạo ra các kết quả đầu ra có kích thước 256 bit, trong khi thuật toán SHA-1 sẽ luôn tạo ra một kết quả đại diện có kích thước 160-bit.
Có thể thấy một thay đổi nhỏ (viết hoa chữ cái đầu tiên) dẫn đến một giá trị băm hoàn toàn khác. Tuy nhiên, do chúng ta đang sử dụng SHA-256, các kết quả đầu ra luôn có kích thước cố định là 256-bit (hoặc 64 ký tự) – cho dù kích thước dữ liệu đầu vào là bao nhiêu. Hai kết quả đầu ra này vẫn giữ nguyên cho dù chúng ta chạy hai từ này qua thuật toán này bao nhiêu lần.
SHA là từ viết tắt của Secure Hash Algorithms (Thuật toán Băm Bảo mật). Đây là một tập hợp các hàm băm mật mã hóa, bao gồm các hàm băm SHA-0, SHA-1 và các nhóm hàm băm SHA-2 và SHA-3. SHA-256, cùng với SHA-512 và các hàm băm khác, thuộc về nhóm hàm băm SHA-2. Hiện nay, chỉ các nhóm SHA-2 và SHA-3 được xem là các nhóm hàm băm bảo mật.
Tầm quan trọng của hàm băm?
Băm thật sự là một công cụ mạnh mẽ khi cần xử lý một lượng thông tin lớn. Ví dụ, chúng ta có thể chạy một tệp hoặc tập dữ liệu lớn thông qua hàm băm và sau đó sử dụng kết quả đầu ra từ của nó để nhanh chóng xác minh tính chính xác và tính toàn vẹn của dữ liệu. Điều này là có thể bởi vì tính chất tất định của các hàm băm: đầu vào sẽ luôn dẫn đến một đầu ra ngắn gọn, đơn giản hóa (băm). Nhờ vào kỹ thuật này, sẽ không còn phải lưu trữ và “ghi nhớ” một lượng thông tin lớn nữa.
Băm là quy trình đặc biệt hữu ích trong công nghệ blockchain. Blockchain Bitcoin có một số hoạt động sử dụng quy trình băm, hầu hết các hoạt động đó là trong quá trình đào. Trên thực tế, gần như tất cả các giao thức tiền mã hóa đều dựa vào băm để liên kết và rút gọn các nhóm giao dịch thành các khối và cũng để tạo ra các liên kết mật mã giữa mỗi khối, tạo ra một blockchain một cách hiệu quả.
Các hàm băm mật mã
Một lần nữa, một hàm băm triển khai các kỹ thuật mã hóa có thể được định nghĩa là hàm băm mật mã. Nhìn chung, để phá vỡ một hàm băm mật mã đòi hỏi thực hiện nhiều nỗ lực mạnh mẽ. Để một người có thể “khôi phục” một hàm băm mật mã, họ sẽ cần đoán đầu vào là gì theo quy trình thử và sai cho đến khi tạo được kết quả đầu ra tương ứng. Tuy nhiên, cũng có khả năng các đầu vào khác nhau tạo ra cùng một đầu ra, trường hợp này được gọi là “xung đột”.
Về mặt kỹ thuật, một hàm băm mật mã cần có ba thuộc tính sau để được coi là bảo mật. Ba thuộc tính đó là chống xung đột, chống nghịch ảnh, và chống nghịch ảnh thứ hai.
Trước khi nói về từng thuộc tính, chúng ta hãy tóm tắt những thuộc tính này.
-
Chống xung đột: hai dữ liệu đầu vào khác nhau không thể tạo ra cùng một mã băm.
-
Chống nghịch ảnh: không thể “khôi phục” hàm băm (không thể xác định được dữ liệu đầu vào dựa trên kết quả đầu ra).
-
Chống nghịch ảnh thứ hai: không thể tìm dữ liệu đầu vào thứ hai xung đột với một dữ liệu đầu vào cho trước.
Chống xung đột
Như đã mô tả, xung đột xảy ra khi các dữ liệu đầu vào khác nhau tạo ra một mã băm giống nhau. Bởi vậy, một hàm băm được xem là chống xung đột cho đến khi ai đó tìm thấy sự xung đột. Lưu ý rằng các xung đột sẽ luôn tồn tại ở một hàm băm nào đó, vì các dữ liệu đầu vào là vô hạn, trong khi đó các kết quả đầu ra có thể có là hữu hạn.
Hay nói cách khác, một hàm băm được coi là chống xung đột khi khả năng tìm thấy sự xung đột rất thấp và có thể mất hàng triệu năm tính toán để tìm thấy xung đột. Bởi vậy, mặc dù không có hàm băm nào là hoàn toàn tránh được xung đột, nhưng một số hàm đủ mạnh để được xem là chống xung đột (ví dụ, SHA-256).
Chống nghịch ảnh
Thuộc tính chống nghịch ảnh có liên quan đến khái niệm các hàm một chiều. Hàm băm được xem là chống ngược ảnh khi khả năng tìm được dữ liệu đầu vào từ một kết quả đầu ra nào đó là rất thấp.
Thuộc tính này khác với thuộc tính thứ nhất, kẻ tấn công sẽ sử dụng thuộc tính này để cố đoán được dữ liệu đầu vào dựa trên kết quả đầu ra đã biết. Trong khi đó, xung đột xảy ra khi tìm được hai dữ liệu đầu vào khác nhau nhưng lại tạo ra cùng một kết quả đầu ra, nhưng việc dữ liệu đầu vào nào đã được sử dụng là không quan trọng.
Thuộc tính chống nghịch ảnh rất quan trọng để bảo vệ dữ liệu, vì chỉ cần mã băm của một thông điệp để chứng minh tính xác thực của nó, mà không cần tiết lộ thông tin. Trên thực tế, nhiều nhà cung cấp dịch vụ và ứng dụng web lưu trữ và sử dụng mật khẩu dưới dạng các mã băm thay vì dưới dạng văn bản gốc.
Chống nghịch ảnh thứ hai
Nói một cách đơn giản, chống nghịch ảnh thứ hai nằm giữa hai thuộc tính đầu tiên. Tấn công nghịch ảnh thứ hai xảy ra khi ai đó tìm thấy một dữ liệu đầu vào cụ thể mà tạo ra một kết quả đầu ra giống với kết quả đầu ra của một dữ liệu đầu vào khác mà họ đã biết.
Nói cách khác, tấn công nghịch ảnh thứ hai là việc tìm một xung đột, nhưng thay vì tìm hai dữ liệu đầu vào ngẫu nhiên tạo ra cùng một mã băm, thì họ tìm một dữ liệu đầu vào mà tạo ra một mã băm giống với mã băm của một dữ liệu đầu vào mà họ đã biết.
Do vậy, hàm băm nào tránh được xung đột cũng đồng thời tránh được các tấn công nghịch ảnh thứ hai, vì nghịch ảnh thứ hai cũng có nghĩa là xung đột sẽ xảy ra. Tuy nhiên, vẫn có thể thực hiện tấn công nghịch ảnh đối với một hàm chống nghịch ảnh, vì điều đó có nghĩa là tìm một dữ liệu đầu vào duy nhất dựa trên một kết quả đầu ra duy nhất.
Hàm băm ảnh hưởng đến đào Bitcoin như thế nào?
Trong trường hợp này, tốc độ băm đại diện cho lượng sức mạnh máy tính được sử dụng để đào Bitcoin. Nếu tốc độ băm của mạng tăng lên, giao thức Bitcoin sẽ tự động điều chỉnh độ khó của việc đào để thời gian trung bình cần thiết để đào được một khối sẽ duy trì ở mức 10 phút. Ngược lại, nếu một số thợ đào ngừng đào, khiến tốc độ băm giảm đáng kể, thì độ khó của việc đào sẽ được điều chỉnh, khiến việc đào trở nên dễ dàng hơn (cho đến khi thời gian trung bình để đào được một khối trở lại mức 10 phút).
Chú ý rằng các thợ đào không cần tìm ra các xung đột bởi vì có nhiều mã băm để họ có thể tạo ra như là các đầu ra hợp lệ (bắt đầu bằng một vài số 0 nhất định). Bởi vậy có một số giải pháp để đào một khối cụ thể, và các thợ đào chỉ cần tìm ra một trong số đó – theo ngưỡng được xác định từ độ khó của việc đào.
Bởi vì đào Bitcoin là một nhiệm vụ tiêu tốn nhiều chi phí, nên các thợ đào không có lý do gì để lừa gạt hệ thống vì điều đó sẽ dẫn đến các tổn thất tài chính đáng kể. Càng có nhiều thợ đào tham gia một blockchain thì blockchain đó càng lớn mạnh.
Kết luận
Có thể khẳng định rằng các hàm băm là các công cụ thiết yếu trong khoa học máy tính, đặc biệt khi xử lý khối dữ liệu khổng lồ. Khi được kết hợp với mật mã hóa, các thuật toán băm có thể được sử dụng linh hoạt, mang lại khả năng bảo mật và xác thực theo nhiều cách khác nhau. Bởi vậy, các hàm băm mật mã đóng vai trò thiết yếu đối với hầu hết các mạng tiền mã hóa, vì vậy việc hiểu được các thuộc tính và cơ chế hoạt động của chính chắc chắn sẽ có ích cho những người quan tâm đến công nghệ blockchain.
ƯU ĐÃI ĐẶC BIỆT
Bài viết liên quan