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

Nghiên cứu vấn đề chia sẻ bí mật và ứng dụng trong bỏ phiếu điện tử

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 (473.47 KB, 77 trang )

i

LỜI CAM ĐOAN
Tôi xin cam đoan luận văn này của tự bản thân tôi tìm hiểu, nghiên cứu dưới
sự hướng dẫn của PGS.TS Trịnh Nhật Tiến. Các chương trình thực nghiệm do chính
bản thân tôi lập trình, các kết quả là hoàn toàn trung thực. Các tài liệu tham khảo
được trích dẫn và chú thích đầy đủ.
TÁC GIẢ LUẬN VĂN

Lê Đình Quyến


ii

LỜI CẢM ƠN
Trước hết em xin trân trọng gửi lời cảm ơn đến toàn thể các thầy cô giáo
Trường Đại học Công nghệ – Đại học Quốc gia Hà Nội và Trường Đại học Công
nghệ thông tin và Truyền thông – Đại học Thái nguyên đã dạy dỗ chúng em trong
suốt quá trình học tập chương trình cao học tại trường.
Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo PGS.TS Trịnh Nhật
Tiến, Trường Đại học Công nghệ – Đại học Quốc gia Hà Nội đã quan tâm, định
hướng và đưa ra những góp ý, gợi ý, chỉnh sửa quí báu cho em trong quá trình làm
luận văn tốt nghiệp.
Cuối cùng, em xin chân thành cảm ơn các bạn bè đồng nghiệp, gia đình và
người thân đã quan tâm, giúp đỡ và chia sẻ với em trong suốt quá trình làm luận văn
tốt nghiệp.

Thái Nguyên, ngày 28 tháng 10 năm 2012
HỌC VIÊN

Lê Đình Quyến




iii

MỤC LỤC
LỜI CAM ĐOAN.............................................................................................I
LỜI CẢM ƠN.................................................................................................II
MỤC LỤC.....................................................................................................III
DANH MỤC CÁC THUẬT NGỮ.................................................................V
DANH MỤC CÁC BẢNG............................................................................VI
DANH MỤC CÁC HÌNH...........................................................................VII
MỞ ĐẦU..........................................................................................................1
CHƯƠNG 1. CÁC KHÁI NIỆM VÀ THUẬT TOÁN CƠ BẢN.................3
1.1. LÝ THUYẾT TOÁN HỌC MODULO............................................................3
1.1.1. Hàm phi Euler....................................................................................................3
1.1.2. Đồng dư thức......................................................................................................4
1.1.3. Không gian Zn....................................................................................................5
1.1.4. Nhóm nhân Z*n..................................................................................................6
1.1.5. Thặng dư.............................................................................................................7
1.1.6. Căn bậc modulo..................................................................................................7
1.1.7. Các thuật toán trong Zn......................................................................................8
1.1.8. Ký hiệu Legendre và ký hiệu Jacobi.................................................................10

1.2. VẤN ĐỀ MÃ HOÁ.........................................................................................13
1.2.1. Mã hoá khoá đối xứng......................................................................................15
1.2.2. Mã hoá khoá bất đối xứng................................................................................16

1.3. VẤN ĐỀ KÍ ĐIỆN TỬ...................................................................................18
1.4. CHỮ KÍ SỐ.....................................................................................................21
1.4.1. Giới thiệu về chữ kí số......................................................................................21

1.4.2. Sơ đồ chữ kí số..................................................................................................22
1.4.3. Chuẩn chữ kí số................................................................................................25

1.5. VẤN ĐỀ QUẢN LÝ KHOÁ..........................................................................26
1.5.1. Khoá và một số khái niệm.................................................................................26
1.5.2. Các cách tạo khoá............................................................................................28
1.5.3. Phân phối khoá.................................................................................................34

CHƯƠNG 2. SƠ ĐỒ CHIA SẺ BÍ MẬT.....................................................41
2.1. Khái niệm chia sẻ bí mật ................................................................................41
2.2. Các sơ đồ chia sẻ bí mật..................................................................................43
2.2.1. Sơ đồ ngưỡng của Sharmir...............................................................................43
2.2.2. Cấu trúc mạch đơn điệu...................................................................................47
2.2.3. Cấu trúc không gian vectơ Brickell..................................................................53

2.3. Tính chất mở rộng của các sơ đồ chia sẻ bí mật.............................................57
2.4. Ưu điểm của sơ đồ ngưỡng Shamir trong bài toán bỏ phiếu điện tử.............58

CHƯƠNG 3. ỨNG DỤNG TRONG BỎ PHIẾU ĐIỆN TỬ......................60
3.1. Một số bài toán về an toàn thông tin trong “Bỏ phiếu điện tử” ....................60


iv

3.1.1. Bài toán xác thực cử tri....................................................................................60
3.1.2. Bài toán ẩn danh lá phiếu.................................................................................61
3.1.3. Bài toán phòng tránh sự liên kết giữa thành viên ban bầu cử và cử tri...........62

3.2. Giải quyết bài toán chia sẻ khóa kí phiếu bầu cử...........................................63
3.2.1. Chia sẻ khóa.....................................................................................................63

