SSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets LayerSSL Secure Sockets Layer
SSL PROJECT Thọ Sv: Trịnh Hữu NỘI DUNG PROJECT PHẦN I: TỔNG QUAN VỀ SSL PHẦN II: KIẾN TRÚC SSL PHẦN III: GIAO THỨC SSL PHẦN IV.TÍNH TỐN MÃ HĨA PHẦN I : TỔNG QUAN VỀ SSL 1.SSL Là • • SSL - Secure Sockets Layer – tiêu chuẩn an ninh cơng nghệ tồn cầu tạo liên kết mã hóa máy chủ web trình duyệt Liên kết đảm bảo tất liệu trao đổi máy chủ web trình duyệt ln bảo mật an tồn Chứng thư số SSL cài website doanh nghiệp cho phép khách hàng truy cập xác minh tính xác thực, tin cậy website, đảm bảo liệu, thông tin trao đổi website khách hàng mã hóa, tránh nguy bị can thiệp -1- SSL PROJECT Thọ Sv: Trịnh Hữu Tại Sao Nên Sử Dụng SSL Ngày việc bảo mật thông tin yếu tố quan trọng để định sống cịn tổ chức, cơng ty hay doanh nghiệp Với phát triển nhanh chóng cơng nghệ mang lại nhiều tiện ích cho người dùng đồng thời đặt nhu cầu cấp thiết an toàn bảo mật SSL giải pháp tốt đáp ứng nhu cầu coi “lá chắn cuối cùng” bảo mật thương mại điện tử Giao thức SSL ban đầu phát triển Netscape.Version 1.0 khơng công bố rộng rãi.Version 2.0 công bố vào tháng 2/1995 chứa nhiều lỗ hỏng bảo mật sau đưa đến mơ hình SSL version 3.0 ban hành năm 1996.Bản sau dùng cho TLS version 1.0 IETF xác định giao thức chuẩn RFC 2246 vào tháng 1/1999 Ngày Visa, MasterCard, American Express nhiều công ty giải pháp tài hàng đầu khác giới ứng dụng SSL thương mại điện tử Việc truyền thông tin nhạy cảm mạng khơng an tồn vấn đề sau: • • • Bạn luôn bạn trao đổi thông tin với đối tượng cần trao đổi Dữ liệu mạng bị chặn ,vì liệu bị đối tượng thứ khác đọc trộm, thường biết đến attacker Nếu attacker chặn liệu, attacker sửa đổi liệu trước gửi đến người nhận SSL giải vấn đề trên.SSL giải vấn đề cách cho phép cách tùy chọn bên trao đổi chắn định danh phía đối tác trình gọi uthentication (xác thực).Một bên xác thực,SSL cung cấp kết nối mã hóa bên để truyền bảo mật message Việc mã hóa q trình trao đổi thơng tin bên cung cấp riêng tư bí mật,vì mà giải vấn đề thứ 2.Thuật toán mã hóa sử dụng với SSL bao gồm hàm băm mã hóa,tương tự checksum.Nó đảm bảo liệu khơng bị thay đổi q trình truyền dẫn.Hàm băm mã hóa giải vấn đề thứ 3,tính toàn vẹn liệu Chú ý rằng,cả xác thực mã hóa tùy chọn, phụ thuộc vào cipher suites (các mã hóa) đàm phán đối tượng Một ví dụ rõ ràng mà bạn nên sử dụng SSL trao đổi thông tin giao dịch qua mạng (e-commerce).Trong trao đổi e-commerce, thật dại dột giả định bạn chắn định danh server mà bạn trao đổi thơng tin Ai dễ dàng tạo Website giả hứa hẹn dịch vụ tuyệt vời ,chỉ bạn nhập vào số tài khoản, SSL cho phép bạn, client,xác thực định danh server.Nó cho phép -2- SSL PROJECT Thọ Sv: Trịnh Hữu server xác thực định danh client,mặc dù giao tác Internet,việc làm Một client server hài lòng với định danh bên đối tác.SSL cung cấp tính bảo mật tính tồn vẹn thơng qua thuật tốn mã hóa mà sử dụng.Điều cho phép thông tin nhạy cảm,như số tài khoản,được truyền cách an toàn Internet Trong SSL cung cấp tính xác thực,tính bảo mật tồn vẹn dự liệu,nó khơng cung cấp non-repudiation (tính khơng từ chối).Non-repudiation có nghĩa đối tượng gửi message ,thì sau khơng thể phủ nhận việc gửi message đó.Khi chữ kí số tương đương liên kết với message,việc trao đổi sau chứng minh.SSL khơng cung cấp non-repudiation SSL Làm Việc Như Thế Nào Công nghệ SSl bảo vệ giao dịch trực tuyến cao mức độ tin cậy website khách hàng bước -3- SSL PROJECT Thọ Sv: Trịnh Hữu Trình Duyệt Làm Thế Nào Để Kiểm Tra Một SSL Là Có Thực Hay Khơng? Khi Website gởi cho trình duyệt chứng SSL, Trình duyệt gởi chứng đến máy chủ lưu trữ chứng số phê duyệt Các máy chủ thành lập cơng ty uy tín GlobalSign, VeriSign Về mặt kỹ thuật, SSL sử dụng mã hóa cơng khai Kỹ thuật giúp cho Website Trình duyệt tự thỏa thuận khóa dùng suốt q trình trao đổi thơng tin sau Bộ khóa thay đổi theo lần giao dịch kế tiếp, người khác giải mã có liệu máy chủ lưu trữ chứng số nói -4- SSL PROJECT Thọ Sv: Trịnh Hữu 5.Tiến Trình SSL Việc trao đổi mạng sử dụng SSL bắt đầu với việc trao đổi thông tin qua lại client server.Sự trao đổi thông tin gọi SSL handshake Ba mục tiêu SSL handshake là: • • • Đàm phán cipher suit Xác thực định danh (tùy chọn) Hình thành chế bảo mật thông tin, cách thỏa thuận chế mã hóa Đàm phán Cipher suite : Một phiên SSL bắt đầu với việc đàm phán client server xem cipher suite mà chúng sử dùng.Một cipher suite tập thuật tốn mã hóa kích thước khóa mà máy tính dùng để mã hóa liệu.Một cipher suite bao gồm thơng tin thuật tốn trao đổi khóa cơng khai thuật tốn thỏa thuận khóa,và hàm băm mã hóa.Client nói với server cipher suite có sẵn server lựa chọn cipher suite tốt chấp nhận Xác thực server : Trong SSL,bước xác thực tùy chọn,nhưng ví dụ giao tác e-commerce Web, client theo thông thường muốn xác thực server.Việc xác thực server cho phép client chắn server đại diện cho đối tượng mà client tin tưởng Để chứng minh server thuộc tổ chức mà khẳng định đại diện,server phải trình chứng khóa cơng khai cho client.Nếu chứng hợp lệ ,client chắn định danh server Thông tin trao đổi qua lại client server cho phép chúng thỏa thuận khóa bí mật chung.Ví dụ,với RSA,client dùng khóa cơng khai server,có từ chứng khóa cơng khai, để mã hóa thơng tin khóa bí mật.Client gửi thơng tin khóa bí mật mã hóa đến server.Chỉ có server giải mã message trình giải mã phải cần đến khóa riêng server Gửi liệu mã hóa: Bây giờ,cả client server truy cập đến khóa bí mật chung.Với message ,chúng dùng đến hàm băm mã hóa,đã chọn bước thứ tiến trình này,và chia sẻ thơng tin bí mật,để tính tốn HMAC nối thêm vào message.Sau đó,chúng dùng khóa bí mật thuật tốn khóa bí mật đàm phán bước tiến trình để mã hóa liệu HMAC an tồn.Client server trao đổi thơng tin với cách an toàn với liệu băm mã hóa Giao thức SSL: -5- SSL PROJECT Thọ Sv: Trịnh Hữu Phần trước cung cấp mô tả sơ lược SSL handshake, trao đổi thông tin client server trước gửi message mã hóa.Phần mơ tả chi tiết hơn.Hình sau minh họa chuỗi message trao đổi SSL handshake.Các message mà gửi trường hợp đánh dấu tùy chọn Các message SSL gửi theo thứ tự sau: 1) Client hello: client gửi đến server thông tin bao gồm phiên SSL cao danh sách cipher suite mà hỗ trợ (TLS 1.0 SSL3.1).Thông tin cipher suite bao gồm thuật tốn mã hóa kích thước khóa -6- SSL PROJECT Thọ Sv: Trịnh Hữu 2) Server hello: server chọn phiên SSL cao cipher suite tốt mà client server hỗ trợ, gửi thông tin cho client 3) Certificate: server gửi cho client chứng chuỗi chứng chỉ.Về bản,1 chuỗi chứng bắt đầu chứng khóa cơng khai server kết thúc chứng gốc tổ chức có thẩm quyền chứng chỉ.Message tùy chọn,nhưng dùng xác thực server cần thiết 4) Certificate request: server cần xác thực client,nó gửi cho client yêu cầu xem chứng chỉ.Trong ứng dụng internet,message gửi 5) Server key exchange: server gửi cho client message trao đổi khóa server khóa cơng khai gửi phần 3) bên khơng đủ cho trao đổi khóa 6) Server hello done: server nói với client hồn thành message đàm phán ban đầu 7) Certificate: server cần chứng từ client message 4, client gửi chuỗi chứng nó,cũng giống server làm message 8) Client key exchange: client sinh thông tin dùng để tạo khóa mã hóa đối xứng.Với RSA, client mã hóa thơng tin khóa khóa cơng khai server gửi đến server 9) Certificate verify: message gửi client trình chứng trên.Mục tiêu cho phép server hồn thành tiến trình xác thực client.Khi message dùng,client gửi thơng tin với chữ kí số tạo hàm băm mã hóa.Khi server giải mã thơng tin khóa cơng khai client,server xác thực client 10) Change cipher spec: client gửi message bảo server thay đổi kiểu mã hóa 11) Finished: client nói với server sẵn sàng để bắt đầu trao đổi liệu an toàn 12) Change cipher spec: server gửi message bảo client thay đổi kiểu mã hóa 13) Finished: server nói với client sẵn sàng để bắt đầu trao đổi liệu an toàn.Kết thúc SSL handshake 14) Encrypted data: client server trao đổi với nhau,sử dụng thuật toán mã hóa đối xứng hàm băm mã hóa đàm phán message 2,và dùng khóa bí mật mà client gửi cho server message 15) Closed messages : Kết thúc 1kết nối,mỗi bên gửi message close-notify để thông báo đầu biết kết nối bị đóng -7- SSL PROJECT Thọ Sv: Trịnh Hữu Nếu tham số sinh phiên SSL lưu lại,các tham số dùng lại cho phiên SSL sau.Việc lưu lại tham số phiên SSL cho phép trao đổi bảo mật sau bắt đầu nhanh chóng PHẦN II: KIẾN TRÚC SSL SSL thiết kế để dùng TCP cung cấp dịch vụ bảo mật đầu cuối-đến-đầu cuối đáng tin cậy.SSL giao thức đơn mà lớp giao thức,như minh họa SSL Record Protocol cung cấp dịch vụ bảo mật cho nhiều giao thức khác lớp trên.Trong thực tế, Hyper Text Transfer Protocol (HTTP),cung cấp dịch vụ trao đổi cho tương tác Web client/server,có thể hoạt động đỉnh SSL.Ba giao thức lớp định nghĩa phần SSL: Handshake Protocol,Change Cypher Spec Protocol Alert Protocol.Các giao thức mang tính đặc trưng-SSL dùng phần quản lý trao đổi SSL xét đến phần sau Hai khái niệm SSL quan trọng SSL session (phiên SSL) SSL connection ( kết nối SSL) ,được định nghĩa sau: Connection ( kết nối): kết nối transport _ định nghĩa mô hình phân lớp OSI_ cung cấp loại dịch vụ thích hợp.Với SSL,những kết nối mối quan hệ ngang hàng.Các kết nối trao đổi nhanh chóng.Mỗi kết nối gắn với phiên -8- SSL PROJECT Thọ Sv: Trịnh Hữu Session (phiên): phiên SSL liên kết client server.Các phiên tạo Handshake Protocol (giao thức bắt tay).Các phiên định nghĩa tập tham số bảo mật mật mã,có thể chia sẻ nhiều kết nối.Các phiên dùng để tránh đàm phán tốn kém_về tham số bảo mật mới_cho kết nối Giữa cặp nhóm (các ứng dụng HTTP client hay server),có thể có nhiều kết nối bảo mật Về lý thuyết ,có thể có nhiều phiên đồng thời nhóm,nhưng đặc trưng khơng dùng thực tiễn Thực có nhiều trạng thái gắn với phiên.Một phiên thành lập,có trạng thái hoạt động thời cho đọc ghi, (như nhận gửi ).Thêm vào đó, suốt trình Handshake Protocol, trạng thái treo đọc ghi tạo ra.Dựa kết luận thành công Handshake Protocol,các trạng thái treo trở thành trạng thái thời -Một trạng thái phiên định nghĩa thông số sau (các định nghĩa lấy từ đặc trưng SSL): Session Identifier : chuỗi byte chọn server để nhận dạng trạng thái phiên hoạt động (active) hay phục hồi lại (resumable) Peer certificate: chứng X509.v3.Thành phần trạng thái null Compression method: thuật tốn dùng để nén liệu trước mã hóa Cypher spec : thuật tốn mã hóa liệu (như rỗng,AES…) thuật toán băm (như MD5 hay SHA –1) sử dụng để tính tốn MAC.Nó định nghĩa thuộc tính mã hóa hash-size Master secret : 48 byte bí mật chia sẻ client server Is resumable : cờ phiên dùng để khởi tạo kết nối khác hay không - Một trạng thái kết nối định nghĩa tham số sau: Server and client random: chuỗi byte chọn server client cho kết nối Server write MAC secret: khóa bí mật sử dụng phép tính MAC liệu, gửi server Client write MAC secret: khóa bí mật sử dụng phép tính MAC liệu,được gửi client -9- SSL PROJECT Thọ Sv: Trịnh Hữu Server write key: khóa mã hóa quy ước cho liệu mã hóa server giải mã client Client write key : khóa mã hóa quy ước cho liệu mã hóa client giải mã server Initialization vectors: khối mã mode CBC dùng, vector khởi tạo (IV) trì cho key.Phần khởi tạo trước tiên SSL Handshake Protocol.Sau đó,khối mã hóa cuối từ record để dành lại để dùng làm IV cho record sau Sequence number : bên trì sequence number riêng cho message truyền nhận kết nối.Khi bên gửi nhận change cypher spec message, sequence number thích hợp thiết lập 0.Sequence number vượt 264-1 PHẦN III: GIAO THỨC SSL 1.Giao Thức SSL Record: SSL Record Protocol cung cấp dịch vụ cho kết nối SSL: Confidentiality (tính cẩn mật): Handshake Protocol định nghĩa khóa bí mật chia sẻ, khóa sử dụng cho mã hóa quy ước liệu SSL Message integrity (tính tồn vẹn thơng điệp):Handshake Protocol định nghĩa khóa bí mật chia sẻ, khóa sử dụng để hình thành MAC (mã xác thực message) Hình sau toàn hoạt động SSL Record Protocol.SSL Record Protocol nhận message ứng dụng truyền đi,phân mảnh liệu thành nhiều block,nén liệu cách tùy chọn,áp dụng vào MAC,mã hóa,thêm vào header,và truyền khối kết thu segment TCP.Dữ liệu nhận được giải mã,kiểm tra ,giải nén,sắp xếp lại phân phối đến người sử dụng lớp cao - 10 - SSL PROJECT Thọ • • • • • • Sv: Trịnh Hữu pad_1: byte 0x36 (0011 0110) lặp lại 48 lần (384 bit) cho MD5 40 lần (320 bit) cho SHA-1 pad_2: byte 0x5c (0101 1100) lặp lại 48 lần cho MD5 40 lần cho SHA-1 seq_num: sequence number cho message SSLCompressed.type: giao thức lớp dùng để xử lí phân mảnh SSLCompressed.length: chiều dài phân mảnh nén SSLCompressed.fragment: phân mảnh nén (nếu nén không dùng, phân mảnh dạng plaintext) Chú ý rằng,cái tương tự thuật toán HMAC.Điểm khác biệt phần đệm (pad) || SSLv3 XOR HMAC.Thuật toán MAC SSLv3 dựa phác thảo Internet ban đầu cho HMAC.Phiên gần HMAC định nghĩa RFC 2104,sử dụng XOR Kế tiếp, message nén cộng thêm MAC mã hóa theo phương pháp mã hóa đối xứng: Mã hóa khơng làm tăng chiều dài nội dung 1024 byte,vì chiều dài tổng cộng khơng vượt q 214+2048 Các thuật tốn mã hóa sau cho phép: • • • • • • • • DES (Data Encryption Standard): thuật toán mã hoá có chiều dài khố 56 bit 3-DES (Triple-DES): thuật tốn mã hố có độ dài khố gấp lần độ dài khoá mã hoá DES DSA (Digital Signature Algorithm): phần chuẩn xác thực số được phủ Mỹ sử dụng KEA (Key Exchange Algorithm): thuật toán trao đổi khoá phủ Mỹ sử dụng MD5 (Message Digest algorithm): phát thiển Rivest RSA: thuật toán mã hố cơng khai dùng cho q trình xác thực mã hoá liệu Rivest, Shamir, and Adleman phát triển RSA key exchange: thuật toán trao đổi khoá dùng SSL dựa thuật toán RSA RC2 and RC4: thuật toán mã hoá phát triển Rivest dùng cho RSA Data Security - 12 - SSL PROJECT Thọ • Sv: Trịnh Hữu SHA-1 (Secure Hash Algorithm): thuật toán băm phủ Mỹ sử dụng Các thuật tốn trao đổi khoá KEA, RSA key exchange sử dụng để bên client server xác lập khoá đối xứng mà họ sử dụng suốt phiên giao dịch SSL Và thuật toán sử dụng phổ biến RSA key exchange Các phiên SSL 2.0 SSL 3.0 hỗ trợ cho hầu hết mã hoá Người quản trị tuỳ chọn mã hố dùng cho client server Khi client server trao đổi thông tin giai đoạn bắt tay (handshake), họ xác định mã hoá mạnh sử dụng chúng phiên giao dịch SSL Fortezza sử dụng mục tiêu mã hóa smart card Với mã hóa stream (luồng),message nén cộng thêm MAC mã hóa.Chú ý MAC tính tốn trước mã hóa xảy MAC mã hóa với plaintext plaintext nén Với mã hóa block (khối),MAC đệm thêm trước mã hóa.Phần đệm thêm (padding) có dạng gồm nhiều byte đệm theo sau byte rõ chiều dài phần đệm.Tổng số lượng đệm vào lượng nhỏ cho tổng kích thước liệu mã hóa (plaintext +MAC + padding) bội số chiều dài khối mã hóa.Ví dụ, plaintext (hoặc text nén nén dùng) 58 byte, với MAC 20 byte (dùng SHA-1), mã hóa với chiều dài block byte (như DES ).Cùng với byte padding.length ,nó sinh tổng cộng 79 byte.Để tạo số nguyên bội 8,1 byte đệm thêm vào Bước cuối xử lí SSL Record Protocol gắn thêm vào1 header ,bao gồm mục sau: • Content Type (8 bit): giao thức lớp dùng để xử lí phân mảnh kèm • Major Version (8 bit): phiên SSL tối đa dùng Ví dụ, SSLv3, giá • • trị Minor Version (8 bit) : phiên tối thiểu dùng.Ví dụ, SSLv3 ,giá trị Compressed Length (16 bit) : chiều dài theo byte phân mảnh plaintext (hoặc chiều dài theo byte phân mảnh nén nén dùng).Gía trị lớn 214+2048 Các loại nội dung định nghĩa change_cipher_spec,alert,handshake, application_data Ba giao thức đặc trưng-SSL,được bàn đến phần kế tiếp.Chú ý khơng có khác biệt tạo ứng dụng (như HTTP ) dùng SSL,nội dung liệu tạo ứng dụng khơng suốt SSL Hình sau minh họa định dạng SSL record: - 13 - SSL PROJECT Thọ Sv: Trịnh Hữu 2.Giao Thức SSL Change Ciper Spec: Giao thức SSL Change Cipher Spec giao thức đơn giản ba giao thức đặc trưng SSL mà sử dụng giao thức SSL Record Giao thức bao gồm message đơn byte giá trị Mục đích message sinh trạng thái để gán vào trạng thái tại,và trạng thái cập nhật lại mã hóa để sử dụng kết nối - 14 - SSL PROJECT Thọ Sv: Trịnh Hữu 3.Giao Thức SSL Alert : Giao thức SSL Alert dùng để truyền cảnh báo liên kết SSL với đầu cuối bên kia.Như với ứng dụng khác sử dụng SSL, alert messages nén mã hóa, định trạng thái Mỗi message giao thức gồm bytes Byte giữ giá trị cảnh báo(1) nguy hiểm(2) để thông báo độ nghiêm ngặt message.Nếu mức độ nguy hiểm,SSL chấp dứt kết nối.Những kết nối phiên khác tiếp tục khơng kết nối khác phiên khởi tạo thêm.Byte thứ hai chứa mã cảnh báo đặc trưng Đầu tiên , liệt kê cảnh báo mà mức nguy hiểm ( định nghĩa từ thơng số SSL): • • • • • unexpected_message: message khơng thích hợp bad_record_mac: MAC khơng xác decompression_failure: việc giải nén nhận input khơng thích hợp(ví dụ giải nén giải nén lớn độ dài tối đa cho phép) handshake_failure: bên gửi thương lượng chấp nhận thông số bảo mật đưa từ lựa chọn có sẵn illegal_parameter: trường handshake message vượt khỏi dãy trái với trường khác Phần cịn lại cảnh báo sau: • • • • • • • close_notify: thông báo cho bên nhận bên gửi không gửi thêm message kết nối này.Mỗi nhóm u cầu gửi close_notify cảnh báo trước kết thúc phần ghi kết nối no_certificate: gửi để trả lời cho yêu cầu certificate khơng certificate thích hợp có sẵn bad_certificate: certificate nhận khơng hợp lệ (ví dụ chứa chữ ký không xác minh) unsupported_certificate: dạng certificate nhận khơng hỗ trợ certificate_revoked: certificate bị thu hồi nhà cung cấp certificate_expired: certificate hết hạn đăng ký certificate_unknown: số phát sinh khơng nói rõ xuất q trình xử ký certificate làm cho chấp nhận - 15 - SSL PROJECT Thọ Sv: Trịnh Hữu 4.Giao Thức SSL HANDSHAKE - 16 - SSL PROJECT Thọ Sv: Trịnh Hữu Phần khó hiểu ‟ SSL giao thức Handshake Giao thức cho phép server client chứng thực với thương lượng chế mã hóa , thuật tốn MAC khóa mật mã sử dụng để bảo vệ liệu gửi SSL record.Giao thức SSL Handshake thường sử dụng trước liệu ứng dụng truyền Giao thức SSL Handshake bao gồm loạt message trao đổi client server Mỗi message có ba trường: • • • Type (1 byte): mười dạng message Length (3 bytes): độ dài message theo bytes Content (>=0 bytes): tham số kèm với message này, liệt kê hình sau: Quá trình trao đổi lúc ban đầu cần thiết lập kết nối logic client server.Việc trao đổi xem có giai đoạn Được minh họa hình ảnh đây: - 17 - SSL PROJECT Thọ Sv: Trịnh Hữu Giai đoạn – Thiết lập khả bảo mật : - 18 - SSL PROJECT Thọ Sv: Trịnh Hữu Giai đoạn dung để bắt đầu kết nối logic thiết lập khả bảo mật mà liên kết với nó.Việc trao đổi khởi tạo client việc gửi client_hello message với thơng số sau đây: • • • • • Version: version SSL mà client biết Random: cấu trúc sinh ngẫu nhiên từ client, bao gồm nhãn thời gian 32 bit 28 bytes sinh sinh số ngẫu nhiên an toàn Những giá trị phục vụ cho lần vsử dụng suốt q trình trao đổikhóa để ngăn cơng lập lại Session ID: ID phiên có chiều dài thay đổi được.SessionID khác nghĩa client muốn cập nhật tham số kết nối tồn hay tạo kết nối phiên này.SessionID = client muốn thiết lập kết nối phiên CipherSuite: danh sách mà chứa biên dịch thuật tốn mã hóa hỗ trợ client, tham khảo theo thứ tự giảm dần Mỗi thành phần danh sách (mỗi mã hóa) định nghĩa khóa trao đổi CipherSpec, thơng số bàn đến sau Compression Method: danh sách phương thức nén mà client hỗ trợ Sau gửi client_hello message, client chờ nhận server_hello message mà chứa thông số với client_hello message.Với server_hello message, thỏa thuận kèm theo áp dụng Trường Version chứa version thấp đề nghị client cao hổ trợ sever.Trường Random sinh server độc lập với trường Random client Nếu trường SessionID client khác 0, giá trị tương tự dùng server,ngược lại trường SessionID server chứa giá trị phiên Trường CipherSuite chứa mã hóa chọn server từ đề xuất client Trường Compression chứa phương thức nén chọn server từ đề xuất client Thành phần thông số Cipher Suite phương thức trao đổi khóa (ví dụ cách khóa mã hóa cho việc mã hóa thơng thường MAC trao đổi) Những phương thức trao đổi khóa sau hỗ trợ: • • • RSA: khóa bí mật mã hóa với khóa cơng khai RSA bên nhận Một public-key certificate cho khóa bên nhận phải tạo sẵn Fixed Diffie-Hellman: trao đổi khóa Diffie-Hellman certificate server chứa thông số công khai Diffie-Hellman ký Certificate Authority (CA) Nghĩa certificate khóa cơng khai chứa thơng số khóa cơng khai Diffie-Hellman Client chứa sẵn thơng số khóa cơng khai Diffie- Hellman certificate chứng thực client yêu cầu message trao đổi khóa.Phương thức mang lại kết khóa bí mật cố định hai đầu, dựa tính tốn Diffie- Hellman sử dụng khóa cơng khai cố định Ephemeral Diffie-Hellman: Phương pháp sử 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 trao đổi,được ký sử dụng khóa bí mật RSA DSS bên gửi.Bên nhận sử dụng khóa cơng khai tương ứng để xác minh chữ ký Certificate sử dụng để xác thực khóa cơng khai Điều bảo - 19 - SSL PROJECT Thọ • • Sv: Trịnh Hữu đảm ba lựa chọn Diffie-Hellman kết tạm thời khóa xác thực Anonymous Diffie-Hellman: thuật tốn Diffie-Hellman sử dụng, không chứng thực.Nghĩa lần bên gửi thơng số Diffie-Hellman cơng khai cho bên khơng xác thực.Điều gần bị cơng cơng Man-in-the-middle ,trong kẻ cơng điều khiển nhóm anonymous Diffie-Hellman Fortezza: phương pháp định nghĩa cho lược đồ Fortezza Định nghĩa kèm theo cho phương pháp trao đổi khóa CipherSpec , bao gồm trường sau : • • • • • • • CipherAlgorithm: vài thuật toán kể đến : RC4, RC2, DES, 3DES, DES40, IDEA, Fortezza MACAlgorithm: MD5 SHA-1 CipherType: luồng khối IsExportable: True False HashSize: 0, 16 (cho MD5), hay 20 (cho SHA-1) bytes Key Material: thứ tự bytes mà chứa liệu dùng sinh khóa IV Size: kích thước giá trị khởi tạo cho mã hóa Cipher Block Chaining (CBC) Giai đoạn – Xác thực server trao đổi khóa : Server bắt đầu giai đoạn cách gửi certificate nó cần xác thực; thơng điệp chứa một chuỗi certificate(chứng thực) X.509 Thông điệp chứng thực yêu cầu cho phương pháp trao đổi khóa thỏa thuận, ngoại trừ anonymous Diffie-Hellman.Chú ý fixed Diffie-Hellman dùng,thì thơng điệp chứng thực có chức thơng điệp trao đổi khóa server chứa tham số Diffie-Hellman cơng khai server Sau thơng điệp server_key_exchange gửi u cầu.Nó khơng yêu cầu trường hợp sau: (1) Server gửi certificate với tham số fixed Diffie-Hellman (2) Trao đổi khố RSA dùng Thơng điệp server_key_exchange cần cho trường hợp sau: – Anonymous Diffie-Hellman : Nội dung thơng điệp bao gồm hai giá trị Diffie-Hellman tồn cục(một số nguyên tố số nguyên tố với số đó) với khóa Diffie- Hellman server – Ephemeral Diffie-Hellman : nội dung thông điệp bao gồm tham số Diffie-Hellman cung - 20 - SSL PROJECT Thọ Sv: Trịnh Hữu cấp cho anonymous Diffie-Hellman,cùng với chữ kí tham số – Trao đổi khóa RSA,mà theo server sử dụng RSA có khóa chữ kí RSA Theo đó,client khơng thể gửi cách đơn giản khóa bí mật mã hóa với khóa cơng khai/bí mật RSA phụ sử dụng thơng điệp server_key_exchanged để gửi khóa công khai.Nội dung thông điệp bao gồm hai tham số khóa cơng khai RSA phụ(số mũ số dư) với chữ ký tham số – Fortezza: vài chi tiết thêm chữ kí đảm bảo Như thường lệ,một chữ kí tạora việc lấy mã băm thông điệp mã hóa với khóa bí mật bên gửi Trong trường hợp mã băm định nghĩa: Hash (ClientHello.random||ServerHello.random||ServerParams) Vì mã băm bao gồm khơng thơng số Diffie-Hellman hay RSA,mà cịn có hai số ngẫu nhiên từ thông điệp hello khởi tạo.Điều đảm bảo chống lại công replay misrepresentation(giả dạng).Trong trường hợp chữ kí DSS,mã băm biểu diễn sử dụng giải thuật SHA-1 Trong trường hợp chữ kí RSA,cả mã băm MD5 SHA-1 tính tốn, nối hai mã băm(36 byte) mã hoá với khóa bí mật server Kế đến, nonanonymous server (server khơng dùng anonymous Diffie-Hellman) u cầu certificate từ client.Một thông điệp certificate_request bao gồm hai thông số certificate_type certificate_authorities Kiểu certificate giải thuật khóa cơng khai,và dùng: • • • • • • • RSA,chỉ dùng chữ kí DSS,chỉ dùng chữ kí RSA cho Diffie-Hellman thích hợp, trường hợp chữ kí dùng để xác thực,bằng cách gửi dùng certificate kí với RSA DSS cho fixed Diffie-Hellman, 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ứ thông điệp certificate_request danh sách tên CA đặc biệt chấp nhận Thông điệp cuối giai đoạn 2, phần yêu cầu,là thông điệp Server_done,mà gửi cho server để điểm cuối thông điệp cuối server_hello message kèm.Sau gửi thông điệp,server chờ hồi đáp client.Thơng điệp khơng có tham số - 21 - SSL PROJECT Thọ Sv: Trịnh Hữu Giai đoạn – Xác thực client trao đổi khóa : • Trong nhận thơng điệp server_done, client xác nhận xem server cung cấp chứng hợp lệ hay chưa yêu cầu kiểm tra xem thông số server_hello chấp nhận hay không.Nếu tất thoả mãn, client gửi hay nhiều message trở lại cho server Nếu server yêu cầu certificate,client bắt đầu giai đoạn cách gửi thơng điệp certificate.Nếu khống có certificate phù hợp hợp lệ, client gửi cảnh báo no_certificate thay • Kế đến thơng điệp client_key_exchange phải gửi giai đoạn này.Nội dung thông điệp phụ thuộc vào kiểu trao đổi khóa Như sau: – RSA: client sinh trường 48 byte pre-master secret mã hóa với khóa cơng khai từ chứng thực server khóa RSA phụ từ thơng điệp server_key_exchange Nó dùng để tính tốn master secret(sẽ nói sau) – Ephemeral Anonymous Diffie-Hellman: tham số Diffie-hellman công khai client gửi – Fixed Diffie-Hellman: tham số Diffie-Hellman công khai client gửi thơng điệp certificate,vì nội dung thông điệp null – Fortezza: tham số Fortezza client gửi • Cuối cùng,trong giai đoạn này,client gửi message certificate_verify để cung cấp xác thực tường minh chứng client.Thông điệp gửi theo sau client certificate đánh dấu có khả năng(nghĩa tất certificate ngoại trừ chứa tham số fixed Diffie-Hellman) Thông điệp đánh dấu mã băm dựa thơng điệp có trước,được định nghĩa sau: CertificateVerify.signature.md5_hash MD5(master_secret || pad_2 || D5(handshake_messages || master_secret || pad_1)); Certificate.signature.sha_hash SHA(master_secret || pad_2 || SHA(handshake_messages || master_secret || pad_1)); • Với pad_1 pad_2 giá trị định nghĩa sớm cho MAC, handshake_messages xem xét đến tất thông điệp giao thức bắt tay gửi hay nhận client_hello khơng bao gồm thơng điệp này,và master_secret khóa bí mật tính tốn mà q trình xây dựng tìm hiểu sau Nếu khóa bí mật user DSS, dùng để mã hóa mã băm SHA-1 Nếu khóa bí mật user RSA, dùng để mã hóa chuỗi mã băm MD5 SHA-1 - 22 - SSL PROJECT Thọ • Sv: Trịnh Hữu Trong trường hợp khác, mục đích để xác minh quyền sở hữu client với khóa bí mật cho chứng thực client.Cho dù lạm dụng certificate client khơng thể gửi message Giai đoạn – Kết thúc: • Giai đoạn hoàn thành thiết lập kết nối an tồn,Client gửi thơng điệp change_cipher_spec chép CipherSpec đệm vào CipherSpec tại.Chú ý thông điệp không xem phần giao thức bắt tay gửi sử dụng giao thức Change Cipher Spec Client sau gửi thông điệp kết thúc theo giải thuật mới, với khóa bí mật.Thơng điệp kết thúc xác minh xem q trình trao đổi khóa xác thực có thành cơng hay khơng.nội dung thơng điệp hồn tất chuỗi hai giá trị băm: MD5(master_secret || pad2 || MD5(handshake_messages || Sender || master_secret || pad1)) SHA(master_secret || pad2 || SHA(handshake_messages || Sender || master_secret || pad1)) • • Tại bên gửi mã mà xác định bên gửi client , handshake_messages tất liệu từ tất thông điệp bắt tay trở lên không bao gồm thông điệp Khi đáp lại hai thông điệp này,server gửi thơng điệp change_cipher_spec nó, chuyển đổi trạng thái treo cho cipherSpec gửi thông điệp kết thúc đi.Ở điểm q trình bắt tay hồn thành client server bắt đầu trao đổi liệu lớp ứng dụng PHẦN IV: TÍNH TỐN MÃ HĨA Gồm việc tạo shared master secret cách trao đổi khóa, sinh tham số mật mã từ master secret 1.Việc tạo Master Secret Shared master secret giá trị one-time 48 byte (384 bits) sinh cho phiên cách trao đổi khóa an tồn.Việc tạo gồm hai bước: • • Đầu tiên, pre-master-secret trao đổi Thứ hai, master_secret tính tốn hai nhóm Đối với trao đổi pre_master_secret, có hai khả xảy ra: - 23 - SSL PROJECT Thọ Sv: Trịnh Hữu – RSA: 48 byte pre_master_secret sinh client, mã hóa với khóa RSA cơng khai server, gửi cho server.Server giải mã ciphertext sử dụng khóa bí mật để phục hồi lại pre_master_secret – Diffie-Hellman: client server sinh khóa cơng khai Diffie-Hellman Sau đó, khóa trao đổi, bên biểu diễn việc tính tốn Diffie-Hellman để tạo shared_pre_master_secret Cả bên tính tốn master_secret sau: master_secret = MD5 (pre_master_secret || SHA (‘A’ || pre_master_secret || ClientHello.random || ServerHello.random)) || MD5 (pre_master_secret || SHA (‘BB’ || pre_master_secret || ClientHello.random || ServerHello.random)) || MD5 (pre_master_secret || SHA (‘CCC’ || pre_master_secret || ClientHello.random || ServerHello.random)) Với ClientHello.random ServerHello.random giá trị số ngẫu nhiên trao đổi thông điệp hello khởi tạo ban đầu - 24 - SSL PROJECT Thọ Sv: Trịnh Hữu 2.Việc sinh tham số mã hóa CipherSpec yêu cầu khóa xác thực client, khóa xác thực server, khóa mật mã client, khóa mật mã server, vector khởi tạo IV client, vector khởi tạo IV server, mà sinh từ master_secret theo thứ tự đó.Những tham số sinh từ master_secret cách băm master_secret thành chuỗi liên tục byte bảo mật với chiều dài vừa đủ tất tham số cần thiết Việc sinh nguyên liệu khóa từ master_secret sử dụng định dạng cho việc sinh master_secret từ pre_master_secret: key_block = MD5(master_secret || SHA(‘A’ || master_secret || ServerHello.random || ClientHello.random)) || MD5(master_secret || SHA(‘BB’ || master_secret || - 25 - SSL PROJECT Thọ Sv: Trịnh Hữu ServerHello.random || ClientHello.random)) || MD5(master_secret || SHA(‘CCC’ || master_secret || ServerHello.random || ClientHello.random)) || Cho đến đủ số output phát sinh.Kết cấu trúc giải thuật hàm sinh số ngẫu nhiên Ta xem master_secret giá trị ngẫu nhiên đưa hạt giống sinh số ngẫu nhiên vào hàm sinh số ngẫu nhiên.Các số ngẫu nhiên client server nhìn giá trị không đáng tin cậy(salt value) làm phứctạp giải mã mật mã - 26 - ... -4- SSL PROJECT Thọ Sv: Trịnh Hữu 5.Tiến Trình SSL Việc trao đổi mạng sử dụng SSL bắt đầu với việc trao đổi thông tin qua lại client server.Sự trao đổi thông tin gọi SSL handshake Ba mục tiêu SSL. .. trưng -SSL dùng phần quản lý trao đổi SSL xét đến phần sau Hai khái niệm SSL quan trọng SSL session (phiên SSL) SSL connection ( kết nối SSL) ,được định nghĩa sau: Connection ( kết nối): kết nối transport... trưng -SSL, được bàn đến phần kế tiếp.Chú ý khơng có khác biệt tạo ứng dụng (như HTTP ) dùng SSL, nội dung liệu tạo ứng dụng khơng suốt SSL Hình sau minh họa định dạng SSL record: - 13 - SSL PROJECT