1. Trang chủ
  2. » Công Nghệ Thông Tin

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

14 2,9K 16

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 129,14 KB
File đính kèm BTL.zip (26 KB)

Nội dung

Bài Tập lớn cơ sở lý thuyết mật mã: sinh số nguyên tố ngẫu nhiên bao gồm cả code project java và bản .docxTỔNG QUAN VỀ SỐ NGUYÊN TỐĐị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ó.Tính chất của số nguyên tốƯớc tự nhiên khác 1 nhỏ nhất của một số tự nhiên n là số nguyên tố.Cho p là số nguyên tố; a N; a 0. Khi đó(a,p)=p ⇔a⋮p(a,p)=1 ⇔a pNế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.∏_(i=1)N▒〖a_i ⋮ p → ∃a_i ⋮p〗Ướ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á 2 là số nguyên tố nhỏ nhất và cũng là số nguyên tố chẵn duy nhấtTậ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).

Trang 1

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

Trang 2

Ý KIẾN CỦA GIẢNG VIÊN

Trang 3

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

Trang 4

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

Trang 5

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 n− =1 2h 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

:

(a m ≡1 mod n) ∨ ∃ <k h a( 2k m ≡ −1 mod n)

Nếu n là hợp số thì :

4

k

b Thuật toán

Thuật toán kiểm tra số nguyên n có dạng –1 2

h

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:

Trang 6

1 Chọn ngẫu nhiên một số nguyên a thoả mãn 1 < <a n– 1

2 Tính

gcd ( , )

Nếu d >1

thì “n là hợp số” và dừng.

3 Tính b a= m mod n

Nếu b=1

thì “n là số nguyên tố” và dừng.

4 Với b= ÷0 h-1

thực hiện:

Nếu b n= −1

thì “n là số nguyên tố” và dừng.

Ngược lại tính, tính

2

mod

.

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

Trang 7

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

* : (N 1) / 2 1 mod

N

* : (N 1) / 2 1 mod

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ố.

Trang 8

Các bước thực hiện:

1 Đặt a=2;

2 Phân tích

.

3 Kiểm tra

- Nếu r 0=

thì trả lời “ N là hợp số”.

- Nếu r 0≠

thì kiểm tra:

 Nếu aN

thì dừng: N là số nguyên tố;

 Nếu a< N

thì đặt a = +a 1

; 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 s≥2

Số Mersenne là số nguyên dạng 2s −1

Nếu 2s −1

là số nguyên tố thì nó được gọi là số nguyên tố Mersenne

b Định lý

Cho s≥3

Số Mersenne n=2s −1

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

4

u =

2

với k≥0

thỏa mãn 2

0

s

u − =

c Mô tả thuật toán

Trang 9

Đầu vào: Số Mersenne n=2s −1

với s≥3

Đầ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 u=4

.

3 Với k từ 1 đến s−2

, tính

2 2 (mod )

4 Nếu u 0=

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

Trang 10

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 N −1

, 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

Trang 11

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 2k < 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 C p0( )

.

2 Nếu k ≤2M

, lấy r 1 / 2=

Ngược lại, thực hiện lặp lại điều dưới đây cho đến khi krk > M

.

Lựa chọn ngẫu nhiên một số thực s, 0 1≤ ≤s

, và lấy

1

2s

r = −

3 Lấy 1

1

k = rk +

Gọi đệ qui thuật toán này với đầu vào là k1

, để

xác định một số nguyên tố q có độ dài k1

bít và một chứng nhận

( )

C q

.

4 Lấy

Trang 12

5 Chọn ngẫu nhiên số nguyên R sao cho t < ≤R 2t

và lấy

6 Chọn một số nguyên a với

1 – 1< a < p

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

(p 1)(mod ) 1

2

gcd(a R −1, ) 1p =

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 =

Trang 13

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 < 2k

- 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 < 2k đượ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

Trang 14

- Mặt khác, bước 2 của thuật toán q là số nguyên tố có số bít làk1 

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ố

Ngày đăng: 23/09/2015, 20:13

TỪ KHÓA LIÊN QUAN

w