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 (369.7 KB, 20 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
<i>Trong s phỏt trin của xã hội lồi ng−ời, kể từ khi có sự trao </i>
<i>đổi thơng tin, an tồn thơng tin trở thành một nhu cầu gắn liền với nó </i>
<i>nh− hình với bóng. Từ thủa sơ khai, an tồn thơng tin đ−ợc hiểu đơn </i>
<i>giản là giữ đ−ợc bí mật và điều này đ−ợc xem nh− một nghệ thuật chứ </i>
<i>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ỹ </i>
<i>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 </i>
<i>tồn thơng tin, ngày nay các kỹ thuật chính trong an tồn thơng tin bao </i>
<i>gồm: Kỹ thuật mật mã (Cryptography), Kỹ thuật nguỵ trang </i>
<i>(Steganography), Kỹ thuật tạo bóng mờ (Watermarking - hay xăm điện </i>
<i>tử). Kỹ thuật mật mã nhằm đảm bảo ba dịch vụ an tồn cơ bản:Bí mật </i>
<i>(Confidential), Xác thực (Authentication), Đảm bảo tính tồn vẹn </i>
<i>(Integrity). Có thể thấy rằng mật mã học là một lĩnh vực khoa học rộng </i>
<i>lớn có liên quan rất nhiều đến tốn học nh−: Đại số tuyến tính, Lý </i>
<i>thuyết thơng tin, Lý thuyết độ phức tạp tính tốn…. </i>
<i>Hy vọng cuốn sách sẽ là tài liệu tham khảo hữu ích cho giảng </i>
<i>viên, sinh viên các tr−ờng đại học về kỹ thuật và công nghệ. </i>
<i>Xin trân trọng gii thiu cựng bn c. </i>
<i>Hà Nội, ngày 23 tháng 10 năm 2003 </i>
<b>DES </b> Data Encryption Standard Chn m· d÷ liƯu
<b>LAN </b> Local Area Network M¹ng cơc bé
<b>MDV </b> MÃ dịch vòng
<b>MTT </b> MÃ thay thế
<b>MHV </b> MÃ hoán vị
<b>ECB </b> Electronic Code Book Chế độ quyển mã điện tử
<b>CFB </b> Cripher Feedback Chế độ phản hồi mã
<b>CBC </b> Cripher Block Chaining Chế độ liên kết khối mã
<b>RSA </b> Rivest - Shamir - Adleman
<b>MAC </b> Message Authentication Code Mã xác thực thông báo
<b>OWHF </b> Oneway Hash Funtion Hàm băm một chiều
<b>CRHF </b> Collision Resistant hash function Hàm băm khó va chạm
<b>MDC </b> Manipulation Detection Code Mã phát hiện sự sửa đổi
<b>LSB </b> Least Signification Bit Bit thấp nhất (có giá trị nhỏ
nhÊt
<b>Header </b> Tiêu đề
<b>IDEA </b> International Data Encryption
Algorithm
Thuật toán mà hóa dữ liÖu
quèc tÕ
<b>PGP </b> Pretty Good Privacy ThuËt to¸n m· hãa PGP
<b>SET </b> Secure Electronic Transaction Giao dịch điện tử an toàn
<b>LFSR </b> Linear Feedback Sequence
Register
Thanh ghi håi tiÕp tuyÕn tÝnh
<b>Firewall </b> Bøc t−êng lưa
<b>Server </b> M¸y chđ
<b>1.1. Số nguyên </b>
Tập các số nguyên
<b>1.1.1. §Þnh nghÜa 1.1 </b>
Cho a,b∈Ζ
a lμ−íc cđa b nÕu ∃c∈Z:b=a.c. Ký hiƯu lμ ab.
<b>1.1.2. C¸c tÝnh chÊt chia hÕt </b>
Ζ
∈
∀a,b,c ta cã:
(i)aa.
(ii) NÕu abvμ cb th× ac.
(iii) NÕu ba vμ ca th× a
<b>1.1.3. Định nghĩa 1.2 (Thuật tốn chia đối với các số nguyên) </b>
NÕu a vμ b lμ c¸c sè nguyên với b1
thì a=qb+r; 0r<b
PhÇ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
Ta có .
b
a
b
a
b
mod
a
,
b
a
b
div
a
=
<i>Ví dô: </i>a = 73, b = 17.
73 div 17 = 4, 73 mod 17 = 5.
<b>1.1.4. Định nghĩa 1.3 (Ước chung) </b>
c lớc chung của a v b nếu ca&cb.
<b>1.1.5. Định nghĩa 1.4 (Ước chung lớn nhất (ƯCLN)) </b>
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.
<i>VÝ dơ: C¸c </i>−íc chung cđa 12 vμ 18 lμ
<b>1.1.6. Định nghĩa 1.5 (Bội chung nhỏ nhất (BCNN)) </b>
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.
<i>Chơng 1: Bỉ tóc vỊ lý thut sè</i> 11
<b>1.1.7. TÝnh chÊt </b>
<i>VÝ dô: </i>
6
18
.
18
,
12 = = =
<b>1.1.8. Định nghĩa 1.6 </b>
Hai số nguyên dơng a v b đợc gọi l nguyên tố cùng nhau
nếu: (a,b) = 1.
<b>1.1.9. Định nghĩa 1.7 </b>
Số nguyênp2đợ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ố.
<b>1.1.10. Định lý cơ bản của số học </b>
Với mỗi số nguyên n2 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
1 e
k
e
2
e
1 p p
p
n= <sub>K</sub>
Trong đó p<sub>i</sub> lμ các số nguyên tố khác nhau vμ e<sub>i</sub> lμ các số
nguyên d−ơng. Hơn nữa phân tích trờn l duy nht.
<b>1.1.11. Định nghĩa 1.8 </b>
Vi n ≥2, hμm Φ
<b>1.1.12. C¸c tÝnh chÊt cđa hμm </b>Φ<b>(n) </b>
(iii) NÕu 1 2 ek
k
e
2
e
1 p p
p
n= <sub>K</sub> lμ ph©n tÝch ra thõa sè nguyªn tè
cđa n th×:
n <sub>K</sub> .
<b>1.1.13. Định lý 1.1 </b>
Với n5 thì
<b>1.2. c¸c thuËt to¸n trong z </b>
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ú phc
tp nh hn.
<i>Bảng 1.1: Độ phức tạp bit của các phép toán cơ bản trong Z </i>
<b>Phép toán </b> <b>Độ phức tạp bit </b>
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<sub>) </sub>
Chia a = qb + r 0((lga).(lgb)) = 0((lgn)2<sub>)</sub>
ƯCLN của 2 số nguyên a vμ b có thể c tớnh theo nh lý sau:
<b>1.2.1. Định lý 1.2 </b>
NÕu 1 2 k 1 2 fk
k
f
2
f
1
1 p p ,b p p ...p
p
a= <sub>K</sub> = trong đó e<sub>i</sub> ≥0,f<sub>i</sub> ≥0
thì
k
f
,
e
min
2
f
,
e
min
1 p p
p
b
,
a
CLN = <sub>K</sub>
<i>Ch−¬ng 1: Bỉ tóc vỊ lý thut sè</i> 13
vμ
k
f
,
e
max
2
f
,
e
max
1 p p
p
b
,
a
BCNN = <sub>K</sub> .
<i>Ví dụ: Cho a = 4864 = 28.19; b = 3458 = 2.7.13.19. Khi đó: </i>
<b>1.2.2. Định lý 1.3 </b>
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è.
<b>1.2.3. Thuật toán Euclide </b>
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 b≠0 do
r
b
,
b
a
,
b
mod
a
r← ← ←
(2) Return (a).
<b>1.2.4. Định lý 1.4 </b>
Thuật toán trên có thời gian chạy chừng 0(
<i>Ví dụ: Sau đây l</i> các bớc chia của thuật toán trên khi tính:
Thuật tố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ố
<b>1.2.5. ThuËt to¸n Euclide më rộng </b>
Vo : Hai số nguyên không âm a v b với ab
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 x<sub>2</sub> ←1, x<sub>1</sub> ←0, y<sub>2</sub> ←0, y<sub>1</sub>←1
(3) While b > 0 do
(3.1) q←
<b>1.2.6. Định lý 1.5 </b>
Thuật toán trên có thời gian chạy cỡ 0((lgn)2<sub>) các phép toán bit.</sub>
<i>Ví dụ: Bảng 1.2 sau chỉ ra các b</i>ớc của thuật toán trên với
các giá trị vo a = 4864 v b = 3458
<i>Bảng 1.2: Thuật toán Euclide mở rộng </i>
<b>Q r x y </b> <b>a </b> <b>b </b> <b>x2 </b> <b>x1 </b> <b>y2 </b> <b>y1 </b>
<i>Ch−¬ng 1: Bổ túc về lý thuyết số</i> 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.
<b>1.3. Các số nguyên modulo n </b>
<b>1.3.1. Định nghÜa 1.9 </b>
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
Số nguyên n đ−ợc gọi lμ modulo đồng d−.
<i>Ví dụ: </i>24≡9mod5vì 24 – 9 = 3.5
1117mod7 vì 1117= 4.7.
<b>1.3.2. Các tính chất </b>
Đối víi a,a<sub>1</sub>,b,b<sub>1</sub>,c∈Ζ ta cã:
(1) a≡b
(2) Tính phản xạ: aa
(3) Tớnh i xng: Nu ab
(5) NÕu a≡a<sub>1</sub>
NÕu a = qn + r víi 0≤r≤n th× a≡r
Bởi vậy mỗi số ngun 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 ny.
<b>1.3.3. Định nghĩa 1.10 </b>
Các số nguyên modulo n (ký hiệu Z<sub>n</sub>) l tập (các lớp tơng
đơng) của các số nguyên
<i>VÝ dơ: </i> Z<sub>25</sub> =
<b>1.3.4. Định nghĩa 1.11 (Phần tử nghịch đảo) </b>
Cho a∈Z<sub>n</sub>, Phần tử nghịch đảo (ng−ợc theo phép nhân) của
a mod n lμ một số nguyênx∈Z<sub>n</sub>sao cho: ax≡1
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ý hiu l a1<sub>. </sub>
<b>1.3.5. Định nghĩa 1.12 </b>
Phộp chia của a cho bmodnlμ tích của a vμ b−1<sub> mod n tích </sub>
<b>1.3.6. Định lý 1.6 </b>
<i>Ch−¬ng 1: Bỉ tóc vỊ lý thut sè</i> 17
<b>1.3.7. §Þnh lý 1.7 </b>
Cho d = (a,n). Ph−ơng trình đồng d− ax≡b
<b>1.3.8. Định lý 1.8 (PhÇn d− China) </b>
Nếu các số nguyên n<sub>1</sub>,n<sub>2</sub>,<sub>K</sub>,n<sub>k</sub> lμ ngun 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
<b>1.3.9. ThuËt to¸n Gausse </b>
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 đó: N<sub>i</sub> =n/n<sub>i</sub>vμ M<sub>i</sub> = N<sub>i</sub>1mod n<sub>i</sub>
Các tính toán ny có thể đợc thực hiện trong 0(
<b>1.3.10. Định lý 1.9 </b>
Nu
cã mét nghiÖm duy nhất x a
<b>1.3.11. Định nghĩa 1.13 </b>
Nhóm nh©n cđa Z l<sub>n</sub> μ Z<sub>n</sub>* =
Đặc biệt, nếu n l số nguyên tố thì Z<sub>n</sub>* =
<b>1.3.12. Định nghĩa 1.14 </b>
Cấp của Z l*<sub>n</sub> số các phần tử trong Z (ký hiÖu *<sub>n</sub> Z ) *n
Theo định nghĩa của hμm Phi-Euler ta thấy:
Z*<sub>n</sub> =Φ
Cần để ý rằng nếu a∈Z<sub>n</sub>* vμ b∈Z<sub>n</sub>* thì a,b∈Z*<sub>n</sub> vμ bởi vậy
*
n
Z lμ đóng đối với phộp nhõn.
<b>1.3.13. Định lý 1.10 </b>
Cho p l một số nguyên tố:
(1) Định lý Euler: Nếu aZ<sub>n</sub>* thì aΦ( )n ≡1
(2) NÕu n lμ tÝch cña các số nguyên khác nhau v nếu
<i>Ch−¬ng 1: Bỉ tóc vỊ lý thut số</i> 19
<b>1.3.14. Định lý 1.11 </b>
Cho p l một số nguyên tố:
(1) Định lý Ferma: Nếu
(2) Nếur ≡s
(3) Đặc biệt ap ≡ a
<b>1.3.15. §Þnh nghÜa 1.15 </b>
Cho a∈Z*<sub>n</sub>. CÊp cđa a (ký hiƯu l ord
<b>1.3.16. Định nghĩa 1.16 </b>
Cho a∈Z*<sub>n</sub>,ord
<i>Ví dụ: Cho n = 21, khi đó </i>
Z<sub>21</sub>* =
Chó ý r»ng Φ
<i>Bảng 13: Cấp của các phần tử trong </i>Z*<sub>21</sub>
*
21
Z
a∈ 1 2 4 5 8 10 11 13 16 17 19 20
<b>1.3.17. §Þnh nghÜa 1.17 </b>
Cho α∈Z<sub>n</sub>* . NÕu cÊp cđa
l<b>1.3.18. Các tính chất của các phần tử sinh của </b>
(1)
k
p
2 , trong đó p lμ một số ngun tố lẻ vμ k≥1. Đặc biệt, nếu p lμ
mét sè nguyên tố thì
(3) Giả sử rằng α lμ một phần tử sinh của
mod
b = αi cịng lμ mét phÇn tư sinh cña
(4)
( )n /p <sub>≠</sub><sub>1</sub>
αΦ đối với mỗi nguyên tố p của Φ
<i>Ví dụ: </i>
*
25
<i>Ch−¬ng 1: Bỉ tóc vỊ lý thut số</i> 21
<b>1.3.19. Định nghĩa 1.18 </b>
Cho aZ*<sub>n</sub>, 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*<sub>n</sub> sao cho
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μ Q<sub>n</sub>, 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 ngha <sub>n</sub> 0Z*<sub>n</sub>. Bi
vy 0Q<sub>n</sub>v 0Q<sub>n</sub> .
<b>1.3.20. Định lý 1.12 </b>
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*<sub>p</sub> 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
Q<sub>p</sub> = − vμ
1
p
Q<sub>p</sub> = − , 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.
<i>Ví dụ: </i>=6 l một phần tử sinh của
i 0 1 2 3 4 5 6 7 8 9 10 11
αi<sub> mod 13</sub> <sub>1 6 10</sub> <sub>8 9 2 12</sub> <sub>7 3 5 4 11 </sub>
Bëi vậy Q<sub>13</sub> ={1,3,4,9,10,12}, Q<sub>13</sub> ={2,5,6,7,8,11}.
<b>1.3.21. Định lý 1.13 </b>
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*<sub>n</sub> lμ một thặng d− bậc hai modulo n nếu vμ chỉ
4
1
q
1
p
Q
.
Q
vµ
Q<sub>n</sub> = − −
<i>Ví dụ: Cho n = 21. Khi đó </i>
Q<sub>21</sub> ={1,4,16} Q<sub>21</sub> ={2,5,8,10,11,13,17,19,20}
<b>1.3.22. Định nghĩa 1.19 </b>
Cho aQ<sub>n</sub>. Nếu xZ*<sub>n</sub>thỏa mÃnx2 a
<b>1.3.23. Định lý 1.14 (Số các căn bậc hai) </b>
(1) Nếu p l một số nguyên tố lẻ v aQ<sub>n</sub>thì a đợc gọi l
căn bậc hai theo modulo p.
(2) Tổng quát hơn, cho 1 2 ek
k
e
2
e
1 p p
p
n= <sub>K</sub> , trong đó p<sub>i</sub> lμ các số
nguyên tố lẻ phân biệt vμ e<sub>i</sub> ≥1. Nếu a∈Q<sub>n</sub>thì có đúng 2k<sub> căn bậc </sub>
hai khác nhau theo modulo n.
<i>Ví dụ: Các căn bậc 2 của 12 mod 37 l</i> 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.
<b>1.4. C¸c thuËt to¸n trong Zn</b>
Cho n l một số nguyên dơng. Các phần tử của Z<sub>n</sub> sẽ đợc
biểu thị bởi các số nguyên Q<sub>21</sub> =
Ta thÊy r»ng, nÕu a,b∈Z<sub>n</sub>th×
<i>Ch−ơng 1: Bổ túc về lý thuyết số</i> 23
phần d− của kết quả sau khi chia cho n. Các phần tử nghịch đảo
trong Zn có thể đ−ợc tính bằng cách dùng thuật tốn Euclide mở
rộng đ−ợc mơ tả d−ới đây:
<b>1.4.1. Thuật tốn (Tính các nghịch đảo trong Z<sub>n</sub>) </b>
Vμo : a∈Z<sub>n</sub>.
Ra : a−1modn(nÕu tån t¹i).
(1) Dùng thuật tố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ì a1<sub> mod n không tồn tại. Ng</sub><sub></sub><sub>ợc lại return (x). </sub>
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
0
i
i
k trong ú mi k<sub>i</sub>∈
i
k
2
k
2
k
2
t
0
i
i
k
k <sub>a</sub> <sub>2</sub> <sub>a</sub> <sub>a</sub> <sub>a</sub>
a =
=
<b>1.4.2. Thuật tốn nhân vμ bình ph−ơng có lặp để lấy luỹ </b>
<b> thừa trong Zn</b>
Vμo: a∈Z<sub>n</sub>vμ sè nguyªn k,
=
= t
0
i
i
i2
k
k
Ra: ak<sub> mod n. </sub>
(3) Nếu k<sub>0</sub> = 1 thì đặt b←a.
(4) For i from 1 to t do
(4.1) §Ỉt A←A2modn
(4.2) Nếu k<sub>i</sub> =1 thì đặt b←A.bmodn
(5) Return (b).
<i>Ví dụ: Bảng 1.4 sau chỉ ra các b</i>ớc tính to¸n
5596mod1234 =1013
<i>B¶ng 1.4: TÝnh 5596<sub> mod 1234</sub></i>
<b>i 0 1 2 3 4 5 6 </b> <b>7 8 </b> <b>9 </b>
ki 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<sub>n</sub> đ−ợc
tóm l−ợc trong bảng 1.5.
<i>Bảng 1.5: Độ phức tạp bit của các phép toán cơ bản trong Z<sub>n</sub></i>
<b>Phép toán </b> <b>Độ phức tạp bit </b>
Céng modulo a + b 0(lgn)
Trõ modulo a - b 0(lgn)
Nh©n modulo a.b 0((lgn)2<sub>) </sub>
Nghịch đảo modulo a-1<sub> mod n </sub> <sub>0((lgn)</sub>2<sub>) </sub>
Lòy thõa modulo ak<sub> mod n, k < n </sub> <sub>0((lgn)</sub>3<sub>) </sub>
<b>1.5. c¸c ký hiƯu legendre vμ jacobi </b>