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

Giáo trình mật mã học phần 1– Học viện bưu chính viễn thông

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 (1.02 MB, 157 trang )






Lờ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ứ
cha 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ệ Bu chính Viễn thông phối hợp với Nhà xuất bản Bu đ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ệ Bu chính Viễn thông.




Hy 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ệ bu chính viễn thông







thuậ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ộ
MDV
Mã dịch vòng
MTT
Mã thay thế
MHV
Mã hoán vị
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
Header
Tiêu đề
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
Firewall
Bức tờng lửa
Server
Máy chủ
Router
Bộ định tuyến









PhÇn I
C¸c kiÕn thøc to¸n häc phô trî














bæ tóc vÒ lý thuyÕt sè

1.1. Sè nguyªn
TËp c¸c sè nguyªn
{
}
.Z,3,2,1,0,1,2,3,
=



KK
1.1.1. §Þnh nghÜa 1.1
Cho
Ζ∈b,a

a lμ −íc cña b nÕu
.c.ab:Zc
=


Ký hiÖu lμ .ba
1.1.2. C¸c tÝnh chÊt chia hÕt
Ζ∈∀ c,b,a
ta cã:
(i) .aa
(ii) NÕu
ba


cb
th× .ca
(iii) NÕu
ba

ca
th×
(
)
cybxa +
víi .Zy,x



(iv) NÕu
ba

ab
th× .ba
±
=

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 1b ≥
th×
br0;rqba <≤+=

q vμ r lμ nh÷ng gi¸ trÞ duy nhÊt.
Giáo trình Mật mã học



10
Phần d của phép chia a v b đợc ký hiệu rbmoda =
Thơng của phép chia a v b đợc ký hiệu
qbdiva
=

Ta có
.
b
a
babmoda,
b
a
bdiva






=






=
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 .bc&ac
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ó
ac v bc thì dc .
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
{
}
6,3,2,1





(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) .db,da
(ii) Nếu có
cb,ca thì .cd
Nh vậy d l số nguyên dơng nhỏ nhất l bội của cả a v b.
Chơng 1: Bổ túc về lý thuyết số



11
1.1.7. Tính chất
()
()
b,a
b.a
b,a BCNN
=
Ví dụ:
() ()
36
6
18.12
18,12BCNN618,12 === .
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ên 2p đợc gọi l số nguyên tố nếu các ớc dơng
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 2n 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ố.
k21
e
k
e
2
e

1
pppn K=
Trong đó p
i
l các số nguyên tố khác nhau v e
i
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 ,2n hm
()
n đợc xác định l số các số nguyên trong
khoảng
[
]
n,1 nguyên tố cùng nhau với n.
1.1.12. Các tính chất của hm (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).
Giáo trình Mật mã học


12
(iii) Nếu
k21
e
k
e
2

e
1
pppn K= l phân tích ra thừa số nguyên tố
của n thì:
()



























=
k21
p
1
1
p
1
1
p
1
1nn
K .
1.1.13. Định lý 1.1
Với 5n thì

