Tiếng Việt

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

JWT Tải trọng không được mã hóa: Bất kỳ ai có mã thông báo đều có thể đọc chúng

· Tại sao nó quan trọng

jwt quyền riêng tư bảo vệ

Tải trọng JWT được mã hóa mở thành JSON có thể đọc được
Hình minh họa vector ToolAcre gốc

Base64url trông giống như xáo trộn nhưng nó là mã hóa có thể đảo ngược. Bài đăng này cho thấy các xác nhận quyền sở hữu của mã thông báo đã ký dễ đọc đến mức nào, nội dung nào thuộc về chúng và thay vào đó khi nào bạn cần JWE.

Có vẻ như nó đã được mã hóa — sự hiểu lầm khiến dữ liệu cá nhân được đưa vào mã thông báo

Các phân đoạn base64url dài trông có vẻ lộn xộn, điều này khiến các nhóm coi chúng là dữ liệu bị ẩn. Hiệu ứng hình ảnh là sai lệch. Bất kỳ ai nắm giữ JWT đã ký đều có thể đảo ngược mã hóa công khai và đọc tải trọng JSON mà không cần có khóa ký hoặc xác minh.

ToolAcre chứng minh thuộc tính đó bằng cách giải mã tiêu đề và tải trọng cục bộ. Nó không phá vỡ mã hóa vì tải trọng JWS thông thường không được mã hóa. Sự dễ dàng kiểm tra sẽ định hình thiết kế mã thông báo: chỉ mã hóa thông tin mà mọi chủ sở hữu hợp pháp và mọi người nhận ngẫu nhiên đều có thể nhìn thấy.

Đã ký, chưa được đóng dấu: JWS hợp lệ có thể bảo vệ tính toàn vẹn, không bảo mật tải trọng

Chữ ký hợp lệ hoặc MAC có thể cho phép trình xác minh được định cấu hình đúng cách phát hiện các thay đổi và liên kết mã thông báo với tài liệu khóa đáng tin cậy. Đó là bằng chứng về tính toàn vẹn và nguồn gốc trong chính sách của người xác minh. Nó không ẩn nội dung được bảo vệ khỏi máy khách, proxy, trình ghi nhật ký hoặc bất kỳ ai khác có được chuỗi nhỏ gọn.

Bộ giải mã thậm chí không thể thiết lập tính toàn vẹn đó vì nó không bao giờ xác minh. Nó hiển thị những gì mã thông báo nói về chính nó và báo cáo các byte chữ ký là chưa được xác minh. Sự phân biệt này tránh được hai sai lầm trái ngược nhau: cho rằng có thể đọc được là giả mạo và cho rằng đã ký có nghĩa là bí mật.

Nội dung mà bộ giải mã hiển thị — mọi xác nhận quyền sở hữu, ở dạng JSON đơn giản, không cần khóa

Đối với tiêu đề và tải trọng, ToolAcre dịch base64url, khôi phục phần đệm, khôi phục byte dưới dạng UTF-8 và phân tích cú pháp các đối tượng JSON. Không có bí mật tham gia. Sau đó, bảng xác nhận quyền sở hữu hiển thị trực tiếp các giá trị chuỗi và các giá trị có cấu trúc dưới dạng văn bản JSON, cùng với mô tả cho các tên đã đăng ký như `sub`, `aud` và `exp`.

Kết quả đầu ra đó là một sự hỗ trợ minh bạch, không phải là một lời tiên tri về sự thật. Mã thông báo bịa đặt có thể hiển thị cùng chủ đề và vai trò như mã thông báo hợp pháp. Đọc một yêu cầu không cần chìa khóa; tin rằng nó yêu cầu xác minh thành công cộng với kiểm tra nhà phát hành, đối tượng, thời gian và ứng dụng trong dịch vụ tiêu dùng.

Nơi mã thông báo bị rò rỉ - nhật ký, URL, tiêu đề liên kết giới thiệu, lịch sử trình duyệt và tập lệnh của bên thứ ba

Mã thông báo có thể bị rò rỉ qua nhật ký ứng dụng, thông báo hỗ trợ được sao chép, URL, truyền bá liên kết giới thiệu, lịch sử trình duyệt, ảnh chụp màn hình và tập lệnh có thể truy cập vào trường. Các đường dẫn chính xác phụ thuộc vào hệ thống, nhưng khả năng đọc của tải trọng có nghĩa là mã thông báo đã hết hạn hoặc không sử dụng được vẫn có thể tiết lộ thông tin cá nhân hoặc hoạt động.

