Professional Documents
Culture Documents
Phuong Phap So Mu Lon
Phuong Phap So Mu Lon
GIỚI THỆU:
Trong các bài toán mã hoá công khai, chúng ta sử dụng nhiều phép toán lũy thừa
với số mũ lớn, ví dụ như RSA, khi cả công việc mã hóa và giải mã đểu liên quan
đến việc xử lý lũy thừa rất lớn theo modulo. Việc đơn thuần tính lũy thừa đó rất
tốn thời gian và tài nguyên của máy tính vì giá trị rất lớn.
Sau đây, bọn em sẽ trình bày một số thuật toán, định lý để đơn giản hóa quá trình
này.
Nếu tính trực tiếp giá trị 3200 rồi mới mod 50 có thể gây lỗi tràn bộ nhớ trên máy
tính vì giá trị khá lớn, một số ngôn ngữ lập trình sẽ bắt phải sử dụng thư viện khác
lớn hơn. Như vậy cần có thuật toán nhanh hiệu quả đối với phép toán này. Nhớ lại
công thức của số học mô đun:
Như vậy, chúng ta có thể rút gọn các kết quả trung gian theo modulo n. Điều này
làm cho việc tính toán trở nên đơn giản hơn rất nhiều.
Cụ thể ở thuật toán này, ta muốn tìm giá trị của ab với a, b là số nguyên dương.
Nếu ta phân tích số mũ b dưới dạng nhị phân: b k , b k−1 , … b0 , ta có thể viết b dưới
dạng:
Ta có:
Với i = 0, 31 mod 50 = 3
Với i = 1, 32 mod 50 = 9
i 0 1 2 3 4 5 6 7
i
1 2 4 8 16 32 64 128
32 3 3 3 3 3 3 3 3
i
2
3 (mod 50) 3 9 31 11 21 41 31 11
Từ đó:
[( 3 mod 50 ) . ( 3 2 mod 50 ) . ( 3 2 mod 50 ) ] mod 50¿ ( 11.31.11 ) mod 50=3751mod 50=1
7 6 3
2
Một cách phát biểu khác: nếu p là số nguyên tố và a là số nguyên không chia hết
cho p, thì ap-1 – 1 sẽ chia hết cho p:
Cũng có 1 cách phát biểu khác là: Nếu p là một số nguyên tố và a là số nguyên
không chia hết cho p. thì ap-1 – 1 sẽ chia hết cho p.
Ta thấy 241 là số nguyên tố và 283 không chia hết cho 241, áp dụng đinh lý
Fermat:
a p−1 ≡1( mod p)
240
¿>283 mod 241=1
Quy về bài toán bình phương liên tiếp, ta tính được 283141 mod 241=168
1821
Vậy 283 mod 241=168
Ứng dụng:
Kết quả trên được dùng trong mã khoá công khai. Nó cũng được sử dụng để kiểm
tra tính nguyên tố của một số nguyên p nào đó, bằng cách lấy ngẫu nhiên các số a
và kiểm tra xem có tính chất nêu trên không, kết luận là p nguyên tố càng thuyết
phục nếu phép thử trên đúng với nhiều lần chọn ngẫu nhiên các số a.
Định lý Euler:
Định lý Euler phát biểu nếu n là số nguyên dương bất kỳ và a là số nguyên tố cùng
nhau với n thì:
a φ ( n) ≡ 1(mod n)
a φ ( n) mod n=1
Ví dụ:
1. φ ( 1 )=1.
2. φ ( p )= p−1 nếu p là số nguyên tố .
3. φ ( p e ) =p e −p e−1 nếu p là số nguyên tố .
4. φ ( m ×n ) =φ ( m ) × φ ( n ) nếu m và n nguyên tố cùng nhau .
5. φ ( m ×n ) =( m−1 ) × ( n−1 ) nếu m và n là 2 số nguyêntố khác nhau .
Ví dụ: Tính 2831821 mod 242
Ta nhận thấy 242 không phải số nguyên tố, vì vậy không áp dụng được định lý
Fermat. Ta sử dụng định lý Euler.
Trước hết, tách số modulo 242 dưới dạng thừa số nguyên tố: 242 = 2 * 112
Vì 2 và 112 = 121 nguyên tố cùng nhau, áp dụng tính chất của hàm phi euler
φ ( m ×n ) =φ ( m ) × φ ( n ) :
Vì 2 là số nguyên tố, áp dụng tính chất của hàm phi Euler φ ( p )= p−1 :
φ ( 2 )=1
Vì 11 là số nguyên tố, áp dụng tính chất của hàm phi Euler: φ ( p e ) =p e −p e−1:
φ ( 11 ) =11 −11 =110
2 2 2−1
Từ đó, ta có:
Ta có 283, 242 là hai số nguyên tố cùng nhau vì có ước chung lớn nhất bằng 1, áp
dụng định lý Euler:
a φ ( n) mod n=1
Biểu diễn 18211 qua giá trị hàm phi của 242 (tức 110): 1821 = 110*16 + 61
1821 110× 16+61 61
283 mod 242=283 mod 242=283 mod 242
Quy về bài toán bình phương liên tiếp, ta tính được 28361 mod 242=19
1821
Vậy , 283 mod 242=19
Ứng dụng: Định lý Euler cũng là định lý cơ bản của các hệ thống mã hóa RSA
MÔ PHỎNG:
THAM KHẢO:
http://eldata11.topica.edu.vn/HocLieu/v1.0/IT201/Giao%20trinh/
05.%20IT201_Bai%203_v1.0011103219.pdf
3-Cryptography-and-Network-Security-Principles-and-Practice_-5th-Edition.pdf
https://www.youtube.com/watch?
v=t0jZDNKuUWs&list=PL1MYBVskDVJXW6D9mwvaX37nNbeGVfAbP
https://vi.wikipedia.org/wiki/Định_lý_Euler
https://en.wikipedia.org/wiki/Euler%27s_totient_function
https://vi.wikipedia.org/wiki/Định_lý_nhỏ_Fermat