Tải bản đầy đủ (.doc) (69 trang)

Tìm hiểu và xây dựng chương trình mô phỏng mã hoá rijndael

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 (801.34 KB, 69 trang )

Tìm hiểu và xây dựng chương trình mơ phỏng mã húa Rijndael

TRờng đại học vinh
Khoa công nghệ thông tin
=== ===

tìm hiểu và xây dựng ch ơng trình
mô phỏng mà hóa rijndael

đồ án tốt nghiệp đại học
Ngành kỹ s công nghệ thông tin

Giáo viên hớng dẫn:

ThS. nguyễn thị hồng anh

Sinh viên thực hiện:

nguyễn đình sơn

Lớp:

46K2 - CNTT

Vinh, 5/2010
= =

LI NĨI ĐẦU
Ngày nay, các ứng dụng cơng nghệ thơng tin ngày càng phổ biến
rộng rãi đã ảnh hưởng rất lớn đến diện mạo của đời sống, kinh tế, xã hội. Mọi
cơng việc hàng ngày của chúng ta đều có thể thực hiện được từ xa với sự hỗ trợ


1

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

của máy vi tính và mạng internet (từ việc học tập, đi mua sắm, gửi thư… đến
việc ký kết các hợp đồng thương mại). Tất cả thông tin liên quan đến những
cơng việc này đều do máy vi tính quản lý và truyền đi trên hệ thống mạng. Đối
với những thơng tin bình thường thì khơng có ai chú ý đến, nhưng đối với những
thơng tin mang tính chất sống còn đối với một số cá nhân (hay tổ chức) thì vấn
đề bảo mật thật sự rất quan trọng. Nhiều tổ chức, cá nhân đã tìm kiếm và đưa ra
nhiều giải pháp bảo mật; phương pháp mã hóa khóa bí mật (mã hóa đối xứng)
đặc biệt là phương pháp mã hóa Rijndael được xem là phương pháp có tính phù
hợp cao. Chúng ta phải thừa nhận rằng những rủi ro gặp phải trong quá trình
giao dịch, kinh doanh trên mạng là hiện hữu; nguy cơ bị thay đổi, sao chép hoặc
mất dữ liệu khi lưu trữ và chuyền tải là hiện hữu. Việc đảm bảo tính an tồn và
tồn vẹn trong lưu trữ và truyền tải dữ liệu là vấn đề then chốt đối với các cá
nhân, tổ chức trong cộng đồng mạng và vấn đề này là thật sự cần thiết và cấp
bách. Đề tài “Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael”
của tơi nghiên cứu sẽ tập trung vào hai nội dung chính:
(1) Tìm hiểu về kỹ thuật mã hóa khóa bí mật Rijndael
(2) Vận dụng kỹ thuật mã hoá Rijndael xây dựng chương trình mã hóa và
giải mã.
Đề tài nghiên cứu của tơi có sự giúp đỡ rất nhiều từ giảng viên Nguyễn
Thị Hồng Anh và các bạn trong lớp. Tôi xin gửi lời cảm ơn chân thành tới cô và
các bạn. Tơi mong nhận được sự đóng góp ý kiến từ quý thầy cô và các bạn.
Tôi xin chân thành cảm ơn!
Sinh viên

Nguyễn Đình Sơn

2

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

MỤC LỤC
Trang
LỜI NĨI ĐẦU................................................................................................................................................1
Chương 1. CÁC PHƯƠNG PHÁP MÃ HĨA...................................................4
1.1.

Một số khái niệm liên quan.....................................................................4

1.1.1.

Mã hóa.....................................................................................................4

1.1.2.

Các hệ thống mã hóa................................................................................5

1.1.3.

Ứng dụng.................................................................................................6

1.2.


Hệ thống mã hóa khóa cơng cộng( mã hóa bất đối xứng).......................6

1.2.1.

Định nghĩa...............................................................................................6

1.2.2.

Phương pháp mã hóa...............................................................................6

1.2.3.

Một số thuật tốn mã hóa khóa cơng cộng..............................................8

1.2.4.

Ưu nhược điểm......................................................................................12

1.3.

Hệ thống mã hóa khóa bí mật ( mã hóa đối xứng)................................13

1.3.1.

Khái niệm...............................................................................................13

1.3.2.

Phương pháp mã hóa.............................................................................13


1.3.3.

Một số phương pháp mã hóa khóa bí mật.............................................14