3.2.2. Khôi phục khóa.................................................................................................63

3.3. Giải quyết bài toán chia sẻ nội dung phiếu bầu cử.........................................64
3.4. Chương trình thử nghiệm................................................................................65
3.4.1. Chia sẻ khóa kí phiếu bầu cử............................................................................65
3.4.2. Chia sẻ nội dung phiếu bầu cử.........................................................................65

KẾT LUẬN....................................................................................................67
TÀI LIỆU THAM KHẢO............................................................................68
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN..........................................69
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN.............................................70


v

DANH MỤC CÁC THUẬT NGỮ
gcd
CRT
DES
RSA
SHA
PKI
CA
DSS

greatest common divisor (ước số chung lớn nhất)
Chinese Remainder Theorem (định lý phần dư Trung Hoa)
Data Encryption Standard (Tiêu chuẩn mã hóa dữ liệu)
Rivest, Sharmir, Adleman
Secure Hash Algorithm (Thuật giải băm an toàn)

Public Key Infastructure (Hạ tầng khóa công khai)
Certification Authority (Chứng thực chữ kí số)
Digital Signature Standard (Chuẩn chữ kí số)


vi

DANH MỤC CÁC BẢNG


vii

DANH MỤC CÁC HÌNH


1

MỞ ĐẦU

Hiện nay Internet đã trở nên rất phổ biến trên toàn thế giới, thông qua mạng
Internet mọi người có thể trao đổi thông tin với nhau một cách nhanh chóng và
thuận tiện. Những tổ chức có các hoạt động trên môi trường Internet/Intranet phải
đối diện với vấn đề là làm thế nào để bảo vệ những dữ liệu quan trọng, ngăn chặn
những hình thức tấn công, truy xuất dữ liệu bất hợp pháp từ bên trong (Intranet) lẫn
bên ngoài (Internet). Khi một người muốn trao đổi thông tin với một người hay một
tổ chức nào đó thông qua mạng máy tính thì yêu cầu quan trọng là làm sao để đảm
bảo thông tin không bị sai lệch hoặc bị lộ do sự can thiệp của người thứ ba. Trước
các yêu cầu cần thiết đó, lý thuyết về mật mã thông tin đã ra đời nhằm đảm bảo tính
an toàn dữ liệu tại nơi lưu trữ cũng như khi dữ liệu được truyền trên mạng.
Vấn đề chia sẻ bí mật được đã được nghiên cứu từ những năm 70 của thế kỷ

trước. Ý tưởng chính của chia sẻ bí mật dựa trên nguyên tắc đơn giản là không tin
vào bất cứ ai. Để đảm bảo an toàn một thông tin nào đó thì ta không thể trao nó cho
một người nắm giữ mà phải chia nhỏ thành các mảnh và chỉ trao cho mỗi người một
hoặc một số mảnh, sao cho một người với một số mảnh mình có thì không thể tìm
ra thông tin bí mật. Việc phân chia các mảnh phải theo một sơ đồ chia sẻ bí mật
nhất định, sau đó có thể khôi phục lại thông tin bí mật ban đầu.
Được sự gợi ý của giáo viên hướng dẫn và nhận thấy tính thiết thực của vấn
đề, em đã chọn đề tài: Nghiên cứu vấn đề chia sẻ bí mật và ứng dụng trong “Bỏ
phiếu điện tử” để làm nội dung cho luận văn tốt nghiệp của mình.
Luận văn này tập trung vào nghiên cứu cơ sở lý thuyết toán học và một số kỹ
thuật mật mã để thực hiện chia sẻ thông tin mật, sau đó áp dụng giải quyết một số
bài toán về an toàn thông tin trong “Bỏ phiếu điện tử”.


2

Nội dung chính của luận văn gồm ba chương
Chương 1: Các khái niệm cơ bản
Trong chương này luận văn trình bày các kiến thức cơ bản về lý thuyết toán
học Modulo, vấn đề mã hóa, kí điện tử, chữ kí số và vấn đề quản lý khóa.
Chương 2: Sơ đồ chia sẻ bí mật
Nội dung chương 2 trình bày khái niệm về chia sẻ bí mật, các sơ đồ chia sẻ
bí mật và tính chất mở rộng của các sơ đồ chia sẻ bí mật, ưu điểm của sơ đồ Shamir
trong bài toán bỏ phiếu điện tử.
Chương 3: Ứng dụng trong bỏ phiếu điện tử.
Chương này đề cập tới một số bài toán về an toàn thông tin trong “Bỏ phiếu
điện tử”, Giải quyết bài toán chia sẻ khóa ký phiếu bầu cử, Giải quyết bài toán chia
sẻ nội dung phiếu bầu cử. Chương trình thử nghiệm được viết bằng ngôn ngữ lập
trình C# 2012.



3

