Tiếng Việt

Công cụ dành cho nhà phát triển · Bộ giải mã JWT

Giải mã và xác minh: Chữ ký JWT chứng minh điều gì và tại sao người giải mã lại bỏ qua nó

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

jwt bảo vệ mật mã

Các đường dẫn riêng biệt cho các xác nhận quyền sở hữu có thể đọc được và xác minh bằng mật mã
Hình minh họa vector ToolAcre gốc

Giải mã không cần chìa khóa; việc xác minh cần một cái đúng. Bài đăng này giải thích nội dung của chữ ký, HMAC và xác minh bất đối xứng khác nhau như thế nào cũng như lý do tại sao một công cụ chỉ giải mã lại trung thực trong việc chứng minh không có gì.

Nó giải mã tốt nên nó phải hợp lệ — giả định dẫn đến việc chấp nhận mã thông báo giả mạo

Mã thông báo có thể giải mã hoàn hảo sau khi kẻ tấn công viết tải trọng mới và đính kèm văn bản tùy ý làm phân đoạn thứ ba. Phân tích cú pháp Base64url và JSON là các phép biến đổi công khai; cũng không kiểm tra xem ai đã lắp ráp chuỗi. Do đó, “Các khiếu nại xuất hiện trên màn hình” không phải là bằng chứng cho thấy tổ chức phát hành đã tạo ra hoặc phê duyệt chúng.

ToolAcre củng cố ranh giới này ở một số nơi. Kết quả luôn mang `signatureVerified: false`, giao diện người dùng lặp lại cảnh báo xác nhận quyền sở hữu chưa được xác minh bên cạnh đầu ra và các cuộc kiểm tra khẳng định không có bề mặt `valid` hoặc `verify`. Đó là sự trung thực có chủ ý, không phải là một tính năng tiện lợi bị thiếu.

Chữ ký bao gồm những gì - các byte chính xác của tiêu đề và tải trọng được mã hóa, được nối bằng dấu chấm

Đối với JWS thu gọn, đầu vào ký là phân đoạn tiêu đề được bảo vệ được mã hóa, dấu chấm bằng chữ và phân đoạn tải trọng được mã hóa. Việc xác minh liên quan đến các byte được mã hóa chính xác đó chứ không phải JSON được in mới đẹp. Việc sắp xếp lại các thuộc tính hoặc thay đổi khoảng trắng có thể tạo ra các byte khác nhau ngay cả khi con người nhìn thấy các đối tượng tương đương.

Phân đoạn thứ ba mang chữ ký được mã hóa hoặc MAC byte được tạo qua đầu vào đó. ToolAcre bảo tồn phân đoạn thô và có thể báo cáo độ dài byte của nó nhưng không bao giờ chạy kiểm tra mật mã. Việc đo hình dạng dữ liệu không thể xác định rằng khóa dự kiến ​​đã tạo ra nó hoặc hai phân đoạn đầu tiên không thay đổi.

HMAC so với bất đối xứng — một bí mật chung mà bất kỳ ai có thể xác minh cũng có thể giả mạo, so với khóa chung chỉ có thể xác minh

Với HMAC, bí mật được chia sẻ hỗ trợ cả việc tạo và kiểm tra MAC. Một bên có thể xác minh bằng bí mật đó cũng có thể tạo ra một mã thông báo khác, do đó việc phân phối bí mật sẽ xác định ranh giới tin cậy. Ghi chú của ToolAcre làm rõ hệ quả này đối với các nhãn thuật toán HS được công nhận.

Chữ ký bất đối xứng tách biệt khả năng ký riêng tư khỏi tài liệu xác minh công khai. Sở hữu khóa công khai có thể hỗ trợ việc kiểm tra mà không cần cấp quyền ký. Sự khác biệt này không làm cho nhãn bất đối xứng được khai báo theo tiêu đề trở nên đáng tin cậy: người xác minh phải biết thuật toán và khóa phát hành nào được chấp nhận.

Khóa đến từ đâu — cấu hình cho các bí mật được chia sẻ, điểm cuối JWKS cho khóa chung, được đối sánh bởi trẻ em

Bí mật được chia sẻ phải đến từ cấu hình dịch vụ được bảo vệ, không phải văn bản mã thông báo. Khóa xác minh công khai có thể đến từ mối quan hệ nhà phát hành đáng tin cậy và bộ khóa được kiểm soát. `kid` có thể giúp chọn trong tập hợp đó nhưng không được biến nội dung tiêu đề tùy ý không đáng tin cậy thành tệp, cơ sở dữ liệu hoặc tra cứu mạng.

