You are on page 1of 34

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA VIỄN THÔNG 1


----------

BÀI THI CUỐI KỲ


MÔN AN NINH MẠNG VIỄN THÔNG

ĐỀ TÀI: GIAO THỨC SSL/TLS

Giảng viên: Nguyễn Thanh Trà


Nhóm môn học: 05
Nhóm tiểu luận: 05
Sinh viên thực hiện: Nguyễn Trường Giang
Nguyễn Xuân Tiệp
Trương Kim Tài

Hà Nội, tháng 06 năm 2020


Bài thi cuối kỳ môn ANM

BẢNG PHÂN CÔNG CÔNG VIỆC


Stt Họ và tên Mã sv Công việc
1 Nguyễn Trường Giang B17DCVT106 - Tìm hiểu về SSL ở chương 1
- Chỉnh sửa bản word

2 Nguyễn Xuân Tiệp B17DCVT354 - Tìm hiểu TLS ở chương 1


- Làm mở đầu, cơ sở lý luận,
kết luận
3 Trương Kim Tài B17DCVT314 - Tìm hiểu chương 2, 3
- Làm bìa, bảng thuật ngữ,
danh mục hình vẽ, mục lục

2 | Nhóm 05
Bài thi cuối kỳ môn ANM

MỤC LỤC

LỜI MỞ ĐẦU .........................................................................................................................................4


CƠ SỞ LÝ LUẬN……………………………………………………………………………………...5
BẢNG THUẬT NGỮ VIẾT TẮT .........................................................................................................6
DANH MỤC HÌNH VẼ .........................................................................................................................7
CHƯƠNG 1. SSL VÀ TLS ....................................................................................................................8
1.1 Secure Sockets Layer .....................................................................................................................8
1.1.1 Kiến trúc SSL ............................................................................................................................8
1.1.2 Hai trạng thái SSL.....................................................................................................................8
1.1.2.1 SSL session ...........................................................................................................................8
1.1.2.2 SSL connection ....................................................................................................................9
1.1.3 SSL Record Protocol ...............................................................................................................10
1.1.4 SSL Change Cipher Spec Protocol ........................................................................................12
1.1.5 SSL Alert Protocol ..................................................................................................................12
1.1.6 SSL Handshake Protocol ........................................................................................................13
1.1.6.1 Giai đoạn 1: Gửi thông điệp hello cho kết nối logic ........................................................14
1.1.6.2 Giai đoạn 2: Xác thực máy chủ và trao đổi khóa ............................................................15
1.1.6.3 Giai đoạn 3: Xác thực máy khách và trao đổi khóa ........................................................15
1.1.6.4 Giai đoạn 4: Kết thúc .........................................................................................................16
1.2 Giao thức TLS ..............................................................................................................................16
1.2.1 Thuật toán HMAC ..................................................................................................................17
1.2.2 Hàm giả ngẫu nhiên ................................................................................................................18
1.2.3 Mã cảnh báo.............................................................................................................................19
1.2.4 Thông điệp xác minh chứng chỉ .............................................................................................21
1.2.5 Thông điệp hoàn thành ...........................................................................................................21
1.2.6 Tính toán mật mã ....................................................................................................................21
CHƯƠNG 2. SSL ATTACK (TẤN CÔNG SSL) ..............................................................................23
2.1 Tìm hiểu về tấn công Man-in-the-Middle (MITM) ...................................................................23
2.1.1 Khái niệm .................................................................................................................................23
2.1.2 Hình thức tấn công MITM - Giả mạo ARP Cache ..............................................................24
2.1.3 Hình thức tấn công MITM - Giả mạo DNS (DNS Spoofing) ...............................................25
2.1.4 Hình thức tấn công MITM - Chiếm quyền điều khiển Session ...........................................27
2.1.5 Hình thức tấn công MITM - Chiếm quyền điều khiển SSL ................................................28
CHƯƠNG 3. CÁC ỨNG DỤNG CỦA SSL .......................................................................................31
3.1 Một vài ứng dụng cụ thể của SSL ...............................................................................................31
KẾT LUẬN ...........................................................................................................................................33
TÀI LIỆU THAM KHẢO ...................................................................................................................34

3 | Nhóm 05
Bài thi cuối kỳ môn ANM

LỜI MỞ ĐẦU

Yếu tố an ninh, bảo mật dữ liệu ngày nay đang trở thành vấn đề cấp thiết,
không chỉ đối với chủ sở hữu website mà còn với những nhà cung cấp Dịch vụ mạng,
dịch vụ làm web. Đối với một website, dù là trong lĩnh vực nào đi nữa thì các thông
tin, dữ liệu lưu truyền trên đó đều có khả năng ảnh hưởng trực tiếp đến người dùng và
cả chủ sở hữu web. Một hệ thống với chất lượng bảo mật yếu, kém ảnh hưởng đến
không chỉ cá nhân mà còn nguy hại đến các tài nguyên, tài liệu mật của quốc gia.
Chính vì vậy, các tiêu chuẩn về an ninh mạng và bảo mật thông tin website đã ra đời
như một giải pháp hiện đại và hữu ích với thời buổi công nghệ thông tin phát triển
ngày nay. Tiêu chuẩn này gọi là SSL.

Bộ môn An ninh mạng thông tin là một môn học nền tảng và cần thiết cho kiến
thức về bảo mật dữ liệu cho sinh viên trường ta. Nhóm em xin gửi lời cảm ơn đến Học
Viện Công Nghệ Bưu Chính Viễn Thông và cô Nguyễn Thanh Trà đã giúp nhóm được
tiếp cận, học hỏi những kiến thức chuyên môn bổ ích trong kỳ học vừa qua. Tuy vậy,
những kiến thức mà nhóm tiếp thu, tìm hiểu được vẫn còn nhiều hạn chế và thiếu sót.
Mong cô xem xét và góp ý để bài tiểu luận của nhóm em được hoàn thiện hơn.

4 | Nhóm 05
Bài thi cuối kỳ môn ANM

CƠ SỞ LÝ LUẬN
1. Lý do chọn đề tài

Ở thời đại công nghệ thông tin phát triển mạnh mẽ, bảo mật dữ liệu thông tin là
vấn đề được chú trọng hơn bao giờ hết. Không chỉ quân đội, nhà nước, các doanh
nghiệp, các cơ sở giáo dục mà chính mỗi chúng ta đều muốn bảo mật thông tin của
mình. Những thông tin truyền trên Internet cần được mã hóa và bảo mật, tránh cho bên
thứ ba nghe trộm hay giả mạo data, và thế là SSL/TLS ra đời. Vậy SSL/TLS là gì? Bộ
giao thức của chúng hoạt động như thế nào? Mã hóa và giải mã ra sao? Từ những câu
hỏi này nhóm em đã chọn SSL/TLS làm đề tài tiểu luận để tìm hiểu và phân tích rõ
hơn.

2. Mục đích nghiên cứu

- Nghiên cứu về kiến trúc và hoạt động các giao thức SSL và TLS.

3. Phạm vi của tiểu luận

- Tìm hiểu về kiến trúc, hoạt động, tính toán mật mã của SSL/TLS.
- Mô tả các hình thức tấn công SSL và ứng dụng thực tế của bộ giao thức.

4. Phương pháp nghiên cứu

- Dựa trên các kiến thức đã học ở bộ môn An ninh mạng truyền thông, tìm hiểu
thêm qua các tài liệu tham khảo về SSL/TLS trong và ngoài nước

5. Nội dung bài tiểu luận bao gồm

- Chương 1: SSL và TLS


- Chương 2: SSL Attack (Tấn công SSL)
- Chương 3: Ứng dụng thực tế của SSL

5 | Nhóm 05
Bài thi cuối kỳ môn ANM

BẢNG THUẬT NGỮ VIẾT TẮT

Thuật ngữ viết Tiếng Anh Tiếng Việt


tắt
CBC Cipher Block Chaining Chuỗi mật mã khối

DES Data Encryption Standard Tiêu chuẩn mã hóa dữ liệu

DNS Domain Naming System Hệ thống phân giải tên miền

HMAC Hashed Message Authentication Mã xác thực thông điệp băm


Code

HTTP HyperText Transfer Protocol Giao thức truyền tải siêu văn
bản
ID Identify Định danh

IDEA International Data Encryption


