Trao đổi với tôi

http://www.buidao.com

12/10/09

[Security] Dùng certificate để verify Webserver và mã hóa dữ liệu trao đổi trên Web (HTTPS)

1. SSL là gì ?

Client vào trang web của www.amazon.com để mua sách và trả tiền bằng thẻ tín dụng. với protocol HTTP chạy ở port 80, mọi thông tin gửi và nhận trên đường truyền đều ở dạng clear text. Nhưng trên Internet có vô số kẻ xấu, luôn rình rập đẻ sniff các thông tin (capture hòng lấy được user name, password, số credit card…). Vì vậy, trong các giao dịch trên internet, cụng là web nhưng phải mã hóa dữ liệu. lúc đó sẽ sử dụng HTTPS chạy ở port 443, và phải có key để mã hóa.

clip_image001

Có ba cơ chế phát sinh key đã biết :

- Preshared key : không dùng được trong trường hợp này, vì client và Amazon là 2 người xa lạ.

- Kerberos : càng không được vì client và Amazon không ở cùng một domain.

- Certificate Authority (CA) : dường như là tốt, nhưng thật ra là dư. Dư vì nếu dùng certificate, hai bên có thể verify lẫn nhau. ở đây đang chỉ có nhu cầu verify một chiều – tức chỉ có client đang cần verify Web-server xem có đúng là Amazon không, trước khi dùng key nào đó mã hóa các thông tin nhạy cảm để gởi đi.

clip_image003

Công ty Netspace đã cung cấp một tiêu chuẩn mã hóa dữ liệu dùng trong trường hợp này. Đó là SSL (Secure Socket Layer). Trong SSL, giả định rằng chỉ cần server có certificate là đủ, client không cần.

Nhưng nếu client không có certificate, làm sao hai bên trao đổi key được ? Quá trình trao đổi key diễn ra trong 6 bước :

B1. Client chủ động phát sinh một “Key”.

B2. Client yêu cầu Webserver gửi certificate của Webserver.

B3. Nhận được certificate của Webserver, client kiểm tra tính toàn vẹn của public key “pa”.

B4. Nếu “pa” còn tốt, client đem “Key” mã với “pa”, ra được “Cipher”.

B5. Client gửi “Ciper” cho Webserver.

B6. Webserver dùng private key “qa” của mình để giải mã “Cipher” ra lại “Key”.

Nói cách khác, SSL (Secure Socket Layer) là loại CA đặc biệt, verify một chiều. Sáu bước vừa trình chỉ để hiểu bản chất vấn đề. Trong thực tế, để chạy được SSL, Web-server chủ cần đi xin sẵn một certificate là đủ. Còn đối với client, gần như là trong suốt, cứ việc gõ https thay vì http hoặc người Administrator có thể cấu hình redirect sẵn trên webserver, client chỉ việc gõ http là vào https .

2. Bài LAB

- Cài đặt IIS (Internet Information Services) và tạo trang web defauft, truy cập bằng http://localhost/ bình thường. Nhưng truy cập theo https://localhost/ sẽ không được.

- Đi xin certificate cho Webserver : chạy IIS Manager, vào Web Sites, chọn Default Web Site Properties – tab Directory Security – mục Secure Commnunications – Nút Server Certificate và làm theo wizzard.

- Sau khi xin certificate thì xem lại bằng nút View Certificate.

- Client truy cập lại trang web default bằng https://localhost/ sẽ có thông báo về security nhưng không quan trọng, chọn nút Yes sẽ truy cập tốt.

Trong thực tế, client có thể chọn nút View Certificate để xem certificate của Web-server, nhất là xem Root CA. Nếu Root CA của Web-server chưa nằm trong trusted list, client phải add certificate của Root Ca vào trusted list bằng tay. Lúc đó, nếu đúng là Web-server tin tưởng được thì chọn nút Yes để tiếp tục trao đổi thông tin.


Link: http://daoduyhieu.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=cat%3dNETWORK%2520-%2520SECURITY