ToolAcre không có cấu hình của tổ chức phát hành và không yêu cầu khóa nên việc xác minh sẽ không thể được thực hiện một cách có trách nhiệm ở đó. Một trang web chung không thể suy ra tổ chức nào bạn tin tưởng, đối tượng nào bạn phục vụ hoặc thuật toán nào ứng dụng của bạn cho phép. Đó là những đầu vào chính sách ứng dụng, không phải thuộc tính có thể phát hiện được bằng cách giải mã.

Tại sao giải mã không cần khóa - base64url là mã hóa, không phải mã hóa, vì vậy bất kỳ ai cũng có thể đọc được xác nhận quyền sở hữu

Không cần khóa để giải mã vì base64url là mã hóa đảo ngược chứ không phải mã hóa. Tiêu đề và tải trọng được dùng để di chuyển cùng với mã thông báo và có thể được phục hồi bởi bất kỳ chủ sở hữu nào. Điều này cho phép kiểm tra hữu ích nhưng cũng có nghĩa là thông tin bí mật sẽ không bị ẩn đằng sau tiếng ồn trực quan của các ký tự được mã hóa.

JSON phân tích cú pháp chỉ thêm cấu trúc. Nó có thể cho bạn biết rằng `roles` là một mảng hoặc `exp` là một số chứ không phải giá trị nào cũng là xác thực. ToolAcre hiển thị các giá trị có cấu trúc dưới dạng văn bản và mô tả đã đăng ký dưới dạng tài liệu trong khi ủy quyền cho hệ thống có thể xác minh và thực thi chính sách.

Ví dụ đã hoạt động - mã thông báo có một ký tự tải trọng được thay đổi vẫn giải mã hoàn hảo; chỉ thông báo xác minh

Bắt đầu bằng mã thông báo tổng hợp có trọng tải là `{"sub":"demo","role":"reader"}`. Thay đổi một ký tự tải trọng được mã hóa để các byte vẫn ở dạng JSON hợp lệ, có thể tạo ra một vai trò khác. Cả hai phiên bản đều có thể tách, giải mã và in đẹp. Đường dẫn giải mã không có lý do gì để từ chối phiên bản đã thay đổi.

Trình xác minh được định cấu hình chính xác sẽ tính toán lại hoặc kiểm tra kết quả mật mã dựa trên đầu vào ký đã thay đổi và từ chối thông tin không khớp. Sự so sánh này thể hiện ranh giới chính xác: thành công của bộ giải mã bao gồm cú pháp, trong khi thành công của trình xác minh có thể thiết lập tính toàn vẹn liên quan đến khóa đáng tin cậy và thuật toán được phép trước khi đánh giá chính sách xác nhận quyền sở hữu.

Điều này không bao gồm những gì - bộ giải mã ToolAcre JWT không bao giờ xác minh chữ ký, theo thiết kế; không có gì nó hiển thị chứng minh mã thông báo là chính hãng

ToolAcre không bao giờ xác minh chữ ký. Một phân đoạn trống nhận được cảnh báo, mã hóa chữ ký không đúng định dạng nhận được một phân đoạn khác và các byte có thể đo lường được báo cáo là có nhưng chưa được xác minh. Không có nhánh nào trong số này đưa ra phán quyết về mã thông báo chính hãng. Việc triển khai không có đường dẫn thực hiện thuật toán hoặc thu thập khóa ẩn.

Ngay cả việc xác minh mật mã thành công cũng sẽ không tự động cho phép thực hiện một hành động nào. Dịch vụ tiêu dùng vẫn cần kiểm tra nhà phát hành, đối tượng, thời gian và ứng dụng cụ thể. Bài viết này dừng trước khi định cấu hình thư viện vì khả năng hỗ trợ và mặc định khác nhau; tham khảo người xác minh chính xác và phiên bản được sử dụng bởi dịch vụ của bạn.

Bài học rút ra: giải mã để kiểm tra, xác minh để tin cậy — sử dụng bộ giải mã ToolAcre JWT cho thư viện đầu tiên và thư viện phía máy chủ với khóa bên phải cho thư viện thứ hai

Giải mã để kiểm tra, xác minh trước khi tin tưởng. Sử dụng công cụ trình duyệt để tìm mã thông báo tổng hợp hoặc đã hết hạn khi bạn cần xem các trường tiêu đề, giá trị tải trọng, chuyển đổi thời gian và cảnh báo cấu trúc. Không bao giờ để đầu ra có thể đọc được đó trực tiếp đưa vào quyết định truy cập.

Chuyển công việc tiếp theo đến một người xác minh đáng tin cậy với tài liệu chính được cung cấp độc lập, các thuật toán được ghim và chính sách dịch vụ. Chỉ đường dẫn đó mới có thể kiểm tra tính xác thực và tính toàn vẹn, đồng thời chỉ những lần kiểm tra xác nhận quyền sở hữu tiếp theo mới có thể quyết định ủy quyền. Việc bộ giải mã từ chối làm mờ các công việc đó là một tính năng bảo mật.