Tải bản đầy đủ (.doc) (105 trang)

Nghiên cứu các tấn công mới lên giao thức TLS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.98 MB, 105 trang )

BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN BƯU CHÍNH VIỄN THÔNG
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ĐỒ ÁN TỐT NGHIỆP

NGHIÊN CỨU MỘT SỐ TẤN CÔNG MỚI LÊN GIAO
THỨC TLS
Ngành: Công nghệ thông tin

Sinh viên thực hiện:
Trần Văn Tân
Lớp: K45


Hà Nội, 2018
MỤC LỤC
MỤC LỤC i
DANH MỤC HÌNH VẼ iv
DANH MỤC BẢNG BIỂU

vi

DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT
LỜI NÓI ĐẦU

vii

viii

1.1. Giới thiệu giao thức TLS.............................................................................1


1.1.1. Giao thức TLS........................................................................................1
1.1.2. Lịch sử phát triển của giao thức TLS...................................................3
1.1.3. Ứng dụng của giao thức TLS.................................................................5
1.2. Mô tả giao thức TLS....................................................................................6
1.2.1. Cấu trúc của giao thức TLS...................................................................6
1.2.2. Giao thức bản ghi................................................................................10
1.2.3. Giao thức bắt tay.................................................................................15
1.3. Cách thức hoạt động và thuật toán trong giao thức TLS...........................28
1.3.1. Cách thức hoạt động của giao thức TLS.............................................28
1.3.2. Các thuật toán dùng trong giao thức TLS...........................................30
CHƯƠNG 2: NGHIÊN CỨU PHƯƠNG PHÁP TẤN CÔNG LÊN GIAO THỨC
TLS VÀ PHƯƠNG PHÁP PHÒNG CHỐNG

31

2.1. Giới thiệu tổng quan về phương pháp tấn công lên giao thức TLS...........31
2.2. Phân loại tấn công......................................................................................33
2.2.1 Tấn công vào giao thức bắt tay............................................................33
2.2.2 Tấn công vào giao thức bản ghi...........................................................33
i


2.2.3 Tấn công vào PKI.................................................................................33
2.2.4 Các cuộc tấn công khác........................................................................34
2.3. Tấn công HeartBleed.................................................................................39
2.3.1. Tấn công OpenSSL dựa trên lỗ hổng Heartbleed................................39
2.3.2. Quá trình phát hiện..............................................................................39
2.3.3. Phương pháp tấn công và khai thác lỗ hổng.......................................40
2.5.4. Giải pháp khắc phục và ngăn chặn tấn công......................................47
2.4. Tấn công Sweet32......................................................................................48

2.4.1. Tấn công nghịch lý ngày sinh nhật trong chế độ mã hóa CBC...........49
2.4.2. Cơ chế tấn công Sweet32.....................................................................50
2.4.3. Điều kiện để thực hiện tấn công Sweet32............................................53
2.4.4. Các phòng chống tấn công..................................................................53
2.5. Tấn công ROBOT......................................................................................54
2.5.1. Định dạng PKCS #1.............................................................................55
2.5.2. Tấn công chọn bản mã RSA trong định dạng PKCS#1.......................56
2.5.3. Tấn công ROBOT................................................................................59
2.5.4. Giải pháp khắc phục và ngăn chặn tấn công......................................62
CHƯƠNG 3: CÀI ĐẶT VÀ THỰC HIỆN GIAO THỨC TLS BẢO VỆ TRUYỀN
THÔNG TRÊN MÁY CHỦ WEB

65

3.1. Mô hình cài đặt..........................................................................................65
3.2. Cài đặt máy chủ.........................................................................................66
3.2.1. Cấu hình mạng.....................................................................................66
3.2.2. Cấu hình dịch vụ DNS.........................................................................67
3.2.3. Cấu hình website chứa lỗ hỗng HearBleed.........................................68
3.2.4. Cài đặt cơ sở dữ liệu cho website www.tankma.vn.............................74
3.3. Cấu hình máy trạm.....................................................................................78
3.3.1. Cấu hình mạng.....................................................................................78
ii


3.3.2. Truy cập website www.tankma.vn........................................................78
3.4. Tấn công khai thác lỗ hổng HeartBleed.....................................................79
3.4.1. Cấu hình mạng trên máy thực hiện tấn công.......................................79
3.4.2. Tấn công khai thác lỗ hổng HeartBleed..............................................80
PHỤ LỤC 82

KẾT LUẬN 93
TÀI LIỆU THAM KHẢO

94

iii