Loại bỏ thông tin xác thực nhỏ gọn khỏi URL chuỗi truy vấn và nhật ký thông thường. Hãy sắp xếp lại chúng trước khi chia sẻ chẩn đoán. Chữ ký không làm sạch các xác nhận quyền sở hữu và mã hóa truyền tải chỉ bảo vệ dữ liệu khi di chuyển giữa các điểm cuối; điểm cuối được ủy quyền và bộ nhớ ngẫu nhiên vẫn có thể thấy các ký tự mã thông báo văn bản gốc.

Những gì thuộc về tải trọng - dữ liệu nhận dạng và ủy quyền, không bao giờ là bí mật hoặc dữ liệu mà chủ sở hữu không nên xem

Tải trọng thường cần số nhận dạng và bối cảnh ủy quyền để người nhận có thể đưa ra quyết định sau khi xác minh. Chúng không được mang theo mật khẩu, khóa riêng tư hoặc thông tin mà chủ sở hữu mã thông báo phải bị ngăn không cho đọc. Giảm thiểu dữ liệu cá nhân và tránh trùng lặp thuận tiện các trường hồ sơ mà không cần dịch vụ tiêu dùng.

Vai trò và phạm vi không phải là bí mật chỉ vì chúng được mã hóa, nhưng chúng vẫn không đáng tin cậy cho đến khi được xác minh. Thiết kế yêu cầu đặt ra xung quanh việc ít tiết lộ nhất cũng như ít đặc quyền nhất. Nếu người tiêu dùng không cần một trường để thực hiện công việc được ghi lại của mình thì việc loại bỏ trường đó sẽ giảm thiểu mọi hậu quả rò rỉ.

Ví dụ đã hoạt động - giải mã mã thông báo mẫu và liệt kê chính xác những gì người ngoài cuộc sẽ học được

Giải mã tải trọng tổng hợp chứa `sub`, `email`, `tenant`, `roles`, `iat` và `exp`. Người ngoài cuộc tìm hiểu mã định danh tài khoản được đặt tên, địa chỉ, bối cảnh tổ chức, quyền được xác nhận và thời gian mà không cần khóa. Liệu những khẳng định đó có chân thực hay không lại là một câu hỏi khác; văn bản của họ đã được tiết lộ.

Lặp lại quá trình kiểm tra với từng hồ sơ mã thông báo mà nhà phát hành của bạn tạo ra, chỉ sử dụng tài liệu đã hết hạn hoặc thử nghiệm. Ghi lại mọi lĩnh vực và người tiêu dùng của nó. ToolAcre có thể giúp liệt kê nội dung hiển thị nhưng không thể quyết định các quy tắc xử lý, nhạy cảm hoặc lưu giữ hợp pháp cho tổ chức của bạn.

Mã thông báo nhỏ gọn được mã hóa có năm phần mà bộ giải mã JWS này xác định thay vì giải mã

Khi các khiếu nại phải được giữ bí mật với chủ sở hữu hoặc bên trung gian thì có thể cần phải có một thiết kế được mã hóa. JWE nhỏ gọn có năm phần và sử dụng khóa giải mã người nhận. ToolAcre xác định năm phân đoạn là đầu vào được mã hóa và giải thích rằng nó không thể tiết lộ nội dung nếu không có khóa.

Mã hóa đưa ra các chế độ phân phối khóa, chính sách thuật toán và lỗi vận hành ngoài bộ giải mã này. Nó cũng không loại bỏ nhu cầu kiểm tra tính toàn vẹn và ủy quyền. Hãy chọn nó từ mô hình mối đe dọa thay vì như một bản nâng cấp mang tính thẩm mỹ cho một tải trọng lẽ ra phải chứa ít dữ liệu hơn.

Bài học rút ra: giả sử tải trọng là công khai — giải mã một trong các mã thông báo của riêng bạn trong bộ giải mã ToolAcre JWT và kiểm tra những gì nó hiển thị

Giả sử tải trọng JWT thông thường có thể đọc được ở bất kỳ nơi nào mã thông báo di chuyển. Sử dụng chế độ xem chỉ giải mã của ToolAcre để kiểm tra khả năng hiển thị xác nhận quyền sở hữu chứ không phải để chứng minh ai đã đưa ra các giá trị. Loại bỏ các bí mật và các trường cá nhân không cần thiết thay vì dựa vào base64url để che giấu chúng.

Nếu tính bảo mật thực sự được yêu cầu, hãy sử dụng cơ chế có các đặc tính bảo mật được ghi lại bao gồm nó và quản lý các khóa tương ứng. Cho dù được ký hay mã hóa, sự tin cậy vẫn đến từ chính sách và xác thực mật mã được định cấu hình, chứ không bao giờ đến từ thực tế là bộ giải mã hiển thị đầu ra có cấu trúc.