Tải bản đầy đủ (.pdf) (76 trang)

vấn đề an toàn cảu các hệ mật mã khóa công khai

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 (29.72 MB, 76 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
KHOA CÔNG NGHỆ
Đặng Văn Cường
VẤN ĐỂ AN TOÀN
CỦA CÁC HỆ MẬT MÃ KHOÁ CÔNG KHAI
Chuyên ngành: Công nghệ thông tin
Mã sô: 1.01.10
LUẬN VĂN THẠC sĩ
NGƯỜI HƯỚNG DẪN KHOA HỌC
GS. TSKH Phan Đình Diêu
Hà Nội - 2003
Ị .j i. rT u }
I : -UNG ■■■:
'V: i f ; ' . ? ' ị ’ 1.(1,! / Í E K Ị
v; M
2
MỤC LỤC
MỞ ĐẦU 4
CHUƠNG 1- TỔNG QUAN VỀ MẬT M Ã 6
1.1. Giới thiệu 6
1.2. Hệ mật mã khoá đối xứng 11
1.3. Hộ mật mã khoá công khai 15
1.4. Thám mã các hệ mật mã 18
CHƯƠNG 2- c ơ s ở TOÁN HỌC CỦA CÁC HỆ MẬT MÃ KHOÁ CÔNG KH A I

2 0
2.1. Giới thiệu 20
2.2. Lý thuyết về độ phức tạp tính toán
20
2.3. Một số kết quả về đại số và số học 25
2.4. Một số thuật toán phục vụ cho tính toán số lớn 42


CHƯƠNG 3 - TÍNH AN TOÀN CỦA CÁC HỆ MẬT MÃ KHOÁ CÔNG KHAI

4 6
3.1. Tính an toàn của hệ mật mã khoá công khai RSA

46
3.2. Tính an toàn của hệ mật mã khoá công khai ElGamal 54
CHƯƠNG 4-NHŨNG NHÂN T ố LÀM SUY GIẢM TÍNH AN TOÀN CỦA CÁC HỆ MẬT M Ã 58
4.1. Những nhân tố làm suy giảm tính an toàn của hệ mật mã RSA

58
4.2. Nhũng nhân tố làm suy giảm tính an toàn của hệ mật mã ElGamal

62
CHƯƠNG 5 - NHŨNG GIẢI PHÁP ĐẢM BẢO TÍNH AN TOÀN CHO CÁC HỆ MẬT MÃ

6 8
5.1. Giải pháp đảm bảo tính an toàn cho hệ mật mã RSA

68
5.2. Giải pháp đảm bảo tính an toàn cho hệ mật mã ElGamal 67
Vấn đề an toàn của các hệ mật mã khoá công khai
5.3. Khả năng sinh số nguyên tố dùng cho hệ mật mã RSA và ElGamal 69
KẾT LUẬN 73
TÀI LIỆU THAM K H Ả O 74
_______________________________
3_______________________________
Vấn đề an toàn của các hệ m ật m ã khoá công khai
4
MỞ ĐẨU

Khoa học mật mã từ khi ra đời tới nay đã trải qua nhiều giai đoạn phát
triển, từ một môn khoa học thực nghiệm đã nhanh chóng trở thành môn khoa
học logic đỉnh cao và ngày càng hội tụ những kiến thức tinh tuý của loài
người. Sự phát triển của khoa học mật mã đã góp phần thúc đẩy xã hội loài
người ngày càng tiến lên. Đặc biệt trong thời đại ngày nay dưới tác động của
cuộc cách mạng viễn thông - tin học hoá toàn cầu, khi các hoạt động kinh tế,
xã hội trong mô hình thế giới mở và biến động khôn lường thì khoa học mật
mã ngày càng chiếm vị trí quan trọng, và thực sự đã có những đóng góp không
nhỏ trong việc bảo đảm an ninh cho các quốc gia, an toàn cho thông tin kinh
tế xã hội.
Như chúng ta đã biết, năm 1949, c. Shannon đã đưa ra mô hình hệ mật
mã đối xứng an toàn vô điều kiện dựa trên cơ sở lý thuyết thông tin. Trong
thời đại ngày nay, nhiều bài toán mật mã trong thực tế được đặt ra là “chỉ cần
giữ bí mật trong một thời gian nào đó cho một số thông tin nào đó mà thôi”.
Với mục đích giải quyết vấn đề trên, vào năm 1976, W.Diffie - M.E.Hellman
[11] đã để xuất mô hình hệ mật mã phi đối xứng hay còn gọi là hệ mật mã
khoá công khai, an toàn về mặt tính toán dựa trên cơ sở lý thuyết độ phức tạp
tính toán. Có thể nói rằng, đây là hai thành tựu vĩ đại nhất và là hai điểm mốc
quan trọng nhất đánh dấu sự phát triển của khoa học mật mã. Trên nền tảng
của hai mô hình hệ mật mã này, các nghiên cứu và ứng dụng mật mã đã có
những nền móng vững chắc để phát triển.
Trong một hệ mật mã, khoá là yếu tố cốt lõi, quyết định tính an toàn
của hệ mật mã. Trong mô hình hệ mật mã khoá đối xứng, khoá cần phải là
một dãy ngẫu nhiên lý tưởng các phần tử khoá. Còn trong mô hình hệ mật mã
khoá công khai, khoá là một cặp gồm khoá bí mật và khoá công khai cỡ hàng
Vấn dề an toàn của các hệ mật mã khoả công khai
5
trăm chữ số thập phân không thể suy được ra nhau về mặt tính toán. Như vậy,
ta thấy việc tạo khoá là vô cùng quan trong, nó quyết định sự sống còn của hệ
mật mã, nếu khoá được tạo ra tốt - thoả mãn yêu cầu về khoá thì hệ mật mã