()
)n(lnln6
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ố ny 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

Phép toán Độ phức tạp bit
Cộng a + b 0(lga + lgb) = 0(lgn)
Trừ a b 0(lga + lgb) = 0(lgn)
Nhân a.b 0((lga).(lgb)) = 0((lgn)
2
)
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
k21k21
f
k
f
2
f
1
e
k
e
2
e
1
p ppb,pppa == K trong đó
0f,0e
ii



thì
()
(
)
(
)
(
)
kk2211
f,emin
k
f,emin
2
f,emin
1
pppb,aCLN K=


Chơng 1: Bổ túc về lý thuyết số


13
v
()
(
)
(
)
(
)

kk2211
f,emax
k
f,emax
2
f,emax
1
pppb,aBCNN K= .
Ví dụ: Cho a = 4864 = 28.19; b = 3458 = 2.7.13.19. Khi đó:
()
(
)
()( )
.44262419.13.7.23458,4864b,aBCNN
3819.23458,4864b,aCLN
8
===
===

1.2.2. Định lý 1.3
Nếu a v b l các số nguyên dơng với
ba >
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
Vo : Hai số nguyên không âm a v b với a > b
Ra : ƯCLN của a v b.

(1) While
0b do
rb,ba,bmodar



(2) Return (a).
1.2.4. Định lý 1.4
Thuật toán trên có thời gian chạy chừng
(
)
)nlg(0
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:
()
038.276
38114.5646
76646.21406
6461406.23458
14063458.14864
383458,4864
+=
+=
+=
+=
+=
=


Giáo trình Mật mã học


14
Thuậ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 dbyax
=
+
.
1.2.5. Thuật toán Euclide mở rộng
Vo : Hai số nguyên không âm a v b với ba
Ra : d = ƯCLN(a,b) v các số nguyên x v y thỏa mãn

dbyax =+
.
(1) Nếu b= 0 thì đặt
0y,1x,ad



v return (d, x, y)
(2) Đặt
1y,0y,0x,1x
1212



(3) While b > 0 do
(3.1)


1212
qyyy,qxxx,qbar,b/aq







(3.2)
yy,yy,xx,xx,rb,ba
112112





(4) Đặt
22
yy,xx,ad

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ị vo a = 4864 v b = 3458
Bảng 1.2: Thuật toán Euclide mở rộng

Q r x y a b x
2
x
1
y
2
y
1

4864 3458 1 0 0 1
1 1406 1
1
3458 1406 0 1 1
1
2 646
2
3 1406 646 1
2 1
3
2 114 5
7
646 114
2
5 3 7
5 76
27
38 114 76 5
27 7
38
1 38 32

45
76 38
27
32 38
45
2 0
91
128 38 0 32
91 45
128
Chơng 1: Bổ túc về lý thuyết số


15
Với các đầu vo 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
(
)
ban .
Số nguyên n đợc gọi l modulo đồng d.
Ví dụ: 5mod924 vì 24 9 = 3.5

7mod1711 vì 7.41711

=



.
1.3.2. Các tính chất
Đối với

c,b,b,a,a
11
ta có:
(1)
()
nmodba 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ạ:
(
)
nmodaa

.
(3) Tính đối xứng: Nếu
(
)
nmodba

thì
(
)
nmodab



(4) Tính bắc cầu: Nếu
(
)
nmodba

v
(
)
nmodcb


thì
()
nmodca
(5) Nếu
()
nmodaa
1
v
(
)
nmodbb
1

thì

()
nmodbaba
11
++ v

(
)
nmodb.ab.a
11


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 thnh các lớp tơng đơng.
Giáo trình Mật mã học


16
Nếu a = qn + r với nr0


thì
(
)
nmodra

.
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ố ny đợ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 ny.
1.3.3. Định nghĩa 1.10
Các số nguyên modulo n (ký hiệu Z
n

) l tập (các lớp tơng
đơng) của các số nguyên
{
}
1n,,2,1,0

K
. Các phép cộng, trừ, nhân
trong Z
n
đợc thực hiện theo modulo n.
Ví dụ:
{}
24,,1,0Z
25
K= . Trong
25
Z
ta có:
13 + 16 = 4 vì
(
)
25mod4291613

=
+

Tơng tự 13.16 = 8 trong Z
25
.

1.3.4. Định nghĩa 1.11 (Phần tử nghịch đảo)
Cho
n
Za

, Phần tử nghịch đảo (ngợc theo phép nhân) của
a mod n l một số nguyên
n
Zx

sao cho:
(
)
nmod1ax


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
nmodb
l tích của a v b

1
mod n tích
ny đợc xác định nếu b l phần tử khả nghịch
1.3.6. Định lý 1.6

Cho
n
Za

, khi đó a l khả nghịch nếu v chỉ nếu:
()
1n,a =

Ví dụ: Các phần tử khả nghịch trong Z
9
l 1, 2, 3, 4, 5, 7 v 8.
Chẳng hạn
74
1
=


(
)
9mod17.4

.
Chơ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
(
)

nmodbax

có nghiệm
x nếu v chỉ nếu
bd
, trong trờng hợp ny có đúng d nghiệm nằm
giữa 0 v n - 1, những nghiệm ny l tất cả các đồng d theo
modulo
dn .
1.3.8. Định lý 1.8 (Phần d China)
Nếu các số nguyên
k21
n,,n,n K l nguyên tố cùng nhau từng
đôi một thì hệ các phơng trình đồng d:

(
)
()
()
kk
22
11
nmodax

nmodax
nmodax





sẽ có nghiệm duy nhất theo modulo n
(
)
k21
nn.nn K
=
.
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
1i
iii
nmodMNax

Trong đó:
ii
n/nN = v
i
1
ii
nmodNM

=

Các tính toán ny có thể đợc thực hiện trong

()
)nlg(0
2
các
phép toán trên bit.
Ví dụ: Cặp phơng trình đồng d
(
)( )
13mod7x,7mod3x



có nghiệm duy nhất
(
)
91mod59x
.
Giáo trình Mật mã học


18
1.3.10. Định lý 1.9
Nếu
()
1n,n
21
=
thì cặp phơng trình đồng d.

()

(
)
21
nmodax,nmodax



có một nghiệm duy nhất
(
)
21
n,nmodax

.
1.3.11. Định nghĩa 1.13
Nhóm nhân của
n
Z
l
(
)
{
}
1n,aZaZ
n
*
n
==

Đặc biệt, nếu n l số nguyên tố thì

{
}
1na1aZ
*
n
=
.
1.3.12. Định nghĩa 1.14
Cấp của
*
n
Z
l số các phần tử trong
*
n
Z
(ký hiệu
*
n
Z
)
Theo định nghĩa của hm Phi-Euler ta thấy:

(
)
nZ
*
n
=


Cần để ý rằng nếu
*
n
Za
v
*
n
Zb
thì
*
n
Zb,a
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
*
n
Za
thì
(
)
(
)
nmod1a
n



.
(2) Nếu n l tích của các số nguyên khác nhau v nếu
()()
nmodsr


thì
(
)
nmodaa
sr
đối với mọi số nguyên a. Nói
một cách khác khi lm việc với modulo n thì các số mũ có thể đợc
rút gọn theo modulo ).n(
Chơ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
(
)
1p,a
=
thì
(
)

pmod1a
1p


.
(2) Nếu
()
1pmodsr


thì
(
)
pmodaa
sr

đối với mọi số
nguyên a. Nói một cách khác khi lm 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
(
)
pmodaa
p

với mọi số nguyên a.
1.3.15. Định nghĩa 1.15
Cho
*
n

Za
. Cấp của a (ký hiệu l
(
)
aord
) l số nguyên dơng
nhỏ nhất t sao cho
(
)
nmod1a
t

.
1.3.16. Định nghĩa 1.16
Cho
*
n
Za
,
()
taord =
v
(
)
nmod1a
s

khi đó t l ớc của
s. Đặc biệt
()

nt .
Ví dụ: Cho n = 21, khi đó

{}
20,19,17,16,13,11,10,8,5,4,2,1Z
*
21
=

Chú ý rằng
()
(
)
(
)
*
21
Z123721 ===
. Cấp của các
phần tử trong
*
21
Z
đợc nêu trong bảng sau:
Bảng 13: Cấp của các phần tử trong
*
21
Z

*

21
Za

1 2 4 5 8 10 11 13 16 17 19 20
Ord(a) 1 6 3 6 2 6 6 2 3 6 6 2
Giáo trình Mật mã học


20
1.3.17. Định nghĩa 1.17
Cho
*
n
Z
. 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
*
n
Z
. Nếu
*

n
Z
có một phần tử
sinh thì
*
n
Z
đợc gọi l cyclic.
1.3.18. Các tính chất của các phần tử sinh của
*
n
Z

(1)
*
n
Z
có phần tử sinh nếu v chỉ nếu
k
p,4,2n =
hoặc l
k
p2
, trong đó p l một số nguyên tố lẻ v
1k
. Đặc biệt, nếu p l
một số nguyên tố thì
*
n
Z

có phần tử sinh.
(2) Nếu

l một phần tử sinh của
*
n
Z
thì:

(
)
}1ni0nmod{Z
i*
n
=

(3) Giả sử rằng l một phần tử sinh của
*
n
Z
, khi đó
nmodb
i
=
cũng l một phần tử sinh của
*
n
Z
nếu v chỉ nếu
()()

1n,i =
. Từ đó ta rút ra rằng nếu
*
n
Z
l cyclic thì số các phần
tử sinh l
()
(
)
n
.
(4)
*
n
Z
l một phần tử sinh của
*
n
Z
nếu v chỉ nếu
()
()
nmod1
p/n


đối với mỗi nguyên tố p của
(
)

n

.

Ví dụ:
*
21
Z
không l cyclic vì nó không chứa một phần tử có
cấp
()
1221 =
(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
=

.
Chơng 1: Bổ túc về lý thuyết số


21
1.3.19. Định nghĩa 1.18
Cho
*
n
Za , 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
*
n
Zx
sao cho
()
nmodax
2
. 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 Q
n
, còn tập tất cả các thặng d không bậc hai
đợc ký hiệu l
n
Q
. Cần chú ý rằng theo định nghĩa
*
n
Z0
. Bởi
vậy
n
Q0 v
n
Q0 .
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 đó
*
p
Za l một thặng d bậc hai modulo p nếu v chỉ
nếu
pmoda
i
=
, trong đó i l một số nguyên chẵn. Từ đó rút ra
rằng
(
)
2
1p
Q
p

=
v
(
)
2
1p
Q
p

=
, 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
*
13
Z
. Các lũy thừa của

đợc liệt kê ở bảng sau:
i 0 1 2 3 4 5 6 7 8 9 10 11

i
mod 13
1 6 10 8 9 2 12 7 3 5 4 11
Bởi vậy }11,8,7,6,5,2{Q},12,10,9,4,3,1{Q
13
13
== .
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 đó
*
n
Za l một thặng d bậc hai modulo n nếu v chỉ
nếu
p
Qa v
p
Qa . Điều đó dẫn tới

(
)( )
4
1q1p
Q.QQ
pqn

==

Giáo trình Mật mã học


22

()()
4
1q1p3
Q
n

=

Ví dụ: Cho n = 21. Khi đó

}16,4,1{Q
21
=
}20,19,17,13,11,10,8,5,2{Q
21
=


1.3.22. Định nghĩa 1.19
Cho
n
Qa

. Nếu
*
n
Zx thỏa mãn
(
)
nmodax
2
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
n
Qa

thì a đợc gọi l
căn bậc hai theo modulo p.
(2) Tổng quát hơn, cho
k21
e
k
e
2

e
1
pppn K= , trong đó p
i
l các số
nguyên tố lẻ phân biệt v
1e
i
. Nếu
n
Qa

thì có đúng 2
k
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.
1.4. Các thuật toán trong Z
n

Cho n l một số nguyên dơng. Các phần tử của Z
n
sẽ đợc
biểu thị bởi các số nguyên
{
}
1n ,,2,1,0Q
21


=
.
Ta thấy rằng, nếu
n
Zb,a

thì

()



++
<++
=+
nbarba
nbaba
nmodba

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 di. 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
Chơng 1: Bổ túc về lý thuyết số


23
phần d của kết quả sau khi chia cho n. Các phần tử nghịch đảo
trong Z
n
có thể đợc tính bằng cách dùng thuật toán Euclide mở

rộng đợc mô tả dới đây:
1.4.1. Thuật toán (Tính các nghịch đảo trong Z
n
)
Vo :
n
Za .
Ra : nmoda
1
(nếu tồn tại).
(1) Dùng thuật toán Euclide mở rộng để tìm các số nguyên x
v y sao cho ax + ny = d trong đó d = (a,n).
(2) Nếu d > 1 thì a

1
mod n không tồn tại. Ngợc lại return (x).
Phép lũy thừa theo modulo có thể đợc thực hiện có hiệu quả
bằng thuật toán nhân v bình phơng có lặp. Đây l một thuật
toán rất quan trọng trong nhiều thủ tục mật mã. Cho biểu diễn
nhị phân của k l:

=
t
0i
i
i
2k trong đó mỗi
{
}
1,0k

i

khi đó
(
)
(
)
(
)
t
t
1
1
0
0
i
k
2
k
2
k
2
t
0i
i
k
k
aaa2aa K==

=


1.4.2.
Thuật toán nhân v bình phơng có lặp để lấy luỹ
thừa trong Z
n

Vo:
n
Za v số nguyên
(
)
nk0,k
<

có biểu diễn nhị phân:

=
=
t
0i
i
i
2kk
Ra: a
k
mod n.
(1) Đặt
1b . Nếu k = 0 thì return (b).
(2) Đặt
a

A
.
Giáo trình Mật mã học


24
(3) Nếu k
0
= 1 thì đặt
ab

.
(4) For i from 1 to t do
(4.1) Đặt nmodAA
2

(4.2) Nếu
1k
i
= thì đặt
nmodb.
A
b


(5) Return (b).
Ví dụ: Bảng 1.4 sau chỉ ra các bớc tính toán

10131234mod5
596

=
Bảng 1.4: Tính 5
596
mod 1234
i 0 1 2 3 4 5 6 7 8 9
k
i
0 0 1 0 1 0 1 0 0 1
A 5 25 625 681 1011 369 421 779 947 925
b 1 1 625 625 67 67 1059 1059 1059 1013
Số các phép toán bit đối với phép toán cơ bản trong Z
n
đợc
tóm lợc trong bảng 1.5.
Bảng 1.5: Độ phức tạp bit của các phép toán cơ bản trong Z
n

Phép toán Độ phức tạp bit
Cộng modulo a + b 0(lgn)
Trừ modulo a - b 0(lgn)
Nhân modulo a.b 0((lgn)
2
)
Nghịch đảo modulo a
-1
mod n 0((lgn)
2
)
Lũy thừa modulo a
k

mod n, k < n 0((lgn)
3
)
1.5. các ký hiệu legendre v jacobi
Ký hiệu Legendre l một công cụ hữu ích để xem xét liệu một
số nguyên a có l một thặng d bậc hai theo modulo của một số
nguyên tố p hay không?
Chơng 1: Bổ túc về lý thuyết số


25
1.5.1. Định nghĩa 1.20
Cho p l một số nguyên tố lẻ v a l một số nguyên. Ký hiệu
legendre








p
a
đợc xác định nh sau:









=






p
p
Qa1
Qa1
ap0
p
a

1.5.2. Các tính chất của ký hiệu Legendre
Cho p l một số nguyên tố lẻ v Zb,a

. Khi đó ký hiệu
Legendre có các tính chất sau:
(1)
()
()
pmoda
p
a
2/1p










. Đặc biệt
1
p
1
=








v
()
()
2/1p
1
p
1


=










Bởi vậy
p
Q1

nếu
(
)
4mod1p v
p
Q1 nếu
(
)
4mod3p


(2)


























p
b
.
p
a
p
b.a
. Bởi vậy nếu

*
p
Za thì
1
p
a
2
=








.
(3) Nếu
()
pmodba thì








=









p
b
p
a
.
(4)
()
()
8/1p
2
1
p
2

=









. Bởi vậy 1
p
2
=








nếu 1p

hoặc 7(mod 8)
v
1
p
2
=








nếu 3p hoặc 5(mod 8).
(5) Luật thuận nghịch bậc 2:

Giả sử p l một số nguyên tố lẻ khác với q, khi đó:
()
()()
4/1q1p
1
p
q
q
p










=









Giáo trình Mật mã học



26
Nói một cách khác








=








p
q
q
p
trừ phi cả p v q l đồng d với
3(mod 4), trong trờng hợp ny









=








p
q
q
p
.
Dấu hiệu Jacobi l tổng quát hoá của ký hiệu Legendre đối
với các số nguyên lẻ n không nhất thiết l một số nguyên tố.
1.5.3. Định nghĩa 1.21
Cho 3n l các số nguyên tố lẻ có phân tích:
.pp.pn
k21
e
k
e
2
e

1
K= Khi đó ký hiệu Jacobi






n
a
đợc định nghĩa
l:
k21
e
k
e
2
e
1
p
a
p
a
p
a
n
a

























=






K
Ta thấy rằng nếu n l một số nguyên tố thì ký hiệu Jacobi

chính l ký hiệu Legendre.
1.5.4. Các tính chất của ký hiệu Jacobi
Cho 3n l các số nguyên tố lẻ Zb,a

. Khi đó ký hiệu
Jacobi có các tính chất sau:
(1)
1,0
n
a
=






hoặc -1. Hơn nữa 0
n
a
=






nếu v chỉ nếu
ƯCLN(a,n) 1.
(2)




















n
b
.
n
a
n
b.a
. Bởi vậy
*
n
Za thì

1
n
a
2
=








.
(3)






















n
a
.
m
a
n.m
a
.
Chơng 1: Bổ túc về lý thuyết số


27
(4) Nếu a b(mod n) thì






=







n
b
n
a
.
(5)
1
n
1
=






.
(6)
()
()
2/1n
1
n
1

=








. Bởi vậy
1
n
1
=







nếu
(
)
4mod1n



1
n
1
=








nếu
(
)
4mod3n


(7)
()
()
8/1n
2
1
n
2

=






. Bởi vậy
1
n

2
=






nếu
1n

hoặc
()
8mod7

1
n
2
=






nếu 3n

hoặc
()
8mod5

(8)
()
()()
4/1n1m
1
m
n
n
m








=







Nói một cách khác







=






m
n
n
m
trừ phi cả hai số m v n đều
đồng d với
()
4mod3 , trong trờng hợp ny






=







m
n
n
m
.
Từ các tính chất của ký hiệu Jacobi ta thấy rằng n lẻ v a =
2
e
a
1
trong đó a
1
l một số lẻ thì:
()
()()
4/1n1a
1
1
e
1
e
1
1
a
amodn
n
2
n
a
n

2
n
a
















=















=







Từ công thức ny ta có thể xây dựng thuật toán đệ quy sau
để tính






n
a
m không cần phải phân tích n ra các thừa số nguyên tố.
Giáo trình Mật mã học


28
1.5.5. Thuật toán tính toán ký hiệu Jacobi (v ký hiệu
Legendre)
Jacobi (a, n)

Vo : Số nguyên lẻ 3n , số nguyên
(
)
na0,a



Ra : Ký hiệu Jacobi






n
a
(Sẽ l ký hiệu Legendre khi n l số
nguyên tố)
(1) Nếu a = 0 thì return (0)
(2) Nếu a = 1 thì return (1)
(3) Viết a = 2
e
a
1
, trong đó a
1
l một số lẻ
(4) Nếu e chẵn thì đặt
1s


. Ngợc lại hãy đặt 1s nếu
n = 1 hoặc 7(mod 8)
(5) Nếu
()
4mod3n v
(
)
4mod3a
1

thì đặt ss



(6) Đặt
11
amodnr
(7) Return
(
)()
11
a,nJACOBI.s
Thuật toán trên có thời gian chạy chừng
(
)
)nlg(0
2
các phép
toán bit.
1.5.6. Nhận xét (tìm các thặng d bậc hai theo modulo của

số nguyên tố p)
Cho p l một số nguyên tố lẻ. Mặc dù đã biết rằng một nửa
các phần tử trong
*
p
Z
l các thặng d không bậc hai theo modulo
p nhng không có một thuật toán xác định theo thời gian đa thức
no đợc biết để tìm.
Một thuật toán ngẫu nhiên tìm một thặng d không bậc hai
l chọn ngẫu nhiên các số nguyên
*
p
Za cho tới khi số đó thỏa
Chơng 1: Bổ túc về lý thuyết số


29
mãn 1
p
a
=









. Phép lặp đối với số đợc chọn trớc khi tìm đợc
một thặng d bậc hai l 2 v bởi vậy thuật toán đợc thực hiện
theo thời gian đa thức.
1.5.7. Ví dụ tính toán ký hiệu Jacobi
Cho a = 158 v n = 235. Thuật toán trên tính






235
158
nh sau:
() ()
()
1
77
2
1
79
77
79
77
1
79
235
1
235
79

235
2
235
158
4/78.76
4/234.78
=






=






=






=







=












=







Khác với ký hiệu Legendre, ký hiệu Jacobi







n
a
không cho
biết liệu a có phải l một thặng d bậc 2 theo modulo n hay không.
Sự thực l nếu
n
Qa thì 1
n
a
=






. Tuy nhiên 1
n
a
=






thì không có
nghĩa l

.Qa
n

1.5.8. Ví dụ (Các thặng d bậc 2 v không bậc 2)
Bảng 1.6: Các ký hiệu Jacobi của các phần tử trong
*
21
Z

*
21
Za

1 2 4 5 8 10 11 13 16 17 19 20
a
2
mod n 1 4 16 4 1 16 16 1 4 16 4 1






3
a

1
1
1
1 1

1
1
1 1
1
1
1






7
a

1 1 1
1
1
1
1
1
1
1 1 1






21

a

1
1
1 1
1 1 1 1
1 1
1 1

×