CHƯƠNG 1 TỔNG QUAN VỀ MÃ MẠNG
2.2. MÃ MẠNG TRÊN VÀNH ĐA THỨC, TRƯỜNG ĐA THỨC
2.2.4. Mã mạng trên trường đa thức
Xét một đa thức nguyên thủy 𝑓(𝑥) có bậc 𝑚 với các hệ số trong GF(2), từ đó Z2[𝑥]/𝑓(𝑥) là một trường đa thức [62].
2.2.4.1. Mã mạng sử dụng phép nhân trên trường đa thức
Q trình mã mạng có thể được mơ tả như Hình 2.8 bên dưới:
Hình 2.8. Mã mạng trên trường đa thức
- Pha thứ nhất: Truyền thơng tin
Trong đó, 𝑎(𝑥), 𝑏(𝑥) ∈ Z2[𝑥]/𝑓(𝑥); 𝑓(𝑥) là một đa thức nguyên thủy; deg𝑓(𝑥) = 𝑚; deg 𝑎(𝑥) < 𝑚; deg 𝑏(𝑥) < 𝑚.
- Pha thứ hai: Tại nút C thực hiện phép tính:
𝑐(𝑥) = 𝑎(𝑥). 𝑏(𝑥)𝑚𝑜𝑑 𝑓(𝑥) (2.24)
rồi sau đó phát quảng bá 𝑐(𝑥) tới cả nút A và B.
- Pha thứ ba: Tại nút A và B khôi phục được thông tin 𝑎(𝑥), 𝑏(𝑥) sau khi giải mã 𝑐(𝑥):
Tại nút A: 𝑏(𝑥) = 𝑐(𝑥). 𝑎−1(𝑥)𝑚𝑜𝑑 𝑓(𝑥) Tại nút B: 𝑎(𝑥) = 𝑐(𝑥). 𝑏−1(𝑥)𝑚𝑜𝑑 𝑓(𝑥)
Chú ý: 𝑎−1(𝑥) và 𝑏−1(𝑥) là đa thức nghịch đảo tương ứng của 𝑎(𝑥) và 𝑏(𝑥).
Ví dụ: Xét 𝑓(𝑥) = 1 + 𝑥2 + 𝑥5 ⟷ (025) với deg𝑓(𝑥) = 𝑚 = 5.
- Pha thứ nhất: Giả sử 𝑎(𝑥) = (023) và 𝑏(𝑥) = (024). Nút C nhận được cả 𝑎(𝑥) và 𝑏(𝑥). Sau đó chuyển sang pha 2.
- Pha thứ hai: Tại nút C thực hiện phép tính:
𝑐(𝑥) = 𝑎(𝑥). 𝑏(𝑥)𝑚𝑜𝑑𝑓(𝑥) = (023)(024) = (14) rồi sau đó phát quảng bả 𝑐(𝑥) tới cả nút A và B.
- Pha thứ ba:
Tại nút A khôi phục thông tin 𝑏(𝑥) từ 𝑐(𝑥):
𝑏(𝑥) = 𝑐(𝑥). 𝑎−1(𝑥)𝑚𝑜𝑑𝑓(𝑥) = (14)(0123) = (024) Tại nút B khôi phục thông tin 𝑎(𝑥) từ 𝑐(𝑥):
𝑎(𝑥) = 𝑐(𝑥). 𝑏−1(𝑥)𝑚𝑜𝑑𝑓(𝑥) = (014)(134) = (023)
Trong đó, 𝑎−1(𝑥) = (0123) và 𝑏−1(𝑥) = (134) là đa thức nghịch đảo tương ứng của 𝑎(𝑥) và 𝑏(𝑥).
2.2.4.2. Mã mạng Affine trên trường đa thức
Trong mơ hình mã mạng này, NCS sử dụng cả phép cộng và phép nhân đa thức trên trường đa thức để thực hiện mã mạng.
Hình 2.9. Mã mạng Affine trên trường đa thức
- Pha thứ nhất: Truyền thông tin
Nút C nhận thông tin là các đa thức 𝑎(𝑥) và 𝑏(𝑥) từ nút A và B.
Trong đó, 𝑎(𝑥), 𝑏(𝑥) ∈ Z2[𝑥]/𝑓(𝑥); 𝑓(𝑥) là một đa thức nguyên thủy; deg𝑓(𝑥) = 𝑚; deg 𝑎(𝑥) < 𝑚; deg 𝑏(𝑥) < 𝑚.
- Pha thứ hai: Tại nút C thực hiện phép tính:
𝑐(𝑥) = 𝑎(𝑥). 𝑏(𝑥) + [𝑎(𝑥) + 𝑏(𝑥)] (2.25) rồi sau đó C phát quảng bá 𝑐(𝑥) tới cả nút A và B.
- Pha thứ ba: Tại nút A và B khôi phục được thông tin 𝑎(𝑥), 𝑏(𝑥) sau khi giải mã 𝑐(𝑥). Tại nút A: 𝑐(𝑥) − 𝑎(𝑥) = 𝑎(𝑥). 𝑏(𝑥) + 𝑏(𝑥) = 𝑏(𝑥). [𝑎(𝑥) + 1] 𝑏(𝑥) = c(x)−a(x)𝑎(𝑥)+1 Hoặc: 𝑏(𝑥) = [𝑐(𝑥) − 𝑎(𝑥)]. [𝑎(𝑥) + 1]−1 (2.26) Tại nút B: 𝑐(𝑥) − 𝑏(𝑥) = 𝑎(𝑥). 𝑏(𝑥) + 𝑎(𝑥) = 𝑎(𝑥). [𝑏(𝑥) + 1] 𝑎(𝑥) = c(x)−b(x) 𝑏(𝑥)+1 Hoặc:
𝑎(𝑥) = [𝑐(𝑥) − 𝑏(𝑥)]. [𝑏(𝑥) + 1]−1 (2.27)
Ví dụ: Xét trường đa thức Z2[𝑥]/𝑓(𝑥) với 𝑓(𝑥) = 1 + 𝑥3+ 𝑥5 ⟷ (035) là một đa thức nguyên thủy và deg𝑓(𝑥) = 𝑚 = 5.
- Pha thứ nhất:
Nút A chọn 𝑎(𝑥) = 1 + 𝑥 + 𝑥2 ∈ Z2[𝑥]/𝑓(𝑥), 𝒂(𝒙) = (𝟎𝟏𝟐) với deg 𝑎(𝑥) = 2 < 𝑚; Sau đó A tính trước:
[𝑎(𝑥) + 1]−1 = [1 + 𝑥 + 𝑥2+ 1]−1 = [𝑥 + 𝑥2]−1 = 𝑥2+ 𝑥3 ⟷ (23) Nút B chọn 𝑏(𝑥) = 𝑥2+ 𝑥4 ∈ Z2[𝑥]/𝑓(𝑥), 𝒃(𝒙) = (𝟐𝟒)
với deg 𝑏(𝑥) = 4 < 𝑚; Sau đó B thực hiện phép tính:
[𝑏(𝑥) + 1]−1 = [𝑥2+ 𝑥4+ 1]−1 = 1 + 𝑥3+ 𝑥4 ⟷ (034)
- Pha thứ hai: Nút C nhận 𝑎(𝑥) và 𝑏(𝑥) từ nút A và B, rồi C thực hiện phép tính: 𝑐(𝑥) = 𝑎(𝑥)𝑏(𝑥) + [𝑎(𝑥) + 𝑏(𝑥)] = (012)(24) + [(012) + (24)] = (2)
Sau khi tính được 𝑐(𝑥), nút C phát 𝑐(𝑥) = 𝑥2 ⟷ (2) cho cả nút A và B. - Pha thứ ba: Khôi phục thông tin
Tại nút A: 𝑏(𝑥) = [𝑐(𝑥) − 𝑎(𝑥)][𝑎(𝑥) + 1]−1 = [(2) − (012)](23) = (01)(23) = (𝟐𝟒) Tại nút B sẽ thực hiện phép tính: 𝑎(𝑥) = [𝑐(𝑥) − 𝑏(𝑥)][𝑏(𝑥) + 1]−1 = [(2) − (24)](034) = (4)(034) = (𝟎𝟏𝟐)