Tải bản đầy đủ
Khách hàng xác thực bắt tay TLS

Khách hàng xác thực bắt tay TLS

Tải bản đầy đủ

30

mã đã chọn, điều này có thể được bỏ qua bởi các máy chủ).

Hình 2.9 Quá trình bắt tay TLS
4. Các Server yêu cầu một giấy chứng nhận Client, để kết nối có thể
được hai bên xác thực, sử dụng tin nhắn CertificateRequest.
5. Server gửi một tin nhắn ServerHelloDone, cho thấy nó được thực
hiện với đàm phán bắt tay.
6. Client đáp ứng với một thông điệp Giấy chứng nhận, trong đó có
giấy chứng nhận của Client.
7. Client sẽ gửi tin nhắn ClientKeyExchange, có thể chứa một phím,
PreMasterSecret công cộng, hoặc không có gì. (Một lần nữa, điều này phụ
thuộc vào thuật toán mã hóa được lựa chọn.) PreMasterSecret này được mã
hóa bằng cách sử dụng khóa công khai của các chứng chỉ Server.

31

8. Client sẽ gửi tin nhắn CertificateVerify là một chữ ký trên tin bắt tay
trước đó bằng cách sử dụng khóa riêng của Client. Chữ ký này có thể được
xác minh bằng cách sử dụng khóa công khai chứng chỉ của Client. Điều này
cho phép Server biết rằng Client có thể truy cập vào các khóa riêng của giấy
chứng nhận và do đó sở hữu giấy chứng nhận.
9. Client và Server sau đó sử dụng các số ngẫu để tính toán một bí mật
phổ biến, được gọi là "bậc thầy bí mật". Tất cả các dữ liệu quan trọng khác
cho kết nối này có nguồn gốc từ bí mật mà Server và Client tạo ra các giá trị
ngẫu nhiên được thông qua một hàm giả ngẫu nhiên được thiết kế cẩn thận.
Cuối cùng, Client sẽ gửi một tin nhắn mã hóa hoàn thành, có chứa một
băm và MAC trong thông báo bắt tay trước.
Các Server sẽ cố gắng để giải mã tin nhắn Kết thúc của Client. Nếu giải
mã hoặc kiểm tra xác nhận không thành công, những cái bắt tay được coi là
đã thất bại và kết nối nên được dỡ bỏ. Server sẽ gửi thông báo Finished mã
hóa của riêng mình. Client thực hiện các giải mã và xác minh.
2.2 Giao thức HTTPS.
2.2.1. Giới thiệu giao thức HTTPS
2.2.1.1. Giới thiệu giao thức HTTP
HTTP là chữ viết tắt từ Hyper Text Transfer Protocol (giao thức truyền
tải siêu văn bản). Được xây dựng dựa vào nền của Internet và sử dụng giao
thức TCP/IP để truyền tải thông tin giữa các Web Client và Web Server.
HTTP là giao thức Client/Server dùng cho World Wide Web. Nó cung
cấp cách để Web Browser truy xuất Web server và yêu cầu các văn bản
hypermedia được tạo bởi HTML. Các văn bản HTML có thể chứa các siêu
kiên kết (hyperlink) đến các nơi khác nhau, có thể trong cùng một văn bản,
một văn bản khác cùng một Web site hay một văn bản trên một Web site

32

khác. HTTP có nhiệm vụ xử lý các liên kết này và cung cấp giao thức truyền
tin cho Client/Server.
HTTP là giao thức hướng đối tượng tổng quát, không trạng thái, có thể
dùng cho nhiều nhiệm vụ chẳng hạn như đặt tên cho Server và các hệ thống
quản lý đối tượng phân tán, thông qua việc mở rộng các phương thức theo yêu
cầu các lệnh. Khi Client đang chạy Web Browser gõ tên Server hay địa chỉ IP
vào trường Address, browser sẽ định vị địa chỉ này trên mạng (mạng intranet
nội bộ hay mạng internet tùy thuộc vào sự kết nối) và sự kết nối sẽ được thực
hiện đến Web server đã chỉ định. HTTP là giao thức lệnh và điều khiển xác
lập việc truyền tin giữa Client và Server và chuyển lệnh qua lại giữa hai hệ
thống
Chẳng hạn, khi bạn gõ một địa chỉ Web URL vào trình duyệt Web, một
lệnh HTTP sẽ được gửi tới Web server để ra lệnh và hướng dẫn nó tìm đúng
trang Web được yêu cầu và kéo về mở trên trình duyệt Web.

