2.2.5. Chứng chỉ số và cơ quan cung cấp chứng chỉ số
Do khố cơng khai được cơng bố một cách rộng rãi cho nên khi người gửi và người nhận trao đổi khố cơng khai với nhau, kẻ tấn cơng có thể chặn các
khố này trên đường truyền và thay vì gửi khố đó, họ sẽ gửi khố của mình có cho các bên. Vậy làm thế nào để các bên tham gia giao tiếp nhận được khoá cơng khai của nhau? Ta có thể gửi trực tiếp, tuy nhiên như đã nói, cách này khơng an tồn.
Vấn đề sẽ được giải quyết với sự tham gia của bên thứ ba tin cậy, gọi là cơ quan chứng thực (CA). Tài liệu dùng để chứng thực gọi là chứng chỉ số (hay chứng chỉ điện tử - digital certificate). Mỗi chứng chỉ số thông thường bao gồm các thơng tin sau:
• Version: Phiên bản của chứng chỉ số • Serial Number: số sê ri của chứng chỉ số
• Issuer Name: tên của người ký chứng chỉ số (như VeriSign). • Subject Name: tên của chứng chỉ/người giữ khố
• Period of validity: ngày hết hạn của chứng chỉ.
• Subject: bao gồm những thông tin về thực thể được chứng nhận. • Public key: khóa cơng khai được chứng nhận.
• Signature: chữ ký điện tử do CA ký trên toàn bộ tài liệu có trong chứng chỉ nhằm đảm bảo giá trị của chứng thực của chứng chỉ số
Như vậy, giải pháp quản lý khoá chánh sự tấn công trung gian đã được tạo ra. CA khơng có quyền truy cập đến khoá riêng của bất kỳ ai, có nghĩa CA khơng thể đọc được bất kỳ thông điệp nào. Hơn nữa, một chứng chỉ số có thể được sử dụng để xác nhận khố cơng khai của một người đối với một người, một CA không cần phải tham gia trực tiếp vào q trình chứng thực khố cơng khai của hai bên. Đây là một điều rất thuận lợi trong quá trình giao tiếp.
Các kỹ thuật an ninh được mô tả ở trên (mã hoá, hàm băm, mã hoá khoá công khai và chữ ký số) được coi là các biện pháp an ninh cơ bản. Các biện pháp này có thể được tổ hợp để xây dựng một cơ chế bảo mật phức tạp. PKC có thể chậm hơn SKC hàng nghìn lần nhưng có thể kết hợp hai kỹ thuật này một cách đơn giản, sử dụng PKC để trao đổi các khố bí mật và SKC mã hố dữ liệu trao đổi. Tương tự, chữ ký số thường khá chậm và chỉ hiệu quả với các thông điệp nhỏ tuy nhiên có thể kết hợp chữ kỹ số với các bản tóm lược thơng điệp. Đầu tiên tính tốn bản tóm lược của một thơng điệp, sau đó dùng khố riêng ký vào bản tóm lược đó. Như vậy, các thơng điệp lớn có thể ký một cách dễ dàng. Tổ hợp của bản tóm lược thơng điệp với chữ ký số được dùng để đảm bảo tính tồn vẹn dữ liệu và xác thực người gửi mà khơng cần khố chia sẻ.
2.3. Bộ các giao thức trong SSL
Giao thức SSL là một bộ gồm 4 giao thức được phân thành hai tầng, tầng trên gồm có giao thức bắt tay SSL (Handshake Protocol), giao thức cảnh báo (Alert Protocol), giao thức Change Cipher Spec. Các giao thức này được sử dụng để khởi tạo một phiên, điều khiển lỗi và thực hiện các thay đổi khác khi cần thiết. Tầng dưới gồm giao thức bản ghi SSL (Record Protocol) quy định cách thức vận chuyển dữ liệu giữa bên gửi và bên nhận. Trong phiên bắt tay hai bên sẽ lựa chọn các thuật toán mã hoá, các thuật toán băm và các tham số bảo mật khác dùng cho phiên SSL.
2.3.1. Giao thức bắt tay SSL
Giao thức bắt tay SSL làm nhiệm vụ khởi tạo một phiên SSL và thiết lập kết nối. Có hai kiểu kết nối SSL được sử dụng: một là kiểu kết nối có xác thực máy chủ và khơng xác thực máy khách (đây là kiểu kết nối phổ biến nhất), hai là kiểu kết nối có xác thực cả máy chủ và máy khách.
(1). Giúp máy chủ và máy khách thương lượng các thuật toán bảo vệ dữ liệu trong một phiên làm việc.
(2). Giúp máy chủ và máy khách trao đổi các thông tin cần thiết để tạo khoá phiên.
(3). Giúp máy khách và máy chủ xác thực lẫn nhau.
2.3.1.1 Khởi tạo phiên giao tiếp SSL không xác thực máy khách.
Trong phiên bắt tay, máy chủ và máy khách trao đổi các thông điệp với nhau, các bước và thơng điệp trong q trình bắt tay được mơ tả trong bảng 2-1
Bảng 2.1: Các bƣớc thực hiện trong bắt tay SSL không xác thực máy khách
Bước Hành động
1 Máy khách gửi thông điệp ClientHello tới máy chủ đề xuất các tuỳ chọn cho phiên SSL.
2 Máy chủ trả lời máy khách bằng thông điệp ServerHello đáp ứng các tuỳ chọn SSL.
3 Máy chủ gửi thông điệp Certificate để máy khách xác thực. 4 Máy chủ kết thúc phiên thương lượng của nó với thơng điệp
ServerHelloDone gửi cho máy khách
5 Máy khách cung cấp thơng tin tạo khố phiên qua thơng điệp ClientKeyExChange.
6 Máy khách gửi thơng điệp ChangeCipherSpec kích hoạt dịch vụ bảo mật. 7 Máy khách gửi thơng điệp Finished để máy chủ kiểm tra tính tồn vẹn
của các thông điệp đã gửi.
9 Máy chủ gửi thơng điệp Finished để máy khách kiểm tra tính tồn vẹn của các thơng điệp đã gửi.
Các bước trên được thể hiện qua hình vẽ 2.6.
Hình 2.6: Sơ đồ q trình bắt tay trong SSL khơng xác thực máy khách
2.3.1.2 Khởi tạo phiên giao tiếp SSL có xác thực máy khách.
Xác thực máy khách là một tùy chọn được hỗ trợ trong SSL 3.0. Các bước và thông điệp khởi tạo phiên SSL có xác thực máy khách được mô tả trong bảng 2.2.
Bảng 2.2: Các bƣớc thực hiện q trình bắt tay SSL có xác thực máy khách
Bước Hành động
1 Máy khách gửi thông điệp ClientHello tới máy chủ đề xuất các tuỳ chọn cho phiên SSL.
2 Máy chủ trả lời máy khách bằng thông điệp ServerHello đáp ứng các tuỳ chọn cho phiên SSL.
3 Máy chủ gửi thông điệp Certificate để máy khách xác thực.
4 Máy chủ gửi tiếp thông điệp CertificateRequest để yêu cầu xác thực máy khách
5 Máy chủ kết thúc phiên thương lượng của nó với thơng điệp ServerHelloDone gửi cho máy khách
6 Máy khách gửi thông điệp Certificate để máy chủ xác thực.
7 Máy khách gửi tiếp thông điệp CertificateVerify phục vụ cho việc xác thực
8 Máy khách cung cấp thông tin để tạo khố phiên qua thơng điệp ClientKeyExChange.
9 Máy khách gửi thơng điệp ChangeCipherSpec kích hoạt dịch vụ bảo mật. 10 Máy khách gửi thông điệp Finished máy chủ kiểm tra tính tồn vẹn của
các thơng điệp đã gửi.
11 Máy chủ gửi thơng điệp ChangeCipherSpec để kích hoạt các dịch vụ bảo mật.
12 Máy chủ gửi thơng điệp Finished để máy khách kiểm tra tính tồn vẹn của các thơng điệp đã gửi.
Hình 2.7: Sơ đồ q trình bắt tay, có xác thực máy khách trong giao thức SSL
2.3.1.3. Các thông điệp trao đổi trong pha thiết lập liên kết
(1). Thông điệp ClientHello
Thông điệp ClientHello được máy khách gửi để bắt đầu phiên giao tiếp SSL.
Bảng 2.3: Các thành phần trong thông điệp ClientHello
Tên trường Ý nghĩa
Version Phiên bản SSL cao nhất mà máy khách hỗ trợ.
RandomNumber Một số ngẫu nhiên 32 bytes dùng để tính tốn các tham số bí mật trong phiên SSL.
CipherSuites Danh sách các tham số bảo mật mà máy khách hỗ trợ.
CompressionMethod Danh sách các phương thức nén dữ liệu mà máy khách hỗ trợ.
Trường Version chứa giá trị cho biết phiên bản SSL cao nhất mà máy khách hỗ trợ. Nếu máy khách gửi tới máy chủ phiên bản SSL 3.0 mà khi đó máy chủ chỉ hỗ trợ phiên bản SSL 2.0 thì máy chủ có thể trả lời với phiên bản SSL 2.0 và máy khách có thể tiếp tục phiên SSL với phiên bản 2.0 hoặc có thể hủy bỏ phiên giao tiếp.
Trường RandomNumber chứa một số ngẫu nhiên 32 byte dùng để tạo các tham số bí mật mật cho phiên SSL. 4 bytes đầu chứa giá trị ngày và giờ hiện tại nhằm mục đích bảo vệ sự tấn cơng trở lại, 28 bytes còn lại là chuỗi ngẫu nhiên được sinh bởi bộ sinh số ngẫu nhiên.
Trường SessionID chứa giá trị cho biết số định danh phiên. Giá trị này có thể bằng 0 hoặc khác 0 tùy thuộc vào phiên mà máy khách muốn thiết lập.
Trường CipherSuites là danh sách các dịch vụ mã hoá mà máy khách hỗ trợ, bao gồm các thuật toán mã hoá, thuật toán trao đổi khố, thuật tốn băm và kích thước khố. Máy chủ căn cứ vào danh sách này để chọn ra các thuật toán dùng cho phiên SSL.
Trường CompressionMethod là danh sách các thuật toán nén được hỗ trợ bởi máy khách
(2). Thông điệp ServerHello
Thông điệp ServerHello được máy chủ gửi cho máy khách để cung cấp các tham số bảo mật dùng cho phiên. Nội dung thông điệp được liệt kê trong bảng 2.4
Bảng 2.4: Các thành phần trong thông điệp ServerHello
Tên trường Ý nghĩa
Version Phiên bản SSL được sử dụng cho phiên giao tiếp.
RandomNumber Một số ngẫu nhiên 32 bytes dùng để tính tốn các tham số bí mật trong phiên SSL.
SessionID Số định danh phiên SSL.
CipherSuites Danh sách các tham số bảo mật được sử dụng trong phiên
CompressionMethod Các phương thức nén dữ liệu được sử dụng trong phiên.
Trường Version chứa phiên bản SSL sẽ được dùng trong phiên. Căn cứ vào phiên bản SSL mà máy khách gửi, máy chủ chọn một phiên bản SSL phù hợp để sử dụng cho phiên giao tiếp.
Trường RandomNumber chứa một số ngẫu nhiên 32 byte dùng cho việc tạo các tham số phiên. 4 bytes đầu chứa ngày và giờ nhằm mục đích bảo vệ sự tấn cơng trở lại, 28 bytes cịn lại là số ngẫu nhiên được sinh bởi bộ sinh số ngẫu nhiên.
Trường SessionID chứa một số khác 0 cho biết số định danh phiên được thiết lập.
Trường CipherSuites là danh sách các thuật tốn và thơng tin khóa mà máy chủ đã lựa chọn để dùng cho phiên SSL. Các thuật toán này được chọn trong danh sách mà máy khách gửi cho nó.
(3). Thơng điệp Certificate:
Sau khi gửi thông điệp ServerHello, máy chủ gửi tiếp thông điệp Certificate nhằm mục đích xác thực máy chủ. Thông điệp này là chuỗi của chứng chỉ số X.509.
(4). Thông điệp CertificateRequest
Thông điệp CertificateRequest được máy chủ gửi khi có yêu cầu xác thực máy khách. Nội dung thông điệp thông báo cho máy khách biết những kiểu chứng chỉ mà máy chủ có thể chấp nhận. Các trường trong thông điệp CertificateRequest được mô tả trong bảng 2.5:
Bảng 2.5: Các thành phần trong thông điệp CertificateRequest
Tên trường Ý nghĩa
CertificateTypes Danh sách các kiểu chứng chỉ số có thể chấp nhận bởi máy chủ.
Distinguished- Names
Danh sách tên các nhà cung cấp chứng chỉ số có thể được máy chủ chấp nhận.
(5). Thơng điệp ServerHelloDone
Thông điệp ServerHelloDone thông báo máy khách biết rằng máy chủ đã gửi thông điệp cuối cùng trong pha thương lượng. Thông điệp này không chứa thơng tin nhưng nó rất quan trọng với máy khách, bởi vì khi máy khách nhận thơng điệp này có thể chuyển sang trạng thái thiết lập kết nối.
(6). Thông điệp ClientKeyExChange
Khi máy chủ hoàn thành việc thương lượng, máy khách trả lời với thông điệp ClientKeyExChange, thông điệp này cung cấp thơng tin cho q trình tạo
các tham số phiên. Nội dung thơng điệp ClientKeyExChange là một chuỗi bí mật được mã hố bằng khố cơng khai của máy chủ nhằm mục đích bảo vệ thông tin trên đường truyền và kiểm tra sự tương ứng giữa khố cơng khai và khoá riêng mà máy chủ sở hữu. Thông điệp này đảm bảo máy khách đang giao tiếp với thành phần sở hữu khố riêng, chỉ có hệ thống với khố riêng thực sự này mới có thể giải mã được thơng điệp mà máy khách đã mã
(7). Thông điệp CertificateVerify
Thông điệp CertificateVerify cho phép máy chủ kiểm tra sự tương ứng giữa khoá riêng của máy khách với khố cơng khai có trong chứng chỉ số mà máy khách cung cấp. Nội dung của thơng điệp là bản tóm lược của tất cả các thông tin mà hai bên đã trao đổi cho tới thời điểm này và được ký bởi máy khách. Máy chủ sử dụng khố cơng khai có trong chứng chỉ số máy khách để kiểm tra chữ ký. Các thành phần của thông điệp CertificateVerify được liệt kê trong bảng 2.6:
Bảng 2.6: Các thành phần trong thông điệp CertificateVerify
Thơng tin khố
Nội dung của tất cả các thông điệp bắt tay trao đổi giữa hai bên (8). Thông điệp ChangeCipherSpec
Sau khi máy khách gửi thông điệp ClientKeyChange, pha thương lượng được hồn thành. Tại thời điểm đó, các bên sẵn sàng bắt đầu dùng các dịch vụ an ninh mà họ đã thương lượng. Giao thức SSL định nghĩa một thông điệp đặc biệt – thông điệp ChangeCipherSpec để chỉ định một thời điểm cụ thể mà các dịch vụ an ninh có hiệu lực, đó là thời điểm chuyển trạng thái. Mỗi bên tham gia giao tiếp định nghĩa hai trạng thái: trạng thái đọc (read state) và trạng thái ghi (write state). Trạng thái đọc định nghĩa các tham số bảo mật cho dữ liệu mà
hệ thống sẽ gửi, và trạng thái ghi định nghĩa các tham số bảo mật cho dữ liệu mà hệ thống sẽ nhận. Trước khi máy khách hoặc máy chủ gửi thơng điệp ChangeCipherSpec, nó phải biết đầy đủ các tham số bảo mật để kích hoạt trạng thái. Trạng thái ghi được kích hoạt ngay sau khi thơng điệp ChangeCipherSpec được gửi và trạng thái đọc được kích hoạt ngay sau khi nhận được thơng điệp này.
Hình 2.8: Sơ đồ quá trình cập nhật trạng thái tại máy khách
Mỗi trạng thái được xác định bởi một thuật toán mã hoá khoá đối xứng, một thuật tốn tính tốn MAC, và một khố cho các thuật tốn này. Q trình kích hoạt trạng thái là quá trình chuyển từ trạng thái chờ đọc hoặc chờ ghi sang trạng thái đọc hoặc ghi và được mơ tả trong hình vẽ 2.8 và 2.9
Hình 2.9: Sơ đồ quá trình cập nhật trạng thái tại máy chủ
Trong hai hình vẽ trên thuật tốn mã hố được sử dụng là DES, thuật tốn tính tốn MAC là MD5, và key material.
Như vậy mỗi máy duy trì 4 trạng thái, trạng thái đọc, trạng thái ghi, trạng thái chờ đọc, và trạng thái chờ ghi. Ký hiệu Act là trạng thái đang hoạt động (Active), Pnd là trạng thái chờ (Pending).
(9). Thông điệp Finished
Sau khi gửi thông điệp ChangeCipherSpec, ngay lập tức mỗi bên gửi tiếp thông điệp Finished. Thông điệp Finished cho phép hai bên kiểm tra xem việc
thương lượng có thành cơng khơng. Nội dung của thơng điệp này chứa giá trị băm của tất cả các thông điệp mà hai bên đã gửi cho nhau tới thời điểm này, thơng điệp Finished được mã hố và xác thực, do đó nếu có bất kỳ sự can thiệp nào xảy ra trong quá trình thương lượng giữa hai bên thì phiên kết giao tiếp ngay lập tức bị huỷ bỏ.
2.3.1.4. Xác thực trong giao thức SSL
Giao thức SSL sử dụng chứng chỉ số vào việc xác thực các bên tham gia giao tiếp. Hai kiểu xác thực được hỗ trợ trong phiên bản SSL 3.0 là xác thực máy chủ và xác thực máy khách
Xác thực máy chủ
Máy khách thực hiện các bước sau để xác thực máy chủ:
(1). Kiểm tra xem chứng chỉ số đã hết thời hạn sử dụng chưa? Máy khách kiểm tra xem thời hạn sử dụng trong chứng chỉ số cịn hiệu lực hay khơng. Nếu chứng chỉ số đã hết thời hạn sử dụng, thì quá trình xác thực sẽ bị huỷ bỏ. Ngược lại, máy khách sẽ tiếp tục quá trình xác thực.
(2). Kiểm tra CA cung cấp chứng chỉ số có tin cậy hay khơng? Mỗi máy khách duy trì một danh sách các chứng chỉ số của CA mà nó tin cậy. Danh sách này xác định các chứng chỉ số của máy chủ mà máy khách sẽ chấp nhận. Nếu tên của CA nằm trong danh sách này thì quá trình xác thực được tiếp tục. Ngược lại, nếu tên của CA không nằm trong danh sách này thì máy chủ sẽ không được xác thực cho tới khi máy khách kiểm tra hết các CA trong hệ thống