MỤC LỤC
LỜI NÓI ĐẦU 1
CHƯƠNG I: TỔNG QUAN VoIP 3
1.1. Điện thoại IP 4
1.1.1. Giới thiệu 4
1.1.2. Lợi ích của điện thoại IP 6
1.1.3. Ưu điểm và nhược điểm của điện thoại IP 7
1.2. Kết nối mạng VoIP 9
1.2.1. Kết nối PC - PC 9
1.2.2. Kết nối PC - máy thoại 9
1.2.3. Kết nối máy thoại - máy thoại 11
1.3. Đặc điểm của điện thoại IP 11
1.4. Các ứng dụng của VoIP 13
1.4.1. Dịch vụ thoại qua Internet 13
1.4.2. Thoại thông minh 14
1.4.3. Dịch vụ tính cước cho bị gọi 14
1.4.4. Dịch vụ Callback Web 15
1.4.5. Dịch vụ fax qua IP 15
1.4.6. Dịch vụ Call center 16
CHƯƠNG II: CÁC GIAO THỨC TRONG HỆ THỐNG VoIP 17
2.1. Giao thức H323 17
2.1.1. Giới thiệu giao thức H323 17
2.1.2. Kiến trúc của H323 17
2.2. Báo hiệu trong H323 22
2.2.1. Thiết lập cuộc gọi 22
2.2.2. Thiết lập kênh điều khiển 25
2.2.3. Thiết lập kênh truyền thông 26
2.2.4. Dịch vụ cuộc gọi 26
2.2.5. Kết thúc cuộc gọi 26
2.3. Giao thức H225 28
2.3.1. RAS (Registration, Admission, Status) 28
2.3.2. Q.931 29
2.4. Giao thức H245 29
2.5. Giao thức SIP 30
2.5.1. Kiến trúc của SIP 30
2.5.2. Giao thức mô tả phiên (SDP) 32
2.5.3. Quá trình trao đổi bản tin của SIP 34
2.5.4. Các giao thức vận chuyển của SIP 38
2.6. So sánh H323 và SIP 40
2.7. Giao thức MGCP 41
2.8. MEGACO/H248 43
CHƯƠNG III: KỸ THUẬT BẢO MẬT CHO VoIP 44
3.1. Các điểm yếu về bảo mật VoIP 44
3.1.1.Điểm yếu về bảo mật của giao thức H323 44
3.1.2. Điểm yếu về bảo mật của giao thức SIP 46
3.2. Kỹ thuật bức tường lửa áp dụng cho VoIP 48
3.3. Kỹ thuật NAT áp dụng cho VoIP 49
3.4. Kỹ thuật VPN áp dụng cho VoIP 50
3.5. Một số giải pháp kỹ thuật bổ trợ cho bảo mật VoIP 54
3.5.1. Giải pháp "Khu phi quân sự" - DMZ bổ trợ cho bức tường lửa 54
3.5.2. Giải pháp đường viền bổ trợ cho NAT 58
3.5.3. Hệ thống phát hiện xâm nhập IDS 60
3.6. Bảo mật cho VoIP khi truyền qua mạng cục bộ không dây (WLAN) 61
KẾT LUẬN 68
TÀI LIỆU THAM KHẢO
70 trang |
Chia sẻ: netpro | Lượt xem: 2515 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đề tài Bảo mật VoIP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
tin có cấu trúc.
Message : : = SEQUENCE
{
userIndentifier INTEGER,
ipAddress TransportAddress,
tokens SEQUENCE OF token OPTIONAL,
}
Hình 25: Cấu trúc bản tin ASN.1
Báo hiệu trong H323
Người ta chia một cuộc gọi làm 5 giai đoạn gồm :
Giai đoạn 1: Thiết lập cuộc gọi
Giai đoạn 2: Thiết lập kênh điều khiển
Giai đoạn 3: Thiết lập kênh gọi ảo
Giai đoạn 4: Dịch vụ
Giai đoan 5: Kết thúc cuộc gọi
Thiết lập cuộc gọi
Việc thiết lập cuộc gọi sử dụng các bản tin được định nghĩa trong khuyến nghị H.225.0. Ta sẽ xem xét thủ tục thiết lập cuộc gọi trong 6 trường hợp sau:
Cả hai thiết bị đầu cuối đều không đăng ký.
Cả hai thuê bao đều đăng ký tới một GK.
Chỉ có thuê bao chủ gọi có đăng ký với GK.
Chỉ có thuê bao bị gọi có đăng ký với GK.
Hai thuê bao đăng ký với hai GK khác nhau.
Thiết lập cuộc gọi qua Gateway.
Dưới đây là chi tiết các thủ tục thiết lập cuộc gọi:
Cả hai thuê bao đều đăng ký tới một GK
Trong trường hợp này cả hai thuê bao đều đăng ký tới một GK và GK chọn phương thức truyền báo hiệu trực tiếp giữa hai thuê bao.
- Đầu tiên, thuê bao chủ gọi trao đổi với GK thông qua cặp bản tin ARQ (1)/ACF (2) để thiết lập báo hiệu. Trong bản tin ACF do GK trả lời cho thuê bao chủ gọi có chứa địa chỉ kênh báo hiệu của thuê bao bị gọi.
- Sau đó thuê bao chủ gọi sẽ căn cứ vào địa chỉ này để gởi bản tin Setup (3) tới thuê bao bị gọi. Nếu thuê bao bị gọi chấp nhận yêu cầu, nó sẽ thay đổi cặp bản tin ARQ (5)/ACF (6) với GK. Nếu thuê bao bị gọi nhận được ARJ (6) thì nó sẽ gởi bản tin Release Complete tới thuê bao chủ gọi.
Hình 25: Hai thuê bao đăng ký với một GK – báo hiệu trực tiếp
Hai thuê bao đăng ký với hai GK khác nhau.
Tình huống này có 4 trường hợp xảy ra:
(1) Cả hai GK đều chọn cách định tuyến báo hiệu trực tiếp giữa hai thuê bao.
(2) GK 1 phía chủ gọi truyền báo hiệu theo phương thức trực tiếp còn GK 2 phía bị gọi định tuyến báo hiệu cuộc gọi qua nó.
(3) GK 1 phía chủ gọi định truyền báo hiệu cuộc gọi qua nó còn GK 2 phía bị gọi chọn phương thức truyền báo hiệu trực tiếp .
(4) Hai thuê bao đăng ký với 2 GK và cả hai GK này đều chọn phương thức định tuyến báo hiệu cuộc gọi qua chúng.
Dưới đây là chi tiết về trường hợp (4):
Hai thuê bao đăng ký với 2 GK và cả hai GK này đều chọn phương thức định tuyến báo hiệu cuộc gọi qua chúng:
Đầu tiên thuê bao chủ gọi trao đổi ARQ(1)/ACF(2) với GK 1, trong bản tin ACF có chứa địa chỉ kênh báo hiệu của GK 1. Căn cứ vào địa chỉ này thuê bao chủ gọi gởi bản tin Set-up (3) tới GK 1.
GK 1 sẽ gởi bản tin Set-up (4) tới địa chỉ kênh báo hiệu của thuê bao bị gọi, nếu chấp nhận thuê bao bị gọi sẽ trao đổi ARQ(6)/AR J(7) với GK 2. Trong bản tin ARJ (7) mà GK 2 trả lời cho thuê bao bị goi chứa địa chỉ kênh báo hiệu của nó và mã chỉ thị báo hiệu định tuyến cuộc gọi qua GK 2 (route CallToGK ). Thuê bao bị gọi trả lời GK1 bản tin Facility(8) chứa địa chỉ kênh báo hiệu của GK2.
Tiếp đó, GK 1 gởi bản tin Release Complete tới thuê bao bị gọi và gởi bản tin Set-up (10) tới địa chỉ kênh báo hiệu của GK2 và GK 2 gởi Set-up(11) tới thuê bao bị gọi. Thuê bao bị gọi trao đổi ARQ(12)/ACF(13) với GK 2 và trả lời GK 2 bằng bản tin Connect(15) chứa địa chỉ kênh điều khiển H.245 của nó để sử dụng báo hiệu H.245.
GK 2 gởi Connect(16) tới GK 1, bản tin này chứa địa chỉ kênh điều khiển H.245 của thuê bao bị gọi hoặc địa chỉ kênh điều khiển H.245 của GK 2 tuỳ thuộc vào GK 2 có chọn định tuyến kênh điều khiển H.245 hay không.
Sau đó, GK 1 gởi bản Connect (17) tới thuê bao chủ gọi, bản tin này chứa địa chỉ kênh điều khiển mà GK 1 nhận được từ GK 2 hoặc là địa chỉ kênh điều khiển H.245 của GK 1 nếu nó chọn định tuyến kênh điều khiển H.245.
Hình 2 6: Hai thuê bao đều đăng ký – Định tuyến qua hai GK
Thiết lập kênh điều khiển
Khi kết thúc giai đoạn 1 tức là cả chủ gọi lẫn bị gọi đă hoàn thành việc trao đổi các bản tin thiết lập cuộc gọi, thì các đầu cuối sẽ thiết lập kênh điều khiển H.245:
Bản tin đầu tiên được trao đổi giữa các đầu cuối là terminalCapabilitySet để các bên thông báo cho nhau khả năng làm việc của mình (chế độ mã hoá, truyền, nhận và giải mã các tín hiệu đa dịch vụ).
Kênh điều khiển này có thể do thuê bao bị gọi thiết lập sau khi nó nhận được bản tin Set-up hoặc do thuê bao chủ gọi thiết lập khi nó nhận được bản tin Alerting hoặc Call Proceeding. Trong trường hợp không nhận được bản tin Connect hoặc một đầu cuối gởi Release Complete, thì kênh điều khiển H.245 sẽ được giải phóng.
Thiết lập kênh truyền thông
Sau khi trao đổi khả năng (tốc độ nhận tối đa, phương thức mã hoá…) và xác định quan hệ master-slave trong giao tiếp ở giai đoạn 2, thủ tục điều khiển kênh H.245 sẽ thực hiện việc mở kênh logic để truyền dữ liệu. Các kênh này là kênh H.225.
Sau khi mở kênh logic để truyền tín hiệu là âm thanh và hình ảnh thì mỗi đầu cuối truyền tín hiệu sẽ truyền đi một bản tin H2250MaximumSkewindication để xác định thông số truyền.
Dịch vụ cuộc gọi
Có một số dịch vụ cuộc gọi được thực hiện trên mạng H.323 như: thay đổi độ rộng băng tần, giám sát trạng thái hoạt động, hội nghị đặc biệt, các dịch vụ bổ sung. Dưới đây là hai loại dịch vụ điển hình: hay đổi độ rộng băng tần và giám sát trạng thái hoạt động.
Kết thúc cuộc gọi
Một thiết bị đầu cuối có thể kết thúc cuộc gọi theo các bước của thủ tục sau:
- Dừng truyền luồng tín hiệu video khi kết thúc truyền hình ảnh, sau đó giải phóng tất cả các kênh logic phục vụ truyền video.
- Dừng truyền dữ liệu và đóng tất cả các kênh logic dùng để truyền dữ liệu.
- Dừng truyền audio sau đó đóng tất cả các kênh logic dùng để truyền audio.
Truyền bản tin H.245 endSessionCommand trên kênh điều khiển H.245 để báo cho thuê báo đầu kia biết nó muốn kết thúc cuộc gọi. Sau đó nó dừng truyền các bản tin H.245 và đóng kênh điều khiển H.245. Nó sẽ chờ nhận bản tin endSessionCommand từ thuê bao đầu kia và sẽ đóng kênh điều khiển H.245. Nếu kênh báo hiệu cuộc gọi đang mở, thì nó sẽ truyền đi bản tin ReleaseComplete sau đó đóng kênh báo hiệu.
Nó cũng có thể kết thúc cuộc gọi theo các thủ tục sau đây: Một đầu cuối nhận bản tin endSessionCommand mà trước đó nó không truyền đi bản tin này, thì nó sẽ lần lượt thực hiện các bước từ 1 đến 6 ở trên chỉ bỏ qua bước 5.
Chú ý: Kết thúc một cuộc gọi không có nghĩa là kết thúc một hội nghị (cuộc gọi có nhiều đầu cuối tham gia). Một hội nghị sẽ chắc chắn kết thúc khi sử dụng bản tin H.245 dropConference. Khi đó các đầu cuối sẽ chờ MC kết thúc cuộc gọi theo thủ tục trên.
Hình 27: Kết thúc cuộc gọi có sự tham gia của GK
Thiết bị đầu cuối kết thúc cuộc gọi có sự tham gia của GK
Trong một cuộc gọi không có sự tham gia của GK thì chỉ cần thực hiện các bước 1 đến 6. Trong cuộc gọi có sự tham gia của GK thì cần có hoạt động giải phóng băng tần. Vì vậy, sau khi thực hiện các bước từ 1 đến 6, mỗi đầu cuối sẽ truyền đi bản tin DRQ(3) tới GK. Sau đó, GK sẽ trả lời bằng bản tin DCF(4). Sau khi gởi DRQ, đầu cuối sẽ không gởi bản tin IRR tới GK nữa và khi đó cuộc gọi kết thúc.
Thủ tục kết thúc cuộc gọi do GK thực hiện
Đầu tiên, GK gởi bản tin DRQ tới đầu cuối. Khi nhận được bản tin này, đầu cuối sẽ lần lượt thực hiện các bước từ 1 đến 6, sau đó trả lời GK bằng bản tin DCF. Thuê bao đầu kia khi nhận được bản tin endSessionCommand sẽ thực hiện thủ tục giải phóng cuộc gọi giống trường hợp đầu cuối chủ động kết thúc cuộc gọi. Nếu cuộc gọi là một hội nghị thì GK sẽ gởi DRQ tới tất cả các đầu cuối tham gia hội nghị.
Hình 28: Kết thúc cuộc gọi bắt đầu từ GK
Giao thức H225
H.225 bao gồm các bản tin RAS và Q.931. Các bản tin RAS liên quan đến việc quản lý user, còn Q.931 mang phần báo hiệu cuộc gọi. Cả hai giao thức dùng kênh kết nối riêng là kênh RAS và kênh báo hiệu cuộc gọi.
RAS (Registration, Admission, Status)
Chức năng chính của các bản tin RAS:
EP phát hiện ra GK mà chúng sẽ phải đăng ký.
EP đăng ký với GK của nó.
EP phải yêu cầu sự cho phép của GK khi khởi tạo một cuộc gọi.
EP yêu cầu giải phóng cuộc gọi.
Trước khi ngắt kết nối với GK, EP phải ngắt đăng ký.
Bản tin RAS được gửi đi bằng giao thức vận chuyển UDP. EP và GK trao đổi thông tin trên kênh RAS theo dạng client-server.
Q.931
Q.931 là khuyến nghị của ITU-T cho báo hiệu cuộc gọi, làm chức năng thiết lập, duy trì và kết thúc cuộc gọi. Bản tin Q.931 được vận chuyển bằng giao thức TCP. EP sẽ thương lượng lắng nghe trên port nào. Quá trình thỏa thuận này được thực hiện bằng các bản tin RAS (trong call Admission), port 1720 thường được chọn.
Giao thức H245
H.245 là giao thức điều khiển báo hiệu cuộc gọi giữa các EP bao gồm năng lực trao đổi, xác định master-slave, quản lý kênh luận lý. Giao thức này được vận chuyển bằng TCP.
Xác định Master-slave: để tránh xung đột khi cả hai bên đều khởi tạo cùng một cuộc gọi. Đầu cuối thỏa thuận vai trò này bằng cách áp dụng theo một cách nào đó. Vai trò này sẽ giữ nguyên trong suốt cuộc gọi.
Trao đổi năng lực: mỗi đầu cuối phải biết được khả năng của nhau bao gồm khả năng truyền và nhận, nếu không nó có thể không chấp nhận cuộc gọi.
Quản lý kênh luận lý: đảm bảo cho đầu cuối có khả năng nhận và đọc được dữ liệu khi kênh luận lý mở. Bản tin OpenLogicalChannel sẽ mô tả loại dữ liệu sẽ truyền
Giao thức SIP
Kiến trúc của SIP
Hình 29: Kiến trúc báo hiệu SIP và thủ tục báo hiệu
Thành phần SIP bao gồm: SIP User Agent (UA) và SIP Server:
SIP UA: đóng vai trò là một UA Client khi nó gửi yêu cầu để khởi tạo cuộc gọi và nhận hồi đáp. Ngược lại, nó là UA server khi nó nhận yêu cầu và gửi hồi đáp.
SIP Server: cần phân biệt SIP server và UA server cũng như mô hình client-server. Ở đây, SIP server là một thực thể luận lý, một SIP server có thể có chức năng của nhiều loại server hay nói cách khác một SIP Server có thể hoạt động như các loại server khác nhau trong các trường hợp khác nhau.
Hình 260: Tương tác giữa UA và các loại server
Proxy server:
Proxy nhận yêu cầu từ UA hoặc một proxy khác rồi định tuyến bản tin đi hoặc hồi đáp yêu cầu mà không tạo ra bản tin yêu cầu (trừ bản tin CANCEL). Proxy có thể truy nhập vào cơ sở dữ liệu và dịch vụ định vị để tìm điểm tiếp theo trong quá trình định tuyến. Proxy không cần phân tích cả bản tin SIP thì mới chuyển nó đi được mà nó chỉ cần dựa vào header của bản tin để định tuyến.
Ngoài chức năng định tuyến, proxy còn có chức năng chứng thực, điều khiển truy cập mạng và firewall.
Redirect server:
Truy nhập cơ sở dữ liệu và dịch vụ định vị để tìm địa chỉ của user và gửi thông tin này về cho người gọi.
Server đăng ký:
Chấp nhận yêu cầu đăng ký của các UA. Ngoài ra server đăng ký chứng thực user và đăng ký dịch vụ.
Giao thức mô tả phiên (SDP)
Là giao thức cho phép client chia sẻ thông tin về phiên kết nối cho các client khác. Nó đóng một vai trò quan trọng trong VoIP.
Mô tả SDP:
SDP không phải là một giao thức lớp vận chuyển, nó không thực sự vận chuyển dữ liệu giữa các client mà nó chỉ thiết lập cấu trúc thông tin về các thuộc tính của luồng dữ liệu, dữ liệu thực sự được truyền đi bởi các giao thức SIP, RTSP hay HTTP.
Thông tin trong gói SDP ở dạng ASCII gồm nhiều dòng, mỗi dòng là 1 trường. Ví dụ bản tin SDP:
v=0
o=bsmith 2208988800 2208988800 IN IP4 68.33.152.147
s=
e=bsmith@foo.com
c=IN IP4 20.1.25.50
t=0 0
a=recVonly
m=audio 0 RTP/AVP 0 1 101
a=rtpmap:0 PCMU/8000
Trường
Ý nghĩa
V
Phiên bản của giao thức
O
Chủ của phiên kết nối, nhận dạng, phiên bản phiên kết nối, Loại mạng, Loại địa chỉ, IP của chủ.
S
Tên phiên kết nối
I
Miêu tả kết nối
U
URI
E
E-mail của người cần liên lạc
P
Số điện thoại của người cần liên lạc
C
Thông tin kết nối:: IP version and CIDR IP address
k
Khóa mã hóa như clear text,base64, uri
m
Loại mạng, port kết nối,phương thức vận chuyển,danh sách định dạng
t
Thời điểm bắt đầu và kết thúc kết nối
a
Thuộc tính.
Bảng 23: Ý nghĩa của các trường
Hoạt động của SDP:
Client gửi SIP request, thiết bị sẽ tạo một gói SDP gửi trả lại. Gói SDP này mang thông tin về phiên kết nối. Sau đây là một ví dụ:
v=0
o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com
s=
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49170 RTP/AVP 0 8 97
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:97 iLBC/8000
m=video 51372 RTP/AVP 31 32
a=rtpmap:31 H261/90000
a=rtpmap:32 MPV/90000
Trong ví dụ trên, người gửi là Alice, lắng nghe kết nối từ host.atlanta.example.com. Gói được gửi tới bất kỳ ai muốn tham gia phiên kết nối. Kết nối của Alice hỗ trợ ba loại kết nối cho audio là PCMU, PCMIA và iLBC, hai loại kết nối video H.261 và MPV. Nếu Bob muốn tham gia kết nối thì gửi lại bản tin SDP:
v=0
o=bob 2808844564 2808844564 IN IP4 host.biloxi.example.com
s=
c=IN IP4 host.biloxi.example.com
t=0 0
m=audio 49174 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 49170 RTP/AVP 32
a=rtpmap:32 MPV/90000
Bảo mật cho SDP:
Bản tin SDP mang thông tin về phiên kết nối như nhận dạng phiên kết nối, IP người gửi, người nhận,… Nếu kẻ tấn công bắt được những gói SDP này nó có thể thay đổi giá trị trong các trường rồi gửi đi. Nhưng điều này hoàn toàn có thể khắc phục bằng phương pháp chứng thực user của SIP.
Quá trình trao đổi bản tin của SIP
Để hiểu về SIP ta xem xét các ví dụ trao đổi bản tin trong các trường hợp sau:
a. Sự trao đổi bản tin SIP giữa hai đầu cuối SIP
Hình 211: Sự trao đổi bản tin SIP đơn giản giữa hai đầu cuối
INVITE: Là một bản tin yêu cầu. Bản tin INVITE chứa loại phiên kết nối, có thể là thoại hoặc cả thoại và video như một kết nối của dịch vụ hội nghị truyền hình.
Bản tin INVITE gồm các trường sau:
INVITE sip:marconi@radio.org SIP/2.0
Via:SIP/2.0/UDP lab.high-Voltage.org:5060;branch=z9hG4bKfw19b
Max-Forwards: 70
Dòng đầu tiên chứa địa chỉ (URI) của người được mời. Trường Via chứa địa chỉ của người gọi, port well-known của SIP, branch là chuỗi nhận dạng phiên trao đổi, bản tin hồi đáp cho bản tin này phải có cùng chuỗi branch.
180 Ringing: Đây là bản tin đại diện cho bản tin hồi đáp:
SIP/2.0 180 Ringing
Via:SIP/2.0/UDPlab.high-Voltage.org:5060; branch=z9hG4bKfw19b;received=100.101.102.103
To: G. Marconi ;tag=a53e42
From: Nikola Tesla ;tag=76341
Call-ID: 123456789@lab.high-Voltage.org
CSeq: 1 INVITE
Contact:
Content-Length: 0
Trường Via có thêm chuỗi received chứa địa chỉ của người nó nhận được bản tin yêu cầu. Trường To và From không hoán đổi lại bởi vì nó chỉ chiều của yêu cầu chứ không phải chiều của bản tin. Ở đây, Tesla là người yêu cầu cuộc gọi và Marconi hồi đáp nên hai trường này vẫn giống với trong bản tin INVITE. Lúc này, Marconi cũng tạo ra một chuỗi tag ngẫu nhiên duy nhất. Hai chuỗi tag sau trường To và From sẽ giữ nguyên như thế trong suốt cuộc gọi.
200 OK
Khi chấp nhận lời mời cuộc gọi, M. (Marconi) gửi bản tin 200 OK để thông báo cho T. (Tesla).
ACK
Bản tin này khẳng định kết nối đã thiết lập và cho phép chuyển sang giao thức vận chuyển RTP để bắt đầu nói chuyện.
BYE
M. muốn kết thúc cuộc gọi, nó gửi bản tin BYE
200 OK
T. chấp nhận kết thúc cuộc gọi:
SIP/2.0 200 OK
Via: SIP/2.0/UDP tower.radio.org:5060;branch=z9hG4bK392kf
;received=200.201.202.203
To: Nikola Tesla ;tag=76341
From: G. Marconi ;tag=a53e42
Call-ID: 123456789@lab.high-Voltage.org
CSeq: 1 BYE
Content-Length: 0
b. SIP call có sự tham gia của Proxy server
Trong trường hợp 1: Tesla biết địa chỉ IP của Marconi nên có thể gửi trực tiếp bản tin INVITE tới địa chỉ đó. Điều này không phải lúc nào cũng có được. Trong phiên kết nối này nó là IP này nhưng phiên kết nối khác thì nó có IP khác do dùng DHCP.
SIP dùng địa chỉ giống tên email gọi là URI. SIP URI là tên có thể được phân giải sang địa chỉ IP bằng SIP proxy server và DNS lookup. SIP proxy không thiết lập hay kết thúc phiên kết nối mà nó đứng giữa khi trao đổi các bản tin SIP, nhận rồi chuyển các bản tin này đi. Ví dụ sau sẽ cho thấy rõ:
Hình 212: Cuộc gọi có sự tham gia của Proxy server
Đầu tiên, DNS dò tìm trong miền địa chỉ của H (munich.de), trả về IP của proxy server proxy.munich.de, sau đó, bản tin INVITE được gửi tới IP của proxy.
c. Đăng ký SIP
H. gửi một bản tin yêu cầu đăng ký tới server đăng ký. Server đăng ký dùng thông tin trong yêu cầu này để cập nhật cho dữ liệu của proxy dùng để định tuyến yêu cầu.
Hình 213: Quá trình đăng ký với Server đăng ký
REGISTER sip:registrar.munich.de SIP/2.0
Via: SIP/2.0/UDP 200.201.202.203:5060;branch=z9hG4bKus19
Max-Forwards: 70
To: Werner Heisenberg
From: Werner Heisenberg
;tag=3431
Call-ID: 23@200.201.202.203
CSeq: 1 REGISTER
Contact: sip:werner.heisenberg@200.201.202.203
Content-Length: 0
Server đăng ký hồi đáp lại bằng bản tin 200 OK
Các giao thức vận chuyển của SIP
a. UDP
UDP là giao thức tầng vận chuyển không có điều khiển tắc nghẽn. Nó được dùng để vận chuyển bản tin SIP vì đơn giản và thích hợp với các ứng dụng thời gian thực. Các bản tin SIP thường có kích thước nhỏ hơn MTU (Message Transport Unit). Nếu bản tin lớn thì phải dùng TCP, vì lý do này mà SIP không có chức năng chia nhỏ gói.
Hình 214: Trao đổi bản tin SIP bằng UDP
b. TCP
TCP là giao thức ở tầng vận chuyển đáng tin cậy do có điều khiển tắc nghẽn, hơn nữa nó có thể vận chuyển gói tin có kích thước bất kỳ. Nhược điểm của nó là tăng độ trễ.
Hình 215: Vận chuyển bản tin SIP bằng TCP
Để tăng cường tính bảo mật thì còn có những giao thức bổ sung để vận chuyển bản tin SIP như TLS, SRTP.
So sánh H323 và SIP
SIP và H.323 được phát triển với những mục đích khác nhau bởi các tổ chức khác nhau. H.323 được phát triển bởi ITU-T từ theo PSTN, dùng mã hóa nhị phân và dùng lại một phần báo hiệu ISDN. SIP được IETF phát triển dựa trên mạng Internet, dùng một số giao thức và chức năng của mạng Internet.
Hệ thống mã hóa: SIP là giao thức text-based (text dạng ASCII) giống như HTTP trong khi đó H.323 dùng các bản tin mã hóa nhị phân. Mã hóa nhị phân giúp giảm kích thước bản tin nhưng nó phức tạp hơn dạng text bình thường. Ngược lại các bản tin text dễ dàng tạo ra, lưu lại, kiểm tra và không cần bất cứ một tool nào để biên dịch nó, điều này làm cho SIP thân thiện với môi trường Internet và các nhà phát triển web. Bản tin SIP có cấu trúc ABNF, (Augmented Backus-Naur Form) còn bản tin H.323 ASN.1 không có cấu trúc.
H.323 chỉ có chức năng báo hiệu, SIP có thêm khả năng thông tin về trạng thái của user (presense and Instant message) vì SIP sử dụng địa chỉ URI. Điều này là thế mạnh của SIP và hầu hết các dịch vụ ngày nay dùng SIP nhiều hơn so với H.323. SIP được hỗ trợ bởi thiết bị của các nhà cung cấp dich vụ và đang dần thay thế H.323. SIP cũng được các hãng di động sử dụng như giao thức báo hiệu cuộc gọi.
Tính cước: SIP muốn có thông tin tính cước phải ở trong quá trình báo hiệu cuộc gọi để phát hiện ra thời điểm kết thúc cuộc gọi. Còn với H.323, tại thời điểm khởi tạo và kết thúc cuộc gọi, các thông tin tính cước nằm trong các bản tin ARQ/DRQ. Với trường hợp cuộc gọi báo hiệu trực tiếp, EP thông báo cho GK thời điểm bắt đầu và kết thúc cuộc gọi bằng bản tin RAS.
Về mức độ bảo mật: SIP có nhiều hỗ trợ bảo mật đảm bảo mã hóa, chứng thực dùng certificate, toàn vẹn bản tin end-to-end. Bản thân SIP không phát triển những hỗ trợ này mà nó thừa hưởng từ các giao thức hỗ trợ bảo mật của Internet như TLS và S/MIME. Còn H.323 thì xây dựng H.235 cho chứng thực và mã hóa.
Các thiết bị SIP còn hạn chế về việc trao đổi khả năng. Còn các thiết bị trong mạng H.323 có khả năng trao đổi khả năng và thương lượng mở kênh nào (audio, thoại, video hay dữ liệu).
H.323 và SIP cùng tồn tại và có chức năng tương tự như nhau. SIP được hỗ trợ DNS và URL ngay từ đầu còn H.323 thì không. Tương tự như vậy H.323 hỗ trợ hội nghị truyền hình với khái niệm MCU ngay từ đầu thì với SIP tính năng đó được phát triển sau gọi là “focus”.
SIP ban đầu dùng UDP, sau đó dùng TCP. Còn với H.323 thì ban đầu không dùng UDP nhưng bây giờ đã có hỗ trợ thêm UDP.
Ưu điểm của từng giao thức:
H.323 dùng thay thế một phần trong hệ thống PSTN và chiếm lĩnh thị trường hội nghị truyền hình. Đối với những bộ phận chỉ dùng tính năng báo hiệu (thiết lập và kết thúc) cuộc gọi, không dùng hết những ưu điểm nổi trội của SIP thì không cần thay thế H.323 bằng SIP.
SIP hiện tại vẫn chưa hỗ trợ hội nghị truyền hình. Điểm mạnh của nó hiện tại vẫn là một giao thức đơn giản, dựa trên kiến trúc Internet.
Giao thức MGCP
Giao thức điều khiển cổng nối phương tiện (MGCP) là giao thức dùng để điều khiển các cổng nối thoại từ các thiết bị điều khiển cuộc gọi, được thiết kế nhằm địa chỉ hoá các thành phần của mạng truyền tiếng nói, xây dựng bằng cách tách hoá thành phần VoIP. Các chức năng của nó như là một giao thức bên trong giữa các MGC và MG cho việc tách hóa kiến trúc Gateway. Nó được chia thành báo hiệu cuộc gọi thông minh và xử lý phương thức. Giao thức này là chứ năng của bộ điều khiển cổng nối phương tiện (MGC) hoặc đại lý cuộc gọi (CA) cho việc điều khiển các MG. Trong đó, MGC thực hiện báo hiệu cuộc gọi, điều khiển MG. MG có nhiệm vụ chuyển đổi giữa dạng tín hiệu tương tự từ các mạng điện thoại, với các gói tin trong mạng chuyển mạch gói. MGCP hoàn toàn tương thích với VoIP Gateway, nó cung cấp một giải pháp mở cho truyền thông qua mạng và sẽ cùng tồn tại với SIP và H323.
Kiến trúc hệ thống
MGCP là một giao thức chủ/tớ sử dụng giao thức SDP để mô tả phương thức truyền thông và RTP/RTCP cho việc vận chuyển và giám sát truyền tin.
H ình 2-16: Kiến trúc tổng quát
Đánh giá vấn đề bảo mật
Không có cơ chế bảo mật nào được thiết kế vào trong chính giao thức MGCP. Các thông tin RFC 2705 đề cập đến việc sử dụng IPsec( hoặc AH hoặc ESP) để bảo vệ các bản tin MGCP. Nếu không có việc bảo vệ này thì sự tấn công tiềm tàng có thể thiết lập các cuộc gọi một cách trái phép hoặc sẽ tiếp tục can thiệp vào các cuộc gọi. Bên cạnh việc sử dụng IPsec, MGCP cho phép các đại lý cuộc gọi cung cấp các cổng với các khoá phiên để có thể được sử dụng để mã hoá các tin nhắn, bảo vệ chống lại việc nghe trộm. Các khoá phiên sẽ được sử dụng muộn hơn trong việc mã hoá RTP. Mã hoá RTP, được miêu tả trong RFC 1889, có thể được ứng dụng. Các khoá phiên có thể được chuyển đổi giữa các đại lý cuộc gọi và các cổng bằng cách sử dụng SDP( cf RFC 2327).
MEGACO/H248
MEGACO được phát triển từ giao thứuc MGCP vẫn dựa trên mô hình chủ/tớ và là chuẩn mở quốc tế cho việc điều khiển cổng kết nối trong mạng phân tán. MEGACO tuy còn đơn giản nhưng hiệu quả và rất linh hoạt trong việc mở rộng, cho phép xây dựng phân chia các chức năng cổng kết nối bên dưới lớp điều khiển cuộc gọi (SIP, H323…). Nó là giao thức điều khiển giữa thiết bị điều khiển cổng nối phương tiện MGC và MG với các chức năng:
Điều khiển các dạng thiết bị kết nôi
Hỗ trợ khả năng dàn xếp cuộc gọi
Các phương án cuộc gọi đa người sử dụng
Chất lượng dịch vụ và hỗ trợ cho đo lưu lượng
Báo lỗi trong giao thức, cuộc gọi, dung lượng và lỗi mạng
MEGACO có cấu trúc lệnh khá đơn giản, mềm dẻo trong thiết kế, cung cấp các ưu điểm nhằm giảm dung lượng header bản tin, giảm giá thành và độ phức tạp, có khả năng đáp ứng với rất nhiều ứng dụng khác nhau.
CHƯƠNG III: KỸ THUẬT BẢO MẬT CHO VoIP
Các điểm yếu về bảo mật VoIP
Điểm yếu về bảo mật của giao thức H323
Do H.323 sử dụng phương thức chứng thực tương đối chắc chắn giữa các thành phần H.323 và là giao thức có hỗ trợ bảo mật (H.235) nên luồng dữ liệu rất bảo mật. Tuy vậy cũng có một vài lỗ hổng, nghiêm trọng nhất là tràn bộ đệm do nó dùng định dạng bản tin ASN.1, dễ dàng bị DoS.
Can thiệp vào thông tin tính cước:
GK là nơi quản lý cuộc gọi, nó có chức năng tập trung thông tin tính cước và gửi về cho BES, BES lưu giữ thông tin này và gọi là CDR (Call Detail Record), thông tin này tối thiểu phải gồm có:
- Thời gian cuộc gọi: thời gian bắt đầu và kết thúc cuộc gọi, do GK theo dõi.
- CallID: mỗi cuộc gọi có 1 giá trị duy nhất khác nhau do GK tạo ra.
- UserID: duy nhất cho mỗi user được cấp quyền, giá trị này xác định tại thời điểm đăng ký.
CDR được gửi từ GK tới BES, do đó có thể chặn các gói này, sửa thông tin thời gian cuộc gọi. Để khắc phục phải chứng thực giữa GK và BES đồng thời phải đảm bảo toàn vẹn dữ liệu.
Cuộc gọi trực tiếp
Tính cước dựa trên việc cuộc gọi được định tuyến thông qua GK. Tuy nhiên, đầu cuối trong mạng H.323 có khả năng gọi trực tiếp mà không thông qua GK miễn là nó biết được địa chỉ IP của người bị gọi.
Traffic RTP luôn được gửi trực tiếp giữa các đầu cuối, do đó chỉ cần 1 cuộc gọi là có thể xác định được địa chỉ IP của bên bị gọi. Để khắc phục thì gateway chỉ cho phép thông tin báo hiệu từ GK đi qua.
Giả dạng đầu cuối
Để khởi tạo cuộc gọi, EP phải tiến hành 3 bước: đăng ký, xin chấp nhận cuộc gọi (Call Admission) và Q.931 thiết lập cuộc gọi. Quá trình đăng ký và xin chấp nhận cuộc gọi sử dụng bản tin RAS truyền qua UDP. Do đó, không có một phiên thực sự nào dành cho bản tin RAS, kẻ tấn công có thể chèn các bản tin này vào. Thông tin báo hiệu thực sự dùng bản tin Q.931 và được vận chuyển thông qua TCP.
Giả dạng EP trong giai đoạn đăng ký, sau đó kẻ giả dạng có thể thực hiện tất cả các dịch vụ mà một user được phân quyền có. Kiểu giả dạng này thành công nếu user bị giả dạng không đăng ký vào thời điểm giả dạng và nếu UserID là một IP thì chỉ có user trong cùng mạng mới có thể giả dạng được.
Tấn công trong giai đoạn xin chấp nhận cuộc gọi, cũng phải cùng mạng mới tấn
Các file đính kèm theo tài liệu này:
- Bảo mật VoIP.doc