2013-03-19 39 views
6

Tôi đã đọc đặc tả Mã hóa Web JSON (JWE), với latest draft being 08, vì chúng tôi đang xem xét hỗ trợ JSON Web Tokens (JWT) trong máy chủ xác thực của chúng tôi.Xác thực nhà phát hành mã thông báo bảo mật được mã hóa bằng Mã hóa web JSON (JWE)?

Sử dụng phương pháp mã hóa bất đối xứng được xác định, khóa đối xứng (khóa chính nội dung) được mã hóa bằng khóa công khai của người nhận. Điều này có ý nghĩa để chỉ người nhận mới có thể giải mã nó và cũng đảm bảo rằng mã thông báo được dành cho họ.

Thông thường tôi cũng mong muốn thấy điều gì đó chứng minh ai là mã thông báo là từ, ví dụ: chữ ký được tạo bằng khóa riêng của tổ chức phát hành có thể được xác minh bằng khóa công khai của họ. Tuy nhiên, các chữ ký cũng xuất hiện để được bắt nguồn từ khóa chính của nội dung hoặc khóa công khai của người nhận, không đề cập đến khóa riêng của tổ chức phát hành.

Nếu không có điều này, có vẻ như tôi - miễn là định dạng mã thông báo được mong đợi đã biết - bất kỳ ai có khóa công khai của người nhận (ví dụ: ai) đều có thể tạo mã thông báo hợp lệ; không chỉ là một máy chủ xác thực đáng tin cậy.

Tôi không phải là chuyên gia về mật mã (cách xa nó) vì vậy tôi chắc chắn rằng tôi đang thiếu điều gì đó ở đây. Người nhận xác minh rằng mã thông báo được mã hóa không đối xứng đến từ một tổ chức phát hành đáng tin cậy như thế nào?

Cho rằng JSON Web Signatures (JWS) đặc điểm kỹ thuật không xác định chữ ký sử dụng khóa bí mật của tổ chức phát hành và có thể được xác nhận với khóa công khai của họ, tôi tự hỏi liệu ý tưởng là payload của token JWE nên là mã thông báo JWS?

Trả lời

4

JWT chắc chắn cho phép tải trọng lồng nhau. Trong thực tế, có một số specific reference với thông số kỹ thuật, trong đó tham số tiêu đề cty (kiểu nội dung) có thể được đặt thành JWT để chỉ ra rằng tải trọng thực tế là một JWT khác.

Vì vậy, bạn rất có thể sẽ tạo ra một JWE và bọc nó trong một JWS, ký với khóa riêng của bạn. Điều này cũng có vẻ là kết luận (hoặc ít nhất một giải pháp) từ this thread trên danh sách gửi thư của JOSE. Có một số khác là related thread để giảm kích thước tải trọng. Nói chung, danh sách gửi thư có thể đáng để mắt đến vì đó là nơi những người đứng đằng sau đặc điểm hang out.

+1

Tuyệt vời, cảm ơn bạn đã tham khảo. Khi đọc lại cẩn thận thông số kỹ thuật, phần 10 cũng xuất hiện để trình bày điều này và có một số hướng dẫn bổ sung: "Trong khi cú pháp, các hoạt động ký và mã hóa cho các JWT lồng nhau có thể được áp dụng theo bất kỳ thứ tự nào, thông thường người gửi phải ký tên và Điều này ngăn chặn các cuộc tấn công trong đó chữ ký bị tước bỏ, chỉ để lại một tin nhắn được mã hóa, cũng như cung cấp sự riêng tư cho người ký tên, hơn nữa, chữ ký trên văn bản được mã hóa không được coi là hợp lệ ở nhiều khu vực pháp lý. " –

+0

Vâng, tôi đoán là có ý nghĩa, vì thông điệp được mã hóa chính nó được bảo vệ toàn vẹn thông qua GCM hoặc một chương trình mã hóa-sau-HMAC. Nó cũng trái ngược với những gì Mike Jonessuggested trong danh sách gửi thư. Luôn luôn có rất nhiều phạm vi để trượt lên đâu đó trong khi thực hiện công cụ này :). –

+0

Tôi cần giải mã JWE và trích xuất bộ xác nhận quyền sở hữu trong JAVA. Có thư viện nào làm điều đó không? – user243655

Các vấn đề liên quan