DANH MỤC HÌNH VẼ
Hình 1.1. Vị trí hoạt động của SSL/TLS trên mô hình OSI và TCP/IP......................1
Hình 1.2. Lịch sử phát triển của bộ giao thức SSL/TLS............................................3
Hình 1.3. Cấu trúc bộ giao thức SSL/TLS.................................................................7
Hình 1.4. Cấu trúc của bản ghi...............................................................................10
Hình 1.5. Quá trình chia nhỏ và đóng gói dữ liệu...................................................11
Hình 1.6. Giai đoạn bắt tay trong TLS 1.0..............................................................16
Hình 1.7. Trao đổi khóa được xác thực dựa trên hệ mật RSA trong TLS 1.0..........19
Hình 1.8. Trao đổi khóa được xác thực dựa trên DH trong TLS 1.0.......................21
Hình 1.9. Trao đổi khóa được xác thực dựa trên DH động trong TLS 1.0..............22
Hình 1.10. Giai đoạn bắt tay nhanh trong TLS 1.0.................................................23
Hình 1.12. Hàm mở rộng.........................................................................................26
Hình 1.13. Quá trình sinh khóa trong TLS 1.0........................................................28
Hình 1.14. Cách thức hoạt động của giao thức TLS...............................................29
Hình 2.1: Mô tả lịch sử các cuộc tấn công lên bộ giao thức SSL/TLS....................32
Hình 2.2 Mô tả tất cả các cuộc tấn công lên vào giao thức bắt tay........................35
Hình 2.3: Mô tả tất cả các cuộc tấn công lên giao thức bản ghi............................36
Hình 2.4. Mô tả tất cả các cuộc tấn công vào PKI..................................................37
Hình 2.5. Mô tả tất cả các cuộc tấn công khác.......................................................38
Hình 2.6. Heartbeat request (dạng bình thường)....................................................40
Hình 2.7. Tấn công Heartbleed...............................................................................46
Hình 2.8 Xác suất cùng ngày sinh nhật với N tương ứng........................................49

Hình 2.9 Tấn công Sweet32.....................................................................................50
Hình 2.10 Chế độ mã hóa CBC...............................................................................52
Hình 2.11. Định dạng PKCS#1................................................................................55
Hình 2.12 Quá trình bắt tay TLS áp dụng RSA PKCS#1 v1.5................................60
Hình 3.1. Mô hình cài đặt và thực hiện tấn công Heartbleed.................................65
Hình 3.2. Kiểm tra dịch vụ DNS..............................................................................68
Hình 3.3. Kiểm tra các gói cài đặt openssl và mod_ssl...........................................69
iv


Hình 3.4. Tạo khóa công khai cho máy chủ web.....................................................70
Hình 3.5. Tạo chứng chỉ số tự ký.............................................................................70
Hình 3.6. Tạo một chứng chỉ số được ký bởi CA trong hạ tầng khóa công khai
X509 71
Hình 3.7. Chỉnh sửa tập tin /etc/httpd/conf/httpd.conf............................................71
Hình 3.8. Giao diện trang web: ..................................................72
Hình 3.9. Tham số an toàn bảo vệ www.tankma.vn.................................................73
Hình 3.10. Chứng chỉ số của máy chủ web www.tankma.vn...................................74
Hình 3.11. Cài đặt PhpMyAdmin thành công..........................................................75
Hình 3.12. Thêm người dùng vào cơ sở dữ liệu......................................................76
Hình 3.13. Thiết lập cấu hình mạng trên máy trạm.................................................78
Hình 3.14. Đăng nhập máy chủ web thành công.....................................................79
Hình 3.15. Thiết lập cấu hình mạng trên máy thực hiện tấn công..........................80
Hình 3.16. Tấn công khai thác lỗ hổng Heartbleed trên máy chủ web....................81

v


Bảng 1. 1
Bảng 1. 2

Bảng 1. 3
Bảng 2. 1
Bảng 2. 2

DANH MỤC BẢNG BIỂU
Sự khác biệt giữa phiên, kết nối và kênh TLS......................................9
Mô tả các tham số an toàn (SecurityParameters)..............................14
Nội dung các thông điệp trong giao thức bắt tay...............................17
Mã khối sử dụng trong các giao thức bảo mật...................................48
Bản vá lỗi do các nhà cung cấp phần cứng và phần mềm bảo mật...63

vi


DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT
Từ viết
tắt
AES
API
CA
CCA
CSR
DES
DH
DoS
DSA
DSS
DTLS
FIPS


Tiếng Anh

Tiếng Việt

Advanced Encryption Standard
Application Programming Interface
Certificate Authority
Chosen Ciphertext Attack
Certificate Signing Request
Data Encryption Standard
Diffle Hellman Key Exchange
Denial of Service
Digital Signature Algorithm
Digital Signature Standard
Datagram Transport Layer Security
A Federal Information Processing

IV
MAC
MitM
NIST

Initialization Vector
Message Atuthentication Code
Man-in-the-middle
National Institure of Standard and
Technology
OAEP
Optimal Asymmetric Encryption
Padding

OpenSSL The Ope Source tookit for SSL/TLS
OS
Operating System
PKCS
Public Key Cryptography Standards
PKI
Public Key Infrastructure
SHA
Secure Hash Algorithm
vii

Tiêu chuẩn mã hóa tiên tiến.
Giao diện lập trình ứng dụng.
Trung tâm chứng thực.
Tấn công lựa chọn bản mã.
Yêu cầu ký chứng chỉ.
Tiêu chuẩn mã hóa dữ liệu.
Trao đổi khóa Diffle Hellman.
Tấn công từ chối dịch vụ.
Thuật toán chữ ký số.
Tiêu chuẩn chữ ký số.
Bảo mật dữ liệu tầng giao vận.
Tiêu chuẩn xử lý thông tin liên
bang Hoa Ky.
Véc tơ khởi tạo.
Mã xác thực thông báo.
Tấn công xen giữa.
Viện tiêu chuẩn công nghệ Quốc
gia Hoa ky.
Chèn phần đệm mã hóa bất đối