Algorithm
MAC Message Authentication Code Mã xác thực bản tin

MD-5 Message-Digest algorithm 5

MITM “Man-in-the-middle” Tấn công xen giữa

PRF Pseudo-random Function Hàm giả ngẫu nhiên

RFC Request for Comments Đề nghị duyệt thảo và bình


luận
RSA Rivest–Shamir–Adleman Thuật toán mật mã hóa khóa
công khai

SEO Search Engine Optimization Tối ưu công cụ tìm kiếm

SHA Secure Hash Algorithm

SSL Secure Sockets Layer

TCP Transmission Control Protocol Giao thức điều khiển truyền tin

TLS Transport Layer Security Bảo mật lớp giao vận

URL Uniform Resource Locator Định vị tài nguyên thống nhất

6 | Nhóm 05
Bài thi cuối kỳ môn ANM

DANH MỤC HÌNH VẼ

Stt Tên hình Nội dung

1 Hình 1.1 Ngăn xếp giao thức SSL

2 Hình 1.2 Hoạt động của SSL Record Protocol

3 Hình 1.3 Tính MAC trên dữ liệu đã được nén

4 Hình 1.4 Khuôn dạng bản tin SSL

5 Hình 1.5 SSL Handshake Protocol

6 Hình 1.6 Hoạt động của thuật toán HMAC sử dụng MD5 hoặc SHA-1

7 Hình 1.7 Cơ chế mở rộng dữ liệu TLS sử dụng hàm P_hash


(secret,seed)
8 Hình 2.1 Mô hình tấn công SSL MITM

9 Hình 2.2 Quá trình truyền thông ARP

10 Hình 2.3 Chặn truyền thông bằng các giả mạo ARP Cache

11 Hình 2.4 Mô hình truy vấn đáp trả DNS

12 Hình 2.5 Tấn công giả mạo DNS bằng phương pháp giả mạo DNS ID

13 Hình 2.6 Một Session bình thường

14 Hình 2.7 Chiếm quyền điều khiển Session

15 Hình 2.8 Minh họa HTTPS

16 Hình 2.9 Quá trình truyền thông HTTPS

17 Hình 2.10 Chiếm quyền điều khiển truyền thông HTTPS

7 | Nhóm 05
Bài thi cuối kỳ môn ANM

CHƯƠNG 1. SSL VÀ TLS


1.1 Secure Sockets Layer

1.1.1 Kiến trúc SSL

SSL là một giao thức phân lớp. SSL không phải là một giao thức đơn lẻ mà là hai
lớp giao thức được mô tả như hinh 1.

Hình 1.1 Ngăn xếp giao thức SSL


Ở lớp dưới, SSL Record Protocol nằm trên một số giao thức truyền tải đáng tin
cậy như TCP. SSL Record Protocol cung cấp các dịch vụ bảo mật cơ bản cho các giao
thức lớp trên. Ba giao thức lớp trên được sử dụng trong việc quản lý và trao đổi SSL
gồm: HandShake Protocol, Change Ciphher Spec Protocol và Alert Protocol.

1.1.2 Hai trạng thái SSL

Có hai thông số kỹ thuật được định nghĩa ở SSL là SSL session (phiên) và SSL
connection (kết nối).

1.1.2.1 SSL session

SSL session là một liên kết giữa máy khách và máy chủ. Các phiên được tạo bới
HandShake Protocol, chúng xác định một tập hợp các tham số bảo mật mật mã để
chia sẻ giữa nhiều kết nối, được sử dụng để tránh việc đàm phán tốn kém các tham số
bảo mật mới cho mỗi kết nối.
SSL session điều phối các trạng thái máy khách và máy chủ. Về mặt logic, trạng
thái được biểu thị hai lần gồm trạng thái hoạt động hiện tại và trạng thái chờ xử lý. Khi
máy khách hoặc máy chủ nhận được bản tin change cipher spec, nó sẽ sao chép trạng
thái đọc đang chờ xử lý sang trạng thái đọc hiện tại. Khi máy khách hoặc máy chủ gửi

8 | Nhóm 05
Bài thi cuối kỳ môn ANM

một bản tin change cipher spec, nó sẽ sao chép trạng thái ghi đang chờ xử lý vào trạng
thái ghi hiện tại. Khi đàm phán bắt tay hoàn tất, máy khách và máy chủ trao đổi bản tin
change cipher spec và sau đó họ giao tiếp bằng cách sử dụng thông số kỹ thuật mật mã
mới được thỏa thuận.
Trạng thái phiên được định nghĩa bởi các thông số sau:
- Session identifier (số nhận dạng phiên): là một giá trị được tạo bởi máy chủ xác
định trạng thái phiên là hoạt động (active) hay phục hồi lại (resumable).
- Peer certificate (chứng chỉ ngang hàng): là một chứng chỉ X.509 v3, thông số
này có thể là rỗng
- Compression method (phương pháp nén): là thuật toán được sử dụng để nén dữ
liệu trước khi mật mã hóa.
- Cipher spec (thông số mật mã): chỉ ra thuật toán mã hóa dữ liệu (DES,…) và
thuật toán băm (MD-5, SHA-1) để tính toán MAC. Nó cũng xác định các thuộc tính
mật mã như kích thước băm.
- Master secret: 48 byte bí mật được chia sẻ giữa máy khách và máy chủ. Nó đại
diện cho dữ liệu bí mật an toàn được sử dụng để tạo khóa mã hóa, khóa bí mật MAC
và các vecto khởi tạo.
- Is resumable: là 1 cờ cho biết phiên có được sử dụng để bắt đầu các kết nối
mới.

1.1.2.2 SSL connection

Kết nối là một transport (định nghĩa trong mô hình phân lớp OSI) cung cấp một
loại dịch vụ phù hợp. Đối với SSL, các kết nối này là tạm thời, có quan hệ ngang hàng
(peer-to-peer) và mọi kết nối được liên kết với một phiên.
Trạng thái kết nối được định nghĩa bởi các thông số sau:
- Server and client random: là chuỗi bytes được lựa chọn giữa máy khách và máy
chủ trong mỗi kết nối.
- Server write MAC secret: chỉ ra khóa bí mật được sử dụng trong MAC trên dữ
liệu được gửi từ máy chủ.
- Client write MAC secret: chỉ ra khóa bí mật được sử dụng trong MAC trên dữ
liệu từ máy khách gửi.
- Server write key: là khóa mật mã thường cho dữ liệu được mã hóa tại máy chủ
và giải mã tại máy khách.
- Client write key: là khóa mật mã thường cho dữ liệu được mã hóa tại máy
khách và giải mã tại máy chủ.
- Initialisation vectors (vecto khởi tạo): Khi mật mã khối ở chế độ CBC được sử
dụng, vecto khởi tạo được duy trì cho mỗi khóa. Trường này được khởi tạo đầu tiên
bởi SSL Handshake Protocol. Khối bản mã cuối cùng từ mỗi bản ghi được giữ lại để
sử dụng làm vecto khởi tạo với bản ghi sau. Vecto khởi tạo được XOR với khối bản rõ
đầu tiên trước khi mã hóa.

9 | Nhóm 05
Bài thi cuối kỳ môn ANM

- Sequence numbers (số thứ tự): mỗi bên duy trì các số thứ tự riêng với các tin
nhắn được truyền và nhận cho mỗi kết nối. Khi một bên gửi hoặc nhận thông báo
thông số kỹ thuật mật mã thay đổi, số thứ tự thích hợp được đặt về 0. Số thứ tự không
được vượt quá 264 − 1.

1.1.3 SSL Record Protocol

SSL Record Protocol nhận một bản tin ứng dụng để truyền, phân mảnh dữ liệu
thành các khối để quản lý, nén dự liệu tùy chọn, áp dụng vào một MAC, mã hóa, thêm
tiêu đề và truyền trong một phân đoạn TCP. Dữ liệu đầu nhận được giải mã, xác minh,
giải nén, tập hợp lại và sau đó được chuyển đến các máy khách.
Các bước thực hiện trong SSL Record Protocol được trình bày như hình 2

Hình 1.2 Hoạt động của SSL Record Protocol


