Tiếng Việt

Công cụ dành cho nhà phát triển · Máy tính hàm băm SHA

Tại sao tiền điện tử trên web cung cấp SHA-1 cho SHA-512 nhưng không phải MD5 hoặc SHA-3

· Cách thức hoạt động

mật mã browser-apis sha-256 javascript

Bốn hộp thuật toán được gắn nhãn SHA-1 đến SHA-512 có dấu kiểm và các hộp bị thiếu tương ứng cho MD5 và SHA-3
Hình minh họa vector ToolAcre gốc

Thông báo của trình duyệt API hỗ trợ chính xác bốn thuật toán. Bài đăng này giải thích lý do MD5 bị loại bỏ, tại sao SHA-3 chưa được thêm và điều đó có ý nghĩa gì đối với một công cụ từ chối cung cấp những gì nền tảng không cung cấp.

MD5 ở đâu? — câu hỏi đầu tiên của bất kỳ ai di chuyển quy trình làm việc tổng kiểm tra kế thừa

Web Crypto API của trình duyệt gửi chính xác bốn thuật toán phân loại: SHA-1, SHA-256, SHA-384 và SHA-512. Nếu bạn tiếp cận máy tính băm ToolAcre SHA mong đợi MD5 hoặc SHA-3, bạn sẽ không tìm thấy chúng. Tính đặc hiệu đó không phải là hạn chế của công cụ; nó phản ánh sự lựa chọn nền tảng có chủ ý. Hiểu lý do tại sao bốn lựa chọn này được đưa vào và tại sao hai lựa chọn thay thế phổ biến bị bỏ qua sẽ cho bạn biết rất nhiều điều về cách thiết kế API trình duyệt.

Mọi trình duyệt chính đều hiển thị crypto.subtle.digest về nguồn gốc an toàn. Khi JavaScript gọi phương thức đó, nó sẽ chuyển sang triển khai mật mã của nền tảng—mã gốc chạy với hộp cát bảo mật và tối ưu hóa hiệu suất. Các thuật toán tổng hợp được cung cấp đã được Nhóm làm việc về tiền điện tử trên web W3C chọn với các ưu tiên cụ thể: khả năng tương thích với các tiêu chuẩn bảo mật hiện có, hỗ trợ có sẵn trên các thư viện mật mã, mức độ hoàn thiện và nhu cầu bảo mật thực tế của nền tảng web.

Bốn thuật toán SubtleCrypto.digest hỗ trợ — SHA-1, SHA-256, SHA-384 và SHA-512 và không có thuật toán nào khác

ToolAcre chấp nhận bốn số nhận dạng giống nhau được thực thi bởi digBytes: SHA-1, SHA-256, SHA-384 và SHA-512. Một tên không được nhận dạng sẽ bị từ chối trước khi Web Crypto được gọi và bộ thử nghiệm đặc biệt vượt qua MD5 để xác nhận sự từ chối đó. Do đó, người chọn mô tả ranh giới sản phẩm được thử nghiệm thay vì khảo sát mọi bản tóm tắt từng được tiêu chuẩn hóa.

SHA-1 xuất hiện trong danh sách đó không đưa ra tất cả bốn đề xuất tương đương. Đối tượng kết quả của nó mang một lá cờ bị hỏng và giao diện lặp lại cảnh báo cũ; ba lựa chọn còn lại là SHA-2 lựa chọn có sẵn. Tính sẵn có và tính phù hợp phải tách biệt bất cứ khi nào một công cụ tương thích tái tạo một giá trị cũ mà không khuyến khích sự phụ thuộc mới vào nó.

MD5 không có trong quá trình triển khai này và Web Crypto; bài viết này không thêm cơ sở lý luận về tiêu chuẩn không có nguồn gốc

MD5 là hàm băm mật mã tạo ra bản tóm tắt 128-bit, làm cho hàm băm này ngắn hơn và rẻ hơn về mặt tính toán so với SHA-256. Trong nhiều thập kỷ, nó là lựa chọn tiêu chuẩn cho tổng kiểm tra và chữ ký số. Tuy nhiên, khả năng chống va chạm của MD5 về cơ bản đã bị phá vỡ. Trong 2004, các nhà mật mã học đã chứng minh sự xung đột thực tế—hai đầu vào khác nhau có cùng thông tin tóm tắt—và thuật toán đã được nghiên cứu học thuật loại bỏ triệt để. Lỗ hổng toán học là tuyệt đối và vĩnh viễn.

Đặc tả W3C Web Crypto đã đưa ra lựa chọn có chủ ý là không bao gồm MD5. Lý do rất đơn giản: việc chuyển một thuật toán bị lỗi tới hàng triệu người dùng trình duyệt sẽ bình thường hóa việc sử dụng nó trong các ứng dụng mới, mặc dù nó chỉ xuất hiện trong các tình huống tương thích cũ. Nếu một ứng dụng thực sự yêu cầu MD5 để có khả năng tương tác với các hệ thống cũ thì mã đó thuộc về thời gian chạy phía máy chủ nơi yêu cầu được hiểu và kiểm tra chứ không phải trong trình duyệt. Làm cho một thuật toán bị hỏng có thể truy cập được một cách thuận tiện sẽ tạo ra những kỳ vọng về bảo mật trong các hệ thống mới.

