You are on page 1of 35

2021/5/16

MỤC TIÊU

Trang bị kiến thức về một số thuật toán để thực hiện các tính toán hiệu quả
ứng dụng trong an toàn thông tin, đặc biệt là trong mật mã khóa công khai và
trong phát hiện tấn công, mã độc.

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 1 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 2

GIỚI THIỆU HỌC PHẦN GIỚI THIỆU HỌC PHẦN

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 3 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 4

16 May 2021 | Page 5 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 6

1
2021/5/16

BÀI 01 - MỤC TIÊU BÀI 01 - MỤC TIÊU


 VD: Thời gian cần thiết để phân tích số nguyên n ra thừa số
nguyên tố bằng thuật toán nhanh nhất hiện nay:
Số chữ số thập phân Số phép tính bít Thời gian
50 1,4. 1010 3,9 giờ
75 9. 1012 104 ngày

100 2,3. 1015 74 năm

200 1,2. 1023 3,8.109 năm

300 1,5. 1029 4,9.1015 năm

500 1,3. 1039 4,2.1025năm

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 7 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 8

TÍNH TOÁN TRÊN SỐ NGUYÊN LỚN TRONG TRƯỜNG FP


• Trường là một tập hợp với 2 phép toán (+, .) thỏa
mãn các tính chất số học thông thường:
• (F, +) là nhóm Abel với phép cộng
• (F\0, .) là nhóm abel với phép nhân
• Tính phân phối: (a+b).c = a.c + b.c a, b, c  F
• Trường hữu hạn (còn gọi là trường Galois) là những
trường có hữu hạn số phần tử, số này gọi là bậc của
trường đó.

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 9 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 10

•…  Số lượng phần tử của một trường hữu hạn được gọi là cấp hoặc
• Các phép toán trên trường hữu hạn: bậc của nó.
• Có thể nói là có các phép toán cộng, trừ, nhân, chia số
khác 0  Trường hữu hạn F cấp q nếu và chỉ nếu q là lũy thừa nguyên tố p m
• Phép trừ được coi như là cộng với số đối của phép cộng (trong đó p là số nguyên tố, m là số nguyên dương). Nếu m = 1 thì
a – b = a + (-b)
F được gọi là trường nguyên tố, nếu m  2 F được gọi là trường
• Phép chia là nhân với số đối của phép nhân
a/ b = a.b-1 mở rộng.

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 11 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 12

2
2021/5/16

 Trường nguyên tố Fp = {0, 1, …, p – 1} với các phép toán (+, .) thực


 Trường nhị phân 𝐹2𝑚 = ൛𝑎𝑚−1 𝑧 𝑚−1 + 𝑎𝑚−2 𝑧 𝑚−2 + ⋯ +
hiện theo modulo p.
 Ví dụ:
■ F29 = {0, 1, 2, …, 28}
● Phép toán cộng: 17 + 20 = 8 vì 37 mod 29 = 8

● Phép trừ: 17 – 20 = 26 vì – 3 mod 29 = 26

● Phép nhân: 17.20 = 21 vì 340 mod 29 = 21

● Phép lấy nghịch đảo: 17-1 = 12 vì 17.12 mod 29 = 1.

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 13 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 14

 Ví dụ: 𝐹24 gồm 16 phần tử là các đa thức nhị phân có bậc cao  Ví dụ một số phép toán trong 𝐹24 với đa thức rút gọn f(z) = z4 + z + 1.

nhất là 3  Phép cộng: (z3 + z2 + 1) + (z2 + z + 1) = z3 + z

0 z2 z3 z3 + z2  Phép trừ: (z3 + z2 + 1) - (z2 + z + 1) = z3 + z. Lưu ý, vì – 1 = 1 trong F2 (ta


có – a = a với mọi a  𝐹2𝑚 ).
1 z2 + 1 z3 + 1 z3 + z2 + 1
 Phép nhân: (z3 + z2 + 1) . (z2 + z + 1) = ?
z z2 + z z3 + z z3 + z2 + z
vì (z3 + z2 + 1) . (z2 + z + 1) = z5 + z + 1 và z5 + z + 1 mod z4 + z + 1 = z2 + 1
z+1 z2 + z + 1 z3 + z + 1 z3 + z2 + z + 1
 Nghịch đảo: (z3 + z2 + 1)-1 = z2 vì (z3 + z2 + 1) . z2 mod z4 + z + 1 = 1

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 15 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 16

TÍNH TOÁN TRÊN SỐ NGUYÊN LỚN TRONG TRƯỜNG FP

 Nhóm nhân của trường hữu hạn:


 Các phần tử khác 0 của trường hữu hạn Fq, KH: 𝐹𝑞∗ là một nhóm cyclic
với phép nhân, do đó tồn tại một phần tử sinh b  𝐹𝑞∗ sao cho: 𝐹𝑞∗ = {bi
: 0  i  q – 2}

 Cấp của phần tử a  𝐹𝑞∗ là số nguyên dương nhỏ nhất t sao cho at = 1.
Vì 𝐹𝑞∗ là nhóm cyclic nên t là ước của q – 1.

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 17 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 18

3
2021/5/16

Phép tính cộng và trừ Phép tính cộng và trừ


 Các thuật toán cộng, trừ, nhân, chia, ..giới thiệu trong chương này phù  Ta có Fp = {0 … p – 1}.
hợp với triển khai phần mềm  Tính m = 𝑙𝑜𝑔2 𝑝 là độ dài bit của p và t = 𝑚/𝑊 là độ dài từ của p
 Ta giả thiết nền tảng triển khai có kiến trúc W – bit trong đó W là bội  Biểu diễn của phần tử a được lưu trữ trong một mảng A = (A[t – 1], …,
số của 8 (phổ biến là 64 – 32 bit), các hệ thống máy có công suất thấp A[2], A[1], A[0]) của t các từ W bit, trong đó bit ngoài cùng bên phải
có thể có W nhỏ hơn, VD: hệ thống nhúng W = 16 bit, thẻ thông minh của A[0] là bit có trọng số thấp nhất.
W = 8 bit. A[t – 1] … A[2] A[1] A[0]

 Các bit của một W-bit là từ U được đánh số từ phải qua trái bắt đầu từ  Biểu diễn a  Fp như một mảng A của các từ W-bit:
0 đến W -1.  𝑎 = 2(𝑡−1)𝑊 𝐴 𝑡 − 1 + … + 22𝑊 𝐴 2 + 2𝑊 𝐴 1 + A[0]
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 19 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 20

Phép tính cộng và trừ Phép tính cộng và trừ


 Ví dụ: cho W= 8, xét F2147483647 , hãy biểu diễn số a = 23456789 dưới
 Bài tập áp dụng:
dạng mảng
 Cho W= 8, xét F2147483647 , hãy biểu diễn a dưới dạng mảng
 Ta có m = 𝑙𝑜𝑔2 𝑝 = 𝑙𝑜𝑔2 2147483647 = 31, t = 31/8 = 4
■ a= 765432 (0, 11, 173, 248)
 Biểu diễn a dưới dạng mảng (A[3], A[2], A[1], A[0]):
(𝑡−1)𝑊 2𝑊 𝑊
 𝑎= 2 𝐴 𝑡 −1 + …+2 𝐴 2 + 2 𝐴 1 + A[0] ■ a= 123456 (0, 1, 226, 64 )

= 2 4−1 .8 𝐴 4 − 1 + 22.8 𝐴 2 + 2𝑊 𝐴 1 + A[0]

= 224 𝐴 3 + 216 𝐴 2 + 28 𝐴 1 + A[0] Vậy a được biểu diễn qua


mảng A: (1, 101, 236, 21)
= 224 . 1 + 216 . 101 + 28 . 236+ 21
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 21 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 22

Phép tính cộng và trừ Phép tính cộng và trừ


 Thuật toán cộng và trừ trên trường hữu hạn được đưa ra dưới dạng  Thuật toán cộng chính xác bội:
các thuật toán tương ứng cho các số nguyên w. Phép gán dạng “(ε, z) Algorithm 1. Multiprecision addition

← w” được định nghĩa như sau: Input: số nguyên a, b  [0, 2𝑊𝑡 )


Output: (, c) với c = a + b mod 2𝑊𝑡 và  là bit nhớ
 z ← w mod 2W và 1. (, C[0])  A[0] + B[0]

 ε ← 0 nếu w  [0, 2W), ngược lại ε ← 1 2. For i from 1 to t – 1 do

2.1 (, C[i])  A[i] + B[i] + 


 Nếu w = x + y + ε’ với x, y  [0, 2W) và ε’  {0, 1} , thì w = ε 2W + z và ε được
3. Return (, c)
gọi là “bit nhớ” (carry bit) cho phép cộng mỗi một từ đơn (ε = 1 nếu và chỉ
nếu z < x + ε’ )
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 23 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 24

4
2021/5/16

Phép tính cộng và trừ Phép tính cộng và trừ


 Ví dụ mình họa thuật toán cộng chính xác bội:  (, C[0])  A[0] + B[0] = 248 + 64 = 312 mod 28 = 56 ( gán  = 1)
Cho a = (0, 11, 173, 248); b = (0, 1, 226, 64), với w = 8, t = 4.

 i = 1: (, C[1])  A[1] + B[1] +  = 173 + 226 + 1 mod 28 = 400
Áp dụng thuật toán 1 tìm c = a + b mod 2𝑊𝑡
mod 28 = 144 (gán  = 1)

 i = 2: (, C[2])  A[2] + B[2] +  = 11 + 1 + 1 mod 28 = 13 (gán  =


0)
 i = 3: (, C[3])  A[3] + B[3] +  = 0 + 0 + 0 mod 28 = 0 (gán  = 0)
 Return (0, (0, 13, 144, 56))
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 25 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 26

Phép tính cộng và trừ Phép tính cộng và trừ


 Bài tập:  Thuật toán trừ chính xác bội:
𝑊𝑡 Algorithm 2. Multiprecision subtraction
 Cho W = 8, t = 4. Áp dụng thuật toán 1 tính c = a + b mod 2 với a =
Input: số nguyên a, b  [0, 2𝑊𝑡 )
(57, 169, 36, 27); b = (0, 98, 34, 62) Output: (, c) với c = a – b mod 2𝑊𝑡 và  là bit mượn
1. (, C[0])  A[0] – B[0]
2. For i from 1 to t – 1 do

2.1 (, C[i])  A[i] – B[i] – 


3. Return (, c)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 27 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 28

Phép tính cộng và trừ Phép tính cộng và trừ


 Ví dụ mình họa thuật toán cộng chính xác bội:  (, C[0])  A[0] - B[0] = 248 - 64 = 184 mod 28 ( gán  = 0)
Cho a = (0, 11, 173, 248); b = (0, 1, 226, 64), với w = 8, t = 4.

 i = 1: (, C[1])  A[1] - B[1] –  = 173 - 226 - 0 mod 28 = -53 mod
Áp dụng thuật toán 1 tìm c = a - b mod 2𝑊𝑡
28 = 203 (gán  = 1)

 i = 2: (, C[2])  A[2] - B[2] –  = 11 - 1 - 1 mod 28 = 9 (gán  = 0)


 i = 3: (, C[3])  A[3] + B[3] –  = 0 - 0 - 0 mod 28 = 0 (gán  = 0)
 Return (0, (0, 9, 203, 184))

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 29 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 30

5
2021/5/16

Phép tính cộng và trừ Phép tính cộng và trừ


 Bài tập:  Thuật toán cộng trên Fp:
𝑊𝑡 Algorithm 3. Addition in Fp
 Cho W = 8, t = 4. Áp dụng thuật toán 2 tính c = a - b mod 2 với a =