Bước đầu tiên là phân mảnh các bản tin ở lớp cao hơn thành các khối (gọi là bản
ghi SSLPlaintext) có kích thước không vượt quá 214 bytes. Sau đó tất cả các bản tin
được nén bởi thuật toán nén được định nghĩa ở trạng thái phiên hiện tại. Thuật toán
nén chuyển đổi cấu trúc SSLPlaintext trở thành cấu trúc SSLCompressed và nén phải
không làm mất dữ liệu và không được làm tăng độ dài hiện tại quá 1024 bytes.
Tiếp theo dùng khóa bí mật được chia sẻ để tính toán MAC trên dữ liệu đã nén
được mô tả như hình 1.3

10 | Nhóm 05
Bài thi cuối kỳ môn ANM

Hình 1.3 Tính MAC trên dữ liệu đã được nén


Phép tính được định nghĩa như sau:
H1 = hash(MAC-write-secret || pad-1 || seq-num || SSLCompressed.type ||
SSLCompressed.length || SSLCompressed.fragment)
H = hash(MAC-write-secret || pad-2 ||H1)
Với:
• Hash: thuật toán băm mật mã có thể là MD5 hay SHA-1
• MAC-write-secret: khóa bí mật được chia sẻ
• Pad-1: byte 0x36 (0011 0110) được lặp lại 48 lần (384 bits) đối với MD5 hay
lặp 40 lần (320 bits) đối với SHA-1
• Pad 2: byte 0x5C (0101 1100) được lặp lại 48 lần với MD5 hay lặp hay 40 lần
với SHA-1
• Seq-num: số thứ tự của bản tin
• SSLCompressed.type: giao thức lớp trên để xử lý phân đoạn này
• SSLCompressed.length: độ dài của phân đoạn đã nén
• SSLCompressed.fragment: đoạn nén (hay là bản rõ nếu không được nén)
• ||: ký hiệu nối
Tiếp đó, bản tin đã nén ghép với MAC được mã hóa bằng mật mã hóa đối xứng.
Các mật mã khối được sử dụng làm thuật toán mã hóa là DES, Triple DES, IDEA,
Fortezza với kích thước khóa lần lượt là 56,168,128, 80 và RC5 có kích thước khóa
tùy chọn. Đối với mã hóa khối, phần đệm được thêm vào sau MAC trước khi mã hóa

11 | Nhóm 05
Bài thi cuối kỳ môn ANM

còn đối với mã hóa dòng, tin nhắn nén cộng với MAC được mã hóa vì MAC được tính
toán trước khi quá trình mã hóa diễn ra, nó được mã hóa cùng với bản rõ đã nén.
Bước cuối cùng của quá trình SSL Record Protocol là gắn thêm một tiêu đề bản
ghi SSL. Khuôn dạng bản ghi SSL được mô tả như hình 4.

Hình 1.4 Khuôn dạng bản tin SSL


Tiêu đề SSL bao gồm các trường sau:
- Content type (8 bit): là giao thức lớp trên được sử dụng để xử lý phân đoạn kèm
theo.
- Major version (8 bit): cho biết phiên bản chính của SSL đang sử dụng
- Minor version: (8 bit) cho biết phiên bản nhỏ của SSL đang sử dụng
- Compressed length (16 bit): cho biết độ dài tính bằng byte của phân đoạn bản
rõ hay phân đoạn nén nếu yêu cầu nén. Có giá trị lớn nhất là 214 + 2048.

1.1.4 SSL Change Cipher Spec Protocol

SSL Change Cipher Spec Protocol là giao thức đơn giản nhất trong 3 giao thức
đặc trưng của SSL. Giao thức này gồm 1 bản tin đơn 1 byte và có giá trị 1. Mục đích
duy nhất của giao thức này là sinh ra trạng thái tiếp theo để gán vào trạng thái hiện tại,
và trạng thái hiện tại sẽ cập nhật lại bộ mã hóa để sử dụng trên kết nối này.

1.1.5 SSL Alert Protocol

Giao thức SSL Alert được dùng để chuyển các cảnh báo liên kết SSL đến thực thể
ngang hàng. Mỗi bản tin trong giao thức này gồm 2 bytes. Byte đầu tiên mang giá trị
“cảnh báo” hoặc “nguy hiểm”. Nếu là mức độ “nguy hiểm”, SSL sẽ chấm dứt kết nối
ngay lập tức. Trong trường hợp này, những kết nối khác trong cùng phiên sẽ vẫn tiếp

12 | Nhóm 05
Bài thi cuối kỳ môn ANM

tục nhưng số nhận dạng phiên phải vô hiệu hóa để ngăn phiên bị lỗi thiết lập kết nối
mới. Byte thứ hai của bản tin chứa một mã cho biết cảnh báo đặc trưng.
Những thông số của cảnh báo (liên kết SSL) luôn mang giá trị “nguy hiểm” bao
gồm:
- unexpected-message: bản tin đã nhận ko phù hợp
- bad-record-mac: cảnh báo này sẽ bị trả lại nếu MAC không chính xác
- decompression-failure: việc dải nén nhận đầu vào không thích hợp (ví dụ dữ
liệu bị mở rộng vượt quá độ dài cho phép)
- no-certificate: có thể gửi để phản hồi yêu cầu chứng chỉ nếu không có chứng
chỉ phù hợp
- bad-certificate: chứng chỉ nhận được bị lỗi (ví dụ: chứa chữ ký không được xác
minh)
- unsupported certificate: dạng chứng chỉ nhận đã nhận không được hỗ trợ
- certificate-revoked: chứng chỉ bị thu hồi bởi người kí
- certificate-expired: chứng chỉ đã hết hạn
- certificate-unknown: một số vấn đề không xác định phát sinh trong quá trình xử
lý chứng chỉ khiến nó không hợp lệ
- illegal-parameter: một trường trong quá trình bắt tay nằm ngoài phạm vi hoặc
không nhất quán với các trường khác
- close-notify: bản tin này thông báo cho người nhận rằng người gửi sẽ không gửi
thêm bất kỳ bản tin nào trên kết nối này. Mọi dữ liệu nhận sau bản tin này đều được bỏ
qua

1.1.6 SSL Handshake Protocol

SSL Handshake Protocol (giao thức bắt tay SSL) được vận hành phía trên tầng
SSL Record là phần quan trọng nhất của SSL. Giao thức này cung cấp ba dịch vụ cho
các kết nối giữa máy chủ và máy khách. Giao thức bắt tay cho phép máy khách/máy
chủ thống nhất về phiên bản giao thức, xác thực lẫn nhau bằng MAC, đàm phán một
thuật toán mã hóa và khóa mật mã để bảo vệ dữ liệu được gửi trong bản ghi SSL trước
khi ứng dụng truyền dữ liệu.

13 | Nhóm 05
Bài thi cuối kỳ môn ANM

Hình 1.5 SSL Handshake Protocol

1.1.6.1 Giai đoạn 1: Gửi thông điệp hello cho kết nối logic

Máy khách gửi một thông điệp hello và máy chủ cũng phải phản hồi lại bằng một
thông điệp hello nếu không sẽ xảy ra lỗi và kết nối sẽ không thành công. Thông điệp
hello dùng để thiết lập khả năng nâng cao bảo mật giữa máy chủ và máy khách với các
thuộc tính sau:
- Client version: là phiên bản của giao thức SSL được sử dụng trong phiên này,
phải là phiên bản cao nhất được hỗ trợ
- Random: là cấu trúc ngẫu nhiên 28 bytes được tạo bởi bộ sinh số ngẫu nhiên an
toàn
- Session ID: là ID của một phiên. SessionID khác 0 cho biết rằng máy khách
muốn cập nhật các tham số của kết nối hiện có hoặc tạo kết nối mới trong phiên này.
SessionID = 0 cho biết máy khách muốn tạo kết nối mới trên một phiên mới
- Cipher suites: là một danh sách tùy chọn mật mã được máy khách hỗ trợ với lựa
chọn ưu tiên máy khách trước.

14 | Nhóm 05
Bài thi cuối kỳ môn ANM

- Compressed method: là một danh sách các phương pháp nén được hỗ trợ bởi
máy khách
Sau khi gửi thông điệp hello, máy khách sẽ chờ máy chủ phản hồi bằng thông điệp
hello có những thông số giống với thông điệp hello được gửi từ máy khách. Trường
version chứa phiên bản thấp hơn được đề nghị bởi máy khách và cao nhất được máy
chủ hỗ trợ. Trường random được tạo ra bởi máy chủ và khác với trường random của
máy khách. Nếu trường sessionID của máy khách khác 0 thì giá trị của máy chủ tương
tự, ngược lại nếu giá trị 0 thì sessionID của máy chủ sẽ mang giá trị của một phiên
mới. Trường CipherSuite và CompressedMethod sẽ chứa bộ mã hóa và phương thức
nén trong danh sách đề xuất của máy khách.

