Chương 4 : Các Phương pháp bảo mật trong mạng cảm biến không dây
4.6 Giao thức TLS
4.6.2 Mơ hình hoạt động giao thức TLS
Kiến trúc TLS tương tự như SSL, được thiết kế cung cấp dịch vụ kết nối bảo mật end-to-end trên nền giao thức TCP.
SSL/TLS Record Protocol cung cấp dịch vụ bảo mật cho những giao thức ở tầng cao hơn gồm SSL/TLS Handshake Protocol, Cipher Spec Protocol, SSL/TLS Alert Protocol, các giao thức tầng Ứng dụng khác như HTTP, FTP, SMTP.
Mỗi kết nối TLS được quản lý bởi 1 Session được tạo trong giao thức Handshake. Các session định nghĩa các thông số bảo mật của mỗi kết nối.
Hình 4. 14 – SSL/TLS Protocol Stack [2]
TLS Record Protocol cung cấp 2 dịch vụ cho kết nối TLS là tính riêng tư (confidentiality), định nghĩa một secret key được sử dụng cho việc mã hóa dữ liệu trao đổi ở TLS Payload. Và tính khơng thể chối từ thông điệp được gửi (Message Integrity), bằng cách sử dụng một key mã hóa để tạo đoạn mã xác thực MAC (message authentication code). Khác với SSL đoạn MAC của TLS được tính bằng hàm HMAC[2] như sau:
HMAC(MAC_write_secret,seq_num||TLSCompressed.type||TLSCompressed.version||
Trang 37
Hình 4. 15 - Q trình mã hóa dữ liệu của SSL Payload [2]
SSL cho phép phân mảnh những gói dữ liệu lớn thành những đoạn nhỏ hơn để dễ xử lý. Các đoạn dữ liệu này được nén lại rồi tính đoạn mã xác thực MAC và thêm vào phía sau dữ liệu, sau đó gói tồn bộ dữ liệu được mã hóa bằng một secret key. Cuối cùng SSL Record header sẽ được thêm vào phía trước.
Một gói tin của giao thức TLS có Format như hình bên dưới, trong trường hợp này phần Payload đang chứa dữ liệu được mã hóa. Content Type cho biết gói tin trong payload thuộc giao thức nào. Major version và Minor version cho biết phiên bản của TLS. Compressed length cho biết chiều dài của gói tin bên trong payload.
Trang 38
Các gói tin bên trong payload của TLS Record Protocol có định dạng như sau
Hình 4. 17 - Định dạng các gói tin của các giao thức thuộc TLS [2]
Phần phức tạp nhất của TLS đó là giao thức Handshake. Giao thức Handshake có nhiệm vụ cho phép server và client xác thực lẫn nhau, thống nhất các thuật tốn mã hóa, các key mã hóa sẽ được sử dụng để bảo vệ dữ liệu được gửi trong TLS record. Giao thức Handshake được thực hiện trước khi 2 bên thực hiện trao đổi dữ liệu. Giao thức handshake được chia làm 4 phase như hình 4.16.
Phase 1: Có nhiệm vụ khởi tạo kết nối và trao đổi các thông số ban đầu như Protocol version, session ID, bộ mã hóa (cipher suite), phướng pháp nén, số ngẫu nhiên Nonce.
Phase 2 và Phase 3: Server và Client thực hiện quá trình trao đổi Certificate, Key Exchange và xác thực lẫn nhau. Việc xác thực cả hai bên có thể bỏ qua nếu không cần thiết. Tại Phase này, Server và Client sẽ thực hiện tính các Key mã hóa sẽ được sử dụng.
Phase 4: Hồn thành q trình Handshake bằng cách xác nhận lại bộ mã hóa (cipher suite) sẽ được sử dụng. Một điểm đặc biệt của giao thức TLS là để đảm bảo các thơng số dùng cho việc mã hóa, giải mã, xác thực đã được đồng bộ chính xác giữa 2 bên, TLS thực hiện trao đổi gói Finished. Trong đó Finished Data được tính bằng hàm Pseudorandom Function (PRF) như công thức (4.14) với dữ liệu đầu vào là Master Key, Finish Label, tất cả dữ liệu gói tin Handshake mà hai bên đã trao đổi với nhau từ trước.
Trang 39
Hình 4. 18 - Giao thức Handshake của TLS [2]
Trong giao thức TLS, bộ key được sử dụng bao gồm Pre-Master Key là key được tính trong q trình Key Exchange ở phase 2 và 3, Master Key là key được tính bằng hàm Pseudorandom Function (PRF) từ Pre-Master Key, Master Key Label, Server Nonce và Client Nonce. Block Key là key được tính từ Master Key bằng hàm PRF và được sử dụng để mã hóa các dữ liệu trao đổi ở tầng ứng dụng,
Trang 40
HMAC Key là key cũng được tính bằng hàm PRF từ Master Key và sử dụng để tính đoạn mã xác thực MAC.
Hàm PRF dùng để tính Master Key[2]:
PRF(pre_master_secret,"masterSecret",ClientHello.random||ServerHello.random) (4.12)
Hàm PRF dùng để tính Block Key và HMAC Key[2]
PRF(master_secret,"key_expansion",SecurityParameters.server_random||SecurityParam
eters.client_random) [2] (4. 13)
Dữ liệu của gói Finish cũng được tính bằng hàm PRF[2], trong đó handshake_massages là dữ liệu gói tin mà hai bên đã trao đổi với nhau từ trước. Bên nhận sẽ tính tốn và so sánh lại để kiểm tra chắc chắn dữ liệu đã được trao đổi chính xác giữa 2 bên.
PRF(master_secret,finished_label,MD5(handshake_messages)||SHA1(handshake_mess
ages))[2] (4. 14)
4.7 Giao thức bảo mật Lightweight TLS được thiết kế dành cho Mạng cảm biến không dây