DUYỆT WEB AN TOÀN VỚI SSL

98

1. Giới thiệu SSL

Bất cứ khi nào chúng ta kết nối 1 site qua https  ví dụ vào facebook hoặc vào trang mail của google. Phiên kết nối hoàn toàn được mã hóa và tất cả các ứng dụng  gửi qua một kênh mã hóa được đảm bảo tính an toàn.

1

HTTPS là viết tắt của “Hypertext Transfer Protocol Secure”, 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. Về cơ bản Transport Layer Security(TLS) và Secure Socket Layer (SSL) là các giao thức cung cấp thông tin an toàn giữa Client và Server. Giao thức HTTPS thường được dùng trong các giao dịch nhậy cảm cần tính bảo mật cao.

Trước khi chúng ta tiếp tục hãy thảo luận lý do tại sao chúng ta cần một kênh kết nối an toàn

Chúng ta xem một kịch bản sau nhé:

Alice muốn giao dịch trực tuyến với Bob và cô ta chia sẽ thông tin thẻ tín dụng với Bob Vì vậy những lo lắng của Alice là:

  • Bảo mật/Bí mật: Bất cứ thông tin mà Alice chia sẽ cho Bob đều phải giữ bí mật và tuyệt đối an toàn trước những kẻ muốn nghe trộm
  • Xác Thực: Alice cũng muốn đảm bảo rằng bất cứ thông tin nào mà cô muốn chia sẻ với Bob đều có tính xác thực và không có kẻ khác mạo danh là Bob
  • Toàn Vẹn thông tin:Thông tin mà Alice chia sẻ cho Bob không bị thay đổi trên đường truyền. Ví dụ cô giao dịch cho Bob là 100 USD không bị thay đổi thành 1000 USD.

Có những thuật toán mã hóa khác nhau được sử dụng trong phiên SSL. Để hiểu những kỹ thuật này chúng ta sẽ tìm hiểu những phần của mật mã được sử dụng sau đó sẽ có định nghĩa tổng quát về SSL

2. Mã hóa

Quá trình chuyển đổi một thông điệp bản rõ sang một thông điệp mã hóa bằng việc sử dụng khóa bí mật gọi là mã hóa và quá trình chuyển thông điệp từ mã hóa sang thông điệp rõ gọi là giải mã.

2

Quá trình mã hóa này sẽ đảm bảo tính bảo mật như theo yêu cầu của Alice. Có 2 cách thường được sử dụng mã hóa là: mã hóa đối xừng và mã hóa không đối xứng.

–          Mã hóa đối xứng

Alice và Bob cùng  sử dụng một chìa khóa riêng để mã hóa và giải mã. Do vậy bất kỳ kẻ nghe trộm nào không có khóa sẽ không thể giải được thông điệp gốc

Secret Key (Plaintext) = Ciphertext
Secret Key (Ciphertext) = Plaintext

–          Mã hóa bất đối xứng

Alice sử dụng khóa công khai của Bob để mã hóa thông điệp mà chỉ có thể giải mã bằng khóa riêng của Bob. Khóa công khai của Bob mọi người đều có thể truy cập được nhưng không ai có khóa riêng của Bob và chỉ Bob mới có thể giải mã được. Do vậy Alice chắc chắn là thông điệp được đọc bởi Bob

Public Key (Plaintext) = CipherText
Private Key (CipherText) = Plaintext

2.1       Thuật toán trao đổi khóa (Key Exchange Algorithms) 

Như trong hình thấy  khóa bí mật đã được mã hóa bởi Alice bằng cách sử dụng khóa công khai của Bob. Sau đó Bob sẽ giải mã bằng cách sử dụng khóa bí mật của mình

3

2.2       Digital Certificates.

Để sử dụng khóa công khai từ Bob thì Alice phải  nhận được khóa công khai của Bob.Vấn đề bây giờ làm thế nào để khám phá khóa công khai và giải pháp đưa ra ở đây là chứng chỉ số của Bob chứa các thông tin về khóa công khai của Bob và của Alice. Khi Alice liên lạc với Bob lần đầu tiên chứng chỉ số sẽ được tải về từ trình duyệt của Alice và sau đó sẽ xuất ra khóa công khai

Ví dụ về certificates của http://facebook.com  như sau

4

Và khóa công khai có thể được tìm thấy chi tiết

5

 2.3 PKI

Vấn đề tiếp theo  xác định khóa công khai và chứng chỉ thuộc về người sử dụng nào để khi có tranh chấp yêu cầu họ phải bồi thường. Để giải quyết vấn đề này người ta sử dụng hạ tầng khóa công khai PKI (public key interface) là bộ sưu tập của con người, chính sách, phần mềm, phần cứng để quản lý tất cả mọi thứ liên quan đến giấy chứng nhận kỹ thuật số. Xác định sự kết hợp của một khóa công khai với tên miền và chủ sở hữu của  nó. Có các thành phần khác nhau quan trọng như Certificate Authority (CA), Validation Authority (VA), Registration Authority (RA),… tham gia vào quá trình này.

2.4 CA

CA về cơ bản là bên thứ 3 được tin cậy bởi cả Alice và Bob. CA ràng buộc khóa công khai của người chủ sở hữu bằng việc ký số với khóa công khai của riêng họ và đảm bảo rằng khóa công khai của Bob không bị giả. Và nếu Alice tin tưởng CA thì có thể xác thực bằng chữ ký

Ví dụ:Nếu bạn muốn xem chứng chỉ số của nhà cung cấp nào bạn click vào khóa màu xanh lá cây bên cạnh https

