SlideShare une entreprise Scribd logo
1  sur  71
1
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
-------------------
PHẠM XUÂN CÔNG
ỨNG DỤNG MÃ XYCLIC CỤC BỘ
XÂY DỰNG HỆ MẬT
LUẬN VĂN THẠC SĨ KHOA HỌC
Hà Nội – 2010
2
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
-------------------
PHẠM XUÂN CÔNG
ỨNG DỤNG MÃ XYCLIC CỤC BỘ
XÂY DỰNG HỆ MẬT
Chuyên ngành: Bảo đảm toán học cho máy tính và hệ thống tính toán
Mã số: 60.46.35
LUẬN VĂN THẠC SĨ KHOA HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS. PHẠM VIỆT TRUNG
Hà Nội – 2010
MỤC LỤC
MỤC LỤC............................................................................................................. 1
CÁC CHỮ VIẾT TẮT.......................................................................................... 3
DANH MỤC BẢNG BIỂU ................................................................................... 4
DANH MỤC HÌNH VẼ........................................................................................ 5
MỞ ĐẦU ............................................................................................................... 6
CHƯƠNG 1 - TỔNG QUAN VỀ HỆ MẬT ...................................................10
1.1. Khái quát chung hệ mật mã cổ điển ...........................................................10
1.1.1. Mô hình hệ thống truyền tin mật...........................................................10
1.1.2. Một số hệ mật mã cổ điển điển hình......................................................11
1.2. Hệ mật khoá công khai...............................................................................13
1.2.1. Khái quát chung....................................................................................13
1.2.2. Nguyên tắc chung mã hoá với khoá công khai ......................................14
1.2.3. Quá trình phát triển của hệ mật mã khoá công khai...............................14
1.3. Kết luận .....................................................................................................24
CHƯƠNG 2 - LÝ THUYẾT VỀ MÃ XYCLIC CỤC BỘ VÀ PHÂN
HOẠCH VÀNH ĐA THỨC ................................................................................25
2.1. Khái niệm mã xyclic và vành đa thức.........................................................25
2.1.1. Mã tuyến tính........................................................................................25
2.1.2. Vành đa thức.........................................................................................26
2.1.3. Mã xyclic..............................................................................................28
2.1.4. Mã hoá cho mã xyclic...........................................................................30
2.1.5. Giải mã ngưỡng....................................................................................31
2.1.6. Khái niệm mã xyclic cục bộ..................................................................34
2.1.7. Mối quan hệ giữa mã xyclic và xyclic cục bộ........................................34
2.1.8. Mã xyclic cục bộ xây dựng trên các nhóm nhân xyclic .........................35
2.2. Phân hoạch vành đa thức theo nhóm nhân xyclic.......................................35
2.2.1. Phân hoạch của vành theo các nhóm nhân xyclic..................................35
2.2.2. Phân hoạch vành đa thức theo nhóm nhân xyclic đơn vị .......................37
2.2.3. Thuật toán xây dựng vành đa thức theo nhóm nhân xyclic đơn vị .........39
2.3. Kết luận .....................................................................................................41
CHƯƠNG 3 - XÂY DỰNG HỆ MẬT MCELIECE TRÊN MÃ XCB..........42
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.........................................................................................................42
3.1.1. Tiêu chí lựa chọn bộ mã XCB để xây dựng hệ mật McEliece................42
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ộ......42
2
3.2. Sơ đồ khối xây dựng hệ mật McEliece với mã xyclic cục bộ.......................43
3.2.1. Sơ đồ mã hoá........................................................................................43
3.2.2. Sơ đồ giải mã........................................................................................46
3.3. Về một phương pháp xây dựng hệ mật McEliece trên mã XCB...................48
3.3.1. Phương pháp tạo khoá mã.....................................................................48
3.3.2. Thuật toán mã hoá ................................................................................50
3.3.3. Thuật toán giải mã ................................................................................53
3.4. Nghiên cứu thử nghiệm hệ mật McEliece trên mã xyclic cục bộ.................59
3.4.1. Quá trình tạo khoá ................................................................................59
3.4.2. Quá trình mã hoá ..................................................................................62
3.4.3. Quá trình giải mã ..................................................................................63
3.5. Đánh giá hệ mật McEliece trên mã xyclic cục bộ.......................................66
3.6. Kết luận .....................................................................................................67
KẾT LUẬN CHUNG...........................................................................................68
TÀI LIỆU THAM KHẢO ...................................................................................69
3
CÁC CHỮ VIẾT TẮT
deg Bậc của đa thức (degree )
UCLN Ước chung lớn nhất (gcd)
ord Cấp (order)
XCB xyclic cục bộ
4
DANH MỤC BẢNG BIỂU
Bảng 2.1: Các mã xyclic trên vành Z2[x]/x7
+1
Bảng 2.2: Phân hoạch vành Z2[x]/x5
+1 theo nhóm nhân xyclic đơn vị
Bảng 2.3: Phân hoạch vành với a(x) = 1 + x + x2
Bảng 2.4: Kết quả phân hoạch vành đa thức trên máy tính core 2 duo 2.26GHz
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
Bảng 3.2: Các lớp kề lựa chọn để xây dựng bộ mã (64,8,32)
Bảng 3.3: Ma trận G1 (8,64)
Bảng 3.4: Ma trận sinh G (7,64)
Bảng 3.5: Các dữ liệu nhị phân của 10 ký tự là: "1234567890"
Bảng 3.6: Đánh giá hiệu suất phần mềm mã hoá và giải mã
5
DANH MỤC HÌNH VẼ
Hình 1.1: Mô hình hệ thống truyền tin mật
Hình 2.1: Thiết bị mã hoá cho mã xyclic (n,k) có đa thức sinh g(x)
Hình 2.2: Cấu trúc vành Z2[x] / xn
+1
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ị
Hình 2.4. Chương trình tính phân hoạch vành theo nhóm nhân xyclic đơn vị
Hình 3.1: Sơ đồ khối xây dựng hệ mật McEliece với mã XCB – Sơ đồ mã hoá
Hình 3.2: Sơ đồ khối xây dựng hệ mật McEliece với mã XCB – Sơ đồ giải mã
Hình 3.3: Sơ đồ thuật toán mã hoá
Hình 3.4: Sơ đồ thuật toán giải mã
Hình 3.5: Chương trình phần mềm mã hoá và giải mã
6
MỞ ĐẦU
Ngày nay với sự phát triển mạnh mẽ của công nghệ thông tin và truyền
thông, máy tính và mạng máy tính đang ngày càng đóng vai trò thiết yếu trong mọi
lĩnh vực hoạt động của toàn xã hội. Dữ liệu trao đổi trên mạng chứa rất nhiều thông
tin quan trọng cần được bảo vệ nên an toàn thông tin truyền trên mạng đóng một vai
trò rất quan trọng. Trong những thập kỷ 70 và 80 của thế kỷ trước công nghệ mã
hoá thông tin đã có bước phát triển vượt bậc. Các công nghệ mã hoá hiện đại đều
không dựa vào khả năng giữ bí mật về công nghệ mã hoá (thuật toán là công khai)
mà chỉ dựa vào bí mật chìa khoá giải mã, một hệ mật như vậy được gọi là hệ mật
khoá công khai. Hệ mật này đáp ứng được đầy đủ đòi hỏi về bảo mật thông tin và
phù hợp cho các ứng dụng rộng rãi trong cộng đồng. Trong thời gian gần đây, nhiều
thuật toán tốt đã được xây dựng song song với tốc độ phát triển của công nghệ
thông tin nói chung, tuy nhiên đó là những thuật toán và công nghệ mã hoá do nước
ngoài cung cấp, do vậy để bảo vệ các thông tin, đặt biệt trong lĩnh vực an ninh quốc
phòng, chúng ta phải tự mình xây dựng các giải pháp cho bảo mật thông tin.
Ý tưởng về một hệ mật khoá công khai được Diffie và Hellman đưa ra vào
năm 1976, sau đó Rivesrt, Shamir và Adleman đưa ra hệ mật nổi tiếng RSA vào
năm 1977. Tiếp theo đó một số hệ mật dựa trên các thuật toán khác nhau ra đời,
trong đó, quan trọng nhất là các hệ mật khoá công khai sau:
- Hệ mật RSA: Độ bảo mật của hệ RSA dựa trên độ khó của việc phân tích ra thừa
số nguyên lớn.
- Hệ mật xếp ba lô Merkle – Hellman: Hệ này và các hệ liên quan dựa trên tính khó
giải của bài toán tổng các tập con (bài toán NP đầy đủ). Tuy nhiên, tất cả các hệ mật
xếp ba lô khác nhau đều đã chứng tỏ là không mật (ngoại trừ hệ mật Chor-Rivest).
- Hệ mật McEliece: Hệ mật này dựa trên lý thuyết mã hoá đại số và vẫn còn được
coi là an toàn. Hệ mật McEliece dựa trên bài toán giải mã cho các mã tuyến tính
(cũng là một bài toán NP đầy đủ).
7
- Hệ mật ElGamal: Hệ mật ElGamal dựa trên tính khó giải của bài toán logarithm
rời rạc trên các trường hữu hạn .
- Hệ mật Chor-Rivest: Hệ mật Chor-Rivest cũng được xem như một hệ mật xếp ba
lô, hiện nay nó vẫn được coi là an toàn.
- Hệ mật trên các đường cong Elliptic: Các hệ mật này là biến tướng của các hệ mật
khác (chẳng hạn như hệ mật ElGamal), chúng làm việc trên các đường cong Elliptic
chứ không phải là trên các trường hữu hạn. Hệ mật này đảm bảo độ mật với số khoá
nhỏ hơn các hệ mật khoá công khai khác.
Trong các hệ mật khoá công khai ở trên, duy nhất có hệ mật McEliece dựa
trên lý thuyết mã đại số để xây dựng hệ mật, với ứng dụng cụ thể là mã Goppa.
Từ năm 1987, GS.TSKH. Nguyễn Xuân Quỳnh và PGS.TS Nguyễn Bình
lần đầu tiên đề xuất phương pháp xây dựng mã xyclic cục bộ (XCB) [1][2][3][4],
cùng với các kết quả nghiên cứu của các nghiên cứu sinh [5][6], mở ra khả năng có
thể nghiên cứu phát triển tiếp lý thuyết về mã xyclic cục bộ. Các kết quả nghiên cứu
trước đây đã đưa ra các phương pháp phân hoạch tổng quát vành theo các nhóm
nhân xyclic khác nhau trong vành. Phương pháp giải mã cho xyclic cục bộ dùng
phương pháp giải mã ngưỡng biểu quyết theo đa số, giải mã ngưỡng một cấp hoặc
hai cấp ngưỡng. Việc cải tạo các mã xyclic cục bộ thành các mã tối ưu được sử
dụng theo các phương pháp sử dụng dấu kiểm tra chẵn, sử dụng dấu thông tin giả,
các lớp mã xyclic cục bộ tự trực giao và có khả năng trực giao đã được đưa ra.
Các ưu điểm nổi bật của mã xyclic cục bộ là khả năng lựa chọn mã phong
phú, thuật toán mã hoá và giải mã là tường minh, có hướng mở cho các nghiên cứu
kế tiếp. Chính vì vậy, chúng tôi đã chọn đề tài “Ứng dụng mã xyclic cục bộ xây
dựng hệ mật” với mục đích ứng dụng khả năng của mã xyclíc cục bộ để xây dựng
một hệ mật khoá công khai dựa trên hệ mật McEliece.
8
Mục đích của luận văn
Xây dựng một hệ mật khoá công khai dựa trên lược đồ hệ mật McEliece sử
dụng mã xyclic cục bộ.
Đối tượng nghiên cứu
Lý thuyết về mật mã, hệ mật khoá công khai, lý thuyết số, đại số, lý thuyết
mã xyclic cục bộ.
Ý nghĩa khoa học và thực tiễn của luận văn
Về khoa học: Nghiên cứu của luận văn góp phần làm phong phú thêm về lý
thuyết mã xyclic cục bộ, chứng minh một khả năng mới xây dựng hệ mật khoá công
khai dựa trên lý thuyết mã đại số.
Về thực tiễn: Kết quả nghiên cứu sẽ đưa ra một khả năng có thể ứng dụng
trong thực tế, góp phần nâng cao tính bảo mật của thông tin trên đường truyền.
Phương pháp tiếp cận: Dựa trên cơ sở toán học về lý thuyết đại số, lý
thuyết số học, các thuật toán để xây dựng các hệ mật khoá công khai, các giải thuật
lập trình.
Phương pháp nghiên cứu: Nghiên cứu lý thuyết mới về mã xyclic cục bộ.
Ứng dụng các kết quả mới nhất về mã xyclic cục bộ vào hệ mật McEliece.
Nội dung của luận văn
- Tìm hiểu hệ mật khoá công khai McEliece
- Nghiên cứu về mã xyclic cục bộ, tìm hiểu một phương án phân hoạch tổng quát
vành theo nhóm nhân xyclic đơn vị.
- Xây dựng một hệ mật dựa trên lược đồ McEliece sử dụng mã xyclic cục bộ.
Nội dung của luận văn được chia thành các chương sau:
9
Chương 1. Nghiên cứu tổng quan về hệ mật: Khái quát chung về hệ mật mã cổ
điển, sự ra đời của hệ mật khoá công khai, phân tích hệ mật khoá công
khai dựa trên thuật toán McEliece.
Chương 2. Các nghiên cứu về mã xyclic cục bộ, nghiên cứu thuật toán phân
hoạch vành dựa trên nhóm nhân xyclic đơn vị. Viết chương trình và
chạy thử phân hoạch vành đa thức. Nghiên cứu phương án sử dụng
mã xyclic cục bộ xây dựng hệ mật khoá công khai dựa trên thuật toán
McEliece.
Chương 3. Xây dựng hệ mật McEliece trên mã xyclic cục bộ: Về một phương
pháp xây dựng hệ mật McEliece trên mã xyclic cục bộ, xây dựng
thuật toán mã hoá và giải mã. Xây dựng thuật toán và viết chương
trình thử nghiệm hệ mật.
Kết luận. Kết luận về kết quả nghiên cứu và kiến nghị về hướng phát triển tiếp
theo.
10
Chương 1 - TỔNG QUAN VỀ HỆ MẬT
Chương này trình bày tổng quan về quá trình hình thành và phát triển các
hệ mật cổ điển và hệ mật khoá công khai, trong đó đi sâu phân tích về hệ mật
McEliece làm tiền đề cho các chương tiếp theo.
1.1. Khái quát chung hệ mật mã cổ điển
1.1.1. Mô hình hệ thống truyền tin mật
Nhiệm vụ cơ bản của mật mã là tạo ra khả năng liên lạc trên một kênh
không mật cho hai người sử dụng sao cho người thám mã không thể hiểu được nội
dung thông tin được truyền đi. Thông tin mà người gửi muốn gửi cho người nhận có
cấu trúc tuỳ ý. Người gửi sẽ mã hoá bản tin (bản rõ) bằng một khoá đã được xác
định trước và gửi bản mã tới người nhận qua kênh thông tin. Người thám mã không
thể xác định được nội dung của bản rõ, nhờ có khoá mật KD người nhận có thể giải
mã và thu được bản rõ. Mô hình hệ thống truyền tin mật được mô tả trên hình sau:
Hình 1.1: Mô hình hệ thống truyền tin mật
Theo quan niệm toán học ta có định nghĩa về hệ mật như sau [11]:
Định nghĩa 1.1
Một hệ mật là bộ 5 (R, M, K, E, D) thoả mãn các điều kiện sau:
Nguồn tin
Thám mã
Bộ giải mãBộ mã hoá Nhận tin
Kênh an toàn
truyền khoá
Nguồn
khoá
Bản rõ Bản rõBản mã
KE KD(Người gửi) (Người nhận)
(Người thám mã)
11
1. R là một tập hữu hạn các bản rõ có thể.
2. M là tập hữu hạn các bản mã có thể.
3. K (không gian khoá) là tập hữu hạn các khoá có thể.
4. Đối với mỗi k∈ K có một quy tắc mã ek ∈ E và một quy tắc giải mã tương ứng
dk ∈ D. Mỗi ek: R → M và dk: M → R là những hàm mà:
dk(ek(x)) = x với mọi bản rõ x ∈ R
Theo định nghĩa trên nếu một bản rõ x được mã hoá bằng ek và bản mã
nhận được giải mã bằng dk thì ta phải thu được bản rõ ban đầu x. Người nhận và
người gửi sẽ áp dụng thủ tục sau dùng hệ mật khoá riêng. Trước tiên, họ chọn một
khoá ngẫu nhiên k ∈ K. Tiếp theo, giả sử người gửi muốn gửi một thông báo cho
người nhận trên một kênh không mật và ta xem thông báo này là một chuỗi:
x = x1 x2 … xn
với số nguyên n ≥ 1 nào đó. Với xi ∈ R, 1 ≤ i ≤ n, mỗi xi đều sẽ được mã hoá bằng
quy tắc mã ek với khoá k xác định trước. Người gửi sẽ tính:
yi = ek(xi), 1 ≤ i ≤ n
Chuỗi bản mã nhận được: y = y1 y2 … yn sẽ được gửi trên kênh. Khi nhận được y,
người nhận sẽ giải mã bằng dk và thu được bản rõ x = x1x2 … xn.
Hàm mã hoá ek phải là hàm ánh xạ một – một, nếu không việc giải mã sẽ
không thể thực hiện được một cách tường minh. Chú ý rằng nếu R = M thì mỗi hàm
mã hoá sẽ là một phép hoán vị, tức là nếu tập các bản mã và tập các bản rõ là đồng
nhất, thì mỗi một hàm mã sẽ là một sự sắp xếp lại (hay hoán vị) các phần tử của tập
này.
Hệ mật mã cổ điển (hệ mã bí mật hay hệ mã đối xứng) là hệ mã trong đó
việc mã hoá và giải mã cùng sử dụng chung một khoá bí mật.
1.1.2. Một số hệ mật mã cổ điển điển hình
1.1.2.1 Mã dịch vòng
12
Hệ mật được xây dựng dựa trên số học modulo. Ký hiệu m là số chữ cái của
bộ chữ xây dựng bản rõ R. Mã dịch vòng được định nghĩa như sau. Theo định nghĩa
1.1, cho R = M = K = Zm với 0 ≤ k ≤ (m - 1) và x, y ∈ Zm, ta định nghĩa:
ek(x) = (x + k) mod m
và dk(x) = (y – k) mod m
Các hệ mã hiện đại về thực chất là sự cải tiến của hệ mã dịch vòng. Về bản
chất, mã hoá một văn bản tiếng Anh thông thường là sự thiết lập sự tương ứng giữa
các chữ cái với các số theo modulo 26. Tính bảo mật của hệ mã dịch vòng nói
chung là không cao, người ta có thể dùng phương pháp tìm khoá vét cạn để xác định
bản rõ. Như vậy, điều kiện cần để một hệ mật an toàn là phép tìm khoá vét cạn
không thể thực hiện được.
1.1.2.2 Mã thay thế
Mã thay thế về bản chất là xem phép mã hoá và giải mã như các hoán vị
của các ký tự và được định nghĩa như sau. Theo định nghĩa 1.1, cho R= M = Z26 , K
chứa mọi hoán vị có thể của m ký hiệu. Với mỗi phép hoán vị π ∈ K, ta định nghĩa:
eπ(x) = π(x) và dπ(y) = π -1
(y), trong đó π-1
là hoán vị ngược của π.
Về mã này, với các văn bản tiếng Anh khi cần mã hoá, mỗi khoá của mã
thay thế là một trong số 26! hoán vị. Do vậy, áp dụng phương pháp tìm khoá vét cạn
sẽ khó khăn hơn. mã thay thế có thể dễ dàng bị thám mã bằng phương pháp thống
kê. Cả hai hệ mã dịch vòng và mã thay thế được gọi là hệ thay thế đơn biểu. Về cơ
bản, cả hai hệ đều xoay quanh phép thay thế.
1.1.2.3 Mã hoán vị
Về ý tưởng mã hoán vị là thay đổi vị trí giữa các ký tự của bản rõ. Mã hoán
vị được định nghĩa như sau: Cho m là một số nguyên dương xác định nào đó. Theo
định nghĩa 1.1, cho R = M = (Z26)m
và K gồm tất cả các hoán vị π của {1, ..., m}.
Đối với một khoá π (tức là một hoán vị) ta xác định:
eπ(x1, ..., xm) = (xπ(1), ..., xπ(m)) và dπ(y1, ..., ym) = (yπ
-1
(1), ..., yπ
-1
(m))
13
1.1.2.4 Các hệ mã dòng
Trong các hệ mật nghiên cứu ở trên, các phần tử liên tiếp của bản rõ được
mã hoá bằng cùng một khoá k. Bản mã y nhận được có dạng:
y = y1y2 ... = eK(x1) eK(x2) ...
Các hệ mật thuộc dạng này thường được gọi là các mã khối. Trên một quan
điểm khác, người ta xây dựng các hệ mã dòng. Ý tưởng cơ bản ở đây là tạo ra một
dòng khoá z = z1z2z3... và dùng nó để mã hoá một xâu bản rõ x = x1x2x3... theo quy
tắc:
1 21 2 Z 1 Z 2y = y y ...= e (x )e (x )...
Về mặt toán học mã dòng theo [11] được định nghĩa như sau:
Định nghĩa 1.2
Mật mã dòng là một bộ (R, M, K, L, F, E, D) thoả mãn các điều kiện sau:
1. R là tập hữu hạn các bản rõ có thể.
2. M là tập hữu hạn các bản mã có thể.
3. K là tập hữu hạn các khoá có thể (không gian khoá).
4. L là tập hữu hạn bộ chữ của dòng khoá.
5. F = (f1f2 ...) là bộ tạo dòng khoá. Với i ≥ 1, fi: K × R-1
→ L
6. Với mỗi z ∈ L có một quy tắc mã ez ∈ E và một quy tắc giải mã tương ứng dz
∈ D thoả mãn dz(ez(x)) = x với mọi bản rõ x ∈ R.
Ta có thể coi mã khối là một trường hợp đặc biệt của mã dòng khi dùng khoá không
đổi zi = K, với ∀i ≥ 1.
1.2. Hệ mật khoá công khai
1.2.1. Khái quát chung
Việc xây dựng các hệ mật khoá công khai là thiết kế một hệ mật sao cho
khả năng tính toán để xác định quy tắc giải mã (dk) là rất thấp dù biết quy tắc mã
14
hoá ek. Vì vậy quy tắc mã hoá ek có thể được công khai rộng rãi. Ưu điểm của hệ
mật này là người gửi có thể gửi bản tin cho người nhận mà không cần thông tin
trước về khoá mật. Người nhận là người duy nhất có thể giải mã thông tin nhận
được nhờ sử dụng quy tắc giải mã dk.
Hàm mã khoá công khai ek là một hàm dễ tính toán. Việc tìm hàm ngược dk
(hàm giải mã) là cực kỳ khó khăn. Điều kiện cần thiết ek phải là hàm một chiều.
[11]
1.2.2. Nguyên tắc chung mã hoá với khoá công khai
Trong hệ thống có N đối tượng cùng trao đổi thông tin mật. Từng đối tượng
chọn cho mình một khoá lập mã k và hàm mã hoá ek được công khai. Như vậy có N
khoá lập mã công khai k1 ,k2 ,k3, ..., kn. Khi đối tượng i muốn gửi thông tin cho đối
tượng j thì dữ liệu được chuyển thành từng khối với độ dài nào đó, mỗi khối P trong
văn bản được mã hoá bằng khoá lập mã jke của đối tượng j, thông tin gửi đi có dạng:
jkM = e (P). Để giải mã, đối tượng j thực hiện: ( )j j jk k kd (M) = d e (P) = P .
Do jke và jkd là khoá lập mã và giải mã của đối tượng j nên các đối tượng
khác trong hệ thống không thể tìm ra khoá giải mã jkd trong thời gian chấp nhận
được mặc dù biết jke .
1.2.3. Quá trình phát triển của hệ mật mã khoá công khai
Các hệ mật khoá công khai được nghiên cứu và phát triển mạnh mẽ vào
cuối những năm 70 của thế kỷ trước. Các hệ mật điển hình đã được tập trung nghiên
cứu phát triển và đưa vào ứng dụng trong thực tế là hệ mật RSA, hệ mật RABIN, hệ
mật ELGAMAL, hệ mật CHOR-RIVEST, hệ mật McELIECE [11]..
1.2.3.1 Hệ mật RSA
Hệ RSA được xây dựng trên cơ sở mã mũ, trong đó khoá lập mã là cặp
(b,n), gồm số mũ b và mod n. Với n = p.q trong đó p và q là các số nguyên tố cực
lớn. Còn b được chọn là một số nguyên ngẫu nhiên sao cho UCLN(b,Φ(n)) = 1, với
15
Φ(n) là giá trị hàm Euler của n, ở đây Φ(n) = (p-1)(q-1). Đặt R = M = Zn và định
nghĩa K= {(n, p, q, a, b):
ab ≡ 1 (mod Φ(n))
Với k=(n, p, q, a, b) ta xác định
ek (x) = xb
mod n và dk (y) = ya
mod n
(x,y ∈ Zn). Các giá trị n và b được công khai và các giá trị p, q, a được giữ kín.
- Tạo khoá: Mỗi đối tượng trong hệ thống trao đổi thông tin cần tạo một khoá công
khai và một khoá riêng tương ứng theo các bước sau:
+ Tạo 2 số nguyên tố lớn ngẫu nhiên và khác nhau p và q.
+ Tính n = p.q và Φ(n) = (p - 1)(q - 1).
+ Chọn một số nguyên ngẫu nhiên b (0 < b < Φ(n)) sao cho: (b, Φ) = 1
+ Sử dụng thuật toán Euclide mở rộng để tính a = b-1
mod Φ(n).
+ Khoá công khai là cặp số (n,b). Khoá riêng bí mật là a.
- Mã hoá: B mã hoá một thông báo m để gửi cho A bản mã cần giải. B phải thực
hiện:
+ Thu nhận khoá công khai (n,b) của A.
+ Biểu diễn bản tin dưới dạng một số nguyên m trong khoảng [0,n - 1].
+ Tính c = mb
mod n.
+ Gửi bản mã c cho A.
- Giải mã: Khôi phục bản rõ m từ c. A phải thực hiện phép tính sau bằng cách dùng
khoá riêng m = ca
mod n.
- Đánh giá: Nếu ta chọn các số p và q vào khoảng 100 chữ số, thì n sẽ vào khoảng
200 chữ số như vậy hệ mật RSA được coi là an toàn. Để tránh bị rơi vào các trường
hợp đặc biệt (n bị phân tích nhanh nhờ những thuật toán mới) thì cần phải chọn (p –
1) và (q – 1) có toàn các ước nguyên tố nhỏ, UCLN (p – 1, q – 1) phải là số nhỏ.
16
Trong thực tế tốc độ mã hoá theo thuật toán RSA là rất chậm do vậy người
ta không ứng dụng hệ mật RSA cho mã hoá khối dữ liệu lớn mà thường chỉ tập
trung cho các vấn đề như: xác nhận chủ thể, tạo vỏ bọc an toàn cho văn bản mật..
1.2.3.2 Hệ mật ELGAMAL
Hệ mật ElGamal được xây dựng trên bài toán logarithm rời rạc. Việc mô tả
bài toán này được thiết lập trong trường hữu hạn Zp, p là số nguyên tố (Bài toán
logarithm rời rạc trong Zp) (Nhóm nhân *
pZ là nhóm nhân xyclicvà phần tử sinh
của *
pZ được gọi là phần tử nguyên thủy). Hệ mật ElGamal theo [11] được định
nghĩa như sau:
Định nghĩa 1.5:
Cho p là một số nguyên tố sao cho bài toán logarithm rời rạc trong Zp là khó giải.
Cho α ∈ *
pZ là phần tử nguyên thủy. Giả sử P = *
pZ , C = *
pZ x *
pZ . Ta định nghĩa:
K = {(p, α, a, β): β ≡ α a
(mod p)}
Các giá trị p, α, β được công khai, còn a giữ kín.
Với K = (p, α, a, β) và một số ngẫu nhiên bí mật k ∈ Zp, ta xác định:
ek(x, k) = (y1, y2)
trong đó: y1 = α k
mod p
y2 = x βk
mod p
với y1, y2 ∈ *
pZ ta xác định:
dk(x, k) = y2 ( 1
a
y )-1
mod p
Bài toán logarithm rời rạc trong Zp
Đặc trưng của bài toán: I = (p, α, β) trong đó p là số nguyên tố, α ∈ Zp là phần tử
nguyên thủy, β ∈ *
pZ .
Mục tiêu: Hãy tìm một số nguyên duy nhất a, 0 ≤ a ≤ p – 2 sao cho:
17
αa
≡ β (mod p)
Bài toán logarithm rời rạc trong Zp là đối tượng trong nhiều công trình
nghiên cứu và được xem là bài toán khó nếu p được chọn cẩn thận. Cụ thể là không
có một thuật toán thời gian đa thức nào cho bài toán logarithm rời rạc. Để gây khó
khăn cho các phương pháp tấn công đã biết, p phải có ít nhất 150 chữ số và (p - 1)
phải có ít nhất một thừa số nguyên tố lớn. Lợi thế của bài toán logarithm rời rạc
trong xây dựng hệ mật là khó tìm được các logarithm rời rạc, song bài toán ngược
lấy lũy thừa lại có thể tính toán hiệu quả theo thuật toán nhân và bình phương. Nói
cách khác, lũy thừa theo modulo p là hàm một chiều với các số nguyên tố p thích
hợp.
Elgamal đã phát triển một hệ mật khóa công khai dựa trên bài toán
logarithm rời rạc. Hệ mật Elgamal là một hệ mật không tất định vì bản mã phụ
thuộc vào cả bản rõ x lẫn giá trị ngẫu nhiên do người mã hóa chọn. Bởi vậy, sẽ có
nhiều bản mã được mã từ cùng bản rõ.
1.2.3.3 Hệ mật xếp ba lô MERKLE – HELLMAN
Hệ mật xếp ba lô Merkle – Hellman nổi tiếng lần đầu được Merkle-
Hellman mô tả vào năm 1978. Mặc dù hệ mật này và một vài biến thể của nó đã bị
phá vào đầu những năm 1980, nhưng nó vẫn là một cống hiến có giá trị do sự tinh tế
về khái niệm và kỹ thuật thiết kế có tính nền tảng của mình. Hệ thống này xây dựng
trên cơ sở bài toán tổng tập con (là bài toán NP-đầy đủ).
Với một danh sách các cỡ (s1, s2, s3,.., sn) là một dãy siêu tăng nếu:
1
1
j
j i
i
s s
−
=
> ∑
với 2 ≤ j ≤ n. Nếu danh sách các cỡ là một dẫy siêu tăng thì dạng tìm kiếm của bài
toán tổng các tập con có thể giải rất dễ dàng với thời gian O(n) và nghiệm x (nếu
tồn tại) phải là nghiệm duy nhất.
Giả sử s = (s1,...,sn) là một dẫy siêu tăng, xét hàm
18
1
:{0,1} {0,..., }
n
n
s i
i
e s
=
→ ∑
Hàm này được xác định như sau:
1
1
( ,..., )
n
s n i i
i
e x x x s
=
= ∑
Từ đó có thể dùng es như một quy tắc mã hoá. Vì s là một dẫy siêu tăng nên
es là một đơn ánh và thuật toán để giải trường hợp siêu tăng của bài toán tổng các
tập con sẽ là thuật toán giải mã tương ứng. Tuy nhiên một hệ thống như vậy sẽ hoàn
toàn mất an toàn vì bất kỳ ai cũng có thể giải mã một bản tin theo cách trên. Vấn đề
cơ bản ở đây là biến đổi danh sách các cỡ theo cách sao cho nó không còn là dãy
siêu tăng nữa. Người nhận sẽ không thể áp dụng một phép biến đổi ngược để khôi
phục lại danh sách siêu tăng các cỡ. Mặt khác, người thám mã (không biết phép
biến đổi được dùng) phải đối mặt với bài toán tổng quát (là một bài toán khó của bài
toán tổng các tập con) trong khi cố gắng giải mã một bản mã.
Một kiểu biến đổi thích hợp là phép biến đổi theo modulo, điều này có
nghĩa là phép biến đổi modulo p được chọn sao cho:
0
n
i
i
p s
=
> ∑
Ta chọn thừa số a thoả mãn 1 ≤ a ≤ p-1. Sau đó xác định:
ti = a si mod p
1 ≤ i ≤ n. Danh sách các cỡ t = (t1,.., tn) là khoá công khai được dùng để mã hoá.
Các giá trị a, p dùng để xác định phép biến đổi theo modulo sẽ được giữ kín. Theo
[11] ta có định nghĩa sau:
Định nghĩa 1.6:
Cho s = (s1,....,sn) là một danh sách các số nguyên siêu tăng. Cho
1
n
i
i
p s
=
> ∑
là một số nguyên tố và 1 ≤ a ≤ p-1. Với 1 ≤ i ≤ n, ta xác định:
19
ti = a si mod p
và ký hiệu t = (t1,...,tn).
Giả sử P = {0,1}n
, C = {0,...,n(p-1)} và cho K={(s,p,a,t)}. Trong đó s, a, p
và t là các số được xây dựng như trên t được công khai, còn p, a và s được giữ kín.
Với K ={(s,p,a,t)} ta định nghĩa:
1
1
( ,.. )
n
K n i i
i
e x x x t
=
= ∑
với 0 ≤ y ≤ n(p-1) ta xác định z = a-1
y mod p và giải bài toán tập con (s1,..., sn,z), ta
sẽ được:
dK(y) = (x1,...,xn)
1.2.3.4 Hệ mật McEliece
Hệ mật McEliece [11] sử dụng nguyên lý tương tự như hệ mật Merkle-
Hellman. Phép giải mã là một trường hợp đặc biệt của bài toán NP đầy đủ. Trong hệ
thống này, bài toán NP được áp dụng ở đây là bài toán giải mã cho một mã sửa sai
(nhị phân) tuyến tính nói chung. Tuy nhiên, đối với nhiều lớp mã đặc biệt tồn tại các
thuật toán thời gian đa thức. Một trong những lớp mã này là mã Goppa, chúng được
dùng làm cơ sở cho hệ mật McEliece.
Định nghĩa 1.7
Coi k, n là các số nguyên dương, k ≤ n. Mã C[n,k] là một không gian con k
chiều của (Z2)n
(không gian véc-tơ của tất cả các véc-tơ nhị phân n chiều). Ma trận
sinh của mã C[n,k] là ma trận nhị phân k n× , các hàng của ma trận này tạo nên cơ
sở của C.
Coi x,y ∈ (Z2)n
, trong đó x = (x1, x2,..,xn) và y = (y1,…,yn). Ta xác định khoảng cách
Hamming:
d(x,y) = |{i: 1 ≤ i ≤ n, xi ≠ yi}|
tức là số các tọa độ mà ở đó x và y khác nhau.
20
Coi C là mã [n,k]. Khoảng cách mã C được định nghĩa như sau:
d(C) = min{d(x, y): x, y ∈ C, x ≠ y}
Mã [n, k] có khoảng cách d được ký hiệu là mã [n, k, d].
Mã sửa sai được dùng để sửa các sai ngẫu nhiên xảy ra khi truyền số liệu
qua kênh có nhiễu. Giả sử G là một ma trận sinh đối với mã [n, k, d], x là véc-tơ nhị
phân k chiều cần truyền. Người gửi sẽ mã hóa x thành một véc-tơ n chiều y = x.G
rồi truyền y qua kênh.
Giả sử người nhận nhận được véc-tơ n chiều r không giống y, người nhận
sẽ giải mã r bằng chiến thuật giải mã “người láng giềng gần nhất”. Theo chiến thuật
này, người nhận sẽ tìm thấy từ mã y’ có khoảng cách tới r nhỏ nhất. Sau đó sẽ giải
mã r thành y’, rồi xác định véc-tơ k chiều x’ sao cho y’ = x’G. Người nhận hy vọng
y’= y và bởi vậy x’= x (tức là người nhận tin rằng các sai số trên đường truyền đã
được sửa). Dễ dàng thấy rằng, nếu sai số trên đường truyền nhiều nhất là (d - 1)/2
thì sẽ sửa được tất cả các sai.
Trên thực tế, thuật toán giải mã này được thực hiện như sau: Vì |C| = 2k
nên
người nhận so sánh r với mỗi từ mã phải kiểm tra, 2k
véc-tơ là một số lớn theo hàm
mũ so với k. Nói cách khác, thuật toán này không phải là thuật toán thời gian đa
thức.
Một biện pháp khác (tạo cơ sở cho nhiều thuật toán giải mã thực tế) dựa
trên khái niệm về syndrom. Ma trận kiểm tra tính chẵn lẻ của mã C[n,k,d] - có ma
trận sinh G - là một ma trận nhị phân (n - k) x n chiều (ký hiệu là H). Các hàng của
H sẽ tạo cơ sở cho các phần bù trực giao của C (ký hiệu là C⊥
) và được gọi là mã
đối ngẫu với C. Các hàng của H là những véc-tơ độc lập tuyến tính, còn GH⊥
là một
ma trận không, cấp k x (n-k).
Cho véc-tơ r∈(Z2)n
, ta xác định syndrom của r là Hr⊥
. Syndrom Hr⊥
là một
véc-tơ cột có (n-k) thành phần.
Định lý 1.1
21
Giả sử C là một mã [n, k] có ma trận sinh G và ma trận kiểm tra tính chẵn lẻ H. Khi
đó y ∈ (Z2)n
là một từ mã khi và chỉ khi
T
0
0
.
H.y =
.
.
0
 
 
 
 
 
 
 
  
 
Hơn nữa nếu y ∈ C, e ∈ (Z2)n
và r = y + e thì HrT
= HeT
.
Ta coi e là véc-tơ sai xuất hiện trong quá trình truyền từ mã y. Khi đó r biểu
diễn véc-tơ thu được. Định lý trên phát biểu rằng syndrom chỉ phụ thuộc vào các sai
số mà không phụ thuộc vào từ mã cụ thể nào được truyền đi. Điều này đưa tới một
cách giải mã gọi là giải mã theo syndrom:
- Tính s = HrT
- Nếu s là một véc-tơ toàn không, thì giải mã r thành r.
- Nếu không thì tính HeT
cho từng véc-tơ sai (có trọng số 1).
- Nếu có một véc-tơ e nào đó thỏa mãn HeT
= s thì giải mã r thành r-e.
- Ngược lại, tiếp tục tính HeT
cho các véc-tơ sai có trọng số 2,3,..., [(d-1)/ 2] cho
đến khi thỏa mãn HeT
= s thì giải mã r thành r-e.
Theo thuật toán này, có thể giải mã cho một véc-tơ nhận được trong nhiều
nhất
t
i
n
i=0
C∑ bước (t là số sai có thể sửa được).
Phương pháp này làm việc trên một mã tuyến tính bất kỳ. Đối với một số
loại mã đặc biệt, thủ tục giải mã có thể nhanh chóng hơn. Tuy nhiên, trên thực tế,
cách giải quyết này cho chiến thuật giải mã “người láng giềng gần nhất” vẫn là một
bài toán NP đầy đủ. Như vậy, vẫn chưa có một thuật toán thời gian đa thức cho
22
trường hợp tổng quát cho chiến thuật giải mã người láng giềng gần nhất. (Khi số
các sai số không bị giới hạn bởi [(d-1)/2]).
Cũng giống như bài toán tổng hợp tập con, có thể chỉ ra một trường hợp đặc
biệt “dễ”, sau đó ngụy trang sao cho nó giống với bài toán chung “khó”. Một trường
hợp “dễ” được McEliece đề nghị là dùng một mã trong lớp các mã Goppa. Trên
thực tế, mã này có thuật toán giải mã hữu hiệu. Hơn nữa mã này rất dễ tạo và trong
cùng một lớp mã có thể tạo một số lượng lớn các mã khác nhau.
Các tham số của mã Goppa có dạng n = 2m
, d = 2t +1 và k = n - mt. Để áp
dụng trong thực tế cho một hệ mật khóa công khai, McEliece đề nghị chọn m = 10
và t = 50. Điều này ứng với mã Goppa [1024,524,101]. Mỗi bản rõ là một véc-tơ
nhị phân có độ dài 524 và mỗi bản mã là một véc-tơ nhị phân độ dài 1024. Khóa
công khai là một ma trận nhị phân 524 x 1024.
Hệ mật McEliece được mô tả như sau:
Cho G là một ma trận sinh của một mã Goppa C[n, k, d], trong đó n = 2m
, d =
2t+1 và k = n - mt.
Cho S là một ma trận khả nghịch cấp k k× trên Z2.
Giả sử P là một ma trận hoán vị cấp n n× , ta đặt G’ = SGP.
Cho P = (Z2)2
, C = (Z2)n
và ký hiệu: K = {(G, S, P, G’)}
Trong đó G, S, P được xây dựng như mô tả ở trên và được giữ kín, còn G’ được
công khai.
Với K = (G, S, P, G’), ta định nghĩa: ek(x, e) = x.G’ + e.
Ở đây, e ∈ (Z2)n
là một véc-tơ ngẫu nhiên có trọng số t.
Người nhận giải mã bản mã y ∈ (Z2)n
theo các bước sau:
1. Tính: y1 = yP-1
.
2. Giải mã y1, người nhận tìm được: y1 = x1 + e1, x1∈C.
3. Tính x0 ∈ (Z2)k
sao cho: x0G=x1
23
4. Tính x = x0S-1
Để minh họa cho các thủ tục mã và giải mã, ta xét ví dụ sau :
Ma trận
1 0 0 0 1 1 0
0 1 0 0 1 0 1
0 0 1 0 0 1 1
0 0 0 1 1 1 1
G
 
 
 =
 
 
 
Là ma trận sinh của mã Hamming [7, 4, 3]. Giả sử người nhận chọn ma trận
S và ma trận P như sau:
1 1 0 1
1 0 0 1
0 1 1 1
1 1 0 0
S
 
 
 =
 
 
 
và
0 1 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 0 0 1
1 0 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 0 0 1 0
0 0 0 0 1 0 0
P
 
 
 
 
 
=  
 
 
 
 
 
Khi đó ma trận sinh công khai là :
1 1 1 1 0 0 0
1 1 0 0 1 0 0
'
1 0 0 1 1 0 1
0 1 0 1 1 1 0
G
 
 
 =
 
 
 
Giả sử người gửi mã hóa bản rõ x = (1,1,0,1) bằng cách dùng một véc-tơ sai
ngẫu nhiên trọng số 1 có dạng e = (0,0,0,0,1,0,0). Bản mã tính được là:
y = xG’ + e
=
1 1 1 1 0 0 0
1 1 0 0 1 0 0
(1,1,0,1) (0,0,0,0,1,0,0)
1 0 0 1 1 0 1
0 1 0 1 1 1 0
 
 
 
 
 
 
+
= (0, 1, 1, 0, 0, 1, 0) + (0, 0, 0, 0, 1, 0, 0)
= (0, 1, 1, 0, 1, 1, 0)
24
Khi người nhận nhận được bản mã y, trước hết tính:
1
1
0 1 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 0 0 1
(0,1,1,0,1,1,0) 1 0 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 0 0 1 0
0 0 0 0 1 0 0
−
 
 
 
 
 
 
 
 
 
 
 
= =y yP = (1, 0, 0, 0, 1, 1, 1)
Tiếp theo người nhận giải mã y1 để nhận được x1 = (1, 0, 0, 0, 1, 1, 0) (cần
để ý là e1 ≠ e do phép nhân với P-1
). Sau đó lập x0 = (1, 0, 0, 0) (bốn thành phần đầu
tiên của x1). Cuối cùng người nhận tính:
1
0
1 1 0 1
1 1 0 0
(1,0,0,0) (1,1,0,1)
0 1 1 1
1 0 0 1
−
 
 
 
 
 
 
= = =x S x
Đây chính là bản rõ cần nhận được.
1.3. Kết luận
Trong chương này đã đề cập tới các nội dung về các hệ mật mã cổ điển và
các hệ mật mã khoá công khai, trên cơ sở phân tích các ưu nhược điểm của các hệ
mật, chúng ta nhận thấy rằng trong các hệ mật khoá công khai chỉ có hệ mật
McEliece là sử dụng lý thuyết mã đại số cụ thể là mã Goppa để xây dựng hệ mật.
Với sự phát triển của lý thuyết xây dựng mã xyclic cục bộ, chúng ta hoàn toàn có
thể tự xây dựng một hệ mật khoá công khai dựa trên lược đồ McEliece sử dụng mã
xyclic cục bộ.
25
Chương 2 - LÝ THUYẾT VỀ MÃ XYCLIC CỤC BỘ VÀ
PHÂN HOẠCH VÀNH ĐA THỨC
2.1. Khái niệm mã xyclic và vành đa thức
2.1.1. Mã tuyến tính
a) Mã tuyến tính
Mã tuyến tính độ dài n là mã mà từ mã của nó có các dấu mã là các dạng
tuyến tính.
Mã tuyến tính (n,k) là mã tuyến tính độ dài n trong đó ta có thể chỉ ra được
vị trí của k dấu thông tin trong từ mã.
Mã tuyến tính ngẫu nhiên là mã tuyến tính có các dấu mã được chọn ngẫu
nhiên từ các dạng tuyến tính có thể có.
b) Ma trận sinh và ma trận kiểm tra
Để đơn giản cho việc mô tả mã tuyến tính người ta thường sử dụng ma trận
sinh G[k x n]. Ma trận này chứa k véc-tơ hàng độc lập tuyến tính tạo nên không gian
mã V(n,k). Trong đại số tuyến tính ta biết rằng với mỗi G sẽ tồn tại ma trận H[r x n]
thỏa mãn:
G . HT
= 0, r = n - k
Ma trận H được gọi là ma trận kiểm tra của mã tuyến tính (n, k). Ta thấy
rằng H chứa r véc-tơ hàng trực giao với các véc-tơ hàng của G.
Hiển nhiên là nếu a là một véc-tơ mã a ∈ V(n,r) thì a.HT
= 0. Ở đây, H cũng
là một ma trận sinh của một mã tuyến tính V(n,r) và G lại chính là ma trận kiểm tra
của mã này. Ta có thể viết ra r phương trình:
1
0, 1,2,..,
n
j ij
j
a h i r
=
= =∑
Các phương trình này còn được gọi là các tổng kiểm tra của mã tuyến tính.
26
2.1.2. Vành đa thức
Nhóm hữu hạn <G,.>, với G = { αi
, ∀i } thì G gọi là nhóm xyclic sinh bởi
α, và α được gọi là phần tử sinh của nhóm.
Vành đa thức là tập hợp các đa thức thực hiện được hai phép toán cộng (+)
và nhân (.) đa thức theo modulo xn
+ 1, trong đó < f(x), + > tạo thành một nhóm còn
< f(x), . > tạo thành nửa nhóm. Ký hiệu vành đa thức là Rn. Nếu xét trên trường nhị
phân GF(2) thì vành đa thức được kí hiệu dưới dạng Z2[x]/xn
+1.
Trên vành đa thức Z2[x]/xn
+1 ta định nghĩa phép nhân modulo như sau:
a(x), b(x) là các đa thức của vành, a(x).b(x) = c(x) (mod xn
+1) cũng là một đa thức
của vành. Ví dụ, trên vành Z2[x]/x5
+1: a(x) = 1 + x4
, b(x) = x, phép nhân hai đa thức
này là c(x) = a(x).b(x)= (1+x4
)(x)= x5
+x = x+1 (mod x5
+1).
Ideal I của vành đa thức gồm tập các đa thức a(x) là bội của một đa thức
g(x) thỏa mãn:
- g(x) là ước của xn
+ 1.
- deg g(x) = min deg a(x) với mọi a(x) ∈ I, a(x) ≠ 0.
Ký hiệu Ideal I trong vành đa thức là I = <g(x)>.
Xét trong vành đa thức, đa thức a(x) =
1
0
n
i
i
i
a x
−
=
∑ 0 1 1( , ,..., )na a a a −⇔ = . Nhân
a(x) với nhân tử x ta có: b(x) = a(x). x = x.(
1
0
n
i
i
i
a x
−
=
∑ ) 1 0 2( , ,..., )n nb a a a− −⇔ = . Biểu
diễn của véc tơ b là dịch vòng sang phải một cấp so với của véc-tơ a.
* Phần tử đối xứng
a(x) được gọi là phần tử đối xứng của ( )a x nếu:
1
0
0
( ) ( ) ( )
−
=
+ = = ∑
n
i
i
a x a x c x x
với: ( ) , ( )
∈ ∈
= =∑ ∑i j
i j
i I j J
a x a x a x a x ,
27
I ∪ J = S = {0,1,2,…,n-1} , I ∩ J = ∅
Định lý 2.1 (Với n lẻ): Trong vành luôn luôn tồn tại đa thức có bậc lớn nhất bằng
m. Ký hiệu: m = max deg fi(x).
Cấp lớn nhất của một đa thức trong vành được xác định:
max ord a(x) = 2m
– 1, với ∀a(x) ∈ Rn.
Ví dụ: n = 9: x9
+ 1 = (1+ x)(1 + x + x2
)(1 + x3
+ x6
)
→ m = 6 → max ord a(x) = 26
– 1 = 63
Xét đa thức a(x) ∈ Rn ( Z2[x]/(xn
+1) ).
* Nhóm nhân xyclic đơn vị
Nhóm nhân xyclic đơn vị là nhóm bao gồm mọi đơn thức có bậc <n (nhóm
có n phần tử).
Ký hiệu là : I = { x, x2
, x3
, …, xn-1
, 1 }
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:
A = { a(x), (a(x))2
, (a(x))3
, …}
* 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:
A(a,q) = { a(x), a(x).q(x), a(x).q2
(x), …, a(x).qm-1
(x)}
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).
28
2.1.3. Mã xyclic
a) Định nghĩa
Định nghĩa 2.2
Mã xyclic (n, k) là ideal I = <g(x)> 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 Z2[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 (7,7) 1
1 + x (7,6) 2
1 + x + x3
(7,4) 3
1 + x2
+ x3
(7,4) 3
1 + x + x2
+ x4
(7,3) 4
1 + x2
+ x3
+ x4
(7,3) 4
1 + x + x2
+ x3
+ x4
+ x5
+ x6
(7,1) 7
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ư
sau:
29
1
( )
. ( )
...
. ( )k
g x
x g x
G
x g 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ó
thể mô tả như sau:
3
2 4
2 3 5
3 4 6
1 1 0 1 0 0 01
0 1 1 0 1 0 0
0 0 1 1 0 1 0
0 0 0 1 1 0 1
x x
x x x
G
x x x
x x 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) = xn
+ 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
là các đa thức trực giao.
Ta có h(x) =
0
k
j
j
j
h x
=
∑ , với h0 = hk = 1, hj ∈ {0,1}, với j = 2,..,k-1.
Ma trận kiểm tra của mã xyclic sinh bởi g(x) là:
*
*
1 *
( )
. ( )
...
. ( )r
h x
x h x
H
x h x−
 
 
 =
 
  
 
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à:
Ta có: h(x) = (x7
+1)/(1+x+x3
) = (1+x)(1+x2
+x3
) = x4
+x2
+x+1
h*(x) = 1+x2
+x3
+x4
Ma trận kiểm tra:
30
2 3 4
3 4 5
2 4 5 6
1 1 0 1 1 1 0 0
0 1 0 1 1 1 0
0 0 1 0 1 1 1
x x x
H x x x x
x x x x
 + + +  
   