Input: số modulo p, số nguyên a, b  [0, 𝑝 − 1]
(57, 169, 36, 27); b = (0, 98, 34, 62) Output: c = a + b mod 𝑝
1. Dùng thuật toán Algorithm 1 để thu được (, c) với c = a + b mod
2𝑊𝑡 và  là bit nhớ.
2. Nếu  = 1 thì trừ p từ c = (C[t – 1], …, C[2], C[1], C[0]);
Ngược lại nếu c  p thì c  c – p
3. Return (c)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 31 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 32

Phép tính cộng và trừ Phép tính cộng và trừ


 Ví dụ minh họa thuật toán 3:  Bài tập:
 Cho p = 2.147.483.647, W = 8; ta có m = 𝑙𝑜𝑔2 𝑝 = 31; t = 𝑚/𝑊 = 4  Cho p = 2.147.483.647, W = 8; ta có m = 𝑙𝑜𝑔2 𝑝 = 31; t = 𝑚/𝑊 = 4

 a = (0, 11, 173, 248); b = (0, 1, 226, 64).  a = (157, 0, 173, 23); b = (169, 1, 0, 64).

 Áp dụng thuật toán 3 tìm c = a + b mod 𝑝  Áp dụng thuật toán 3 tìm c = a + b mod 𝑝
■ Áp dụng thuật toán 1 ta có (, c) = (0, (0, 13, 144, 56))

■ Vì c < p => Return (0, 13, 144, 56)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 33 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 34

Phép tính cộng và trừ Phép tính cộng và trừ


 a = (157, 0, 173, 23); b = (169, 1, 0, 64)  Ta có p = 2.147.483.647 được biểu diễn dưới dạng mảng (127, 255, 255, 255)
 Áp dụng tt 1 tìm (, c):  Áp dụng tt2 tính c – p mod 232 (với c = (70, 1, 173, 87))
■ (, C[0])  A[0] + B[0] = 23 + 64 = 87 mod 28 = 87 ( gán  = 0)  (, C[0])  c[0] - p[0] = 87 - 255 = - 168 mod 28 = 88 ( gán  = 1)
■ i = 1: (, C[1])  A[1] + B[1] +  = 173 + 0 + 0 mod 28 = 173 (gán  = 0)  i = 1: (, C[1])  c[1] - p[1] -  = 173 - 255 - 1 mod 28 = -83 mod 28 = 173 (gán  =
■ i = 2: (, C[2])  A[2] + B[2] +  = 0 + 1 + 0 mod 28 = 1 (gán  = 0) 1)
■ i = 3: (, C[3])  A[3] + B[3] +  = 157 + 169 + 0 mod 28 = 326 mod 28 = 70 (gán   i = 2: (, C[2])  c[2] - p[2] -  = 1 - 255 - 1 mod 28 = -255 mod 28 = 1 (gán  = 1)
= 1)  i = 3: (, C[3])  c[3] - p[3] -  = 70 - 127 - 1 mod 28 = -58 mod 28 = 198 (gán  = 1)
■ Vậy (, c) = (1, (70, 1, 173, 87))
 Return (1, (198, 1, 173, 88))
 Ta có  = 1
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 35 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 36

6
2021/5/16

Phép tính cộng và trừ Phép tính cộng và trừ


 Thuật toán trừ trên Fq:  BT áp dụng:
Algorithm 4. Subtractionin Fq
 Cho p = 2.147.483.647, W = 8; ta có m = 𝑙𝑜𝑔2 𝑝 = 31; t = 𝑚/𝑊 = 4
Input: số modulo p, số nguyên a, b  [0, 𝑝 − 1]
Output: c = a – b mod 𝑝  a = (0, 11, 173, 248); b = (0, 1, 226, 64).
1. Dùng thuật toán Algorithm 2 để thu được (, c) với c = a – b mod
2𝑊𝑡 và  là bit mượn.  Áp dụng thuật toán 4 tìm c = a - b mod 𝑝
2. Nếu  = 1 thì thêm p từ c = (C[t – 1], …, C[2], C[1], C[0]);
3. Return (c)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 37 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 38

TÍNH TOÁN TRÊN SỐ NGUYÊN LỚN TRONG TRƯỜNG FP Phép tính nhân
 Thuật toán nhân
 Trong đó UV biểu thị cho 2W bit được nối bởi W bit của từ U với W bit từ V
Algorithm 4. Integer multiprecision (operand scanning form)

Input: số nguyên a, b  [0, 𝑝 − 1)


Output: c = a . b
1. For i from 0 to t – 1 do (UV)  C[i + j] + A[i]. B[j] + U
1.1 C[i]  0
2. For i from 0 to t – 1 do C[i + j]  V

2.1 U  0 2.3. C[i + t]  U

2.2 For j from 0 to t – 1 do 3. Return(c).


Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 39 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 40

Phép tính nhân Phép tính nhân


Algorithm 4. Integer multiprecision (product scanning form)
 Ví dụ:
Input: số nguyên a, b  [0, 𝑝 − 1)
 Cho p = 2.147.483.647, W = 8; ta có m = 𝑙𝑜𝑔2 𝑝 = 31; t = 𝑚/𝑊 = 4 Output: c = a . b

 a = (0, 11, 173, 248); b = (0, 1, 226, 64). 1. R0  0, R1  0, R2  0. (, R0)  R0 + V


(, R1)  R1 + U + 
 Tính c = a.b R2  R2 + 
2. For k from 0 to 2t – 2 do 2.2 C[k]  R0, R0  R1, R1  R2,
R2  0
2.1 For (i, j)  {(i, j) | i + j = k, 0  i, j  3. C[2t – 1]  R0
t – 1 } do
(U, V)  A[i]. B[j] 4. Return(c).

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 41 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 42

7
2021/5/16

TÍNH TOÁN TRÊN SỐ NGUYÊN LỚN TRONG TRƯỜNG FP Phép tính bình phương
Algorithm 5. Integer squaring
Input: số nguyên a  [0, 𝑝 − 1)
Output: c = a2
1. R0  0, R1  0, R2  0. If (i < j) then do: (, UV) 
R0 + V
(, R1)  R1 + U + 
R2  R2 + 
2. For k from 0 to 2t – 2 do 2.2 C[k]  R0, R0  R1, R1  R2,
R2  0
2.1 For (i, j)  {(i, j) | i + j = k, 0  i, j  3. C[2t – 1]  R0
t – 1 } do
(U, V)  A[i]. A[j] 4. Return(c).

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 43 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 44

TÍNH TOÁN TRÊN SỐ NGUYÊN LỚN TRONG TRƯỜNG FP Phép lấy modulo
Algorithm 6. Barrett reduction

Input: p, b  3, 𝑘 = 𝑙𝑜𝑔𝑏 𝑝 + 1, 0  z < b2k, và  = 𝑏2𝑘 /𝑝


Output: z mod 𝑝
1. 𝑞ො ← 𝑧/𝑏𝑘−1 . 𝜇/𝑏𝑘+1

2. r ← 𝑧 𝑚𝑜𝑑 𝑏𝑘−1 − 𝑞.
ො 𝑝 𝑚𝑜𝑑𝑏𝑘−1

3. If r < 0 then r ← r + 𝑏𝑘−1

4. While r  p do r ← r – p

5. Return (r)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 45 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 46

BÀI 02 - MỤC TIÊU TÍNH TOÁN TRÊN SỐ NGUYÊN LỚN TRONG TRƯỜNG FP

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 47 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 48

8
2021/5/16

Phép lũy thừa Phép lũy thừa


 Lấy R > p với gcd(R, p) = 1. Tính zR-1 mod p với z < pR Algorithm 7. Montgomery exponentiation (basic)

 Xét p là số lẻ, R = 2Wt. Nếu p’ = - p-1 mod R thì c = zR-1 mod p có thể gồm:
Input: số nguyên lẻ p, 𝑅 = 2𝑊𝑡 , 𝑝′ = −𝑝−1𝑚𝑜𝑑𝑅, 𝑥 𝜖 0, 𝑝 , 𝑒 = 𝑒𝑙 , 𝑒𝑙−1 … , 𝑒0 2
 𝑐  (𝑧 + (𝑧𝑝′ 𝑚𝑜𝑑 𝑅)𝑝)/𝑅 Output: x e mod p
1. 𝑥෤ ← 𝑥𝑅 𝑚𝑜𝑑 𝑝, A ← R mod p
 Nếu c  p thì 𝑐 𝑐– 𝑝
2. For 𝑖 form 𝑙 downto 0 do
 Với t(t + 1) phép nhân chính xác đơn
2.1. A ← Mont(A, A)
 Cho x [0, p), 𝑥෤ ← 𝑥𝑅 𝑚𝑜𝑑 𝑝. Chú ý: 𝑥෤ 𝑦෤ 𝑅−1𝑚𝑜𝑑 𝑝 = 𝑥𝑦 𝑅𝑚𝑜𝑑 𝑝
2.2. If 𝑒𝑖 = 1 then A ← Mont(A, 𝑥)

 Ta định nghĩa tích của 𝑥෤ 𝑣à 𝑦෤ : 3. Return (Mont(A, 1))
 Mont(𝑥,
෤ 𝑦) ෤ −1 𝑚𝑜𝑑 𝑝 = 𝑥𝑦 𝑅 𝑚𝑜𝑑 𝑝
෤ = 𝑥෤ 𝑦𝑅
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 49 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 50

TÍNH TOÁN TRÊN SỐ NGUYÊN LỚN TRONG TRƯỜNG FP Phép tính nghịch đảo
 Thuật toán Euclide mở rộng:
 Nếu gcd(a,b) = d thì phương trình bất định ax + by = d có nghiệm nguyên (x,y)
và một nghiệm nguyên (x,y) như vậy có thể được tính bằng thuật toán Euclide
mở rộng.

 Điều cần và đủ để có nghịch đảo là d = 1 và khi đó:


■ x là nghịch đảo của a mod b và y là nghịch đảo của b mod a
 Ta mở rộng thuật toán Euclide:
■ Tìm ước chung lớn nhất của a và b,
■ Tính nghịch đảo trong trường hợp GCD(a, b) = 1.
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 51 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 52

Phép tính nghịch đảo Phép tính nghịch đảo


Thuật toán 8: Euclide mở rộng
 Áp dụng thuật toán trên với các đầu vào:
Input: Hai số nguyên dương a, b (a  b)
Output: d = gcd(a, b) và số nguyên x, y thỏa mãn ax + by = d  1) a = 1759, b = 550
1. If b = 0 then d  a, x  1, y  0 and Return(d, x, y).  2) a = 3458, b = 4864
2. 𝑥2 ← 1, 𝑥1 ← 0, 𝑦2 ← 0, 𝑦1 ← 1
3. While b > 0 do
3.1. 𝑞 ← 𝑎Τ𝑏 , 𝑟 ← 𝑎 − 𝑞𝑏, 𝑥 ← 𝑥2 − 𝑞𝑥1 , 𝑦 ← 𝑦2 − 𝑞𝑦1
3.2. 𝑎 ← 𝑏, 𝑏 ← 𝑟, 𝑥2 ← 𝑥1 , 𝑥1 ← 𝑥, 𝑦2 ← 𝑦1 , 𝑦1 ← 𝑦
4. d  a, x  x2, y  y2
5. Return(d, x, y)
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 53 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 54

9
2021/5/16

Phép tính nghịch đảo Phép tính nghịch đảo


