Khi Server nhận được một yêu cầu từ Client, nó sẽ mời Client cung cấp các khả năng của Client trong miền mạng (Client sẽ cung cấp tên và các chứng thực rằng Client cũng đã biết Share Secret - như password chẳng hạn). Chính vì thế cần mật mã các thông tin này khi truyền giữa Client và Server. Client dùng digest có thể chứng thực các thông tin bí mật đó mà không cần gửi qua mạng.
TLS - bảo mật lớp truyền tải
TLS (Transport Layer Security, định nghĩa trong RFC 2246 ) dựa trên SSL (Secure Socket Layer). SSL được thiết kế cho việc bảo vệ thông tin web và được triển khai trong hầu hết các trình duyệt Internet. TLS tổng quát hơn SSL, nó có thể được dùng để bảo vệ bất cứ loại kết nối nào. Vì thế TLS được dùng để bảo vệ lưu lượng SIP.
TLS có hai lớp: lớp bắt tay (TLS handshake) và lớp bản ghi (TLS record). TLS handshake thực hiện nhận thực các thực thể ngang hàng, nó dùng các khóa công cộng và các chứng chỉ (Certifỉcate - hay khoá để hiểu TLS và S/MINE), thuật toán để tạo mã bảo mật truyền dữ liệu, hay còn gọi là khoá bảo mật. TLS record thực hiện mã hóa dữ liệu. Nó dùng thuật toán mã hóa đối xứng có khóa được tạo từ giá trị được lớp handshake cung cấp.
Hình 2.12. Thiết lập kết nối TLS [9]
S/MINE
Khi UE muốn chuyển các thông tin mà proxy không thể truy nhập (ví dụ như nội dung của luồng audio hay video giữa hai user), thì SIP cần dùng giải pháp bảo mật end-to-end hay dùng S/MINE (Secure/Multipurpose Internet Mail Extension). Thường thì thân của bản tin sẽ được dùng với S/MINE, đôi khi nó cũng được dùng để mật mã hoặc mã hoá các mào đầu có mang thông tin nhậy cảm.
Message
Encrypted Message
Content Encryption Key
Encryption Content Encryption Key
Recipient’s Public Key
Hình 2.13. Sơ đồ dùng S/MINE mật mã thân bản tin [6]
Message Encrypted
Message
Content Encryption Key Encryption Content
Encryption Key
Recipient’s Public Key
Hình 2.14. Sơ đồ dùng S/MINE giải mã thân bản tin [6]
Khi UE muốn bảo mật cho mào đầu (ví dụ ở đây là mào đầu From, To và Contact), nó sẽ copy và đặt các mào đầu này vào toàn bộ thân bản tin cần được dùng S/MINE để bảo mật (thực hiện điều này sẽ tránh được việc bị thay đổi thông tin của mào đầu). Mào đầu Content- Type: message/sigfrag sẽ chỉ ra bản tin có dùng S/MINE cho bảo mật mào đầu.