xứng tối ưu.
Phần mềm mã nguồn mở
Hệ điều hành
Chuẩn mật mã khóa công khai
Hạ tầng khóa công khai
Thuật toán băm an toàn


UNIX
VPN

UNIX operating system
Virtual Private Network

Hệ điều hành UNIX
Mạng riêng ảo

LỜI NÓI ĐẦU
Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều có
nhu cầu giới thiệu thông tin của mình trên mạng xã hội cũng như thực hiện các
phiên giao dịch trực tuyến. Vấn đề nảy sinh là khi phạm vi ứng dụng của các ứng
dụng Web ngày càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao,
trở thành đối tượng cho nhiều người tấn công với các mục đích khác nhau.
Transport Layer Security (TLS) là giao thức nổi bật để cung cấp dịch vụ bảo mật
cho lưu lượng dữ liệu trên kênh truyền và là giao thức bảo mật phổ biến trên
Internet và đặc biệt là trong các hoạt động thương mại điện tử (E-Commeree). Mức
độ phổ biến có thể tính được mỗi ngày có hàng tỉ giao dịch trên mạng sử dụng giao
thức TLS. Trong những năm gần đây việc triển khai TLS đã nhận được sự chú ý
đáng kể và sự giám sát từ các chuyên gia bảo mật, điều này đã dẫn đến sự phát hiện
hàng loạt các lỗ hổng mới. Các nguy cơ mất an toàn thông tin đó trên giao thức

TLS là điều rất đáng lo ngại nhất hiện nay.
Xuất phát từ lý do trên, em đã chọn đề tài “Nghiên cứu một số phương
pháp tấn công mới lên giao thức TLS” do ThS Trịnh Hà Chương hướng dẫn. Nội
dung của đồ án gồm có 3 chương:
Chương 1: Tổng quan về giao thức TLS: Chương này tập trung nghiên
cứu những vấn đề cơ bản và tổng quan về giao thức TLS, mô tả cấu trúc và hoạt
động của bộ giao thức TLS.
Chương 2: Nghiên cứu phương pháp tấn công lên giao thức TLS và
phương pháp phòng chống: Chương này giới thiệu những phương pháp tấn công
điển hình lên bộ giao thức SSL/TLS, và đi sâu vào nghiên cứu hai phương pháp tấn
công là tấn công ROBOT và Sweet32.

viii


Chương 3: Cài đặt và thực hiện giao thức TLS bảo vệ truyền thông trên
máy chủ Web và thực nghiệm tấn công: Chương này trình bày những vấn đề cơ
bản về cài đặt và thực hiện tấn công.
Mặc dù đã có nhiều cố gắng trong suốt quá trình nghiên cứu, song do thời
gian và kiến thức có hạn nên trong đồ án này em chưa đi sâu nghiên cứu đầy đủ tất
cả các cơ chế tấn công lên bộ giao thức SSL/TLS cũng như không thể tránh khỏi
những thiếu sót. Em rất mong nhận được những ý kiến đóng góp và chỉ bảo của
các thầy cô giáo và các bạn quan tâm đến đề tài này.
Em xin bày tỏ lòng biết ơn chân thành đến giáo viên hướng dẫn: ThS Trịnh
Hà Chương, các thầy cô cùng bạn bè, đã tận tình giúp đỡ em hoàn thành đồ án
này.
Hà nội, ngày 25 tháng 05 năm 2018
Sinh viên thực hiện

Trần Văn Tân


ix


CHƯƠNG 1: TỔNG QUAN VỀ GIAO THỨC TLS

1.1. Giới thiệu giao thức TLS
1.1.1. Giao thức TLS
Năm 1994 công ty Netscape đã giới thiệu bộ giao thức SSL (Secure Socket
Layer), bộ giao thức này được xem là tiêu chuẩn của công nghệ bảo mật, truyền
thông mã hoá giữa máy chủ Web server và trình duyệt Web Browser. Bộ giao thức
SSL sau đó được phát triển tiếp thành bộ giao thức TLS (Transport Layer Security),
bộ giao thức này hoạt động dựa trên liên kết kết nối TCP. Bộ giao thức SSL/TLS
được lựa chọn làm tiêu chuẩn để bảo vệ tính bí mật, tính xác thực và tính toàn vẹn
của kết nối trên mạng. Hình 1.1 mô tả vị trí hoạt động của bộ giao thức SSL/TLS
trên mô hình OSI và TCP/IP.

Hình 1.1. Vị trí hoạt động của SSL/TLS trên mô hình OSI và TCP/IP
1


Giao thức TLS chứa nhiều giải thuật mã hóa nhằm đảm bảo quá trình trao
đổi thông tin trên mạng được an toàn. Việc mã hóa dữ liệu được thực hiện một cách
trong suốt, hỗ trợ nhiều giao thức khác chạy trên nền giao thức TCP.
Việc kết nối giữa một Web browser tới bất ky điểm nào trên mạng Internet đi
qua rất nhiều các hệ thống độc lập mà không có bất ky 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 WebSever có bất ky
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.
Để bảo vệ những thông tin nhạy cảm trên mạng Internet hay bất ky mạng

TCP/IP nào, TLS đã kết hợp những yếu tố an toàn sau để thiết lập được một giao
dịch an toàn:
 Xác thực - Sử dụng chứng chỉ số: Đảm bảo tính xác thực của tình trạng làm