q r x y a b x2 x1 y2 y1  a = 1759, b = 550
4Τ ΤΤ
𝑞 ← 5109
1759
550 14= 21
=550
- - - - 1759 550 1 0 0 1 41 5
109 ==53
𝑟d𝑟 ←
=←1,
← 51759
4109
− 
x−4.1
550 −−-111,
1.4 =− 5.1091 y= 
0=3.550
21.5 =4=5355
109
3 109 1 -3 550 109 0 1 1 -3 𝑥𝑥𝑥 ← ←←1060−
11
−5 −−− 4.1.106
5.0
3.0
21. (−111)
= 1-5===550
(−5) 106
-111
𝑦𝑦𝑦 ←
←←−339
1 −−
0
−3
16 −1.
5.
−3.121.4. =(355)
(−3) -3 = =16
(16)
(−339) =-1759
=-339
355
5 5 -5 16 109 5 1 -5 -3 16 Gcd(1759, 5 550) = 1
a ← 4109
550
1
(x,
b y) =1(-111, 355)
5109
0
4 -1
21 4 106 -339 5 4 -5 106 16 -339 Hay 550 mod 1759 = 355
𝑥2 ← 106; -5;𝑥𝑥11𝑥←
1;
0;
-111; 𝑥1←1← ←
-5;
1; 550 ;
-111;
106;
1759-1mod 550 = -111
1 1 -111 335 4 1 106 -111 -339 355 𝑦2 ← -339; -3;
1;
355; 𝑦1←
16;𝑦𝑦1𝑦11𝑦← 1←
← ←
-3;
16;−1759;
355;
-339;

4 0 550 -1759 1 0 -111 550 355 -1759


Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 55 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 56

Phép tính nghịch đảo Phép tính nghịch đảo


 Áp dụng thuật toán trên với các đầu vào:
 a = 127, p = 319

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 57 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 58

Phép tính nghịch đảo Phép tính nghịch đảo

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 59 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 60

10
2021/5/16

Phép tính nghịch đảo Phép tính nghịch đảo

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 61 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 62

TÍNH TOÁN TRÊN SỐ NGUYÊN LỚN TRONG TRƯỜNG FP Tính toán với modulo là số nguyên tố đặc biệt của NIST

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 63 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 64

Tính toán với modulo là số nguyên tố đặc biệt của NIST Tính toán với modulo là số nguyên tố đặc biệt của NIST

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 65 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 66

11
2021/5/16

Tính toán với modulo là số nguyên tố đặc biệt của NIST

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 67 16 May 2021 | Page 68 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin

Chương 2 – Mục tiêu


 Nắm được các kiến thức cơ bản về số nguyên tố, số giả nguyên tố
 Hiểu và lập trình được một số thuật toán:
 Sàng nguyên tố

 Phân tích một số nguyên thành thừa số nguyên tố


 Kiểm tra một số có là nguyên tố không

 Sinh số nguyên tố

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 69 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 70

Bài 01 – Mục tiêu Bài 01 – Nội dung


 Nắm được khái niệm số nguyên tố
 Kiến thức chung
 Nắm được kiến thức cơ bản về sàng số nguyên tố Eratosthenes
 Sàng Eratosthenes nguyên thủy
nguyên thủy và sàng phân đoạn
 Sàng Eratosthenes phân đoạn
 Nắm được bài toán phân tích một số nguyên ra thừa số nguyên tố
 Thuật toán Pollard’s Rho
 Hiểu và lập trình được hai thuật toán về sàng Eratosthenes và sàng
phân đoạn
 Hiểu và lập trình được thuật toán phân tích một số ra thừa số
nguyên tố Pollard’s Rho
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 71 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 72

12
2021/5/16

MỘT SỐ THUẬT TOÁN VỀ SỐ NGUYÊN TỐ Kiến thức chung


 Số nguyên tố:
 Là số tự nhiên có đúng 2 ước số tự nhiên là 1 và chính nó
 Sàng Eratosthenes
 Là một thuật toán cổ đại để tìm tất cả các số nguyên tố nhỏ hơn
hoặc bằng một số nguyên cho trước

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 73 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 74

Sàng Eratosthenes nguyên thủy Sàng Eratosthenes nguyên thủy


 Ý tưởng:  Bài toán:
 Bắt đầu với số nguyên tố đầu tiên là 2  Tìm tất cả các số nguyên tố nhỏ hơn hoặc bằng số nguyên n cho

 Sinh tất cả các bội của số nguyên tố đã cho (nhỏ hơn số nguyên cho trước

trước) với hiệu số cố định giữa các số bằng số nguyên tố đó


 Đánh dấu tất cả các bội của mỗi số nguyên tố là hợp số
 Các số còn lại đánh dấu là số nguyên tố

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 75 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 76

Sàng Eratosthenes nguyên thủy Sàng Eratosthenes nguyên thủy


 Các bước thực hiện:  Các bước thực hiện (..)
 Bước 1: Liệt kê các số nguyên liên tiếp từ 2 tới n (2, 3, 4, … , 𝑛)
 Bước 4: Tìm số nhỏ nhất trong danh sách, lớn hơn 𝑝 mà không bị đánh
 Bước 2: Khởi tạo 𝑝 = 2 dấu
 Bước 3: Liệt kê các bội số của 𝑝 bằng cách đếm các số gia của 𝑝 từ ■ Nếu không có số nào thì dừng lại
2𝑝, 3𝑝, 4𝑝, … tới 𝑛; đánh dấu là hợp số ■ Ngược lại, gán 𝑝 bằng số vừa tìm được và lặp lại bước 3

 Bước 5: Kết thúc thuật toán, các số còn lại trong danh sách không bị
đánh dấu là tất cả các số nguyên tố nhỏ hơn hoặc bằng 𝑛

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 77 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 78

13
2021/5/16

Sàng Eratosthenes nguyên thủy Sàng Eratosthenes nguyên thủy


 VD: Tìm các số nguyên tố ≤ 30 (..)
 VD: Tìm các số nguyên tố ≤ 30
 𝑝 = 5, loại bỏ các bội của 5
 Liệt kê các số nguyên từ 2 tới 30

 𝑝 = 7, loại bỏ các bội của 7, tuy nhiên các bội đó (14, 21, 28) đều đã bị
 𝑝 = 2, loại bỏ các bội của 2
loại

 ….
 𝑝 = 3, loại bỏ các bội của 3
 Tất cả các số còn lại đều là nguyên tố

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 79 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 80

Sàng Eratosthenes nguyên thủy Sàng Eratosthenes phân đoạn


 Nhận xét:  Được biết đến từ những năm 1970
 Thuật toán duyệt toàn bộ mảng chứa chuỗi các số không lớn hơn n mà  Mỗi lần chỉ sàng các phần trong phạm vi
không hiển thị vị trí tham chiếu.

 Yêu cầu bộ nhớ lớn


■ Với n lớn, bộ nhớ có thể không đáp ứng đủ dãy số nguyên tố

■ Với n vừa phải, việc sử dụng bộ nhớ cache của nó là không tối ưu

 => Sàng phân đoạn ra đời

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 81 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 82

Sàng Eratosthenes phân đoạn Sàng Eratosthenes phân đoạn


 Thuật toán:  Thuật toán: (..)
 Bước 1: Chia phạm vi từ 2 tới n thành các đoạn có kích cỡ Δ nào đó, với  Bước 3: Theo thứ tự tăng dần, với mỗi đoạn tiếp theo tìm các số
Δ≤ 𝑛 nguyên tố như sau, trong đó m là giá trị lớn nhất của đoạn

 Bước 2: Sử dụng sàng Eratosthenes để tìm các số nguyên tố trong đoạn ■ Bước 3.1: Thiết lập một mảng Boolean có kích thước là Δ

đầu tiên

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 83 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 84

14
2021/5/16

Sàng Eratosthenes phân đoạn MỘT SỐ THUẬT TOÁN VỀ SỐ NGUYÊN TỐ

 Thuật toán: (..)


■ Bước 3.2: Đánh dấu các vị trí trong mảng không là nguyên tố ứng với các bội
của mỗi số nguyên tố p ≤ 𝑚 đã tìm được bằng cách tính bội nhỏ nhất của p
trong khoảng m- Δ và m, và liệt kê các bội của nó theo các bước của p như bình
thường. Các vị trí còn lại tương ứng với các số nguyên tố trong đoạn vì bình
phương của một số nguyên tố trong đoạn không thuộc đoạn đó (với 𝑘 ≥ 1, ta
có 𝑘∆ + 1 2 > 𝑘 + 1 ∆)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 85 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 86

Kiến thức chung Kiến thức chung


 Ví dụ: Cho N = 408.508.091, tìm số nguyên tố p, q:
 Bài toán
p  q = 408.508.091
 Cho số nguyên dương n, hãy phân tích n ra thừa số nguyên tố, tức là
𝑒1 𝑒2 𝑒𝑘
 Với máy tính cầm tay  mất bao lâu để có được p, q?
𝑛 = 𝑝1 . 𝑝2 … 𝑝𝑘 , trong đó 𝑝𝑖 là các số nguyên tố đôi một khác
■ Kiểm tra mỗi số nguyên tố xem có là ước của N hay không? Ví dụ: 3, 5, …, cho tới
nhau và 𝑒𝑖 ≥ 1 p = 18.313 (số nguyên tố thứ 2000) thì thấy 18.313 thực sự là thừa số của
408.508.091, như vậy dễ dàng xác định được số q = 22.307.
■ Một máy tính kiểm tra 4 số nguyên tố/1 phút  mất 500 phút  hơn 8 giờ để
tìm ra p, q

 Nếu biết trước giá trị p = 18.313 và q = 22.307  mất chưa tới 10s để tính ra N
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 87 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 88

Kiến thức chung Kiến thức chung


 Lưu ý:  Định nghĩa 2.2.1: (Thừa số không tầm thường)
 Bài toán quyết định liệu một số nguyên là hợp số hay là nguyên tố nói Phân tích ra thừa số không tầm thường của n là một dạng n=a.b, trong đó
chung dễ hơn nhiều so với bài toán phân tích ra thừa số 1<a, b<n. Khi đó a, b được gọi là các thừa số không tầm thường.
■ => Trước khi phân tích n ra thừa số, nên kiểm tra để đảm bảo n thực sự là
hợp số

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 89 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 90

15
2021/5/16

Kiến thức chung Kiến thức chung


 Nhận xét:  VD: Áp dụng thuật toán trên phân tích n = 4.337.800 thành tích của
các thừa số nguyên tố
 Trong định nghĩa 2.2.1, a,b không nhất thiết phải là số nguyên tố
 4337800 = 2  2168900 ( a = 2, b = 2168900 có là nguyên tố?)
 Khi phân tích n ra thừa số nguyên tố, có thể thực hiện:
 4337800 = 2  (2  1084450) ( kiểm tra 2, 1084450 có là nguyên tố?)
■ Bước 1: Sử dụng các thuật toán phân tích n thành thừa số

■ Bước 2: Kiểm tra tính nguyên tố của a và b


 4337800 = 2  (2  (2  542225)) (kiểm tra 2, 542225 có là nguyên tố?)

■ Bước 3: Nếu a hoặc b là hợp số thì tiếp tục áp dụng thuật toán phân tích ra  4337800 = 2  (2  (2  (5  108445))) (kiểm tra 5, 108445 có là nguyên tố?)
thừa số.  ….
Vậy n được phân tích thành tích:
4337800 = 23  52  232  41
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 91 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 92

Kiến thức chung Kiến thức chung


 Định nghĩa 2.2.2: Lũy thừa hoàn hảo  Phép chia thử:
 Số nguyên 𝑛 được gọi là một lũy thừa hoàn hảo nếu 𝑛 = 𝑥 𝑘 với x, 𝑘 là các số  Với n là hợp số, trước khi áp dụng các thuật toán phân tích n thành
nguyên thỏa mãn 𝑥 ≥ 2, 𝑘 ≥ 2
thừa số nguyên tố nên thực hiện phép chia thử n cho tất cả các số
 Chú ý: Kiểm tra lũy thừa hoàn hảo (perfect power)
nguyên tố “nhỏ”
 Nếu 𝑛 ≥ 2 có thể kiểm tra xem liệu n có là một lũy thừa hoàn hảo không.

 Bài toán phân tích n ra thừa số nguyên tố luôn giả thiết n không phải là một lũy thừa
