1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÀI TOÁN SỐ NGUYÊN TỐ VÀ CÁC PHƯƠNG PHÁP PHÂN TÍCH RA THỪA SỐ NGUYÊN TỐ

24 782 0

Đ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 24
Dung lượng 401 KB

Nội dung

Trong phạm vi bài tập lớn này nhóm em sẽ tìm hiểu về bài toán số nguyên tố, các phép thử kiểm tra số nguyên tố lớn, cách tạo số nguyên tố lớn, và các thuật toán để phân tích ra thừa số

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN _

BÀI TẬP LỚN

LÝ THUYẾT MÃ HÓA THÔNG TIN

Đề tài:

BÀI TOÁN SỐ NGUYÊN TỐ VÀ CÁC PHƯƠNG PHÁP

PHÂN TÍCH RA THỪA SỐ NGUYÊN TỐ

Sinh viên thực hiện: Trịnh Xuân Hinh

Trần Hậu TinPhạm Văn ThànhNhóm 5

Lớp KHMT1-K4Giảng viên hướng dẫn: Ths Mai Thanh Hồng

Hà Nội, 5/2013

Trang 2

MỤC LỤC

MỤC LỤC 2

LỜI NÓI ĐẦU 1

CHƯƠNG I: TỔNG QUAN LÝ THUYẾT VÀ MÃ HÓA THÔNG TIN 2

I.Lý thuyết thông tin 2

CHƯƠNG II: SỐ NGUYÊN TỐ VÀ CÁC PHƯƠNG PHÁP PHÂN TÍCH RA THỪA SỐ NGUYÊN TỐ 7

Kết Luận 21

Tài Liệu Tham Khảo: 22

Trang 3

LỜI NÓI ĐẦU

Hiện nay thông tin đã và đang tác động trực tiếp đến mọi mặt hoạt động kinh tế xã hội của hầu hết các quốc gia trên thế giới Thông tin có một vai trò hết sức quan trọng, bởi vậy chúng ta phải làm sao đảm bảo được tính trong suốt của thông tin nghĩa là thông tin không bị sai lệch, bị thay đổi, bị lộ trong quá trình truyền từ nơi gửi đến nơi nhận Với sự phát triển rất nhanh của công nghệ mạng máy tính đặc biệt là mạng internet thì khối lượng thông tin ngày càng chuyển tải nhiều hơn Nhưng vấn đề đặt ra là phải làm sao để đảm bảo được tính bảo mật của thông tin Do đó, hiện nay giải pháp là dùng các hệ mã hóa thông tin

để mã hóa thông tin sau đó gửi đi để đảm bảo những thông tin gửi đi trên mạng được nguyên vẹn Số nguyên tố đóng vai trò quan trọng trong mã hóa thông tin, rất nhiều hệ mã yêu cầu tìm và sử dụng số nguyên tố lớn Trong phạm vi bài tập lớn này nhóm em sẽ tìm hiểu về bài toán số nguyên tố, các phép thử kiểm tra số nguyên tố lớn, cách tạo

số

nguyên tố lớn, và các thuật toán để phân tích ra thừa số nguyên tố

Trang 4

CHƯƠNG I: TỔNG QUAN LÝ THUYẾT VÀ MÃ HÓA THÔNG TIN

I. Lý thuyết thông tin

Khái niệm cơ bản của lý thuyết thông tin có thể được nắm bắt thông qua việc xem xét hình thức liên lạc phổ biến nhất của con người: ngôn ngữ Hai yếu tố quan trọng của một ngôn ngữ ngắn gọn là: các từ thông dụng (như "một", "cái", "tôi") nên ngắn gọn hơn các từ kém thông dụng hơn (như "thông tin", "thợ thủ công") để các câu không bị quá dài Sự cân bằng độ dài các từ như vậy cũng tương tự như trong nén dữ liệu và là một thành phần cơ bản của mã hóa nguồn Ngoài ra, nếu một phần của câu không nghe được hoặc bị nghe nhầm do tiếng ồn, chẳng hạn như