Chương 1. CÁC KHÁI NIỆM VÀ THUẬT TOÁN CƠ BẢN
Chương này trình bày các vấn đề cơ bản mà bất kỳ bài toán an toàn thông tin
nào cũng phải đề cập đến, đó là các vấn đề về lý thuyết toán học sử dụng trong bảo
mật thông tin, mã hoá thông tin, chữ ký điện tử, khái niệm khoá, các cách tạo khoá,
các phương pháp phân phối khoá, vấn đề định danh. Qua đó, hình thành cơ sở lý
thuyết cho an toàn truyền tin trên mạng máy tính.
Các khái niệm và định nghĩa trong chương này được tham khảo trong các tài
liệu: Lý thuyết mật mã và an toàn thông tin; Contemporary Cryptography.

1.1. LÝ THUYẾT TOÁN HỌC MODULO
1.1.1. Hàm phi Euler
1/. Định nghĩa
Cho n ≥1. Φ(n) được định nghĩa là số các số nguyên trong khoảng [1, n]
nguyên tố cùng nhau với n. Hàm Φ được gọi là hàm phi Euler.[4 – tr79]
2/. Tính chất của hàm phi Euler
• Nếu p là số nguyên tố thì Φ(n) = p – 1.
• Tính nhân của hàm phi Euler: Nếu gcd(m, n) = 1 thì Φ(mn) = Φ(m)Φ(n) (trong
đó gcd(m, n) là ký hiệu ước số chung lớn nhất của m và n).
e
e
e
• Nếu n = p1 p2 ... pk trong đó p1, p2, ..., pk là các thừa số nguyên tố của n thì:
1

Φ (n) = n(1 −

2


k

1
1
1
)(1 − )...(1 − ) .
p1
p2
pk


4

1.1.2. Đồng dư thức
1/. Định nghĩa
Cho a và b là các số nguyên, a được gọi là đồng dư với b theo modulo n, ký
hiệu là a ≡ b (mod n) nếu n chia hết (a – b). Số nguyên n được gọi là modulus của
đồng dư.[4 – tr81]
2/. Ví dụ:
13 ≡ 7 (mod 3) bởi vì 13 – 7 = 2*3
–11 ≡ 4 (mod 5) bởi vì –11 – 4 = – 3*5
3/. Tính chất của đồng dư
Cho a, a1, b, b1, c ∈ Z. Ta có các tính chất sau:
• a ≡ b (mod n) nếu và chỉ nếu a và b có cùng số dư khi chia cho n.
• a ≡ a (mod n) (Tính phản xạ).
• Nếu a ≡ b (mod n) thì b ≡ a (mod n) (Tính đối xứng).
• Nếu a ≡ b (mod n) và b ≡ c (mod n) thì a ≡ c (mod n) (Tính bắc cầu).
• Nếu a ≡ a1 (mod n), b ≡ b1 (mod n) thì a + b ≡ a1 + b1 (mod n)
và ab ≡ a1b1 (mod n).

Lớp tương đương [1 – tr24] của một số nguyên a là tập hợp các số nguyên
đồng dư với a theo modul n. Từ các tính chất 2, 3 và 4 ta thấy: cho n cố định, các số
đồng dư với n theo modulo n trong không gian Z được xếp vào một một lớp tương
đương. Nếu a = qn + r, trong đó 0 ≤ r < n thì a ≡ r (mod n). Vì vậy mỗi số nguyên a
là đồng dư theo modul n với duy nhất một số nguyên trong khoảng từ 0 đến n – 1 và
được gọi là thặng dư nhỏ nhất của a theo modul n. Cũng vì vậy, a và r cùng thuộc
một lớp tương đương. Do đó r có thể đơn giản được sử dụng để thể hiện lớp tương
đương.


5

1.1.3. Không gian Zn
1/. Các định nghĩa trong không gian Zn
• Các số nguyên theo modul n ký hiệu Z n là một tập hợp các số nguyên {0,1,2,3,
…,n–1}. Các phép toán cộng, trừ, nhân trong Z n được thực hiện theo modulo
n.[1 – tr24]
Ví dụ: Z25 = {0, 1, 2, …, 24}. Trong Z25 : 13 + 16 = 4, bởi vì: 13 + 16 = 29 ≡ 4
(mod 25). Tương tự, 13*16 = 8 trong Z25
• Cho a ∈ Zn. Nghịch đảo nhân của a theo modulo n là một số nguyên x ∈ Zn
sao cho a*x ≡ 1 (mod n). Nếu x tồn tại thì đó là giá trị duy nhất và a được gọi
là khả nghịch, nghịch đảo của a ký hiệu là a-1.[1 – tr25]
• Cho a, b ∈ Zn . Phép chia của a cho b theo modulo n là tích của a và b -1 theo
modulo n, và chỉ dược xác định khi b có nghịch đảo theo modulo n.[1 – tr25]
2/. Các tính chất trong không gian Zn
• Cho a ∈ Zn , a có nghịch đảo khi và chỉ khi gcd(a, n) = 1. [4 – tr83]
Ví dụ: Các phần tử khả nghịch trong Z 9 là: 1, 2, 4, 5, 7 và 8. trong đó 4 -1 = 7 vì
4 .7 ≡ 1 (mod 9)
• Giả sử d = gcd(a, n). Phương trình đồng dư ax ≡ b (mod n) có nghiệm x nếu và
chỉ nếu d chia hết cho b [1 – tr25], trong trường hợp các nghiệm d nằm trong