hoàn hảo, tức là có ít nhất 2 thừa số nguyên tố khác nhau

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 93 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 94

Thuật toán Pollard’s Rho Thuật toán Pollard’s Rho


 Cho 𝑓: 𝑆 → 𝑆 là một hàm ngẫu nhiên, trong đó S là một tập hữu  Vấn đề chuỗi có chu kì liên quan tới một số tấn công thám mã,
hạn các ứng cử n. bao gồm phân tích số nguyên ra thừa số là tìm các chỉ số 𝑖 ≠ 𝑗,
 Cho 𝑥0 là một phần tử ngẫu nhiên của S, xét chuỗi 𝑥0 , 𝑥1 , 𝑥2 , … sao cho 𝑥𝑖 = 𝑥𝑗
được xác định bởi 𝑥𝑖+1 = f(𝑥𝑖 ), với 𝑖 ≥ 0
 Vì S là một tập hữu hạn nên chuỗi phải có chu kì
■ => Tồn tại các chỉ số 𝑖 ≠ 𝑗, sao cho 𝑥𝑖 = 𝑥𝑗 (gọi là xảy ra xung đột)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 95 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 96

16
2021/5/16

Thuật toán Pollard’s Rho Thuật toán Pollard’s Rho


 Thuật toán Floyd: (Tìm chu kì)  Cho p là thừa số nguyên tố của hợp số nguyên n. Thuật toán
 Bước 1: Bắt đầu với cặp (𝑥1 , 𝑥2 ) Pollard’s Rho phân tích n thành thừa số nguyên tố sẽ tìm sự lặp lại
 Bước 2: Tính lặp đi lặp lại (𝑥𝑖 , 𝑥2𝑖 ) từ cặp (𝑥𝑖−1 , 𝑥2𝑖−2 ) cho tới khi 𝑥𝑚 = trong chuỗi các số nguyên 𝑥0 , 𝑥1 , 𝑥2 , … được xác định bởi 𝑥0 = 2,
𝑥2𝑚 , với giá trị m nào đó 𝑥𝑖+1 = 𝑓 𝑥𝑖 = 𝑥𝑖 2 + 1 𝑚𝑜𝑑 𝑝 với 𝑖 ≥ 0
 Sử dụng thuật toán Floyd tìm 𝑥𝑚 và 𝑥2𝑚 sao cho 𝑥𝑚 ≡ 𝑥2𝑚 (𝑚𝑜𝑑 𝑝)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 97 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 98

Thuật toán Pollard’s Rho Thuật toán Pollard’s Rho


 Vì n chia hết cho p nhưng chưa biết p nên tính 𝑥𝑖 𝑚𝑜𝑑 𝑛 và kiểm tra liệu  Mục tiêu: Tìm các thừa số nhỏ của một hợp số
gcd 𝑥𝑚 − 𝑥2𝑚 , 𝑛 > 1 không. Nếu lại có gcd 𝑥𝑚 − 𝑥2𝑚 , 𝑛 < 𝑛 thì thu  Đầu vào: n là hợp số nhưng n không phải là lũy thừa của một số
được thừa số không tầm thường của n.
nguyên tố

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 99 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 100

Thuật toán Pollard’s Rho Thuật toán Pollard’s Rho


 …
 Bước 1: Đặt a=2; b=2
 Thuật toán tìm gcd(a, b):
 Bước 2: For i=1,2, … do
 Input: a, b
 Bước 2.1: Tính 𝑎 = 𝑎2 + 1 𝑚𝑜𝑑 𝑛; 𝑏 = 𝑏 2 + 1 𝑚𝑜𝑑 𝑛; b= 𝑏 2 + 1 𝑚𝑜𝑑 𝑛
 Ouput: gcd(a, b)
 Bước 2.2: Tính 𝑑 = gcd(𝑎 − 𝑏, 𝑛)
■ 1. A=a, B=b
 Bước 2.3: If 1 < 𝑑 < 𝑛 then return(d) và kết thúc với thành công
■ 2. while B>0
 Bước 2.4: If 𝑑 = 𝑛 then kết thúc với thất bại ● R = A mod B

● A = B, B = R

■ 3. Return A
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 101 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 102

17
2021/5/16

Thuật toán Pollard’s Rho Thuật toán Pollard’s Rho


 VD: Tính GCD(1970, 1066)?
 1970 = 1 x 1066 + 904 gcd(1066, 904)  Ví dụ: Tìm thừa số không tầm thường của 𝑛 = 455459 sử dụng
1066 = 1 x 904 + 162 gcd(904, 162)
904 = 5 x 162 + 94 gcd(162, 94) thuật toán Pollard’s Rho
162 = 1 x 94 + 68 gcd(94, 68)
94 = 1 x 68 + 26 gcd(68, 26)
68 = 2 x 26 + 16 gcd(26, 16)
26 = 1 x 16 + 10 gcd(16, 10)
16 = 1 x 10 + 6 gcd(10, 6)
10 = 1 x 6 + 4 gcd(6, 4)
6=1x4+2 gcd(4, 2)
4=2x2+0
gcd(1970, 1066) = 2
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 103 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 104

Thuật toán Pollard’s Rho Bài 02 – Mục tiêu


 Chú ý:  Hiểu và lập trình được một số thuật toán kiểm tra một số có là
 Thuật toán kết thúc thất bại thì có thể thử lại với hàm khác thay vì nguyên tố hay không
𝑓 𝑥 = 𝑥2 + 1  Thuật toán kiểm tra Fermat
 Chẳng hạn có thể chọn 𝑓 𝑥 = 𝑥 2 + 𝑐 với 𝑐 ≠ 0; −2  Thuật toán kiểm tra xác suất Miller–Rabin
 Hiểu và lập trình được thuật toán sinh số nguyên tố

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 105 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 106

Bài 02 – Nội dung MỘT SỐ THUẬT TOÁN VỀ SỐ NGUYÊN TỐ

 Kiến thức chung


 Thuật toán kiểm tra Fermat
 Thuật toán kiểm tra xác suất Miller–Rabin
 Thuật toán sinh số nguyên tố

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 107 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 108

18
2021/5/16

Kiến thức chung Kiến thức chung


 Thuật toán kiểm tra Fermat không thực sự là kiểm tra số nguyên  Các kiểm tra tính nguyên tố theo xác suất có khuôn mẫu sau:
tố dựa trên xác suất vì nó thường thất bại trong việc phân biệt  Với mỗi số nguyên dương lẻ n, tập 𝑊 𝑛 ⊂ 𝑍𝑛 được xác định thỏa

số nguyên tố và một loại hợp số đặc biệt được gọi là số mãn những tính chất sau:
■ Với 𝑎 ∈ 𝑍𝑛 , có thể kiểm tra xem liệu 𝑎 ∈ 𝑊(𝑛) không với thời gian đa thức
Carmichael
■ Nếu n là nguyên tố, thì 𝑊 𝑛 = ∅
𝑛
■ Nếu n là hợp số, thì #𝑊(𝑛) ≥ 2

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 109 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 110

Kiến thức chung Kiến thức chung


 Định nghĩa 2.3.1: Nếu n là hợp số thì các phần tử của W(n) được  Các kiểm tra tính nguyên tố theo xác suất sử dụng tính chất của
gọi là bằng chứng cho n là hợp số và các phần tử thuộc tập bù tập W(n) như sau:
𝐿 𝑛 = 𝑍𝑛 − 𝑊(𝑛) được gọi là các giá trị đánh lừa (giả - liar)  Giả sử cần xác định xem n có là một số nguyên tố không?
■ Lựa chọn ngẫu nhiên một số nguyên 𝑎 ∈ 𝑍𝑛 và kiểm tra xem liệu 𝑎 ∈ 𝑊(𝑛)
không?

■ => Kết quả n là hợp số nếu 𝑎 ∈ 𝑊(𝑛) và n là nguyên tố nếu 𝑎 ∉ 𝑊(𝑛)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 111 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 112

Kiến thức chung Kiến thức chung


■ Nếu thực sự 𝑎 ∈ 𝑊(𝑛) thì n được gọi là thất bại với kiểm tra tính nguyên tố đối với  Định nghĩa 2.3.2: Một số nguyên n được tin là số nguyên tố theo
cơ sở a
kiểm tra tính nguyên tố dựa trên xác suất được gọi là số nguyên tố
● => chắc chắn n là hợp số

■ Nếu 𝑎 ∉ 𝑊(𝑛) thì n được gọi là qua với kiểm tra tính nguyên tố đối với cơ sở a
có thể có (có thể là nguyên tố)
● => chưa thể khẳng định chắc chắn n là nguyên tố

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 113 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 114

19
2021/5/16

Thuật toán kiểm tra Fermat Thuật toán kiểm tra Fermat
 Định lí Fermat: Cho n là một số nguyên tố  Định nghĩa 2.3.4: Cho n là một hợp số nguyên lẻ và cho a là một
 Nếu gcd(𝑎, 𝑛) = 1 thì 𝑎𝑛−1 ≡ 1 (𝑚𝑜𝑑 𝑛) số nguyên, 1 ≤ 𝑎 ≤ 𝑛 − 1. Thì n được gọi là một số giả nguyên tố
 Định nghĩa 2.3.3: Cho n là một hợp số nguyên lẻ. Một số nguyên với cơ sở a nếu 𝑎𝑛−1 ≡ 1 (𝑚𝑜𝑑 𝑛). Số nguyên a được gọi là một
a, 1 ≤ 𝑎 ≤ 𝑛 − 1 thỏa mãn 𝑎𝑛−1 ≢ 1 (𝑚𝑜𝑑 𝑛) được gọi là bằng giá trị đánh lừa cho tính nguyên tố của n.
chứng Fermat chứng tỏ n là hợp số.  VD: 𝑛 = 341 = 11 × 31 là một số giả nguyên tố đối với cơ sở 𝑎 = 2
vì 2340 ≡ 1 (𝑚𝑜𝑑 341)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 115 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 116

Thuật toán kiểm tra Fermat Thuật toán kiểm tra Fermat
 Thuật toán FERMAT(n,t): Kiểm tra xem liệu n có là số nguyên tố?  Thuật toán FERMAT(n,t): Kiểm tra xem liệu n có là số nguyên tố?
 Đầu vào: n là số nguyên lẻ, 𝑛 ≥ 3 và tham số an toàn t ≥1  Bước 1: For i = 1 to t do

 Đầu ra: Hoặc “nguyên tố” hoặc “hợp số” ■ Bước 1.1 Chọn ngẫu nhiên số nguyên 𝑎, 2 ≤ 𝑎 ≤ 𝑛 − 2

■ Bước 1.2: Sử dụng thuật toán nhân bình phương có lặp tính 𝑟 =
𝑎𝑛−1 (𝑚𝑜𝑑 𝑛)

■ Bước 1.3 Nếu 𝑟 ≠ 1 thì return (“Hợp số”)

 Bước 2: Return (“Nguyên tố”)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 117 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 118

Thuật toán kiểm tra Fermat Thuật toán kiểm tra Fermat
 Nhận xét:  Nhận xét: (..)
 Kết quả của thuật toán FERMAT(n,t) là hợp số thì chắc chắn n là hợp số  Tuy nhiên, vì các số giả nguyên tố đối với cơ sở a được biết là rất hiếm

 Ngược lại, không có bằng chứng chứng tỏ n thật sự là nguyên tố nên kiểm tra Fermat cung cấp câu trả lời đúng cho hầu hết các đầu vào
■ Nhưng không có nghĩa là cung cấp câu trả lời đúng cho hầu hết các lần trên
mọi đầu vào

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 119 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 120

20
2021/5/16

