SHA-256 là một trong số những hàm băm này. SHA-256 là cách viết rút gọn của “Secure Hash Algorithm 256-bit”, đúng như tên gọi của nó biểu thị, bạn có thể thu được giá trị băm có độ dài 256 bit (32 byte). Theo tính chất hàm số băm, từ dữ liệu giống nhau luôn có thể thu được cùng một giá trị.
Mặt khác, từ những dữ liệu khác nhau dù chỉ một chút cũng thu được những giá trị khác nhau hoàn toàn. Ngoài ra, nó được thiết kế như một hàm băm dùng trong việc mã hóa, nên rất khó để tìm kiếm hiệu quả một dữ liệu khác có cùng giá trị băm với dữ liệu gốc.
Mã hoá SHA là gì?
SHA (Secure Hash Algorithm) bao gồm 5 thuật toán được chấp nhận bởi FIPS – Tiêu chuẩn Xử lý Thông tin Liên bang, dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn dữ liệu có chiều dài không đổi với xác suất khác biệt cao. 5 thuật toán đó bao gồm:
- SHA-1 (trả lại kết quả dài 160 bit)
- SHA-224 (trả lại kết quả dài 224 bit)
- SHA-256 (trả lại kết quả dài 256 bit)
- SHA-384 (trả lại kết quả dài 384 bit)
- SHA-512 (trả lại kết quả dài 512 bit)
Những thuật giải này được gọi là “an toàn” bởi vì, theo nguyên văn của chuẩn mực FIPS 180-2 phát hành ngày 1/8/2002:
Đối với một giá trị nhất định được tạo nên bởi một trong những thuật toán SHA, việc tính toán là không khả thi để:
- Tìm một thông điệp tương ứng với thông điệp đã được mã hóa
- Tìm được hai đoạn dữ liệu khác nhau có cùng kết quả băm.
Bất cứ thay đổi nào trên đoạn dữ liệu gốc, dù nhỏ, cũng sẽ tạo nên một giá trị băm hoàn toàn khác với xác suất rất cao.
Thuật toán SHA-256 là gì?
SHA-256 là thuật toán băm bảo mật với 256 bit (hay 32 byte) dùng để tạo ra các chuỗi băm không thể đảo ngược và mang tính độc nhất. Chính điều này đã làm cho thuật toán SHA256 phù hợp để xác nhận mật khẩu, chống giả mạo, đặc biệt là để xác thực hàm băm.
Ví dụ mã SHA-256 của một thông điệp như sau:
Dữ liệu “The quick brown fox jumps over the lazy dog”
⇒ Mã hóa “d7a8fbb3 07d78094 69ca9abc b0082e4f 8d55651e4 6d3cdb76 2d02d0bf 37c9e592
Hàm băm SHA 256 có khả năng hỗ trợ xử lý thô hiệu quả. Với những đồng Bitcoin đầu tiên, bạn hoàn toàn có thể tự đào bằng CPU trong máy tính tại nhà. Thế nhưng, theo thời gian khi độ khó của đồng coin tăng lên. Thì để khai thác hiệu quả bạn cần phải sử dụng các bộ vi xử lý riêng biệt có tên gọi là ASIC.
SHA-256 có an toàn không?
Cách dùng phổ biến của mã một chiều SHA là tạo ra dãy mã hóa của thông điệp thông qua cách tính hàm băm của chuỗi ghép từ thông điệp cần xác thực với một khóa bí mật. Khóa bí mật rất dài, có thể hình dung như sau:
- Dãy mã hóa = SHA256(“thông điệp cần xác thực”, “khóa bí mật”) = hash
Với tính chất của mã hóa một chiều nên dãy mã hóa có thể được công khai, thông điệp cũng có thể công khai, nhưng thành phần khóa bí mật không thể truy ngược lại được. Đơn giản vì suy ngược lại toàn văn dữ liệu gốc từ dãy mã hóa là không thể.
Cách duy nhất để truy ngược toàn văn dữ liệu gốc là thử mọi khả năng có thể xảy ra của khóa bí mật và cách mà khóa được ghép với thông điệp cần xác thực. Có nghĩa là với với việc kiểm tra mọi khả năng của đầu vào để tìm ra dãy mã hóa mới giống với dãy mã hóa đã biết, phương pháp này được gọi là BruteForce. Chúng ta có thể xem xét như sau “khóa bí mật” = SHA256(“secret-key”) = 256 bits
Với một sự thay đổi rất nhỏ trong thông điệp thì cũng sẽ tạo ra một giá trị băm khác hoàn toàn so với ban đầu. Điều này có nghĩa là nếu bạn muốn kiểm tra toàn bộ giá trị của hàm băm để tìm ra giá trị giống nó thì có BruteForce = 2^256 khả năng.
Liệu có thể tấn công Brute Force vào SHA-256 không?
Cách dùng phổ biến của mã một chiều SHA là tạo ra chữ ký của thông điệp bằng cách tính hàm băm của chuỗi ghép từ thông điệp cần xác thực với một khóa bí mật, khóa bí mật nói chung là rất dài:
Chữ ký = SHA256(“thông điệp cần xác thực”, “khóa bí mật”) = hash
Với tính chất của mã một chiều, chữ ký có thể được công khai, thông điệp có thể công khai, nhưng thành phần khóa bí mật không thể truy ngược lại được vì suy ngược lại toàn văn dữ liệu gốc từ chữ ký là không thể.
Cách duy nhất để truy ngược lại toàn văn dữ liệu gốc là thử mọi khả năng có thể của khóa bí mật và cách khóa được ghép với thông điệp cần xác thực, điều này cũng đồng nghĩa với với việc kiểm tra mọi khả năng của đầu vào để tìm ra chữ ký giống với chữ ký đã biết, phương pháp này gọi là Brute Force.
Vì mỗi thay đổi rất nhỏ ở dữ liệu gốc, dù nhỏ, cũng sẽ tạo nên một giá trị băm hoàn toàn khác với xác suất rất cao không thể dự báo trước, nên việc kiểm tra này chính là kiểm tra trên toàn bộ không gian của giá trị băm, tức là BruteForce với 2256 khả năng, tương ứng với:
2256 = 115792089237316195423570985008687907853269984665640564039457584007913129639936 > 1078
Giả định mỗi máy tính cá nhân có tốc độ 4Ghz có thể xử lý 1.4G phép tính băm mỗi giây, 1.4x109hash/s, Trái Đất có 7 tỷ người mỗi người có một máy tính như vậy, sức mạnh tính toán của toàn thể Trái Đất là: 1019hash/s.
Trong dải Ngân Hà (Milkyway) có khoảng 100 tỷ ngôi sao, giả định rằng 1% trong số đó có nền văn minh như Trái Đất thì sức mạnh tính hash của Ngân Hà là: 1019hash/s x 1% x 100×109 = 1028hash/s
Vũ trụ khả kiến được cho là có 100 tỷ thiên hà, và vũ trụ toàn thể được cho là lớn gấp 10 lần như vậy, thì sức mạnh tính hash của vũ trụ toàn thể là: 1028hash/s x 100×109 x 10 = 1042hash/s
Với tốc độ tính toán này, để kiểm tra toàn bộ 1078 trường hợp, vũ trụ toàn thể cần đến 1036 giây ≈ 3.17×1028 năm, hay ≈ 2.4×1018 lần tuổi của chính vũ trụ, tức là việc này không khả thi.
Chính vì vậy SHA-256 được cho là rất an toàn.
Ứng dụng của hàm băm SHA-256
Ứng dụng nổi tiếng nhất của thuật toán SHA là dùng trong hệ thống tiền điện tử Bitcoin. Đây là một hệ thống giao dịch tiền ảo trên mạng internet sử dụng mã SHA256 để xác nhận các giao dịch và lưu trữ dạng chuỗi các sự kiện lịch sử theo từng thời gian và được liên kết với nhau bởi các mã xác thực (BlockChain).
Qua bài viết này các bạn cũng đã hiểu thuật toán Sha256 là gì và ứng dụng của nó. Ngoài ra tính bảo mật của nó gần như là chắc chắn nên bạn hãy hoàn toàn yên tâm về dữ liệu của mình. Hãy áp dụng nó để đào ra được nhiều tiền ảo mới và trở thành thợ mỏ hàng đầu trên thị trường tiền ảo.
Xem thêm nội dung liên quan:
- Mất bao nhiêu lâu để bạn trở thành một nhà đầu tư thực thụ?
- Satoshi Nakamoto là ai? Nhân vật bí ẩn nhất thế kỷ 21
- Sàn giao dịch hàng đầu Việt Nam và Thế Giới