OpenID là gì, cách hoạt động của OpenID

13 74 0
  • Loading ...
1/13 trang

Thông tin tài liệu

Ngày đăng: 04/06/2019, 19:05

I GIỚI THIỆU Bạn thấy trang đăng nhập Facebook hay Google giống mà trang khơng có mối liên hệ tới chúng? Có thể sử dụng OpenID OAuth2 phép bạn đăng nhập vào tài khoản MXH Tơi giải thích cách hoạt động cách đơn giản II XÁC THỰC TRUYỀN THỐNG Trước vào chủ đề chính, tìm hiểu chút khái niệm xác thực truyền thống Hầu hết hệ thống biết xây dựng theo cách Xác thực truyền thống Người dùng sử dụng trình duyệt truy cập vào website, trang web yêu cầu xác thực cách nhập username password xác minh database người dùng Database phần hệ thống, đơn giản hoạt động tốt, từ góc nhìn người dùng có nhiều website website họ phải có tài khoản riêng liên kết tới database trang web Từ lý bảo mật mà người dùng phải sử dụng password khác cho trang thay đổi chúng thường xuyên Có nhiều website nên user phải dùng tài khoản riêng biệt cho website Việc bất tiện, tiện lợi tất website dùng cung sở liệu người dùng Người dùng cần có tài khoản đăng nhập cho tất Nhưng trang web không quyền truy cập vào trang web khác quyền sử dụng thông tin người dùng Tôi không muốn Twitter đọc email Gmail, thật tuyệt tơi sử dụng tài khoản để truy cập hai ứng dụng May mắn có cách làm điều Sẽ tiện lợi nhiều website dùng chung database III OPENID OpenID giao thức tiêu chuẩn mở tập trung, phát triển tổ chức phi lợi nhuận OpenID Foundation Một người dùng có tài khoản OpenID thông qua nhà cung cấp nhận dạng (OpenID identity provider) chẳng hạn Google, Facebook, … Người dùng sử dụng tài khoản để đăng nhập vào website (relying party) chấp nhận xác thực OpenID (giống YouTube chấp nhận sử dụng tài khoản Google để đăng nhập) Người dùng tùy chọn nhà cung cấp OpenID chủ trang web cấu hình cho phép làm điều Điều quan trọng mật người dùng không gửi cho website (relying party) xác thực nhà cung cấp OpenID IV CÁCH OPENID HOẠT ĐỘNG Các khái niệm - The OpenID Identifier: Một chuỗi xác định cho người dùng - The OpenID Relying Party (RP): Một nguồn tài nguyên trực tuyến (có thể trang web, tập tin, hình ảnh, điều bạn muốn kiểm sốt quyền truy cập vào) có sử dụng OpenID để xác định người truy cập - The OpenID Provider (OP): Một trang web mà người sử dụng yêu cầu OpenID sau đăng nhập xác thực danh tính để truy cập RP (có thể gặp nhiều OP quen thuộc Facebook, Google, Twitter, …) OpenID hoạt động nào? OpenID có mode: Dumb Smart a Dumb mode: End User nhận form yêu cầu đăng nhập OpenID User Agent phản hồi cho Consumer URL đại diện cho OpenID họ (VD: http://openid.example.com/User) Consumer hợp thức hóa URL OpenID sử dụng phiên tắc để gửi request (GET) tài liệu từ OpenID Server OpenID Server trả tài liệu HTML (OpenID version 1.0) tài liệu Yadis (OpenID version 2.0) 5 - - - 10 - - - - Consumer tìm tài liệu liên kết tới OpenID Server, sau chuyển hướng User Agent đến cung cấp thêm vài tham số bổ sung: openid.mode = checkid_setup : chọn mode dumb, mode có nghĩa Consumer chuyển hướng User Agent đến OpenID Server để kiểm tra danh tính End User OpenID Server trả lời cho Consumer thông qua User Agent sau kiểm tra xong openid.identity = http://openid.example.com/User : danh tính cung cấp End User OpenID Server phải xác minh danh tính cho Consumer openid.return_to = http://consumer.example.com/login.cgi? session_id=User&nonce=123456 : Đây nơi Consumer muốn User Agent đến sau OpenID Server xác thực xong OpenID Server thêm vài tham số bổ sung để xác thực người trả lời cho Consumer OpenID OpenID Server gửi hình đăng nhập cho User User gửi ID mật đến OpenID Server (phương thức POST) OpenID Server gửi form trust hỏi User có muốn tin tưởng cho Consumer dùng danh tính User Agent POST phản hồi cho OpenID Server (chấp nhận không chấp nhận) OpenID Server chuyển hướng User Agent đến Consumer Cung cấp thêm vài thông số sau: openid.mode = id_res : Giá trị “id_res” OpenID Server khẳng định End User thực sở hữu danh tính Nó “cancel” End User không chấp nhận tin tưởng Consumer openid.return_to = http://consumer.example.com/login.cgi? session_id=User&nonce=123456 : trang thông báo trạng đăng nhập thành công hay thất bại, nơi mà User Agent chuyển đến sau xác thực xong openid.signed = mode,identity,return_to : thông số mà OpenID Server “ký” để chứng minh cho Consumer đích thực OpenID Server End User openid.assoc_handle = *opaque handle* : xử lý mã hóa OpenID Server, tạo khóa để dùng cho openid.sig openid.sig = *base 64 encoded HMAC signature*: thơng số mode, identity, return_to OpenID Server mã hóa thuật tốn tạo chữ ký HMAC-SHA1 dùng khóa từ xử 11 12 13 • lý mã hóa Nhằm mục đích “ký” thơng số gửi đến Consumer Sau OpenID chuyển hướng User Agent đến Consumer gửi kèm thêm thông số bổ sung để xác nhận danh tính End User danh tính cách ký thơng số Nhưng Consumer khơng thể tự kiểm tra “chữ ký” thông số đến từ End User, hacker chỉnh sửa nhằm xâm nhập vào tài khoản End User Vì Consumer lại chuyển công việc lại cho OpenID Server, Consumer POST đến OpenID Server gửi thông số: openid.mode = check_authentication: mode muốn hỏi OpenID Server liệu có End User khơng openid.signed = mode,identity,return_to: thông số mà User bảo OpenID Server ký openid.assoc_handle = *opaque handle*: xử lý mà User gửi cho Consumer openid.sig = *base 64 encoded HMAC signature*: “chữ ký” OpenID Server xác nhận End User openid.* = everything else: thông số “ký” (trừ mode) Khi OpenID Server nhận yêu cầu này, lấy chữ ký từ thơng số ký trước so sánh với thơng số nhận từ Consumer Nếu khớp nhau, OpenID Server biết tham số mà ký gửi thông báo cho cho Consumer biết thông tin hợp lệ: "is_valid: true" Nếu chữ ký không hợp lệ OpenID Server trả thơng báo "is_valid: false" Consumer biết có kẻ cố tình giả mạo End User Consumer gửi cho End User trang thông báo đăng nhập thành công hay thất bại, dựa vào kết bước Trong trường hợp Consumer không yêu cầu OpenID Server tương tác với End User, tham số gửi bước 5, “openid.mode” “checkid_immediate” Điều cho phép User Agent bật lên cửa sổ web "openid.user \ _setup \ _url" để End User xác thực với OpenID Server cách đăng nhập, sau gửi kết xác thực cho Consumer phiên làm việc cửa sổ thay phải chuyển hướng User Agent Việc giúp trải nghiệm End User trang web mượt mà, không bị ngắt quãng b Smart mode: Ở dumb mode, lần End User cần xác thực, OpenID Server gửi cho Consumer tham số để xác thực End User chứng minh OpenID Server “chính chủ” thông qua User Agent (ở bước 10) Do Consumer khơng thể xử lý thơng số xử lý OpenID Server mã hóa, nên Consumer phải trực tiếp gửi lại tham số cho OpenID Server để xác nhận lại chúng Việc làm tốn nhiều CPU OpenID Server Consumer Nếu Consumer OpenID Server chia sẻ xử lý mã hóa hai đỡ tốn nhiều tài nguyên Đó smart mode, Consumer thiết lập xử lý mã hóa dùng chung với OpenID Server Việc chia sẻ thiết lập thực lúc nào, không thiết phải chờ End User cần xác thực thiết lập (trong ví dụ chúng thiết lập bước 5) Consumer gửi request POST tới OpenID Server để tiến hành thiết lập: - - - openid.mode = associate: mode associate, có nghĩa Consumer muốn thiết lập mã hóa dùng chung với OpenID Server openid.assoc_type = HMAC-SHA1: loại mã hóa mà Consumer muốn chia sẻ, OpenID hỗ trợ HMAC-SHA1 openid.session_type = DH-SHA1: loại phiên mà xử lý chia sẻ, dùng giao thức trao đổi khóa DiffieHellman openid.dh_* = *meh*: vài tham số để hỗ trợ giao thức trao đổi khóa Diffie-Hellman sử dụng Khi Consumer gửi request tới OpenID Server (bước 6), OpenID Server tạo khóa xử lý khóa assoc_\handle dumb mode Nhưng lưu giữ trạng thái (stateful) thay phi trạng thái (stateless) dumb mode OpenID Server sau trả lời cho Consumer số tham số để lưu trữ trạng thái Hai tham số *assoc\_handle* *mac\_key* (hoặc *enc\_mac\_key* Diffie-Hellman sử dụng) giúp Consumer hiểu xác minh yêu cầu xác thực OpenID Server mà khơng cần phải gửi lại Các bước lại trình bày giống dumb mode, tùy theo mode checkid_\setup hay checkid_\immediate, khác chỗ Consumer nhận yêu cầu xác thực từ OpenID Server thông qua User Agent (bước 12), tự hiểu xác thực thông tin mà không cần gửi lại cho OpenID Server để xác thực, Consumer lưu trữ xử lý mã hóa dùng chung với OpenID Server Và cuối cùng, Consumer gửi thông điệp cho User Agent thông báo việc xác thực thành công hay thất bại (bước 13) V VẤN ĐỀ BẢO MẬT Lỗi xác thực Do RP nhận yêu cầu xác thực OP thơng qua trình duyệt user, kẻ cơng giả mạo u cầu OpenID mà không yêu cầu địa email người dùng sau chèn địa email vào phản hồi OP Nếu kẻ công gửi phản hồi đến trang web không để ý tham số khơng OP ký, trang web bị lừa đăng nhập kẻ công vào tài khoản cục 2 Pishing OpenID có điểm yếu bảo mật dễ bị cơng pishing Ví dụ: RP độc hại chuyển tiếp người dùng đến trang OP google giả mạo yêu cầu người dùng nhập thơng tin đăng nhập họ Sau hoàn thành việc này, RP độc hại (trong trường hợp kiểm soát trang OP giả mạo) sau có quyền truy cập vào tài khoản google người dùng, sau sử dụng tài khoản người dùng để đăng nhập vào dịch vụ khác 3 Xác thực chiếm quyền điều khiển kết nối không bảo mật Một lỗ hổng quan trọng khác xuất bước cuối sơ đồ xác thực TLS / SSL không sử dụng: URL chuyển hướng từ OP đến RP Vấn đề với chuyển hướng thực tế lấy URL (ví dụ: cách bắt gói) lặp lại đăng nhập vào trang web với tư cách người dùng nạn nhân Một số OP sử dụng nonces (số sử dụng lần) phép người dùng đăng nhập vào trang web lần Giải pháp nonce hoạt động người dùng người sử dụng URL Tuy nhiên, kẻ cơng bắt gói nhanh lấy URL thiết lập lại kết nối TCP người dùng (vì kẻ cơng bắt gói biết số thứ tự TCP cần thiết) sau thực cơng phát lại mơ tả Do đó, nonces bảo vệ chống lại kẻ công thụ động, ngăn chặn kẻ công chủ động thực công chơi lại Việc sử dụng TLS / SSL q trình xác thực giảm đáng kể rủi ro Chuyển hướng bí mật Chuyển hướng bí mật lỗ hổng bảo mật cho phép kẻ công khai thác lỗ hổng Chuyển hướng mở Chuyển hướng mở có lỗ hổng kiểm tra xem URL chuyển hướng có phải URL hợp lệ không Kẻ công Chuyển hướng bí mật lợi dụng điểm yếu để bật lên cửa sổ đăng nhập lừa đảo, sau đánh cắp thông tin đăng nhập chuyển hướng người dùng đến trang cài đặt phần mềm độc hại cho nhiều mục đích hơn, chẳng hạn trộm danh tính ... nhà cung cấp OpenID chủ trang web cấu hình cho phép làm điều Điều quan trọng mật người dùng không gửi cho website (relying party) xác thực nhà cung cấp OpenID IV CÁCH OPENID HOẠT ĐỘNG Các khái... Twitter, …) OpenID hoạt động nào? OpenID có mode: Dumb Smart a Dumb mode: End User nhận form yêu cầu đăng nhập OpenID User Agent phản hồi cho Consumer URL đại diện cho OpenID họ (VD: http:/ /openid. example.com/User)... ứng dụng May mắn có cách làm điều Sẽ tiện lợi nhiều website dùng chung database III OPENID LÀ GÌ OpenID giao thức tiêu chuẩn mở tập trung, phát triển tổ chức phi lợi nhuận OpenID Foundation Một
- Xem thêm -

Xem thêm: OpenID là gì, cách hoạt động của OpenID, OpenID là gì, cách hoạt động của OpenID, II. XÁC THỰC TRUYỀN THỐNG, OpenID hoạt động như thế nào?

Gợi ý tài liệu liên quan cho bạn