Thuật toán kiểm tra Fermat Thuật toán nhân bình phương có lặp
(1). Đặt b  1
 Thuật toán nhân bình phương có lặp Nếu k = 0 thì
Return (b) (2). Đặt A  a
a  Zn và số nguyên k, 0 ≤ k < n có biểu diễn nhị
𝒕 (3). Nếu k0 = 1
Input phân:
𝒌 = ෍ 𝒌 𝒊 𝟐𝒊 Bài tập áp dụng: thì đặt b  a
𝒊=𝟎 - 41101 mod 211
- 5596 mod 1234 = ?

Output ak mod n (4). For i from 1 to t do


4.1. Đặt A  A2 mod n
(5). Return (b) 4.2. Nếu ki = 1 thì b  A.b mod n

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 121 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 122

Thuật toán nhân bình phương có lặp Thuật toán kiểm tra Fermat
 Giải:  BT áp dụng thuật toán Fermat kiểm tra số n = 383 có là số
 Ta phân tích 101 = 26 + 25 + 22 + 20. Áp dụng phương pháp nhân và nguyên tố hay ko? (cho t = 2)
bình phương có lặp ta có bảng giá trị sau:

i 0 1 2 3 4 5 6

ki 1 0 1 0 0 1 1

A 41 204 49 80 70 47 99

b 41 41
41 110 110 110 106 155

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 123 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 124

Thuật toán kiểm tra Fermat Thuật toán kiểm tra Fermat
 Định nghĩa 2.3.5: Số Carmichael  Nếu n là số Carmichael thì bằng chứng Fermat duy nhất cho n là
 Số Carmichael n là một hợp số nguyên thỏa mãn 𝑎𝑛−1 ≡ 1 (𝑚𝑜𝑑 𝑛) các số nguyên a, 1 ≤ 𝑎 ≤ 𝑛 − 1, mà gcd 𝑎, 𝑛 > 1
với tất cả các số nguyên a thỏa mãn gcd 𝑎, 𝑛 = 1  Do vậy nếu các thừa số nguyên tố của n đều lớn thì kiểm tra Fermat trả
về kết quả n là nguyên tố với xác suất cao ngay cả khi số lần lặp t là lớn

 Kiểm tra xác suất Solovay-Strassen và Miller-Rabin khắc phục được


nhược điểm này của kiểm tra Fermat

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 125 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 126

21
2021/5/16

Thuật toán kiểm tra Fermat Thuật toán kiểm tra xác suất Miller–Rabin
 Khẳng định 2.3.1: Điều kiện cần và đủ của số Carmichael  Khẳng định 2.3.2: Cho x, y và n là các số nguyên. Nếu 𝑥 2 ≡
 Một hợp số n là số Carmichael khi và chỉ khi 2 điều kiện sau thỏa mãn: 𝑦 2 𝑚𝑜𝑑 𝑛 nhưng 𝑥 ≢ ±𝑦 (𝑚𝑜𝑑 𝑛) thì gcd 𝑥 − 𝑦, 𝑛 là thừa số
■ (i) n không là bình phương của một số, chẳng hạn n không chia hết cho bình không tầm thường của n.
phương của bất kì số nguyên tố nào

■ (ii) 𝑛 − 1 chia hết cho p − 1 với mọi ước p của n

 Hệ quả: Mọi số Carmichael đều là tích của ít nhất 3 số nguyên tố


khác nhau

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 127 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 128

Thuật toán kiểm tra xác suất Miller–Rabin Thuật toán kiểm tra xác suất Miller–Rabin
 Khẳng định 2.3.3: Cho n là một số nguyên tố lẻ, và cho 𝑛 − 1 =  Định nghĩa 2.3.6: Cho n là một hợp số nguyên lẻ và cho 𝑛 − 1 =
2𝑠 𝑟, trong đó r là một số lẻ. Cho a là một số nguyên bất kì thỏa 2𝑠 𝑟, trong đó r là lẻ. Cho a là một số nguyên trong đoạn
mãn gcd 𝑎, 𝑛 = 1. Thì với j nào đó, 0 ≤ 𝑗 ≤ 𝑠 − 1: 1, 𝑛 − 1 .
𝑟 𝑗𝑟
 Hoặc 𝑎 ≡ 1 𝑚𝑜𝑑 𝑛  (i) Nếu 𝑎𝑟 ≢ 1 𝑚𝑜𝑑 𝑛 và nếu 𝑎2 ≢ −1 (𝑚𝑜𝑑 𝑛) với tất cả j, 0 ≤
2𝑗 𝑟 𝑗 ≤ 𝑠 − 1 thì a được gọi là bằng chứng mạnh chứng tỏ n là hợp số.
 Hoặc 𝑎 ≡ −1 𝑚𝑜𝑑 𝑛

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 129 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 130

Thuật toán kiểm tra xác suất Miller–Rabin Thuật toán kiểm tra xác suất Miller–Rabin
 Định nghĩa 2.3.6: (..)  VD: Số giả nguyên tố mạnh
𝑟 2𝑗 𝑟 Xét hợp số nguyên 𝑛 = 91 (= 7 × 13). Vì 91 – 1 = 90 = 2 × 45
 (ii) Ngược lại, chẳng hạn nếu hoặc 𝑎 ≡ 1 𝑚𝑜𝑑 𝑛 hoặc 𝑎 ≡ 

− 1 𝑚𝑜𝑑 𝑛 với j nào đó, 0 ≤ 𝑗 ≤ 𝑠 − 1, thì n được gọi là số giả => s = 1 và r = 45.
nguyên tố mạnh đối với cơ sở a (Tức là n hoạt động như một số  Vì 9𝑟 = 945 ≡ 1 (𝑚𝑜𝑑 91) nên 91 là một số giả nguyên tố mạnh đối
nguyên tố). Số nguyên a được gọi là giá trị đánh lừa mạnh cho tính với cơ sở 9
nguyên tố của n.  Tập tất cả các giá trị đánh lừa mạnh của 91 là:
1, 9, 10, 12, 16, 17, 22, 29, 38, 53, 62, 69, 74, 75, 79, 81, 82, 90

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 131 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 132

22
2021/5/16

Thuật toán kiểm tra xác suất Miller–Rabin Thuật toán kiểm tra xác suất Miller–Rabin
 Thuật toán MILLER-RABIN(n,t): Kiểm tra xem liệu n có là số  Thuật toán MILLER-RABIN(n,t): Kiểm tra xem liệu n có là số
nguyên tố? nguyên tố?
 Đầu vào: Một số nguyên lẻ 𝑛 ≥ 3 và tham số an toàn t ≥ 1  Bước 1: Viết 𝑛 − 1 = 2𝑠 𝑟 để r là lẻ

 Đầu ra: Hoặc “nguyên tố” hoặc “hợp số”  Bước 2: For i = 1 to t do
■ Bước 2.1: Chọn ngẫu nhiên một số nguyên 𝑎, 2 ≤ 𝑎 ≤ 𝑛 − 2

■ Bước 2.2: Sử dụng thuật toán nhân bình phương có lặp tính 𝑦 = 𝑎𝑟 𝑚𝑜𝑑 𝑛

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 133 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 134

Thuật toán kiểm tra xác suất Miller–Rabin Thuật toán kiểm tra xác suất Miller–Rabin
 Thuật toán MILLER-RABIN(n,t): Kiểm tra xem liệu n có là số nguyên tố?  Nhận xét:
■ Bước 2.3: Nếu 𝑦 ≠ 1 và 𝑦 ≠ 𝑛 − 1 thì
 Thuật toán MILLER-RABIN(n,t) kiểm tra xem liệu với mỗi cơ sở a có thỏa
● 𝑗=1
mãn định nghĩa 2.3.6 không?
● While j ≤ 𝑠 − 1 và 𝑦 ≠ 𝑛 − 1 do
𝑗
○ Tính 𝑦 = 𝑦2 𝑚𝑜𝑑 𝑛  Dòng lệnh 5 của bước 2.3 nếu 𝑦 = 1 thì 𝑎2 𝑟  1 (𝑚𝑜𝑑 𝑛). Vì đây cũng là
○ Nếu 𝑦 = 1 thì return(“hợp số”)
2𝑗−1 𝑟
trường hợp mà 𝑎 ≢ ±1 (𝑚𝑜𝑑 𝑛) nên nó tuân theo Khẳng định
○ 𝑗 =𝑗+1
𝑗
● Nếu 𝑦 ≠ 𝑛 − 1 thì return(“hợp số”) 2.3.2 mà n là hợp số (thực tế là gcd(𝑎2 𝑟 − 1, 𝑛) là thừa số không tầm
 Bước 3: Return (“nguyên tố”) thường của n)
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 135 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 136

Thuật toán kiểm tra xác suất Miller–Rabin Thuật toán kiểm tra xác suất Miller–Rabin
 Nhận xét: (..)  Nhận xét: (..)

 Dòng lệnh thứ 7 của bước 2.3, nếu 𝑦 ≠ 𝑛 − 1 thì a là bằng chứng  …

mạnh đối với n.  Người ta chứng minh được rằng xác suất để số giả nguyên tố đó không

 Nếu thuật toán MILLER-RABIN(n,t) trả về kết quả là “hợp số” thì n chắc là số nguyên tố là ¼. Suy ra nếu lặp t phép thử với các lựa chọn ngẫu

chắn là hợp số vì các số nguyên tố không được vi phạm Khẳng định nhiên khác nhau của số a, thì khi đó xác suất để số n sau t phép thử là

2.3.3 số nguyên tố là: 1-(1/4)t


■ Ví dụ: Sau 10 bước, t = 10, mà số đã cho n đều có thể là nguyên tố, thì xác
 Nếu n thực sự là “nguyên tố” thì thuật toán luôn trả lại kết quả là
suất để n là số nguyên tố là 1 – (1/4)10 > 0.99999.
“nguyên tố”
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 137 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 138

23
2021/5/16

Thuật toán kiểm tra xác suất Miller–Rabin Thuật toán kiểm tra xác suất Miller–Rabin
 VD: áp dụng thuật toán Miller Rabin kiểm tra n = 383 có là nguyên  BTVN: Áp dụng thuật toán Miller – Rabin kiểm tra n = 57 có là
tố hay không? nguyên tố?

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 139 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 140

MỘT SỐ THUẬT TOÁN VỀ SỐ NGUYÊN TỐ Kiến thức chung


 Bài toán sinh số nguyên tố khác với bài toán kiểm tra tính nguyên
tố của một số, nhưng thường liên quan đến bài toán kiểm tra tính
nguyên tố
 Bài toán sinh số nguyên tố cho phép xây dựng các ứng cử của một
dạng cố định (được sửa – fixed form), dạng này có thể dẫn tới
kiểm tra hiệu quả hơn cso thể đối với các ứng cử ngẫu nhiên

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 141 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 142

Kiến thức chung Kiến thức chung


 Định lí 2.4.1: (Định lí số nguyên tố)  => Chiến lược chọn một số nguyên tố có thể k-bit ngẫu nhiên là
𝜋(𝑥) chọn lặp đi lặp lại một cách ngẫu nhiên các số nguyên lẻ k-bit n
Cho 𝜋(𝑥) kí hiệu là số các số nguyên tố ≤ 𝑥, thì lim =1
𝑥→∞ 𝑥/𝑙𝑛𝑥
cho đến khi được một số n mà thuật toán MILLER-RABIN(n,t) cho
 Nhận xét:
kết quả là nguyên tố với một tham số an toàn t thích hợp.
 Từ định lí 2.4.1 suy ra tỉ lệ số nguyên dương ≤ 𝑥 là nguyên tố xấp xỉ là
1/𝑙𝑛𝑥
■ Vì một nửa các số nguyên ≤ 𝑥 là chẵn nên tỉ lệ các số nguyên lẻ ≤ 𝑥 là nguyên
tố xấp xỉ là 2/𝑙𝑛𝑥

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 143 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 144