do có ô tô chạy qua, thì người nghe vẫn có thể đoán ra ý nghĩa của câu Sự vững chắc đó là một thành phần thiết yếu cho hệ thống liên lạc điện tử cũng như cho ngôn ngữ Tính chất đó trong truyền thông được đảm bảo bởi mã hóa kênh Mã hóa nguồn và mã hóa kênh là những mối quan tâm chính của lý thuyết thông tin

1. Entropy

Lý thuyết thông tin được định nghĩa là khối lượng thông tin trong một thông báo như là số bít nhỏ nhất cần thiết để mã hoá tất cả những nghĩa có thể của thông báo đó

Ví dụ, trường ngay_thang trong một cơ sở dữ liệu chứa không quá 3 bít thông tin, bởi vì thông tin tại đây có thể mã hoá với 3 bít

Trang 5

trữ như một trong hai xâu ký tự ASCII : Nam, Nữ Khối lượng thông tin trong một thông báo M là đo bởi Entropy của thông báo đó, ký hệu bởi H(M) Entropy của thông báo gioi_tinh chỉ ra là 1 bít, ký hiệu H(gioi_tinh) = 1, Entropy của thông báo

số ngày trong tuần là nhỏ hơn 3bits

Trong trường hợp tổng quát, Entropy của một thông báo là log2n, với n là số khả năng có thể

H(M) = log2n

2. Tốc độ của ngôn ngữ (Rate of Language)

Đối với một ngôn ngữ, tốc độ của ngôn ngữ là r = H(M)/N

trong trường hợp này N là độ dài của thông báo Tốc độ của tiếng Anh bình thường

có một vài giá trị giữa 1.0 bits/chữ cái và 1.5 bits/chữ cái, áp dụng với giá trị N rất lớn

Tốc độ tuyệt đối của ngôn ngữ là số bits lớn nhất, chúng có thể mã hoá trong mỗi

ký tự Nếu có L ký tự trong một ngôn ngữ, thì tốc độ tuyệt đối là :

R = log2LĐây là số Entropy lớn nhất của mỗi ký tự đơn lẻ Đối với tiếng Anh gồm 26 chữ cái, tốc độ tuyệt đối là log226 = 4.7bits/chữ cái Sẽ không có điều gì là ngạc nhiên đối với tất cả mọi người rằng thực tế tốc độ của tiếng Anh nhỏ hơn nhiều so với tốc

độ tuyệt đối

3. An toàn của hệ thống mã hoá

Shannon định nghĩa rất rõ ràng, tỉ mỉ các mô hình toán học, điều đó có nghĩa là hệ thống mã hoá là an toàn Mục đích của người phân tích là phát hiện ra khoá k, bản

rõ p, hoặc cả hai thứ đó Hơn nữa họ có thể hài lòng với một vài thông tin có khả năng về bản rõ p nếu đó là âm thanh số, nếu nó là văn bản tiếng Đức, nếu nó là bảng tính dữ liệu, v v

Trong hầu hết các lần phân tích mã, người phân tích có một vài thông tin có khả năng về bản rõ p trước khi bắt đầu phân tích Họ có thể biết ngôn ngữ đã được mã hoá Ngôn ngữ này chắc chắn có sự dư thừa kết hợp với chính ngôn ngữ đó Nếu nó

là một thông báo gửi tới Bob, nó có thể bắt đầu với "Dear Bob" Chắc chắn là "Dear Bob " sẽ là một khả năng có thể hơn là chuỗi không mang ý nglĩa gì chẳng hạn

"tm*h&rf" Mục đích của việc thám mã là sửa những tập hợp khả năng có thể có của bản mã với mỗi khả năng có thể của bản rõ

Có một điều giống như hệ thống mã hoá, chúng đạt được sự bí mật tuyệt đối Hệ thống mã hoá này trong đó bản mã không mang lại thông tin có thể để tìm lại bản

Trang 6

rõ Shannon phát triển lý thuyết cho rằng, hệ thống mã hoá chỉ an toàn tuyệt đối nếu nếu số khoá có thể ít nhất là nhiều bằng số thông báo có thể Hiểu theo một nghĩa khác, khoá tối thiểu dài bằng thông báo của chính nó.