6

 2.5   Digital Signature/ Message Integrity

Trong phần này sẽ đề cập đến giấy chứng nhận chữ ký số của CA. Giấy chứng nhận chữ ký số làm việc như thế nào và nó đảm bảo tính toàn vẹn của thông tin bằng cách nào. Bây giờ xem xét một kịch bản mà sử dụng chứng nhận chứ ký số

  • Chủ nhân của trang web sẽ có một mã hash toàn bộ tài liệu và quá trình băm này gọi message digest
  • Sau đó sẽ mã hóa message digest với khóa riêng quá trình này gọi chữ ký điện tử (Digital Signature)
  • Digital Signature = EPrivate Key(MessageDigest)
  • Sau đó gửi tài liệu cho các khách hàng đã ký bằng chữ ký số của mình
  • Các khách hàng nhận được chữ ký số của trang web cùng với tài liệu
  • Họ sẽ tình toàn các hash tài liệu nhận được bằng cách sử dụng cùng một thuật toán băm
  • Khách hàng sẽ giải mã chữ ký số bằng khóa công khai của trang web. Sau khi giải mã họ nhận được một message digest được gửi bởi chủ sở hữa trang web
  • Message Digest = DPublic Key(Digital Signature)
  • Tiếp theo khách hàng sẽ so sánh các hash tài liệu mình tạo ra với message Digest
  • Và cuối cùng là đảm bảo tài liệu đó đã được nhận không bị cản trờ và chữ ký đó là hợp pháp

==>     Điều này đảm bảo xác thực và toàn vẹn thông tin

3.  Giao thức SSL

Trong tầng ứng dụng, khi Alice truy cập vào 1 site HTTPS cô ta sẽ có chứng chỉ  số từ site và  khi đó một kênh kết nối an toàn được thiết lập. Giao thức bắt tay SSL đóng vai trò quan trọng đồng bộ hóa giữa các máy client và server như các phương pháp mã hóa các khóa để sử dụng kết nối.Bây giờ chúng ta sẽ dùng Wireshark bắt gói tin để xem chi tiết qua trình xử lý SSL

3.1 Step 1 – Client Hello

Trình duyệt trên client sẽ gửi thông điệp Hello tới website với nhiều thông tin xử lý như sau

7

Như trong hình trên:  Client gửi thông điệp Hello bắt tay với server bằng giao thức TLS V1.0. Toàn bộ thông điệp này sẽ được chia nhỏ thông điệp khác nhau:Session ID, Cipher Suites  với 28bytes ngẫu nhiên gửi tới Server. Trong hình trên session ID =0 vì đang tạo một phiên kết nối mới và Cipher Suites là bộ giao thức mã hóa hỗ trợ Client gửi thông điệp tới Server.

3.2    Step 2-Server Hello

Server sẽ trả lời lại Client bằng thông điệp “Server response”

8

Server  sẽ trả lời Client và có độ dài ngẫu  nhiên 28 bytes của nó. Và kết hợp với 28 bytes ngẫu nhiên của Client sau này. Server cũng tạo ra một phiên làm việc mới và gửi Session ID  tới Client. Máy chủ có bộ thuật toán mã hóa như TLS_RSA_WITH_AES_256_CBC_SHA để đảm bảo tính toàn vẹn thông tin.

9

Cùng với quá trình bắt tay giữa Client và Server. Server sẽ gửi một giấy chứng nhận với các chi tiết như tổ chức phát hành và chủ sở hữu, Tính hợp lệ của chứng chỉ và khóa công khai của tổ chức

 

10

3.3       Step 3- Compute Premaster Secret

Khi Client nhận được chứng chỉ từ Server  nó sẽ xác nhận và thực hiện chuyển sang các bước tiếp theo. Tại đây client dùng thuật toán Pseudo tạo ra 48 bytes ngẫu nhiên và khi đó kết nối tới Server được an toàn .

11

Trong hình trên Server đã sử dụng thuật toán RSA để trao đổi khóa

3.4       Step 4-Compute Master Secret

Cả 2 bên Client và Server đều biết 48 bytes bí mật. Client có 28 byte ngẫu nhiên và Server có 28 byte ngẫu nhiên. Client và Server sử dụng  các giá trị và các giá trị ngẫu nhiên sinh ra dùng thuật toán Pseudo để tính tổng 48 bytes

master_secret = PRF(pre_master_secret, “master secret”,ClientHello.random + ServerHello.random)

3.5       Step 5- Compute Key Block

Việc tính toán master_secret. Cả client và Server được tính toán Key block  như sau

key_block = PRF(SecurityParameters.master_secret,”key expansion”,SecurityParameters.server_random + SecurityParameters.client_random);

Ở đây master_secret là nguồn dữ liệu ngẫu nhiên. Key Block sau đó được chia thành các khối dữ liệu khác nhau

3.6       Step 6-Server confirms Encryption

Server sẽ giải mã thông điệp đã được mã hóa bởi Client và xác minh hash va MAC.  Nếu việc xác minh không đúng sẽ đóng phiên SSL

Nếu Server xác nhận mã hóa thành công sẽ gửi cho Client một “Change Cipher Spec”

12

Client xác nhận việc bắt tay thành công với máy chủ

3.7       Step 7-Encrypt Application Data

Sử dụng các khóa được tính toán ở trên. Client và Server bắt đầu liên lạc an toàn và thêm dữ liệu được gửi đi được mã hóa

13

Quá trình liên lạc được thể hiên ở hình sau

144. References: