Trong số nhiều tiến bộ được thấy trong bảo mật mạng, mã hóa và băm là những nguyên tắc cốt lõi của các mô-đun bảo mật bổ sung. Thuật toán băm an toàn với kích thước tóm tắt là 256 bit, hay thuật toán SHA-256, là một trong những thuật toán băm được sử dụng rộng rãi nhất. Mặc dù có nhiều biến thể khác, SHA-256 vẫn đi đầu trong các ứng dụng thực tế.
Để hiểu cách thức hoạt động của thuật toán SHA-256 và đi sâu hơn vào lĩnh vực an ninh mạng, trước tiên bạn cần hiểu về băm và các đặc điểm chức năng của nó.
Nội dung bài viết
Hashing (“Băm”) là gì?
Hashing là quá trình xáo trộn thông tin thô đến mức không thể tái tạo lại thành dạng ban đầu. Nó lấy một phần thông tin và truyền thông tin đó qua một hàm thực hiện các phép toán trên văn bản thuần túy. Hàm này được gọi là hàm băm và đầu ra được gọi là giá trị băm/bản tóm tắt.
Như hình ảnh trên cho thấy, hàm băm có nhiệm vụ chuyển đổi văn bản thuần túy thành bản tóm tắt băm tương ứng. Chúng được thiết kế để không thể đảo ngược, nghĩa là bản tóm tắt của bạn không nên cung cấp cho bạn văn bản thuần túy gốc bằng bất kỳ cách nào cần thiết. Hàm băm cũng cung cấp cùng một giá trị đầu ra nếu đầu vào không thay đổi, bất kể số lần lặp lại.
Có hai ứng dụng chính của băm:
- Băm mật khẩu: Trong hầu hết các máy chủ trang web, nó chuyển đổi mật khẩu người dùng thành giá trị băm trước khi được lưu trữ trên máy chủ. Nó so sánh giá trị băm được tính toán lại trong quá trình đăng nhập với giá trị được lưu trữ trong cơ sở dữ liệu để xác thực.
- Xác minh tính toàn vẹn: Khi tải tệp lên trang web, nó cũng chia sẻ hàm băm của tệp dưới dạng một gói. Khi người dùng tải xuống, nó có thể tính toán lại hàm băm và so sánh để thiết lập tính toàn vẹn của dữ liệu.
Bây giờ bạn đã hiểu cách thức hoạt động của hàm băm, hãy xem chủ đề chính trong bài viết – hàm băm SHA-256.
Thuật toán SHA-256 là gì?
SHA-256 là một phần của họ thuật toán SHA-2, trong đó SHA là viết tắt của Secure Hash Algorithm (Thuật toán băm an toàn). Được công bố vào năm 2001, đây là nỗ lực chung giữa NSA và NIST để giới thiệu phiên bản kế nhiệm cho họ SHA-1, vốn đang dần mất đi sức mạnh trước các cuộc tấn công bằng vũ lực.
Ý nghĩa của số 256 trong tên tượng trưng cho giá trị băm cuối cùng, tức là bất kể kích thước của văn bản thuần túy/văn bản rõ, giá trị băm sẽ luôn là 256 bit.
Các thuật toán khác trong họ SHA ít nhiều giống với SHA-256. Bây giờ, hãy tìm hiểu thêm một chút về các nguyên tắc của chúng.
Đặc điểm của thuật toán SHA-256 là gì?
Sau đây là một số tính năng nổi bật của thuật toán SHA:
- Độ dài tin nhắn: Độ dài của văn bản thuần túy phải nhỏ hơn 264 bit. Kích thước phải nằm trong vùng so sánh để giữ cho bản tóm tắt càng ngẫu nhiên càng tốt.
- Độ dài bản tóm tắt: Độ dài của bản tóm tắt băm phải là 256 bit trong hàm băm SHA-256, 512 bit trong SHA-512… Bản tóm tắt lớn hơn thường gợi ý nhiều phép tính hơn đáng kể với cái giá phải trả là tốc độ và không gian.
- Không thể đảo ngược: Theo thiết kế, tất cả các hàm băm như SHA 256 đều không thể đảo ngược. Bạn không nên nhận được văn bản thuần túy khi đã có bản tóm tắt trước đó cũng như bản tóm tắt không nên cung cấp giá trị ban đầu của nó khi bạn truyền lại qua hàm băm.
Bây giờ bạn đã có ý tưởng khá rõ ràng về các yêu cầu kỹ thuật đối với SHA, bạn có thể tìm hiểu quy trình đầy đủ của nó trong phần tiếp theo.
Các bước trong thuật toán SHA-256
Bạn có thể chia toàn bộ quá trình thành năm phân đoạn khác nhau, như được đề cập bên dưới:
Các bit đệm
Nó thêm một số bit bổ sung vào thông điệp, sao cho độ dài thiếu chính xác 64 bit so với bội số của 512. Trong quá trình cộng, bit đầu tiên phải là một và phần còn lại phải được điền bằng số không.
Độ dài đệm
Bây giờ bạn có thể thêm 64 bit dữ liệu để làm cho văn bản thuần túy cuối cùng thành bội số của 512. Bạn có thể tính toán 64 bit ký tự này bằng cách áp dụng mô-đun cho văn bản thuần túy gốc của bạn mà không cần đệm.
Khởi tạo Bộ đệm:
Bạn cần khởi tạo các giá trị mặc định cho tám bộ đệm được sử dụng trong các vòng như sau:
Bạn cũng cần lưu trữ 64 khóa khác nhau trong một mảng, từ K[0] đến K[63]. Chúng được khởi tạo như sau:
Chức năng nén
Toàn bộ thông điệp được chia thành nhiều khối, mỗi khối 512 bit. Mỗi khối trải qua 64 vòng hoạt động, với đầu ra của mỗi khối đóng vai trò là đầu vào cho khối tiếp theo. Toàn bộ quá trình như sau:
Trong khi giá trị của K[i] trong tất cả các vòng đó được khởi tạo trước, W[i] là một đầu vào khác được tính riêng cho từng khối, tùy thuộc vào số lần lặp đang được xử lý tại thời điểm đó.
Đầu ra
Với mỗi lần lặp, đầu ra cuối cùng của khối đóng vai trò là đầu vào cho khối tiếp theo. Toàn bộ chu kỳ tiếp tục lặp lại cho đến khi bạn đạt đến khối 512 bit cuối cùng và sau đó bạn coi đầu ra của nó là bản tóm tắt băm cuối cùng. Bản tóm tắt này sẽ có độ dài 256 bit, theo tên của thuật toán này.
Với hàm băm SHA-256 được triển khai toàn diện kể từ đầu những năm 90, có những ứng dụng cụ thể mà bạn có thể xem xét. Bạn sẽ thấy chúng trong phần tiếp theo.
Ứng dụng của thuật toán SHA
Như hình ảnh trên cho thấy, thuật toán SHA đang được sử dụng ở nhiều nơi, một số nơi như sau:
- Xác minh chữ ký số: Chữ ký số tuân theo phương pháp mã hóa bất đối xứng để xác minh tính xác thực của tài liệu/tệp. Các thuật toán băm như SHA 256 có tác dụng rất lớn trong việc đảm bảo xác minh chữ ký.
- “Băm” mật khẩu: Như đã thảo luận ở trên, các trang web lưu trữ mật khẩu người dùng ở định dạng băm vì hai lợi ích. Nó giúp tăng cường cảm giác riêng tư và giảm tải cho cơ sở dữ liệu trung tâm vì tất cả các bản tóm tắt đều có kích thước tương tự nhau.
- SSL Handshaking: SSL Handshaking là một phân đoạn quan trọng của các phiên duyệt web và được thực hiện bằng các hàm SHA. Nó bao gồm trình duyệt web và máy chủ web của bạn đồng ý về khóa mã hóa và xác thực băm để chuẩn bị kết nối an toàn.
- Kiểm tra tính toàn vẹn: Như đã thảo luận ở trên, việc xác minh tính toàn vẹn của tệp đã sử dụng các biến thể như hàm băm SHA-256 và thuật toán MD5. Nó giúp duy trì chức năng giá trị đầy đủ của tệp và đảm bảo chúng không bị thay đổi trong quá trình truyền.
Kết luận
Trong bài viết hôm nay về hàm băm SHA-256, bạn đã học được những điều cơ bản về băm, các ứng dụng của băm, nguồn gốc của SHA, cách thức hoạt động của nó và những nơi thuật toán này được sử dụng.
Cảm ơn sự theo dõi và đón đọc của các bạn. Đừng quên, mọi thắc mắc về thị trường tiền điện tử, vui lòng liên hệ đội ngũ Support của Fiahub 24/7.
Freelancer Marketing và Content Creator với gần 10 năm kinh nghiệm; trong đó có khoảng hơn 3 năm làm việc trong mảng Blockchain với vai trò Dịch Thuật và Copywriter.
Với kiến thức sâu rộng cùng khả năng diễn giải để những thuật ngữ công nghệ khó hiểu trở nên gần gũi hơn với người đọc. Lê Hoàng đảm nhiệm những bài viết trong chuyên mục "Từ Điển Crypto" và "Hướng Dẫn Người Mới" tại Fiahub Blog