việc ở đầu kia của kết nối. Cũng như vậy, 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;
 Bí mật - Sử dụng các phép mã hóa: Đảm bảo thông tin không thể 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 - Sử dụng mã xác thực thông báo: Đảm bảo thông tin
không bị sai lệch và nó phải thể hiện chính xác thông tin gốc gửi đến;
 Tính không chối bỏ - Sử dụng chứng chỉ số: Đảm bảo thông tin được gửi và
nhận từ nguồn xác định;
 Bảo vệ chống tấn công phát lại – Sử dụng số thứ tự bí mật: Đảm bảo thông
tin được truyền nhận thông suốt giữa hai bên liên lạc.
Với việc sử dụng TLS, các Website 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. TLS được tích hợp sẵn vào các

2


Web browser và Web Sever, cho phép người sử dụng làm việc với các trang Web ở
chế độ an toàn.
1.1.2. Lịch sử phát triển của giao thức TLS
Lịch sử phát triển của bộ giao thức SSL/TLS:

Hình 1.2. Lịch sử phát triển của bộ giao thức SSL/TLS
Phiên bản SSL 1.0 là phiên bản đầu tiên của bộ giao thức SSL/TLS nhưng
không được công bố do chứa điểm yếu liên quan đến vấn đề bảo vệ bí mật. Mục
tiêu chính của SSL 1.0 là thiết lập một kênh liên lạc an toàn trên một mạng không

an toàn, tuy nhiên vẫn chưa tập trung vào việc bảo vệ tính toàn vẹn dữ liệu. Điểm

3


yếu của giao thức liên quan đến tính xác thực và thiếu tính toàn vẹn, tem thời gian
hoặc số thứ tự bí mật nhằm ngăn chặn tấn công dùng lại gói dữ liệu.
Phiên bản SSL 2.0 là phiên bản đặc tả kỹ thuật đầu tiên được chính thức
công bố của bộ giao thức SSL/TLS. Phiên bản này là sản phẩm của quá trình cải
tiến liên tục từ phiên bản SSL 1.0 nhưng vẫn còn nhiều điểm yếu như: Giá trị MAC
không bao trùm được trường độ dài phần đệm, không có chức năng ký, thiếu quá
trính xác thực bắt tay, sử dụng các thuật toán yếu dễ bị tấn công (MD5, RC4) hoặc
sử dụng khóa cho nhiều mục đích.
Phiên bản SSL 3.0 giải quyết nhiều lỗ hổng trong các phiên bản trước bằng
cách sử dụng một loạt các tính năng và cơ chế mới. Quá trình bắt tay bao gồm các
thông báo bổ sung và giao thức mới có tên là ChangeCipherSpec. Cải tiến tổng thể
là giao thức được phát triển mang tính cấu trúc hơn và được thiết kế thành nhiều
lớp, các tính năng còn thiếu đã được bổ sung và đã giải quyết những lỗ hổng liên
quan tới bảo mật.
Phiên bản TLS 1.0 thực chất là phiên bản SSL 3.1 nhưng do Netscape không
còn chịu trách nhiệm chính về đặc tả kỹ thuật và do một phần của quá trình tiêu
chuẩn hóa của IETF nên nó được đổi tên. TLS 1.0 nâng cấp bao gồm đặc tả chi tiết
về hàm ngẫu nhiên được sử dụng để dẫn xuất khóa. Chức năng này được sử dụng
cho việc mở rộng nguyên liệu khóa và tính toán giá trị tóm lược trong thông báo
Finished.
Phiên bản TLS 1.1 là bản cập nhật với một số thay đổi. Thay đổi rõ ràng nhất
là khả năng ngăn chặn các kiểu tấn công liên quan đến chế độ hoạt động CBC của
mã khối. TLS 1.1 nghiêm cấm việc sử dụng các hệ mật yếu (DES, RSA với khóa
nhỏ hơn 1024 bits) sao cho phù hợp với các yêu cầu về hệ mật được sử dụng trong
thực tế. Quá trình ngừng kết nối mà không gửi một thông báo ngắt kết nối thì

không thể tái kết nối phiên làm việc đó nữa.
Phiên bản TLS1.2 có rất nhiều cải tiến so với phiên bản TLS1.1. Một trong
những cải tiến đó là việc loại bỏ sự tích hợp các hàm băm MD5 và SHA-1 trong
4


hàm giả ngẫu nhiên (PRF) và thay thế bằng một cấu hình hàm băm cụ thể (cấu trúc
GCM hoặc cấu trúc CBC-MAC).
Phiên bản TLS1.3 giúp tăng tốc độ kết nối an toàn và nâng cao khả năng
chống snooping.
1.1.3. Ứng dụng của giao thức TLS
 OpenSSL: là một bộ phần mềm mã nguồn mở thực hiện giao thức