1.3.4.

Ưu nhược điểm......................................................................................27

Chương 2. PHƯƠNG PHÁP MÃ HÓA RIJNDAEL.....................................28
2.1.

Giới thiệu...............................................................................................28

2.2.

Tham số, ký hiệu, thuật ngữ và hàm......................................................28

2.3.

Một số khái niệm toán học.....................................................................29

2.3.1.

Phép cộng...............................................................................................30

2.3.2.

Phép nhân...............................................................................................30


2.4.

Phương pháp Rijndael...........................................................................32

2.4.1.

Quy trình mã hóa...................................................................................32

2.4.2.

Kiến trúc của thuật tốn Rijndael..........................................................34

2.4.3.

Quy trình giải mã...................................................................................44
3

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

2.5.

Các vấn đề cài đặt thuật tốn.................................................................51

2.6.

Kết luận..................................................................................................55


2.6.1.

Khả năng an tồn...................................................................................55

2.6.2.

Đánh giá.................................................................................................56

Chương 3. CÀI ĐẶT CHƯƠNG TRÌNH........................................................58
3.1.

Tổng quan về chương trình....................................................................58

3.2.

Cài đặt chương trình.............................................................................58

KẾT LUẬN........................................................................................................63
TÀI LIỆU THAM KHẢO...................................................................................65

4

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Chương 1
CÁC PHƯƠNG PHÁP MÃ HĨA
1.1


Một số khái niệm liên quan

1.1.1 Mã hóa
1.1.1.1

Định nghĩa

Trong mật mã học, một ngành tốn học ứng dụng cho cơng nghệ thơng
tin, mã hóa là phương pháp để biến thông tin (phim ảnh, văn bản, hình ảnh...) từ
định dạng bình thường sang dạng thơng tin khơng thể hiểu được nếu khơng có
phương tiện giải mã.
Giải mã là phương pháp để đưa từ dạng thông tin đã được mã hóa về dạng
thơng tin ban đầu, q trình ngược của mã hóa.
1.1.1.2

Hệ thống mã hóa(cryptosytem)

Hệ thống mã hóa (cryptosystem) là một bộ năm (P, C, K, E, D) thỏa mãn
các điều kiện sau:
1. Tập nguồn P là tập hữu hạn tất cả các mẩu tin nguồn cần
mã hóa có thể có
2. Tập đích C là tập hữu hạn tất cả các mẩu tin có thể có sau
khi mã hóa
3. Tập khóa K là tập hữu hạn các khóa có thể được sử dụng
4. E và D lần lượt là tập luật mã hóa và giải mã. Với mỗi
khóa k  K , tồn tại luật mã hóa ek  E và luật giải mã dk 
D tương ứng. Luật mã hóa :
ek : P →C và luật giải mã : dk : C →P là hai ánh xạ thỏa mãn
dk (ek (x)) =x,  x  P.


5

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Tính chất 4 là tính chất chính và quan trọng của một hệ thống mã hóa.
Tính chất này bảo đảm một mẩu tin x € P được mã hóa bằng luật mã hóa e k € E
có thể được giải mã chính xác bằng luật dk € D .
1.1.1.3

Zm

Được định nghĩa là tập hợp {0,1,...,m −1} , được trang bị phép cộng (ký
hiệu +) và phép nhân (ký hiệu là ×). Phép cộng và phép nhân trong Zm được thực
hiện tương tự như trong Z , ngoại trừ kết quả tính theo modulo m.
􀂈 Ví dụ: Giả sử ta cần tính giá trị 11×13 trong Z16 . Trong Z , ta có kết quả của
phép nhân 11×13 =143. Do 143 ≡ 15 (mod 16) nên 11×13 = 15 trong Z16 .
Một số tính chất của Zm
1. Phép cộng đóng trong Zm , mọi a, b  Zm , a + b  Zm
2. Tính giao hốn của phép cộng trong Zm , mỗi a, b€ Z , a +
b=b+a
3. Tính kết hợp của phép cộng trong Zm , mỗi a, b, c  Zm
(a + b) + c = a + (b + c)
4. Zm có phần tử trung hòa là 0,  a  Zm , a + 0 = 0 + a =
a
5. Mọi phần tử a trong Zm đều có phần tử đối là m − a
6. Phép nhân đóng trong Zm ,  a, b  Zm , b  Z