1.1.6.2 Giai đoạn 2: Xác thực máy chủ và trao đổi khóa

Sau khi trao đổi thông điệp hello, máy chủ bắt đầu giai đoạn này bằng cách gửi
bản tin chứng thực nếu yêu cầu xác thực và trao đổi khóa nếu được yêu cầu. Giai đoạn
2 gồm các bản tin sau:
- Server certificate: Nếu máy chủ được xác thực, nó sẽ gửi chứng thực ngay sau
thông điệp hello. Chứng thực phải chứa một khóa phù hợp với phương thức trao đổi
khóa và thường là chứng thực X.509.
- Server key exchange message: Bản tin trao đổi khóa được gửi đi nếu nó được
yêu cầu. Trong trường hợp máy chủ đã gửi chứng thực có tham số Diffie-Hellman hay
trao đổi khóa RSA được dùng thì nó không được yêu cầu. Chữ ký được tạo bằng cách
lấy băm của bản tin và mã hóa bằng khóa công khai. Đối với chữ ký DSS, hàm băm
được thực hiện bằng thuật toán SHA-1. Trong trường hợp chữ ký RSA, cả băm MD5
và SHA-1 đều được tính toán và sự kết hợp của hai hàm băm được mã hóa bằng khóa
công khai của máy chủ
- Cerfiticate request message: Một máy chủ không ẩn danh có thể tùy chọn yêu
cầu chứng thực từ máy khách. Bản tin này bao gồm 2 tham số:
o certificate_types: trường này là danh sách các chứng thực được yêu cầu, sắp
xếp theo tùy chọn của máy chủ
o certificate_authorities: là danh sách của các nhà cung cấp chứng thực được chấp
nhận
- Server hello done message: Bản tin này được gửi từ máy chủ chỉ ra điểm cuối
của bản tin server_hello và các bản tin đi kèm.

1.1.6.3 Giai đoạn 3: Xác thực máy khách và trao đổi khóa

Giai đoạn này gồm các bản tin:


- Client certificate message: Máy khách sẽ gửi bản tin này khi máy chủ yêu cầu.
Nếu không có chứng thực hợp lệ nó sẽ gửi cảnh báo no_certificate thay thế.

15 | Nhóm 05
Bài thi cuối kỳ môn ANM

- Client key exchange message: một trường premaster secret được thiết lập thông
qua việc truyền trực tiếp mã hóa RSA hay tham số Diffie-Hellman sẽ cho phép mỗi
bên đống ý về premaster secret trước đó. Khi phương thức trao đổi khóa là DH – RSA
hoặc DH – DSS, chứng thực máy khách đã được yêu cầu và máy khách có thể phản
hồi bằng chứng thực có chứa khóa công khai Diffie – Hellman có các tham số khớp
với những thông số được máy chủ chỉ định trong chứng thực của nó.
- Certificate verify message: bản tin này được dùng để cung cấp xác minh chứng
thực máy khách. Thông báo chỉ được gửi sau bất kỳ chứng thực máy khách nào đánh
dấu có khả năng (tức là tất cả các chứng thực ngoại trừ những chứng thực có chứa
tham số Diffie – Hellman cố định). Bản tin này đánh dấu mã băm dựa trên các bản tin
trước đó có cấu trúc như sau:
struct{
Signature signature;
} CertificateVerify;
CertificateVerify.signature.md5_hash
MD5(master_secret||pad2||MD5(handshake_message|| master_secret||pad1))
Certificate.signature.sha_hash
SHA(master_secret||pad2||SHA(handshake_message|| master_secret||pad1))
Trong đó: pad1, pad 2 là các giá trị được xác định trước đó cho MAC,
handshake_message đề cập đến tất cả các bản tin giao thức bắt tay được gửi hay
nhận (không bao gồm bản tin này) và master_secret là khóa được tính toán bí mật.

1.1.6.4 Giai đoạn 4: Kết thúc

Giai đoạn này hoàn thành thiết lập của một kết nối an toàn, máy khách gửi 1 bản
tin change_cipher_spec và sao chép CipherSpec đang chờ xử lý và CipherSpec hiện
tại. Sau đó máy khách cũng gửi ngay bản tin finished để xác minh quá trình trao xác
thực và trao đổi khóa đã thành công. Tại đây, quá trình bắt tay hoàn thành, máy khách
và máy chủ có thể bắt đầu trao đổi dữ liệu lớp ứng dụng.

1.2 Giao thức TLS

TLS là viết tắt của Transport Layer Security. Đây là một dạng giao thức bảo mật
(Security Protocol) cung cấp mức độ riêng tư cao, cũng như tính toàn vẹn của dữ liệu
khi giao tiếp bằng mạng và internet. TLS là tiêu chuẩn được sử dụng trong việc bảo
mật các ứng dụng web (Web applications) và trang web (Websites) trên khắp thế giới
kể từ khi được giới thiệu vào năm 1999. Nó là sự kế thừa và thay thế cho hệ thống
SSL (Lớp cổng bảo mật Secure Socket Layer) cũ hơn.
Bản thân giao thức TLSv1 dựa trên đặc tả giao thức SSLv3 do Netscape công bố.
Nhiều cấu trúc và quy tắc dữ liệu phụ thuộc vào thuật toán rất gần nhau nên sự khác
biệt giữa TLSv1 và SSLv3 là không đáng kể. Bởi vậy, chúng ta sẽ không lặp lại các

16 | Nhóm 05
Bài thi cuối kỳ môn ANM

nội dung giao thức giống hệt nhau của TLSv1 và SSLv3 mà chỉ đi tìm hiểu những
điểm khác biệt.

1.2.1 Thuật toán HMAC

Một mã xác thực thông điệp băm (HMAC) là một mã xác thực thông điệp mà làm
cho việc sử dụng một khóa mật mã cùng với một hàm băm. Việc tạo ra HMAC nếu
không biết mật mã MAC là không thể thực hiện được. TLS sử dụng thuật toán HMAC
được định nghĩa trong RFC 2104 như sau:
HMAC = H[(K ⊕ opad)||H[(K ⊕ ipad)||M]]
Với: H = Hàm băm 1 chiều cho TLS (hoặc MD5 và SHA-1)
K = Khóa bí mật, sau được mở rộng bằng cách thêm các bit 0 vào cuối để kết quả
bằng với chiều dài khối mã băm (Với MD5 và SHA-1 là 512 bit)
ipad = 00110110(0x36) lặp lại 64 lần (512 bits)
opad = 01011100(0x5c) lặp lại 64 lần (512 bits)
M = thông điệp đầu vào HMAC
Giải thích thuật toán:
- Nối các bit 0 vào cuối K để tạo chuỗi có 512 bit độ dài (ví dụ K = 144 thì ta sẽ
thêm vào 368 bit 0 hoặc 46 byte 0 0x00)
- XOR K với ipad để tạo ra chuỗi bit như trên
- Nối M vào chuỗi từ bước 2
- Áp dụng H cho luồng được tạo ở bước 3
- XOR K với opad để tạo chuỗi bit giống bước 1
- Nối hàm băm ở bước 4 vào chuỗi có được ở bước 5
- Áp dụng H cho luồng được tạo ở bước 6 và xuất ra kết quả

17 | Nhóm 05
Bài thi cuối kỳ môn ANM

Hình 1.6 Hoạt động của thuật toán HMAC sử dụng MD5 hoặc SHA-1
Đối với TLS, tính toán MAC bao gồm các trường được chỉ ra như sau:
HMAC_hash(MAC_write_secret, seq_num||
TLScompressed.type||TLSCompressed.version ||
TLSCompressed.length|| TLSCompressed.fragment)
Có thể thấy rằng phép tính Mac chứa tất cả các trường của SSLv3 cộng thêm
trường TLSCompressed.version là phiên bản của giao thức đang sử dụng
- Trường kiểu (type) chỉ giao thức tầng cao hơn.
- Trường phiên bản (version) chỉ phiên bản giao thức (ví dụ: 3,1 cho TLS v1.0).
- Trường độ dài (length) là độ dài (tính bằng byte) của phần dữ liệu phân mảnh.
- Trường phân mảnh (fragment) có độ dài tùy ý (lên đến 214 byte) tạo nên dữ liệu
của giao thức lớp cao hơn.