Công cụ tính hàm băm ToolAcre SHA cũng không gửi triển khai MD5. Giống như nền tảng API mà nó sử dụng, nó từ chối tạo điều kiện cho một thuật toán bị hỏng có thể truy cập được một cách thuận tiện. Nếu ứng dụng của bạn thực sự yêu cầu MD5—hiếm khi nằm ngoài các hệ thống Git cũ—việc triển khai thuộc về cơ sở mã của riêng bạn với ghi chú rõ ràng rằng đó là một yếu tố tương thích. Khả năng truy cập tạo ra kỳ vọng và các thuật toán bị hỏng không đáng được kỳ vọng.

SHA-3 nằm ngoài trình duyệt API và công cụ; lịch sử áp dụng của nó là bằng chứng bên ngoài kho lưu trữ

SHA-3 đã được NIST chuẩn hóa trong 2015 sau một cuộc cạnh tranh công khai kéo dài và nó rất vững chắc về mặt mật mã. Nó sử dụng cấu trúc cơ bản khác với SHA-2, được gọi là miếng bọt biển, cung cấp các đặc tính lý thuyết thú vị và sự cân bằng hiệu suất tùy thuộc vào phần cứng của bạn. Trên các hệ thống hiện đại, SHA-3 có thể nhanh hơn SHA-256. Tuy nhiên, nền tảng trình duyệt ngày nay không bộc lộ điều đó và sự chậm trễ này phản ánh các quyết định thực tế về mức độ trưởng thành của nền tảng và tốc độ áp dụng.

Sự chậm trễ trong vận chuyển SHA-3 phản ánh thực tế: Web Crypto được thiết kế để bao gồm các thuật toán được sử dụng rộng rãi nhất trên web và trong HTTPS/TLS. Tại API hoàn tất, SHA-2 (256, 384, 512) là sự đồng thuận áp đảo đối với các hệ thống mới và việc chuyển sang SHA-3 đang diễn ra chậm hơn nhiều so với việc di chuyển từ MD5 hoặc SHA-1. Hầu hết các ứng dụng chưa cần SHA-3. Chi phí mở rộng API và thử nghiệm nó trên mọi trình duyệt và nền tảng không phù hợp với nhu cầu khi ra mắt.

Đây không phải là sự từ chối vĩnh viễn. Web Crypto API có thể phát triển. Nếu việc áp dụng SHA-3 tăng tốc thì nhóm làm việc có thể thêm nó. Bộ hiện tại đại diện cho các thuật toán hoàn thiện, được tiêu chuẩn hóa rộng rãi mà Web Crypto cần để phục vụ nhu cầu bảo mật trước mắt của nền tảng. API trình duyệt phải ổn định và được bảo trì cẩn thận; Việc gấp rút bổ sung các tính năng trước khi có nhu cầu rộng rãi sẽ tạo ra gánh nặng bảo trì và rủi ro về khả năng tương thích trong nhiều năm tới.

Tại sao SHA-1 vẫn còn đó — nhu cầu xác minh kế thừa và sự khác biệt giữa cung cấp và đề xuất

SHA-1 được đưa vào Web Crypto mặc dù đã bị phá vỡ về mặt mật mã. Sự lựa chọn phản trực giác này thường khiến các nhà phát triển ngạc nhiên. Thuật toán tạo ra một bản tóm tắt 160-bit và các cuộc tấn công xung đột chống lại SHA-1 hiện đã trở nên thực tế—hai tài liệu khác nhau có thể được tạo ra để chia sẻ cùng một bản tóm tắt. Va chạm tiền tố được chọn cho phép kẻ tấn công tạo ra hai tài liệu vừa có ý nghĩa khi va chạm, làm phá vỡ chữ ký và chứng chỉ. Tuy nhiên, nó vẫn còn trong nền tảng.

SHA-1 vẫn còn trong Web Crypto vì một lý do cần thiết: khả năng tương thích cũ. Giá trị nhận dạng đối tượng Git dựa trên SHA-1 và trong khi dự án Git đang chuyển sang SHA-256, hàng triệu kho lưu trữ, tài liệu tham khảo và hệ thống xây dựng hiện có vẫn phát ra hàm băm SHA-1. TLS dấu vân tay chứng chỉ từ các hệ thống cũ hơn mang theo thông báo SHA-1. Các API đã cấp HMAC-SHA1 chữ ký cách đây nhiều năm vẫn cần xác thực. Các hệ thống được triển khai này phải được xác minh hoặc di chuyển. Nền tảng bao gồm SHA-1 để thực hiện công việc cần thiết đó.

