Professional Documents
Culture Documents
2 | Nhóm 05
Bài thi cuối kỳ môn ANM
MỤC LỤC
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.
- Nghiên cứu về kiến trúc và hoạt động các giao thức SSL và TLS.
- 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.
- 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 | Nhóm 05
Bài thi cuối kỳ môn ANM
HTTP HyperText Transfer Protocol Giao thức truyền tải siêu văn
bản
ID Identify Định danh
TCP Transmission Control Protocol Giao thức điều khiển truyền tin
6 | Nhóm 05
Bài thi cuối kỳ môn ANM
6 Hình 1.6 Hoạt động của thuật toán HMAC sử dụng MD5 hoặc SHA-1
10 Hình 2.3 Chặn truyền thông bằng các giả mạo ARP Cache
12 Hình 2.5 Tấn công giả mạo DNS bằng phương pháp giả mạo DNS ID
7 | Nhóm 05
Bài thi cuối kỳ môn ANM
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.
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).
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.
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.
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
10 | Nhóm 05
Bài thi cuối kỳ môn ANM
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.
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.
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
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
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
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.
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.
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.
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.
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
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)
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.
Ở 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)
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.
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
22 | Nhóm 05
Bài thi cuối kỳ môn ANM
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ó.
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.
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)
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.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
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
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.
28 | Nhóm 05
Bài thi cuối kỳ môn ANM
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.
30 | Nhóm 05
Bài thi cuối kỳ môn ANM
31 | Nhóm 05
Bài thi cuối kỳ môn ANM
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
34 | Nhóm 05