Băm là quá trình tạo đầu ra có kích thước cố định từ đầu vào có kích thước thay đổi. Quá trình này được thực hiện thông qua một công thức toán học gọi là "hàm băm" (được triển khai dưới dạng thuật toán băm).
Không phải tất cả các hàm băm đều liên quan đến việc sử dụng mật mã, nhưng "hàm băm mật mã" là cốt lõi của tiền điện tử. Nhờ các hàm băm mật mã, có thể đạt được mức độ toàn vẹn và bảo mật dữ liệu cao trong blockchain và các hệ thống phân tán khác.
Cả hàm băm truyền thống và hàm băm mật mã đều có tính xác định. Tính xác định đề cập đến thực tế là thuật toán băm sẽ luôn tạo ra cùng một đầu ra (còn được gọi là "giá trị băm" hoặc "giá trị băm") miễn là đầu vào không thay đổi.
Thông thường, các thuật toán băm tiền điện tử được thiết kế dưới dạng hàm một chiều, nghĩa là không cần nhiều thời gian và tài nguyên tính toán, những thuật toán này sẽ chức năng không thể được khôi phục dễ dàng. Nói cách khác, việc tạo đầu ra từ đầu vào là điều cực kỳ dễ dàng, nhưng việc tạo đầu vào từ đầu ra ngược lại là tương đối khó. Nói chung, đầu vào càng khó tìm thì thuật toán băm càng an toàn.
Các hàm băm khác nhau tạo ra kết quả đầu ra có kích thước khác nhau, nhưng kích thước đầu ra của mỗi thuật toán băm luôn giống nhau. Ví dụ: thuật toán SHA-256 chỉ có thể tạo ra đầu ra 256 bit, trong khi SHA-1 luôn tạo ra bản tóm tắt 160 bit.
Để minh họa điều này, chúng tôi đã chạy "Binance" thông qua thuật toán băm SHA-256 (thuật toán được sử dụng trong Bitcoin) và từ “binance.”
SHA-256 | |
Nhập | Đầu ra (256 bit) |
Binance | f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191 | tr>
59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2 |
Xin lưu ý rằng sự thay đổi nhỏ về cách viết hoa sẽ hoàn toàn xảy ra giá trị băm khác nhau. Bất kể độ dài của giá trị đầu vào là bao nhiêu, đầu ra sử dụng SHA-256 luôn có độ dài cố định là 256 bit (hoặc 64 ký tự). Hơn nữa, cho dù thuật toán có chạy hai từ này bao nhiêu lần thì đầu ra của cả hai vẫn giữ nguyên.
Ngược lại, nếu bạn chạy cùng một dữ liệu đầu vào thông qua thuật toán băm SHA-1, bạn sẽ nhận được kết quả sau:
SHA-1 | |
Nhập | Đầu ra (160 bit) |
Binance | 7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1 p> |
binance | e58605c14a76ff98679322cca0eae7b3c4e08936 |
Xin lưu ý rằng "SHA" là từ viết tắt của Thuật toán băm an toàn. Thuật toán đề cập đến một tập hợp các hàm băm mật mã, bao gồm các thuật toán SHA-0 và SHA-1, cũng như các bộ SHA-2 và SHA-3. SHA-256, cùng với SHA-512 và các biến thể khác, là một phần của nhóm SHA-2. Hiện tại chỉ có nhóm SHA-2 và SHA-3 được coi là an toàn.
Hàm băm truyền thống có nhiều trường hợp sử dụng khác nhau, bao gồm tra cứu cơ sở dữ liệu, phân tích tệp lớn và quản lý dữ liệu. Hàm băm mật mã được sử dụng rộng rãi trong các ứng dụng bảo mật thông tin như xác thực tin nhắn và lấy dấu vân tay kỹ thuật số. Trong trường hợp Bitcoin, các hàm băm mật mã là một phần không thể thiếu trong quá trình khai thác, ảnh hưởng đến cả địa chỉ mới và việc tạo khóa.
Các thao tác băm thực sự mạnh mẽ khi xử lý lượng thông tin khổng lồ. Ví dụ: chạy một tệp hoặc tập dữ liệu lớn thông qua hàm băm, sau đó sử dụng đầu ra của nó để nhanh chóng xác minh tính chính xác và đầy đủ của dữ liệu. Hàm băm hoạt động vì chúng có tính xác định: đầu vào luôn tạo ra đầu ra được nén, đơn giản hóa (tức là giá trị băm). Công nghệ này giúp loại bỏ nhu cầu lưu trữ và “ghi nhớ” lượng lớn dữ liệu.
Hoạt động băm đặc biệt thiết thực trong lĩnh vực công nghệ chuỗi khối. Chuỗi khối Bitcoin có nhiều hoạt động liên quan đến hoạt động băm, hầu hết trong số đó là một phần của quá trình khai thác. Trên thực tế, hầu hết tất cả các giao thức tiền điện tử đều dựa vào hàm băm để kết nối các nhóm giao dịch và nén chúng thành các khối, đồng thời tạo ra các liên kết mật mã giữa các khối riêng lẻ, tạo ra một chuỗi khối một cách hiệu quả.
Tương tự, hàm băm triển khai công nghệ mật mã có thể được định nghĩa là hàm băm mật mã. Nói chung, việc phá vỡ hàm băm mật mã đòi hỏi vô số nỗ lực mạnh mẽ. Để "khôi phục" hàm băm mật mã, hãy đoán đầu vào thông qua thử và sai cho đến khi tạo ra đầu ra tương ứng. Tuy nhiên, cũng có thể các đầu vào khác nhau lại tạo ra cùng một đầu ra, do đó xảy ra "xung đột".
Về mặt kỹ thuật, hàm băm mật mã cần có ba thuộc tính để đảm bảo an ninh một cách hiệu quả. Ba thuộc tính chính là chống va chạm, chống tiền ảnh và chống tiền ảnh thứ hai.
Trước khi thảo luận riêng từng thuộc tính, hãy tóm tắt ngắn gọn logic của từng thuộc tính.
Khả năng chống va chạm: Không thể có hai đầu vào khác nhau tạo ra cùng một đầu ra giá trị băm.
Chống khả năng tưởng tượng: Không thể "khôi phục" hàm băm (tức là không thể tìm thấy đầu vào từ một đầu ra nhất định).
Khả năng chống tiền ảnh thứ hai: Không thể tìm thấy đầu vào khác xung đột với đầu vào cụ thể.
Như đã đề cập trước đó, các đầu vào khác nhau tạo ra cùng một hàm băm chính xác. Xung đột xảy ra khi giá trị bị vượt quá. Do đó, hàm băm được coi là có khả năng chống va chạm miễn là không ai phát hiện ra xung đột. Lưu ý rằng vì đầu vào có thể có là vô hạn và đầu ra có thể có là hữu hạn nên luôn có xung đột với hàm băm.
Giả sử xác suất tìm thấy va chạm thấp đến hàng triệu năm thì có thể nói hàm băm là va chạm tình dục kháng cự. Do đó, mặc dù trên thực tế không có hàm băm không va chạm nhưng một số trong số chúng (chẳng hạn như SHA-256) được coi là có khả năng chống va chạm miễn là chúng đủ mạnh.
Trong các thuật toán SHA khác nhau, nhóm SHA-0 và SHA-1 có xung đột nên không còn an toàn. Hiện tại bộ SHA-2 và SHA-3 được coi là có khả năng chống va chạm.
Thuộc tính chống khả năng hình ảnh có liên quan đến khái niệm hàm một chiều. Hàm băm được cho là chống hình ảnh, giả sử rằng xác suất tìm thấy đầu vào tạo ra đầu ra cụ thể là cực kỳ thấp.
Lưu ý rằng kẻ tấn công sẽ xem xét đầu ra nhất định để đoán đầu vào, vì vậy thuộc tính này khác với khả năng chống va chạm. Hơn nữa, hai đầu vào khác nhau tạo ra cùng một đầu ra sẽ xung đột, nhưng việc sử dụng đầu vào nào không thực sự quan trọng.
Thuộc tính chống hình ảnh có giá trị để bảo vệ dữ liệu vì không cần tiết lộ thông tin và một hàm băm đơn giản của tin nhắn có thể chứng minh tính xác thực của nó . Trong thực tế, nhiều nhà cung cấp dịch vụ và ứng dụng web lưu trữ và sử dụng hàm băm được tạo từ mật khẩu thay vì mật khẩu ở dạng văn bản rõ ràng.
Tóm lại, khả năng chống tiền ảnh thứ hai nằm ở đâu đó giữa hai đặc tính được đề cập ở trên. Cuộc tấn công tiền ảnh thứ hai xảy ra nếu ai đó có thể tìm thấy một đầu vào cụ thể tạo ra đầu ra giống với một đầu vào đã biết khác.
Nói cách khác, cuộc tấn công tiền ảnh thứ hai có liên quan đến việc tìm kiếm xung đột, nhưng không tìm kiếm hai đầu vào ngẫu nhiên tạo ra cùng một hàm băm value , thay vào đó, với một đầu vào cụ thể, hãy tìm kiếm một đầu vào khác tạo ra cùng giá trị băm.
Cuộc tấn công tiền ảnh thứ hai thường có nghĩa là có xung đột. Do đó, bất kỳ hàm băm chống va chạm nào cũng có khả năng chống lại các cuộc tấn công tiền ảnh thứ hai. Tuy nhiên, có khả năng chống va chạm có nghĩa là có thể tìm thấy một đầu vào từ một đầu ra duy nhất, do đó kẻ tấn công vẫn có thể thực hiện một cuộc tấn công tiền ảnh nhằm vào chức năng chống va chạm.
Hàm băm được sử dụng trong nhiều bước khai thác Bitcoin, chẳng hạn như kiểm tra số dư, kết nối đầu vào và đầu ra giao dịch và băm các giao dịch cùng khu vực trong một khối để hình thành một cây Merkle. Tuy nhiên, một trong những lý do chính khiến chuỗi khối Bitcoin an toàn là vì thợ đào cần thực hiện vô số thao tác băm trước khi cuối cùng họ có thể tìm ra giải pháp hợp lệ cho khối tiếp theo.
Đặc biệt, người khai thác phải thử một số đầu vào khác nhau khi tạo băm khối ứng viên. Về cơ bản, người khai thác chỉ có thể xác thực một khối nếu hàm băm đầu ra được tạo bắt đầu bằng một số số 0 nhất định. Số lượng số 0 xác định độ khó khai thác và những thay đổi với tốc độ băm dành riêng cho mạng.
Trong trường hợp này, tỷ lệ băm thể hiện lượng sức mạnh tính toán được đầu tư vào việc khai thác 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ó khai thác để thời gian trung bình cần thiết để tạo khối vẫn ở mức gần 10 phút. Ngược lại, nếu nhiều thợ mỏ quyết định ngừng khai thác khiến hash rate giảm đáng kể thì độ khó khai thác sẽ giảm xuống cho đến khi thời gian khối trung bình trở về 10 phút.
Xin lưu ý rằng người khai thác có thể tạo nhiều giá trị băm dưới dạng đầu ra hợp lệ (bắt đầu bằng một số số 0 nhất định), vì vậy họ không cần Tìm xung đột. Có nhiều giải pháp khả thi cho một khối, nhưng tùy thuộc vào ngưỡng độ khó khai thác, người khai thác chỉ phải tìm một trong các giải pháp.
Khai thác bitcoin là một nhiệm vụ có chi phí cao. Người khai thác không cần phải gian lận hệ thống, điều này sẽ gây ra tổn thất kinh tế đáng kể . Càng nhiều người khai thác tham gia chuỗi khối, chuỗi khối càng trở nên lớn hơn và mạnh mẽ hơn.
Không còn nghi ngờ gì nữa, hàm băm là một công cụ không thể thiếu trong khoa học máy tính và khả năng xử lý dữ liệu lớn của nó đặc biệt nổi bật. Kết hợp với mật mã, thuật toán băm có thể được sử dụng theo nhiều cách khác nhau để cung cấp bảo mật và xác thực theo nhiều cách khác nhau. Đối với hầu hết tất cả các mạng tiền điện tử, hàm băm mật mã là rất quan trọng. Vì vậy, nếu bạn quan tâm đến công nghệ blockchain, việc hiểu rõ các thuộc tính và cơ chế hoạt động của hàm băm mật mã sẽ mang lại lợi ích rất lớn.