có n phần tử).
2 , x3 , …, xn-1 , 1 }
Ký hiệu là : I = { x, x
Nhóm nhân xyclic đơn vị I bao gồm n phần tử với phần tử sinh là x. Nhóm
nhân này nhóm nhân cấp n.
* Nhóm nhân xyclic với phần tử sinh a(x)
Nhóm nhân xyclic v ới ph ần tử sinh a(x) bao g ồm các ph ần tử là lu ỹ th ừa
của phần tử sinh và có thể viết:
2 , (a(x))3 , …}
A = { a(x), (a(x))
* Cấp số nhân xyclic trên vành đa thức
Xét vành đa thức Z2[x]/ xn+1 với n l ẻ, giả sử a(x) là s ố hạng đầu tiên c ủa
cấp số nhân xyclic và q(x) là công b ội của cấp số nhân. C ấp số nhân xyclic trên
vành đa thức là một tập con có dạng:
2(x), …, a(x).qm-1(x)}
A(a,q) = { a(x), a(x).q(x), a(x).q
27
Trong đó, m là số số hạng của cấp số nhân này, a(x).qm(x) ” a(x) mod (xn+1).
2.1.3. Mã xyclic
a) Định nghĩa
Định nghĩa 2.2
Mã xyclic (n, k) là ideal I = của vành đa thức Z2[x]/xn+1.
Mã xyclic là một bộ mã tuy ến tính có tính ch ất sau: Nếu a(x) là một từ mã
thì dịch vòng của a(x) cũng là một từ mã thuộc bộ mã này.
Ví dụ: Xét các mã xyclic trên vành Z 2[x]/x7+1, ta có 7 ideal t ương ứng với 7 bộ mã
xyclic:
Ta có: x7+1 = (1+x)(1+x+x3)(1+x2+x3)
Bảng 2.1: Các mã xyclic trên vành Z2[x]/x7+1
Đa thức sinh g(x) Mã (n,k) Khoảng cách Hamming d0
1 1 (7,7)
1 + x 2 (7,6)
1 + x + x3 3 (7,4)
1 + x2 + x3 3 (7,4)
1 + x + x2 + x4 4 (7,3)
4 (7,3) 1 + x2 + x3 + x4
7 (7,1) 1 + x + x2 + x3 + x4 + x5 + x6
b) Ma trận sinh của mã xyclic
Vì mã xyclic (n, k) là m ột mã tuy ến tính nên ta có th ể mô tả nó thông qua
ma trận sinh G ch ứa k véc-t ơ hàng độc lập tuy ến tính. Ta có th ể thi ết lập G nh ư
28
sau:
(cid:230) (cid:246) (cid:231) (cid:247) (cid:231) (cid:247) = G (cid:231) (cid:247) (cid:231) (cid:247) - .( ) Ł ł ( )
g x
.( )
xg x
...
1
k
xg x
Ví dụ: Mã xyclic (7,4) có đa thức sinh g(x) = 1 + x + x3, ma trận sinh của mã này có
3
thể mô tả như sau:
4
5
(cid:230) (cid:246) (cid:246) 1 10100 0 (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) = = G (cid:231) (cid:247) (cid:231) (cid:247) 01 1010 0
00 1 101 0 (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) +
+ 00 0110 1 Ł ł Ł ł ++(cid:230)
1
x
+
2
xx
2
xx
34
xx x
+
x
+
3
x
+
6
x
c) Ma trận kiểm tra của mã xyclic
Vì g(x) là ước của xn + 1 nên ta có th ể viết g(x).h(x) = x n + 1. Đa thức h(x)
được gọi là đa thức kiểm tra. Vì g(x).h(x) ” 0 mod xn + 1 nên g(x) và h(x) được gọi
k
j
là các đa thức trực giao.
=
0
j
Ta có h(x) = {0,1}, với j = 2,..,k-1. (cid:229) , với h0 = hk = 1, hj ˛ h x
j
Ma trận kiểm tra của mã xyclic sinh bởi g(x) là:
*
( )
h x
*
.( )
xh x
...
*
.( )
1
r
xh x
(cid:230) (cid:246) (cid:231) (cid:247) (cid:231) (cid:247) = H (cid:231) (cid:247) (cid:231) (cid:247) - (cid:231) (cid:247) Ł ł
Trong đó, r = n – k, và h*(x) là đa thức đối ngẫu của h(x): h*(x) = xdeg h(x).h(x-1).
Ví dụ: Ma trận mã kiểm tra cho mã xyclic (7,4) với đa thức sinh g(x) = 1+x+x3 là:
7+1)/(1+x+x3) = (1+x)(1+x2+x3) = x4+x2+x+1
Ta có: h(x) = (x
2+x3+x4
h*(x) = 1+x
29
Ma trận kiểm tra:
4
23
34
5
6
24
xxx
5
x
(cid:230) (cid:246) + + (cid:230) (cid:246) x (cid:231) (cid:247) (cid:231) (cid:247) +
11011 10 0
x
x
= =+++ 0101 11 0 Hxxx (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) x
++ + 0010 11 1 Ł ł Ł ł
2.1.4. Mã hoá cho mã xyclic
a) Mô tả từ mã
Mã xyclic (n,k) được gọi là mã xyclic h ệ th ống nếu ta có th ể ch ỉ rõ vị trí
của các dấu thông tin và các dấu kiểm tra trong từ mã.
Thông thường thì các dấu thông tin được sắp xếp ở k vị trí bậc cao, còn l ại
là dấu kiểm tra.
... ... fn-1 fn-2 fr fr-1 fr-2 f0
k dấu thông tin r dấu kiểm tra
in k
i
n
==
=
1
)
(
fxfxxaxr x
0
i
- - + Ta có .()( ) (cid:229)
b) Thuật toán mã hoá hệ thống
Thuật toán xây dựng từ mã xyclic như sau:
Đầu vào: Tin r A. ời rạc ai ˛
Đầu ra: Từ mã fi(x) tương ứng với ai.
Bước 1: Mô t ả ai trong tập tin cần mã hoá (g ồm 2k tin) bằng một đa thức ai(x) với
deg ai(x) không vượt quá k – 1.
Bước 2: Nâng bậc của ai(x) bằng cách nhân nó với xn-k.
Bước 3: Chia ai(x).xn-k cho đa thức sinh g(x) để tìm phần dư ri(x).
Bước 4: Xây dựng từ mã xyclic: fi(x) = ai(x).xn-k + ri(x).
30
c) Thiết bị mã hoá
Thiết bị mã hoá có c ốt lõi là thi ết bị chia cho g(x) để lấy dư, th ực chất là
1
r
i
-
=
0
i
otomat nhớ dạng của g(x). Gi ả sử g(x) = . Thiết bị mã hoá cho mã (n,k) v ới (cid:229) g x
i
đa thức sinh g(x) như hình sau:
g2
1,2,..,k V1
g1
gr-1
1
2
r
ai(x).xn-k Vào
+
+
+
+
1,..,n Ra H k+1,..,n V2
Hình 2.1 : Thiết bị mã hoá cho mã xyclic (n,k) có đa thức sinh g(x)
Thiết bị này hoạt động như sau:
- k nhịp đầu (chia và tính ph ần dư): Mạch và V 1 mở, V2 đóng, thiết bị hoạt động
như một bộ chia để tính dư. Kết thúc nhịp thứ k, toàn bộ phần dư nằm trong r ô nhớ
từ 1 đến r. Trong quá trình này, các dấu thông tin ai(x).xn-k được đưa qua mạch hoặc
H.
- r nhịp sau (đưa ra các dấu kiểm tra (phần dư) ra đầu ra). Mạch và V1 đóng, thiết
bị ho ạt động nh ư một thanh ghi d ịch nối ti ếp. Mạch và V 2 mở, các d ấu ki ểm tra
được lần lượt đưa ra t ừ bậc cao t ới bậc th ấp. Kết thúc nh ịp th ứ n, toàn b ộ từ mã
được đưa ra đầu ra.
2.1.5. Giải mã ngưỡng
a) Hai thủ tục giải mã
Mọi phương pháp giải mã đều có thể tiến hành theo một trong 2 thủ tục giải
mã sau:
31
- Thủ tục 1: Dẫn ra bản tin từ dãy dấu nhận được.
y x x’ Kênh Giải mã
e y = x + e
- Thủ tục 2: Dẫn ra véc-tơ sai từ dãy dấu nhận được.
x y x’ Kênh Giải mã + e’
e y = x + e
b) Giải mã theo syndrom
Giả sử v ˛ V là mã xyclic (n,k) có đa thức sinh g(x). Ma trận sinh của V(n,k)
có dạng:
(cid:230) (cid:246) (cid:231) (cid:247) (cid:231) (cid:247) = G (cid:231) (cid:247) (cid:231) (cid:247) - .( ) Ł ł ( )
g x
.( )
xg x
...
1
k
xg x
Gọi h(x) = (x n + 1) / g(x), ta có deg g(x) = r, deg h(x) = k. G ọi h*(x) là đa
thức đối ng ẫu của h(X), h*(x) = x deg h(x) . h(x -1). Khi đó, ma tr ận ki ểm tra c ủa mã
V(n,k) có dạng:
*
( )
h x
*
.( )
xh x
...
*
.( )
1
r
xh x
(cid:230) (cid:246) (cid:231) (cid:247) (cid:231) (cid:247) = H (cid:231) (cid:247) (cid:231) (cid:247) - (cid:231) (cid:247) Ł ł
Ta có G.HT = 0.
Kênh Với v ˛ V bất kì, ta có v.HT = 0. v u = (u0, u1, ..., un-1 )
Xét mô hình truyền tin sau: e
32
u = v + e
Ta có S(u) = u.HT = (v+r).HT = e.HT = S(e). S(e) là một véc-tơ r chiều đặc trưng cho
véc-tơ sai e có n chi ều. Ta gọi S(u) là syndrom c ủa véc-tơ nhận được u. Quá trình
giải mã d ựa trên vi ệc phân tích tr ạng thái c ủa S(u) được gọi là gi ải mã theo
syndrom.
Tập r tổng kiểm tra trong S(u) t ạo nên hệ tổng kiểm tra. Mỗi tổng kiểm tra
trong hệ sẽ trong hệ sẽ chứa một thông tin nh ất định về dấu cần giải mã u i, thông
tin đó có th ể nhiều, ít ho ặc không có gì. Ngoài ra m ỗi tổng kiểm tra này còn ch ứa
thông tin về các dấu mã uj khác.
Để gi ải mã cho u i hi ển nhiên r ằng ta c ần xây d ựng một hệ tổng ki ểm tra
chứa nhiều thông tin nh ất về ui. Trên cơ sở đó ta đưa ra khái ni ệm hệ tổng kiểm tra
trực giao sau:
Định nghĩa: Hệ J tổng kiểm tra được gọi là trực giao với ui nếu:
- Mỗi tổng kiểm tra trong hệ đều chứa ui.
- Dấu mã uj (j„ i) chỉ nằm tối đa trong một tổng kiểm tra.
Nhận xét:
- Hệ tổng kiểm tra tr ực giao ch ứa nhiều thông tin v ề ui và ch ứa ít thông tin v ề các
dấu mã khác.
- Sai ở một dấu mã u j chỉ làm ảnh hưởng tới nhiều nhất là một tổng kiểm tra trong
hệ.
- Sai ở ui sẽ làm thay đổi tất cả các giá trị của các tổng kiểm tra trong hệ.
- Ta có th ể sửa được sai cho d ấu ui dựa trên thông tin v ề giá tr ị của các tổng kiểm
tra bằng phương pháp b ỏ phiếu (gi ải mã ng ưỡng theo đa số). Khi đó khoảng cách
mã Hamming đạt được theo phương pháp này sẽ thỏa mãn điều kiện:
d0 = J + 1.
Hệ tổng kiểm tra được gọi là có kh ả năng trực giao nếu nó là hệ tổng kiểm
33
tra trực giao với một tổ hợp tuyến tính nào đó các dấu mã.
2
m
++ + Xét tổ hợp tuy ến tính các d ấu mã sau: , khi đó hệ a = ...
U
i UU
ii
1
tổng kiểm tra có khả năng trực giao sẽ gồm các tổng kiểm tra thỏa mãn điều kiện:
- α nằm trong tất cả các tổng kiểm tra trong hệ.
α ) chỉ nằm trong nhiều nhất là một tổng kiểm tra trong - Uj (j ≠ ik với Uik ˛
hệ.
Nhận xét:
- Dựa trên h ệ tổng ki ểm tra có kh ả năng tr ực giao ta có th ể gi ải mã được
cho giá trị của α bằng phương pháp ngưỡng.
- Để giải mã cho một dấu mã U ik cụ thể ta phải sử dụng nhiều bước (nhiều
cấp ngưỡng).
2.1.6. Khái niệm mã xyclic cục bộ
Mã xyclic cục bộ là mã hệ thống tuyến tính (n,k), trong đó:
- k dấu thông tin được chọn là k đơn thức có d ạng xi (với i = 0,1,..,k-1) và là
nhóm nhân xyclic cấp k của vành Z2[x]/xn + 1.
- r = n – k dấu kiểm tra được chọn là một tập con không rỗng tuỳ ý nào đó các
lớp kề của nhóm nhân này.
2.1.7. Mối quan hệ giữa mã xyclic và xyclic cục bộ
Theo quan điểm xây dựng mã xyclic thông th ường, mã xyclic là m ột Ideal
của vành đa thức, trong đó mỗi từ mã là một phần tử của Ideal đó trên vành đa thức.
Theo quan điểm xây dựng mã xyclic cục bộ, mỗi dấu mã là một phần tử của
Ideal, toàn bộ từ mã là một bộ phận của vành gồm n phần tử xác định của Ideal.
Như vậy, ta hoàn toàn có th ể dùng lý thuy ết xây dựng các đa thức sinh của
mã xyclic để tạo các trưởng lớp kề cho các mã xyclic cục bộ. Với quan điểm đó, lớp
34
kề được xây dựng theo cách sau đây sẽ tạo nên một mã xyclic:
Mã xyclic cục bộ được xây dựng từ trưởng lớp kề là một đa thức sinh g(x)
thỏa mãn:
- Đa thức sinh là ước của xn+1
- Bậc của đa thức sinh bằng r với r = n – k.
- Sử dụng r d ấu thông tin gi ả khi t ạo lớp kề này, t ức là cho tr ước:
n
012
xxx
- ==== . x =
1... 0
Trên cơ sở phân tích nh ư vậy thì mã xyclic là m ột lớp kề đặc biệt của mã
xyclic cục bộ, hay mã xyclic là một dạng đặc biệt của mã xyclic cục bộ.
2.1.8. Mã xyclic cục bộ xây dựng trên các nhóm nhân xyclic
Trên Z2[x]/(xn + 1), xét nhóm nhân xyclic sau: A = {ai(x)}, i = 1,2,…
Giả sử ord a(x) = l. Mỗi nhóm nhân xyclic s ẽ tạo nên một mã xyclic (l,k,d)
nào đó. Số các nhóm nhân xyclic t ạo nên các mã (l, k, d) có cùng tham s ố là j(l),
trong đó j(l) là hàm Euler, j(l) là số các số nguyên nguyên tố cùng nhau với l.
Bằng cách dịch vòng các ph ần tử trong mỗi nhóm nhân, ta c ũng có th ể tạo
ra các mã xyclic (l, k, d) có cùng tham s ố. Như vậy số các mã xyclic có cùng tham
số có thể tạo ra là: N = l.j(l).
2.2.
Phân hoạch vành đa thức theo nhóm nhân xyclic
2.2.1. Phân hoạch của vành theo các nhóm nhân xyclic
Khi nghiên c ứu các vành đa th ức Z2[x]/ xn+1, chúng ta đã có nh ững phát
triển mới trong phân ho ạch vành đa thức để làm cơ sở xây dựng các mã xyclic c ục
bộ và mã xyclic. Vành đa th ức Z2[x]/ xn+1 có th ể phân ho ạch thành các l ớp kề
tương ứng với các nhóm nhân xyclic nào đó. Các nhóm nhân này được gọi là cá
nhóm nhân sinh của phân hoạch hoặc là lớp kề sinh. Dựa vào các lớp kề này, chúng
ta có thể tạo ra được các mã xyclic cục bộ và các mã xyclic khác nhau.
Phân hoạch của vành là chia vành thành các t ập con không giao nhau, v ới
35
mỗi tập con là m ột cấp số nhân xyclic và h ợp của các t ập con b ằng vành. Phân
hoạch vành thành t ập hợp các c ấp số nhân xyclic khác nhau. Tu ỳ theo cách ch ọn
a(x) mà có các phân hoạch khác nhau.
Phân hoạch vành đa thức được gọi là không suy bi ến nếu phân ho ạch này
bao gồm tất cả các phần tử khác không của vành. Ngược lại, phân hoạch được gọi là
suy biến.
Ví dụ: xét vành R 5; Z2[x]/ (x 5+1) = (1+x)(1+x+x 2+x3+x4). Trong ví d ụ này, chúng
ta sử dụng số mũ của các h ạng tử xu ất hi ện trong đa th ức làm kí hi ệu, ch ẳng hạn
q(x) = 1 + x + x2 được kí hiệu là (012).
Chọn a(x) = x, I = {xi, i = 0,1,2,3,4}. Phân hoạch vành R5 thành các phần tử:
Bảng 2.2: Phân hoạch vành Z2[x]/x5+1 theo nhóm nhân xyclic đơn vị
3 4 0 1 2
23 34 04 01 12
24 03 14 02 13
234 034 014 012 123
023 134 024 013 124
0123 1234 0234 0134 0124
01234
Trong vành này có 31 ph ần tử khác không và được phân hoạch thành 7 lớp
kề: có 6 lớp kề có cấp 5 và 1 lớp kề cấp 1.
Chọn phần tử khác làm phân hoạch: a(x) = 1 + x + x2 ~ (012). A = {(1 + x +
x2)i, i = 0,..,14}. Lúc này có phân hoạch khác:
012
024
3
034
023
1
123
013
4
014
134
2
234
124
0
34
13
0124
12
14
0234
04
24
0123
23
02
0134
01
03
1234
01234
36
Bảng 2.3: Phân hoạch vành với a(x) = 1 + x + x2
Đây là nhóm nhân xyclic cấp 15, có a(x) = 1+ x + x2.
Để phân hoạch vành Rn, trước tiên xác định nhóm nhân xyclic A, số phần tử
nhóm nhân nhiều nhất là max ord a(x) và các đa thức.
Các bước thực hiện:
- Chọn a(x) thuộc vành Rn.
- Xây dựng nhóm nhân xyclic A = {ai(x)}.
- Xây dựng các lớp kề của A. Về thực chất là xây d ựng cấp số nhân xyclic
có công bội a(x), có phần tử sinh b(x) ˛ Rn, b(x) không thuộc A và không thuộc bất
cứ cấp số nhân nào chúng ta thiết lập.
Nhận xét: Với cách lựa chọn nhóm nhân khác nhau có th ể lựa chọn xây dựng các
bộ mã khác nhau. Ví d ụ với mã [15, 5] ta có s ố lượng các bộ mã có th ể thi ết lập
được như sau:
+ Phân ho ạch theo nhóm nhân xyclic đơn vị [15, 5], ta có N 1 = 3!.5 3 = 750 b ộ mã
khác nhau cùng tham số.
+ Phân hoạch theo nhóm nhân xyclic c ực đại (có cấp 15) ta có: N 2 = 8.15 = 120 b ộ
mã khác nhau cùng tham số.
+ Phân hoạch theo nhóm nhân xyclic cấp 3, ta có: N3 = 5!.35 = 120.243 = 29160.
Tổng số N1 + N2 + N3 = 30030 là số phân hoạch khác nhau của vành.
2.2.2. Phân hoạch vành đa thức theo nhóm nhân xyclic đơn vị
Ta ký hiệu vành đa thức Z2[x]/xn+1 có nhóm nhân xyclic đơn vị được biểu
diễn: I = {x0, x1,.., xn-1} với hạt nhân phân hoạch chính là x. Phân hoạch của vành đa
37
thức theo nhóm nhân xyclic đơn vị được chỉ ra trên hình dưới:
I = {x0, x1,.., xn-1}
Các lớp kề trên vành
Hình 2.2. Cấu trúc vành Z2[x] / xn+1
Vấn đề cơ bản là ph ải xây d ựng thuật toán xác định chính xác các l ớp kề
cần có và các phần tử trong các lớp kề. Với cấu trúc trên hình 2.2, vành đa thức bao
gồm nhóm nhân xyclic đơn vị và các lớp kề được tạo từ nhóm nhân xyclic đơn vị I.
Việc xây d ựng phân ho ạch vành là ph ải xác định các l ớp kề của vành, được th ực
hiện như sau:
Bước 1. Chọn A(x) không thu ộc nhóm nhân I, là t ổ hợp của các đơn thức
trong nhóm nhân I, A(x) chính là tr ưởng lớp kề. Ti ếp theo l ần lượt xây d ựng các
phần tử trong lớp kề này bằng cách nhân với hạt nhân phân hoạch.
Bước 2. Tiếp tục thực hiện bước 1 cho đến khi quét hết các lớp kề có thể có
của vành đa thức. Phân ho ạch này có s ố phần tử của vành là (2 n-1) đa thức khác 0.
Trong các nghiên cứu trước đây đều phân hoạch vành với k nhỏ, tuy nhiên để phân
hoạch được vành với các k l ớn cần phải xây dựng một thuật toán tổng quát để tính
38
toán được hết các phần tử và các lớp kề của phân hoạch.
Bắt đầu
Nhập K, i = 0
i = i + 1
Tính số đa thức trọng số i: Ci
k
n = n+1
Tính trưởng lớp kề
Kiểm tra
tồn tại
Sai
Đúng
Tính phần tử lớp kề
Lưu lớp kề ra
tệp
n = Ci
k
Sai
Đúng
i = k
Sai
Đúng
Hiển thị kết quả
Kết thúc
Hình 2.3. Sơ đồ thuật toán tính phân hoạch vành
theo nhóm nhân xyclic đơn vị
39
2.2.3. Thuật toán xây dựng vành đa thức theo nhóm nhân xyclic đơn vị
Dựa vào thuật toán trên, ta có thể xây dựng chương trình phần mềm để thực
Hình 2.4. Chương trình tính phân hoạch vành theo nhóm nhân xyclic đơn vị
hiện phân hoạch vành đa thức.
Đây là hình ảnh mô tả phần mềm thực hiện và đánh giá khả năng thực hiện
chương trình trên máy tính tốc độ cao.
Bảng 2.4: So sánh phân hoạch vành đa thức trên máy tính core 2 duo 2.26GHz
k = 5
k = 7
k = 8
k = 9
k = 12
k = 16
k = 17
1
2
3
4
5
6
7
< 1s
< 1s
< 1s
< 1s
< 1s
~ 7 s
~ 23 s
108 byte
1008 byte
2.25 Kbyte
5 Kbyte
56 Kbyte
1.281 Kbyte
2.752 Kbyte
40
Stt Số dấu thông tin Thời gian tính toán Kích thước dữ liệu
Với kết qu ả nghiên c ứu ở trên m ới ch ỉ ra kh ả năng phân ho ạch của vành
theo nhóm nhân xyclic đơn vị. Tuy nhiên, để phát tri ển các lý thuy ết về mã xyclic
cục bộ, chúng ta c ần tìm các kh ả năng phân ho ạch khác đem lại sự đa dạng cho lý
thuyết mã xyclic cục bộ.
2.3. Kết luận
Trong ch ương này, chúng ta nghiên c ứu xây d ựng một thu ật toán hoàn
chỉnh và vi ết ch ương trình máy tính để phân ho ạch vành đa th ức theo nhóm nhân
xyclic đơn vị, điều đó hỗ trợ rất nhiều cho nghiên cứu, phát tri ển mã xyclic cục bộ.
Phân hoạch vành với k lớn cho phép l ựa chọn được lớp kề để lựa chọn, xây dựng
các bộ mã xyclic c ục bộ, nhờ đớ ta có nhi ều phương án lựa chọn mã xyclic c ục bộ
để ứng dụng vào hệ mật McEliece. Chính vì v ậy, việc ứng dụng mã xyclic c ục bộ
để xây dựng hệ mật McEliece là có tính kh ả thi. Các k ết quả của chương này làm
tiền đề cho vi ệc xây dựng sơ đồ khối và các s ơ đồ thuật toán của hệ mật McEliece
41
trên mã xyclic cục bộ ở chương sau.
Chương 3 - XÂY DỰNG HỆ MẬT McELIECE TRÊN MÃ
XCB
Hiện nay trên th ế gi ới các h ệ mật 40 bit được cung c ấp mi ễn phí, h ệ mật
128 bit được coi là h ệ mật tốt. Chúng ta l ựa chọn hệ mật 49 bit n ằm trong kho ảng
cho phép. Để ứng dụng mã xyclic c ục bộ vào h ệ mật McEliece, tránh các nh ược
điểm của hệ mật McEliece sử dụng mã Goppa, chúng ta l ựa chọn mã xyclic cục bộ
với phân hoạch k = 8 k ết hợp với mã ghép Elias để đảm bảo tốc độ mã hoá và gi ải
mã. Theo các k ết quả nghiên c ứu đã đưa ra trong ch ương 2, ch ọn phân ho ạch có
các lớp kề có cùng tr ọng số và có tr ọng số lẻ (trọng số bằng 3) để xây dựng các
thuật toán mã hoá và giải mã.
3.1. Tiêu chí lựa chọn bộ mã xyclic cục bộ và mô hình toán học để xây
dựng hệ mật McEliece
3.1.1. Tiêu chí lựa chọn bộ mã XCB để xây dựng hệ mật McEliece
+ Mã xyclic cục bộ được lựa chọn phải tồn tại một thuật toán hiệu quả để sửa được t
lỗi.
+ Cấu trúc mã xyclic cục bộ cho phép sửa được t lỗi khi kết hợp với ma trận S và P
thì không tìm ra được cấu trúc của mã xyclic cục bộ đó.
+ Mã xyclic cục bộ (n,k) được xây dựng từ các lớp kề có cùng trọng số, và có trọng
số lẻ làm dấu kiểm tra, là mã xyclic cục bộ có khả năng trực giao.
+ Số lượng khóa tồn tại trong lớp mã phải đủ lớn.
3.1.2. Mô hình toán học xây dựng hệ mật McEliece với mã xyclic cục bộ
3.1.2.1 Tạo khoá
'
Mỗi đối tượng trong hệ thống trao đổi thông tin c ần tạo ra một khoá công
iG , khoá bí mật là Si, Gi, Pi.
khai và một khoá bí mật, khoá công khai là
Các bên tham gia hệ mật McEliece chia sẻ chung các tham số: n, k, t.
42
Khóa bí mật:
+ G là ma trận sinh của một mã XCB có kh ả năng sửa sai t lỗi theo phương
pháp giải mã ngưỡng, có số lượng phân phối khóa đủ lớn.
+ S là ma trận khả nghịch [k x k] trên Z2.
+ P là ma trận hoán vị [n x n] trên Z2.
Khóa công khai: (G’,t)
G’ = S.G.P
3.1.2.2 Mã hoá và giải mã
Mã hóa
x là bản rõ cần mã hoá có độ dài k bit.
y là bản mã hoá: y = ek(x,e) = x.G’ + e
e ˛ (Z2)n : véc-tơ ngẫu nhiên độ dài n và có tr ọng số t được lựa chọn từ bản
tin. Véc-tơ e chứa chính xác t bít 1.
Giải mã
2
Cần giải mã bản mã y ˛ )n (Z
- Tính y1 = y.P-1
- Sử dụng phương pháp giải mã y1 để có được y1 = x1 + e1
2
0
(Z )k sao cho x - Tính x0 ˛ .G = x
1
- Tính x = x0.S-1
3.2.
Sơ đồ khối xây dựng hệ mật McEliece với mã xyclic cục bộ
3.2.1. Sơ đồ mã hoá
Trong lược đồ mã hoá này, ta s ử dụng mã XCB (64,7) để xây dựng ma trận
sinh G. Ma tr ận S là ma tr ận khả nghịch [7x7], ma tr ận đơn vị P là ma tr ận hoán vị
43
cấp [64x64]. Khoá công khai G' = S.G.P là ma trận [7x64].
Bản rõ m được tách ra thành t ừng đoạn dữ li ệu 49 bit và l ấy một đoạn dữ
liệu có chứa 31 bit 1 và có độ dài tối đa 512 bit làm véc-t ơ sai e. Các đoạn dữ liệu
49 bit được sắp xếp thành ma tr ận [7x7], và được mã hoá b ằng khoá công khai G'
tạo ra ma tr ận [8x64] với hàng th ứ 8 bằng tổng các cột từ 1 đến 7. Từ ma tr ận này
được chuyển thành ma trận [1 x 512].
Véc-tơ sai e được cộng modulo 2 với ma trận [1x512] tạo thành dữ liệu mã
hóa: M 1 = m.G’ + e.
Các phần dữ liệu tiếp theo tiếp tục được mã hoá theo chu trình trên cho đến
44
khi kết thúc.
Ma trận sinh G’
[7 x 64]
Bản rõ
7
= (cid:229)
(,8)(, )
j
ii
=
1
j
Ma trận [7x7]
Ma trận [8x64]
Ma trận [1x512]
Véc tơ sai [1xn] có chứa 31 bít 1
và n≤ 512
¯
Bản mã
Hình 3.1. Sơ đồ khối mã hoá của hệ mật McEliece với mã XCB
45
3.2.2. Sơ đồ giải mã
Dữ liệu được lấy lần lượt 512 bít một lần để tạo thành ma tr ận [8x64]. Sau
đó ma trận này được nhân với ma trận P-1 [64x64] thành ma trận M2:
M2 = M1.P-1
Qua thuật giải mã xyclic cục bộ dựa trên phương pháp giải mã ngưỡng theo
đa số, ta thu được dữ liệu 49 bít mã hoá là ma tr ận M3. Sau khi nhân M3 với ma trận
S-1 [7x7] ta thu được m: m = M3.S-1 ta sẽ thu được 49 bít dữ liệu của bản rõ.
Để giải mã vectơ sai e có ch ứa 31 bít 1 được cộng thêm, ta lại tiếp tục thực
hiện mã hoá l ại 49 bít đó theo ph ần 3.2.1 ta s ẽ thu được 512 bít mã hoá. S ử dụng
512 bít này c ộng modulo 2 v ới 512 bít đã mã hoá ban đầu ta thu được vectơ e có
chứa 31 bít 1 của bản rõ đã cộng thêm trong quá trình mã hoá.
Sơ đồ gi ải mã được trình bày trên hình 3.2. Ph ương án được lựa chọn với
mục đích nâng cao hiệu quả truyền tin của hệ mật mã hoá khoá công khai McEliece
46
với mã xyclic cục bộ.
Ma trận S-1 [7x7]
Ma trận tổng kiểm tra
Ma trận P-1 [64x64]
Bản mã
Ma trận
[7x7]
Ma trận
[8x64]
Giải mã 2 cấp
ngưỡng
Ma trận
[8x64]
Thực hiện mã hóa theo
sơ đồ hình 3.1
Ma trận [1x512]
+
Ma trận [1x n] có chứa tối
đa 31 bít 1 và n≤ 512
Hình 3.2. Sơ đồ khối giải mã của hệ mật McEliece với mã XCB
Bản rõ
47
3.3. Về một phương pháp xây dựng hệ mật McEliece trên mã XCB
3.3.1. Phương pháp tạo khoá mã
Hệ mật McEliece trên mã xyclic c ục bộ sử dụng ma tr ận sinh G d ựa trên
phân hoạch vành theo nhóm nhân xyclic đơn vị với k = 8 ta có:
1
12
13
14
15
123
124
125
126
127
135
136
1234
1235
1236
1237
1245
1246
1247
1256
1257
12345
12346
12347
12356
12357
12367
12457
123456
123457
123467
123567 7
07
17
27
017
027
037
047
057
137
147
0127
0137
0147
0157
0237
0247
0257
01237
01247
01257
01347
01357
01457
02357
012347
012357
012457 2
23
24
25
26
234
235
236
237
023
246
247
2345
2346
2347
0234
2356
2357
0235
2367
0236
23456
23457
02345
23467
02346
02347
02356
234567
023456
023457
023467 3
34
35
36
37
345
346
347
034
134
357
035
3456
3457
0345
1345
3467
0346
1346
0347
1347
34567
03456
13456
03457
13457
01345
13467
034567
134567
013456
013457 4
45
46
47
456
457
045
145
245
046
146
4567
0456
1456
2456
0457
1457
2457
0245
04567
14567
24567
01456
02456
12456
02457
014567
024567
124567 5
56
57
05
567
056
156
256
356
157
257
0567
1567
2567
3567
0156
0256
0356
1356
01567
02567
03567
12567
13567
23567
01356
012567
013567
023567 6
67
06
16
067
167
267
367
467
026
036
0167
0267
0367
0467
1267
1367
1467
01267
01367
01467
02367
02467
03467
12467
012367
012467
013467
48
0
01
02
03
04
012
013
014
015
016
024
025
0123
0124
0125
0126
0134
0135
0136
0145
0146
01234
01235
01236
01245
01246
01256
01346
012345
012346
012356
012456
0123456 1234567 0234567 0134567 0124567 0123567 0123467 0123457
01234567
Bảng 3.1. Phân hoạch vành đa thức theo nhóm nhân xyclic đơn vị với k =8
Trên cơ sở đó ta chỉ lựa chọn các lớp kề có trọng số là 3 để xây dựng bộ mã
(64,8,32).
(0) (1) (2) (3) (4) (5) (6) (7) a0
012 123 234 345 456 567 670 017 b0
023 134 245 356 467 057 016 127 c0
034 145 256 367 047 015 126 237 d0
045 156 267 037 014 125 236 347 e0
056 167 027 013 124 235 346 457 f0
024 135 246 357 046 157 026 137 g0
025 136 247 035 146 257 036 147 h0
Bảng 3.2. Các lớp kề lựa chọn để xây dựng bộ mã (64,8,32)
Số phần tử của các lớp kề có trọng số là 3 là:
3
8
56 C =
Thông qua phân ho ạch vành theo nhóm nhân xyclic đơn vị, xây d ựng ma
(0)
(012)
(034)
(045)
(023)
(056)
(024)
(025)
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
1 0 0 0 0 0 1 1
1 1 0 0 0 0 0 1
1 1 1 0 0 0 0 0
0 1 1 1 0 0 0 0
0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0
0 0 0 0 1 1 1 0
0 0 0 0 0 1 1 1
1 0 0 0 1 1 0 0
0 1 0 0 0 1 1 0
0 0 1 0 0 0 1 1
1 0 0 1 0 0 0 1
1 1 0 0 1 0 0 0
0 1 1 0 0 1 0 0
0 0 1 1 0 0 1 0
0 0 0 1 1 0 0 1
1 0 0 1 1 0 0 0
0 1 0 0 1 1 0 0
0 0 1 0 0 1 1 0
0 0 0 1 0 0 1 1
1 0 0 0 1 0 0 1
1 1 0 0 0 1 0 0
0 1 1 0 0 0 1 0
0 0 1 1 0 0 0 1
1 0 0 0 0 1 1 0
0 1 0 0 0 0 1 1
1 0 1 0 0 0 0 1
1 1 0 1 0 0 0 0
0 1 1 0 1 0 0 0
0 0 1 1 0 1 0 0
0 0 0 1 1 0 1 0
0 0 0 0 1 1 0 1
1 0 1 1 0 0 0 0
0 1 0 1 1 0 0 0
0 0 1 0 1 1 0 0
0 0 0 1 0 1 1 0
0 0 0 0 1 0 1 1
1 0 0 0 0 1 0 1
1 1 0 0 0 0 1 0
0 1 1 0 0 0 0 1
1 0 0 0 1 0 1 0
0 1 0 0 0 1 0 1
1 0 1 0 0 0 1 0
0 1 0 1 0 0 0 1
1 0 1 0 1 0 0 0
0 1 0 1 0 1 0 0
0 0 1 0 1 0 1 0
0 0 0 1 0 1 0 1
1 0 0 1 0 0 1 0
0 1 0 0 1 0 0 1
1 0 1 0 0 1 0 0
0 1 0 1 0 0 1 0
0 0 1 0 1 0 0 1
1 0 0 1 0 1 0 0
0 1 0 0 1 0 1 0
0 0 1 0 0 1 0 1
trận G1 [8 x 64] được cho trong bảng 3.3.
49
Bảng 3.3. Ma trận G1 (8 x 64)
Từ ma trận G1[8 x 64] lấy giá trị của các hàng từ 1 đến 7 cộng với hàng cuối
1 0 1 1 0 1 1 1
0 1 1 0 1 1 0 0
1 0 0 0 0 0 0 1
0 1 1 1 0 1 1 1
0 0 0 0 1 1 0 0
1 0 1 1 0 0 0 1
0 1 1 0 1 1 1 1
1 0 0 1 1 1 1 1
0 1 0 1 0 0 0 0
1 0 1 1 0 1 1 1
0 1 0 0 0 1 0 0
1 0 1 1 1 1 0 1
0 1 0 0 0 0 0 1
0 0 1 1 1 1 1 1
1 1 0 1 0 0 0 1
0 0 1 1 1 0 0 1
0 1 0 0 1 1 0 1
0 1 1 1 0 1 1 1
0 1 1 0 1 0 1 0
1 1 1 0 0 1 1 0
1 0 1 0 0 0 1 1
1 0 0 0 1 0 1 1
0 1 0 0 1 1 1 0
1 0 1 0 1 1 0 0
1 1 0 1 1 1 0 1
0 1 1 0 0 1 0 1
0 0 1 1 1 0 0 1
0 0 0 1 0 1 1 1
1 0 1 0 1 0 0 1
0 1 1 1 1 1 0 1
0 0 0 1 0 1 1 1
0 0 1 0 0 0 1 0
1 0 1 1 1 0 0 0
1 1 1 1 0 1 0 1
0 1 0 1 0 0 1 1
1 0 0 1 0 1 0 1
0 1 0 1 1 1 1 1
0 0 1 1 1 0 1 0
1 0 0 0 1 0 0 0
1 1 0 1 0 0 0 1
0 1 1 1 1 1 0 1
0 0 1 0 1 0 1 1
1 0 0 0 0 1 0 0
1 1 0 0 0 1 1 0
1 1 1 0 0 1 1 1
0 1 1 1 0 1 1 1
0 0 1 1 1 1 1 1
0 0 0 1 1 0 1 1
0 0 0 0 1 0 0 1
1 0 0 0 0 0 0 1
0 1 0 0 0 0 0 1
0 0 1 0 0 0 0 1
0 0 0 1 0 0 0 1
0 0 0 0 1 0 0 1
0 0 0 0 0 1 0 1
0 0 0 0 0 0 1 1
cùng ta được ma trận sinh G [7 x 64]
Bảng 3.4. Ma trận sinh G(7,64)
Với bảng phân ho ạch trên khi d ịch vòng các ph ần tử trên cùng m ột lớp kề
hoặc hoán vị các lớp kề khác nhau ta xây d ựng được các ma trận sinh G khác nhau.
Với lớp mã này ta có thể xây dựng được 88.8! @ 676 tỷ khóa .
Trên cơ sở lược đồ của hệ mật McEliece ta có khóa công khai G’=S.G.P,
ngoài việc hoán vị các vị trí trên phân hoạch để tạo ra các ma trận sinh G khác nhau,
ta còn có thể thay đổi ma trận S và P để tăng khả năng tạo khoá cho hệ mật.
3.3.2. Thuật toán mã hoá
3.3.2.1. Nguyên tắc chung
Để tăng khả năng tốc độ xử lý thông tin ta s ử dụng mã XCB (64,7,32) k ết
hợp với mã Elias (8,7,2): (512,49,64) = (64,7,32)(8,7,2)
Thông tin đầu vào được chia như sau:
7 bit 7 bit 7 bit 7 bit 7 bit 7 bit 7 bit Có chứa 31 bit 1 và độ dài ≤512
bit
Khi mã hoá ta sẽ mã hoá mỗi lần 7x7=49 bit chứa thông tin thông qua khóa
công khai G' = S.G.P
Trong đó: S là ma tr ận khả nghịch 7x7
G là ma tr ận sinh 7x64
P là ma tr ận hoán vị 64x64
Khi mã hoá ta nhân ma trận chứa thông tin M [7x7] với ma trận G'[7x64]
50
3.3.2.2. Thuật toán mã hoá
Bắt đầu
Đọc khóa công khai
Gi’ (Gi’= S.Gi.P)
K = 0
Đọc tệp dữ liệu
Đọc kích thước tệp T
Vectơ sai V lấy từ
bản tin
Phân tích dữ liệu theo bit
- M(49 bit dữ liệu )
- V(vectơ sai chứa tối đa 31 bit 1 và độ dài ≤512 bit)
K=K+Len(M)+Len(V)
Chèn thêm dấu giả
thông tin
Sai
Có đủ 49 bit để
mã hóa?
Đúng
Mã hoá dữ liệu với Gi’
Ma trận (8,64)
Cộng modulo 2
Sắp xếp về 512 bit
Ghi kết quả
512 bit đã mã hoá
Đúng
K < T
Sai
Kết thúc
Hình 3.3. Sơ đồ thuật toán mã hoá
51
Dữ liệu sau mã hoá là ma tr ận [8x64] với hàng th ứ 8 là t ổng ki ểm tra của
0
0
0
0
0
0
0
0
0
0
0
0
các hàng trên.
1a
2a
3a
4a
5a
6a
7a
0b
1b
6h
0a
7h
1
1
0a
7h
2
2
0a
7h
3
3
0a
7h
............
4
4
0a
7h
5
5
0a
7h
6
6
0a
7h
7
7
0a
7h
.............................................
6
6
a
= (cid:229)
= (cid:229)
Từ ma trận [8x64] thu được ta có thể đưa ra các tính chất sau:
7
a
0
k
a
0
0
a
7
0
k
=
=
0
k
0
k
và (theo tính chất của ma trận)
6
6
a
= (cid:229)
= (cid:229)
....
7
a
7
k
a
7
7
a
7
7
k
=
=
0
k
0
6
k
6
= (cid:229)
= (cid:229)
và (theo tính chất của ma trận)
0
b
7
0
b
k
7
b
0
k
b
0
=
=
0
k
0
k
và (theo tính chất của ma trận)
6
6
= (cid:229)
= (cid:229)
....
7
b
7
k
b
7
7
b
7
7
b
k
=
=
0
k
0
k
6
6
= (cid:229)
= (cid:229)
và (theo tính chất của ma trận)
7
c
0
k
c
0
0
c
7
0
c
k
=
=
0
k
0
k
và (theo tính chất của ma trận)
6
6
= (cid:229)
= (cid:229)
....
7
c
7
k
c
7
7
c
7
7
c
k
=
=
0
k
0
k
6
6
d
d
d
d
= (cid:229)
= (cid:229)
và (theo tính chất của ma trận)
7
0
k
0
0
7
0
k
=
=
k
0
k
0
và (theo tính chất của ma trận)
6
6
d
d
= (cid:229)
= (cid:229)
....
7
7
k
7
7
c
7
7
c
k
=
=
0
k
k
0
52
và (theo tính chất của ma trận)
6
6
= (cid:229)
= (cid:229)
7
e
0
k
e
0
0
e
7
0
e
k
=
=
0
k
0
k
và (theo tính chất của ma trận)
6
6
= (cid:229)
= (cid:229)
....
7
e
7
k
e
7
7
c
7
7
c
k
=
=
0
k
0
k
6
6
f
f
f
f
= (cid:229)
= (cid:229)
và (theo tính chất của ma trận)
7
0
k
0
0
7
0
k
=
=
0
k
0
k
và (theo tính chất của ma trận)
6
6
f
f
f
f
= (cid:229)
= (cid:229)
....
7
7
k
7
7
7
7
k
=
=
0
0
k
6
k
6
g
g
g
g
= (cid:229)
= (cid:229)
và (theo tính chất của ma trận)
7
0
k
0
0
7
0
k
=
=
0
k
0
k
và (theo tính chất của ma trận)
6
6
g
g
g
g
= (cid:229)
= (cid:229)
....
7
7
k
7
7
7
7
k
=
=
0
k
0
k
6
6
= (cid:229)
= (cid:229)
và (theo tính chất của ma trận)
0
h
k
7
h
0
k
h
0
0
h
7
=
=
0
k
0
k
và (theo tính chất của ma trận)
6
6
= (cid:229)
= (cid:229)
....
7
h
7
k
h
7
7
h
7
7
h
k
=
=
0
0
k
k
và (theo tính chất của ma trận)
Sau khi mã xong 49 bit thông tin ta nh ận được ma trận [8,64] thực hiện sắp
xếp lại thông tin thành 512 bit, sau đó lấy tiếp thông tin phía sau 49 bit đến khi có
31 dấu 1 và có độ dài nhỏ hơn hoặc bằng 512 bít.
512 bít dữ
liệu gửi đi 512 bit đã
mã hoá ¯ Dữ liệu có chứa
31 bit 1 và có
độ dài ≤ 512 bit
3.3.3. Thuật toán giải mã
a) Nguyên tắc chung
Việc giải mã được thực hiện như sau:
- Từ 512 bit dữ liệu thu được khôi phục thành ma trận M1[8x64]
- Nhân ma trận M1 với ma trận nghịch đảo của P thu được ma trận M2.
M2 = M1.P-1
53
- Sử dụng các tổng kiểm tra giải mã cho M2 thu được ma trận M3[7x7]
- Nhân ma trận M3 với ma trận nghịch đảo của S thu được ma trận M.
M = M3.S-1 với ma trận M [7x7] là ma trận chứa 49 bit thông tin mã hoá.
Do sử dụng vectơ sai chứa thông tin nên ta phải thực hiện thêm một số bước sau:
- Mã hoá l ại ma tr ận M[7x7] thu được ma tr ận [8x64] ch ứa dữ li ệu mã hoá
chưa có véc-tơ sai (hàng thứ 8 bằng tổng các hàng phía trên).
- Sắp xếp thành chuỗi 512 bit, sau đó thực hiện cộng modulo 2 với 512 bit thu
được ta sẽ thu được véc-tơ sai.
b) Xây dựng các tổng kiểm tra
Do sử dụng mã xyclic cục bộ nên ta s ử dụng phương pháp gi ải mã ngưỡng
cho nên ta phải xây dựng các tổng kiểm tra để giải mã.
Các tổng kiểm tra cấp 1 (Giải mã cho các cặp dấu)
A(0) A(1) A(2) A(3) A(4) A(5) A(6) A(7)
a0 + a1 a1 + a2 a2 + a3 a3 + a4 a4 + a5 a5 + a6 a6 + a7 a7 + a0
Dựa trên phân ho ạch vành theo nhóm nhân xyclic đơn vị với k=8 ta xây
dựng được 32 tổng kiểm tra cho cặp dấu A0(a0 + a1) là:
c5 + g5 = S8 g4 + h4 = S16 d3 + c2 = S24 b0 + a2 = S0
d1 + c1 = S9 g6 + d6 = S17 c3 + h2 = S25 f3 + a3 = S1
d4 + h7 = S10 h0 + e5 = S18 c4 + f5 = S26 e0 + a4 = S2
e0 + d1 = S11 h3 + g1 = S19 d2 + e7 = S27 d5 + a5 = S3
e3 + g7 = S12 h6 + h1 = S20 e6 + f7 = S28 c6 + a6 = S4
f0 + e1 = S13 b2 + b5 = S21 f6 + h5 = S29 b7 + a7 = S5
f2 + c7 = S14 b3 + e2 = S22 g2 + g3 = S30 c0 + b1 = S6
g0 + f4 = S15 b4 + d7 = S23 a0 + a1 = S31 b6 + f1 = S7
Đối với tính ch ất của mã (512,49,64) = (64,7,32) (8,7,2) ta thi ết lập được
0
a
0
1
0
54
thêm 32 tổng kiểm tra cho cặp dấu : a+
7
7
7
7
7
k
k
k
b + = S a
7
d
+ = S
b + = S b
k
0232
k
2553
k=1k=1
k
e
0143
k=1k=1
k=1k=1
7
7
7
7
k
k
k
7
a
+ = S
7
g
+ = S
b + = S e
(cid:229) (cid:229) (cid:229) (cid:229) (cid:229) (cid:229)
k
3333
k
3254
f
k=1k=1
k
e
3744
k=1k=1
k=1k=1
7
7
7
7
k
k
k
7
a
+ = S
7
e
+ = S
b + = S d
(cid:229) (cid:229) (cid:229) (cid:229) (cid:229) (cid:229)
k
0145
k
4755
k
e
4434
k=1k=1
f
k=1k=1
k=1k=1
7
7
7
k
k
k
7
a
+ = S
7
c
+ = S
7
c
+ = S
(cid:229) (cid:229) (cid:229) (cid:229) (cid:229) (cid:229)
k
5535
k
2746
k
3256
d
k=1k=1
f
k=1k=1
d
k=1k=1
7
7
7
k
k
k
7
a
+ = S
7
h
+ = S
7
h
+ = S
(cid:229) (cid:229) (cid:229) (cid:229) (cid:229) (cid:229)
k
0447
k
c
6636
k=1k=1
g
k=1k=1
k
c
3257
k=1k=1
7
7
7
7
k
k
k
b + = S a
7
h
+ = S
7
f
+ = S
(cid:229) (cid:229) (cid:229) (cid:229) (cid:229) (cid:229)
k
7737
k
4448
k=1k=1
g
k=1k=1
k
c
4558
k=1k=1
7
7
7
k
k
k
7
b
+ = S
7
d
+ = S
7
e
+ = S
(cid:229) (cid:229) (cid:229) (cid:229) (cid:229) (cid:229)
k
6649
k
2759
k
c
0138
k=1k=1
g
k=1k=1
d
k=1k=1
7
7
7
7
k
k
k
b + = S f
7
e
+ = S
7
f
+ = S
(cid:229) (cid:229) (cid:229) (cid:229) (cid:229) (cid:229)
k
6139
k=1k=1
k
h
0550
k=1k=1
k
e
6760
k=1k=1
7
7
7
k
k
k
7
g
+ = S
7
g
+ = S
7
h
+ = S
(cid:229) (cid:229) (cid:229) (cid:229) (cid:229) (cid:229)
k
6561
k
c
5540
k=1k=1
k
h
3151
k=1k=1
f
k=1k=1
7
7
7
k
k
k
7
c
+ = S
7
h
+ = S
7
g
+ = S
(cid:229) (cid:229) (cid:229) (cid:229) (cid:229) (cid:229)
k
2362
k
d
1141
k=1k=1
k
h
6152
k=1k=1
g
k=1k=1
7
7
k
k
7
h
+ = S
7
a
+ = S
(cid:229) (cid:229) (cid:229) (cid:229) (cid:229) (cid:229)
k
4742
k
0163
d
k=1k=1
a
k=1k=1
(cid:229) (cid:229) (cid:229) (cid:229)
For (i = 1..7) {
63
= (cid:229)
()( )
NiS i
j
=
0
j
‡ 33 )
A(i) = 1
if ( N(i)
else
A(i) = 0
}
55
Để giải mã cho từng cặp dấu từ A0 đến A7 sử dụng thuật toán:
Sau đó xây d ựng 64 t ổng ki ểm tra cho c ấp ng ưỡng th ứ 2 thông qua phân
hoạch vành theo nhóm nhân xyclic đơn vị với k=8 và tính ch ất của mã (512,49,64)
0
để giải mã cho từng dấu thông tin:
4b
0
T32 = A(7) + A(6) + A(4) + T0 = A(0) + a1
6f
0
T33 = A(7) + A(6) + A(3) + T1 = A(0) + A(1) + a2
6e
0
T34 = A(7) + A(6) + A(2) + T2 = A(7) + a7
6d
0
T35 = A(7) + A(6) + A(1) + T3 = A(7) + A(6) + a6
6c
0
T36 = A(7) + A(6) + A(0) + T4 = A(1) + b0
2f
0
T37 = A(0) + A(1) + A(7) + T5 = A(2) + c0
4f
0
T38 = A(0) + A(2) + A(3) + T6 = A(3) + d0
1g
0
T39 = A(0) + A(3) + A(4) + T7 = A(4) + e0
4h
0
T40 = A(0) + A(4) + A(5) + T8 = A(5) + f0
5g
0
T41 = A(0) + A(5) + A(6) + T9 = A(6) + b6
4c
0
T42 = A(7) + A(5) + A(4) + T10 = A(1) + A(2) + f3
3g
0
T43 = A(7) + A(4) + A(3) + T11 = A(2) + A(3) + g0
2h
0
T44 = A(7) + A(3) + A(2) + T12 = A(3) + A(4) + h3
7g
0
T45 = A(7) + A(2) + A(1) + T13 = A(4) + A(5) + g4
4e
0
T46 = A(1) + A(2) + A(3) + T14 = A(5) + A(6) + c5
0h
0
T47 = A(2) + A(3) + A(4) + T15 = A(7) + A(0) + b7
6h
0
T48 = A(3) + A(4) + A(5) + T16 = A(0) + A(2) + b1
4d
0
T49 = A(4) + A(5) + A(6) + T17 = A(0) + A(3) + c1
0a
7
T50 = T18 = A(0) + A(4) + d1
k
a
0
=
1
k
56
(cid:229) T51 = T19 = A(0) + A(5) + e1
7
k
a
1
=
1
k
7
(cid:229) T52 = A(0) + T20 = A(0) + A(6) + f1
k
b
0
=
1
k
7
(cid:229) T53 = A(1) + T21 = A(7) + A(5) + b5
k
0
=
1
k
7
(cid:229) c T54 = A(2) + T22 = A(7) + A(4) + f7
k
0
=
1
k
7
(cid:229) d T55 = A(3) + T23 = A(7) + A(3) + e7
k
e
0
=
1
k
7
(cid:229) T56 = A(4) + T24 = A(7) + A(2) + d7
k
0
=
1
k
7
(cid:229) f T57 = A(5) + T25 = A(7) + A(1) + c7
k
b
6
=
1
k
7
(cid:229) T58 = A(6) + T26 = A(0) + A(1) + A(2) + a3
k
a
7
=
1
k
7
(cid:229) T59 = A(7) + T27 = A(0) + A(1) + A(3) + b2
k
a
2
=
1
k
7
(cid:229) T60 = A(0) + A(1) + T28 = A(0) + A(1) + A(4) + e2
k
b
1
=
1
k
7
(cid:229) T61 = A(0) + A(2) + T29 = A(0) + A(1) + A(5) + d2
k
c
1
=
1
k
7
(cid:229) T62 = A(0) + A(3) + T30 = A(0) + A(1) + A(6) + e2
k
d
1
=
1
k
Để giải mã cho từng dấu từ a0 đến a7 sử dụng thuật toán:
63
For ( i = 1 .. 7 ) {
= (cid:229)
()( )
MiT i
j
=
0
j
‡ 33 )
a(i) = 1
if ( M(i)
else
a(i) = 0
}
(cid:229) T63 = A(0) + A(4) + T31 = A(7) + A(6) + A(5) + a5
57
3.3.3.3. Thuật toán giải mã
Bắt đầu
Đọc Gi' = Si.Gi.Pi
-1
Đọc Pi
-1, Si
Đọc ma trận tổng kiểm tra của Gi
K = 0
Đọc tệp mã hóa
Đọc kich thước tệp T
Phân tích dữ liệu theo bit
M (512 bit dữ liệu mã hóa)
K=K+Len(M)
Sắp xếp về ma trận M1(8,64)
-1
-1
Giải mã dữ liệu M2 = M1 * Pi
M3 = Giải mã sửa sai M2 theo
tổng kiểm tra 2 cấp ngưỡng
M = M3* Si
49 bit dữ liệu của bản tin
Mã hóa lại dữ liệu với Gi’ tạo Ma trận (8,64)
Sắp xếp thành 512 bít
Cộng
Modulo 2
Ghép dữ liệu
Vectơ sai có
chứa dữ liệu
Ghi kết quả
Đúng
K < T
Sai
Hình 3.4. Sơ đồ thuật toán giải mã
Kết thúc
58
3.4. Nghiên cứu thử nghiệm hệ mật McEliece trên mã xyclic cục bộ
Phần này là ví d ụ về xây dựng hệ mật McEliece trên mã xyclic c ục bộ. Dữ
liệu được mã hoá là một chuỗi 10 ký tự là: "123456789012347". Chuỗi này theo mã
ASCII sẽ được đọc thành các giá trị là:
Ký tự Mã ASCII Giá trị nhị phân Xử lý bit trên máy tính
1
2
3
4
5
6
7
8
9
0 31
32
33
34
35
36
37
38
39
30
10001100
00110001
01001100
00110010
11001100
00110011
00101100
00110100
10101100
00110101
01101100
00110110
11101100
00110111
00011100
00111000
10011100
00111001
00001100
00110000
Bảng 3.5. Các dữ liệu nhị phân của 10 ký tự là: "1234567890"
Dữ li ệu đầu vào được xây d ựng thành 1 ma tr ận M(7x7) và m ột đoạn dữ
liệu còn lại là 31 bit
10 0011 0
0010 0 1 1
00110 0 1
M x
(77)
10 0 001 0
= (cid:231)
110010 1
0110 0 0 1
10110 0 1
(cid:230) (cid:246) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) Ł ł
11011000001110010011100000011001000110001001100110011000010110011101100
Đoạn dữ liệu cuối có chứa 31 bit 1 được xắp sếp như sau:
3.4.1. Quá trình tạo khoá
Quá trình t ạo khoá được th ực hi ện từ phân ho ạch vành theo nhóm nhân
xyclic đơn vị với k=8 và các l ớp kề có trọng số bằng 3 để tạo ra ma tr ận sinh G và
59
các tổng kiểm tra để giải mã.
0
012
013
014
015
016
024
025 1
123
124
125
126
127
135
136 2
234
235
236
237
023
246
247 3
345
346
347
034
134
357
035 4
456
457
045
145
245
046
146 5
567
056
156
256
356
157
257 6
067
167
267
367
467
026
036 7
017
027
037
047
057
137
147
Từ phân ho ạch trên ta xây d ựng được ma tr ận [8x64] t ương ứng với cách
(0)
(012)
(013)
(014)
(015)
(016)
(024)
(025)
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
1 0 0 0 0 0 1 1
1 1 0 0 0 0 0 1
1 1 1 0 0 0 0 0
0 1 1 1 0 0 0 0
0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0
0 0 0 0 1 1 1 0
0 0 0 0 0 1 1 1
1 0 0 0 0 1 0 1
1 1 0 0 0 0 1 0
0 1 1 0 0 0 0 1
1 0 1 1 0 0 0 0
0 1 0 1 1 0 0 0
0 0 1 0 1 1 0 0
0 0 0 1 0 1 1 0
0 0 0 0 1 0 1 1
1 0 0 0 1 0 0 1
1 1 0 0 0 1 0 0
0 1 1 0 0 0 1 0
0 0 1 1 0 0 0 1
1 0 0 1 1 0 0 0
0 1 0 0 1 1 0 0
0 0 1 0 0 1 1 0
0 0 0 1 0 0 1 1
1 0 0 1 0 0 0 1
1 1 0 0 1 0 0 0
0 1 1 0 0 1 0 0
0 0 1 1 0 0 1 0
0 0 0 1 1 0 0 1
1 0 0 0 1 1 0 0
0 1 0 0 0 1 1 0
0 0 1 0 0 0 1 1
1 0 1 0 0 0 0 1
1 1 0 1 0 0 0 0
0 1 1 0 1 0 0 0
0 0 1 1 0 1 0 0
0 0 0 1 1 0 1 0
0 0 0 0 1 1 0 1
1 0 0 0 0 1 1 0
0 1 0 0 0 0 1 1
1 0 0 0 1 0 1 0
0 1 0 0 0 1 0 1
1 0 1 0 0 0 1 0
0 1 0 1 0 0 0 1
1 0 1 0 1 0 0 0
0 1 0 1 0 1 0 0
0 0 1 0 1 0 1 0
0 0 0 1 0 1 0 1
1 0 0 1 0 0 1 0
0 1 0 0 1 0 0 1
1 0 1 0 0 1 0 0
0 1 0 1 0 0 1 0
0 0 1 0 1 0 0 1
1 0 0 1 0 1 0 0
0 1 0 0 1 0 1 0
0 0 1 0 0 1 0 1
sắp xếp của phân hoạch là:
Ta xây dựng ma tr ận sinh G[7x64] t ừ ma tr ận [8x64] (c ộng từng hàng từ 1
1 0 0 0 0 0 0 1
1 0 0 0 0 1 0 0
1 0 0 0 1 1 1 0
1 0 0 1 1 0 1 0
1 0 1 1 0 0 1 0
1 1 1 0 0 0 1 0
1 0 0 1 1 1 1 1
1 0 1 1 0 1 1 1
0 1 0 0 0 0 0 1
1 1 0 0 0 1 1 0
1 1 0 0 1 0 0 1
1 1 0 1 0 1 1 1
1 1 1 0 1 0 1 1
1 0 0 1 0 0 1 1
0 1 0 1 0 0 0 0
0 1 1 0 1 1 0 0
0 0 1 0 0 0 0 1
1 1 1 0 0 1 1 1
0 1 1 0 1 0 1 0
0 1 1 1 0 0 0 1
0 1 0 0 0 1 1 1
0 0 1 0 1 0 1 1
1 0 1 1 0 1 1 1
1 0 0 0 0 0 0 1
0 0 0 1 0 0 0 1
0 1 1 1 0 1 1 1
1 0 1 1 1 0 1 1
0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1
0 1 1 1 0 1 1 1
0 1 0 0 0 1 0 0
0 1 1 1 0 1 1 1
0 0 0 0 1 0 0 1
0 0 1 1 1 1 1 1
0 1 0 1 0 0 1 1
1 0 0 0 1 0 1 1
0 0 1 1 1 0 1 0
0 1 0 1 1 0 0 1
1 0 1 1 1 1 0 1
0 0 0 0 1 1 0 0
0 0 0 0 0 1 0 1
0 0 0 1 1 0 1 1
0 0 1 0 0 1 1 1
0 1 0 1 1 1 1 1
1 0 1 0 1 1 1 1
0 1 0 0 1 1 1 0
0 1 0 0 0 0 0 1
1 0 1 1 0 0 0 1
0 0 0 0 0 0 1 1
0 0 0 0 1 0 0 1
0 0 0 1 1 1 0 1
0 0 1 1 0 1 0 1
0 1 1 0 0 1 0 1
1 1 0 0 0 1 0 1
0 0 1 1 1 1 1 1
0 1 1 0 1 1 1 1
đến 7 với hàng thứ 8):
Nhân ma trận G với ma trận S và P ta được ma trận G':
G'= S. G .P
S là ma trận khả nghịch (7x7)
1 110 0 0 0
00 1101 0
11011 0 1
01 10 1 1 1
1
và
S -
111101 0
= (cid:231)
S
01 110 0 0
00111 0 0
0 0011 1 0
= (cid:231)
00 1110 0
110111 0
0 0 0 0 1 1 1
10 0 0 0 1 1
11 10 11 0
110 0 0 0 1
60
(cid:230) (cid:246) (cid:230) (cid:246) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:247) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) Ł ł Ł ł
P là ma trận hoán vị [64 x 64]
100... 0
100... 0
001... 0
001... 0
1
=
=
P
P
010... 0
010... 0
...............
...............
0
00... 1
0
00... 1
(cid:230) (cid:246) (cid:230) (cid:246) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) - (cid:231) (cid:247) (cid:231) (cid:247) và (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) (cid:231) (cid:247) Ł ł Ł ł
Ta có G' là ma trận [8x64]
0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0
0 0 0 1 1 1 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 1 0 1 0
0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 1 0 0 1 0
1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 1 0 1 0 0 1
1 1 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 1 0 1 0 0
1 1 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 1 0 1 0
0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 0
Xây dựng các tổng kiểm tra cấp 1 theo vị trí của ma trận 8x64 cho các c ặp
dấu
(0,0)+(0,1) (0,8)+(0,2) (0,14)+(0,22) (0,15)+(0,7)
(1-7,0)+(1-7,1) (1-7,8)+(1-7,2) (1-7,14)+(1-7,22) (1-7,15)+(1-7,7)
(0,28)+(0,36) (0,31)+(0,55) (0,32)+(0,5) (0,35)+(0,43)
(1-7,28)+(1-7,36) (1-7,31)+(1-7,55) (1-7,32)+(1-7,5) (1-7,35)+(1-7,43)
(0,48)+(0,17) (0,52)+(0,60) (0,54)+(0,33) (0,56)+(0,25)
(1-7,48)+(1-7,17) (1-7,52)+(1-7,60) (1-7,54)+(1-7,33) (1-7,56)+(1-7,25)
(0,12)+(0,34) (0,18)+(0,46) (0,19)+(0,61) (0,20)+(0,26)
(1-7,12)+(1-7,34) (1-7,18)+(1-7,46) (1-7,19)+(1-7,61) (1-7,20)+(1-7,26)
(0,16)+(0,3) (0,21)+(0,29) (0,23)+(0,41) (0,24)+(0,4)
(1-7,16)+(1-7,3) (1-7,21)+(1-7,29) (1-7,23)+(1-7,41) (1-7,24)+(1-7,4)
(0,39)+(0,63) (0,40)+(0,6) (0,42)+(0,9) (0,47)+(0,53)
(1-7,39)+(1-7,63) (1-7,40)+(1-7,6) (1-7,42)+(1-7,9) (1-7,47)+(1-7,53)
(0,59)+(0,49) (0,62)+(0,57) (0,10)+(0,13) (0,11)+(0,30)
61
(1-7,59)+(1-7,49) (1-7,62)+(1-7,57) (1-7,10)+(1-7,13) (1-7,11)+(1-7,30)
(0,27)+(0,37) (0,38)+(0,44) (0,45)+(0,58) (0,50)+(0,51)
(1-7,27)+(1-7,37) (1-7,38)+(1-7,44) (1-7,45)+(1-7,58) (1-7,50)+(1-7,51)
Qua 64 tổng kiểm tra này, lần lượt sẽ tìm được các cặp dấu thông tin:
A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(0)
0,1+0,2 0,2+0,3 0,3+0,4 0,4+0,5 0,5+0,6 0,6+0,7 0,7+0,8 0,0+0,1
A(2)+A(6)+A(7)+(0,26)
A(4)+A(5)+(0,52)
A(0)+A(1)+(1-7,2)
(0,0)
A(3)+A(6)+A(7)+(0,19)
A(4)+A(5)+(1-7,52)
A(0)+A(2)+(0,9)
A(0)+(0,1)
A(4)+A(6)+A(7)+(0,12)
A(4)+A(7)+(0,20)
A(0)+A(3)+(0,43)
A(1)+(0,8)
A(5)+A(6)+A(7)+(0,5)
A(5)+A(6)+(0,47)
A(0)+A(4)+(0,36)
A(1)+(1-7,8)
A(0)+A(2)+A(3)+(0,17)
A(5)+A(6)+(1-7,47)
A(0)+A(5)+(0,29)
A(2)+(0,42)
A(0)+A(3)+A(4)+(0,49)
A(5)+A(7)+(0,13)
A(0)+A(6)+(0,22)
A(2)+(1-7,42)
A(0)+A(4)+A(5)+(0,60)
A(6)+A(7)+(0,6)
A(0)+A(7)+(0,15)
A(3)+(0,35)
A(0)+A(5)+A(6)+(0,53)
A(6)+A(7)+(1-7,6)
A(1)+A(2)+(0,16)
A(3)+(1-7,35)
A(1)+A(2)+A(7)+(0,55)
A(0)+A(1)+A(2)+(0,3)
A(1)+A(2)+(1-7,16)
A(4)+(0,28)
A(2)+A(3)+A(7)+(0,58)
A(0)+A(1)+A(3)+(0,10)
A(1)+A(7)+(0,41)
A(4)+(1-7,28)
A(3)+A(4)+A(7)+(0,51)
A(0)+A(1)+A(4)+(0,44)
A(2)+A(3)+(0,48)
A(5)+(21)
A(4)+A(5)+A(7)+(0,46)
A(0)+A(1)+A(5)+(0,37)
A(2)+A(3)+(1-7,48)
A(5)+(1-7,21)
A(1)+A(2)+A(3)+(0,24)
A(0)+A(1)+A(6)+(0,30)
A(2)+A(7)+(0,34)
A(6)+(0,14)
A(2)+A(3)+A(4)+(0,56)
A(0)+A(1)+A(7)+(0,23)
A(3)+A(4)+(0,59)
A(6)+(1-7,14)
A(3)+A(4)+A(5)+(0,62)
A(0)+A(6)+A(7)+(0,40)
A(3)+A(4)+(1-7,59)
A(7)+(0,7)
A(4)+A(5)+A(6)+(0,39)
A(1)+A(6)+A(7)+(0,33)
A(3)+A(7)+(0,27)
A(0)+A(1)+(0,2)
Xây dựng 64 tổng kiểm tra cấp 2 cho từng dấu thông tin
Qua các tổng kiểm tra này, ta tạo được khoá giải mã được cho từng cặp dấu
thông tin.
3.4.2. Quá trình mã hoá
62
Quá trình mã hoá thực hiện các bước sau:
- Nhân ma trận chứa thông tin M[7x7] với ma trận G'[7x64] ta được ma trận
I[8x64] với hàng cuối cùng của I là tổng modulo 2 của các hàng ở trên (các hàng từ
0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 0 0 0 1
0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 0 0 1
1 1 0 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0
0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1
0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0
1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0
0 0 1 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0
0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 0 1
1 đến 7).
Sắp xếp ma tr ận này thành chu ỗi 512 bit thông tin. C ộng modulo 2 chu ỗi
11011000001110010011100000011001000110001001100110011000010110011101100
này với chuỗi thông tin có chứa 31 bít 1 ở trên :
ta được 512 bít đã được mã hoá và ghi vào tệp.
3.4.3. Quá trình giải mã
- Đọc dữ liệu 512 bit thông tin
1 0 1 1 0 0 0 1 0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 0 0 0 1
0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 0 0 1
1 1 0 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0
0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1
0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0
1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0
0 0 1 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0
0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 0 1
- Sắp xếp thành ma trận 8x64
- Nhân ma trận 8x64 với ma trận P-1
63
- Sử dụng các tổng kiểm tra để tạo lại ma trận thông tin 7x7.
0 1 1 0 1 0 0
0 1 0 1 1 1 1
1 1 0 0 0 1 0
0 1 1 0 0 1 1
0 1 0 1 1 1 0
1 0 1 0 1 0 0
0 0 1 0 0 1 0
Ø ø Œ œ Œ œ Œ œ Œ œ Œ œ Œ œ Œ œ Œ œ Œ œ º ß
- Nhân ma tr ận này với ma tr ận S-1 thu được ma tr ận thông tin (7x7) ban
đầu
1 0 0 0 1 1 0
0 0 1 0 0 1 1
0 0 1 1 0 0 1
M= 1 0 0 0 0 1 0
1 1 0 0 1 0 1
0 1 1 0 0 0 1
1 0 1 1 0 0 1
Ø ø Œ œ Œ œ Œ œ Œ œ Œ œ Œ œ Œ œ Œ œ Œ œ º ß
- Thực hiện lại quá trình mã hoá nhân ma tr ận M[7x7] với ma trận G' ta thu
0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 0 0 0 1
0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 0 0 1
1 1 0 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0
0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1
0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0
1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0
0 0 1 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0
0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 0 1
lại được ma trận I[8x64]
Sắp xếp ma tr ận này thành chu ỗi 512 bit thông tin. C ộng modulo 2 chu ỗi
64
này với chuỗi 512 bit thu được ban đầu ta tìm được 31 bit chứa thông tin ban đầu.
512 bit thu
được 512 bit mã
hoá lại ¯ Véctơ sai
có chứa 31
bít 1
Tiến hành ghép và s ắp xếp ma tr ận M[7x7] và đoạn dữ liệu có ch ứa 31 bit
1, ta lưu dữ liệu lại vào tệp và thu được chuỗi ký tự ban đầu: "123456789012347".
Hình 3.5: Chương trình phần mềm mã hoá và giải mã
Bảng 3.6: Đánh giá mã hoá và giải mã trên máy tính core 2 duo 2.26GHz
Dạng tệp
Kích thước
bản rõ (Kb)
Kích thước
bản mã (Kb)
Thời gian
mã hoá
Thời gian
giải mã
104 461 ~ 5s ~ 265 s .pdf
13 53 ~ 1s ~ 35 s .txt
264 1182 ~ 12s ~ 735 s .exe
26 47 ~ 1s ~ 28 s .doc
Tỷ lệ
bản mã / bản rõ
4.43
(461/104)
4.08
(53/13)
4.48
(1182/264)
1.80
(47/26)
65
3.5. Đánh giá hệ mật McEliece trên mã xyclic cục bộ
Ta nhận thấy nếu sử dụng thêm các ch ương trình nén dữ liệu phổ biến hiện
nay thì nâng cao được tốc độ truyền tin mật mà không ảnh hưởng đến độ chính xác
của bản tin. Chúng ta có thể sử dụng các hệ nén tự phát triển sẽ đem lại tính bảo mật
tốt hơn.
Phần mềm mã hoá và gi ải mã ch ạy th ử nghi ệm trên máy tính chip core 2
duo cho thấy dung lượng tệp mã hoá tăng lên 4 lần, quá trình giải mã tốn nhiều thời
gian từ 30 đến 60 lần mã hoá. K ết quả thử nghiệm cho thấy mã xyclic cục bộ hoàn
toàn có thể áp dụng vào được hệ mật McEliece.
Theo [7][9] đã chỉ ra rằng khả năng phá vỡ hệ mật McEliece là chưa có thể.
Trong quá kh ứ, một số nhà nghiên c ứu mã đã đưa ra một số cách th ức tấn công hệ
mật McEliece sử dụng mã Goppa [7][8][9].. Trong đó cách tấn công tốt nhất với độ
phức tạp ít nhất là lựa chọn lặp đi lặp lại một cách ngẫu nhiên k bít từ véc-tơ bản mã
n bít.
Để phá được hệ mật McEliece, ng ười thám mã ph ải thực hiện một số công
việc tính toán như sau:
- Thực hiện n! phép ch ọn ma trận hoán vị và có n! ma tr ận P-1 (ma trận nghịch đảo
của P tương ứng).
k
- Thực hiện phép ch ọn ma tr ận S[kxk]: gi ả sử nk là số các hàng độc lập tuyến tính
nC , khi ch ọn k hàng s ẽ có k! cách s ắp
k
k
k
có thể, số phép ch ọn k hàng trong n k sẽ là
nC .k! cách chọn S và cũng có
nC .k! S-1 tương ứng.
k
k
n
N
C
= (cid:229)
xếp. Như vậy có tất cả
h
i
n
=
i
3
cách - Thực hiện chọn G[kxn]. Vì m ỗi hàng có tr ọng số ≥ 3 do v ậy có
n
.(N! / k!.(N-k)!)
chọn hàng có thể và có Nh! / k!.(Nh-k)! cách chọn k hàng trong số Nh có thể có. Như
h
h
i
C
n
=
3
i
66
(cid:229) vậy sẽ có khả năng phải lựa chọn.
n
- Th ực hi ện ch ọn véc-tơ sai với các tr ọng số có th ể có, với số kh ả năng xảy ra là
i
C
n
=
1
i
(cid:229) .
- Vi ệc th ực hi ện thám mã theo nguyên lý vét c ạn có th ể th ực hi ện một trong ba
phương án sau:
+ Vét cạn theo các dấu thông tin: Phải thực hiện 249 = 5.63x1014 phương án.
+ Vét cạn theo số khóa: Phải thực hiện 88.8!.64!.7! = 4.32x10104 khóa.
+ Vét cạn theo số các vectơ sai có th ể có (thám mã theo ph ương pháp người
31
láng giềng gần nhất): Phải thực hiện thử các phương án sai có thể có, số các phương
i
31
512
i
0
i
- án này là: . (cid:229) C - -
3.6. Kết luận
Tóm lại với hệ mật McEliece s ử dụng mã xyclic c ục bộ ghép (512,49,64)
cùng với đề xuất sử dụng các gi ải thuật nén, sử dụng vectơ sai về bản chất là đoạn
dữ li ệu có ch ứa 31 bit 1 c ủa bản rõ cho phép nâng cao độ mật, tốc độ truy ền tin.
Thuật toán mã hoá và gi ải mã là t ường minh ch ứng minh sự đúng đắn về lý thuy ết
của mã xyclic cục bộ.
Trong chương này, chúng tôi đã đưa ra một phương pháp mới xây dựng hệ
mật McEliece trên mã xyclic c ục bộ. Trong đó có đề xuất cải tiến lược đồ mã hoá
của hệ mật McEliece bằng cách sử dụng các kỹ thuật nén dữ liệu trước khi mã hoá
67
dữ liệu và lựa chọn véc-tơ sai e được lấy từ nội dung bản rõ.
KẾT LUẬN CHUNG
Tóm tắt kết quả chính của luận văn
Với đề tài “Ứng dụng mã xyclic cục bộ xây dựng hệ mật”, luận văn này đã
được hoàn thành dưới sự hướng dẫn nhiệt tình của thầy TS. Phạm Việt Trung. Luận
văn được hoàn thành d ựa trên các ý t ưởng và đề xu ất mới của th ầy giáo, kết hợp
khả năng nghiên c ứu và tìm hi ểu của học viên. K ết qu ả chính c ủa lu ận văn được
tóm tắt như sau:
- Nghiên cứu một phương án xây dựng hệ mật McEliece trên mã xyclic cục bộ.
- Nghiên cứu sơ đồ thuật toán và xây d ựng thành công ch ương trình máy tính để
phân hoạch vành đa th ức theo nhóm nhân xyclic đơn vị để đưa ra các phân ho ạch
vành với k lớn.
- Nghiên cứu đề xuất cải tiến lược đồ mã hoá c ủa hệ mật McEliece bằng cách sử
dụng các k ỹ thu ật nén d ữ li ệu tr ước khi mã hoá d ữ li ệu và l ựa ch ọn véc-t ơ sai e
được lấy từ bản tin.
- Nghiên cứu thuật toán và xây d ựng thành công ch ương trình mã hoá và gi ải mã
của mã xyclic cục bộ (64,7,32) trên cơ sở phân hoạch vành số dấu thông tin bằng 8,
xây dựng thành công ph ương pháp giải mã cho mã xyclic c ục bộ theo phương pháp
giải mã ngưỡng theo đa số.
- Xây dựng hệ mật mã McEliece (512,49,64) trên c ơ sở mã XCB (64,7,32) và mã
ghép (8,7,2).
Kiến nghị về các hướng phát triển tiếp
Kết quả nghiên cứu trên đây có thể được phát triển theo các hướng sau:
- Lựa chọn các bộ mã có kh ả năng sửa sai lớn hơn để xây dựng hệ mật có độ bảo
mật cao hơn.
- Xây dựng hệ mật trên cơ sở sử dụng lý thuyết hàm Hash để mã hoá bản tin.
68
- Xây dựng hệ mật trên cơ sở tìm kiếm các hàm một chiều để mã hoá bản tin.
TÀI LIỆU THAM KHẢO
1. Nguyễn Bình (1996), Một số thu ật toán xây d ựng hệ mật mã McEliece , Tạp
chí Khoa học và kỹ thuật, số 77.
2. Nguyễn Bình (1998), Các mã xyclic cục bộ trên vành đa thức, Tạp chí KHKT
– HVKTQS.
3. Nguyễn Bình (2004), Giáo trình mật mã học, Nhà xuất bản Bưu Điện.
4. Nguyễn Xuân Qu ỳnh, Nguy ễn Th ế Truy ện (1996), Thuật toán thi ết lập hệ
Tổng kiểm tra trực giao cho mã xyclic cục bộ, Hội nghị tự động hoá toàn quốc
lần thứ 2.
5. Trần Đức Sự (2003), Mã xyclic c ục bộ tự đối xứng - Đặc tính, thu ật toán,
chương trình lập và giải mã, Luận văn tiến sĩ kỹ thuật.
6. Vũ Việt (2003), Đánh giá hiệu quả của mã xyclic c ục bộ, Luận văn tiến sĩ kỹ
thuật.
7. A Kh. Al Jabri (1998), A new class of attacks on McEliece public-key and
related cryptosystems, Elect. Eng. Dept., King Saud University.
8. Kazukumi Kobara and Hideki Imai. (2003), On the one-wayness against
chosen-plaintext attacks of the loidreau’s modified McEliece PKC , IEEE
Transactions on information theory, Vol. 49, NO. 12.
9. Lee P.J and Brickell .E.F. (1998), An observaion on the security of
McEliece’s public-key cryptosystem , Bell Communications Research,
Morristown, N.J., 07960 U.S.A.
10. McEliece .R. (1978), A public - key cryptosystem based on algebraic coding
theory, DSN Progress Report, 42 - 44, pp 114 - 116.
11. Stinson Douglas R. (2002), Cryptography Theory and Practice , Chaman and
69
Hall/CRC.