1.2.2 Hàm giả ngẫu nhiên

TLS sử dụng chức năng giả ngẫu nhiên (PRF) để mở rộng bí mật thành các khối
dữ liệu cho mục đích tạo khóa hoặc xác thực. PRF lấy các giá trị nhỏ như secret, “hạt
giống” và nhãn nhận dạng làm đầu vào và tạo ra đầu ra của các khối dữ liệu dài hơn
tùy ý. Hàm mở rộng dữ liệu, P băm (bí mật, dữ liệu), sử dụng một hàm băm duy nhất
để mở rộng đầu vào:
P_hash(secret, seed) = HMAC_hash (secret, A(1)||seed) ||
HMAC_hash (secret, A(2)||seed) ||

18 | Nhóm 05
Bài thi cuối kỳ môn ANM

HMAC_hash (secret, A(3)||seed) ||…


Với: A(0) = seed
A(i) = HMAC hash(secret, A(i-1)) and || là phép nối.

Hình 1.7 Cơ chế mở rộng dữ liệu TLS sử dụng hàm P_hash (secret,seed)
Như hình trên ta thấy, hàm băm P được lặp đi lặp lại nhiều lần nếu cần để thu
được lượng dữ liệu cần thiết. Do đó, hàm mở rộng dữ liệu sử dụng thuật toán HMAC
với MD5 hoặc SHA-1 làm hàm băm cơ bản. PRF của TLS được tạo ra bằng cách chia
Secret làm 2 phần S1 và S2, sử dụng 1 phần để tạo dữ liệu với P MD5 và phần còn lại
với P SHA – 1. Sau ta XOR 2 kết quả để tạo đầu ra. S1 lấy từ nửa đầu của Secret, S2
thì được lấy từ nửa sau. Độ dài tương ứng của chúng bằng giá trị Secret tổng thể chia
đôi, nếu dư sẽ được làm tròn. Do vậy, nếu Secret ban đầu có độ dài là một số byte lẻ,
thì byte cuối cùng của S1 sẽ bằng byte đầu tiên của S2.
PRF sẽ là kết quả của việc XOR 2 luồng giả bằng nhiên:
PRF(secret, label, seed) = P MD5(S1, label||seed) ⊕ P SHA − 1(S2, label||seed)

1.2.3 Mã cảnh báo

Giao thức cảnh báo được phân thành 2 loại đó là cảnh báo khép kín và cảnh báo
lỗi. Một trong những chức năng của lớp TLS Record là một loại cảnh báo. Thông báo

19 | Nhóm 05
Bài thi cuối kỳ môn ANM

cảnh báo thể hiện mức độ nghiêm trọng và mô tả về cảnh báo. Nếu như ở mức độ
nghiêm trọng sẽ dẫn tới việc ngắt kết nối ngay lập tức. Máy khách và máy chủ sẽ cho
nhau biết rằng kết nối được kết thúc để tránh bị tấn công. Một trong 2 bên có thể gửi
thông báo đóng kết nối, với ý nghĩa là người gửi sẽ không gửi thêm bất cứ tin nhắn
nào trên kết nối này nữa.
Xử lý lỗi ở giao thức TLS Handshake rất đơn giản. Khi một trong hai phát hiện ra
lỗi, bên phát hiện sẽ gửi một tin nhắn cho bên còn lại, nhận được thông báo từ bên
phát hiện lỗi, cả hai ngay lập tức đóng kết nối lại.
TLS hỗ trợ tất cả các cảnh báo lỗi được xác định ở SSLv3 và bổ sung thêm các
cảnh báo lỗi dưới đây:
Mức độ nghiêm trọng:
- Decryption failed: Một bản mã TLS được giải mã không hợp lệ. Khi được kiểm
tra thì nó không phải bội số chẵn của độ dài khối hay bộ đệm.
- Record overflow: Một TLS Record nhận được bản mã có độ dài vượt quá 214 +
2048 byte hoặc một bản mã được giải mã với độ dài vượt quá 214 + 2048 byte.
- Unknown ca: Nhận được một chuỗi hoặc một phần chứng chỉ nhưng không
được chấp nhận do không thể xác định được chứng chỉ CA hoặc không khớp với một
CA đáng tin cậy đã biết từ trước.
- Access denied: Chứng chỉ hợp lệ đã được nhận, nhưng khi kiểm soát truy nhập
được áp dụng, người gửi không tiến hành thỏa thuận.
- Decode error: Thông điệp không thể giải mã do có một trường nằm ngoài phạm
vi xác định hoặc độ dài của thông điệp không chính xác
- Export restriction: Một thỏa thuận không được tuân thủ do các hạn chế khi xuất.
- Protocol version: Một phiên bản giao thức mà khách hàng thỏa thuận đã được
khôi phục, nhưng không được hỗ trợ do các phiên bản giao thức cũ có thể bị từ chối vì
lý do bảo mật.
- Insufficient security: Trả về lỗi Handshake không được chấp nhận do máy chủ
yêu cầu mật mã an toàn hơn những mật mã mà máy khách có thể hỗ trợ
- Internal error: Một lỗi không liên quan gì về tính năng ngang hàng hay giao
thức bị sai, ví dụ như lỗi cấp phát bộ nhớ.
Mức độ cảnh báo:
- User canceled: Hoạt động Handshake bị hủy do những lỗi không liên quan về
tính đúng đắn của giao thức.
- No renegotiation: Được gửi đi từ máy chủ để phản hồi phần Hello của khách
hoặc gửi đi từ máy khách để đáp lại yêu cầu xin chào sau khi đã Handshake. Các thông
điệp kiểu như này thường là để thỏa thuận lại, nhưng trong trường hợp này thì cho biết
người gửi không thể thỏa thuận lại.
- Decrypt error: Handshake không thành công, bao gồm không xác minh được
chữ ký, giải mã trao đổi khóa hoặc xác thực một thông điệp đã hoàn tất.

20 | Nhóm 05
Bài thi cuối kỳ môn ANM

Trong những lỗi ở mức cảnh báo thường không được chỉ định rõ ràng, bên gửi có
thể tùy ý xác định xem đây là mức độ nghiêm trọng hay cảnh báo. Nếu nhận được
thông được ở mức độ cảnh báo, bên gửi có thể quyết định nó có phải là lỗi nghiêm
trọng với mình hay không. Nhưng khi thông điệp được truyền đi ở mức nghiêm trọng
thì chắc chắn được coi là lỗi nghiêm trọng với bên nhận.

1.2.4 Thông điệp xác minh chứng chỉ

Ở SSLv3 hàm băm được tính toán bằng Secret chính, thông điệp Handshake và bộ
đệm, thì trong thông báo xác minh chứng chỉ của TLS, hàm băm của MD5 và SHA – 1
chỉ cần tính toán qua thông điệp Handshake:
CertificateVerify.signature.md5_hash MD5(handshake_message)
CertificateVerify.signature.sha_hash SHA(handshake_message)

1.2.5 Thông điệp hoàn thành

Một thông báo hoàn thành sẽ được gửi ngay sau khi quá trình trao đổi và xác thực
khóa thành công. Giống với SSLv3, thông báo hoàn thành trong TLS là một băm dưa
trên Secret chính, thông báo Handsahke trước đó, nhãn định danh giữa máy khách và
máy chủ. Tuy vậy, tính toán ở TLS cho dữ liệu xác minh khác biệt một chút so với
SSLv3:
PRF(master_secret, finished_label, MD5(handshake_message)||
SHA-1(handshake_message))
Với:
- Finished_label cho biết chuỗi “client finished” do máy khách gửi hay “server
finished” do máy chủ gửi.
- Handshake_message bao gồm tất cả những thông điệp Handshake bắt đầu từ
khi khách hàng gửi Hello, kết nối tất cả cấu trúc Handshake đã được trao đổi từ đầu
đến giờ, khác với SSLv3 vì ở SSLv3 bao gồm cả thông báo xác minh chứng chỉ.
Ngoài ra, thông điệp Handshake ở thông báo hoàn thành do máy chủ gửi cũng sẽ
khác với máy khách.

