Tải bản đầy đủ (.pdf) (25 trang)

Nghiên cứu xây dựng cấp số nhân cyclic vào việc tạo khóa cho các mật mã khối

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (587.27 KB, 25 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG






ĐẶNG XUÂN ĐIỆP



NGHIÊN CỨU SỬ DỤNG CẤP SỐ NHÂN CYCLIC
VÀO VIỆC TẠO KHÓA CHO CÁC MẬT MÃ KHỐI


Chuyên ngành: Truyền dữ liệu và mạng máy tính
Mã số: 60.48.15
Người hướng dẫn khoa học: TS NGÔ ĐỨC THIỆN

TÓM TẮT LUẬN VĂN THẠC SĨ






HÀ NỘI - 2013


1


MỞ ĐẦU
Lý do chọn đề tài
Mật mã khóa bí mật hay còn gọi là mật mã cổ điển có lịch sử phát triển từ lâu
đời. Cho đến ngày này hệ mật này vẫn được sử dụng rộng rãi với các ưu điểm nổi bật
như: Đơn giản (thời gian nhanh, yêu cầu phần cứng không phức tạp); Hiệu quả: (Tỷ
lệ mã bằng 1) dễ sử dụng cho các ứng dụng nhạy cảm với độ trễn và các ứng dụng di
động.
Các phương pháp xây dựng các hệ mật khóa bí mật thường được xây dựng trên
các phép thay thế, hoán vị và kết hợp cả thay thế và hoán vị và nổi bật trong các hệ
mật này là chuẩn mã dữ liệu DES. Đây là một phương pháp mật mã được tổ chức
Tiêu chuẩn Xử lý Thông tin Liên bang Hoa Kỳ chọn làm chuẩn chính thức vào
năm 1976, sau đó chuẩn này được sử dụng rộng rãi trên phạm vi thế giới.
Phương pháp xử lý thông tin trong DES theo mật mã khối. Khi sử dụng DES ở
chế độ bình thường ECB có một nhược điểm là khi các khối bản tin rõ đầu vào giống
nhau và sử dụng cùng một khóa thì mã đầu ra sẽ giống nhau, điều này là rất nguy
hiểm và thám mã có thể lợi dụng để phá mã. Để giải quyết vấn đề này ta có thể sử
dụng DES ở chế độ liên kết mã khối (CBC) nhưng ở chế độ này cũng có nhược điểm
là khi giải mã sai một khối thông tin thì toàn bộ các khối thông tin tiếp theo sẽ bị giải
mã sai. Một phương pháp khác để khắc phục điểm yếu này là sử dụng các khóa khác
nhau cho mỗi khối thông tin đầu vào và các khóa này được tạo một cách ngẫu nhiên
là tốt nhất. Tuy nhiên, việc tạo và lưu trữ các khóa kiểu ngẫu nhiên sẽ tốn kém và
không hiệu quả.
Cấp số nhân cyclic trên vành đa thức đặc biệt là trên vành đa thức có hai lớp kề
cyclic có một tính chất là số lượng các phần tử của cấp số nhân rất lớn và xuất hiện
có tính gần giống ngẫu nhiên. Việc tạo các cấp số nhân khá đơn giản, chỉ cần một đa
thức sinh và có thể thêm một đa thức ban đầu. Với tính chất như vậy ta có thể sử
dụng các cấp số nhân cyclic để sinh khóa cho mật mã khối nói chung và hệ mật DES
nói riêng. Đây là một hướng nghiên cứu mở mà luận văn sẽ tập trung vào nghiên cứu.
Các kết quả của luận văn góp một phần vào việc nâng cao tính bảo mật chống lại khả
năng thám mã của các mật mã khối.


Mục đích nghiên cứu
Đề xuất một phương pháp tạo khóa cho mật mã khối trong các hệ khóa bí mật
bằng các cấp số nhân cyclic trên vành đa thức.
Mô phỏng so sánh giữa DES tiêu chuẩn với DES có khóa được xây dựng từ
các cấp số nhân trên vành đa thức, từ đó đưa ra được ưu điểm của phương pháp đề
xuất.

2

Đối tượng và phạm vi nghiên cứu
Đối tương nghiên cứu: Mật mã khối; Nhóm nhân và cấp số nhân trên vành đa
thức.
Phạm vi nghiên cứu: Sử dụng cấp số nhân cyclic trên vành đa thức để tạo khóa
cho hệ mật DES

Phương pháp nghiên cứu
Sử dụng lý thuyết về mật mã học, các cấu trúc đại số trên vành đa thức. Kết
hợp với việc tính toán và mô phỏng hệ mật DES với khóa đề xuất.

Nội dung của đồ án bao gồm
Chương 1: Tổng quan về mật mã học
Chương 2: Nghiên cứu sử dụng cấp số nhân Cyclic vào việc tạo khóa cho mật mã khối
Chương 3: Một số kết quả mô phỏng đánh giá

















3

CHƯƠNG 1. TỔNG QUAN VỀ MẬT MÃ HỌC
1.1. Các khái niệm cơ bản về mật mã học
1.1.1 Sơ lược lịch sử về khoa học mật mã
1.1.2 Giới thiệu về hệ mật mã
- Định nghĩa hệ mật mã
- Các thuật ngữ
1.1.3 Những yêu cầu đối với hệ mật mã
1.2. Hệ mật mã khóa bí mật
1.2.1 Sơ đồ chức năng của hệ mật khóa bí mật

Hình 1.1. Sơ đồ chức năng của hệ mật khóa bí mật [1]
1.2.2 Hệ mật thay thế
- Các hệ mật thay thế đơn biểu
- Các hệ mật thay thế đa biểu
1.2.3 Các hệ mật hoán vị
- Mật mã Rail fence
- Mật mã Route
- Mật mã Columnar



4

1.2.4 Chuẩn mã dữ liệu DES
- Giới thiệu về DES

Hình 1.2. Sơ đồ mã DES
- Mô tả thuật toán
- Hàm mật mã f
- Khối tạo khóa
5


Hình 1.3. Khối tạo khóa cho các vòng mã hóa của DES
- Giải mã DES
- Sự an toàn của DES
1.2.5 Chuẩn mã dữ liệu tiên tiến (AES)
- Tổng quan về AES
- Thiết kế tổng quát của AES

Hình 1.4. Thiết kế tổng quát của AES [4]
K

C
0

D
0


LS
-

LS
-
1

C
1

D
1

6
4

bit

28 bit

28 bit

C
16

D
16

PC
-

1

K
1

(48 bit)

PC
-
2

K
16

(48 bit)

PC
-
2

6

1.3. Hệ mật khóa công khai
1.3.1 Sơ đồ chức năng của hệ mật khóa công khai




Hình 1.5. Sơ đồ chức năng của hệ mật khóa công khai
K

CB
: Khóa công khai của B
K
RB
: Khóa bí mật của B
Mã hóa: C = E (M,K
CB
)
Giải mã: M = E
-1
(C, K
RB
) = D (C, K
RB
) [1]
1.3.2 Một số bài toán sử dụng trong hệ mật khóa công khai
1.3.3 Ưu và nhược điểm của hệ mật khóa công khai
1.3.4 Xây dựng các chương trình ứng dụng kiến trúc PGP

Hình 1.6. Chương trình ứng dụng kiến trúc PGP
Với mô hình này sẽ kết hợp 2 ưu điểm của hai hệ mật khóa bí mật và hệ mật khóa
công khai.
1.3.5 Sử dụng mã hóa công khai để truyền khóa bí mật K.
1.3.6 Sử dụng hệ mật mã khóa bí mật để mã hóa bản tin M.
Đích
B
K
CB
M
C M

Thám mã
A
Mã hóa Giải mã Kênh mở
C
Nguồn
K
RB
7

1.4. Kết luận chương
Khi thiết kế mật mã thì vấn đề đảm bảo độ vững chắc của thuật toán là một vấn đề
quan trọng nhất. Đánh giá độ bền vững của thuật toán là một trong các vấn đề lâu nhất và
khó nhất.
Phương pháp mã hóa cổ điển sử dụng giải thuật đơn giản, không gian khóa nhỏ.
Phương pháp mã hoá cổ điển có thể dễ dàng bị giải mã bằng cách đoán chữ dựa trên phương
pháp thống kê tần xuất xuất hiện các chữ cái trên mã và so sánh với bảng thống kê quan sát
của bản rõ. Để dùng được mã hoá cổ điển thì bên mã hoá và bên giải mã phải thống nhất
với nhau về cơ chế mã hoá cũng như giải mã. Việc thay đổi mã là rất khó và dễ bị lộ. Hệ
mật mã khóa đối xứng có khóa lập mã và khóa giải mã là trùng nhau cho nên mật mã đó
phải được giữ bí mật chỉ có người lập mã và người nhận mã được biết mà thôi. Khóa phải
được gửi đi trên kênh an toàn, nếu kẻ địch tấn công trên kênh này có thể sẽ phát hiện ra
khóa.
Thuật toán mã hóa công khai được thiết kế sao cho khóa sử dụng vào việc mã hóa là
khác so với khóa giải mã. Khóa giải mã không thể tính toán được từ khóa mã hóa. Nếu kẻ
tấn công cố tình tìm ra khóa giải mã thì sẽ gặp phải khó khăn về thời gian và số phép thử vô
cùng lớn, như vậy là không khả thi vì bản tin chỉ có giá trị trong một thời gian ngắn. Khóa
mã hóa được gọi là khóa công khai còn khóa giải mã được gọi là khóa riêng. Khóa công
khai và bản tin mã hóa đều được gửi đi trên một kênh thông tin không an toàn.












8

CHƯƠNG 2. NGHIÊN CỨU SỬ DỤNG CẤP SỐ NHÂN CYCLIC
VÀO VIỆC TẠO KHÓA CHO MẬT MÃ KHỐI
2.1. Những vấn đề cơ bản về cấu trúc đại số
Những vấn đề cơ bản được trình bày trong mục này gồm có:
- Nhóm
- Vành
- Trường
- Trường hữu hạn
2.2. Vành đa thức
2.2.1 Khái niệm đa thức
Nếu R là một vành giao hoán thì một đa thức của biến x trên vành R là một biểu thức
có dạng:





1
0

)(
n
i
i
i
xfxf
(2.4)
Trong đó: f
i
– là hệ số thuộc R. Trong trường nhị phân GF
(2)
nó nhận giá trị 0 hoặc 1.
x – biến (ẩn hình thức).
2.2.2 Vành đa thức
Nếu R là một vành giao hoán thì vành đa thức R[x] là một vành được tạo bởi tập tất cả các
đa thức của biến x có các hệ số trong R. Hai phép toán là phép cộng và phép nhân đa thức
thông thường với số học các hệ số được thực hiện trong vành R [1].
Trong trường nhị phân, vành đa thức được ký hiệu:
(f(x); f, ) = Z
2
[x]/x
n
+ 1
e(x) = 0 gọi là phần tử đơn vị, deg e(x) = 0
(f(x), +) là một nhóm đối với phép cộng, thỏa mãn tiên đề của nhóm.
(f(x), *) là nửa nhóm đối với phép nhân, không tồn tại f(x), g(x) mà f(x).g(x) = 0
2.2.3 Vành đa thức có hai lớp kề cyclic
Vành đa thức theo modulo x
n
+1 được gọi là vành đa thức có hai lớp kề cyclic nếu phân

tích của x
n
+1 thành tích của các đa thức bất khả quy trên trường GF(2) có dạng sau:
x
n
+ 1 = (x + 1)



1
0
n
i
i
x
(2.9)
9

Trong đó (1+x) và e
o
(x) =



1
0
n
i
i
x

là các đa thức bất khả quy [3].
Căn cứ vào đặc điểm trên của vành đa thức có hai lớp kề cyclic ta có thuật toán xác
định điều kiện để vành đa thức có hai lớp kề cyclic.
Theo thuật toán ta xác định được một số giá trị n đảm bảo vành đa thức theo mod x
n
+1
là một vành đa thức có hai lớp kề cyclic.
Dưới đây là một số giá trị n thỏa mãn [3]:
n = 3 5 11 13 19 29 37 53 59 61 67 83 101 107 131 139 149 163 173 179 181 197 211
227 269 293 317 347 349 373 379 389 419 421 443 461 467 491 509 523 541 547 557 563
587 613 619 653 659 661 677 701 709 757 773 787 797 821 827 829 853 859 877 883 907
941 947 1019 1061 1091 1109 1117 1123 1171 1187 1213 1229 1237 1259 1277 1283 1291
1301 1307 1373 1381 1427 1451 1453 1483 1493 1499 1523 1531 1549 1571 1619 1621
1637 1667 1669 1693 1733 1741 1747 1787 1861 1867 1877 1901 1907 1931 1949 1973
1979 1987 1997 2027 2029 2053 2069 2083 2099 2131 2141 2213 2221 2237 2243 2267
2269 2293 2309 2333 2339 2357 2371 2389 2437 2459 2467 2477 2531 2539 2549 2557
2579 2621 2659 2677 2683 2693 2699 2707 2741 2789 2797 2803 2819 2837 2843 2851
2861 2909 2939 2957 2963 3011 3019 3037 3067 3083 3187 3203 3253 3299 3307 3323
3347 3371 3413 3461 3467 3469 3491 3499 3517 3533 3539 3547 3557 3571 3581 3613
3637 3643 3659 3677 3691 3701 3709 3733 3779 3797 3803 3851 3853 3877 3907 3917
3923 3931 3947 3989 4003 4013 4019 4021 4091 4093 4099 4133 4139 4157 4219 4229
4243 4253 4259 4261 4283 4349 4357 4363 4373 4397 4451 4483 4493 4507 4517 4547
4603 4621 4637 4691 4723 4787 4789 4813 4877 4933 4957 4973 4987 5003 5011 5051
5059 5077 5099 5107 5147 5171 5179 5189 5227 5261 5309 5333 5387 5443 5477 5483
5501 5507 5557 5563 5573 5651 5659 5683 5693 5701 5717 5741 5749 5779 5813 5827
5843 5851 5869 5923 5939 5987 6011 6029 6053 6067 6101 6131 6173 6197 6203 6211
6229 6269 6277 6299 6317 6323 6373 6379 6389 6397 6469 6491 6547 6619 6637 6653
6659 6691 6701 6709 6733 6763 6779 6781 6803 6827 6829 6869 6883 6899 6907 6917
6947 6949 6971 7013 7019 7027 7043 7069 7109 7187 7211 7219 7229 7237 7243 7253
7283 7307 7331 7349 7411 7451 7459 7477 7499 7507 7517 7523 7541 7547 7549 7573

7589 7603 7621 7643 7669 7691 7717 7757 7789 7829 7853 7877 7883 7901 7907 7933
7949 8053 8069 8093 8117 8123 8147 8171 8179 8219 8221 8237 8243 8269 8291 8293
8363 8387 8429 8443 8467 8539 8563 8573 8597 8627 8669 8677 8693 8699 8731 8741
8747 8803 8819 8821 8837 8861 8867 8923 8933 8963 8971 9011 9029 9059 9173 9181
9203 9221 9227 9283 9293 9323 9341 9349 9371 9397 9419 9421 9437 9467 9491 9533
9539 9547 9587 9613 9619 9629 9643 9661 9677 9733 9749 9803 9851 9859 9883 9901
9907 9923 9941 9949
10

2.3. Các nhóm nhân cyclic trên vành đa thức
2.3.1 Nhóm nhân của vành đa thức
Tập các đa thức f(x) trong vành đa thức Z
2
[x]/x
n
+1 với một phép toán nhân đa thức tạo
nên một nhóm nhân G.
<f(x); * > = G
Nếu g(x), f(x)  G thì g(x).f(x) = d(x)  G. Trong nhóm nhân tồn tại phần tử đơn vị
e(x) với f(x).e(x) = f(x).
Trọng số của đa thức:
Trọng số của đa thức a(x) được ký hiệu là W(a(x)) là tổng các hệ số khác 0 trong biểu diễn
đa thức đó:
1
0
( )
n
i
i
i

a x a x




(2.10)

Với a(x) = 1 + x ta có thể viết a(x) = 1.x
0
+ 1.x
1
 W(a(x)) = 2.
2.3.2 Nhóm nhân cyclic trong vành đa thức
- Nhóm nhân cyclic (CMG – Cyclic Multiplicate Groups)
- Nhóm nhân cyclic đơn vị
- Nhóm nhân cyclic với phần tử sinh a(x)
- Đa thức đối xứng và các nhóm nhân cyclic đối xứng
2.3.3 Cấp số nhân cyclic trên vành đa thức
Xét vành đa thức Z
2
[x]/ x
n
+ 1 với n lẻ, giả sử a(x) là số hạng đầu tiên của cấp số nhân
cyclic và q(x) là công bội của cấp số nhân.
Định nghĩa 2.10: Cấp số nhân cyclic (CGP - Cyclic Geometic Progressions)
Cấp số nhân cyclic trên vành đa thức là một tập hợp con có dạng sau:
A(a,q) = {a(x), a(x).q(x), a(x).q
2
(x), , a(x).q
m -1

(x)}. (2.16)
Trong đó: m là số các số hạng của cấp số nhân.
A(x) là số hạng đầu của cấp số nhân.
q(x) là công bội.
a(x).q
m
(x)  a(x) mod x
n
+ 1
Giá trị của m được xác định bởi cấp của nhóm nhân cyclic [3].
Trong trường hợp ta chọn số hạng đầu a(x) = 1, công bội là q(x) thì:
A(1,q) = {1, q(x), q
2
(x), …, q
m-1
(x)}; q
m
(x) = q
0
(x) =1;
11

là cấp số nhân cyclic cấp m.
2.4. Phương pháp tạo khóa cho hệ mật mã khối bằng các cấp số nhân cyclic
2.4.1 Đề xuất sử dụng cấp số nhân cyclic cho việc tạo khoá
Ta nhận thấy rằng các hệ mật tuyến tính là không an toàn. Bởi vậy, để sử dụng được
chúng ta phải liên tục thay đổi khoá.
Để thực hiện điều kiện này ta có thể làm như sau:
- Hai bên liên lạc chọn trước một phần tử nguyên thủy a(x) với:
ord a(x) = 2

n-1
–1
(a(x) là phần tử sinh của nhóm nhân cyclic có cấp = 2
n-1
–1)
- Số các phần tử này được xác định bởi công thức sau:
M = (2
n-1
–1) (2.17)
Ở đây, (.) là hàm -Euler
2.4.2 Đề xuất sử dụng dãy m lồng ghép cho việc tạo khóa
Đối với vành đa thức có hai lớp kề cyclic, phân tích của vành này luôn có phân tích nhị
thức ở dạng:
 




1
0
11
n
i
in
xxx
(2.18)

Vành đa thức có hai lớp kề cyclic sẽ có hai đa thức h(x) ở dạng như sau:
+ h(x) = (1+x) và:
+ h(x) =




1
0
n
i
i
x

Cấp lớn nhất trên vành đa thức có hai lớp kề cyclic sẽ là 2
n-1
-1. Trên vành này, chúng
ta hoàn toàn có thể xây dựng một dãy m có chiều dài L = 2
n-1
-1 đúng bằng cấp lớn nhất của
đa thức trên vành. Cách thức xây dựng dãy m lồng ghép ở đây sẽ dựa trên phân hoạch theo
modulo h(x), với phương pháp phân hoạch tạo ra cấp số nhân có chiều dài
1
2 1
n

trên vành
như sau:
1
( )mod ( ), , , 2 1
1 2
i n
a x h x i


 
(2.19)

(a(x) là công bội của cấp số nhân)
Ở đây h(x) đóng vai trò là đa thức sinh để tạo ra dãy m và là đa thức bất khả quy bậc
n-1.
Muốn để cho phân hoạch có chiều dài cực đại L = 2
n-1
-1 thì đa thức a(x) được chọn
làm công bội sẽ phải thỏa mãn:
Max(ord (a(x)) = 2
n-1
-1 (2.20)
12

Để minh họa cụ thể, ta sẽ sẽ xây dựng dãy m trên vành x
13
+ 1. Vành này có cấp cực
đại là: max(ord (a(x)) = 2
13
-1 -1 = 4095 = 3.3.5.7.13
Vành này có cấp hay chiều dài của các phân hoạch là bội số chung của tổ hợp 3, 5,
7,13.
Ta sẽ tạo ra dãy m trên vành này có chiều dài hay chu kỳ là 4095: 2
12
-1 = 4095.
Ở đây, ta thấy: h(x) =
12
0
i

i
x



Công bội a(x) sẽ được chọn là các đa thức có cấp là 4095, chẳng hạn ta có thể chọn các
tam thức ở bảng sau để trở thành công bội a(x) trong phân hoạch tạo dãy m theo modulo
h(x).
2.5. Kết luận chương
Chương này đã trình bày về một số khái niệm cơ bản về đại số trừu tượng, các khái
niệm về: vành đa thức, nhóm nhân, cấp số nhân cyclic trên vành đa thức, đặc biệt là vành đa
thức có hai lớp kề cyclic. Đây là một vành đặc biệt không được sử dụng trong xây dựng mã
cổ điển, tuy nhiên với cấu trúc của các cấp số nhân cyclic trên các vành đa thức có hai lớp
kề ta có thể ứng dụng vào việc xây dựng các hệ mật và việc tọa khóa cho các hệ mật khá lý
thú.
Cấp số nhân cyclic trên vành đa thức đặc biệt là trên vành đa thức có hai lớp kề cyclic
có một tính chất là số lượng các phần tử của cấp số nhân rất lớn và xuất hiện có tính gần
giống ngẫu nhiên. Việc tạo các cấp số nhân khá đơn giản, chỉ cần một đa thức sinh và có thể
thêm một đa thức ban đầu. Với tính chất như vậy ta có thể sử dụng các cấp số nhân cyclic
để sinh khóa cho mật mã khối nói chung. Việc đề xuất sử dụng các cấp số nhân cyclic vào
việc tọa khóa cho mật mã khối sẽ được trình bày ở chương 3.






13

CHƯƠNG 3. MỘT SỐ CHƯƠNG TRÌNH TÍNH TOÁN KHÓA

VÀ MÃ HÓA
3.1. Tạo khóa mã hóa cho từng khối bản tin của hệ mật khóa bí mật
3.1.2 Sử dụng cấp số nhân có cấp cực đại
Sơ đồ mã hóa và giải mã được mô tả như hình 3.1.

Hình 3.1. Sử dụng cấp số nhân cyclic làm khóa mã hóa cho từng khối bản tin
Như đã phân tích trong chương 2, trong vành đa thức có hai lớp kề
2
/ 1
[ ]
n
Z x x

có các
phần tử có cấp cực đại là:
1
2 1
n

, với n lớn thì ta có thể tạo chuỗi khóa rất dài.
Dưới đây là một ví dụ tạo khóa cho hệ mật DES.
Ví dụ 3.1:
Bước 1: Chọn
n

Vì DES sử dung khóa là 56 bit ta có thể chọn
59
n

, sau khi tạo khóa ta loại bớt 3 bit

đi.
Bước 2: Chọn đa thức sinh:
9 18 27 36 45 54
( ) 1 ( )
0 9 18 27 36 45 54
a x x x x x x x       
(Chú ý:
( )
0 9 18 27 36 45 54
là biễu diễn dạng số mũ của
( )
a x
).
Bước 3: Chọn đa thức đầu:
2
( ) 1 (012)
b x x x    .
Bước 4: Tính cấp số nhân cyclic:


59 58
( ) ( ) mod 1 1,2 1
;
i
K b x a x x i
   

Bảng 3.1 là 32 khóa đầu tiên (phần tử của cấp số nhân cyclic) của
K
.


Mã hóa
Các khối
b

n tin
i
M

Tạo khóa K
(cấp số nhân
cyclic)

Các khóa
tương ứng
i
K

Các khối

i
C

Kênh mở Giải mã
Tạo khóa K
(cấp số nhân
cyclic)

Các khóa
tương ứng

i
K

Các khối
b

n tin
i
M

Thám mã
i
C

Trao đổi và thỏa
thu

n khóa

14

Bảng 3.1. Các khóa K đầu tiên tạo theo cấp số nhân cyclic
K
i
Các bit khóa tương ứng Trọng số
1 00000000011100000011100000011100000011100000011100000011100 18
2 00000000000001110011100000000001110011100000000001110011100 18
3 11001110111001110000001110011101110100101110111001110000001 32
4 00011100000001110000000000111000000011111100000001110000000 18
5 00010011110001111001000001001011101110010010011101110100100 28

6 10011100111110111110011100111111000000011100111000000011111 34
7 01101011001101000101100110101100101110011100000011100111010 30
8 00000011100001110001110000111000000000011100000000001110000 18
9 00010010001100001010101000011000100100000101010011001010100 20
10 01110011000100111001101100111001000110011100000110000110000 26
11 10011010110001011101001010010111010001101011001110100001011 30
12 11000011100000001111111110111111111000000011100001111111111 36
13 11111111001001100101110010101010011101001100100111111111001 36
14 00111101000100110111111101011011010111111101100100010111100 36
15 01100011111111100100000101101010101011010000010011111111100 32
16 00000000000011100001110000111000000000111000011100001110000 18
17 10101111010101110100110101101011001010011010110101100101110 34
18 01101000000101101101010000011010000010100000101100000101011 22
19 10110011011011001101000001000011100011000110001110000100000 24
20 00100011011111101100010000001110000111100000111100001110000 26
21 11100001110101101011100001111110110110011000001100110110111 34
22 10101111101110100101110111110101001010000110000011000010100 30
23 01111001000100001111000010001001111011001110010001001110011 28
24 01000111000011100000000001110000111000100100100100010010010 20
25 01100000111000110001011010001100011100000110110110000011011 26
26 00111001001000101101000110001011010001001001110010100000101 24
27 10101010110110111101000110011000101111011011010101011110111 36
28 11001111100111110001111101111110111110001111100111110011101 42
29 01001110101110010110001011001001001101000110100111010111001 30
30 01010000011001001111100011100001100001110001111100100110000 26
31 01100011000111111111001000001011011011010000010011111111100 32
32 00000000000000000111000011100001110000111000011100001110000 18

Tổng số:


882
Với 32 giá trị của K ở bảng 3.1, xác suất xuất hiện của bit 1 là:
882 882
(1) 0,4672
59 32 1888
p   


15

Khi tính toán với số lượng khóa nhiều hơn thì xác suất của bit “1” và bit “0” sẽ tiến
đến xấp xỉ bằng 0,5.
Tiến hành mã hóa DES với các khóa đề xuất như trong bảng 3.1.
Mã hóa 32 khối bản tin đầu vào giống nhau là:
0123456789ABCDEF
hex
M

(16 ký tự Hexa = 64 bit)
0000 0000 00 0000 0 0 00 0 0000 00 0 0 0 00 0 0
1 1 11 1 1 1 11 111 11 1 1 111 1 111 11 1111111
bin
M


Mỗi lần mã hóa ta sử dụng các khóa khác nhau tương ứng từ
1 32
K K

. Kết quả tính

toán như trong bảng 3.2.
Bảng 3.2. Khoảng cách Hamming giữa các từ mã khi dùng các khóa khác nhau
mã hóa cùng một bản tin đầu vào
Khóa
K
i
Mã đầu ra tương ứng C
i
Khoảng cách Hamming với
bản mã đầu tiên
1
( , )
i
C C
d
1 BDC3DAA77A681FAD 0
2 AC5D74D6B38EF6BF 32
3 FF5279272F6F6A54 28
4 5081824600E3E19D 33
5 83E9399C8CDCEAB7 37
6 106FFD0B6FA45F25 27
7 49D08D1FE4700085 31
8 018694BB472D38C6 32
9 3BBDE9FF9D6F647E 36
10 FDD34100740B12B3 26
11 97DD8354EE53E146 38
12 5E3EB38E68A692F1 34
13 22448B335BED82D7 31
14 FF34613435986E5E 38
15 7E85C59254CA5EB7 28

16 4F9A95870F915AE6 33
17 A53609C3DC149C7D 31
18 1768B4FA17F15447 37
19 9FBBF3D8E57EDE0D 30
20 FA79FFA616815D21 27
21 92224821F91DB075 33
22 B5DBE6BB67033181 26
16

23 8B7B5E5E4E033529 29
24 FECCA9A2B11A3CAC 27
25 24EC0159B5D7DE97 42
26 BB5EA5287C67452B 32
27 40448AA6D5E2921E 32
28 69C856089CD4029F 33
29 C83EC39274FAA04E 37
30 B097BAF417E0A408 29
31 A0312383DC4A7A41 32
32 D174D0EB96AECFCD 29
Khoảng cách Hamming trung bình:
1
32
( , )
2
1
31,93
31
i
tb C C
i

d d

 


3.1.2 Sử dụng cấp số nhân lấy theo modulo của h(x)
Như đã đề cập ở chương 2, ta có thể sử dụng dãy m lồng ghép xây dựng từ các vành đa
thức có hai lớp kề lấy theo modulo của đa thức
( )
h x
cho việc tạo khóa.
Đối với vành đa thức có hai lớp kề cyclic, phân tích của vành này luôn có phân tích nhị
thức ở dạng:
 
1
0
1 1
n
n i
i
x x x


  

(3.1)

Có hai đa thức
( )
h x

thỏa mãn là [3]:
1
1 2
0
( ) (1 ); ( )
n
i
i
h x x h x x


  



Chọn
2
( )
h x
làm đa thức lấy moddulo, tính toán các phần tử của cấp số nhân bình
thường và chú ý thay thế:
2
1
0
n
n i
i
x x






.
Ví dụ 3.2:
Sử dụng cấp số nhân cyclic trên vành đa thức có hai lớp kề lấy theo modulo
( )
h x
tạo
khóa cho DES.
Bước 1: Chọn
59
n


Bước 2: Chọn đa thức sinh:
10 19 28 37 46 55
( ) 1 (0 10 19 28 37 46 55)
a x x x x x x x       
17

Bước 3: Chọn đa thức đầu:
2
( ) 1 (012)
b x x x    .
Bước 4: Chọn
58
0
( )
i

i
h x x




Tính cấp số nhân cyclic:


58
( ) ( ) mod ( ) ; 1,2 1
i
K b x a x h x i
  

Bảng 3.2 là 32 khóa đầu tiên (phần tử của cấp số nhân cyclic) của
K
.
Bảng 3.3. Các khóa K đầu tiên tạo từ cấp số nhân lấy theo modulo h(x)
K
i
Các bit khóa tương ứng Trọng số
1
0000000000111000000111000000111000000111000000111000000111
18
2 1111111111111110001100011111111110001100011111111110001100 41
3 0011100111011100111000000111001110111010010111011100111000 32
4 0000000111000000011100000000001110000000111111000000011100 18
5 1101111101100001110000110111110110100010001101101100010001 31
6 0111111001110011111011111001110011111100000001110011100000 34

7 0111010011010110011010001011001101011001011100111000000111 30
8 0111000000000011100001110001110000111000000000011100000000 18
9 1101010111110110111001111010101011110011101101111101010110 39
10 1111001111100011001110110001100100110001101110011000111110 33
11 0101111010001100101001110100010110101101000101110010100110 29
12 0011111111111100001110000000111111111011111111100000001110 36
13 0111111111001111111110010011001011100101010100111010011001 36
14 1101110100001111000010111011001000000010100100101000000010 23
15 0100111111111000110001111111110010000010110101010101101000 32
16 0011100001110000000000000000111000011100001110000000001110 18
17 1011010110010111010101111010101110100110101101011001010011 34
18 0001011000001010110110100000010110110101000001101000001010 22
19 0110001110000100000101100110110110011010000010000111000110 24
20 1111100001111000111111011100100000010011101111110001111000 33
21 0110000011001101101111110000111010110101110000111111011011 34
22 1111001111100111101011010100000100010110100010000010101101 29
23 1100111001000100111001101111001000100001111000010001001111 28
24 1110110110110111011011011011100011110001111111111000111100 39
25 0011111001001001111100100100111110001110011101001011100111 33
26 1000100100111001010000010100111001001000101101000110001011 24
27 1011110110110101010111101111010101011011011110100011001100 36
28 1000001110000011000001100010001100000110000011100000100000 17
29 0100110100011010011101011100101001110101110010110001011001 30
18

30 0011000011100011111001001100000101000001100100111110001110 26
31 1011011011010000010011111111100011000110001111111110010000 32
32 1111000111100011110001111000111111111111111111111000111100 41

Tổng số:


950
Xác suất xuất hiện của bit 1 của 32 khóa trong bảng 3.3 là:
950 882
(1) 0,5119
58 32 1856
p   


Tương tự ta tiến hành mã hóa DES với các khóa đề xuất như trong bảng 3.3.
Mã hóa 32 khối bản tin đầu vào giống nhau là:
0123456789ABCDEF
hex
M

(16 ký tự Hexa = 64 bit)
0000 0000 00 0000 0 0 00 0 0000 00 0 0 0 00 0 0
1 1 11 1 1 1 11 111 11 1 1 111 1 111 11 1111111
bin
M


Mỗi lần mã hóa ta sử dụng các khóa khác nhau tương ứng từ
1 32
K K

; các khóa này
có độ dài 58 bit, nên trước khi mã hóa ta sẽ loại bỏ 2 bit cuối đi. Kết quả tính toán như trong
bảng 3.4.
Bảng 3.4. Khoảng cách Hamming giữa các từ mã khi dùng

các khóa là cấp số nhân cyclic lấy theo modulo h(x)
Khóa
K
i
Mã đầu ra tương ứng C
i
Khoảng cách Hamming với
bản mã đầu tiên
1
( , )
i
C C
d

1 D35F50062DD316B2 0
2 A717ED35C53550A7 31
3 FEEB7555FD36D06D 34
4 FD9F239D5E8F85E3 32
5 233E0D88FFF30012 26
6 E72E217470F14BB5 30
7 E13D32E2147451CA 30
8 1AFED435214EF6B6 24
9 6106CE1FB643F2F7 30
10 58DA7F7C4E0A4C39 34
11 D38C0E8E0016F383 28
12 5913EE4312E50C9C 32
13 6BFF04241F981B38 24
14 70BC5F96C29B4A12 30
15 507CA10955BBE09D 33
16 9A16E4D224F43136 26

17 6DC112F8675574A9 33
19

18 FBDE13FF5A51BB96 28
19 4D49AD0C2A9DD231 30
20 3BA394D94E546B5D 41
21 ACC0BD32B8025C7D 39
22 7684A26ACE3D7A47 40
23 572D31E667C76BD9 28
24 AC1B1A745D2F68CE 36
25 1034FC69A87465B9 35
26 DF8DA9C038198154 33
27 A5F488151963C4CF 33
28 BB237CF0930AB2D8 35
29 83062A99E673F1E9 35
30 0968CCFAFAB5A0BD 39
31 80DC1226CECDA705 20
32 3BC515A5F9EAB133 30
Khoảng cách Hamming trung bình:
1
32
( , )
2
1
31,871
31
i
tb C C
i
d d


 


3.2. Tạo các khóa con cho DES
Sơ đồ mã hóa và giải mã theo phương pháp này được mô tả như hình 3.2. Trong sơ đồ
này các bộ mã hóa DES-K và giải mã DES
-1
-K cũng tương tự như DES và DES
-1
tuy nhiên
bộ tạo khóa sẽ được thay thế bằng các cấp số nhân.

Hình 3.2. Sử dụng cấp số nhân tạo các khóa con cho DES
Các bộ 16
khóa con
1 16
K K


DES-K

Các khối
bản tin
i
M

Tạo khóa K
(cấp số nhân
cyclic)

Các bộ 16
khóa con
1 16
K K


Các khối

i
C

Kênh mở DES
-1
-K
Tạo khóa K
(cấp số nhân
cyclic)
Các khối
bản tin
i
M

Thám mã
i
C

Trao đổi và thỏa
thuận khóa
20


Để tạo các khóa con cho DES ta cũng có thể sử dụng các cấp số nhân có cấp cực đại
hoặc các cấp số nhân lấy theo modulo h(x). Các bước tạo khóa cũng tương tự như trong
mục 3.1.1 và 3.1.2. Chỉ có điểm khác là khi mã hóa một khối bản tin 64 bit, sẽ sử dụng 16
phần tử (các khóa con) của cấp số nhân, ta sẽ sử dụng lần lượt các khóa trong cấp số nhân
tạo khóa, tức là cứ hết 16 phần tử ta lại tiếp tục lấy 16 phần tử tiếp theo.
Chiều dài của các khóa con đưa vào mã hóa là 48 bit, nên ta sẽ xây dựng các cấp số
nhân trên vành
53
2
[ ]/ 1
Z x x

, sau đó loại bỏ 5 bit cuối để còn 48 bit.
Dưới đây là các mô phỏng hệ mật DES với các khóa con được xây dựng từ cấp số
nhân cyclic.
Ví dụ 3.3.
Tạo khóa từ cấp số nhân cyclic có cấp cực đại.
Bước 1: Chọn vành
53
2
[ ]/ 1
Z x x

(
53
n

).
Bước 2: Chọn đa thức sinh:
8 16 24 32 38 44

( ) 1 (0 8 16 24 32 38 44)
a x x x x x x x       
Bước 3: Chọn đa thức đầu:
20 40
( ) 1 (0 20 40)
b x x x    .
Bước 4: Tính cấp số nhân cyclic:


53 52
( ) ( ) mod 1 ; 1,2 1
i
K b x a x x i
   

Sau khi tính toán các phần tử của cấp số nhân, ta loại đi 5 bit cuối để được khóa có độ
dài 48 bit.
Bảng 3.5 là 64 khóa đầu tiên của khóa K, biểu diễn dưới dạng hexa (48 bit tương ứng
12 ký tự).
Bảng 3.5. Các khóa con đầu tiên dùng cho DES
TT
Khóa
i
K

TT
Khóa
i
K


TT
Khóa
i
K

TT
Khóa
i
K

1 921091391510 17 1DB0742C03F9

33
B40569F8BC2B
49
0D7CD40A6CDF
2 D0C89D081190 18 BEE5835A7F0C 34 CD02E6729509 50 6ED3EF5776CE
3
270EB3A8F321
19 1DF21442241F 35 4CAE59D1D8D5

51 4B0D57CF0D02

4 11E2A50C32D4

20 2126CC7BA7B1 36 8F1D94157AB4 52 C1EE10D0F98C

5 507296C60D24

21 36F91A8E66AD 37 492B12F8D04D 53 2CA21FEDABDF


6 08969F8FA922

22 83FE14443658 38 DB26D702EE02 54 E81E9161EBDD

7 386EC01A374B 23 B0A1D8D36E74 39 21648F528178 55 664DA6281160
8 242006406851 24 478AB77D6293 40 38E822F9779A 56 69FDAEEB0FC5
9 C74A2CC88314 25 2A189F0266D4 41 A80514C525D7 57 B31A87E536AA
10 AD7BEF258314 26 E860F219A2F3 42 97978B7DB34E 58 5166DECE743B

21

11 23E61DDCD553

27 671924CD38EE 43 04BB23D8B640 59 B2CE8E2290F4
12 432534DB905B 28 4230F22F80E5 44 69FF3018394B 60 05D3E2DED55D

13 9450D1B2C58D

29 FC1728059D00 45 3FF74866905D 61 86332FCFC872
14 C7148C2173A7 30 36A48F9D3C4F 46 5A657B6F0E68

62 0F95B250C71C

15 8FED803CF554 31 6495B97005CF 47 1A13D8B804C8 63 EEBF55D9294B
16 00AB01282053 32 5182254C8015 48 D93AF3A21FB8 64 7904A7808A10
Tiến hành mã hóa 32 khối bản tin giống nhau, mỗi khối bản tin sử dụng 16 khóa và do
đó ta sẽ cần đến 32 x 16 = 512 khóa con từ cấp số nhân cyclic trên.
Các khối bản tin đầu vào vẫn chọn là
64

0123456789ABCDEF
hex bit
M


Bảng 3.6. Khoảng cách Hamming giữa các từ mã khi dùng
các khóa con là cấp số nhân cyclic
Khóa
K
i
Mã đầu ra tương ứng C
i

Khoảng cách Hamming với
bản mã đầu tiên
1
( , )
i
C C
d
1
D9DAFE956E242ABA
0
2
26F9ACE1DE3F7D21
35
3
5FA30E9B12A23CF5
31
4

66E85FF80173DE4F
40
5
C903070BF448A8CC
32
6
4581EB63E18768BF
31
7
FB96129F395FF543
36
8
898C7DD6ABC040BD
27
9
491BB84189BEB55F
33
10
D08BA8098305DF1A
29
11
9E16B8722881D338
32
12
AFD07335ED1D106F
29
13
C274792B387343EE
35
14

240B5BE044C63DD8
34
15
C1EDC16BFC843AE7
31
16
68AAFEE99214111D
30
17
CADA444D3AEF6EC3
27
18
2A3670DA632EB11B
33
19
602757F470287766
35
20
D3F7B8EFFAAF05FD
30
21
A7DDE80EC55CF3F9
34
22
DD9F017EBF413FE0
33
22

23
0362A752E0919F04

38
24
FF81144D3BB453A6
31
25
666B5BFC5261723D
33
26
986A4264368260EA
27
27
F216DF9C010CCFC9
30
28
76AA10757A96CF48
34
29
0324928704D9D5C2
41
30
E195278E4A337967
33
31
2A434D2A7317D723
41
32
2A0223DF803FC410
39
Khoảng cách Hamming trung bình:
1

32
( , )
2
1 1
1024 33,03
31 31
i
tb C C
i
d d

  


3.3. Kết luận chương
Nội dung chương 3 đã đề xuất phương pháp tạo khóa cho hệ mật khóa bí mật bằng hai
phương pháp: Xây dựng các khóa từ các cấp số nhân cyclic có cấp cực đại và các khóa xây
dựng theo dãy m lồng ghép trên vành đa thức có hai lớp kề cyclic, thực chất là các cấp số
nhân lấy theo modulo của đa thức
1
0
( )
n
i
i
h x x





. Từ các tính toán mô phỏng khoảng cách
Hamming giữa các từ mã đầu ra khi cùng một khối thông tin đầu vào cho thấy các từ mã
đầu ra có tính khuếch tán tốt, điều này khắc phục được hạn chế của hệ mật khóa bí mật là
khi các bản tin đầu vào giống nhau thì mã đầu ra giống nhau.












23

KẾT LUẬN
Các nghiên cứu về mật mã và cấp số nhân cyclic trên vành đa thức của đồ án là nhằm
tận dụng tối đa các đặc điểm của chúng để tạo khóa cho mật mã khối. Đồ án đã đạt được
một số kết quả như:
Sử dụng cấp số nhân cyclic trên vành đa thức có hai lớp kề từ cấu trúc đại số như là
nhóm nhân và cấp số nhân để tạo khóa cho mật mã khối nói chung và hệ mật DES nói riêng
một cách đơn giản. Số khóa được tạo ra khá lớn. Giải mã và mã hóa một cách linh hoạt.
Nghiên cứu cách tạo m dãy lồng ghép trên vành đa thức có hai lớp kề cyclic theo
modulo của đa thức
1
0
( )

n
i
i
h x x




.

Từ các tính toán và mô phỏng cho thấy các từ mã đầu ra có tính khuếch tán tốt, điều
này khắc phục được hạn chế của hệ mật khóa bí mật là khi các bản tin đầu vào giống nhau
thì mã đầu ra giống nhau.
Chúng ta có thể sử dụng cấp số nhân cyclic trên vành đa thức có hai lớp kề để tạo khóa
cho mật mã khối để thay thế cho phương pháp sử dụng DES ở chế độ liên kết mã khối như
vậy sẽ tránh được lỗi khi giải mã sai một khối thông tin thì toàn bộ các khối thông tin tiếp
theo sẽ bị giải mã sai.
Do thời gian nghiên cứu còn hạn chế nên chắc chắn đồ án còn nhiều thiếu sót, rất
mong các thầy cô giáo, các đồng nghiệp và bạn bè đóng góp ý kiến bổ sung để bản đồ án
được tốt hơn.








×