= + + + =   
  + + +   
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
Ta có ( )
1
0
. ( ) ( )
n
i n k
i
i
f x f x x a x r x
−
−
=
= = +∑
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ời rạc ai ∈ A.
Đầ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).
c) Thiết bị mã hoá
31
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à
otomat nhớ dạng của g(x). Giả sử g(x) =
1
0
r
i
i
i
g x
−
=
∑ . Thiết bị mã hoá cho mã (n,k) với
đa thức sinh g(x) như hình sau:
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à V1 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à V2 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:
- Thủ tục 1: Dẫn ra bản tin từ dãy dấu nhận được.
1 2 r+ + +
g1 g2 gr-1
V1 1,2,..,k
V2
k+1,..,n
ai(x).xn-k
Vào
Ra
H
1,..,n
+
32
- Thủ tục 2: Dẫn ra véc-tơ sai từ dãy dấu nhận được.
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:
1
( )
. ( )
...
. ( )k
g x
x g x
G
x g x−
 
 
 =
 
 
 
Gọi h(x) = (xn
+ 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) = xdeg h(x)
. h(x-1
). Khi đó, ma trận kiểm tra của mã
V(n,k) có dạng:
*
*
1 *
( )
. ( )
...
. ( )r
h x
x h x
H
x h x−
 
 
 =
 
  
 