1.2.6 Tính toán mật mã

Khi bắt đầu bảo vệ kết nối, giao thức TLS Record sẽ yêu cầu một bộ tính toán cụ
thể, Secret chính và giá trị ngẫu nhiên của máy khách, máy chủ. Các thuật toán xác
thực, mã hóa và MAC sẽ được máy chủ gửi trong thông báo Hello với khách hàng.
Giờ nhiệm vụ còn lại sẽ là tính toán Secret chính và khóa. Giống như ở SSLv3,
Secret chính được tính toán dưới dạng hàm băm của Secret chính lúc trước và hai số
ngãu nhiên Hello nhưng sẽ được định nghĩa như sau:

21 | Nhóm 05
Bài thi cuối kỳ môn ANM

Master_secret = PRF(premaster_secret, ‘‘master secret’’, ClientHello.random


||ServerHello.random)
Secret chính luôn có độ dài là 48 byte, còn độ dài của Secret trước đó sẽ khác
nhau tùy thuộc vào phương thức trao đổi khóa:
- Với RSA, máy khách sẽ tạo Secret trước đó với độ dài 48 byte, được mã hóa
với khóa công khai của máy chủ rồi gửi đến máy chủ. Máy chủ sẽ dùng khóa riêng của
mình để giải mã Sercet trước đấy. Sau đó, cả hai sẽ cùng chuyển đổi Secret trước
thành Secret chính.
- Với Diffie–Hellman, khóa thời hạn Z được sử dụng làm Secret chính trước, sau
đó được chuyển đổi thành Secret chính hiện tại.
Việc tính toán các tham số của khối khóa (khóa bí mật MAC, khóa mã hóa phiên
và IV) được định nghĩa như sau:
key_block=PRF(master_secret, ‘‘key expansion’’, SecurityParameters.server_random||
SecurityParameters.client_random)

22 | Nhóm 05
Bài thi cuối kỳ môn ANM

CHƯƠNG 2. SSL ATTACK (TẤN CÔNG SSL)


Lợi dụng những lỗ hổng bảo mật và một số tricks thì các cracker hay hacker đã tấn
công SSL nhằm trục lợi hoặc ăn cắp thông tin cho những mục đích xấu. Một số hình
thức tấn công SSL như:
- Tấn công xen giữa Man-in-the-middle
- Tấn công BEAST lên bộ giao thức SSL/TLS
- Tấn công lợi dụng lỗ hổng POODLE và Heartbleed
Và chúng ta sẽ được tìm về các cuộc tấn công xen giữa MITM.

2.1 Tìm hiểu về tấn công Man-in-the-Middle (MITM)

2.1.1 Khái niệm

Man in the Middle là một trong những kiểu tấn công mạng thường thấy nhất được
sử dụng để chống lại những cá nhân và các tổ chức lớn chính, nó thường được viết tắt
là MITM. Có thể hiểu nôm na rằng MITM giống như một kẻ nghe trộm. MITM hoạt
động bằng cách thiết lập các kết nối đến máy tính nạn nhân và chuyển tiếp dữ liệu giữa
chúng. Trong trường hợp bị tấn công, nạn nhân cứ tin tưởng là họ đang giao tiếp một
cách trực tiếp với nạn nhân kia, nhưng sự thực thì các luồn dữ liệu/thông tin lại bị
thông qua host của kẻ tấn công. Và kết quả là các host này không chỉ có thể lấy cắp dữ
liệu nhạy cảm mà nó còn có thể gửi xen vào cũng như thay đổi luồng dữ liệu để kiểm
soát sâu hơn những nạn nhân của nó.

Hình 2.1. Mô hình tấn công SSL MITM

23 | Nhóm 05
Bài thi cuối kỳ môn ANM

2.1.2 Hình thức tấn công MITM - Giả mạo ARP Cache (ARP Cache Poisoning)

Tấn công này cho phép Hacker (nằm trên cùng một subnet với các nạn nhân của
nó) có thể nghe trộm/thấy được tất cả các phiên giao dịch/lưu thông dữ liệu giữa các
máy tính nạn nhân. Đây là hình thức tấn công đơn giản và hiệu quả nhất.

Hình 2.2. Quá trình truyền thông ARP


• Việc giả mạo Cache
Việc giả mạo bảng ARP chính là lợi dụng bản tính không an toàn của giao thức
ARP. Việc giả mạo bảng ARP chính là lợi dụng bản tính không an toàn của giao thức
ARP. Không giống như các giao thức khác, chẳng hạn như DNS (có thể được cấu hình
để chỉ chấp nhận các nâng cấp động khá an toàn), các thiết bị sử dụng giao thức phân
giải địa chỉ (ARP) sẽ chấp nhận nâng cấp bất cứ lúc nào. Điều này có nghĩa rằng bất
cứ thiết bị nào có thể gửi gói ARP reply đến một máy tính khác và máy tính này sẽ cập
nhật vào bảng ARP cache của nó ngay giá trị mới này. Việc gửi một gói ARP reply khi
không có request nào được tạo ra được gọi là việc gửi ARP “vu vơ”. Khi các ARP
reply vu vơ này đến được các máy tính đã gửi request, máy tính request này sẽ nghĩ
rằng đó chính là đối tượng mình đang tìm kiếm để truyền thông, tuy nhiên thực chất họ
lại đang truyền thông với một kẻ tấn công.

24 | Nhóm 05
Bài thi cuối kỳ môn ANM

Hình 2.3. Chặn truyền thông bằng các giả mạo ARP Cache

2.1.3 Hình thức tấn công MITM - Giả mạo DNS (DNS Spoofing)

Giả mạo DNS


Giả mạo DNS là một kỹ thuật MITM được sử dụng nhằm cung cấp thông tin DNS
sai cho một host để khi người dùng duyệt đến một địa chỉ nào đó, ví dụ -
www.bankofamerica.com có IP XXX.XX.XX.XX, thì cố gắng này sẽ được gửi đến
một địa chỉ www.bankofamerica.com giả mạo cư trú ở địa chỉ IP YYY.YY.YY.YY,
đây là địa chỉ mà kẻ tấn công đã tạo trước để đánh cắp các thông tin tài khoản ngân
hàng trực tuyến từ người dùng.
Truyền thông DNS
Giao thức Domain Naming System (DNS) như được định nghĩa trong RFC
1034/1035 có thể được xem như là một trong những giao thức quan trọng nhất được sử
dụng trong Internet. Nói ngắn ngọn để dễ hiểu, bất cứ khi nào bạn đánh một địa chỉ
web chẳng hạn như http://www.google.com vào trình duyệt, yêu cầu DNS sẽ được đưa
đến máy chủ DNS để tìm ra địa chỉ IP tương xứng với tên miền mà bạn vừa nhập. Các
router và các thiết bị kết nối Internet sẽ không hiểu google.com là gì, chúng chỉ hiểu
các địa chỉ chẳng hạn như 12.345.56.789.
Máy chủ DSN làm việc bằng cách lưu một cơ sở dữ liệu các entry (được gọi là
bản ghi tài nguyên) địa chỉ IP để bản đồ hóa tên DNS, truyền thông các bản ghi tài
nguyên đó đến máy khách và đến máy chủ DNS khác. Kiến trúc máy chủ DNS trong
toàn doanh nghiệp và Internet là một thứ khá phức tạp. Như một vấn đề của thực tế,
bạn có thể hình dung chúng như các quyển sổ chuyên dụng cho kiến trúc DNS. Chúng
tôi sẽ không đi vào giới thiệu các khía cạnh về kiến trúc hay thậm chí các kiểu lưu

25 | Nhóm 05
Bài thi cuối kỳ môn ANM

lượng DNS khác nhau, mà chỉ giới thiệu một phiên giao dịch DNS cơ bản, bạn có thể
thấy điều đó trong hình dưới.

Hình 2.4. Mô hình truy vấn đáp trả DNS