khoảng 0 đến n – 1 thì các nghiệm đồng dư theo modulo n / d.
3/. Định lý phần dư Trung Hoa (CRT)
Nếu các số nguyên n1, n2, …, nk là các số nguyên tố cùng nhau từng đôi một
thì hệ phương trình đồng dư:
x ≡ a1 (mod n1 )
x ≡ a2 (mod n2 )
…..
x ≡ ak (mod nk )
có nghiệm duy nhất theo modulo n = n1n2 … nk [1 – tr26]


6

4/. Thuật toán của Gausse
Nghiệm x trong hệ phương trình đồng dư trong định lý phần dư Trung Hoa
được tính như sau:
k

x=


i =1

ai NiMi mod n, trong đó: Ni = n/ni, Mi = Ni-1 mod ni [1 – tr26]

Ví dụ:
Cặp đồng dư: x ≡ 3 (mod 7 ) và x ≡ 7 (mod 13) có nghiệm duy nhất x ≡ 59 (mod 91)
Tính chất:
Nếu gcd(n1, n2) = 1 thì cặp đồng dư x ≡ a (mod n1) và x ≡ a (mod n2) có
nghiệm duy nhất x ≡ a (mod n1n2).


1.1.4. Nhóm nhân Z*n
1/. Các định nghĩa trong nhóm nhân Z*n
• Nhóm nhân của Zn ký hiệu là Z*n = {a ∈ Zn | gcd (a, n) = 1}. Đặc biệt, nếu n là
số nguyên tố thì Z*n = {a ∈ Zn | 1 ≤ a ≤ n – 1}. [1 – tr27]
• Cho a ∈ Zn*. Bậc của a, ký hiệu là ord(a) là số nguyên dương t nhỏ nhất sao
cho at ≡ 1 (mod n). [1 – tr27]
2/. Các tính chất trong Zn*
• Cho n ≥ 2 là số nguyên. [1 – tr27, tr28]
o (Định lý Euler) Nếu a ∈ Zn * thì aΦ(n) ≡ 1 (mod n).
o Nếu n là tích của các số nguyên tố phân biệt và nếu r ≡ s (mod Φ(n))
thì ar ≡ as (mod n) với mọi số nguyên a.
• Cho p là số nguyên tố. [1 – tr28]
o (Định lý Fermat) Nếu gcd(a, p) = 1 thì ap-1 ≡ 1 (mod p).
o Nếu r ≡ s (mod p – 1) thì ar ≡ as (mod p) với mọi số nguyên a.
o Đặc biệt ap ≡ a (mod p) với mọi số nguyên a.


7

1.1.5. Thặng dư
1/. Định nghĩa thặng dư
Cho a ∈ Zn*, a được gọi là thặng dư bậc 2 theo modulo n hoặc bình phương
theo modulo n nếu tồn tại x ∈ Zn* sao cho x2 ≡ a (mod n). Nếu không tồn tại x thì a
được gọi là thặng dư không bậc 2 theo modulo n. Tập hợp các thặng dư bậc 2 theo
modulo n ký hiệu là Qn và tập hợp các thặng dư không bậc 2 theo modulo n ký hiệu
___

là Q n. [1 – tr28]
___


Chú ý: Vì định nghĩa 0 ∉ Zn* nên 0 ∉ Qn và 0 ∉ Q n

2/. Ví dụ
___

Cho n = 21. Khi đó: Q21 = {1, 4, 16} và Q 21 = {2, 5, 8, 10, 11, 13, 17, 19, 20}.

1.1.6. Căn bậc modulo
1/. Định nghĩa
Cho a ∈ Qn. Nếu a ∈ Zn* thoả mãn x2 ≡ a (mod n) thì x được gọi là căn bậc 2
của a theo modulo n. [4 – tr91]
2/. Tính chất (Số căn bậc 2)
• Nếu p là một số nguyên tố lẻ, a ∈ Qn thì a có chính xác 2 căn bậc 2 theo
modulo p.
e
e
e
• Tổng quát hơn: cho n = p1 p2 ... pk trong đó pi là các số nguyên tố lẻ phân biệt
1

2

k

và ei ≥ 1. Nếu a ∈ Qn thì a có chính xác 2k căn bậc 2 theo modulo n.
3/. Ví dụ
Căn bậc 2 của 13 theo modulo 37 là 7 và 30.



8

Căn bậc 2 của 121 modulo 315 là 11, 74, 101, 151, 164, 214, 241 và 304.

1.1.7. Các thuật toán trong Zn
Cho n là số nguyên dương, các phần tử trong Z n sẽ được thể hiện bởi các số
nguyên {0, 1, 2,…, n–1}. Ta thấy rằng nếu a, b ∈ Zn thì:
nÕu a + b < n
a+b
(a + b) mod n = 
a + b − n nÕu a + b ≥ n
Vì vậy, phép cộng modulo (và phép trừ modulo) có thể được thực hiện mà
không cần thực hiện các phép chia. Phép nhân modulo của a và b có thể được thực
hiện bằng phép nhân thông thường a với b như các số nguyên bình thường, sau đó
lấy phần dư của kết quả sau khi chia cho n. Phép tính nghịch đảo trong Z n có thể
được thực hiện nhờ sử dụng thuật toán Euclidean mở rộng như mô tả sau:

