Câu trả lời này đã được đặt ra cùng với sự giúp đỡ của hai nhà phát triển cao cấp (John Brayton và David Jennes).
Lý do chính để sử dụng mã thông báo làm mới là để giảm bề mặt tấn công.
Giả sử không có khóa làm mới và hãy xem ví dụ này:
Một tòa nhà có 80 cửa. Tất cả các cửa được mở với cùng một chìa khóa. Phím thay đổi cứ sau 30 phút. Hết 30 phút tôi phải đưa chìa khóa cũ cho thợ sửa khóa và lấy chìa khóa mới.
Nếu tôi là hacker và nhận được chìa khóa của bạn, thì vào cuối 30 phút, tôi sẽ chuyển phát nhanh đến người làm chìa khóa và nhận một khóa mới. Tôi sẽ có thể liên tục mở tất cả các cửa bất kể thay đổi chìa khóa.
Câu hỏi: Trong 30 phút, tôi có bao nhiêu cơ hội hack đối với chìa khóa? Tôi đã có 80 cơ hội hack, mỗi lần bạn sử dụng khóa (hãy nghĩ rằng điều này là thực hiện một yêu cầu mạng và chuyển mã thông báo truy cập để nhận dạng chính bạn). Vì vậy, đó là bề mặt tấn công 80X.
Bây giờ chúng ta hãy đi qua ví dụ tương tự nhưng lần này hãy giả sử có một khóa làm mới.
Một tòa nhà có 80 cửa. Tất cả các cửa được mở với cùng một chìa khóa. Phím thay đổi cứ sau 30 phút. Để có khóa mới, tôi không thể chuyển mã thông báo truy cập cũ. Tôi chỉ phải vượt qua khóa làm mới.
Nếu tôi là hacker và nhận được chìa khóa của bạn, tôi có thể sử dụng nó trong 30 phút, nhưng vào cuối 30 phút gửi nó cho người làm chìa khóa không có giá trị. Nếu tôi làm như vậy, thì người làm chìa khóa sẽ chỉ nói mã thông báo làm mới xấu này. Để có thể mở rộng bản hack của mình, tôi sẽ phải hack chuyển phát nhanh cho người làm chìa khóa. Chuyển phát nhanh có một khóa riêng biệt (nghĩ về điều này như một mã thông báo làm mới).
Câu hỏi: Trong 30 phút, tôi đã có bao nhiêu cơ hội hack đối với khóa làm mới? 80? Không. Tôi chỉ có 1 cơ hội hack. Trong thời gian chuyển phát nhanh liên lạc với thợ làm chìa khóa. Vì vậy, đó là bề mặt tấn công 1X. Tôi đã có 80 cơ hội hack chống lại chìa khóa, nhưng chúng không tốt sau 30 phút.
Một máy chủ sẽ xác minh mã thông báo truy cập dựa trên thông tin đăng nhập và ký (thường là) JWT.
Một rò rỉ mã thông báo truy cập là xấu, nhưng một khi nó hết hạn, nó không còn hữu ích cho kẻ tấn công. Một rò rỉ mã thông báo làm mới là tồi tệ hơn nhiều, nhưng có lẽ nó ít có khả năng. (Tôi nghĩ có thể đặt câu hỏi liệu khả năng rò rỉ mã thông báo làm mới có thấp hơn nhiều so với rò rỉ mã thông báo truy cập hay không, nhưng đó là ý tưởng.)
Điểm đáng chú ý là mã thông báo truy cập được thêm vào mọi yêu cầu bạn thực hiện, trong khi mã thông báo làm mới chỉ được sử dụng trong luồng làm mới Vì vậy, ít có khả năng MITM nhìn thấy mã thông báo
Tần suất giúp kẻ tấn công. Đau lòng bảo mật tiềm năng giống như trong SSL, các lỗi bảo mật tiềm ẩn trong máy khách và các lỗi bảo mật tiềm ẩn trong máy chủ đều khiến việc rò rỉ có thể xảy ra.
Ngoài ra, nếu máy chủ ủy quyền tách biệt với máy chủ ứng dụng xử lý các yêu cầu máy khách khác thì máy chủ ứng dụng đó sẽ không bao giờ thấy mã thông báo làm mới. Nó sẽ chỉ thấy các mã thông báo truy cập sẽ không tồn tại lâu hơn nữa.
Khoang là tốt cho an ninh.
Cuối cùng nhưng không kém phần quan thấy câu trả lời tuyệt vời này
Mã thông báo làm mới nào KHÔNG phải là về?
Khả năng cập nhật / thu hồi cấp độ truy cập thông qua mã thông báo làm mới là sản phẩm phụ của việc chọn sử dụng mã thông báo làm mới, nếu không, mã thông báo truy cập độc lập có thể bị thu hồi hoặc sửa đổi cấp truy cập khi hết hạn và người dùng nhận được mã thông báo mới