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
Trang 1NỘI DUNG PROJECT
an toàn
Chứng thư số SSL cài trên website của doanh nghiệp cho phép khách hàng khi truy cập có thể xác minh được tính xác thực, tin cậy của website, đảm bảo mọi dữ liệu, thông tin trao đổi giữa website và khách hàng được mã hóa, tránh nguy cơ bị can thiệp
Trang 22 Tại Sao Nên Sử Dụng SSL
Ngày nay việc bảo mật thông tin là yếu tố quan trọng để quyết định sự sống còn của một
tổ chức, một công ty hay doanh nghiệp Với sự phát triển nhanh chóng của công nghệ đã mang lại nhiều tiện ích cho người dùng nhưng đồng thời cũng đặt ra một nhu cầu hết sức cấp thiết về sự an toàn và bảo mật và SSL chính là giải pháp tốt nhất hiện nay đáp ứng những nhu cầu đó và nó được coi như là “lá chắn cuối cùng” trong bảo mật thương mại điện tử
Giao thức SSL ban đầu được phát triển bởi Netscape.Version 1.0 thì đã không bao giờ được công bố rộng rãi.Version 2.0 được công bố vào tháng 2/1995 nhưng chứa nhiều lỗ hỏng bảo mật và sau cùng đưa đến mô hình SSL version 3.0 được ban hành năm
1996.Bản sau cùng này được dùng cho TLS version 1.0 và được IETF xác định như một giao thức chuẩn trong RFC 2246 vào tháng 1/1999 Ngày nay Visa, MasterCard,
American Express cũng như nhiều công ty giải pháp tài chính hàng đầu khác trên thế giới
đã và đang ứng dụng SSL trong thương mại điện tử Việc truyền các thông tin nhạy cảm trên mạng rất không an toàn vì những vấn đề sau:
Bạn không thể luôn luôn chắc rằng bạn đang trao đổi thông tin với đúng đối tượngcần trao đổi
Dữ liệu mạng có thể bị chặn ,vì vậy dữ liệu có thể bị 1 đối tượng thứ 3 khác đọc trộm, thường được biết đến như attacker
Nếu attacker có thể chặn dữ liệu, attacker có thể sửa đổi dữ liệu trước khi gửi nó đến người nhận
SSL giải quyết các vấn đề trên.SSL giải quyết vấn đề đầu tiên bằng cách cho phép 1 cách tùy chọn mỗi bên trao đổi có thể chắc chắn về định danh của phía đối tác trong 1 quá trìnhgọi là uthentication (xác thực).Một khi các bên đã được xác thực,SSL cung cấp 1 kết nối được mã hóa giữa 2 bên để truyền bảo mật các message Việc mã hóa trong quá trình trao đổi thông tin giữa 2 bên cung cấp sự riêng tư bí mật,vì vậy mà giải quyết được vấn đề thứ 2.Thuật toán mã hóa được sử dụng với SSL bao gồm hàm băm mã hóa,tương tự như 1 checksum.Nó đảm bảo rằng dữ liệu không bị thay đổi trong quá trình truyền dẫn.Hàm băm mã hóa giải quyết vấn đề thứ 3,tính toàn vẹn dữ liệu
Chú ý rằng,cả xác thực và mã hóa đều là tùy chọn, và phụ thuộc vào cipher suites (các bộ
mã hóa) được đàm phán giữa 2 đối tượng
Một ví dụ rõ ràng nhất mà trong đó bạn nên sử dụng SSL là trao đổi thông tin giao dịch qua mạng (e-commerce).Trong trao đổi e-commerce, thật dại dột khi giả định rằng bạn cóthể chắc chắn về định danh của server mà bạn đang trao đổi thông tin Ai đó có thể dễ dàng tạo ra 1 Website giả hứa hẹn các dịch vụ tuyệt vời ,chỉ để cho bạn nhập vào đó số tàikhoản, SSL cho phép bạn, client,xác thực về định danh của server.Nó cũng cho phép
Trang 3server xác thực định danh của client,mặc dù trong các giao tác Internet,việc này hiếm khi được làm.
Một khi client và server đã hài lòng với định danh của mỗi bên đối tác.SSL cung cấp tính bảo mật và tính toàn vẹn thông qua các thuật toán mã hóa mà nó sử dụng.Điều này cho phép các thông tin nhạy cảm,như số tài khoản,được truyền đi 1 cách an toàn trên Internet.Trong khi SSL cung cấp tính xác thực,tính bảo mật và toà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 là khi 1 đối tượng gửi
đi 1 message ,thì sau đó không thể phủ nhận việc mình đã gửi message đó.Khi 1 chữ kí sốtương đương được liên kết với 1 message,việc trao đổi này sau đó có thể được chứng minh.SSL 1 mình nó không cung cấp non-repudiation
3 SSL Làm Việc Như Thế Nào
Công nghệ SSl bảo vệ những giao dịch trực tuyến và năng cao mức độ tin cậy của websiteđối với khách hàng chỉ trong 3 bước cơ bản
Trang 44 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 một chứng chỉ SSL, Trình duyệt sẽ gởi chứng chỉ này đến một máy chủ lưu trữ các chứng chỉ số đã được phê duyệt Các máy chủ này được thành lập bởi những công ty uy tín như GlobalSign, VeriSign
Về mặt kỹ thuật, SSL sử dụng mã hóa công khai Kỹ thuật này giúp cho Website và Trìnhduyệt tự thỏa thuận một bộ khóa sẽ dùng trong suốt quá trình trao đổi thông tin sau đó Bộkhóa sẽ thay đổi theo mỗi trong lần giao dịch kế tiếp, một người khác sẽ không thể giải
mã ngay cả khi có được dữ liệu của máy chủ lưu trữ chứng chỉ số nói trên
Trang 55.Tiến Trình SSL
Việc trao đổi trên mạng sử dụng SSL bắt đầu với việc trao đổi thông tin qua lại giữa client
và server.Sự trao đổi thông tin này gọi là SSL handshake
Ba mục tiêu chính của SSL handshake là:
Xác thực server :
Trong SSL,bước xác thực là tùy chọn,nhưng trong ví dụ về giao tác e-commerce trên Web, client theo thông thường sẽ muốn xác thực server.Việc xác thực server cho phép client chắc chắn rằng chính server này đại diện cho đối tượng mà client tin tưởng
Để chứng minh server thuộc về tổ chức mà nó khẳng định là 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ỉ này là hợp lệ ,client có thể chắc chắn về định danh của server
Thông tin trao đổi qua lại giữa client và server cho phép chúng thỏa thuận 1 khóa bí mật chung.Ví dụ,với RSA,client dùng khóa công khai của server,có được từ chứng chỉ 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 đã được mã hóa đến server.Chỉ có server mới có thể giải mã cái message này bởi vì quá trình giải mã phải cần đến khóa riêng của server
Gửi dữ liệu đã mã hóa:
Bây giờ,cả client và server có thể truy cập đến khóa bí mật chung.Với mỗi
message ,chúng dùng đến hàm băm mã hóa,đã được chọn trong bước thứ nhất của tiến trình này,và chia sẻ thông tin bí mật,để tính toán 1 HMAC nối thêm vào message.Sau đó,chúng dùng khóa bí mật và thuật toán khóa bí mật đã được đàm phán ở bước đầu tiên của tiến trình này để mã hóa dữ liệu và HMAC an toàn.Client và server giờ đây có thể trao đổi thông tin với nhau 1 cách an toàn với các dữ liệu đã băm và mã hóa
Giao thức SSL:
Trang 6Phần trước cung cấp sự mô tả sơ lược về SSL handshake, là sự trao đổi thông tin giữa client và server trước khi gửi các message đã được mã hóa.Phần này mô tả chi tiết
hơn.Hình sau minh họa chuỗi tuần tự các message được trao đổi trong SSL
handshake.Các message mà chỉ được gửi trong 1 trường hợp nào đó được đánh dấu là tùy chọn
Các message SSL được gửi theo thứ tự sau:
1) Client hello: client gửi đến server các thông tin bao gồm phiên bản SSL cao nhất và 1
danh sách các cipher suite mà nó hỗ trợ (TLS 1.0 được chỉ ra như là SSL3.1).Thông tin cipher suite bao gồm các thuật toán mã hóa và kích thước khóa
Trang 72) Server hello: server chọn ra phiên bản SSL cao nhất và cipher suite tốt nhất mà cả
client và server hỗ trợ, và gửi thông tin này về cho client
3) Certificate: server gửi cho client 1 chứng chỉ hoặc 1 chuỗi chứng chỉ.Về cơ bản,1
chuỗi chứng chỉ bắt đầu bằng chứng chỉ khóa công khai của server và kết thúc bằng chứng chỉ gốc của tổ chức có thẩm quyền chứng chỉ.Message này là tùy chọn,nhưng nó được dùng bất cứ khi nào xác thực server là cần thiết
4) Certificate request: nếu server cần xác thực client,nó gửi cho client 1 yêu cầu xem
chứng chỉ.Trong các ứng dụng internet,message này hiếm khi được gửi đi
5) Server key exchange: server gửi cho client 1 message trao đổi khóa server trong khi
khóa công khai được gửi ở phần 3) bên trên thì không đủ cho trao đổi khóa
6) Server hello done: server nói với client rằng nó hoàn thành các message đàm phán ban
đầu
7) Certificate: nếu server cần chứng chỉ từ client trong message 4, client gửi chuỗi chứng
chỉ của nó,cũng giống như server làm trong message 3
8) Client key exchange: client sinh ra thông tin được dùng để tạo ra khóa trong mã hóa
đối xứng.Với RSA, client mã hóa thông tin khóa này bằng khóa công khai của server rồi gửi nó đến server
9) Certificate verify: message này được gửi khi client trình ra chứng chỉ như trên.Mục
tiêu của nó là cho phép server hoàn thành tiến trình xác thực client.Khi message này đượcdùng,client gửi thông tin với chữ kí số tạo bằng hàm băm mã hóa.Khi server giải mã thông tin này bằng khóa công khai của client,server có thể 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 rằng nó sẵn sàng để bắt đầu trao đổi dữ 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 rằng nó sẵn sàng để bắt đầu trao đổi dữ liệu an
toàn.Kết thúc SSL handshake
14) Encrypted data: client và server trao đổi với nhau,sử dụng thuật toán mã hóa đối
xứng và hàm băm mã hóa đã đàm phán ở message 1 và 2,và dùng khóa bí mật mà client gửi cho server trong message 8
15) Closed messages : Kết thúc 1kết nối,mỗi bên gửi 1 message close-notify để thông
báo đầu kia biết kết nối bị đóng
Trang 8Nếu các tham số được sinh ra trong 1 phiên SSL được lưu lại,các tham số này có thể thỉnhthoảng được dùng lại cho các phiên SSL sau.Việc lưu lại các tham số phiên SSL cho phépcác trao đổi bảo mật về sau được bắt đầu nhanh chóng hơn.
PHẦN II: KIẾN TRÚC SSL
SSL được thiết kế để dùng TCP cung cấp 1 dịch vụ bảo mật đầu cuối-đến-đầu cuối đáng tin cậy.SSL không phải là một giao thức đơn mà là 2 lớp giao thức,như minh họa dưới đây
SSL Record Protocol cung cấp các dịch vụ bảo mật cơ bản cho nhiều giao thức khác nhau
ở cá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 trên đỉnh của SSL.Ba giao thức lớp trên được định nghĩa như là các phần của SSL: Handshake Protocol,Change Cypher Spec Protocol và Alert Protocol.Các giao thức mang tính đặc trưng-SSL này được dùng trong phần quản lý trao đổi SSL và được xét đến trong phần sau
Hai khái niệm SSL quan trọng là SSL session (phiên SSL) và SSL connection ( kết nối SSL) ,được định nghĩa như sau:
Connection ( kết nối): 1 kết nối là 1 transport _ trong định nghĩa mô hình phân lớp
OSI_ cung cấp 1 loại dịch vụ thích hợp.Với SSL,những kết nối như vậy là những mối quan hệ ngang hàng.Các kết nối thì trao đổi nhanh chóng.Mỗi kết nối gắn với 1 phiên
Trang 9Session (phiên): 1 phiên SSL là 1 liên kết giữa 1 client và 1 server.Các phiên được tạo ra
bằng Handshake Protocol (giao thức bắt tay).Các phiên định nghĩa 1 tập các tham số bảo mật bằng mật mã,có thể được chia sẻ giữa nhiều kết nối.Các phiên được dùng để tránh những đàm phán tốn kém_về các tham số bảo mật mới_cho mỗi kết nối
Giữa bất kì 1 cặp của nhóm nào (các ứng dụng như HTTP trên 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 giữa các
nhóm,nhưng đặc trưng này không được dùng trong thực tiễn
Thực sự có nhiều trạng thái gắn với mỗi phiên.Một khi 1 phiên được thành lập,có trạng thái hoạt động hiện thời cho cả đọc và ghi, (như nhận và gửi ).Thêm vào đó, trong suốt quá trình Handshake Protocol, trạng thái treo đọc và ghi được tạo ra.Dựa trên kết luận thành công của Handshake Protocol,các trạng thái treo trở thành trạng thái hiện thời.-Một trạng thái phiên được định nghĩa bởi các thông số sau (các định nghĩa lấy từ đặc trưng SSL):
Session Identifier : 1 chuỗi byte bất kì được chọn bởi server để nhận dạng trạng thái
phiên là hoạt động
(active) hay phục hồi lại (resumable)
Peer certificate: một chứng chỉ X509.v3.Thành phần này của trạng thái có thể là null Compression method: thuật toán được dùng để nén dữ liệu trước khi mã hóa.
Cypher spec : chỉ ra thuật toán mã hóa dữ liệu (như rỗng,AES…) và thuật toán băm (như MD5 hay SHA –1) sử dụng để tính toán MAC.Nó cũng định nghĩa các thuộc tính
mã hóa như hash-size
Master secret : 48 byte bí mật được chia sẻ giữa client và server.
Is resumable : một cờ chỉ ra rằng phiên này có thể được dùng để khởi tạo các kết nối
khác hay không
- Một trạng thái kết nối được định nghĩa bởi các tham số sau:
Server and client random: các chuỗi byte được chọn bởi server và client cho mỗi kết
nối
Server write MAC secret: khóa bí mật được sử dụng bởi phép tính MAC trên dữ liệu,
được gửi bởi server
Client write MAC secret: khóa bí mật được sử dụng bởi phép tính MAC trên dữ
liệu,được gửi bởi client
Trang 10Server write key: khóa mã hóa quy ước cho dữ liệu được mã hóa bởi server và giải mã
bởi client
Client write key : khóa mã hóa quy ước cho dữ liệu được mã hóa bởi client và giải mã
bởi server
Initialization vectors: khi 1 khối mã trong mode CBC được dùng, một vector khởi tạo
(IV) được duy trì cho mỗi key.Phần này được khởi tạo trước tiên bởi SSL Handshake Protocol.Sau đó,khối mã hóa cuối cùng từ mỗi record được để dành lại để dùng làm IV cho record sau
Sequence number : mỗi bên duy trì các sequence number riêng cho mỗi message được truyền hoặc được nhận trong mỗi kết nối.Khi 1 bên gửi hoặc nhận một change cypher spec message, sequence number thích hợp được thiết lập về 0.Sequence number không thể vượt quá 264-1
PHẦN III: GIAO THỨC SSL
1.Giao Thức SSL Record:
SSL Record Protocol cung cấp 2 dịch vụ cho kết nối SSL:
Confidentiality (tính cẩn mật): Handshake Protocol định nghĩa 1 khóa bí mật được chia
sẻ, khóa này được sử dụng cho mã hóa quy ước các dữ liệu SSL
Message integrity (tính toàn vẹn thông điệp):Handshake Protocol cũng định nghĩa 1 khóa bí mật được chia sẻ, khóa này được sử dụng để hình thành MAC (mã xác thực message)
Hình sau chỉ ra toàn bộ hoạt động của SSL Record Protocol.SSL Record Protocol nhận 1 message ứng dụng sắp được truyền đi,phân mảnh dữ liệu thành nhiều block,nén dữ liệu 1 cách tùy chọn,áp dụng vào 1 MAC,mã hóa,thêm vào header,và truyền khối kết quả thu được trong 1 segment TCP.Dữ liệu nhận được được giải mã,kiểm tra ,giải nén,sắp xếp lại
và phân phối đến người sử dụng ở lớp cao hơn
Trang 11Hoạt động của SSL Record Protocol
Bước đầu tiên là phân mảnh: Mỗi message của lớp bên trên được phân mảnh thành các
block ,mỗi block là 214 byte (16384 byte) hoặc ít hơn
Tiếp theo,nén được áp dụng 1 cách tùy chọn: Nén phải là không mất mát thông tin và
có thể không làm tăng chiều dài nội dung nhiều hơn 1024 byte (Dĩ nhiên,người ta mong muốn nén làm co lại dữ liệu hơn là nới rộng dữ liệu.Tuy nhiên ,với những block ngắn,có thể ,do định dạng quy ước,thuật toán nén thực sự làm cho output dài hơn input).Trong SSLv3 (cũng như phiên bản hiện tại của TLS),không có thuật toán nén nào được chỉ rõ,vì vậy thuật toán nén mặc định là null
Bước xử lí kế tiếp là tính toán MAC: (mã xác thực message) trên dữ liệu đã được
nén.Để thực hiện cần dùng đến1 khóa bí mật được chia sẻ.Phép tính được định nghĩa như sau:
hash(MAC_write_secret || pad_2 || hash(MAC_write_secret || pad_1 ||seq_num ||
SSLCompressed.type || SSLCompressed.length || SSLCompressed.fragment))
trong đó:
|| : phép nối/hoặc.
MAC_write_secret: khóa bí mật được chia sẻ.
hash: thuật toán băm mã hóa, MD5 hoặc SHA-1.
Trang 12 pad_1: byte 0x36 (0011 0110) được lặp lại 48 lần (384 bit) cho MD5 và 40 lần
(320 bit) cho SHA-1
pad_2: byte 0x5c (0101 1100) được lặp lại 48 lần cho MD5 và 40 lần cho SHA-1.
seq_num: sequence number cho message này.
SSLCompressed.type: giao thức ở lớp trên được dùng để xử lí phân mảnh này.
SSLCompressed.length: chiều dài của phân mảnh đã được nén.
SSLCompressed.fragment: phân mảnh đã được nén (nếu nén không được dùng,
phân mảnh ở dạng plaintext)
Chú ý rằng,cái này tương tự như thuật toán HMAC.Điểm khác biệt là 2 phần đệm (pad) được || trong SSLv3 và được XOR trong HMAC.Thuật toán MAC trong SSLv3 được dựa trên bản phác thảo Internet ban đầu cho HMAC.Phiên bản gần nhất của HMAC được địnhnghĩa trong RFC 2104,sử dụng XOR
Kế tiếp, message đã nén cộng thêm MAC được mã hóa theo phương pháp mã hóa đối xứng: Mã hóa có thể không làm tăng chiều dài nội dung hơn 1024 byte,vì vậy chiều
dài tổng cộng không vượt quá 214+2048 Các thuật toán mã hóa sau được cho phép:
DES (Data Encryption Standard): là một thuật toán mã hoá có chiều dài khoá là
56 bit
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ính phủ 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
RSA key exchange: là thuật toán trao đổi khoá dùng trong SSL dựa trên thuật
Trang 13Các thuật toán trao đổi khoá như KEA, RSA key exchange được sử dụng để 2 bên client
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 đổi thô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
Fortezza có thể được sử dụng trong 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 được mã hóa.Chú ý rằng MAC được tính toán trước khi mã hóa xảy ra và MAC được mã hóa cùng với plaintext hoặc là plaintext đã nén
Với mã hóa block (khối),MAC có thể được đệm thêm trước khi mã hóa.Phần đệm thêm (padding) có dạng gồm nhiều byte đệm được theo sau bởi 1 byte chỉ rõ chiều dài của phầnđệm.Tổng số lượng đệm vào là lượng nhỏ nhất sao cho tổng kích thước dữ liệu được mã hóa (plaintext +MAC + padding) là 1 bội số của chiều dài khối mã hóa.Ví dụ, plaintext (hoặc text đã nén nếu nén được dùng) là 58 byte, với MAC là 20 byte (dùng SHA-1), được mã hóa với chiều dài block là 8 byte (như DES ).Cùng với byte padding.length ,nó sinh ra tổng cộng 79 byte.Để tạo ra 1 số nguyên là bội của 8,1 byte đệm được thêm vào
Bước cuối cùng của xử lí SSL Record Protocol là gắn thêm vào1 header ,bao gồm các mục sau:
Content Type (8 bit): giao thức lớp trên được dùng để xử lí phân mảnh đi kèm.
Major Version (8 bit): chỉ ra phiên bản SSL tối đa được dùng Ví dụ, SSLv3, giá
trị này là 3
Minor Version (8 bit) : chỉ ra phiên bản tối thiểu được dùng.Ví dụ, SSLv3 ,giá trị
này là 0
Compressed Length (16 bit) : chiều dài theo byte của phân mảnh plaintext (hoặc
chiều dài theo byte của phân mảnh đã nén nếu nén được dùng).Gía trị lớn nhất là 214+2048
Các loại nội dung được định nghĩa là change_cipher_spec,alert,handshake, và
application_data Ba cái đầu tiên là các giao thức đặc trưng-SSL,được bàn đến trong phần
kế tiếp.Chú ý rằng không có sự khác biệt nào được tạo ra giữa các ứng dụng (như
HTTP ) có thể dùng SSL,nội dung dữ liệu được tạo ra bởi các ứng dụng đó thì không trong suốt đối với SSL
Hình sau minh họa định dạng SSL record: