Chương 4
XỬ LÝ SỐ LIỆU
TS. Nguyễn Hồng Sơn Bộ môn Mạng máy tính & Truyền số liệu Học viện CN BC VT
Mục đích
(cid:1) Nhằm cải thiện chất lượng truyền/nhận
(cid:1) Truyền nhanh (cid:1) Truyền chính xác (cid:1) Truyền an toàn
2
Các chủ đề chính
(cid:1) Nén số liệu (cid:1) Kiểm soát lỗi (cid:1) Bảo mật
3
NÉN SỐ LIỆU
Có 3 hướng:
(cid:1) Đơn giản mã biểu diễn thông tin (cid:1) Bỏ bớt mẫu giống nhau (cid:1) Bỏ bớt mẫu dựa vào quan hệ giữa các mẫu
4
Phương pháp nén Huffman
(cid:1) Là phương pháp đổi mã (cid:1) Tạo mã mới dựa vào xác suất xuất hiện các
ký tự trong văn bản
(cid:1) Ký tự xuất hiện nhiều có mã ngắn hơn ký tự
xuất hiện ít
(cid:1) Mã lấy ra từ cây Huffman (cid:1) Xây dựng cây Huffman
5
Cây Huffman
(cid:1) Là cây nhị phân (cid:1) Mỗi nút có giá trị xác suất là tổng xác suất của 2 nhánh
thành phần.
(cid:1) Phân bố giá trị xác suất phải tăng dần từ lá đến gốc theo
chiều từ trái sang phải và từ dưới lên.
(cid:1) Mã hóa cây: nhánh trái là bit 0 và nhánh phải là bit 1 (cid:1) Các lá chứa một ký tự ứng với xác suất xuất hiện ký tự
đó trong văn bản.
(cid:1) Mã của ký tự : tập hợp các bit nhánh từ gốc đến lá chứa
6
nó.
Ví dụ 1 AAAABBCD
RN
0
1
Văn bản chứa AAAABBCD -Xác suất A: 0,5 -Xác suất B: 0,25 -Xác suất C: 0,125 -Xác suất D: 0,125
0,5
A-0,5
0
1
0,25
B-0,25
1
0
C-0,125
D-0,125
A B C D
1 01 001 000
7
Ví dụ 2
(cid:1) Pa = 0.3 (cid:1) Pb = 0.25 (cid:1) Pc = 0.2 (cid:1) Pd = 0.15 (cid:1) Pe = 0.1
8
Hạn chế của Huffman tĩnh
(cid:1) Máy phát phải xây dựng từ mã trước, truyền
bảng mã mới cho máy thu, sau đó mới truyền văn bản.
(cid:1) Mỗi văn bản ứng với một bảng mã và phải
xây dựng riêng.
9
Huffman động
(cid:1) Khắc phục các hạn chế của Huffman tĩnh (cid:1) Không cần xây dựng bảng mã trước, truyền đến đâu nén đến đó, lấy thống kê ngay trước đó để xây dựng mã và dùng để truyền ký tự hiện hành.
(cid:1) Cả máy phát và máy thu đều tiến hành đồng thời cùng giải thuật xây dựng cây và mã hiện hành.
10
Thủ tục Huffman động
(cid:1) Bắt đầu với cây rỗng (cid:1) Khi truyền ký tự thứ nhất, dùng mã gốc để truyền, cập nhật cây với văn bản có 1 ký tự, tạo bảng mã theo Huffman.
(cid:1) Khi truyền ký tự kế tiếp, nếu ký tự trùng với ký tự đã mã hóa trong cây thì truyền mã tương ứng. Nếu ký tự là mới thì truyền mã gốc. Trong cả hai trường hợp đều phải cập nhật cây với sự xuất hiện của ký tự mới này và tạo bảng mã mới
11
Ví dụ
(cid:1) Truyền chuỗi ký tự: abadbccab (cid:1) Lưu ý thủ tục cập nhật cây và tạo mã mới: (cid:1) Lấy số lần xuất hiện ký tự thay cho xác suất (cid:1) Giá trị tăng dần theo chiều từ trái qua phải và từ dưới
lên
12
KIỂM SOÁT LỖI (Error Control)
(cid:1) Gồm có hai quá trình phần
(cid:1) Phát hiện lỗi (error detection) (cid:1) Sửa lỗi (error correction)
(cid:1) Các phương pháp kiểm soát lỗi sẽ khác nhau về thủ tục phát hiện và cơ chế sửa lỗi
13
Hai phương thức chính
(cid:1) Forward Error Control (cid:1) Máy thu tự sửa lỗi
(cid:1) Backward Error Control (cid:1) Máy thu không tự sửa lỗi
14
Các phương pháp phát hiện lỗi phổ biến
(cid:1) Parity bit (cid:1) Block Sum Check (cid:1) Cyclic Redundancy Check
15
Parity bit
(cid:1) Parity bit là bit được bổ sung vào data sao cho tổng số bit 1 trong tập hợp bit là số chẵn (even) hay lẻ (odd).
(cid:1) Tính chẵn hay lẻ của bit 1 làm cơ sở để phát
hiện lỗi.
(cid:1) Parity bit trong hệ chẵn bit 1 được tạo ra thông qua phép xor tất cả các bit trong phần data.
16
Ví dụ parity bit
Even parity bit
Odd parity bit
Data (số bit 1)
0000000 (0)
0000000 0
0000000 1
1010001 (3)
1101001 (4)
1010001 1 1101001 0
1010001 0 1101001 1
Khi máy thu nhận tập bit (từ mã), tính lại tổng số bit 1, nếu có vi phạm tính chẵn (hay lẻ) thì tập bit bị lỗi.
17
Block Sum Check
(cid:1) Hạn chế của phương pháp parity bit: nếu số bit bị lỗi là số chẵn thì sai lại thành đúng. (cid:1) Phương pháp BSC tiến hành kiểm tra theo phương pháp parity bit theo cả chiều ngang và chiều dọc.
(cid:1) Ví dụ
18
CRC
(cid:1) Nhằm phát hiện một khối lỗi, dựa vào mã đa
thức (cid:1) Cơ sở:
n
×
=
+
)x(Q
x)x(M )x(G
)x(r )x(G
n
×
+
x)x(M
)x(r
=
⇒
)x(Q
)x(G
19
Áp dụng
(cid:1) Máy phát
(cid:1) M(x) biểu diễn data (cid:1) Xây dựng từ mã: Chọn G(x) tính r(x) (cid:1) Từ mã được biểu diễn qua: T(x)=M(x).xn + r(x)
(cid:1) Máy thu nhận từ mã T(x)
(cid:1) Máy thu cũng được cung cấp G(x) (cid:1) Thực hiện phép chia T(x)/G(x)
(cid:1) Nếu phép chia không dư --> không có lỗi (cid:1) Nếu phép chia có dư --> có lỗi
20
Ví dụ về CRC
(cid:1) Data : 11100110 (cid:1) G(x) = x4+x3+1 (cid:1) Tính mã phát hiện lỗi CRC
21
Thực hiện CRC
(cid:1) Bằng phần mềm: hàm CRC (cid:1) Bằng phần cứng
tín hiệu điều khiển chuyển từ 1->0 sau mỗi N xung TxC
g1
g2
gn-1
x0
x1
xn-1
TxC
lsb
msb
Thanh ghi N bit
22
TxD
Áp dụng vào ví dụ
(cid:1) Vẽ mạch và trình bày hoạt động
G(x) = x4+x3+1
tín hiệu điều khiển chuyển từ 1->0 sau mỗi 8 xung TxC
x0
x1
x2
x3
TxC
lsb
msb
Thanh ghi 8 bit
23
Bảng mô tả hoạt động cho ví dụ
Thanh ghi truyền
Xung TxC
msb
lsb
FCS x2
x1
x3
x0
0
0
0
0
0
0
1
1 0
2
1 1 0
3
0 1 1 0
4
0 0 1 1 0
5
1 0 0 1 1 0
6
1 1 0 0 1 1 0
24
7
1 1 1 0 0 1 1 0
0
1
1
0
Phát hiện và sửa sai theo Hamming (Một phương pháp FEC)
c1
c0
b0
b2
b3
b1
Ý tưởng: Tổng số bit 1 trong một vòng tròn là số chẵn --> tính parity bit như sau: ⊕⊕⊕⊕ b2 c0=b0 ⊕⊕⊕⊕ b3 c1=b0 ⊕⊕⊕⊕ b3 c2=b1
⊕⊕⊕⊕ b1 ⊕⊕⊕⊕ b2 ⊕⊕⊕⊕ b2
c2
Nếu có 1 bit bị sai --> vi phạm tính chẵn trong một vòng tròn. Vị trí bit sai được xác định : bit chung của các vòng tròn bị sai là bit sai. Sửa: đảo bit
25
Phát hiện và sửa sai 1 bit theo Hamming
M bit data
Nhận M bit data
K bit tính lại
f
f
so sánh
Vector hội chứng K bit
K bit kiểm tra
Nhận K bit kiểm tra
Sơ đồ nguyên lý
26
Phát hiện và sửa sai 1 bit theo Hamming (tt)
(cid:1) Kiểm tra:
(cid:1) Nếu K bit vector là 0 thì từ mã nhận được không có lỗi. (cid:1) Nếu K bit vector khác 0 thì từ mã có lỗi và giá trị thập phân của K bit này chỉ ra số thứ tự của bit sai trong từ mã.
(cid:1) Để có được điều này Hamming qui định: (cid:1) Số bit kiểm tra K= Kmin thỏa 2K-1 ≥ M+K (cid:1) Trong từ mã, các bit kiểm tra Ci nằm tại vị trí có thứ tự
i = 2i với i = 0 ÷ (K-1)
27
Số tt Từ mã
Vòng tròn 1 Vòng tròn 2 Vòng tròn 3 Vòng tròn 4
1 1 0 0 12 M8
1 0 1 1 11 M7
Với M=8
(cid:1) Data 8 bit => K= 4 bit kiểm tra
1 0 1 0 10 M6
C0, C1,C2,C3
1 0 0 1 9 M5
1 0 0 0 8 C3
0 1 1 1 7 M4
0 1 1 0 6 M3
(cid:1) Vậy từ mã có 12 bit (cid:1) Xác định f (để tính các Ci) (cid:1) Bảng bên phải mô tả giá trị của vector hội chứng ứng với vị trí bit trong từ mã và sự hình thành vòng tròn kiểm tra
0 1 0 1 5 M2
0 1 0 0 4 C2
0 0 1 1 3 M1
(cid:1) Trong mỗi cột vòng tròn số 1 chỉ ra bit tương ứng trong từ mã (ngoài cùng bên phải) có mặt trong vòng tròn đó
0 0 1 0 2 C1
=> Ci = xor tất cả các bit có mặt
28
trong vòng tròn tương ứng
0 0 0 1 1 C0
0 0 0 0 0 Không sai
Ví dụ
⊕⊕⊕⊕ M7 =1 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 1 ⊕⊕⊕⊕ 1 = 1 ⊕⊕⊕⊕ M7 =1 ⊕⊕⊕⊕ 1 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 1 = 1
(cid:1) Data: 11010101 (M8=1, M7=1, M6=0, M5=1,M4=0, M3=1, M2=0, M1=1) ⊕⊕⊕⊕ M4 (cid:1) Tính ⊕⊕⊕⊕ M4 ⊕⊕⊕⊕ M4 ⊕⊕⊕⊕ M7
⊕⊕⊕⊕ M5 ⊕⊕⊕⊕ M6 ⊕⊕⊕⊕ M8 =0 ⊕⊕⊕⊕ 1 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 1 = 0 ⊕⊕⊕⊕ M8 =1 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 1 ⊕⊕⊕⊕ 1 = 1
C0 = M1 C1 = M1 C2 = M2 C3 = M5
⊕⊕⊕⊕ M2 ⊕⊕⊕⊕ M3 ⊕⊕⊕⊕ M3 ⊕⊕⊕⊕ M6
(cid:1) Từ mã truyền
12
11
10
9
8
7
6
5
4
3
2
1
Vị trí
M8 1
M7 1
M6 0
M5 1
C3 1
M4 0
M3 1
M2 0
C2 0
M1 1
C1 1
C0 1
(cid:1) Giả sử nhận được
12
11
10
9
8
7
6
5
4
3
2
1
Vị trí
29
M8 1
M7 1
M6 0
M5 0
C3 1
M4 0
M3 1
M2 0
C2 0
M1 1
C1 1
C0 1
Ví dụ (tt)
⊕⊕⊕⊕ M7 =1 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 1 = 0 ⊕⊕⊕⊕ M7 =1 ⊕⊕⊕⊕ 1 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 1 = 1
⊕⊕⊕⊕ M5 ⊕⊕⊕⊕ M6 ⊕⊕⊕⊕ M8 =0 ⊕⊕⊕⊕ 1 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 1 = 0 ⊕⊕⊕⊕ M8 =0 ⊕⊕⊕⊕ 0 ⊕⊕⊕⊕ 1 ⊕⊕⊕⊕ 1 = 0
⊕⊕⊕⊕ M2 ⊕⊕⊕⊕ M3 ⊕⊕⊕⊕ M3 ⊕⊕⊕⊕ M6
(cid:1) Tính lại các Ci theo từ mã nhận được ⊕⊕⊕⊕ M4 (cid:1) C0 = M1 ⊕⊕⊕⊕ M4 C1 = M1 ⊕⊕⊕⊕ M4 C2 = M2 ⊕⊕⊕⊕ M7 C3 = M5 (cid:1) So sánh
Vector hội chứng
C3 1 0 1
C2 0 0 0
C1 1 1 0
C0 1 0 1
= 9D
Vậy bit có vị trí thứ 9 trong từ mã nhận được bị sai. Sửa bằng cách đảo bit này từ 0 --> 1 30
MẬT MÃ SỐ LIỆU
(cid:1) Mật mã cổ điển (cid:1) Mật mã khóa công khai
31
Mật mã cổ điển
(cid:1) Hệ thống mật mã (P,C,K,E,D) (cid:1) P là tập hữu hạn các bản gốc (cid:1) C là tập hữu hạn các bản mã (cid:1) K là tập khóa (cid:1) E là tập luật mật mã eK: P-->C (cid:1) D là tập luật giải mã dK: C-->P (cid:1) dK(eK(x)) = x , Với mọi x∈P
32
(cid:1) Chỉ có khóa mật (cid:1) Mã thay thế, mã affine, mã Vigenére...
Mật mã khóa công khai
(cid:1) Ứng dụng tính chất đặc biệt của các hàm một chiều, thường dùng logarit rời rạc gọi là hệ mật Elgamal
(cid:1) Máy A chọn
(cid:1) i) Một số rất lớn pA (giả sử từ 200 đến 300 chữ số), (cid:1) ii) Một phần tử αA modulo pA, (cid:1) iii) Một số nguyên (ngẫu nhiên) dA với 2 ≤ dA ≤ pA –2
(cid:1) Máy A tính (cid:1) iv) αA
(cid:1) Public key của máy A là (pA, αA, βA). Private key là dA
33
dA ≡ βA (mod pA)
Mật mã khóa công khai (tt)
(cid:1) Máy B mật mã bản tin M để gửi cho máy A: (cid:1) i) Chọn một số nguyên ngẫu nhiên k (giữ bí mật) k (mod pA) và t ≡ βA (cid:1) ii) Tính r ≡ αA (cid:1) Máy B gửi bản mật (r, t) đến máy A.
(cid:1) Khi máy A nhận bản mật (r, t), nó sẽ dùng khóa riêng
Ad
tr −
k )−dA (mod pA)
k M (αA dA)k M (αA
k )−dA (mod pA)
(private key) dA để giải mã bằng cách tính tr−dA ≡ βA ≡ (αA ≡ M (mod pA)
34
k M (mod pA), sau đó bỏ k.

