Công cụ dành cho nhà phát triển · Máy tính hàm băm SHA
Từ SHA-0 đến SHA-3: Tiêu chuẩn băm an toàn của NIST đã phát triển như thế nào
· Lý lịch
sha-256 mật mã browser-apis
SHA-1, SHA-2 và SHA-3 là ba thế hệ có nguồn gốc khác nhau. Bài đăng này theo dõi Tiêu chuẩn băm an toàn từ SHA-0 đã rút cho đến cuộc thi Keccak và giải thích lý do tại sao SHA-2 vẫn chiếm ưu thế.
Những con số có ý nghĩa gì? — tại sao SHA-256 là SHA-2 nhưng SHA-3 lại là thứ gì đó hoàn toàn khác
Các nhà phát triển nhìn thấy SHA-1, SHA-256 và SHA-3 và cho rằng chúng là một tiến trình tuyến tính. Họ không như vậy. Các con số có ý nghĩa khác nhau trong các bối cảnh khác nhau và việc hiểu lịch sử dòng sản phẩm giải thích tại sao SHA-256 là lựa chọn hợp lý cho các ứng dụng mới, tại sao SHA-1 chỉ dành cho di sản mặc dù đã được triển khai rộng rãi và tại sao SHA-3 là một thiết kế riêng biệt chứ không phải là một sự cải tiến.
Khi NIST lần đầu tiên xuất bản hàm băm an toàn, họ gọi nó là SHA và sau đó là SHA-0, một phiên bản tồn tại trong thời gian ngắn đến mức hầu hết các nhà phát triển chưa từng nghe đến nó. SHA-0 đã bị thu hồi trong vòng vài năm do một lỗ hổng không xác định và chưa bao giờ được tiết lộ công khai. Việc rút tiền này diễn ra một cách âm thầm và các thuật toán tiếp theo đã gây ra sự nhầm lẫn khi đặt tên. Sau khi SHA-0 bị thu hồi, NIST đã xuất bản SHA-1, trở thành tiêu chuẩn trong hai mươi năm.
Công cụ này bao gồm SHA-1 và SHA-2; lịch sử SHA-0 chi tiết là bằng chứng bên ngoài kho lưu trữ
SHA-1 là hàm băm 160-bit tạo ra đầu ra thập lục phân 40 ký tự. Nó dựa trên cấu trúc Merkle–Damgård, trong đó hàm nén xử lý từng khối đầu vào, xâu chuỗi trạng thái về phía trước. Thiết kế này rất hợp lý khi được xuất bản và không có cuộc tấn công thực tế nào trong nhiều năm. Tuy nhiên, năm 2005 đã mang đến một bước đột phá về giải mã. Một nhóm do Xiaoyun Wang dẫn đầu đã công bố một cuộc tấn công xung đột vào SHA-1, cho thấy rằng việc tìm hai thông điệp khác nhau có cùng hàm băm là khả thi bằng cách sử dụng các kỹ thuật hiệu quả hơn nhiều so với phương pháp bạo lực.
Nhiều năm sau, trong 2017, một nhóm có tên SHAttered đã trình diễn xung đột thực tế đầu tiên, sử dụng một cụm GPU để tìm hai tệp PDF khác nhau có cùng hàm băm SHA-1. Trong 2020, một bài báo tiếp theo cho thấy rằng các va chạm có tiền tố được chọn—biến thể nguy hiểm hơn—có giá cả phải chăng. SHA-1 không còn đơn giản là yếu nữa; nó đã bị hỏng. Phản hồi cho phần ngắt SHA-1 là để giới thiệu SHA-2, một nhóm gồm bốn hàm: SHA-224, SHA-256, SHA-384 và SHA-512.
SHA-2 - gia đình đầu những năm 2000 (224, 256, 384, 512 và sau đó bị cắt ngắn 512/224 Và 512/256) được xây dựng trên cùng một công trình
Bốn cái này hoạt động trên các kích thước trạng thái khác nhau và kích thước khối khác nhau, nhưng chúng sử dụng cùng một cấu trúc cơ bản như SHA-1. Dòng SHA-2 đã được xuất bản vào 2001, nhiều năm trước khi xảy ra sự cố lớn vào SHA-1, nhưng nó không được áp dụng rộng rãi cho đến khi sự sụp đổ của SHA-1 trở nên cụ thể. SHA-256 tạo ra hàm băm 256-bit và hiện là lựa chọn tiêu chuẩn cho các ứng dụng mới. SHA-512 tạo ra hàm băm 512 bit và thường nhanh hơn trên bộ xử lý 64 bit vì nó hoạt động trên các từ 64 bit thay vì các từ 32 bit.
Quy ước đặt tên cho SHA-2 là nguồn gốc của sự nhầm lẫn. Các hàm này được gọi là SHA-256, SHA-384 và SHA-512 và tất cả chúng đều thuộc họ SHA-2. Khi ai đó nói SHA-2, họ muốn nói đến triết lý thiết kế và cấu trúc Merkle–Damgård chứ không phải một thuật toán đơn lẻ. Các số trong tên là độ rộng đầu ra tính bằng bit, không phải sơ đồ phiên bản. SHA-256 không phải là bản cập nhật cho SHA-1; nó là một thiết kế hiện đại sử dụng cùng một khuôn khổ nhưng có đặc tính bảo mật tốt hơn.
Các tài liệu kho lưu trữ đã thể hiện SHA-1 xung đột mà không xây dựng lại lịch sử lý thuyết không có nguồn gốc
Bên trong cấu trúc Merkle–Damgård mà SHA-1 và SHA-2 sử dụng, một hàm nén xử lý từng khối đầu vào. Trạng thái được chuyển từ khối này sang khối tiếp theo và trạng thái cuối cùng được xuất ra dưới dạng thông báo. Hàm nén SHA-256 sử dụng các hoạt động 32-bit và trạng thái 256-bit, do đó nó xử lý các khối 512-bit. Hàm nén SHA-512 sử dụng các hoạt động 64-bit và trạng thái 512-bit, do đó nó xử lý các khối 1024-bit. Những lựa chọn này ảnh hưởng đến hiệu suất và băng thông—SHA-512 thường nhanh hơn vì số học 64-bit vốn có trên phần cứng hiện đại.
Quyết định giữa SHA-256 và SHA-512 cho hệ thống mới thường dựa trên kiểm tra hiệu suất và hạn chế về không gian thay vì bảo mật vì cả hai đều vẫn an toàn kể từ đầu những năm 2020. Công cụ tính băm ToolAcre SHA cung cấp SHA-256, SHA-384 và SHA-512 đồng thời khi người đọc so sánh các thông báo cạnh nhau, họ sẽ thấy sự khác biệt bốn ký tự giữa SHA-256 (64 ký tự thập lục phân) và SHA-512 (128 ký tự hex).
SHA-3 nằm ngoài API được hỗ trợ; lịch sử cạnh tranh không được xác nhận từ bằng chứng lưu trữ
Động lực thay thế SHA-1 đã rõ ràng vào đầu những năm 2000, vì vậy NIST đã bắt đầu quá trình lựa chọn SHA-3. Thay vì thiết kế một giải pháp thay thế một cách riêng biệt, NIST đã mở ra cuộc cạnh tranh cho cộng đồng nghiên cứu mật mã. Mục tiêu là chọn một hàm băm về cơ bản khác với cấu trúc Merkle–Damgård, để đạt được sự tự tin từ sự đa dạng của các thiết kế. Nhiều đội đã gửi đề xuất và trong nhiều năm, cuộc thi đã chọn Keccak là người chiến thắng. Keccak là một công trình xốp, một cách khác để xây dựng hàm băm chưa từng được sử dụng trong tiêu chuẩn trước đây.
SHA-3 là NIST tiêu chuẩn hóa Keccak, được hoàn thiện trong 2015. Không giống như SHA-2, là một nhóm thuật toán, SHA-3 thường được gọi là một thuật toán duy nhất, mặc dù thuật toán này cũng có nhiều độ rộng. SHA-3 vẫn chưa được triển khai rộng rãi, điều này thật đáng ngạc nhiên vì nó đã trở thành tiêu chuẩn trong gần một thập kỷ. Lý do là SHA-2 không bị hỏng. Không có lý do bảo mật cấp bách nào để nâng cấp từ SHA-2 lên SHA-3. Web Crypto API của trình duyệt triển khai SHA-1 và SHA-2 chứ không phải SHA-3, đó là lý do tại sao máy tính hàm băm ToolAcre SHA không cung cấp SHA-3.
SHA-2 vẫn là mặc định của công cụ; bài viết này tránh được một tuyên bố về an toàn phổ quát không được hỗ trợ
Tại sao SHA-2 vẫn còn ở khắp mọi nơi là câu hỏi trọng tâm của việc lựa chọn thuật toán băm. SHA-2 chưa có va chạm thực tế nào được biết đến. Việc triển khai phần cứng đã hoàn thiện. Mọi ngôn ngữ lập trình và nền tảng đều hỗ trợ nó. Việc thay đổi thuật toán băm của hệ thống sẽ gây gián đoạn: mọi hàm băm được lưu trữ phải được di chuyển hoặc giữ lại để xác minh, mọi điểm tích hợp phải được cập nhật và phải thực hiện kiểm tra để đảm bảo thuật toán mới hoạt động với mọi hệ thống xuôi dòng.
Đối với những hệ thống mà SHA-2 vẫn được bảo mật thì sự gián đoạn này là không chính đáng. Đối với các hệ thống mới và giao thức mới, SHA-2 là mặc định hợp lý. Công cụ tính hàm băm ToolAcre SHA hiển thị SHA-256 và SHA-512 ở vị trí nổi bật vì chúng là những ứng dụng mới nên sử dụng. SHA-1 được liệt kê là chỉ cũ. SHA-384 được hiển thị để cung cấp tính đầy đủ và cho các trường hợp sử dụng được yêu cầu cụ thể.
Điều này không bao gồm những gì - nội bộ của Keccak, xứng đáng có bài đăng riêng của họ
Tương lai của các tiêu chuẩn băm vẫn chưa rõ ràng vào thời điểm này. SHA-3 an toàn và hoàn thiện, đồng thời cung cấp giải pháp thay thế nếu SHA-2 bị hỏng. Điện toán lượng tử đặt ra mối đe dọa lâu dài cho tất cả các hàm băm hiện tại, nhưng các thiết kế hàm băm kháng lượng tử là một lĩnh vực nghiên cứu mở. NIST đang diễn ra một cuộc thi Mật mã hậu lượng tử, lựa chọn các thuật toán nhằm chống lại các cuộc tấn công lượng tử nhưng hàm băm không phải là ưu tiên trong cuộc thi đó so với các hệ thống khóa công khai.
Đối với các ứng dụng thực tế trong những năm 2020, SHA-256 là câu trả lời cho câu hỏi "tôi nên sử dụng hàm băm nào?" Để xác minh tính toàn vẹn, đánh địa chỉ nội dung và lấy dấu vân tay, SHA-256 là tiêu chuẩn. Đối với các hệ thống cần phân loại rộng hơn, SHA-512 thường nhanh hơn trên phần cứng 64-bit. SHA-384 là phổ biến nhất trong thông số kỹ thuật của bộ mật mã TLS. SHA-1 chỉ dành cho xác minh di sản. Công cụ tính hàm băm ToolAcre SHA cung cấp tất cả bốn thuật toán Web Crypto để các nhà phát triển có thể xem kết quả đầu ra của họ.
Bài học rút ra: ba thế hệ, một họ — máy tính băm ToolAcre SHA bao gồm các thuật toán SHA-1 và SHA-2 mà trình duyệt cung cấp
Hiểu lịch sử của SHA sẽ làm rõ lý do tại sao các con số và tên có ý nghĩa như thế nào và tại sao những lựa chọn được đưa ra trong những năm 1990 và 2000 vẫn quyết định những gì các ứng dụng mới thực hiện ngày nay. SHA-0 đã bị rút một cách lặng lẽ, SHA-1 đã bị phá vỡ bởi các cuộc tấn công thực tế, SHA-2 vẫn an toàn và SHA-3 là một thiết kế thay thế được chọn để đảm bảo sự mạnh mẽ trong tương lai. Mã mới nên sử dụng SHA-256 để băm cho mục đích chung. Các hệ thống cũ vẫn sử dụng SHA-1 và khả năng tương tác với các hệ thống đó yêu cầu khả năng tính toán hàm băm SHA-1.
Công cụ tính băm ToolAcre SHA thể hiện quan điểm này: nó cung cấp SHA-256 làm mặc định, SHA-512 làm tùy chọn rộng hơn, SHA-384 cho các yêu cầu cụ thể và SHA-1 được gắn nhãn là cũ. Điều này cung cấp cho các nhà phát triển những công cụ chính xác và ghi nhãn chính xác. Việc triển khai Web Crypto của trình duyệt cung cấp các thuật toán này và ToolAcre sử dụng trực tiếp việc triển khai đó thay vì gửi mã tùy chỉnh. Sự lựa chọn này phản ánh sự phát triển của mật mã trong nhiều thập kỷ và tình trạng thực tiễn hiện nay.