SSL (Secure Socket Layer) là một giao thức được phát triển bởi Netscape và mục đích chính của nó là cung cấp sự bảo mật và tin cậy giữa hai ứng dụng giao tiếp, ngăn cản sự nghe trộm và giả mạo các bản tin.
3.1.3.1.Kiến trúc
Giao thức SSL chạy trên nền TCP/IP và nằm bên dưới các giao thức mức cao như TELNET, FTP hoặc HTTP. Nó cung cấp sự mã hoá, xác thực giữa Server và Client và các bản tin.
68
SSL là một giao thức phân lớp. Nó nằm trên giao thức TCP và dưới lớp ứng dụng. Nó nhận dữ liệu từ các ứng dụng, phân chia luồng dữ liệu này thành các khối có thể quản lý, nén các khối đó(optionally), cung cấp một mã xác thực bản tin(Message Authentication Code _ MAC ) cho dữ liệu, mã hoá nó và sau đó truyền khối dữ liệu được mã hoá này đi.
Ở phía thu, quá trình diễn ra ngược lại, dữ liệu được giải mã, xác thực, giải nén, tập hợp lại và sau đó được chuyển lên cho lớp ứng dụng.
Giao thức SSL bao gồm hai phần chính:
– Giao thức bắt tay SSL(The SSL Handshake Protocol) – Giao thức bản ghi SSL(SSL Record Protocol)
Giao thức Bắt tay chịu trách nhiệm cho việc tạo sự giao tiếp bảo mật giữa client và Server. Điều này được thực hiện bằng việc xác thực cả Server và Client và sự đàm phán của một thuật toán mã hoá và các chìa khóa mật mã. Giao thức bản ghi chịu trách nhiệm cho việc bao bọc thông tin của các giao thức lớp cao hơn. Ngoài ra, còn có hai thành phần khác: SSL Change Cipher Spec Protocol and SSL Alert Protocol.
Mục đích chính của SSL:
– Mã hoá (Encryption ): Một trong những mục đích chính của SSL là thiết lập một kết nối bảo mật giữa hai thực thể giao tiếp. Một sự mã hoá đối xứng(symmetric Encryption) được sử dụng sau khi có sự bắt tay ban đầu để định nghĩa một khoá bảo mật(secret key).
– Tin cậy(Reliability): Kết nối phải là tin cậy. Các bản tin truyền đi được kiểm tra tính toàn vẹn bằng cách sử dụng khoá MAC. Các hàm băm bảo mật được sử dụng cho việc tính toán giá trị MAC.
– Có khả năng hoạt động với nhau(Interoperability): Các ứng dụng của các nhà lập trình khác nhau vẫn có thể thực hiện trao đổi các tham số mã hoá thành công mà không cần biết mã của nhau.
69
– Mở rộng(Extensibility): Cung cấp một khung cho phép các khoá public(public key) và các phương pháp mã hoá chính có thể cùng làm việc khi cần thiết. Điều này cho phép đạt được bỏ qua nhu cầu thực hiện toàn bộ
một thư viện bảo mật mới.
– Các hiệu quả khác: Các hoạt động mã hoá sẽ chiếm thêm nhiều thời gian xử
lý của CPU, do vậy giao thức SSL có một vài lựa chọn(như caching và nén),
điều này cho phép giảm bớt số lượng các kết nối cần được thiết lập không cần thiết và làm giảm hoạt động mạng.
Các loại mật mã được sử dụng trong SSL:
SSL hỗ trợ nhiều loại mật mã khác nhau. Các loại mật mã đối xứng giống như DES, RC4 và Triple DES được sử dụng cho mã hoá dữ liệu. Mật mã khóa chính(Public Key) giống như RSA, KEA được sử dụng để xác thực cho các số nhận dạng của các thực thể tham gia giao tiếp. Khoá chính cũng được sử dụng để xác định các các khoá đối xứng mà Client và Server sẽ sử dụng trong một phiên SSL.
3.1.3.2.The SSL Handshake Protocol
Giao thức này còn được gọi là giao thức trao đổi khoá(key-exchange), chịu trách nhiệm cho việc thiết lập một phiên giao tiếp bảo mật giữa hai thực thể. Giao thức SSL handshake protocol có thể phân chia thành các tầng quan trọng sau: – Xác thực Server cho Client.
– Đàm phán(trao đổi) các thuật toán mã hoá nói chung mà client và Server có thể hỗ trợ.
– Xác thực Client cho Server(không bắt buộc).
– Sử dụng sự mật mã theo khoá chính để trao đổi các tham số mã hoá(shared secrets).
– Thiết lập một kết nối SSL được mã hoá.
70
8 bits 24 bits
Type Length Content Hình 3.8:Cấu trúc bản tin SSL Handshake Protocol
– Type: Loại bản tin bắt tay của SSL. Các loại bản tin của giao thức bắt tay SSL: 1. client_hello 2. server_hello 3. server_certificate 4. server_key_exchange 5. certificate_request 6. server_hello_done 7. client_certificate 8. client_key_exchange 9. certificate_verify 10. Change_cipher_spec 11. finished
– Length: Chiều dài tính theo byte của bản tin. – Content: Các tham số khác của bản tin. Giao thức bắt tay được mô tả trong sơđồ sau:
71
Hình 3.9:Quá trình bắt tay giữa hai thực thể giao tiếp IP Sec
Quá trình bắt tay nhanh(Short handshake process):
Có một lựa chọn cho client và Server để tiếp tục lại một phiên làm việc trước
đây bằng cách sử dụng session ID. Trong trường hợp này, không cần thực hiện lại quá trình bắt tay đầy đủ(full handshake), và duy nhất các bản tin client_hello, server_hello, change_cipher_spec và finished được gửi đi mà thôi.
The SSL Change Cipher Spec Protocol
Giao thức này được sử dụng trong phần cuối của giao thức SSL Handshake protocol để thông báo cho các thực thể tham gia giao tiếp thay đổi trạng thái chờ sang trạng thái đang xử lý. Điều này có nghĩa là các thực thể sẽ kết thúc sử dụng thuật toán trao đổi khoá công khai(kết thúc quá trình bắt tay) và chuyển sang sử dụng mã hoá dữ liệu và thuật toán MAC.
The SSL Alert Protocol
Giao thức này chịu trách nhiệm cho việc thông báo về các lỗi xảy ra trong quá trình bắt đầu từ khi thiết lập tới khi kết thúc kết nối.
Có hai mức thông báo: – Thông báo lỗi nghiêm trọng
72
– Cảnh báo
Nếu thông báo lỗi nghiêm trọng xảy ra, kết nối có thể bị huỷ bỏ ngay tức thì. Các kết nối khác có cùng phiên làm việc có thể vẫn tiếp tục nhưng session ID sẽđược đánh dấu là không hợp lệ và dẫn đến không thể thiết lập các kết nối mới trên phiên làm việc này.
– Level: Chỉđịnh đây là lỗi nghiêm trọng hay chỉ là cảnh báo. – Alert: Chỉđịnh một loại cảnh báo xác định.
3.1.3.3.SSL Record Protocol
Trong SSL, tất cả dữ liệu truyền đi được bao bọc vào trong một đối tượng được gọi là bản ghi(record). Bản ghi này cú hai phần là tiờu đề và phần data. Tiêu đề
chứa thông tin về bản ghi và được truyền trước phần dữ liệu.
Hình 3.10: Cấu trúc bản tin SSL Record Protocol
SSL Record Header
Mỗi bản ghi có tiêu đề dài 5 bytes, các trường của phần tiêu đề gồm có:
– Type ( 8 bit ): Chỉđịnh loại dữ liệu trong bản ghi là gì và giao thức mức cao hơn sẽ xử lý bản ghi này là gì. Các loại bản ghi bao gồm:
+ change_cipher_spec
+ alert
+ handshake
73
– Version ( 16 bit ): Chứa phiên bản của SSL. Nó bao gồm phiên bản chính và phiên bản phụ.
– Length ( 16 bit ): Chứa chiều dài phần dữ liệu của bản ghi.
SSL Record Data
Phần dữ liệu của lớp bản ghi được xử lý qua bốn giai đoạn: – Phân mảnh (Fragmentation)
– Nén (Compression)
– Cung cấp giá trị MAC ( Message Authentication Code ) – Mã hoá(Encryption)
Hình 3.11: Các bước xử lý phần dữ liệu
Fragmentation
Dữ liệu từ các ứng dụng được phân mảnh thành các bản ghi SSL(plain text) có kích thước nhỏ hơn 214 bytes.
Compression
Trong giai đoạn này, thuật toán nén được định nghĩa trong quá trình bắt tay sẽ
74
khi nén không vượt quá 2^14 + 1024.
Applying MAC (Message Authentication Code)
Trong giai đoạn này, một giá trị MAC được định nghĩa trong quá trình bắt tay
được gắn kèm theo phần dữ liệu được nén này.Giá trị MAC được tính như sau: MAC-DATA = HASH ( MAC-WRITE-SECRET, PAD2, HASH ( MAC- WRITE-SECRET, PAD1, SEQUENCE-NUMBER, SSLCompressed.type, SSLCompressed.length, SSLCompressed.fragment ) )
Các thuật toán băm, được sử dụng để tính toán MAC được tạo ra từ các thuật toán mã hoá. MAC-WRITE-SECRET là giá trị được chia sẻ giữa client và Server. PAD1 là một byte có giá trị 0x36 được lặp lại 48 lần đối với MD5 và 40 lần đối với SHA. PAD2 là một byte có giá trị 0x5C được lặp lại giống như
PAD1. SEQUENCE-NUMBER hoạt động giống như một bộđếm. Mỗi thực thể
tham gia kết nối có 2 bộđếm. Một cho các bản tin phát đi và một cho các bản tin nhận được. Mỗi lần bản tin gửi đi bộ đếm tăng lên một đơn vị. Khi bản tin
change-cipher -specđược gửi đi, các bộđếm được thiết lập về không. SSL hỗ trợ hai thuật toán hàm băm:
– MD5, a hàm băm 128-bit .
– SHA (Secure Hash Algorithm), hàm băm 160-bit.
Encryption
Có hai loại thuật toán mã hoá được sử dụng trong giai đoạn này là mã hoá theo luồng dữ liệu hoặc mã hoá theo khối. Khi thuật toán mã hoá theo luồng được sử
dụng thì phần phụ(padding) là không cần thiết. Khi thuật toán mã hoá theo khối, phần dữ liệu đưa xuống để mã hoá cần là một số nguyên lần của kích thước khối theo thuật toán mã hoá. Chiều dài tổng cộng sau khi mã hoá phải không vượt quá 2^14+2048.
Các thuật toán mã hoá được sử dụng trong SSL version 3.0 là: Block Cipher Stream Cipher
75 IDEA – 128 bit RC2 - 40 bit DES - 40 bit DES - 56 bit 3DES - 168 bit Fortezza – 80 bit RC4 - 40 bit RC4 - 128 bit 3.2. MỘT SỐ CÔNG NGHỆĐẢM BẢO AN TOÀN MẠNG 3.2.1.Bức tường lửa (Firewall)
Firewall có thể được định nghĩa là một máy tính hay một hệ thống máy tính dùng để kiểm soát, ngăn chặn luồng dữ liệu vào/ra của một mạng máy tính. Nó có chức năng bảo vệ mạng từ những tấn công bên ngoài.
Firewall cho một hệ thống máy tính có tác động như một hàng rào bảo vệ phía ngoài. Nó được điều khiển theo những đặc quyền quy định cho những truy cập vào hệ thống và ghi lại những truy cập đó. Firewall thực hiện bảo đảm an toàn hệ thống thông qua sự hạn chế các kết nối vào ra mạng có thể gây hại đến mạng. Firewall có thể khác nhau tuỳ theo chức năng và kỹ thuật nhưng đều có hoạt
động gắn liền với họ giao thức TCP/IP, tức là liên quan tới các dịch vụ mạng chạy trên các giao thức Telnet, SMTP, DNS, SMNP. Firewall đọc thông tin trong IP header và căn cứ vào chính sách thiết lập sẵn để quyết định cho phép hay ngăn chặn luồng tin lưu thông trên mạng. Sự quyết định này dựa trên một tập luật được cấu hình sẵn mỗi khi firewall khởi động hay được kích hoạt lại.
3.2.1.1.Phân loại
Firewall có nhiều loại, nhiều dạng khác nhau nhưng có thể phân làm hai loại cơ
bản là Firewall lọc gói và cổng ứng dụng bảo mật mức ứng dụng.
1)Packet Filterring
Một packet-fiterring firewall(firewall lọc gói) đơn giản kiểm tra luồng lưu lượng
76
Một firewall lọc gói phân tích các gói TCP và UDP và so sánh chúng với một tập các luật được xác lập trước gọi là ACL(access control list). Các firewall lọc gói chỉ kiểm tra các thành phần sau trong gói:
o Địa chỉ IP nguồn(Source IP address)
o Địa chỉ IP đích(Destination IP address)
o Cổng nguồn(Source port)
o Cổng đích(Destination port)
o Giao thức sử dụng(TCP/UDP)
Ngoài các thành phần trên, một vài firewall lọc gói kiểm tra thông tin trong phần tiêu đề để xác định đây là một gói yêu cầu một thiết lập kết nối mới hay là một gói dữ liệu trên một kết nối đang tồn tại(căn cứ vào các cờ trong TCP header). Các thành phần đó được so sánh với ACL(rule set) để xác định các gói được cho phép đi vào mạng hay không.
Loại firewall này có một số các nhược điểm sau: – Các ACL có thể rất phức tạp và khó quản lý.
– Một firewall lọc gói có thể bịđánh lừa trong việc cho phép những truy nhập bất hợp pháp đi vào mạng nếu kẻ tấn công sử dụng địa chỉ IP nguồn giả(IP spoofing).
– Nhiều ứng dụng mới(ví dụ các ứng dụng multimedia) tạo nhiều kết nối trên các cổng ngẫu nhiên mà không có cách nào xác định được cổng nào sẽđược sử dụng cho đến khi kết nối được thiết lập. Bởi vì danh sách điều khiển truy cập được cấu hình bằng tay do đó rất khó để cung cấp sự hỗ trợ cho các ứng dụng đó.
2)Application Level Gatewall Firewall
Hạn chế người dùng truy cập vào một ứng dụng nào đó. Các ứng dụng được cung cấp dựa theo các dịch vụ của Firewall. Người dùng chỉ sử dụng các ứng dụng được kiểm soát qua các chương trình dịch vụ nên khả năng xuất hiện lỗ
77
được kiểm soát nên các dạng virus lan truyền kiểu gửi email, gửi qua Web, các dạng tấn công đều bị ngăn chặn nếu có mẫu kiểm soát.
3.2.1.2.Hoạt động của Firewall
Để bảo vệ cho các mạng riêng, các firewall nói chung có thểđưa ra các dịch vụ
sau:
– Network Address Translation(NAT): Chuyển đổi địa chỉ nguồn của tất cả
các gói tin đi ra từđịa chỉ mạng riêng(private) thành địa chỉ mạng public. – Packet filtering: Cấu hình các luật(rules) ở tại firewall các định nghĩa các
giao thức nào được cho phép đi qua firewall.
– Static address mapping: Cấu hình cách các gói tin đi vào được định tuyến
đến các Servers sử dụng địa chỉ mạng private.
– Stateful inspection of network traffic: Kiểm tra các giao thức giao tiếp có tuân theo các luật giao tiếp cơ bản không. Việc kiểm tra này ngăn chặn các phiên kết nối không bị chiếm bởi một kẻ tấn công.
– Các đặc điểm tiên tiến khác: giúp Firewall có thể xác định được các cuộc tấn công đang xảy ra chống lại mạng riêng. Các đặc điểm này bao gồm việc thiết lập các khoảng thời gian(time-outs) cho các thiết lập phiên kết nối không hoàn thành và kiểm tra nội dung của các gói tin đến.
Bảo vệ mạng riêng với NAT ` ` P riva te N e tw o rk 1 0 .1 0 .1 0.3 F ire w a ll 1 31 .1 0 7 .2 5 4.3 In te rn e t P u b lic N e tw o rk T C P 1 0 98 T C P 6 6 54
S o u rce IP S o u rce p o rt S o u rce p o rtT a rg e t IP T a rg e t p o rt D a ta 1 0.1 0 .1 0.3
1 3 1.1 0 7.2 .3 1 3 1.1 0 7 .2 5 4.3 T C P 8 0 H TT P -G E T
78
NAT ngăn chặn việc để lộ kỹ thuật đánh địa chỉ được sử dụng bên trong mạng riêng. Do đó nếu một kẻ tấn công có kiến thức về địa chỉ IP cũng khó có thể
thực hiện một cuộc tấn công giả mạo địa chỉ IP của mạng riêng bởi vì NAT đã thay thế các địa chỉ IP nguồn của tất cả các gói tin đi ra khỏi mạng riêng.
Ngoài việc thay thế địa chỉ nguồn, NAT thay thế cổng nguồn để ngăn chặn các yêu cầu(requests) đi ra có cổng nguồn trùng nhau. NAT giữ tất cả các kết nối
được quản lý để các gói tin trả vềđược đúng máy yêu cầu. Mạng riêng thường sử dụng các dải địa chỉ sau(RFC 1918):
o 10.0.0.0-10.255.255.255(10.0.0.0/8)
o 172.16.0.0-172.31.255.255(172.16.0.0/12)
o 192.168.0.0-192.168.255.255(192.168.0.0/16)
Những dải địa chỉ này không được sử dụng trên Internet và không được chứa trong các bảng định tuyến. NAT sẽ thực hiện việc thay thếđịa chỉ nguồn của tất cả các gói tin đi ra với một địa chỉ mạng chung.
3.2.2.Máy chủ uỷ quyền (Proxy Server) 3.2.2.1. Định nghĩa 3.2.2.1. Định nghĩa
Đểđáp ứng được những nhu cầu của người sử dụng khi cần truy xuất đến những
ứng dụng được cung cấp bởi Internet nhưng vẫn đảm bảo được an toàn cho hệ
thống cục bộ. Một trong những phương pháp đầu tiên được đưa ra để giải quyết
điều này cung cấp một host đơn có chức năng thay mặt các host trong truy xuất
đến Internet. Host có chức năng như vậy được gọi là Proxy Server.
3.2.2.2.Hoạt động của Proxy Server
Hoạt động của Proxy Server được thể hiện một cách cụ thể thông qua kỹ thuật Web Proxy Caching.
Dịch vụ Web Proxy sử dụng kỹ thuật lưu lại (caching) để lưu một bản copy của các đối tượng HTTP và FTP. Không phải tất cả các đối tượng đi qua Web Proxy
79
đổi mỗi khi truy xuất đến nó. Các đối tượng khác cần sự xác thực của các client