Víi sù ph¸t triÓn cña khoa häc kü thuËt vµ c«ng nghÖ, cïng víi c¸c nhu cÇu ®Æc biÖt cã liªn quan tíi an toµn th«ng tin, ngµy nay c¸c kü thuËt chÝnh trong an toµn th«ng tin bao gåm: Kü[r]
Trang 1Lời nói đầu
Trong sự phát triển của xã hội loài người, kể từ khi có sự trao
đổi thông tin, an toàn thông tin trở thành một nhu cầu gắn liền với nó như hình với bóng Từ thủa sơ khai, an toàn thông tin được hiểu đơn giản là giữ được bí mật và điều này được xem như một nghệ thuật chứ chưa phải là một ngành khoa học Với sự phát triển của khoa học kỹ thuật và công nghệ, cùng với các nhu cầu đặc biệt có liên quan tới an toàn thông tin, ngày nay các kỹ thuật chính trong an toàn thông tin bao gồm: Kỹ thuật mật mã (Cryptography), Kỹ thuật nguỵ trang (Steganography), Kỹ thuật tạo bóng mờ (Watermarking - hay xăm điện tử) Kỹ thuật mật mã nhằm đảm bảo ba dịch vụ an toàn cơ bản:Bí mật (Confidential), Xác thực (Authentication), Đảm bảo tính toàn vẹn (Integrity) Có thể thấy rằng mật mã học là một lĩnh vực khoa học rộng lớn có liên quan rất nhiều đến toán học như: Đại số tuyến tính, Lý thuyết thông tin, Lý thuyết độ phức tạp tính toán…
Nắm bắt được nhu cầu tìm hiểu về mật mã học, Học viện Công nghệ Bưu chính Viễn thông phối hợp với Nhà xuất bản Bưu điện xuất bản cuốn giáo trình "Mật mã học" do PGS.TS Nguyễn Bình chủ biên Cuốn giáo trình này sẽ giới thiệu với bạn đọc về các kiến thức toán học cơ bản như: lý thuyết số, các cấu trúc đại số như vành nhóm, trường ; một số thuật toán mật mã cổ điển và hiện đại; các thủ tục và các chuẩn ứng dụng trong thực tế Với nhiều ví dụ cụ thể, cuốn sách giúp cho bạn
đọc thuận tiện trong quá trình học tập nghiên cứu để nâng cao kiến thức
về mật mã học Đây là giáo trình phục vụ đào tạo tại Học viện Công nghệ Bưu chính Viễn thông
Trang 2Hy vọng cuốn sách sẽ là tài liệu tham khảo hữu ích cho giảng viên, sinh viên các trường đại học về kỹ thuật và công nghệ
Xin trân trọng giới thiệu cùng bạn đọc
Hà Nội, ngày 23 tháng 10 năm 2003
Học viện công nghệ bưu chính viễn thông
Trang 3thuật ngữ viết tắt
DES Data Encryption Standard Chuẩn mã dữ liệu
LAN Local Area Network Mạng cục bộ
ECB Electronic Code Book Chế độ quyển mã điện tử
CFB Cripher Feedback Chế độ phản hồi mã
CBC Cripher Block Chaining Chế độ liên kết khối mã
RSA Rivest - Shamir - Adleman
MAC Message Authentication Code Mã xác thực thông báo
OWHF Oneway Hash Funtion Hàm băm một chiều
CRHF Collision Resistant hash function Hàm băm khó va chạm
MDC Manipulation Detection Code Mã phát hiện sự sửa đổi
LSB Least Signification Bit Bit thấp nhất (có giá trị nhỏ
nhất
IDEA International Data Encryption
Algorithm
Thuật toán mã hóa dữ liệu quốc tế
PGP Pretty Good Privacy Thuật toán mã hóa PGP
SET Secure Electronic Transaction Giao dịch điện tử an toàn
LFSR Linear Feedback Sequence
Register
Thanh ghi hồi tiếp tuyến tính
Trang 4PhÇn I
C¸c kiÕn thøc to¸n häc phô trî
Trang 5bổ túc về lý thuyết số
1.1 Số nguyên
Tập các số nguyên {K,−3,−2,−1,0,1,2,3,K}=Z
1.1.1 Định nghĩa 1.1
Cho a,b∈Ζ
a lμ −ớc của b nếu ∃c∈Z:b=a.c Ký hiệu lμ ab
1.1.2 Các tính chất chia hết
Ζ
∈
∀a,b,c ta có:
(i)aa
(ii) Nếu abvμ cb thì ac
(iii) Nếu ba vμ ca thì a (bx +cy) với ∀x,y∈Z.
(iv) Nếu abvμ ab thì a=±b.
1.1.3 Định nghĩa 1.2 (Thuật toán chia đối với các số nguyên)
Nếu a vμ b lμ các số nguyên với b≥1
thì a=qb+r; 0≤r<b
q vμ r lμ những giá trị duy nhất
Trang 6PhÇn d− cña phÐp chia a vμ b ®−îc ký hiÖu amodb=r Th−¬ng cña phÐp chia a vμ b ®−îc ký hiÖu adivb=q
b
a b a b mod a , b
a b div a
⎥⎦
⎤
⎢⎣
⎡
−
=
⎥⎦
⎤
⎢⎣
⎡
=
VÝ dô: a = 73, b = 17
73 div 17 = 4, 73 mod 17 = 5
1.1.4 §Þnh nghÜa 1.3 (¦íc chung)
c lμ −íc chung cña a vμ b nÕu ca&cb
1.1.5 §Þnh nghÜa 1.4 (¦íc chung lín nhÊt (¦CLN))
Sè nguyªn d−¬ng d lμ ¦CLN cña c¸c sè nguyªn a vμ b (Ký hiÖu d = (a, b)) nÕu:
(i) d lμ −íc chung cña a vμ b
(ii) NÕu cã cavμ cb th× cd
Nh− vËy (a,b) lμ sè nguyªn d−¬ng lín nhÊt −íc cña c¶ a vμ b kh«ng kÓ (0,0) = 0
VÝ dô: C¸c −íc chung cña 12 vμ 18 lμ {±1,±2,±3,±6}
(12,18) = 6
1.1.6 §Þnh nghÜa 1.5 (Béi chung nhá nhÊt (BCNN))
Sè nguyªn d−¬ng d lμ BCNN cña c¸c sè nguyªn a vμ b (Ký hiÖu d = BCNN (a,b)) nÕu:
(i) ad,bd
(ii) NÕu cã ac, bc th× dc
Nh− vËy d lμ sè nguyªn d−¬ng nhá nhÊt lμ béi cña c¶ a vμ b
Trang 7Chương 1: Bổ túc về lý thuyết số 11
1.1.7 Tính chất
( ) ( )a,b
b a b , a
6
18 12 18 , 12 BCNN 6
18 ,
1.1.8 Định nghĩa 1.6
Hai số nguyên dương a vμ b được gọi lμ nguyên tố cùng nhau nếu: (a,b) = 1
1.1.9 Định nghĩa 1.7
Số nguyênp≥ được gọi lμ số nguyên tố nếu các ước dương 2 của nó chỉ lμ 1 vμ p Ngược lại p được gọi lμ hợp số
1.1.10 Định lý cơ bản của số học
Với mỗi số nguyên n≥2 ta luôn phân tích được dưới dạng tích của luỹ thừa của các số nguyên tố
k 2
k
e 2
e
1 p p p
Trong đó pi lμ các số nguyên tố khác nhau vμ ei lμ các số nguyên dương Hơn nữa phân tích trên lμ duy nhất
1.1.11 Định nghĩa 1.8
Với n ≥2, hμm Φ( )n được xác định lμ số các số nguyên trong khoảng [ ]1,n nguyên tố cùng nhau với n
1.1.12 Các tính chất của hμm Φ(n)
(i) Nếu p lμ các số nguyên tố thì Φ(p) = p – 1
(ii) Nếu (m, n) = 1 thì Φ(m.n) = Φ(m) Φ(n)
Trang 8(iii) Nếu 1 2 e k
k
e 2
e
1 p p p
n= K lμ phân tích ra thừa số nguyên tố của n thì:
⎠
⎞
⎜⎜
⎝
⎛
−
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
−
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
−
= Φ
k 2
1 1 p
1 1 p
1 1 n
1.1.13 Định lý 1.1
Với ∀n≥5 thì
( )
) n (ln ln 6
n
n >
Φ
1.2 các thuật toán trong z
Cho a vμ b lμ các số nguyên không âm vμ nhỏ hơn hoặc bằng
n Cần chú ý rằng số các bit trong biểu diễn nhị phân của n lμ [lgn] + 1 vμ số nμy xấp xỉ bằng lgn Số các phép toán bit đối với bốn phép toán cơ bản trên các số lμ cộng, trừ, nhân vμ chia sử dụng các thuật toán kinh điển đ−ợc tóm l−ợc trên bảng 1.1 Các kỹ thuật tinh tế hơn đối với các phép toán nhân vμ chia sẽ có độ phức tạp nhỏ hơn
Bảng 1.1: Độ phức tạp bit của các phép toán cơ bản trong Z
Chia a = qb + r 0((lga).(lgb)) = 0((lgn) 2)
ƯCLN của 2 số nguyên a vμ b có thể đ−ợc tính theo định lý sau:
1.2.1 Định lý 1.2
Nếu 1 2 k 1 2 f k
k
f 2
f 1
e k
e 2
e
1 p p ,b p p p p
a= K = trong đó ei ≥0,fi ≥0
thì ( ) ( 1 1) ( 2 2) min ( ek, fk)
k f , e min 2 f , e min
p b , a
−
Trang 9Chương 1: Bổ túc về lý thuyết số 13
vμ ( ) ( 1 1 ) ( 2 2 ) max ( e k , f k )
k f , e max 2 f , e max
p b , a
Ví dụ: Cho a = 4864 = 28.19; b = 3458 = 2.7.13.19 Khi đó:
( ) (a,b 4864,3458) 2 7.13.19 442624 BCNN
38 19 2 3458 , 4864 b
, a CLN
=
=
=
=
=
ư
1.2.2 Định lý 1.3
Nếu a vμ b lμ các số nguyên dương với a>b thì ƯCLN(a,b) =
ƯCLN (b,a mod b) Thuật toán Euclide sau sẽ cho ta cách tính
ƯCLN rất hiệu quả mμ không cần phải phân tích ra thừa số nguyên tố
1.2.3 Thuật toán Euclide
Tính ƯCLN của 2 số nguyên
Vμo : Hai số nguyên không âm a vμ b với a > b
Ra : ƯCLN của a vμ b
(1) While b≠0 do
r b , b a , b mod a
(2) Return (a)
1.2.4 Định lý 1.4
Thuật toán trên có thời gian chạy chừng 0(( )lgn 2) các phép toán bit
Ví dụ: Sau đây lμ các bước chia của thuật toán trên khi tính:
0 38 2 76
38 114 5 646
76 646 2 1406
646 1406 2 3458
1406 3458
1 4864
38 3458 , 4864
+
=
+
=
+
=
+
=
+
=
=
Trang 10Thuật toán trên có thể được mở rộng để không những chỉ tính được ƯCLN của 2 số nguyên a vμ b mμ còn tính được các số nguyên x vμ y thoả mãn ax+by=d
1.2.5 Thuật toán Euclide mở rộng
Vμo : Hai số nguyên không âm a vμ b với a≥ b
Ra : d = ƯCLN(a,b) vμ các số nguyên x vμ y thỏa mãn
ax+by=d (1) Nếu b= 0 thì đặt d ←a , x←1 , y←0 vμ return (d, x, y) (2) Đặt x2 ←1, x1 ←0, y2 ←0, y1←1
(3) While b > 0 do
(3.1) q←⎣a/b⎦,r←aưqb,x←x2ưqx1,y←y2ưqy1
(3.2) a←b, b←r, x2 ←x1, x1←x, y2 ←y1, y1 ←y
(4) Đặt d←a,x←x2,y←y2 vμ vμ return (d, x, y)
1.2.6 Định lý 1.5
Thuật toán trên có thời gian chạy cỡ 0((lgn)2) các phép toán bit
Ví dụ: Bảng 1.2 sau chỉ ra các bước của thuật toán trên với
các giá trị vμo a = 4864 vμ b = 3458
Bảng 1.2: Thuật toán Euclide mở rộng
Trang 11Chương 1: Bổ túc về lý thuyết số 15
Với các đầu vμo a = 4864 vμ b = 3458
Bởi vậy ta có:
ƯCLN(4864,3458) = 38 vμ (4864)(32) + (3458)(-45) = 38
1.3 Các số nguyên modulo n
1.3.1 Định nghĩa 1.9
Nếu a vμ b lμ các số nguyên thì a được gọi lμ đồng dư với b theo modulo (ký hiệu lμ a = b mod n) nếu n(aưb)
Số nguyên n được gọi lμ modulo đồng dư
Ví dụ: 24≡9mod5vì 24 – 9 = 3.5
ư11≡17mod7 vì ư11ư17= ư4.7
1.3.2 Các tính chất
Đối với a,a1,b,b1,c∈Ζ ta có:
(1) a≡b(modn) nếu vμ chỉ nếu a vμ b cũng có phần dư khi chia cho n
(2) Tính phản xạ: a≡a(modn)
(3) Tính đối xứng: Nếu a≡b(modn) thì b≡a(modn)
(4) Tính bắc cầu: Nếu a≡b(modn) vμ b≡c(modn)
thì a≡c(modn)
(5) Nếu a≡a1(modn) vμ b≡b1(modn) thì
a+b≡a1+b1(modn) vμ a.b≡a1.b1(modn)
Lớp tương đương của một số nguyên a lμ tập các số nguyên
đồng dư với a modulo n Từ các tính chất (2), (3) vμ (5) ở trên ta có thể thấy rằng đối với n cố định, quan hệ đồng dư theo modulo n sẽ phân hoạch Z thμnh các lớp tương đương
Trang 12Nếu a = qn + r với 0≤r≤n thì a≡r(modn)
Bởi vậy mỗi số nguyên a lμ đồng dư theo modulo n với một số nguyên duy nhất nằm trong khoảng từ 0 tới n - 1, số nμy được gọi
lμ thặng dư tối thiểu của a mod n Như vậy a vμ r có thể được dùng để biểu thị cho lớp tương đương nμy
1.3.3 Định nghĩa 1.10
Các số nguyên modulo n (ký hiệu Zn) lμ tập (các lớp tương
đương) của các số nguyên{0,1,2,K,nư1} Các phép cộng, trừ, nhân trong Zn được thực hiện theo modulo n
Ví dụ: Z25 ={0,1,K,24} Trong Z25 ta có:
13 + 16 = 4 vì 13+16=29≡4(mod25)
Tương tự 13.16 = 8 trong Z25
1.3.4 Định nghĩa 1.11 (Phần tử nghịch đảo)
Cho a∈Zn, Phần tử nghịch đảo (ngược theo phép nhân) của
a mod n lμ một số nguyênx∈Znsao cho: ax≡1(modn)
Nếu x tồn tại thì nó lμ duy nhất, a được gọi lμ khả nghịch Phần tử nghịch đảo của a được ký hiệu lμ aư1
1.3.5 Định nghĩa 1.12
Phép chia của a cho bmodnlμ tích của a vμ bư1 mod n tích nμy được xác định nếu b lμ phần tử khả nghịch
1.3.6 Định lý 1.6
Cho a∈Zn, khi đó a lμ khả nghịch nếu vμ chỉ nếu: ( )a,n = 1
Ví dụ: Các phần tử khả nghịch trong Z9 lμ 1, 2, 3, 4, 5, 7 vμ 8 Chẳng hạn 4ư1 = 7
vì 4.7 ≡1(mod 9)
Trang 13Chương 1: Bổ túc về lý thuyết số 17
1.3.7 Định lý 1.7
Cho d = (a,n) Phương trình đồng dư ax≡b(modn) có nghiệm
x nếu vμ chỉ nếu db, trong trường hợp nμy có đúng d nghiệm nằm giữa 0 vμ n - 1, những nghiệm nμy lμ tất cả các đồng dư theo modulo nd
1.3.8 Định lý 1.8 (Phần dư China)
Nếu các số nguyên n1,n2,K,nk lμ nguyên tố cùng nhau từng
đôi một thì hệ các phương trình đồng dư:
k
2 2
1 1
n mod a
x
n mod a
x
n mod a
x
≡
≡
≡
sẽ có nghiệm duy nhất theo modulo n (n = n1.n2Knk)
1.3.9 Thuật toán Gausse
Nghiệm x của hệ phương trình đồng dư trong định lý phần dư China có thể được tính bằng:
∑
=
= k
1 i
i i
iN M mod n a
x
Trong đó: Ni =n/nivμ Mi = Niư1mod ni
Các tính toán nμy có thể được thực hiện trong 0(( )lgn2) các phép toán trên bit
Ví dụ: Cặp phương trình đồng dư x≡3(mod7),x≡7(mod13)
có nghiệm duy nhất x ≡59 (mod 91)
Trang 141.3.10 Định lý 1.9
Nếu (n1,n2)= thì cặp phương trình đồng dư 1
x ≡ a(mod n1), x ≡ a(mod n2)
có một nghiệm duy nhất x ≡ a(mod n1,n2)
1.3.11 Định nghĩa 1.13
Nhóm nhân của Z lμ n Z*n ={a∈Zn ( )a,n =1}
Đặc biệt, nếu n lμ số nguyên tố thì Z*n ={a 1≤a≤nư1}
1.3.12 Định nghĩa 1.14
Cấp của Z lμ số các phần tử trong *n Z (ký hiệu *n Z ) *n
Theo định nghĩa của hμm Phi-Euler ta thấy:
Z*n =Φ( )n
Cần để ý rằng nếu a∈Z*n vμ b∈Z*n thì a,b∈Z*n vμ bởi vậy
*
n
Z lμ đóng đối với phép nhân
1.3.13 Định lý 1.10
Cho p lμ một số nguyên tố:
(1) Định lý Euler: Nếu a∈Z*n thì aΦ ( )n ≡1(mod n)
(2) Nếu n lμ tích của các số nguyên khác nhau vμ nếu
( )
s
r ≡ Φ thì ar ≡as(modn) đối với mọi số nguyên a Nói một cách khác khi lμm việc với modulo n thì các số mũ có thể được rút gọn theo modulo Φ(n)
Trang 15Chương 1: Bổ túc về lý thuyết số 19
1.3.14 Định lý 1.11
Cho p lμ một số nguyên tố:
(1) Định lý Ferma: Nếu ( )a,p = thì 1 apư1 ≡1(mod p)
(2) Nếur ≡s(mod pư1)thì ar ≡ as (mod p)đối với mọi số nguyên a Nói một cách khác khi lμm việc với modulo của một số nguyên tố p thì các luỹ thừa có thể được rút gọn theo modulo p - 1
(3) Đặc biệt ap ≡ a(mod p) với mọi số nguyên a
1.3.15 Định nghĩa 1.15
Cho a∈Z*n Cấp của a (ký hiệu lμ ord( )a ) lμ số nguyên dương nhỏ nhất t sao cho at ≡1(mod n)
1.3.16 Định nghĩa 1.16
Cho a∈Z*n,ord( )a = vμ t as ≡1(mod n) khi đó t lμ ước của
s Đặc biệt t Φ( )n
Ví dụ: Cho n = 21, khi đó
Z*21 = {1,2,4,5,8,10,11,13,16,17,19,20}
Chú ý rằng ( ) ( ) ( ) *
21 Z 12 3 7
phần tử trong Z*21 được nêu trong bảng sau:
Bảng 13: Cấp của các phần tử trong Z*21
*
21
Z
Trang 161.3.17 Định nghĩa 1.17
Cho α∈Z*n Nếu cấp của α lμ Φ( )n thì α đ−ợc gọi lμ phần
tử sinh hay phần tử nguyên thủy của Z Nếu *n Z có một phần tử *n
sinh thì Z đ−ợc gọi lμ cyclic *n
1.3.18 Các tính chất của các phần tử sinh của Z*n
(1) Z*n có phần tử sinh nếu vμ chỉ nếu n=2,4,pk hoặc lμ k
p
2 , trong đó p lμ một số nguyên tố lẻ vμ k≥ Đặc biệt, nếu p lμ 1 một số nguyên tố thì Z*n có phần tử sinh
(2) Nếu α lμ một phần tử sinh của Z*nthì:
Z*n ={αimodn 0≤i≤Φ( )n −1}
(3) Giả sử rằng α lμ một phần tử sinh của Z*n, khi đó
n mod
b = αi cũng lμ một phần tử sinh của Z*n nếu vμ chỉ nếu ( )
(i,Φn )=1 Từ đó ta rút ra rằng nếu Z*n lμ cyclic thì số các phần
tử sinh lμ Φ(Φ( )n )
(4) α ∈ Z*n lμ một phần tử sinh của Z*n nếu vμ chỉ nếu
( )n /p ≠1(modn)
αΦ đối với mỗi nguyên tố p của Φ( )n
Ví dụ: Z*21 không lμ cyclic vì nó không chứa một phần tử có cấp Φ( )21 =12 (Chú ý rằng 21 không thỏa mãn điều kiện (1) ở trên)
* 25
Z lμ cyclic vμ có một phần tử sinh α=2
Trang 17Chương 1: Bổ túc về lý thuyết số 21
1.3.19 Định nghĩa 1.18
Cho a∈Z*n, a được gọi lμ thặng dư bậc hai modulo n (hay bình phương của modulo n) nếu tồn tại x∈Z*n sao cho
(modn) a
x2 ≡ Nếu không tồn tại x như vậy thì a được gọi lμ thặng dư không bậc hai mod n Tập tất cả các thặng dư bậc hai modulo
n được ký hiệu lμ Qn, còn tập tất cả các thặng dư không bậc hai
được ký hiệu lμ Q Cần chú ý rằng theo định nghĩa n 0∉Z*n Bởi vậy 0∉Qnvμ 0∉Qn
1.3.20 Định lý 1.12
Cho p lμ một số nguyên tố lẻ vμ α lμ một phần tử sinh của
*
p
Z Khi đó a∈Z*p lμ một thặng dư bậc hai modulo p nếu vμ chỉ nếu a = αi mod p, trong đó i lμ một số nguyên chẵn Từ đó rút ra
rằng ( )
2
1 p
Qp = ư
2
1 p
Qp = ư
, tức lμ một nửa số phần tử trong
*
p
Z lμ các thặng dư bậc hai vμ nửa còn lại thặng dư không bậc hai
Ví dụ: α=6 lμ một phần tử sinh của Z*13 Các lũy thừa của
α được liệt kê ở bảng sau:
Bởi vậy Q13 ={1,3,4,9,10,12}, Q13 ={2,5,6,7,8,11}.
1.3.21 Định lý 1.13
Cho n lμ tích của hai số nguyên tố lẻ khác nhau q vμ p,
n = p.q, khi đó a∈Z*n lμ một thặng dư bậc hai modulo n nếu vμ chỉ nếu a∈Qpvμ a∈Qp Điều đó dẫn tới ( )( )
4
1 q 1 p Q Q
Trang 18và ( )( )
4
1 q 1 p 3
Ví dụ: Cho n = 21 Khi đó
Q21 ={1,4,16} Q21 ={2,5,8,10,11,13,17,19,20}
1.3.22 Định nghĩa 1.19
Cho a∈Qn Nếu x∈Z*nthỏa mãnx2 ≡a(modn) thì x được gọi
lμ căn bậc hai của a mod n
1.3.23 Định lý 1.14 (Số các căn bậc hai)
(1) Nếu p lμ một số nguyên tố lẻ vμ a∈Qnthì a được gọi lμ căn bậc hai theo modulo p
(2) Tổng quát hơn, cho 1 2 e k
k
e 2
e
p
n= K , trong đó pi lμ các số nguyên tố lẻ phân biệt vμ ei ≥1 Nếu a∈Qnthì có đúng 2k căn bậc hai khác nhau theo modulo n
Ví dụ: Các căn bậc 2 của 12 mod 37 lμ 7 vμ 30 Các căn bậc 2
của 121 mod 315 lμ 11, 74, 101, 151, 164, 214, 241 vμ 304
Cho n lμ một số nguyên dương Các phần tử của Zn sẽ được biểu thị bởi các số nguyên Q21 ={0,1,2, ,nư1}
Ta thấy rằng, nếu a,b∈Znthì
⎩
⎨
⎧
≥ +
ư +
<
+ +
= +
n b a r
b a
n b a b
a n mod b a
Bởi vậy phép cộng (vμ trừ) theo modulo có thể thực hiện được
mμ không cần phép chia dμi Phép nhân modulo của a vμ b có thể
được thực hiện bằng cách nhân các số nguyên thông thường rồi lấy