được an toàn, còn ngược lại, khoá được tạo ra không tốt - khồng thoả mãn yêu
cầu về khoá thì hệ mật mã sẽ mất an toàn. Trong mô hình hệ mật mã khoá
công khai để tạo được khoá thoả mãn yêu cầu nhằm đảm bảo độ mật thì việc
chọn các tham số tạo khoá là vô cùng quan trọng, tức ta phải tìm được những
tham số tạo khoá mà không gây mất an toàn cho hệ mật mã. Để tìm được
những tham số này, ta phải nghiên cứu tính an toàn của các hệ mật mã, sau đó
tìm ra những nhân tố gây mất an toàn của các hệ mật mã, từ đó đưa ra các giải
pháp để tìm được các tham số tạo khoá tốt - thoả mãn yêu cầu về khoá nhằm
đảm bảo an toàn cho các hệ mật mã. Chính vì lý do trên, để xây dựng được mô
hình hệ mật mã khoá công khai an toàn nhằm ứng dụng trong thực tế thì việc
nghiên cứu vấn đề an toàn của các hệ mật mã khoá công khai là hết sức cấp
bách và cần thiết.
Trong bản luận văn này, chúng tôi nghiên cứu các nội dung sau: tính an
toàn của các hệ mật mã khoá công khai và những nhân tố làm suy giảm tính
an toàn của các hệ mật mã khoá công khai. Từ đó, chúng tôi đưa ra các giải
pháp để xây dựng được các hệ mật mã khoá công khai an toàn nhằm đáp ứng
thực tế đang đòi hỏi. Do thời gian, khả năng của bản thân, chúng tôi không thể
khảo sát hết được tất cả các hệ mật mã khoá công khai đã được biết, mà chỉ
nghiên cứu một số hệ mật mã được thế giới sử dụng nhiều, rộng rãi nhất hiện
nay, đó là hệ mật mã RSA do Ron Rivert, Adi Shamir và Len Adleman [17]
sáng tạo và được công bố vào năm 1977 dựa vào bài toán phân tích số nguyên
thành thừa số nguyên tố và hệ mật mã ElGamal do T. El Gamal [21] sáng tạo
và công bố vào năm 1985 dựa vào bài toán logarithm rời rạc trong trường hữu
hạn. Trong đề tài này, chúng tồi đặt ra mục tiêu là xây dựng được mô hình hệ
Vấn dề an toàn của các hệ mật m ã khoắ công khai
6
mật mã an toàn với hệ mật mã RSA và ElGamal và đưa ra hướng nghiên cứu
tiếp.
Phần còn lại của luận văn có cấu trúc như sau: trong chương 1 trình bày
và làm rõ một số khái niệm cơ bản của khoa học mật mã; chương 2 trình bày

về cơ sở toán học của mật mã khoá công khai; chương 3 nghiên cứu tính an
toàn của hai hệ mật mã RSA và ElGamal; chương 4 tìm những nhân tố làm
suy giảm tính an toàn của hai hệ mật mã RSA, ElGamal; và trong chương 5
đưa ra các giải pháp khắc phục những điểm yếu để bảo đảm tính an toàn cho
hai hệ mật mã RSA và ElGamal; trong phần kết luận, khái quát các kết quả
đạt được của bản luận văn và đưa ra hướng nghiên cứu tiếp; cuối cùng là phần
tài liệu tham khảo.
Vấn đề an toàn của các hệ mật mã khoá công khai
7
CHƯƠNG 1
TỔNG QUAN VỂ MẬT MÃ
1.1. Giới thiệu
Sự phát triển của khoa học mật mã trên thế giới trong những năm gần
đây đã đạt được những thành tựu hết sức rực rỡ, nó đã thực sự mở đường cho
những ứng dụng quan trọng trong các lĩnh vực bảo mật thông tin dưới mọi
hình thức. Như chúng ta đã biết, năm 1949, c. Shannon đã đưa ra mô hình hệ
mật mã đối xứng an toàn vô điều kiện dựa trên cơ sở lý thuyết thông tin. Vào
năm 1976, W.Diffie - M.E.Hellman [11] đã đề xuất mô hình hệ mật mã phi
đối xứng an toàn về mặt tính toán dựa trên cơ sở lý thuyết độ phức tạp tính
toán. Có thể nói rằng, đây là hai thành tựu vĩ đại nhất và là hai điểm mốc quan
trọng nhất đánh dấu sự phát triển của khoa học mật mã. Trên nền tảng của hai
mô hình hệ mật mã này, các nghiên cứu và ứng dụng mật mã đã có những nền
móng vững chắc để phát triển.
Trước tiên, có thể nói trong mô hình hệ mật mã, yếu tố quan trọng nhất
là khoá, nó quyết định đến độ mật của hệ mật mã. Trong mô hình hệ mật mã
của Shannon, khoá cần phải là một dãy ngẫu nhiên lý tưởng các phần tử khoá,
còn trong mô hình hệ mật mã khoá công khai, khoá là một cặp gồm khoá bí
mật và khoá công khai cỡ hàng trăm chữ số thập phân không thể suy được ra
nhau về mặt tính toán. Theo hướng tạo khoá, đã có rất nhiều công trình nghiên
cứu của các nhà toán học, mật mã học và cả các nhà vật lý, cơ học lượng tử