SSL/TLS. Thư viện gốc thực hiện các hàm mã hóa cơ bản, cung cấp nhiều hàm có
ích bằng ngôn ngữ lập trình C và hỗ trợ SSL 2.0/3.0, TLS 1.0/1.1/1.2, DTLS 1.0.
OpenSSL có các phiên bản hỗ trợ nhiều hệ điều hành họ Unix (Solaris, Linux, Mac
OS) và Microsolf Windows.
Việc cài đặt bộ giao thức SSL/TLS trong thư viện OpenSSL sẽ thực hiện các
thuật toán mã hóa và xác thực cho tiêu chuẩn chứng chỉ số X509. Thêm nữa,
OpenSSL còn có chức năng giải mã, tạo chữ ký số và tự ký chữ ký số đó giống như
một trung tâm chứng thực CA thực thụ. Cuối cùng, OpenSSL hỗ trợ nhiều dạng mã
pháp khác nhau với khóa được sinh tự động, chính điều này làm cho OpenSSL có
đầy đủ tính năng như một hạ tầng khóa công khai PKI.
OpenSSL được cài đặt trên các máy chủ họ Unix hoặc Windows cung cấp các
dịch vụ truyền thông an toàn trong mô hình máy trạm – máy chủ của ngân hàng, cơ
quan, công ty như: dịch vụ Web an toàn (https), dịch vụ thư điện tử an toàn (smtps),
dịch vụ chia sẽ tập tin an toàn (ftps)… Ngoài ra, bộ mã nguồn OpenSSL còn được
tích hợp vào trong các phần mềm xây dựng các mạng riêng ảo như: OpenVPN,
StrongSwan.
 Java Secure Socket Extentions (JSSE): Là một phần trong cấu trúc Java
Standard Edition Platform bắt đầu từ phiên bản 1.4 và chứa mã nguồn cài đặt giao

thức SSL/TLS. Chương trình được hoàn thành trên nền tảng Java và hỗ trợ SSL
3.0, TLS1.0/1.1/1.2.
Chương trình này sử dụng cấu trúc mã hóa Java Cryptography Archtecture
để thực hiện quá trình mã hóa và giải mã. Vì vậy có thể cài đặt nhiều loại thuật toán
5


mã hóa khác nhau (DES, AES, 3DES), ngoài ra còn có thể loại bỏ hoặc bổ sung các
mã pháp khác mà TLS hỗ trợ.
Các máy chủ đã được cài đặt cấu trúc Java Standard Edition Platform từ các
phiên bản 1.4 trở lên sẽ sử dụng được tính năng mở rộng JSSE để cung cấp các
dịch vụ truyền thông an toàn như: dịch vụ Web an toàn (https), dịch vụ thư điện tử
an toàn (smtps), dịch vụ chia sẽ tập tin an toàn (ftps).
Như vậy, bộ giao thức SSL/TLS được ứng dụng rất rộng rãi trong thực tế để
đảm bảo các dịch vụ truyền thông an toàn như: thương mại điện tử (các ngân hàng
và công ty lớn), thông tin bí mật nhà nước, giáo dục trực tuyến…
1.2. Mô tả giao thức TLS
TLS có cấu trúc rất phức tạp và bao gồm nhiều khía cạnh liên quan đến việc
cài đặt bộ giao thức này. Tính bí mật và toàn vẹn được đảm bảo bởi các Record
Layer mà được định nghĩa một cách chính xác trong giao thức Record Layer
Protocol. Trong khi đó, tính xác thực và tính chống chối bỏ được đảm bảo trong
suốt quá trình Handshake Phase mà được chỉ rõ trong Handshake Protocol. Bên
trong hai giao thức Record Layer Protocol và Handshake Protocol chứa những
ngăn xếp giữ nhiệm vụ theo dõi phiên liên lạc đã thiết lập và những tham số liên
quan trong phiên (thuật toán mã hóa, độ dài khóa, tạo và chấp nhận khóa chủ,
những định danh tương ứng).
1.2.1. Cấu trúc của giao thức TLS
TLS là giao thức hoạt động trên tầng vận tải bao gồm nhiều giao thức con
được mô tả rõ trong hình 1.3. Hoạt động của bộ giao thức được chia thành hai giai
đoạn:

 Giai đoạn bắt tay;
 Giai đoạn ứng dụng.
Trong giai đoạn bắt tay sẽ tiến hành đàm phán các tham số bí mật, thuật toán
mã hóa và sinh khóa chủ bí mật MasterSecret được sử dụng trong phiên liên lạc. Và
6


tất cả các khóa cần thiết cho một phiên liên lạc an toàn sẽ được sinh từ nguồn khóa
chủ bí mật này. Sau khi hoàn thành giai đoạn bắt tay, tất cả các tham số mật mã
nguyên thủy được cấu hình, khởi tạo và sử dụng. Do đó, hai điểm đầu cuối sẽ đàm
phán với cùng một trạng thái mật mã giống nhau. Sau giai đoạn bắt tay sẽ là giai
đoạn ứng dụng, trong đó dữ liệu được trao đổi một cách an toàn thông qua việc
thiết lập kênh liên lạc an toàn.
Thiết kế Mô-đun: Giao thức TLS và SSL là một cấu trúc mô-đun cao và
phức tạp. Giao thức được thiết kế thành từng lớp và bao gồm các giao thức con
khác nhau như là:





Giao thức bắt tay ( Handshake Protocol);
Giao thức thay đổi tham số mật mã (ChangeCipherSpec Protocol);
Giao thức cảnh báo (Alert Protocol);
Giao thức dữ liệu ứng dụng (Application Data Protocol).

