Hàm băm mật mã
Các hàm băm mật mã tạo ra giá trị băm có kích thước cố định từ đầu vào giao dịch có kích thước thay đổi.
Hàm băm mật mã là gì?
Hàm băm mật mã là một thuật toán, tức là một chuỗi các hành động cụ thể có thể lặp lại, có thể được sử dụng để biến đổi một chuỗi dữ liệu tùy ý có độ dài thay đổi thành một trong những định dạng và độ dài cố định, được gọi là hàm băm.
Một trong những ví dụ đơn giản nhất của hàm băm là cộng các chữ số trong một số cho đến khi còn lại một chữ số với đầu ra là một chữ số. Ví dụ: nếu đầu vào là 49, sau đó thêm 4 và 9 sẽ tạo ra 13, các chữ số 1 và 3 của chúng sau đó được cộng lại để cho đầu ra là 4. Bất kể độ dài của số đầu vào là bao nhiêu, đầu ra sẽ luôn là một chữ số.
Tuy nhiên, đó không phải là một thuật toán tốt, bởi vì, để thực hiện tốt các chức năng của nó, một hàm băm cần phải có một số đặc điểm:
Sẽ dễ dàng tính toán đầu ra cho bất kỳ đầu vào nhất định nào, nhưng gần như không thể đảo ngược quá trình và tính toán đầu vào của một đầu ra đã biết;
Tính xác định – đưa một đầu vào cụ thể vào thuật toán phải luôn tạo ra cùng một đầu ra;
Khả năng chống va chạm – hai đầu vào khác nhau sẽ rất khó tạo ra cùng một đầu ra;
Hiệu ứng tuyết lở – thay đổi dù chỉ một bit dữ liệu trong đầu vào sẽ dẫn đến kết quả đầu ra rất khác biệt.
Các hàm băm được áp dụng trong nhiều trường hợp sử dụng, chẳng hạn như tổng kiểm tra để xác minh tính toàn vẹn của các tệp máy tính sau khi truyền tải bộ lưu trữ kéo dài hoặc trong các chức năng ngẫu nhiên.
Chúng cũng là một thành phần quan trọng trong việc khai thác tiền điện tử bằng chứng công việc, chẳng hạn như Bitcoin (BTC), sử dụng hàm băm SHA-256. Để thêm một khối mới vào chuỗi khối và nhận phần thưởng là Bitcoin mới khai thác, trước tiên các thợ đào cần tạo ra một giá trị băm thấp hơn một ngưỡng nhất định, được gọi là mục tiêu.
Thực tế là băm là ngẫu nhiên và không thể dự đoán đầu ra của bất kỳ đầu vào nào trước khi thực sự chạy nó thông qua hàm băm đảm bảo rằng các thợ đào không thể in Bitcoin mới ra ngoài môi trường và cần phải chứng minh công việc mà họ đã thực hiện.
Cryptographic Hash Function
Cryptographic hash functions produce a fixed-size hash value from a variable-size transaction input.
What is a Cryptographic Hash Function?
A cryptographic hash function is an algorithm, i.e. a repeatable sequence of specific actions, that can be used to transform an arbitrary data string of a variable length into one of a fixed length and format, called the hash.
One of the simplest examples of a hash function is adding up the digits in a number until one is left with a single-digit output. If the input is 49, for example, then adding 4 and 9 yields 13, whose digits 1 and 3 are then summed up again to give the output of 4. Regardless of the length of the input number, the output will always be a single digit.
That is not a good algorithm, however, because, in order to perform its functions well, a hash function needs to possess several characteristics:
- It should be easy to compute an output for any given input, but nearly impossible to reverse the process and calculate the input of a known output;
- Determinism — feeding a specific input into the algorithm should always produce the same output;
- Collision resistance — two different inputs should be very unlikely to produce the same output;
- Avalanche effect — changing even a single bit of data in the input should result in a wildly different output.
Hash functions are applied in many use cases, for example, as checksums to verify the integrity of computer files after their transmission of prolonged storage, or in randomizing functions.
They are also a key component in the mining of proof-of-work cryptocurrencies, such as Bitcoin (BTC), which uses the SHA-256 hash function. In order to add a new block to the blockchain and claim their reward of newly-mined Bitcoin, miners first need to produce a hash value that is below a certain threshold, called the target.
The fact that hashes are pseudorandom and it is impossible to predict an output of any input before actually running it through the hash function ensures that miners cannot print new Bitcoins out of thin air and need to prove the work they have performed.