Hình 2.10 Giao thức HTTP
HTTP là giao thức truyền tải các file từ một Web server vào một trình
duyệt Web để người dùng có thể xem một trang Web đang hiện diện trên
Internet.

33

2.2.1.2. Giới thiệu giao thức HTTPS
HTTPS là một giao thức truyền thông sử dụng HTTP (Hypertext
Transfer Protocol) và giao thức SSL / TLS (Secure Sockets Layer / Transport
Layer Security) để cung cấp thông tin liên lạc mã hóa và xác định an toàn của
một máy chủ Web. 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.

Hình 2.11 Giao thức HTTPS
Giao thức HTTPS sử dụng port 443, cung cấp các dịch vụ hay đảm bảo
tính chất sau của thông tin:
-

Bảo mật

(Confidentiality):

sử dụng phương thức mã

hóa

(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.
- Tính toàn vẹn (Integrity): sử dụng phương thức băm (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.
- Tính xác thực (Authenticity): sử dụng chứng thực số (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.

34

2.2.2 Cơ chế hoạt động của HTTPS.
Để sử dụng giao thức HTTPS thì trong quá trình cấu hình Web Server
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 mang tính bảo mật và tính toàn vẹn 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 xác thực bởi vì không có bên thứ 3 đáng tin cậy nào. Certificate
Authority (CA) đứng ra kiểm chứng tính xác thực của certificate.

Hình 2.12 Mô hình xác thực CA
Đố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, ít tên tuổi hơn thì có GoDaddy, DynDNS… Các
CA có 2 nhiệm vụ chính sau:
- Cấp phát và quản lý SSL certificate cho Server, Website.
- Xác thực sự tồn tại và hiệu lực của SSL certificate mà Web Client gửi
tới nó.

35

Thực chất thì SSL certificate cũng là một loại digitial 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
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ề chủ sở hữu của certificate (như tên tổ chức, tên cá
nhân hoặc domain của website…).
- Tên và chữ ký số của CA cấp certificate.
- 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…).
Quá trình giao tiếp giữa Client và Server thông qua HTTPS:

Hình 2.13 Mô hình hoạt động HTTPS

36

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 gửi certificate này tới CA (mà được ghi trong certificate) để
kiểm chứng.
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. 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.
2.3 Giải pháp Reverse Proxy bảo vệ Web Server
2.3.1. Giới thiệu Reverse Proxy
2.3.1.1. Giới thiệu Proxy
• Proxy là một Internet server đứng giữa một client và tất cả các server
mà clientđó muốn truy cập đến, làm nhiệm vụ chuyển tiếp thông tin và kiểm
soát tạo sự an toàn cho việc truy cập Internet của các client, cho phép bảo mật
kết nối, chỉ cho phép một số cổng và protocol nào đó, ví dụ: TCP, HTTP,
Telnet trên các cổng 80, 23.

37

Khi một Client yêu cầu một trang nào đó, yêu cầu này sẽ được chuyển
đến Proxy Server nó sẽ chuyển tiếp yêu cầu đến Website đó. Khi yêu cầu
được đáp trả, Proxy sẽ trả kết quả này lại cho Client tương ứng. Proxy Server
có thể được dùng để ghi nhận việc sử dụng internet và ngăn chặn những trang
bị cấm.
• Proxy Server kiểm tra các request xem nó có thể xử lý bằng cache của
nó không, nếu không thể, nó sẽ chuyển yêu cầu này đến Remote Server. Nó
chặn tất cả các yêu cầu đến các Server để xem nó có khả năng đáp ứng được
không, nếu không thể, nó sẽ chuyển yêu cầu này đến các Server.
Proxy Server còn là một loại buffer giữa máy tính của chúng ta và tài
nguyên trên mạng internet mà chúng ta đang truy cập, dữ liệu bạn yêu cầu sẽ
đến Proxy trước, sau đó mới được chuyển đến máy Client.
Mục đích của proxy
• Tăng tốc độ kết nối: các Proxy có một cơ chế gọi là ache, có chế cache
cho phép lưu trữ lại những trang được truy cập nhiều nhất, điều này làm cho
việc truy cập của bạn sẽ nhanh hơn, vì bạn được đáp ứng yêu cầu một cách
nội bộ mà không phải lấy tin trực tiếp từ internet.
• Mọi truy cập đều phải thông qua proxy nên việc bảo mật được thực
hiện tốt hơn.
• Lọc và ngăn cản các truy cập không được cho phép như các trang đồi
trụy, các trang phản động …
• Proxy servers cũng có thể được cấu hình để mã hóa luồng dữ liệu dựa
vào các tham số khác nhau. Một tổ chức có thể sử dụng tính năng này để cho
phép các kết nối được mã hóa giữa hai địa điểm mà các điểm truy cập của
chúng đều trên Internet.

38

Hình 2.14 Mô hình hoạt động Proxy
2.3.1.2. Giới thiệu Reverse Proxy
Reverse Proxy là một Proxy thường được đặt ở phía trước Web Server,
đứng giữa một Server và tất cả Client mà Server này phải phục vụ. Các
request từ Client, buộc phải vào Reverse Proxy tại đây sẽ kiểm soát, lọc bỏ
các request không hợp lệ và luân chuyển các request hợp lệ đến đích cuối
cùng là các Web Server. Reverse Proxy có thể luân chuyển request cho nhiều
Server cùng lúc, còn có thể được sử dụng để cho phép xác thực người dùng
truy cập vào một mạng nội bộ ngay cả khi họ được đặt bên ngoài. Các giao
thức được sử dụng cho quá trình xác thực như HTTP, HTTPS, Reverse Proxy
cũng có thể được triển khai để xử lý tăng tốc SSL, cân bằng tải, cache.
Ngoài ra áp dụng Reverse Proxy đúng cách sẽ giúp tăng cường chất
lượng cũng như nâng cao khả năng mở rộng của các ứng dụng Web chạy trên
các Server.
Reverse Proxy có thể ẩn và che dấu sự tồn tại của Server. Khi Client từ
Internet muốn truy cập vào Web Server của bạn, Reverse Proxy Server sẽ
đóng vai trò là Web Server. Tức là Client chỉ được phép giao tiếp với Proxy
Server mà họ sẽ nghĩ là giao tiếp với Web Server thật sự. Reverse Proxy sẽ
chuyển tiếp yêu cầu đến Web Server thật sự và đáp lại theo chiều ngược lại.

39

Hình 2.15 Mô hình hoạt động Reverse Proxy
Như vậy Reverse Proxy Server sẽ thay thế Web Server giao tiếp với
Client kết nối đến. Tính năng của ứng dụng tường lửa có thể bảo vệ Web
Server chống lại các cuộc tấn công phổ biến trên Web. Không có Reverse
Proxy xóa phần mềm độc hại thì mọi việc trở nên khó khăn hơn. Các Reverse
Proxy phổ biến nhất thực hiện giao thức HTTP, HTTPS.
2.3.2 Cơ chế hoạt động của Reverse Proxy.
Việc đưa một Web Server hay một ứng dụng Server trực tiếp trên
Internet dẫn đến những kẻ tấn công có thể truy cập trực tiếp tới bất cứ lỗ hổng
của server (ứng dụng, web server, thư viện, hệ điều hành). Tuy nhiên để cung
cấp một dịch vụ hữu ích cho người sử dụng Internet có thể sử dụng để lọc gói
tin chắn Web Server khỏi các cuộc tấn công trên mạng.
Reverse proxy có thể bảo vệ các ứng dụng Server ở mức độ của các giao
thức ứng dụng, được bảo vệ bởi một bức tường lửa lọc gói tin.
Reverse Proxy là một lá chắn thực sự bảo vệ web server. Cấu hình Reverse
Proxy để lọc tất cả các yêu cầu, chỉ những yêu cầu vô hại sẽ được gửi tới Web
Server. Hai tường lửa lọc gói tin để ngăn không có truy cập trực tiếp từ bên

40

Hình 2.16 Web server với tường lửa bảo vệ
ngoài tới Web Server. Trong mô hình mạng có một khu (DNZ) chỉ chứa
Reverse Proxy và khu vực Server an toàn bao gồm Web Server.
2.3.2.1. Mô hình Reverse Proxy
Để giải quyết các vấn đề trên ta sử dụng giải pháp bảo vệ Web Server
bằng Reverse Proxy.
 Browser
- Phát ra các yêu cầu độc hại tới Backend Server thông qua tường lửa
và Reverse Proxy.
- Nhận thông điệp trả lời thông quan Reverse Proxy và tường lửa.
 Outer Firewall: tường lửa phía ngoài
- Bộ lọc lưu lượng mạng đến và cho phép truy cập tới Reverse Proxy
qua cổng HTTP
- Có thể từ chối kết nối đi từ Reverse Proxy.
 Reverse Proxy
- Chấp nhận yêu cầu từ trình duyệt và chuyển tiếp các yêu cầu hợp lệ
tới Backend Server.
- Truyền lại thông điệp trả lời từ Backend Server tới trình duyệt gốc.