Tải bản đầy đủ (.docx) (14 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (150.74 KB, 14 trang )

HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TOÀN THÔNG TIN

BÁO CÁO BÀI TẬP LỚN MÔN HỌC
CƠ SỞ LÝ THUYẾT MẬT MÃ
Chủ Đề 2:
TÌM HIỂU CÁC THUẬT TOÁN SINH SỐ NGUYÊN TỐ
Giảng viên: Nguyễn Văn Nghị
Sinh viên thực hiện:
Nguyễn Thị Huyền
Đinh Đăng Thống
HÀ NỘI, 2015
Ý KIẾN CỦA GIẢNG VIÊN
MỤC LỤC
LỜI NÓI ĐẦU
Mật mã học là một ngành có lịch sử hàng nghìn năm nay, nó gắn liền với
nhu cầu bảo mật an toàn thông tin của con người ngay từ thời cổ đại. Sự ra
đời của mạng máy tính đã có tác động rất lớn đến sinh hoạt chung của loài
người. Mạng máy tính ra đời giúp cho con người dễ dàng trao đổi thông tin,
chia sẻ dữ liệu, v.v… một cách nhanh chóng mà không cần quan tâm đển
khoảng cách về địa lý. Bên cạnh ích lợi cũng tồn tại hiểm họa. Tiêu biểu là
hiểm họa lộ thông tin. Để phòng chống hiểm họa này các nhà khoa học đã
nghiên cứu, phát triển các hệ mật khác nhau.
Nhằm đảm bảo an toàn thông tin, nhiều hệ mật mã ra đời gần đây có sử
dụng các số nguyên tố như là một tham số thiết yếu. Vì vậy, số nguyên tố là
một đề tài thu hút được nhiều sự quan tâm của các chuyên gia mật mã. Nhận
thấy tầm quan trọng của số nguyên tố, cùng tinh thần học tập cao nhóm chọn
đề tài nghiên cứu “Tìm hiểu các thuật toán sinh số nguyên tố”.
Do kiến thức còn hạn chế, bản báo cáo không thể tránh khỏi những thiếu
sót mong sự góp ý của thầy cô và các bạn đọc giúp bản báo cáo hoàn thiện
hơn.


Page | 3
Chương I. TỔNG QUAN VỀ SỐ NGUYÊN TỐ
1. Định nghĩa số nguyên tố
Số nguyên tố là số chỉ có 2 ước, đó là 1 và chính nó. Tức là nó chỉ chia
hết cho số 1 và chính nó.
2. Tính chất của số nguyên tố
1. Ước tự nhiên khác 1 nhỏ nhất của một số tự nhiên n là số nguyên tố.
2. Cho p là số nguyên tố; a N; a 0. Khi đó
3. Nếu tích của nhiều số chia hết cho một số nguyên tố p thì có ít nhất
một thừa số chia hết cho p.
4. Ước số dương bé nhất khác 1 của một hợp số a là một số nguyên tố
không vượt quá
5. 2 là số nguyên tố nhỏ nhất và cũng là số nguyên tố chẵn duy nhất
6. Tập hợp các số nguyên tố là vô hạn (tương đương với việc không có
số nguyên tố lớn nhất).
3. Ứng dụng của số nguyên tố trong mật mã
Các số nguyên tố lớn là một trong các tham số an toàn quan trọng trong
các thuật toán lược đồ mật mã hiện đại như thuật toán mã hoá khoá công khai
RSA, lược đồ chữ ký số RSA, lược đồ trao đổi khoá Diffie-Hellman, lược đồ
mã hoá Elgammal. Số nguyên tố lớn góp phần vào việc tăng độ an toàn của
các hệ mật.
Page | 4
Chương II. MỘT SỐ THUẬT TOÁN SINH SỐ NGUYÊN TỐ
Theo chuẩn ISO/IEC 18032, các thuật toán sinh số nguyên tố được chia
thành hai loại:
- Các thuật toán dựa trên các phép kiểm tra tính nguyên tố xác xuất
- Các thuật toán sinh số nguyên tố tất định.
1. Một số thuật toán sinh số nguyên tố xác suất
Xác suất sai phụ thuộc vào phép kiểm tra được dùng. Xác suất mà một
hợp số được chấp nhận là không đáng kể. Để giảm thiểu xác suất sai, người ta

thường thực hiện nhiều vòng lặp với cùng một đầu vào.
1.1. Một số phép kiểm tra tính nguyên tố
1.1.1. Phép kiểm tra tính nguyên tố Miller-Rabin
a. Định lý
Cho n là số nguyên dương lẻ, ta viết
1 2
h
n m− =
, với m là số lẻ. Nếu
n là số nguyên tố thì với mọi số nguyên dương
a n<
:
( )
(
)
2
1 mod 1 mod .
k
m m
a n k h a n≡ ∨ ∃ < ≡ −
Nếu n là hợp số thì :
(
)
{ }
2
1
: 1 1, ( 1mod ) 1 mod
4
k
m m

n
a a n a n k h a n

≤ ≤ − ≡ ∨ ∃ < ≡ − ≤
b. Thuật toán
Thuật toán kiểm tra số nguyên n có dạng
–1 2
h
n m=
với m lẻ.
Đầu vào: h,m,n
Đầu ra: “n là số nguyên tố” hoặc “n là hợp số”
Các bước thực hiện:
Page | 5
1. Chọn ngẫu nhiên một số nguyên a thoả mãn
1 – 1a n< <
2. Tính
gcd ( , )d a n=
Nếu
1d >
thì “n là hợp số” và dừng.
3. Tính
mod
m
b a n=
Nếu
1b =
thì “n là số nguyên tố” và dừng.
4. Với
0 -1b h= ÷

thực hiện:
Nếu
1b n= −
thì “n là số nguyên tố” và dừng.
Ngược lại tính, tính
2
modb b n=
.
5. Kết luận “n là hợp số” và dừng.
Chú ý:
- Phép kiểm tra chỉ chấp nhận các số mà tất cả các vòng lặp đều chấp
nhận. Bởi vậy phép kiểm tra có thể dừng sớm khi một cơ sở không
dẫn đến việc chấp nhận.
- Với mỗi a, xác suất để chấp nhận nhầm n là số nguyên tố không quá
1/ 4
.
- Nếu chọn k số a độc lập với nhau và cả k lần đều kết luận “n là số
nguyên tố” thì xác suất phạm sai lầm không quá
1/ 4
k
.
- Các thuật toán xác suất tuy không khẳng định chính xác được một số
có là nguyên tố hay không nhưng chúng lại được dùng làm công cụ kỹ
thuật cho các thuật toán tất định.
Page | 6
1.1.2. Phép kiểm tra tính nguyên tố Lehman
Phép kiểm tra Lehmann dựa trên một thực tế sau: Số nguyên lẻ N > 1 là
nguyên tố khi và chỉ khi
* ( 1)/ 2
: 1 mod

N
N
a Z a N

∀ ∈ ≡ ±

* ( 1)/ 2
: 1 mod
N
N
a Z a N

∃ ∈ ≡ −
.
Đầu vào: số cần kiểm tra N và một tham số t
Đầu ra: “N là số nguyên tố” hoặc “N là hợp số”
Các bước thực hiện:
1. Lấy f = “false”
2. Thực hiện t lần
- Chọn ngẫu nhiên một số nguyên b, 1 < b < N – 1
- Lấy y = b
(N-1)/2
mod N
- Nếu y ≠ 1 và y ≠ N – 1 thì trả về “không chấp nhận”
- Nếu y = N – 1 thiết lập f = “true”
3. Nếu f = “true” thì trả về “chấp nhận”, ngược lại trả về “không
chấp nhận”
1.1.3. Thuật toán sàng Eratosthenes
a. Định lý
Số nguyên dương

n là nguyên tố nếu và chỉ nếu nó không chia
hết cho bất kỳ số nguyên d nào thoả mãn
1 d < n<
b. Thuật toán
Đầu vào: Số N cần kiểm tra.
Đầu ra: Trả lời N là số nguyên tố hoặc N là hợp số.
Page | 7
Các bước thực hiện:
1. Đặt
2;a
=
2. Phân tích
N q a r= × +
.
3. Kiểm tra
- Nếu
0r =
thì trả lời “ N là hợp số”.
- Nếu
0r ≠
thì kiểm tra:
 Nếu
a N≥
thì dừng: N là số nguyên tố;
 Nếu
a N
<
thì đặt
1a a= +
; và quay về bước 2.

1.1.4. Thuật toán Lucas- Lehmer kiểm định các số Mersenne
a. Định nghĩa số Mersenne
Cho số nguyên
2s ≥
. Số Mersenne là số nguyên dạng
2 1
s

.
Nếu
2 1
s

là số nguyên tố thì nó được gọi là số nguyên tố Mersenne.
b. Định lý
Cho
3s ≥
. Số Mersenne
2 1
s
n = −
là nguyên tố nếu và chỉ nếu hai điều
kiện sau đây được thỏa mãn:
- s là nguyên tố.
- Dãy các số nguyên được xác định bởi
0
4u =

2
1

( 2)mod
k k
u u n
+
= −
với
0k ≥
thỏa mãn
2
0
s
u

=
.
c. Mô tả thuật toán
Page | 8
Đầu vào: Số Mersenne
2 1
s
n = −
với
3s ≥
.
Đầu ra: Trả lời n là số nguyên tố hoặc n là hợp số.
Các bước thực hiện:
1. Chia thử để kiểm tra xem s có ước nào nằm giữa 2 và
 
s
. Nếu

có, trả lời “n là hợp số”. Dừng;
2. Đặt
4u =
.
3. Với k từ 1 đến
2s −
, tính
2
2 (mod )u u n= −
4. Nếu
0u =
thì trả lời “n là số nguyên tố”, dừng. Ngược lại, trả
lời “n là hợp số”. Dừng
1.2. Một số thuật toán sinh số nguyên tố xác suất
Giả sử T là một trong những phép kiểm tra tính nguyên tố. Xác suất sai
của T phụ thuộc vào số vòng lặp kiểm tra. Các thuật toán sinh số nguyên tố
xác suất có sử dụng chung đầu vào k – độ dài của số nguyên tố cần sinh (đơn
vị tính là bit).
1.2.1. Thuật toán lựa chọn ngẫu nhiên
Các bước thực hiện
1. Chọn ngẫu nhiên một số nguyên lẻ N sao cho 2
k-1
< N < 2
k

2. Nếu N qua được phép kiểm tra T thì dừng. Còn không quay lại
bước 1
1.2.2. Thuật toán tìm kiếm tăng dần
Các bước thực hiện:
1. Chọn ngẫu nhiên số lẻ n

0
sao cho 2
k-1
< n
0
< 2
k
.
Page | 9
Lấy N = n
0
và N
max
= min(2
k
, n
0
+ 2
µ
). Thực hiện thủ tục dưới
đây:
2. Nếu N qua được phép kiểm tra T, cho đầu ra là N và dừng
3. Lấy N = N+2. Nếu N>N
max
quay lại bước 1, còn không quay về
bước 2.
Trong thuật toán có xuất hiện tham số µ. Tham số này giới hạn lượng
tăng dần khi thực hiện tìm kiếm một số nguyên tố. Có một gợi ý rằng sử dụng
tham số
µ

= 10ln(2
k
). Kết quả này cho xác suất cao trong việc tìm thấy một số
nguyên tố trong khoảng đầu tiên và phân bố của các số nguyên tố tìm được
hầu như là đều.
2. Một số thuật toán sinh số nguyên tố tất định
2.1. Cơ sở lý thuyết
2.1.1. Định lý Pocklington
Cho s là ước dương của
1N −
,
s N>
. Giả sử có một số nguyên a
thoả mãn:

với mọi ước nguyên tố q của s. Khi đó N là số nguyên tố.
2.1.2. Phép chia thử kiểm tra tính nguyên tố
Tính nguyên tố của một số nguyên N có thể được chứng minh bởi phép
chia thử. Được thực hiện như sau:
1.Với tất cả các số nguyên tố p ≤ N
1/2
, nếu N mod p = 0 thì kết luận N là
hợp số, kết thúc.
2.Kết luận N là nguyên tố, kết thúc.
Với các số nguyên nhỏ, phương pháp chia thử mất ít thời gian tính toán
hơn các phương pháp kiểm tra khác. Các cài đặt cho việc kiểm tra tính
Page | 10
nguyên tố trong chuẩn này có thể định nghĩa một cận cho phép chia thử L,
dưới giá trị này phép chia thử được sử dụng để kiểm tra tính nguyên tố của
các số nguyên. Chuẩn này không thiết lập giá trị cho L.

2.2. Thuật toán sinh số nguyên tố của Maurer
Đầu vào: k (độ dài của số nguyên tố cần sinh).
Đầu ra: Số nguyên tố p và một chứng nhận tính nguyên tố của nó,
( )
C p
.
Các bước thực hiện:
1. Nếu
2
k
L<
thì sinh ngẫu nhiên một số nguyên lẻ p có độ dài k bít,
sau đó kiểm tra tính nguyên tố bằng phép chia thử kiểm tra tính
nguyên tố. Lặp lại cho đến khi p là một số nguyên tố. Cho đầu ra p
và chứng nhận
( )
0
C p
.
2. Nếu
2k M≤
, lấy
1/ 2r =
. Ngược lại, thực hiện lặp lại điều dưới
đây cho đến khi
k rk M− >
.
Lựa chọn ngẫu nhiên một số thực
, 0 1s s≤ ≤
, và lấy

1
2
s
r

=
3. Lấy
1
1k rk= +
 
 
. Gọi đệ qui thuật toán này với đầu vào là
1
k
, để
xác định một số nguyên tố q có độ dài
1
k
bít và một chứng nhận
( )
C q
.
4. Lấy
Page | 11
5. Chọn ngẫu nhiên số nguyên R sao cho
2t R t< ≤
và lấy
2 1p Rq= +
6. Chọn một số nguyên a với
1 – 1a p< <

. Nếu thỏa mãn các điều
kiện :

( 1)
(mod ) 1
p
a p

=

2
gcd( 1, ) 1
R
a p− =
thì cho đầu ra p và chứng nhận
( ) ( )
, , , p q a C q
7. Ngược lại, lặp lại các bước từ 5 đến 7.
2.3. Thuật toán sinh số nguyên tố của Shawe-Taylor
2.3.1. Thuật toán
Thuật toán sử dụng duy nhất một tham số: L, giới hạn phép chia thử.
Đầu vào: số nguyên k – số bit của số nguyên tố cần sinh
Đầu ra: số nguyên tố N
Các bước thực hiện:
1. Nếu 2
k
< L thì sinh ngẫu nhiên một số nguyên lẻ k bít, N, và kiểm
tra tính nguyên tố bằng cách chia thử. Lặp lại cho đến khi N là
một số nguyên tố. Cho đầu ra N và dừng.
2. Nếu k lẻ, lấy k

1
= . Nếu k chẵn lấy k
1
= . Gọi đệ qui thuật toán
này với đầu vào là k
1
, để tìm một số nguyên tố k
1
bít q.
3. Chọn ngẫu nhiên số nguyên x, 2
k-1

x < 2
k
4. Lấy t =
Page | 12
5. Nếu 2tq + 1

2
k
, thì lấy t=
6. Lấy N = 2qt + 1
7. Lựa chọn ngẫu nhiên một số nguyên a sao cho 1 < a < N – 1 và
lấy x = a
2t
mod N. Nếu:
• x

1
• gcd(x – 1, N) = 1

• x
q
 1 mod N
thì cho đầu ra là N
8. Ngược lại lấy t = t + 1 và lặp lại các bước từ 5 đến 8.
2.3.2. Tính đúng đắn của thuật toán
a. Số nguyên N ở đầu ra thuật toán có độ dài đúng k bít
- Qua bước 5 và bước 6 của thuật toán chúng ta thấy
N = 2qt + 1 < 2
k
- Qua bước 4 của thuật toán ta có t > x/2q, kết hợp với việc chọn
2
k-1

x < 2
k
được chọn tại bước 3 của thuật toán nên ta có:
t ≥ 2
k-1
/2q. Thay giá trị t vào công thức tính N ta có:
N = 2qt + 1 ≥ 2(2
k-1
/2q)q + 1 = 2
k-1
+ 1
Như vậy ta có 2
k-1
+ 1



N < 2
k
. Nói cách khác: N có độ dài đúng k bit
b. Số N ở đầu ra thuật toán là số nguyên tố
Tính nguyên tố của số N được đảm bảo bởi các phép tính toán và kiểm
tra trong bước 7 của thuật toán. Cụ thể:
- Điều kiện 1
x
q
= 1 mod N  a
2tq
= 1 mod N  a
(N-1)
= 1 mod N.
- Điều kiện 2
gcd(x - 1, N) = 1  gcd(a
2t
–1, N)=1  gcd(a
(N-1)/q
– 1, N) = 1.
Page | 13
- Mặt khác, bước 2 của thuật toán q là số nguyên tố có số bít làk
1

k/2 + 1. Do đó q 
N
.
Thỏa mãn được các điều kiện trên, số N đã thỏa mãn định lý
Pocklington. Như vậy N là số nguyên tố.
Page | 14

×