trên thế giới cống hiến nhiều đóng góp hết sức quí giá trong lĩnh vực này. Để
tạo khoá ngẫu nhiên cho các hệ mật mã cổ điển, có thể có giải pháp hoàn toàn
thủ công và có các giải pháp hiện đại, tự động hoá như các phương pháp tạo
khoá từ nguồn nhiễu vật lý, từ các photon ánh sáng và đặc biệt là các phương
Tổng quan về m ật m ã
8
pháp tạo khoá bằng thuật toán trên máy tính điện tử hoặc trên các thiết bị điện
tử chuyên dụng. Nghiên cứu các phương pháp tạo khoá thuật toán là một
mảng hết sức sôi nổi và có thể thấy rằng, thế giới có rất nhiều công trình về
vấn đề này. Thông qua các tài liệu, có thể chia các phương pháp đó thành hai
kiểu. Kiểu thứ nhất, tìm cách phức tạp hoá các m-dãy trong các mô hình tổ
hợp tối ưu, vừa đảm bảo tính dãy ra có chu kỳ, độ phức tạp lớn đồng thời lại
có cấu trúc phân bố ngẫu nhiên với tương quan cực nhỏ. Kiểu thứ hai, sử dụng
các bài toán có độ phức tạp lớn để sinh ra lớp dãy giả ngẫu nhiên mạnh. Mỗi
kiểu trên đây có các ưu thế khác nhau và chúng sẽ bổ sung cho nhau trong
nghiên cứu các phương pháp tạo khoá giả ngẫu nhiên. Để tạo khoá mã dịch
cho các hệ mật mã khoá công khai, các nhà mật mã học và toán học trên thế
giới đã có rất nhiều công trình nghiên cứu, đưa bộ môn lý thuyết số và hình
học đại số phát triển đến đỉnh cao mà thông qua đó đã giải quyết được những
vấn đề hóc búa về mặt lý thuyết cũng như giải pháp thực tế cho việc tạo số
nguyên tố lớn cỡ hành trăm chữ số thập phân, đặc biệt là vào đầu tháng 8 năm
2002, công trình nghiên cứu của nhóm nghiên cứu trẻ tại Học viện Cồng nghệ
Ấn Độ ở Kanpur đã giải được bài toán kiểm tra tính nguyên tố trong thời gian
đa thức, mà các bộ óc giỏi nhất đã không thực hiện được trong hàng thập niên
qua. Có thể nói, đây là mảng nghiên cứu thời sự bậc nhất trong những năm
vừa qua. Song song với nó là những vấn đề nghiên cứu các phương pháp phân
tích số nguyên lớn, giải bài toán logarithm rời rạc trên trường hữu hạn, cũng
là lĩnh vực được thế giới đặc biệt quan tâm để có thể tạo và thiết kế được các
hệ mật mã khoá công khai trong thực tiễn. Qua theo dõi tình hình nghiên cứu
những năm qua, ta có thể thấy vấn đề nghiên cứu tạo khoá mật mã trên thế

giới đã đạt được những đỉnh cao cần thiết, tuy nhiên nó vẫn luôn là lĩnh vực
thời sự, cốt yếu trong thời đại ngày nay.
Năm 1976, mật mã khoá công khai ra đời đã đánh dấu một bước ngoặt
trong lịch sử phát triển của khoa học mật mã, nó đã tạo ra một cuộc cách
Tổng quan về m ật mã
9
mạng thực sự trong ngành mật mã học và ứng dụng. Không những nó cung
cấp một phương thức trao đổi an toàn mới mà còn tạo ra khả năng thúc đẩy
nhanh quá trình xã hội hoá thông tin trên mạng mở toàn cầu nhưng vẫn bảo
đảm những bí mật riêng tư của mỗi thực thể. Mật mã khóa công khai đã giải
quyết được căn bản vấn đề phân phối khoá tự động hiệu quả mà các hệ mật
mã cổ điển không giải quyết được, đồng thời nó cũng giải quyết vấn đề xác
thực tự động mà trong mật mã cổ điển không đặt ra. Như chúng ta đã biết, mật
mã khoá công khai ra đời trong điều kiện thế giới đang bước vào kỷ nguyên
công nghệ thông tin - tự động hoá cao. Sự phát triển của công nghệ viễn thông
- tin học vừa là tiền đề cho sự ra đời của các hệ mật mã khoá công khai đồng
thời nó vừa là chỗ dựa vững chắc để mật mã khoá công khai có thể đưa vào
ứng dụng phục vụ con người. Do đó, tuy mới ra đời nhưng mật mã khoá công
khai đã khảng định được vị trí quan trọng và không thể thiếu trong đời sống xã
hội hiện đại. Hai thập kỷ qua, chúng ta đã được chứng kiến sự phát triển như
vũ bão của lĩnh vực khoa học mới mẻ này. Hàng năm, trên thế giới đều tổ
chức các hội nghị quốc tế về mật mã. Qua các tài liệu hội nghị có thể thấy hầu
hết các báo cáo đều tập trung nghiên cứu lý thuyết và khai thác ứng đụng về
hệ mật mã khoá công khai. Có rất nhiều khía cạnh có thể áp dụng các hệ mật
mã khoá công khai như quản lý và phân phối khoá qui ước, chữ ký số và xác
thực văn bản, các thủ tục LOGIN vào một hệ thống tự động, phân chia bí mật
thông tin, thanh toán chuyển trả tiền điện tử, các phương pháp chứng minh
không tiết lộ thông tin, Để đưa mật mã khoá công khai vào ứng dụng thực
tế, thế giới đang rất quan tầm về các thủ tục tương tác an toàn trên các hệ tự
động hoá. Có thể nói đây là lĩnh vực nghiên cứu còn hứa hẹn rất nhiều kết quả

bất ngờ.
Trong thời đại ngày nay, nhiều bài toán mật mã trong thực tế được đặt
ra là “chỉ cần giữ bí mật trong một thời gian nào đó cho một số thông tin nào
đó mà thôi”. Với mục đích giải quyết vấn đề trên, một độ đo về tính an toàn
Tổng quan về m ật m ã
10
cho hệ mật mã được đưa ra liên quan đến những nổ lực tính toán cần thiết để
phá hệ mật mã. Một hệ mật mã được gọi là an toàn tính toán nếu một thuật
toán tốt nhất để phá nó phải cần đến một số lượng rất lớn các bước tính toán.
Nhưng cho đến nay chưa có một hệ mật mã nào được biết là an toàn theo
nghĩa trên đã được chứng minh, do vậy trong thực tế người ta thông thường coi
một hệ mật mã là “an toàn tính toán” nếu có một phương pháp tốt nhất trong
thời điểm đó để phá nó nhưng yêu cầu về thời gian lớn đến mức không thể
chấp nhận được. Việc chứng minh về tính an toàn tính toán cho một hệ mật
mã cho đến nay thường được tiến hành theo phương thức đó là quy độ an toàn
của hệ mật mã đó về một bài toán đã được biết là khó theo góc độ độ phức tạp
tính toán, tức là không thuộc lớp p.
Trong lý thuyết độ phức tạp tính toán có đề cập đến khái niệm hàm một
phía, đó là những hàm f có đặc tính mặc dù đã biết chúng nhưng việc tìm được
hàm ngược f'1 của nó lại vô cùng khó khăn. Trong lớp các hàm một phía, có
một số hàm có tính chất là nếu biết thêm một số thông tin nào đó thì việc tìm
f"1 lại trở nên dễ dàng, và gọi những hàm đó là hàm một phía cửa sập. Với
nhũng hàm một phía cửa sập, vấn đề thoả thuận trước về khoá sẽ không cần
nữa. Mỗi thực thể trong một mạng liên lạc chọn cho mình một hàm một phía
cửa sập f, công bố một cách công khai cho những người khác hàm này để ỉàm
hàm mã hoá các thông tin muốn gửi cho anh ta, còn hàm f 1 được giữ bí mật
để làm khoá giải các bản mã gửi cho mình. Hệ mật mã dùng các hàm và theo
phương thức đã nói ở trên được gọi là các hộ mật mã khoá công khai.
Đối tượng cơ bản của mật mã là tạo ra khả nãng liên ỉạc trên một kênh
không mật cho hai người sử dụng - giả sử Alice ỉà người gửi tin và Bob là

