MỤC LỤC
Điều đó giúp giao thức TCP được ứng dụng chủ yếu trong những hoạt động cần độ chính xác cao như truyền tải trang web, truyền tải email, hay kho lưu trữ điện toán đám mây,…. Sau đó, Client và Server sẽ trao đổi các gói tin ACK và SYN như đã trình bày ở trên qua socket này, tiếp theo chúng mới truyền và nhận dữ liệu của nhau qua hàm send() và recv().
Các ứng dụng desktop từ xa và bộ giả lập terminal sử dụng socket để thiết lập kết nối giữa một thiết bị client và một hệ thống từ xa, cho phép người dùng truy cập và quản lý tài nguyên. Các ứng dụng phân tán như cơ sở dữ liệu phân tán, hệ thống tệp phân tán và các trang tính phân tán phụ thuộc vào socket để giao tiếp giữa các tiến trình và trao đổi dữ liệu.
+ Xác thực chứng chỉ (Certificate Authentication): Sử dụng chứng chỉ SSL/TLS để xác thực. Mỗi bên đều có một bộ chứng chỉ, máy chủ sẽ xác minh xem chứng chỉ của người dùng có được ký bởi một tổ chức uy tín hay không. Trong python, có thể sử dụng module ssl để thực hiện xác thực theo cách này. Giao thức SSL/TLS. Giao thức SSL/TLS là giao thức ở lớp Transport có tầm quan trọng cao nhất đối với sự bảo mật của các trình ứng dụng trên Web. SSL: Viết tắt của Security Sockets Layer, SSL là một giao thức mật mã giúp truyền thông an toàn qua mạng máy tính. Tuy nhiên do có nhiều lỗ hổng nên không được phát triển nữa và ngày nay SSL cũng ít được sử dụng hơn TLS. TLS: Viết tắt của Transport Layer Security, TLS cũng giống như SSL là một giao thức mật mã giúp truyền thông an toàn. Tóm lại, TLS là phiên bản tiếp theo và cải tiến của SSL, được phát triển để. cung cấp một môi trường bảo mật mạnh mẽ hơn cho việc truyền dữ liệu qua mạng. Trong khi SSL vẫn tồn tại và được sử dụng trong một số trường hợp, TLS là lựa chọn ưu tiên cho các ứng dụng và dịch vụ mới. Trong giao thức SSL/TLS có 4 giao thức con với những chức năng cụ thể:. + SSL Record: Giao thức này được sử dụng để chia nhỏ dữ liệu thành các gói tin nhỏ hơn, mã hóa dữ liệu và thêm các thông tin bảo mật như mã băm, chữ ký số, và khóa phiên trước khi gửi đi. + SSL Handshake: Giao thức Handshake được sử dụng để thiết lập kết nối an toàn giữa máy khách và máy chủ, xác thực các bên và thỏa thuận các thông tin cần thiết cho việc thiết lập kết nối bảo mật. + SSL Change Cipher Spec: Giao thức này được sử dụng để thông báo cho đối phương biết rằng các thông tin được trao đổi từ bây giờ sẽ được mã hóa bằng các thuật toán đã thỏa thuận trong giao thức Handshake. + SSL Alert: Giao thức này được sử dụng để thông báo về các sự kiện quan trọng và cảnh báo liên quan đến quá trình trao đổi dữ liệu bảo mật như như lỗi xác thực, lỗi băm, hoặc lỗi mã hóa,…. Trong 4 giao thức trên, mỗi giao thức đều có tầm quan trọng riêng, nhưng đặc biệt phải kể đến giao thức SSL Handshake, đõy được coi như là cốt lừi của giao thức SSL. *Giao thức SSL Handshake. Giao tiếp qua SSL luôn bắt đầu bằng SSL Handshake. Handshake SSL là một mật mã bất đối xứng cho phép trình duyệt xác minh máy chủ web, lấy khóa công khai và thiết lập kết nối an toàn trước khi bắt đầu truyền dữ liệu thực tế. Hình sau minh họa các bước liên quan đến quá trình SSL Handshake:. *)Phân Tích Quá Trình. Điều này bao gồm số phiên bản SSL của máy khách, cài đặt mật mã, dữ liệu theo phiên cụ thể và thông tin khác mà máy chủ cần giao tiếp với máy khách bằng SSL. -Máy khách xác minh chứng chỉ SSL của máy chủ từ CA (Certificate Authority) và xác thực máy chủ. Nếu xác thực không thành công, thì máy khách từ chối kết nối SSL.).
Nếu máy chủ đã yêu cầu xác thực máy khách (chủ yếu là trong giao tiếp máy chủ với máy chủ), thì máy khách sẽ gửi chứng chỉ của chính mình đến máy chủ. Chứng chỉ SSL/TLS là là một loại tài liệu số được sử dụng để xác thực danh tính của một máy chủ hoặc một khóa công khai trong quá trình thiết lập kết nối an toàn qua mạng Internet sử dụng giao thức SSL/TLS. Chứng chỉ này chứa các thông tin liên quan đến máy chủ hoặc khóa công khai, bao gồm thông tin về chủ sở hữu, thông tin về tên miền, khóa công khai, thông tin về cơ quan chứng thực (CA) và dấu chứng thực.
Dĩ nhiên, khi truy cập trang web không có chứng chỉ SSL/TLS, việc cung cấp thông tin cá nhân username và password trên trang này có nguy cơ bị người khác bắt gói tin và đọc được nội dung bên trong, từ đó dẫn đến việc lộ các thông tin nhạy cảm. Nhưng khi truy cập vào https://actvn.edu.vn/ thì người dùng có thể yên tâm hơn do https là sự kết hợp của giao thức HTTP và giao thức SSL/TLS, tức là trang web này đã có chứng chỉ SSL/TLS.
Bắt đầu nhận thông điệp từ Server và gửi phản hồi, nếu lựa chọn là ‘1’ (Log in),người dùng có thể nhập username và mật khẩu, nếu đăng nhập thành công, kênh chat sẽ được tạo ra. Nếu lựa chọn là ‘2’ (Sign up), người dùng sẽ nhập username mật khẩu mới cho đến khi hợp lệ và nhận được thông báo ‘Create account successful’. Lúc này, thông tin tài khoản của Client đã được lưu trên cơ sở dữ liệu với mật khẩu đã được mã hóa theo hàm băm:. Triển khai giao thức SSL/TLS trong giao tiếp Client – Server a) Các hàm, chức năng chính. - Vẫn sẽ tương tự với các thiết lập trên, điểm khác biệt là khi nhập sẽ ẩn các kí tự nhập vào bằng các dấu *, cũng như không lưu mật khẩu vào file config để đảm bảo không bị lộ mật khẩu khi bị tấn công.
Nó trả về một list/tuple chứa 2 giá trị, gán chúng vào conn, addr (conn là socket đại diện cho kết nối thiết lập với server, addr chứa địa chỉ IP và port của client đã kết nối. - Hàm này tạo một biến lưu user list và một đoạn tin nhắn cụ thể, những từ khoá trong đoạn tin nhắn sẽ dùng để xác định đây là một tin nhắn cập nhật - Mã hoá tin nhắn này và gửi đi. - Tuỳ vào các hành động cụ thể thì server sẽ gửi đi các tin nhắn định dạng khác nhau (các thông báo về username mới, một client đã disconnect hay là một user đổi tên), nếu chỉ là đoạn chat thông thường thì sẽ gửi bằng cách thông thường.
- Trả về 3 giá trị là nonce (một số ngẫu nhiên sử dụng một lần cho mã hoá nhằm ngăn chặn Replay Attack, bản mã và tag. Dưới đây sẽ nói chi tiết về mã hoá tin nhắn sử dụng 3 thành phần này. - salt sẽ được tạo ngẫu nhiên và có kích thước được chỉ định - key được tạo bằng hàm dẫn xuất khoá đã đề cập trước đó - Mã hoá tin nhắn sử dụng key -> gấn cho encrypted_data. - encrypted_data khi đó là một mảng chứa 3 giá trị nonce, ciphertext, tag, tách chúng thành các xâu để nối với nhau cũng nhau nối với salt -> gán vào. - Cuối cùng thì dùng base64 để mã hoá encrypted message -> gán vào encrypted_messagem, đây sẽ là bản mã cuối cùng để truyền đi. * Giải mã tin nhắn. - Tham số đầu vào của hàm giải mã có encrypted_data – là mảng gòm 3 giá trị nonce, ciphertext, tag. - Khởi tạo đối tượng AES sử dụng key, nonce lấy từ encrypted_data, chế độ EAX. - Bản rừ sẽ được lấy từ hàm decrypt_and_verify bằng cỏch cung cấp bản mó và tag, cuối cùng decode để chuyển từ dạng byte sang dạng thường. b) Thực nghiệm trên giao diện UI * Phía server. - Start Server: Khởi chạy server đồng thời tạo cert/key tại chính thư mục cuẩ chương trình, server sẽ tự động lấy file cert và key ở thư mục ứng dụng để bọc socket bằng một lớp bảo mật SSL/TLS. - Thực hiện các bước thiết lập thông tin tương tự phía client, đảm bảo các thông tin quan trọng như IP/Port và Password được thiết lập tương ứng với server để kết nối được triển khai.
Thiết lập của client là không xác minh tính hợp lệ của chứng chỉ hay kiểm tra tên miền nhưng trên thực tế thì việc thiết lập như vậy có thể dẫn tới những rủi ro bảo mật (như Man-in-the-middle Attack).