2 Answers
- Client kết nối đến server.
- Client thực hiện bắt tay với server, ở bước này thì hoặc là client hoặc là server sẽ tạo ra một cặp khoá bí mật/công khai, sau đó gửi cho bên còn lại khoá công khai, ở đây, giả sử là server sẽ tạo ra cặp khoá và gửi cho client khoá công khai.
- Client khi nhận được khoá công khai sẽ tạo ra một session key, và dùng khoá công khai để mã hoá session key này và gửi cho session key đã được mã hoá cho server.
- Server sẽ dùng private key để giải mã và nhận được session key gốc.
- Từ sau đó client và server sẽ sử dụng session key để mã hoá dữ liệu, ví dụ là dùng thuật toán mã hoá AES.
Nhìn vào các bước ở trên em không thấy có sự xuất hiện của CA đúng không? Vậy vai trò của CA là gì?
CA có vai trò cốt lõi là một nơi để lưu chứng chỉ (thông tin) của server, nghĩa là nơi để lưu khoá công khai của server ánh xạ tới một số thông tin như email, trụ sở, ... Sau đó thì khi client nhận được khoá công khai của server thì sẽ gọi đến CA để kiểm tra, nếu được CA trả về là trust thì ok, ko thì ngắt kết nối.
Từ vai trò này phát sinh ra những tranh cãi về vai trò cao hơn của CA,. CA có cần xác thực độ tin cậy và hợp pháp của tên miền không? Bởi vì đối với người dùng bình thường họ chỉ cần nhìn thấy là https, chạy được trình duyệt bình thường là được, và họ tin, bởi vì họ không thể nào có kiến thức chuyên sâu để hiểu về chứng chỉ là gì, CA là gì vân vân.
Tuy nhiên ngày nay có thể thấy rằng, các CA ra đời như nấm, thậm chí là miễn phí, vậy thì chẳng có sự xác thực nào ở đây cả, thế cho nên hoàn toàn có thể mặc định giao thức HTTP là có mã hoá, bỏ CA đi, vậy cho đơn giản và tiết kiệm, đó cũng là một ý kiến đáng ghi nhận.
-
0