1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Ứng dụng chữ ký số trong xác thực phân quyền JWT và tấn công access token JWT trong web service

55 93 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ THÔNG TIN Học phần: Chuyên Đề An Ninh Mạng Bài báo cáo: Ứng dụng chữ ký số xác thực phân quyền JWT công Access Token JWT Web Service Giảng viên hướng dẫn: Sinh viên thực hiện: Trần Quốc Định Nguyễn Hoàng Đức Phạm Tuấn Nam Nguyễn Như Thuần Lê Anh Tùng TS Đỗ Xuân Chợ Nhóm 13 B17DCAT038 B17DCAT046 B17DCAT134 B17DCAT178 B17DCAT206 Hà Nội, 2021 LỜI MỞ ĐẦU Trong thời đại công nghệ số nay, thuật ngữ JWT sử dụng phổ biến với vai trò khác JWT(JSON Web Token) công nghệ phổ biến ngày nay, đồng thời gây tranh cãi nhiều Có nhiều người nói đừng dùng nó, người khác lại nói thật tuyệt vời Vậy ta nên hay khơng nên sử dụng JWT? Đó lý nhóm 13 chúng em định thực báo cáo theo chủ đề để tìm hiểu JWT tiến hành demo xác thực phân quyền sử dụng JWT Sau học xong học phần Chuyên Đề An Ninh Mạng, giúp đỡ tận tình thầy Đỗ Xuân Chợ nỗ lực việc tìm tịi học hỏi, nhóm 13 chúng em hồn thành báo cáo học phần Chuyên Đề An Ninh Mạng Báo cáo gồm phần trả lời cho câu hỏi: - JWT gì? - Tại phải dùng JWT dùng JWT? - Cách thức tạo JWT phương thức hoạt động? - Demo xác thực phân quyền JWT - Demo công JWT Trong trình thực báo cáo, cố gắng nhóm 13 chúng em cịn hạn chế thời gian tìm hiểu, kiến thức kinh nghiệm cịn nhiều sai sót Em mong nhận ý kiến đóng góp nhận xét thầy/cơ để em hồn thiện MỤC LỤC LỜI MỞ ĐẦU MỤC LỤC MỤC LỤC HÌNH ẢNH .5 DANH MỤC CÁC TỪ VIẾT TẮT Chương 1: Hoàn cảnh đời JWT .9 1.1 Tổng quan 1.2 Tại JWT lại xuất dần ưa chuộng Session? 10 1.3 JWT nên sử dụng trường hợp nào? 11 1.3.1 Xác thực API 11 1.3.2 Trao đổi thông tin 11 1.3.3 Xác thực SPA 11 1.3.4 ủy quyền hoạt động server 11 Chương 2: Xác thực phân quyền JSON Web Token .12 2.1 Khái quát Token-based authentication .12 2.2 Định nghĩa JWT 12 2.3 Các thuật ngữ liên quan 13 2.4 Cấu trúc JWT 14 2.4.1 Header .15 2.4.2 Payload 15 2.4.3 Signature 17 2.5 Luồng xử lý hệ thống sử dụng bảo mật JWT 18 2.5.1 Sơ lược luồng xử lý 18 2.5.2 Hệ thống Verify chuỗi JWT .19 2.5.3 Các thuật toán sử dụng 19 2.5.4 Luồng xử lý Security Spring Boot with JWT .23 2.6 JWT Session .23 2.6.1 Scalability – Tính mở rộng .25 2.6.2 Security – Tính bảo mật 26 2.6.3 Performance 26 Chương 3: Ứng dụng xác thực phân quyền JWT doanh nghiệp Fintech .28 Chương 4: DEMO Ứng dụng authentication authorization với ReactJS Spring Boot sử dụng JWT 31 Chương 5: DEMO công JWT Token 38 5.1 Một số cách công mã thông báo JWT .38 5.2 Demo công 40 KẾT LUẬN CHUNG .54 TÀI LIỆU THAM KHẢO .55 MỤC LỤC HÌNH ẢNH Hình 1: Mơ hình sử dụng Session - Cookie để Authenticate Hình 2: JWT .12 Hình 3: Ví dụ JSON Web Token 14 Hình 4: Cấu trúc JWT .14 Hình 5: Ví dụ Header 15 Hình 6: Header sau mã hóa base64url .15 Hình 7: Ví dụ Public 16 Hình 8: Ví dụ Private 16 Hình 9: Ví dụ Payload 17 Hình 10: Luồng xử lý .18 Hình 11: HMAC tính cách sử dụng thuật toán tương ứng 20 Hình 12: RSASSA-PKCS1-v1_5 tính tốn sử dụng thuật toán tương ứng 21 Hình 13: ECDSA tính tốn sử dụng thuật tốn tương ứng 22 Hình 14: Các luồng thực thi .24 Hình 15: Các luồng thực thi Cookie-based Authentication Token-based Authentication 25 Hình 16: Thơng tin JWT 26 Hình 17: Đăng nhập thông tin đăng nhập 28 Hình 18: Thơng tin lưu Local Storage 28 Hình 19: Request Headers .29 Hình 20: Client view nhận lại JWT 29 Hình 21: Client view nhận cookie 29 Hình 22: Vào giao diện click vào chức 30 Hình 23: Bearer Token đẩy lên server 30 Hình 24: View client sử dụng reactJS 31 Hình 25: Thông tin đăng nhập gửi theo LoginRequest 31 Hình 26: Call API tới server với LoginRequest 32 Hình 27: Khởi tạo Authentication object 32 Hình 28: AuthenticationManager 33 Hình 29: AuthenticationProvider .33 Hình 30: Đưa vào SecurityContext tạo JWT 34 Hình 31: Hàm tạo JWT 34 Hình 32: JWA algorithm name 35 Hình 33: setJWTToken 35 Hình 34: Đăng nhập thành cơng chuyển đến giao diện 36 Hình 35: Key Value 36 Hình 36: Header gắn Authentication với token .36 Hình 37: JwtAuthenticationFilter 37 Hình 38: validateToken 37 Hình 39: Dựng proxy .40 Hình 40: Bật proxy browser 40 Hình 41: Điền username password .41 Hình 42: Burpsuite bắt gói tin .41 Hình 43: Chuyển gói tin bắt sang repeater .42 Hình 44: Respone .43 Hình 45: Sử dụng decoder để phân tích nội dung JWT 44 Hình 46: sửa đổi thành phần 45 Hình 47: Thay đổi nội dung fullname 46 Hình 48: Thực thi chức xóa 47 Hình 49: Response phản hồi 48 Hình 50: Server phản hồi JWT hết hạn 48 Hình 51: Tạo project 49 Hình 52: Burpsuite bắt gói tin gửi request tạo project 50 Hình 53: Hệ thống phản hồi lại invalid JWT 51 Hình 54: Expired JWT token 52 Hình 55: Save thành cơng hệ thống với JWT tạo cho request client .53 DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt JSON JWT RFC HMAC RSA SHA-256 HS256 IANA URI H.P.S RESTful HTTP HTTPS SSL LDAP API URL DNS IP Thuật ngữ tiếng Anh Giải thích JavaScript Object Notation JSON Web Token Request for Comments Hashed Message Authentication Code Rivest–Shamir–Adleman Secure Hash Algorithm 256 HMAC and SHA-256 Internet Assigned Numbers Authority Uniform Resource Identifier Header.Payload.Signature REpresentational State Transfer HyperText Transfer Protocol HyperText Transfer Protocol Secure Secure Sockets Layer Lightweight Directory Access Protocol Application Programming Interface Uniform Resource Locator Domain Name System Internet Protocol Thuật ngữ tiếng Việt Giải thích Một kiểu liệu mở JavaScript Mã thông báo web JSON tiêu chuẩn mở Loại mã xác thực thông điệp liên quan đến hàm băm khóa mật mã bí mật Thuật tốn mật mã hóa khóa cơng khai Băm bảo mật 256 bit tạo hàm băm đảo ngược Một thuật toán đối xứng, có khóa (bí mật) chia sẻ hai bên Tổ chức cấp phát số hiệu Internet Định dạng tài nguyên thống Cấu trúc JWT Những ứng dụng có sử dụng kiến trúc REST Giao thức truyền tải siêu văn phần mở rộng HTTP Tiêu chuẩn công nghệ bảo mật giao thức ứng dụng truy cập cấu trúc thư mục Giao diện lập trình ứng dụng Trình định vị tài nguyên thống Hệ thống phân giải tên miền Giao thức Internet ECDSA JWS Elliptic Curve Digital Hệ mật dựa đường cong Elliptic Signature Algorithm giải thuật khố cơng khai Chữ kỹ có tác dụng xác minh JSON Web Signature JWT Chương 1: Hồn cảnh đời JWT 1.1 Tổng quan - Đối với ứng dụng web, di động, desktop…vv chắn tạo tài khoản, sau phải đăng nhập để sử dụng tính bên ứng dụng, hành động gọi Authentication – xác thực người dùng - Vậy xác thực người dùng cách nào? Đầu tiên ta nhìn lại chút mơ hình đơn giản việc trang web phổ biến xưa sử dụng Session – Cookie để Authenticate Hình 1: Mơ hình sử dụng Session - Cookie để Authenticate - Đối với mơ hình xác thực Session – Cookie trên, người dùng đăng nhập vào trang web server tạo Session (phiên làm việc) cho người dùng lưu Server, đồng thời ID Session trả lưu lại Cookie trình duyệt người dùng (Session có hạn sử dụng Dev định, ví dụ ngày Sau ngày người dùng phải đăng nhập lại để tạo Session làm việc mới.) - Và người dùng đăng nhập, Session cịn hạn, Cookie ln ln đính kèm với Request người dùng gửi lên Server Sau Server so sánh Session ID nhận từ Cookie với thông tin Session lưu server (có thể RAM Database) để xác minh người dùng gửi lại Response tương ứng 1.2 Tại JWT lại xuất dần ưa chuộng Session? - Lí nằm việc “Extend Platform”mở rộng tảng hệ thống Hãy thử tưởng tượng ta có trang web hoạt động ổn định với Session, sau ta phải làm thêm Native Apps (ứng dụng di động) cho hệ thống IOS Android, sử dụng chung Database với ứng dụng web nào? Lúc xác thực người dùng sử dụng Native app Session Native app khơng có Cookie, Browser có - Ngồi ra, có số lí ta nên sử dụng JWT như: + JWT dễ bảo trì debug + JWT có khả tạo RESTful services thực thụ + JWT tích hợp thời gian hết hạn - Vậy nên JWT sinh để giải vấn đề ln ưu tiên lựa chọn bắt đầu làm dự án 10 Hình 41: Điền username password Hình 42: Burpsuite bắt gói tin 41 - Send To Repeater để thêm gói gửi Packet đến Server Hình 43: Chuyển gói tin bắt sang repeater 42 - Response gói tin nhận JWT Token Hình 44: Respone 43 - Phân tích nội dung JWT với Base64 Hình 45: Sử dụng decoder để phân tích nội dung JWT 44 - Sửa đổi thành phần JWT Hình 46: sửa đổi thành phần - Từ Access Token ban đầu: eyJhbGciOiJIUzUxMiJ9.eyJmdWxsTmFtZSI6InR1bmdsYSIsImlkIjoiMiIsImV4cCI6MT YzODExNjA5OSwiaWF0IjoxNjM4MTE1Nzk5LCJ1c2VybmFtZSI6IjEyMzEyM0Bnb WFpbC5jb20ifQ.o-VY0jAA4kubfTUb1C8pLWfRqDpQlcGweijp18ozewYYl8ZRHYxXF6flcXZUToY47_gcV1UlzDHBgjjNb69QQ 45 Hình 47: Thay đổi nội dung fullname - Thay đổi nội dung fullName JWT ta nhận JWT với nội dung mới: eyJhbGciOiJIUzUxMiJ9.eyJmdWxsTmFtZSI6InR1bmdsYTIwMjk5IiwiaWQiOiIyIiwiZ XhwIjoxNjM4MTE2MDk5LCJpYXQiOjE2MzgxMTU3OTksInVzZXJuYW1lIjoiMTIz MTIzQGdtYWlsLmNvbSJ9.1uTOAVtGFiwrV78URDHWKBLDP8jxCChCmjOI6OI3n qljA6ov8Bo-rXXb9wZQdj2Luzft8de5EDRejh7ihS4WRw 46 - Thực thi chức xóa với JWT vào gói packet bắt Burp Suite Hình 48: Thực thi chức xóa 47 - Response phản hồi Invalid Username and Invalid Password => Server lọc JWT với Signature phản hồi JWT Invalid Hình 49: Response phản hồi - Server phản hồi Expired JWT token Hình 50: Server phản hồi JWT hết hạn 48 - Tấn công JWT với chức thêm Hình 51: Tạo project 49 Hình 52: Burpsuite bắt gói tin gửi request tạo project 50 - Hệ thống phản hồi lại JWT Invalid Hình 53: Hệ thống phản hồi lại invalid JWT 51 - Do Time Out JWT hạn Hình 54: Expired JWT token 52 - Thử lại với JWT hệ thống Hình 55: Save thành cơng hệ thống với JWT tạo cho request client 53 KẾT LUẬN CHUNG JSON Web Tokens (JWTs) nhẹ dễ dàng sử dụng tảng ngôn ngữ Đây cách thông minh thuận tiện để xác thực ủy quyền mà khơng cần phiên Có số thư viện JWT có sẵn để ký xác minh mã thơng báo Cũng có nhiều lý để sử dụng mã thơng báo Auth0 giúp triển khai xác thực mã thông báo cách dễ dàng Khơng có cách tiếp cận phù hợp với tất Nó phụ thuộc vào kiến trúc ứng dụng trường hợp sử dụng cụ thể Kết thúc học phần Chuyên Đề An Ninh Mạng, nhóm 13 chúng em hoàn thành báo cáo Kết quả, báo cáo đạt nội dung cụ thể sau: - Nắm khái quát Token-based authentication - Nắm khái niệm JWT, cấu trúc JWT - Nắm luồng xử lý hệ thống bảo mật sử dụng JWT - Nắm khác biệt JWT Cookie - Tìm hiểu ứng dụng Fintech sử dụng JWT - Tiến hành demo ứng dụng authentication authorization với ReactJS Spring Boot sử dụng JWT - Tìm hiểu tiến hành demo cơng JWT Tuy nhiên phải nói dù cố gắng nhiều, nhóm 13 chúng em khơng tránh khỏi sai sót trong báo cáo, chúng em mong nhận bảo đóng góp ý kiến thầy/cơ để báo cáo em hoàn thiện 54 TÀI LIỆU THAM KHẢO [1] P Otemuyiwa, "JSON Web Tokens vs Session Cookies: In Practice," 23 Aug 2016 [Online] Available: https://ponyfoo.com/articles/json-web-tokens-vs-session-cookies [2] P Đ Việt, "Khái niệm JSON Web Token," 10 Jul 2016 [Online] Available: https://techmaster.vn/posts/33959/khai-niem-ve-json-web-token [3] "JWT Framework," [Online] Available: https://web-token.spomky-labs.com/ [4] T V Minh, "Tìm hiểu json web token (JWT)," 28 Mar 2016 [Online] Available: https://viblo.asia/p/tim-hieu-ve-json-web-token-jwt-7rVRqp73v4bP [5] J W T Structure [Online] Available: https://auth0.com/docs/security/tokens/jsonweb-tokens/json-web-token-structure [6] M Jones, Microsoft, J Bradley, Ping Identity, N Sakimura, NRI, "JSON Web Token (JWT)," May 2015 [Online] Available: https://datatracker.ietf.org/doc/html/rfc7519 55 ... liên tục vào sở liệu (hệ thống cần kiểm tra chữ ký Signature số thông tin claims đủ) 27 Chương 3: Ứng dụng xác thực phân quyền JWT doanh nghiệp Fintech - Hệ thống JWT xác thực phân quyền TPBank... Thơng tin xác thực đánh dấu tin cậy nhờ vào chữ ký Phần chữ kỹ JWT mã hóa HMAC RSA Như vậy, bảo mật JWT phương pháp xác thực quyền truy cập (authentication) JSON Web Token Hình 2: JWT 12 2.3... 3: Ứng dụng xác thực phân quyền JWT doanh nghiệp Fintech .28 Chương 4: DEMO Ứng dụng authentication authorization với ReactJS Spring Boot sử dụng JWT 31 Chương 5: DEMO công JWT Token

Ngày đăng: 21/01/2022, 22:53

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w