DNS hoạt động theo hình thức truy vấn và đáp trả (query/response). Một máy
khách cần phân giải DNS cho một địa chỉ IP nào đó sẽ gửi đi một truy vấn đến máy
chủ DNS, máy chủ DNS này sẽ gửi thông tin được yêu cầu trong gói đáp trả của nó.
Đứng trên phối cảnh máy khách, chỉ có hai gói xuất hiện lúc này là truy vấn và đáp trả.
Giả mạo DNS
Có nhiều cách để có thể thực hiện vấn đề giả mạo DNS. Dưới đây sẽ sử dụng một
kỹ thuật mang tên giả mạo DNS ID.
Mỗi truy vấn DNS được gửi qua mạng đều có chứa một số nhận dạng (ID
number) duy nhất, mục đích của số nhận dạng này là để phân biệt các truy vấn và đáp
trả chúng. Điều này có nghĩa rằng nếu một máy tính đang tấn công của chúng ta có thể
chặn một truy vấn DNS nào đó được gửi đi từ một thiết bị cụ thể, thì tất cả những gì
chúng ta cần thực hiện là tạo một gói giả mạo có chứa ID đó để gói dữ liệu đó được
chấp nhận bởi mục tiêu.

Hình 2.5. Tấn công giả mạo DNS bằng phương pháp giả mạo DNS ID

26 | Nhóm 05
Bài thi cuối kỳ môn ANM

2.1.4 Hình thức tấn công MITM - Chiếm quyền điều khiển Session

Chiếm quyền điều khiển Session


Thuật ngữ chiếm quyền điều khiển session (session hijacking) chứa đựng một loạt
các tấn công khác nhau. Nhìn chung, các tấn công có liên quan đến sự khai thác
session giữa các thiết bị đều được coi là chiếm quyền điều khiển session. Khi đề cập
đến một session, chúng ta sẽ nói về kết nối giữa các thiết bị mà trong đó có trạng thái
đàm thoại được thiết lập khi kết nối chính thức được tạo, kết nối này được duy trì và
phải sử dụng một quá trình nào đó để ngắt nó.
Dưới đây là hành động chiếm quyền điều khiển session có liên quan đến các
session HTTP. Nếu để ý một số website mà bạn truy cập có yêu cầu thông tin đăng
nhập thì chúng chính là các ví dụ cho các kết nối hướng session. Bạn phải được thẩm
định bởi website bằng username và password để thiết lập session, sau đó website sẽ
duy trì một số hình thức kiểm tra session để bảo đảm bạn vẫn được đăng nhập và được
phép truy cập tài nguyên (thường được thực hiện bằng một cookie), khi session kết
thúc, các chứng chỉ username và password sẽ được xóa bỏ và đó cũng là khi session
hết hiệu lực. Đây là một ví dụ cụ thể về session mà mặc dù chúng ta không phải lúc
nào cũng nhận ra nó, các session sẽ xuất hiện liên tục và hầu hết sự truyền thông đều
dựa vào một số hình thức của session hoặc hành động dựa trên trạng thái.

Hình 2.6 Một Session bình thường

Như những gì chúng ta thấy trong các tấn công trước, không có thứ gì khi đi qua
mạng được an toàn, và dữ liệu session cũng không có gì khác biệt. Nguyên lý ẩn phía
sau hầu hết các hình thức chiếm quyền điều khiển session là nếu có thể chặn phần nào
đó dùng để thiết lập một session, khi đó bạn có thể sử dụng dữ liệu đó để thủ vai một
trong số những thành phần có liên quan trong truyền thông và từ đó có thể truy cập các
thông tin session. Ví dụ trên của chúng tôi có nghĩa rằng nếu chúng ta capture cookie
được sử dụng để duy trì trạng thái session giữa trình duyệt của bạn và website mà bạn
đang đăng nhập vào, thì chúng ta có thể trình cookie đó với máy chủ web và thủ vai
kết nối của bạn. Điều này dường như có lợi với Attackers.

27 | Nhóm 05
Bài thi cuối kỳ môn ANM

Hình 2.7 Chiếm quyền điều khiển Session

2.1.5 Hình thức tấn công MITM - Chiếm quyền điều khiển SSL

Đây là một trong những tấn công MITM nguy hiểm nhất vì nó cho phép khai
thác các dịch vụ mà người dùng tưởng rằng là an toàn.

Hình 2.8 Minh họa HTTPS

28 | Nhóm 05
Bài thi cuối kỳ môn ANM

Tấn công SSL trên HTTP - HTTPS


Trong phần này, chúng tôi sẽ tập trung giới thiệu vào tấn công SSL trên HTTP,
được biết đến như HTTPS, vì nó là trường hợp sử dụng phổ biến nhất của SSL. Có thể
không nhận ra nhưng hầu như chắc chắn bạn đang sử dụng HTTPS hàng ngày. Các
dịch vụ email phổ biến nhất và các ứng dụng ngân hàng trực tuyến đều dựa vào
HTTPS để bảo đảm truyền thông giữa trình duyệt web của bạn và các máy chủ của họ
được mã hóa an toàn. Nếu không sử dụng công nghệ này thì bất cứ ai với một số Tools
hay tricks “dò” gói dữ liệu trên mạng cũng đều có thể phát hiện ra được username,
password và bất cứ thứ gì được ẩn khác.
Quá trình được sử dụng bởi HTTPS để bảo đảm an toàn dữ liệu là xiết chặt bảo
mật các trung tâm có liên quan đến việc phân phối các chứng chỉ giữa máy chủ, máy
khách và hãng thứ ba được tin cậy. Lấy một ví dụ về trường hợp có một người dùng
đang cố gắng kết nối đến một tài khoản email của Gmail. Quá trình này sẽ gồm có một
vài bước dễ nhận thấy, các bước này đã được đơn giản hóa trong hình bên dưới.

Hình 2.9 Quá trình truyền thông HTTPS


Quá trình được phác thảo trong hình 2.8 không phải là một quá trình chi tiết, tuy
nhiên về cơ bản nó sẽ làm việc như ví dụ sau:
- Trình duyệt máy khách kết nối đến http://mail.google.com trên cổng 80 bằng
cách sử dụng HTTP.
- Máy chủ chuyển hướng phiên bản HTTPS máy khách của site này bằng cách sử
dụng HTTP code 302.
- Máy khách kết nối đến https://mail.google.com trên cổng 443.
- Máy chủ sẽ cung cấp một chứng chỉ cho máy khách gồm có chữ ký số của nó.
Chứng chỉ này được sử dụng để thẩm định sự nhận dạng của site.
- Máy khách sử dụng chứng chỉ này và thẩm định chứng chỉ này với danh sách
các nhà thẩm định chứng chỉ tin cậy của nó.
- Truyền thông mã hóa sẽ xảy ra sau đó.
Nếu quá trình hợp lệ hóa chứng chỉ thất bại thì điều đó có nghĩa rằng các website
đã thất bại trong việc thẩm định sự nhận dạng của nó. Tại điểm này, người dùng sẽ

29 | Nhóm 05
Bài thi cuối kỳ môn ANM

thấy xuất hiện một lỗi thẩm định chứng chỉ và họ vẫn cố tiếp tục truy cập với khả năng
xuất hiện rủi ro, vì rất có thể sẽ không có sự kết nối thực sự với website mà họ nghĩ họ
cần truy cập đến.
Phá hủy HTTPS
Quá trình này được xem là an toàn cao cách đây một vài năm khi có một tấn công
đã công bố rằng nó có thể chiếm quyền điều khiển thành công quá trình truyền thông.
Quá trình này không liên quan đến bản thân việc phá hủy (defeating) SSL, mà đúng
hơn là phá hủy “cầu nối” giữa truyền thông không mã hóa và mã hóa.
Các chuyên gia nghiên cứu bảo mật hàng đầu đã cho rằng SSL chưa bao giờ bị
trực tiếp tấn công. Hầu hết thời gian một kết nối SSL được khởi tạo là thông qua
HTTPS nên nguyên nhân có thể là do ai đó đã redirect (chuyển tiếp) một HTTPS
thông qua một mã đáp trả HTTP 302 hoặc họ kích vào liên kết dẫn họ đến một site
HTTPS khác, chẳng hạn như nút đăng nhập. Ý tưởng ở đây là nếu bạn tấn công một
phiên giao dịch từ một kết nối không an toàn đến một kết nối an toàn, trong trường
hợp này là từ HTTP vào HTTPS, bạn sẽ tấn công cầu nối và có thể “man-in-the-
middle” (Attacker thực hiện tấn công xen giữa) sẽ kết nối SSL trước khi nó xuất hiện.
Để thực hiện hiệu quả điều này, chuyên gia Moxie Marlinspike đã tạo một công cụ
SSLstrip, chúng ta sẽ sử dụng công cụ này dưới đây.