Ngoại trừ an toàn tuyệt đối, bản mã mang lại một vài thông tin đúng với bản rõ, đ iều này là không thể tránh được Một thuật toán mật mã tốt giữ cho thông tin ở mức nhỏ nhất, một người thám mã tốt khai thác những thông tin này để phát hiện ra bản rõ

Người phân tích mã sử dụng sự dư thừa tự nhiên của ngôn ngữ để làm giảm số khả năng có thể của bản rõ Nhiều thông tin dư thừa của ngôn ngữ, sẽ dễ dàng hơn cho

sự phân tích mật mã Chính vì lý do này mà nhiều sự thực hiện mã hoá sử dụng chương trình nén bản rõ để giảm kích thước văn bản trước khi mã hoá chúng Bi vậy quá trình nén làm giảm sự dư thừa của thông báo

Entropy của hệ thống mã hoá là đo kích thước của không gian khoá (keyspace)

H(K) = log2(number of keys )

4. Sự lộn xộn và sự rườm rà (Confusion and Diffusion)

Theo nhà khoa học Shannon, có hai k thuật cơ bản để che dấ u sự dư thừa thông tin trong thông báo gốc đó là : sự lộn xộn và sự rườm rà

Kỹ thuật lộn xộn (Confusion) che cấu mối quan hệ giữa bản rõ và bản gốc

Kỹ thuật này làm thất bại sự cố gắng nghiên cứu bản mã tìm kiếm thông tin dư thra

và thống kê mẫu Phương pháp dễ nhất để thực hiện điều này là thông qua lỹ thuật thay thế Một hệ mã hoá thay thế đơn giản, chẳng hạn hệ mã dịch vòng Caesar, dựa trên nền tảng của sự thay thế các chữ cái, nghĩa là chữ cái này được thay thế bằng chữ cái khác Sự tồn tại của một c hữ cái trong bản mã, là do việc dịch chuyển đi k

vị trí của chữ cái trong bản rõ

Kỹ thuật rườm rà (Diffusion) làm nất đi sự dư thừa của bản rõ bằng bề rộng của nó vượt quá bản mã (nghĩa là bản mã kích thước nhỏ hơn bản rõ) Một người phân tích tìm kiếm sự dư thừa đó sẽ có một thời gian rất khó khăn đầ tìm ra chúng Cách đơn giản nhất tạo ra sự rườm rà là thông qua việc đổi chỗ (hay còn gọi là hoán vị)

II. Lý thuyết mã hóa

Lý thuyết mã hóa :là một ngành của toán học (mathematics) và khoa học điện toán

(computer science)) nhằm giải quyết tình trạng lỗi dễ xảy ra trong quá trình truyền thông số liệu trên các kênh truyền có độ nhiễu cao (noisy channels)), dùng những

phương pháp tinh xảo khiến phần lớn các lỗi xảy ra có thể được chỉnh sửa Nó còn

Trang 7

xử lý những đặc tính của mã (codes)), và do vậy giúp phù hợp với những ứng dụng

cụ thể

Có hai loại mã hiệu:

1. Mã hóa dùng nguồn (Mã hóa entrôpi (Entropy encoding))

2. Mã hóa trên kênh truyền (Sửa lỗi ở phía trước (Forward error correction))

Cái đầu tiên chúng ta nói đến là mã hóa dùng nguồn Ý định của phương pháp này

là nén dữ liệu từ chính nguồn của nó, trước khi truyền đi, giúp cho việc truyền thông có hiệu quả hơn Chúng ta chứng kiến thói quen này hằng ngày trên Internet, nhất là trong cách dùng "zip" nén dữ liệu để giảm lượng dữ liệu phải truyền, giảm nhẹ gánh nặng cho mạng lưới truyền thông, đồng thời thu nhỏ cỡ tập tin Cái thứ hai

là mã hóa trên kênh truyền Bằng việc cộng thêm những bit mới vào trong dữ liệu

được truyền, còn gọi là bit chẵn lẻ (parity bits), kỹ thuật này giúp cho việc truyền

thông tín hiệu chính xác hơn trong môi trường nhiễu loạn của kênh truyền thông

