Professional Documents
Culture Documents
SV Thuat Toan Trong ATTT Bai Giang-Ver3
SV Thuat Toan Trong ATTT Bai Giang-Ver3
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
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ộ 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
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
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.
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
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
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
4
2021/5/16
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
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
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
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))
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
6
2021/5/16
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)
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
2. r ← 𝑧 𝑚𝑜𝑑 𝑏𝑘−1 − 𝑞.
ො 𝑝 𝑚𝑜𝑑𝑏𝑘−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
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.
9
2021/5/16
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
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
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
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
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
12
2021/5/16
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
Sinh tất cả các bội của số nguyên tố đã cho (nhỏ hơn 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 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
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
𝑝 = 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
■ Với n vừa phải, việc sử dụng bộ nhớ cache của nó là không tối ưu
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
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
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
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
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
■ 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
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
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
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
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
● 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
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ộ 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
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
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
■ 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ộ 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 = ?
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
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
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à
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
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
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
xác định trước, có thể thực hiện: Đầu ra: Một số nguyên tố có thể k-bit
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
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ộ 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
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
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
26
2021/5/16
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
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
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
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
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
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
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}
■ => 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}
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
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
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
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
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
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
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
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
33
2021/5/16
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
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
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}
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
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
34
2021/5/16
• 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
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
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
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
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ộ môn Khoa Học An Toàn Thông Tin – Khoa An Toàn Thông Tin 16 May 2021 | Page 210
35