1/. Thuật toán tính nghịch đảo nhân trong Zn
INPUT: a ∈ Zn
OUTPUT: a-1 mod n, nếu tồn tại.
• Sử dụng thuật toán Euclidean mở rộng sau để tìm các số nguyên x và y sao
cho: ax + ny = d với d = gcd(a, n).
• Nếu d > 1 thì a-1 mod n không tồn tại. Ngược lại, return (x).
2/. Thuật toán Euclidean mở rộng [4 – tr69]
INPUT: 2 số nguyên dương a và b với a ≥ b.
OUTPUT: d = gcd(a, b) và các số nguyên x, y thoả mãn: ax + by = d
• Nếu b == 0 thì đặt d = a; x = 1; y = 0; return (d, x, y);
• x2 = 1; x1 = 0; y2 = 0; y1 = 1;
• Khi b > 0 thực hiện:
q = [a / b]; r = a – qb; x = x2 – qx1; y = y2 – qy1;

a = b; r = b; x2 = x1; x1 = x; y2 = y1; y1 = y;
• d = a; x = x2; y = y2; return (d, x, y);


9

Số mũ modulo có thể được tính một các hiệu quả bằng thuật toán bình phương
và nhân liên tiếp, nó được sử dụng chủ yếu trong nhiều giao thức mã hoá.
3/. Thuật toán bình phương liên tiếp để tính số mũ modulo trong Zn. [4 – tr85]
INPUT: a ∈ Zn và số nguyên dương 0 ≤ k < n trong đó k có biểu diễn nhị phân là:
k=



t

ki 2i

i =0

OUTPUT: ak mod n
• b = 1; Nếu k == 0 return (b);
• A = a; Nếu k0 == 1 thì đặt b = a;
• For i = 1 to t do
A = A2 mod n;
Nếu ki == 1 thì b = A * b mod n;
• Return (b);
Ví dụ: (Tính số mũ modulo)
i
ki

A
b

0
0
5
1

1
0
25
1

2
1
625
625

3
0
681
625

4
1
1011
67

5
0

369
67

6
1
421
1059

7
0
779
1059

8
0
947
1059

Bảng 1.1: Mô tả các bước tính 5596 mod 1234
Độ phức tạp theo bit của các phép toán cơ bản trong Zn như sau:
Phép toán

Độ phức tạp về bit

Cộng modulo (a + b) mod n

O(lg n)

Trừ modulo (a – b) mod n


O(lg n)

Nhân modulo (a b) mod n

O((lg n)2)

Nghịch đảo theo modulo a-1 mod n

O((lg n)2)

Số mũ modulo ak mod n, k < n

O((lg n)3)

Bảng 1.2: Độ phức tạp theo bit của các phép toán cơ bản trong Zn

9
1
925
1013


10

1.1.8. Ký hiệu Legendre và ký hiệu Jacobi
1/. Định nghĩa ký hiệu Legendre
Cho p là số nguyên tố lẻ và một số nguyên a. Ký hiệu Legendre (

a
) được

p

định nghĩa là: [1 – tr29]
 0 nÕu p | a
a 
( ) =  1 nÕu a ∈ Qp
p 
−1 nÕu a ∈ Q P
2/. Tính chất của ký hiệu Legendre
Cho số nguyên tố lẻ p; a, b ∈ Z. Ký hiệu Legendre có tính chất sau: [1 – tr29, tr30]
• (

1
−1
a
) ≡ a (p-1)/2 (mod p). Trường hợp đặc biệt: ( ) = 1 và ( ) = (–1)(p-1)/ 2
p
p
p
___

Bởi vậy nên: –1 ∈ Qp nếu p ≡ 1 (mod 4); và –1 ∈ Q n nếu p ≡ 3 (mod 4).
ab
a b
a2
*
• ( ) = ( )( ) . Vì vậy nếu a ∈Zp thì ( ) = 1
p p
p
p


• Nếu a ≡ b (mod p) thì (
2
p

2

( p −1) / 8
• ( ) = (−1)


và (

(

b
a
)=( )
p
p

2
)
p

=

1

nếu


p



1

hoặc

7

(mod

8)

2
) = –1 nếu p ≡ 3 hoặc 5 (mod 8)
p

• Nếu q là số nguyên tố lẻ khác p thì: (
Nói cách khác: (

Ngược lại thì (

p
q
) = ( ) (–1)(p-1)(q-1) / 4.
q
p


p
q
) = ( ) trừ khi cả p và q đều đồng dư với 3 theo modulo 4.
q
p
p
q
)=–( )
q
p

Ký hiệu Jacobi là sự tổng quát hoá của ký hiệu Legendre cho các số nguyên n là lẻ
mà không cần phải là nguyên tố.


11

3/. Định nghĩa ký hiệu Jacobi
a
n

e
e
e
Cho n ≥ 3 là lẻ với các thừa số nguyên tố: n = p1 p2 ... pk . Ký hiệu Jacobi ( ) được
1