Có nhiều chương trình ứng dụng, mà người dùng trung bình không để ý đến, sử dụng mã hóa trên kênh truyền Kỹ thuật Reed-Solomon được dùng để nhằm sửa lỗi

do những vết xước và bụi trên bề mặt đĩa âm nhạc CD thông thường Trong ứng dụng này, kênh truyền thông lại chính là bản thân cái đĩa CD Điện thoại di động

"Cell phones" cũng dùng kỹ thuật mã hóa có hiệu ứng cao (powerful coding technique) để sửa các lỗi trong việc truyền sóng rađiô ở tần số cao bị yếu mờ và bị

nhiễu Modem xử lý số liệu, việc truyền thông qua đường điện thoại, và đương nhiên ngay cả chính NASA, tất cả đều sử dụng kỹ thuật mã hóa trên kênh truyền hiệu ứng để truyền những bit số liệu qua đường dây

III. Lý thuyết toán học.

+ Modular số học.

Về cơ bản a = b(mod n) nếu a = b+kn trong đó k là một số nguyên Nếu a và b dương và a nhỏ hơn n, bạn có thể nghĩ rằng a là phần dư của b khi chia cho n Nói chung a và b đều là phần dư khi chia cho n Đôi khi b gọi là thặng dư của a, modulo

n, đôi khi a gọi là đồng dư của b, modulo n

Tập hợp các số nguyên từ 0 đến n-1 còn được gọi là tập hợp thặng dư hoàn toàn modulo n Đi ề u này có nghĩa là, với mỗi s ố nguyên a, thì thặng dư modul n là một

số từ 0 đến n -1

Modulo số học cũng giống như số học bình thường, bao gồm các phép giao hoán, kết hợp và phân phối Mặt khác giảm mỗi giá trị trung gian trong suốt quá trình tính toán

Trang 8

(a+b) mod n = ((a mod n) + (b mod n)) mod n (a- b) mod n = ((a mod n) - (b mod n)) mod n (axb) mod n = ((a mod n) X (b mod n)) mod n (ax(b + c)) mod n = (((a X b) mod n) + ((a X c) mod n)) mod n

Hệ thống mã hoá sự dụng nhiều sự tính toán modulo n, bởi vì vấn đề này giống

như tính toán logarithm rời rạc và diện tích hình vuông là khó khăn Mặt khác nó làm việc dễ hơn, bởi vì nó bị giới hạn trong tất cả giá trị trung gian và kết quả Ví

dụ : a là một số k bits, n là kết quả trung gian của phép cộng, trừ, nhân sẽ không vượt quá 24 bits Như vậy chúng ta có thể thực hiện hàm mũ trong modulo số học

mà không cần sinh ra kết quả trung gian đồ sộ

1. Chúng ta có thể viết như sau : gcd(a,n)=1

Số 15 và 28 là một cặp số nguyên tố, nhưng 15 và 27 thì không phải cặp số nguyên

tố do có ước số chu ng là 1 và 3, dễ dàng thấy 13 và 500 cũng là một

cặp số nguyên tố Một số nguyên tố là một cặp số nguyên tố với tất cả những số khác loại trừ những số là bội số

Một cách dễ nhất để tính toán ra ước số chung lớn nhất của hai số là nhờ vào thuật toán Euclid Knuth mô ả thuật toán và một vài mô hình của thuật toán đã được sửa đổi

Định lý fermat nhỏ: cho p là số nguyên tố a là số nguyên dương không chia hết cho

p Khi đó ta có:

ap-1≡ 1 mod p

Từ định nghĩa Fermat ta có các hệ quả:

Cho a € z và p là số nguyên tố thì ap= a mod p

Nếu e , d nguyên dương và thỏa mãn điều kiện ed≡1(mod p-1) thì (ae)d=(ad)e=a mod p

Trang 9

CHƯƠNG II: SỐ NGUYÊN TỐ VÀ CÁC PHƯƠNG PHÁP PHÂN TÍCH RA THỪA SỐ NGUYÊN TỐ