7. Tính giao hốn của phép nhân trong Z m , mỗi a, b  Zm ,
a ×b = b× a
8. Tính kết hợp của phép nhân trong Zm, mỗi bộ a,b,c  Zm:
(a×b)×c = (b×c)
9. Zm có phần tử đơn vị là 1 ,  a, b  Zm , a×1 =1×a = a
10. Tính phân phối của phép nhân đối với phép cộng, mỗi a,
b, c  Zm: (a + b)× c = a× c + b× c

6

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Zm có các tính chất 1, 3 - 5 nên tạo thành một nhóm. Do Zm
có tính chất 2 nên tạo thành nhóm Abel. Zm có các tính chất
(1) - (10) nên tạo thành một vành.
1.1.2 Các hệ thống mã hóa
Có hệ thống mã hóa đối xứng và hệ thống mã hóa bất đối xứng. Hai loại
mã hóa này khác nhau ở số lượng khóa. Mã hóa đối xứng sử dụng cùng một
khóa để mã hóa/giải mã. Trong khi đó, mã hóa bất đối xứng sử dụng hai khóa
khác nhau để mã hóa và giải mã thơng tin. Mỗi hệ thống mã hóa có ưu nhược
điểm riêng. Mã hóa đối xứng xử lí nhanh nhưng độ an tồn khơng cao. Mã hóa
bất đối xứng xử lí chậm hơn, nhưng độ an tồn và tính thn tiện trong quản lí
khóa cao. Trong các ứng dụng mã hóa hiện tại người ta thường kết hợp các ưu
điểm của cả hai loại mã hóa này.
1.1.3 Ứng dụng
Mã hóa có vai trị rất quan trọng, đặc biệt là trong giao dịch điện tử. Nó
giúp đảm bảo bí mật, tồn vẹn của thơng tin, khi thơng tin đó được truyền trên

mạng. Mã hóa cũng là nền tảng của kĩ thuật chữ ký điện tử, hệ thống PKI...
1.2. Hệ thống mã hóa khóa cơng cộng( mã hóa bất đối xứng)
1.2.1 Định nghĩa
Phương pháp mã hố cơng khai (Public Key Cryptography) sử dụng hai
khố public key và private key. Phương pháp này còn được gọi là mã hố bất
đối xứng (Asymmetric Cryptography) vì trong hệ sử dụng khoá mã hoá e k và
khoá giải mã dk khác nhau . Trong đó, ek được sử dụng để mã hố nên có thể
được cơng bố, nhưng khố giải mã dk phải được giữ bí mật. Nó sử dụng hai khoá
khác nhau để mã hoá và giải mã dữ liệu.
Ý tưởng về hệ thống mã hóa khóa cơng cộng được Martin Hellman, Ralph
Merkle và Whitfield Diffie tại Đại học Stanford giới thiệu vào năm 1976. Sau
đó,phương pháp Diffie-Hellman của Martin Hellman và Whitfield Diffie đã
được công bố . Năm 1977, trên báo "The Scientific American", nhóm tác giả
7

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Ronald Rivest, Adi Shamir và Leonard Adleman đã cơng bố phương pháp RSA,
phương pháp mã hóa khóa cơng cộng nổi tiếng và được sử dụng rất nhiều hiện
nay trong các ứng dụng mã hóa và bảo vệ thơng tin . RSA nhanh chóng trở
thành chuẩn mã hóa khóa cơng cộng trên tồn thế giới do tính an tồn và khả
năng ứng dụng của nó.
1.2.2 Phương pháp mã hóa
Bảo mật có vai trị quan trọng trong các giao dịch thơng qua mạng máy
tính có thể hiểu như việc ký kết vào một bức thư và đóng dấu lên phong bì. Nếu
chữ ký chứng minh sự tin cậy của bức thư, thì phong bì được đóng dấu chứng
minh cho sự bảo mật của bức thư.

Khi gửi văn bản điện tử, nếu người gửi muốn chỉ có người cần gửi đọc
được văn bản này thì văn bản phải được mã hố bằng khố cơng khai của người
nhận. Khi đó văn bản được gửi đi là văn bản đã được mã hoá, người nhận muốn
đọc được thì cần phải giải mã văn bản bằng khố bí mật của mình. Qui trình gửi
và nhận văn bản thể hiện ở hình 1
Khóa cơng cộng
A

Văn bản
gốc

B

mã hóa

khóa riêng

