Ngày nay vấn đề bảo mật dữ liệu rất quan trọng, thông tin dữ liệu đi và đến được các server quản lý nhờ vào một số ứng dụng trược tiếp bởi các công cụ bảo mật trong máy Server. SSL là một trong số các giao thức đó. SSL mã hóa thông tin điđến rất hiệu quả và nó được tích hợp trong máy Server nếu bạn cài bộ Server 2000 trở lên. Nhưng hiện tại việc ứng dụng SSL ở việc nam rất hạn chế. Sau đây nhóm trình bài về giao thức SSL.
Trang 1ĐỀ TÀI: GIAO THỨC SSL
MỤC LỤC
I Lời nói đầu
Ngày nay vấn đề bảo mật dữ liệu rất quan trọng, thông tin dữ liệu đi và đến được các serverquản lý nhờ vào một số ứng dụng trược tiếp bởi các công cụ bảo mật trong máy Server SSL
là một trong số các giao thức đó SSL mã hóa thông tin đi/đến rất hiệu quả và nó được tíchhợp trong máy Server nếu bạn cài bộ Server 2000 trở lên Nhưng hiện tại việc ứng dụngSSL ở việc nam rất hạn chế Sau đây nhóm trình bài về giao thức SSL
II Giao thức SSL (Secure Socket Layer)
1 SSL là gì?
SSL (Secure Socket Layer ) là giao thức đa mục đích được thiết kế để tạo ra các giaotiếp giữa hai chương trình ứng dụng, nhằm mã hoá toàn bộ thông tin đi/đến, mà ngày nayđượ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 tổ hợp nhiều giải thuật mã hóa nhằm đảmbảo quá trình trao đổi thông tin trên mạng được bảo mật Việc mã hóa dữ liệu diễn ra một
Trang 2cách trong suốt, hỗ trợ nhiều giao thức khác chạy trên nền giao thức TCP, SSL chạy ứngdụng trên một cổng định trước (socket 443)
Giao thức SSL (Secure Socket Layer) tổ hợp nhiều giải thuật mã hóa nhằm đảm bảoquá trình trao đổi thông tin trên mạng được bảo mật Việc mã hóa dữ liệu diễn ra một cáchtrong suốt, hỗ trợ nhiều giao thức khác chạy trên nền giao thức TCP, SSL đã kết hợp nhữngyếu tố sau để thiết lập được một giao dịch an toàn
Xác thực: đảm bảo tính xác thực của trang mà bạn 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
Mã hoá: đảm bảo thông tin không thể bị truy cập bởi đối tượng thứ ba Để loại trừviệc nghe trộm những thông tin “ nhạy cảm” khi nó được truyền qua Internet, dữ liệu phảiđược mã hoá để không thể bị đọc được bởi những người khác ngoài người gửi và ngườinhận
Toàn vẹn dữ liệu: đảm bảo thông tin không bị sai lệch và nó phải thể hiện chính xác thông tin gốc gửi đến
Với việc sử dụng SSL, các Web site có thể cung cấp khả năng bảo mật thông tin, xácthự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à Webserver, cho phép người sử dụng làm việc với các trang Web ở chế độ an toàn Khi Webbrowser 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áicủa cửa sổ browser và dòng “http” trong hộp nhập địa chỉ URL sẽ đổi thành “https”
Sercure Socket Layer (SSL) hiện nay là giao thức bảo mật rất phổ biến trên Internet trongcác hoạt động thương mại điện tử (E-Commerce) Việt Nam đang trên đường hội nhập vớinền công nghệ thông tin thế giới, nên nay mai, các hoạt động giao dịch trên mạng ở ViệtNam 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 thiết yếu Tuy nhiên đến nay hình như vẫn chưa có trang Web nào ở Việt Nam sửdụng SSL trong các giao dịch của mình
2 Lịch sử ra đời và phát triển
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êncứ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ênmạng Internet Phiên bản SSL hiện nay là 3.0 và vẫn đang tiếp tục được bổ sung và hoànthiện Tương tự như SSL, một giao thức khác có tên là PCT - Private CommunicationTechnology được đề xướng bởi Microsoft hiện nay cũng được sử dụng rộng rãi trong cácmạng máy tính chạy trên hệ điều hành Windows NT Ngoài ra, một chuẩn của IETF
Trang 3(Internet Engineering Task Force) có tên là TLS (Transport Layer Security) dựa trên SSLcũng được hình thành và xuất bản dưới khuôn khổ nghiên cứu của IETF Internet Draft đượctích hợp và hỗ trợ trong sản phẩm của Netscape
SSL được coi là giao thức bảo mật quan trọng lớp vận chuyển (Layer Transport) 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ên Web
Vào giai đoạn này, 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à mộtcả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ông cộngtrong một phiên bản được chỉnh sửa của trình duyệt Mosaic NCSA mà những người dùngphả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ột giao thứctương ứng với phiên bản đầu tiên của Netscape Navigator, Trái với tập đoàn CommerceNet,Netscape Communications đã không tính phí các khách hàng của nó về việc thực thi giaothức bảo mật của nó Kết quả, SSL trở thành giao thức nổi bật để cung cấp các dịch vụ bảomật cho lưu lượng dữ liệu HTTP 1994
Cho đến bây giờ, có ba phiên bản của SSL:
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
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
Netscape Communications đã phản ứng lại sự thách thức PCT của Microsoft bằngcá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ính năngmới Vào thời điểm này, Microsoft nhượng bộ và đồng ý hỗ trợ SSL trong tất cả các phiênbả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 3 năm
1996 Nó được thực thi trong tất cả các trình duyệt chính bao gồm ví dụ Microsoft InternetExplorer 3.0 (và các phiên bản cao hơn), Netscape Navigator 3.0 (và các phiên bản cao
Trang 4hơn), và Open Như được thảo luận ở phần sau trong chương này, SSL 3.0 đã được điềuchỉnh bởi IETF TLS WG Thực tế, thông số kỹ thuật giao thức TLS 1.0 dẫn xuất từ SSL 3.0.
3 Giới thiệu chung về giao thức SSL.
Như đã nói ở trên giao thức SSL được hình thành và phát triển đầu tiên năm 1994 bởinhó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ậtthực hành trên mạng Internet Phiên bản SSL hiện nay là 3.0 và vẫn đang tiếp tục được bổsung và hoàn thiện SSL là giao thức tầng (layered protocol), bao gồm 4 giao thức con sau:
Giao thức SSL Handshake
Giao thức SSL Change Cipher Spec
Giao thức SSL Alert
SSL Record Layer
4 Các thuật toán mã hoá dùng trong SSL
Các thuật toán mã hoá (cryptographic algorithm hay còn gọi là cipher) là các hàmtoán học được sử dụng để mã hoá và giải mã thông tin Giao thức SSL hỗ trợ rất nhiều cácthuật toán mã hoá, được sử dụng để thực hiện các công việc trong quá trình xác thực server
và client, truyền tải các certificates và thiết lập các khoá của từng phiên giao dịch (sesionkey) Client và server có thể hỗ trợ các bộ mật mã (cipher suite) khác nhau tuỳ thuộc vàonhiều yếu tố như phiên bản SSL đang dùng, chính sách của công ty về độ dài khoá mà họcảm thấy chấp nhận được - điều này liên quan đến mức độ bảo mật của thông tin, …
Các bộ mật mã được trình bày ở phần sau sẽ đề cập đến các thuật toán sau:
DES (Data Encryption Standard) là một thuật toán mã hoá có chiều dài khoá là 56bit
3-DES (Triple-DES): là thuật toán mã hoá có độ dài khoá gấp 3 lần độ dài khoátrong mã hoá DES
DSA (Digital Signature Algorithm): là một phần trong chuẩn về xác thực số đangđược được chính phủ Mỹ sử dụng
KEA (Key Exchange Algorithm) là một thuật toán trao đổi khoá đang được chínhphủ Mỹ sử dụng
MD5 (Message Digest algorithm) được phát thiển bởi Rivest
RSA: là thuật toán mã hoá công khai dùng cho cả quá trình xác thực và mã hoá dữliệu được Rivest, Shamir, and Adleman phát triển
Trang 5 RSA key exchange: là thuật toán trao đổi khoá dùng trong SSL dựa trên thuật toánRSA.
RC2 and RC4: là các thuật toán mã hoá được phát triển bởi Rivest dùng cho RSAData Security
SHA-1 (Secure Hash Algorithm): là một thuật toán băm đang được chính phủ Mỹ
sử dụng
Các thuật toán trao đổi khoá như KEA, RSA key exchange được sử dụng để 2 bênclient và server xác lập khoá đối xứng mà họ sẽ sử dụng trong suốt phiên giao dịch SSL Vàthuật toán được sử dụng phổ biến là RSA key exchange
Các phiên bản SSL 2.0 và SSL 3.0 hỗ trợ cho hầu hết các bộ mã hoá Người quản trị
có thể tuỳ chọn bộ mã hoá sẽ dùng cho cả client và server Khi một client và server trao đổithông tin trong giai đoạn bắt tay (handshake), họ sẽ xác định bộ mã hoá mạnh nhất có thể và
sử dụng chúng trong phiên giao dịch SSL
III.Cấu trúc SSL
1 Cấu trúc SSL
Vị trí của các giao thức trên, tương ứng với mô hình TCP/IP được minh hoạ theobiểu đồ sau:
Trang 6Hình 1.1 Cấu trúc SSL và giao thức SSL
Theo hình này, SSL ám chỉ một lớp (bảo mật) trung gian giữa lớp vận chuyển (TransportLayer) và lớp ứng dụng (Application Layer) SSL được xếp lớp lên trên một dịch vụ vậnchuyển định hướ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àoTCP chứ không chỉ HTTP Thực tế, một ưu điểm chính của các giao thức bảo mật lớp vậnchuyển (Transport layer) nói chung và giao thức SSL nói riêng là chúng độc lập với ứngdụ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 đượcxếp lớp lên trên TCP một cách trong suốt Hình 1.1 minh họa một số giao thức ứng dụngđiển hình bao gồ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ào trong 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
Nhìn chung, 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:
1 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ụngmật mã khóa chung
2 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 sau khimột sự thiết lập quan hệ ban đầu và sự thương lượng khóa session đã xảy ra
3 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ác thôngbá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ằng cách sử dụngMAC
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ân tích lưu
Trang 7lượ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ưu lượ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 khingay 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, SSLkhông ngăn các cuộc tấn công có định hướng dựa vào phần thực thi TCP, 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
Để 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ụngSSL Nói chung, có ba khả năng để giải quyết vấn đề này:
1 Sử dụng các số cổng chuyên dụng được dành riêng bởi Internet Asigned NumbersAuthority (IANA) Trong trường hợp này, một số cổng riêng biệt phải được gán cho mọigiao thức ứng dụng vốn sử dụng SSL
2 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ọnbả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 đôi chút)
3 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ăngthứ hai) có khuyết điểm là đòi hỏi mọi giao thức ứng dụng được chỉnh sửa để hiểu tiến trìnhthươ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ộtgiả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 giao thứ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) Tuy nhiê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 hai nối kết TCP nếu clientkhông biết những gì mà server hỗ trợ Trước tiên, client phải nối kế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 giao thứ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 (Simple Authentication và SecurityLayer) xác định một phù hợp để thêm sự hỗ trợ xác thực vào các giao thức ứng dụng dựavà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ươnglượ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ên SSL/TLSđược tóm tắt trong bảng 1.2 và được minh họa một phần trong hình 1.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 giao thức ứng
Trang 8dụng tương ứng (trong một số thuật ngữ ban đầu, S được sử dụng và được thêm tiền tố mộtcách không nhất quán và một số từ ghép).
Bảng1.1: Các số cổng được gán cho các giao thức ứng dụng chạy 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ương phápné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 1.3 Một session SSL có thể được sử dụngtrong 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 được tóm tắttrong bảng 1.4 Chúng bao gồm các tham số mật mã, chẳng hạn như các chuỗi byte ngẫunhiê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ọng cầ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
Bảng 1.2 Các thành phần thông tin trạng thái Session SSL
Session ID trạng thái session hoạt động hoặc có thể tiếp tục lại.Định danh được chọn bởi server để nhận dạng một
Peer certificate Chứng nhân X.509 phiên bản 3 của thực thể nganghà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
Trang 9Is resumable Cờ vốn biểu thị session có thể được sử dụng để bắt đầucác nối kết mới hay không.
Bảng 1.3 Các thành phần thông tin trạng thái nối kết SSL
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ảimã 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 SSLHandshake 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
đó
Số 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 cho mỗi nối kết
Như được minh họa trong hình 1.1, giao thức SSL gồm hai phần chính, SSL RecordProtocol và một số giao thức con SSL được xếp lớp trên nó:
- Record OK được xếp lớp trên một dịch vụ lớp vận chuyển định hướng nối kết vàđáng tin cậy, chẳng hạn như được cung cấp bởi TCP và cung cấp sự xác thực nguồn gốcthông báo, sự bí mật dữ liệu và dữ liệu
- Các dịch vụ toàn vẹn (bao gồm nhưng thứ như chống xem lại)
- Các giao thức con SSL được xếp lớp trên SSL Record Protocol để cung cấp sự hỗtrợ cho việc quản lý session SSL và thiết lập nối kết
Giao thức con SSL quan trọng nhất là SSL Handshake Protocol Lần lượt giao thức này làmột giao thức xác thực và trao đổi khóa vốn có thể được sử dụng để thương lượng, khởi tạo
và đồng bộ hóa các tham số bảo mật và thông tin trạng thái tương ứng được đặt ở một tronghai điểm cuối của một session hoặc nối kết SSL
Sau khi SSL Handshake Protocol đã hoàn tất, dữ liệu ứng dụng có thể được gửi và được
Trang 10nhận bằng cách sử dụng SSL Record Protocol và các tham số bảo mật được thương lượng
và các thành phần thông tin trạng thái
Được phát triển bởi Netscape, ngày nay giao thức Secure Socket Layer (SSL) đã được sửdụng rộng rãi trên World Wide Web trong việc xác thực và mã hoá thông tin giữa client vàserver Tổ chức IETF (Internet Engineering Task Force ) đã chuẩn hoá SSL và đặt lại tên làTLS (Transport Layer Security) Mặc dù là có sự thay đổi về tên nhưng TSL chỉ là mộtphiên bản mới của SSL Phiên bản TSL 1.0 tương đương với phiên bản SSL 3.1 Tuy nhiênSSL là thuật ngữ được sử dụng rộng rãi hơn
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 giao thức ứng dụngtầng cao hơn như là HTTP (Hyper Text Transport Protocol), IMAP ( Internet MessagingAccess Protocol) và FTP (File Transport 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 không phải là một giao thức đơn lẻ, mà là một tập các thủ tục đã được chuẩn hoá đểthực hiện các nhiệm vụ bảo mật sau:
Xác thực server: Cho phép người sử dụng xác thực được server muốn kết nối Lúc
này, phía browser sử dụng các kỹ thuật mã hoá công khai để chắc chắn rằng certificate vàpublic ID của server là có giá trị và được cấp phát bởi một CA (certificate authority) trongdanh sách các CA đáng tin cậy của client Điều này rất quan trọng đối với người dùng Ví
dụ như khi gửi mã số credit card qua mạng thì người dùng thực sự muốn kiểm tra liệu server
sẽ nhận thông tin này có đúng là server mà họ định gửi đến không
Xác thực Client: Cho phép phía server xác thực được người sử dụng muốn kết nối.
Phía server cũng sử dụng các kỹ thuật mã hoá công khai để kiểm tra xem certificate vàpublic ID của server có giá trị hay không và được cấp phát bởi một CA (certificateauthority) trong danh sách các CA đáng tin cậy của server không Điều này rất quan trọngđối với các nhà cung cấp Ví dụ như khi một ngân hàng định gửi các thông tin tài chínhmang tính bảo mật tới khách hàng thì họ rất muốn kiểm tra định danh của 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ả haibê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
Trang 11kết nối SSL đã được mã hoá còn được bảo vệ nhờ cơ chế tự động phát hiện các xáo trộn,thay đổi trong dữ liệu ( đó là các thuật toán băm – hash algorithm)
Giao thức SSL bao gồm 2 giao thức con: giao thức SSL record và giao thức SSL handshake.Giao thức SSL record xác định các định dạng dùng để truyền dữ liệu Giao thức SSLhandshake (gọi là giao thức bắt tay) sẽ sử dụng SSL record protocol để trao đổi một sốthông tin giữa server và client vào lấn đầu tiên thiết lập kết nối SSL
2 Giao thức SSL làm việc
Điểm cơ bản của SSL đượ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 trongnhiều ứng dụng khác nhau trên môi trường Internet
Toàn bộ cơ chế hoạt động và hệ thống thuật toán mã hoá sử dụng trong SSL đượcphổ biến công khai, trừ khoá chia xẻ tạm thời (session key) được sinh ra tại thời điểm traođổi giữa hai ứng dụng là tạo ngẫu nhiên và bí mật đối với người quan sát trên mạng máytí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 đốitượ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 (thí dụ RSA) Sau đây ta xem xét một cách khái quát cơ chế hoạt động củaSSL để phân tích cấp độ an toàn của nó và các khả năng áp dụng trong các ứng dụng nhạycảm, đặc biệt là các ứng dụng về thương mại và thanh toán điện tử
Giao thức SSL dựa trên hai nhóm con giao thức là giao thức “bắt tay” (handshakeprotocol) và giao thức “bản ghi” (record protocol) Giao thức bắt tay xác định các tham sốgiao dịch giữa hai đối tượng có nhu cầu trao đổi thông tin hoặc dữ liệu, còn giao thức bảnghi xác định khuôn dạng cho tiến hành mã hoá và truyền tin hai chiều giữa hai đối tượng đó
Khi hai ứng dụng máy tính, thí dụ giữa một trình duyệt web và máy chủ web, làmviệc với nhau, máy chủ và máy khách sẽ trao đổi “lời chào” (hellos) dưới dạng các thôngđiệp cho nhau với xuất phát đầu tiên chủ động từ máy chủ, đồng thời xác định các chuẩn vềthuật toán mã hoá và nén số liệu có thể được áp dụng giữa hai ứng dụng
Ngoài ra, các ứng dụng còn trao đổi “số nhận dạng/khoá theo phiên” (session ID,session key) duy nhất cho lần làm việc đó Sau đó ứng dụng khách (trình duyệt) yêu cầu cóchứng thực điện tử (digital certificate) xác thực của ứng dụng chủ (web server)
Trang 12Chứng thực điện tử thường được xác nhận rộng rãi bởi một cơ quan trung gian (là
CA -Certificate Authority) như RSA Data Sercurity hay VeriSign Inc., một dạng tổ chứcđộc lập, trung lập và có uy tín Các tổ chức này cung cấp dịch vụ “xác nhận” số nhận dạngcủa một công ty và phát hành chứng chỉ duy nhất cho công ty đó như là bằng chứng nhậndạng (identity) cho các giao dịch trên mạng, ở đây là các máy chủ webserver
Sau khi kiểm tra chứng chỉ điện tử của máy chủ (sử dụng thuật toán mật mã côngkhai, như RSA tại trình máy trạm), ứng dụng máy trạm sử dụng các thông tin trong chứngchỉ điện tử để mã hoá thông điệp gửi lại máy chủ mà chỉ có máy chủ đó có thể giải mã
Trên cơ sở đó, hai ứng dụng trao đổi khoá chính (master key) - khoá bí mật hay khoáđối xứng - để làm cơ sở cho việc mã hoá luồng thông tin/dữ liệu qua lại giữa hai ứng dụngchủ khách Toàn bộ cấp độ bảo mật và an toàn của thông tin/dữ liệu phụ thuộc vào một sốtham số: (i) số nhận dạng theo phiên làm việc ngẫu nhiên; (ii) cấp độ bảo mật của các thuậttoán bảo mật áp dụng cho SSL; và (iii) độ dài của khoá chính (key length) sử dụng cho lược
đồ mã hoá thông tin
IV Bảo mật với SSL
Trang 13Các bước SSL Record Protocol.
Các bước khác nhau của SSL Record Protocol vốn đi từ một đoạn dữ liệu thô đếnmột bản ghi SSL Plaintext (bước phân đoạn), SSL Compressed (bước nén) và SSLCiphertext (bước mã hóa) được minh họa trong hình trên Sau cùng, mỗi bản ghi SSL chứacác trường thông tin sau đây:
- Loại nội dung;
- Số phiên bản của giao thức;
Lúc bắt đầu mỗi session SSL, phương pháp nén và thông số mật mã thường được xácđịnh là rỗng Cả hai được xác lập trong suốt quá trình thực thi ban đầu SSL HandshakeProtocol Sau cùng, MAC được thêm vào mỗi bản ghi SSL Nó cung cấp các dịch vụ xácthực nguồn gốc thông báo và tính toàn vẹn dữ liệu Tương tự như thuật toán mã hóa, thuậttoán vốn được sử dụng để tính và xác nhận MAC được xác định trong thông số mật mã củatrạng thái session hiện hành Theo mặc định, SSL Record Protocol sử dụng một cấu trúc
Trang 14MAC vốn tương tự nhưng vẫn khác với cấu trúc HMAC hơn Có ba điểm khác biệt chínhgiữa cấu trúc SSL MAC và cấu trúc HMAC:
1 Cấu trúc SSL MAC có một số chuỗi trong thông báo trước khi hash để ngăn các hìnhthức tấn công xem lại riêng biệt
2 Cấu trúc SSL MAC có chiều dài bản ghi
3 Cấu trúc SSL MAC sử dụng các toán tử ghép, trong khi cấu trúc MAC sử dụng moduloecộng 2
Tất cả những điểm khác biệt này hiện hữu chủ yếu vì cấu trúc SSL MAC được sửdụng trước cấu trúc HMAC trong hầu như tất cả thông số kỹ thuật giao thức bảo mậtInternet Cấu trúc HMAC cũng được sử dụng cho thông số kỹ thuật giao thức TLS gần đâyhơn
Như được minh họa trong hình, một số giao thức con SSL được xếp lớp trên SSL RecordProtocol Mỗi giao thức con có thể tham chiếu đến các loại thông báo cụ thể vốn được gửibằng cách sử dụng SSL Record Protocol Thông số kỹ thuật SSL 3.0 xác định ba giao thứcSSL sau đây:
và server và để trao đổi một khóa session
Sau cùng, SSL ChangeCipherSpec Protocol được sử dụng để thay đổi giữa một thông sốmật mã này và một thông số mật mã khác Mặc dù thông số mật mã thường được thay đổi ởcuối một sự thiết lập quan hệ SSL, nhưng nó cũng có thể được thay đổi vào bất kỳ thời điểmsau đó Ngoài những giao thức con SSL này, một SSL Application Data Protocol được sửdụng để chuyển trực tiếp dữ liệu ứng dụng đến SSL Record Protocol
SSL handshake
Giao thức SSL sử dụng kết hợp 2 loại mã hoá đối xứng và công khai Sử dụng mãhoá đối xứng nhanh hơn rất nhiều so với mã hoá công khai khi truyền dữ liệu, nhưng mãhoá công khai lại là giải pháp tốt nhất trong qúa trình xác thực Một giao dịch SSL thường
Trang 15bắt đầu bởi quá trình “bắt tay” giữa hai bên (SSL handshake) Các bước trong quá trình “bắttay” có thể tóm tắt như sau:
1 Client sẽ gửi cho server số phiên bản SSL đang dùng, các tham số của thuật toán
mã hoá, dữ liệu được tạo ra ngẫu nhiên (đó chính là digital signature) và một số thông tinkhác mà server cần để thiết lập kết nối với client
2 Server gửi cho client số phiên bản SSL đang dùng, các tham số của thuật toán mãhoá, dữ liệu được tạo ra ngẫu nhiên và một số thông tin khác mà client cần để thiết lập kếtnối với server Ngoài ra server cũng gửi certificate của nó đến client, và yêu cầu certificatecủa client nếu cần
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ếtlậ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ùngvớ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 premastersecret cho phiên làm việc, mã hoá bằng khoá công khai (public key) mà server gửi đến trongcertificate ở bước 2, và gửi đến server
5 Nếu server có yêu cầu xác thực client, thì phía client sẽ đánh dấu vào phần thôngtin riêng chỉ liên quan đến quá trình “bắt tay” này mà hai bên đều biết Trong trường hợpnày, client sẽ gửi cả thông tin được đánh dấu và certificate của mình cùng với premastersecret đã được mã hoá tới server
6 Server sẽ 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á bí mật (privatekey) để 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ẽ sử dụng master secret để tạo ra các session key, đó chính là cáckhoá đố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
8 Client sẽ gửi một lời nhắn đến server thông báo rằng các message tiếp theo sẽđược mã hoá bằng session key Sau đó nó gửi một lời nhắn đã được mã hoá để thông báorằng phía client đã kết thúc giai đoạn “bắt tay”
9 Server cũng gửi một lời nhắn đến client thông báo rằng các message tiếp theo sẽđược mã hoá bằng session key Sau đó nó gửi một lời nhắn đã được mã hoá để thông báorằng server đã kết thúc giai đoạn “bắt tay”
Trang 1610 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ả haiphía client và server sẽ sử dụng các session key để mã hoá và giải mã thông tin trao đổi giữahai bên, và kiểm tra tính toàn vẹn dữ liệu
2 Thực thi
Bước đầu tiên trong việc thực thi SSL cho Web site của bạn đó là phải có được chứng chỉSSL từ một trung tâm cấp chứng chỉ SSL Chứng chỉ SSL của Web Server để phân biệt tênmiền và địa chỉ IP riêng biệt của nó Bạn có thể mua chứng chỉ SSL từ các nhà cung cấpchứng chỉ như Verisign, Thawte, Entrust hay một số nhà cung cấp chứng chỉ công cộngkhác Chứng chỉ của những công ty đó đều được các trình duyệt lớn nhận ra Bạn cũng cóthể có được chứng chỉ từ một CA nội bộ
Để cấu hình IIS 6.0 Web site (chạy trên Windows Server 2003) sử dụng mã hóa SSL, bạnthực hiện theo các bước dưới đây:
1 Mở IIS Manager từ menu Programs | Administrative Tools
2 Trong cửa sổ bên trái của giao diện người dùng, bạn mở nút có tên Web server(trong ví dụ là CA1), sau đó mở rộng thư mục Web Sites như trong hình 1.2
Hình 1.2 Cấu hình Websites
3 Kích chuột phải vào Web site mà bạn muốn sử dụng SSL, sau đó chọn Properties
để mở được trang thuộc tính Properties cho trang này
4 Kích vào tab Directory Security như trong hình B