Hình 2.10. Chiếm quyền điều khiển truyền thông HTTPS


Quá trình được phác thảo trong hình 2 làm việc như sau:
- Sự lưu thông giữa máy khách và máy chủ đầu tiên sẽ bị chặn
- Khi bắt gặp một HTTPS URL, SSLStrip sẽ thay thế nó bằng một liên kết HTTP
và sẽ ánh xạ những thay đổi của nó.
- Máy tấn công sẽ cung cấp các chứng chỉ cho máy chủ web và giả mạo máy
khách.
- Sự lưu thông được nhận trở lại từ website an toàn và được cung cấp trở lại cho
máy khách.
Máy chủ có liên quan vẫn nhận kết nối với SSL mà không hề biết về sự khác biệt
này. Chỉ có một sự khác biệt rõ rệt trong trải nghiệm người dùng là các kết nối này sẽ
không được gắn cờ HTTPS trong trình duyệt, vì vậy một người dùng có kinh nghiệm
sẽ có thể thấy đó là một điều dị thường.

30 | Nhóm 05
Bài thi cuối kỳ môn ANM

CHƯƠNG 3. CÁC ỨNG DỤNG CỦA SSL


- Bảo mật dữ liệu: dữ liệu được mã hóa và chỉ người nhận đích thực mới có thể
giải mã.
- Toàn vẹn dữ liệu: dữ liệu không bị thay đổi bởi tin tặc.
- Chống chối bỏ: đối tượng thực hiện gửi dữ liệu không thể phủ nhận dữ liệu của
mình
- Chứng thực doanh nghiệp - tránh giả mạo website
- Bảo mật và mã hóa các thông điệp trao đổi giữa trình duyệt và server
- Bảo mật các giao dịch giữa khách hàng và doanh nghiệp, các dịch vụ truy nhập
hệ thống

3.1 Một vài ứng dụng cụ thể của SSL:

a. SSL mã hóa thông tin nhạy cảm


SSL giữ cho những thông tin nhạy cảm được mã hóa khi gửi qua Internet và chỉ
có những người nhận được chỉ định mới có thể hiểu nó.
Khi thông tin bạn gửi trên Internet được truyền từ máy tính đến máy tính, rồi đến
một máy chủ đích. Bất cứ máy tính nào ở giữa bạn và máy chủ đều có thể nhìn thấy số
thẻ tín dụng, tên tài khoản và mật khẩu cùng những thông tin nhạy cảm khác, khi
chúng chưa được mã hóa với chứng chỉ SSL (SSL Certificate).
Khi SSL Certificate được sử dụng, thông tin sẽ trở thành không thể đọc được đối
với tất cả mọi người, ngoại trừ máy chủ mà thông tin đang được gửi đến. Nhờ đó,
hacker và những kẻ lấy cắp không thể đọc hay lấy trộm thông tin.
b. SSL cung cấp tính xác thực
Ngoài mã hóa, một chứng nhận SSL thích hợp cũng cung cấp sự xác thực. Điều
này có nghĩa là bạn có thể chắc chắn rằng mình đang gửi thông tin đến đúng máy chủ
chứ không phải đến một kẻ mạo danh nào đó đang cố gắng ăn cắp thông tin của bạn.
Nhà cung cấp SSL đáng tin cậy sẽ chỉ cấp một SSL Certification đến cho một
công ty, với điều kiện công ty đó được xác nhận rằng đã vượt qua một số cuộc kiểm
tra danh tính. Một số SSL Certification như EV SSL Certificates, yêu cầu xác nhận
nhiều hơn những chứng nhận khác.
Bạn có thể sử dụng SSL Wizard để so sánh giữa các nhà cung cấp SSL, có sẵn
trong hầu hết các trình duyệt web. Trình duyệt web sẽ tạo ra một xác nhận rằng nhà
cung cấp SSL đang có những hành động cụ thể và được kiểm tra bởi một bên thứ 3 sử
dụng tiêu chuẩn như WebTrust.

31 | Nhóm 05
Bài thi cuối kỳ môn ANM

c. SSL cung cấp sự tin cậy


Các trình duyệt web sẽ cung cấp cho người dùng những tín hiệu để biết rằng kết
nối của mình đang được đảm bảo, đó có thể là một biểu tượng khóa hoặc một thanh
màu xanh lá cây. Nhờ đó, khách hàng sẽ tin tưởng trang web hơn và tăng khả năng
mua hàng, gắn bó với website. Nhà cung cấp SSL cũng sẽ cung cấp cho bạn một dấu
hiệu tin cậy để làm cho khách hàng tin tưởng hơn nữa.
d. SSL mang đến sự tin cậy cho người truy cập
HTTPS cũng giúp chống lại những cuộc tấn công lừa đảo. Một email lừa đảo là
email được gửi từ tên tội phạm đang cố gắng mạo danh trang web của bạn.
Email này thường có một liên kết đến website của tên tội phạm hoặc sử dụng
Man-in-the-middle attack (tên tội phạm sẽ lừa khách hàng để họ gửi thông tin nhạy
cảm đến cho chúng) trên tên miền của website.
Nhưng một kẻ nghe lén, hacker thường khó có được một SSL Certificate, nên nếu
trang web có SSL, thì chúng không thể mạo danh website một cách hoàn hảo, và
người dùng sẽ ít có khả năng bị lừa đảo hơn.
e. SSL được yêu cầu cho PCI Compliance
Để chấp nhận thông tin thẻ tín dụng trên website, bạn phải vượt qua những cuộc
kiểm tra để chứng minh rằng bạn đang tuân thủ các tiêu chuẩn thanh toán bằng thẻ -
Payment Card Industry, PCI. Một trong những yêu cầu đó là sử dụng SSL Certificate.
f. SSL đối với SEO
Google đã đưa ra thông báo rằng HTTPS sẽ là một tiêu chí để xếp hạng website.
Nghĩa là khi đưa ra kết quả cho người tìm kiếm, trang web có SSL sẽ được ưu tiên hơn
trang web cùng loại nhưng không có SSL.

32 | Nhóm 05
Bài thi cuối kỳ môn ANM

KẾT LUẬN

TLS (Transport Layer Security), cùng với SSL (Secure Sockets Layer) là các
giao thức mật mã nhằm mục đích bảo vệ dữ liệu khi di chuyển trong môi trường
Internet.

Đây là tiêu chuẩn an ninh công nghệ toàn cầu, tạo ra liên kết được mã hóa
giữa máy chủ và máy trạm. Phương pháp này cho phép bảo mật và xác thực tính
toàn vẹn của các dữ liệu qua các mã xác thực (message authentication code).

Qua nghiên cứu tiểu luận này, nhóm em đã có một cái nhìn sâu sắc hơn về
SSL/TLS. Tầm quan trọng của bộ giao thức, những gì đã xảy ra trong khi bộ
giao thức làm việc. Từ những mô tả về tấn công SSL, chúng ta cũng đã hiểu
được cách thức mà hacker, kẻ trộm sử dụng để có ăn lấy cắp thông tin. Và sau
cùng là những gì SSL/TLS được ứng dụng trong thực tế, giúp ta thấy tầm quan
trọng của chúng.

33 | Nhóm 05
Bài thi cuối kỳ môn ANM

TÀI LIỆU THAM KHẢO

Tài liệu Tiếng Việt


[1] Th.s Nguyễn Đức Bình, “Tìm hiểu SSL và ứng dụng trên Web Server”,
Thái Nguyên, 2012
[2] TS Nguyễn Hoàng Tú, “Tìm hiểu và trình bày chi tiết về SSL”, Hà
Nội, 2019
Tài liệu Tiếng Anh
[3] Man Young Rhee, “Internet Security : Cryptographic Principles, Algorithms
and Protocols”, England, 2003
[4] William Stallings, “Cryptography and Network Security Principles and
Practice”,
Sixth Edition, Pearson, 2014.
Mạng Internet
[5]https://www.cs.auckland.ac.nz/courses/compsci725s2c/archive/termpa
pers/725zhang.pdf
[6]https://quantrimang.com/tim-hieu-ve-tan-cong-man-in-the-middle-
%E2%80%93-chiem-quyen-dieu-khien-ssl-68503

34 | Nhóm 05

You might also like