người nhận tin, sao cho đối phương - giả sử Oscar là người thám mã, không
thể hiểu được thông tin được truyền đi trên kênh. Kênh này có thể là một
đường dây điện thoại hoặc một mạng máy tính.
Tổng quan về m ật m ã

Trước khi Alice muốn truyền tin mật cho Bob thì họ phải nhận được
khoá - đây là bài toán phân phối khoá, sau đó phải thống nhất với nhau dùng
khoá nào để mã và dịch - đây là bài toán thoả thuận khoá. Sau khi hai người
đã được phân phối khoá và thoả thuận với nhau về khoá dùng để mã-dịch thì
Alice dùng khoá để mã, gọi là khoá mã và Bob dùng khoá để dịch, gọi là khoá
dịch.
Thông tin mà Alice muốn gửi cho Bob khi chưa được mã hoá, gọi là
bản rõ, có thể là một văn bản tiếng Anh, có thể là các dữ liệu bằng số hoặc bất
cứ tài liệu nào có cấu trúc tuỳ ý. Alice sẽ mã hoá bản rõ bằng một khoá mã đã
được xác định trước thành kết quả, gọi là bản mã, và gửi bản mã trên kênh cho
Bob. Oscar có thể thu trộm được bản mã trên kênh, song không thể xác định
được nội dung của bản rõ vì không có khoá dịch, nhưng Bob - người đã biết
khoá dịch, có thể giải mã và thu được bản rõ ban đầu.
Trong chương này, chúng ta sẽ đi nghiên cứu một số khái niệm hết sức
cơ bản về các hệ mật mã để làm tiền đề cho các nghiên cứu tiếp theo. Các kết
quả của chương này có thể tìm trong [9, 12, 13, 14, 15, 16, 18,20].
1.2. Hệ mật mã khoá đối xứng
1.2.1. Định nghĩa
Định nghĩa 1.1: Một hệ mật mã khoá đối xứng là một bộ 5 (P, c, K, E,
D) thoả mãn các điều kiện sau:
1. p là một tập hữu hạn các bản rõ có thể.
2. c là một tập hữu hạn các bản mã có thể.
3. K là một tập hữu hạn các khoá có thể.
Tổng quan về m ật m ã
12

4. Đối với mỗi keK có một qui tắc mã EkeE, và một qui tắc giải mã
DkeD. Khoá k được dùng chung để mã và dịch, đồng thời phải giữ bí
mật. Mỗi Ek: P—>c và Dk: C—>p là những hàm mà: Dk(Ek(m))=m, với
mọi bản rõ meP.
Nội dung của tính chất 4 là nếu một bản rõ m được mã hoá bằng Ek và
bản mã nhận được sau đó được giải mã bằng Dk thì phải thu được bản rõ ban
đầu m.
Một số hệ mật mã khoá đối xứng như: hệ mật mã Cezar, hệ mật mã
Vigenere, hệ mật mã Hill,
1.2.2. Thủ tục truyền tin mật trong hệ mật mã khoá đối xứng
Gỉa sử Alice và Bob muốn truyền tin mật cho nhau, họ sẽ áp dụng thủ
tục sau để truyền tin mật cho nhau bằng hệ mật mã khoá đối xứng. Trước tiên,
họ phải giải quyết hai bài toán phân phối khoá và thoả thuận khoá để mã dịch
bằng một kênh an toàn - thường vận chuyển và bảo quản bằng con đường vật
lý. Sau đó, giả sử Alice muốn gửi một thông báo cho Bob trên một kênh
không mật và ta xem thông báo này là một chuỗi:
m=m1m2 mn
với số nguyên n > 1 nào đó. Ở đây mỗi ký hiệu của bản rõ n^eP, 1 < i < n.
Mỗi rrij sẽ được mã hoá bằng qui tắc Efc với khoá k xác định trước đó. Bởi vậy,
Alice sẽ tính Cj=Ek(mj), 1 < i < n và được chuỗi bản mã là:
c=c1c2 cn
sẽ được gửi trên kênh. Khi Bob nhận được c=C |C 2 e n , anh ta sẽ giải mã bằng
hàm giải mã Dk và thu được bản rõ m=mim2 mn
Tổng quan về m ật m ã
13
Hình i. 1 là một ví dụ về một kênh liên lạc trong hệ mật mã khoá đối
xứng.
H ình 1.1
1.2.3. Độ an toàn của hệ mật mã khoá đối xứng - độ mật hoàn thiện
Năm 1949, c. Shannon công bố công trình “Lý thuyết truyền thông của