24
2021/5/16

Kiến thức chung Thuật toán sinh số nguyên tố


 Vì xác xuất một số nguyên ngẫu nhiên n có một ước nguyên tố  Thuật toán RANDOM-SEARCH(k,t): Tìm kiếm ngẫu nhiên một số
nhỏ là tương đối lớn nên trước khi áp dụng kiểm tra Miller-Rabin nguyên tố sử dụng kiểm tra Miller-Rabin
nên chia thử n với các số nguyên tố nhỏ hơn một giới hạn B được  Đầu vào: Một số nguyên k, tham số an toàn t

xác định trước, có thể thực hiện:  Đầu ra: Một số nguyên tố có thể k-bit

 Chia n cho tất cả các số nguyên tố nhỏ hơn B


 Hoặc tính ước chung lớn nhất của n và các tích của một vài các số
nguyên tố ≤ 𝐵

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 145 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 146

Thuật toán sinh số nguyên tố


 Thuật toán RANDOM-SEARCH(k,t): (..)
 Bước 1: Sinh ngẫu nhiên một số nguyên n k-bit

 Bước 2: Sử dụng phép chia thử để xác định liệu n có chia hết cho một
số nguyên tố bất kì ≤ 𝐵 không.
■ Nếu n chia hết thì quay lại Bước 1

 Bước 3: Nếu MILLER-RABIN(n,t) trả về kết quả “nguyên tố” thì


return(n). Ngược lại, quay lại Bước 1

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 147 16 May 2021 | Page 148 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin

ĐỐI SÁNH MẪU TRÊN CHUỖI

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 149 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 150

25
2021/5/16

Đối sánh mẫu là gì? Ví dụ


 Định nghĩa: Cho một văn bản T và một mẫu chuỗi ký tự cần  Ví dụ:
tìm P, hãy tìm kiếm sự xuất hiện của mẫu P trong văn bản T - T: “the rain in Viet Nam stays mainly on the plain”
 T= T0T1T2…Tn-1, |T|=n (độ dài của văn bản) - P: “n th”
 P= P0P1P2…Pm-1, |P|=m (độ dài của mẫu đối sánh)  Ứng dụng:
 Σ – bảng chữ cái với |Σ| = c - Các trình text editors, dịch vụ tìm kiếm (e.g. Google),…

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 151 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 152

Vai trò của đối sánh mẫu trong ATTT String và Substring
 S là một chuỗi ký tự có kích thước là n.
 Một chuỗi con (substring S[i .. j]) của S là một phần của chuỗi
ký tự S bắt đầu từ chỉ số i và kết thúc tại j, 0 ≤ 𝑖 ≤ 𝑗 ≤ 𝑛 − 1
 với 𝑖 ∈ [0, 𝑛 − 1] ta có:
 Tiền tố (prefix) của S là chuỗi con S[0 .. i]
 Hậu tố (suffix) của S là chuỗi con S[i .. n-1]
 Ví dụ:
S
a n t o a n
0 5

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 153 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 154

String và Substring (Ví dụ) Các thuật toán đối sánh mẫu
S Đơn mẫu: Đa mẫu:
a n t o a n
 Vét cạn  Wu – Manber
0 5

 Substring S[1..3] == "nto"  Knuth-Morris-Pratt (KMP)  Commentz - Walter


 Karp–Rabin  Aho–Corasick
 Tất cả các tiền tố có thể có của S:
 Boyer–Moore Indexing:
 "antoan", "antoa", "anto", "ant", "an”, "a"
 Horspool  Trie (và suffix trie)
 Tất cả các hậu tố có thể có của S:
 Shift-OR, Shift‐AND  Suffix tree
 "antoan", “ntoan", “toan", “oan", “an", “n"  Factor searches
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 155 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 156

26
2021/5/16

ĐỐI SÁNH MẪU TRÊN CHUỖI Thuật toán vét cạn


 Kiểm tra mỗi vị trí của đoạn văn bản T để tìm sự xuất hiện đầu
tiên của mẫu P tại vị trí đó

T: a n t o a n T: a n t o a n

P: o a n P: o a n
Mỗi lần dịch chuyển một ký tự để so sánh nhằm tìm P trong T
....
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 157 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 158

Phân tích độ phức tạp tính toán Phân tích độ phức tạp tính toán
 Độ phức tạp thời gian O(mn) trong trường hợp tệ nhất.  Ví dụ về trường hợp tồi nhất:
 Tuy nhiên trong trường hợp trung bình độ phức tạp: O(m+n).
 T: "aaaaaaaaaaaaaaaaaaaaaaaaaah"
 Hiệu quả trong trường hợp bảng chữ cái lớn:
 P: "aaah"
 Ví dụ. A..Z, a..z, 1..9, ...
 Ví dụ về trường hợp trung bình:
 Không hiệu quả trong trường hợp bảng chữ cái nhỏ
 T: "a string searching example is standard"
 Ví dụ. 0, 1 (chẳng hạn file nhị phân, file ảnh...)
 P: “example"

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 159 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 160

ĐỐI SÁNH MẪU TRÊN CHUỖI Thuật toán Boyer - Moore


 Thuật toán đối sánh mẫu Boyer – Moore dựa trên hai kỹ thuật
chính:
1. Kỹ thuật looking-glass (đối sánh cuối trước)
 Tìm mẫu P trong T bằng cách tìm từ cuối về đầu của mẫu P
 i, j là chỉ số của các kí tự đang được so sánh T[i] với P[j]
■ Nếu 𝑇 𝑖 = P[j] thì 𝑖 = 𝑖 − 1, 𝑗 = 𝑗 − 1
■ Ngược lại thực hiện nhảy cách
2. Kỹ thuật character-jump (nhảy cách)
 Khi ký tự đối sánh không khớp tại vị trí T[i] == x
 Tức là 𝑇 𝑖 ≠ P[j]

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 161 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 162

27
2021/5/16

Thuật toán Boyer – Moore (Nhảy cách-Case 1) Thuật toán Boyer – Moore (Nhảy cách-Case 2)
 T 𝑖 = 𝑥 ≠ 𝑃[𝑗]  T 𝑖 = 𝑥 ≠ 𝑃[𝑗]
 Ngược lại, dịch P sao cho P[0] thẳng với T[i+1], sau đó i chuyển sang vị trí inew và j
 Nếu P chứa x ở một vị trí t nào đó, t < j, thì dịch chuyển P sang phải
chuyển về cuối của P (jnew)
sao vị trí t trong P thẳng với vị trí i hiện tại của T. Sau đó i chuyển sang
vị trí inew, j chuyển về cuối của P (jnew)

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 163 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 164

Thuật toán Boyer – Moore (Ví dụ 1) Tiền xử lý (hàm last occurrence)


 Bài tập áp dụng:  Thuật toán Boyer-Moore tiền xử lý mẫu P và bảng chữ cái Σ để
xây dựng một hàm last occurrence L()
T: a p a t t e r n m a t c h i n g a l g o r i t h m  L() ánh xạ tất cả các ký tự trong bảng chữ cái Σ thành số nguyên
1 3 5 11 10 9 8 7
P: r i t h m r i t h m r i t h m r i t h m  L(x) được định nghĩa là:
 Chỉ số i lớn nhất sao cho P[i] == x, hoặc
2 4 6
r i t h m r i t h m r i t h m  -1 nếu không tồn tại chỉ số i đó
 L() được tính khi mẫu P được đưa vào.
 Giá trị của L() được lưu trữ dưới dạng một mảng

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 165 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 167

Tiền xử lý (hàm last occurrence) – Ví dụ Tiền xử lý (hàm last occurrence)