C

D

văn bản

giải mã

mã hóa

văn bản
giải mã


Hình 1. Mơ hình mã hóa khóa cơng khai

8

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Khi áp dụng hệ thống mã hóa khóa cơng cộng, người A sử dụng mã khóa
cơng cộng để mã hóa thơng điệp và gửi cho người B. Do biết được mã khóa
riêng nên B mới có thể giải mã thơng điệp mà A đã mã hóa. Người C nếu phát
hiện được thông điệp mà A gửi cho B, kết hợp với thơng tin về mã khóa cơng
cộng đã được cơng bố, cũng rất khó có khả năng giải mã được thơng điệp này do
khơng nắm được mã khóa riêng của B.
1.2.3 Một số thuật tốn mã hóa khóa cơng cộng
1.2.3.1

Giải thuật RSA

Năm 1978, R.L.Rivest, A.Shamir và L.Adleman đã đề xuất hệ thống mã
hóa khóa cơng cộng RSA (hay cịn được gọi là “hệ thống MIT”). Trong phương
pháp này, tất cả các phép tính đều được thực hiện trên Zn với n là tích của hai số
nguyên tố lẻ p và q khác nhau. Khi đó, ta có φ(n) = (p-1) (q-1)
Thuật tốn mã hóa RSA
n = pq với p và q là hai số nguyên tố lẻ phân biệt.
Cho P = C = Zn và định nghĩa:
K = {((n, p, q, a, b): n = pq, p, q là số nguyên tố, ab ≡ 1 (mod φ(n))}
Với mỗi k = (n, p, q, a, b)  K, định nghĩa:
ek(x) = xb mod n và dk(y) = ya mod n, với x, y  Z

Giá trị n và b được công bố, trong khi giá trị p, q, a được giữ bí mật
Dựa trên định nghĩa phương pháp mã hóa RSA, việc áp dụng vào thực tế được
tiến hành theo các bước sau:
Thuật toán sử dụng phương pháp RSA
Phát sinh hai số nguyên tố có giá trị lớn p và q
Tính n = pq và φ(n) = (p - 1) (q - 1)
Chọn ngẫu nhiên một số nguyên b (1 < b < φ(n)) thỏa gcd(b, φ(n)) = 1
Tính giá trị a = b-1 mod φ(n) (bằng thuật toán Euclide mở rộng)

9

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Giá trị n và b được cơng bố (khóa công cộng), trong khi giá trị p, q, a được giữ
bí mật (khóa riêng)
Hệ thống RSA có đặc điểm là thông tin không phải luôn được che dấu.
Giả sử người gởi có e = 17, n = 35. Nếu anh ta muốn gởi bất cứ dữ liệu nào
thuộc tập sau: {1, 6, 7, 8, 13, 14, 15, 20, 21, 22, 27, 28, 29, 34}, thì kết quả của
việc mã hóa lại chính là dữ liệu ban đầu. Nghĩa là M = M e mod n. Còn khi p =
109, q = 97, e = 865 thì hệ thống hồn tồn khơng có sự che dấu thơng tin, bởi
vì:  M, M = M865 mod (109*97)
Với mỗi giá trị n, có ít nhất 9 trường hợp kết quả mã hóa chính là dữ liệu
nguồn
ban đầu.
Thật vậy: M = Me mod n

(1)


Hay: M = Me mod p và M = Me mod q (2)
Với mỗi e, (1) có ít nhất ba giải pháp thuộc tập {0, 1, -1}. Để xác định
chính xác số thông điệp không được che dấu (không bị thay đổi sau khi mã hóa)
ta sử dụng định lý sau:“Nếu các thơng điệp được mã hóa trong hệ thống RSA
được xác định bởi số modulus n = p.q (p,q là số ngun tố) và khóa cơng cộng e
thì có: m = [1+gcd(e-1, p-1)][1+gcd(e-1), q-1] thông điệp không bị che dấu.
Mấu chốt để có thể giải mã được thơng tin là có được giá trị p và q tạo
nên giá trị n. Khi có được hai giá trị này, ta có thể dễ dàng tính ra được
φ(n)=(p-1)(q- 1) à giá trị : a = b -1 mod φ(n) theo thuật toán Euclide mở rộng.
Nếu số nguyên n có thể được phân tích ra thừa số nguyên tố, tức là giá trị p và q
có thể được xác định thì xem như tính an tồn của phương pháp RSA khơng cịn
được bảo đảm nữa. Như vậy, tính an tồn của phương pháp RSA dựa trên cơ sở
các máy tính tại thời điểm hiện tại chưa đủ khả năng giải quyết việc phân tích
các số nguyên rất lớn ra thừa số nguyên tố. Tuy nhiên, với sự phát triển ngày càng
nhanh chóng của máy tính cũng như những bước đột phá trong lĩnh vực toán học,
10

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

phương pháp RSA sẽ gặp phải những khó khăn trong việc bảo mật thông tin.
Năm 1994, Peter Shor, một nhà khoa học tại phịng thí nghiệm AT&T, đã đưa ra
một thuật tốn có thể phân tích một cách hiệu quả các số nguyên rất lớn trên máy
tính lượng tử. Mặc dù máy tính lượng tử hiện chưa thể chế tạo được nhưng rõ
ràng phương pháp RSA sẽ gặp phải nhiều thách thức lớn trong tương lai.
Để bảo đảm an tồn cho hệ thống mã hóa RSA, số ngun n = pq phải đủ
lớn để không thể dễ dàng tiến hành việc phân tích n ra thừa số nguyên tố. Hiện

tại, các thuật tốn phân tích thừa số ngun tố đã có thể giải quyết được các số
nguyên có trên 130 chữ số (thập phân). Để an toàn, số nguyên tố p và q cần phải
đủ lớn, ví dụ như trên 100 chữ số. Vấn đề đặt ra ở đây là giải quyết bài toán:
“làm thế nào để kiểm tra một cách nhanh chóng và chính xác một số ngun
dương n là số nguyên tố hay hợp số?”
Theo định nghĩa, một số nguyên dương n là số nguyên tố khi và chỉ khi n
chỉ chia hết cho 1 và n (ở đây chỉ xét các số nguyên dương).
Từ đó suy ra, n là số nguyên tố khi và chỉ khi n khơng có ước số dương nào
thuộc đoạn [2,…, [

n

]] .

Như vậy, ta có: n là số nguyên tố  i  [2,…, [

n

]] ,  (n ≡ 0(mod

i)) Việc kiểm tra một số nguyên dương n là số nguyên tố theo phương pháp trên
sẽ đưa ra kết quả hoàn tồn chính xác. Tuy nhiên, thời gian xử lý của thuật tốn
rõ ràng là rất lớn, hoặc thậm chí khơng thể thực hiện được, trong trường hợp n
tương đối lớn.
1.2.3.2

Thuật toán Miller-Rabin

Trên thực tế, việc kiểm tra một số nguyên dương n là số nguyên tố thường
áp ụng các phương pháp thuộc nhóm thuật tốn Monte Carlo, ví dụ như thuật

tốn olovay-Strassen hay thuật tốn Miller-Robin; trong đó, thuật tốn MillerRobin hường được sử dụng phổ biến hơn. Các thuật tốn này đều có ưu điểm là
xử lý hanh chóng (số nguyên dương n có thể được kiểm tra trong thời gian tỉ lệ
với og2n, tức là số lượng các bit trong biểu diễn nhị phân của n) nhưng vẫn có
khả ăng là kết luận của thuật tốn khơng hồn tồn chính xác, nghĩa là có khả
11

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

năng ột hợp số n lại được kết luận là số nguyên tố, mặc dù xác suất xảy ra kết
luận hơng chính xác là khơng cao. Tuy nhiên, vấn đề này có thể được khắc phục
bằng cách thực hiện thuật tốn một số lần đủ lớn, ta có thể làm giảm khả năng
xảy ra kết luận sai xuống dưới một ngưỡng cho phép và khi đó, xem như kết
luận có độ tin cậy rất cao.
Định nghĩa 1.2.3.2.1:
Thuật tốn thuộc nhóm Monte Carlo được sử dụng trong việc khẳng định
hay phủ định một vấn đề nào đó. Thuật tốn ln đưa ra câu trả lời và câu trả
lời thu được chỉ có khả năng hoặc là “Có” (yes) hoặc là “Khơng” (no).
Định nghĩa 1.2.3.2..2:
Thuật tốn “yes-biased Monte Carlo” là thuật tốn Monte Carlo, trong
đó, câu trả lời “Có” (Yes) ln chính xác nhưng câu trả lời “Khơng” (No) có
thể khơng chính xác.
Thuật tốn Miller-Rabin
Phân tích số ngun dương p dưới dạng n = 2km + 1 với m lẻ
Chọn ngẫu nhiên số nguyên dương a  {1, 2, ..., n-1}
Tính b = am mod p
if b ≡ 1 (mod p) then
Kết luận “p là số nguyên tố” và dừng thuật toán

end if
for i = 0 to k − 1
if b ≡ p − 1 (mod p) then
Kết luận “p là số nguyên tố” và dừng thuật toán
else
b = b2 mod p
end if
end for
Kết luận “p là hợp số”

12

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Thuật tốn Miller-Rabin là thuật tốn “yes-biased Monte Carlo” đối với vị
từ “số nguyên dương n là hợp số”. Xác suất xảy ra kết luận sai, nghĩa là thuật
toán đưa ra kết luận “n là số nguyên tố” khi n thật sự là hợp số, chỉ tối đa là
25%. Nếu áp dụng thuật toán k lần với các giá trị a khác nhau mà ta vẫn thu
được kết luận “n là số ngun tố” thì xác suất chính xác của kết luận này là
1

1
4k

→1 , với k đủ lớn.
Trong phương pháp mã hóa RSA, nhu cầu tính giá trị của biểu thức z = xb


mod n được đặt ra trong cả thao tác mã hóa và giải mã. Nếu thực hiện việc tính
giá trị heo cách thơng thường thì rõ ràng là không hiệu quả do thời gian xử lý
q lớn. Thuật tốn bình phương và nhân (square-and-multiply) có thể được sử
dụng để tính giá trị biểu thức z = xb mod n một cách nhanh chóng và hiệu quả
Thuật tốn “bình phương và nhân” để tính giá trị z = xb mod n
Biểu diễn b dưới dạng nhị phân bl-1bl-2...b1b0, bi  {0, 1}, 0≤ i < l
z=1
x = x mod n
for i = l-1 downto 0
z = z2 mod n
if bi = 1 then
z = z×x mod n
end if
end for
1.2.4 Ưu nhược điểm
1.2.4.1

Ưu điểm

13

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Các phương pháp mã hóa khóa cơng cộng giúp cho việc trao đổi mã khóa
trở nên dễ dàng hơn. Nội dung của khóa cơng cộng (public key) khơng cần phải
giữ bí mật như đối với khóa bí mật trong các phương pháp mã hóa quy ước. Sử
dụng khóa cơng cộng, mã khóa bí mật có thể được trao đổi an tồn theo quy

trình trong Hình 2.

Hình 2: mơ hình trao đổi khóa bí mật sử dụng Khóa cơng cộng
1.2.4.2

Nhược điểm
Nhược điểm của phương pháp này là tốc độ xử lý rất chậm, phương pháp

mã hóa phức tạp. Yêu cầu độ dài khóa lớn.
1.3 Hệ thống mã hóa khóa bí mật ( mã hóa đối xứng)
1.3.1 Khái niệm
Hệ thống mã hóa quy ước là hệ thống mã hóa trong đó quy trình mã hóa
và giải mã đều sử dụng chung một khố - khóa bí mật. Việc bảo mật thơng tin
phụ thuộc vào việc bảo mật khóa.
1.3.2 Phương pháp mã hóa
Trong hệ thống mã hóa quy ước, thơng điệp nguồn được mã hóa với mã
khóa k được thống nhất trước giữa người gửi A và người nhận B. Người A sẽ sử
14

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

dụng mã khóa k để mã hóa thơng điệp x thành thông điệp y và gửi y cho người
B; người B sẽ sử dụng mã khóa k để giải mã thơng điệp y này. Vấn đề an tồn
bảo mật thơng tin được mã hóa phụ thuộc vào việc giữ bí mật nội dung mã khóa
k. Nếu người C biết được mã khóa k thì C có thể “mở khóa” thơng điệp đã được
mã hóa mà người A gửi cho người B. Mơ hình mã hóa và giải mã được miêu tả
như hình 3

Khóa bí mật

Thơng điệp

Mã hóa

nguồn

Thơng điệp

Giải mã

đã mã hóa

Thơng điệp
đã giải mã

Hình 3 . Mơ hình hệ thống mã hóa quy ước
1.3.3

Một số phương pháp mã hóa khóa bí mật

1.3.3.1

Phương pháp mã hóa dịch chuyển

Phương pháp mã hóa dịch chuyển là một trong những phương pháp lâu
đời nhất được sử dụng để mã hóa. Thơng điệp được mã hóa bằng cách dịch
chuyển xoay vịng từng ký tự đi k vị trí trong bảng chữ cái.
Trong trường hợp đặc biệt k = 3 , phương pháp mã hóa bằng dịch chuyển được

gọi là phương pháp mã hóa Caesar.
Thuật tốn mã hóa dịch chuyển
Cho P = C = K = Zn
15

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Với mỗi khóa k  K , định nghĩa:
ek( x ) = (x + k) mod n và dk ( y )= ( y- k ) mod n, với x, y  Zn
E = {ek, k  K }, và D = { dk ,k  K }
Mã hóa dịch chuyển là một phương pháp mã hóa đơn giản, thao tác xử lý
mã hóa và giải mã được thực hiện nhanh chóng.
Tuy nhiên, trên thực tế, phương pháp này có thể dễ dàng bị phá vỡ bằng
cách thử mọi khả năng khóa k  K . Điều này hồn tồn có thể thực hiện được do
khơng gian khóa K chỉ có n phần tử để chọn lựa.
􀂈 Ví dụ: Để mã hóa một thơng điệp được biểu diễn bằng các chữ cái từ A
đến Z (26 chữ cái), ta sử dụng P = C = K = Z26 . Khi đó, thơng điệp được
mã hóa sẽ khơng an tồn và có thể dễ dàng bị giải mã bằng cách thử lần
lượt 26 giá trị khóa k  K . Tính trung bình, thơng điệp đã được mã hóa
có thể bị giải mã sau khoảng n / 2 lần thử khóa k  K .
1.3.3.2

Phương pháp mã hóa thay thế

Phương pháp mã hóa thay thế (Substitution Cipher) là một trong những
phương pháp mã hóa nổi tiếng và đã được sử dụng từ hàng trăm năm nay.
Phương pháp này thực hiện việc mã hóa thơng điệp bằng cách hốn vị các phần tử

trong bảng chữ cái hay tổng quát hơn là hoán vị các phần tử trong tập nguồn P.
Thuật toán mã hóa bằng thay thế
Cho P = C = Zn
K là tập hợp tất cả các hoán vị của n phần tử 0,1,..., n −1 . Như vậy, mỗi khóa
π  K là một hoán vị của n phần tử 0,1,...,n −1 .
Với mỗi khóa π  K , định nghĩa:
eπ (x) = π(x) và dπ ( y) = π-1( y) với x, y  Zn
E = { ek , π  K } và D = { d π , π  K }
16

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Đây là một phương pháp đơn giản, thao tác mã hóa và giải mã được thực
hiện nhanh chóng. Phương pháp này khắc phục điểm hạn chế của phương pháp
mã hóa bằng dịch chuyển là có khơng gian khóa K nhỏ nên dễ dàng bị giải mã
bằng cách thử nghiệm lần lượt n giá trị khóa k  K . Trong phương pháp mã hóa
thay thế có khơng gian khóa K rất lớn với n! phần tử nên không thể bị giải mã
bằng cách “vét cạn” mọi trường hợp khóa k. Tuy nhiên, trên thực tế thơng điệp
được mã hóa bằng phương pháp này vẫn có thể bị giải mã nếu như có thể thiết
lập được bảng tần số xuất hiện của các ký tự trong thông điệp hay nắm được một
số từ, ngữ trong thông điệp nguồn ban đầu!
1.3.3.3

Phương pháp Affine

Nếu như phương pháp mã hóa bằng dịch chuyển là một trường hợp đặc
biệt của phương pháp mã hóa bằng thay thế, trong đó chỉ sử dụng n giá trị khóa

k trong số n! phần tử, thì phương pháp Affine lại là một trường hợp đặc biệt
khác của mã hóa bằng thay thế.
Thuật tốn Affine
Cho P = C = Zn
K ={(a, b)  Zn X Zn: gcd (a, n) = 1}
Với mỗi khóa k = (a,b)  K , định nghĩa:
ek(x) = (ax + b) mod n và dk(x) = (a−1( y − b)) mod n với x, y  Z
E = {ek,k  K }và D = { Dk ,k  K }
Để có thể giải mã chính xác thơng tin đã được mã hóa bằng hàm
ek  E thì ek phải là một song ánh. Như vậy, với mỗi giá trị y  Zn, phương
trình ax + b ≡ y (mod n) phải có nghiệm duy nhất x  Zn .
Phương trình ax + b ≡ y (mod n) tương đương với ax ≡ ( y − b)(mod n) . Vậy, ta
chỉ cần khảo sát phương trình ax ≡ ( y − b)(mod n) .

17

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Định lý 1.3.2.3.1: Phương trình ax + b ≡ y(mod n) có nghiệm duy nhất x  Zn
vớimỗi giá trị b  Z khi và chỉ khi a và n nguyên tố cùng nhau.
Vậy, điều kiện a và n ngun tố cùng nhau bảo đảm thơng tin được mã
hóa bằng hàm ek có thể được giải mã và giải mã một cách chính xác.
Gọi φ (n) là số lượng phần tử thuộc Zn và nguyên tố cùng nhau với n.

18

Đồ án tốt nghiệp



Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael
m

Định lý 1.3.2.3.2: Nếu n =
m

ei
i

 p với pi là các số nguyên tố cùng nhau và ei 
i 1

e
e 1
Z+, 1i

i

i 1

Trong phương pháp mã hóa Affine, ta có n khả năng chọn giá trị b, φ (n)
khả năng chọn giá trị a. Vậy, khơng gian khóa K có tất cả nφ(n) phần tử.
Vấn đề đặt ra cho phương pháp mã hóa Affine là để có thể giải mã được
thơng tin đã được mã hóa cần phải tính giá trị phần tử nghịch đảo a −1  Zn .
Thuật tốn Euclide mở rộng có thể giải quyết trọn vẹn vấn đề này.
Trước tiên, cần khảo sát thuật tốn Euclide (ở dạng cơ bản) sử dụng trong
việc tìm ước số chung lớn nhất của hai số nguyên dương r0 và r1 với r0 > r=1 .

Thuật toán Euclide bao gồm một dãy các phép chia:
r0 = q1r1 + r2 , 0 < r2 < r1
r1 = q2r2 + r3 , 0 < r3 < r2

rm-2 =qm-1rm-1 + rm, 0rm-1 = qmrm
Dễ dàng nhận thấy rằng: gcd(r0, r1 ) = gcd(r1, r2 )= ... = gcd(rm-1, rm )=rm.
Như vậy, ước số chung lớn nhất của r0 và r1 là rm .
Xây dựng dãy số t0, t1,…, tm theo công thức truy hồi sau:
t0 = 0
t1 = 1
tj = ( tj-2 - qj-1tj-1 ) mod r0 với j>2
Định lý 1.3.2.3.3:
Với mọi j, 0 ≤ j ≤ m , ta có rj ≡ tjr1( mod r0 ) , với qj và rj được xác định theo
thuật toán Euclide và tj được xác định theo công thức truy hồi nêu trên.
Định lý 1.3.2.3.4:
Nếu r0 và r1 nguyên tố cùng nhau (với r0 > r1 ) thì tm là phần tử nghịch đảo của
r1 trong Zr0. gcd( r0, r1 ) =1=> tm =r 1 1 mod r0
19

Đồ án tốt nghiệp


Tìm hiểu và xây dựng chương trình mơ phỏng mã hóa Rijndael

Trong thuật tốn Euclide, dãy số{ t j } có thể được tính đồng thời với dãy
số { qj } và{ rj } . Thuật toán Euclide mở rộng dưới đây được sử dụng để xác
định phần tử nghịch đảo (nếu có) của một số nguyên dương a (modulo n). Trong
thuật tốn khơng cần sử dụng đến cấu trúc dữ liệu mảng để lưu giá trị của dãy số
{ tj } , { qj } hay{ rj } vì tại mỗi thời điểm, ta chỉ cần quan tâm đến giá trị của hai

phần tử cuối cùng của mỗi dãy tại thời điểm đang xét.
Thuật toán Euclide mở rộng xác định phần tử nghịch đảo của a (modulo n)
n0 = n
a0 = a
t0 = 0
t=1
n 

q=  a0 
 0
r = n0 − qa0
while r > 0 do
temp = t0 − qt
if temp ≥ 0 then
temp = temp mod n
end if
if temp < 0 then
temp = n − ((−temp)mod n)
end if
t0 = t
t = temp
n0 = a0
a0 = r
n 

q=  a0 
 0

20


Đồ án tốt nghiệp



×