2

k


a
a e a e
a e
định nghĩa là: ( ) = ( ) 1 ( ) 2 ...( ) k [1 – tr29]
n
p1
p2
pk
Rõ ràng, nếu n là số nguyên tố thì ký hiệu Jacobi là ký hiệu Legendre.
4/. Tính chất của ký hiệu Jacobi
Cho m ≥ 3, n ≥ 3 là số nguyên lẻ và a, b ∈Z. Ký hiệu Jacobi có các tính chất sau:
a
n

a
n

• ( ) = 0, 1 hoặc –1, và ( ) = 0 khi và chỉ khi gcd(a, n) ≠1.
• (

ab
a b
) = ( )( ) . Vì vậy, nếu a ∈ Zn* thì
n n
n

• (

a

a a
) = ( )( ).
mn
m n
a
n

(

a2
) =1 .
n

b
n

• Nếu a ≡ b (mod n) thì ( ) = ( ).
1
n

• ( ) = 1.
• (

−1
)
n

và (

= –(1)


(n-1)/2

. Vì vậy (

−1
)
n

= 1 nếu n

≡ 1 (mod 4)

−1
) = –1 nếu n ≡ 3 (mod 4).
n

2
n

2

2
n

( n −1) / 8
• ( ) = (−1)
. Vì vậy, ( ) = 1 nếu p ≡ 1 hoặc 7 (mod 8)

2

n

và ( ) = –1 nếu p ≡ 3 hoặc 5 (mod 8).
• (

m
n
) = ( ) (–1)(m-1)(n-1) / 4.
n
m


12

Ngoài ra, (

m
n
) = ( ) trừ khi cả m và n đều đồng dư với 3 theo modulo 4.
n
m

Ngược lại thì (

m
n
) = – ( ).
n
m


Bằng các tính chất Jacobi, ta suy ra rằng: nếu n lẻ và a = 2ea1 với a1 lẻ thì
a
2e a
2 n mod a1
( ) = ( )( 1 ) = ( ) e (
)(−1) ( a1 −1)( n −1) / 4
n
n n
n
a1
a
n

Từ đó có thuật toán tính ( ) mà không yêu cầu tính các thừa số nguyên tố của n.

5/. Thuật toán tính ký hiệu Jacobi (và ký hiệu Legendre)
JACOBI(a, n)
INPUT: số nguyên lẻ n ≥ 3 và một số nguyên a, 0 ≤ a < n
a
n

OUTPUT: Ký hiệu Jacobi ( ) (và là ký hiệu Legendre khi n là số nguyên tố)
• Nếu a == 0 thì return (0);
• Nếu a == 1 thì return (1);
• Viết a = 2e a1 với a1 lẻ
• Nếu e chẵn thì đặt s = 1; Nếu không thì đặt s = 1 nếu n ≡ 1 hoặc 7 (mod 8)
hoặc đặt s = –1 nếu n ≡ 3 hoặc 5 (mod 8).
• Nếu n ≡ 3 (mod 4) và a1 ≡ 3 (mod 4) thì đặt s = – s;
• Đặt n1 = n mod a1;
• Nếu a1 == 1 thì return (s); Ngược lại thì return (s . JACOBI(a 1, n1));

Thuật toán trên chạy trong thời gian O((lg n)2) phép tính bit.
6/. Ví dụ (Tính ký hiệu Jacobi)
Cho a = 158 và và n = 235. Ký hiệu Jacobi (
(

158
) được tính như sau:
235

158
2
79
235
77
)=(
)(
) = (–1) (
)(–1)78. 234 / 4 = ( )
235
235 235
79
79


13

=(

79
2

)(–1)76 . 78 / 4 = ( ) = –1
77
77

1.2. VẤN ĐỀ MÃ HOÁ
Mặc dù mã hoá đã được sử dụng từ thời xa xưa trong các hoạt động ngoại
giao và quân sự nhưng chỉ sau khi bài báo “Lý thuyết truyền tin trong các hệ thống
bảo mật” của Claude Shannon ra đời nó mới trở thành một môn khoa học. Trước đó
các vấn đề về mã hoá, mật mã gần như là một môn “nghệ thuật”.
Mã hoá là phần rất quan trọng trong vấn đề bảo mật. Mã hoá ngoài nhiệm vụ
chính là làm cho tài liệu an toàn hơn, nó còn có một lợi ích quan trọng là: thay vì
truyền đi tài liệu thô (không được mã hoá) trên một đường truyền đặc biệt, được
canh phòng cẩn mật không cho người nào có thể “xâm nhập” vào lấy dữ liệu, người
ta có thể truyền một tài liệu đã được mã hoá trên bất cứ đường truyền nào mà không
lo dữ liệu bị đánh cắp vì nếu dữ liêu có bị đánh cắp đi nữa thì dữ liệu đó cũng
không dùng được.
Một số khái niệm liên quan:
Thuật toán mã hoá/ giải mã: là thuật toán dùng để chuyển thông tin thành dữ
liệu mã hoá hoặc ngược lại.
Khoá: là thông tin mà thuật toán mã/ giải mã sử dụng để mã/ giải mã thông tin.
Mỗi khi một thông tin đã được mã hoá thì chỉ có những người có khoá thích hợp
mới có thể giải mã. Nếu không thì dù dùng cùng một thuật toán giải mã nhưng cũng
không thể phục hồi lại thông tin ban đầu. Đây là đặc điểm quan trọng của khoá: mã
hoá chỉ phụ thuộc vào khoá mà không phụ thuộc vào thuật toán mã/ giải mã. Điều
này giúp cho một thuật toán mã/ giải mã có thể được sử dụng rộng rãi.
Với hình thức khá phổ biến hiện nay là truyền tin qua thư điện tử và không sử
dụng các công cụ mã hoá, bảo mật cũng như chữ ký điện tử thì các tình huống sau
có thể xảy ra:



