Nổi lên nhƣ một sự thay thế chính cho mô hình phân cấp truyền thống, thiết kế của mô hình mắt lƣới giống với kiến trúc Web-of-Trust trong đó không có một CA nào làm Root CA và các CA sẽ có vai trò ngang nhau trong việc cung cấp dịch vụ. Tất cả ngƣời dùng trong mạng lƣới có thể tin cậy chỉ một CA bất kỳ, không nhất thiết hai hay nhiều ngƣời dùng phải cùng tin một CA nào đó và ngƣời dùng tin cậy CA nào thì sẽ nhận chứng chỉ do CA đó cấp
36
Các CA trong mô hình này sau đó sẽ cấp các chứng chỉ cho nhau. Khi hai CA cấp chứng chỉ cho nhau thì một sự tin cậy hai chiều đƣợc thiết lập giữa hai CA đó. Các CA mới có thể đƣợc thêm vào bằng cách tạo các mối tin cậy hai chiều giữa chúng với các CA còn lại trong mạng lƣới.
Vì không có một CA duy nhất làm cấp cao nhất nên sự tổn hại khi tấn công vào mô hình này có khác so với hai mô hình trƣớc đó. Hệ thống PKI không thể bị đánh sập khi chỉ một CA bị thỏa hiệp. Các CA còn lại sẽ thu hồi chứng chỉ mà chúng đã cấp cho CA bị xâm hại và chỉ khi CA đó khôi phục hoạt động thì nó mới có khả năng cấp mới các chứng chỉ cho ngƣời dùng rồi thiết lập trust với các CA còn lại trong mạng lƣới.
Áp dụng các mô hình trên Việt Nam chúng ta cũng có mô hình PKI riêng nhằm phục vụ lợi ích chung của quốc gia.
37
CHƢƠNG 3: PHÂN TÍCH GIAO THỨC SSL 3.1. Tác dụng và phƣơng thức hoạt động của giao thức SSL.
Bảo mật cho dữ liệu truyền trên Internet ngày càng trở nên cần thiết do số lƣợng cũng nhƣ mức độ quan trọng của các dữ liệu này ngày càng cao. Ngày nay, ngƣời dùng Internet trao đổi rất nhiều loại thông tin trên mạng từ trao đổi thƣ điện tử thông thƣờng đến các thông tin chi tiết trong thẻ tín dụng của mình, do đó họ muốn những dữ liệu đó phải đƣợc bảo mật khi truyền trên mạng công cộng.
Để làm đƣợc điều này ngƣời ta đã ứng dụng giao thức SSL để bảo vệ các dữ liệu trong quá trình trao đổi giữa tất cả các dịch vụ mạng sử dụng TCP/IP để hỗ trợ các tác vụ truyền thông mạng giữa máy chủ và máy khách.
Giao thức SSL đầu tiên do Netscape phát triển, mục đích để bảo mật dữ liệu gửi/nhận trên Internet của các giao thức thuộc lớp ứng dụng nhƣ HTTP, LDAP hay POP3.
SSL sử dụng giao thức TCP để cung cấp các kết nối bền vững, bảo mật và đƣợc xác thực giữa các điểm cuối với nhau (ví dụ nhƣ giữa client và server). Mặc dù có thể sử dụng SSL để bảo vệ dữ liệu liên quan đến bất kỳ dịch vụ nào, nhƣng SSL chủ yếu đƣợc dùng trong các ứng dụng HTTP (server và client). Ngày nay hầu hết các HTTP server đều hỗ trợ các phiên SSL, ở phía client các trình duyệt Internet Explorer và Netscape Navigator đều hỗ trợ SSL.
Hình 3.1: SSL giữa tầng ứng dụng và tầng TCP/IP
Những mục đích chính của việc phát triển SSL là:
Xác thực server và client với nhau: SSL hỗ trợ sử dụng các kỹ thuật mã
38
truyền thông với nhau. Hầu hết các ứng dụng hiện nay xác thực các client bằng cách sử dụng chứng chỉ số, SSL cũng có thể sử dụng phƣơng pháp này để xác thực client.
Đảm bảo toàn vẹn dữ liệu: trong một phiên làm việc, dữ liệu không thể bị
làm hỏng dù vô tình hay cố ý.
Bảo vệ tính riêng tƣ: dữ liệu trao đổi giữa client và server phải đƣợc bảo vệ,
tránh bị đánh cắp trên đƣờng truyền và chỉ có đúng ngƣời nhận mới có thể đọc đƣợc các dữ liệu đó. Các dữ liệu đƣợc bảo vệ bao gồm các những dữ liệu liên quan đến chính hoạt động giao thức (các thông tin trao đổi trong quá trình thiết lập phiên làm việc SSL) và các dữ liệu thực trao đổi trong phiên làm việc.
Thực tế SSL không phải là một giao thức đơn mà là một bộ các giao thức, có thể đƣợc chia làm 2 lớp:
1. Giao thức đảm bảo sự an toàn và toàn vẹn dữ liệu: lớp này chỉ có một giao
thức là SSL Record Protocol .
2. Các giao thức thiết kế để thiết lập kết nối SSL: lớp này gồm có 3 giao thức:
SSL Handshake Protocol, SSL ChangeCipherSpecProtocol và SSL Alert Protocol.
Hình 3.2: Các lớp giao thức SSL
SSL sử dụng các giao thức này để thực hiện các nhiệm vụ đƣợc đề cập ở trên. SSL Record Protocol chịu trách nhiệm mã hoá và đảm bảo toàn vẹn dữ liệu.
Nhƣ ta thấy trong hình 2.2, giao thức này còn chịu trách nhiệm đóng gói các dữ liệu của các giao thức SSL khác tức là cũng liên quan đến các tác vụ kiểm tra dữ liệu SSL.
39
Ba giao thức còn lại chịu trách nhiệm quản lý các phiên, quản lý các tham số mã hoá và truyền các thông điệp SSL giữa client và server.
3.2. Phiên SSL và kết nối SSL
Các khái niệm đề cập ở trên là các khái niệm cơ bản của công nghệ SSL. Ngoài ra còn có rất nhiều thuộc tính khác của SSL mà chúng ta sẽ xem xét ở đây: • Connection (kết nối): là một liên kết client/server logic với những kiểu dịch vụ thích hợp. SSL connection là một kết nối điểm nối điểm giữa 2 nút mạng.
• Session (phiên): là một sự kết hợp giữa một client và một server xác định bằng một bộ các tham số ví dụ thuật toán sẽ sử dụng, số hiệu phiên v.v... Khi một phiên SSL giữa một client và một server đƣợc thiết lập bằng giao thức SSL Handshake Protocol thì tất cả các kết nối sau này đƣợc thiết lập giữa cặp server/client đó sẽ sử dụng chung bộ tham số đó mà không phải tiến hành thoả thuận lại. Điều đó có nghĩa là trong một phiên SSL giữa một client và một server có thể có nhiều kết nối giữa client và server đó. Về lý thuyết cũng có thể có nhiều phiên SSL dùng chung một kết nối, nhƣng trên thực tế không sử dụng đến khả năng này.
Khái niệm phiên và kết nối SSL liên quan đến nhiều tham số sử dụng trong truyền thông hỗ trợ SSL giữa client và server. Trong quá trình thoả thuận của giao thức handshake ngoài việc chọn các phƣơng pháp mã hoá dữ liệu thì một loạt các tham số của Session State cũng đƣợc chọn, Session State bao gồm:
Thành Phần Mô tả
Session ID
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 dừng để nén dữ liệu trƣớc khi mã hóa
Cipher 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
40
toán MAC.Nó cũng định nghĩa các thuộc tính mã hóa nhƣ hash-size.
Master secret Khóa mật 48-byte đƣợ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.
Bảng 3.1. Các thành phần thông tin trạng thái Session SSL
Ngoài ra còn có một số tham số khác:
Thành Phần Mô tả
Serverand clientrandom Các chuỗi byte đƣợc chọn bởi server và client cho mỗi nối kết.
Serverwrite MACsecret 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.
ClientwriteMACsecret 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.
Serverwrite key 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
Clientwrite key Khóa đƣợc sử dụng để mã khóa dữ liệu bởi client và giải mã bởi server.
Initialization vectors
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 SSL Handshake 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 đó.
Sequencenumber 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.
41
Ở 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.
3.3. Cách thức hoạt động của giao thức 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à: Đàm phán ciphersuite.
Xác thực định danh (tùychọn).
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.
3.3.1. Đàm phán Cipher suite:
Một phiên SSL bắt đầu với việc đàm phán giữa client và server xem ciphersuite nào mà chúng sẽ sử dùng. Một ciphersuite 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. Một ciphersuite bao gồm thông tin về các thuật toán trao đổi khóa công khai và các thuật toán thỏa thuận khóa, và các hàm băm mã hóa. Client nói với server các ciphersuite nào nó có sẵn và server lựa chọn ciphersuite tốt nhất có thể chấp nhận.
3.3.2. Xác thực Server:
Trong SSL, bƣớ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 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 một 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ã message này bởi vì quá trình giải mã phải cần đến khóa riêng của server.
42
3.3.3. 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 một 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 một cách an toàn với các dữ liệu đã băm và mã hóa.
3.3.4. Tiến trình SSL:
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 một trƣờng hợp nào đó đƣợc đánh dấu là tùy chọn.
43
Các message SSL đƣợc gửi theo thứ tự sau:
1) Clienthello: client gửi đến server các thông tin bao gồm phiên bản SSL cao nhất và một danh sách các cipher suite mà nó hỗ trợ. (TLS1.0 đƣợc chỉ ra nhƣ là SSL3.1).Thông tin ciphersuite bao gồm các thuật toán mã hóa và kích thƣớc khóa.
2) Serverhello: server chọn ra phiên bản SSL cao nhất và ciphersuite 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 một chứng chỉ hoặc một chuỗi chứng chỉ.
Về cơ bản, một 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 một
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 một message trao đổi khóa server trong khi khóa công khai đƣợc gửi ở phần3) bên trên thì không đủ cho trao đổi khóa.
6) Serverhello 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 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 đƣợc dù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.
44
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 cipherspec: 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) Encrypteddata: client và server trao đổi với nhau, sử dụng thuật toán mã
hóa 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 một kết nối, mỗi bên gửi một message close-
notify để thông báo đầu kia biết kết nối bị đóng.
Nếu các tham số đƣợc sinh ra trong một phiên SSL đƣợc lƣu lại, các tham số này có thể thỉnh thoả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ép các trao đổi bảo mật về sau đƣợc bắt đầu nhanh chóng hơn.
3.3.5. Lựa chọn Cipher suite và xóa Entuty verification:
Giao thức SSL định nghĩa một chuỗi các bƣớc đặc biệt để bảo đảm một kết nối“đƣợc bảo vệ”. Tuy nhiên, việc lựa chọn Ciphersuite sẽ tác động trực tiếp đến loại bảo mật mà kết nối có đƣợc. Ví dụ, nếu một ciphersuite nặc danh đƣợc chọn, ứng dụng không có cách nào để kiểm tra định danh của đầu xa. Nếu một suite- không có mã hóa, đƣợc chọn, tính bí mật của dữ liệu không thể đƣợc bảo vệ.
Thêm vào đó, giao thức SSL không chỉ rõ rằng những tài liệu chứng nhận nhận đƣợc phải khớp với những cái mà đầu kia gửi. Nếu kết nối theo cách nào đó mà bị redirect đến một kẻ xấu, nhƣng tài liệu chứng nhận của kẻ xấu này khi trình ra thì đƣợc chấp nhận dựa trên những tƣ liệu tin tƣởng hiện tại, kết nối này sẽ đƣợc xét là hợp lệ.
Khi dùng SSLSockets nên luôn luôn kiểm tra tài liệu chứng nhận của đầu xa trƣớc khi gửi bất kì dữ liệu nào. Các lớp SSLSockets không tự động kiểm tra hostname trong URL có khớp với hostname trong tài liệu chứng nhận của đầu kia hay không. Một ứng dụng có thể bị khai thác bằng URL spoofing nếu hostname không đƣợc kiểm tra.
Các giao thức nhƣ HTTPS cần thiết phải kiểm tra hostname. Các ứng dụng có thể dùng HostnameVerifier để viết chồng lên luật hostname HTTPS mặc định.
45
CHƢƠNG 4: XÂY DỰNG
HỆ THỐNG THƢƠNG MẠI ĐIỆN TỬ DỰA TRÊN CƠ SỞ HẠ TẦNG PKI 4.1. Thiết kế hệ thống thƣơng mại điện tử
4.1.1. Mô hình tổng quan
- Quản lý tài khoản; - Quản lý giao dịch; - Quản lý mặt hàng; - Giải quyết sự cố; - Báo cáo.
Hình 4.1. Sơ đồ chức năng của hệ thống quản lý bán hàng trực tuyến
Chi tiết từng module đƣợc thiết kế nhƣ các phần bên dƣới.
4.1.2. Quản lý tài khoản
46
(1.1.1) Cung cấp tên/ công ty: Khi khách hàng hoặc nhà phân phối muốn