Professional Documents
Culture Documents
MỤC LỤC
DANH MỤC HÌNH ẢNH........................................................................................................................2
DANH MỤC THUẬT NGỮ VIẾT TẮT .................................................................................................2
DANH MỤC BẢNG BIỂU......................................................................................................................4
PHÂN CÔNG CÔNG VIỆC ....................................................................................................................4
MỞ ĐẦU..................................................................................................................................................4
I. Tổng quan SSL .....................................................................................................................................5
1.1. SSL là gì ? Tại sao cần sử dụng SSL ?..........................................................................................5
1.1.1. SSL là gì ? ..............................................................................................................................5
1.1.2. Tại sao cần phải sử dụng SSL ? .............................................................................................5
1.2. Kiến trúc chồng giao thức SSL .....................................................................................................6
1.3. Tiến trình SSL ...............................................................................................................................7
1.3.1. Đàm phán cipher suite ...........................................................................................................7
1.3.2. Xác thực server.......................................................................................................................8
1.3.3. Gửi dữ liệu và mã hóa. ...........................................................................................................8
II. Phân tích các giao thức con trong bộ giao thức SSL ...........................................................................8
2.1. Giao thức SSL Record...................................................................................................................8
2.2. Giao thức SSL Alert .................................................................................................................. 11
2.3 Giao thức SSL Handshake .......................................................................................................... 11
2.3.1 Giai đoạn 1 – thiết lập khả năng bảo mật ............................................................................ 14
2.3.2. Giai đoạn 2 - Xác thực server và trao đổi khóa ................................................................. 15
2.3.3. Giai đoạn 3 - Xác thực client và trao đổi khóa .................................................................. 16
2.3.4. Giai đoạn 4 – Kết thúc ........................................................................................................ 17
III. Các phương pháp tấn công đối với SSL .......................................................................................... 17
3.1. Diffie Hellman MITM Attack .................................................................................................... 17
3.1.1 Giao thức thỏa thuận khóa Diffie Hellman .......................................................................... 17
3.1.2. Tấn công Man In The Middle .............................................................................................. 18
3.1.3. Giải pháp ngăn ngừa........................................................................................................... 19
3.2. Tấn công SSLSniff & SSLStrip MITM .................................................................................... 20
3.2.1. Tấn công SSLSniff MITM .................................................................................................... 20
3.2.2. SSLStrip MITM Attack ........................................................................................................ 21
3.2.3. Giải pháp ngăn ngừa........................................................................................................... 21
IV. Các ứng dụng phổ biến của SSL hiện nay ...................................................................................... 22
Nhóm 01 1
Bài thi cuối kì môn ANM
V. Mô phỏng việc sử dụng SSL trên web server Apache bằng phần mềm mã nguồn mở OpenSSL ... 24
5.1 Thiết lập web server Apache ....................................................................................................... 24
5.2. Thiết lập virtual host với tên miền cho web server Apache ....................................................... 25
5.3. Tùy chỉnh file cấu hình DNS local trên máy thật ....................................................................... 26
5.3. Cài đặt OpenSSL trên web server Apache ................................................................................. 27
KẾT LUẬN ........................................................................................................................................... 31
TÀI LIỆU THAM KHẢO ..................................................................................................................... 31
KIỂM TRA KẾT QUẢ TRÙNG LẶP TRÊN DOIT ............................................................................ 32
Advanced Encryption
AES Tiêu chuẩn mã hóa tiên tiến
Standard
CA Certificate Authority Nhà cung cấp chứng thực số
CBC Cipher block chaining Mật mã chuỗi khối
DES Data Encryption Standard Một chuẩn phương pháp mật mã hóa
DNS Domain Name System Hệ thống phân giải tên miền
FTP File Transfer Protocol Giao thức truyền tải tập tin
Nhóm 01 2
Bài thi cuối kì môn ANM
Nhóm 01 3
Bài thi cuối kì môn ANM
Bảng 1: Các thuật toán mã hóa sử dụng trong SSL Record ................................................................. 10
Bảng 2: Các kiểu bản tin và thông số của nó trong giao thức SSL Handshake .................................... 12
Bảng 3: Giao thức thỏa thuận khóa Diffie Hellman ............................................................................. 18
Đỗ Trung Nghĩa Viết lời mở đầu, tìm hiểu mục I, tổng hợp soạn thảo văn bản,
phiên dịch các hình vẽ và các từ khóa sử dụng
Trần Ngọc Lâm Tìm hiểu mục II, IV, hỗ trợ mô phỏng và viết kết luận
MỞ ĐẦU
Trên thế giới hiện nay, với việc truyền tải dữ liệu, thực hiện các giao dịch điện tử,
truy nhập web ngày càng được phổ biến và sử dụng rộng rãi, cũng như đóng vai trò hết
sức quan trọng trong cuộc sống của mỗi con người chúng ta. Cho nên, ngày nay các
doanh nghiệp dù lớn hay nhỏ đều rất chú trọng quan tâm đến việc đảm bảo tính an
toàn bảo mật, tính xác thực cho các tác vụ trên, thứ nhất là để nâng cao hình ảnh,
thương hiệu và uy tín cho doanh nghiệp. Đồng thời, đảm bảo được quyền lợi cho
người tiêu dùng, tránh những sự cố mất mát thông tin dữ liệu không đáng có. Và để
làm được điều này, hầu như tất cả mọi doanh nghiệp, hay các cá nhân đều tin dùng vào
giao thức SSL – giao thức Secure Sockets Layer.
Nhóm 01 4
Bài thi cuối kì môn ANM
1.1.1. SSL là gì ?
SSL ban đầu được phát triển bởi Netscape và được công bố rộng rãi vào tháng
2/1995 với Version 2.0 nhưng vẫn chứa nhiều lỗ hổng bảo mật cho đến khi Version
3.0 ra mắt vào năm 1996. Phiên bản này được sử dụng cho TLS version 1.0 và được
IETF xác định như một giao thức chuẩn RFC2246 vào tháng 1/1999.Đến nay, SSL
được sử dụng phổ biến trong thương mại điện tử bởi các công ty giải pháp tài chính
hàng đầu trên thế giới.
Có thể hiểu đơn giản là, việc kết nối giữa một trình duyệt web tới bất kỳ điểm nào trên
mạng Internet đều phải đi qua rất nhiều các hệ thống độc lập mà không có bất kỳ sự
bảo vệ nào với các thông tin trên đường truyền. Không một ai kể cả người sử dụng lẫn
các máy chủ web có thể có bất kỳ sự kiểm soát nào đối với đường đi của dữ liệu hay
có thể kiểm soát được liệu có ai đó thâm nhập vào thông tin trên đường truyền. Và
SSL đã được sinh ra với mục đích là một giao thức an ninh thông tin mạng được sử
dụng nhằm mã hóa và cung cấp kênh an toàn giữa máy chủ web và trình duyệt hay bất
kỳ mạng TCP/IP nào khác. SSL cung cấp cho chúng ta 3 lợi ích chính như sau:
+ Xác thực: Đảm bảo tính xác thực của trang web và máy chủ mà bạn đang trao đổi
dữ liệu và các trang Web cũng cần phải kiểm tra tính xác thực của người sử dụng.
+ Mã hóa: Đảm bảo dữ liệu khi trao đổi không bị truy cập bởi đối tượng thứ ba. Để
loại trừ việc nghe trộm những thông tin “nhạy cảm” khi nó được truyền qua Internet,
dữ liệu phải được mã hoá để không thể bị đọc được bởi những người khác ngoài người
gửi và người nhận.
+ Toàn vẹn dữ liệu: Đảm bảo dữ liệu trao đổi không bị sai lệch hay mất mát trong quá
trình truyền dẫn.Với việc sử dụng SSL, các trang web có thể cung cấp khả năng bảo
mật thông tin, xác thực và toàn vẹn dữ liệu đến người dùng. SSL được tích hợp sẵn
vào các trình duyệt và máy chủ web, cho phép người sử dụng làm việc với các trang
web ở chế độ an toàn.
Nhóm 01 5
Bài thi cuối kì môn ANM
muốn kiểm tra liệu server sẽ nhận thông tin này có đúng là server mà họ định gửi đến
không.
+ Xác thực client: Cho phép phía server xác thực được người sử dụng muốn kết nối.
Phía server cũng sử dụng các kỹ thuật mã hoá công khai để kiểm tra xem certificate và
public ID của server có giá trị hay không và được cấp phát bởi một CA (certificate
authority) trong danh sách các CA đáng tin cậy của server không. Điều này rất quan
trọng đối với các nhà cung cấp. Ví dụ như khi một ngân hàng định gửi các thông tin tài
chính mang tính bảo mật tới khách hàng thì họ rất muốn kiểm tra định danh của người
nhận.
Hơn nữa, SSL còn có thể mã hóa kết nối giữa hai bên để truyền thông tin sau khi xác
thực, đảm bảo thông tin không thể bị truy cập bởi đối tượng thứ ba, tránh lộ thông tin
nhạy cảm như thông tin cá nhân, số tài khoản…khi tiến hành trao đổi.Điều này rất
quan trọng đối với cả hai bên khi có các giao dịch mang tính riêng tư.
Đồng thời, việc sử dụng hàm băm trong mã hóa, SSL sẽ giúp đảm bảo dữ liệu không
bị thay đổi hay mất mát trong quá trình truyền dẫn thông qua cơ chế đặc trưng của
hàm băm là khả năng tự động phát hiện các xáo trộn và thay đổi trong dữ liệu
TCP Lớp
truyền tải
IP Lớp
Internet
Nhóm 01 6
Bài thi cuối kì môn ANM
Trong đó, giao thức SSL bao gồm 2 giao thức con là
+ Giao thức SSL record: xác định các định dạng dùng để truyền dữ liệu.
+ Giao thức SSL handshake: sử dụng SSL record protocol để trao đổi một số thông tin
giữa server và client vào lấn đầu tiên thiết lập kết nối SSL.
SSL Record Protocol cung cấp các dịch vụ bảo mật cơ bản cho nhiều giao thức khác
nhau ở các lớp trên. Trong thực tế, Hyper Text Transfer Protocol (HTTP), cung cấp
dịch vụ trao đổi cho tương tác Web client/server,có thể hoạt động trên đỉnh của SSL.
Ba giao thức lớp trên được định nghĩa như là các phần của SSL: giao thức Handshake,
giao thức Change Cypher Spec và giao thức Alert. Các giao thức mang tính đặc trưng
này được dùng trong phần quản lý trao đổi SSL và được xét đến trong phần sau.
Có hai khái niệm về SSL cần phải biết đó là: SSL connection (kết nối SSL) và SSL
session (phiên SSL):
+ SSL connection: Mỗi kết nối sẽ là một đường truyền tải nhằm cung cấp một dịch vụ
thích hợp. Với SSL, các kết nối đều được coi là ngang hàng và có khả năng trao đổi
nhanh chóng.Và mỗi một kết nối sẽ tương ứng với một phiên.
+ SSL sesssion: Một phiên SSL được tạo ra bằng giao thức Handshake (giao thức bắt
tay) để liên kết giữa client và server. Các phiên trong SSL sẽ định nghĩa 1 tập các tham
số bảo mật bằng mật mã, có thể được chia sẻ giữa nhiều kết nối. Các phiên này được
dùng để tránh việc tốn kém thời gian và tài nguyên hệ thống để đàm phán cho mỗi kết
nối.
Nhóm 01 7
Bài thi cuối kì môn ANM
Để chứng minh server thuộc về tổ chức mà nó khẳng định là nó đại diện, server phải
trình ra chứng chỉ khóa công khai của nó cho client. Nếu chứng chỉ này là hợp lệ,
client có thể chắc chắn về định danh của server. Mặt khác, nếu chứng chỉ này không
hợp lệ, client hoàn toàn có thể ngừng kết nối và từ chối trao đổi thông tin với server để
tránh những rủi ro phát sinh.
Ví dụ, với RSA, phía client sẽ mã hóa thông tin khóa bí mật bằng khóa công khai của
server, và có được từ chứng chỉ khóa công khai, sau đó gửi thông tin khóa bí mật đã
được mã hóa đến server.Chỉ có server cung cấp khóa công khai mà client sử dụng mới
có thể giải mã thông tin khóa bí mật này bởi vì quá trình giải mã phải cần đến khóa
riêng của server.
II. Phân tích các giao thức con trong bộ giao thức SSL
Để nói sâu hơn về giao thức này, ta cần phải biết được tác dụng của nó. Thứ nhất, giao
thức SSL Record có khả năng cung cấp tính bảo mật cho các phiên kết nối SSL, trong
đó giao thức này sẽ định nghĩa một khóa bí mật được chia sẽ, và sử dụng khóa này để
mã hóa quy ước cho các dữ liệu SSL. Thứ hai, giao thức này đem lại tính toàn vẹn cho
dữ liệu truyền, bởi vì dữ liệu trước khi truyền sẽ được gán thêm một giá trị của mã xác
thực thông điệp – MAC.
Nhóm 01 8
Bài thi cuối kì môn ANM
Hình vẽ dưới đây sẽ thể hiện rõ toàn bộ quá trình hoạt động của giao thức SSL Record.
Phân mảnh
Nén
Thêm MAC
Mã hóa
Hình 2: Tổng quan quá trình hoạt động của giao thức SSL Record
Đầu tiên, khi giao thức SSL Record nhận được một bản tin sắp phải được truyền đi, nó
sẽ phân mảnh dữ liệu đó ra làm nhiều khối nhỏ, các khối dữ liệu này sẽ có kích thước
khoảng 214 bytes hoặc ít hơn.
Sau đó, các khối dữ liệu này sẽ được nén tùy chọn, quá trình nén dữ liệu phải đảm bảo
hai yêu cầu là không để mất dữ liệu và không làm tăng độ dài của dữ liệu quá 1024
bytes.
Tiếp theo, nó sẽ tính toán một giá trị xác thực thông điệp dữa trên khóa bí mật dùng
chung, rồi gán vào khối dữ liệu đã được nén.
Dữ liệu cùng với giá trị xác thực thông điệp sẽ được tiếp tục mã hóa bằng khóa đối
xứng. Quá trình mã hóa sẽ không được phép làm tăng độ dài của dữ liệu quá 1024
bytes, do đó tổng độ dài của dữ liệu sẽ được giới hạn ở 214 + 2048 bytes. Các thuật
toán mã hóa sau được cho phép sử dụng trong giao thức SSL Record.
Nhóm 01 9
Bài thi cuối kì môn ANM
Và bước cuối cùng, dữ liệu sau khi được mã hóa sẽ được thêm tiêu đề bao gồm các
trường của giao thức SSL Record như sau:
+ Content Type (8 bit): thể hiện giao thức lớp trên được dùng để xử lý các phân mảnh
dữ liệu đi kèm.
+ Major Version (8 bit): chỉ ra phiên bản giao thức SSL tối đa có thể sử dụng.
+ Minor Version (8 bit): chỉ ra phiên bản giao thức SSL tối thiểu có thể sử dụng.
+ Compressed Length (16 bit): Thể hiện độ dài theo byte của phân mảnh dữ liệu đã
nén, giá trị lớn nhất sẽ là 214 + 2048.
Bản rõ
(nén tùy chọn)
Mã hóa
Hình 3: Tổng quan về định dạng cấu trúc dữ liệu của giao thức SSL Record
Nhóm 01 10
Bài thi cuối kì môn ANM
Bản tin trong giao thức này sẽ bao gồm 2 bytes. Byte đầu tiên sẽ thể hiện giá trị cảnh
báo, tương đương với giá trị “1” hoặc là nguy hiểm tương ứng với giá trị “2”. Nếu
mức độ phát hiện được là nguy hiểm, SSL sẽ lập tức chấm dứt kết nối. Các kết nối tại
các phiên khác sẽ vẫn có thể được tiếp tục nhưng sẽ không có kết nối nào trên phiên
được đánh giá là nguy hiểm được khởi tạo thêm. Còn byte thứ hai sẽ chứa một giá trị
để thể hiện các cảnh báo đặc trưng, ví dụ như đối với các cảnh báo ở mức độ nguy
hiểm:
+ decompression_failure: quá trình giải nén gặp vấn đề, ví dụ như không thể giải nén
hoặc quá trình giải nén cho ra dữ liệu có độ dài vượt quá mức tối đa cho phép.
+ handshake_failure: quá trình bắt tay gặp vấn đề, ví dụ như hai bên nhận và gửi
không thể đưa ra các thông số bảo mật thích hợp để kết nối với nhau.
+ close_notify: thông báo cho bên nhận rằng bên gửi sẽ không gửi thêm dữ liệu nào
nữa trong phiên kết nối này. Mỗi bên sẽ được gửi một yêu cầu close_notify cảnh báo
trước khi kết thúc quá trình nhận và ghi dữ liệu trong một phiên kết nối.
+ no_certificate: phiên kết nối được tạo không sử dụng chứng chỉ xác thực thích hợp.
+ bad_certificate: phiên kết nối sử dụng chứng chỉ xác thực không thích hợp.
+ unsupported_certificate: chứng chỉ xác thực không được hỗ trợ trong phiên kết nối
+ certificate_expired: chứng chỉ xác thực sử dụng trong phiên truyền đã hết hạn thời
gian sử dụng.
Nhóm 01 11
Bài thi cuối kì môn ANM
Giao thức này sẽ bao gồm một chuỗi các bản tin được trao đổi giữa client và server, và
mỗi bản tin về tổng quát sẽ đều có ba trường như sau:
+ Type (1 byte): giá trị thể hiện dạng của bản tin.
+ Length (3 bytes): biểu thị độ dài của bản tin theo bytes.
+ Content (>=0 bytes): miêu tả các tham số đi kèm với bản tin.
Nhóm 01 12
Bài thi cuối kì môn ANM
Thay đổi thành kết nối được mã hóa với MS là chìa khóa
Thay đổi thành kết nối được mã hóa với MS là chìa khóa
(4)
Nhóm 01 13
Bài thi cuối kì môn ANM
+ Version: phiên bản chứng chỉ SSL mới nhất mà client biết.
+ Random: bao gồm một nhãn thời gian 32 bit và một chuỗi 28 bytes sinh bởi một bộ
khởi tạo số ngẫu nhiên. Hai giá trị này sẽ được sử dụng cho phiên truyền và trong suốt
quá trình trao đổi khóa để tránh tấn công lặp lại.
+ Session ID: thể hiện giá trị ID của phiên truyền, tuy nhiên giá trị này có thể thay đổi
được. Nếu như Session ID khác 0 nghĩa là phía client sẽ muốn cập nhật tham số của
của phiên kết nối đã và đang tồn tại hoặc là tạo một phiên truyền mới. Còn Session ID
bằng 0, thì tức là bên client đang muốn thiết lập một kết nối mới trên một phiên truyền
mới.
+ CipherSuite: đây là 1 danh sách mà chứa những bộ biên dịch của các thuật toán mã
hóa được hỗ trợ bởi phía client, và sẽ có độ ưu tiên theo thứ tự giảm dần. Mỗi thành
phần trong danh sách (mỗi bộ mã hóa) sẽ định nghĩa cả khóa để trao đổi và một
CipherSpec (bao gồm CipherAlgorithm, MacAlgorithm, CipherType, HashSize, Key
Material và IV Size).
+ Compression Method: đưa ra danh sách các những phương thức nén mà client hỗ
trợ.
Sau khi phía client gửi đi bản tin client_hello, nó sẽ chờ nhận lại được bản tin
server_hello mà đáp ứng được những thông số đưa ra trong bản tin client_hello. Trong
bản tin server_hello, nó sẽ đưa ra những thông số có thể chấp nhận cho bên client. Đầu
tiên là trường Version, trường này sẽ phải đưa ra giá trị phiên bản chứng chỉ SSL có
thể sử dụng được đối với cả hai bên. Tiếp theo là trường Random, phía server sẽ sinh
ra một nhãn thời gian và một bộ số ngẫu nhiên hoàn toàn độc lập với client, tất nhiên
là để nhằm mục đích ngăn tấn công lặp lại. Sau đó là đến trường Session ID, nếu
trường SessionID của client khác 0, thì giá trị tương tự cũng được dùng bởi bên server,
ngược lại thì trường SessionID của server sẽ chứa giá trị của một phiên truyền mới.
Cuối cùng là hai trường CipherSuite và Compression, thì server sẽ chọn một giá trị
phù hợp từ danh sách đề xuất của client đưa ra.
Để có thêm cái nhìn chi tiết về trường CipherSuite, ta phải thấy được các thông số chi
tiết của trường này. Về thành phần đầu tiên xuất hiện trong trường CipherSuite sẽ là
phương thức trao đổi khóa bí mật, ví dụ như:
Nhóm 01 14
Bài thi cuối kì môn ANM
+ RSA: khóa bí mật được mã hóa với khóa công khai RSA của bên nhận. Tất nhiên là
public-key certificate cho khóa bên nhận sẽ phải được tạo sẵn.
+ Fixed Diffie-Hellman: đây là sự trao đổi khóa Diffie-Hellman trong certificate của
server chứa các thông số công khai Diffie-Hellman được ký bởi Certificate Authority
(CA). Nghĩa là certificate khóa công khai sẽ phải chứa các thông số khóa công khai
của Diffie-Hellman. Đồng thời phía client cũng sẽ chứa sẵn các thông số khóa công
khai của Diffie-Hellman đó trong certificate nếu chứng thực client được yêu cầu hoặc
trong một bản tin trao đổi khóa. Phương thức này mang lại kết quả một khóa bí mật cố
định giữa hai đầu, dựa trên tính toán Diffie-Hellman sử dụng khóa công khai cố định.
+ Ephemeral Diffie-Hellman: phương pháp được sử dụng để tạo khóa tạm thời và chỉ
sử dụng được một lần. Trong trường hợp này, khóa công khai Diffie-Hellman được
trao đổi, và được ký sử dụng khóa bí mật RSA hoặc DSS của bên gửi. Bên nhận có thể
sử dụng khóa công khai tương ứng để xác minh chữ ký. Sau đó Certificate được sử
dụng để xác thực khóa công khai. Điều này đem lại sự bảo đảm nhất định của ba lựa
chọn Diffie-Hellman bởi vì nó là kết quả của sự tạm thời và khóa xác thực.
Tiếp theo sau đó là các thông số khác xuất hiện trong CipherSpec bao gồm:
+ Cipher Algorithm: một vài thuật toán kể đến : RC4, RC2, DES, 3DES, DES40,
IDEA.
+ Key Material: thứ tự của các bytes mà chứa dữ liệu được dùng trong sinh khóa.
+ IV Size: kích thước của giá trị khởi tạo cho mã hóa Cipher Block Chaining (CBC).
Nhóm 01 15
Bài thi cuối kì môn ANM
Sau đó, một bản tin server_key_exchange sẽ được gửi đi nếu nó được yêu cầu. Nếu
như bản tin này không được yêu cầu gửi từ phía client thì chứng tỏ server đã gửi
chứng thực với các tham số của fixed Diffie-Hellman (bởi vì nếu fixed Diffie-Hellman
được dùng,thì thông điệp chứng thực có chức năng như là thông điệp trao đổi khóa của
server vì nó chứa các tham số Diffie-Hellman công khai của server) hoặc là quá trình
trao đổi khóa RSA đã được thực hiện.
Các trường hợp mà bên phía client yêu cầu gửi bản tin server_key_exchange:
- Anonymous Diffie-Hellman: Nội dung thông điệp bao gồm hai giá trị Diffie-Hellman
toàn cụccùng với khóa Diffie-Hellman của server.
- Ephemeral Diffie-Hellman: nội dung thông điệp bao gồm 3 tham số Diffie-Hellman
cung cấp cho anonymous Diffie-Hellman, cùng với một chữ kí của các tham số này.
- Trao đổi khóa RSA: trong đó server sẽ sử dụng RSA nhưng có một khóa chữ kí chỉ
của RSA. Theo đó, client sẽ không thể gửi đi cách đơn giản một khóa bí mật được mã
hóa với khóa công khai/bí mật RSA phụ và sử dụng thông điệp server_key_exchanged
để gửi khóa công khai.Nội dung thông điệp bao gồm hai tham số của khóa công khai
RSA phụ(số mũ và số dư) cùng với một chữ ký của các tham số này.
Kế đến, server có thể yêu cầu một thông điệp chứng thực từ phía client, hay còn gọi là
certificate_request, mà trong đó thông điệp này bao gồm hai thông số là
certificate_type và certificate_authorities. Giá trị certificate_type sẽ chỉ ra giải thuật
khóa công khai được sử dụng như RSA hay DSS. Thông số thứ 2 của thông điệp
certificate_request là một danh sách các tên của những CA đặc biệt được chấp nhận
Cuối cùng trong giai đoạn này, phía server sẽ luôn được yêu cầu gửi một bản tin là
server_done để thông báo rằng quá trình xác thực server đã được hoàn thành. Sau khi
gửi đi bản tin này, phía server sẽ chờ hồi đáp của bên client.
Kế đến là bản tin client_key_exchange sẽ phải được gửi đi trong giai đoạn này. Nội
dung của bản tin sẽ được phụ thuộc vào kiểu trao đổi khóa giữa client và server. Thể
hiện như sau:
Nhóm 01 16
Bài thi cuối kì môn ANM
+RSA: client sinh một trường 48 byte pre-master secret và mã hóa với khóa công khai
từ chứng thực của server hoặc khóa RSA phụ từ thông điệp server_key_exchange. Nó
dùng để tính toán một master secret (đây là một giá trị được sử dụng một lần với độ
dài là 48 byte và được sinh ra cho phiên này bằng cách trao đổi khóa an toàn)
+Fixed Diffie-Hellman: các tham số Diffie-Hellman công khai của client được gửi đi
trong một thông điệp certificate,vì vậy nội dung của thông điệp là null.
Cuối cùng, trong giai đoạn này, client sẽ gửi 1 message certificate_verify để cung cấp
tính xác thực cho chứng thực mà client đã gửi đi. Thông điệp này chỉ được gửi theo
sau bất kì một client certificate nào mà đã được đánh dấu là có khả năng sử dụng
(nghĩa là tất cả certificate ngoại trừ những cái chứa tham số của fixed Diffie-Hellman).
Nhóm 01 17
Bài thi cuối kì môn ANM
khóa bí mật giữa hai bên và mức độ an toàn của giao thức này dựa trên độ khó của bài
toán logarit rời rạc.
Bài toán logarit rời rạc được hai nhà mật mã học áp dụng vào như sau: Giả sử có hai
người A và B muốn thực hiện trao đổi khóa. Đầu tiên A và B sẽ thống nhất sử dụng
chung một bộ tham số miền (p, g). Trong đó p, g là hai số nguyên tố với p lớn và g là
căn nguyên thủy modulo p. Bộ tham số (p, g) này không cần giữ bí mật (được công
khai). Sau đó A chọn một số a và giữ bí mật số a này. B cũng chọn một số b và giữ bí
mật số b.
Tiếp đó tại A sẽ tính toán Xa = ga mod p (1) và gửi Xa cho B, còn B tính và gửi Yb =
gb mod p (2) cho A.
Trên cơ sở đó A tính:
Còn B tính:
Ta có thể thấy A và B đã tính chung ra một giá trị đó là Ks. Giá trị này có thể dùng để
dẫn xuất ra các khóa phiên bí mật để sử dụng cho các thuật toán mã hóa khóa đối
xứng. Cụ thể giao thức thỏa thuận khóa Diffie Hellman nguyên thủy được thể hiện như
trên bảng dưới
A Gửi đi B
Bí mật Công khai Tính toán Tính toán Công khai Bí mật
a p, g p, g b
a p, g, Xa Xa = ga mod p Xa ( từ A ) p, g b
a p, g, Xa Yb (từ B) Yb = gb mod p p, g, Yb b
a, Ks p, g, Xa Yb a mod p=Ks Xa b mod p=Ks p, g, Yb b, Ks
Bảng 3: Giao thức thỏa thuận khóa Diffie Hellman
3.1.2. Tấn công Man In The Middle
Như chúng ta có thể thấy nếu SSL sử dụng thuật toán trao đổi khóa Diffie
Hellman đã trình bày ở trên thì ở phase 2 và 3 ở bước Share Key Exchange và Client
Key Exchange sẽ thực hiện việc trao đổi tham số Xa = ga mod p (1) và Yb = gb mod p
(2) tương tự như ở hình dưới:
Nhóm 01 18
Bài thi cuối kì môn ANM
Ta có thể thấy không có sự xác thực nào diễn ra đảm bảo đúng A là người gửi tham số
Xa= ga mod p đến B. Kẻ tấn công có thể lợi dụng điều này, sử dụng phương pháp Man
In The Middle để tấn công. MITM là một loại tấn công xen giữa, khi mà kẻ tấn công
bí mật xen vào giữa quá trình trao đổi thông tin của hai bên, nhằm nghe trộm hoặc
mạo danh một trong các bên. Cụ thể trong trường hợp này như sau:
Ngoài ra có thể phát triển thêm một bộ định thời gian cho gói tin. Tức là khi gói tin
truyền đi trong môi trường mạng với một thời gian nhất định thì gói tin sẽ bị hủy. Điều
Nhóm 01 19
Bài thi cuối kì môn ANM
đó sẽ khiến cho thời gian kẻ tấn công có thể giải tìm ra giá trị g và p sẽ bị giảm xuống,
gây khó khăn, tạo áp lực về mặt thời gian cho những kẻ xấu muốn chiếm đoạt thông
tin.
3.2. Tấn công SSLSniff & SSLStrip MITM
Đây là 2 cách tấn công mà các kẻ tấn công lợi dụng tâm lý lơ là của người dùng
khi người sử dụng thường bỏ qua những thông báo nhỏ hoặc không quá để ý sự thay
đổi của đường dẫn URL đến website. Từ đó kẻ tấn công có thể giả dạng server, trao
đổi thông tin trực tiếp với người dùng.
Khi đó kẻ tấn công sẽ dùng phương thức MITM xen vào giữa quá trình trao đổi thông
thường giữa client với server. Đối với client kẻ tấn công sẽ đóng giả trở thành các
server trao đổi còn về phía server thật kẻ tấn công sẽ giao dịch như một client bình
thường.
Nhóm 01 20
Bài thi cuối kì môn ANM
Để có thể giả dạng Server các kẻ tấn công sẽ tạo ra một chứng thư số (digital
certificate) giả mạo Server. Chứng thư số là một loại chứng thư điện tử do tổ chức dịch
vụ chứng thực chữ ký số cung cấp cho doanh nghiệp. Có thể nói chứng thư số như một
“chứng minh thư” của doanh nghiệp nhằm nhiệm vụ xác nhận danh tín của doanh
nghiệp đó trong môi trường Internet. Chứng thư số bao gồm các thông tin của doanh
nghiệp đó và một public key, được tổ chức có thẩm quyền xác định, thẩm tra cung cấp.
Và chứng thư số của kẻ tấn công tạo ra sẽ khá giống với chứng thư số của Server chỉ
khác một số trường và đặc biệt khóa công khai của Server đó đã được thay thế bằng
khóa công khai của kẻ tấn công. Khi đó kẻ tấn công có thể giả mạo Server đó với các
người dùng. Tất nhiên trong quá trình trao đổi, trên Client sẽ hiển thị thông báo cảnh
báo warning tuy nhiên với những người không để ý quá về vấn đề này thường sẽ bỏ
qua. Kết quả những thông tin giao dịch của Client đều bị kẻ tấn công nắm bắt được.
Kẻ tấn công có thể lợi dụng điều này để xử dụng phương pháp MITM, xen vào giữa
kết nối Client với Server, thay thế các HyperLinks “https://.....” (có áp dụng SSL)
thành “http://...” ( không sử dụng SSL ) cũng như những Redirection Messages ( tin
nhắn chuyển hướng ) tới các trang “https://...” thành các trang “http://...” . Nếu làm
được như thế thì kẻ tấn công đã gỡ bỏ được SSL từ Client, chỉ còn là kết nối http thông
thường với Client và https đến Server như hình dưới
Vì chỉ còn là kết nối http thông thường không được SSL bảo vệ, kẻ tấn công hoàn toàn
có thể lấy được thông tin người dùng nhằm những mục đích xấu.
Nhóm 01 21
Bài thi cuối kì môn ANM
hai phương pháp tấn công này sẽ lợi dụng vào sự mất chú ý, lơ là của người sử dụng
để thực hiện. Vì thế người sử dụng cần phải để ý đến những cảnh báo của máy cũng
như những thay đổi về đường dẫn mình đang truy cập.
Ngoài ra có thể thiết kế những cảnh báo lớn, với phân tích rõ ràng về vấn đề gặp phải,
cũng như bao gồm những cái nguy cơ, thiệt hại có thể gặp phải nhằm thu hút được sự
chú ý nhiều hơn của người sử dụng.
IV. Các ứng dụng phổ biến của SSL hiện nay
Mặc dù SSL vẫn chưa thể được coi là giao thức bảo mật an toàn nhất do vẫn còn
những lỗ hổng tồn tại trong nó, thế nhưng không thể phủ nhận được tính bảo mật mạnh
mẽ và độ phổ biến của giao thức này trong thời điểm hiện nay. Giao thức này có độ
phổ biến rộng đến mức gần như mọi giao thức mà có hậu tố “s” trên tên gọi thì thường
được gắn liền với SSL.Ví dụ như là với dịch vụ truyền file, truyền dữ liệu trong mạng
nội bộ như FTPS hay SMTPS (là sự cải tiến của giao thức FTP và SMTP bởi khả năng
hỗ trợ và tích hợp chứng chỉ SSL). Hay như đối với các ứng dụng ảo hóa hoặc các ứng
dụng điện toán đám mây đều sử dụng SSL. Từ đó ta có thể thấy rằng, hiện nay gần
như mọi ứng dụng nào được triển khai và sử dụng trên nền tảng web sẽ đều có thể
được tích hợp với giao thức SSL để tăng tính an toàn, bảo mật. Hơn nữa là đảm bảo
được tính xác thực cho website, các giao dịch điện tử và nhất là nâng cao hình ảnh,
thương hiệu và uy tín cho các doanh ngiệp. Và người dùng cũng có thể hoàn toàn dễ
dàng nhận biết được các dịch vụ này có được sửdụng SSL hay không, thông qua biểu
tượng ổ khóa ở thanh địa chỉ cho trước, điển hình như là với HTTPS.
Ngoài ra, một ứng dụng khác cũng vô cùng quan trọng nữa mà SSL cung cấp có độ
phổ biến cực kỳ cao đó chính là SSL VPN.
+ SSL VPN hay còn được gọi theo một cái tên khác là giải pháp VPN client-less, bởi
vì người dùng sẽ không cần phải có phần mềm VPN Client trên máy tính (ngoại trừ
trình duyệt web, vì đây là môi trường quan trọng chính được sử dụng với SSL VPN).
+ Với SSL VPN, thì thay vì cho phía VPN client có thể truy cập được vào toàn bộ hệ
thống mạng hoặc một mạng con như với IPSec, người dùng sẽ chỉ có thể được cho
phép truy xuất tới một số ứng dụng cụ thể dựa trên nền tảng web.
+ Tuy nhiên, nếu ứng dụng mà người dùng truy cập không phải là loại ứng dụng trên
trình duyệt, thì cần phải tích hợp thêm các phần mềm Java để làm ứng dụng đó có thể
truy xuất được qua trình duyệt.
+ Và tất nhiên SSL VPN cũng sẽ sử dụng chứng chỉ số để xác thực server.
Không chỉ thế, một số ứng dụng quản trị server của các nhà sản xuất nổi tiếng hiện nay
như Supermicro, Dell, HP,... đều có khả năng hỗ trợ giao thức SSL.
Nhóm 01 22
Bài thi cuối kì môn ANM
Ví dụ như đối với trình duyệt quản lý nền tảng server IPMI – “Intelligent Platform
Management Interface” của hãng Supermicro cung cấp.
Hình 10: Giao diện truy cập của IPMI trên trình duyệt web
Hình 11: Giao diện upload chứng chỉ SSL lên trên IPMI
Người quản trị có thể tạo chứng chỉ SSL và upload lên trên IPMI, để đảm bảo rằng chỉ
có những người dùng được trao quyền nhất định mới có thể truy cập vào trình quản lý
này để thao tác với server.
Nhóm 01 23
Bài thi cuối kì môn ANM
V. Mô phỏng việc sử dụng SSL trên web server Apache bằng phần mềm mã
nguồn mở OpenSSL
Để thực hiện chúng ta cần chạy một máy ảo sử dụng hệ điều hành CentOS 7 (các loại
hệ điều hành khác dựa trên nhân Linux đều có khả năng hỗ trợ Apache) với quyền truy
nhập của user root. Server chạy sẽ có địa chỉ IP cố định là 172.16.1.15 và tên miền cho
trang web sẽ là example.com
B1: cài đặt các gói cần thiết cho web server bằng câu lệnh
B3: Để người dùng có thể truy cập được vào trang web thì ta cần phải pulic địa chỉ
socket của máy chủ bằng cách mở dịch vụ (mở port) trên firewall
B4: Truy cập đến địa chỉ IP của server trên trình duyệt qua đường dẫn
http://172.16.1.15 để tải nội dung trang mặc định của Apache như sau
Nhóm 01 24
Bài thi cuối kì môn ANM
Hình 12: Nội dung mặc định của web server Apache khi được cài đặt thành công
5.2. Thiết lập virtual host với tên miền cho web server Apache
Web server Apache có khả năng chia nhỏ những tính năng và thành phần của nó
thành những đơn vị nhỏ có thể được tùy chỉnh và cấu hình một cách độc lập. Mỗi một
đơn vị cơ bản biểu diễn một website hay một tên miền là virtual host. Virtual host cho
phép server có thể có nhiều tên miền và mỗi tên miền sẽ có một đường dẫn cụ thể
trong server để lưu trữ thông tin trang web đó.
# mkdir -p /var/www/example.com/public_html
B2: phân quyền user quản trị thư mục (thường sẽ là user root)
Đồng thời chỉnh sửa quyền truy cập sao cho người quản trị có thể có đọc, ghi và thực
thi các thư mục hoặc file trong /var/www bằng câu lệnh:
B3.1: tạo file sites-available để lưu toàn bộ file virtual host còn file sites-enabled lưu
trữ những đường dẫn đến virtual host sẵn sàng sử dụng.
# mkdir /etc/httpd/sites-available
# mkdir /etc/httpd/sites-enabled
B3.2: truy nhập vào file cấu hình chính của web server Apache và thêm lệnh sau vào
cuối file
B3.3: tạo file cấu hình virtual host cho trang web
#vi /etc/httpd/sites-available/example.com.conf
<VirtualHost *:80>
<Directory /var/www/vhosts/yoursite.com/httpdocs>
AllowOverride All
</Directory>
Nhóm 01 25
Bài thi cuối kì môn ANM
DocumentRoot /var/www/vhosts/yoursite.com/httpdocs
ServerName yoursite.com
</VirtualHost>
# ln -s /etc/httpd/sites-available/example.com.conf/etc/httpd/sites-
enabled/example.com.conf
5.3. Tùy chỉnh file cấu hình DNS local trên máy thật
Chúng ta cần phải trỏ ip trong file hosts của windows để có thể phân dải tên miền
example.com về ip của Web server như sau (lưu ý là phải chỉnh sửa file dưới quyền
Admin)
Người dùng giờ đây đã có thể truy cập vào trang web với tên miền example.com
Nhóm 01 26
Bài thi cuối kì môn ANM
Hình 14: Kết quả khi truy cập vào tên miền example.com
5.3. Cài đặt OpenSSL trên web server Apache
B1: tiến hành tạo certificates bằng cách truy nhập vàothư mục cert trên server và thực
hiện lần lượt lệnh sau:
# cd /etc/pki/tls/certs
# openssl rsa -in server.key -out server.key (Để tạo RSA key)
# make server.csr (rồi khai báo các thông tin yêu cầu)
Nhóm 01 27
Bài thi cuối kì môn ANM
# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 1000
B3: Chỉnh sửa lại file cấu hình virtual host tại thư mục /etc/pki/tls/certs và SSL thông
qua đường dẫn /etc/httpd/conf.d/ssl.conf
Nhóm 01 28
Bài thi cuối kì môn ANM
Và giờ đây người dùng đã có thể truy nhập vào trang web example.com với
đường dẫn mới là https://example.comvà có thể nhìn thấy được chứng chỉ SSL đã tạo
Nhóm 01 29
Bài thi cuối kì môn ANM
Hình 15: Kết quả hoàn tất việc sử dụng chứng chỉ SSL trên web server
Tuy nhiên, chứng chỉ SSL được sử dụng trong quá trình mô phỏng chỉ là chứng chỉ tự
tạo và sẽ không thể nào đáp ứng được toàn bộ yêu cầu về khả năng an toàn bảo mật
như những chứng chỉ SSL được cung cấp bởi bên thứ 3 là những cơ quan có thẩm
quyền.
Nhóm 01 30
Bài thi cuối kì môn ANM
KẾT LUẬN
Vậy tóm lại, qua bài viết này ta có thể có được một cái nhìn tổng quan về giao
thức SSL – Secure Sockets Layer như định nghĩa, cơ chế hoạt động, các bộ giao thức
con cũng như tầm quan trọng của nó trong việc đảm bảo tính bảo mật, tính xác thực
cũng như tính toàn vẹn dữ liệu trong việc truyền dữ liệu trên nền tảng trình duyệt web.
Tiếp theo là các ứng dụng phổ biến sử dụng SSL hiện nay và các cách thức tấn công
đối với SSL. Cuối cùng đó là quá trình mô phỏng việc khởi tạo và tích hợp chứng chỉ
SSL trên máy chủ web Apache để có thể thấy rõ được phải cần tối thiểu những điều
kiện gì để sử dụng chứng chỉ SSL trên máy chủ web, cũng như là sự khác biệt của việc
không sử dụng và sử dụng SSL.
Rhee, Man Young. Internet Security Cryptographic Principles, Algorithms and Protocols. n.d.
Stallings, William. Cryptography and Network Security Principles and Practices, Fourth Edition. n.d.
TS. Nguyễn Chiến Trinh, PGS.TS. Nguyễn Tiến Ban, Ths. Phạm Anh Thư, Ths Nguyễn Thanh Trà. Bài
giảng An ninh mạng viễn thông. Hà Nội, 2016.
Nhóm 01 31
Bài thi cuối kì môn ANM
Nhóm 01 32