[Discussion] Phân tích hoạt động của giao thức HTTPS |
18/12/2011 23:57:59 (+0700) | #1 | 251253 |
|
manthang
Journalist
|
0 |
|
|
Joined: 30/06/2008 16:36:58
Messages: 140
Offline
|
|
Dưới đây là phần tìm hiểu của manthang về chủ đề này. Mong được mọi người bổ sung, góp ý thêm.
-----
Để nắm rõ hơn cơ chế làm việc của giao thức HTTPS được mô tả trong bài viết này, những kiến thức cơ bản sẵn có về một số khái niệm liên quan sau là cần thiết:
_ Symmetric/Asymmetric encryption, Hashing function.
_ Tác dụng của SSL Certificate cũng như là các thông tin có trong nó.
_ Vai trò của Central Authority (CA).
Các bạn có thể dễ dàng tìm kiếm thông tin về các vấn đề trên trên Internet.
1. Giới thiệu
Giao thức HTTPS sử dụng port 443, và cung cấp các dịch vụ hay đảm bảo 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ẻ khác đọ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.
2. 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 (hay CA) đứ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ổi tiếng như VeriSign, Thawte, và ít tên tuổi hơn thì có GoDaddy, DynDNS… Ở đây, các CA có nhiệm vụ chính là cấp phát và quản lý SSL certificate cho server/website.
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ì giao thức 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, v.v...
Dưới đây là một số thông tin quan trọng được chứa trong SSL certificate mà bất cứ client nào cũng có thể xem được bằng cách click vào biểu tượng padlock trên thanh Address của Web browser:
_ Thông tin về owner của certificate (như tên tổ chức, tên cá nhân hoặc domain name của website).
_ Tên 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 sử dụng.
_ Public key của server/website. Còn private key được lưu trữ trên chính server (không có trong certificate) và tuyệt đối không thể để 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…
Ngoài self-signed SSL cert thì trên thị trường hiện nay tuỳ vào CA mà có vài loại SSL certificate khác nhau như: domain validated SSL cert, fully authenticated SSL cert, wildcard SSL cert, EV SSL cert, v.v...
3. 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, rồi sử dụng public key (trong certificate) để mã hóa symmetric 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 symmetric key ở trên.
6. Sau đó, cả server và client đều sử dụng symmetric 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 symmetric key sẽ được tạo ra ngẫu nhiên và có thể 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.
4. Tạm kết
HTTPS là một giao thức phổ biến trên Internet và rất cần thiết để đảm bảo an toàn cho môi trường Web. Tuy nhiên, vẫn có vài cách thức mà hacker có thể sử dụng để qua mặt cơ chế bảo vệ của HTTPS như ssl-strip (của tác giả Moxie Marlinspike), BEAST (của 2 tác giả là anh mrro và Juliano).
Để kết thúc bài viết và cũng để các khái niệm liên quan tới HTTPS trở nên gần gũi và dễ hiểu hơn, dươi đây là tình huống thực tế minh hoạ:
CMND của người A do Công an ở địa phương B cấp. Người A này muốn thực hiện một công việc gì đó rất quan trọng với tổ chức C chẳng hạn. Và giả sử CMND của A là thứ duy nhất mà C có thể dựa vào để tin tưởng được các thông tin về A như khuôn mặt, tên, tuổi, nơi ở… Vì C thấy CMND cũng có thể bị làm giả và để chắc rằng các thông tin về A được ghi trong CMND là thực thì cách tốt nhất là C đem CMND của A đến nhờ bên B xác thực giùm.
Như vậy, có thể coi:
Bên A là website
Bên B là CA
CMND của A chính là SSL Certificate do B cấp
Bên C là Web client
--manthang. |
|
keep -security- in -mind- |
|
|
|
|
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|