Trình bày chi tiết đầy đủ hoạt động giao thức TLS v2: Cách thức bắt tay, trao đổi thuật toán... Trình bày các nguy cơ mất an toàn khi cài đặt giao thức TLS. Cơ sở lý thuyết tấn công Sweet32, Tấn công Heartbleed, tấn công Robot.. Cài đặt tấn công Heartbleed lên máy chủ Web Linux Centos.
Trang 1BỘ 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
Trang 2Hà 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 vii
LỜI NÓI ĐẦU 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
Trang 32.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
Trang 43.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
Trang 5DANH 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
Trang 6Hì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: https://tankma.vn 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
Trang 7DANH MỤC BẢNG BIỂU
Bảng 1 1 Sự khác biệt giữa phiên, kết nối và kênh TLS 9
Bảng 1 2 Mô tả các tham số an toàn (SecurityParameters) 14
Bảng 1 3 Nội dung các thông điệp trong giao thức bắt tay 17
Bảng 2 1 Mã khối sử dụng trong các giao thức bảo mật 48
Bảng 2 2 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
Trang 8DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT
Chosen Ciphertext AttackCertificate Signing RequestData Encryption StandardDiffle Hellman Key ExchangeDenial of Service
Digital Signature AlgorithmDigital Signature StandardDatagram Transport Layer Security
A Federal Information Processing
Initialization VectorMessage Atuthentication CodeMan-in-the-middle
National Institure of Standard and Technology
Optimal Asymmetric Encryption Padding
The Ope Source tookit for SSL/TLSOperating System
Public Key Cryptography StandardsPublic Key Infrastructure
Secure Hash Algorithm
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ênbang 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ốcgia 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ànhChuẩn mật mã khóa công khai
Hạ tầng khóa công khaiThuật toán băm an toàn
Trang 9LỜ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ácphiê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 ứngdụ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ậtcho 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ênInternet 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 giaothứ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ệnhà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ứcTLS 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ấncông là tấn công ROBOT và Sweet32
Trang 10Chươ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ờigian 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ỏinhững thiếu sót Em rất mong nhận được những ý kiến đóng góp và chỉ bảo củacá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
Trang 11
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 SocketLayer), bộ giao thức này được xem là tiêu chuẩn của công nghệ bảo mật, truyềnthông mã hoá giữa máy chủ Web server và trình duyệt Web Browser Bộ giao thứcSSL 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ẹncủ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/TLStrê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
Trang 12Giao 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áchtrong 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 điqua 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ôngtin 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ạngTCP/IP nào, TLS đã kết hợp những yếu tố an toàn sau để thiết lập được một giaodị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 tratí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ởinhữ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à
Trang 13Web 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ưngkhô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ụctiê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
Trang 14yế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 gianhoặ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ứccô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ảitiế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ị MACkhô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ằngcá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ácthô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ềulớ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ênquan 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ôngcò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êuchuẩ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ụngcho 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áoFinished
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óanhỏ 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 trongthự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
Trang 15hà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úcGCM 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ăngchố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, MacOS) 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ácthuậ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ácdị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 đượctí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 giaothức SSL/TLS Chương trình được hoàn thành trên nền tảng Java và hỗ trợ SSL3.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
Trang 16mã 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ácphiê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ácdị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ênquan 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
Trang 17tấ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ẽ đàmphá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ệcthiế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 conkhá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:
Trang 18Hì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ậttoá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 nhanhnà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ốinhanh sẽ làm giảm thời gian giai đoạn đàm phán, nhưng đi kèm với đó là rủi rokhóa chủ tạo ra có thể bị lộ Ví dụ: Hệ thống giao dịch của ngân hàng Viettinbanktriển khai dưới dạng dịch vụ web an toàn (https) từ một máy chủ web Trong kịchbả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ủangân hàng, vì một lí do nào đó như: đường truyền trong mạng lan bị ngắt và khihoạ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ệckế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ịchcủ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ìnhquả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 đã đượcthiế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
Trang 19liê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êntụ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ấtkhó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
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ưngnguyê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ếtlậ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ạchoặ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ứngminh 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ứngchỉ 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ể đượcthực hiện trên hạ tầng khóa công khai PKI (Public Key Infrastructure)
Trang 201.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ủanhữ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ủamỗ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 trongcá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íchthướ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
Trang 21Trong cấu trúc bản ghi, dữ liệu khi chuyển xuống từ tầng ứng dụng sẽ đượcchia 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ốicù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ênhàm băm (HMAC - Hash Message Authentication Code) được sử dụng trongtrường hợp cơ chế mã dữ liệu TLSCiphertext được kích hoạt để đảm bảo tính toànvẹ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
Trang 22Cơ 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 then-Encrypt: khối dữ liệu dưới dạng rõ đã được nén bởi cơ chế TLSCompressed sẽ
Mac-then-Pad-đượ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ínhtoà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 đượchay 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ấncô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ệunà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 trongquá 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áolỗ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
Trang 23Trườ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:
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:
Trang 24Bảng 1 2 Mô tả các tham số an toàn (SecurityParameters)
Chỉ rõ thuật toán được dùng để mã hóa
Dạng thuật toán (mã dòng và mã khối)
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
Hash_size
Thuật toán được sử dụng để tạo mã xác thực thông báo 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 đượctá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íamá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
Trang 25cấu trúc, chức năng khác nhau và trao đổi theo thứ tự nhất định được xác địnhtrướ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 haibê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ắttay được trao đổi ở dạng không mã hóa cho đến khi bộ mã pháp chung được đàmphá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ụnglạ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ọnglê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ỗinghiê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:
Trang 26Hình 1.6 Giai đoạn bắt tay trong TLS 1.0 1.2.3.1 Giao thức bắt tay
Giao thức bắt tay bao gồm một tập hợp các thông điệp có cấu trúc và chứcnăng khác nhau được trao đổi theo thứ tự như trên hình 1.6 và nội dung nêu trongbảng 1.3 Các thông điệp này có thể được mở rộng và thay đổi trong những phiênbản mới của giao thức TLS (ở đây là giao thức TLS 1.0)
Trang 27Bảng 1 3 Nội dung các thông điệp trong giao thức bắt tay
ClientHello Đây thông điệp đầu tiên của giai đoạn bắt tay, chứa thông
tin về các tham số như: các mã pháp, phiên bản SSL/TLScao nhất hỗ trợ, thuật toán nén (nếu có)
SeverHello Chứa thông tin về bộ mã pháp, phiên bản SSL/TLS và
thuật toán nén dữ liệu đã được chọn bởi hai bên liên lạc.Hơn nữa, thông điệp này còn chứa định danh phiên liênlạc mới hoặc cũ theo yêu cầu từ máy trạm
Certificate Có thể được gửi bởi máy chủ hoặc máy trạm và là một
thông điệp tùy chọn Thông điệp này chứa chứng chỉ sốcủa bên gửi (chứa dạng khóa tương ứng, ví dụ khóa côngkhai của thuật toán RSA), trung tâm xác thực CA, chứngchỉ tự ký từ hạ tầng khóa công khai X509
SeverKeyExchange Được gửi từ phía máy chủ chứa những giao thức trao đổi
khóa tới cho phía máy trạm lựa chọn:
CertificateRequest Được gửi từ phía máy chủ yêu cầu chứng chỉ số từ máy
trạm, để xác thực máy trạm liên lạc Đây là một thôngđiệp tùy chọn
SeverHelloDone Được gửi đi từ phía máy chủ để thông báo rằng quá trình
trao đổi/chấp nhận khóa ở máy chủ đã hoàn thành và máychủ sẽ đợi thông điệp trả lời từ phía máy trạm để tiếp tụcquá trình
ClientKeyExchange Phụ thuộc vào bộ mã pháp đã được chọn giữa hai bên
liên lạc mà thông điệp này có thể chứa một tiền khóa chủPreMasterSecret được mã hóa bởi hệ mật RSA hoặc các
Trang 28tham số máy chủ yêu cầu cho quá trình thỏa thuận khóa.CertificateVerity Nội dung thông điệp là giá trị băm của chứng chỉ đã được
gửi từ phía máy trạm trong thông điệp Certificate trước
đó Để bảo đảm tính toàn vẹn chứng chỉ số của máy trạm
đã gửi tới máy chủ
Finished Kết thúc giai đoạn bắt tay Sau khi nhận thông điệp này
thì cả hai bên liên lạc đã sẵn sàng để trao đổi dữ liệu
1.2.3.2 Giao thức trao đổi mã pháp
Giao thức ChangeCipherSpec Protocol chứa một thông điệp duy nhất ChangeCipherSpec có nội dung là mã pháp và các tham số mật mã đã được lựa
chọn từ hai bên liên lạc Thông điệp này cũng thông báo cho bên nhận rằng bên gửi
sẽ chuyển sang bảo vệ dữ liệu bởi những những tham số và mã pháp đã chọn
1.2.3.3 Giao thức cảnh báo
Giao thức Alert Protocol được sử dụng để thông báo lỗi và mức độ của
những lỗi này trong giai đoạn bắt tay Phân loại lỗi chia thành hai loại khác nhau:
Cảnh báo - Warning;
Nghiêm trọng - Fatal
Trong khi những lỗi cảnh báo có thể được bỏ qua thì những lỗi nghiêm trọng
sẽ dẫn tới việc ngừng ngay hoạt động phiên liên lạc hiện thời và làm mất hiệu lựcđịnh danh của phiên liên lạc Sự vô hiệu hóa định danh phiên liên lạc này chỉ ảnhhưởng tới nỗ lực kết nối lại phiên liên lạc trong tương lai
Thông điệp cảnh báo Alert Message trong giao thức cảnh báo được đóng gói
bởi giao thức bản ghi và được bảo vệ với thông số, thuật toán thỏa thuận hiện thời.Cảnh báo nghiêm trọng sẽ đóng kết nối phiên hiện thời, quá trình kết nối nhanhphiên liên lạc sẽ bị vô hiệu hóa vì vậy để tiếp tục liên lạc thì cả hai bên phải đưa racác tham số mật mã mới
Trang 29Một cảnh báo đặc biệt là cảnh báo đóng kết nối (close_notify, định danh là
0) Để tránh sự cắt ngắn phiên trên kênh truyền thông không sử dụng nhưng cònsống (được thiết lập và đang chạy phiên SSL/TLS) thì cả hai bên liên lạc phải đưa
ra thông điệp đóng kết nối Thông báo close_notify cũng cho bên nhận biết rằng
bên gửi sẽ không gửi bất ky thông điệp nào nữa trên kênh truyền và sau khi nhậnđược thông báo này thì bất ky dữ liệu nào nhận được đều bị loại bỏ và có thể coi làmột cuộc tấn công xen giữa
1.2.3.4 Cơ chế trao đổi khóa được xác thực trong giai đoạn bắt tay
Cơ chế trao đổi khóa được xác thực dựa trên hệ mật RSA
Hình 1.7 mô tả những thông điệp được trao đổi giữa hai bên liên lạc trongquá trình trao đổi khóa dựa trên hệ mật RSA
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 Trong kịch bản này, tiền khóa chủ PreMasterSecret được chọn bởi máy trạm
và được mã hóa bởi hệ mật RSA trước khi gửi đi (mã hóa theo tiêu chuẩn Public
Trang 30Key Cryptography Standards - PKCS#v1.5) Máy chủ không thể can thiệp vào quá
trình tạo tiền khóa chủ PreMasterSecret:
Cơ chế trao đổi khóa được xác thực dựa trên giao thức trao đổi khóa Diffe Hellman tĩnh
Trong cơ chế trao đổi khóa dựa trên giao thức trao đổi khóa Diffe Hellman tĩnh, hai bên liên lạc phải đưa ra một chứng chỉ chứa giá trị công khai hoặc ít nhất phía máy chủ phải đưa ra một chứng chỉ với giá trị công khai trong giao thức Diffe Hellman của chính nó và trường hợp này phía máy trạm sẽ chọn một giá trị đối với mỗi phiên liên lạc Khóa được thỏa thuận trong giao thức Diffe Hellman được sử dụng như tiền khóa chủ PreMasterSecret Các tham số khóa trong những chứng chỉ khóa công khai Diffe Hellman là tĩnh và được đưa ra từ hai bên liên lạc, điều này
khác với cách chọn tiền khóa chủ PreMasterSecret được đưa ra từ phía máy trạm
Rõ ràng cả hai bên liên lạc phải đưa ra những giá trị để thực hiện trao đổi khóa dựa
trên giao thức Diffe Hellman có sẵn (số modulo và phần tử sinh) Hình 1.8 mô tả
những thông điệp giao thức bắt tay dựa theo sự trao đổi khóa dựa trên DH:
Trang 31Hình 1.8 Trao đổi khóa được xác thực dựa trên DH trong TLS 1.0
Cơ chế trao đổi khóa được xác thực dựa trên giao thức DH động
Trao đổi khóa được xác thực dựa trên giao thức DH động trong quá trình bắttay được minh họa trên hình 1.9:
Trang 32Hình 1.9 Trao đổi khóa được xác thực dựa trên DH động trong TLS 1.0
Đối với cơ chế trao đổi khóa được xác thực dựa trên giao thức DH động
trong giai đoạn bắt tay thì thông điệp ServerKeyExchange được thực hiện bắt buộc.
Các tham số mật mã được mã hóa bởi khóa trong chứng chỉ số (khóa công khaiRSA hoặc chuẩn chữ kí số DSS) Các tham số mật mã của giao thức DH động cầnthiết được gửi cùng với một chữ ký số để bảo vệ tính toàn vẹn trong thông điệp
ServerKeyExchange Máy trạm sẽ gửi đáp trả các tham số DH công khai trong thông điệp ClientKeyExchange nhưng không có chữ ký số bảo vệ tính toàn vẹn Khóa thỏa thuận DH được sử dụng như tiền khóa chủ PreMasterSecret
Cả hai bên liên lạc đều tham gia vào quá trình sinh tiền khóa chủ
Trang 33bằng cách kiểm tra danh sách các nhóm hợp lệ thông qua những phần tử sinh và sốmodulo.
1.2.3.5 Giai đoạn bắt tay nhanh trong phiên kết nối nhanh
Giai đoạn bắt tay nhanh trong SSL/TLS được thực hiện khi phía máy trạmmuốn nối lại một phiên đã đóng (phiên kết nối nhanh) và được mô tả như tronghình 1.10:
Hình 1.10 Giai đoạn bắt tay nhanh trong TLS 1.0
So với giai đoạn bắt tay đầy đủ trong hình 1.6 thì các thông điệp thỏathuận/trao đổi khóa đã bị cắt bớt đi, bởi vì cả hai bên đều đã biết khóa chủ bí mật
MasterSecret dựa trên việc liên kết với định danh phiên session id trước đó Với khóa chủ có sẵn và các giá trị ngẫu nhiên mới trong hai thông điệp ClientHello và ServerHello.
Trang 34Máy chủ sẵn sàng cho phiên kết nối nhanh bằng cách trả lại cho máy trạm
định danh phiên session id trong thông điệp ServerHello Nếu máy chủ không thể
hoặc không sẵn sàng để thực hiện một phiên kết nối nhanh thì nó gửi trả lại một
định danh phiên session id mới trong thông điệp ServerHello - điều này dẫn tới quá
trình bắt tay đầy đủ
1.2.3.6 Hàm giả ngẫu nhiên
Hàm giả ngẫu nhiên – Viết tắt là PRF, được sử dụng để tăng tính bí mật và làmột phần quan trọng trong quá trình sinh khóa chủ và nguyên liệu khóa trong bộgiao thức SSL/TLS Trong TLS 1.0 hàm giả ngẫu nhiên dựa trên hai hàm băm MD5
và SHA-1 để thực hiện tính giá trị mã xác thực thông báo HMAC (các giá trị đầu ragiả ngẫu nhiên) Cấu trúc PRF được định nghĩa như sau:
PRF (secret, label, seed) = P_MD5 (S1, label + seed) XOR
P_SHA−1(S2, label + seed);
L_S = length in bytes of secret;
L_S1 = L_S2 = ceil (L_S / 2);
S1 = secret [0 L_S1];
S2 = secret [L_S2 L_S];
Cấu trúc PRF chứa ba giá trị đầu vào:
Một giá trị bí mật S: trong hàm PRF giá trị bí mật S được chia thành hai giá trị nhỏ hơn là S1 và S2 có độ dài như nhau và bằng một nửa độ dài của S Trường hợp độ dài (tính theo byte) của S là lẻ thì byte cuối cùng của S1 sẽ là byte đầu tiên của S2;
Một nhãn định danh;
Một giá trị mầm seed
Hoạt động của hàm PRF được mô tả trong hình 1.11:
Trang 35h 1.11 Hàm giả ngẫu nhiên trong TLS 1.0
Những hàm mở rộng P_MD5 và P_SHA-1 có tác dụng mở rộng giá trị bímật Hoạt động cốt lỗi chính là sự tính toán HMAC lặp với ba chuỗi dữ liệu đầu vào:
P_hash (secret, seed) = HMAC_hash( secret, A(1) + seed) +
HMAC_hash(secret, A(2) + seed) + HMAC_hash(secret, A(3) + seed) + Where + indicates concatenation
A( ) is defined as:
A(0) = seed
A(i) = HMAC_hash (secret, A(i −1))
Trang 36Hình 1.12 Hàm mở rộng
Sự tính toán HMAC được lặp cho đến khi hết khối lượng dữ liệu cần xácthực Đối với dữ liệu có độ dài không phải là bội của độ dài giá trị băm thì phần dư
sẽ bị bỏ đi
Ví dụ: một lần lặp HMAC_MD5 đơn sẽ trả về dữ liệu đầu ra 128 bits, tức là
16 byte Nếu 100 bytes được yêu cầu thì hàm phải được gọi 7 lần dẫn đến 112 bytesđầu ra (7*16 = 112), trong đó 12 byte trong lần lặp thứ 7 bị bỏ đi
1.2.3.7 Tính khóa chủ bí mật
Khóa chủ bí mật MasterSecret có nguồn gốc từ tiền khóa chủ PreMasterSecret (được tạo ra trong quá trình bắt tay) và các giá trị ngẫu nhiên của máy trạm và máy chủ chứa trong các thông điệp ClientHello và ServerHello Mỗi khóa chủ bí mật MasterSecret có độ dài thực là 48 byte Việc tính toán khóa chủ bí mật MasterSecret được thực hiện bởi hàm PRF với đầu vào là tiền khóa chủ
Trang 37PreMasterSecret, nhãn master secret, các giá trị ngẫu nhiên của máy trạm và máy
chủ
Master_secret = PRF (pre_master_secret, “master secret”,
ClientHello.random + ServerHello.random) 1.2.3.4 Quá trình chia nhỏ khóa chủ và sinh các khóa con
Sau khi tính toán xong thì khóa chủ bí mật MasterSecret bị chia nhỏ thành
bốn khóa khác nhau và hai giá trị khởi tạo ban đầu IVs Quá trình này được thựchiện trong cấu trúc sau:
To generate the key material, compute
Key_block = PRF(Security Parameters Master_secret,
“key expansion”, Security Parameters.server_random + Security Parameters.client_random ) ; until enough output has been generated Then the key_block is partitioned as
follows:
client_write_MAC_secret [Security Parameters hash_size]
server_write_MAC_secret [Security Parameters hash_size]
client_write_key [Security Parameters key_material_length]
server_write_key [Security Parameters key_material_length]
client_write_IV [Security Parameters IV size]
server_write _IV [Security Parameters IV size]
Dễ thấy trong cấu trúc trên các giá trị ngẫu nhiên là Security Parameters.server_random và Security Parameters.client_random được lưu trữ trong phiên kết nối chứa trong các tham số an toàn SecurityParameters SecurityParameters.hash_size là kích cỡ đầu ra của hàm băm được sử dụng trong
xác thực thông điệp Giá trị khởi tạo ban đầu IVs chỉ có giá trị khi mã khối được sửdụng Toàn bộ quá trình sinh khóa được mô tả trong hình 1.13:
Trang 38Hình 1.13 Quá trình sinh khóa trong TLS 1.0
1.3 Cách thức hoạt động và thuật toán trong giao thức TLS
1.3.1 Cách thức hoạt động của giao thức TLS
TLS không phải là một giao thức đơn lẻ mà là một tập các thủ tục đã được chuẩnhoá để thực hiện các nhiệm vụ bảo mật sau:
Xác thực server: Cho phép người sử dụng xác thực được server muốn kết
nối Lúc này, phía browser sử dụng các kỹ thuật mã hoá công khai để chắc chắnrằng certificate và public ID của server là có giá trị và được cấp phát bởi một CA(certificate authority) trong danh sách các CA đáng tin cậy của client Điều này rất
Trang 39người dùng thực sự muốn kiểm tra liệu server sẽ nhận thông tin này có đúng làserver mà họ định gửi đến không.
Xác thực Client: Cho phép phía server xác thực được người sử dụng muốn
kết nối Phía server cũng sử dụng các kỹ thuật mã hoá công khai để kiểm tra xemcertificate và public ID của server có giá trị hay không và được cấp phát bởi một
CA trong danh sách các CA đáng tin cậy của server không Điều này rất quan trọngđối với các nhà cung cấp Ví dụ như khi một ngân hàng định gửi các thông tin tàichính mang tính bảo mật tới khách hàng thì họ rất muốn kiểm tra định danh củangười nhận
Mã hoá kết nối: Tất cả các thông tin trao đổi giữa client và server được mã
hoá trên đường truyền nhằm nâng cao khả năng bảo mật Điều này rất quan trọngđối với cả hai bên khi có các giao dịch mang tính riêng tư Ngoài ra, tất cả các dữliệu được gửi đi trên một kết nối SSL đã được mã hoá còn được bảo vệ nhờ cơ chế
tự động phát hiện các xáo trộn, thay đổi trong dữ liệu (đó là các thuật toán băm –hash algorithm)
Hình 1.14 Cách thức hoạt động của giao thức TLS
Trang 401.3.2 Các thuật toán dùng trong giao thức TLS
Các thuật toán mã hoá và xác thực của TLS được sử dụng bao gồm:
- DES (Data Encryption Standard) là một thuật toán mã hoá có chiều dài khoá
- MD5 (Message Digest algorithm) được phát thiển bởi Rivest
- RSA: là thuật toán mã hoá công khai dùng cho cả quá trình xác thực và mãhoá dữ liệu được Rivest, Shamir, and Adleman phát triển
- RSA key exchange: là thuật toán trao đổi khoá dùng trong SSL dựa trên thuậttoán RSA
- RC2 and RC4: là các thuật toán mã hoá được phát triển bởi Rivest dùng choRSA Data Security
- SHA-1 (Secure Hash Algorithm): là một thuật toán băm đang được chínhphủ Mỹ sử dụng
Khi một client và server trao đổi thông tin trong giai đoạn bắt tay (handshake) Họ
sẽ xác định bộ mã hoá mạnh nhất có thể và sử dụng chúng trong phiên giao dịchTLS