HTTPS là gì ?

Khi chúng ta truy cập các website lớn như là ThichCode.NET (tự kỷ tý :v), Google, Facebook, Microsoft,... thì chúng ta thường thấy ở đầu tên miền có https. Vậy https là gì, chúng ta cùng tìm hiểu nó xem sao.
Chuẩn https các website lớn
Chuẩn https các website lớn
HTTPS,viết tắt của Hypertext Transfer Protocol Secure, là một sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay TLS cho phép trao đổi thông tin một cách bảo mật trên Internet. Giao thức HTTPS thường được dùng trong các giao dịch nhạy cảm cần tính bảo mật cao.
Giao thức HTTPS sử dụng port 443, giúp đảm bảo các tính chất sau của thông tin:
Confidentiality: sử dụng phương thức encryption để đảm bảo rằng các thông điệp được trao đổi giữa client và server không bị kẻ thứ ba đọc được.
Integrity: sử dụng phương thức hashing để cả client và server đều có thể tin tưởng rằng thông điệp mà chúng nhận được có không bị mất mát hay chỉnh sửa.
Authenticity: sử dụng digital certificate để giúp client có thể tin tưởng rằng server/website mà họ đang truy cập thực sự là server/website mà họ mong muốn vào, chứ không phải bị giả mạo.
Việc nhờ đến bên thứ 3 (thường là CA) để xác thực danh tính của website cộng thêm sự chú ý của người dùng rằng website đó có sử dụng HTTPS và SSL certificate của nó còn hiệu lực sẽ giúp loại bỏ hoàn toàn nguy cơ bị desktop phishing.
Ví dụ: Khi truy cập vào 1 website, website đó yêu cầu ta đang nhập Username và Password để truy cập vào website. Đây là thông tin nhạy cảm, và để bảo mật hơn chúng ta nên dùng https để mã hóa kết nối trên Internet.
https vs https
https vs https

Quá trình giao tiếp giữa client và server thông qua HTTPS

1. Client gửi request cho một secure page (có URL bắt đầu với https://)
2. Server gửi lại cho client certificate của nó.
3. Client (web browser) tiến hành xác thực certificate này bằng cách kiểm tra (verify) tính hợp lệ của chữ ký số của CA được kèm theo certificate.
Giả sử certificate đã được xác thực và còn hạn sử dụng hoặc client vẫn cố tình truy cập mặc dù Web browser đã cảnh báo rằng không thể tin cậy được certificate này (do là dạng self-signed SSL certificate hoặc certificate hết hiệu lực, thông tin trong certificate không đúng) thì mới xảy ra bước 4 sau.
4. Client tự tạo ra ngẫu nhiên một symmetric encryption key (hay session key), rồi sử dụng public key (lấy trong certificate) để mã hóa session key này và gửi về cho server.
5. Server sử dụng private key (tương ứng với public key trong certificate ở trên) để giải mã ra session key ở trên.
6. Sau đó, cả server và client đều sử dụng session key đó để mã hóa/giải mã các thông điệp trong suốt phiên truyền thông.
Và tất nhiên, các session key sẽ được tạo ra ngẫu nhiên và khác nhau trong mỗi phiên làm việc với server. Ngoài encryption thì cơ chế hashing sẽ được sử dụng để đảm bảo tính Integrity cho các thông điệp được trao đổi.

Sử dụng HTTPS như thế nào ?

Trước hết, muốn áp dụng HTTPS thì trong quá trình cấu hình Webserver, bạn có thể dễ dàng tự tạo ra một SSL certificate dành riêng cho website của mình và nó được gọi làself-signed SSL certificate.
SSL certificate tự cấp này vẫn mang lại tính Confidentiality và Integrity cho quá trình truyền thông giữa server và client. Nhưng rõ ràng là không đạt được tính Authenticity bởi vì không có bên thứ 3 đáng tin cậy nào đứng ra kiểm chứng sự tính xác thực của certificate tự gán này. Điều này cũng giống như việc một người tự làm chứng minh nhân dân (CMND) cho mình rồi tự họ ký tên, đóng dấu luôn vậy!
Vì vậy, đối với các website quan trọng như E-Commerce, Online Payment, Web Mail,… thì họ sẽ mua một SSL certificate từ một Trusted Root CA nào đó như VeriSign, Comodo, GoDaddy,… Ở đây, các CA có  nhiệm vụ chính là cấp phát và quản lý các certificate.
Thực chất thì SSL certificate cũng là một loại digitial certificate (một loại file trên máy tính). Vì HTTPS có dính tới giao thức SSL nên người ta mới đặt tên cho nó là SSL certificate để phân biệt với các loại digital certificate khác như Personal Certificate, Server Certificate, Software Publisher Certificate, Certificate Authority Certificate.
Dưới đây là một số thông tin quan trọng được chứa trong SSL certificate:
  • Thông tin về chủ sở hữu của certificate (có thể là tổ chức, tên cá nhân hoặc tên miền của website).
  • Thông tin và digital signature của CA mà cấp certificate này.
  • Khoảng thời gian mà certificate còn hiệu lực.
  • Public key của website. Còn private key không có trong certificate mà được lưu trữ trên chính server và tuyệt đối không được để lộ cho bất cứ client nào.
  • Một số thông tin phụ khác như: loại SSL certificate, các thuật toán dùng để encryption và hashing, chiều dài (tính bằng bit) của key, cơ chế trao đổi key (như RSA, DSA).
  • v.v…

(Nguồn wiki)
Bài trước
Bài sau

Thíchcode.NET - Mang lại giải pháp cho coder. Nếu các bạn có gì khó khăn trong lập trình thì liên hệ chúng tôi (FanFace). Chúng tôi sẽ hỗ trợ miễn phí cho các bạn.

0 comments:


Hỗ trợ