NGHIÊN CỨU MỘT SỐ BIỆN PHÁP NÂNG CAO ĐỘ AN TOÀN CỦA GIAO THỨC SSLTLS, ỨNG DỤNG TRONG BẢO MẬT THÔNG TIN MẠNG MÁY TÍNHĐược thiết kế bởi Netscape bao gồm các cơ chế bảo mật trong các sản phẩm trình duyệt để tạo ra truyền thông an toàn trên mạng, SSLTLS hiện đang là giao thức bảo mật được sử dụng phổ biến trên Internet nhất là trong các hoạt động thương mại điện tử. Ban đầu, SSL được thiết kế kết hợp cùng với giao thức HTTP được sử dụng bởi các Web server và browser, nhưng bây giờ nó đã là một thành phần quan trọng trong mọi loại truyền thông Internet bảo mật. Việt Nam đang trên đường hội nhập với nền công nghệ thông tin thế giới, các hoạt động giao dịch trên mạng ở Việt Nam cũng sẽ diễn ra sôi nổi, khi đó vấn đề bảo mật trở nên quan trọng, việc triển khai SSLTLS là điều cần thiết. Cho đến hiện nay có rất nhiều phương pháp bảo mật như DES, RSA,… Nhưng một trong số đó, bộ giao thức SSLTLS là một phương pháp được sử dụng phổ biến nhất trong bảo mật trên internet.Trong đồ án này, em nghiên cứu một số biện pháp nâng cao độ an toàn của giao thức SSLTLS, ứng dụng trong bảo mật thông tin mạng máy tính. Em hy vọng rằng với đồ án tốt nghiệp này sẽ đem đến cái nhìn cụ thể hơn về SSLTLS và bảo mật mạng, tầm quan trọng của nó cũng như ứng dụng trong thực tế.
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ĐỒ ÁN TỐT NGHIỆP
NGHIÊN CỨU MỘT SỐ BIỆN PHÁP NÂNG CAO ĐỘ
AN TOÀN CỦA GIAO THỨC SSL/TLS, ỨNG DỤNG TRONG
BẢO MẬT THÔNG TIN MẠNG MÁY TÍNH
Ngành: An toàn thông tin
Trang 3HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ĐỒ ÁN TỐT NGHIỆP
NGHIÊN CỨU MỘT SỐ BIỆN PHÁP NÂNG CAO ĐỘ
AN TOÀN CỦA GIAO THỨC SSL/TLS, ỨNG DỤNG TRONG
BẢO MẬT THÔNG TIN MẠNG MÁY TÍNH
Ngành: An toàn thông tin
Trang 5Trong thời gian làm đồ án tốt nghiệp, em đã nhận được nhiều sự giúp đỡ, đóng góp
ý kiến và chỉ bảo nhiệt tình của thầy cô, gia đình và bạn bè
Em xin gửi lời cảm ơn chân thành đến ThS Nguyễn Thanh Sơn - Cục QLMMDS
& KĐSPMM người đã tận tình hướng dẫn, chỉ bảo em trong suốt quá trình làm đồ án tốtnghiệp
Em cũng chân thành cảm ơn các thầy cô giáo trong Học Viện Kỹ Thuật Mật mãnói chung, các thầy cô trong Khoa An Toàn Thông Tin nói riêng đã dạy dỗ cho em kiếnthức về các môn đại cương cũng như các môn chuyên ngành, giúp em có được cơ sở lýthuyết vững vàng và tạo điều kiện giúp đỡ em trong suốt quá trình học tập
Cuối cùng em, xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo điều kiện,quan tâm, giúp đỡ em trong suốt quá trình học tập và hoán thành đồ án tốt nghiệp
Em xin chân thành cảm ơn!
Hà Nội, ngày 25 tháng 05 năm 2018
Sinh viên
Trần Văn Dũng
Trang 6Được thiết kế bởi Netscape bao gồm các cơ chế bảo mật trong các sản phẩm trìnhduyệt để tạo ra truyền thông an toàn trên mạng, SSL/TLS hiện đang là giao thức bảo mậtđược sử dụng phổ biến trên Internet nhất là trong các hoạt động thương mại điện tử Banđầu, SSL được thiết kế kết hợp cùng với giao thức HTTP được sử dụng bởi các Webserver và browser, nhưng bây giờ nó đã là một thành phần quan trọng trong mọi loạitruyền thông Internet bảo mật Việt Nam đang trên đường hội nhập với nền công nghệthông tin thế giới, các hoạt động giao dịch trên mạng ở Việt Nam cũng sẽ diễn ra sôi nổi,khi đó vấn đề bảo mật trở nên quan trọng, việc triển khai SSL/TLS là điều cần thiết Chođến hiện nay có rất nhiều phương pháp bảo mật như DES, RSA,… Nhưng một trong số
đó, bộ giao thức SSL/TLS là một phương pháp được sử dụng phổ biến nhất trong bảo mậttrên internet.Trong đồ án này, em nghiên cứu một số biện pháp nâng cao độ an toàn củagiao thức SSL/TLS, ứng dụng trong bảo mật thông tin mạng máy tính Em hy vọng rằngvới đồ án tốt nghiệp này sẽ đem đến cái nhìn cụ thể hơn về SSL/TLS và bảo mật mạng,tầm quan trọng của nó cũng như ứng dụng trong thực tế
Trang 7LỜI CẢM ƠN i
TÓM TẮT ii
MỤC LỤC iii
DANH SÁCH HÌNH VẼ v
DANH SÁCH BẢNG BIỂU vi
BẢNG CHÚ GIẢI MỘT SỐ CỤM TỪ VIẾT TẮT vi
MỞ ĐẦU vii
CHƯƠNG 1 TỔNG QUAN VỀ BỘ GIAO THỨC SSL/TLS 1
1.1 Giới thiệu về bộ giao thức SSL/TLS 1
1.1.1 SSL/TLS là gì? 1
1.1.2 Tại sao sử dụng SSL/TLS 1
1.1.3 Lịch sử ra đời của SSL/TLS 2
1.2 Cấu trúc, nguyên lý hoạt động của bộ giao thức SSL/TLS 4
1.2.1 Kiến trúc giao thức SSL/TLS 4
1.2.2 Cách SSL/TLS làm việc 22
1.2.2.1 Tiến trình SSL 22
1.2.2.2 Giao thức SSL 23
1.3 Kết luận chương 1 26
CHƯƠNG 2 MỘT SỐ VẤN ĐỀ VỀ AN TOÀN ĐỐI VỚI BỘ GIAO THỨC SSL/TLS 27
2.1 Một số tấn công đã biết đối với bộ giao thức SSL/TLS 27
2.1.1 Tấn công MITM (Man in the middle) 27
2.1.2 Tấn công Brute-force trên các khoá session 38
2.1.3 Tấn công BEAST (Browser Exploit Against SSL/TLS) 39
2.1.4 Tấn công CRIME (Compression Ratio Info-Leak Made Easy) 44
2.1.5 Tấn công HEARTBLEED 49
2.2 Một số biện pháp nâng cao an toàn đối với bộ giao thức SSL/TLS 52
2.2.1 Phòng chống các tấn công đã biết 53
2.2.1.1 Tấn công MITM (Man in the middle) 53
2.2.1.2 Tấn công Brute-force trên các khoá session 57
2.2.1.3 Tấn công BEAST (Browser Exploit Against SSL/TLS) 58
Trang 82.2.2 Tùy biến các thuật toán mật mã và tham số mật mã 60
2.2.2.1 Các thuật toán mật mã an toàn dùng cho SSL/TLS 60
2.2.2.2 Các tham số mật mã an toàn dùng cho SSL/TLS 62
2.3 Kết luận chương 2 64
CHƯƠNG 3 NGHIÊN CỨU BỘ THƯ VIỆN MẬT MÃ OPENSSL VÀ ĐỀ XUẤT ỨNG DỤNG TRONG BẢO MẬT THÔNG TIN TRÊN MẠNG MÁY TÍNH 65
3.1 Tổng quan về bộ thư viện mật mã OpenSSL 65
3.1.1 Giới thiệu về OpenSSL 65
3.1.2 Các phiên bản của OpenSSL 65
3.1.3 Các chức năng đơn giản của chương trình OpenSSL 66
3.1.3.1 Sử dụng để băm dữ liệu 66
3.1.3.2 Mã hóa dữ liệu 67
3.1.3.3 Tạo mật khẩu đã được mã hóa 67
3.1.3.4 Ký và xác thực chữ ký 67
3.1.3.5 Tạo khóa RSA , DSA hay EC 67
3.1.3.6 Kiểm tra số nguyên tố 68
3.1.3.7 Kiểm tra hiệu suất phần cứng của hệ thống 68
3.2 Đề xuất ứng dụng trong bảo mật thông tin trên mạng máy tính 69
3.2.1 Demo phương pháp tấn công HTTP 69
3.2.2 Giải pháp phòng chống và triển khai SSl 72
3.3 Kết luận chương 3 81
KẾT LUẬN 82
TÀI LIỆU THAM KHẢO 83
Trang 9Hình 1 Cấu trúc của SSL 5
Hình 2 Hoạt động của SSL Record Protocol 9
Hình 3 Thể hiện trao đổi lúc ban đầu cần được thiết lập một kết nối logic giữa client và server Việc trao đổi có thể xem như có bốn giao đoạn. 16
Hình 4 Các message SSL 23
Hình 5 Mô hình tấn công MITM 27
Hình 6 Quá trình truyền thông ARP 29
Hình 7 Chặn truyền thông bằng các giả mạo ARP Cache 30
Hình 8 Truy vấn và đáp trả DNS 32
Hình 9 Các gói truy vấn và đáp trả DNS 32
Hình 10 Truy vấn và đáp trả DNS bằng đệ quy 33
Hình 11 Tấn công giả mạo DNS bằng phương pháp giả mạo DNS ID 34
Hình 12 Một Session bình thường 35
Hình 13 Chiếm quyền điều khiển 35
Hình 14 Quá trình truyền thông HTTPS 36
Hình 15 Chiếm quyền điều khiển truyền thông HTTPS 38
Hình 16 Sơ đồ tấn công CRIME 45
Hình 17 HTTP request của client 46
Hình 18 SSL/TLS không ẩn độ dài request/response 46
Hình 19 HTTP request của client đã bị kẻ tấn công thay đổi 47
Hình 20 Tấn công CRIME thực hiện tại một bên liên lạc 48
Hình 21 Chia tách bản ghi sử dụng giá trị biên đã lựa chọn 49
Hình 22 Xem ARP Cache 54
Hình 23 Phát hiện tấn công CRIME trong máy chủ 59
Trang 10Bảng 1 Các số cổng được gán cho các giao thức ứng dụng chạy trên TLS/SSL. 7
Bảng 2 Các thành phần thông tin trạng thái Session SSL 8
Bảng 3 Các thành phần thông tin trạng thái nối kết SSL 8
Bảng 4 Các thuật toán mã hóa 11
Bảng 5 Các kiểu message giao thức SSL handshake 15
Bảng 6 Bảng tổng hợp đề xuất thuật toán và tham số mật mã sử dụng trong giao thức SSL/TLS 64
BẢNG CHÚ GIẢI MỘT SỐ CỤM TỪ VIẾT TẮT
CA Certificate Authority (Tổ chức cấp chứng chỉ)
Client Máy khách
HTTP HyperText Transfer Protocol (Giao thức truyền siêu văn bản)
MAC Message Authentication Code (Mã xác thực thông điệp)
Server Máy chủ
SSL Secure Sockets Layer (Khe cắm an toàn)
TLS Transport Layer Security (Bảo mật tầng giao vận)
IETF Internet Engineering Task Force
TCP/IP Transfer Control Protocol/Internet Protocol
Trang 11SSL (Secure Sockets Layer) được Netscape phát triển vào năm 1994, và nhanhchóng trở thành một giao thức được sử dụng rộng rãi cho các ứng dụng và server cần vậnchuyển dữ liệu an toàn qua mạng Internet Giao thức HTTPS mà ta thường thấy ngày naykhi truy cập Facebook, Google, Youtube… chính là sự kết hợp giữa SSL và HTTP VìSSL là giao thức độc quyền nên vào năm 1999 IETF đã chuẩn hóa SSL 3.1 thành TLS 1.0(được quy định trong RFC 2246) Mặc dù SSL và TLS (Transport Layer Security) cónhiều điểm tương đồng, nhưng vẫn có những khác biệt khiến chúng không thể hoạt độngchung với nhau SSL và TLS có các version sau:
SSL đảm bảo tính riêng tư, tính toàn vẹn và chứng thực thông qua các thuật toán
mã hóa và hash đã đề cập trong bài viết Tổng quan về công nghệ VPN SSL nằm giữatầng application và tầng transport trong mô hình OSI, và sử dụng TCP làm giao thức vậnchuyển nhằm truyền các gói tin một cách tin cậy
Ngày nay việc bảo mật thông tin là yếu tố quan trọng để quyết định sự sống còncủa một tổ chức, một công ty hay doanh nghiệp Với sự phát triển nhanh chóng của côngnghệ đã mang lại nhiều tiện ích cho người dùng nhưng đồng thời cũng đặt ra một nhu cầuhết sức cấp thiết về sự an toàn và bảo mật Cho đến hiện nay có rất nhiều phương phápbảo mật như DES, RSA,… Nhưng một trong số đó, bộ giao thức SSL/TLS là một phươngpháp được sử dụng phổ biến nhất trong bảo mật trên internet Từ nhận thức và các kiếnthức đã được học trong Học Viện Kỹ Thuật Mật Mã em đã chọn đề tài “NGHIÊN CỨUMỘT SỐ BIỆN PHÁP NÂNG CAO ĐỘ AN TOÀN CỦA GIAO THỨC SSL/TLS, ỨNGDỤNG TRONG BẢO MẬT THÔNG TIN MẠNG MÁY TÍNH ” để nghiên cứu thực tế
và viết thành đồ án này Với những hiểu biết còn hạn chế và thời gian thực tế quá ngắnngủi, với sự giúp đỡ của các thầy cô giáo , em hy vọng sẽ giúp mọi người hiểu được phầnnào bộ giao thức SSL/TLS và ứng dụng nó trong bảo mật mạng internet
Trang 12sử ra đời của SSL/TLS) và Cấu trúc, nguyên lý hoạt động của bộ giao thức SSL/TLS.
Chương 2 Một số vấn đề về an toàn đối với bộ giao thức SSL/TLS Chương nàygiới thiệu một số tấn công đã biết đồi với bộ giao thức SSL/TLS và một số giải pháp tùybiến các tham số, nguyên thủy mật mã nhằm nâng cao độ an toàn của giao thức
Chương 3 Nghiên cứu bộ thư viện mật mã OpenSSL và đề xuất ứng dụng trongbảo mật thông tin trên mạng máy tính Chương này sẽ giới thiệu tổng quan về bộ thư việnmật mã OpenSSL và đề xuất ứng dụng trong bảo mật thông tin trên mạng máy tính(Demo phương pháp tấn công HTTP và giải pháp phòng chống và triển khai SSL)
Bài viết này đã được hoàn thành với sự tận tình hướng dẫn, giúp đỡ của ThS Nguyễn Thanh Sơn và các Thầy cô trong trong khoa An Toàn Thông Tin
Em xin chân thành cảm ơn!
Trang 13Chương 1 TỔNG QUAN VỀ BỘ GIAO THỨC SSL/TLS
1.1 Giới thiệu về bộ giao thức SSL/TLS
1.1.1 SSL/TLS là gì?
SSL được viết tắt của từ Secure Socket Layer, là tiêu chuẩn của công nghệ bảomật, truyền thông mã hoá giữa máy chủ Web server và trình duyệt (browser) Tiêu chuẩnnày hoạt động và đảm bảo rằng các dữ liệu truyền tải giữa máy chủ và trình duyệt củangười dùng đều riêng tư và toàn vẹn SSL hiện tại cũng là tiêu chuẩn bảo mật cho hàngtriệu website trên toàn thế giới, nó bảo vệ dữ liệu truyền đi trên môi trường internet được
an toàn
TLS được viết tắt của từ Transport Layer Security, là sự kế thừa của SSL và do đó
TLS bao gồm rất nhiều cải tiến và sửa lỗi trên SSL SSL đã được giới thiệu vào đầu
những năm 1990 và ba phiên bản đã được đưa lên SSL 3.0 Sau đó, vào năm 1999, phiênbản SSL tiếp theo xuất hiện dưới tên TLS 1.0 Hiện tại, phiên bản mới nhất là TLS 1 2.SSL là một cũ có rất nhiều lỗi bảo mật đã biết và do đó dễ bị tấn công như đã biết, nhưtấn công POODLE.Phiên bản mới nhất của TLS có các bản sửa lỗi cho các cuộc tấn côngnày trong khi nó cũng hỗ trợ các tính năng và thuật toán mới Vì vậy, đối với các ứngdụng cần bảo mật tốt hơn, nên sử dụng phiên bản TLS mới nhất thay vì sử dụng giao thứcSSL cũ
1.1.2 Tại sao sử dụng SSL/TLS
Ngày nay việc bảo mật thông tin là yếu tố quan trọng để quyết định sự sống còncủa một tổ chứng, một công ty hay doanh nghiệp.Với sự phát triển nhanh chóng của côngnghệ đã mang lại nhiều tiện ích cho người dùng nhưng đồng thời cũng đặt ra một nhu cầuhết sức cấp thiết về sự an toàn và bảo mật Cho đến hiện nay có rất nhiều phương phápbảo mật như DES, RSA,… Nhưng một trong số đó, bộ giao thức SSL/TLS là một phươngpháp được sử dụng phổ biến nhất trong bảo mật trên internet
Việc truyền các thông tin nhạy cảm trên mạng rất không an toàn vì những vấn đề sau:
Bạn không thể luôn luôn chắc rằng bạn đang trao đổi thông tin với đúng đối tượngcần trao đổi
Dữ liệu mạng có thể bị chặn, vì vậy dữ liệu có thể bị một đối tượng thứ ba khácđọc trộm, thường được biết đến như attacker
Nếu attacker có thể chặn dữ liệu, attacker có thể sửa đổi dữ liệu trước khi gửi nóđến người nhận
Trang 14SSL giải quyết các vấn đề trên SSL giải quyết vấn đề đầu tiên bằng cách cho phépmột cách tùy chọn mỗi bên trao đổi có thể chắc chắn về định danh của phía đối tác trongmột quá trình gọi là authentication (xác thực) Một khi các bên đã được xác thực, SSLcung cấp một kết nối được mã hóa giữa hai bên để truyền bảo mật các message Việc mãhóa trong quá trình trao đổi thông tin giữa hai bên cung cấp sự riêng tư bí mật, vì vậy màgiải quyết được vấn đề thứ hai Thuật toán mã hóa được sử dụng với SSL bao gốm hàmbăm mã hóa, tương tự như một checksum Nó đảm bảo rằng dữ liệu không bị thay đổitrong quá trình truyền dẫn Hàm băm mã hóa giải quyết vấn đề thứ ba, tính toàn vẹn dữliệu.
Chú ý rằng, cả xác thực và mã hóa đều là tùy chộn, và phụ thuộc vào cipher suites(các bộ mã hóa) được đàm phán giữa hai đối tượng
Một ví dụ rõ ràng nhất mà trong đó bạn nên sử dụng SSL là trao đổi thông tin giaodịch qua mạng (e-commerce) Trong trao đổi e-commerce, thât dại đột khi giả ddinjhjrằng bạn có thể chắc chắn về định danh của server mà bạn đang trao đổi thông tin Ai đó
có thể ễ dàng tại ra một Website giả hứa hẹn cách dịch vụ tuyệt vời, chỉ để cho bạn nhậpvào đó số tài khoản SSL cho phép bạn, client,xác thực về định danh của server Nó cũngcho phép server xác thực định danh của client, mặc dù trong các giao tác Internet, việcnày hiếm khi được làm
Một khi client và server đã hài lòng với định danh của mỗi bên đối tác SSL cũngcấp tính bảo mật và tính toàn vẹn thông qua các thuật toán mã hóa mà nó sử dụng Điềunày cho phép các thông tin nhạy cảm, như số tài khoản, được truyền đi một cách an toàntrên Internet
Trong khi SSL cung cấp tính xác thực, tính bảo mật và toàn vẹn dữ liệu, nó khôngcũng cấp non-repudiation (tính không từ chối) Non-repudiation có nghĩa là khi một đốitượng gửi đi một message, thì sau đó không thể phù nhận việc mình đã gửi message đó.Khi một chữ kí số tương đương được liên kết với một message, việc trao đổi này sau đó
có thể được chứng minh SSl một mình nó không cung câp non-repudiation
1.1.3 Lịch sử ra đời của SSL/TLS
Như chúng ta đã biết có hai giao thức bảo mật quan trọng lớp vận chuyển (LayerTransport) có tầm quan trọng cao nhất đối với sự bảo mật của các trình ứng dụng trênWeb: đó là hai giao thức SSL và TLS
Nói chung, có một số khả năng để bảo vệ bằng mật mã lưu lượng dữ liệu HTTP
Ví dụ, vào những năm 1990, tập đoàn CommerceNet đã đề xuất S-HTTP mà về cơ bản là
Trang 15một cải tiến bảo mật của HTTP Một phần thực thi của S-HTTP đã làm cho có sẵn côngcộng trong một phiên bản được chỉnh sửa của trình duyệt Mosaic NCSA mà những ngườidùng phải mua (trái với trình duyệt Mo NCSA "chuẩn" có sẵn công cộng và miễn phí trênInternet).
Tuy nhiên, cùng thời điểm Netscape Communication đã giới thiệu SSL và mộtgiao thức tương ứng với phiên bản đầu tiên của Netscape Navigator, Trái với tập đoànCommerceNet, Netscape Communications đã không tính phí các khách hàng của nó vềviệc thực thi giao thức bảo mật của nó Kết quả, SSL trở thành giao thức nổi bật để cungcấp các dịch vụ bảo mật cho lưu lượng dữ liệu HTTP 1994 và S-HTTP lặng lẽ biến mất.Cho đến bây giờ, có ba phiên bản của SSL và bốn phiên bản dành cho TLS
1 SSL 1.0: được sử dụng nội bộ chỉ bởi Netscape Communications Nó chứa một
số khiếm khuyết nghiêm trọng và không bao giờ được tung ra bên ngoài
2 SSL 2.0: được kết nhập vào Netscape Communications 1.0 đến 2.x Nó có một
số điểm yếu liên quan đến sự hiện thân cụ thể của cuộc tấn công của đối tượng trung gian.Trong một nỗ lực nhằm dùng sự không chắc chắn của công chúng về bảo mật của SSL,Microsoft cũng đã giới thiệu giao thức PCT (Private Communication Technology) cạnhtranh trong lần tung ra Internet Explorer đầu tiên của nó vào năm 1996
3 Netscape Communications đã phản ứng lại sự thách thức PCT của Microsoftbằng cách giới thiệu SSL 3.0 vốn giải quyết các vấn đề trong SSL 2.0 và thêm một số tínhnăng mới Vào thời điểm này, Microsoft nhượng bộ và đồng ý hỗ trợ SSL trong tất cả cácphiên bản phần mềm dựa vào TCP/IP của nó (mặc dù phiên bản riêng của nó vẫn hỗ trợPCT cho sự tương thích ngược)
Thông số kỹ thuật mới nhất của SSL 3.0 đã được tung ra chính thức vào tháng 3năm 1996 Nó được thực thi trong tất cả các trình duyệt chính bao gồm ví dụ MicrosoftInternet Explorer 3.0 (và các phiên bản cao hơn), Netscape Navigator 3.0 (và các phiênbản cao hơn), và Open Như được thảo luận ở phần sau trong chương này, SSL 3.0 đãđược điều chỉnh bởi IETF TLS WG Thực tế, thông số kỹ thuật giao thức TLS 1.0 dẫnxuất từ SSL 3.0
4 Theo mặc định, TLS 1.1 và TLS 1.2 được kích hoạt khi Windows EmbeddedCompact 7 dựa trên thiết bị được cấu hình là một khách hàng bằng cách sử dụng cài đặt
Trang 16trình duyệt Giao thức bị vô hiệu hoá khi Windows Embedded nén 7-dựa thiết bị được cấuhình như một máy chủ web.
5 TLS 1.3 mới đã được hoàn thành vào ngày 21 tháng 3 năm 2018 Phần thú vịcho cộng đồng WordPress và khách hàng ở đây tại Kinsta là TLS 1.3 bao gồm rất nhiềucải tiến về bảo mật và hiệu suất Với bản cập nhật giao thức HTTP / 2 vào cuối năm 2015
và bây giờ TLS 1.3 vào năm 2018, các kết nối được mã hóa hiện đã an toàn hơn và nhanhhơn bao giờ hết
1.2 Cấu trúc, nguyên lý hoạt động của bộ giao thức SSL/TLS
1.2.1 Kiến trúc giao thức SSL/TLS
Cấu trúc của SSL và giao thức SSL tương ứng được minh họa trong hình 1(Cấu trúc SSL và giao thức SSL) Theo hình này, SSL ám chỉ một lớp (bảomật) trung gian giữa lớp vận chuyển (Transport Layer) và lớp ứng dụng(Application Layer) SSL được xếp lớp lên trên một dịch vụ vận chuyển địnhhướng nối kết và đáng tin cậy, chẳng hạn như được cung cấp bởi TCP Về khảnăng, nó có thể cung cấp các dịch vụ bảo mật cho các giao thức ứng dụng tùy
ý dựa vào TCP chứ không chỉ HTTP Thực tế, một ưu điểm chính của cácgiao thức bảo mật lớp vận chuyển (Transport layer) nói chung và giao thứcSSL nói riêng là chúng độc lập với ứng dụng theo nghĩa là chúng có thể được
sử dụng để bảo vệ bất kỳ giao thức ứng dụng được xếp lớp lên trên TCP mộtcách trong suốt Hình 1 minh họa một số giao thức ứng dụng điển hình baogồm NSIIOP, HTTP, FTP, Telnet, IMAP, IRC, và POP3 Tất cả chúng có thểđược bảo vệ bằng cách xếp lớn chúng lên trên SSL (mẫu tự S được thêm vàotrong các từ ghép giao thức tương ứng chỉ định việc sử dụng SSL) Tuy nhiên,chú ý rằng SSL có một định hướng client-server mạnh mẽ và thật sự khôngđáp ứng các yêu cầu của các giao thức ứng dụng ngang hàng
Trang 17Cấu trúc của SSL và giao thức SSL
Hình 1 Cấu trúc của SSL
Tóm lại, giao thức SSL cung cấp sự bảo mật truyền thông vốn có ba đặc tính cơ bản:
Các bên giao tiếp (nghĩa là client và server) có thể xác thực nhau bằng cách sửdụng mật mã khóa chung
Sự bí mật của lưu lượng dữ liệu được bảo vệ vì nối kết được mã hóa trong suốt saukhi một sự thiết lập quan hệ ban đầu và sự thương lượng khóa session đã xảy ra
Tính xác thực và tính toàn vẹn của lưu lượng dữ liệu cũng được bảo vệ vì cácthông báo được xác thực và được kiểm tra tính toàn vẹn một cách trong suốt bằngcách sử dụng MAC
Tuy nhiên, điều quan trọng cần lưu ý là SSL không ngăn các cuộc tấn công phântích lưu lượng Ví dụ, bằng cách xem xét các địa chỉ IP nguồn và đích không được mã hóa
và các số cổng TCP, hoặc xem xét lượng dữ liệu được truyền, một người phân tích lưulượng vẫn có thể xác định các bên nào đang tương tác, các loại dịch vụ đang được sửdụng, và đôi khi ngay cả dành được thông tin về các mối quan hệ doanh nghiệp hoặc cánhân Hơn nữa, SSL không ngăn các cuộc tấn công có định hướng dựa vào phần thực thiTCP, chẳng hạn như các cuộc tấn công làm tràn ngập TCP SYN hoặc cưỡng đoạt session
Trang 18Để sử dụng sự bảo vệ SSL, cả client lẫn server phải biết rằng phía bên kia đang sử dụng SSL Nói chung, có ba khả năng để giải quyết vấn đề này:
Sử dụng các số cổng chuyên dụng được dành riêng bởi Internet Asigned Numbers Authority (IANA) Trong trường hợp này, một số cổng riêng biệt phải được gán cho mọi giao thức ứng dụng vốn sử dụng SSL
Sử dụng số cổng chuẩn cho mọi giao thức ứng dụng và để thương lượng các tùy chọn bảo mật như là một phần của giao thức ứng dụng (bây giờ được chỉnh sửa đôichút)
Sử dụng một tùy chọn TCP để thương lượng việc sử dụng một giao thức bảo mật, chẳng hạn như SSL trong suốt giai đoạn thiết lập nối kết TCP thông thường
Sự thương lượng dành riêng cho ứng dụng của các tùy chọn bảo mật (nghĩa là khảnăng thứ hai) có khuyết điểm là đòi hỏi mọi giao thức ứng dụng được chỉnh sửa để hiểutiến trình thương lượng Ngoài ra, việc xác định một tùy chọn TCP (nghĩa là khả năng thứba) là một giải pháp tốt, nhưng đó không được thảo luận nghiêm túc cho đến bây giờ.Thực tế, các số cổng riêng biệt đã được dành riêng và được gán bởi IANA cho mọi giaothức ứng dụng vốn có thể chạy trên SSL hoặc TLS (nghĩa là khả năng thứ nhất) Tuynhiên, hãy chú ý việc sử dụng các số cổng riêng biệt cũng có khuyết điểm là đòi hỏi hainối kết TCP nếu client không biết những gì mà server hỗ trợ Trước tiên, client phải nốikết với cổng an toàn và sau đó với cổng không an toàn hay ngược lại Rất có thể các giaothức sau này sẽ hủy bỏ phương pháp này và tìm khả năng thứ hai Ví dụ, SALS (SimpleAuthentication và Security Layer) xác định một phù hợp để thêm sự hỗ trợ xác thực vàocác giao thức ứng dụng dựa vào kết nối Theo thông số kỹ thuật SALS, việc sử dụng các
cơ chế xác thực có thể thương lượng giữa client và server của một giao thức ứng dụng đãcho
Các số cổng được gán bởi IANA cho các giao thức ứng dụng vốn chạy trênSSL/TLS được tóm tắt trong bảng 1 và được minh họa một phần trong hình 1 Ngày nay,
"S" chỉ định việc sử dụng SSL được thêm (hậu tố) nhất quán vào các từ ghép của các giaothức ứng dụng tương ứng (trong một số thuật ngữ ban đầu, S được sử dụng và được thêmtiền tố một cách không nhất quán và một số từ ghép)
Trang 19Bảng 1 Các số cổng được gán cho các giao thức ứng dụng chạy trên TLS/SSL.
Ftps-data 989 FTP (dữ liệu) trên TLS/SSL
Nói chung, một session SSL có trạng thái và giao thức SSL phải khởi tạo và duy trìthông tin trạng thái ở một trong hai phía của session Các phần tử thông tin trạng tháisession tương ứng bao gồm một session ID, một chứng nhận ngang hàng, một phươngpháp nén, một thông số mật mã, một khóa mật chính và một cờ vốn chỉ định việc session
có thể tiếp tục lại hay không, được tóm tắt trong bảng 2 Một session SSL có thể được sửdụng trong một số kết nối và các thành phần thông tin trạng thái nối kết tương ứng đượctóm tắt trong bảng 3 Chúng bao gồm các tham số mật mã, chẳng hạn như các chuỗi bytengẫu nhiên server và client, các khóa mật MAC ghi server và client, các khóa ghi server
và client, một vector khởi tạo và một số chuỗi Ở trong hai trường hợp, điều quan trọngcần lưu ý là các phía giao tiếp phải sử dụng nhiều session SSL đồng thời và các session có
nhiều nối kết đồng thời.
Trang 20Bảng 2 Các thành phần thông tin trạng thái Session SSL
Session ID Định danh được chọn bởi server để nhận
dạng một trạng thái session hoạt động hoặc
có thể tiếp tục lại
Peer certificate Chứng nhân X.509 phiên bản 3 của thực thể
ngang hàng
Compression method Thuật toán dừng để nén dữ liệu trước khi mã hóa
Cipher spec Thông số của các thuật toán mã hóa dữ liệu
và MAC
Master secret Khóa mật 48-byte được chia sẻ giữa client
và server
Is resumable Cờ vốn biểu thị session có thể được sử dụng
để bắt đầu các nối kết mới hay không
Bảng 3 Các thành phần thông tin trạng thái nối kết SSL
Ngẫu nhiên server và client
Các chuỗi byte được chọn bởi server và client cho mỗi nối kết
Khóa mật MAC ghi server
Khóa mật được sử dụng cho các hoạt động MAC trên dữ liệu được ghi bởi server
Khóa mật MAC ghi client
Khóa mật được sử dụng cho các hoạt động MAC trên dữ liệu được ghi bởi client
Khóa ghi server Khóa được sử dụng cho việc mã hóa dữ liệu bởi server và giải mã bởi client
Khóa ghi client Khóa được sử dụng để mã khóa dữ liệu bởi client và giải mã bởi server
Initialization vector
Trạng thái khởi tạo cho một mật mã khối trong chế độ CBC Trường này được khởi tạo đầu tiên bởi SSL Handshake Player Sau
đó, khối text mật mã sau cùng từ mỗi bản ghi được dành riêng để sử dụng vởi bản ghi sau đó
Trang 21Số chuỗi Mỗi phía duy trì các số chuỗi riêng biệt cho
các thông báo được truyền và được nhận chomỗi nối kết
1 Giao thức SSL Record
SSL Record Protocol cung câp 2 dịch vụ cho kết nối SSL:
Confideniality (tính cẩn mật): Handshake Protocol định nghĩa 1 khóa bí mật đượcchia sẽ, khóa này được sử dụng cho mã hóa quy ước các dữ liệu SSL
Message integrity (tính toàn vẹn thông điệp): Handshake protocol cũng định nghĩa
1 khóa bí mật được chia sẻ, khóa này được sử dụng để hình thành MAC (mã xácthực message)
Hình sau sẽ chỉ ra toàn bộ hoạt động của SSL RecordProtocol SSL Record Protocol nhận message ứng dụng sắp đượctuyền đi, phân mảnh dữ liệu thành nhiều block, nén dữ liệu 1 cáchtùy chọn, áp dụng vào một MAC, mã hóa, thêm vào header, vàtruyền khối kết quả thu được trong 1 segment TCP Dữ liệu nhậnđược được giải mã, kiểm tra, giải nén, sắp xếp lại và phân phối đếnngười sử dụng ở lớp cao hơn
Trang 22Hình 2 Hoạt động của SSL Record Protocol
Bước đầu tiên là phần mảnh Mỗi message của lớp bên trên được
phân mảnh thành các block, mỗi block là 214 byte (16384 byte) hoặc
ít hơn
Tiếp theo, nén được áp dụng 1 cách tùy chọn Nén phải là không
mất mát thông tin và có thể không làm tăng chiều dài nội dung nhiềuhơn 1024 byte (Dĩ nhiên, người ta mong muốn nén làm co lại dữ liệuhơn là nới rộng dữ liệu Tuy nhiên, với những block ngắn, có thể, dođịnh dạng quy ước, thuật toán nén thực sự làm cho output dài hơninput) Trong SSLv3 ( cũng như phiên bản hiện tại của TLS), không
có thuật toán nén nào được chỉ rõ, vì vậy thuật toán nén mặc định lànull
Bước xử lí kế tiếp theo là tính toán MAC (mã xác thực message)
trên dữ liệu đã được nén Để thực hiện cần dùng đến 1 khóa bí mậtđược chia sẻ Phép tính được định nghĩa như sau:
Hash(MAC_write_secret||pad_2||hashI(MAC_write_secret||pad_1||seq_num||SSLCompressed.type||SSLCompressed.legth||
SSLCompressed.fragment))Trong đó:
|| : phép nối/ hoặc
MAC_write_secret: khóa bí mật được chia sẻ
Hasd: thuật toán băm mã hóa, MD5 hoặc SHA-1
Pad_1: byte 0x36 (00110110) được lặp lại 48 lần (384 bit) cho MD5 và 40 lần (320bit) cho SHA-1
Seq_num: sequence number cho message này
SSLCompressed.type: giao thức ở lớp trên được dùng để xử lí phân mảnh này
SSLcompressed.length: chiều dài của phân mảnh đã được nén
SSLCompressed.fragment: phân mảnh đã được nén (nếu nén không được dùng,phần mảnh ở dạng plaintext)
Chú ý rằng, cái này tương tự như thuật toán HMAC Điểmkhác biệt alf 2 phần đệm (pad) được || trong SSLv3 và được XOR
Trang 23trong HMAC Thuật toán MAC trong SSLv3 được dựa trên bànohacs thảo Internet ban đầu cho HMAC Phiên bản gần nhất củaHMAC được định nghĩa trong RFC 2104, sử dụng XOR.
Kế tiếp, message đã nén cộng thêm MAC được mã hóa theo phương pháp mã hóa đối xứng Mã hóa có thể không làm tăng
chiều dài nội dung hơn 1024 byte, vì vậy chiều dài tổng cộng khôngvượt quá 214 + 2048 Các thuật toán mã hóa sau được cho phép:
Bảng 4 Các thuật toán mã hóaBlock cipher (Mã
hóa khối)
Stream cipher (Mãhóa luồng)
Thuậttoán
Kíchthướckhóa
Thuậttoán
KíchthướckhóaA
ES
128,192,256
RC4-40
40
IDEA
128
RC4-12
128
Trang 24C2-40
40
DES-40
40
DES
56
3DES
168
Fortezza
80
Fortezza có thể được sử dụng trong mục tiêu mã hóa smart card
Với mã hóa stream (luồng), meassge đã nén cộng thêm MACđược mã hóa Chú ý rằng MAC được tính toán trước hi mã hóa xảy
ra và MAC được mã hóa cùng với plaintext hoặc là plaintext đã nén.Với mã hóa block (khối), Mac có thể được đệm thêm trướckhi mã hóa Phần đệm thêm (padding) có dạng gồm nhiều byte đệmđược theo sau bởi 1 byte chỉ rõ chiều dài của phần đệm Tổng sốlượng đệm vào là lượng nhỏ nhất sao cho tổng kích thước dx liệuđược mã hóa (plaintext + MAC + padding) là 1 bội số của chiều dàukhối mã hóa, Ví dụ, plaintext (hoặc text đã nén nếu nén được dùng)
Trang 25là 58 byte, với MAC là 20 byte (dùng SHA-1), được mã hóa vớichiều dài bội của 8,1 byte đệm được thêm vào.
Bước cuối cùng của xử lí SSL Record Protocol là gắn thêm vào 1header, bao gồm các mục sau:
Content Type (8 bit): giao thức lớp trên được dùng để xử lí phân mảnh đi kèm
Major Version (8 bit): chỉ ra phiên bản SSL tối đa được dùng Ví dụ, SSLv3, giá trịnày là 3
Minor Version (8 bit): chỉ ra phiên bản tối thiểu được dụng Ví dụ, SSLv3, giá trịnày là 0
Compressed Length (16 bit): chiều dài theo byte của phân mảnh plaintext (hoặcchiều dài theo byte cyar phân mảnh đã nén nếu nén được dùng) Giá trị lớn nhất là
214 + 2048
Các loại nội dung được định nghĩa là change_cipher_spec,alert, handshake, và application_data Ba cái đầu tiên là các giaothức đặc trưng_- SSL, được bàn đến trong phần kế tiếp Chú ý rằngkhông có sự khác biệt nào được tạo ra giữa các ứng dụng (nhưHTTP…) có thể dùng SSL, nội dung dữ liệu được tạo ra bởi các ứngdụng đó thì không trong suốt đối với SSL
yte+0
s 1-4
(Major)
Trang 26s 5
1)Byte
Padding (block ciphers only)
Content types Versions
ype
MajorVersion Minorversion Version Type
hangeCipherSpec
lert
1.0
andshake
1.1
Trang 271.2
2 Giao thức SSL change cipher spec
Giao thức SSL Change Cipher Spec là giao thức đơn giản nhấttrong ba giao thức đặc trưng của SSL mà sử dụng giao thức SSLRecord Giao thức này bao gồm một message đơn 1 byte giá trị là 1.Mục đích chính của message 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 cập nhật lại bộ mãhóa để sử dụng trên kết nối này
yte+0
Byte
s 5
CCSprotoc
Trang 283 Giao thức SSL Alert
Giao thức SSL Alert được dùng để truyền cảnh báo liên kếtSSL với đầu cuối bên kia Như những ứng dụng khác dử dụng SSL,alert messages được nén và mã hóa, được chỉ định bởi trạng tháihiện tại
Mỗi message trong giao thức này gồm 2 bytes Byte đầu tiêngiữ giá trị cảnh báo (1) hoặc nguy hiểm (2) để thông báo độ nghiêmngặt của message Nếu mức độ là nguy hiểm, SSL lập tức chấp dứtkết nối Những kết nối cùng phiên khác vẫn có thể tiếp tục nhưng sẽkhông kết nối nào khác trên phiên này được khởi tạo thêm, Byte thứhai chứa một mã chỉ ra cảnh báo đặc trưng Đầu tiên, chúng ta liệt kênhững cảnh báo đó mà luôn ở mức nguy hiểm (được định nghĩa từnhững thông số SSL):
không thể giải nén hoặc giải nén lớn hơn độ dài tối đa cho phép)
Handshake_failure: Bên gửi không thể thương lượng một bộ chập nhận được của
các thông số bảo mật được đưa ra từ những lựa chọn có sẵn
Illegal_parameter: Một trường trong một handshake message thì vượt khỏi dãy
hoặc trái với những trường khác
Phần còn lại của cảnh báo thì như sau:
Close_notify: Thông báo cho bên nhận rằng bên gửi sẽ không gửi thêm message
não nữa trong kết nối này Mỗi nhóm thì được yêu cầu gửi một close_notify cảnhbáo trước khi kết thúc phần ghi của một kết nối
No_certificate: Có thể được gửi để trả lời cho một yêu cầu certificate nếu không
Trang 29 Certificate_revoked: Certificate đã bị thu hồi bởi nhà cung cấp.
Certificate_expired: Certificate đã hết hạn đăng ký.
Certificate_unknown: Một số phát xinh không nói rõ xuất hiện trong quá trình xử
lý certificate làm cho nó không thể chấp nhận
yte+0
Byte
Byte0
escrpti
Trang 30onBytes
1 4
Version
Length
elloRequest
lientHelloBytes
5 8 Messagetype Handshakemessage
data length
erverHello
ertifi
Trang 31data
erverKeyExchangex
ertificateRequestBytes
n (n+3) Messagetype Handshakemessage
data length
er
Trang 32ertificateVerifyBytes
data
lientKeyExcha
Trang 33inished
Phần “khó nuốt” nhất của SSL là giao thức Handshake Giaothức này cho phép server và client chứng thực với nhau và thươnglượng cơ chế mã hóa, thuật toán MAC và khóa mật mã được sửdụng để bảo vệ dữ liệu được gửi trong SSL record Giao thức SSLHandshake thường được sử dụng trước khi dữ liệu của ứng dụngđược truyền đi
Giao thức SSL Handshake bao gồm một loạt những messagetrao đổi giữa client và server Mỗi message có ba trường:
Type (1 byte) : chỉ ra một trong mười dạng message
Length (3 bytes) : độ dài của message theo bytes
Content (>=0 bytes) : tham số đi kèm với message này, được liệt kê trong Bảng 5
Bảng 5 Các kiểu message giao thức SSL handshake
Trang 34Certificate_request Type, authorities
Client_key_excha
Trang 35Hình 3 Thể hiện trao đổi lúc ban đầu cần được thiết lập một kết nối logic giữa client và
server Việc trao đổi có thể xem như có bốn giao đoạn.
Giai đoạn 1 – Thiết lập khả năng bảo mật:
Trang 36Giai đoạn này được dùng để bắt đầu một kết nối logic và thiếtlập khả năng bảo mật mà sẽ liên kết với nó Việc trao đổi thì đượckhởi tạo bởi client bằng việc gửi một client_hello message vớinhững thông số sau đây:
Version: version SSL mới nhất mà client biết:
Random: một cấu trúc sinh ra ngẫu nhiên từ client, bao gồm một nhãn thời gian 32bit và 28 bytes sinh bởi một bộ sinh số ngẫu nhiên an toàn Những giá trị này phục
vụ cho lần này và sử dụng suốt quá trình trao đổi khóa để ngăn tấn công lặp lại
Session ID: một ID của phiên có chiều dài thay đổi được Session ID khác 0 nghĩa
là client muốn cập nhật tham số của một kết nối đang tồn tại hay tạo một kết nốimới trên phiên này Session ID = 0 chỉ ra rằng client muốn thiết lập một kết nốimới trên một phiên mới
CipherSuite: đây là 1 danh sách mà chứa những bộ biên dịch của những thuật toán
mã hóa được hỗ trợ bởi client, tham khảo theo thứ tự giảm dần Mỗi thành phầntrong danh sách (mỗi bộ mã hóa) định nghĩa cả một khóa trao đổi và mộtCipherSpec, những thông số này sẽ được bàn đến sau
Compression Method: đây là danh sách của những phương thức nén mà client hỗtrợ
Sau khi gửi client_hello message,client chờ nhận server_hellomessage mà chứa cùng thông số với client_hello message Vớiserver_hello message, những thỏa thuận kèm theo được áp dụng.Trường Version chứa version thấp hơn được đề nghị bởi client vàcao nhất được hỗ trợ bởi server Trường Random được sinh ra bởiServer và độc lập với trường Random của client Nếu trườngSessionID của client khác 0, thì giá trị tương tự được dùng bởiserver,ngược lại thì trường SessionID của serverr chứa giá trị củamột phiên mới Trường CipherSuite chưa bộ mã hóa chọn bởi server
từ những đề xuất của client Trường compression chứa phương thứcnén chọn bởi server từ những đề xuất của client
Thành phần đầu tiên của thông số Cipher Suite là phương thứctrao đổi khóa (ví dụ như bằng cách nào những khóa mã hóa cho việc
mã hóa thông thường và MAC được trao đổi) Những phương thứctraid dổi kháo sau được hỗ trợ:
Trang 37 RSA: kháo bí mật được mã hóa với khóa công khai RSA của bên nhận Mộtpublic_key certificate cho khóa bên nhận phải được tạo sẵn.
Fixed Diffie_Hellman: đầy là sự trao đổi khóa Diffie-Hellman trong certificate củaserver chứa các thông số công khai Diffie-Hellman được ký bởi CertificateAuthority (CA) Nghĩa là certificate khóa công khai chứa các thông số khóa côngkhai Diffie-Hellman Client chứa sẵn các thông số khóa công khai Diffie-Hellman
đó trong certifficate nếu chứng thực client được yêu cầu hoặc trong một messagetrao đổi khóa Phương thức này mang lại kết quả một khóa bí mật cố định giữa haiđầu, dựa trên tính toán Diffie-Hellman sử dụng khóa công khai cố định
Ephenmeral Diffie-Hellman: Phương pháp đước ử dụng để tạo khóa ”ephemeral”(tạm thời,1 lần)- khóa tạm thời Trong trường hợp này, khóa công khai Diffie-Hellman được trao đổi, được ký sr dụng khóa bí mật RSA hoặc DSS của bên gửi.Bên nhận có thể sử dụng khóa công khai tương ứng để xác minh chữ ký.Certificate được sử dụng để xác thực khóa công khai Điều này như là sự bảo đảmnhất của ba lựa chọn Diffie-Hellman bởi vì nó là kết quả của sự tạm thời và khóaxác thực
Anonymous Diffie-Hellman: thuật toán Diffie-Hellman cơ bản được sử dụng,không chứng thực Nghĩa là mỗi lần một bên gửi thông số Diffie-Hellman côngkhai của nó cho bên kia thì không xác thực Điều này gần như là có thể bị tấn côngMan-in-middle, trong đó kẻ tấn công điều khiển cả nhóm anonymous Diffie-Hellman
Fortezza: phương pháp định nghĩa cho lược đồ Fortezza
Định nghĩa kèm theo cho một phương pháp trao đổi khóa làCipherSpec, bao gồm những trường sau:
CipherAlgorithm: một vài thuật toán kế đến: RC4, RC2, DES, 3DES, DES40,IDEA, Fortezza
MACAlgorithm: MD5 hoặc SHA-1
CipherType: luồng hoặc khối
IsExportable: True hoặc False
HashSize: 0,16(cho MD5), hay 20 (cho SHA-1) bytes
Key Material: thứ tự của các bytes mà chứa dữ liệu được dùng trong sinh khóa
IV Size: kích thước của giá trị khởi tạo cho mã hóa Cipher Block Chaining (CBC)
Giai đoạn 2- Xác thực server và trai đổi khóa:
Trang 38 Server bắt đầu giai đoạn này bằng cách gửi certificate của nó nếu nó cần được xácthực; thông điệp chứa một hoặc một chuỗi certificate (chứng thực) X.509 Thôngđiệp chứng thực được yêu cầu cho bất kì một phương pháp trao đổi kháo nào đượcthỏa thuận, ngoại trừ anonymous Diffie-Hellman Chú ý rằng nếu fixed Diffie-Hellman được dùng, thì thông điệp chứng thực có chức năng như là thông điệp traođổi khóa của server vì nó chứa các tham số Diffie-Hellman công khai của server.
Sau đó một thông điệp server_key_exchange được gửi đi nếu nó được yêu cầu Nókhông yêu cầu trong 2 trường hợ sau:
- (1) Server đã gửi mọt certificate với các tham số fixed Diffie-Hellman.
- (2) Trao đổi khóa RSA được dùng.
Thông điệp server_key_exchange cần cho các trường hợp sau:
Anonymous Hellman: Nội dung thông điệp bao gồm hai giá trị Hellman toàn cục (một số nguyên tố và một số nguyên tố cùng nhau với số đó)cùng với khóa Diffie-Hellman của server
Diffie- Ephemeral Hellman: Nội dung thông điệp bao gồm 3 tham số Hellman cung cấp cho anonymous Diffie-Hellman, cùng với một chữ kí của cáctham số này
Diffie- Trao đổi khóa RSA, mà theo đó server sử dụng RSA nhưng có một khóa bí mậtđược mã hóa với khóa công khai/bí mật RSA phụ và sử dụng thông điệpserver_key_exchanged để gửi khóa công khai Nội dung thông điệp bao gồm haithám ố của khóa công khai RSA phụ(số mũ và số dư) cùng với một chữ ký của cáctham số này
Fortezza: một vài chi tiết thêm về chữ kí được đảm bảo Như thường lệ, một chữ kíđược tạo ra bởi việc lấy mã băm của một thông điệm và mã hóa nó với khóa bí mậtcủa bên gửi
Trong trường hợp này mã băm được định nghĩa:
Hash (ClientHello.random||ServerHello.random||Serverparams)
Vì vậy mã băm bao gồm không chỉ các thông số Hellman hay RSA, mà còn có hai số ngẫu nhiên từ thông điệp hellokhởi tạo, Điều này đảm bảo chống lại tấn công replay vàmisrepresentation(giả dạng) Trong trường hợp chữ kí DSS, mã bămđược biểu diễn sử dụng giải thuật SHA-1
Trang 39Diffie-Trong trường hợp chữ kí RSA, cả mã băm MD5 và Sha-1 đều đượctính toán, và sự nối nhau của hau mã băm (36 byte) được mã hóa vớikhóa bí mật của server.
Kế đến, một nonanonymous server(server không dùng anonymous Diffie-Hellman)
có thể yêu cầu một certificate_authorities Kiểu certificate chỉ ra giải thuật khóacông khai, và nó dùng;
- RSA, chỉ dùng chữ kí
- DSS, chỉ dùng chữ kí
- RSA cho Diffie-Hellman thích hợp, trong trường hợp này chữ kí được dùng
chỉ để xác thực, bằng cách gửi dùng certificate được kí với RSA
- DSS cho fixed Diffie-Hellman, một lần nữa, chỉ dùng đễ xác thực.
- RSA cho ephemeral Diffie-Hellman
- DSS cho ephemeral Diffie-Hellman
- Fortezza.
Thông số thứ 2 của thông điệp certificate_request là một danhsách các tên của những CA đặc biệt được chấp nhận Thông điệpcuối cùng trong giai đoạn 2, và là một phần luôn được yêu cầu, làthông điệp Server_done, mà được gửi cho server để chỉ ra điểm cuốicủa thông điệp cuối của server_hello và các message đi kèm Sau khigửi thông điệp, server dẽ chờ hồi đáp của client Thông điệp nàykhông có tham số
Giai đoạn 3 – Xác thực client và trao đổi khóa :
Trong khi nhận thông điệp server_done,client sẽ xác nhận xem server cung cấpmột chứng chỉ hợp lệ hay chưa nếu được yêu cầu và kiểm tra xem các thông số củaserver_hello được chấp nhận hay không Nếu tất cả đều thỏa mãn, client gửi mộthay nhiều message trở lại cho server Nếu server yếu câu một certificate,client bắtđầu giai đoạn này bằng cách gửi 1 thông điệp certificate Nếu không có certificatephù hợp vào hợp lệ, client gửi một cảnh báo no_certificate thay thế
Kế đến là thông điệp client_key_exchange phải được gửi đi trong giai đoạn này.Nội dung của thông điệp phụ thuộc vào kiểu trao đổi khóa Như sau:
- RSA: client sinh một trường 48 byte pre-master secret và mã hóa với khóacông khai từ chứng của server hoặc khóa RSA phụ từ thông điệp
Trang 40server_key_exchange Nó dùng để tính toán một master secret (sẽ được nóisau).
- Ephemeral hoặc Anonymous Diffie-Hellman: các tham số Diffie-hellmancông khai của client được gửi đi
- Fixed Diffie-Hellman: các tham số Diffie-Hellman công khai của clientđược gửi đi trong một thông điệp certificate, vì vậy nội dung của thông điệp
là null
- Fortezza: các tham số Foftezza của client được gửi đi
Cuối cùng, trong giai đoạn này, client sẽ gửi 1 message certificate_verify để cungcấp xác thực tường minh của một chứng chỉ client Thông điệp này chỉ được gửitheo sau bất kì một cliet certificate nào đã đánh dấu là có khả năng (nghĩa là tất cảcertificate ngoại trừ những cái chứa tham số fixed Diffie-Hellman) Thông điệpnày đánh dấu một mã băm dựa trên các thông điệp có trước, được định nghĩa nhưsau:
CertificateVerify.signature.md5_hash
MD5(master_secret||pad_2||MD5(handshake_message||master_secret||pad_1)):CertificateVerify.signature.md5_hash
Trong trường hợp khác, mục đích là để xác minh quyền sở hữu của client với khóa
bí mật cho chứng thực client Cho dù là bất cứ ai đang lạm dụng certificate củaclient thì cũng sẽ không thể gửi message này
Giai đoạn 4 – Kết thúc:
Giai đoạn này hoàn thành thiết lập của một kết nối an toàn, Client gửu một thôngđiệp change_cipher_spec và chép CipherSpec đệm vào CipherSpec hiện tại Chú ýrằng thông điệp này không được xem là một phần của giao thức bắt tay nhưngđược gửi đi sử dụng giao thức Change Cipher Spec Client sau đó ngay lập tức gửi