Tìm hiểu về HTTPS và SSL
Đào Xuân Thùy
Nguyễn Thị Thu Thúy
HTTPS
HTTPS là viết tắt của Hypertext Transfer Protocol Secure (Giao thức truyền tải siêu văn bản có
bảo mật ).Nó khác với HTTP ở chỗ nó hỗ trợ việc bảo mật, từ đó sẽ giải quyết được vấn đề thông
tin gửi- nhận từ Internet bị rò rỉ
HTTPS
Sự khác nhau giữa HTTP và HTTPS
HTTPS
Vì lý do như trên thì các trang Web như Ngân hàng, giao dịch thương mại,… chọn giao thức HTTPS. Vì HTTPS là sự
lựa chọn cần thiết để bảo vệ an toàn cho các tài khoản nhạy cảm. Tuy nhiên, tốc độ tải trang sẽ bị chậm lại, không nhanh
như HTTP. Vì thế nên các trang Web điện tử thường chọn giao thức HTTP thay vì chọn HTTPS.
HTTPS
Khi truy cập vào Gmail – được hỗ trợ bởi HTTPS, trên thanh địa chỉ sẽ có hình ổ khóa màu xanh
thể hiện trang Web này là an toàn
Ta có thể xem các thông tin về các chứng chỉ an toàn của trang Web bằng cách click vào hình ổ
khóa
HTTPS
HTTPS
Sau một thời gian, trên thanh địa chỉ thì ổ khóa xanh biến thành màu xám với hình tam giác vàng
trang Web này an toàn nhưng có một số dữ liệu trên trang Web này không an toàn do nó chưa
được mã hóa.
HTTPS
Nếu hiện như hình dưới
Có nghĩa là trang Web này không hỗ trợ HTTPS hoặc Certificate đã hết hạn hoặc các nội
dung Javascript không an toàn.
SSL
SSL là từ viết tắt của Secure Socket Layer, là công nghệ nền tảng sử dụng giao thức HTTPS đảm
bảo nội dung HTTP được mã hóa an toàn.
HTTPS là HTTP qua SSL. Nó là một sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay
TLS cho phép trao đổi thông tin một cách bảo mật trên Internet
SSL
Việc truyền thông tin nhạy cảm trên mạng rất không an toàn vì các vấn đề sau :
Bạn không thể chắc rằng bạn luôn trao đổi thông tin với đúng đối tượng (Xác thực)
Dữ liệu mạng có thể bị chặn bởi các attacker (Mã hóa)
Attacker có thể sửa đổi dữ liệu trước khi đến tay người nhận (Toàn vẹn dữ liệu)
Tiến trình SSL
Việc trao đổi trên mạng bắt đầu với việc trao đổi thông tin giữa Client và Server.Quá trình này gọi
là SSL Handshake.
Ba mục tiêu chính của SSL handshake
Đàm phán Cipher Suite
Xác thực định danh
Hình thành cơ chế bảo mật thông tin, bằng cách thỏa thuận các cơ chế mã hóa
Đàm phán Cipher Suite
Cipher suite là một tập các thuật toán mã hóa và kích thước khóa mà máy tính có thể dùng để
mã hóa dữ liệu.
Cipher suite bao gồm thông tin về các thuật toán trao đổi khóa công khai, các thuật toán thỏa
thuận khóa và các hàm băm mã hóa
Khi đàm phán CS, client sẽ nói với server các CS nó có sẵn và Server sẽ lựa chọn CS tốt nhất có
thể
Xác thực Server
Để chứng minh Server thuộc về tổ chức mà nó đại diện, server phải trình chứng chỉ khóa công
khai của nó cho client.Nếu chứng chỉ hợp lệ, client có thể chắc chắn về định danh server
Thông tin trao đổi giữa client và server cho phép chúng thỏa thuận một khóa bí mật chung
Xác thực Server
Ví dụ, với RSA:
Client lấy khóa công khai của Server từ chứng chỉ để mã hóa khóa bí mật
Client gửi thông tin khóa bí mật được mã hóa đến Server
Chỉ có Server mới giải mã được thông tin này vì chỉ nó mới có khóa riêng để giải mã khóa công
khai trên chứng chỉ
Gửi dữ liệu mã hóa
Bây giờ, cả client và server đều có thể truy cập đến khóa bí mật chung.
Chúng dùng đến hàm băm mã hóa đã được chọn ở bước 1, để tính toán 1 HMAC(mã chứng thực
hàm băm mã hóa) nối thêm vào message.Sau đó sử dụng khóa và thuật toán bí mật để mã hóa
dữ liệu.Giờ đây, client và server có thể trao đổi thông tin một các an toàn với các dữ liệu đã được
băm và mã hóa
Tiến trình SSL
ádasdasdasd
Clien_hello : gửi thông tin bao gồm phiên bản SSL cao nhất và danh sách các CS mà nó hỗ trợ
Server_hello : server chọn ra phiên bản cao nhất và CS tốt nhất mà cả 2 cùng hỗ trợ rồi gửi cho
client
Server_certificate : server gửi cho client 1 chuỗi các chứng chỉ đã được thẩm định , trong đó có
chứa khóa công khai của nó
Tiến trình SSL
Server_exchange: server gửi cho client 1 message nếu bản tin Certificate không đủ dữ liệu để
client có thể trao đổi khóa bí mậtư
Certificate request: server muốn chứng thực client.Thực tế thì ít có trường hợp này
Server hello done: server thông báo kết thúc quá trình đàm phán
Client certificate: client gửi chứng chỉ của nó cho server
Tiến trình SSL
Client key exchange: client tạo ra khóa bí mật rồi gửi nó cho server
Certificate verify : client gửi thông tin với chữ kí điện tử được tạo bằng hàm băm mã hóa , để
server có thể xác thực được client
Client change Cs : client báo server thay đổi kiểu mã hóa
Client finish : client báo sẵn sàng trao đổi dữ liệu.
Tiến trình SSL
Server change CS : server báo với client thay đổi kiểu mã hóa
Finish : server báo với client sẵn sàng trao đổi dữ liệu. Kết thúc SSL handshake
Encrypt data : client và server trao đổi dữ liệu sử dụng hàm băm mã hóa và thuật toán xác định
ở message 1,2 và khóa bí mật ở message 8.
Close message : báo kết nối chuẩn bị đóng sau khi trao đổi dữ liệu kết thúc
Kiến trúc SSL
Các giao thức SSL
SSL không phải một giao thức đơn mà gồm 2 lớp giao thức như trên hình,trong đó SSL
Record Protocol cung cấp các dịch vụ cơ bản cho nhiều lớp bên trên, mà HTTP có thể coi
là hoạt động trên đỉnh của SSL
SSL Record Protocol
SSL record protocol cung cấp 2 dịch vụ kết nối SSL :
Confidentiality (tính cẩn mật ) : Handshake protocol định nghĩa một khóa bí mật được chia sẻ dùng để
mã hóa quy ước các dữ liệu SSL
Message integrity (tính toàn vẹn thông điệp) : khóa này được dùng để hình thành MAC (mã xác thực
message)
Hoạt động của SSL Record Protocol
Hoạt động của SSL Record Protocol
Phân mảnh : mỗi message được phân thành các block, mỗi block là 2^14(16384 ) byte hoặc ít
hơn
Nén : tùy chọn phương pháp, điều kiện là không mất thông tin và không làm tăng chiều dài quá
1024 byte
Tính toán MAC
Mã hóa theo phương pháp đối xứng
Tính MAC
MAC (Mã xác thực cho message) được tính dựa trên dữ liệu đã được nén.Để thực hiện cần dùng
đến 1 khóa được chia sẻ.MAC được tính như sau
MAC = hash(MAC_write_secret)||pad_2| MAC = hash(MAC_write_secret)|| pad_1||seq_num||
SSLCompressType||SSLCompress.Length ||SSLCompress.fragment
Trong đó
MAC_write_secret : khóa bí mật được chia sẻ
Hash :thuật toán mã hóa
Pad_1 : byte 0x36 lặp lại 48 lần với MD5 và 40 lần cho SHA-1
Pad_2 : byte 0x5x lặp lại 48 lần với MD5 và 40 lần cho SHA-1
Seq_num : sequence number cho message này
SSLCompressType : giao thức lớp trên để xử lý phân mảnh này
SSLCompress.Length : chiều dài phân mảnh
SSLCompress.fragment
Phân mảnh đã được nén