14

• Không chỉ nguời nhận mà người khác cũng có thể đọc được thông tin.
• Thông tin mà ta nhận được có thể không phải là của người gửi đúng đắn.
• Thông tin nhận được bị người thứ ba sửa đổi.
• Bị nghe trộm: thông tin được truyền đi trên đường truyền có thể bị ai đó “xâm
nhập” vào lấy ra, tuy nhiên vẫn đến được người nhận mà không bị thay đổi.
• Bị thay đổi: thông tin bị chặn lại ở một nơi nào đó trên đường truyền và bị
thay đổi. Sau đó thông tin đã bị thay đổi này được truyền tới cho người nhận
như không có chuyện gì xảy ra.
• Bị lấy cắp: thông tin bị lấy ra nhưng hoàn toàn không đến được người nhận.
Khi đó thì khỏi nói đến thương mại điện tử, chính phủ điện tử với nền quản
lý hành chính điện tử, ... Để giải quyết vấn đề này, thông tin trước khi truyền đi sẽ
được mã hoá và khi tới người nhận, nó sẽ được giải mã trở lại.
Để đảm bảo rằng chỉ người cần nhận có thể đọc được thông tin mà ta gửi khi
biết rằng trên đường đi, nội dung thông tin có thể bị theo dõi và đọc trộm, người ta
sử dụng các thuật toán đặc biệt để mã hoá thông tin. Trong trường hợp này, trước
khi thông tin được gửi đi, chúng sẽ được mã hoá lại và kết quả là ta nhận được một
nội dung thông tin “không có ý nghĩa”. Khi thông điệp bị theo dõi hoặc bị bắt giữ
trên đường đi, để hiểu được thông tin của bạn, kẻ tấn công phải làm một việc là giải
mã nó. Thuật toán mã hoá càng tốt thì chi phí cho giải mã đối với kẻ tấn công càng
cao. Khi chi phí giải mã cao hơn giá trị thông tin thì coi như bạn đã thành công
trong vấn đề bảo mật.
Các thuật toán mã hoá thông tin khá đa dạng nhưng có thể chia ra làm hai
hướng chính là mã hóa với khóa đối xứng và mã hóa với khóa bất đối xứng.


15

1.2.1. Mã hoá khoá đối xứng

Hệ mã hóa khóa đối xứng là hệ mã hóa có khóa lập mã và khóa giải mã là
“giống nhau”, theo nghĩa biết được khóa này thì “dễ” tính được khóa kia. Vì vậy
phải giữ bí mật cả hai khóa.
Đặc biệt có một số hệ mã hóa có khóa lập mã và khóa giải mã trùng nhau (ke
= kd), như hệ mã hóa “dịch chuyển” hay DES.
Khóa

Khóa

Bản rõ

Mã hóa

Bản mã

Giải mã

Bản rõ

Hình 1.1: Sơ đồ hoạt động của mã hóa khóa đối xứng
1/. Ưu điểm
• Tốc độ mã/ giải mã nhanh. Đây là ưu điểm nổi bật của mã đối xứng.
• Sử dụng đơn giản: có thể dùng một khoá cho cả 2 bước mã và giải mã.
2/. Nhược điểm:
• Đòi hỏi khoá phải được 2 bên gửi/ nhận trao tận tay nhau vì không thể truyền
khoá này trên đường truyền mà không được bảo vệ. Điều này làm cho việc sử
dụng khoá trở nên không thực tế.
• Không an toàn: càng nhiều người biết khoá thì độ rủi ro càng cao.
• Trong trường hợp khoá mã hoá thay đổi, cần thay đổi đồng thời ở cả người gửi
và người nhận, khi đó rất khó có thể đảm bảo được là chính bản thân khoá

không bị đánh cắp trên đường đi.
• Không cho phép ta tạo ra chữ ký điện tử.


16

3/. Một số thuật toán mã hoá khóa đối xứng
• DES: 56 bit, không an toàn. Có thể dễ dàng bị bẻ khoá trong khoảng vài phút.
• Triple DES, DESX, GDES, RDES: mở rộng độ dài của khoá ở mã DES lên tới
168 bit.
• RC2, RC4, RC5: độ dài khoá có thể lên tới 2048 bit.
• IDEA (International Data Encryption Algorithm): 128 bit, thường dùng trong
các chương trình email.
• Blowfish: 448 bit.