các hệ bí mật”, đưa ra nhiều quan niệm làm cơ sở cho việc đánh giá tính bí
mật của các hệ mật mã. Trong phần này chúng ta sẽ đưa ra quan điểm của ông
về tính bí mật - độ mật hoàn thiện.
Việc thám mã thường gặp nhất là khi chỉ biết bản mã, trong trường hợp
đó, mục đích của thám mã là từ bản mã mà tìm ra bản rõ tương ứng. Hệ mật
mã là có độ mật hoàn thiện, nếu việc biết bản mã không cho một chút thông
tin nào để tìm bản rõ. Nội dung này được định nghĩa chính xác như sau:
Cho hệ mật mã (P, c, K, E, D). Gía sử trên các tập p, c và K được xác
định các phân bố xác suất tương ứng. Ta ký hiệu P p(m ), pc(c) và pK(k) tương
Tổng quan về mật mã
14
ứng là xác suất để bản rõ là m, bản mã là c, và khoá là k. Xác suất của việc
bản rõ là m khi biết bản mã là c, được ký hiệu là Pp(mlc).
Định nghĩa 1.2: Hệ mật mã (P, c, K, E, D) được gọi là có độ mật hoàn
thiện nếu Pp(mlc)=Pp(m), với mọi meP.ceC.
Công thức trên có nghĩa là trong điều kiện đã có bản mã là c thì xác
suất để m là bản rõ của nó vẫn bằng xác suất xuất hiện m trong không gian rõ
khi không có điều kiện trên.
Định lý 1.3: Gỉa sử (P, c, K, E, D) ỉà một hệ mật mã với IKI=IPI=ICI.
Khi đó hệ mật mã có độ mật hoàn thiện nếu và chỉ nếu mỗi khoá được sử
dụng với xác suất bằng nhau 1/IKI, và với mọi meP và mọi ceC có một khoá
duy nhất k sao cho Ek(m)=c.
1.2.4. Ưu nhược điểm của hệ mật mã khoá đối xứng
Ưu điểm nổi bật của các hệ mật mã khoá đối xứng là việc xây dựng một
hệ mật mã có độ bảo mật cao khá dễ dàng về mặt lý thuyết. Nhưng nếu như
không kể đến việc cần có một nguồn sinh khoá ngãu nhiên (giả định chúng ta
đã có) thì việc phân phối rồi lưu trữ bảo mật và thoả thuận các khoá là một vấn
đề không thể chấp nhận được trong lĩnh vực truyền thồng mạng ngày nay.
Để khắc phục hiện tượng không thể lưu trữ nổi một khối lượng khoá
quá lớn đáp ứng được nhu cầu mã dịch, người ta xem xét đến việc sử dụng các

hệ mật mã khối với độ dài khối không lớn lắm như DES, hoặc các hệ mật
mã dòng mà khoá được sinh từ một nguổn giả ngẫu nhiên bằng thuật toán.
Mặc dù đã thực hiện việc mã hoá và giải mã bằng các hệ mật mã khối
hay bằng thuật toán sinh khoá như đã nêu ở trên thì vấn đề phân phối và thoả
thuận về khoá (mầm sinh khoá) vẫn phải được thực hiện. Như vậy, vấn đé
Tổng quan về m ật mã
15
phân phối và thoả thuận về khoá chưa thể giải quyết được trong các hệ mật mã
khoá đối xứng.
1.3. Hệ mật mã khoá công khai
1.3.1. Định nghĩa
Định nghĩa 1.4: Một hệ mật mã khoá công khai là một bộ 5 (P, c, K, E,
D) thoả mãn các điều kiện sau:
1. p là một tập hữu hạn các bản rõ có thể.
2. c là một tập hữu hạn các bản mã có thể.
3. K là một tập hữu hạn các khoá có thể.
4. Đối với mỗi k=(ks, k )eK có môt qui tắc mã Ek eE, và môt qui tắc
F p
giải mã DkeD. kp là khoá công khai dùng để mã hoá, ks là khoá bí mật
dùng để giải mã, từ khoá công khai kp không thể tìm được khoá bí mật
ks. Mỗi Ek : P—>c và Dỹ C—>p là những hàm mà: Dk (Ek (m))=m, với
mọi bản rõ meP
Một số hệ mật mã khoá công khai như: hệ mật mã RSA, hệ mật mã
ElGamal,
1.3.2. Thủ tục truyền tin mật trong hệ mật mã khoá công khai
Trong hệ mật mã khoá công khai, bài toán phân phối khoá và thoả
thuận khoá được giải quyết tự động như sau: mỗi người dùng A tham gia vào
mạng tạo cho mình một cặp khoá (ks, kp), sau đó công khai khoá mã kp trên
mạng cùng với địa chỉ của mình và giữ bí mật khoá dịch ks để giải mã. Khi đó
trong mạng ai muốn gửi thông tin cho A, họ lấy khóa mã công khai kp của A