Tất cả các thông báo được nhúng trong giao thức bản ghi (Record Protocol)
như mô tả hình 1.3:

7



Hình 1.3. Cấu trúc bộ giao thức SSL/TLS
Giao thức bản ghi là một lớp giao thức liên lạc chấp nhận một chuỗi các byte
và chia các byte này thành các khối được xử lý sau đó chuyển cho giao thức TCP.
Trong giai đoạn bắt tay các thông điệp đàm phán giữa hai bên liên lạc sẽ
không được mã hóa cũng như bảo đảm tính toàn vẹn.
Quản lý phiên: Quản lý phiên là một quá trình quan trọng trong hoạt động
của bộ giao thức SSL/TLS. Đối với SSL/TLS, một phiên liên lạc bao gồm các thuật
toán mã hóa và các tham số liên quan được cài đặt trong một cấu trúc đặc biệt
SecurityParameters. Phiên liên lạc trong SSL/TLS hỗ trợ cơ chế kết nối nhanh nếu
việc liên lạc giữa hai bên đầu cuối bị dừng một thời gian và phiên liên lạc nhanh
này sẽ tái sử dụng các tham số an toàn của phiên liên lạc trước đó. Cơ chế kết nối
nhanh sẽ làm giảm thời gian giai đoạn đàm phán, nhưng đi kèm với đó là rủi ro
khóa chủ tạo ra có thể bị lộ. Ví dụ: Hệ thống giao dịch của ngân hàng Viettinbank
triển khai dưới dạng dịch vụ web an toàn (https) từ một máy chủ web. Trong kịch
bản này, người dùng sử dụng dịch vụ chuyển tiền trực tuyến trên trang web của
ngân hàng, vì một lí do nào đó như: đường truyền trong mạng lan bị ngắt và khi
hoạt động lại thì làm cho người dùng phải kết nối lại tới máy chủ ngân hàng. Việc
kết nối lại này người dùng sẽ đăng nhập được ngay lập tức vào trang web giao dịch
của ngân hàng thay vì phải điền đầy đủ các thông tin đăng nhập. Như vậy, quá trình
quản lý phiên đã giúp cho người dùng truy cập nhanh và lấy dữ liệu từ máy chủ
web của công ty bằng cách tái sử dụng các thông số trong phiên liên lạc đã được
thiết lập trước đó.
Quá trình quản lý phiên của SSL/TLS diễn ra không chỉ giới hạn ở một kênh
đơn lẻ mà còn sử dụng để quản lý đa kết nối song song, tất cả dựa vào các tham số
an toàn tương tự nhau.
Điểm quan trọng cần lưu ý là khóa chủ bí mật MasterSecret được tái sử
dụng, trong khi quá trình dẫn xuất khóa được thực hiện cho tất cả các phiên làm
việc liên tục để tạo ra các khóa ngắn hạn mới. Điều này có nghĩa là với các phiên

8


liên tục sẽ an toàn nếu thực hiện quá trình mã hóa hoặc giải mã song song hoặc liên
tục với nguyên liệu khóa khác nhau. Cơ chế này liên quan đến quá trình dẫn xuất
khóa phụ thuộc vào các giá trị ngẫu nhiên do phía máy trạm và máy chủ cung cấp,
được gửi trong hai thông báo đầu tiên của quá trình bắt tay. Các phiên được xác
định bởi định danh phiên cũng là một phần của hai thông báo đầu tiên trong quá
trình bắt tay (ClientHello, SeverHello).
Bảng 1.1 tóm tắt sự khác biệt giữa phiên, kết nối và kênh liên lạc.
Bảng 1. 1 Sự khác biệt giữa phiên, kết nối và kênh TLS
Thông số

Mô tả

Phiên TLS

Liên quan đến một số các tham số mật mã được thiết lập (bộ
mã hóa và khóa chủ bí mật MasterSecret) liên kết với một
định danh phiên. Một phiên có thể được tái sử dụng, nhưng
nguyên liệu khóa thì hoàn toàn khác nhau (vì các giá trị ngẫu
nhiên khác nhau trong các thông báo ClientHello và
SeverHello).

Kết nối TLS

Kết nối TLS (TLS connection) được gửi từ phía người dùng
sẽ không yêu cầu các tham số an toàn.

Kênh TLS


Kênh TLS yêu cầu một bộ các khóa và những tham số mật
mã cụ thể. Mỗi kênh TLS là duy nhất ngay cả khi được thiết
lập bằng cách tái sử dụng lại một phiên TLS có sẵn.

Độ tin cậy: Độ tin cậy giữa các bên truyền thông được dựa trên các chứng
chỉ số mà được đăng ký từ bên thứ ba tin cậy. Ý tưởng đưa ra là hai bên liên lạc
hoặc ít nhất một bên liên lạc lấy chứng chỉ số từ bên thứ ba tin cậy, việc chứng
minh danh tính của các bên liên lạc cũng được thực hiện thông qua việc gửi chứng
chỉ này tới bên thứ ba tin cậy kiểm tra. Chứng chỉ số và độ tin cậy cũng có thể được
thực hiện trên hạ tầng khóa công khai PKI (Public Key Infrastructure).

9