Số nguyên tố đóng vai trò quan trọng trong mã hóa thông tin Rất nhiều hệ mã yêu cầu tìm và sử dụng các số nguyên tố lớn vấn đề đặt ra là làm thế nào tìm được số nguyên tố lớn? Liệu có thể lấy ngẫu nhiên một số nguyên lẻ rồi phân tích nó ra thành thừa số nguyên tố

Việc phân tích ra thừa số nguyên tố như thế cần rất nhiều thời gian và rõ ràng không phải là phương pháp tốt Nếu phân tích ra thừa số không quá khó thì nhiều hệ

mã sẽ phá sản Chúng ta sẽ tìm hiểu một số phép thử nhằm kiểm tra một số có phải

là số nguyên tố hay không với thời gian chấp nhận được:

I Một Số Phép Thử Kết Luận Một Số Lớn Là Số Nguyên Tố

1 Kiểm tra trên cơ sở định luật nhỏ của Fermat

Phương pháp này dựa trên định luật nhỏ của Fermat: Nếu như n là số nguyên tố thì bất kỳ số aZthỏa mãn phương trình sau:

(1) a na (modn)

Nếu như UCLN(a,n) = 1, thì:

(2) a n− 1≡1(modn).Cho nên để kiểm tra tính nguyên tố của n, chúng ta chọn một số bất kỳ aZ và kiểm tra xem có thỏa mãn định lý của Fermat hay không? Nếu như định lý Fermat không thỏa với một giá trị a nào đó thì n là hợp số Nếu như định lý thỏa mãn, thì chúng ta cũng không thể kết luận rằng n là số nguyên tố, bởi vì định lý chỉ đúng trong điều kiện cần Vì vẫn tồn tại n là hợp số, thì đối với bất kỳ số aZ, thì ta vẫn

có được đằng thức a na (mod n), số này còn được gọi là số Carmichael

Ví dụ, chúng ta xem số 561=3.11.17 Chúng ta chứng tỏ số này là số Carmichael Đồng dư thức a561≡a(mod561)sẽ tương đương với hệ a561≡a(mod3),

)11(mod

561 a

a ≡ ,a561≡a(mod17) Nếu 3|a, thì a561≡a≡0(mod3) Nếu như 3 không là ước của a, thì a2 ≡1(mod3), từ đây ta có a560 ≡1(mod3), hay a561≡a(mod3) Tương

tự kiểm tra đối với hai số 11 và 17

Như vậy việc kiểm số nguyên tố theo Fermat là có khuyết điểm

Các bước kiểm tra tính nguyên tố như sau:

Trang 10

1 Chọn ngẫu nhiên a từ tập {1,2, ,n−1} và kiểm tra điều kiện UCLN(a,n)=1

2 Nếu như điều kiện trên không thỏa mãn thì n là hợp số

3 Kiểm tra đẳng thức (2)

4 Nếu như đẳng thức (2) không thỏa mãn thì trả lời n là hợp số

5 Nếu như đẳng thức đúng thì trả lời là chưa biết, nhưng có thể kiểm tra lại một số lần với các a khác nhau

Giải thuật Fermat kiểm tra tính nguyên tố của số

Đầu vào: n: giá trị để kiểm tra tính nguyên tố; k: tham số tham gia vào quá trình

return nguyên tố xác suất

Khi dùng thuật toán tính nhanh luỹ thừa theo mođun, thời gian thi hành của thuật toán là O(k × log3n), ở đó k là số lần kiểm tra với mỗi số a ngẫu nhiên, và n là giá trị ta muốn kiểm tra Và từ việc kiểm tra này dẫn ta đến phần sau

Định nghĩa : Cho n>1 là số tự nhiên lẻ, n− 1 = 2 2 d , ở đây d là số lẻ Số n gọi là

số giả nguyên tố chặc chẽ trong cơ sỡ a, aN , nếu như UCLN(a,n) = 1 hoặc

)