Ta có G.HT
= 0.
Với v ∈ V bất kì, ta có v.HT
= 0.
Xét mô hình truyền tin sau:
u = v + e
Kênh Giải mã
x x’
y = x + e
y
e
+e’
Kênh Giải mãx x’
y = x + e
y
e
Kênh
v
e
u = (u0, u1, ..., un-1 )
33
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ã ui, 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 ui 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ã uj 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
tra trực giao với một tổ hợp tuyến tính nào đó các dấu mã.
34
Xét tổ hợp tuyến tính các dấu mã sau: 1 2
... mi i iU U Uα = + + + , khi đó hệ
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ệ.
- Uj (j ≠ ik với Uik ∈ α ) chỉ nằm trong nhiều nhất là một tổng kiểm tra trong
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ã Uik 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
kề được xây dựng theo cách sau đây sẽ tạo nên một mã xyclic:
35
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:
0 1 2 1
... 0−
= = = = =n
x x x x .
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à ϕ(l),
trong đó ϕ(l) là hàm Euler, ϕ(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.ϕ(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
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
36
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 R5; Z2[x]/ (x5
+1) = (1+x)(1+x+x2
+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ị
1 2 3 4 0
01 12 23 34 04
02 13 24 03 14
012 123 234 034 014
013 124 023 134 024
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:
Bảng 2.3: Phân hoạch vành với a(x) = 1 + x + x2
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
37
Đâ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ó N1 = 3!.53
= 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ó: N2 = 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
thức theo nhóm nhân xyclic đơn vị được chỉ ra trên hình dưới:
38
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à (2n
-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
toán được hết các phần tử và các lớp kề của phân hoạch.
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
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ị
Bắt đầu
Tính trưởng lớp kề
Tính phần tử lớp kề
Kiểm tra
tồn tại
Tính số đa thức trọng số i: Ci
k
n = Ci
k
Kết thúc
i = k
Đúng
Sai
Đúng
Sai
Đúng
Sai
Hiển thị kết quả
n = n+1
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ị
Nhập K, i = 0
i = i + 1
Lưu lớp kề ra
tệp
40
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
hiện phân hoạch vành đa 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ị
Đâ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
Stt Số dấu thông tin Thời gian tính toán Kích thước dữ liệu
1 k = 5 < 1s 108 byte
2 k = 7 < 1s 1008 byte
3 k = 8 < 1s 2.25 Kbyte
4 k = 9 < 1s 5 Kbyte
5 k = 12 < 1s 56 Kbyte
6 k = 16 ~ 7 s 1.281 Kbyte
7 k = 17 ~ 23 s 2.752 Kbyte
41
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
trên mã xyclic cục bộ ở chương sau.
42
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
khai và một khoá bí mật, khoá công khai là '
iG , khoá bí mật là Si, Gi, Pi.
Các bên tham gia hệ mật McEliece chia sẻ chung các tham số: n, k, t.
Khóa bí mật:
43
+ 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ã
Cần giải mã bản mã y ∈ (Z2
)n
- Tính y1 = y.P-1
- Sử dụng phương pháp giải mã y1 để có được y1 = x1 + e1
- Tính x0 ∈ (Z2
)k
sao cho x0
.G = x1
- 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ị
cấp [64x64]. Khoá công khai G' = S.G.P là ma trận [7x64].
44
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: M1 = 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
khi kết thúc.
45
Ma trận [7x7]
Ma trận sinh G’
[7 x 64]
Ma trận [8x64]
7
1
( ,8) ( , )
j
i i j
=
= ∑
Ma trận [1x512]
Bản rõ
Bản mã
Hình 3.1. Sơ đồ khối mã hoá của hệ mật McEliece với mã XCB
Véc tơ sai [1xn] có chứa 31 bít 1
và n≤ 512
⊕
46
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
với mã xyclic cục bộ.
47
Ma trận P-1
[64x64]
Ma trận
[8x64]
Ma trận
[7x7]
Ma trận [1x512]
Ma trận
[8x64]
Ma trận tổng kiểm tra Ma trận S-1
[7x7]
Thực hiện mã hóa theo
sơ đồ hình 3.1
Ma trận [1x n] có chứa tối
đa 31 bít 1 và n≤ 512
Bản rõ
Bản mã
Hình 3.2. Sơ đồ khối giải mã của hệ mật McEliece với mã XCB
+
Giải mã 2 cấp
ngưỡng
48
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ó:
0 1 2 3 4 5 6 7
01 12 23 34 45 56 67 07
02 13 24 35 46 57 06 17
03 14 25 36 47 05 16 27
04 15 26 37
012 123 234 345 456 567 067 017
013 124 235 346 457 056 167 027
014 125 236 347 045 156 267 037
015 126 237 034 145 256 367 047
016 127 023 134 245 356 467 057
024 135 246 357 046 157 026 137
025 136 247 035 146 257 036 147
0123 1234 2345 3456 4567 0567 0167 0127
0124 1235 2346 3457 0456 1567 0267 0137
0125 1236 2347 0345 1456 2567 0367 0147
0126 1237 0234 1345 2456 3567 0467 0157
0134 1245 2356 3467 0457 0156 1267 0237
0135 1246 2357 0346 1457 0256 1367 0247
0136 1247 0235 1346 2457 0356 1467 0257
0145 1256 2367 0347
0146 1257 0236 1347 0245 1356
01234 12345 23456 34567 04567 01567 01267 01237
01235 12346 23457 03456 14567 02567 01367 01247
01236 12347 02345 13456 24567 03567 01467 01257
01245 12356 23467 03457 01456 12567 02367 01347
01246 12357 02346 13457 02456 13567 02467 01357
01256 12367 02347 01345 12456 23567 03467 01457
01346 12457 02356 13467 02457 01356 12467 02357
012345 123456 234567 034567 014567 012567 012367 012347
012346 123457 023456 134567 024567 013567 012467 012357
012356 123467 023457 013456 124567 023567 013467 012457
012456 123567 023467 013457
0123456 1234567 0234567 0134567 0124567 0123567 0123467 0123457
01234567
49
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 56C =
Thông qua phân hoạch vành theo nhóm nhân xyclic đơn vị, xây dựng ma
trận G1 [8 x 64] được cho trong bảng 3.3.
(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
Bảng 3.3. Ma trận G1 (8 x 64)
50
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
cùng ta được ma trận sinh G [7 x 64]
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
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 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 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 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 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 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 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
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]
3.3.2.2. Thuật toán mã hoá
51
Sắp xếp về 512 bit
Mã hoá dữ liệu với Gi’
Ma trận (8,64)
Đúng
Sai
Hình 3.3. Sơ đồ thuật toán mã hoá
Kết thúc
512 bit đã mã hoá
Cộng modulo 2
K < T
Vectơ sai V lấy từ
bản tin
Sai
Đúng
Chèn thêm dấu giả
thông tin
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
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)
Có đủ 49 bit để
mã hóa?
Ghi kết quả
52
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
các hàng trên.
0
0a 0
1a 0
2a 0
3a 0
4a 0
5a 0
6a 0
7a 0
0b 0
1b ............ 0
6h 0
7h
1
0a 1
7h
2
0a 2
7h
3
0a 3
7h
4
0a 4
7h
5
0a 5
7h
6
0a 6
7h
7
0a
.............................................
7
7h
Từ ma trận [8x64] thu được ta có thể đưa ra các tính chất sau:
6
7
0 0
0
k
k
a a
=
= ∑ và
6
0 0
7
0
k
k
a a
=
= ∑ (theo tính chất của ma trận)
....
6
7
7 7
0
k
k
a a
=
= ∑ và
6
7 7
7
0
k
k
a a
=
= ∑ (theo tính chất của ma trận)
6
7
0 0
0
k
k
b b
=
= ∑ và
6
0 0
7
0
k
k
b b
=
= ∑ (theo tính chất của ma trận)
....
6
7
7 7
0
k
k
b b
=
= ∑ và
6
7 7
7
0
k
k
b b
=
= ∑ (theo tính chất của ma trận)
6
7
0 0
0
k
k
c c
=
= ∑ và
6
0 0
7
0
k
k
c c
=
= ∑ (theo tính chất của ma trận)
....
6
7
7 7
0
k
k
c c
=
= ∑ và
6
7 7
7
0
k
k
c c
=
= ∑ (theo tính chất của ma trận)
6
7
0 0
0
k
k
d d
=
= ∑ và
6
0 0
7
0
k
k
d d
=
= ∑ (theo tính chất của ma trận)
....
6
7
7 7
0
k
k
d d
=
= ∑ và
6
7 7
7
0
k
k
c c
=
= ∑ (theo tính chất của ma trận)
53
6
7
0 0
0
k
k
e e
=
= ∑ và
6
0 0
7
0
k
k
e e
=
= ∑ (theo tính chất của ma trận)
....
6
7
7 7
0
k
k
e e
=
= ∑ và
6
7 7
7
0
k
k
c c
=
= ∑ (theo tính chất của ma trận)
6
7
0 0
0
k
k
f f
=
= ∑ và
6
0 0
7
0
k
k
f f
=
= ∑ (theo tính chất của ma trận)
....
6
7
7 7
0
k
k
f f
=
= ∑ và
6
7 7
7
0
k
k
f f
=
= ∑ (theo tính chất của ma trận)
6
7
0 0
0
k
k
g g
=
= ∑ và
6
0 0
7
0
k
k
g g
=
= ∑ (theo tính chất của ma trận)
....
6
7
7 7
0
k
k
g g
=
= ∑ và
6
7 7
7
0
k
k
g g
=
= ∑ (theo tính chất của ma trận)
6
7
0 0
0
k
k
h h
=
= ∑ và
6
0 0
7
0
k
k
h h
=
= ∑ (theo tính chất của ma trận)
....
6
7
7 7
0
k
k
h h
=
= ∑ và
6
7 7
7
0
k
k
h h
=
= ∑ (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.
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
- Sử dụng các tổng kiểm tra giải mã cho M2 thu được ma trận M3[7x7]
512 bit đã
mã hoá
Dữ liệu có chứa
31 bit 1 và có
độ dài ≤ 512 bit
512 bít dữ
liệu gửi đi
⊕
54
- 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)
a0 + a1
A(1)
a1 + a2
A(2)
a2 + a3
A(3)
a3 + a4
A(4)
a4 + a5
A(5)
a5 + a6
A(6)
a6 + a7
A(7)
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à:
b0 + a2 = S0
f3 + a3 = S1
e0 + a4 = S2
d5 + a5 = S3
c6 + a6 = S4
b7 + a7 = S5
c0 + b1 = S6
b6 + f1 = S7
c5 + g5 = S8
d1 + c1 = S9
d4 + h7 = S10
e0 + d1 = S11
e3 + g7 = S12
f0 + e1 = S13
f2 + c7 = S14
g0 + f4 = S15
g4 + h4 = S16
g6 + d6 = S17
h0 + e5 = S18
h3 + g1 = S19
h6 + h1 = S20
b2 + b5 = S21
b3 + e2 = S22
b4 + d7 = S23
d3 + c2 = S24
c3 + h2 = S25
c4 + f5 = S26
d2 + e7 = S27
e6 + f7 = S28
f6 + h5 = S29
g2 + g3 = S30
a0 + a1 = S31
Đố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
thêm 32 tổng kiểm tra cho cặp dấu 0 1
0 0a a+ :
55
7 7
k k
0 2 32
k=1 k=1
b + = Sa∑ ∑
7 7
k k
3 3 33
k=1 k=1
+ = Sf a∑ ∑
7 7
k k
4 4 34
k=1 k=1
+ = Se a∑ ∑
7 7
k k
5 5 35
k=1 k=1
+ = Sd a∑ ∑
7 7
k k
6 6 36
k=1 k=1
+ = Sc a∑ ∑
7 7
k k
7 7 37
k=1 k=1
b + = Sa∑ ∑
7 7
k k
0 1 38
k=1 k=1
+ = Sc b∑ ∑
7 7
k k
6 1 39
k=1 k=1
b + = Sf∑ ∑
7 7
k k
5 5 40
k=1 k=1
+ = Sc g∑ ∑
7 7
k k
1 1 41
k=1 k=1
+ = Sd c∑ ∑
7 7
k k
4 7 42
k=1 k=1
+ = Sd h∑ ∑
7 7
k k
0 1 43
k=1 k=1
+ = Se d∑ ∑
7 7
k k
3 7 44
k=1 k=1
+ = Se g∑ ∑
7 7
k k
0 1 45
k=1 k=1
+ = Sf e∑ ∑
7 7
k k
2 7 46
k=1 k=1
+ = Sf c∑ ∑
7 7
k k
0 4 47
k=1 k=1
+ = Sg h∑ ∑
7 7
k k
4 4 48
k=1 k=1
+ = Sg h∑ ∑
7 7
k k
6 6 49
k=1 k=1
+ = Sg d∑ ∑
7 7
k k
0 5 50
k=1 k=1
+ = Sh e∑ ∑
7 7
k k
3 1 51
k=1 k=1
+ = Sh g∑ ∑
7 7
k k
6 1 52
k=1 k=1
+ = Sh h∑ ∑
7 7
k k
2 5 53
k=1 k=1
b + = Sb∑ ∑
7 7
k k
3 2 54
k=1 k=1
b + = Se∑ ∑
7 7
k k
4 7 55
k=1 k=1
b + = Sd∑ ∑
7 7
k k
3 2 56
k=1 k=1
+ = Sd c∑ ∑
7 7
k k
3 2 57
k=1 k=1
+ = Sc h∑ ∑
7 7
k k
4 5 58
k=1 k=1
+ = Sc f∑ ∑
7 7
k k
2 7 59
k=1 k=1
+ = Sd e∑ ∑
7 7
k k
6 7 60
k=1 k=1
+ = Se f∑ ∑
7 7
k k
6 5 61
k=1 k=1
+ = Sf h∑ ∑
7 7
k k
2 3 62
k=1 k=1
+ = Sg g∑ ∑
7 7
k k
0 1 63
k=1 k=1
+ = Sa a∑ ∑
Để giải mã cho từng cặp dấu từ A0 đến A7 sử dụng thuật toán:
For (i = 1..7) {
63
0
( ) ( )j
j
N i S i
=
= ∑
if ( N(i) ≥ 33 )
A(i) = 1
else
A(i) = 0
}
56
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)
để giải mã cho từng dấu thông tin:
T0 = A(0) + a1 T32 = A(7) + A(6) + A(4) + 0
4b
T1 = A(0) + A(1) + a2 T33 = A(7) + A(6) + A(3) + 0
6f
T2 = A(7) + a7 T34 = A(7) + A(6) + A(2) + 0
6e
T3 = A(7) + A(6) + a6 T35 = A(7) + A(6) + A(1) + 0
6d
T4 = A(1) + b0 T36 = A(7) + A(6) + A(0) + 0
6c
T5 = A(2) + c0 T37 = A(0) + A(1) + A(7) + 0
2f
T6 = A(3) + d0 T38 = A(0) + A(2) + A(3) + 0
4f
T7 = A(4) + e0 T39 = A(0) + A(3) + A(4) + 0
1g
T8 = A(5) + f0 T40 = A(0) + A(4) + A(5) + 0
4h
T9 = A(6) + b6 T41 = A(0) + A(5) + A(6) + 0
5g
T10 = A(1) + A(2) + f3 T42 = A(7) + A(5) + A(4) + 0
4c
T11 = A(2) + A(3) + g0 T43 = A(7) + A(4) + A(3) + 0
3g
T12 = A(3) + A(4) + h3 T44 = A(7) + A(3) + A(2) + 0
2h
T13 = A(4) + A(5) + g4 T45 = A(7) + A(2) + A(1) + 0
7g
T14 = A(5) + A(6) + c5 T46 = A(1) + A(2) + A(3) + 0
4e
T15 = A(7) + A(0) + b7 T47 = A(2) + A(3) + A(4) + 0
0h
T16 = A(0) + A(2) + b1 T48 = A(3) + A(4) + A(5) + 0
6h
T17 = A(0) + A(3) + c1 T49 = A(4) + A(5) + A(6) + 0
4d
T18 = A(0) + A(4) + d1 T50 = 0
0a
T19 = A(0) + A(5) + e1 T51 =
7
0
1
k
k
a
=
∑
57
T20 = A(0) + A(6) + f1 T52 = A(0) +
7
1
1
k
k
a
=
∑
T21 = A(7) + A(5) + b5 T53 = A(1) +
7
0
1
k
k
b
=
∑
T22 = A(7) + A(4) + f7 T54 = A(2) +
7
0
1
k
k
c
=
∑
T23 = A(7) + A(3) + e7 T55 = A(3) +
7
0
1
k
k
d
=
∑
T24 = A(7) + A(2) + d7 T56 = A(4) +
7
0
1
k
k
e
=
∑
T25 = A(7) + A(1) + c7 T57 = A(5) +
7
0
1
k
k
f
=
∑
T26 = A(0) + A(1) + A(2) + a3 T58 = A(6) +
7
6
1
k
k
b
=
∑
T27 = A(0) + A(1) + A(3) + b2 T59 = A(7) +
7
7
1
k
k
a
=
∑
T28 = A(0) + A(1) + A(4) + e2 T60 = A(0) + A(1) +
7
2
1
k
k
a
=
∑
T29 = A(0) + A(1) + A(5) + d2 T61 = A(0) + A(2) +
7
1
1
k
k
b
=
∑
T30 = A(0) + A(1) + A(6) + e2 T62 = A(0) + A(3) +
7
1
1
k
k
c
=
∑
T31 = A(7) + A(6) + A(5) + a5 T63 = A(0) + A(4) +
7
1
1
k
k
d
=
∑
Để giải mã cho từng dấu từ a0 đến a7 sử dụng thuật toán:
For ( i = 1 .. 7 ) {
63
0
( ) ( )j
j
M i T i
=
= ∑
if ( M(i) ≥ 33 )
a(i) = 1
else
a(i) = 0
}
3.3.3.3. Thuật toán giải mã
58
Vectơ sai có
chứa dữ liệu
Cộng
Modulo 2
Kết thúc
Đọc tệp mã hóa
Đọc kich thước tệp T
Hình 3.4. Sơ đồ thuật toán giải mã
Ghép dữ liệu
Đọc Gi' = Si.Gi.Pi
Sai
Đúng
K < T
Giải mã dữ liệu M2 = M1 * Pi
-1
M3 = Giải mã sửa sai M2 theo
tổng kiểm tra 2 cấp ngưỡng
M = M3* Si
-1
Sắp xếp thành 512 bít
Bắt đầu
Đọc Pi
-1
, Si
-1
Đọc ma trận tổng kiểm tra của Gi
K = 0
Phân tích dữ liệu theo bit
M (512 bit dữ liệu mã hóa)
K=K+Len(M)
49 bit dữ liệu của bản tin
Ghi kết quả
Sắp xếp về ma trận M1(8,64)
Mã hóa lại dữ liệu với Gi’ tạo Ma trận (8,64)
59
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 31 00110001 10001100
2 32 00110010 01001100
3 33 00110011 11001100
4 34 00110100 00101100
5 35 00110101 10101100
6 36 00110110 01101100
7 37 00110111 11101100
8 38 00111000 00011100
9 39 00111001 10011100
0 30 00110000 00001100
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
1 0 0 0 1 1 0
0 0 1 0 0 1 1
0 0 1 1 0 0 1
(7 7) 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
M x
 
 
 
 
 
=  
 
 
 
 
 
Đoạn dữ liệu cuối có chứa 31 bit 1 được xắp sếp như sau:
11011000001110010011100000011001000110001001100110011000010110011101100
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à
các tổng kiểm tra để giải mã.
60
0 1 2 3 4 5 6 7
012 123 234 345 456 567 067 017
013 124 235 346 457 056 167 027
014 125 236 347 045 156 267 037
015 126 237 034 145 256 367 047
016 127 023 134 245 356 467 057
024 135 246 357 046 157 026 137
025 136 247 035 146 257 036 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
sắp xếp của phân hoạch là:
(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
Ta xây dựng ma trận sinh G[7x64] từ ma trận [8x64] (cộng từng hàng từ 1
đến 7 với hàng thứ 8):
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
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 1 1 1 0
1 1 0 0 1 0 0 1
0 1 1 0 1 0 1 0
1 0 1 1 1 0 1 1
0 1 0 1 0 0 1 1
0 0 1 0 0 1 1 1
0 0 0 1 1 1 0 1
1 0 0 1 1 0 1 0
1 1 0 1 0 1 1 1
0 1 1 1 0 0 0 1
0 0 1 0 0 0 1 0
1 0 0 0 1 0 1 1
0 1 0 1 1 1 1 1
0 0 1 1 0 1 0 1
1 0 1 1 0 0 1 0
1 1 1 0 1 0 1 1
0 1 0 0 0 1 1 1
0 0 0 1 0 0 0 1
0 0 1 1 1 0 1 0
1 0 1 0 1 1 1 1
0 1 1 0 0 1 0 1
1 1 1 0 0 0 1 0
1 0 0 1 0 0 1 1
0 0 1 0 1 0 1 1
0 1 1 1 0 1 1 1
0 1 0 1 1 0 0 1
0 1 0 0 1 1 1 0
1 1 0 0 0 1 0 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 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
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 1 1 0 0 0 0
0 1 1 1 0 0 0
0 0 1 1 1 0 0
0 0 0 1 1 1 0
0 0 0 0 1 1 1
1 0 0 0 0 1 1
1 1 0 0 0 0 1
 
 
 
 
 
=  
 
 
 
 
 
S và 1
0 0 1 1 0 1 0
1 1 0 1 1 0 1
0 1 1 0 1 1 1
1 1 1 1 0 1 0
0 0 1 1 1 0 0
1 1 0 1 1 1 0
1 1 1 0 1 1 0
S−
 
 
 
 
 
=  
 
 
 
 
 
61
P là ma trận hoán vị [64 x 64]
1 0 0 ... 0
0 0 1 ... 0
0 1 0 ... 0
... ... ... ... ...
0 0 0 ... 1
 
 
 
 =
 
 
 
 
P và 1
1 0 0 ... 0
0 0 1 ... 0
0 1 0 ... 0
... ... ... ... ...
0 0 0 ... 1
−
 
 
 
 =
 
 
 
 
P
Ta có G' là ma trận [8x64]
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
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
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)
(1-7,59)+(1-7,49) (1-7,62)+(1-7,57) (1-7,10)+(1-7,13) (1-7,11)+(1-7,30)
62
(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(0)
0,0+0,1
A(1)
0,1+0,2
A(2)
0,2+0,3
A(3)
0,3+0,4
A(4)
0,4+0,5
A(5)
0,5+0,6
A(6)
0,6+0,7
A(7)
0,7+0,8
Xây dựng 64 tổng kiểm tra cấp 2 cho từng dấu thông tin
(0,0)
A(0)+(0,1)
A(1)+(0,8)
A(1)+(1-7,8)
A(2)+(0,42)
A(2)+(1-7,42)
A(3)+(0,35)
A(3)+(1-7,35)
A(4)+(0,28)
A(4)+(1-7,28)
A(5)+(21)
A(5)+(1-7,21)
A(6)+(0,14)
A(6)+(1-7,14)
A(7)+(0,7)
A(0)+A(1)+(0,2)
A(0)+A(1)+(1-7,2)
A(0)+A(2)+(0,9)
A(0)+A(3)+(0,43)
A(0)+A(4)+(0,36)
A(0)+A(5)+(0,29)
A(0)+A(6)+(0,22)
A(0)+A(7)+(0,15)
A(1)+A(2)+(0,16)
A(1)+A(2)+(1-7,16)
A(1)+A(7)+(0,41)
A(2)+A(3)+(0,48)
A(2)+A(3)+(1-7,48)
A(2)+A(7)+(0,34)
A(3)+A(4)+(0,59)
A(3)+A(4)+(1-7,59)
A(3)+A(7)+(0,27)
A(4)+A(5)+(0,52)
A(4)+A(5)+(1-7,52)
A(4)+A(7)+(0,20)
A(5)+A(6)+(0,47)
A(5)+A(6)+(1-7,47)
A(5)+A(7)+(0,13)
A(6)+A(7)+(0,6)
A(6)+A(7)+(1-7,6)
A(0)+A(1)+A(2)+(0,3)
A(0)+A(1)+A(3)+(0,10)
A(0)+A(1)+A(4)+(0,44)
A(0)+A(1)+A(5)+(0,37)
A(0)+A(1)+A(6)+(0,30)
A(0)+A(1)+A(7)+(0,23)
A(0)+A(6)+A(7)+(0,40)
A(1)+A(6)+A(7)+(0,33)
A(2)+A(6)+A(7)+(0,26)
A(3)+A(6)+A(7)+(0,19)
A(4)+A(6)+A(7)+(0,12)
A(5)+A(6)+A(7)+(0,5)
A(0)+A(2)+A(3)+(0,17)
A(0)+A(3)+A(4)+(0,49)
A(0)+A(4)+A(5)+(0,60)
A(0)+A(5)+A(6)+(0,53)
A(1)+A(2)+A(7)+(0,55)
A(2)+A(3)+A(7)+(0,58)
A(3)+A(4)+A(7)+(0,51)
A(4)+A(5)+A(7)+(0,46)
A(1)+A(2)+A(3)+(0,24)
A(2)+A(3)+A(4)+(0,56)
A(3)+A(4)+A(5)+(0,62)
A(4)+A(5)+A(6)+(0,39)
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á
Quá trình mã hoá thực hiện các bước sau:
63
- 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ừ
1 đến 7).
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
Sắp xếp ma trận này thành chuỗi 512 bit thông tin. Cộng modulo 2 chuỗi
này với chuỗi thông tin có chứa 31 bít 1 ở trên :
11011000001110010011100000011001000110001001100110011000010110011101100
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
- Sắp xếp thành ma trận 8x64
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
- Nhân ma trận 8x64 với ma trận P-1
- Sử dụng các tổng kiểm tra để tạo lại ma trận thông tin 7x7.
64
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
lại được ma trận I[8x64]
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
Sắp xếp ma trận này thành chuỗi 512 bit thông tin. Cộng modulo 2 chuỗi
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.
65
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ã
Tỷ lệ
bản mã / bản rõ
.pdf 104 461 ~ 5s ~ 265 s
4.43
(461/104)
.txt 13 53 ~ 1s ~ 35 s
4.08
(53/13)
.exe 264 1182 ~ 12s ~ 735 s
4.48
(1182/264)
.doc 26 47 ~ 1s ~ 28 s
1.80
(47/26)
512 bit thu
được
512 bit mã
hoá lại
Véctơ sai
có chứa 31
bít 1⊕
Luận văn: Ứng dụng mã xyclic cục bộ xây dựng hệ mật, HAY
Luận văn: Ứng dụng mã xyclic cục bộ xây dựng hệ mật, HAY
Luận văn: Ứng dụng mã xyclic cục bộ xây dựng hệ mật, HAY
Luận văn: Ứng dụng mã xyclic cục bộ xây dựng hệ mật, HAY

Contenu connexe

Similaire à Luận văn: Ứng dụng mã xyclic cục bộ xây dựng hệ mật, HAY

Giao trinh an toan bao mat thong tin
Giao trinh an toan bao mat thong tinGiao trinh an toan bao mat thong tin
Giao trinh an toan bao mat thong tinLê Thị Minh Châu
 
Bài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITBài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITNguynMinh294
 
Bao cao antoanbaomat-hung
Bao cao antoanbaomat-hungBao cao antoanbaomat-hung
Bao cao antoanbaomat-hungLuu Tuong
 
giai-phap-an-ninh-trong-kien-truc-quan-tri-mang-snmp
giai-phap-an-ninh-trong-kien-truc-quan-tri-mang-snmpgiai-phap-an-ninh-trong-kien-truc-quan-tri-mang-snmp
giai-phap-an-ninh-trong-kien-truc-quan-tri-mang-snmpPham Huynh
 
thực hành tấn công tuyến tính des với 4 vòng
thực hành tấn công tuyến tính des với 4 vòngthực hành tấn công tuyến tính des với 4 vòng
thực hành tấn công tuyến tính des với 4 vòngnataliej4
 
[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử líHong Phuoc Nguyen
 
Tailieu.vncty.com bao cao-tong_ket_de_tai_nghi_dinh_thu_hop_tac_nghien_cuu_...
Tailieu.vncty.com   bao cao-tong_ket_de_tai_nghi_dinh_thu_hop_tac_nghien_cuu_...Tailieu.vncty.com   bao cao-tong_ket_de_tai_nghi_dinh_thu_hop_tac_nghien_cuu_...
Tailieu.vncty.com bao cao-tong_ket_de_tai_nghi_dinh_thu_hop_tac_nghien_cuu_...Trần Đức Anh
 
Báo cáo tốt nghiệp Android RSA mã hóa
Báo cáo tốt nghiệp Android RSA mã hóaBáo cáo tốt nghiệp Android RSA mã hóa
Báo cáo tốt nghiệp Android RSA mã hóaPhạm Trung Đức
 
Bài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITBài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITNguynMinh294
 
Một số lớp bài toán tối ưu không lồi, Thuật toán và ứng dụng.pdf
Một số lớp bài toán tối ưu không lồi, Thuật toán và ứng dụng.pdfMột số lớp bài toán tối ưu không lồi, Thuật toán và ứng dụng.pdf
Một số lớp bài toán tối ưu không lồi, Thuật toán và ứng dụng.pdfMan_Ebook
 

Similaire à Luận văn: Ứng dụng mã xyclic cục bộ xây dựng hệ mật, HAY (20)

Giao trinh an toan bao mat thong tin
Giao trinh an toan bao mat thong tinGiao trinh an toan bao mat thong tin
Giao trinh an toan bao mat thong tin
 
Bài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITBài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTIT
 
Đề tài: Phát triển các thuật toán mới cho truyền thông trong mạng robot
Đề tài: Phát triển các thuật toán mới cho truyền thông trong mạng robot Đề tài: Phát triển các thuật toán mới cho truyền thông trong mạng robot
Đề tài: Phát triển các thuật toán mới cho truyền thông trong mạng robot
 
GT Co so mat ma .pdf
GT Co so mat ma .pdfGT Co so mat ma .pdf
GT Co so mat ma .pdf
 
Bao cao antoanbaomat-hung
Bao cao antoanbaomat-hungBao cao antoanbaomat-hung
Bao cao antoanbaomat-hung
 
giai-phap-an-ninh-trong-kien-truc-quan-tri-mang-snmp
giai-phap-an-ninh-trong-kien-truc-quan-tri-mang-snmpgiai-phap-an-ninh-trong-kien-truc-quan-tri-mang-snmp
giai-phap-an-ninh-trong-kien-truc-quan-tri-mang-snmp
 
Đề tài: Nghiên cứu khả năng bảo mật thông tin tại tầng vật lý, HAY
Đề tài: Nghiên cứu khả năng bảo mật thông tin tại tầng vật lý, HAYĐề tài: Nghiên cứu khả năng bảo mật thông tin tại tầng vật lý, HAY
Đề tài: Nghiên cứu khả năng bảo mật thông tin tại tầng vật lý, HAY
 
thực hành tấn công tuyến tính des với 4 vòng
thực hành tấn công tuyến tính des với 4 vòngthực hành tấn công tuyến tính des với 4 vòng
thực hành tấn công tuyến tính des với 4 vòng
 
Đề tài: Bảo vệ và phục hồi tổn thương gan của quả Dứa dại, HAY
Đề tài: Bảo vệ và phục hồi tổn thương gan của quả Dứa dại, HAYĐề tài: Bảo vệ và phục hồi tổn thương gan của quả Dứa dại, HAY
Đề tài: Bảo vệ và phục hồi tổn thương gan của quả Dứa dại, HAY
 
Phát triển các thuật toán mới cho truyền thông trong mạng robot
Phát triển các thuật toán mới cho truyền thông trong mạng robotPhát triển các thuật toán mới cho truyền thông trong mạng robot
Phát triển các thuật toán mới cho truyền thông trong mạng robot
 
[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí
 
Luận văn: Chống lại mất mát gói tin của thuật toán mã hóa ILBC
Luận văn: Chống lại mất mát gói tin của thuật toán mã hóa ILBCLuận văn: Chống lại mất mát gói tin của thuật toán mã hóa ILBC
Luận văn: Chống lại mất mát gói tin của thuật toán mã hóa ILBC
 
Tailieu.vncty.com bao cao-tong_ket_de_tai_nghi_dinh_thu_hop_tac_nghien_cuu_...
Tailieu.vncty.com   bao cao-tong_ket_de_tai_nghi_dinh_thu_hop_tac_nghien_cuu_...Tailieu.vncty.com   bao cao-tong_ket_de_tai_nghi_dinh_thu_hop_tac_nghien_cuu_...
Tailieu.vncty.com bao cao-tong_ket_de_tai_nghi_dinh_thu_hop_tac_nghien_cuu_...
 
Luận án: Nghiên cứu phát hiện luật kết hợp hiếm và ứng dụng
Luận án: Nghiên cứu phát hiện luật kết hợp hiếm và ứng dụngLuận án: Nghiên cứu phát hiện luật kết hợp hiếm và ứng dụng
Luận án: Nghiên cứu phát hiện luật kết hợp hiếm và ứng dụng
 
Báo cáo tốt nghiệp Android RSA mã hóa
Báo cáo tốt nghiệp Android RSA mã hóaBáo cáo tốt nghiệp Android RSA mã hóa
Báo cáo tốt nghiệp Android RSA mã hóa
 
Bài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITBài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTIT
 
Hệ mật mã Mcliece
Hệ mật mã MclieceHệ mật mã Mcliece
Hệ mật mã Mcliece
 
Một số lớp bài toán tối ưu không lồi, Thuật toán và ứng dụng.pdf
Một số lớp bài toán tối ưu không lồi, Thuật toán và ứng dụng.pdfMột số lớp bài toán tối ưu không lồi, Thuật toán và ứng dụng.pdf
Một số lớp bài toán tối ưu không lồi, Thuật toán và ứng dụng.pdf
 
Luận văn: Định vị trong tính toán khắp nơi, HAY
Luận văn: Định vị trong tính toán khắp nơi, HAYLuận văn: Định vị trong tính toán khắp nơi, HAY
Luận văn: Định vị trong tính toán khắp nơi, HAY
 
Hệ mật mã Mcelice
Hệ mật mã MceliceHệ mật mã Mcelice
Hệ mật mã Mcelice
 

Plus de Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864

Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.docTạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.docDịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 

Plus de Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864 (20)

Yếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.doc
Yếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.docYếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.doc
Yếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.doc
 
Từ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.doc
Từ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.docTừ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.doc
Từ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.doc
 
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
 
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
 
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
 
Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...
Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...
Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...
 
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
 
Tác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.doc
Tác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.docTác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.doc
Tác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.doc
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
 
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
 
Song Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.doc
Song Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.docSong Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.doc
Song Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.doc
 
Ứng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.doc
Ứng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.docỨng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.doc
Ứng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.doc
 
Vai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.doc
Vai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.docVai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.doc
Vai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.doc
 
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
 
Thu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.doc
Thu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.docThu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.doc
Thu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.doc
 
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
 
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.docTạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
 

Dernier

TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...Nguyen Thanh Tu Collection
 
GIÁO ÁN KẾ HOẠCH BÀI DẠY MÔN VẬT LÝ 11 CẢ NĂM (SÁCH KẾT NỐI TRI THỨC) THEO CÔ...
GIÁO ÁN KẾ HOẠCH BÀI DẠY MÔN VẬT LÝ 11 CẢ NĂM (SÁCH KẾT NỐI TRI THỨC) THEO CÔ...GIÁO ÁN KẾ HOẠCH BÀI DẠY MÔN VẬT LÝ 11 CẢ NĂM (SÁCH KẾT NỐI TRI THỨC) THEO CÔ...
GIÁO ÁN KẾ HOẠCH BÀI DẠY MÔN VẬT LÝ 11 CẢ NĂM (SÁCH KẾT NỐI TRI THỨC) THEO CÔ...Nguyen Thanh Tu Collection
 
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...Nguyen Thanh Tu Collection
 
BÀI TẬP BỔ TRỢ TIẾNG ANH LỚP 8 CẢ NĂM CÓ TEST ÔN TẬP ĐỊNH KÌ + NÂNG CAO - FRI...
BÀI TẬP BỔ TRỢ TIẾNG ANH LỚP 8 CẢ NĂM CÓ TEST ÔN TẬP ĐỊNH KÌ + NÂNG CAO - FRI...BÀI TẬP BỔ TRỢ TIẾNG ANH LỚP 8 CẢ NĂM CÓ TEST ÔN TẬP ĐỊNH KÌ + NÂNG CAO - FRI...
BÀI TẬP BỔ TRỢ TIẾNG ANH LỚP 8 CẢ NĂM CÓ TEST ÔN TẬP ĐỊNH KÌ + NÂNG CAO - FRI...Nguyen Thanh Tu Collection
 
40 ĐỀ THI THỬ TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2024 - 2025 SỞ GIÁO...
40 ĐỀ THI THỬ TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2024 - 2025 SỞ GIÁO...40 ĐỀ THI THỬ TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2024 - 2025 SỞ GIÁO...
40 ĐỀ THI THỬ TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2024 - 2025 SỞ GIÁO...Nguyen Thanh Tu Collection
 
lịch sử đảng cộng sản việt nam chương 1.ppt
lịch sử đảng cộng sản việt nam chương 1.pptlịch sử đảng cộng sản việt nam chương 1.ppt
lịch sử đảng cộng sản việt nam chương 1.pptLinhPham480
 
HƯỚNG DẪN GIẢI ĐỀ THI THAM KHẢO KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤ...
HƯỚNG DẪN GIẢI ĐỀ THI THAM KHẢO KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤ...HƯỚNG DẪN GIẢI ĐỀ THI THAM KHẢO KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤ...
HƯỚNG DẪN GIẢI ĐỀ THI THAM KHẢO KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤ...Nguyen Thanh Tu Collection
 
GIÁO ÁN KẾ HOẠCH BÀI DẠY SINH HỌC 10 CHÂN TRỜI SÁNG TẠO - CẢ NĂM THEO CÔNG VĂ...
GIÁO ÁN KẾ HOẠCH BÀI DẠY SINH HỌC 10 CHÂN TRỜI SÁNG TẠO - CẢ NĂM THEO CÔNG VĂ...GIÁO ÁN KẾ HOẠCH BÀI DẠY SINH HỌC 10 CHÂN TRỜI SÁNG TẠO - CẢ NĂM THEO CÔNG VĂ...
GIÁO ÁN KẾ HOẠCH BÀI DẠY SINH HỌC 10 CHÂN TRỜI SÁNG TẠO - CẢ NĂM THEO CÔNG VĂ...Nguyen Thanh Tu Collection
 
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 11 CHUNG 3 BỘ SÁCH NĂM 2024 HỆ THỐNG BÀI TẬP B...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 11 CHUNG 3 BỘ SÁCH NĂM 2024 HỆ THỐNG BÀI TẬP B...CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 11 CHUNG 3 BỘ SÁCH NĂM 2024 HỆ THỐNG BÀI TẬP B...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 11 CHUNG 3 BỘ SÁCH NĂM 2024 HỆ THỐNG BÀI TẬP B...Nguyen Thanh Tu Collection
 
SÁNG KIẾN PHÁT TRIỂN NĂNG LỰC TỰ LÀM MÔ HÌNH KHI TÌM HIỂU KIẾN THỨC “THẠCH QU...
SÁNG KIẾN PHÁT TRIỂN NĂNG LỰC TỰ LÀM MÔ HÌNH KHI TÌM HIỂU KIẾN THỨC “THẠCH QU...SÁNG KIẾN PHÁT TRIỂN NĂNG LỰC TỰ LÀM MÔ HÌNH KHI TÌM HIỂU KIẾN THỨC “THẠCH QU...
SÁNG KIẾN PHÁT TRIỂN NĂNG LỰC TỰ LÀM MÔ HÌNH KHI TÌM HIỂU KIẾN THỨC “THẠCH QU...Nguyen Thanh Tu Collection
 
Day tieng Viet cho nguoi nuoc ngoai.pptx
Day tieng Viet cho nguoi nuoc ngoai.pptxDay tieng Viet cho nguoi nuoc ngoai.pptx
Day tieng Viet cho nguoi nuoc ngoai.pptxngothevinhs6lite
 
HƯỚNG DẪN GIẢI ĐỀ MINH HỌA KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤC MÔN...
HƯỚNG DẪN GIẢI ĐỀ MINH HỌA KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤC MÔN...HƯỚNG DẪN GIẢI ĐỀ MINH HỌA KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤC MÔN...
HƯỚNG DẪN GIẢI ĐỀ MINH HỌA KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤC MÔN...Nguyen Thanh Tu Collection
 
14 CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN VẬT LÝ 8 - NĂM 2024 (4...
14 CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN VẬT LÝ 8 - NĂM 2024 (4...14 CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN VẬT LÝ 8 - NĂM 2024 (4...
14 CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN VẬT LÝ 8 - NĂM 2024 (4...Nguyen Thanh Tu Collection
 
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 7 + 8 CHƯƠNG TRÌNH GDPT M...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 7 + 8 CHƯƠNG TRÌNH GDPT M...CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 7 + 8 CHƯƠNG TRÌNH GDPT M...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 7 + 8 CHƯƠNG TRÌNH GDPT M...Nguyen Thanh Tu Collection
 
BÀI TẬP – BÀI GIẢI HÓA HỮU CƠ – TẬP 1 DÙNG BỒI DƯỠNG HỌC SINH GIỎI TỈNH VÀ QU...
BÀI TẬP – BÀI GIẢI HÓA HỮU CƠ – TẬP 1 DÙNG BỒI DƯỠNG HỌC SINH GIỎI TỈNH VÀ QU...BÀI TẬP – BÀI GIẢI HÓA HỮU CƠ – TẬP 1 DÙNG BỒI DƯỠNG HỌC SINH GIỎI TỈNH VÀ QU...
BÀI TẬP – BÀI GIẢI HÓA HỮU CƠ – TẬP 1 DÙNG BỒI DƯỠNG HỌC SINH GIỎI TỈNH VÀ QU...Nguyen Thanh Tu Collection
 
ĐỀ KIỂM TRA THEO UNIT TIẾNG ANH GLOBAL SUCCESS 11 - HK2 (BẢN HS-GV) (3 TESTS ...
ĐỀ KIỂM TRA THEO UNIT TIẾNG ANH GLOBAL SUCCESS 11 - HK2 (BẢN HS-GV) (3 TESTS ...ĐỀ KIỂM TRA THEO UNIT TIẾNG ANH GLOBAL SUCCESS 11 - HK2 (BẢN HS-GV) (3 TESTS ...
ĐỀ KIỂM TRA THEO UNIT TIẾNG ANH GLOBAL SUCCESS 11 - HK2 (BẢN HS-GV) (3 TESTS ...Nguyen Thanh Tu Collection
 
IELTS READING - Earth’s lakes are under threat.pptx
IELTS READING - Earth’s lakes are under threat.pptxIELTS READING - Earth’s lakes are under threat.pptx
IELTS READING - Earth’s lakes are under threat.pptxNguynHn870045
 

Dernier (17)

TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
 
GIÁO ÁN KẾ HOẠCH BÀI DẠY MÔN VẬT LÝ 11 CẢ NĂM (SÁCH KẾT NỐI TRI THỨC) THEO CÔ...
GIÁO ÁN KẾ HOẠCH BÀI DẠY MÔN VẬT LÝ 11 CẢ NĂM (SÁCH KẾT NỐI TRI THỨC) THEO CÔ...GIÁO ÁN KẾ HOẠCH BÀI DẠY MÔN VẬT LÝ 11 CẢ NĂM (SÁCH KẾT NỐI TRI THỨC) THEO CÔ...
GIÁO ÁN KẾ HOẠCH BÀI DẠY MÔN VẬT LÝ 11 CẢ NĂM (SÁCH KẾT NỐI TRI THỨC) THEO CÔ...
 
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...
 
BÀI TẬP BỔ TRỢ TIẾNG ANH LỚP 8 CẢ NĂM CÓ TEST ÔN TẬP ĐỊNH KÌ + NÂNG CAO - FRI...
BÀI TẬP BỔ TRỢ TIẾNG ANH LỚP 8 CẢ NĂM CÓ TEST ÔN TẬP ĐỊNH KÌ + NÂNG CAO - FRI...BÀI TẬP BỔ TRỢ TIẾNG ANH LỚP 8 CẢ NĂM CÓ TEST ÔN TẬP ĐỊNH KÌ + NÂNG CAO - FRI...
BÀI TẬP BỔ TRỢ TIẾNG ANH LỚP 8 CẢ NĂM CÓ TEST ÔN TẬP ĐỊNH KÌ + NÂNG CAO - FRI...
 
40 ĐỀ THI THỬ TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2024 - 2025 SỞ GIÁO...
40 ĐỀ THI THỬ TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2024 - 2025 SỞ GIÁO...40 ĐỀ THI THỬ TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2024 - 2025 SỞ GIÁO...
40 ĐỀ THI THỬ TUYỂN SINH VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2024 - 2025 SỞ GIÁO...
 
lịch sử đảng cộng sản việt nam chương 1.ppt
lịch sử đảng cộng sản việt nam chương 1.pptlịch sử đảng cộng sản việt nam chương 1.ppt
lịch sử đảng cộng sản việt nam chương 1.ppt
 
HƯỚNG DẪN GIẢI ĐỀ THI THAM KHẢO KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤ...
HƯỚNG DẪN GIẢI ĐỀ THI THAM KHẢO KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤ...HƯỚNG DẪN GIẢI ĐỀ THI THAM KHẢO KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤ...
HƯỚNG DẪN GIẢI ĐỀ THI THAM KHẢO KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤ...
 
GIÁO ÁN KẾ HOẠCH BÀI DẠY SINH HỌC 10 CHÂN TRỜI SÁNG TẠO - CẢ NĂM THEO CÔNG VĂ...
GIÁO ÁN KẾ HOẠCH BÀI DẠY SINH HỌC 10 CHÂN TRỜI SÁNG TẠO - CẢ NĂM THEO CÔNG VĂ...GIÁO ÁN KẾ HOẠCH BÀI DẠY SINH HỌC 10 CHÂN TRỜI SÁNG TẠO - CẢ NĂM THEO CÔNG VĂ...
GIÁO ÁN KẾ HOẠCH BÀI DẠY SINH HỌC 10 CHÂN TRỜI SÁNG TẠO - CẢ NĂM THEO CÔNG VĂ...
 
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 11 CHUNG 3 BỘ SÁCH NĂM 2024 HỆ THỐNG BÀI TẬP B...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 11 CHUNG 3 BỘ SÁCH NĂM 2024 HỆ THỐNG BÀI TẬP B...CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 11 CHUNG 3 BỘ SÁCH NĂM 2024 HỆ THỐNG BÀI TẬP B...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 11 CHUNG 3 BỘ SÁCH NĂM 2024 HỆ THỐNG BÀI TẬP B...
 
SÁNG KIẾN PHÁT TRIỂN NĂNG LỰC TỰ LÀM MÔ HÌNH KHI TÌM HIỂU KIẾN THỨC “THẠCH QU...
SÁNG KIẾN PHÁT TRIỂN NĂNG LỰC TỰ LÀM MÔ HÌNH KHI TÌM HIỂU KIẾN THỨC “THẠCH QU...SÁNG KIẾN PHÁT TRIỂN NĂNG LỰC TỰ LÀM MÔ HÌNH KHI TÌM HIỂU KIẾN THỨC “THẠCH QU...
SÁNG KIẾN PHÁT TRIỂN NĂNG LỰC TỰ LÀM MÔ HÌNH KHI TÌM HIỂU KIẾN THỨC “THẠCH QU...
 
Day tieng Viet cho nguoi nuoc ngoai.pptx
Day tieng Viet cho nguoi nuoc ngoai.pptxDay tieng Viet cho nguoi nuoc ngoai.pptx
Day tieng Viet cho nguoi nuoc ngoai.pptx
 
HƯỚNG DẪN GIẢI ĐỀ MINH HỌA KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤC MÔN...
HƯỚNG DẪN GIẢI ĐỀ MINH HỌA KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤC MÔN...HƯỚNG DẪN GIẢI ĐỀ MINH HỌA KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤC MÔN...
HƯỚNG DẪN GIẢI ĐỀ MINH HỌA KÌ THI TỐT NGHIỆP THPT NĂM 2024 TỪ BỘ GIÁO DỤC MÔN...
 
14 CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN VẬT LÝ 8 - NĂM 2024 (4...
14 CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN VẬT LÝ 8 - NĂM 2024 (4...14 CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN VẬT LÝ 8 - NĂM 2024 (4...
14 CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN VẬT LÝ 8 - NĂM 2024 (4...
 
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 7 + 8 CHƯƠNG TRÌNH GDPT M...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 7 + 8 CHƯƠNG TRÌNH GDPT M...CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 7 + 8 CHƯƠNG TRÌNH GDPT M...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 7 + 8 CHƯƠNG TRÌNH GDPT M...
 
BÀI TẬP – BÀI GIẢI HÓA HỮU CƠ – TẬP 1 DÙNG BỒI DƯỠNG HỌC SINH GIỎI TỈNH VÀ QU...
BÀI TẬP – BÀI GIẢI HÓA HỮU CƠ – TẬP 1 DÙNG BỒI DƯỠNG HỌC SINH GIỎI TỈNH VÀ QU...BÀI TẬP – BÀI GIẢI HÓA HỮU CƠ – TẬP 1 DÙNG BỒI DƯỠNG HỌC SINH GIỎI TỈNH VÀ QU...
BÀI TẬP – BÀI GIẢI HÓA HỮU CƠ – TẬP 1 DÙNG BỒI DƯỠNG HỌC SINH GIỎI TỈNH VÀ QU...
 
ĐỀ KIỂM TRA THEO UNIT TIẾNG ANH GLOBAL SUCCESS 11 - HK2 (BẢN HS-GV) (3 TESTS ...
ĐỀ KIỂM TRA THEO UNIT TIẾNG ANH GLOBAL SUCCESS 11 - HK2 (BẢN HS-GV) (3 TESTS ...ĐỀ KIỂM TRA THEO UNIT TIẾNG ANH GLOBAL SUCCESS 11 - HK2 (BẢN HS-GV) (3 TESTS ...
ĐỀ KIỂM TRA THEO UNIT TIẾNG ANH GLOBAL SUCCESS 11 - HK2 (BẢN HS-GV) (3 TESTS ...
 
IELTS READING - Earth’s lakes are under threat.pptx
IELTS READING - Earth’s lakes are under threat.pptxIELTS READING - Earth’s lakes are under threat.pptx
IELTS READING - Earth’s lakes are under threat.pptx
 

Luận văn: Ứng dụng mã xyclic cục bộ xây dựng hệ mật, HAY

  • 1. 1 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN ------------------- PHẠM XUÂN CÔNG ỨNG DỤNG MÃ XYCLIC CỤC BỘ XÂY DỰNG HỆ MẬT LUẬN VĂN THẠC SĨ KHOA HỌC Hà Nội – 2010
  • 2. 2 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN ------------------- PHẠM XUÂN CÔNG ỨNG DỤNG MÃ XYCLIC CỤC BỘ XÂY DỰNG HỆ MẬT Chuyên ngành: Bảo đảm toán học cho máy tính và hệ thống tính toán Mã số: 60.46.35 LUẬN VĂN THẠC SĨ KHOA HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. PHẠM VIỆT TRUNG Hà Nội – 2010
  • 3. MỤC LỤC MỤC LỤC............................................................................................................. 1 CÁC CHỮ VIẾT TẮT.......................................................................................... 3 DANH MỤC BẢNG BIỂU ................................................................................... 4 DANH MỤC HÌNH VẼ........................................................................................ 5 MỞ ĐẦU ............................................................................................................... 6 CHƯƠNG 1 - TỔNG QUAN VỀ HỆ MẬT ...................................................10 1.1. Khái quát chung hệ mật mã cổ điển ...........................................................10 1.1.1. Mô hình hệ thống truyền tin mật...........................................................10 1.1.2. Một số hệ mật mã cổ điển điển hình......................................................11 1.2. Hệ mật khoá công khai...............................................................................13 1.2.1. Khái quát chung....................................................................................13 1.2.2. Nguyên tắc chung mã hoá với khoá công khai ......................................14 1.2.3. Quá trình phát triển của hệ mật mã khoá công khai...............................14 1.3. Kết luận .....................................................................................................24 CHƯƠNG 2 - LÝ THUYẾT VỀ MÃ XYCLIC CỤC BỘ VÀ PHÂN HOẠCH VÀNH ĐA THỨC ................................................................................25 2.1. Khái niệm mã xyclic và vành đa thức.........................................................25 2.1.1. Mã tuyến tính........................................................................................25 2.1.2. Vành đa thức.........................................................................................26 2.1.3. Mã xyclic..............................................................................................28 2.1.4. Mã hoá cho mã xyclic...........................................................................30 2.1.5. Giải mã ngưỡng....................................................................................31 2.1.6. Khái niệm mã xyclic cục bộ..................................................................34 2.1.7. Mối quan hệ giữa mã xyclic và xyclic cục bộ........................................34 2.1.8. Mã xyclic cục bộ xây dựng trên các nhóm nhân xyclic .........................35 2.2. Phân hoạch vành đa thức theo nhóm nhân xyclic.......................................35 2.2.1. Phân hoạch của vành theo các nhóm nhân xyclic..................................35 2.2.2. Phân hoạch vành đa thức theo nhóm nhân xyclic đơn vị .......................37 2.2.3. Thuật toán xây dựng vành đa thức theo nhóm nhân xyclic đơn vị .........39 2.3. Kết luận .....................................................................................................41 CHƯƠNG 3 - XÂY DỰNG HỆ MẬT MCELIECE TRÊN MÃ XCB..........42 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.........................................................................................................42 3.1.1. Tiêu chí lựa chọn bộ mã XCB để xây dựng hệ mật McEliece................42 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ộ......42
  • 4. 2 3.2. Sơ đồ khối xây dựng hệ mật McEliece với mã xyclic cục bộ.......................43 3.2.1. Sơ đồ mã hoá........................................................................................43 3.2.2. Sơ đồ giải mã........................................................................................46 3.3. Về một phương pháp xây dựng hệ mật McEliece trên mã XCB...................48 3.3.1. Phương pháp tạo khoá mã.....................................................................48 3.3.2. Thuật toán mã hoá ................................................................................50 3.3.3. Thuật toán giải mã ................................................................................53 3.4. Nghiên cứu thử nghiệm hệ mật McEliece trên mã xyclic cục bộ.................59 3.4.1. Quá trình tạo khoá ................................................................................59 3.4.2. Quá trình mã hoá ..................................................................................62 3.4.3. Quá trình giải mã ..................................................................................63 3.5. Đánh giá hệ mật McEliece trên mã xyclic cục bộ.......................................66 3.6. Kết luận .....................................................................................................67 KẾT LUẬN CHUNG...........................................................................................68 TÀI LIỆU THAM KHẢO ...................................................................................69
  • 5. 3 CÁC CHỮ VIẾT TẮT deg Bậc của đa thức (degree ) UCLN Ước chung lớn nhất (gcd) ord Cấp (order) XCB xyclic cục bộ
  • 6. 4 DANH MỤC BẢNG BIỂU Bảng 2.1: Các mã xyclic trên vành Z2[x]/x7 +1 Bảng 2.2: Phân hoạch vành Z2[x]/x5 +1 theo nhóm nhân xyclic đơn vị Bảng 2.3: Phân hoạch vành với a(x) = 1 + x + x2 Bảng 2.4: Kết quả phân hoạch vành đa thức trên máy tính core 2 duo 2.26GHz 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 Bảng 3.2: Các lớp kề lựa chọn để xây dựng bộ mã (64,8,32) Bảng 3.3: Ma trận G1 (8,64) Bảng 3.4: Ma trận sinh G (7,64) Bảng 3.5: Các dữ liệu nhị phân của 10 ký tự là: "1234567890" Bảng 3.6: Đánh giá hiệu suất phần mềm mã hoá và giải mã
  • 7. 5 DANH MỤC HÌNH VẼ Hình 1.1: Mô hình hệ thống truyền tin mật Hình 2.1: Thiết bị mã hoá cho mã xyclic (n,k) có đa thức sinh g(x) Hình 2.2: Cấu trúc vành Z2[x] / xn +1 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ị Hình 2.4. Chương trình tính phân hoạch vành theo nhóm nhân xyclic đơn vị Hình 3.1: Sơ đồ khối xây dựng hệ mật McEliece với mã XCB – Sơ đồ mã hoá Hình 3.2: Sơ đồ khối xây dựng hệ mật McEliece với mã XCB – Sơ đồ giải mã Hình 3.3: Sơ đồ thuật toán mã hoá Hình 3.4: Sơ đồ thuật toán giải mã Hình 3.5: Chương trình phần mềm mã hoá và giải mã
  • 8. 6 MỞ ĐẦU Ngày nay với sự phát triển mạnh mẽ của công nghệ thông tin và truyền thông, máy tính và mạng máy tính đang ngày càng đóng vai trò thiết yếu trong mọi lĩnh vực hoạt động của toàn xã hội. Dữ liệu trao đổi trên mạng chứa rất nhiều thông tin quan trọng cần được bảo vệ nên an toàn thông tin truyền trên mạng đóng một vai trò rất quan trọng. Trong những thập kỷ 70 và 80 của thế kỷ trước công nghệ mã hoá thông tin đã có bước phát triển vượt bậc. Các công nghệ mã hoá hiện đại đều không dựa vào khả năng giữ bí mật về công nghệ mã hoá (thuật toán là công khai) mà chỉ dựa vào bí mật chìa khoá giải mã, một hệ mật như vậy được gọi là hệ mật khoá công khai. Hệ mật này đáp ứng được đầy đủ đòi hỏi về bảo mật thông tin và phù hợp cho các ứng dụng rộng rãi trong cộng đồng. Trong thời gian gần đây, nhiều thuật toán tốt đã được xây dựng song song với tốc độ phát triển của công nghệ thông tin nói chung, tuy nhiên đó là những thuật toán và công nghệ mã hoá do nước ngoài cung cấp, do vậy để bảo vệ các thông tin, đặt biệt trong lĩnh vực an ninh quốc phòng, chúng ta phải tự mình xây dựng các giải pháp cho bảo mật thông tin. Ý tưởng về một hệ mật khoá công khai được Diffie và Hellman đưa ra vào năm 1976, sau đó Rivesrt, Shamir và Adleman đưa ra hệ mật nổi tiếng RSA vào năm 1977. Tiếp theo đó một số hệ mật dựa trên các thuật toán khác nhau ra đời, trong đó, quan trọng nhất là các hệ mật khoá công khai sau: - Hệ mật RSA: Độ bảo mật của hệ RSA dựa trên độ khó của việc phân tích ra thừa số nguyên lớn. - Hệ mật xếp ba lô Merkle – Hellman: Hệ này và các hệ liên quan dựa trên tính khó giải của bài toán tổng các tập con (bài toán NP đầy đủ). Tuy nhiên, tất cả các hệ mật xếp ba lô khác nhau đều đã chứng tỏ là không mật (ngoại trừ hệ mật Chor-Rivest). - Hệ mật McEliece: Hệ mật này dựa trên lý thuyết mã hoá đại số và vẫn còn được coi là an toàn. Hệ mật McEliece dựa trên bài toán giải mã cho các mã tuyến tính (cũng là một bài toán NP đầy đủ).
  • 9. 7 - Hệ mật ElGamal: Hệ mật ElGamal dựa trên tính khó giải của bài toán logarithm rời rạc trên các trường hữu hạn . - Hệ mật Chor-Rivest: Hệ mật Chor-Rivest cũng được xem như một hệ mật xếp ba lô, hiện nay nó vẫn được coi là an toàn. - Hệ mật trên các đường cong Elliptic: Các hệ mật này là biến tướng của các hệ mật khác (chẳng hạn như hệ mật ElGamal), chúng làm việc trên các đường cong Elliptic chứ không phải là trên các trường hữu hạn. Hệ mật này đảm bảo độ mật với số khoá nhỏ hơn các hệ mật khoá công khai khác. Trong các hệ mật khoá công khai ở trên, duy nhất có hệ mật McEliece dựa trên lý thuyết mã đại số để xây dựng hệ mật, với ứng dụng cụ thể là mã Goppa. Từ năm 1987, GS.TSKH. Nguyễn Xuân Quỳnh và PGS.TS Nguyễn Bình lần đầu tiên đề xuất phương pháp xây dựng mã xyclic cục bộ (XCB) [1][2][3][4], cùng với các kết quả nghiên cứu của các nghiên cứu sinh [5][6], mở ra khả năng có thể nghiên cứu phát triển tiếp lý thuyết về mã xyclic cục bộ. Các kết quả nghiên cứu trước đây đã đưa ra các phương pháp phân hoạch tổng quát vành theo các nhóm nhân xyclic khác nhau trong vành. Phương pháp giải mã cho xyclic cục bộ dùng phương pháp giải mã ngưỡng biểu quyết theo đa số, giải mã ngưỡng một cấp hoặc hai cấp ngưỡng. Việc cải tạo các mã xyclic cục bộ thành các mã tối ưu được sử dụng theo các phương pháp sử dụng dấu kiểm tra chẵn, sử dụng dấu thông tin giả, các lớp mã xyclic cục bộ tự trực giao và có khả năng trực giao đã được đưa ra. Các ưu điểm nổi bật của mã xyclic cục bộ là khả năng lựa chọn mã phong phú, thuật toán mã hoá và giải mã là tường minh, có hướng mở cho các nghiên cứu kế tiếp. Chính vì vậy, chúng tôi đã chọn đề tài “Ứng dụng mã xyclic cục bộ xây dựng hệ mật” với mục đích ứng dụng khả năng của mã xyclíc cục bộ để xây dựng một hệ mật khoá công khai dựa trên hệ mật McEliece.
  • 10. 8 Mục đích của luận văn Xây dựng một hệ mật khoá công khai dựa trên lược đồ hệ mật McEliece sử dụng mã xyclic cục bộ. Đối tượng nghiên cứu Lý thuyết về mật mã, hệ mật khoá công khai, lý thuyết số, đại số, lý thuyết mã xyclic cục bộ. Ý nghĩa khoa học và thực tiễn của luận văn Về khoa học: Nghiên cứu của luận văn góp phần làm phong phú thêm về lý thuyết mã xyclic cục bộ, chứng minh một khả năng mới xây dựng hệ mật khoá công khai dựa trên lý thuyết mã đại số. Về thực tiễn: Kết quả nghiên cứu sẽ đưa ra một khả năng có thể ứng dụng trong thực tế, góp phần nâng cao tính bảo mật của thông tin trên đường truyền. Phương pháp tiếp cận: Dựa trên cơ sở toán học về lý thuyết đại số, lý thuyết số học, các thuật toán để xây dựng các hệ mật khoá công khai, các giải thuật lập trình. Phương pháp nghiên cứu: Nghiên cứu lý thuyết mới về mã xyclic cục bộ. Ứng dụng các kết quả mới nhất về mã xyclic cục bộ vào hệ mật McEliece. Nội dung của luận văn - Tìm hiểu hệ mật khoá công khai McEliece - Nghiên cứu về mã xyclic cục bộ, tìm hiểu một phương án phân hoạch tổng quát vành theo nhóm nhân xyclic đơn vị. - Xây dựng một hệ mật dựa trên lược đồ McEliece sử dụng mã xyclic cục bộ. Nội dung của luận văn được chia thành các chương sau:
  • 11. 9 Chương 1. Nghiên cứu tổng quan về hệ mật: Khái quát chung về hệ mật mã cổ điển, sự ra đời của hệ mật khoá công khai, phân tích hệ mật khoá công khai dựa trên thuật toán McEliece. Chương 2. Các nghiên cứu về mã xyclic cục bộ, nghiên cứu thuật toán phân hoạch vành dựa trên nhóm nhân xyclic đơn vị. Viết chương trình và chạy thử phân hoạch vành đa thức. Nghiên cứu phương án sử dụng mã xyclic cục bộ xây dựng hệ mật khoá công khai dựa trên thuật toán McEliece. Chương 3. Xây dựng hệ mật McEliece trên mã xyclic cục bộ: Về một phương pháp xây dựng hệ mật McEliece trên mã xyclic cục bộ, xây dựng thuật toán mã hoá và giải mã. Xây dựng thuật toán và viết chương trình thử nghiệm hệ mật. Kết luận. Kết luận về kết quả nghiên cứu và kiến nghị về hướng phát triển tiếp theo.
  • 12. 10 Chương 1 - TỔNG QUAN VỀ HỆ MẬT Chương này trình bày tổng quan về quá trình hình thành và phát triển các hệ mật cổ điển và hệ mật khoá công khai, trong đó đi sâu phân tích về hệ mật McEliece làm tiền đề cho các chương tiếp theo. 1.1. Khái quát chung hệ mật mã cổ điển 1.1.1. Mô hình hệ thống truyền tin mật Nhiệm vụ cơ bản của mật mã là tạo ra khả năng liên lạc trên một kênh không mật cho hai người sử dụng sao cho người thám mã không thể hiểu được nội dung thông tin được truyền đi. Thông tin mà người gửi muốn gửi cho người nhận có cấu trúc tuỳ ý. Người gửi sẽ mã hoá bản tin (bản rõ) bằng một khoá đã được xác định trước và gửi bản mã tới người nhận qua kênh thông tin. Người thám mã không thể xác định được nội dung của bản rõ, nhờ có khoá mật KD người nhận có thể giải mã và thu được bản rõ. Mô hình hệ thống truyền tin mật được mô tả trên hình sau: Hình 1.1: Mô hình hệ thống truyền tin mật Theo quan niệm toán học ta có định nghĩa về hệ mật như sau [11]: Định nghĩa 1.1 Một hệ mật là bộ 5 (R, M, K, E, D) thoả mãn các điều kiện sau: Nguồn tin Thám mã Bộ giải mãBộ mã hoá Nhận tin Kênh an toàn truyền khoá Nguồn khoá Bản rõ Bản rõBản mã KE KD(Người gửi) (Người nhận) (Người thám mã)
  • 13. 11 1. R là một tập hữu hạn các bản rõ có thể. 2. M là tập hữu hạn các bản mã có thể. 3. K (không gian khoá) là tập hữu hạn các khoá có thể. 4. Đối với mỗi k∈ K có một quy tắc mã ek ∈ E và một quy tắc giải mã tương ứng dk ∈ D. Mỗi ek: R → M và dk: M → R là những hàm mà: dk(ek(x)) = x với mọi bản rõ x ∈ R Theo định nghĩa trên nếu một bản rõ x được mã hoá bằng ek và bản mã nhận được giải mã bằng dk thì ta phải thu được bản rõ ban đầu x. Người nhận và người gửi sẽ áp dụng thủ tục sau dùng hệ mật khoá riêng. Trước tiên, họ chọn một khoá ngẫu nhiên k ∈ K. Tiếp theo, giả sử người gửi muốn gửi một thông báo cho người nhận trên một kênh không mật và ta xem thông báo này là một chuỗi: x = x1 x2 … xn với số nguyên n ≥ 1 nào đó. Với xi ∈ R, 1 ≤ i ≤ n, mỗi xi đều sẽ được mã hoá bằng quy tắc mã ek với khoá k xác định trước. Người gửi sẽ tính: yi = ek(xi), 1 ≤ i ≤ n Chuỗi bản mã nhận được: y = y1 y2 … yn sẽ được gửi trên kênh. Khi nhận được y, người nhận sẽ giải mã bằng dk và thu được bản rõ x = x1x2 … xn. Hàm mã hoá ek phải là hàm ánh xạ một – một, nếu không việc giải mã sẽ không thể thực hiện được một cách tường minh. Chú ý rằng nếu R = M thì mỗi hàm mã hoá sẽ là một phép hoán vị, tức là nếu tập các bản mã và tập các bản rõ là đồng nhất, thì mỗi một hàm mã sẽ là một sự sắp xếp lại (hay hoán vị) các phần tử của tập này. Hệ mật mã cổ điển (hệ mã bí mật hay hệ mã đối xứng) là hệ mã trong đó việc mã hoá và giải mã cùng sử dụng chung một khoá bí mật. 1.1.2. Một số hệ mật mã cổ điển điển hình 1.1.2.1 Mã dịch vòng
  • 14. 12 Hệ mật được xây dựng dựa trên số học modulo. Ký hiệu m là số chữ cái của bộ chữ xây dựng bản rõ R. Mã dịch vòng được định nghĩa như sau. Theo định nghĩa 1.1, cho R = M = K = Zm với 0 ≤ k ≤ (m - 1) và x, y ∈ Zm, ta định nghĩa: ek(x) = (x + k) mod m và dk(x) = (y – k) mod m Các hệ mã hiện đại về thực chất là sự cải tiến của hệ mã dịch vòng. Về bản chất, mã hoá một văn bản tiếng Anh thông thường là sự thiết lập sự tương ứng giữa các chữ cái với các số theo modulo 26. Tính bảo mật của hệ mã dịch vòng nói chung là không cao, người ta có thể dùng phương pháp tìm khoá vét cạn để xác định bản rõ. Như vậy, điều kiện cần để một hệ mật an toàn là phép tìm khoá vét cạn không thể thực hiện được. 1.1.2.2 Mã thay thế Mã thay thế về bản chất là xem phép mã hoá và giải mã như các hoán vị của các ký tự và được định nghĩa như sau. Theo định nghĩa 1.1, cho R= M = Z26 , K chứa mọi hoán vị có thể của m ký hiệu. Với mỗi phép hoán vị π ∈ K, ta định nghĩa: eπ(x) = π(x) và dπ(y) = π -1 (y), trong đó π-1 là hoán vị ngược của π. Về mã này, với các văn bản tiếng Anh khi cần mã hoá, mỗi khoá của mã thay thế là một trong số 26! hoán vị. Do vậy, áp dụng phương pháp tìm khoá vét cạn sẽ khó khăn hơn. mã thay thế có thể dễ dàng bị thám mã bằng phương pháp thống kê. Cả hai hệ mã dịch vòng và mã thay thế được gọi là hệ thay thế đơn biểu. Về cơ bản, cả hai hệ đều xoay quanh phép thay thế. 1.1.2.3 Mã hoán vị Về ý tưởng mã hoán vị là thay đổi vị trí giữa các ký tự của bản rõ. Mã hoán vị được định nghĩa như sau: Cho m là một số nguyên dương xác định nào đó. Theo định nghĩa 1.1, cho R = M = (Z26)m và K gồm tất cả các hoán vị π của {1, ..., m}. Đối với một khoá π (tức là một hoán vị) ta xác định: eπ(x1, ..., xm) = (xπ(1), ..., xπ(m)) và dπ(y1, ..., ym) = (yπ -1 (1), ..., yπ -1 (m))
  • 15. 13 1.1.2.4 Các hệ mã dòng Trong các hệ mật nghiên cứu ở trên, các phần tử liên tiếp của bản rõ được mã hoá bằng cùng một khoá k. Bản mã y nhận được có dạng: y = y1y2 ... = eK(x1) eK(x2) ... Các hệ mật thuộc dạng này thường được gọi là các mã khối. Trên một quan điểm khác, người ta xây dựng các hệ mã dòng. Ý tưởng cơ bản ở đây là tạo ra một dòng khoá z = z1z2z3... và dùng nó để mã hoá một xâu bản rõ x = x1x2x3... theo quy tắc: 1 21 2 Z 1 Z 2y = y y ...= e (x )e (x )... Về mặt toán học mã dòng theo [11] được định nghĩa như sau: Định nghĩa 1.2 Mật mã dòng là một bộ (R, M, K, L, F, E, D) thoả mãn các điều kiện sau: 1. R là tập hữu hạn các bản rõ có thể. 2. M là tập hữu hạn các bản mã có thể. 3. K là tập hữu hạn các khoá có thể (không gian khoá). 4. L là tập hữu hạn bộ chữ của dòng khoá. 5. F = (f1f2 ...) là bộ tạo dòng khoá. Với i ≥ 1, fi: K × R-1 → L 6. Với mỗi z ∈ L có một quy tắc mã ez ∈ E và một quy tắc giải mã tương ứng dz ∈ D thoả mãn dz(ez(x)) = x với mọi bản rõ x ∈ R. Ta có thể coi mã khối là một trường hợp đặc biệt của mã dòng khi dùng khoá không đổi zi = K, với ∀i ≥ 1. 1.2. Hệ mật khoá công khai 1.2.1. Khái quát chung Việc xây dựng các hệ mật khoá công khai là thiết kế một hệ mật sao cho khả năng tính toán để xác định quy tắc giải mã (dk) là rất thấp dù biết quy tắc mã
  • 16. 14 hoá ek. Vì vậy quy tắc mã hoá ek có thể được công khai rộng rãi. Ưu điểm của hệ mật này là người gửi có thể gửi bản tin cho người nhận mà không cần thông tin trước về khoá mật. Người nhận là người duy nhất có thể giải mã thông tin nhận được nhờ sử dụng quy tắc giải mã dk. Hàm mã khoá công khai ek là một hàm dễ tính toán. Việc tìm hàm ngược dk (hàm giải mã) là cực kỳ khó khăn. Điều kiện cần thiết ek phải là hàm một chiều. [11] 1.2.2. Nguyên tắc chung mã hoá với khoá công khai Trong hệ thống có N đối tượng cùng trao đổi thông tin mật. Từng đối tượng chọn cho mình một khoá lập mã k và hàm mã hoá ek được công khai. Như vậy có N khoá lập mã công khai k1 ,k2 ,k3, ..., kn. Khi đối tượng i muốn gửi thông tin cho đối tượng j thì dữ liệu được chuyển thành từng khối với độ dài nào đó, mỗi khối P trong văn bản được mã hoá bằng khoá lập mã jke của đối tượng j, thông tin gửi đi có dạng: jkM = e (P). Để giải mã, đối tượng j thực hiện: ( )j j jk k kd (M) = d e (P) = P . Do jke và jkd là khoá lập mã và giải mã của đối tượng j nên các đối tượng khác trong hệ thống không thể tìm ra khoá giải mã jkd trong thời gian chấp nhận được mặc dù biết jke . 1.2.3. Quá trình phát triển của hệ mật mã khoá công khai Các hệ mật khoá công khai được nghiên cứu và phát triển mạnh mẽ vào cuối những năm 70 của thế kỷ trước. Các hệ mật điển hình đã được tập trung nghiên cứu phát triển và đưa vào ứng dụng trong thực tế là hệ mật RSA, hệ mật RABIN, hệ mật ELGAMAL, hệ mật CHOR-RIVEST, hệ mật McELIECE [11].. 1.2.3.1 Hệ mật RSA Hệ RSA được xây dựng trên cơ sở mã mũ, trong đó khoá lập mã là cặp (b,n), gồm số mũ b và mod n. Với n = p.q trong đó p và q là các số nguyên tố cực lớn. Còn b được chọn là một số nguyên ngẫu nhiên sao cho UCLN(b,Φ(n)) = 1, với
  • 17. 15 Φ(n) là giá trị hàm Euler của n, ở đây Φ(n) = (p-1)(q-1). Đặt R = M = Zn và định nghĩa K= {(n, p, q, a, b): ab ≡ 1 (mod Φ(n)) Với k=(n, p, q, a, b) ta xác định ek (x) = xb mod n và dk (y) = ya mod n (x,y ∈ Zn). Các giá trị n và b được công khai và các giá trị p, q, a được giữ kín. - Tạo khoá: Mỗi đối tượng trong hệ thống trao đổi thông tin cần tạo một khoá công khai và một khoá riêng tương ứng theo các bước sau: + Tạo 2 số nguyên tố lớn ngẫu nhiên và khác nhau p và q. + Tính n = p.q và Φ(n) = (p - 1)(q - 1). + Chọn một số nguyên ngẫu nhiên b (0 < b < Φ(n)) sao cho: (b, Φ) = 1 + Sử dụng thuật toán Euclide mở rộng để tính a = b-1 mod Φ(n). + Khoá công khai là cặp số (n,b). Khoá riêng bí mật là a. - Mã hoá: B mã hoá một thông báo m để gửi cho A bản mã cần giải. B phải thực hiện: + Thu nhận khoá công khai (n,b) của A. + Biểu diễn bản tin dưới dạng một số nguyên m trong khoảng [0,n - 1]. + Tính c = mb mod n. + Gửi bản mã c cho A. - Giải mã: Khôi phục bản rõ m từ c. A phải thực hiện phép tính sau bằng cách dùng khoá riêng m = ca mod n. - Đánh giá: Nếu ta chọn các số p và q vào khoảng 100 chữ số, thì n sẽ vào khoảng 200 chữ số như vậy hệ mật RSA được coi là an toàn. Để tránh bị rơi vào các trường hợp đặc biệt (n bị phân tích nhanh nhờ những thuật toán mới) thì cần phải chọn (p – 1) và (q – 1) có toàn các ước nguyên tố nhỏ, UCLN (p – 1, q – 1) phải là số nhỏ.
  • 18. 16 Trong thực tế tốc độ mã hoá theo thuật toán RSA là rất chậm do vậy người ta không ứng dụng hệ mật RSA cho mã hoá khối dữ liệu lớn mà thường chỉ tập trung cho các vấn đề như: xác nhận chủ thể, tạo vỏ bọc an toàn cho văn bản mật.. 1.2.3.2 Hệ mật ELGAMAL Hệ mật ElGamal được xây dựng trên bài toán logarithm rời rạc. Việc mô tả bài toán này được thiết lập trong trường hữu hạn Zp, p là số nguyên tố (Bài toán logarithm rời rạc trong Zp) (Nhóm nhân * pZ là nhóm nhân xyclicvà phần tử sinh của * pZ được gọi là phần tử nguyên thủy). Hệ mật ElGamal theo [11] được định nghĩa như sau: Định nghĩa 1.5: Cho p là một số nguyên tố sao cho bài toán logarithm rời rạc trong Zp là khó giải. Cho α ∈ * pZ là phần tử nguyên thủy. Giả sử P = * pZ , C = * pZ x * pZ . Ta định nghĩa: K = {(p, α, a, β): β ≡ α a (mod p)} Các giá trị p, α, β được công khai, còn a giữ kín. Với K = (p, α, a, β) và một số ngẫu nhiên bí mật k ∈ Zp, ta xác định: ek(x, k) = (y1, y2) trong đó: y1 = α k mod p y2 = x βk mod p với y1, y2 ∈ * pZ ta xác định: dk(x, k) = y2 ( 1 a y )-1 mod p Bài toán logarithm rời rạc trong Zp Đặc trưng của bài toán: I = (p, α, β) trong đó p là số nguyên tố, α ∈ Zp là phần tử nguyên thủy, β ∈ * pZ . Mục tiêu: Hãy tìm một số nguyên duy nhất a, 0 ≤ a ≤ p – 2 sao cho:
  • 19. 17 αa ≡ β (mod p) Bài toán logarithm rời rạc trong Zp là đối tượng trong nhiều công trình nghiên cứu và được xem là bài toán khó nếu p được chọn cẩn thận. Cụ thể là không có một thuật toán thời gian đa thức nào cho bài toán logarithm rời rạc. Để gây khó khăn cho các phương pháp tấn công đã biết, p phải có ít nhất 150 chữ số và (p - 1) phải có ít nhất một thừa số nguyên tố lớn. Lợi thế của bài toán logarithm rời rạc trong xây dựng hệ mật là khó tìm được các logarithm rời rạc, song bài toán ngược lấy lũy thừa lại có thể tính toán hiệu quả theo thuật toán nhân và bình phương. Nói cách khác, lũy thừa theo modulo p là hàm một chiều với các số nguyên tố p thích hợp. Elgamal đã phát triển một hệ mật khóa công khai dựa trên bài toán logarithm rời rạc. Hệ mật Elgamal là một hệ mật không tất định vì bản mã phụ thuộc vào cả bản rõ x lẫn giá trị ngẫu nhiên do người mã hóa chọn. Bởi vậy, sẽ có nhiều bản mã được mã từ cùng bản rõ. 1.2.3.3 Hệ mật xếp ba lô MERKLE – HELLMAN Hệ mật xếp ba lô Merkle – Hellman nổi tiếng lần đầu được Merkle- Hellman mô tả vào năm 1978. Mặc dù hệ mật này và một vài biến thể của nó đã bị phá vào đầu những năm 1980, nhưng nó vẫn là một cống hiến có giá trị do sự tinh tế về khái niệm và kỹ thuật thiết kế có tính nền tảng của mình. Hệ thống này xây dựng trên cơ sở bài toán tổng tập con (là bài toán NP-đầy đủ). Với một danh sách các cỡ (s1, s2, s3,.., sn) là một dãy siêu tăng nếu: 1 1 j j i i s s − = > ∑ với 2 ≤ j ≤ n. Nếu danh sách các cỡ là một dẫy siêu tăng thì dạng tìm kiếm của bài toán tổng các tập con có thể giải rất dễ dàng với thời gian O(n) và nghiệm x (nếu tồn tại) phải là nghiệm duy nhất. Giả sử s = (s1,...,sn) là một dẫy siêu tăng, xét hàm
  • 20. 18 1 :{0,1} {0,..., } n n s i i e s = → ∑ Hàm này được xác định như sau: 1 1 ( ,..., ) n s n i i i e x x x s = = ∑ Từ đó có thể dùng es như một quy tắc mã hoá. Vì s là một dẫy siêu tăng nên es là một đơn ánh và thuật toán để giải trường hợp siêu tăng của bài toán tổng các tập con sẽ là thuật toán giải mã tương ứng. Tuy nhiên một hệ thống như vậy sẽ hoàn toàn mất an toàn vì bất kỳ ai cũng có thể giải mã một bản tin theo cách trên. Vấn đề cơ bản ở đây là biến đổi danh sách các cỡ theo cách sao cho nó không còn là dãy siêu tăng nữa. Người nhận sẽ không thể áp dụng một phép biến đổi ngược để khôi phục lại danh sách siêu tăng các cỡ. Mặt khác, người thám mã (không biết phép biến đổi được dùng) phải đối mặt với bài toán tổng quát (là một bài toán khó của bài toán tổng các tập con) trong khi cố gắng giải mã một bản mã. Một kiểu biến đổi thích hợp là phép biến đổi theo modulo, điều này có nghĩa là phép biến đổi modulo p được chọn sao cho: 0 n i i p s = > ∑ Ta chọn thừa số a thoả mãn 1 ≤ a ≤ p-1. Sau đó xác định: ti = a si mod p 1 ≤ i ≤ n. Danh sách các cỡ t = (t1,.., tn) là khoá công khai được dùng để mã hoá. Các giá trị a, p dùng để xác định phép biến đổi theo modulo sẽ được giữ kín. Theo [11] ta có định nghĩa sau: Định nghĩa 1.6: Cho s = (s1,....,sn) là một danh sách các số nguyên siêu tăng. Cho 1 n i i p s = > ∑ là một số nguyên tố và 1 ≤ a ≤ p-1. Với 1 ≤ i ≤ n, ta xác định:
  • 21. 19 ti = a si mod p và ký hiệu t = (t1,...,tn). Giả sử P = {0,1}n , C = {0,...,n(p-1)} và cho K={(s,p,a,t)}. Trong đó s, a, p và t là các số được xây dựng như trên t được công khai, còn p, a và s được giữ kín. Với K ={(s,p,a,t)} ta định nghĩa: 1 1 ( ,.. ) n K n i i i e x x x t = = ∑ với 0 ≤ y ≤ n(p-1) ta xác định z = a-1 y mod p và giải bài toán tập con (s1,..., sn,z), ta sẽ được: dK(y) = (x1,...,xn) 1.2.3.4 Hệ mật McEliece Hệ mật McEliece [11] sử dụng nguyên lý tương tự như hệ mật Merkle- Hellman. Phép giải mã là một trường hợp đặc biệt của bài toán NP đầy đủ. Trong hệ thống này, bài toán NP được áp dụng ở đây là bài toán giải mã cho một mã sửa sai (nhị phân) tuyến tính nói chung. Tuy nhiên, đối với nhiều lớp mã đặc biệt tồn tại các thuật toán thời gian đa thức. Một trong những lớp mã này là mã Goppa, chúng được dùng làm cơ sở cho hệ mật McEliece. Định nghĩa 1.7 Coi k, n là các số nguyên dương, k ≤ n. Mã C[n,k] là một không gian con k chiều của (Z2)n (không gian véc-tơ của tất cả các véc-tơ nhị phân n chiều). Ma trận sinh của mã C[n,k] là ma trận nhị phân k n× , các hàng của ma trận này tạo nên cơ sở của C. Coi x,y ∈ (Z2)n , trong đó x = (x1, x2,..,xn) và y = (y1,…,yn). Ta xác định khoảng cách Hamming: d(x,y) = |{i: 1 ≤ i ≤ n, xi ≠ yi}| tức là số các tọa độ mà ở đó x và y khác nhau.
  • 22. 20 Coi C là mã [n,k]. Khoảng cách mã C được định nghĩa như sau: d(C) = min{d(x, y): x, y ∈ C, x ≠ y} Mã [n, k] có khoảng cách d được ký hiệu là mã [n, k, d]. Mã sửa sai được dùng để sửa các sai ngẫu nhiên xảy ra khi truyền số liệu qua kênh có nhiễu. Giả sử G là một ma trận sinh đối với mã [n, k, d], x là véc-tơ nhị phân k chiều cần truyền. Người gửi sẽ mã hóa x thành một véc-tơ n chiều y = x.G rồi truyền y qua kênh. Giả sử người nhận nhận được véc-tơ n chiều r không giống y, người nhận sẽ giải mã r bằng chiến thuật giải mã “người láng giềng gần nhất”. Theo chiến thuật này, người nhận sẽ tìm thấy từ mã y’ có khoảng cách tới r nhỏ nhất. Sau đó sẽ giải mã r thành y’, rồi xác định véc-tơ k chiều x’ sao cho y’ = x’G. Người nhận hy vọng y’= y và bởi vậy x’= x (tức là người nhận tin rằng các sai số trên đường truyền đã được sửa). Dễ dàng thấy rằng, nếu sai số trên đường truyền nhiều nhất là (d - 1)/2 thì sẽ sửa được tất cả các sai. Trên thực tế, thuật toán giải mã này được thực hiện như sau: Vì |C| = 2k nên người nhận so sánh r với mỗi từ mã phải kiểm tra, 2k véc-tơ là một số lớn theo hàm mũ so với k. Nói cách khác, thuật toán này không phải là thuật toán thời gian đa thức. Một biện pháp khác (tạo cơ sở cho nhiều thuật toán giải mã thực tế) dựa trên khái niệm về syndrom. Ma trận kiểm tra tính chẵn lẻ của mã C[n,k,d] - có ma trận sinh G - là một ma trận nhị phân (n - k) x n chiều (ký hiệu là H). Các hàng của H sẽ tạo cơ sở cho các phần bù trực giao của C (ký hiệu là C⊥ ) và được gọi là mã đối ngẫu với C. Các hàng của H là những véc-tơ độc lập tuyến tính, còn GH⊥ là một ma trận không, cấp k x (n-k). Cho véc-tơ r∈(Z2)n , ta xác định syndrom của r là Hr⊥ . Syndrom Hr⊥ là một véc-tơ cột có (n-k) thành phần. Định lý 1.1
  • 23. 21 Giả sử C là một mã [n, k] có ma trận sinh G và ma trận kiểm tra tính chẵn lẻ H. Khi đó y ∈ (Z2)n là một từ mã khi và chỉ khi T 0 0 . H.y = . . 0                    Hơn nữa nếu y ∈ C, e ∈ (Z2)n và r = y + e thì HrT = HeT . Ta coi e là véc-tơ sai xuất hiện trong quá trình truyền từ mã y. Khi đó r biểu diễn véc-tơ thu được. Định lý trên phát biểu rằng syndrom chỉ phụ thuộc vào các sai số mà không phụ thuộc vào từ mã cụ thể nào được truyền đi. Điều này đưa tới một cách giải mã gọi là giải mã theo syndrom: - Tính s = HrT - Nếu s là một véc-tơ toàn không, thì giải mã r thành r. - Nếu không thì tính HeT cho từng véc-tơ sai (có trọng số 1). - Nếu có một véc-tơ e nào đó thỏa mãn HeT = s thì giải mã r thành r-e. - Ngược lại, tiếp tục tính HeT cho các véc-tơ sai có trọng số 2,3,..., [(d-1)/ 2] cho đến khi thỏa mãn HeT = s thì giải mã r thành r-e. Theo thuật toán này, có thể giải mã cho một véc-tơ nhận được trong nhiều nhất t i n i=0 C∑ bước (t là số sai có thể sửa được). Phương pháp này làm việc trên một mã tuyến tính bất kỳ. Đối với một số loại mã đặc biệt, thủ tục giải mã có thể nhanh chóng hơn. Tuy nhiên, trên thực tế, cách giải quyết này cho chiến thuật giải mã “người láng giềng gần nhất” vẫn là một bài toán NP đầy đủ. Như vậy, vẫn chưa có một thuật toán thời gian đa thức cho
  • 24. 22 trường hợp tổng quát cho chiến thuật giải mã người láng giềng gần nhất. (Khi số các sai số không bị giới hạn bởi [(d-1)/2]). Cũng giống như bài toán tổng hợp tập con, có thể chỉ ra một trường hợp đặc biệt “dễ”, sau đó ngụy trang sao cho nó giống với bài toán chung “khó”. Một trường hợp “dễ” được McEliece đề nghị là dùng một mã trong lớp các mã Goppa. Trên thực tế, mã này có thuật toán giải mã hữu hiệu. Hơn nữa mã này rất dễ tạo và trong cùng một lớp mã có thể tạo một số lượng lớn các mã khác nhau. Các tham số của mã Goppa có dạng n = 2m , d = 2t +1 và k = n - mt. Để áp dụng trong thực tế cho một hệ mật khóa công khai, McEliece đề nghị chọn m = 10 và t = 50. Điều này ứng với mã Goppa [1024,524,101]. Mỗi bản rõ là một véc-tơ nhị phân có độ dài 524 và mỗi bản mã là một véc-tơ nhị phân độ dài 1024. Khóa công khai là một ma trận nhị phân 524 x 1024. Hệ mật McEliece được mô tả như sau: Cho G là một ma trận sinh của một mã Goppa C[n, k, d], trong đó n = 2m , d = 2t+1 và k = n - mt. Cho S là một ma trận khả nghịch cấp k k× trên Z2. Giả sử P là một ma trận hoán vị cấp n n× , ta đặt G’ = SGP. Cho P = (Z2)2 , C = (Z2)n và ký hiệu: K = {(G, S, P, G’)} Trong đó G, S, P được xây dựng như mô tả ở trên và được giữ kín, còn G’ được công khai. Với K = (G, S, P, G’), ta định nghĩa: ek(x, e) = x.G’ + e. Ở đây, e ∈ (Z2)n là một véc-tơ ngẫu nhiên có trọng số t. Người nhận giải mã bản mã y ∈ (Z2)n theo các bước sau: 1. Tính: y1 = yP-1 . 2. Giải mã y1, người nhận tìm được: y1 = x1 + e1, x1∈C. 3. Tính x0 ∈ (Z2)k sao cho: x0G=x1
  • 25. 23 4. Tính x = x0S-1 Để minh họa cho các thủ tục mã và giải mã, ta xét ví dụ sau : Ma trận 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 1 1 1 G      =       Là ma trận sinh của mã Hamming [7, 4, 3]. Giả sử người nhận chọn ma trận S và ma trận P như sau: 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 S      =       và 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 P           =             Khi đó ma trận sinh công khai là : 1 1 1 1 0 0 0 1 1 0 0 1 0 0 ' 1 0 0 1 1 0 1 0 1 0 1 1 1 0 G      =       Giả sử người gửi mã hóa bản rõ x = (1,1,0,1) bằng cách dùng một véc-tơ sai ngẫu nhiên trọng số 1 có dạng e = (0,0,0,0,1,0,0). Bản mã tính được là: y = xG’ + e = 1 1 1 1 0 0 0 1 1 0 0 1 0 0 (1,1,0,1) (0,0,0,0,1,0,0) 1 0 0 1 1 0 1 0 1 0 1 1 1 0             + = (0, 1, 1, 0, 0, 1, 0) + (0, 0, 0, 0, 1, 0, 0) = (0, 1, 1, 0, 1, 1, 0)
  • 26. 24 Khi người nhận nhận được bản mã y, trước hết tính: 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 (0,1,1,0,1,1,0) 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 −                       = =y yP = (1, 0, 0, 0, 1, 1, 1) Tiếp theo người nhận giải mã y1 để nhận được x1 = (1, 0, 0, 0, 1, 1, 0) (cần để ý là e1 ≠ e do phép nhân với P-1 ). Sau đó lập x0 = (1, 0, 0, 0) (bốn thành phần đầu tiên của x1). Cuối cùng người nhận tính: 1 0 1 1 0 1 1 1 0 0 (1,0,0,0) (1,1,0,1) 0 1 1 1 1 0 0 1 −             = = =x S x Đây chính là bản rõ cần nhận được. 1.3. Kết luận Trong chương này đã đề cập tới các nội dung về các hệ mật mã cổ điển và các hệ mật mã khoá công khai, trên cơ sở phân tích các ưu nhược điểm của các hệ mật, chúng ta nhận thấy rằng trong các hệ mật khoá công khai chỉ có hệ mật McEliece là sử dụng lý thuyết mã đại số cụ thể là mã Goppa để xây dựng hệ mật. Với sự phát triển của lý thuyết xây dựng mã xyclic cục bộ, chúng ta hoàn toàn có thể tự xây dựng một hệ mật khoá công khai dựa trên lược đồ McEliece sử dụng mã xyclic cục bộ.
  • 27. 25 Chương 2 - LÝ THUYẾT VỀ MÃ XYCLIC CỤC BỘ VÀ PHÂN HOẠCH VÀNH ĐA THỨC 2.1. Khái niệm mã xyclic và vành đa thức 2.1.1. Mã tuyến tính a) Mã tuyến tính Mã tuyến tính độ dài n là mã mà từ mã của nó có các dấu mã là các dạng tuyến tính. Mã tuyến tính (n,k) là mã tuyến tính độ dài n trong đó ta có thể chỉ ra được vị trí của k dấu thông tin trong từ mã. Mã tuyến tính ngẫu nhiên là mã tuyến tính có các dấu mã được chọn ngẫu nhiên từ các dạng tuyến tính có thể có. b) Ma trận sinh và ma trận kiểm tra Để đơn giản cho việc mô tả mã tuyến tính người ta thường sử dụng ma trận sinh G[k x n]. Ma trận này chứa k véc-tơ hàng độc lập tuyến tính tạo nên không gian mã V(n,k). Trong đại số tuyến tính ta biết rằng với mỗi G sẽ tồn tại ma trận H[r x n] thỏa mãn: G . HT = 0, r = n - k Ma trận H được gọi là ma trận kiểm tra của mã tuyến tính (n, k). Ta thấy rằng H chứa r véc-tơ hàng trực giao với các véc-tơ hàng của G. Hiển nhiên là nếu a là một véc-tơ mã a ∈ V(n,r) thì a.HT = 0. Ở đây, H cũng là một ma trận sinh của một mã tuyến tính V(n,r) và G lại chính là ma trận kiểm tra của mã này. Ta có thể viết ra r phương trình: 1 0, 1,2,.., n j ij j a h i r = = =∑ Các phương trình này còn được gọi là các tổng kiểm tra của mã tuyến tính.
  • 28. 26 2.1.2. Vành đa thức Nhóm hữu hạn <G,.>, với G = { αi , ∀i } thì G gọi là nhóm xyclic sinh bởi α, và α được gọi là phần tử sinh của nhóm. Vành đa thức là tập hợp các đa thức thực hiện được hai phép toán cộng (+) và nhân (.) đa thức theo modulo xn + 1, trong đó < f(x), + > tạo thành một nhóm còn < f(x), . > tạo thành nửa nhóm. Ký hiệu vành đa thức là Rn. Nếu xét trên trường nhị phân GF(2) thì vành đa thức được kí hiệu dưới dạng Z2[x]/xn +1. Trên vành đa thức Z2[x]/xn +1 ta định nghĩa phép nhân modulo như sau: a(x), b(x) là các đa thức của vành, a(x).b(x) = c(x) (mod xn +1) cũng là một đa thức của vành. Ví dụ, trên vành Z2[x]/x5 +1: a(x) = 1 + x4 , b(x) = x, phép nhân hai đa thức này là c(x) = a(x).b(x)= (1+x4 )(x)= x5 +x = x+1 (mod x5 +1). Ideal I của vành đa thức gồm tập các đa thức a(x) là bội của một đa thức g(x) thỏa mãn: - g(x) là ước của xn + 1. - deg g(x) = min deg a(x) với mọi a(x) ∈ I, a(x) ≠ 0. Ký hiệu Ideal I trong vành đa thức là I = <g(x)>. Xét trong vành đa thức, đa thức a(x) = 1 0 n i i i a x − = ∑ 0 1 1( , ,..., )na a a a −⇔ = . Nhân a(x) với nhân tử x ta có: b(x) = a(x). x = x.( 1 0 n i i i a x − = ∑ ) 1 0 2( , ,..., )n nb a a a− −⇔ = . Biểu diễn của véc tơ b là dịch vòng sang phải một cấp so với của véc-tơ a. * Phần tử đối xứng a(x) được gọi là phần tử đối xứng của ( )a x nếu: 1 0 0 ( ) ( ) ( ) − = + = = ∑ n i i a x a x c x x với: ( ) , ( ) ∈ ∈ = =∑ ∑i j i j i I j J a x a x a x a x ,
  • 29. 27 I ∪ J = S = {0,1,2,…,n-1} , I ∩ J = ∅ Định lý 2.1 (Với n lẻ): Trong vành luôn luôn tồn tại đa thức có bậc lớn nhất bằng m. Ký hiệu: m = max deg fi(x). Cấp lớn nhất của một đa thức trong vành được xác định: max ord a(x) = 2m – 1, với ∀a(x) ∈ Rn. Ví dụ: n = 9: x9 + 1 = (1+ x)(1 + x + x2 )(1 + x3 + x6 ) → m = 6 → max ord a(x) = 26 – 1 = 63 Xét đa thức a(x) ∈ Rn ( Z2[x]/(xn +1) ). * Nhóm nhân xyclic đơn vị Nhóm nhân xyclic đơn vị là nhóm bao gồm mọi đơn thức có bậc <n (nhóm có n phần tử). Ký hiệu là : I = { x, x2 , x3 , …, xn-1 , 1 } 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: A = { a(x), (a(x))2 , (a(x))3 , …} * 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: A(a,q) = { a(x), a(x).q(x), a(x).q2 (x), …, a(x).qm-1 (x)} 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).
  • 30. 28 2.1.3. Mã xyclic a) Định nghĩa Định nghĩa 2.2 Mã xyclic (n, k) là ideal I = <g(x)> 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 Z2[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 (7,7) 1 1 + x (7,6) 2 1 + x + x3 (7,4) 3 1 + x2 + x3 (7,4) 3 1 + x + x2 + x4 (7,3) 4 1 + x2 + x3 + x4 (7,3) 4 1 + x + x2 + x3 + x4 + x5 + x6 (7,1) 7 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ư sau:
  • 31. 29 1 ( ) . ( ) ... . ( )k g x x g x G x g 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ó thể mô tả như sau: 3 2 4 2 3 5 3 4 6 1 1 0 1 0 0 01 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 x x x x x G x x x x x 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) = xn + 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 là các đa thức trực giao. Ta có h(x) = 0 k j j j h x = ∑ , với h0 = hk = 1, hj ∈ {0,1}, với j = 2,..,k-1. Ma trận kiểm tra của mã xyclic sinh bởi g(x) là: * * 1 * ( ) . ( ) ... . ( )r h x x h x H x h x−      =        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à: Ta có: h(x) = (x7 +1)/(1+x+x3 ) = (1+x)(1+x2 +x3 ) = x4 +x2 +x+1 h*(x) = 1+x2 +x3 +x4 Ma trận kiểm tra:
  • 32. 30 2 3 4 3 4 5 2 4 5 6 1 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 x x x H x x x x x x x x  + + +       = + + + =      + + +    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 Ta có ( ) 1 0 . ( ) ( ) n i n k i i f x f x x a x r x − − = = = +∑ 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ời rạc ai ∈ A. Đầ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). c) Thiết bị mã hoá
  • 33. 31 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à otomat nhớ dạng của g(x). Giả sử g(x) = 1 0 r i i i g x − = ∑ . Thiết bị mã hoá cho mã (n,k) với đa thức sinh g(x) như hình sau: 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à V1 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à V2 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: - Thủ tục 1: Dẫn ra bản tin từ dãy dấu nhận được. 1 2 r+ + + g1 g2 gr-1 V1 1,2,..,k V2 k+1,..,n ai(x).xn-k Vào Ra H 1,..,n +
  • 34. 32 - Thủ tục 2: Dẫn ra véc-tơ sai từ dãy dấu nhận được. 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: 1 ( ) . ( ) ... . ( )k g x x g x G x g x−      =       Gọi h(x) = (xn + 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) = xdeg h(x) . h(x-1 ). Khi đó, ma trận kiểm tra của mã V(n,k) có dạng: * * 1 * ( ) . ( ) ... . ( )r h x x h x H x h x−      =        Ta có G.HT = 0. Với v ∈ V bất kì, ta có v.HT = 0. Xét mô hình truyền tin sau: u = v + e Kênh Giải mã x x’ y = x + e y e +e’ Kênh Giải mãx x’ y = x + e y e Kênh v e u = (u0, u1, ..., un-1 )
  • 35. 33 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ã ui, 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 ui 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ã uj 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 tra trực giao với một tổ hợp tuyến tính nào đó các dấu mã.
  • 36. 34 Xét tổ hợp tuyến tính các dấu mã sau: 1 2 ... mi i iU U Uα = + + + , khi đó hệ 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ệ. - Uj (j ≠ ik với Uik ∈ α ) chỉ nằm trong nhiều nhất là một tổng kiểm tra trong 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ã Uik 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 kề được xây dựng theo cách sau đây sẽ tạo nên một mã xyclic:
  • 37. 35 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: 0 1 2 1 ... 0− = = = = =n x x x x . 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à ϕ(l), trong đó ϕ(l) là hàm Euler, ϕ(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.ϕ(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 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
  • 38. 36 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 R5; Z2[x]/ (x5 +1) = (1+x)(1+x+x2 +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ị 1 2 3 4 0 01 12 23 34 04 02 13 24 03 14 012 123 234 034 014 013 124 023 134 024 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: Bảng 2.3: Phân hoạch vành với a(x) = 1 + x + x2 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
  • 39. 37 Đâ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ó N1 = 3!.53 = 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ó: N2 = 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 thức theo nhóm nhân xyclic đơn vị được chỉ ra trên hình dưới:
  • 40. 38 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à (2n -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 toán được hết các phần tử và các lớp kề của phân hoạch. 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
  • 41. 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ị Bắt đầu Tính trưởng lớp kề Tính phần tử lớp kề Kiểm tra tồn tại Tính số đa thức trọng số i: Ci k n = Ci k Kết thúc i = k Đúng Sai Đúng Sai Đúng Sai Hiển thị kết quả n = n+1 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ị Nhập K, i = 0 i = i + 1 Lưu lớp kề ra tệp
  • 42. 40 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 hiện phân hoạch vành đa 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ị Đâ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 Stt Số dấu thông tin Thời gian tính toán Kích thước dữ liệu 1 k = 5 < 1s 108 byte 2 k = 7 < 1s 1008 byte 3 k = 8 < 1s 2.25 Kbyte 4 k = 9 < 1s 5 Kbyte 5 k = 12 < 1s 56 Kbyte 6 k = 16 ~ 7 s 1.281 Kbyte 7 k = 17 ~ 23 s 2.752 Kbyte
  • 43. 41 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 trên mã xyclic cục bộ ở chương sau.
  • 44. 42 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 khai và một khoá bí mật, khoá công khai là ' iG , khoá bí mật là Si, Gi, Pi. Các bên tham gia hệ mật McEliece chia sẻ chung các tham số: n, k, t. Khóa bí mật:
  • 45. 43 + 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ã Cần giải mã bản mã y ∈ (Z2 )n - Tính y1 = y.P-1 - Sử dụng phương pháp giải mã y1 để có được y1 = x1 + e1 - Tính x0 ∈ (Z2 )k sao cho x0 .G = x1 - 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ị cấp [64x64]. Khoá công khai G' = S.G.P là ma trận [7x64].
  • 46. 44 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: M1 = 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 khi kết thúc.
  • 47. 45 Ma trận [7x7] Ma trận sinh G’ [7 x 64] Ma trận [8x64] 7 1 ( ,8) ( , ) j i i j = = ∑ Ma trận [1x512] Bản rõ Bản mã Hình 3.1. Sơ đồ khối mã hoá của hệ mật McEliece với mã XCB Véc tơ sai [1xn] có chứa 31 bít 1 và n≤ 512 ⊕
  • 48. 46 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 với mã xyclic cục bộ.
  • 49. 47 Ma trận P-1 [64x64] Ma trận [8x64] Ma trận [7x7] Ma trận [1x512] Ma trận [8x64] Ma trận tổng kiểm tra Ma trận S-1 [7x7] Thực hiện mã hóa theo sơ đồ hình 3.1 Ma trận [1x n] có chứa tối đa 31 bít 1 và n≤ 512 Bản rõ Bản mã Hình 3.2. Sơ đồ khối giải mã của hệ mật McEliece với mã XCB + Giải mã 2 cấp ngưỡng
  • 50. 48 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ó: 0 1 2 3 4 5 6 7 01 12 23 34 45 56 67 07 02 13 24 35 46 57 06 17 03 14 25 36 47 05 16 27 04 15 26 37 012 123 234 345 456 567 067 017 013 124 235 346 457 056 167 027 014 125 236 347 045 156 267 037 015 126 237 034 145 256 367 047 016 127 023 134 245 356 467 057 024 135 246 357 046 157 026 137 025 136 247 035 146 257 036 147 0123 1234 2345 3456 4567 0567 0167 0127 0124 1235 2346 3457 0456 1567 0267 0137 0125 1236 2347 0345 1456 2567 0367 0147 0126 1237 0234 1345 2456 3567 0467 0157 0134 1245 2356 3467 0457 0156 1267 0237 0135 1246 2357 0346 1457 0256 1367 0247 0136 1247 0235 1346 2457 0356 1467 0257 0145 1256 2367 0347 0146 1257 0236 1347 0245 1356 01234 12345 23456 34567 04567 01567 01267 01237 01235 12346 23457 03456 14567 02567 01367 01247 01236 12347 02345 13456 24567 03567 01467 01257 01245 12356 23467 03457 01456 12567 02367 01347 01246 12357 02346 13457 02456 13567 02467 01357 01256 12367 02347 01345 12456 23567 03467 01457 01346 12457 02356 13467 02457 01356 12467 02357 012345 123456 234567 034567 014567 012567 012367 012347 012346 123457 023456 134567 024567 013567 012467 012357 012356 123467 023457 013456 124567 023567 013467 012457 012456 123567 023467 013457 0123456 1234567 0234567 0134567 0124567 0123567 0123467 0123457 01234567
  • 51. 49 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 56C = Thông qua phân hoạch vành theo nhóm nhân xyclic đơn vị, xây dựng ma trận G1 [8 x 64] được cho trong bảng 3.3. (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 Bảng 3.3. Ma trận G1 (8 x 64)
  • 52. 50 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 cùng ta được ma trận sinh G [7 x 64] 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 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 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 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 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 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 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 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 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] 3.3.2.2. Thuật toán mã hoá
  • 53. 51 Sắp xếp về 512 bit Mã hoá dữ liệu với Gi’ Ma trận (8,64) Đúng Sai Hình 3.3. Sơ đồ thuật toán mã hoá Kết thúc 512 bit đã mã hoá Cộng modulo 2 K < T Vectơ sai V lấy từ bản tin Sai Đúng Chèn thêm dấu giả thông tin 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 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) Có đủ 49 bit để mã hóa? Ghi kết quả
  • 54. 52 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 các hàng trên. 0 0a 0 1a 0 2a 0 3a 0 4a 0 5a 0 6a 0 7a 0 0b 0 1b ............ 0 6h 0 7h 1 0a 1 7h 2 0a 2 7h 3 0a 3 7h 4 0a 4 7h 5 0a 5 7h 6 0a 6 7h 7 0a ............................................. 7 7h Từ ma trận [8x64] thu được ta có thể đưa ra các tính chất sau: 6 7 0 0 0 k k a a = = ∑ và 6 0 0 7 0 k k a a = = ∑ (theo tính chất của ma trận) .... 6 7 7 7 0 k k a a = = ∑ và 6 7 7 7 0 k k a a = = ∑ (theo tính chất của ma trận) 6 7 0 0 0 k k b b = = ∑ và 6 0 0 7 0 k k b b = = ∑ (theo tính chất của ma trận) .... 6 7 7 7 0 k k b b = = ∑ và 6 7 7 7 0 k k b b = = ∑ (theo tính chất của ma trận) 6 7 0 0 0 k k c c = = ∑ và 6 0 0 7 0 k k c c = = ∑ (theo tính chất của ma trận) .... 6 7 7 7 0 k k c c = = ∑ và 6 7 7 7 0 k k c c = = ∑ (theo tính chất của ma trận) 6 7 0 0 0 k k d d = = ∑ và 6 0 0 7 0 k k d d = = ∑ (theo tính chất của ma trận) .... 6 7 7 7 0 k k d d = = ∑ và 6 7 7 7 0 k k c c = = ∑ (theo tính chất của ma trận)
  • 55. 53 6 7 0 0 0 k k e e = = ∑ và 6 0 0 7 0 k k e e = = ∑ (theo tính chất của ma trận) .... 6 7 7 7 0 k k e e = = ∑ và 6 7 7 7 0 k k c c = = ∑ (theo tính chất của ma trận) 6 7 0 0 0 k k f f = = ∑ và 6 0 0 7 0 k k f f = = ∑ (theo tính chất của ma trận) .... 6 7 7 7 0 k k f f = = ∑ và 6 7 7 7 0 k k f f = = ∑ (theo tính chất của ma trận) 6 7 0 0 0 k k g g = = ∑ và 6 0 0 7 0 k k g g = = ∑ (theo tính chất của ma trận) .... 6 7 7 7 0 k k g g = = ∑ và 6 7 7 7 0 k k g g = = ∑ (theo tính chất của ma trận) 6 7 0 0 0 k k h h = = ∑ và 6 0 0 7 0 k k h h = = ∑ (theo tính chất của ma trận) .... 6 7 7 7 0 k k h h = = ∑ và 6 7 7 7 0 k k h h = = ∑ (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. 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 - Sử dụng các tổng kiểm tra giải mã cho M2 thu được ma trận M3[7x7] 512 bit đã mã hoá Dữ liệu có chứa 31 bit 1 và có độ dài ≤ 512 bit 512 bít dữ liệu gửi đi ⊕
  • 56. 54 - 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) a0 + a1 A(1) a1 + a2 A(2) a2 + a3 A(3) a3 + a4 A(4) a4 + a5 A(5) a5 + a6 A(6) a6 + a7 A(7) 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à: b0 + a2 = S0 f3 + a3 = S1 e0 + a4 = S2 d5 + a5 = S3 c6 + a6 = S4 b7 + a7 = S5 c0 + b1 = S6 b6 + f1 = S7 c5 + g5 = S8 d1 + c1 = S9 d4 + h7 = S10 e0 + d1 = S11 e3 + g7 = S12 f0 + e1 = S13 f2 + c7 = S14 g0 + f4 = S15 g4 + h4 = S16 g6 + d6 = S17 h0 + e5 = S18 h3 + g1 = S19 h6 + h1 = S20 b2 + b5 = S21 b3 + e2 = S22 b4 + d7 = S23 d3 + c2 = S24 c3 + h2 = S25 c4 + f5 = S26 d2 + e7 = S27 e6 + f7 = S28 f6 + h5 = S29 g2 + g3 = S30 a0 + a1 = S31 Đố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 thêm 32 tổng kiểm tra cho cặp dấu 0 1 0 0a a+ :
  • 57. 55 7 7 k k 0 2 32 k=1 k=1 b + = Sa∑ ∑ 7 7 k k 3 3 33 k=1 k=1 + = Sf a∑ ∑ 7 7 k k 4 4 34 k=1 k=1 + = Se a∑ ∑ 7 7 k k 5 5 35 k=1 k=1 + = Sd a∑ ∑ 7 7 k k 6 6 36 k=1 k=1 + = Sc a∑ ∑ 7 7 k k 7 7 37 k=1 k=1 b + = Sa∑ ∑ 7 7 k k 0 1 38 k=1 k=1 + = Sc b∑ ∑ 7 7 k k 6 1 39 k=1 k=1 b + = Sf∑ ∑ 7 7 k k 5 5 40 k=1 k=1 + = Sc g∑ ∑ 7 7 k k 1 1 41 k=1 k=1 + = Sd c∑ ∑ 7 7 k k 4 7 42 k=1 k=1 + = Sd h∑ ∑ 7 7 k k 0 1 43 k=1 k=1 + = Se d∑ ∑ 7 7 k k 3 7 44 k=1 k=1 + = Se g∑ ∑ 7 7 k k 0 1 45 k=1 k=1 + = Sf e∑ ∑ 7 7 k k 2 7 46 k=1 k=1 + = Sf c∑ ∑ 7 7 k k 0 4 47 k=1 k=1 + = Sg h∑ ∑ 7 7 k k 4 4 48 k=1 k=1 + = Sg h∑ ∑ 7 7 k k 6 6 49 k=1 k=1 + = Sg d∑ ∑ 7 7 k k 0 5 50 k=1 k=1 + = Sh e∑ ∑ 7 7 k k 3 1 51 k=1 k=1 + = Sh g∑ ∑ 7 7 k k 6 1 52 k=1 k=1 + = Sh h∑ ∑ 7 7 k k 2 5 53 k=1 k=1 b + = Sb∑ ∑ 7 7 k k 3 2 54 k=1 k=1 b + = Se∑ ∑ 7 7 k k 4 7 55 k=1 k=1 b + = Sd∑ ∑ 7 7 k k 3 2 56 k=1 k=1 + = Sd c∑ ∑ 7 7 k k 3 2 57 k=1 k=1 + = Sc h∑ ∑ 7 7 k k 4 5 58 k=1 k=1 + = Sc f∑ ∑ 7 7 k k 2 7 59 k=1 k=1 + = Sd e∑ ∑ 7 7 k k 6 7 60 k=1 k=1 + = Se f∑ ∑ 7 7 k k 6 5 61 k=1 k=1 + = Sf h∑ ∑ 7 7 k k 2 3 62 k=1 k=1 + = Sg g∑ ∑ 7 7 k k 0 1 63 k=1 k=1 + = Sa a∑ ∑ Để giải mã cho từng cặp dấu từ A0 đến A7 sử dụng thuật toán: For (i = 1..7) { 63 0 ( ) ( )j j N i S i = = ∑ if ( N(i) ≥ 33 ) A(i) = 1 else A(i) = 0 }
  • 58. 56 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) để giải mã cho từng dấu thông tin: T0 = A(0) + a1 T32 = A(7) + A(6) + A(4) + 0 4b T1 = A(0) + A(1) + a2 T33 = A(7) + A(6) + A(3) + 0 6f T2 = A(7) + a7 T34 = A(7) + A(6) + A(2) + 0 6e T3 = A(7) + A(6) + a6 T35 = A(7) + A(6) + A(1) + 0 6d T4 = A(1) + b0 T36 = A(7) + A(6) + A(0) + 0 6c T5 = A(2) + c0 T37 = A(0) + A(1) + A(7) + 0 2f T6 = A(3) + d0 T38 = A(0) + A(2) + A(3) + 0 4f T7 = A(4) + e0 T39 = A(0) + A(3) + A(4) + 0 1g T8 = A(5) + f0 T40 = A(0) + A(4) + A(5) + 0 4h T9 = A(6) + b6 T41 = A(0) + A(5) + A(6) + 0 5g T10 = A(1) + A(2) + f3 T42 = A(7) + A(5) + A(4) + 0 4c T11 = A(2) + A(3) + g0 T43 = A(7) + A(4) + A(3) + 0 3g T12 = A(3) + A(4) + h3 T44 = A(7) + A(3) + A(2) + 0 2h T13 = A(4) + A(5) + g4 T45 = A(7) + A(2) + A(1) + 0 7g T14 = A(5) + A(6) + c5 T46 = A(1) + A(2) + A(3) + 0 4e T15 = A(7) + A(0) + b7 T47 = A(2) + A(3) + A(4) + 0 0h T16 = A(0) + A(2) + b1 T48 = A(3) + A(4) + A(5) + 0 6h T17 = A(0) + A(3) + c1 T49 = A(4) + A(5) + A(6) + 0 4d T18 = A(0) + A(4) + d1 T50 = 0 0a T19 = A(0) + A(5) + e1 T51 = 7 0 1 k k a = ∑
  • 59. 57 T20 = A(0) + A(6) + f1 T52 = A(0) + 7 1 1 k k a = ∑ T21 = A(7) + A(5) + b5 T53 = A(1) + 7 0 1 k k b = ∑ T22 = A(7) + A(4) + f7 T54 = A(2) + 7 0 1 k k c = ∑ T23 = A(7) + A(3) + e7 T55 = A(3) + 7 0 1 k k d = ∑ T24 = A(7) + A(2) + d7 T56 = A(4) + 7 0 1 k k e = ∑ T25 = A(7) + A(1) + c7 T57 = A(5) + 7 0 1 k k f = ∑ T26 = A(0) + A(1) + A(2) + a3 T58 = A(6) + 7 6 1 k k b = ∑ T27 = A(0) + A(1) + A(3) + b2 T59 = A(7) + 7 7 1 k k a = ∑ T28 = A(0) + A(1) + A(4) + e2 T60 = A(0) + A(1) + 7 2 1 k k a = ∑ T29 = A(0) + A(1) + A(5) + d2 T61 = A(0) + A(2) + 7 1 1 k k b = ∑ T30 = A(0) + A(1) + A(6) + e2 T62 = A(0) + A(3) + 7 1 1 k k c = ∑ T31 = A(7) + A(6) + A(5) + a5 T63 = A(0) + A(4) + 7 1 1 k k d = ∑ Để giải mã cho từng dấu từ a0 đến a7 sử dụng thuật toán: For ( i = 1 .. 7 ) { 63 0 ( ) ( )j j M i T i = = ∑ if ( M(i) ≥ 33 ) a(i) = 1 else a(i) = 0 } 3.3.3.3. Thuật toán giải mã
  • 60. 58 Vectơ sai có chứa dữ liệu Cộng Modulo 2 Kết thúc Đọc tệp mã hóa Đọc kich thước tệp T Hình 3.4. Sơ đồ thuật toán giải mã Ghép dữ liệu Đọc Gi' = Si.Gi.Pi Sai Đúng K < T Giải mã dữ liệu M2 = M1 * Pi -1 M3 = Giải mã sửa sai M2 theo tổng kiểm tra 2 cấp ngưỡng M = M3* Si -1 Sắp xếp thành 512 bít Bắt đầu Đọc Pi -1 , Si -1 Đọc ma trận tổng kiểm tra của Gi K = 0 Phân tích dữ liệu theo bit M (512 bit dữ liệu mã hóa) K=K+Len(M) 49 bit dữ liệu của bản tin Ghi kết quả Sắp xếp về ma trận M1(8,64) Mã hóa lại dữ liệu với Gi’ tạo Ma trận (8,64)
  • 61. 59 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 31 00110001 10001100 2 32 00110010 01001100 3 33 00110011 11001100 4 34 00110100 00101100 5 35 00110101 10101100 6 36 00110110 01101100 7 37 00110111 11101100 8 38 00111000 00011100 9 39 00111001 10011100 0 30 00110000 00001100 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 1 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 (7 7) 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 M x           =             Đoạn dữ liệu cuối có chứa 31 bit 1 được xắp sếp như sau: 11011000001110010011100000011001000110001001100110011000010110011101100 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à các tổng kiểm tra để giải mã.
  • 62. 60 0 1 2 3 4 5 6 7 012 123 234 345 456 567 067 017 013 124 235 346 457 056 167 027 014 125 236 347 045 156 267 037 015 126 237 034 145 256 367 047 016 127 023 134 245 356 467 057 024 135 246 357 046 157 026 137 025 136 247 035 146 257 036 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 sắp xếp của phân hoạch là: (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 Ta xây dựng ma trận sinh G[7x64] từ ma trận [8x64] (cộng từng hàng từ 1 đến 7 với hàng thứ 8): 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 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 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 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 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 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 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1           =             S và 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 S−           =            
  • 63. 61 P là ma trận hoán vị [64 x 64] 1 0 0 ... 0 0 0 1 ... 0 0 1 0 ... 0 ... ... ... ... ... 0 0 0 ... 1        =         P và 1 1 0 0 ... 0 0 0 1 ... 0 0 1 0 ... 0 ... ... ... ... ... 0 0 0 ... 1 −        =         P Ta có G' là ma trận [8x64] 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 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 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) (1-7,59)+(1-7,49) (1-7,62)+(1-7,57) (1-7,10)+(1-7,13) (1-7,11)+(1-7,30)
  • 64. 62 (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(0) 0,0+0,1 A(1) 0,1+0,2 A(2) 0,2+0,3 A(3) 0,3+0,4 A(4) 0,4+0,5 A(5) 0,5+0,6 A(6) 0,6+0,7 A(7) 0,7+0,8 Xây dựng 64 tổng kiểm tra cấp 2 cho từng dấu thông tin (0,0) A(0)+(0,1) A(1)+(0,8) A(1)+(1-7,8) A(2)+(0,42) A(2)+(1-7,42) A(3)+(0,35) A(3)+(1-7,35) A(4)+(0,28) A(4)+(1-7,28) A(5)+(21) A(5)+(1-7,21) A(6)+(0,14) A(6)+(1-7,14) A(7)+(0,7) A(0)+A(1)+(0,2) A(0)+A(1)+(1-7,2) A(0)+A(2)+(0,9) A(0)+A(3)+(0,43) A(0)+A(4)+(0,36) A(0)+A(5)+(0,29) A(0)+A(6)+(0,22) A(0)+A(7)+(0,15) A(1)+A(2)+(0,16) A(1)+A(2)+(1-7,16) A(1)+A(7)+(0,41) A(2)+A(3)+(0,48) A(2)+A(3)+(1-7,48) A(2)+A(7)+(0,34) A(3)+A(4)+(0,59) A(3)+A(4)+(1-7,59) A(3)+A(7)+(0,27) A(4)+A(5)+(0,52) A(4)+A(5)+(1-7,52) A(4)+A(7)+(0,20) A(5)+A(6)+(0,47) A(5)+A(6)+(1-7,47) A(5)+A(7)+(0,13) A(6)+A(7)+(0,6) A(6)+A(7)+(1-7,6) A(0)+A(1)+A(2)+(0,3) A(0)+A(1)+A(3)+(0,10) A(0)+A(1)+A(4)+(0,44) A(0)+A(1)+A(5)+(0,37) A(0)+A(1)+A(6)+(0,30) A(0)+A(1)+A(7)+(0,23) A(0)+A(6)+A(7)+(0,40) A(1)+A(6)+A(7)+(0,33) A(2)+A(6)+A(7)+(0,26) A(3)+A(6)+A(7)+(0,19) A(4)+A(6)+A(7)+(0,12) A(5)+A(6)+A(7)+(0,5) A(0)+A(2)+A(3)+(0,17) A(0)+A(3)+A(4)+(0,49) A(0)+A(4)+A(5)+(0,60) A(0)+A(5)+A(6)+(0,53) A(1)+A(2)+A(7)+(0,55) A(2)+A(3)+A(7)+(0,58) A(3)+A(4)+A(7)+(0,51) A(4)+A(5)+A(7)+(0,46) A(1)+A(2)+A(3)+(0,24) A(2)+A(3)+A(4)+(0,56) A(3)+A(4)+A(5)+(0,62) A(4)+A(5)+A(6)+(0,39) 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á Quá trình mã hoá thực hiện các bước sau:
  • 65. 63 - 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ừ 1 đến 7). 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 Sắp xếp ma trận này thành chuỗi 512 bit thông tin. Cộng modulo 2 chuỗi này với chuỗi thông tin có chứa 31 bít 1 ở trên : 11011000001110010011100000011001000110001001100110011000010110011101100 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 - Sắp xếp thành ma trận 8x64 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 - Nhân ma trận 8x64 với ma trận P-1 - Sử dụng các tổng kiểm tra để tạo lại ma trận thông tin 7x7.
  • 66. 64 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 lại được ma trận I[8x64] 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 Sắp xếp ma trận này thành chuỗi 512 bit thông tin. Cộng modulo 2 chuỗi 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.
  • 67. 65 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ã Tỷ lệ bản mã / bản rõ .pdf 104 461 ~ 5s ~ 265 s 4.43 (461/104) .txt 13 53 ~ 1s ~ 35 s 4.08 (53/13) .exe 264 1182 ~ 12s ~ 735 s 4.48 (1182/264) .doc 26 47 ~ 1s ~ 28 s 1.80 (47/26) 512 bit thu được 512 bit mã hoá lại Véctơ sai có chứa 31 bít 1⊕