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 1TRƯỜ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 2MỤ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 3LỜ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 4CHƯƠ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 5trữ 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 6rõ 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 7xử 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 9CHƯƠ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ố a∈Zthỏa mãn phương trình sau:
(1) a n ≡a (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ỳ a∈Z 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ố a∈Z, thì ta vẫn
có được đằng thức a n ≡a (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 101 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, a∈N , 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 11Bướ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 12Mệ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 a∈A⊂Nvà kiểm tra xem chúng có đúng với số n muốn kiểm tra và một số a∈Ađượ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)