Tổng quan về mật mã
16
trên mạng và mã hoá bản tin của mình thành bản mã và gửi bản mã đến địa
chỉ của A, sau khi nhận được bản mã, A sẽ dùng khoá bí mật ks của mình dịch
bản mã thành bản rõ.
Alice và Bob sẽ áp dụng thủ tục sau để truyền tin mật cho nhau bằng hệ mật
mã khoá công khai. Giả sử Alice muốn gửi một thông háo cho Bob trên một
kênh không mật và ta xem thông báo này là một chuỗi:
m=m1m2 mn
với số nguyên n > 1 nào đó. Ở đây mỗi ký hiệu của bản rõ n^eP, 1 < i < n.
Alice lấy khoá công khai của Bob là kp trên mạng về và mã hoá Ek (m^Cị. Bởi
vậy, Alice sẽ tính Cj=Ek (îîij), 1 < i < n và được chuỗi bản mã là:
c=c1c2 cn
sẽ được gửi trên kênh. Khi Bob nhận được c=cjc2 cn, anh ta sẽ giải mã bằng
hàm giải mã Dks của mình , tính nrii=Dk (Cị), 1 < i < n và thu được bản rõ là:
m=m,m2 mn.
Hình 1.2 là một ví dụ về một kênh liên lạc trong hệ mật mã khoá công
khai.
H ình 1.2
Tổng quan về m ật mã
17
1.3.3. Độ an toàn của hệ mật mã khoá công khai - độ an toàn tính toán.
Quan điểm về tính hoàn thiện về độ mật đã trình bày ở phần trên còn
được gọi là quan điểm về độ an toàn không điều kiện. Diffie-Hellman [11]
xem xét vấn đề bảo mật dưới một góc độ thấp hơn một chút nhưng vẫn đảm
bảo tính mục đích của nó đó là việc quan tâm thêm tham số thời gian. Nhiều
bài toán trong thực tế được đặt ra là “chỉ cần giữ bí mật trong một thời gian
nào đó cho một số thông tin nào đó mà thôi”. Với mục đích giải quyết vấn đề
trên, một độ đo về tính an toàn cho hệ mật mã được đưa ra liên quan đến
những nỗ lực tính toán cần thiết để phá hệ mật mã. Một hệ mật mã được gọi là

an toàn tính toán nếu một thuật toán tốt nhất để phá nó phải cần đến một số
lượng rất lớn các bước tính toán. Vấn đề nảy sinh là cho đến nay chưa có một
hệ mật mã nào được biết là an toàn theo nghĩa trên (được chứng minh), do
vậy trong thực tế người ta thông thường coi một hệ mật mã là “an toàn tính
toán” nếu có một phương pháp tốt nhất để phá nó nhưng yêu cầu về thời gian
lớn đến mức không thể chấp nhận được. Việc chứng minh về tính an toàn tính
toán cho một hệ mật mã cho đến nay thường được tiến hành theo phương thức
đó là quy độ an toàn của hệ mật mã đó về một bài toán đã được biết là “khó”
theo góc độ độ phức tạp tính toán.
1.3.4. Ưu nhược điểm của hệ mật mã khoá công khai
Vấn đẻ còn tồn đọng của các hệ mật mã khoá đối xứng được giải quyết
dễ dàng nhờ các hệ mật mã khoá công khai. Chính ưu điểm nổi bật này là
nguyên nhân thu hút nhiều trí tuệ vào việc đề xuất, đánh giá các hệ mật mã
này. Do bản thân các hệ mật mã khoá công khai đều dựa vào các giả thiết liên
quan đến các bài toán khó cho nên một cách tự nhiên đa số các hệ mật mã loại
này đều có tốc độ mã dịch không nhanh lắm. Chính nhược điểm này làm cho
các hệ mật mã khoá công khai khó được dùng một cách độc lập.
Tổng quan về m ật m ã
18
Một vấn để nữa nảy sinh khi sử dụng các hệ mật mã khoá công khai đó
là việc xác thực mà trong mô hình hệ mật mã khoá đối xứng không đặt ra. Do
các khoá mã công khai được công bố một cách công khai trên mạng cho nên
việc bảo đảm rằng “khoá được công bố có đúng là của đối tượng cần liên lạc
hay không?” là một kẽ hở có thể bị lợi dụng. Việc nghiên cứu các thủ tục xác
thực cũng được xúc tiến mạnh mẽ. Hàng hoạt các thủ tục xác thực như
Kerbross, X509, đã được nghiên cứu kỹ lưỡng và được sử dụng, một điều
khá thú vị là việc giải quyết vấn đề xác thực cũng chỉ cần chính bằng các hệ
mật mã khoá công khai. Một ưu điểm có thể được kể ra ở đây về các hệ mật
mã khoá công khai là các ứng dụng của nó trong lĩnh vực chữ ký số, cùng với
các kết quả về hàm Hash, thủ tục ký để bảo đảm tính toàn vẹn của một văn

bản được giải quyết.
Cuối cùng vấn đề đe doạ có tính tiềm tàng khi sử dụng các hệ mật mã
khoá công khai xuất phát ở chính cơ sở an toàn của các hệ mật mã này. Như
chúng ta đã biết, tất cả các hệ mật mã khoá cồng khai được biết, thậm chí đã
được sử dụng cũng đều chỉ dựa vào các bài toán mà hiện nay được coi là khó,
việc mạnh dạn đưa các hệ mật mã này vào sử dụng ngay cả trong tình huống
các bài toán nó dựa vào để đảm bảo sự an toàn đã được coi là khó thật, thì
chúng ta cũng phải lựa chọn một cách thận trọng các tham số để ít ra thì cũng
không dùng phải những tham số mà bài toán được dựa vào không còn khó
nữa.
1.4. Thám mã các hệ mật mă
1.4.1. Nguyên ỉý Kerekhoff
Chúng ta muốn xây dựng một hệ mật mã đạt được độ mật dưới giả
thuyết là luôn coi đối phương Oscar đã biết sơ đổ hệ mật mã đang dùng
(nhưng không biết khoá). Gỉa thuyết này gọi là nguyên lý Kerekhoff. Dĩ
Tổng quan về mật mã
19
nhiên, nếu Oscar không biết sơ đồ hệ mật mã được dùng thì nhiệm vụ của anh
ta sẽ khó khăn hơn. Tuy nhiên, ta không muốn độ mật của một hệ mậl mã lại
dựa trên giả thuyết không chắc chắn là Oscar không biết sơ đồ hệ mật mã
được sử dụng.
1.4.2. Các bài toán thám mã
Với nguyên lý Kerekhoff, người thám mã luôn biết trước sơ đồ hệ mật
mã được sử dụng thì việc thám mã có thể qui về việc phát hiện khóa. Ngoài
việc biết sơ đồ hệ mật mã được dùng, người thám mã còn cần có các thông tin
khác để phát hiện khoá. Tuỳ theo thông tin đó là gì mà D.R. Stinson [20] phàn
ra các bài toán thám mã thành các loại:
1. Chỉ có bản mã: thám mã chỉ có xâu bản mã c.
2. Bản rõ đã biêt: thám mã có xâu bản rõ m và xâu bản mã tương ứng c.
3. Bản rõ được lựa chọn: thám mã đã nhận được quyền truy nhập vào

cơ chế mã hoá. Bởi vậy, thám mã có thể chọn một xâu bản rõ m và
tạo nên xâu bản mã c tương ứng.
4. Bản mã được lựa chọn: thám mã có được quyền truy nhập tạm thời
vào cơ chế giải mã. Bởi vậy, thám mã có thể chọn một xâu bản mã c
và tạo nên xâu bản rõ m tương ứng.
Tổng quan về mật m ã
20
CHƯƠNG 2
Cơ SỞ TOÁN HỌC CỦA CÁC HỆ MẬT MÃ KHOÁ CÔNG KHAI
2.1. Giới thiệu
Năm 1976, Diffie-Hellman [11] đề xuất một hướng nghiên cứu mới về
khoa học mật mã dựa trên cơ sở về lý thuyết độ phức tạp tính toán. Vào giữa
những năm 60, lý thuyết về độ phức tạp tính toán ra đời và phát triển nhanh
chóng đã tạo cơ sở mới cho việc bảo mật. Nếu cần phải khắc phục một độ
phức tạp tính toán rất lớn không thể chấp nhận được trong thực tế để phá mã
thì bản mật mã đó được xem là bảo đảm bí mật. Tất nhiên, việc khó giải mã
đó ỉà dành cho những người thám mã, còn những người trong cuộc thì cả việc
lập mã và giải mã phải dễ dàng. Cơ sở toán học cho phương thức trên là các
hàm một phía và hàm một phía cửa sập được đề cập đến trong lý thuyết về độ
phức tạp tính toán. Độ an toàn của các hệ mật mã khoá công khai dựa vào các
bài toán khó mà chúng đã được nghiên cứu trong đại số và lý thuyết số, hơn
nữa việc tìm các tham số để xây dựng được một hệ mật mã an toàn cũng dẫn
đến giải quyết hàng loạt các bài toán trong đại số và lý thuyết số. Vì vậy, việc
trình bày những kiến thức cơ bản về lý thuyết độ phức tạp tính toán, một số
kết quả về đại số và lý thuyết số, một số thuật toán phục vụ cho tính toán các
số lớn là hết sức cần thiết. Trong chương này chúng ta sẽ trình bày sơ lược
những kiến thức toán học làm cơ sở cho nghiên cứu sau này. Các kết quả của
chương này có thể tìm trong [2, 3, 4, 5, 6, 7, 8, 14, 20].
2.2. Lý thuyết về độ phức tạp tính toán
2.2.1. Độ phức tạp tính toán

Cơ sở toán học của các hệ m ật m ã khoẩ công khai
21
Trong hoạt động thực tiễn, chúng ta gặp phải những bài toán quyết định
như sau: Cho một tập dữ kiện D, và một câu hỏi Q trên các dữ kiện thuộc tập
đó. Bài toán bao gồm việc quyết định xem, với mỗi dữ kiện cụ thể IeD, thì
câu hỏi Q được trả lời là “đúng” hay “sai”?
Ví dụ:
Bài toán hợp số:
Dữ liệu: số nguyên dương N.
Câu hỏi: có hay không hai số m, n>l sao cho N=m.n?
Bài toán logarithm rời rạc:
Dữ liệu: các số nguyên a, p, số nguyên tố p
Câu hỏi: có hay không số a sao cho a=logap mod p
Bài toán đổng dư bậc hai:
Dữ liệu: các số nguyên dương a, b, c
Câu hỏi: có hay không số x<c sao cho X2 = a mod b?
Như chúng ta đã biết, các bài toán quyết định được chia làm hai lớp, đó
là lớp các bài toán quyết định giải được và lớp các bài toán quyết định không
giải được. Lớp các bài toán không giải được là những bài toán không có lời
giải, tức là không có thuật toán để xác định xem bài toán cho câu trả lời đúng
hay sai. Còn lớp các bài toán quyết định giải được là những bài toán có thuật
toán để xác định xem bài toán cho câu trả lời là đúng hay sai. Nhưng với mỗi
bài toán giải được lại có độ phức tạp tính toán khác nhau, có bài toán giải
được có độ phức tạp tính toán chấp nhận được trong thực tế, đồng thời có
những bài toán giải được lại có độ phức tạp tính toán vô cùng lớn, không thể
chấp nhận được trong thực tế. Vì vậy, từ cái giải được một cách trừu tượng,
Cơ sở toán học của các hệ mật m ã khoẩ công khai
22
tiềm năng đến việc giải được trong thực tế của khoa học tính toán bằng máy
tính điện tử là một khoảng cách rất lớn. Song có những bài toán giải được

trong trường hợp tổng quát thì nó có độ phức tạp tính toán lớn, nhưng với bài
toán con của nó, tức với một dữ liệu đầu vào đặc biệt nào đó thì nó lại trở
thành bài toán giải được có độ phức tạp tính toán chấp nhận được trong thực
tế.
Độ phức tạp tính toán của một quá trình tính toán được định nghĩa là số
ồ nhớ hay số các phép toán được thực hiện trong quá trình tính toán đó. Độ
phức tạp tính toán của một thuật toán được hiểu là một hàm số f, sao cho với
mỗi n, f(n) là số ô nhớ hay số các phép toán tối đa mà thuật toán thực hiện quá
trình tính toán của mình trên các dữ liệu vào có độ lớn n. Độ phức tạp tính
toán của một bài toán hay một hàm f được định nghĩa là độ phức tạp của một
thuật toán tốt nhất có thể tìm được để giải bài toán hay hàm f đó.
2.2.2. Các lớp phức tạp
Ta định nghĩa p là lớp các bài toán có độ phức tạp thời gian là đa thức,
tức lớp các bài toán mà đối với chúng có thuật toán giải bài toán đó trong thời
gian đa thức. Các bài toán thuộc lớp p là các bài toán có thể giải được trong
thực tế của khoa học tính toán bằng máy tính điện tử.
Định nghĩa NP là lớp các bài toán mà đối với chúng có thuật toán
không đơn định giải chúng trong thời gian đa thức. Thuật toán không đơn định
là một mô hình tính toán trừu tượng, được giả định là sau mỗi bước có thể có
một số hữu hạn bước được lựa chọn đồng thời tiếp sau. Trong thực tế có nhiều
bài toán thuộc lớp NP, nhưng chưa có ai chứng minh được là chúng có thuộc
lớp p hay không. Như vậy, bài toán NP=P? đến nay vẫn còn mở, chưa có lời
giải.
Cơ sở toán học của các hệ m ật m ã khoá công khai
23
Gỉa sử NP^P, thì trong NP có một lớp con các bài toán được gọi là
NPC, đó là những bài toán mà bản thân thuộc lớp NP, và mọi bài toán bất kỳ
thuộc NP đều có thể qui dẫn về bài toán đó bằng một hàm tính được trong thời
gian đa thức. Chúng ta đã chứng minh được rất nhiều bài toán thuộc lớp NPC,
đây là lớp các bài toán khó nhất trong NP, còn lớp p là lớp các bài toán dễ

nhất trong NP.
Liệu lớp các bài toán NP - (NPC u P) = <Ị> ?, ta gọi lớp các bài toán đó
là NPI, chúng ta đã biết rằng lớp các bài toán NPI* (Ị), và như vậy lớp các bài
toán NPI có độ khó thuộc loại trung gian giữa NPC và p, tức là NPI có độ
phức tạp tính toán lớn hon lớp p và nhỏ hơn lớp NPC.
Từ trên ta thấy NP có cấu trúc như sau: NP=P u NPI u NPC, được minh hoạ ở
hình 2.1
Như vậy, hai lớp NPI và NPC là hai lớp khó nhất của NP, các bài toán
thuộc hai lớp này không thể giải được trong thực tế của khoa học tính toán
bằng máy tính điện tử trong trường hợp tổng quát. Trong thực tế gặp phải
những bài toán này, chúng ta sẽ đi tìm các bài toán con của nó, tức là tìm các
tập dữ liệu D’çzD đủ rộng, sao cho bài toán con tương ứng thuộc lớp p để giải.
Trong mật mã khoá công khai có ứng dụng rất nhiều bài toán thuộc lớp
NPC hoặc lớp NPI, người ta tìm được một dữ liệu D’ mà khi đó bài toán con
tương ứng Q(D’) thuộc lớp p để làm hàm giải mã, sau đó người ta dùng hàm
Cơ sở toán học của các hệ mật m ẵkhoá công khai
24
một phía cửa sập fzđể biến đổi dữ liệu D’ thành D rồi công khai làm hàm mã
hoá, khi đó người thám mã muốn giải mã họ phải đương đầu với bài toán
thuộc lớp NPC, hoặc lớp NPI, còn người nhận tin hợp pháp, do họ có cửa sập z
nên họ đưa được dữ liệu D thành D’ và giải được dễ dàng. Như vậy, hàm một
phía và hàm một phía cửa sập có vai trò vị trí đặc biệt trong mật mã khoá công
khai, nó là cơ sở để xây dựng các hệ mật mã khoá công khai.
2.2.3. Hàm một phía và hàm một phía cửa sập
2.2.3.1. Hàm một phía
Hàm f(x) được gọi là hàm một phía, nếu cho X tính y=f(x) là dễ, nhưng
việc tính ngược, tức cho y tính x=f' *(y) là rất khó. Dễ là tính được trong thời
gian đa thức, còn khó là không tính được trong thời gian đa thức.
Ví dụ:
Cho p là số nguên tố, g là phần tử sinh của nhóm nhân Zp, thì hàm

f(x)=gx mod p là hàm một phía.
Cho p, q là hai số nguyên tố, n=pq, thì hàm f(x)=x2 mod n là hàm một
phía.
2.2.3.2. Hàm một phía cửa sập
Hàm f(x) được gọi là hàm một phía cửa sập, nếu tính y=f(x) là dễ, tính
x=f‘(y) là khó, nhưng có cửa sập z để tính x=fz''(y) là dễ.
Ví dụ:
Cho n=pq là tích của hai số nguyên tố lớn, a là số nguyên, hàm f(x)=xa
mod n là hàm một phía cửa sập, nếu chỉ biết n và a thì tính x=f'(y) là
Cơ sở toán học của cắc hệ mật m ã khoấ công khai
25
khó, nhưng nếu biết cửa sập, chẳng hạn biết hai thừa số của n thì tính
được x=f'(y) dễ.
2.3. Một sô kết quả về đại sô và sô học
2.3.1. Cấu trúc đại số
Trước tiên giới thiệu khái niệm cơ bản nhất là tập hợp. Tập hợp là một
tập các phần tử có cùng một thuộc tính nào đó. Một tập hợp có thể là hữu hạn,
vô hạn không đếm được hay vô hạn đếm được. Lực lượng của một tập hợp là
số ỉượng các phần tử chứa trong tập hợp. Người ta định nghĩa các phép toán
trên các phần tử của tập hợp. Việc định nghĩa các phép toán trên tập hợp dẫn
đến một số khái niệm toán học như nhóm, vành, trường,
2.3.1.1. Nhóm
Định nghĩa 2.1: Ta gọi phép toán hai ngôi trong một tập hợp X là một
ánh xạ f từ XxX đến X. Gía trị f(x,y) của f tại (x,y) gọi là cái hợp thành của X
và y.
Cái hợp thành của X và y thường được ký hiệu bằng cách viết X và y
theo một thứ tự nhất định với một dấu đặc trưng cho phép toán đặt giữa X và y.
Người ta dùng ký hiệu x+y để chỉ phép cộng, dùng ký hiệu x.y để chỉ phép
nhân, trong trường hợp tổng quát dùng ký hiệu x*y để chỉ cái hợp thành của X
và y. Sau đây, trong các lý luận tổng quát, ta

sẽ viết cái hợp thành của X và y
là xy, nếu không có lý do nào khiến ta phải viết khác.
Định nghĩa 2.2: Một bộ phận A của X gọi là ổn định đối đối với phép
toán trong X nếu và chỉ nếu xyeA với mọi X , yeA.
Cơ sở toán học của các hệ mật m ã khoá công khai

×