TÌM HIỂU VÀ TRIỂN KHAI BẢO MẬT DỊCH VỤ VOIP SỬ DỤNG GIAO THỨC SRTP Hiện nay chúng ta có thể thấy được sự phát triển của công nghệ mạng điện thoại trên toàn thế giới, cùng đó là Internet cũng ngày càng được phổ biến rộng rãi. Sự ra đời của truyền thoại qua giao thức Internet, Voice over Internet Protocol(VoIP) đã làm bộc lộ rõ những hạn chế của mạng điện thoại thông thường như chất lượng dịch vụ không cao, tài nguyên sử dụng còn hạn chế,.... VoIP là công nghệ truyền thoại dựa trên giao thức của mạng Internet. VoIP hiện nay đang ngày càng phát triển và dần thay thế mạng điện thoại truyền thống PSTN (Public Switched Telephone Network), vì ngoài việc thực hiện cuộc gọi thoại, VoIP còn truyền dữ liệu trên cơ sở mạng truyền dữ liệu. Ngoài ra, trong những năm gần đây còn đánh dấu sự phát triển của điện thoại di động, đặc biệt là thế hệ điện thoại thông minh Smartphone. Người dùng điện thoại di động hiện nay hướng tới sử dụng các ứng dụng để ngoài việc nghe, gọi, còn có thể truyền tải dữ liệu hình ảnh, video,.... Cùng với sự phát triển của VoIP là vấn đề bảo mật cho hệ thống này. Hiện nay có rất nhiều hệ thống VoIP không được bảo mật, thông tin gửi đi không được mã hóa, dẫn đến việc tấn công làm lộ, làm mất dữ liệu. Do đó, việc làm thế nào để đảm bảo an ninh cho hệ thống VoIP là hết sức quan trọng. Mục tiêu của đề tài: Tìm hiểu hệ thống VoIP SRTP và ứng dụng của giao thức trong bảo mật cho hệ thống VoIP; phát triển ứng dụng VoIP có bảo mật sử dụng giao thức SRTP. Đồ án gồm 3 chương với nội dung sau: Chương 1: Tổng quan về hệ thống VoIP và vấn đề đảm bảo an toàn cho hệ thống VoIP Chương này trình bày Tổng quan về hệ thống VoIP và các giao thức sử dụng trong hệ thống VoIP, các mối đe dọa và các cuộc tấn công lên VoIP. Chương 2: Giao thức SRTP Chương này trình bày về giao thức SRTP, một số tấn công lên giao thức và thuật toán sử dụng trong trao đổi khóa và xác thực cho SRTP. 2 Chương 3: Phát triển ứng dụng VoIP có bảo mật sử dụng giao thức SRTP Chương này trình bày cấu trúc của SRTP, thay đổi mã khối và hàm xác thực mặc định của Linphone và phát triển ứng dụng VoIP có bảo mật sử dụng giao thức SRTP. ‒ Tìm hiểu về tổng quan về VoIP, các giao thức sử dụng trong mạng VoIP. ‒ Tìm hiểu về điểm yếu của hệ thống VoIP, các nguy cơ mất an toàn và các tấn công thường gặp trên hệ thống. ‒ Tìm hiểu về giao thức bảo mật SRTP, thuật toán sử dụng trong quản lý trao đổi khóa và xác thực cho giao thức SRTP. ‒ Tìm hiểu, nghiên cứu một số tấn công lên giao thức bảo mật SRTP, bảo mật dịch vụ VoIP với SRTP. Về mặt thực nghiệm, đồ án đã thu được những kết quả sau: ‒ Biên dịch và tìm hiểu bộ thư viện mật mã của giao thức SRTP cùng khả năng thay thế thuật toán mật mã của giao thức. ‒ Triển khai thử nghiệm thành công ứng dụng VoIP có bảo mật sử dụng giao thức SRTP. ‒ Tìm hiểu thêm về tất cả các giao thức bảo mật của hệ thống. ‒ Thay thế thuật toán mã hóa mặc định bằng mã khối hạng nhẹ.
TỔNG QUAN VỀ HỆ THỐNG VOIP VÀ VẤN ĐỀ ĐẢM BẢO
Tổng quan về VoIP
Trong những năm gần đây, điện thoại IP đã trở thành bước tiến công nghệ quan trọng trong lĩnh vực viễn thông Sự phát triển mạnh mẽ của ngành đã khiến điện thoại IP thu hút sự quan tâm lớn từ các doanh nghiệp và người dùng, góp phần nâng cao hiệu quả liên lạc và tối ưu hóa chi phí truyền thông.
Dịch vụ điện thoại IP dựa trên công nghệ VoIP tiên tiến, thu hút sự quan tâm lớn từ các nhà khai thác và nhà sản xuất Công nghệ VoIP được xem là bước đột phá, mở ra khả năng xây dựng mạng tích hợp hoàn chỉnh giữa thoại và dữ liệu Đây là hướng phát triển tất yếu của ngành viễn thông, góp phần nâng cao hiệu quả và khả năng mở rộng của các hệ thống liên lạc hiện đại.
Điện thoại IP nổi bật với mức giá thành rẻ và khả năng mở rộng dịch vụ, đã và đang xây dựng một thị trường đa dạng gồm các thuê bao, doanh nghiệp, tổ chức và cơ quan nhà nước Hệ thống điện thoại truyền thống, như PSTN (Mạng thoại chuyển mạch công cộng), là ví dụ điển hình của mạng chuyển mạch kênh SCN, phát triển từ mạng analog yêu cầu một kênh truyền riêng cho mỗi cuộc gọi và duy trì kênh đến khi cuộc gọi kết thúc Tuy nhiên, kiểu truyền thống này không tận dụng hiệu quả băng thông hiện có, với công suất giới hạn chỉ 64kbit/s mỗi kênh.
30 cuộc điện thoại trên một đường E1
VoIP khác biệt với hệ thống điện thoại truyền thống nhờ việc truyền tiếng nói qua mạng chuyển mạch gói dựa trên công nghệ mạng IP, thay vì mạng chuyển mạch kênh Tiếng nói được số hóa, đóng gói rồi gửi dưới dạng các gói tin trên mạng IP, giúp tối ưu hóa băng thông và chia sẻ lưu lượng dữ liệu Công nghệ VoIP cho phép tích hợp nhiều dịch vụ như thoại, dữ liệu, fax và hội nghị video trên cùng một kênh, từ đó giảm chi phí cuộc gọi đáng kể, đặc biệt là các cuộc gọi quốc tế xa xôi - điều mà hệ thống truyền thống vẫn chưa thể thực hiện hiệu quả.
Thử thách lớn trong công nghệ VoIP là đảm bảo dòng thoại truyền tải theo thời gian thực, đòi hỏi phải duy trì đường truyền ổn định để tránh trễ, mất dữ liệu hoặc tắc nghẽn mạng Trong mạng chuyển mạch kênh, các cuộc thoại không chia sẻ đường truyền với ứng dụng khác, giúp đảm bảo chất lượng cuộc gọi, ít xảy ra sự cố Tuy nhiên, trong mạng chuyển mạch gói như IP, dữ liệu thoại phải chia sẻ băng thông với nhiều ứng dụng khác, và các gói tin di chuyển theo nhiều đường khác nhau, dẫn đến tình trạng tắc nghẽn, trễ hoặc mất dữ liệu thường xuyên xảy ra Những vấn đề này có thể ảnh hưởng nghiêm trọng đến chất lượng giọng nói nhận được, đặt ra yêu cầu cần có giải pháp tốt để xử lý nhằm duy trì chất lượng cuộc gọi trong công nghệ VoIP.
Mạng IP và mạng chuyển mạch kênh có thể giao tiếp với nhau thông qua Gateway, cho phép các đầu cuối trong hai mạng có thể liên lạc điện thoại mà vẫn giữ được sự trong suốt cho người dùng Sự phát triển này mở ra khả năng tích hợp nhiều dịch vụ của hai loại mạng, nâng cao khả năng truyền thông liên kết và mở rộng hệ thống mạng một cách hiệu quả.
Hình 1.2 Các Terminal của mạng IP có thể giao tiếp với các Telephone trong mạng SCN thông qua Gateway 1.1.1 Ưu điểm của mạng VoIP
Mạng VoIP giúp giảm chi phí dịch vụ đường dài so với điện thoại truyền thống, khi chi phí cuộc gọi chỉ bằng chi phí truy cập Internet Nhờ các kỹ thuật nén thoại tiên tiến, VoIP tối ưu hóa việc sử dụng băng thông, mang lại lợi ích về tiết kiệm chi phí và nâng cao hiệu quả liên lạc.
Mạng VoIP không chỉ giúp mở rộng khả năng thoại và fax mà còn tạo điều kiện cho các tính năng mới như truyền hình ảnh, dữ liệu và dịch vụ thoại đa phương tiện Ngoài ra, hệ thống có thể dễ dàng mở rộng để đáp ứng nhu cầu ngày càng tăng của người dùng và doanh nghiệp.
Quản lý băng thông là yếu tố quyết định chất lượng cuộc gọi trên điện thoại IP Khi mạng có lưu lượng thấp, băng thông sẽ dành riêng cho mỗi cuộc gọi để đảm bảo chất lượng tốt nhất Ngược lại, khi lưu lượng mạng cao, hệ thống sẽ duy trì băng thông trung bình cho các cuộc gọi để tối ưu hoá số lượng người dùng đồng thời Chính sách này giúp tăng hiệu quả sử dụng của điện thoại IP, đảm bảo cuộc gọi ổn định và chất lượng cao trong mọi tình huống.
Tối ưu hệ thống truyền tin qua Internet giúp giảm tải cho kênh truyền, ngay cả khi có nhiều cuộc gọi đồng thời, không gây ảnh hưởng đến chất lượng dịch vụ như cuộc gọi truyền thống Nhờ đó, người dùng có thể tận dụng tối đa các tài nguyên của hệ thống để kết hợp thoại, truyền file, gửi email và duyệt web một cách hiệu quả Việc này nâng cao trải nghiệm người dùng và tối ưu hóa hiệu suất hệ thống truyền thông trực tuyến.
1.1.2 Nhược điểm của mạng VoIP
Truyền tín hiệu theo thời gian thực qua mạng chuyển mạch gói đòi hỏi kỹ thuật phức tạp, vì quá trình này dễ gặp phải hiện tượng mất gói và độ trễ Để đảm bảo chất lượng dịch vụ ổn định, cần đáp ứng các yêu cầu như tỉ lệ nén cao, khả năng dự đoán và tái tạo lại dữ liệu của các gói mất mát, cùng với tốc độ xử lý nhanh của bộ Codec.
Vấn đề bảo mật khi sử dụng mạng Internet là rất quan trọng, do nguy cơ mất an toàn cao từ các mã độc và hacker Các cuộc tấn công có thể ngăn chặn việc truyền dữ liệu, nghe lén và thực hiện đánh cắp thông tin cá nhân Do đó, người dùng cần thực hiện các biện pháp bảo vệ an ninh mạng để đảm bảo an toàn thông tin.
1.1.3 Cấu hình của mạng VoIP
Theo các ngiên cứu của ETSI, cấu hình chuẩn của mạng VoIP có thể bao gồm các phần tử sau:
‒ Thiết bị đầu cuối kết nối với mạng IP
‒ Thiết bị đầu cuối kết nối với mạng chuyển mạch kênh
Trong các kết nối khác nhau cấu hình mạng có thể thêm hoặc bớt một số phần tử trên
Mạng VoIP có cấu hình gồm các thành phần chính như Gatekeeper, Gateway, thiết bị đầu cuối thoại và máy tính, đảm bảo hoạt động liên tục và ổn định Mỗi thiết bị đầu cuối giao tiếp với Gatekeeper, tương tự như giao tiếp giữa thiết bị đầu cuối và Gateway, giúp quản lý cuộc gọi hiệu quả Gatekeeper chịu trách nhiệm quản lý một vùng mạng cụ thể, nhưng trong các trường hợp phạm vi lớn hoặc phức tạp, nhiều Gatekeeper có thể chia sẻ nhiệm vụ để đảm bảo quản lý vùng mạng tối ưu và mở rộng khả năng xử lý.
Trong vùng quản lý của các Gatekeeper, các tín hiệu báo hiệu cần được chuyển tiếp qua một hoặc nhiều Gatekeeper để đảm bảo quá trình thông tin diễn ra liên tục và chính xác Chính vì vậy, các Gatekeeper phải có khả năng trao đổi thông tin với nhau để xử lý các cuộc gọi liên quan đến nhiều Gatekeeper một cách hiệu quả Việc này giúp duy trì sự liên kết và tăng cường khả năng quản lý hệ thống gọi một cách linh hoạt và ổn định.
Hình 1.3 Cấu hình của mạng VoIP Chức năng của các phần tử trong mạng như sau:
Thiết bị đầu cuối trong mạng VoIP là nút cuối, cho phép thuê bao thực hiện cuộc gọi tới các thuê bao khác qua mạng IP Nó kết nối với mạng IP thông qua các giao diện truy nhập và được giám sát bởi Gatekeeper, đảm bảo quản lý và kiểm soát các cuộc gọi Thiết bị đầu cuối đóng vai trò quan trọng trong việc truyền tải âm thanh và dữ liệu giữa các người dùng trong hệ thống VoIP.
Một thiết bị đầu cuối có thể gồm các khối chức năng sau:
‒ Chức năng đầu cuối: Thu và nhận các bản tin
‒ Chức năng bảo mật kênh truyền tải: Đảm bảo tính bảo mật của kênh truyền tải thông tin kết nối với thiết bị đầu cuối
‒ Chức năng bảo mật kênh báo hiệu: Đảm bảo tính bảo mật của kênh báo hiệu kết nối với thiết bị đầu cuối
Nguy cơ đối với hệ thống VoIP di động
VoIP dựa trên kết nối Internet nên dễ bị các mối đe dọa và vấn đề liên quan đến an ninh mạng mà máy tính của bạn có thể gặp phải Công nghệ này còn mới, gây ra nhiều tranh cãi về các nguy cơ tấn công tiềm năng như virus và mã độc nguy hiểm Các hacker có thể tấn công VoIP bằng cách chặn truyền thông, nghe lén hoặc thực hiện các cuộc tấn công giả mạo bằng cách thao túng ID và làm gián đoạn dịch vụ Ngoài ra, việc sử dụng mạng với các hoạt động tiêu tốn tài nguyên như tải file hoặc chơi game trực tuyến cũng ảnh hưởng đến chất lượng và ổn định của dịch vụ VoIP.
Ngoài những vấn đề đã đề cập, VoIP còn gặp phải các thách thức liên quan đến định tuyến trên kết nối băng thông rộng Trong khi hệ thống điện thoại truyền thống vẫn có thể hoạt động khi mất điện, thì VoIP hoàn toàn không thể thực hiện cuộc gọi khi mất nguồn điện Điều này dẫn đến một số vấn đề về bảo mật tại nhà và các số khẩn cấp có thể không hoạt động đúng như mong đợi, ảnh hưởng đến khả năng liên lạc trong các tình huống khẩn cấp.
1.2.1 Các mối đe dọa đối với hệ thống VoIP
Việc hội tụ thoại và dữ liệu trên cùng một dây truyền, bất kể giao thức nào được sử dụng, gây ra những thách thức lớn về bảo mật cho các kỹ sư và quản trị mạng Hệ quả của xu hướng này là các mạng chính có nguy cơ bị tấn công, dẫn đến rủi ro nguy hiểm cho kiến trúc viễn thông của các tổ chức Do đó, đảm bảo an toàn cho toàn bộ mạng VoIP yêu cầu các kỹ sư quản trị mạng phải có kế hoạch chi tiết, kiến thức chuyên sâu và khả năng phân tích các tình huống cụ thể để ứng phó hiệu quả.
Bảng sau mô tả các cấp độ mà cấu trúc VoIP có thể bị tấn công:
Bảng 1.1 Các cấp độ mà cấu trúc VoIP có thể bị tấn công Điểm yếu Đặc tả
Cấu trúc IP Điểm yếu này liên quan đến các hệ thống sử dụng mạng chuyển mạch gói, nó làm ảnh hưởng đến cấu trúc gói VoIP
Hệ điều hành Các thiết bị VoIP kế thừa các điểm yếu của hệ điều hành và các firmware mà chúng chạy trên đó (windows và linux)
Cấu hình mặc định của thiết bị VoIP thường đi kèm với nhiều dịch vụ dư thừa, gây ra lỗ hổng bảo mật dễ bị tấn công DoS, tràn bộ đệm hoặc tránh xác thực Những cổng của các dịch vụ không cần thiết này trở thành điểm yếu trưởng thành cho các cuộc tấn công mạng Việc tối ưu hóa và chỉnh sửa cấu hình thiết bị VoIP giúp giảm thiểu rủi ro bảo mật, bảo vệ hệ thống khỏi các mối đe dọa tiềm ẩn.
Mức ứng dụng Các công nghệ mới còn non yếu có thể bị tấn công bẻ gãy hoặc mất điều khiển đối với các dịch vụ
1.2.2 Một số phương thức tấn công mạng VoIP
VoIP dựa trên kết nối Internet nên đối mặt với các mối đe dọa và vấn đề tương tự như máy tính, bao gồm khả năng bị tấn công bởi virus và mã độc Những kẻ tấn công có thể chặn truyền thông, nghe trộm dữ liệu, hoặc thực hiện các cuộc tấn công giả mạo bằng cách thao túng ID, gây ảnh hưởng nghiêm trọng đến chất lượng dịch vụ của bạn.
Các cuộc tấn công nhằm gây gián đoạn và quấy rối dịch vụ VoIP thường phản ánh sự cố phá hoại ở nhiều cấp độ, bao gồm hệ thống quản trị, hệ thống dự phòng, hệ thống truy nhập và điều khiển Kẻ tấn công có thể thực hiện các cuộc tấn công từ xa bằng cách lợi dụng lỗ hổng trong các giao thức sử dụng trong VoIP, gây ảnh hưởng nghiêm trọng đến tính liên tục và bảo mật của dịch vụ Việc hiểu rõ các phương thức tấn công này giúp nâng cao khả năng phòng vệ và đảm bảo ổn định cho hệ thống VoIP doanh nghiệp.
Tấn công từ chối dịch vụ (DOS) là nguyên nhân chính gây gián đoạn dịch vụ, trong đó có hai loại chính là DOS thông thường và DDoS – tấn công phân tán DDoS Khi hệ thống gặp phải các cuộc tấn công này, khả năng chống đỡ hiệu quả là rất hạn chế, dẫn đến mất dịch vụ và ảnh hưởng nghiêm trọng đến hoạt động của doanh nghiệp.
Các tấn công liên quan đến dịch vụ thoại trong hệ thống VoIP có thể gây gián đoạn và ảnh hưởng lớn đến liên lạc Để đảm bảo hệ thống VoIP hoạt động liên tục và ổn định, các hệ thống điện thoại kết nối phải duy trì hoạt động một cách thông suốt Các dịch vụ thoại liên quan cần được bảo vệ và kiểm tra thường xuyên nhằm ngăn chặn các cuộc tấn công, đảm bảo chất lượng cuộc gọi và an ninh cho mạng lưới liên lạc của doanh nghiệp.
Voicemail có thể bị tấn công đơn giản bằng cách đoán mật khẩu yếu, dẫn đến việc xóa tin nhắn quan trọng hoặc thay đổi thông tin cá nhân Vì vậy, việc bảo vệ mật khẩu voicemail mạnh và tránh sử dụng các mật khẩu dễ đoán là yếu tố quan trọng để đảm bảo an ninh thông tin cá nhân Các cuộc tấn công này cho thấy mức độ nguy hiểm khi hệ thống bảo mật chưa đủ mạnh, gây ra rủi ro mất mát dữ liệu và quyền riêng tư Chủ sở hữu cần cảnh giác và thực hiện các biện pháp bảo vệ như đổi mật khẩu thường xuyên để phòng tránh các cuộc tấn công đơn giản nhưng có thể gây hậu quả nghiêm trọng.
Nghe trộm là phương pháp tấn công hiệu quả khi dữ liệu truyền qua mạng không được mã hóa, cho phép kẻ xấu dễ dàng theo dõi và lấy cắp thông tin Hacker có thể lợi dụng các lỗi bảo mật để bắt các gói tin tại các điểm trung gian như gateway hoặc proxy, từ đó truy cập vào dữ liệu nhạy cảm Việc thiếu mã hóa dữ liệu khiến các thông tin truyền tải dễ bị nghe lén, tăng nguy cơ rò rỉ dữ liệu quan trọng cho hệ thống mạng của bạn.
‒ Giả mạo: Về nguyên lý phương pháp này rất đơn giản là giả mạo cái gọi là thực Phương thức này xuất phát từ chính đời sống xã hội
Truy cập trái phép đề cập đến khả năng xâm nhập vào các dịch vụ, hệ thống chức năng hoặc thành phần mạng mà không được phép Các hacker có thể lợi dụng các lỗ hổng bảo mật như tràn bộ đệm, cấu hình mặc định và mức bảo vệ yếu để xâm nhập trái phép vào hệ thống Việc phát hiện và khắc phục các lỗ hổng này là yếu tố quan trọng để tăng cường an ninh mạng, bảo vệ dữ liệu và tránh bị mất mát thông tin quan trọng.
Những nhu cầu về đảm bảo an ninh đối với hệ thống VoIP di động
Hệ thống VoIP hoạt động trên nền Internet nên dễ bị tấn công, đặc biệt là các hệ thống Softphone Các hình thức tấn công vào hệ thống VoIP rất đa dạng do có nhiều phương pháp thiết lập khác nhau, khiến vai trò của người quản trị hệ thống vô cùng quan trọng trong việc bảo vệ an ninh Để đảm bảo an toàn cho hệ thống VoIP, cần thiết lập các biện pháp bảo vệ phù hợp nhằm phòng chống các mối đe dọa mạng.
Tính toàn vẹn của dữ liệu đảm bảo rằng người nhận nhận được các gói dữ liệu gửi bởi người khởi tạo mà không có sự chỉnh sửa hay thay đổi nào trong nội dung Một bên thứ ba không có khả năng can thiệp hay chỉnh sửa gói dữ liệu trong quá trình truyền tải, đảm bảo tính bảo mật và chính xác của dữ liệu Áp dụng chính xác trong trường hợp của tín hiệu VoIP, tính toàn vẹn đảm bảo cuộc gọi không bị can thiệp, trong khi đối với phương tiện truyền thông khác, sự mất mát gói có thể được chấp nhận và không gây ra ảnh hưởng lớn.
‒ Tính bí mật: Một hãng thứ ba không nên có khả năng để đọc dữ liệu mà được dự định cho người nhận
‒ Tính xác thực: Bên gửi và bên nhận tín hiệu VoIP hay thông điệp truyền thông nên chắc chắn rằng chúng đang liên lạc ngang hàng nhau
Tính sẵn sàng của thiết bị VoIP là yếu tố quan trọng để đảm bảo bảo vệ chống lại các cuộc tấn công từ chối dịch vụ (DoS), giúp duy trì hoạt động liên tục cho người dùng chính đáng Các thiết bị này cần được thiết lập để chống lại các cuộc tấn công có ý đồ xấu hoặc hành vi tiêu cực, đồng thời hạn chế quyền truy cập đối với những người dùng có hành vi không đúng đắn Việc đảm bảo tính sẵn sàng giúp duy trì chức năng liên tục của hệ thống VoIP, giảm thiểu rủi ro và nâng cao hiệu suất hoạt động.
Các giao thức báo hiệu (Signaling Protocol)
1.4 Các giao thức báo hiệu (Signaling Protocol)
1.4.1 Giao thức SIP (Session Initiation Protocol)
SIP (Session Initiation Protocol) là giao thức báo hiệu điều khiển lớp ứng dụng được sử dụng để thiết lập, duy trì và kết thúc các phiên truyền thông đa phương tiện Các phiên multimedia bao gồm thoại Internet, hội nghị trực tuyến và các ứng dụng liên quan đến truyền đạt âm thanh, hình ảnh và dữ liệu SIP đóng vai trò quan trọng trong các hệ thống truyền thông hiện đại, giúp xây dựng các cuộc gọi và dịch vụ hội nghị một cách hiệu quả.
SIP sử dụng các bản tin mời (INVITE) để thiết lập các phiên truyền dẫn và truyền tải thông tin mô tả cuộc gọi Giao thức này hỗ trợ cả cuộc gọi điểm - điểm và đa điểm, giúp linh hoạt trong việc thiết lập các cuộc liên lạc SIP có năm chức năng chính gồm định vị thuê bao, kiểm tra khả năng thuê bao, đảm bảo độ sẵn sàng của thuê bao, thiết lập và xử lý cuộc gọi Đây là một giao thức dựa trên ý tưởng và cấu trúc của HTTP, phù hợp để quản lý các cuộc gọi qua mạng Internet.
Wide Web) và là một phần trong kiến trúc multimedia của IETF
SIP là giao thức mở, cho phép mở rộng và phát triển thêm các chức năng mới để đáp ứng nhu cầu đa dạng của dịch vụ thoại Nhờ tính linh hoạt của các bản tin SIP, giao thức này có thể hỗ trợ các dịch vụ thoại tiên tiến, bao gồm cả dịch vụ di động SIP được chuẩn hóa bởi IETF trong RFC 2543, đảm bảo tính tiêu chuẩn và khả năng tương thích toàn cầu.
1.4.1.1 Các loại bản tin SIP
Trong hệ thống SIP, bản tin yêu cầu (Request) được gửi từ client tới server để thực hiện các thao tác như xác định người dùng, khởi tạo, sửa đổi hoặc hủy một phiên Theo RFC 3261, có sáu kiểu bản tin request giúp User Agents (UA) và proxy dễ dàng xác định người dùng và quản lý các phiên liên quan Các loại request này đóng vai trò quan trọng trong việc duy trì và điều phối các cuộc gọi, đảm bảo hoạt động liên tục và linh hoạt của hệ thống SIP.
Bản tin INVITE yêu cầu thiết lập mới hoặc thay đổi các đặc tính của phiên trước đó, sử dụng SDP (Session Description Protocol) để định nghĩa các thông số media của phiên Một phản hồi thành công với mã 200 sẽ trả về các thông số đã được người gọi chấp nhận trong phiên media, đảm bảo quá trình thiết lập cuộc gọi diễn ra suôn sẻ và đúng cấu hình.
Bản tin ACK xác nhận rằng client đã nhận được phản hồi cuối cùng của bản tin INVITE, nhằm đảm bảo quá trình thiết lập cuộc gọi thành công ACK chỉ được sử dụng phối hợp với bản tin INVITE để xác nhận trạng thái kết nối, thường gửi từ đầu cuối đến đầu cuối khi nhận được phản hồi 200 OK Ngoài ra, ACK có thể chứa phần thân bản tin mô tả các phiên làm việc cuối cùng, đặc biệt trong trường hợp bản tin INVITE không đi kèm nội dung này Việc sử dụng chính xác ACK trong SIP giúp duy trì sự liên tục và chính xác của phiên giao tiếp.
‒ Bản tin OPTIONS: UA sử dụng request này để truy vấn tới server về khả năng của nó
‒ Bản tin BYE: UA sử dụng bản tin này để yêu cầu hủy một phiên đã được thiết lập trước đó
Bản tin CANCEL cho phép client và server hủy bỏ một yêu cầu như INVITE, giúp kiểm soát tốt hơn quá trình truyền thông trong hệ thống SIP Khi gửi yêu cầu CANCEL, nó chỉ ảnh hưởng đến những yêu cầu chưa được phản hồi hoặc chưa hoàn thành, không tác động đến các yêu cầu đã nhận được phản hồi trước đó từ server Điều này đảm bảo sự linh hoạt và kiểm soát tối ưu trong quá trình xử lý các yêu cầu SIP, giảm thiểu rủi ro về mất dữ liệu hoặc lặp lại yêu cầu không cần thiết.
‒ Bản tin REGISTER: Một client sử dụng REGISTER để yêu cầu đăng ký vị trí của nó với SIP server
A SIP response is a message sent by the server to inform the client about the status of a previous SIP request SIP responses are numbered from 100 to 699 and are categorized into different classes based on their meanings These response codes help clients understand the outcome of their requests, whether they require further action or if the request was successful Understanding the classification of SIP responses is essential for effective communication and troubleshooting in SIP-based systems.
Bảng 1.2 Mô tả các SIP Reponses
Các lớp Response Mã trả về Mô tả
Thông tin 100 Đang thực hiện kết nối
181 Cuộc gọi đang được chuyển tiếp
182 Được đặt vào hàng đợi
183 Phiên đang được xử lý
Các lớp Response Mã trả về Mô tả
Chuyển hướng 300 Nhiều lựa chọn
380 Dịch vụ khác Lỗi Client 400 Yêu cầu không hợp lệ
405 Phương thức không được phép
407 Yêu cầu xác thực Proxy
414 URL được yêu cầu quá lớn
415 Không hỗ trợ kiểu media
421 Yêu cầu phần mở rộng
Các lớp Response Mã trả về Mô tả
423 Khoảng thời gian giữa hai sự kiện quá ngắn
480 Tạm thời chưa sẵn sàng
482 Phát hiện thấy “loop” (chu trình)
485 Mật mở không rõ ràng
488 Không thể chấp nhận tại đây
491 Yêu cầu chưa được giải quyết
493 Không giải mã được Lỗi Server 500 Lỗi nội tại trong server
501 Chưa được thực hiện đầy đủ
503 Dịch vị không tồn tại
505 Phiên bản SIP không được hỗ trợ
513 Bản tin quá lớn Lỗi toàn cục 600 Bận ở khắp mọi nơi
Các lớp Response Mã trả về Mô tả
SDP (Session Description Protocol – giao thức mô tả phiên)
SDP được các bản tin SIP dùng để định nghĩa các thông số của phiên SDP được miêu tả trong RFC 4566
SDP được miêu tả dưới dạng chuỗi ký tự Một SDP message bao gồm nhiều dòng, mỗi dòng có dạng:
‒ : là một ký tự riêng lẻ
‒ : là chuỗi giá trị được gán cho và do người dùng định nghĩa
Một SDP message được phân thành 3 nhóm thông tin:
‒ Session-level description: Chứa các dòng miêu tả các đặc điểm dành cho Session
‒ Time description: Chứa các dòng chỉ ra các khía cạnh về thời gian của Session
‒ Media description: Chứa các dòng miêu tả các loại media khác nhau trong Session
Bảng 1.3 Ý nghĩa của các ký tự trong SDP
Miêu tả Bắt buộc
V Phiên bản giao thức Có
O Nhận dạng session và người khởi tạo: username, id, ip,…
I Chủ đề hoặc thông tin ngắn về session Không
E 0 hoặc địa chỉ email Không
P 0 hoặc số điện thoại Không
C Thông tin kết nối Không
B Thông tin độ rộng băng tần Không
T Thời gian session được kích hoạt Có
R Thời gian lặp lại Không
M Tên media và địa chỉ truyền tải Có
C Thông tin kết nối Không
B Thông tin độ rộng băng tần Không
Cấu trúc của một gói tin SDP được miêu tả như hình:
Hình 1.6 Cấu trúc gói tin SDP
1.4.1.2 Mô tả cuộc gọi SIP
‒ Proxy server nhận được bản tin INVITE từ client
‒ Proxy server liên lạc với Location server để xác định địa chỉ của người bị gọi
‒ Location server xác định vị trí của người được gọi và cung cấp địa chỉ server đích
The INVITE message is forwarded to the address provided by the Location server The proxy server then adds a Record-Route header to the INVITE to ensure that all subsequent messages are routed through the proxy This process guarantees proper routing and session continuity in SIP communications.
‒ Phía được gọi rung chuông Người được gọi nhấc máy
‒ Phía được gọi gửi bản tin 200 OK thông báo cuộc gọi bắt đầu
‒ Bản tin 200 OK được chuyển tiếp qua proxy server tới phía gọi
Khi nhận được bản tin 200 OK, phía gọi phản hồi bằng bản tin ACK tới proxy-server (đặc biệt khi proxy chèn tiêu đề Record-Route vào trong bản tin INVITE) hoặc gửi trực tiếp tới phía người được gọi, đảm bảo quá trình thiết lập cuộc gọi diễn ra suôn sẻ và tuân thủ các quy trình SIP tiêu chuẩn.
‒ Proxy chuyển tiếp ACK tới người được gọi
‒ Cuộc gọi thoại được thiết lập
Hình 1.7 Quá trình thiết lập và hủy một phiên kết nối của SIP
‒ Phía được gọi gửi bản tin BYE đến phía gọi
‒ Phía gọi gửi bản tin 200 OK được chuyển tiếp qua các server tới phía được gọi
1.4.1.3 Các thành phần trong mạng SIP
‒ User Agent: Là một thiết bị đầu cuối có nhiệm vụ khởi tạo và trả lời các yêu cầu SIP
Máy chủ ủy quyền (Proxy server) là một chương trình trung gian hoạt động như một server và một client, giúp tạo các yêu cầu thay mặt cho các client khác Nó xử lý các yêu cầu này và phục vụ chúng bên trong hệ thống hoặc truyền tiếp đến các server khác để lấy dữ liệu Proxy server đóng vai trò quan trọng trong việc tăng cường bảo mật, cải thiện hiệu suất truy cập và kiểm soát lưu lượng truy cập mạng.
Máy chủ định vị (Location Server) là phần mềm quan trọng trong hệ thống viễn thông, có nhiệm vụ thuê bao định vị chính xác và cung cấp thông tin về các vị trí khả năng của thuê bao bị gọi Thông tin vị trí này được gửi đến các phần mềm máy chủ ủy quyền và máy chủ chuyển đổi địa chỉ để đảm bảo quy trình gọi thoại và dữ liệu diễn ra trơn tru, hiệu quả Việc sử dụng máy chủ định vị giúp nâng cao chất lượng dịch vụ, cải thiện trải nghiệm người dùng và tối ưu hệ thống định vị trong mạng di động.
Máy chủ chuyển đổi địa chỉ (Redirect Server) là phần mềm nhận yêu cầu SIP và chuyển đổi địa chỉ SIP sang các địa chỉ khác trước khi gửi lại cho đầu cuối Khác với máy chủ ủy quyền, máy chủ chuyển đổi địa chỉ không hoạt động như một đầu cuối, do đó không gửi yêu cầu hay hủy cuộc gọi Đây là thành phần quan trọng trong quá trình quản lý và xử lý các yêu cầu SIP nhằm tối ưu hóa mạng truyền thông IP.
Máy chủ đăng ký (Register Server) là phần mềm tiếp nhận các yêu cầu đăng ký từ thiết bị đầu cuối và thường kiêm nhiệm các chức năng an ninh như xác nhận người dùng Nó thường được cài đặt cùng với máy chủ ủy quyền, máy chủ chuyển đổi địa chỉ hoặc dịch vụ định vị thuê bao Mỗi lần thiết bị đầu cuối, như điện thoại, bật lên, nó sẽ đăng ký với máy chủ đăng ký; nếu cần thông báo vị trí, bản tin REGISTER sẽ được gửi đi Các thiết bị đầu cuối thường thực hiện việc đăng ký lại định kỳ để duy trì thông tin cập nhật.
Hình 1.8 Các thành phần của SIP
Hoạt động của máy chủ ủy quyền (Proxy Server)
Hình 1.9 Hoạt động của Proxy Server SIP userA@yahoo.com gửi bản tin INVITE cho userB@hotmail.com để mời tham gia cuộc gọi Các bước như sau:
Bước 1: UserA@yahoo.com gửi bản tin INVITE cho UserB ở miền hotmail.com, bản tin này đến proxy server SIP của miền hotmail.com (Bản tin
INVITE có thể đi từ Proxy server SIP của miền yahoo.com và được Proxy này chuyển đến Proxy server của miền hotmail.com)
Bước 2: Proxy server của miền hotmail.com sẽ tham khảo server định vị (Location server) để quyết định vị trí hiện tại của UserB
Bước 3: Server định vị trả lại vị trí hiện tại của UserB (giả sử là UserB@hotmail.com)
Bước 4: Proxy server gửi bản tin INVITE tới userB@hotmail.com Proxy server thêm địa chỉ của nó trong một trường của bản tin INVITE
Trong bước 5, UserB gửi UAS đến máy chủ Proxy và nhận được phản hồi 200 OK để xác nhận thành công Bước 6, proxy server chuyển tiếp phản hồi 200 OK trở lại cho người dùng userA@yahoo.com, xác nhận rằng yêu cầu đã được xử lý thành công Cuối cùng, ở bước 7, userA@yahoo.com gửi bản tin ACK cho UserB qua proxy server để hoàn tất quá trình thiết lập và xác nhận kết nối SIP.
GIAO THỨC SRTP
Tìm hiểu chung về SRTP
Giao thức vận chuyển thời gian thực an toàn (SRTP), theo RFC 3711, là một profile của giao thức RTP cung cấp tính toàn vẹn, xác thực và bảo vệ riêng tư cho lưu lượng RTP và RTCP SRTP không quy định cách trao đổi khóa giữa người gửi và người nhận, mà để hệ thống quản lý khóa bên ngoài chịu trách nhiệm; trong VoIP, các khóa thường được trao đổi trước qua giao thức báo hiệu, và cần bảo vệ bằng TLS để tránh lộ khóa cho hacker.
2.1.1 Cấu trúc của gói dữ liệu SRTP
Cấu trúc gói dữ liệu SRTP được mô tả:
Hình 2.1 Cấu trúc gói tin SRTP
‒ MKI (MasterKey Identifier/Index): Định danh khóa chủ, báo hiệu khóa nào được sử dụng
‒ MIC (Message Integrity Code): Mã toàn vẹn thông báo
‒ AUTH: Dùng để xác thực RTP header và payload
2.1.2 Khả năng bảo mật của SRTP
SRTP là giải pháp tối ưu giúp bảo vệ luồng dữ liệu VoIP, đảm bảo tính bí mật và toàn vẹn của payload của các gói RTP Nó còn cung cấp chức năng chống tấn công lặp (replay protection), nâng cao khả năng bảo mật cho các cuộc gọi thoại Vị trí của giao thức SRTP trong kiến trúc mạng nằm trong lớpTransport, đảm bảo hiệu quả bảo vệ dữ liệu trong quá trình truyền tải.
IP MAC Hình 2.2 Lớp bảo mật SRTP cho giao thức RTP
Dữ liệu của ứng dụng VoIP được phân làm hai loại ứng với hai cột:
‒ Cột trái là các giao thức cho luồng dữ liệu (media) thoại
‒ Cột phải là các giao thức ứng dụng để vận chuyển các tín hiệu báo hiệu, phục vụ kết nối, trao đổi khóa
‒ Ce: Ký hiệu chứng chỉ số (trong trường hợp sử dụng hạ tầng cơ sở khóa công khai phân phối khóa) trong phân phối, trao đổi khóa
Trong thực tế, SRTP chủ yếu sử dụng mã hóa AES (xác định là cài đặt ngầm định) để bảo vệ payload của gói RTP, đảm bảo an toàn dữ liệu truyền tải Ngoài ra, SRTP còn sử dụng hàm băm an toàn HMAC-SHA1 để xác thực và đảm bảo toàn vẹn dữ liệu, giúp tăng cường bảo mật cho các cuộc gọi thoại qua mạng Mặc dù có thể áp dụng các lược đồ mã hóa an toàn khác nhau trong SRTP, nhưng AES và HMAC-SHA1 vẫn là các thành phần chính và phổ biến nhất của tiêu chuẩn này.
2.1.2.1 Đảm bảo tính bí mật dữ liệu thoại
Bảo mật cuộc đàm thoại được đảm bảo nhờ mã hóa các payload của gói dữ liệu thoại, chỉ có người gửi và người nhận có khoá hợp lệ mới có thể hiểu nội dung Đối với tín hiệu thời gian thực, phương pháp mã khối tựa mã dòng như chế độ CTR trong AES là lựa chọn phù hợp, vì quá trình giải mã các gói dữ liệu riêng lẻ, độc lập với nhau, giúp giảm thiểu tác động của mất mát hoặc trễ dữ liệu đến cuộc trò chuyện Ngoài ra, phương pháp này còn giúp tránh việc làm tròn payload, hạn chế các cuộc tấn công phổ biến, nâng cao tính bảo mật của hệ thống.
Hình 2.3 Lược đồ mã hóa RTP payload sử dụng AES chế độ CTR
Hình 2.3 trình bày ứng dụng của AES chế độ CTR để mã hóa một khối dữ liệu IP, trong đó khối dòng khóa Bi,j được tạo ra bằng cách mã hóa IV với khóa bằng AES-Chế độ CTR IV được xây dựng từ 48 bit chỉ số của gói, 32 bit định danh nguồn đồng bộ SSRC và 112 bit khóa salt (mầm) Tất cả các tham số này đều được dịch trái và sử dụng hoặc loại trừ (XOR) để đảm bảo tính bảo mật của dữ liệu IP.
Trong đó, AES-CM là cách viết khác của AES chế độ CTR
‒ Mỗi vectơ khởi tạo IV được mã hóa với khóa để tạo ra khối giả ngẫu nhiên 128 bít Bi,j
‒ Mỗi khối 128 bít được XOR với dữ liệu payload RTP rõ để tạo ra khối mã, có thể là một phần hoặc toàn bộ payload
Quá trình mã hóa và giải mã đều sử dụng sinh dòng khóa dựa trên các chỉ số gói, SSRC và khóa salt để đảm bảo tính bảo mật cao Mỗi quá trình tạo dòng khóa Bi,j một cách đồng bộ, trong đó j đại diện cho chỉ số của từng khối AES liên tiếp trong chuỗi, giúp duy trì tính toàn vẹn và đồng bộ của dữ liệu.
2.1.2.2 Đảm bảo chống tấn công lặp Để chống tấn công lặp, con đếm vòng (Rollover Counter- ROC) và cửa sổ trượt được sử dụng Số thứ tự độ dài 16 bit của phần đầu RTP cùng với SRTP
Trong hệ thống ROC, độ dài 32 bit được sử dụng để tạo ra số thứ tự có chiều dài 48 bit, đóng vai trò là chỉ số gói SRTP Chỉ số này được mã hóa cùng với các tham số, giúp tạo ra các đoạn dòng khóa bảo mật cho quá trình truyền tải dữ liệu Việc sử dụng chỉ số gói SRTP đảm bảo tính xác thực và an toàn khi truyền thông qua mạng, nâng cao hiệu quả bảo vệ dữ liệu trong các hệ thống truyền thông hiện đại.
Hình 2.4 trình bày cửa sổ trượt dùng để chống tấn công lặp gói trong quá trình truyền dữ liệu, đảm bảo tính liên tục và an toàn Hình 2.5 mô tả chỉ số gói nhận được cần nằm trong vùng của cửa sổ trượt, đồng thời bit “Received?” cần chưa đánh dấu để chuyển gói sang các bước xử lý tiếp theo Nếu gói không đáp ứng các yêu cầu này, nó sẽ bị loại bỏ ngay lập tức, giúp ngăn chặn các gói giả mạo hoặc tấn công lặp Trong trường hợp kẻ tấn công lựa chọn ngẫu nhiên số trong dãy với kích thước 64, xác suất gói bị loại trước khi xác thực thông báo là rất cao, góp phần nâng cao khả năng bảo vệ hệ thống khỏi các cuộc tấn công không mong muốn.
Lỗ hổng bảo mật của giao thức SRTP
SRTP là giao thức truyền tải dữ liệu an toàn trong thời gian thực, giúp bảo vệ thông tin truyền qua mạng Mặc dù có độ an toàn cao, nhưng giao thức này vẫn tồn tại lỗ hổng bảo mật trong thư viện libSRTP, phần cốt lõi của giao thức Lỗ hổng này nằm trong quá trình mã hóa hệ thống phụ của libSRTP và SRTP, khiến các tin tặc có thể thực hiện các cuộc tấn công từ chối dịch vụ từ xa bằng cách khai thác gói tin SRTP.
Một hacker có thể lợi dụng địa chỉ IP hợp lệ để thực hiện cuộc gọi tới địa chỉ này, từ đó tạo ra hành vi Call Fraud – gọi điện miễn phí trái phép Việc này cho thấy nguy cơ cao về an ninh mạng trong hệ thống điện thoại, cần cảnh giác và triển khai các giải pháp phòng chống phù hợp.Một hacker có thể tận dụng địa chỉ IP hợp lệ để thực hiện cuộc gọi, dẫn đến hình thành các cuộc gọi Free Call Fraud – cuộc gọi miễn phí trái phép Đây là mối đe dọa đáng kể đối với các hệ thống viễn thông, yêu cầu các biện pháp bảo vệ chặt chẽ để ngăn chặn hành vi gian lận.
Tràn ngập thông điệp INVITE: Hacker sẽ liên tục gửi những thông điệp
INVITE với một địa chỉ ảo và làm tê liệt đầu cuối User hoặc Sip proxy server
Kiểu tấn công này tương tự như tấn công làm tràn ngập tín hiệu SYN trong kết nối TCP
Trong cuộc gọi VoIP, lỗ hổng bảo mật của gói báo hiệu BYE có thể bị khai thác khi gửi dưới dạng rõ ràng (clear text), khiến SRTP dễ bị giả mạo Hacker theo dõi các thông điệp INVITE có thể tạo ra gói BYE hợp lệ và gửi SRTP đến các bên tham gia, dẫn đến kết thúc cuộc trao đổi một cách bất ngờ và gây gián đoạn dịch vụ.
Tấn công RTP Flooding là hình thức tấn công liên quan đến môi trường truyền dữ liệu, chủ yếu dựa trên giao thức RTP Hacker có thể tạo ra các gói RTP giả mạo để tấn công các thiết bị đầu cuối, gây ra sự gián đoạn dịch vụ hoặc buộc phải khởi động lại thiết bị Đây là mối đe dọa lớn đối với chất lượng dịch vụ và độ tin cậy của hệ thống truyền thông.
Spam trên Internet Telephony (SPIT) là một vấn đề gây phiền toái lớn cho người dùng, đặc biệt khi nhận phải hàng ngàn email thương mại không mong muốn mỗi ngày Những thông điệp này không những làm đầy hộp thư email mà còn gây tắc nghẽn hệ thống voicemail trong VoIP, gây quá tải cho hệ thống Việc ngăn chặn các cuộc tấn công này rất khó khăn bởi bất kỳ ai có PC và kết nối internet đều có thể trở thành spammer Thêm vào đó, chi phí gửi một thông điệp Spam rất thấp, khác xa so với phí thoại ở điện thoại truyền thống, cho phép spammer gửi hàng ngàn thông điệp với mức chi phí cực nhỏ.
Trong thị trường VoIP ngày càng phát triển, địa chỉ Internet chứa trong điện thoại như SIP URL trở thành công cụ thuận tiện cho các hoạt động tiếp thị qua điện thoại Tuy nhiên, điều này cũng tạo điều kiện cho các nhà tiếp thị sử dụng các công cụ tự động để phân phát hàng loạt thông điệp không mong muốn, bất kể hợp lệ hay không hợp lệ Bởi vì bộ nhớ lưu trữ các thông điệp có giới hạn, việc quản lý và kiểm soát các chiến dịch quảng cáo trở nên vô cùng quan trọng trong môi trường VoIP mở rộng nhanh chóng này.
Spam qua Internet Telephony (SPIT) giống như hành vi spam truyền thống, nhưng có thể làm tràn hộp thư thoại của người dùng do các tin nhắn không mong muốn gửi qua SRTP Những tin nhắn này thường phải xóa thủ công và không thể dễ dàng lọc bỏ hoàn toàn bằng các biện pháp hiện tại, đặc biệt khi phần mềm VoIP spam phát tán hàng ngàn tin nhắn một cách dễ dàng Trong tình huống nghiêm trọng, SPIT có thể trở thành một dạng tấn công DoS mới, gây quá tải tài nguyên hệ thống email của doanh nghiệp và ảnh hưởng đến hoạt động liên lạc.
Một số thành phần mật mã sử dụng trong giao thức SRTP
2.3.1 Thuật toán AES dùng trong mã hóa cho SRTP
2.3.1.1 Các ký hiệu và quy ước
Hệ mật khóa đối xứng AES là một hệ mã khối, sử dụng các dãy nhị phân 128 bit làm đầu vào và đầu ra, gọi là các khối dữ liệu Các khối này có độ dài cố định, với 128, 192 hoặc 256 bit, tùy theo loại khóa sử dụng Khóa mã trong hệ AES cũng được thể hiện dưới dạng dãy nhị phân có cùng độ dài, và các bít trong dãy này được đánh số thứ tự từ 0 đến cuối AES là thuật toán mã hóa đối xứng phổ biến, đảm bảo bảo mật cao cho dữ liệu thông qua các khóa mã có độ dài linh hoạt.
Kí hiệu: N b là thương khi chia độ dài khối cho 32, N k là thương khi chia độ dài khóa cho 32
Trạng thái: là bản rõ hay bản mã trung gian được biểu diễn bởi các mảng byte 2 chiều với 4 dòng và N b cột
Trong hệ mật AES, độ dài của khối đầu vào, khối đầu ra và trạng thái đều là 128 bit, đảm bảo tính an toàn và đồng bộ cao Số lượng các từ 32 bit (số cột của trạng thái) được xác định là N_b = 4, như đã trình bày trong bảng 2.1, giúp tối ưu hóa quá trình xử lý dữ liệu và tăng cường hiệu quả mã hóa.
Bảng 2.1: Bảng biểu diễn trạng thái đầu vào, đầu ra s0,0 s 0,1 s 0,2 s 0.3 s1,0 s 1,1 s 1,2 s 1,3 s2,0 s 2,1 s 2,2 s 2,3 s3,0 s 3,1 s 3,2 s 3,3
Các khối vào và ra của AES là các mảng một chiều gồm các byte 8-bit, được đánh số từ 0 đến 4*Nb - 1 Các byte này được ánh xạ lên trạng thái theo thứ tự từ s₀,₀, s₁,₀, s₂,₀, s₃,₀, sau đó tiếp tục theo cột từ trên xuống dưới và từ trái sang phải Quá trình này làm đầy các cột của trạng thái từ đỉnh tới đáy, bắt đầu từ byte có chỉ số vào 0 đặt trong s₀,₀, và byte có chỉ số 9 được đặt trong s₁,₂, và cứ thế tiếp tục theo thứ tự.
Khóa mã trong hệ mật AES được biểu diễn bằng mảng byte 2 chiều gồm 4 dòng và N cột, trong đó N có thể là 4, 6 hoặc 8 tùy thuộc vào độ dài khóa Độ dài khóa khởi đầu K có thể là 128, 192 hoặc 256 bit, tương ứng với N = 4, 6 hoặc 8, thể hiện số lượng các từ 32 bit (hoặc cột) của khóa mã Điều này giúp xác định rõ cấu trúc và độ phức tạp của khóa trong quá trình mã hóa AES.
Khóa mã khởi điểm là mảng một chiều gồm các byte 8 bit, đánh số từ 0 đến 4*N k −1 Mảng khóa 2 chiều cũng được làm đầy tương tự như vậy
Trong hệ mật AES, số vòng lặp (N r ) thay đổi dựa trên độ dài của khóa, ảnh hưởng đến quá trình thực thi thuật toán Cụ thể, khi độ dài khóa là 128 bit (N k = 4), số vòng lặp là 10 Đối với khóa 192 bit (N k = 6), số vòng lặp tăng lên 12, còn với khóa 256 bit (N k = 8), số vòng là 14 Việc điều chỉnh số vòng này giúp tối ưu hóa mức độ bảo mật của thuật toán AES phù hợp với từng độ dài khóa khác nhau. -Tối ưu bài viết AES của bạn với kỹ thuật SEO chuẩn, giúp đoạn văn ngắn gọn và súc tích hơn ngay hôm nay!
Việc thực thi cụ thể thuật toán có liên quan đến độ dài khóa, độ dài khối và số vòng, được thể hiện trong bảng 2.2:
Bảng 2.2: Độ dài khóa, độ dài khối và số vòng của AES Độ dài khóa (N từ) k Độ dài khối (N từ) b
Lược đồ mã hóa và giải mã trong hệ mật AES sử dụng một hàm vòng gồm bốn phép biến đổi byte:
1) Phép thay thế byte sử dụng một bảng thay thế (S-Hộp)
2) Phép dịch chuyển hàng của mảng trạng thái theo các offset khác nhau
3) Phép trộn dữ liệu trong mỗi cột của mảng trạng thái
4) Phép cộng khóa vòng vào trạng thái
2.3.1.2 Quy trình mã hóa AES
Trong quá trình bắt đầu mã hóa, dữ liệu đầu vào được sao chép vào mảng trạng thái theo các quy ước nhất định Sau khi thực hiện phép cộng khóa vòng khởi đầu, mảng trạng thái được biến đổi thông qua một hàm vòng lặp liên tiếp, với tổng số vòng lặp là 10 nhằm đảm bảo quá trình mã hóa hiệu quả.
Độ dài của khóa thường là 12 hoặc 14, tương ứng với chiều dài của các vòng trong thuật toán Vòng cuối cùng có sự khác biệt nhỏ so với vòng thứ N−1, đảm bảo tính an toàn và hiệu quả của quá trình mã hóa Trạng thái cuối cùng sau vòng được chuyển đổi thành đầu ra, đóng vai trò quan trọng trong quá trình mã hóa dữ liệu Hàm vòng trong thuật toán được tham số hóa bằng cách sử dụng một lược đồ khóa – mảng một chiều chứa các từ 4 byte nhận từ phép mở rộng khóa, giúp tối ưu hóa quá trình xử lý và tăng cường độ bảo mật.
Phép biến đổi cụ thể gồm SubBytes, ShiftRows, MixColumns và AddRoundKey dùng để xử lý trạng thái
Phép biến đổi trong quá trình mã hóa áp dụng lên trạng thái, hay còn gọi là kết quả mã hóa trung gian, được mô tả dưới dạng một mảng chữ nhật chứa các byte Quá trình này sử dụng bảng thay thế byte phi tuyến (Hộp S), giúp thực hiện các phép thay thế 1-1 đối với từng giá trị byte một cách độc lập Bảng thay thế byte phi tuyến này không chỉ được sử dụng trong các phép thay thế byte mà còn góp phần trong quy trình mở rộng khóa, đảm bảo tính bảo mật và độ phức tạp của thuật toán mã hóa.
Phép biến đổi trong quá trình mã hóa thường hoạt động bằng cách chuyển dịch vòng ba hàng cuối của trạng thái theo các offset khác nhau Quá trình này giúp thay đổi cấu trúc dữ liệu, tăng cường tính bảo mật cho hệ thống mã hóa Việc sử dụng các phép biến đổi này đảm bảo rằng trạng thái được cập nhật một cách linh hoạt và an toàn, phù hợp với các tiêu chuẩn mã hóa hiện đại Các phép biến đổi vòng này đóng vai trò quan trọng trong việc tạo ra các thuật toán mã hóa mạnh mẽ, chống lại các cuộc tấn công phá mã.
Phép biến đổi trong phép mã hóa được thực hiện bằng cách trộn tất cả các cột trạng thái với dữ liệu của chúng một cách độc lập để tạo ra các cột mới Quá trình này giúp nâng cao tính bảo mật của hệ thống mã hóa, đảm bảo dữ liệu được mã hóa an toàn hơn Việc trộn các cột trạng thái và dữ liệu là bước quan trọng trong quá trình xử lý dữ liệu mã hóa, góp phần làm tăng độ phức tạp và giảm khả năng bị giải mã trái phép.
Trong quá trình mã hóa và giải mã, phép biến đổi đóng vai trò quan trọng trong việc đảm bảo tính bảo mật của dữ liệu Một khóa vòng, sinh ra từ khóa mã thông qua quy trình mở rộng khóa, được cộng thêm vào trạng thái bằng phép toán XOR, giúp bảo vệ thông tin khỏi các cuộc tấn công Độ dài của khóa vòng bằng với độ dài của trạng thái, đảm bảo tính đồng nhất và hiệu quả của quá trình mã hóa.
Thuật toán AES bắt đầu bằng việc nhận vào một khóa mã K và thực hiện phép mở rộng khóa để tạo ra lược đồ khóa gồm Nb (Nr + 1) từ Quá trình mở rộng khóa này là bước quan trọng giúp đảm bảo tính an toàn của thuật toán Thuật toán yêu cầu một tập khởi đầu gồm Nb từ khóa và mỗi vòng trong tổng số Nr vòng đều đòi hỏi các bước biến đổi phức tạp để duy trì độ bảo mật cao của dữ liệu.
N b từ làm dữ liệu khóa đầu vào Lược đồ khóa kết quả là một mảng tuyến tính các từ 4 byte
Các phép biến đổi trong quá trình mã hóa AES có thể đảo ngược để thực hiện quá trình giải mã, giúp phục hồi dữ liệu gốc dễ dàng hơn Các phép biến đổi quan trọng trong giải mã bao gồm InvShiftRows, InvSubBytes, InvMixColumns và AddRoundKey, đảm bảo quá trình giải mã hoàn chỉnh và chính xác theo thuật toán AES.
Phép biến đổi InvSubBytes là phép nghịch đảo của phép thay thế theo byte SubBytes trong hệ thống mã hóa Quá trình này sử dụng một hộp S nghịch đảo để áp dụng cho từng byte của trạng thái, giúp khôi phục dữ liệu ban đầu sau khi mã hóa Đây là bước quan trọng trong quá trình giải mã AES, đảm bảo tính chính xác và độ bảo mật cao.
Phép biến đổi InvShiftRows là phép biến đổi ngược của ShiftRows trong quá trình mã hóa AES Trong quá trình này, các byte trong ba hàng cuối của trạng thái được dịch vòng theo các số byte khác nhau để đảo ngược quá trình shift ban đầu Cụ thể, hàng đầu tiên (r = 0) không bị dịch vòng, trong khi ba hàng dưới cùng được dịch vòng theo số byte N - shift r(N) b, giúp khôi phục dữ liệu ban đầu sau quá trình mã hóa.
Phép biến đổi InvMixColumns là phép biến đổi ngược của MixColumns
Nó thao tác theo từng cột của trạng thái, xem mỗi cột như một đa thức bốn hạng tử
Kết luận chương 2
Dựa trên lý thuyết đã tìm hiểu trong chương trước, chương này tập trung vào việc phân tích các thành phần của mật mã, cách thức hoạt động của chúng và vai trò trong đảm bảo bảo mật của các giao thức Hiểu rõ các yếu tố này giúp nâng cao khả năng bảo vệ dữ liệu và đảm bảo sự an toàn trong truyền thông số Các thành phần mật mã đóng vai trò then chốt trong việc duy trì tính toàn vẹn, bí mật và xác thực của các thông điệp truyền tải qua các giao thức mạng.
Giao thức SRTP cung cấp các cơ sở bảo mật để bảo vệ hệ thống VoIP, tuy nhiên vẫn còn tồn tại nhiều điểm yếu dễ bị hacker tấn công Hiểu biết về các khía cạnh bảo mật của SRTP là nền tảng lý thuyết quan trọng để tiến hành cài đặt và vận hành hệ thống VoIP an toàn hơn trong các chương tiếp theo.
CHƯƠNG 3: PHÁT TRIỂN ỨNG DỤNG VOIP CÓ BẢO MẬT SỬ DỤNG
Hiện nay, nhiều ứng dụng VoIP như MicroSIP, Zfone, Wire, Linphone hỗ trợ sử dụng giao thức SRTP để đảm bảo an toàn dữ liệu Sau quá trình nghiên cứu, chúng tôi đã lựa chọn phần mềm mã nguồn mở Linphone để phát triển ứng dụng VoIP nhờ khả năng tùy chỉnh thuật toán mã hóa Do Linphone cho phép sửa đổi và tối ưu các thuật toán mã hóa, chương này sẽ tiến hành thử nghiệm phần mềm với một số tùy chỉnh nhằm nâng cao bảo mật và hiệu suất.
Do mã khối và hàm xác thực được sử dụng trong phần mềm Linphone là
AES-128 và HMAC-SHA1 32-bit là các phiên bản mã hóa và hàm xác thực có cấu trúc đơn giản, dễ bị tấn công phá vỡ Do đó, bài viết này trình bày cách thay thế mã khối và hàm xác thực mặc định của phần mềm Linphone để nâng cao khả năng bảo mật và đảm bảo an toàn thông tin trong quá trình giao tiếp.
Giới thiệu về Linphone
Linphone là dự án mã nguồn mở được phát triển bằng ngôn ngữ C từ năm 2001, cung cấp dịch vụ VOIP để người dùng giao tiếp qua video, thoại và tin nhắn văn bản trên internet Được xây dựng dựa trên giao thức SIP, Linphone tương thích với mọi hệ thống VOIP sử dụng SIP, giúp thuận tiện tích hợp và sử dụng đa nền tảng Hiện nay, Linphone đã được triển khai phổ biến trên các nền tảng desktop, mobile và web, đáp ứng nhu cầu liên lạc đa dạng của người dùng.
Cài đặt của giao thức SRTP
SRTP dùng mã khối AES-128bít để mã hóa và hàm xác thực HMAC-SHA1 32bít để xác thực Thư mục chứa cài đặt của giao thức SRTP:
Hình 3.1 trình bày thư mục srtp chứa mã nguồn của giao thức SRTP Ngoài AES, SRTP còn hỗ trợ tính năng vô hiệu hóa mã hóa hoàn toàn thông qua việc sử dụng NULL cipher, được xem là một thuật toán mã hóa thứ hai hoặc thứ ba hỗ trợ trong quá trình thiết lập bảo mật.
Thuật toán mã hoá mặc định trong giao thức SRTP là AES-128bít: void srtp_aes_encrypt(v128_t *plaintext, const aes_expanded_key_t
/* add in the subkey */ v128_xor_eq(plaintext, &exp_key->round[0]);
The AES encryption process involves multiple rounds of transformation, where each round applies the `aes_round` function using the expanded key Specifically, the plaintext undergoes nine initial rounds, with each round referencing successive key schedules from the expanded key When the number of rounds is 10, a final, special `aes_final_round` is performed to complete the encryption This structured sequence of rounds ensures the security and integrity of the AES encryption process.
} else if (exp_key->num_rounds == 12) { aes_round(plaintext, &exp_key->round[10]); aes_round(plaintext, &exp_key->round[11]); aes_final_round(plaintext, &exp_key->round[12]);
The AES encryption process involves multiple rounds based on the key size, with a typical 14-round configuration for enhanced security During the 14 rounds, the algorithm performs successive AES rounds, including substitution, permutation, and mixing of the plaintext data Specifically, rounds 10 through 13 execute standard AES round functions, followed by a final round that applies the last transformation to produce the ciphertext This multi-round structure ensures a robust encryption process, providing strong protection for sensitive data.
Giải mã void srtp_aes_decrypt(v128_t *plaintext, const aes_expanded_key_t
/* add in the subkey */ v128_xor_eq(plaintext, &exp_key->round[0]);
The decryption process in AES involves applying inverse rounds to the ciphertext, where each round uses a specific round key Typically, the process begins with multiple inverse rounds, such as those with round keys 1 through 9 Depending on the total number of rounds—such as 10, 12, or 14—the decryption proceeds with additional inverse rounds for rounds 10 to 13 before concluding with a final round In particular, for a 10-round AES, the process includes nine inverse rounds followed by a final inverse round, while for 12 or 14 rounds, more inverse rounds are performed before the final one, ensuring accurate decryption of the ciphertext to plaintext.
SRTP utilizes HMAC-SHA1 32-bit authentication to ensure secure communication During the authentication process, the system checks if the stream's RTP authentication prefix length is non-zero, retrieves the prefix length, and then outputs the cipher keystream prefix for verification Proper function execution and error handling are crucial to maintaining data integrity, with debug logs providing visibility into the keystream process.
} status = auth_start(stream->rtp_auth); if (status) return status; status = auth_update(stream->rtp_auth, (uint8_t
*pkt_octet_len - tag_len); status = auth_compute(stream->rtp_auth, (uint8_t *)&est,
This code snippet highlights the process of verifying an authentication tag in a secure communication protocol It calculates the authentication tag using `tmp_tag` and compares it with the existing `auth_tag` to ensure data integrity and authenticity Debug statements print the computed and packet authentication tags in hexadecimal format for troubleshooting If the verification fails, indicated by a mismatch or error status, the function returns an authentication failure error, maintaining robust security standards Proper authentication tag comparison is crucial for preventing tampering and ensuring secure data transmission.
Tùy biến mã khối sử dụng trong Linphone
Xây dựng môi trường mã nguồn mở Linphone
Bước 1: Cài đặt hệ điều hành Centos 64 bít
Truy cập trang web Centos để tải xuống:https://www.centos.org/download/
Mở trung tâm phần mềm Centos tìm kiếm “Java” và bắt đầu cài đặt
Mở trung tâm phần mềm Centos tìm kiếm “Eclipse” và bắt đầu cài đặt
Bước 4: Tải xuống SDK Android
Truy cập trang Web dành cho nhà phát triển Android: “SDK Android” và cuộn xuống rồi tải tệp mở rộng tgz
Sau khi hoàn tất tải xuống sẽ nhận được thư mục android-sdk-linux
Bước 5: Cài đặt gói SDK Android
Chuyển thư mục android-sdk-linux: sao chép đường dẫn đến thư mục Tools theo đường dẫn: /home/root/Desktop/android /android-sdk-linux/tools
Sau đó mở terminal và gõ: $ cd/home/root/Desktop/android/android-sdk- linux/tools Nhấn enter
Sau đó gõ: $./android Nhấn enter và chọn API
Nhấp vào cài đặt chấp nhận Giấy phép và cài đặt
Bước 6: Tải xuống Android NDK
Để bắt đầu phát triển ứng dụng Android, bạn cần truy cập trang web dành cho nhà phát triển Android và tải xuống Android NDK ở định dạng bin Sau khi quá trình tải xuống hoàn tất, hãy chuyển đến thư mục chứa tệp và thực hiện các lệnh cần thiết để cài đặt Android NDK, nhằm đảm bảo môi trường lập trình phù hợp cho các dự án Android của bạn.
$ chmod a + x android-ndk-r10c-darwin-x86_64.bin
Bước 7: Chỉnh sửa tệp bashrc
Mở Terminal mới và gõ
ExportPATH=${PATH}:/home/root/Desktop/android/android-sdk-linux /tools
ExportPATH=${PATH}:/home/root/Desktop/android/android-sdk- linux/platform-tools
Export PATH=${PATH}:/home/root/Desktop/android/android-sdk-r10d Export Android_EMULATOR-FORCE-32BIT=true
Bước 8: Thiết lập thiết bị ảo Android
Nhấn Enter và thêm một thiết bị để khởi chạy trình giả lập
Bước 9: Cài đặt plugin ADT trên Eclipse
Mở Eclipse đi tới tùy chọn Trợ giúp và chọn cài đặt phần mềm mới Nhấp vào Add và gõ:
Location: Http://dll-ssl.google.com/android/eclipse/
Sau khi khởi động lại eclipse, thêm vị trí sdk và ndk trong eclipse
Bước 10: Cài đặt thư viện và công cụ cho Linphone
Chạy tất cả các lệnh trên Terminal
$ yum apt-get install yasm
$ yum apt-get install nasm
$ yum apt-get install curl
$ yum apt-get install ant
$ yum apt-get install rsync
$ yum apt-get install autoconf
$ yum apt-get install automake
$ yum apt-get install aclocol
$ yum apt-get install libtoolize
$ yum apt-get install pkgconfig
Tiến hành thay thế AES-128 và HMAC-SHA1 80 bít
Thuật toán AES-256 được lập trình trong file linphone- android/submodules/extermals/srtp/cryto/cipher/aes.c
Hình 3.2 Một phần nội dung file aes.c Hàm băm SHA1 80bit được lập trình trong file linphone- android/submodules/extermals/srtp/cryto/hash/sha1.c
Hình 3.3 Một phần nội dung file sha1.c Các file thuật toán này được gọi đến và thực thi trong file linphone- android/submodules/extermals/srtp/srtp/srtp.c
In the srtp.c file (Figure 3.4), we proceed to replace the default encryption algorithm and authentication function with AES-256-bit encryption and HMAC-SHA1 80-bit authentication This modification enhances the security of the application by implementing robust cryptographic standards within the specified file path: linphone-android/submodules/extermals/srtp/srtp/srtp.c.
Hình 3.5 Một phần nội dung sau khi đã tùy biến trong file srtp.c
3.3 Biên dịch và triển khai hệ thống VoIP
3.3.1 Biên dịch mã nguồn
Bước 1: Truy cập vào thư mục Linphone-android và thực hiện biên dịch source code Linphone với lệnh “make”
Hình 3.6 Quá trình biên dịch mã nguồn Linphone Sau khi build source code Linphone sẽ có file apk trong thư mục bin
Hình 3.7 Phần mềm Linphone trong thư mục bin
Bước 2: Tiến hành cài đặt phần mềm Linphone trên thiết bị Android
Hình 3.8 Giao diện ứng dụng Linphone trên thiết bị Android
Sau khi cài đặt ứng dụng Linphone xong, tiến hành đăng nhập các tài khoản user với:
Hình 3.9 Mô hình cài đặt
Mô hình trên ta sử dụng PC có cài phần mềm wireshark-64-3.2.5.exe để bắt gói tin hội thoại giữa client 1 và client 2
Mục tiêu của dự án là đảm bảo client 1 và client 2 có thể giao tiếp an toàn qua giao thức bảo mật SRTP Để kiểm tra tính mã hóa của thông tin thoại VoIP sử dụng SRTP, chúng ta sẽ thực hiện hai trường hợp thử nghiệm chính Các trường hợp này giúp xác nhận rằng dữ liệu thoại được bảo vệ khỏi các nguy cơ rò rỉ hoặc nghe lén trong quá trình truyền tải Việc kiểm thử SRTP không chỉ nâng cao tính bảo mật cho hệ thống VoIP mà còn đảm bảo chất lượng cuộc gọi và sự an toàn của thông tin liên lạc.
‒ Khi không sử dụng giao thức bảo mật tín hiệu thoại VoIP
‒ Khi có sử dụng giao thức SRTP bảo mật tín hiệu thoại VoIP
Khi không sử dụng giao thức bảo mật tín hiệu thoại VoIP Đăng nhập user 1 và user 2, vào settings và bật chế độ None cho từng client
Hình 3.10 Giao diện ở chế độ none
Ta thực hiện cuộc gọi giữa 2 client
Hình 3.11 Kết quả khi client 1 giao tiếp thành công với client 2
Thực hiện cuộc gọi ở chế độ thường Bắt đầu cuộc gọi khi bên được gọi chấp nhận từ phía người gọi
Hình 3.12 Kết quả chặn bắt gói tin của Wireshark Kết thúc cuộc gọi, yêu cầu kết thúc có thể từ một trong hai phía
Khi không sử dụng giao thức bảo mật SRTP, việc nghe lén cuộc gọi trở nên dễ dàng hơn Trong ví dụ, cho phép client 1 và client 2 liên hệ thoại với nhau, và sử dụng Wireshark để bắt gói tin mạng Kết quả thu thập được cho thấy các gói tin trong cuộc gọi không được mã hóa, cho phép bên thứ ba có thể nghe lén nội dung cuộc gọi một cách dễ dàng Việc không áp dụng SRTP khiến cuộc trò chuyện không được bảo vệ an toàn, dễ bị tin tặc hoặc những người không mong muốn can thiệp Do đó, sử dụng giao thức SRTP là cần thiết để đảm bảo tính riêng tư và bảo mật cho các cuộc gọi thoại qua mạng.
Có sử dụng giao thức SRTP bảo mật tín hiệu thoại VoIP
Vào settings và bật chế độ SRTP cho từng client
Hình 3.13 Giao diện bật chế độ SRTP thành công Thực hiện cuộc gọi ở chế độ mã hoá
Hình 3.14 Kết quả chặn bắt gói tin SRTP của Wireshark
Ta có kết quả thu được các gói tin đã mã hóa và không thể nghe lén được cuộc thoại giữa client 1 và client 2
Dựa trên kiến thức đã học trong hai chương trước, chương này tập trung tùy chỉnh thuật toán mã hóa và hàm xác thực của giao thức SRTP để đảm bảo bảo mật cho hệ thống VoIP Việc triển khai mô hình hệ thống VoIP sử dụng SRTP giúp kiểm chứng khả năng mã hóa thông tin thoại, nâng cao an toàn dữ liệu liên lạc qua mạng Phương pháp này giúp bảo vệ các cuộc gọi VoIP khỏi các mối đe dọa từ bên thứ ba và tăng cường tính bảo mật cho hệ thống truyền thông Áp dụng thuật toán mã hóa phù hợp trong SRTP đảm bảo tính toàn vẹn, bảo mật và xác thực dữ liệu thoại trong hệ thống VoIP hiện đại.
Kết luận chương 3
Dựa trên kiến thức đã học trong hai chương trước, chương này tập trung tùy biến thuật toán mã hóa và hàm xác thực của giao thức SRTP để nâng cao bảo mật cho hệ thống VoIP Việc triển khai mô hình hệ thống VoIP an toàn sử dụng công nghệ mã hóa SRTP giúp bảo vệ dữ liệu thoại khỏi các mối đe dọa truy cập trái phép Kết quả kiểm chứng cho thấy, thông tin thoại VoIP mã hóa bằng SRTP đảm bảo tính bảo mật và toàn vẹn của dữ liệu trong quá trình truyền tải.