1.2.2. Mã hoá khoá bất đối xứng
Hệ mã hóa khóa bất đối xứng là hệ mã hóa có khóa lập mã và khóa giải mã
là khác nhau (ke ≠ kd), biết được khóa này cũng khó tính được khóa kia. Hệ mã này
còn được gọi là hệ mã hóa khóa công khai.
Khóa lập mã cho công khai, gọi là khóa công khai. Khóa giải mã giữ bí mật,
gọi là khóa bí mật.
Khóa mã

Bản rõ

Mã hóa

Khóa giải

Bản mã


Giải mã

Bản rõ

Hình 1.2: Sơ đồ hoạt động của mã hóa khóa bất đối xứng
1/. Ưu điểm
Đây là loại mã hoá được sử dụng chủ yếu trên Internet. Một người muốn sử
dụng loại mã hoá này cần tạo ra một cặp khoá công khai/ bí mật. Anh ta có thể
truyền khoá công khai của mình tới bất cứ ai muốn giao tiếp với anh ta mà không sợ


17

người khác lấy khoá này. Cô ta sẽ mã hoá thông điệp của mình bằng khoá công khai
đó và gửi tới cho anh ta. Dĩ nhiên là chỉ mình anh ta với khoá bí mật của mình mới
có thể thấy được thông điệp của cô. Như vậy kẻ tấn công, cho dù có biết nội dung
của khoá công khai và nội dung của thông tin đã bị mã hoá vẫn không thể giải mã
được thông tin. Lý do là tính ngược khoá bí mật từ khoá công khai hoặc là rất khó
khăn, nếu không nói là không thể. Điều này đạt được trên nguyên tắc sử dụng các
hàm một chiều trong toán học khi tính hàm y = f(x) là đơn giản nhưng ngược lại
việc tính giá trị y khi đã biết x là rất khó khăn.
2/. Nhược điểm
Tốc độ mã hoá chậm: tốc độ mã hoá nhanh nhất của loại mã bất đối xứng
vẫn chậm hơn nhiều lần so với mã đối xứng. Do đó người ta thường kết hợp 2 loại
mã hoá để nâng cao tốc độ mã hoá.
3/. Một số thuật toán mã hoá bất đối xứng
• RSA: Loại mã này được dùng nhiều nhất cho web và chương trình email. Độ
dài khoá thông thường là từ 512 đến 1024 bit.
• ElGamal: 512 đến 1024 bit.



18

1.3. VẤN ĐỀ KÍ ĐIỆN TỬ
Nếu việc sử dụng mật mã đã trở nên phổ biến, không chỉ trong quân đội mà
còn trong thương mại và những mục đích cá nhân thì những đoạn tin và tài liệu điện
tử sẽ cần những chữ ký giống như các tài liệu giấy.
Cũng giống như trong thực tế, chữ ký để xác nhận cho người nhận rằng bức
thư đó do người này gửi mà không phải ai khác. Chữ ký điện tử sử dụng thuật toán
mã hóa khóa bất đối xứng để định danh người gửi. Thông thường, để bảo vệ các
văn bản mã hoá người ta dùng chữ ký điện tử. Việc ứng dụng chữ ký điện tử cũng
như công nhận giá trị pháp lý của nó là điều kiện tiên quyết cho thương mại điện tử.
Nếu như việc giả mạo chữ ký viết tay hoặc con dấu là không đơn giản thì việc làm
giả một đoạn thông tin nào đó là rất dễ dàng. Vì lý do đó, bạn không thể quét chữ
ký của mình cũng như con dấu tròn của công ty để chứng tỏ rằng tài liệu mà bạn
truyền đi đúng là của bạn.
Khi bạn cần “ký” một văn bản hoặc một tài liệu nào đó, thủ tục đầu tiên là
tạo ra chữ ký và thêm nó vào trong thông điệp. Có thể hình dung thủ tục này như
sau: Phần mềm mã hoá mà bạn sử dụng sẽ đọc nội dung văn bản và tạo ra một
chuỗi thông tin đảm bảo chỉ đặc trưng cho văn bản đó mà thôi. Bất kỳ một thay đổi
nào trong văn bản sẽ kéo theo sự thay đổi của chuỗi thông tin này. Sau đó phần
mềm đó sẽ sử dụng khoá bí mật của bạn để mã hoá chuỗi thông tin này và thêm nó
vào cuối văn bản như một động tác ký (Bạn có thể thấy là chúng ta hoàn toàn không
mã hoá nội dung văn bản, chỉ làm động tác ký mà thôi). Khi nhận được văn bản,
người nhận lặp lại động tác tạo ra chuỗi thông tin đặc trưng, sau đó sử dụng khoá
công khai mà bạn đã gửi để kiểm tra chữ ký điện tử có đúng là của bạn không và
nội dung thông điệp có bị thay đổi hay không. Thuật toán mã hoá khóa bất đối xứng
đầu tiên và nổi tiếng hơn cả có tên gọi là RSA (được ghép từ chữ cái đầu tiên của
tên ba tác giả là Rivest, Shamir, Adleman).



×