P a b a c a b  Khi thực hiện đối sánh gặp kí tự không khớp T[𝑖] ≠ 𝑃[𝑗] thì cần
0 1 2 3 4 5 sử dụng L() để nhảy cách như sau:
 A = {a, b, c, d}
 𝑖𝑛𝑒𝑤 = 𝑖 + 𝑚 − min(𝑗, 1 + 𝐿(𝑇 𝑖 )
 P: "abacab"
 𝑗𝑛𝑒𝑤 = 𝑚 − 1
x a b c d
 Trong đó m là độ dài của mẫu P
L(x) 4 5 3 -1

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 168 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 169

28
2021/5/16

Ví dụ minh họa Độ phức tạp


0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

T: a b a c aa aa bb aa d c aa bb aa cc aa bb a a b b
 Độ phức tạp thời gian của thuật toán Boyer-Moore trong trường
1 13 12 11 10 9 8
P: a b a c a bb aa bb aa cc aa bb
hợp tồi nhất là O(nm + Σ)
4 3 2 7 x a b c d
a b a cc aa bb a b a c a bb L(x) 4 5 3 -1  Boyer-Moore thực hiện tốt nếu bảng chữ Σ lớn, chậm khi bảng
5
𝑖 = 𝑖 + 𝑚 − min(𝑗, 1 + 𝐿(𝑇 𝑖 )
chữ Σ nhỏ.
a b a c a bb
𝑗 =𝑚−1

6 –1
13
12
i = i15
14
11 –=
15=–
6 121 = 4
11
14
13
10 5  Tốt cho các văn bản ngôn ngữ thông thường, kém cho tệp nhị phân
j =j0,
= hết
3––11chuỗi
j2
1 ==42– 1
51
0 đối
=3 4sánh P.
a b a c a bb i =Trả
5
7
8
14 +6 6–
4 +về KQ–min(5,
min(3, L(T(5))
L(T(4))
min(5,11++L(T(7))
L(T(8))
L(T(14))
10 –– min(5,
11
= 13
14
20 min(3, 11 ++ 4)
min(5, == 68
(-1)) 7= 14
15
 Boyer-Moore nhanh hơn nhiều lần so với vét cạn.
j=6–1=5

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 170 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 171

Độ phức tạp (trường hợp tệ nhất) ĐỐI SÁNH MẪU TRÊN CHUỖI

T: a a a a a a a a a
 T: "aaaaaaaaa" 6 5 4 3 2 1
P: b a a a a a
 P: "baaaaa“
12 11 10 9 8 7
b a a a a a
Mất bao nhiêu bước
thực hiện đối sánh? 18 17 16 15 14 13
b a a a a a
24 23 22 21 20 19
b a a a a a

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 172 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 173

Knuth-Morris-Pratt (KMP) Knuth-Morris-Pratt (KMP)


 Thuật toán Knuth-Morris-Pratt tìm kiếm mẫu P trong chuỗi T theo  Khi thực hiện so sánh, luôn cần sử dụng tới 2 giá trị sau:
thứ tự từ trái sang phải (tương tự vét cạn).  i: vị trí bắt đầu của chuỗi con trong T đang so sánh với mẫu P, tức là T[i]

 Dịch chuyển mẫu thông minh hơn so với vét cạn thẳng với P[0]

 Nếu xuất hiện sự không trùng khớp giữa mẫu P tại P[j], bước dịch  j: vị trí của kí tự trong P đang được so sánh (so sánh T[i+j] với P[j])

chuyển dài nhất có thể thực hiện là bao nhiêu?  Gặp kí tự khớp thì tăng j lên 1

 Trả lời: Độ dài của tiền tố dài nhất của P[0 .. j-1] sao cho nó là hậu tố của  Ngược lại, gặp kí tự không khớp, cần xác định inew và jnew.
P[1 .. j-1]

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 174 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 175

29
2021/5/16

Ví dụ Ví dụ
 Giả sử xuất hiện kí tự không giống nhau tại j, tức là T 𝑖 + 𝑗 ≠
𝑃 𝑗 , khi đó:
 Tìm tiền tố dài nhất của P[0..j-1] = "a b a a b“ sao cho tiền tố đó cũng
là hậu tố của P[1 .. j-1] = "b a a b“
■ => Đó là: "a b"

■ Không cần phải so sánh lại chuỗi con “a b” nữa nên đặt jnew = 2

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 176 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 177

Hàm failure function Hàm failure function


 Là hàm tiền xử lý mẫu của KMP  Hàm failure function F(j) được định nghĩa là kích thước của tiền
 Để tìm kiếm sự trùng khớp của các tiền tố trong P[0..j-1] với các hậu tố tố dài nhất của P[0..j-1] sao cho nó cũng là hậu tố của P[1..j-1].
trong P[1..j-1], với j là vị trí tại đó 𝑇[𝑖 + 𝑗] ≠ 𝑃[𝑗]  Mặc định:
 Được sử dụng để xác định inew và jnew ■ F(0)=-1

■ Độ dài của xâu rỗng là 0

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 178 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 179

Ví dụ: Tính hàm failure function Ví dụ: Tính hàm failure function
 P: "abacab“, j = [0..5]  P: " abacab“, j = [0..5]
 j=0 => F(0)=-1  j=2
 j=1 ■ Các tiền tố của P[0..j-1]=“ab” là {a,ab}

■ Các tiền tố của P[0..j-1]=“a” là {a} ■ Các hậu tố của P[1..j-1]=“b” là {b}

■ Các hậu tố của P[1..j-1]= ∅ là {∅} ■ => F(2)=0

■ => F(1)=0

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 180 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 181

30
2021/5/16

Ví dụ: Tính hàm failure function Ví dụ: Tính hàm failure function
 P: " abacab“, j = [0..5]  P: " abacab“, j = [0..5]
 j=3  j=4
■ Các tiền tố của P[0..j-1]=“aba” là {a,ab, aba} ■ Các tiền tố của P[0..j-1]=“abac” là {a,ab,aba, abac}

■ Các hậu tố của P[1..j-1]=“ba” là {ba, a} ■ Các hậu tố của P[1..j-1]=“bac” là {bac, ac, c}

■ => F(3)=1 ■ => F(4)=0

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 182 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 183

Ví dụ: Tính hàm failure function Knuth-Morris-Pratt


 P: " abacab“, j = [0..5]  Giả sử:
 j=5  i là vị trí bắt đầu của chuỗi con trong T mà đang so sánh với mẫu P, tức
■ Các tiền tố của P[0..j-1]=“abaca” là {a,ab,aba, abac, abaca} là T[i] thẳng với P[0]
■ Các hậu tố của P[1..j-1]=“baca” là {baca, aca, ca, a}  j: vị trí của kí tự trong P đang được so sánh và 𝑇 𝑖 + 𝑗 ≠ 𝑃[𝑗]
■ => F(5)=1
 => Xác định inew và jnew như sau:
 𝑖𝑛𝑒𝑤 = 𝑖 + 𝑗 − 𝐹[𝑖]
 𝑗𝑛𝑒𝑤 = 𝐹 𝑗 , nếu F 𝑗 =-1 thì 𝑗𝑛𝑒𝑤 = 0

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 184 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 185

Ví dụ Ưu nhược điểm của KMP


inew = 4 inew = 9  KMP có độ phức tạp tối ưu: O(m+n)  rất nhanh
i= 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
inew = 5 inew = 10
T:
a b a cc aa aa bb aa cc cc aa bb aa cc aa bb a a b b  Thuật toán không cần di chuyển ngược lại trong văn bản T
1 2 3 4 5 6

P: a b a cc aa b
j = 5 xảy ra không khớp
inew = i + j – F(j) = 0 + 5 – 1 = 4; jnew = F(5) = 1
 Điều này làm cho nó hiệu quả khi xử lý trên các tệp tin rất lớn được
0 1 2 3 4 5

7 đọc vào từ thiết bị ngoại vi hoặc trong luồng mạng


j = 1 xảy ra không khớp
a b a c a b inew = i + j – F(j) = 4 + 1 – 0 = 5; jnew = F(1) = 0

8 9 10 11 12  KMP không làm việc tốt trên bộ ký tự đối sánh có kích thước lớn
j = 4 xảy ra không khớp
a b aa cc aa b inew = i + j – F(4) = 5 + 4 – 0 = 9; jnew = F(4) = 0
13
j = 0 xảy ra không khớp
 Xác suất không khớp lớn hơn
a b a c a b inew = i + j – F(4) = 9 + 0 – (-1) = 10; jnew = F(0) = -1 => jnew = 0

14 15 16 17 18 19
j = 0 so sánh các kí tự đều thấy khớp  tìm được
 Việc không khớp xuất hiện sớm trong mẫu, nhưng KMP lại nhanh hơn
j 0 1 2 3 4 5 a bb a c aa b chuỗi con trong T giống với P
F(j) -1 0 0 1 0 1 khi việc không khớp xảy ra ở phía sau của mẫu
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 186 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 187

31
2021/5/16

ĐỐI SÁNH MẪU TRÊN CHUỖI Bài toán đối sánh mẫu
Văn bản N K A N M A N K K B A A
Mẫu K B A A

• Bài toán đối sánh đơn mẫu: Cho trước một chuỗi ký tự
gọi là văn bản và một chuỗi ký tự gọi là mẫu, xác định
xem văn bản có chứa mẫu hay không
• Bài toán đối sánh đa mẫu: Cho trước một chuỗi ký tự gọi
là văn bản và một tập hợp các mẫu (cũng là các chuỗi ký
tự), xác định xem văn bản có chứa mẫu nào hay không
• Hai thuật toán phổ biến nhất để giải quyết bài toán đối
sánh mẫu
 Boyer-Moore
 Aho-Corasick

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 188 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 189

Thuật toán Boyer-Moore (BM) Phương pháp duyệt toàn bộ


Văn bản (T) N K A N M A N K K B A A Văn bản
1
N K A N M A N K K B A A 5 Văn bản N K A N M A N K K B A A
Mẫu (P) K B A A Mẫu K B A A Mẫu K B A A

• Giải quyết bài toán đối sánh đơn mẫu 2


Văn bản N K A N M A N K K B A A 6 Văn bản N K A N M A N K K B A A
• Chuỗi ký tự cần tìm kiếm gọi là mẫu, ký hiệu P và có độ dài m Mẫu K B A A Mẫu K B A A

• Chuỗi ký tự được tìm kiếm trong đó gọi là văn bản, ký hiệu T và có


độ dài l 3 Văn bản N K A N M A N K K B A A 7 Văn bản N K A N M A N K K B A A
Mẫu Mẫu
• Bài toán: Xác định mẫu có xuất hiện trong văn bản không và nếu có K B A A K K B A A
xuất hiện bao nhiêu lần và ở vị trí nào
• Thuật giải duyệt toàn bộ 4 Văn bản N K A N M A N K K B A A 8 Văn bản N K A N M A N K K B A A
 Đặt P và T sao cho ký tự đầu tiên của 2 chuỗi thẳng hàng Mẫu K B A A Mẫu K B A A
 Dịch chuyển P sang bên phải từng ký tự một, so sánh P với các ký tự
thẳng hàng tương ứng của T xem có trùng khớp không Văn bản N K A N M A N K K B A A
 Quá trình kết thúc khi ký tự cuối cùng của P thẳng hàng với ký tự cuối 9
cùng của T Mẫu K B A A

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 190 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 191

Quy tắc dịch chuyển của BM (1) Quy tắc dịch chuyển của BM (2)
• Với mỗi bước so sánh P với T, nếu 1 2 3 4 5 6 7 8 9
1
0
1
1
1
2 • Nếu ký tự cuối cùng của mẫu
ký tự cuối cùng của mẫu không N K A N M A N K K B A A
trùng với ký tự tương ứng của
trùng với ký tự tương ứng của văn văn bản 1 2 3 4 5 6 7 8 9
1 1 1
K B A A 0 1 2
bản giả sử là σ, xét 2 trường hợp K B A A • So sánh từng ký tự của mẫu với N K A N M A N P K B A A
sau Bỏ
K B A A
ký tự tương ứng của văn bản. Có K B A A
1. σ không xuất hiện trong P. Dịch qua 2 trường hợp sau:
K B A A 1) B của T không trùng A của P
chuyển P sao cho toàn bộ P nằm 1. Nếu đến một ký tự nào đó 1 1 1
ngay bên phải σ
K B A A không có sự trùng khớp, dịch 1 2 3 4 5 6 7 8 9
0 1 2
1) σ = N không xuất hiện trong mẫu sang phải 1 ký tự để thực
2. Nếu σ có xuất hiện trong P, xác mẫu hiện bước tiếp theo
N K A N M A N P K B A A
đinh N nằm ngoài cùng bên phải N P A N M A N K K B A A 2. Nếu toàn bộ ký tự của mẫu
K B A A
của P. Dịch chuyển P sao cho σ trùng với các ký tự tương ứng 2)Tìm thấy mẫu trong văn bản
K B A A
của T thẳng hàng với σ của P Bỏ của văn bản, thông báo tìm
qua K B A A thấy mẫu trong văn bản
K B A A
K B A A
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 2) σ = K xuất hiện trong mẫu. 16 May 2021 | Page 192 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 193

32
2021/5/16

Xây dựng bảng delta Ví dụ thuật toán Boyer-Moore


• Xây dựng bảng delta[σ] cho mỗi 1 2 3 4 5 6 7 8 9 10 11 12
σ∊∑. delta[σ] cho biết số ký tự sẽ 1
N K A N M A N K K B A A ∑ = {A, B, K, M, N}
được dịch chuyển khi gặp σ trong • ∑ = {A, B, K, M, N} K B A A
văn bản Delta[] delta[N] = 4, dịch chuyển 4 ký tự
• P =KBAA A 0 2 1 2 3 4 5 6 7 8 9 10 11 12 A 0
• Nếu σ không xuất hiện trong mẫu N K A N M A N K K B A A
P, delta[σ] = độ dài mẫu • delta[A] = 0 B 2
K B A A
B 2

K 3 K 3
• Nếu σ xuất hiện trong mẫu P, • delta[B] = 2 3
delta[K] = 3, dịch chuyển 3 ký tự
M 4
M 4 1 2 3 4 5 6 7 8 9 10 11 12
delta[σ] = độ dài mẫu – j, với j là • delta[K] = 3 N 4 N K A N M A N K K B A A N 4

vị trí ngoài cùng bên phải σ xuất • delta[M] = 4


K B A A
delta[A] = 0 kiểm tra các ký tự tiếp theo Bảng
hiện trong P 4
• delta[N] = 4 1
N
2
K
3
A
4
N
5
M A
6 7
N
8
K
9
K
10
B
11
A
12
A
Delta

K B A A
delta[A] = 0 kiểm tra các ký tự tiếp theo

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 194 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 195

Thuật toán Wu-Manber Quy tắc dịch chuyển


Thuật toán Boyer-Moore được mở rộng bởi Wu và Manber cho Văn bản B M A N P A N A M A N A P B M A N P A N A M A N A P
phép đối sánh nhiều mẫu đồng thời Mẫu 1 N A M A N A N A M A N A
P = {p1,p2,…,pk} là một tập hợp các mẫu Mẫu 2 A M A N A B A M A N A B
Mỗi mẫu là một chuỗi ký tự với các ký tự lấy từ bảng chữ cái ∑ Mẫu 3 A B M A N A A B M A N A
T = t1 t2…tN là chuỗi ký tự để tìm kiếm các mẫu trong đó N A M A N A N A M A N A

m là độ dài nhỏ nhất của các mẫu A M A N A B A M A N A B


A B M A N A A B M A N A
Thay vì chỉ xét một ký tự như trong thuật toán Boyer-Moore, một
1) NPA không xuất hiện trong bất cứ 2) AMA xuất hiện trong 3 mẫu. Mẫu 1
block B ký tự sẽ được so sánh cùng một lúc mẫu nào. Cả 3 mẫu cùng dịch 4 ký tự được phép dịch 2 ký tự, mẫu 2 được
phép dịch 3 ký tự, mẫu 3 được phép
dịch 4 ký tự, cả 3 mẫu cùng dịch 2 ký tự

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 196 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 197

