Upload
davidkhoi
View
43
Download
7
Embed Size (px)
Citation preview
Giao thức SSL/TLS
Giao thức TLS-Transport Layer Security
• Được phát triển từ giao thức SSL-Secure Sockets Layer của hãng Netscape
• Nhằm giải quyết các vấn đề về bảo mật, toàn vẹn và xác thực
TLS
• SSL/TLS đem lại các yếu tố sau cho truyền thông trên internet:– Bí mật - Sử dụng mật mã
– Toàn vẹn - Sử dụng MAC
-Xác thực- Sử dụng chứng chỉ X.509
• SSL/TLS ngày nay được sử dụng ở các web server và các trình duyệt internet
Ứng dụng trong HTTP
• Các ứng dụng dựa trên http sử dụng TLS rất phổ biến– https://
• Để sử dụng được cần có Web Server hỗ trợ TLS (IIS, Tomcat, Apache ..)
• Trình duyệt hỗ trợ TLS– Firefox
– Internet Explorer
– Opera
– Sarafi
– Vv..
Các ứng dụng khác sử dụng TLS
• Telnet• FTP• LDAP• POP3• SSLrsh• Vv….
Giao thức TLS
• Là một giao thức trên tầng vận tải • Hoạt động dựa trên sự giao thức truyền tin cậy• Hỗ trợ mọi giao thức ứng dụng trên tầng IP
IPTCPTLS
HTTP Telnet FTP LDAP
Vấn đề đảm bảo bảo mật của TLS
• Mã hoá các thông điệp truyền đi• Sử dụng các mã hoá quy ước với các khoá chia sẻ• Sử dụng các thuật toán
– DES, 3DES
– RC2, RC4
– IDEA
AMessage Message
B$%&#!@
Vấn đề trao đổi khoá trong TLS
• TLS cần phương pháp an toàn để trao đổi khoá bí mật và nó sử dụng hệ mật khoá công khai để thực hiện điều này
• Hệ mật thường thường được sử dụng là RSA hoặc Diffie-Hellman
TLS đảm bảo tính toàn vẹn
• Tính độ dài cố định của mã xác thực thông điệp (MAC)– Bao gồm giá trị băm của thông điệp
– Giá trị chia sẻ bí mật
– Số tuần tự các gói tin
• Truyền MAC với thông điệp
TLS đảm bảo tính toàn vẹn
• Bên nhận tạo ra một giá trị MAC mới và so sánh với giá trị MAC được truyền thì thông điệp mới được coi là toàn vẹn
• TLS sử dụng các hàm băm MD5, SHA-1
A BMessage’
MAC’
MAC
=?
Message
MAC
TLS đảm bảo tính xác thực
• Kiểm tra danh tính của thành phần tham gia truyền thông
• Chứng chỉ được sử dụng để đồng bộ định danh với khoá công khai và các thuộc tính khác
ACertificate
B
Certificate
Các bước hoạt động của TLS
• Thiết lập một phiên làm việc– Đồng bộ thuật toán mã hoá
– Chia sẻ khoá bí mật
– Thực hiện xác thực
• Truyền dữ liệu của ứng dụng– Đảm bảo tính bí mật và toàn vẹn
Kiến trúc của TLS
• TLS định nghĩa các bản ghi (record protocol) để truyền thông tin của ứng dụng và của TLS
• Phiên làm việc được thiết lập sử dụng giao thức bắt tay (HandShake Protocol)
TLS Record Protocol
Handshake Protocol
Alert Protocol
ChangeCipher Spec
Giao thức bản ghi (Record Protocol)
Pha bắt tay
• Thoả thuận bộ thuật toán mã hoá gồm– Thuật toán mã hoá đối xứng sử dụng
– Phương pháp trao đổi khoá
• Thiết lập và chia sẻ khoá bí mật
Pha bắt tay
• Thông điệp Hello• Thông điệp trao đổi khoá và chứng chỉ• Thay đổi CiperSpec và gửi thông điệp kết thúc
pha bắt tay và chuyển sang quá trình truyền dữ liệu
Hello
• Client “Hello” - Khởi tạo phiên làm việc– Gửi thông tin phiên bản giao thức
– Thông tin về bộ mã hoá sử dụng
– Server chọn giao thức và bộ mã hoá phù hợp
• Client có thể yêu cầu sử dụng các phiên làm việc đã có từ trước nằm ở trong cache– Server lựa chọn sao cho phù hợp
Trao đổi khoá
• Server gửi chứng chỉ chứa khoá công khai (RSA) hoặc tham số của Diffie-Hellman
• Client tạo ra 48-byte ngẫu nhiên gửi tới Server sử dụng khoá công khai của server
• Mầm khoá bí mật được tính toán – Sử dụng các giá trị bí mật truyền trong thông điệp Hello giữa
Server và Client
Chứng chỉ khoá công khai
• Chứng chỉ X.509 đồng bộ khoá công khai với định danh người dùng
• Trung tâm CA tạo ra chứng chỉ– Dựa vào các chính sách và các định danh được xác nhận
– Ký lên chứng chỉ
• Người sử dụng chứng chỉ phải đảm bảo là nó hợp lệ
Kiểm tra tính hợp lệ của chứng chỉ
• Để kiểm tra được thì các CA phải tin cậy lẫn nhau– Một CA có thể phát hành chứng chỉ cho CA khác
• Kiểm tra chứng chỉ vẫn còn hiệu lực– CA phải đưa ra danh sách các chứng chỉ hết hiệu lực, phải
thu hồi (CRL-Certificate Revocation List)
Nội dung chứng chỉ X.509
• Version
• Serial Number
• Signature Algorithm Identifier– Object Identifier (OID)
– e.g. id-dsa: {iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 1}
• Issuer (CA) X.500 name
• Validity Period (Start,End)
• Subject X.500 name
• Subject Public Key
– Algorithm
– Value
• Issuer Unique Id (Version 2 ,3)
• Subject Unique Id (Version 2,3)
• Extensions (version 3)– optional
• CA digital Signature
Ký lên chứng chỉ
• Ký bằng RSA– Tạo ra hàm băm của chứng chỉ
– Mã hoá sử dụng khoá bí mật của CA
• Xác minh chữ ký (Signature verification)– Giải mã sử dụng khoá công khai của CA
– Kiểm tra, đối chiếu giá trị băm
Trao đổi khoá phía Server
Client
ClientHello
Server
ServerHello Certificate ServerKeyExchange
Hello messages struct { } HelloRequest; struct { uint32 gmt_unix_time; opaque random_bytes[28]; } Random; opaque SessionID<0..32>; uint8 CipherSuite[2]; enum { null(0), (255) } CompressionMethod; struct { ProtocolVersion client_version; Random random; SessionID session_id; CipherSuite cipher_suites CompressionMethod compression_methods } ClientHello;
struct { ProtocolVersion server_version; Random random; SessionID session_id; CipherSuite cipher_suite; CompressionMethod compression_method; } ServerHello;
Yêu cầu chứng chỉ
Client
ClientHello
Server
ServerHello Certificate ServerKeyExchange CertificateRequest
struct { select (KeyExchangeAlgorithm) { case diffie_hellman: ServerDHParams params; Signature signed_params; case rsa: ServerRSAParams params; Signature signed_params; }; } ServerKeyExchange
Chứng chỉ Client
Client
ClientHello
ClientCertificate ClientKeyExchange
Server
ServerHello Certificate ServerKeyExchange CertificateRequest
struct { select (KeyExchangeAlgorithm) { case rsa: EncryptedPreMasterSecret; case diffie_hellman: DiffieHellmanClientPublicValue; } exchange_keys; } ClientKeyExchange;
Đổi khoá và thực hiện truyền dữ liệu
Client
[ChangeCipherSpec] Finished
Application Data
Server
[ChangeCipherSpec] Finished
Application Data
Thống nhất thuật toán mã hóa sử dụng
• Thoả thuận thuật toán mã hoá sử dụng
• Kết thúc– Gửi bản sao chép của pha bắt tay sử dụng phiên làm việc
mới
– Cho phép kiểm tra tính đúng đắn của pha bắt tay
Sử dụng phiên làm việc
Client
ClientHello (Session #)
[ChangeCipherSpec] Finished
Application Data
Server
ServerHello (Session #)
[ChangeCipherSpec] Finished
Application Data