Hai bên sau đó sẽ trao đổi các bản tin H. 245 về các thông số như audio, video
CODEC, master/slave. Sau đó, điểm cuối là master sẽ gửi đi bản tin mở kênh có
kèm theo khóa phiên ( đã được mã hóa bởi khóa chung DH) trong trường
encrytionSync.
68 trang |
Chia sẻ: lylyngoc | Lượt xem: 2669 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Giao thức bảo mật h.235 sử dụng trong hệ thống VOIP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
khối dữ liệu 4×4 byte. Hình 1.14 mô tả quá trình mã hóa và
giải mã của thuật toán AES.
20
Hình 1.14 Quá trình mã hóa và giải mã AES
Quá trình mã hóa AES trải qua bốn bước cơ bản, số vòng lặp của thuật toán có thể
là 10, 12,14 ( phụ thuộc vào chiều dài của khóa).
21
Bảng 1.2 Các tham số của AES
1. SubBytes — đây là phép thế (phi tuyến) trong đó mỗi byte sẽ được thế
bằng một byte khác theo bảng tra (Rijndael S-box).
Hình 1.15 SubBytes
Trong bước SubBytes, mỗi byte được thay thế bằng một byte theo bảng tra
S; bij = S(aij).
22
Bảng 1.3 S-Box
Một ví dụ về Subbytes
EA 04 65 85
83 45 5D 96
5C 33 98 B0
E0 3D AD C5
87 F2 4D 97
EC 6E 4C 90
4A C3 46 C7
8C D8 95 A6
2. ShiftRows — đổi chỗ, các hàng trong khối được dịch vòng.
Mỗi hàng được chuyển tuần tự với một số lượng bước là cố định. Đặc biệt,
các phần tử của hàng đầu tiên sẽ không thay đổi vị trí, hàng thứ hai dịch sang trái
một cột, hàng thứ ba dịch sang trái hai cột, hàng cuối cùng sẽ dịch sang trái ba cột.
Thao tác này nhằm đảm bảo mỗi cột của bảng đầu ra đều được tạo thành từ các cột
của bảng trạng thái đầu vào.
Hình 1.16 ShiftRows.
23
Một ví dụ về ShiftRows:
87 F2 4D 97
EC 6E 4C 90
4A C3 46 C7
8C D8 95 A6
87 F2 4D 97
6E 4C 90 EC
46 C7 4A C3
A6 8C D8 95
3. MixColumns
Hình 1.17 MixColumns.
Trong bước MixColumns, mỗi cột được nhân với một hệ số cố định c(x).
Ví dụ:
87 F2 4D 97
EC 6E 4C 90
4A C3 46 C7
8C D8 95 A6
47 40 A3 4C
37 D4 70 9F
94 E4 3A 42
ED A5 A6 BC
Trong đó với cột đầu tiên:
{02} · {87} = (0000 1110) (0001 1011) = (0001 0101)
{03} · {6E} = {6E} ({02} · {6E}) = (01101110) (1101 1100) = (1011 0010).
24
{02} · {87} = 00010101
{03} · {6E} = 10110010
{46} = 01000110
{A6} = 10100110
01000111
= {47}
4. AddRoundKey
Với hàm AddRoundKey, mỗi byte trong bảng trạng thái được thực hiện
phép XOR với một khoá vòng, quá trình xử lý AES thu được 11 khoá vòng từ các
key mã hoá được phân phát cho kỹ thuật mã hoá. Việc phân phát các key mã hoá
là kết quả của sự biến đổi các con số, chẳng hạn như hashing, và được thực hiện
dựa trên dãy key bí mật ban đầu. 11 khoá vòng được tìm được từ key mã hoá bằng
cách sử dụng giải thuật tính toán đơn giản.
Hình 1.18 AddRoundKey.
Ví dụ:
Trong đó ma trận thứ 2 là khóa vòng.
1.7.4.2 Thuật toán mã hóa bất đối xứng Diffie – Hellman (DH)
Như đã trình bày ở trên, với phương pháp mã hóa bất đối xứng, khóa dùng
để giải mã không được truyền đi mà chỉ truyền cho bên nhận khóa công khai.
Chính vì vậy phương pháp mã hóa này tương đối an toàn.
Với phương pháp mã hóa với khóa đối xứng, cả hai bên mã hóa (bên gửi)
và giải mã (bên nhận) phải sử dụng chung một khóa để mã hóa và giải mã. Do đó,
việc đảm bảo an toàn và bí mật cho khóa có vai trò cực kỳ quan trọng. Chính vì lý
do này, Whitfield Diffie và Martin Hellman đã đề xuất ra thuật toán trao đổi khóa
này vào năm 1976, thuật toán được lấy tên ghép từ tên của 2 nhà phát minh là
Diffie-Hellman key exchange. Thuật toán được sử dụng để trao đổi khóa bí mật
một cách an toàn trên các kênh thông tin không an toàn, khóa riêng được tính toán
25
bởi cả bên mã hóa và bên giải mã.
Hình 1.19 Mô hình Diffie Hellman
K = Ab mod p = (ga mod p)b mod p = gab mod p = (gb mod p)a mod p = Ba mod p
Giải thuật:
1. Bên gửi và bên nhận muốn dùng phương pháp mã hóa sử dụng khóa đối xứng để
liên lạc với nhau. Khi đó bên gửi và bên nhận thống nhất sử dụng một cặp số
nguyên tố dùng chung gọi là n và g. Trong đó n là một số nguyên tố đủ lớn, g là
một nguyên căn của n.
Ví dụ ở đây ta chọn n = 353 và g = 3.
2. Bên gửi chọn ngẫu nhiên một số cho mình gọi là x (x<n)và tính giá trị A theo
công thức:
A = gx mod n
Giả sử bên gửi chọn x = 97
==> A = 397 mod 353 = 40
Vậy A = 40
3. Bên nhận cũng chọn cho mình một số nào đó gọi là y(y<n) và tính B theo công
thức:
B = gy mod n
Giả sử bên nhận chọn y = 233 ==> B = 3233 mod 353 = 248
Vậy B = 248
4. Bên gửi gửi A = 40 cho bên nhận.
Bên nhận gửi B = 248 cho bên gửi
5. Bên gửi tính giá trị khóa mật K1 theo công thức:
K1 = Bx mod n
==> K1 = 24897 mod 353 = 160
Bên nhận tính khóa mật K2 theo công thức:
26
K2 = Ay mod n
==> K2 = 40233 mod 353 = 160
Vậy lúc này K1 == K2 == 160
Bên gửi và bên nhận sẽ sử dụng khóa bí mật K = 160 để sử dụng trong quá trình
mã hóa và giải mã.
1.7.5 Hàm hash
Hàm hash (hash function) là hàm một chiều nó sẽ tạo ra một giá trị băm có
kích thước cố định từ dữ liệu đầu vào.
Ví dụ, khi sử dụng hàm SHA-1 để băm cụm từ “Illuminati” ta sẽ có kết quả
A766F44DDEA5CACC3323CE3E7D73AE82. Khi ta chỉ cần thay đổi
“Illuminati” thành “Illuminatus” và sử dụng SHA-1 làm hàm băm sẽ cho kết quả
như sau E783A3AE2ACDD7DBA5E1FA0269CBC58D. Tuy nhiên kích thước
của kết quả vẫn cố định là 160 bit.
Hình 1.20 Hoạt động của 1 hàm băm.
Các tính chất quan trọng của hàm băm:
• Tính một chiều: rất khó để tìm ra dữ liệu ban đầu từ kết quả.
• Tính chống xung đột mạnh: xác suất để hai thông điệp khác nhau có cùng
kết quả hash là cực kỳ nhỏ.
Các ứng dụng của hàm băm
• Chống và phát hiện xâm nhập: chương trình chống xâm nhập sử dụng giá
trị hash của một dữ liệu ban đầu với giá trị trước để so sánh, từ đó kiểm tra xem
dữ liệu đó có bị thay đổi hay không.
• Bảo vệ tính toàn vẹn của thông điệp: kiểm tra giá trị hash của thông điệp
trước và sau khi gửi xem có bị thay đổi hay không.
• Tạo chìa khóa từ mật khẩu.
• Tạo chữ kí điện tử.
27
SHA-1 và MD5 là hai hàm hash thông dụng nhất và được sử dụng trong rất
nhiều hệ thống bảo mật.
Trong bảo mật H.235 còn sử dụng 2 hàm băm HMAC-SHA1 và HMAC-
MD5
Hình 1.21 Hàm băm HMAC-SHA1
28
CHƯƠNG 2 BẢO MẬT H.235
2.1. Giao thức báo hiệu cuộc gọi H.323 [3], [5], [10], [11], [15], [17]
2.1.1. Giới thiệu
H.323 là chuẩn quốc tế về hội thoại trên mạng được đưa ra bởi hiệp hội viễn
thông quốc tế ITU (International Telecommunication Union). Nó qui định các
thành phần, các giao thức sử dụng, các thủ tục cho phép truyền các dữ liệu đa
phương tiện (âm thanh, hình ảnh) và số liệu thời gian thực thông qua mạng IP mà
không quan tâm tới chất lượng dịch vụ (QoS). Các đầu cuối của các hãng khác nhau
có thể giao tiếp được với nhau nếu các đầu cuối này tuân theo chuẩn H.323.
2.1.2. Các thành phần của một hệ thống H.323
Một hệ thống H.323 bao gồm có 4 thành phần chính cho việc truyền tin
trên mạng đó là : Terminal, Gateway, Gatekeeper, MCU(Multipoint control unit)
Hình 2.1 Các thành phần H.323.
Terminal: Một ví dụ của đầu cuối H.323 được diễn tả trong Hình 2.2. Sơ đồ
này chỉ ra các phần tử người dùng, giao diện, video codec, audio codec,
H.225.0 layer, hệ thống các phương thức điều khiển. Tất cả các đầu cuối
H.323 sẽ bao gồm một hệ thống điều khiển, H.225.0 layer, giao diện mạng
và một Audio Codec. Trong đó, Video Codec và các ứng dụng dữ liệu người
dùng là tùy chọn.
29
Hình 2.2 Cấu trúc của một đầu cuối H.323
H.323 terminal là một thiết bị đầu cuối trong mạng LAN có khả năng trao
đổi thông tin 2 chiều thời gian thực, các terminal có thể là các thiết bị độc lập
hoặc các PC. Yêu cầu đối với các thiết bị đầu cuối H.323 để có khả năng trao
đổi và giao tiếp được với nhau là phải hỗ trợ chuẩn H245 được dùng để điều
tiết các kênh truyền dữ liệu và trao đổi khả năng của thiết bị, H225 được
dùng để thiết lập, báo hiệu và huỷ bỏ cuộc gọi và RTP/RTCP được dùng để
truyền các gói tin audio, video.
Gateway: Cung cấp sự chuyển dịch thích hợp giữa các định dạng truyền dẫn
(Ví dụ: H.225.0 sang H.221 và ngược lại), giữa các thủ tục truyền thông (Ví
dụ: H.245 sang H.242 và ngược lại). Gateway cũng có thể thực hiện việc
thiết lập cuộc gọi. Việc thay đổi định dạng của video, audio và dữ liệu có thể
cũng được thực hiện bên trong Gateway. Gateway được dùng để kết nối giữa
hai mạng không giống nhau. Ví dụ, một GW có thể kết nối và cung cấp liên
lạc giữa đầu cuối H323 và các mạng SCN (bao gồm các mạng điện thoại
PSTN). Cung cấp giao thức biên dịch và chuyển mã giữa một điểm cuối
H.323 và một điểm cuối không phải H.323.
30
Hình 2.3 Kết nối giữa một điểm cuối H.323 và một điểm cuối
không phải H.323.
Tuy nhiên, Một đầu cuối H.323 có thể kết nối một đầu cuối H.323 khác trên
cùng một mạng LAN mà không cần sự tham gia của Gateway.
Gatekeeper : là thành phần tùy chọn của một hệ thống H.323, điều khiển
việc giải quyết địa chỉ và cho vào mạng H.323. Chức năng quan trọng nhất
của nó là biên dịch địa chỉ giữa địa chỉ ký danh tượng trưng và địa chỉ IP. Ví
dụ, với sự có mặt của gatekeeper nó có khả năng gọi tới địa chỉ có tên là
“Tom” thay vì phải gọi tới địa chỉ IP 192.168.10.10.
Khi có mặt trong hệ thống, gatekeeper cung cấp những dịnh vụ chính sau:
o Address Translation (Biên dịch địa chỉ): Gatekeeper biên dịch các địa
chỉ ký danh tượng trưng sang địa chỉ truyền dẫn thực trong mạng (địa
chỉ IP). Điều này được thực hiện bằng cách sử dụng một bảng biên
dịch được cập nhật thường xuyên qua các thông báo đăng ký của các
đầu cuối.
o Admissions Control (Điều khiển truy cập): Gatekeeper cho phép thiết
bị đầu cuối truy cập mạng LAN sử dụng thông báo ARQ/ACF/ARJ
H.225.0
o Bandwidth Control (Điều khiển băng thông): Gatekeeper hỗ trợ các
thông báo BRQ/BRJ/BCF để quản lý và giám sát việc sử dụng dịch vụ
và cung cấp băng thông có giới hạn.
MCU (Multipoint Control Unit) : Là một đầu cuối, nó hỗ trợ đàm thoại
hội nghị giữa nhiều thiết bị đầu cuối. MCU bao gồm 1 MC (multipoint
controller), tùy chọn có hoặc không có các MP (multipoint processor). MC
có nhiệm vụ điều khiển tài nguyên của hội thoại bằng cách xác định tài
nguyên nào cần được gửi tới các thiết bị đầu cuối, MP có nhiệm vụ trộn,
chuyển mạch các chuỗi tín hiệu dữ liệu, âm thanh, hình ảnh do MC điều
khiển. MCU sử dụng thông báo H.245. Bên cạnh mạng LAN của một
Gateway có thể là một MCU. Một Gatekeeper có thể cũng bao gồm một
MCU.
31
2.1.3. Các thành phần của giao thức H.323
Giao thức báo hiệu cuộc gọi H.225: H.225 RAS, H.225.0 Call Signalling.
Giao thức điều khiển cuộc gọi H.245.
Giao thức truyền tải thông tin đa phương tiện RTP/RTCP.
Các chuẩn mã hóa audio: G.711, G.722, G.728, G.729.
Các chuẩn mã hóa video : H.261, H.263.
Nhiệm vụ của các giao thức sử dụng trong mạng H.323
H.225.0 bao gồm H.225.0 RAS và H.225.0 Call Signalling. Phiên bản đầu
tiên của giao thức báo hiệu cuộc gọi H.225.0 được công bố vào ngày
11/11/1996, cho tới nay phiên bản thứ 7 được công bố chính thức vào ngày
14/12/2009.
o H.225.0 RAS là giao thức giữa H.323 Endpoints (Terminal,
Gateway) và Gatekeeper. RAS thực thi quá trình đăng ký, thu nhận,
thay đổi băng thông, giám sát trạng thái giữa H.323 Endpoints và
Gatekeeper.
o H.225.0 Call Signalling (Báo hiệu cuộc gọi) dùng để thiết lập kết
nối giữa các H.323 Endpoints.
H.245 là giao thức điều khiển cuộc gọi. Phiên bản đầu tiên công bố vào
ngày 20/03/1996 cho tới nay phiên bản thứ 15 đã được công bố vào ngày
14/12/2009. Nó mang thông báo điều khiển hoạt động của các thành phần
H.323 (H.323 host, H.323 gateway, H.323 gatekeeper). Chức năng quan
trọng nhất của H.245 là khả năng trao đổi. Các chức năng khác của H.245
bao gồm đóng mở các kênh logic, các thông báo điều khiển luồng, chế độ
ưu tiên cho các yêu cầu, các chỉ dẫn và các lệnh thông thường. Điểm cuối
khi tham gia nó sẽ thiết lập H.245 cho mỗi cuộc gọi. Để phù hợp với H.245,
các điểm cuối H.323 phải hỗ trợ cú pháp, ngữ nghĩa và các thủ tục sau:
o Khả năng trao đổi.
O Xác định chủ/tớ.
o Đóng mở các kênh logic.
o Các điều khiển cuộc gọi.
O Chế độ yêu cầu.
RTP/RCTP: Có chức năng truyền và kết hợp tín hiệu media (Audio, Video).
Audio/Video CODEC: dùng để mã hóa và giải mã tín hiệu Audio và Video.
32
Data Control and Signalling Audio/Video Registration
T.120 H225.0
Call
Signalling
H245
Conference
Control
RTP/RTCP H225.0 RAS
TCP UDP
Network Layer
Data link Layer
Physical Layer
Hình 2.4 Kiến trúc phân tầng H.323.
33
2.1.4. Các thủ tục báo hiệu trong mạng H323
Hình 2.5 Cuộc gọi trong H.323.
34
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 truyền thông
- Giai đoạn 4: Dịch vụ
- Giai đoan 5: Kết thúc cuộc gọi
Giai đoạn 1: Thiết lập cuộc gọi :
Giao thức sử dụng : H.225 .
Hai đầu cuối gọi gửi bản tin H.225 RAS đến GK để đăng ký và lấy địa chỉ của đầu
cuối bị gọi. Sau đó, đầu cuối này trao đổi các bản tin H.225 (SETUP, CALL
PROCEEDING, ALERTING, CONNECT) với đầu cuối bị gọi; trong lúc trao đổi
những bản tin này, đầu cuối bị gọi cũng sử dụng bản tin H.225 RAS để đăng ký
với GK.
Hình 2.6 Thiết lập cuộc gọi H.323.
Giai đoạn 2: Thiết lập kênh điều khiển:
Giao thức sử dụng : H.245 .
Các thông số của cuộc gọi sẽ được thống nhất trong giai đoạn này khi các đầu cuối
gửi các bản tin H.245 cho nhau, bao gồm :
Khả năng trao đổi của đầu cuối (Terminal Capability Exchange) : là
khả năng truyền, nhận cũng như xử lý các dòng thông tin của các
đầu cuối. Việc trao đổi thông tin giữa 2 điểm cuối là cần thiết để cả
2 có cùng phương thức CODEC trong quá trình tham gia một kết
35
nối. Các thông báo H.245 sử dụng trong quá trình này :
TerminalCapabilitySet, TerminalCapabilitySetAck.
Quyết định chủ tớ (Master-Slave Determination) : Mẫu thuẫn có thể
nảy sinh khi 2 đầu cuối đều có khả năng MC tham gia vào một cuộc
gọi hội nghị. Để giải quyết vấn đề này một đầu cuối sẽ đóng vai trò
chủ, các đầu cuối khác đóng vai trò tớ. Khi xảy ra mâu thuẫn các đầu
cuối phải thông báo vai trò của mình. Thủ tục này cho phép các đầu
cuối tham gia trong một cuộc gọi xác định đâu là đầu cuối chủ, đâu
là đầu cuối tớ. Vai trò của các đầu cuối có thể được xác định lại
trong suốt tiến trình hội nghị. Các bản tin được sử dụng để xác định
chủ tớ : masterSlaveDetermination,
masterSlaveDeterminationAck.
Đóng mở các kênh logic (Logical Chanel Signalling) : Một kênh
logic là kênh mang thông tin từ điểm cuối này đến điểm cuối khác
hoặc đến nhiều điểm cuối khác. Một điểm cuối có thể yêu cầu thiết
lập kênh logic bằng cách gửi bản tin openLogicalChannel. Điểm
cuối có thể chấp nhận yêu cầu này hoặc từ chối. Nếu đồng ý nó sẽ
đáp ứng bằng bản tin openLogicalChannelAck ngược lại nó sẽ
gửi bản tin phản hồi.
Giai đoạn 3 : 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.
Giai đoạn 4: 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.
Hai loại dịch vụ điển hình: thay đổi độ rộng băng tần và giám sát trạng thái hoạt
động.
Giai đoạn 5 : Kết thúc cuộc gọi
Cuộc gọi được kết thúc 1 cách tuần tự: từ kênh truyền thông, kênh điều
khiển, kênh báo hiệu đến đăng ký của các đầu cuối với GK.
Đầu tiên hai đầu cuối kết thúc kênh truyền thông và kênh điều khiển H.245
bằng các bản tin CloseLogicalChannel và EndSessionComand. Sau đó đầu cuối
bị gọi gửi đi bản tin H.225 RELEASE COMPLETE để kết thúc kênh báo hiệu
cuộc gọi. Cuối cùng, đăng ký giữa GK và đầu cuối kết thúc bằng các bản tin RAS.
36
Trường hợp cuộc gọi không có GK : hai đầu cuối vẫn thực hiện các bước
như trên và không sử dụng các bản tin RAS.
2.2 Bảo mật H.235 [6], [7], [8], [9], [15], [17]
2.2.1. Giới thiệu
H.235 là chuẩn về bảo mật dành cho hội thoại qua mạng sử dụng giao thức
báo hiệu H.323 được đưa ra bởi hiệp hội liên minh viễn thông quốc tế
ITU(International Telecommunication Union). Ví dụ, những hệ thống H.323 hoạt
động dựa trên mạng chuyển mạch gói (không cung cấp sự bảo đảm về chất lượng
dịch vụ QoS). Vì vậy truyền thông thời gian thực cần quan tâm tới 2 điều : xác
thực và bảo mật.
H.235 mô tả những cơ sở và kĩ thuật bảo mật được tận dụng cho những
thiết bị đầu cuối đa phương tiện H.3xx. Nó cũng bao gồm những phạm vi cần
quan tâm của việc tương tác trong hội nghị truyền thông (những giao thức và
thuật toán cần thiết giữa những thực thể H.323 ).
H.235 cung cấp khả năng dàn xếp dịch vụ, nó liên quan đến khả năng hệ
thống, yêu cầu của ứng dụng và đặc tả về ràng buộc của cách thức bảo mật. Nó hỗ
trợ những thuật toán mã hóa khác nhau, với những tùy chọn thích hợp với những
mục đích khác nhau (Ví dụ như độ dài khóa).
2.2.2. Giới thiệu về hệ thống sử dụng H.235
Một hệ thống khi sử dụng bảo mật H.235 sẽ bao gồm các tính năng sau:
2.2.2.1. Authentication (xác thực)
Quá trình xác thực nhằm mục đích kiểm tra đối tượng đang trao đổi thông
tin là ai. Quá trình này có thể được hoàn thành bằng cách trao đổi khóa công khai
(public- key) dựa trên chứng nhận điện tử (certificate), hoặc là trao đổi 1 khóa
chung (share secret) giữa các bên tham gia. Nó có thể là mật khẩu (password) hoặc
là 1 phần thông tin nào đó đã được trao đổi.
H.235 mô tả giao thức trao đổi chứng nhận điện tử (certificate), nhưng
không chỉ rõ cách thức mà các bên tham gia xác nhận và chấp nhận nó. Nhìn
chung, chứng nhận điện tử đưa ra 1 sự bảo đảm cho người kiểm tra rằng : người
gửi chứng nhận điện tử là ai. Mục đích đằng sau chứng nhận điện tử là xác thực
người sử dụng thiết bị đầu cuối chứ không đơn thuần là xác thực thiết bị đầu cuối
về mặt vật lý. Sử dụng chứng nhận điện tử, giao thức xác thực(authentication) này
chứng tỏ được rằng người nhận sở hữu khóa bí mật (private key) tương ứng với
khóa công khai(public key) chứa trong chứng nhận điện tử. Cách xác thực này
giúp chống lại kiểu tấn công man-in-the-midle, chứ không tự động xác định được
người trả lời là ai. Để làm được điều này đòi hỏi phải có 1 vài thông tin khác trong
chứng nhận điện tử. Ví dụ, chứng nhận điện tử thông thường bao gồm ID của nhà
cung cấp dịch vụ cùng với biểu mẫu thông tin tài khoản người sử dụng quy định
bởi nhà cung cấp dịch vụ.
Đối với xác thực không sử dụng chứng nhận điện tử, khuyến nghị H.235
37
cung cấp báo hiệu để hoàn thành những kịch bản khác nhau. Phương pháp này
phụ thuộc vào thứ tự liên lạc của các bên tham gia để thu được khóa chung (share
secret).
Như là 1 lựa chọn thứ 3, việc xác thực có thể hoàn thành cùng với việc sử
dụng những giao thức bảo mật riêng biệt khác như TLS hay IPSEC.
Xác nhận 1 chiều hay 2 chiều đều có thể được hỗ trợ bởi các điểm đầu
cuối ngang hàng. Việc xác thực này có thể diễn ra trên 1 vài hoặc tất cả các
kênh truyền thông.
Certificate (Chứng chỉ điện tử):
Sự chuẩn hóa của chứng nhận điện tử, bao gồm quá trình tạo ra chúng, quản
lý, phân phối không nằm trong phạm vi của khuyến nghị này. Chứng nhận điện tử
sử dụng để thiết lập kênh bảo mật (Báo hiệu cuộc gọi, điều khiển cuộc gọi) phải
thích hợp với những điều đã quy định bởi giao thức được thống nhất bảo mật kênh
truyền.
Chú ý khi sử dụng khóa công khai trong chứng nhận điện tử, các đầu cuối
được yêu cầu cung cấp chữ kí điện tử sử dụng khóa bí mật. Việc chỉ trao đổi khóa
công khai trong chứng nhận điện tử không chống lai khả năng bị tấn công man-in-
the-midle. Giao thức H.235 thích hợp với yêu cầu này.
2.2.2.2. Call establishment security (Bảo mật báo hiệu cuộc gọi -
H.225 )
Có 2 lý do thúc đẩy việc thiết lập kênh bảo mật. Thứ nhất là xác thực đơn
giản trước khi chấp nhận cuộc gọi. Thứ 2 là để cấp phép cuộc gọi. Nhiệm vụ của
kênh H.225 trong trường hợp này là cung cấp các kĩ thuật bảo mật mà đầu cuối có
thể đáp ứng, xác nhận các kĩ thuật bảo mật đó và trao đổi chứng chỉ điện tử.
2.2.2.3. Call control security (Bảo mật kênh điều khiển cuộc gọi
H.245 )
Kênh điều khiển cuộc gọi cũng nên được bảo mật để cung cấp bảo đảm cho
kênh truyền thông sau đó. Kênh H.245 được bảo vệ sử dụng những kĩ thuật bảo
mật đã được trao đổi trước đó. Bản tin H.245 được sử dụng để báo hiệu thuật toán
mã hóa và khóa đã được mã hóa sử dụng trong kênh chia sẻ, kênh media. Trong
hội nghị đa điểm, nhiều khóa khác nhau được sử dụng cho nhiều luồng với mỗi
điểm đầu cuối. Nó đảm bảo an toàn đối với mỗi điểm đầu cuối trong hội nghị.
Kĩ thuật bảo vệ H.245 phụ thuộc vào đầu cuối H-series liên quan. Yêu cầu
duy nhất cho tất cả các hệ thống tận dụng cấu trúc bảo mật này là mỗi bên phải có
1 vài cách thức dàn xếp hay báo hiệu rằng kênh H.245 được hoạt động theo cách
thức bảo mật trước khi nó được khởi tạo. Ví dụ, H.323 sẽ sử dụng bản tin báo
hiệu H.255.0 để hoàn thành việc này.
38
2.2.2.4. Media stream privacy (Bảo mật kênh truyền thông )
Khuyến nghị này mô tả bảo mật truyền thông cho luồng dữ liệu đa
phương tiện truyền trên mạng chuyển mạnh gói.
Bước đầu tiên trong việc đạt được bảo mật truyền thông là sự cung cấp có
đảm bảo của 1 kênh điều khiển, dựa trên đó để đặt 1 khóa mã hóa và thiết lập
những kênh logic sẽ mang những luồng dữ liệu truyền thông đã được mã hóa. Vì
vậy, khi hoạt động trong 1 hội nghị có đảm bảo, các đầu cuối tham gia có thể sử
dụng 1 kênh H.245 đã được mã hóa. Theo cách đó, thuật toán mã hóa được lựa
chọn và khóa mã hóa đưa vào trong bản tin H.245 OpenLogicalChannel được
bảo vệ.
Dữ liệu đã được mã hóa được truyền trong các kênh logic phải nằm trong
kiểu được đặc tả bởi OpenLogicalChannel. Thông tin trong phần header gửi đi
không được mã hóa. Sự bảo mật của dữ liệu dựa trên cơ sở mã hóa end-to-end.
2.2.2.5. Trusted elements ( Thành phần tin tưởng )
Cơ sở của việc xác thực và bảo mật được định nghĩa bởi các đầu cuối của
kênh liên lạc. Đối với 1 kênh thiết lập cuộc gọi, đó có thể là giữa người gọi và một
thành phần máy chủ. Ví dụ, một máy điện thoại tin tưởng rằng chuyển mạng sẽ
kết nối nó tới đúng chiếc điện thoại có số mà nó đã gọi. Vì vậy, thực thể nào giới
hạn kênh điều khiển mã hóa H.245 và hay kiểu mã hóa dữ liệu của kênh logic sẽ
được coi như là trusted element của kết nối, nó có thể gồm các MC(U) hay
gateway. Kết quả của việc tin tưởng 1 thành phần là sự tin cậy để chia sẻ các kĩ
thuật bảo mật (thuật toán hay khóa) cho thành phần này. Điều đó được thực hiện
theo cách thông thường là trao đổi chứng nhận điện tử.
Sự đảm bảo cuộc gọi giữa 2 điểm đầu cuối là chắc chắn nếu những kết nối
giữa các trusted element được chứng minh là bảo vệ khỏi tấn công man-in-the-
midle.
39
2.2.3 Các thủ tục bảo mật trong cuộc gọi sử dụng H.235
Hình 2.7 Thủ tục H.235
2.2.3.1. Thủ tục thiết lập kết nối
Kênh báo hiệu cuộc gọi H.225 và kênh điều khiển cuộc gọi H.245 sẽ hoạt
động trong chế độ bảo mật hoặc không bảo mật. Đối với kênh báo hiệu, cổng bảo
mật TLS (port 1300 ) sẽ được sử dụng. Đối với kênh điều khiển cuộc gọi, chế độ
bảo mật được quyết định bởi thông tin được truyền tải trong giao thức khởi tạo kết
nối.
Trong trường hợp không có khả năng bảo mật nào thích hợp, đầu cuối bị gọi
có thể từ chối kết nối. Thông tin phản hồi không mang thông tin về sự không
trùng khớp chế độ bảo mật, vì vậy đầu cuối gọi phải xử lý vấn đề theo nhiều cách
khác nhau.
Trong nhiều trường hợp, đầu cuối gọi nhận được bản tin không kèm theo
khả năng bảo mật, nó sẽ kết thúc cuộc gọi.
Nếu đầu cuối gọi và bị gọi có cùng khả năng bảo mật thích hợp, nó sẽ được
thừa nhận bởi tất cả các bên rằng kênh H.245 sẽ hoạt động trong chế độ bảo mật.
Thất bại trong việc thiết lập kênh H.245 trong chế độ bảo mật nên được xem như
40
là 1 lỗi giao thức và cuộc gọi được kết thúc.
Diffie – Hellman :
Phụ thuộc vào từng hoàn cảnh mà khóa sinh ra bởi trao đổi Diffie-Hellman
có thể đóng vai trò như khóa bảo vệ(mã hóa khóa phiên) hay dùng như khóa
phiên.
Diffie-Hellman được mô tả bởi các tham số g và p với : p là 1 số nguyên
lớn còn g là 1 số khởi tạo. (g^x)mod p chỉ ra khóa công khai Diffie-Hellman của
bên gọi và (g^y)mod p chỉ ra khóa công khai Diffie-Hellman của bên bị gọi.
Cách lựa chọn tham số cho Diffie-Hellman được chỉ dẫn trong RFC 2412.
Thông số Diffie-Hellman (g, p, g^x) được đưa vào trong trường
ClearToken (trong các bản tin H.225) trong đó dhkey sẽ nắm giữ khóa công
khai (g^x)mod p ( trong bản tin trả lời là g^ymodp), với x(y) là số bí mật (khóa
bí mật), p nằm trong trường modesize và g trong trường generator. Với những
trường hợp đặc biệt như thông số Diffie-Hellman là (0, 0, 0) hay trường dhkey
được bỏ trống báo hiệu rằng chế độ mã hóa không được sử dụng.
Thông thường, các tham số g và p đã được quy định sẵn với những giá trị
hợp lý, do đó các đầu cuối có thể chọn tham số phù hợp với nó. Người được gọi
cần chú ý rằng, thực tế các tham số DH không không chuẩn có thể cung cấp sự bảo
mật kém hơn so với các tham số được định nghĩa theo chuẩn.
Khi thông số DH được sử dụng theo chuẩn, giá trị nhận biết DH-OID sẽ
được đưa vào trường tokenOID. Trong trường hợp thông số DH không theo
chuẩn được sử dụng, DH-OID “DH-dummy” sẽ được sủ dụng và đưa vào
ClearToken.
Bên gọi có thể sử dụng 1 hay nhiều ClearToken, trong đó sẽ mang những thông
số DH khác nhau và điều đó được khuyến khích. Vì việc cung cấp nhiều thông số
DH sẽ cho phép bên bị gọi lựa chọn được thông số phù hợp, sau đó bên gọi sẽ gửi
lại thông số này cho bên gọi.
41
Hình 2.8 Thành phần ClearToken.
Nếu bên bị gọi không chấp nhận những đề xuất đó, nó sẽ không đưa trường
dhkey vào trong bản tin trả lời.
Đôi khi Gatekeeper có thể không phân phối được toàn bộ các bản tin báo
hiệu đến bên gọi, bao gồm cả thông tin DH. Vì vậy bên gọi không thể tính được
khóa bảo vệ và khóa mã hóa. Để tránh trường hợp này, bên được gọi nên đưa
thông số DH vào tất cả các bản tin trả lời.
Trong trường hợp DH-OID chỉ ra 1 thông số DH khác với thực tế được
mang trong dhkey và modsize, giá trị thực tế trong dhkey và modsize sẽ được
ưu tiên so với DH-OID. Đối với việc trả lời, bên được gọi nên thay thế DH-OID
mâu thuẫn với DH-OID phù hợp.
Lỗi trong quá trình báo hiệu:
Lỗi trong quá trình báo hiệu chỉ ra rằng đầu cuối không thể xử lý bản tin
nhận được 1 cách phù hợp. Và khi xảy ra trường hợp đó, những mã lỗi sau sẽ
cung cấp chi tiết thông tin :
securityWrongSyncTime : chỉ ra rằng bên gửi nhận thấy có lỗi trong
tem thời gian (timestamp), có thể là do sự không đồng bộ từ phía máy
42
chủ hay trễ qua mạng.
securityReplay : chỉ ra khả năng bị tấn công kiểu “replay”( bị chặn
gói tin ở giữa và sửa đổi ). Trường hợp này thường xảy ra khi cùng
1 số thứ tự gói ( sequence number) gán với 1 timestamp trong nhiều
lần.
securityWrongGeneralID : Gán sai địa chỉ nhận trong token.
securityWrongSendersID : Gán sai địa chỉ của chính bên gửi trong
token.
securityIntegrityFailed : Có lỗi trong quá trình kiểm tra tính toàn vẹn
hay chữ ký điện tử của bản tin.
securityCertificateExpired : Chứng chỉ điện tử đã hết hạn.
securityCertificateDateInvalid : Chứng chỉ điện tử không hợp lệ.
securityCertificateNotReadable : Chứng chỉ điện tử không ở
dạng ASN.1.
securityCertificateSignatureInvalid : Chữ ký điện tử trong chứng
chỉ điện tử không chính xác.
securityCertificateMissing : Bên nhận chờ chứng chỉ số từ bên
gửi, nhưng trong bản tin nhận được thiếu hoặc nó không được đặt
đúng vị trí.
securityCertificateIncomplete : Không có sự hiện diện của 1 số
thành phần mở rộng trong chứng chỉ số.
securityUnsupportedCertificateAlgOID : Một vài kĩ thuật như hàm
băm hay chữ kí điện tử sử dụng trong chứng chỉ điện tử không được
nhận biết hay không được hỗ trợ. Như là 1 phần của bản tin trả lời,
bên gửi có thể cung cấp danh sách các chứng chỉ điện tử có thể được
chấp nhận trong 1 token riêng, thuận tiện cho bên nhận trong việc lựa
chọn chứng chỉ thích hợp.
securityUnknownCA : Không trùng khớp về cơ quan cấp chứng chỉ
điện tử.
2.2.3.2. Thủ tục và báo hiệu H.245
Nhìn chung, khía cạnh bảo mật của kênh truyền thông cũng được điều
khiển giống như những thành phần khác; mỗi đầu cuối chỉ ra khả năng của nó,
định dạng dữ liệu và bên nhận có thể chấp nhận hay từ chối chế độ đó. Các đặc tả
truyền vận như khóa thuật toán mã hóa đồng bộ được đặt trong các cấu trúc đặc tả
truyền vận.
Hoạt động của kênh bảo mật H.245:
Việc áp dụng thủ tục báo hiệu như đã đề cập ở trên giúp chỉ ra chế độ hoạt
động bảo mật, sự dàn xếp và xác thực sẽ xảy ra trên kênh điều khiển H.245 trước
khi bất cứ bản tin H.245 nào được trao đổi. Nếu đã dàn xếp, việc trao đổi chứng
nhận điện tử sẽ sử dụng những kĩ thuật thích hợp với đầu cuối H-series. Sau khi
43
hoàn thành việc bảo mật cho kênh H.245, các đầu cuối sử dụng giao thức H.245
giống như cách mà nó sử dụng ở chế độ không bảo mật.
Trao đổi khả năng :
Các đầu cuối trao đổi khả năng thông qua các bản tin H.245. Nó bao gồm
các định nghĩa về chỉ định bảo mật và tham số cho việc mã hóa dữ liệu. Ví dụ, 1
đầu cuối có thể cung cấp khả năng truyền và nhận video H.261 và nó cũng báo
hiệu khả năng gửi và nhận video H.261 đã được mã hóa.
Mỗi thuật toán mã hóa được sử dụng kết hợp với một media codec (bộ nén
media) cụ thể để đưa ra định nghĩa mới về khả năng (capability). Với những
capability khác, các đầu cuối có thể cung cấp khả năng mã hóa hay không cho bộ
nén trong quá trình trao đổi. Điều đó cho phép những đầu cuối cân bằng các khả
năng của nó dựa trên các hoạt động và tài nguyên sẵn có.
Sau khi trao đổi khả năng hoàn tất, các đầu cuối mở các kênh media bảo
mật giống như với kênh media không bảo mật.
Vai trò của master :
Bản tin H.245 MasterSlaveDetermination được sử dụng để xác định điểm
cuối làm chủ cuộc gọi, áp dụng cho kênh thoại 2 chiều và tránh bị xung đột. Về
phương pháp bảo mật thì master có nhiệm vụ sinh ra khóa mã hóa, cho dù nó có là
người nhận hay nguồn của luồng dữ liệu. Để cho phép kênh multicast hoạt động
với khóa chia sẻ, MC (là master) sẽ sinh khóa.
Báo hiệu kênh truyền thông :
Mỗi kênh truyền thông hoạt động hoàn toàn độc lập với những kênh khác (cụ
thể là liên quan đến vấn đề bảo mật). Thông thường, các chế độ sẽ được xác định
trong trường dataType của bản tin OpenLogicalChannel. Khóa mã hóa sẽ được
truyền đi thông qua trường EcryptionSync trong bản tin OpenLogicalChannel
hay OpenLogicalChannelAck phụ thuộc vào mối quan hệ chủ/ tớ.
OpenLogicalChannelAck đóng vai trò xác nhận chế độ mã hóa. Nếu
OpenLogicalChannel không được chấp nhận bởi bên bị gọi, trường
dataTypeNotSupport hay dataTypeNotAvailable trong bản tin
OpenLogicalChannelReject sẽ được gửi lại.
Trong suốt quá trình trao đổi thiết lập kênh media, khóa mã hóa sẽ được
chuyển từ master đến slave (không phụ thuộc vào người gửi bản tin
OpenLogicalChannel). Đối với trường hợp đầu cuối mở kênh truyền thông không
phải là master, master sẽ gửi khóa mã hóa trong bản tin OpenLogicalChannelAck
(trường EcryptionSync ). Ngược lại thì OpenLogicalChannel sẽ mang theo khóa
mã.
44
Hình 2.9 Trường EncytionSync
2.2.3.3. Thủ tục kết nối đa điểm
Xác thực:
Việc xác thực xảy ra giữa 1 đầu cuối và MC(U) giống với khi nó xảy ra
trong hội nghị điểm-điểm. Ban đầu MC(U) sẽ được tin tưởng (trusted) ; những đầu
cuối có mặt trong hội nghị có thể được giới hạn bởi mức độ xác thực được tận
dụng bởi MC(U). Việc gửi các bản tin ConferenceRequest/ConferenceResponse
cho phép các đầu cuối thu được các chứng nhận điện tử của các bên tham gia từ
MC(U).
Bảo mật:
MC(U) sẽ là master đối với tất cả những lần trao đổi khả năng, và nó sẽ
cung cấp khóa mã hóa cho các bên tham gia của hội nghị đa điểm. Khóa này có
thể được sử dụng đối với tất cả các kênh truyền thông hay từng kênh riêng biệt.
2.2.3.4. Thủ tục mã hóa luồng dữ liệu kênh truyền thông
Luồng dữ liệu truyền thông sẽ được mã hóa bởi thuật toán và khóa được
đưa ra trên kênh H.245. Chú ý rằng các header chỉ được gắn vào các SDU (Service
Data Unit) sau khi các SDU này đã được mã hóa.
45
Hình 2.10 Mã hóa luồng dữ liệu
Hình 2.11 Giải mã luồng dữ liệu
Khóa của phiên truyền thông :
Bất cứ lúc nào trong hội nghị, bên nhận hoặc bên truyền có thể yêu cầu 1
khóa mới (sử dụng encrytionUpdateRequest). Chủ cuộc gọi (master) sẽ sinh ra
1 khóa mới đáp ứng cho yêu cầu này. Tuy nhiên, chủ cuộc gọi hoàn toàn có thể
đơn phương lựa chọn khóa mới và phân phối nó đến các đầu cuối khác sử dụng
bản tin MiscellaneousCommand với trường encryptionUpdate.
Sau khi nhận bản tin MiscellaneousCommand với trường
encryptionUpdateRequest, master sẽ gửi đi bản tin encrytionUpdate. Nếu đây là
hội nghị đa điểm, MC (cũng là chủ cuộc gọi) sẽ phân phối khóa mới đến tất cả các
46
đầu cuối trước khi đưa nó đến người phát tín hiệu (transmitter). Người phát tín
hiệu của dữ liệu trên kênh truyền thông sẽ sử dụng khóa mới vào thời điểm sớm
nhất có thể sau khi nhận được bản tin.
Transmitter cũng có thể yêu cầu khóa mới. Nếu Transmitter là 1 phần của
hội nghị đa điểm, các thủ tục sẽ diễn ra như sau :
o Transmitter sẽ gửi bản tin MiscellaneousCommand với trường
encryptionUpdateRequest đến MC (master).
o MC sẽ sinh ra khóa mới và gửi nó thông qua trường
encrytionUpdate đến tất cả các thành viên trong hội nghị ngoại trừ
transmitter.
o Sau khi gửi khóa mới cho tất cả các thành viên khác, MC sẽ gửi
encryptionUpdate đến cho transmitter. Transmitter sau đó sẽ bắt
đầu sử dụng khóa mới.
Hình 2.12 Cập nhật khóa
Các kĩ thuật cần thiết khi sử dụng RTP :
Khi sử dụng các thuật toán mã hóa khối đễ mã hóa dữ liệu truyền, có 2 vấn
đề cần quan tâm ( trong tài liệu này chỉ đề cập đến mã hóa khối kiểu CBC ).
Initialization vector (Giá trị khởi tạo). Padding (Gán thêm dữ liệu).
47
Hình 2.13 Mã hóa CBC
Hình 2.14 Giải mã CBC
Initialization vector :
Initialization vector (IV) được yêu cầu khi sử dụng chế độ mã hóa khối
CBC đễ mã hóa thông tin trong RTP. Kích thước của IV bằng kích thước của 1
khối dữ liệu được đưa vào mã hóa ứng với mỗi thuật toán. Cụ thể, kích thước IV
đối với DES và 3- DES là 64-bit trong khi đối với AES là 128-bit.
Một IV sẽ được tạo thành bởi B byte (B là độ dài khối ) với cấu trúc :
Sequence kết hợp với timestamp. Nó sẽ được biểu diễn như sau : SSTTTT, với SS
là 2 byte chứa Sequence còn TTTT là 4 byte chứa timestamp và cứ tiếp tục cho
đến khi đủ B bytes. Ví dụ, đối với 64 và 128-bit IV sẽ tương ứng với SSTTTTSS
và SSTTTTSSTTTTSSTT.
Padding :
Khi mà dữ liệu sẽ được đưa vào gói RTP không đủ độ dài khối (multiple of
block) để đưa vào mã hóa thì một số lượng byte nhất định sẽ được thêm vào cho
phù hợp. Giá trị của byte cuối cùng sẽ chỉ ra số lượng byte được thêm vào (gồm
cả chính nó) và bit P trong phần đầu của RTP sẽ được thiết lập. Giá trị của byte
thêm vào được quyết định bởi thuật toán mã hóa (Đối với AES là 0).
48
Ngoài ra, khi nhận được gói RTP mà phần thông tin đã được mã hóa, bit
P trong phần đầu RTP không được thiết lập nhưng dữ liệu trong RTP không đủ
độ dài khối (multiple of block), khi đó chế độ Ciphertext Stealing đã được áp
dụng.
Hình 2.15 Kĩ thuật Ciphertext Stealing
Chống Spam trên kênh truyền thông :
Người nhận dữ liệu RTP trên kênh truyền thông luôn muốn chống lại các
kiểu tấn công từ chối dịch vụ (DoS) hay tấn công flooding trên các cổng RTP/UDP.
Đối với người nhận có khả năng anti-spam có thể nhanh chóng quyết định nhận ra
gói RTP từ 1 nguồn gửi trái phép và loại bỏ nó.
Khả năng anti-spamming khi được thiết lập sẽ được sử dụng cho
trường hợp :
o Cho luồng dữ liệu thông thường không được mã hóa.
o Kết hợp với luồng truyền thông đã được mã hóa .
Cả 2 tùy chọn này cung cấp xác thực gói RTP thông qua mã thông điệp xác thực
(MAC- Message authentication code). MAC được tính toán dựa trên việc sử dụng
thuật toán mã hóa (DES -MAC) hay hàm mã hóa 1 chiều (SHA).
Thuật toán tính MAC được chỉ ra trong trường OID của antiSpamAlgorithm, nó
cũng chỉ ra kích thước của MAC. VD : 1 khối = 64bit đối với DES MAC.
49
Hình 2.16 Định dạng gói RTP dành cho anti spamming.
Bit P trong RTP header sẽ được gán là 1. Những byte được gán thêm sẽ được
nối vào phần cuối của của phần payload như định dạng trong hình trên.
Trường hợp chỉ sử dụng anti – spamming :
Trường hợp này được áp dụng khi dữ liệu truyền thông không được mã hóa
và trường gán thêm dữ liệu (padding) bị bỏ trống. Byte cuối cùng của RTP
padding sẽ chỉ ra bao nhiêu byte sẽ được bỏ qua trong gói RTP. Còn những
padding khác sẽ chỉ ra MAC. MAC được tính toán dựa trên khối đầu tiên của RTP
header bao gồm nhãn thời gian và số thứ tự sử dụng thuật toán MAC(được chỉ ra
trong antiSpamAlgorithm) với khóa là khóa chung(share secret) đã được trao đổi
trước đó.
Đối với việc tính toán MAC, nên sử dụng khóa phiên H.235 mặc dù nó
không được sử dụng cho việc mã hóa payload. Người gửi tính toán MAC theo
mô tả ở phần trên và đưa kết quả vào trong phần RTP padding AUTH. Cả bên gửi
và nhận đều biết được kích thước của MAC thông qua antiSpamAlgorithm.
Đối với việc kiểm tra MAC bên phía nhận, đầu tiên người nhận tính toán
lại MAC đúng theo cách mà bên gửi đã làm sau đó so sánh giá trị tính được với
giá trị MAC trong RTP padding. Nếu hai giá trị này không giống nhau, RTP
header đã bị thay đổi trong quá trình truyền hoặc được gửi bởi 1 đầu cuối không
được xác nhận và không sở hữu khóa. Vì vậy gói RTP này sẽ bị loại bỏ và sự
việc này sẽ được lưu lại; nó chỉ ra khả năng bị tấn công từ chối dịch vụ (DoS).
Nếu không thì gói RTP này được xác thực và tiếp tục được xử lý, RTP padding
được loại bỏ và payload được đưa vào codec.
Trường hợp dữ liệu được mã hóa :
Trường hợp này được áp dụng khi dữ liệu truyền thông được mã hóa và
phương pháp chống spam được sử dụng. Nếu độ dài của payload không khớp với
độ dài block (dành cho mã hóa ), 1 vài byte sẽ được thêm vào sau phần payload và
trước phần
MAC.
EncrytionAlgorithm xác định thuật toán mã hóa payload trong khi
antiSpamAlgorithm xác định phương pháp chống spam. Vì lý do bảo mật, mã
50
hóa truyền thông và MAC sẽ sử dụng những khóa khác nhau. Khóa dành cho
MAC được tính toán dựa trên thông qua hàm mã hóa 1 chiều SHA.
Sau khi bên nhận thành công trong việc xác nhận gói RTP, payload sẽ được
giải mã và padding sẽ được bỏ đi.
Bảng 2.1 OID anti-spamming
Phục hồi lỗi bảo mật :
Nếu đầu cuối phát hiện lỗ hổng bảo mật của kênh báo hiệu cuộc gọi (H.225.0 ),
kênh điều khiển cuộc gọi (H.245) hay kênh truyền thông, nó nên đóng kết nối
ngay lập tức theo những thủ tục thích hợp.
Nếu 1 đầu cuối phát hiện lỗ hổng bảo mật của 1 trong số các kênh logic, ngay lập
tức nó sẽ yêu cầu 1 khóa mới (encrytionUpdateRequest) hoặc đóng kênh logic đó
lại. Đối với MC(U) nó sẽ đóng kênh logic này lại và tạo khóa mới.
51
2.2.4. Các thủ tục xác thực trong cuộc gọi sử dụng H.235
2.2.4.1. Cơ chế xác thực Baseline security profile
Bảng 2.2 Baseline security profile
Đối với cơ chế xác thực này, người sử dụng sẽ dùng mật khẩu chung hay
khóa bí mật, nó sẽ được sử dụng trong hàm băm để áp dụng băm tất cả các trường
trong bản tin H.225 RAS và báo hiệu nhằm mục đích đảm bảo sự toàn vẹn cho bản
tin.
Đối với tùy chọn bảo mật thoại, lược đồ trên đề xuất sử dụng các thuật toán
AES-128, RC2-compatible , DES hay triple-DES dựa trên sự trao đổi về chế độ và
yêu cầu diễn ra trước đó.
Các cách thức điều khiển truy cập được áp dụng dựa trên thông tin truyền
tải nhận được trong các trường báo hiệu H.235 ( ClearToken, CrytoToken ).
Các thực thể truyền thông liên quan có thể quyết định chế độ xác thực
thông qua thông qua các trường tokenOID và algorithmOID trong các bản tin.
Có 2 dịch vụ được cung cấp trong Baseline security profile :
o Authentication and integriy : Nó kết hợp sự hỗ trợ về toàn vẹn thông
tin với xác thực người sử dụng. Có thể chắc chắn về sự xác thực này
bằng cách áp dụng đúng thủ tục trao đổi khóa chung (share secret).
o Authenticaton-only : Đây là 1 tùy chọn cung cấp sự xác thực cho 1 vài
trường được lựa chọn chứ không phải toàn bộ bản tin. Nó được áp
dụng cho các bản tin báo hiệu đi qua các thiết bị NAT hay tường lửa.
52
Người sử dụng có thể chắc chắn về sự xác thực này bằng cách áp
dụng đúng thủ tục trao đổi share secret.
Thủ tục xác thực :
Bên gửi bản tin xác thực sẽ tính toán như sau :
- Thiết lập giá trị băm có độ dài là 96 bit.
- ASN.1- mã hóa toàn bộ bản tin.
- Xác định và ghi lên trường chứa giá trị băm 96 bit 0 trong bản tin đã
được mã hóa bằng ASN.1.
- Tính giá trị băm dựa trên bản tin được mã hóa bởi ASN.1 sử dụng
HMAC-SHA1- 96.
- Thay thế giá trị trường hash bằng giá trị vừa tính được.
53
Hình 2.17 Quá trình tính toán xác thực ở bên gửi.
Bên nhận bản tin sẽ xử lý như sau :
- ASN.1 – giải mã bản tin.
- Tách giá trị băm nhận được và lưu nó vào biến cục bộ RV.
54
- Tìm và xác định vị trị trí của giá trị RV trong bản tin chưa được giải
mã. Ghi chồng lên giá trị đó 96 bit 0.
- Tính lại giá trị băm đối với bản tin chưa được giải mã đó sử dụng
HMAC- SHA1-96.
- So sánh RV với giá trị băm vừa tính được. Bản tin được xem như là
toàn vẹn nếu 2 giá trị này bằng nhau, khi đó việc xác nhận thành
công và thủ tục được kết thúc.
- Nếu 2 giá trị không bằng nhau thì việc xác thực thất bại và bản tin đã
bị sửa đổi (do lỗi đường truyền hay cố ý) trong quá trình truyền.
55
Hình 2.18 Quá trình xác thực bên nhận
Tóm lại:
Sử dụng cơ chế xác thực này có thể chống lại các nguy cơ tấn công sau :
56
Denial-of-service attacks : Kiểm tra nhanh các giá trị băm có thể tránh được
dạng tấn công này.
Man-in-the-middle attacks : sử dụng authentication and integrity.
Replay attacks : Sử dụng sequence và timestamp.
Spoofing(Giả mạo) : Sử dụng cơ chế xác nhận.
Connection hijacking : sử dụng authentication and integrity.
2.2.4.2. Cơ chế xác thực Signature security profile
Signature security profile được đề xuất như là 1 tùy chọn, thường được áp
dụng trong trường hợp có nhiểu điểm cuối mà việc sử dụng mật khẩu/khóa chung
là không khả thi. Nó cung cấp thêm dịch vụ bảo mật không thể chối bỏ với chữ
ký điện tử và chứng chỉ điện tử. Chữ ký điện tử sử dụng hàm băm SHA1 hoặc
MD5 cho việc xác thực và toàn vẹn bản tin.
Bảng 2.3 Signature security profile
Bên gửi bản tin sẽ tính toán chữ ký điện tử như sau :
- Giá trị của trường chứa chữ ký điện tử sẽ được thiết lập thành 1 giá
trị cố định (có thể là 1024 bit). Bước này nhằm dành ra 1 khoảng
trống cho độ dài tối đa của chữ ký điện tử.
- ASN.1 mã hóa toàn bộ bản tin.
- Xác định đoạn đã được dành ra trong bản tin mã hóa và chồng lên
những bit 0.
- Tính toán chữ ký điện tử trên bản tin được mã hóa ASN.1
- Thay thế các bit 0 bằng chữ ký điện tử.
57
Hình 2.19 Quá trình tính toán giá trị xác thực bên gửi, sử dụng chữ ký điện tử
58
Bên nhận sẽ xác thực như sau :
- ASN.1 giải mã bản tin.
- Tách chữ ký điện tử nhận được và lưu nó vào trong biến cục bộ SV.
- Tìm và xác định vị trí của giá trị RV trong bản tin mã hóa.
- Ghi đè lên vị trí đó các bit 0.
- Tính toán lại chữ ký điện tử trên bản tin mã hóa dựa và phương thức
chỉ ra bởi algorithmOID.
- So sánh SV với giá trị vừa tính được. Bản tin được coi là không bị
sửa đổi nếu 2 giá trị này bằng nhau, khi đó việc xác thực thành công
và thủ tục dừng lại.
59
Hình 2.20 Quá trình xác thực ở bên nhận.
Tóm lại:
Sử dụng cơ chế xác thực này, đầu cuối không chỉ chống lại được các nguy cơ
tấn công được trình bày trong Baseline security profile mà còn cung cấp khả năng
xác thực người dùng bên kia nhờ các thông tin chỉ ra trong chứng chỉ điện tử.
60
CHƯƠNG 3 THỰC NGHIỆM
3.1 Giới thiệu phần mềm Xcall
3.1.1 Tổng quan hệ thống
Hình 3.1 Tổng quan hệ thống
XCall Application: Là một ứng dụng H.323 client đơn giản được xây dựng
dựa trên bộ thư viện mã nguồn mở Open H.323, cho phép thực hiện các cuộc
gọi bảo mật giữa 2 điểm đầu cuối.
Open H.323: bộ thư viện mã nguồn mở được viết bằng ngôn ngữ lập trình
C++, cung cấp các giao diện cần thiết cho việc thiết lập một hệ thống VOIP
sử dụng giao thức H.323 làm giao thức báo hiệu.
Codecs: bộ mã hóa và giải mã tín hiệu audio. Tín hiệu audio trước khi truyền
đi phải được mã hóa, bên nhận sau khi nhận được tín hiệu phải tiến hành giải
mã trước khi phát ra loa.
RTP: thư viện được tích hợp sẵn trong bộ thư viện mã nguồn mở
OpenH.323, làm nhiệm vụ vận chuyển tín hiệu audio giữa các điểm đầu cuối.
Các chức năng chính của XCall:
- Gọi điểm – điểm giữa 2 client
- Bảo mật cuộc gọi sử dụng giao thức H.235
3.1.2 Thiết kế chương trình
RecorderPlayer
XCall
PSoundChannel
PSoundChannelOpenH.323
H323Endpoint
Codecs
H323Codec
RTP
H323Channel
Hình 3.2 Tương tác giữa các module
61
Chương trình bao gồm 6 module chính tương tác với nhau:
- XCall: đây là module ứng dụng bao gồm giao diện của phần mềm và xử lý
nghiệp vụ của phần mềm, XCall giao tiếp với OpenH.323 thông qua đối
tượng H323Endpoint.
- OpenH.323: đây là module lõi của hệ thống thực hiện các chức năng như:
Quản lý các cuộc gọi H.323, trao đổi các khóa bảo mật sử dụng giao thức
H.235, thu, phát, mã hóa và giải mã tín hiệu âm thanh. Module này bao gồm
các module con như: Module thu tín hiệu âm thanh (Recorder), module phát
tín hiệu âm thanh (Player), module mã hóa giải mã (Codecs) và module thực
hiện chức năng vận chuyển tín hiệu giữa các đầu cuối (RTP).
- Recorder: Giao tiếp với thiết bị microphone để thu tín hiệu âm thanh và
chuyển cho khối mã hóa.
- Codecs: Thực hiện chức năng mã hóa tín hiệu âm thanh trước khi truyền đi
và giải mã sau khi nhận được.
- Player: Phát âm thanh ra loa.
3.1.3 Class diagram
Hình 3.3 Class Diagram
62
Hình 3.4 Biểu đồ sequence huỷ cuộc gọi
3.1.4 Giao diện chương trình
Hình 3.5 Giao diện chương trình Xcall
63
3.2 Giới thiệu chương trình Wireshark
Wireshark là một chương trình bắt gói tin trên mạng. Nó sẽ cố gắng bắt
tất cả các gói tin và hiển thị thông tin chi tiết nhất có thể. Mục đích của việc
sử dụng Wireshark có thể là:
- Quản trị mạng: kiểm tra các lỗi trên mạng
- Bảo mật hệ thống: kiểm tra các lỗi về bảo mật
- Phát triển hệ thống: gỡ rối hoạt động của giao thức
- Các đối tượng khác: học về các giao thức nội tại của mạng
Hình 3.6 Chương trình Wireshark
Wireshark có một số ưu điểm như sau:
- Có thể chạy trên cả hệ thống UNIX và Windows
- Bắt các bản tin trực tuyến trên card mạng
- Hiện gói tin với thông tin về giao thức
- Có thể mở và lưu lại các dữ liệu đã bắt được
- Import and Export các gói tin từ rất nhiều chương trình khác
- Lọc gói tin với nhiều tiêu chí khác nhau
- Tìm kiếm gói tin với nhiều tiêu chí
- Hiển thị gói tin với màu nổi bật dựa trên bộ lọc
- Tạo rất nhiều thống kê
64
3.3 Khảo sát cuộc gọi VoIP thực tế
Cuộc gọi được tiến hành trong thực tế là cuộc gọi trong mạng LAN giữa 2 PC sử
dụng phần mềm Xcall hỗ trợ G711 gọi trực tiếp cho nhau. Phần mềm wireshark
chạy trên máy bị gọi bắt được các bản tin trao đổi giữa 2 máy
3.3.1 Đối với cuộc gọi khi không sử dụng giao thức bảo mật H.235
Hai máy trao đổi các bản tin H.225 mà không kèm theo trường Token chứa khóa
Hình 3.7 Bản tin Setup
Sau khi trao đổi xong các bản tin điều khiển và mở kênh truyền thông, các
gói tin RTP mang thông tin thoại sẽ được truyền đi giữa 2 PC. Wireshark cũng bắt
được các gói tin này và có khả năng giải nén cũng như nghe lại. Như vậy, khi
không sử dụng H.235, thông tin truyền đi không được mã hóa và có thể bị nghe lén
65
Hình 3.8 Giải nén gói tin RTP
3.3.2 Trường hợp sử dụng H.235
1. Máy gọi gửi cho máy nhận bản tin Setup có thông số DH trong trường
token.
Hình 3.9 Bản tin Setup H.235
66
2. Máy bị gọi nhận được bản tin Setup sẽ chọn thông số DH phù hợp nhất và gửi
lại nó cho bên gọi.
Hình 3.10 Bản tin Connect H.235
3.Hai bên sau đó sẽ trao đổi các bản tin H.245 về các thông số như audio, video
CODEC, master/slave. Sau đó, điểm cuối là master sẽ gửi đi bản tin mở kênh có
kèm theo khóa phiên ( đã được mã hóa bởi khóa chung DH) trong trường
encrytionSync.
Hình 3.11 Bản OpenLogicalChannel H.235
4. Sau khi mở kênh thoại, các gói tin sau đó sẽ được mã hóa bằng khóa và thuật
toán trao đổi trước đó.
Khi này Wireshark cũng bắt được các bản tin trao đổi giữa 2 PC. Tuy nhiên khi
giải nén các gói tin RTP chỉ nhận được các tín hiệu vô nghĩa.
67
Hình 3.12 Giải nén gói tin RTP H.235
68
KẾT LUẬN
Những kết quả luận văn đã đạt được
Luận văn đã tìm hiểu tổng quan về VoIP. Kiến trúc, cấu trúc kết nối, các ưu
nhược điểm của hệ thống VoIP. Tìm hiểu một số nguy cơ tấn công vào mạng VoIP,
các công nghệ và thuật toán bảo mật sử dụng trong mạng VoIP.
Tìm hiểu giao thức báo hiệu H.323, các bước thiết lập cuộc gọi cơ bản sử
dụng giao thức báo hiệu H.323. Đặc biệt nghiên cứu kỹ giao thức bảo mật H.235 sử
dụng giao thức báo hiệu H.323 cho hệ thống VoIP.
Xây dựng phần mềm VoIP Xcall dựa trên mã nguồn mở OpenH323. Phần
mềm Xcall có hỗ trợ giao thức bảo mật H.235 sử dụng giao thức báo hiệu H.323.
Phương hướng nghiên cứu tiếp theo
Nghiên cứu cải tiến phần mềm Xcall để có chất lượng cuộc thoại tốt hơn. Có
thể cài đặt trong môi trường Internet, hội nghị đa điểm...
Nghiên cứu về giao thức báo hiệu khác trong VoIP như SIP... cũng như các
hỗ trợ bảo mật áp dụng cho các giao thức báo hiệu này.
Tuy đã cố gắng hết sức trong quá trình nghiên cứu và thực hiện đề tài nhưng
do thời gian và kiến thức hạn chế, luận văn của tôi không tránh khỏi những sai xót.
Một lần nữa cho phép tôi xin gửi lời cảm ơn chân thành nhất tới PGS.TS Nguyễn
Văn Tam, thầy cô giáo khoa Công nghệ thông tin trường Đại học Công nghệ - Đại
học Quốc gia Hà Nội, bạn bè đồng nghiệp đã tận tình giúp đỡ và động viên tôi để
tôi có thể hoàn thành luận văn này.
Các file đính kèm theo tài liệu này:
- LUẬN VĂN-GIAO THỨC BẢO MẬT H.235 SỬ DỤNG TRONG HỆ THỐNG VOIP.pdf