Handshake Protocol là một phần quan trọng của SSL, nó cho phép client/server thống nhất về phiên bản SSL sử dụng, xác thực mỗi bên bằng cách thi hành một MAC mã xác thực thông điệp, thoả
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đặng Thị Huê
NGHIÊN CỨU SỬ DỤNG CÔNG NGHỆ BẢO MẬT
SSL/TLS
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành : Công nghệ thông tin
Cán bộ hướng dẫn: PGS.TS Trịnh Nhật Tiến
HÀ NỘI - 2005
Trang 2Lời cảm ơn
Em xin gửi lời cảm ơn chân thành tới thầy giáo hướng dẫn PGS.TS Trịnh
Nhật Tiến đã tận tình hướng dẫn, cho em những định hướng và ý kiến quý báu cùng
sự trực tiếp chỉ bảo của chị Trương Thị Thu Hiền đã giúp em hoàn thành tốt luận văn
tốt nghiệp
Em chân thành cảm ơn tất cả các thầy cô trong Trường Đại Học Công Nghệ -
Đại Học Quốc Gia Hà Nội đã nhiệt tình giảng dạy và giúp đỡ em trong quá trình học
tập tại trường
Con xin gửi đến Bố Mẹ và gia đình tình thương yêu và lòng biết ơn Bố Mẹ
và gia đình luôn là nguồn động viên của con và là chỗ dựa vững chắc cho cuộc đời
con Tôi xin cảm ơn các bạn cùng lớp đã động viên và giúp đỡ tôi trong thời gian thực
hiện luận văn này
Vì thời gian có hạn, khoá luận tốt nghiệp của em không tránh khỏi khiếm
khuyết Rất mong nhận được sự góp ý của thầy cô và các bạn
Hà Nội, ngày 06 tháng 06 năm 2005
Đặng Thị Huê
Trang 3Tóm tắt
Đượ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, SSL (Secure Sockets Layer) 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 SSL là điều cần thiết Tuy nhiên đến nay hầu hết các website ở Việt Nam đều chưa sử dụng SSL trong các giao dịch của mình Trong khoá luận này, em tiến hành nghiên cứu chi tiết về giao thức bảo mật SSL và cách triển khai chúng trên Internet Information Service (IIS) và Windows Server Enterprise 2003 Chúng tôi hy vọng rằng với khoá luận này sẽ đem đến cái nhìn cụ thể hơn về SSL 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 4MỤC LỤC
Chương 1 MỘT SỐ VẤN ĐỀ VỀ BẢO MẬT 5
1.1 Vấn đề an toàn mạng 5
1.1.1 Giao thức bảo mật ngăn cách (tách rời) 5
1.1.2 Bảo mật đặc tả ứng dụng 6
1.1.3 Bảo mật với các giao thức trung tâm 7
1.1.4 Giao thức bảo mật song song 8
1.2 Vấn đề mã hoá 9
1.2.1 Khái niệm mã hoá 9
1.2.2 Hệ mã hoá đối xứng 10
1.2.3 Hệ mã hoá phi đối xứng 10
1.2.4 Chứng chỉ khoá công khai 11
1.3 Vấn đề ký số 12
1.4 Vấn đề xác thực số 13
Chương 2 KHE CẮM AN TOÀN (SSL) 16
2.1 Tổng quan về SSL 16
2.1.1 Lịch sử SSL 16
2.1.2 Cơ bản về SSL 16
2.1.3 SSL và ứng dụng thương mại điện tử 19
2.2 Giao thức bản ghi (Record Protocol) 20
2.3 Giao thức ChangeCipherSpec 23
2.4 Giao thức cảnh báo (Alert Protocol) 23
2.4.1 Kiểu Closure Alert 24
2.4.2 Kiểu Error Alert 24
2.5 Giao thức bắt tay (Handshake Protocol) 25
2.5.1 Giai đoạn 1 : Các thông điệp Hello cho kết nối logic 28
• 1 Thông điệp HelloRequest 28
• 2 Thông điệp ClientHello 28
Trang 5• 4 Thông điệp ServerCertificate 30
• 5 Thông điệp ServerKeyExchange 32
• 6 Thông điệp CertificateRequest 34
• 7 Thông điệp ServerHelloDone 36
2.5.3 Giai đoạn 3 : Xác thực Client và trao đổi khoá 36
• 8 Thông điệp ClientCertificate 36
• 9 Thông điệp ClientKeyExchange 37
• 10 Thông điệp CertificateVerify 38
2.5.4 Giai đoạn 4 : Kết thúc kết nối bảo mật 40
• 11 Thông điệp ChangeCipherSpec 40
• 12 Thông điệp Finished 41
2.5.5 Xác thực Server, xác thực client 42
2.5.5.1 Xác thực Server 42
2.5.5.2 Xác thực Client 43
2.6 Bảo mật của SSL 45
2.6.1 Các hệ mã hoá sử dụng với SSL 45
2.6.2 Bảo mật của SSL 46
2.7 Ưu điểm và hạn chế của SSL/TLS 48
2.7.1 Ưu điểm của SSL 48
2.7.2 Hạn chế của SSL 49
2.7.2.1 Các giới hạn giao thức cơ bản 49
2.7.2.2 Giới hạn công cụ 51
2.7.2.3 Các giới hạn môi trường 51
2.7.3 Tối ưu hoá SSL 52
2.7.3.1 Công nghệ tăng tốc giao dịch SSL 53
2.7.3.2 Tăng tốc SSL với vấn đề duy trì website (Web site persistence) 55
2.7.3.3 Tăng tốc SSL và content switch 55
2.7.3.4 Quá trình phát triển của bộ tăng tốc SSL 56
2.7.3.5 Bộ tăng tốc SSL của SonicWALL 56
2.7.3.6 Các đặc điểm nổi bật và lợi ích của SonicWALL SSL Offloader 57
2.7.3.7 Các phương án triển khai 59
Chương 3 BẢO MẬT TẦNG GIAO VẬN (TLS) 61
3.1 Giới thiệu tổng quan 61
Trang 63.2 Thông điệp giao thức cảnh báo 62
3.3 Xác thực thông điệp 63
3.4 Sinh nguyên liệu khoá 64
3.5 Xác nhận chứng chỉ 67
3.6 Thông điệp Finished 67
3.7 Các bộ mã cơ sở 68
Chương 4 SỬ DỤNG GIAO THỨC SSL/TLS 69
Tài liệu tham khảo 77
Trang 7Danh sách hình vẽ
Hình 1 Vị trí SSL trong mô hình giao thức bảo mật tách rời 5
Hình 2 Bảo mật có thể được gắn trực tiếp vào giao thức ứng dụng 6
Hình 3 IPSec 7
Hình 4 Giao thức ứng dụng sử dụng Kerberos 8
Hình 5 SSL tính toán một mã thông điệp 14
Hình 6 Vị trí SSL trong mô hình OSI 17
Hình 7 Vị trí giao thức bản ghi trong giao thức SSL 21
Hình 8 Các giai đoạn thi hành của giao thức bản ghi 21
Hình 9 Cấu trúc một thông điệp SSL Record 22
Hình 10 Thông điệp ChangeCipherSpec 23
Hình 11 Định dạng thông điệp Alert 24
Hình 12 Vị trí giao thức bắt tay 25
Hình 13 Tiến trình bắt tay 26
Hình 14 Thông điệp Certificate 31
Hình 15 ServerKeyExchange mang các tham số Diffie-Hellman 32
Hình 16 ServerKeyExchange mang các tham số RSA 33
Hình 17 ServerKeyExchange sử dụng Fortezza 33
Hình 18 Server ký một hàm băm của các tham số ServerKeyExchange 34
Hình 19 Thông điệp CertificateRequest 35
Hình 20 Thông điệp ServerHelloDone 36
Hình 21 Thông điệp ClientKeyExchange với RSA 37
Hình 22 Thông điệp ClientKeyExchange với Diffie-Hellman 38
Hình 23 Thông điệp ClientKeyExchange với Fortezza 38
Hình 24 CertificateVerify 39
Hình 25 Thông điệp Finished 41
Trang 8Hình 26 Thông điệp Finish bao gồm một hàm băm 42
Hình 27 Quá trình xác thực server 43
Hình 28 Quá trình xác thực client 45
Hình 29 Một bộ tăng tốc trực tuyến 54
Hình 30 TLS sử dụng HMAC để sinh đầu ra giả ngẫu nhiên 65
Hình 31 Hàm giả ngẫu nhiên của TLS sử dụng cả MD5 và SHA 66
Hình 32 TLS sử dụng PRF để tạo ra master secret và nguyên liệu khoá 67
Hình 33 TLS sử dụng PRF cho các thông điệp Finished 68
Danh sách bảng biểu Bảng 1 Giá trị các kiểu chứng chỉ 35
Bảng 2 Sự khác biệt giữa SSL v3.0 và TLSv1.0 61
Bảng 3 Các thay đổi trong giao thức cảnh báo 62
Bảng 4 Các bước sinh một đầu ra giả ngẫu nhiên 64
Trang 9LDAP Lightweight Directory Access Protocol
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)
TCP/IP Transfer Control Protocol/Internet Protocol
TLS Transport Layer Security (Bảo mật tầng giao vận)
Trang 10Giới thiệu Nghiên cứu sử dụng công nghệ SSL/TLS
Giới thiệu
Việc kết nối giữa một Web browser tới bất kỳ đ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 kỳ 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 Web server có bất kỳ 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 mật trên mạng Internet hay bất kỳ mạng TCP/IP nào, SSL (Secure Sockets Layer) đã kết hợp những yếu tố sau để thiết lập được một giao dịch an toàn : đó là 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 SSL được tích hợp sẵn vào các browser
và Web server, cho phép người sử dụng làm việc với các trang Web ở chế độ an toàn Khi Web browser sử dụng kết nối SSL tới server, biểu tượng ổ khóa sẽ xuất hiện trên thanh trạng thái của cửa sổ browser và dòng “http” trong hộp nhập địa chỉ URL sẽ đổi thành “https” Một phiên giao dịch HTTPS sử dụng cổng 443 thay vì sử dụng cổng 80 như dùng cho HTTP.Tuy nhiên, mặt trái của SSL là làm chậm lại hiệu nǎng thực hiện của ứng dụng Mức sử dụng tài nguyên hệ thống CPU đòi hỏi trong tiến trình mã hoá
và giải mã cho một trang SSL có thể cao hơn từ 10 đến 100% so với các trang không được bình thường Nếu máy chủ có lưu lượng các trang SSL cao, có thể chúng ta phải cân nhắc tới việc sử dụng thêm một bộ tǎng tốc SSL phần cứng
Đề tài luận văn đề cập đến thuộc lĩnh vực an toàn, xác thực và bảo mật thông tin trên mạng An toàn thông tin là một yêu cầu rất quan trọng trong việc truyền dữ liệu trên mạng đặc biệt là với các giao dịch thương mại điện tử, còn xác thực là một trong những mục tiêu trọng tâm của các website học tập trực tuyến Những hậu quả do
rò rỉ thông tin gây ra là rất lớn và khó có thể lường hết được Ngày nay, dù ở Việt Nam, các nhà quản trị mạng đã bắt đầu quan tâm tới lĩnh vực này, nhưng thực sự vẫn chưa có nhiều nghiên cứu được tiến hành chi tiết và việc ứng dụng còn là rất hạn chế Với xu thế phát triển hiện nay, trên con đường hội nhập với nền công nghệ thông tin của thế giới, chúng ta cần có những hiểu biết sâu sắc và toàn diện về an toàn và bảo mật thông tin
Từ những vấn đề nêu trên, luận văn đã thực hiện việc tiến hành những nghiên cứu chi tiết về một công nghệ bảo mật và xác thực mạng hiện nay đang được sử dụng rất phổ biến là Secure Sockets Layer (SSL), giao thức bảo mật tầng giao vận Đồng
Trang 11Giới thiệu Nghiên cứu sử dụng công nghệ SSL/TLS
năng của Website Với khoá luận này, em muốn mang lại cái nhìn chi tiết hơn về công nghệ bảo mật SSL, hy vọng rằng nó sẽ được áp dụng rộng rãi ở Việt Nam trong một tương lai không xa
Nội dung khoá luận được trình bày bao gồm các phần sau :
Chương 1 trình bày một số phương pháp bảo mật mạng cùng với các khái niệm cơ bản về mã hoá, xác thực, ký số… Có bốn phương pháp bảo mật mạng Phương pháp thứ nhất là thêm vào một giao thức (SSL) giữa tầng TCP/IP và HTTP, đó
là phương pháp bảo mật mạng tách rời, nó yêu cầu những thay đổi rất nhỏ ở giao thức bên trên và bên dưới nó Phương pháp thứ hai là bảo mật đặc tả ứng dụng Phương pháp này thêm trực tiếp các dịch vụ bảo mật vào trong giao thức (Secure HTTP) Phương pháp bảo mật thứ ba là bảo mật với các giao thức trung tâm, tức là các dịch vụ bảo mật được thêm trực tiếp vào giao thức mạng trung tâm, tất cả các dịch vụ bảo mật
sẽ trở thành một phần tuỳ chọn của bản thân Internet Protocol, đây chính là kiến trúc IPSEC IPSEC cũng có rất nhiều tiện ích giống SSL, nó độc lập với giao thức ứng dụng Và phương pháp bảo mật cuối cùng là bảo mật song song Ví dụ phổ biến về phương pháp này là giao thức Kerberos Giao thức Kerberos làm việc như một bộ công cụ mà các giao thức khác có thể sử dụng cho các dịch vụ bảo mật, nhưng bản thân nó không phải là giải pháp bảo mật hoàn toàn
Chương 2 giới thiệu về hoạt động của SSL SSL là giao thức đa mục đích được phát triển bởi Netscape, có thể hỗ trợ cho rất nhiều ứng dụng SSL hoạt động bên trên TCP/IP và bên dưới các ứng dụng tầng cao hơn như HTTP, LDAP…SSL cho phép một server có hỗ trợ SSL tự xác thực với một client cũng hỗ trợ SSL, cho phép client tự xác thực với server và cho phép cả hai bên thiết lập một kết nối được mã hoá Điều này là rất quan trọng với cả hai bên khi có những giao dịch mang tính riêng tư Ngoài ra dữ liệu còn được bảo vệ nhờ cơ chế tự động phát hiện các xáo trộn hay thay đổi trong thông điệp Ngày nay, SSL được sử dụng rộng rãi như nền tảng bảo mật cho các Website bán hàng qua mạng thanh toán bằng thẻ tín dụng, các trang tài chính ngân hàng, giao dịch chứng khoán, các dịch vụ của chính phủ như thuế, an ninh xã hội, quân đội….Tuy nhiên việc triển khai SSL cũng còn nhiều hạn chế do sự bảo hộ và kiểm soát chặt chẽ của chính phủ Mỹ
Tiếp theo là mô tả cấu trúc và phương pháp làm việc của các giao thức Record Protocol, ChangeCipherSpec Protocol, Alert Protocol, Handshake Protocol
Trang 12Giới thiệu Nghiên cứu sử dụng công nghệ SSL/TLS
Record Protocol nhận dữ liệu từ tầng trên gửi xuống, phân nhỏ thành từng block, nén dữ liệu, bổ sung dữ liệu kiểm tra, mã hoá và gửi đi Khi nhận dữ liệu về tiến trình được thực hiện ngược lại : giải mã, kiểm tra, gỡ nén và sắp xếp lại rồi gửi lại cho tầng trên
ChangeCipherSpec Protocol bao gồm duy nhất một thông điệp, được sử dụng
để client báo cho server biết rằng các bản ghi sau này sẽ được bảo vệ với các bộ mã hoá và các khoá đã thoả thuận
Alert Protocol được sử dụng để báo hiệu một lỗi hay một cảnh báo xảy ra trong quá trình truyền thông giữa hai bên Cũng như các loại thông điệp khác, thông điệp Alert cũng được mã hoá và nén
Handshake Protocol là một phần quan trọng của SSL, nó cho phép client/server thống nhất về phiên bản SSL sử dụng, xác thực mỗi bên bằng cách thi hành một MAC (mã xác thực thông điệp), thoả thuận về thuật toán mã hoá và các khoá lập mã cho việc bảo vệ dữ liệu gửi đi trong một SSL Record trước khi dữ liệu được gửi
do phải chờ đợi quá lâu, họ dễ dàng bỏ sang truy cập các Website khác, hoặc nôn nóng khởi tạo lại kết nối Để khắc phục nhược điểm trên, ngoài một số phương pháp tối ưu hoá như giảm số lượng hình ảnh trên trang web, sử dụng các phần mềm tăng tốc, hiện nay hãng SonicWall đã cho ra một sản phẩm gọi là SSL Accelerator hay SSL offloader dùng để tăng hiệu năng của trang Web Bộ tăng tốc SSL có thể tăng tốc độ thực hiện các giao dịch SSL lên đến 50 lần
Chương 3 tiếp tục giới thiệu về một phiên bản khác của SSLv3.0 là TLS TLS
về cơ bản là giống SSL nhưng có một số cải tiến đáng kể Trong chương này, chúng ta
sẽ chỉ đi nghiên cứu về các phần mà TLS khác với SSL như các thông điệp cảnh báo, cách xác thực thông điệp, quá trình sinh nguyên liệu khoá, xác nhận chứng chỉ, nội dung thông điệp Finished và các bộ mã được sử dụng với TLS
Trang 13Giới thiệu Nghiên cứu sử dụng công nghệ SSL/TLS
Phần cuối của luận văn là phần giới thiệu về cách cấu hình IIS và Apache sử dụng bảo mật SSL với các website
Với khoá luận này, chúng tôi muốn giới thiệu về một cơ chế bảo mật (SSL) trong thương mại điện tử, tầm quan trọng cũng như những lợi ích của nó, hy vọng sẽ mang lại một cái nhìn đúng đắn và sâu sắc hơn về vai trò của bảo mật và xác thực qua mạng cũng như xu hướng phát triển của nó trong tương lai
Trang 14Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
Chương 1 MỘT SỐ VẤN ĐỀ VỀ BẢO MẬT
1.1 Vấn đề an toàn mạng
Giao thức SSL cung cấp bảo mật hiệu quả cho các phiên giao dịch Web, nhưng nó không phải là phương pháp duy nhất Kiến trúc mạng dựa trên các tầng giao thức, mỗi tầng dựa trên các dịch vụ bên dưới chúng Có nhiều tầng giao thức khác nhau có thể hỗ trợ các dịch vụ bảo mật, và mỗi cái lại có những thuận lợi và khó khăn khác nhau Như chúng ta thấy, các nhà thiết kế ra SSL đã chọn phương pháp là tạo ra một tầng giao thức hoàn toàn mới cho việc bảo mật Nó có thể bao gồm các dịch vụ bảo mật trong giao thức ứng dụng hoặc thêm chúng vào nhân một giao thức mạng Một lựa chọn khác là các ứng dụng có thể dựa trên các giao thức song song cho một vài dịch vụ bảo mật Tất cả các tuỳ chọn này đã được đề cập đến trong việc bảo mật các giao dịch Web, và các giao thức thực tế tồn tại trong mỗi tuỳ chọn
1.1.1 Giao thức bảo mật ngăn cách (tách rời)
Các nhà thiết kế SSL quyết định tạo ra một giao thức ngăn cách cho bảo mật Trong thực tế, họ đã thêm vào một tầng trong kiến trúc giao thức của Internet
Hình 1 Vị trí SSL trong mô hình giao thức bảo mật tách rời
Bên trái hình 1 minh hoạ các giao thức trong cho các truyền thông Web Bên dưới cùng là Internet Protocol (IP) Giao thức này chịu trách nhiệm hỗ trợ định tuyến các thông điệp truyền trên mạng từ nguồn đến đích của chúng Transmission Control Protocol (TCP) dựa trên các dịch vụ của IP để bảo đảm rằng truyền thông là tin tưởng được Trên cùng là Hypertext Transfer Protocol Bên phải của hình 1, SSL thêm sự bảo mật bằng cách thực thi như một giao thức bảo mật riêng biệt, thêm nó vào giữa
Trang 15Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
các giao thức bên trên và bên dưới Giao diện ứng dụng HTTP với SSL gần giống như với TCP khi không có bảo mật
Bên cạnh việc yêu cầu những thay đổi rất nhỏ để có thể thi hành được, phương pháp này còn có những tiện ích quan trọng khác: nó cho phép SSL hỗ trợ các ứng dụng khác ngoài HTTP Mục đích chính của việc phát triển SSL là bảo mật Web, nhưng SSL cũng được sử dụng để thêm vào sự bảo mật cho các ứng dụng Internet khác, bao gồm Net News Transfer Protocol (NNTP) và File Transfer Protocol (FTP)
Hình 2 Bảo mật có thể được gắn trực tiếp vào giao thức ứng dụng
Một trong những bất lợi của việc thêm sự bảo mật vào trong một ứng dụng cụ thể là các dịch vụ bảo mật sẽ chỉ có giá trị trong ứng dụng đó Ví dụ, không giống như SSL, nó không thể bảo mật cho NNTP, FTP, hay các giao thức ứng dụng khác với Secure HTTP Một trong những bất tiện của phương pháp này còn là do nó liên kết các dịch vụ bảo mật một cách chặt chẽ với ứng dụng Mỗi khi giao thức ứng dụng thay đổi, các thi hành bảo mật phải được quan tâm cẩn thận, và các chức năng bảo mật của
Trang 16Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
giao thức phải được thay đổi thích hợp Một giao thức tách rời như SSL cách ly các dịch vụ bảo mật từ giao thức ứng dụng, cho phép mỗi dịch vụ tập chung vào giải quyết các vấn đề của riêng nó một cách có hiệu quả nhất
1.1.3 Bảo mật với các giao thức trung tâm
Phương pháp bảo mật tách rời của SSL có thể tiến thêm một bước xa hơn nếu các dịch vụ bảo mật được thêm trực tiếp vào một giao thức mạng trung tâm Đây chính
là phương pháp của kiến trúc IP Security, tất cả các dịch vụ bảo mật sẽ trở thành một phần tuỳ chọn của bản thân Internet Protocol Hình 3 thể hiện kiến trúc của IPSEC
Hình 3 IPSec
Kiến trúc của IPSEC cũng có rất nhiều tiện ích giống như SSL Nó độc lập với các giao thức ứng dụng, và bất kỳ giao thức nào cũng có thể sử dụng nó Trong phần lớn các trường hợp, ứng dụng không cần thay đổi tất cả để tận dụng được các tiện ích của IPSEC Tuy nhiên, đặc tính này tạo ra một thách thức, đó là IPSEC phải đủ linh hoạt để hỗ trợ tất cả các ứng dụng Sự phức tạp này có thể là một nhân tố lớn trì hoãn
sự phát triển và triển khai IPSEC
Một hạn chế khác của phương pháp IPSEC là nó cung cấp quá nhiều sự liên hệ giữa các dịch vụ bảo mật và ứng dụng IPSEC hướng tới việc thừa nhận rằng các yêu cầu bảo mật là một chức năng của hệ thống, và tất cả các ứng dụng bên trong hệ thống cần các dịch vụ bảo mật tương tự nhau Phương pháp SSL cung cấp sự liên hệ giữa các ứng dụng và bảo mật, nhưng nó cũng cho phép tương tác giữa cả hai Hoạt động bên trong của một ứng dụng như HTTP không cần thay đổi khi sự bảo mật được thêm vào,
Trang 17Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
đó tạo sự dễ dàng cho các ứng dụng có thể chọn các dịch vụ bảo mật phù hợp nhất với mình
Bất kể những trở ngại này, IPSEC thêm vào các công cụ bảo mật mới khá hiệu quả trên Internet, vào không còn nghi ngờ gì khi thấy sự triển khai rộng rãi của nó Tuy nhiên, giao thức SSL cũng có nhiều tiện ích quan trọng và sự triển khai của nó cũng được hy vọng sẽ tăng lên trong tương lai
1.1.4 Giao thức bảo mật song song
Ví dụ phổ biến nhất về phương pháp này là giao thức Kerberos được phát triển bởi Học viện công nghệ Massachusetts Các nhà nghiên cứu đã phát triển Kerberos cung cấp sự xác thực và điều khiển truy cập tài nguyên trong một môi trường phân tán Giao thức Kerberos làm việc như là một bộ công cụ mà các giao thức khác có thể sử dụng cho các dịch vụ bảo mật Ví dụ, một giao thức truy nhập từ xa như Telnet có thể
sử dụng Kerberos để bảo mật định danh người dùng của nó
Hình 4 Giao thức ứng dụng sử dụng Kerberos
Trong những ngày đầu phát triển trình duyệt Web, một vài thử nghiệm kết hợp việc hỗ trợ Kerberos với HTTP, mặc dù công việc này chưa bao giờ hoàn thành Thay vào đó, hiện nay có một vài thử nghiệm kết hợp Kerberos với TLS Trong các ứng dụng như vậy, Kerberos cung cấp một kỹ thuật trao đổi khoá tin tưởng cho TLS Mặc
dù chú ý rằng riêng Kerberos không thể là một giải pháp bảo mật hoàn toàn Nó không truy cập tới các thông tin thực được trao đổi bởi các tổ chức truyền thông Không có sự truy cập này, Kerberos không thể cung cấp các dịch vụ lập mã và giải mã
Trang 18Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
1.2 Vấn đề mã hoá
1.2.1 Khái niệm mã hoá
Mã hóa có lẽ là kĩ thuật được dùng lâu đời nhất trong an toàn truyền thông Hiện nay có nhiều phương pháp mã hóa khác nhau, mỗi phương pháp có ưu, nhược điểm riêng Tùy theo yêu cầu của môi trường ứng dụng mà người ta có thể lựa chọn dùng phương pháp bảo mật nào Có những môi trường cần phải an toàn tuyệt đối bất
kể thời gian và chi phí Có những môi trường lại cần giải pháp dung hòa giữa bảo mật
Trang 19Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
1.2.2 Hệ mã hoá đối xứng
Phương pháp mã hoá đối xứng còn được gọi là phương pháp mã hoá khoá bí mật Với phương pháp này thì người gửi và người nhận sẽ dùng chung một khoá để mã hoá và giải mã dữ liệu Trước khi mã hoá dữ liệu để truyền đi trên mạng thì hai bên gửi và nhận phải có khoá và phải thống nhất thuật toán dùng để mã hoá và giải mã
Nhược điểm chính của phương pháp mã hoá này là làm thế nào để hai bên gửi
và nhận có được khoá đúng vì khóa được truyền trên môi trường mạng thì không có tính bảo mật cao, nhưng nó cũng có ưu điểm là tốc độ mã hoá và giải mã rất nhanh Phương pháp này được sử dụng nhiều để truyền dữ liệu trong phiên làm việc của SSL Lập mã khoá bí mật sử dụng thuật toán mã hoá Data Encrytion Standard (DES), triple-strength (3DES), Rivest Cipher 2 (RC2), và RC4…
1.2.3 Hệ mã hoá phi đối xứng
Mã hoá phi đối xứng (hay còn gọi là mã hoá khoá công khai) đã giải quyết được vấn đề của mã hoá khoá bí mật là sử dụng hai khoá : khoá công khai (public key)
và khoá riêng (private key) Khoá công khai được gửi công khai trên mạng, trong khi
đó khoá riêng được giữ kín Khoá công khai và khoá riêng có vai trò trái ngược nhau, một khoá dùng để mã hoá và khoá kia dùng để giải mã
Giả sử B muốn gửi cho A một thông điệp bí mật sử dụng phương pháp mã hoá khoá công khai Ban đầu A có cả khoá riêng và khoá công khai A sẽ giữ khoá riêng ở nơi an toàn và gửi khoá công khai nhận được của A Sau đó A sẽ giải mã thông điệp bằng khoá riêng của mình Ngược lại nếu A muốn gửi thông điệp cho B thì A phải mã hoá thông điệp bằng khoá công khai của B
Tới đây nảy sinh vấn đề : “giả mã khoá công khai” Làm sao để A có thể tin được rằng đây là khoá công khai của B Vì một hacker (kẻ tấn công) có thể tự sinh ra một cặp khoá công khai và khoá riêng, sau đó đưa cho A khoá công khai này và nói đấy là khoá công khai của B Như thế mọi thông tin A truyền đi đều bị hacker đọc được nếu A dùng khoá công khai giả Vấn đề này sẽ trở nên một cách đơn giản nếu A tin tưởng một nhân vật thứ 3, gọi là C Khi đó A chỉ tin tưởng những khoá công khai nào được C chứng nhận Những khoá công khai đã được C chứng nhận được gọi là chứng chỉ khoá công khai (public key certificate) hay chứng chỉ số (digital certificate)
Trang 20Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
Phương pháp này sử dụng thuật toán mã hoá Rivest Shamir Adleman (RSA)
và DiffieHellman(DH) Vì phương pháp mã hoá này rất chậm nên chỉ được sử dụng để
mã hoá những mẩu dữ liệu nhỏ
1.2.4 Chứng chỉ khoá công khai
Chứng chỉ khoá công khai (public key certificate) dùng để làm cho hai bên client và server xác định chính xác đối tượng của mỗi bên cần giao tiếp vì nhờ có chứng chỉ khoá công khai mà các đối tượng tham gia trong quá trình trao đổi dữ liệu tin cậy khoá công khai mà mình đang sử dụng Như ví dụ đã nêu trên, giả sử C tạo ra khoá công khai và khoá riêng C yêu cầu được giao tiếp với A và gửi khoá công khai cho B Như vậy B sẽ giao tiếp với C nhưng lại tưởng là đang giao tiếp với A
Một chứng chỉ khoá công khai được tạo ra bởi một tổ chức tin cậy, tổ chức này được gọi là Ceriticate Authority (CA) Một khi khoá công khai đã được CA chứng nhận thì có thể dùng khoá đó để trao đổi dữ liệu trên mạng với mức độ bảo mật cao
Cấu trúc của một chứng chỉ khoá công khai :
• Issuer : tên của CA tạo ra chứng chỉ
• Period of validity : ngày hết hạn của chứng chỉ
• Subject: bao gồm những thông tin về thực thể được chứng nhận
• Public key : thông tin chính mà chứng chỉ cung cấp là khoá công khai Tất cả các trường khác được cung cấp để kiểm tra tính hợp lệ của khoá này
• Signature : được tạo bởi khoá riêng của CA và đảm bảo giá trị của chứng chỉ Nhiều chứng chỉ có thể liên kết với nhau, có nghĩa là một CA có thể tạo ra một chứng chỉ cho một CA khác Chứng chỉ đầu tiên luôn là của người gửi, sau đó là đến chứng chỉ của thực thể tạo ra chứng chỉ của người gửi Cuối cùng của chứng chỉ trong mối liên hệ là root CA Một root CA là một CA công khai có độ tin cậy cao Thông tin
về những root CA được lưu trong trình duyệt Web Thông tin này bao gồm khoá công khai của CA Những CA được biết đến nhiều hiện nay như là VeriSign Entrust, và GTECyberTrust
Trang 21Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
1.3 Vấn đề ký số
Chữ ký điện tử (digital signature) là đoạn dữ liệu ngắn, được đính kèm với văn bản gốc để chứng thực tác giả của văn bản và giúp người nhận kiểm tra tính toàn vẹn của nội dung văn bản gốc
Chữ ký điện tử được tạo ra bằng cách áp dụng thuật toán băm một chiều trên văn bản gốc để tạo ra văn bản đại diện (message digest) hay còn gọi là fingerprint, sau
đó mã hóa bằng khoá riêng, tạo ra chữ ký số đính kèm với văn bản gốc để gửi đi Khi nhận, văn bản được tách làm 2 phần, phần văn bản gốc được tính lại fingerprint để so sánh với fingerprint cũ cũng được phục hồi từ việc giải mã chữ ký số
Các bước mã hoá :
Dùng giải thuật băm (hashing) thông điệp cần truyền đi Kết quả ta được một văn bản đại diện Văn bản đại diện thường có chiều dài nhỏ hơn nhiều so với thông điệp ban đầu Dùng giải thuật MD5 ta được văn bản đại diện có chiều dài 128 bit, dùng giải thuật SHA ta có chiều dài 160 bit
Sử dụng khoá riêng của người gửi mã hoá văn bản đại diện thu được ở bước 1 Thông thường ở bước này ta dùng giải thuật RSA Kết quả thu được gọi là chữ ký điện tử (digital signature) của thông điệp ban đầu
Gộp chữ ký điện tử vào thông điệp ban đầu Công việc này gọi là “ký nhận” (signing) vào thông điệp Khi đã ký nhận vào thông điệp, ta đảm bảo thông tin gửi đi sẽ không
bị thay đổi - đảm bảo tính toàn vẹn dữ liệu (integrity) – vì mọi sự thay đổi trên thông điệp ta gửi đi sẽ bị phát hiện trong giai đoạn kiểm tra Ngoài ra việc ký nhận này đảm bảo người nhận tin tưởng được rằng thông điệp này xuất phát từ người gửi chứ không phải ai khác vì chỉ người gửi mới có được khoá riêng
Các bước kiểm tra :
Dùng khoá công khai của người gửi (khoá này được thông báo đến mọi người) giải mã chữ ký điện tử của thông điệp
Dùng giải thuật (MD5 hoặc SHA) băm thông điệp đính kèm
So sánh kết quả thu được ở bước 1 và bước 2 Nếu trùng nhau, ta kết luận thông điệp này không bị thay đổi trong quá trình truyền và thông điệp này là của người gửi
Trang 22Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
Ghi chú : Chữ ký điện tử được sử dụng để tạo chứng chỉ số A gửi đến CA
của một tổ chức thứ ba đáng tin cậy (trusted third – party) một yêu cầu ký chứng chỉ (certificate signing request), trong đó có khoá công khai CA sẽ ký nhận vào đó và sinh
ra chứng chỉ số gửi về cho A A sẽ thông báo chứng chỉ của mình trên mạng Giả sử B muốn gửi cho A một thông báo thì công việc đầu tiên B sẽ lấy chứng chỉ của A và kiểm tra xem chứng chỉ này có hợp lệ không Quá trình kiểm tra này diễn ra như mô tả
ở trên Nếu hợp lệ B sẽ lấy khoá công khai trong chứng chỉ số để mã hoá dữ liệu và gửi cho A
1.4 Vấn đề xác thực số
Xác thực là một thủ tục nhằm kiểm tra các thông báo nhận được xem chúng có đến từ một người gửi hợp lệ và có bị sửa đổi hay không Xác thực cũng có thể kiểm tra trình tự và tính đúng lúc Mã xác thực thông điệp (Message Authentication Code) được xem như là một checksum (kiểm tra tổng thể, cuối cùng) để kiểm tra dữ liệu có
bị thay đổi trong quá trình truyền hay không
Để tính toán (hay kiểm tra) mã xác thực thông điệp, hệ thống sử dụng một
hàm băm hai lớp Nó bắt đầu với một giá trị đặc biệt được gọi là MAC write secret,
theo sau là phần đệm (padding-phần dữ liệu bổ sung), một dãy số tuần tự 64 bit, một giá trị 16 bit với chiều dài nội dung, và cuối cùng là nội dung của nó Padding là một byte đơn giá trị 001100110, được lặp lại 48 lần cho MD5 và 40 lần cho SHA Trong
lớp thứ hai, hệ thống sử dụng MAC write secret, padding và đầu ra của hàm băm trước
đó Lúc này, padding là giá trị nhị phân 01011100, lặp lại 48 lần cho MD5 và 40 lần cho SHA Kết quả là giá trị MAC xuất hiện trong thông điệp SSL Hình 5 minh hoạ tiến trình cho một mã xác thực thông điệp MD5
Trang 23Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
Hình 5 SSL tính toán một mã thông điệp
Hai giá trị đặc biệt sử dụng trong tính toán này là MAC write secret và số tuần
tự Số tuần tự là một giá trị đếm số các thông điệp mà các bên trao đổi Giá trị của nó được thiết lập là 0 với mỗi thông điệp ChangeCipherSpec, và nó tăng thêm một cho mỗi thông điệp SSL Record Layer theo sau trong một phiên
Không có khả năng tìm thấy 2 thông điệp có cùng một MAC
Nhưng gửi một thông điệp kèm theo MAC của nó vẫn chưa thể đảm bảo rằng việc truyền dữ liệu đã có tình toàn vẹn dữ liệu vì người thứ ba có thể đón nhận thông điệp truyền đi, thay đổi dữ liệu của nó đồng thời tính lại MAC kèm theo Như thế người nhận cũng không thể biết được dữ liệu đã bị thay đổi trong quá trình truyền trên mạng Để giải quyết vấn đề này, có thể sử dụng một trong hai cách sau :
MAC của thông điệp ban đầu cộng thêm khoá phiên (là khoá bí mật – secret key - được dùng để mã hoá dữ liệu trong các phiên làm việc) và băm lại một
Trang 24Chương 1 - Một số vấn đề về bảo mật Nghiên cứu sử dụng công nghệ SSL/TLS
lần nữa Kết quả tạo thành gọi là HMAC Do khoá phiên chỉ có hai bên trao đổi dữ liệu biết được nên đảm bảo được rằng mọi sự thay đổi trên thông điệp ban đầu sẽ bị phát hiện Thông thường khoá phiên được thiết lập bằng giải thuật Dellfi-Hellman hoặc RSA
MAC của thông điệp ban đầu được mã hoá bằng khoá riêng Vì khoá riêng chỉ có người gửi có nên không thể giả mạo
Hai giải thuật thông dụng để tạo MAC là MD5 và SHA (Secure Hash Algorithm)
Trang 25Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
Chương 2 KHE CẮM AN TOÀN (SSL)
2.1 Tổng quan về SSL
Trong các giao dịch điện tử trên mạng và trong các giao dịch thanh toán trực tuyến, thông tin/dữ liệu trên môi trường mạng Internet phi an toàn thường được bảo đảm bởi cơ chế bảo mật thực hiện trên tầng vận tải có tên SSL (Secure Socket Layer)
và TLS (Transport Layer Security-được bổ sung từ SSL phiên bản 3.0) - một giải pháp
kỹ thuật hiện nay được sử dụng khá phổ biến trong các hệ điều hành mạng máy tính trên Internet Trong chương này, chúng ta sẽ tìm hiểu SSL là gì, làm việc thế nào, các thuộc tính và hoạt động của chúng
2.1.1 Lịch sử SSL
SSL là giao thức đa mục đích được thiết kế để tạo ra các giao tiếp giữa hai chương trình ứng dụng trên một cổng định trước (socket 443) nhằm mã hoá toàn bộ thông tin đi/đến, mà ngày nay được được sử dụng rộng rãi cho giao dịch điện tử như truyền số hiệu thẻ tín dụng, mật khẩu, số bí mật cá nhân (PIN) trên Internet Giao thức SSL được hình thành và phát triển đầu tiên năm 1994 bởi nhóm nghiên cứu Netscape dẫn dắt bởi Elgammal và ngày nay đã trở thành chuẩn bảo mật thực hành trên mạng Internet Phiên bản SSL hiện nay là 3.0 và vẫn đang được hoàn thiện, bổ sung Tương
tự như SSL, một giao thức khác có tên là PCT – Private Communication Technology được đề xướng bởi Microsoft hiện nay cũng được sử dụng rộng rãi trong các mạng máy tính chạy trên hệ điều hành WindowNT Ngoài ra, một chuẩn của IETF (Internet Engineering Task Force) có tên là TLS (Transport Layer Security) dựa trên SSL cũng được hình thành và xuất bản dưới khuôn khổ nghiên cứu của IETF Internet Draff được tích hợp và hỗ trợ trong sản phẩm của Netscape
2.1.2 Cơ bản về SSL
Điểm cơ bản của SSL là được thiết kế độc lập với tầng ứng dụng để đảm bảo tính bí mật, an toàn và chống giả mạo luồng thông tin qua Internet giữa hai ứng dụng bất kỳ, thí dụ như webserver và các trình duyệt khách (browsers), do đó được sử dụng rộng rãi trong nhiều ứng dụng khác nhau trên môi trường Internet Toàn bộ cơ chế và
hệ thống thuật toán mã hoá sử dụng trong SSL được phổ biến công khai, trừ khoá
Trang 26Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
phiên (session key) được sinh ra tại thời điểm trao đổi giữa hai ứng dụng là ngẫu nhiên
và bí mật đối với người quan sát trên mạng máy tính Ngoài ra, giao thức SSL còn đòi hỏi ứng dụng chủ phải được chứng thực bởi một đối tượng lớp thứ ba (CA) thông qua giấy chứng thực điện tử (digital certificate) dựa trên mật mã công khai (ví dụ RSA)
Hình 6 Vị trí SSL trong mô hình OSI
SSL được thiết kế như là một giao thức riêng cho vấn đề bảo mật có thể hỗ trợ cho rất nhiều ứng dụng Giao thức SSL hoạt động bên trên TCP/IP và bên dưới các ứng dụng tầng cao hơn như là HTTP (HyperText Transfer Protocol), LDAP (Lightweight Directory Access Protocol) hoặc IMAP (Internet Messaging Access Protocol) Trong khi SSL có thể sử dụng để hỗ trợ các giao dịch an toàn cho rất nhiều ứng dụng khác nhau trên Internet, thì hiện nay SSL được sử dụng chính cho các giao dịch trên Web
SSL cho phép một server có hỗ trợ SSL tự xác thực với một Client cũng hỗ trợ SSL, cho phép client tự xác thực với server, và cho phép cả hai máy thiết lập một kết nối được mã hoá Khả năng này đã định ra các mối quan tâm căn bản về giao tiếp trên mạng Internet và trên các mạng sử dụng TCP/IP:
• Chứng thực SSL 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 trình duyệt sử dụng các kỹ thuật mã hóa công khai để chắc chắn rằng chứng chỉ và publicID 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 Sự xác thực này có thể quan trọng nếu người sử dụng gửi số thẻ tín dụng qua mạng và muốn kiểm tra định danh server nhận
Trang 27Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
• Chứng thực SSL Client : cho phép 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á khoá công khai để kiểm tra chứng chỉ của client và publicID là đúng, được cấp phát bởi một CA trong danh sách các CA đáng tin cậy của Server hay 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ài chí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 ngườ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
Giao thức SSL gồm hai tầng Tầng thấp nhất, được đặt trên một số giao thức vận tải tin cậy (ví dụ TCP), là tầng SSL Record Protocol SSL Record Protocol được
sử dụng để đóng gói một vài giao thức ở mức cao hơn Một trong những giao thức được đóng gói đó là SSL Handshake Protocol, giao thức này cho phép server và client thực hiện việc xác thực lẫn nhau, thoả thuận một thuật toán mã hoá và các khoá mật
mã trước khi giao thức ứng dụng gửi hoặc nhận dữ liệu
Các phiên bản :
• SSLv2 : đây là phiên bản đầu tiên của giao thức SSL do Netscape Corporation thiết kế
• SSLv3 : đây là phiên bản SSL version 3.0 do Netscape Corporation thiết kế, đã
có trợ giúp chain certificate (chứng chỉ nhóm) và được hỗ trợ cho tất cả các trình duyệt phổ thông
• TLSv1 : giao thức Transport Layer Security version 1.0 dựa trên cơ sở của SSLv3, được thiết kế bởi IETF nhưng hiện chưa được hỗ trợ cho tất cả các trình duyệt thông dụng
Các thuộc tính cơ bản :
• Kết nối là bí mật : quá trình mã hóa dữ liệu được áp dụng sau khi quá trình bắt tay (handshake) đầu tiên xác định được một khoá bí mật Mật mã đối xứng
Trang 28Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
được sử dụng cho quá trình mã hoá dữ liệu (ví dụ DES, RC4…) Đảm bảo thông tin không thể bị truy cập bởi đối tượng thứ ba
• Danh tính của người bên kia có thể được xác thực bằng mật mã phi đối xứng, hoặc khoá công khai (ví dụ RSA, DSS…) Xác thực tức là đảm bảo tính xác thực của trang mà chúng ta sẽ 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
• Kết nối là tin cậy : việc vận chuyển các thông điệp bao gồm một quá trình kiểm tra tính toàn vẹn của thông điệp sử dụng một hàm kiểm tra MAC có khoá Các hàm băm an toàn (ví dụ SHA, MD5…) được sử dụng cho quá trình thực hiện hàm MAC, nhằm đảm bảo thông tin không bị sai lệch và thể hiện chính xác thông tin gốc gửi đến
• Khả năng mở rộng : SSL cung cấp một framework mà trong đó các phương pháp mã hoá và khóa công khai kết hợp lại chặt chẽ với nhau
2.1.3 SSL và ứng dụng thương mại điện tử
Trong thực tiễn, sự hiểu biết của người sử dụng về cơ chế bảo mật được “sắp đặt” trong các giao dịch điện tử trên mạng Internet là ít và mờ Tất cả phần lớn dựa vào sự tin tưởng (trust), chẳng hạn tên tuổi của các hãng có uy tín (VisaCard, MasterCard, ) và sản phẩm có tính nǎng tốt của các hãng nổi tiếng (Oracle, Microsoft, Netscape, ) Bảo mật và an toàn là vấn đề quan trọng trong việc quyết định
sự phát triển mạnh mẽ thương mại điện tử hoặc hiện nay như chính phủ điện tử government) và tạo lòng tin cho khách hàng Về vấn đề bảo mật trong giao thức SSL chúng ta cần quan tâm tới khả nǎng lựa chọn công nghệ và mức độ phụ thuộc vào công nghệ khi xây dựng các ứng dụng nền tảng trong đó có hạ tầng bảo mật thông tin Việc
Trang 29(e-Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
dựng dựa trên sơ đồ gồm các lớp bảo mật nhiều tầng độc lập Ví dụ như giao thức Giao dịch điện tử bảo mật SET (Secure Electronic Transaction), Giao thức khoá Internet IKP (Internet Keyed Protocol) hoặc PGP (Pretty Good Privacy), thậm chí cả phần cứng, nhằm hạn chế tối đa các “lỗ hổng” bảo mật của hệ thống giao thương điện
tử Ngoài ra cũng cần lưu ý các sản phẩm về bảo mật ứng dụng hiện nay trên mạng máy tính phần lớn được phát minh từ Mỹ, được bảo hộ và kiểm soát chặt chẽ bởi luật pháp Mỹ dẫn đến khi thực hành xây dựng và triển khai các hệ thống thông tin và giao dịch thương mại điện tử của chúng ta cần thận trọng và cân nhắc
Ngày nay, SSL được sử dụng rộng rãi như là nền tảng bảo mật cho :
Các truy cập vào những ứng dụng có yêu cầu bảo mật cao như Oracle, PeopleSoft, hay Siebel từ bất kỳ một Web browser nào
Các Website bán hàng qua mạng đang được thanh toán bằng thẻ tín dụng Các trang học tập trực tuyến, tài chính ngân hàng, giao dịch chứng khoán và dịch vụ thanh toán hoá đơn
Các nhà cung cấp dịch vụ y tế khi muốn chia sẻ các thông tin nghiên cứu riêng tư của mình
Các công ty bảo hiểm cung cấp các dịch vụ trực tuyến cho các đại lý và các khách hàng
Các trang cung cấp dịch vụ thương mại điện tử trực tiếp
Các dịch vụ của chính phủ đòi hỏi sự bảo mật thông tin như thuế, an ninh xã hội, quân đội và các thông tin về sức khoẻ
Các trang du lịch mà có thể đặt phòng và vé trực tuyến
Các mạng nội bộ (intranet) có yêu cầu bảo mật các thông tin quan trọng Các mạng mở rộng (extranet) phục vụ cho các truy cập an toàn vào các nguồn thông tin của công ty từ phía các đối tác, các đại lý cung cấp và các khách hàng chính
2.2 Giao thức bản ghi (Record Protocol)
Secure Sockets Layer sử dụng giao thức bản ghi (Record Protocol) để đóng gói tất cả các thông điệp Hình 7 mô tả vị trí của Record Layer trong kiến trúc SSL Nó cung cấp một định dạng chung cho các thông điệp Alert, ChangeCipherSpec, Handshake hay thông điệp của các giao thức ứng dụng như HTTP, Telnet…
Trang 30Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
Hình 7 Vị trí giao thức bản ghi trong giao thức SSL
Giao thức bản ghi là một tầng giao thức Đối với mỗi tầng giao thức nói chung, một gói dữ liệu sẽ bao gồm các trường độ dài, mô tả và nội dung dữ liệu Giao thức bản ghi nhận dữ liệu cần gửi từ tầng trên phân nhỏ thành từng block (khối), nén
dữ liệu, bổ sung dữ liệu kiểm tra, mã hoá và gửi Khi nhận dữ liệu về, tiến trình được thực hiện ngược lại: giải mã, kiểm tra, gõ nén và sắp xếp lại rồi gửi lên tầng trên Các giai đoạn trong giao thức này được minh hoạ trong hình 8 Với Application data có thể
là dữ liệu của giao thức SSL handshake, giao thức SSL ChangeCipherSpec, giao thức SSL Alert hoặc dữ liệu của các ứng dụng khác như HTTP, Telnet… Để phân biệt được từng loại dữ liệu đó trong mỗi frame dữ liệu của SSL record đều có phần header (phần nội dung thêm vào đầu thông điệp) để phân biệt
Trang 31Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
Bước đầu tiên là fragmentation Mỗi thông điệp tầng trên được phân nhỏ
thành các khối 214 byte (16384) hoặc nhỏ hơn Tiếp theo là compression (nén), điều
này là tuỳ chọn Nén phải không làm mất dữ liệu và không thể gia tăng kích thước dữ liệu hơn 1024 byte Trong SSLv3, không có thuật toán nén nào được chỉ định, thì thuật toán nén mặc định là null
Bước tiếp theo trong quá trình xử lý là tính toán MAC (Message Authentication Code) - mã xác thực thông điệp qua dữ liệu đã được nén, biến đổi cấu
trúc SSLCompressed thành cấu trúc SSLCiphertext
Bước cuối cùng của tiến trình SSL Record Protocol là thêm vào phần đầu một header bao gồm các trường :
• Protocol (1 byte) :Thể hiện giao thức tầng cao hơn được sử dụng trong thông điệp SSL Record Layer
• Version (2 byte) :Phiên bản chính và phụ của đặc tả SSL mà thông điệp tuân theo Phiên bản hiện tại của SSL là 3.0
• Length (2 byte) :Số 16 bít thể hiện độ dài của giao thức tầng cao hơn Đặc tả SSL quy định số này không được vượt quá 214
• Protocol Message (n byte) : Thông điệp của giao thức tầng cao hơn, có thể dài đến 214 (16384) byte kể cả mã xác thực SSL Record Layer có thể nối nhiều thông điệp tầng cao hơn trong một thông điệp SSL Record Layer đơn (phải có cùng giao thức tầng cao hơn)
Hình 9 Cấu trúc một thông điệp SSL Record
Trang 32Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
SSL định nghĩa bốn giao thức tầng cao khác nhau mà Record Layer có thể hỗ trợ là : ChangeCipherSpec protocol (20), Alert protocol (21), Handshake protocol (22), Application protocol data (23)
2.3 Giao thức ChangeCipherSpec
Giao thức ChangeCipherSpec tồn tại các quá trình chuyển tiếp các tín hiệu trong chiến lược mật mã Giao thức này bao gồm một thông điệp, được mã hoá và được nén theo CipherSpec hiện tại
Hình 10 Thông điệp ChangeCipherSpec
Phần sẫm màu là Record Layer header, với giá trị protocol là 20, version 3.0,
và chiều dài 1 Bản thân thông điệp ChangeCipherSpec chỉ gồm 1 byte, giá trị 1
Client và server sẽ gửi thông điệp ChangeCipherSpec để báo tin cho bên kia
biết được các bản ghi sau này sẽ được bảo vệ dưới CipherSpec với các khoá mà hai bên đã thoả thuận Khi nhận được thông điệp này, bên nhận sẽ chuyển trạng thái chuẩn
bị đọc thành trạng thái đọc hiện tại Sau khi trao đổi khoá (Key Exchange) và chứng chỉ để xác thực thông điệp (CertificateVerify) thì client sẽ gửi thông điệp này, server
sẽ gửi lại cho client một thông điệp tương tự sau khi server xử lý xong thông điệp mà client gửi cho Khi thông điệp ChangeCipherSpec bất thường xuất hiện thì một
unexpected_message sẽ được tạo ra Khi sử dụng lại các phiên trước đây, thông điệp
ChangeCipherSpec sẽ được gửi sau các thông điệp hello
2.4 Giao thức cảnh báo (Alert Protocol)
Các hệ thống sử dụng giao thức Alert để báo hiệu một lỗi hoặc một cảnh báo xảy ra trong quá trình truyền thông giữa hai bên, và SSL gán cho kiểu giao thức của Alert là 21 Alert Protocol cũng giống như tất cả các giao thức SSL khác, sử dụng Record Layer định dạng thông điệp của nó Các thông điệp alert truyền tải các thông báo lỗi hay cảnh báo trong quá trình thiết lập cũng như trao đổi dữ liệu của một phiên liên lạc Cũng như các loại thông điệp khác, thông điệp alert cũng được mã hoá và nén
Trang 33Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
Byte đầu tiên lưu giá trị cảnh báo (1) hay lỗi (2) Nếu là lỗi, SSL sẽ ngay lập tức đóng kết nối Các kết nối khác trên cùng phiên có thể vẫn tiếp tục, nhưng không kết nối mới nào trong phiên này có thể được thiết lập Byte thứ hai bao gồm một mã thể hiện kiểu cảnh báo cụ thể Tiếp theo đây là các đặc tả lỗi và cảnh báo cụ thể cùng với giá trị của nó
Hình 11 Định dạng thông điệp Alert 2.4.1 Kiểu Closure Alert
Client và server phải biết được khi nào kết nối đang kết thúc để tránh cách tấn công cắt cụt (truncation attack) Hoặc mỗi bên tham gia có đưa ra các thông điệp thông báo đóng kết nối
close_notify (0) : thông báo cho bên nhận biết được bên gửi sẽ không gửi bất
kỳ thông điệp nào nữa trên kết nối Sau khi nhận được thông báo này thì bất kỳ dữ liệu nào nhận được đều bị loại bỏ
2.4.2 Kiểu Error Alert
Quá trình xử lý lỗi trong SSL Hanshake Protocol là rất đơn giản Khi một lỗi được phát hiện thì bên phát hiện ra lỗi sẽ gửi một thông điệp cho bên kia, sau đó cả hai bên đóng kết nối ngay lập tức Các servers và clients phải bỏ qua bất kỳ số định danh phiên, khoá, các bí mật của kết nối bị hỏng này Sau đây là một số thông báo lỗi
unexpected_message (10) : một thông điệp không phù hợp đã được nhận bad_record_mac (20) : thông báo này được trả lại nếu một bản ghi nhận được có MAC không đúng
decompression_failure (30) : hàm thực hiện giải mã nhận đầu vào không phù hợp (ví dụ dữ liệu mở rộng vượt quá kích thước cho phép)
handshake_failure (40) : thông báo cho biết bên gửi không thể thoả thuận một tập các tham số an toàn được đưa vào trong các tuỳ chọn
no_certificate (41): thông báo này có thể gửi đi để đáp lại yêu cầu cần xác thực nếu việc xác thực không phù hợp
Trang 34Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
bad_certificate (42) : việc xác thực bị ngắt, ví dụ chữ ký dùng cho xác thực không phù hợp
unsupported_certificate (43) : việc xác thực là kiểu không được hỗ trợ certificate_revoked (44) : bên tham gia huỷ bỏ việc xác thực
certificate_expired (45) : việc xác thực đã hết hạn hoặc hiện tại không có giá trị
certificate_unknown (46) : xuất hiện các vấn đề khác trong quá trình xử lý việc xác thực
illegal_parameter (47) : một trường trong handshake ngoài giới hạn hoặc không nhất quán với các trường khác
2.5 Giao thức bắt tay (Handshake Protocol)
SSL Handshake Protocol là một phần quan trọng của SSL, nó cung cấp ba dịch vụ cho các kết nối SSL giữa client và server Handshake Protocol cho phép client/server thống nhất về phiên bản giao thức, xác thực mỗi bên bằng cách thi hành một MAC và thoả thuận về một thuật toán mã hoá và các khoá lập mã cho việc bảo vệ các dữ liệu gửi đi trong một SSL record trước khi giao thức ứng dụng truyền đi hay nhận được byte dữ liệu đầu tiên
Hình 12 Vị trí giao thức bắt tay
Giao thức bắt tay (Handshake Protocol) bao gồm một dãy các thông điệp được trao đổi bởi client và server Hình 13 minh hoạ sự trao đổi các thông điệp handshake
Trang 35Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
Hình 13 Tiến trình bắt tay
“ * “ cho biết đây là tuỳ chọn hoặc là các thông điệp phụ thuộc tuỳ vào tình huống cụ thể sẽ không gửi đi
Trang 36Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
Tiến trình hoạt động của giao thức bắt tay có thể được mô tả tóm tắt như sau :
1 Client gửi tới server số phiên bản SSL của client, các tham số của thuật toán mã hoá, sinh dữ liệu ngẫu nhiên (đó chính là digital signature) và các thông tin khác
mà server cần để thiết lập kết nối với client
2 Server gửi tới client số phiên bản SSL của server đang dùng, các tham số của thuật toán mã hoá, sinh dữ liệu ngẫu nhiên và các thông tin khác mà client cần để thiết lập kết nối với server có sử dụng SSL Server cũng gửi chứng chỉ (certificate) của mình tới client, nếu client yêu cầu tài nguyên của server mà cần sự xác thực client thì server sẽ yêu cầu chứng chỉ của client
3 Client sử dụng một số thông tin mà server gửi đến để xác thực server Nếu như server không được xác thực thì người sử dụng sẽ được cảnh báo và kết nối không được thiết lập Còn nếu như xác thực được server thì phía client sẽ thực hiện tiếp bước 4
4 Sử dụng tất cả các thông tin được tạo ra trong giai đoạn bắt tay ở trên, client (cùng với sự cộng tác của server và phụ thuộc vào thuật toán được sử dụng) sẽ tạo ra
premaster secret cho phiên làm việc, mã hoá bằng khoá công khai (public key)
mà server gửi đến trong chứng chỉ ở bước 2, và gửi đến server
5 Nếu server có yêu cầu xác thực client (tuỳ chọn trong quá trình bắt tay), client sẽ
ký trên dữ liệu, dữ liệu này là duy nhất đối với quá trình bắt tay và đều được lưu trữ bởi client và server Trong trường hợp này, client sẽ gửi cả dữ liệu được ký,
chứng chỉ số của mình cùng với premaster secret đã được mã hoá tới server
6 Nếu server yêu cầu xác thực client, server sẽ cố gắng để xác thực client Trường hợp client không được xác thực, phiên làm việc sẽ bị ngắt Còn nếu client được xác
thực thành công, server sẽ sử dụng khoá riêng (private key) để giải mã premaster secret, sau đó thực hiện một số bước để tạo ra master secret
7 Client và server sử dụng master secret để tạo ra các session key (khoá phiên), đó
chính là các khoá đối xứng được sử dụng để mã hoá và giải mã các thông tin trong phiên làm việc và kiểm tra tính toàn vẹn dữ liệu-xác định sự thay đổi về dữ liệu giữa thời điểm gửi và nhận
8 Client sẽ gửi một thông điệp tới server thông báo rằng các thông điệp tiếp theo sẽ
Trang 37Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
9 Lúc này giai đoạn “bắt tay” đã hoàn thành, và phiên làm việc SSL bắt đầu Cả hai
phía client và server sẽ sử dụng các session key để mã hoá và giải mã thông tin
trao đổi giữa hai bên, và kiểm tra tính toàn vẹn dữ liệu
Khi client và server quyết định sử dụng lại phiên trước hoặc tạo một bản sao của phiên đang tồn tại (thay vì phải thoả thuận các tham số an toàn mới), thì luồng thông điệp hoạt động như sau : client gửi một ClientHello có sử dụng Session ID của phiên được dùng lại server kiểm tra nơi lưu trữ phiên (session cache) tương ứng Nếu
có, server sẽ thiết lập lại kết nối dưới trạng thái phiên được chỉ định, server sẽ gửi một thông điệp ServerHello có giá trị Session ID giống hệt Mỗi khi quá trình thiết lập lại được hoàn thành thì client và server có thể trao đổi dữ liệu lớp ứng dụng
Ngược lại nếu Session ID không tìm thấy thì server sẽ tạo ra một Session ID mới, SSL client và server thực hiện quá trình bắt tay thông thường như ở trên
2.5.1 Giai đoạn 1 : Các thông điệp Hello cho kết nối logic
Client gửi một thông điệp ClientHello tới server, server phải đáp ứng lại bằng một thông điệp ServerHello, hoặc ngược lại nếu một lỗi xảy ra và kết nối sẽ thất bại ClientHello và ServerHello được sử dụng để tăng tính an toàn giữa client và server ClientHello và ServerHello thiết lập các thuộc tính : Protocol Version, Session ID, Cipher Suite và Compression Method Ngoài ra hai giá trị ngẫu nhiên được tạo ra và được trao đổi là : ClientHello.random và ServerHello.random Các thông điệp giai đoạn chào hỏi được sử dụng để trao đổi các thuộc tính thừa kế bảo mật giữa client và server
• 1 Thông điệp HelloRequest
Thông điệp này được gửi bởi server tại bất kỳ thời điểm nào, nhưng có thể bị client bỏ qua nếu Handshake Protocol đã đang thực hiện Nếu client nhận một HelloRequest trong một trạng thái thoả thuận bắt tay thì client đơn giản là bỏ qua thông điệp này
• 2 Thông điệp ClientHello
Thông điệp ClientHello bắt đầu phiên truyền thông SSL giữa hai bên Client
sử dụng thông điệp này hỏi server để bắt đầu thoả thuận các dịch vụ bảo mật được sử dụng SSL Sau đây là các thành phần quan trọng của một thông điệp ClientHello :
Trang 38Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
Version : phiên bản SSL cao nhất mà client hỗ trợ Phiên bản SSL hiện tại là 3.0 Chú ý rằng một server có thể thừa nhận rằng client có thể hỗ trợ tất các phiên bản SSL cao hơn và bao gồm giá trị của trường này Ví dụ, nếu một client gửi một ClientHello với Version có giá trị 3 tới server chỉ hỗ trợ SSL version 2.0, server có thể đáp ứng bằng các thông điệp version 2.0 và nó hy vọng client hiểu Client có thể quyết định tiếp tục với phiên SSL sử dụng version 2.0, hoặc có thể bỏ qua
Random : Một cấu trúc ngẫu nhiên được sinh ra, bao gồm một nhãn thời gian 32-bit và 28 byte được sinh bởi bộ sinh số ngẫu nhiên bảo mật Nhãn thời gian-32 byte bao gồm thời gian và ngày, để chắc chắn rằng client không bao giờ sử dụng cùng một giá trị ngẫu nhiên hai lần Sử dụng phương pháp này để chống lại một sự sao chép bất hợp pháp các thông điệp SSL từ một client bất hợp pháp và sử dụng lại chúng để thiết lập một phiên giả mạo 28 byte còn lại là một số ngẫu nhiên “bảo mật mật mã”, sử dụng một công nghệ được biết đến như là “sinh số giả ngẫu nhiên” để tạo ra các số ngẫu nhiên Session ID : một định danh phiên chiều dài biến Một giá trị khác không thể hiện rằng client muốn cập nhật các tham số của kết nối đang tồn tại hoặc tạo một kết nối mới trong phiên này Một giá trị bằng không thể hiện rằng client muốn thiết lập một kết nối mới trên một phiên làm việc mới
CipherSuite : đây là một danh sách bao gồm các sự kết hợp của các thuật toán lập mã được hỗ trợ bởi client, xếp tăng theo thứ tự tham chiếu Mỗi phần tử của danh sách định nghĩa cả hai thuật toán trao đổi khoá và một CipherSpec
Compression Method : danh sách các phương pháp nén client hỗ trợ
• 3 ServerHello :
Khi server nhận được thông điệp ClientHello, nó gửi đáp ứng lại với một thông điệp ServerHello Nội dung của ServerHello tương tự như ClientHello, tuy nhiên, cũng có một số điểm khác biệt quan trọng
Version : lưu giá trị phiên bản thấp nhất được chấp nhận bởi client trong ClientHello và phiên bản cao nhất được hỗ trợ bởi server Version trong
Trang 39Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
Random : giá trị ngẫu nhiên được sinh ra bởi server, bốn byte đầu là nhãn thời gian (để tránh các giá trị ngẫu nhiên lặp lại); các byte còn lại sẽ được tạo bởi bộ sinh số ngẫu nhiên bảo mật lập mã
Session ID : trường Session ID của ServerHello có thể lưu một giá trị, không giống như trường Session ID trong ClientHello đã được nói tới Giá trị này định danh duy nhất truyền thông SSL cụ thể hoặc session Lý do chính cho việc định danh một phiên SSL cụ thể là để sau này có thể dùng lại Nếu server không chỉ định ra phiên đã từng sử dụng, nó có thể bỏ qua trường Session ID trong thông điệp ServerHello
CipherSuite : quyết định các tham số lập mã, các thuật toán và các cỡ khoá, được sử dụng trong một phiên Server phải chọn một bộ mã đơn từ danh sách mà client đưa cho trong thông điệp ClientHello
CompressionMethod : server sử dụng trường này để định danh việc nén dữ liệu sử dụng cho phiên Một lần nữa, server phải lấy chúng từ danh sách đã được liệt kê trong ClientHello Tuy nhiên, các phiên bản SSL hiện tại không định nghĩa bất kỳ phương pháp nén nào, vì thế trường này không có ý nghĩa thiết thực cụ thể
2.5.2 Giai đoạn 2 : Xác thực Server và trao đổi khoá
Sau các thông điệp hello, server bắt đầu giai đoạn này bằng cách gửi chứng chỉ của nó nếu nó cần được xác thực Thêm vào đó, một thông điệp ServerKey Exchange có thể được gửi nếu nó được yêu cầu Nếu server đã được xác thực, nó có thể yêu cầu một chứng chỉ từ client, nếu nó thích hợp với bộ mã được chọn Sau đó, server sẽ gửi thông điệp ServerHelloDone, thể hiện rằng giai đoạn thông điệp hello của handshake đã hoàn thành Server sau đó sẽ đợi đáp ứng của client Nếu server đã gửi một thông điệp yêu cầu chứng chỉ (Certificate request message), client phải gửi lại thông điệp chứng chỉ (certificate message)
• 4 Thông điệp ServerCertificate
Nếu server đã được xác thực, nó phải gửi một chứng chỉ ngay sau thông điệp ServerHello Kiểu chứng chỉ phải phù hợp với thuật toán chuyển đổi khoá của bộ mã (cipher suite) đã lựa chọn, và nó thường là một chứng chỉ X.509 v3
Nó phải chứa một khoá phù hợp với phương pháp chuyển đổi khoá (key
Trang 40Chương 2 - Khe cắm an toàn Nghiên cứu sử dụng công nghệ SSL/TLS
exchange method) Thuật toán ký cho chứng chỉ phải giống như thuật toán cho khoá chứng chỉ (certificate key)
Thông điệp Certificate tương đối dễ hiểu, được minh hoạ trong hình 14 Kiểu thông điệp giao thức Handshake của nó là 11, và nó bắt đầu với kiểu thông điệp và chiều dài thông điệp bắt tay chuẩn Phần thân của thông điệp bao gồm một dãy các chứng chỉ khoá công khai Dãy này bắt đầu với 3 byte thể hiện chiều dài (Giá trị chiều dài dãy luôn là 3 nhỏ hơn giá trị chiều dài thông điệp.) Mỗi chứng chỉ trong dãy cũng bắt đầu với một trường 3 byte lưu cỡ của chứng chỉ Thông điệp đầu tiên thể hiện toàn bộ chiều dài của dãy chứng chỉ Phần sau đó thể hiện chiều dài của mỗi chứng chỉ với 3 byte ngay trước chứng chỉ đó
Dãy các thông điệp cho phép SSL hỗ trợ các hệ chứng chỉ Chứng chỉ đầu tiên trong dãy luôn là của bên gửi Chứng chỉ tiếp theo là của bên cấp chứng chỉ cho chứng chỉ của bên gửi Chứng chỉ thứ ba thuộc về CA cho quyền
đó, và cứ tiếp tục như thế Dãy chứng chỉ sẽ tiếp tục cho tới khi nó tìm thấy một chứng chỉ cho quyền chứng chỉ gốc (root)