1.2.2. Giao thức bản ghi
Lớp bản ghi được định nghĩa bởi giao thức Record Layer Protocol và là một
phần trong đặc tả kỹ thuật của SSL/TLS. Giao thức này đóng gói tất cả dữ liệu của
những giao thức tầng ứng dụng (hình 1.4), thực hiện mã hóa, bảo vệ tính toàn vẹn
và nén dữ liệu (phụ thuộc vào bộ mã pháp được cấu hình). Kích thước tối đa của
mỗi bản ghi không được vượt quá 214 bytes, kích thước giới hạn này không bao
gồm trường Record Header. Trường Record Header sẽ luôn được bổ sung thêm vào
bản ghi ngay cả khi nội dung bản ghi có kích thước tối đa. Có thể lựa chọn việc mã
hóa hoặc không mã hóa dữ liệu kết hợp với việc nén hoặc không nén dữ liệu trong
các bản ghi. Thuật toán nén phải không làm mất dữ liệu và không làm tăng kích
thước dữ liệu hơn 1024 byte. Cấu trúc bản ghi được mô tả trong hình 1.4:

Hình 1.4. Cấu trúc của bản ghi

10



Trong cấu trúc bản ghi, dữ liệu khi chuyển xuống từ tầng ứng dụng sẽ được
chia ra và đóng gói thành các khối dữ liệu kích thước nhỏ bởi cơ chế TLSPlaintext.
Tiếp đến, các khối dữ liệu này sẽ được nén lại bởi cơ chế TLSCompressed. Cuối
cùng, khối dữ liệu đã được nén sẽ được mã hóa bởi cơ chế TLSCiphertext. Bản ghi
có thể được gửi dưới dạng mã hóa nhưng không nén, dạng rõ và nén, dạng rõ và
không nén, cũng giống như dạng mã hóa và nén. Mã xác thực thông báo dựa trên
hàm băm (HMAC - Hash Message Authentication Code) được sử dụng trong
trường hợp cơ chế mã dữ liệu TLSCiphertext được kích hoạt để đảm bảo tính toàn
vẹn dữ liệu. Quá trình chia nhỏ và đóng gói dữ liệu được thể hiện trong hình 1.5:

Hình 1.5. Quá trình chia nhỏ và đóng gói dữ liệu

11


Cơ chế mã hóa
SSL/TLS chỉ rõ việc hỗ trợ đối với mã dòng và mã khối trong những chế độ
làm việc riêng biệt. Sự mã hóa được nâng cấp và cải tiến về mặt mã pháp, sơ đồ mã
hóa, các lược đồ cung cấp tham số mật mã đầu vào trong những phiên bản mới.
Cơ chế đóng gói dữ liệu
Dữ liệu sau khi được xử lý bởi bộ giao thức SSL/TLS là những khối dữ liệu
nhỏ đã mã hóa. Mỗi khối mã hóa này là sự kết hợp theo công thức Mac-then-Padthen-Encrypt: khối dữ liệu dưới dạng rõ đã được nén bởi cơ chế TLSCompressed sẽ
được tính toán và gắn thêm giá trị mã xác thực thông báo MAC để đảm bảo tính
toàn vẹn, chèn thêm phần đệm (lên tới 256 bytes) để được độ dài là bội của khối
mã hóa và cuối cùng là quá trình mã hóa. MAC có tính chất không thể thấy được
hay bị ẩn đi – là một số thứ tự, số thứ tự này không chứa thời gian gửi ngoại trừ
việc gắn thêm thời gian như giá trị đầu vào của MAC và có chức năng chống tấn
công lặp lại. Giá trị MAC và phần đệm thêm (Pandding) được gắn vào khối dữ liệu

đã được nén. Tóm lại, quá trình xử lý dữ liệu được thực hiện như sau: Plaintext =>
MAC => PAD, tức là chia nhỏ => tính mã xác thực => chèn phần đệm, dẫn tới thu
được khối dữ liệu có cấu trúc MSG|MAC|PAD|PADLEN và cuối cùng khối dữ liệu
này chính là đầu vào cho quá trình mã hóa. Tính năng chèn thêm phần đệm có ưu
điểm là ẩn đi độ dài thực của dữ liệu dạng rõ từ tầng ứng dụng chuyển xuống. Sơ
đồ và cài đặt quá trình chèn phần đệm đã gây ra những lổ hổng nghiêm trọng trong
quá khứ như sử dụng hàm tiên chi tấn công vào sơ đồ chèn phần đệm... Để đối phó
với những tấn công kiểu này phải thực hiện đúng qui trình giải mã được đề nghị:
 Giải mã những khối bản mã;
 Kiểm tra tính hợp lệ từng giá trị Padding riêng lẻ;
 Kiểm tra tính hợp lệ từng giá trị MAC riêng lẻ.
Nếu xảy ra lỗi ở trên bất ky bước xử lý nào cũng đều đưa ra một thông báo
lỗi giống nhau không biết đó là lỗi gì, điều này để ngăn chặn các cuộc tấn công.

12