Nền tảng API bao gồm SHA-1 với sự hiểu biết rõ ràng rằng nó nhằm mục đích tương thích chứ không phải để đề xuất. Nhãn giao diện người dùng của trình duyệt SHA-1 kèm theo cảnh báo. Công cụ tính băm ToolAcre SHA hiển thị "Đã phá vỡ mật mã" bên cạnh kết quả SHA-1, đảm bảo rằng bất kỳ ai sử dụng công cụ này đều hiểu rằng họ đang làm việc với tài liệu cũ. Minh bạch là điều cần thiết; người dùng không bao giờ được nhầm lẫn khả năng tương thích của SHA-1 với chứng thực của SHA-1.

Nếu khả năng tương thích yêu cầu MD5, hãy sử dụng cách triển khai đã được đánh giá bên ngoài công cụ này và đừng bao giờ nhầm lẫn khả năng tương thích với bảo mật

Bốn thuật toán trong Web Crypto phù hợp với hệ sinh thái bộ mật mã TLS và với các tiêu chuẩn bảo mật quan trọng nhất. SHA-256 là giá trị mặc định hiện tại cho băm mục đích chung, được sử dụng trong kiểm tra tính toàn vẹn của nguồn phụ, đánh địa chỉ nội dung và hệ thống bảo mật mới. SHA-512 nhanh hơn trên phần cứng 64-bit và cung cấp thông tin tổng hợp rộng hơn. SHA-384 chủ yếu được biết đến nhờ sử dụng trong bộ mật mã TLS.

SHA-1 được giữ lại để đảm bảo khả năng tương tác chứ không phải vì bất kỳ ai cũng nên khởi động hệ thống mới với nó. Nếu bạn đang xác minh tổng kiểm tra SHA-1 hiện có, khớp với dấu vân tay chứng chỉ cũ hoặc tạo lại ID cam kết Git, SHA-1 trong ToolAcre sẽ cho phép bạn làm điều đó. Nếu bạn đang thiết kế một hệ thống mới, SHA-256 là lựa chọn hiển nhiên. Thuật toán bạn chọn báo hiệu sự hiểu biết của bạn về mô hình bảo mật.

Điều này không bao gồm - thời gian chạy phía máy chủ, thường hiển thị nhiều thuật toán tóm tắt hơn

Nếu ứng dụng của bạn thực sự cần MD5, SHA-3 hoặc bất kỳ thuật toán nào khác thì lựa chọn rất rõ ràng: giữ mã đó trong thời gian chạy phía máy chủ và chỉ hiển thị kết quả cuối cùng cho trình duyệt. Không gửi triển khai JavaScript của riêng bạn thuật toán mã hóa để sử dụng cho trình duyệt. Web Crypto gốc của trình duyệt nhanh hơn, an toàn hơn và được kiểm tra theo cách mà hàm JavaScript viết tay không thể sánh được. Ủy thác cho nền tảng luôn là lựa chọn đúng đắn khi nền tảng đó cung cấp những gì bạn cần.

Điều này áp dụng ngay cả với các thuật toán "đơn giản". Việc triển khai MD5 tự viết có vẻ vô hại vì MD5 dù sao cũng bị hỏng, nhưng các thuật toán hỏng không có cấp độ—chúng chỉ bị hỏng. Shipping one bình thường hóa việc thực hiện mật mã trong mã ứng dụng. Trình duyệt cung cấp những gì nền tảng cần; sử dụng những gì nó cung cấp. Mật mã cuộn tay là nguồn lỗ hổng bảo mật lớn nhất trong các ứng dụng web vì các nhà phát triển đánh giá thấp các trường hợp phức tạp và phức tạp.

Bài học rút ra: các hạn chế là một phần của sản phẩm — máy tính hàm băm ToolAcre SHA cung cấp bốn thuật toán mà trình duyệt triển khai nguyên bản và ghi lại ranh giới đó

Công cụ tính hàm băm ToolAcre SHA trực tiếp giải quyết ràng buộc này: bạn thấy chính xác bốn thuật toán mà Web Crypto cung cấp, không hơn không kém. Nếu bạn dán vào một giá trị và cho rằng "Tôi cần MD5" thì sự vắng mặt đó là có chủ ý. Nếu bạn cần, đó là tín hiệu cho thấy hệ thống của bạn có một thành phần cũ cần được xử lý cẩn thận—chính xác là loại công cụ di chuyển phía máy chủ chuyên dụng dành cho chứ không phải tiện ích trình duyệt. Tính trung thực của công cụ này về những gì nó cung cấp và không cung cấp bản thân nó đã là những thông tin có giá trị.

Thiết kế Web Crypto phản ánh thực tiễn mã hóa trong nhiều thập kỷ: các thuật toán được tiêu chuẩn hóa, kiểm tra và được chứng minh khi triển khai rộng rãi. SHA-256 và SHA-512 là các giá trị mặc định hợp lý. SHA-384 mang dòng dõi TLS của nó. SHA-1 ở đó vì web có SHA-1 thông báo cần được xác minh trong nhiều năm. MD5 và SHA-3 không có ở đó vì MD5 bị hỏng và SHA-3 chưa quan trọng đối với nền tảng.