(mod

a d ≡ , hoặc ad 2r ≡ − 1 (mod n ), với 0≤r <s

Từ định nghĩa chúng ta có điều sau Nếu n là số nguyên tố, thì a n− 1≡1(modn), tức là a2s d 1(modn)

≡ Từ đây ta có a2s−1d ≡ ± 1 (mod n ) Nếu như

) (mod

ta lại khai căn cho đến khi tìm được a d hay căn đó đồng dư với -1

Để kiểm tra tính nguyên tố của các số lẻ n, 9

10 25

7 <n< , ta dùng quá trình như sau:

Bước 1: Kiểm tra tính chặc chẽ giả nguyên tố của n trong cơ sở 2,3,5,7 Nếu n

không là chặt chẽ giả nguyên tố một trong các cơ sở đó thì n là hợp số

Trang 11

Bước 2: Nếu n=3215031751, thì n là hợp số, ngược lại n là số nguyên tố.

Như vậy chúng ta thấy việc kiểm tra trên cơ sỡ tính chặc chẽ giả nguyên tố là hiệu quả đối với việc tìm số hợp số, thế nhưng cách này cũng chỉ đúng trong một điều kiện cần thiết Trong một số kết quả chứng tỏ rằng, điều kiện cần và đủ để kiểm tra số nguyên tố là n<(67107840)2

Định nghĩa: cho số nguyên dương n với n-1=2st , trong đó s là 1 số nguyên không

âm và t là 1 số lẻ n vượt qua phép thử Miller cơ sở b nếu bt=1(mod n) hoặc bkt1(mod n) với k=2i, 0 <=j<=s-1

=-Giả sử bn-1 =(mod n) hỏi n có phải số nguyên tố không?

Điều kiện bn-1 =1 (mod n) thực ra chưa thể khẳng định n có phải số nguyên tố hay không vì thế cần tính x= by(mod n) với y=(n-1)/2 Nếu n là số nguyên tố, ta phải có x= 1(mod n) hoặc x=-1(mod n) Thực vậy do x2=x*x= (b(n-1)/2)(b(n-1)/2)≡1 theo định lý fermat nhỏ và mệnh đề 1, căn bậc hai (mod) của một số nguyên phải bằng 1 hoặc -1 Vì thế khi tính x ta cần xem xét các trường hợp sau:

x≡p(mod n), p≠±1 Trong trường hợp này theo mệnh đề 1, x không thể nguyên tố Kết luận x không vượt qua được phép thử Miller

x≡-1(mod n) trong trường hợp này theo mệnh đề 1, x có thể là số nguyên tố(và có thể không) Nhưng do ta không có thông tin gì thêm nên ta chấp nhận x vượt qua phép thử Miller

x≡1(mod n) trường hợp này x cũng có thể là số nguyên tố nhưng ta nên kiểm tra thêm:

a Nếu y chia hết cho 2 lặp lại với x≡by/2(mod n)

b Nếu y không chia hết cho 2, do không có thông tin gì thêm ta cũng chấp nhận x vượt qua phép thử Miller

Thuật toán luôn dừng và mọi số nguyên tố đều vượt qua phép thử Miller

Ví dụ với n= 257( nguyên tố), ta sẽ chứng tỏ n vượt qua các cơ sở b=22,b=17 và b=4

Với b=22

Trang 12

Mệnh đề 2: giả sử n là một hợp số dương lẻ thì n sẽ không thể vượt qua 75% các cơ

sở b,1≤b≤n

3 Phép thử Rabin-Miler

Theo mệnh đề 2 ở phép thử Miller cho ta ước lượng xác suất một số nguyên có nguyên tố hay không, như vậy khi một số nguyên tố lớn vượt qua phép thử Miller với 1 cơ sở b nào đó giữa n và n-1 thì ta có thể nói là hơn 75% n là số nguyên tố Vậy thực hiện phép thử Miller với nhiều cơ sở khác nhau thì có thể hy vọng xác suất gần 1

Khi sử dụng kiểm tra Miller-Rabin chúng ta căn cứ vào một mệnh đề Q(p,a)đúng với các số nguyên tố p và mọi số tự nhiên aANvà kiểm tra xem chúng có đúng với số n muốn kiểm tra và một số aAđược chọn ngẫu nhiên hay không? Nếu mệnh đề Q(n,a) không đúng, tất yếu n không phải là số nguyên tố, còn nếu Q(n,a)

Ngày đăng: 30/12/2015, 20:39

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w