Trường hợp lý tưởng, các bước xử lý đều được thực hiện trong cùng một thời gian,
độc lập đầu ra để chống lại tấn công kênh kề.
Cấu trúc tham số an toàn - SecurityParameters
Đặc điểm chi tiết của cấu trúc tham số an toàn như sau:
Struct {
ConnectionEnd
BulkCipherAlgorith
m
CipherType
Uint8
Uint8
Is
MACAlg


Entity ;
Bulk_cipher_algorithm ;
Cipher_type ;
Key_size
Key_material_length ;
xportable
Is_exportable ;
rithm
Mac_algorithm ;
Hash_size ;
Compression_algorithm ;
Master_secret;
Client_random ;
Server_random;

Uint8
CompressionMethod
Opaque
Opaque
Opaque
} SecurityParameter ;
Cấu trúc SecurityParameters này được định nghĩa trong phiên bản TLS 1.0
(có sự khác nhau nhỏ đối với từng phiên bản SSL/TLS). Những tham số trong cấu
trúc được mô tả chi tiết trong bảng 1.2 sau đây:

13


Bảng 1. 2 Mô tả các tham số an toàn (SecurityParameters)

Tham số
Entity

Mô tả
Xác định vai trò của máy chủ hoặc máy trạm trong suốt
quá trình liên lạc.

Bulk_cipher_algorithm Chỉ rõ thuật toán được dùng để mã hóa.
Cipher_type

Dạng thuật toán (mã dòng và mã khối).

Key_size

Kích cỡ của khóa.

Key_material_length

Nếu thuật toán mã hóa được sử dụng với khóa yếu, tức là
khóa có độ dài ngắn thì giá trị này sẽ được kích hoạt
(True/False).

Is exportable

Giá trị này chỉ ra rằng thuật toán mã hóa sử dụng kích
thước khóa yếu (True/False).

Mac_algorithm

Thuật toán được sử dụng để tạo mã xác thực thông báo.


Hash_size

Kích thước giá trị băm của hàm băm được sử dụng để
tạo mã xác thực.

Compression
algorithm

Chỉ ra thuật toán nén dữ liệu được sử dụng.

Master_secret

Khóa chủ bí mật phiên liên lạc.

Client_random

Giá trị ngẫu nhiên được chọn từ phía máy trạm.

Server_random

Giá trị ngẫu nhiên được chọn từ phía máy chủ.

Lưu ý rằng không phải tất cả các tham số của SecurityParameters đều được
tái sử dụng trong phiên liên lạc nhanh (phiên liên lạc được thiết lập từ trước nhưng
bị ngắt sau một thời gian ngắn không sử dụng). Những giá trị ngẫu nhiên từ phía
máy trạm và máy chủ luôn được thay đổi với mỗi liên kết mới.
1.2.3. Giao thức bắt tay
Quá trình kết nối giữa hai bên liên lạc được bắt đầu bởi giao thức bắt tay
Handshake Protocol. Giao thức bắt tay bao gồm một tập hợp những thông điệp có

14


cấu trúc, chức năng khác nhau và trao đổi theo thứ tự nhất định được xác định
trước. Giao thức bắt tay sẽ thiết lập những thuật toán mã hóa và khóa chủ giữa hai
bên liên lạc để thiết lập kênh truyền an toàn. Những thông điệp trong giao thức bắt
tay được trao đổi ở dạng không mã hóa cho đến khi bộ mã pháp chung được đàm
phán xong giữa hai bên liên lạc (bộ mã pháp này chứa trong thông điệp
ChangeCipherSpec). Sau khi thông điệp ChangeCipherSpec được thực hiện xong
thì giao thức ChangeCipherSpec Protocol sẽ được kích hoạt và khi đó dữ liệu sẽ
được mã hóa bởi bộ mã pháp chung đã chọn.
Mỗi kết nối SSL/TLS được bắt đầu bằng giai đoạn bắt tay bắt buộc, ngay cả
khi phiên kết nối nhanh được yêu cầu. Trong phiên kết nối nhanh cho phép sử dụng
lại những cài đặt mật mã đã được thiết lập trong phiên liên lạc trước đó. Mặc dù
vậy, những cài đặt mật mã này sẽ được sử dụng lại dựa trên khóa chủ mới mà được
đồng ý bởi hai bên liên lạc. Phiên kết nối nhanh thực hiện quá trình bắt tay rút gọn.
Nếu hai bên liên lạc muốn thiết lập những cài đặt mật mã mới trên kênh an toàn đã
được thiết lập sẵn thì giai đoạn bắt tay sẽ trở nên phức tạp hơn và khi đó diễn ra
quá trình đàm phán - Renegotiation. Quá trình đàm phán đã gây ra rất nhiều lổ
hổng bảo mật trong giao thức SSL/TLS, dẫn tới những cuộc tấn công nghiêm trọng
lên SSL/TLS trong quá khứ và vì vậy giai đoạn này bị vô hiệu hóa theo mặc định.
Giao thức con thứ ba của giai đoạn bắt tay là giao thức cảnh báo Alert
Protocol, đây là giao thức đưa ra những thông báo lỗi. Các thông báo lỗi này đưa ra
cảnh báo về những vấn đề liên quan sẽ được diễn ra, trường hợp thông báo lỗi
nghiêm trọng thì kết nối sẽ bị ngắt và tất cả các tham số mật mã cũng như khóa chủ
sẽ mất hiệu lực. Thông báo close_notify chính là thông báo lỗi nghiêm trọng dẫn tới
việc đóng phiên kết nối, hủy bỏ tất cả những tham số phiên kết nối và không có khả
năng phục hồi phiên.
Quá trình bắt tay được mô tả bằng sơ đồ trong hình 1.6:


15


×