Xây dựng bảng SHIFT Xây dựng bảng HASH


• Khi SHIFT[X1…XB] = 0 tức là tồn B M A N P A N A M A N A P
• Cho trước một chuỗi ký tự bất Xét 3 mẫu tại các mẫu có B ký tự cuối cùng N A M A N A
kỳ có độ dài B, bảng SHIFT cho Mẫu 1 NAMANA trùng với B ký tự đang xét của T A M A N A B
biết số ký tự sẽ được dịch
chuyển khi gặp chuỗi ký tự đó Mẫu 2 AMANAB • Bảng HASH cho biết các mẫu đó A B M A N A

trong văn bản T Mẫu 3 ABMANA là mẫu nào


• Giá trị ban đầu SHIFT[X1…XB] Tính SHIFT[AMA] • HASH[X1…XB] chứa con trỏ trỏ
đến danh sách các mẫu với B ký
... ANA NPA ... AMA NBA
= m-B+1 Ban đầu SHIFT[AMA] = 6-3+1 = 4
tự cuối cùng là X1…XB .
• Xét từng mẫu pi = a1a2…am . Xét NAMANA→SHIFT[AMA] = 2 NULL

Xét các chuỗi ký tự con có độ • Xét từng mẫu pi = a1a2…am. NULL

Xét AMANAB →SHIFT[AMA] = 2


dài B của pij = aj-B+1…aj với B≤j
NAMANA AMANAB

Xét ABMANA→SHIFT[AMA] = 2 • Đưa đưa pi vào danh sách liên


≤ m. Ta có SHIFT[pij] = min kết mà HASH[am-B+1…am] trỏ tới
(SHIFT[pij], m-j) SHIFT[AMA] = 2 ABMANA Mẫu 1 NAMANA
Mẫu 2 AMANAB
Mẫu 3 ABMANA
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 198 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 199

33
2021/5/16

Ví dụ thuật toán Wu-Manber ĐỐI SÁNH MẪU TRÊN CHUỖI


NPA 4
AMA 2
NAB →AMANAB
ANA 0
ANA →NAMANA→ABMANA
NAP 4
NAB 0 Bảng HASH
1 Bảng SHIFT 2
B M A N P A N A M A N A P B M A N P A N A M A N A P
N A M A N A N A M A N A
A M A N A B A M A N A B
A B M A N A A B M A N A

3 B M A N P A N A M A N A P 4B M A N P A N A M A N A P
N A M A N A N A M A N A
A M A N A B A M A N A B
A B M A N A A B M A N A
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 200 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 201

Automaton của Aho-Corasick


P = {p1,p2,…,pk} là một tập hợp các mẫu, mỗi mẫu là một chuỗi ký tự • Thuật toán Aho-Corasick hoạt động thông qua
việc xây dựng và vận hành một automaton hữu 0 1: ushers

T = t1 t2…tm là chuỗi ký tự để tìm kiếm các mẫu trong đó và được gọi hạn 1

là văn bản • Automaton của thuật toán Aho-Corasick là một 2: ushers

Các ký tự của mẫu và văn bản được lấy ra từ bảng chữ cái ∑ máy hữu hạn trạng thái (finite-state machine) 2 {he}

Bài toán: Xác định các mẫu trên có xuất hiện trong văn bản và nếu được xây dựng từ tập mẫu P. 3

 Mỗi trạng thái được đại diện bằng một con số. 3: ushers
có thì xuất hiện bao nhiêu lần và ở vị trí nào  Trạng thái ban đầu thường được đại diện bởi số 0. 4: ushers
4

Thuật toán Aho-Corasick (AC) đưa ra lời giải cho bài toán trên với độ  Hàm chuyển trạng thái t = δ (s, a) cho biết chuyển 5 {she, he}

phức tạp O(n+m+z) với z là số lần xuất hiện của các mẫu và n là đến trạng thái nào từ trạng thái hiện thời và ký tự
đầu vào
tổng độ dài của các mẫu
6

 Mỗi trạng thái được liên kết với một tập con của 5: ushers
mẫu (có thể là rỗng) cho biết các mẫu của tập con 7 {his}

này đã được tìm thấy


• Ví dụ: automaton cho tập mẫu P = {he, she,
8
6: ushers

his, hers}; Văn bản T = ushers 9 {hers}

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 202 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 203

Hoạt động của automaton Aho-Corasick Hàm chuyển trạng thái δ


• Hoạt động của automaton dựa trên các chu Trạng thái Ký tự đầu Trạng thái Trạng thái Ký tự đầu Trạng thái
trình 0 1: ushers hiện thời vào tiếp theo hiện thời vào tiếp theo
 Chu trình đầu tiên: Bắt đầu từ trạng thái 0, đọc 0 h 1 9, 7, 3 h 4
ký tự đầu tiên của văn bản và chuyển sang 1
s 3 s 3
trạng thái tiếp theo căn cứ trên ký tự này và 2: ushers
trạng thái hiện thời 2 {he} . 0 . 0
 Chu trình thứ hai: Đọc ký tự thứ hai của văn 3
1 e 2 5, 2 r 8
bản và chuyển sang trạng thái tiếp theo dựa 3: ushers i 6 h 1
trên ký tự này và trạng thái hiện thời 4
h 1 s 3
 Lần lượt làm như trên cho đến chu trình cuối 4: ushers

cùng: đọc ký tự cuối cùng của văn bản, chuyển 5 {she, he}
s 3 . 0
đến trạng thái cuối cùng và ngừng hoạt động . 0 6 s 7
 Khi đến trạng thái liên kết với một tập con khác 6
4 e 5 h 1
rỗng của P, in các mẫu của tập con đó ra. Đó là 5: ushers
i 6 . 0
các mẫu xuất hiện trong văn bản 7 {his}

h 1 8 s 9
 Ví dụ: automaton cho tập mẫu P = {he, she, 8

his, hers}; Văn bản T = ushers 6: ushers s 3 h 1


9 {hers} . 0 . 0
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 204 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 205

34
2021/5/16

Hàm goto ≠{h,s}


e
Hàm failure
h r s
0 1 2 8 9

• Hàm chuyển trạng thái được xây dựng dựa trên hàm i s
• Hàm failure f: f(trạng thái) = trạng thái
goto và hàm failure 6 7
• Hàm failure được xây dựng dựa trên hàm goto
i 1 2 3 4 5 6 7 8 9

• Hàm goto g s
h e • f(s) = 0 cho tất cả các trạng thái kề với trạng thái 0.
f(i) 0 0 0 1 2 0 3 0 3
• g(trạng thái, ký tự đầu vào) = trạng thái 3 4 5
Ví dụ: f(1) = 0, f(3) = 0.
• hoặc g(trạng thái, ký tự đầu vào) = fail. Đồ thị hàm goto cho • Bắt đầu từ node gốc 0, các node được thăm theo ≠{h,s}

• Ví dụ: đồ thị hàm goto cho tập mẫu P = {he, she, his, tập P = {he, she, his, phương pháp tìm kiếm theo chiều rộng: các node 0
h
1
e
2
r
8
s
9
hers} hers} ở gần gốc hơn được thăm trước
 g(1, e) = 2; g(1, i) = 6; h e i s

 g(1, σ) = fail với σ ≠ {e, i} do đó g(1,h) = fail; g(1, r) = fail… 0 1 2 • Giả sử ta muốn tìm giá trị hàm failure cho trạng 6 7

 Riêng g(0, σ) ≠ fail với mọi σ h e


thái s. Tìm trạng thái r và ký tự a sao cho g(r,a) = s
0 1 2 s: h e
• Xây dựng đồ thị hàm goto: s
a) Đặt u1 = f(r), u2 = f(u1), u3 = f(u2) … cho đến khi g(uk,
3 4 5

 Các node tương ứng với các trạng thái, các cạnh tương h e a) ≠ fail
ứng với các ký tự 3 4 5
b) Đặt f(s) = g(uk, a)
 Bắt đầu với trạng thái 0 h e • Tính f(2): ta có g(1, e) = 2 nên đặt u1 = f(1) = 0; vì g(0,e) =
 Lần lượt thêm các mẫu vào đồ thị 0 1 2 0 ≠ fail nên f(2) = 0
 Mỗi mẫu được thêm bằng cách thêm một đường đi có • Tính f(5): ta có g(4, e) = 5 nên đặt u1 = f(4) = 1; vì g(1, e)
hướng từ trạng thái đầu tiên sao cho các cạnh của đường i s
= 2 ≠ fail nên f(5) = 2
đi đó tương ứng với mẫu đó. 6 7

s h e
3 4 5
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 206 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 207

Hàm output Xây dựng hàm chuyển trạng thái


≠{h,s}

• Hàm output liên kết một trạng thái {he} h e r s


≠{h,s}
h e r s
• Xây dựng hàm chuyển trạng thái δ từ hàm 0 1 2 8 9

với một tập con của tập mẫu P 0 1 2 8 9 {hers} goto và hàm failure i
6
s
7

(có thể là rỗng) cho biết đã tìm i


• Bắt đầu từ node gốc 0, các node được
s
thăm theo phương pháp tìm kiếm theo s

thấy tập con đó trong văn bản


h e
6 7 {his} 3 4 5
chiều rộng
i 1 2 3 4 5 6 7 8 9
• Hàm output được xây dựng đồng s
3
h
4
e
5 {she, he}
• Nếu g(s, a) ≠ fail δ(s, a) = g(s, a)
f(i) 0 0 0 1 2 0 3 0 3
thời với hàm goto. Mẫu kết thúc • Nếu không δ(s, a) = δ(f(s), a)
tại trạng thái nào thì liên kết với i output(i) • δ(4, e) = g(4, e) = 5 Trạng
thái
Ký tự
đầu
Trạng
thái tiếp
Trạng
thái
Ký tự
đầu
Trạng
thái tiếp
trạng thái đó 0 ∅ • δ(4, i) = δ(f(4), i) = δ(1, i) = 6 hiện vào theo hiện vào theo
thời thời
1 ∅ • δ(4, h) = δ(f(4), h) = δ(1, h) = 1
• Hàm output còn được cập nhật 2 {he}
• δ(4, s) = δ(f(4), s) = δ(1, s) = 3
0 h 1 3 h 4

bởi hàm failure. Ví dụ, f(5) = 2 mà 3 ∅


• δ(4, .) = δ(f(4), .) = δ(1, .) = 0
s 3 s 3

4 ∅ . 0 . 0
output(2) = he nên output(5) =
5 {she, he} 1 e 2 4 e 5
output(5) ∪ output(2) = {she, he} 6 ∅ i 6 i 6

7 {his} h 1 h 1
8 ∅ s 3 s 3
9 {hers} . 0 . 0
Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 208 Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 209

So sánh Wu-Manber và Aho-Corasick

Wu-Manber Aho-Corasick
Cấu trúc dữ liệu của Đơn giản, chủ yếu là danh Phức tạp, chủ yếu là
chữ ký mã độc sách liên kết cây tiền tố (trie)
Quá trình tiền xử lý Đơn giản Phức tạp
Khả năng quét Không hiệu quả bằng Aho- Tối ưu cho việc quét
nhiều mẫu đồng thời Corasick nhiều mẫu đồng thời
Format chữ ký mã Thích hợp với các chữ ký Thích hợp với các chữ
độc dài và cố định ký sử dụng ký tự thay
thế (wildcard, có dạng
aabbcc*bbaacc )

Bảng so sánh một số tính chất của Wu-Manber và Aho-Corasick

Bộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 210

35

You might also like