TẬP ĐOÀN BƯU CHÍNH VIỄN THÔNG VIỆT NAM
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
TRẦN VĂN DŨNG
BÀI TOÁN LOGARITH RỜI RẠC VÀ ỨNG DỤNG
TRONG MẬT MÃ KHOÁ CÔNG KHAI
LUẬN VĂN THẠC SỸ KỸ THUẬT
HÀ NỘI - 2008
TẬP ĐOÀN BƯU CHÍNH VIỄN THÔNG VIỆT NAM
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
TRẦN VĂN DŨNG
BÀI TOÁN LOGARITH RỜI RẠC VÀ ỨNG DỤNG
TRONG MẬT MÃ KHOÁ CÔNG KHAI
Ngành : Kỹ thuật điện tử
Mã số : 60.52.70
LUẬN VĂN THẠC SỸ KỸ THUẬT
Người hướng dẫn khoa học: GS.TS NGUYỄN BÌNH
HÀ NỘI - 2008
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
LỜI CẢM ƠN
Trước tiên, tôi xin chân thành cảm ơn GS.TS Nguyễn Bình, người trực tiếp
hướng dẫn, chỉ bảo, giúp đỡ tôi trong quá trình viết luận văn.
Tôi cũng muốn nói lời cảm ơn tới các thầy, cô giáo, Ban Giám đốc Học viện
Công nghệ Bưu chính Viễn thông, Khoa Quốc tế và sau đại học và các đồng nghiệp
đang cùng công tác tại Viễn thông Phú Thọ đã tận tình chỉ bảo và tạo mọi điều kiện
giúp đỡ, động viên tôi trong suốt quá trình học tập.
Cuối cùng tôi xin gửi lời cảm ơn đến bố mẹ, tất cả gia đình, bạn bè đã giúp đỡ
động viên tôi trong suốt quá trình học tập để tôi có được đến hôm nay.
Xin chân thành cảm ơn!.
Hà nội, 08-08-2008
Trần Văn Dũng
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-i-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
MỤC LỤC
MỤC LỤC ii
DANH MỤC HÌNH VẼ v
DANH MỤC CÁC BẢNG vi
DANH MỤC TỪ VIẾT TẮT vii
LỜI NÓI ĐẦU 1
LỜI NÓI ĐẦU 1
CHƯƠNG 1 4
TỔNG QUAN VỀ MẬT MÃ HỌC 4
1.1 Khái quát về mật mã học 4
1.1.1.Giới thiệu về mật mã học 4
1.1.2.Sơ lược về mật mã học 4
1.2.Các hệ mật và các phương pháp thám mã 6
1.2.1.Các hệ mật mã khoá bí mật 6
1.2.2.Các hệ mật mã khoá công khai 8
1.2.3.Các phương pháp thám mã các hệ mật mã khoá bí mật 9
1.3.Ưu nhược điểm của các hệ mật mã 9
CHƯƠNG 2 13
2.1.Bài toán logarit tuyến tính 13
2.1.1.Định nghĩa 13
2.1.2.Các tính chất cơ bản 13
2.2.Phát biểu bài toán logarith rời rạc 13
2.2.1.Bài toán 13
2.2.2.Các tính chất cơ bản 14
2.3.Các phương pháp giải 15
2.3.1.Thuật toán vét cạn 15
2.3.2.Thuật toán bước đi lớn bước đi nhỏ ( Baby-step giant-step ) 15
2.3.3.Thuật toán của Pollard 15
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-ii-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
2.3.4.Thuật toán Pohlig – Hellman 16
2.3.5.Thuật toán tính chỉ số ( Index-Calculus) 17
2.3.5.1.Tính chỉ số trên GF(p) 18
2.3.5.2.Tính chỉ số trên GF(2n) 20
2.3.5.3. Sàng trường số đặc biệt SNFS 22
2.3.5.4. Sàng trường số tổng quát GNFS 22
CHƯƠNG 3 24
3.1.Hệ mật Pohlig – Hellman 24
3.2.Hệ mật Massey - Omura 28
3.3.Hệ mật Diffie - Hellman 38
3.3.1.Bài toán Diffie – Hellman: 38
3.3.2 Khởi tạo Diffie Hellman 39
3.3.3 Trao đổi khoá Diffie Hellman 39
3.4.Hệ mật trên đường cong Eliptic 40
3.4.1.Giới thiệu chung về đường cong Eliptic 40
3.4.1.1Quy tắc \“cộng\ 43
3.4.1.2Quy tắc phép nhân đôi 46
3.4.1.3.Bài toán Logarit rời rạc trên đường cong Eliptic (ECDLP) 46
3.4.2. Đường cong Eliptic trên trường hữu hạn: 47
3.4.2.1. Đường cong eliptic trên trường Fp ( p là số nguyên tố ) 47
3.4.2.2.Đường cong eliptic trên trường 48
3.4.2.3.Phép nhân đường cong 52
3.4.3.Xây dựng các hệ mật trên đường cong Elliptic 53
3.4.3.1.Mã hoá dữ liệu 53
3.4.3.2.Thao tác giải mã 54
3.4.3.3.Các hệ mật đường cong Elliptic 55
3.4.3.4.Các phương pháp giải các bài toán ECDLP 58
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-iii-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
3.4.3.4.1.Thuật toán vét cạn 58
3.4.3.4.2.Thuật toán bước lớn bước nhỏ 58
3.4.3.4.3.Thuật toán của Pollard 58
3.4.3.4.4.Thuật toán của Pollard 59
3.4.3.4.5.Thuật toán Pohlig – Hellman Elliptic 59
3.4.3.4.6.Phương pháp tính chỉ số và chỉ số ngược trên
đường cong Elliptic 59
3.4.3.5.Một số vấn đề cài đặt của thuật toán Elliptic 62
3.4.3.5.1.Cài đặt đường cong Elliptic trên GF(p) 62
3.4.3.5.2.Cài đặt đường cong Elliptic trên GF(2n) 63
3.4.4.Kết luận 64
CHƯƠNG 4 65
TÀI LIỆU THAM KHẢO 67
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-iv-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
DANH MỤC HÌNH VẼ
Hình 1.1. Mô hình hệ thống mã khoá bí mật 7
Hình 1.2. Mô hình hệ thống mã khoá công khai 9
Hình 1.3.Đồ thị so sánh chi phí công phá khoá bí mật và khoá công cộng 11
Hình 3.4.Các giao thức của hệ thống mật Massey - Omura 31
Hình 3.5.Các giao thức của hệ thống EMO-1 33
Hình 3.6.Các giao thức của hệ thống mật EMO-2 37
Hình 3.7.Một ví dụ về đường cong Elliptic 42
Hình 3.8. Điểm vô cực 43
Hình 3.9. Phép cộng trên đường cong Elliptic P+Q=R 44
Hình 3.10. Phép nhân đôi 46
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-v-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
DANH MỤC CÁC BẢNG
Bảng 1.1.So sánh độ an toàn giữa khóa bí mật và khóa công khai 10
Bảng 3.2.So sánh số lượng các thao tác đối với các phép toán trên đường cong Elliptic
trong hệ toạ độ Affine và hệ tọa độ chiếu 51
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-vi-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
DANH MỤC TỪ VIẾT TẮT
AES Advanced Encryption Standard Chuẩn mã dữ liệu tiên tiến
DES Data Encryption Standard Chuẩn mã dữ liệu
ECC Elliptic curves Cryptographically Hệ mật trên đường cong Elliptic
ECDLP Elliptic Curves Discrete Logarithm
Problem
Bài toán Logarith rời rạc trên đường
cong Elliptic
MDV Mã dịch vòng
MHV Mã hoán vị
MTT Mã thay thế
RSA Thuật toán RSA
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-vii-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
LỜI NÓI ĐẦU
Trong sự phát triển của xã hội loài người, kể từ khi có sự trao đổi thông tin
thì vấn đề bảo mật thông tin được đặt ra như một nhu cầu tất yếu. Tuy nhiên,
trong suốt nhiều thế kỷ, các kết quả nghiên cứu của lĩnh vực này hầu như
không được ứng dụng trong các lĩnh vực dân sự thông thường của đời sống – xã
hội mà chủ yếu được sử dụng trong lĩnh vực quân sự, chính trị, ngoại giao Ngày
nay, các ứng dụng bảo mật thông tin đang được sử dụng ngày càng phổ biến trong
các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốc
phòng…, cho đến các lĩnh vực dân sự như thương mại điện tử, ngân hàng…
Với sự phát triển của khoa học kỹ thuật và công nghệ, cùng với các nhu cầu
đặc biệt về bảo mật thông tin, ngày nay các kỹ thuật chính trong bảo mật thông tin
gồm: kỹ thuật mật mã (Cryptography), Kỹ thuật nguỵ trang (Steganography), Kỹ
thuật tạo bóng mờ (Watermarking-hay xăm điện tử). Bên cạnh việc làm thế nào che
giấu nội dung thông tin mật mã học phải đảm bảo các dịch vụ an toàn cơ bản là:
- Bí mật (Confidential): hệ thống đảm bảo thông tin được giữ bí mật. Thông
tin có thể bị phát hiện, ví dụ như trong quá trình truyền nhận, nhưng người
tấn công không thể hiểu được nội dung thông tin bị đánh cắp này.
- Đảm bảo tính toàn vẹn(Intergrity ) : hệ thống bảo đảm tính toàn vẹn thông
tin trong liên lạc hoặc giúp phát hiện rằng thông tin đã bị sửa đổi.
- Xác thực (Authentication): Giúp cho người nhận dữ liệu xác định được dữ
liệu mình nhận là dữ liệu gốc ban đầu. Kẻ giả mạo không thể có khả năng để
giả dạng một người khác hay nói cách khác là không thể mạo danh để gửi dữ
liệu. Người nhận có khả năng kiểm tra nguồn gốc thông tin mà họ nhận
được.
- Tính không thể chối bỏ ( Non-repudation): Người gửi hay người nhận không
thể chối bỏ sau khi đã gửi hoặc nhận thông tin.
Để đảm bảo các dịch vụ an toàn này các nhà toán học đã phát triển các thuật
toán mã hoá khác nhau. Từ những thuật toán được công khai để mọi người cùng sử
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-1-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
dụng và áp dụng như một chuẩn chung cho việc mã hoá dữ liệu; đến những thuật
toán mã hoá không được công bố. Có thể phân loại các thuật toán mã hoá như sau:
bao gồm mật mã khoá bí mật ( như DES, 3DES, RC4, AES…), mật mã khoá công
khai (RSA, DIFFIE – HELLMAN…). Mật mã khoá bí mật: quá trình mã hóa và giải
mã một thông điệp sử dụng cùng một mã khóa gọi là khóa bí mật (secret key)
hay khóa đối xứng (symmetric key). Do đó, vấn đề bảo mật thông tin đã mã hóa
hoàn toàn phụ thuộc vào việc giữ bí mật nội dung của mã khóa đã được sử dụng. Với
tốc độ và khả năng xử lý ngày càng được nâng cao của các bộ vi xử lý hiện nay,
phương pháp mã hóa chuẩn (Data Encryption Standard – DES) đã trở nên không
an toàn trong bảo mật thông tin.
Nếu như vấn đề khó khăn đặt ra đối với các phương pháp mã hóa bí mật chính là
bài toán trao đổi mã khóa thì ngược lại, các phương pháp mã hóa khóa công khai
giúp cho việc trao đổi mã khóa trở nên dễ dàng hơn. Nội dung của khóa công
khai (public key) không cần phải giữ bí mật như đối với khóa bí mật trong các
phương pháp mã hóa bí mật. Vấn đề đặt ra đối với mật mã khoá công khai chính là
phải tìm ra được hàm mật mã là một hàm dễ tính toán, song việc tìm hàm ngược
(giải mã ) phải là rất khó khăn (đối với bất kỳ ai không được trao quyền giải mã). Ta
nhận thấy bài toán logarith rời rạc là một bài toán khó ( chưa có một thuật toán nào
hiệu quả để tính logarith rời rạc một cách tổng quát) trong khi bài toán ngược luỹ
thừa rời rạc lại không khó (có thể sử dụng thuật toán bình phương và nhân). Với
mục đích là nghiên cứu tìm hiểu các hệ mật mã khoá công khai được sinh ra dựa
trên bài toán logarith rời rạc để đánh giá mức độ bảo mật thông tin của các hệ mật
trên so với các hệ mật mã khác. Luận văn gồm 04 chương cụ thể như sau:
Chương 1: Tổng quan về mật mã học
- Khái quát về mật mã học.
- Trình bày tổng quát các hệ mật mã và phân loại, các phương pháp thám
mã.
- Ưu nhược điểm của các hệ mật mã.
Chương 2: Bài toán logarith rời rạc
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-2-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
- Bài toán logarith tuyến tính
- Phát biểu bài toán logarith rời rạc.
- Các phương pháp giải bài toán logarith rời rạc.
Chương 3: Các hệ mật sử dụng bài toán Logarith rời rạc
- Hệ mật Pohlig – Hellman
- Hệ mật Massey – Omura
- Hệ mật Diffie - Hellman
- Hệ mật trên đường cong eliptic: Đường cong eliptic trên trường hữu hạn,
Xây dựng các hệ mật trên đường cong eliptic.
Chương 4: Kết luận và hướng nghiên cứu tiếp.
Do khả năng cũng như thời gian còn hạn chế nên luận văn không thể tránh
khỏi các sai sót, rất mong nhận được sự chỉ bảo, đóng góp ý kiến của thầy cô, bạn
bè đồng nghiệp để luận văn được hoàn thiện hơn.
.
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-3-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
CHƯƠNG 1.
TỔNG QUAN VỀ MẬT MÃ HỌC
1.1 Khái quát về mật mã học
1.1.1.Giới thiệu về mật mã học
Mật mã học là ngành khoa học ứng dụng toán học vào việc biến đổi thông
tin thành một dạng khác với mục đích che dấu nội dung, ý nghĩa thông tin cần mã
hóa. Đây là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội.
Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày
càng phổ biến hơn trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an
ninh, quân sự, quốc phòng…, cho đến các lĩnh vực dân sự như thương mại điện tử,
ngân hàng…
Cùng với sự phát triển của khoa học máy tính và Internet, các nghiên cứu và
ứng dụng của khoa học mật mã ngày càng trở nên đa dạng hơn, mở ra nhiều
hướng nghiên cứu chuyên sâu vào từng lĩnh vực ứng dụng đặc thù với những đặc
trưng riêng. Ứng dụng của khoa học mật mã không chỉ đơn thuần là mã hóa và giải
mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu và giải
quyết
:
chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký điện tử), chứng
nhận tính xác thực về người sở hữu mã khóa (chứng nhận khóa công cộng), các
quy trình giúp trao đổi thông tin và thực hiện giao dịch điện tử an toàn
trên mạng Những kết quả nghiên cứu về mật mã cũng đã được đưa vào trong các
hệ thống phức tạp hơn, kết hợp với những kỹ thuật khác để đáp ứng yêu cầu đa
dạng của các hệ thống ứng dụng khác nhau trong thực tế, ví dụ như hệ thống bỏ
phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản lý an ninh của các
đơn vị với hướng tiếp cận sinh trắc học, hệ thống cung cấp dịch vụ
multimedia trên mạng với yêu cầu cung cấp dịch vụ và bảo vệ bản quyền sở hữu
trí tuệ đối với thông tin số
1.1.2.Sơ lược về mật mã học
Khoa học về mật mã (cryptography) bao gồm:
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-4-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
- Mật mã học (cryptography).
- Phân tích mật mã (cryptannalysis)
Mật mã học là khoa học nghiên cứu cách ghi bí mật thông tin nhằm biến bản
tin rõ thành các bản mã.
Phân tích mật mã là khoa học nghiên cứu cách phá các hệ mật nhằm phục hồi
bản rõ ban đầu từ bản mã. Việc tìm hiểu các thông tin về khoá và các phương pháp
biến đổi thông tin cũng là một nhiệm vụ quan trọng của phân tích mật mã.
Có ba phương pháp tấn công cơ bản của thám mã:
- Tìm khoá vét cạn.
- Phân tích thống kê.
- Phân tích toán học.
Việc tấn công của thám mã có thể được thực hiện với các giả định:
- Tấn công chỉ với bản mã.
- Tấn công với bản rõ đã biết.
- Tấn công với các bản rõ được chọn.
- Tấn công với các bản mã được chọn.
Có hai hệ thống mật mã chính là: mật mã khoá bí mật và mật mã khoá công khai.
Khi xây dựng hệ mật người ta thường xem xét tới các tiêu chuẩn sau:
- Độ mật cần thiết.
- Kích thước không gian khoá.
- Tính đơn giản và tốc độ mã hoá và giải mã.
- Tính lan truyền sai.
- Tính mở rộng bản tin.
Sau đây ta đưa ra định nghĩa một số khái niệm cơ bản về mã hóa :
1.Bản rõ X được gọi là là bản tin gốc. Bản rõ có thể được chia nhỏ có kích thước
phù hợp.
2.Bản mã Y là bản tin gốc đã được mã hoá. Ở đây ta thường xét phương pháp mã
hóa mà không làm thay đổi kích thước của bản rõ, tức là chúng có cùng độ dài.
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-5-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
3.Mã là thuật toán E chuyển bản rõ thành bản mã. Thông thường chúng ta
cần thuật toán mã hóa mạnh, cho dù kẻ thù biết được thuật toán, nhưng không biết
thông tin về khóa cũng không tìm được bản rõ.
4.Khoá K là thông tin tham số dùng để mã hoá, chỉ có người gửi và nguời
nhận biết. Khóa là độc lập với bản rõ và có độ dài phù hợp với yêu cầu bảo mật.
5.Mã hoá là quá trình chuyển bản rõ thành bản mã, thông thường bao gồm
việc áp dụng thuật toán mã hóa và một số quá trình xử lý thông tin kèm theo.
6.Giải mã chuyển bản mã thành bản rõ, đây là quá trình ngược lại của mã
hóa.
7.Mật mã là chuyên ngành khoa học của Khoa học máy tính nghiên cứu về
các nguyên lý và phương pháp mã hoá. Hiện nay người ta đưa ra nhiều chuẩn an
toàn cho các lĩnh vực khác nhau của công nghệ thông tin.
8.Thám mã nghiên cứu các nguyên lý và phương pháp giải mã mà không
biết khoá. Thông thường khi đưa các mã mạnh ra làm chuẩn dùng chung giữa các
người sử dụng, các mã đó được các kẻ thám mã cũng như những người phát triển
mã tìm hiểu nghiên cứu các phương pháp giải một phần bản mã với các thông tin
không đầy đủ.
9.Lý thuyết mã bao gồm cả mật mã và thám mã. Nó là một thể thống nhất,
để đánh giá một mã mạnh hay không, đều phải xét từ cả hai khía cạnh đó. Các nhà
khoa học mong muốn tìm ra các mô hình mã hóa khái quát cao đáp ứng nhiều chính
sách an toàn khác nhau.
1.2.Các hệ mật và các phương pháp thám mã
1.2.1.Các hệ mật mã khoá bí mật
Hệ thống mã hóa bí mật là hệ thống mã hóa trong đó quy trình mã hóa và
giải mã đều sử dụng chung một khoá - khóa bí mật. Việc bảo mật thông tin phụ
thuộc vào việc bảo mật khóa.
Trong hệ thống mã hóa quy ước, thông điệp nguồn được mã hóa với mã khóa k
được thống nhất trước giữa người gửi A và người nhận B. Người A sẽ sử dụng mã
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-6-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
khóa k để mã hóa thông điệp x thành thông điệp y và gửi y cho người B;
người B sẽ sử dụng mã khóa k để giải mã thông điệp y này. Vấn đề an toàn bảo
mật thông tin được mã hóa phụ thuộc vào việc giữ bí mật nội dung mã khóa k.
Nếu người C biết được mã khóa k thì C có thể “mở khóa” thông điệp đã được mã
hóa mà người A gửi cho người B
.
Hình 1.1. Mô hình hệ thống mã khoá bí mật
Có 3 phương pháp chính trong mật mã khoá bí mật ( mật mã khoá riêng hay
mật mã cổ điển) pháp nổi bật đó là:
- Thay thế.
- Hoán vị.
- Xử lý bit ( chủ yếu trong ngôn ngữ lập trình)
Các hệ mật mã khoá bao gồm các hệ mật sau:
- Mật mã thay thế
- Mật mã hoán vị
- Mật mã Hill
- Hệ mật xây dựng trên các cấp số nhân xyclic trên vành đa thức
- Mã Affine ( trường hợp đặc biệt của hệ mã thay thế)
- Các hệ mật mã tích
- Các hệ mã dòng
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-7-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
Ngoài ra còn có phương pháp hỗn hợp thực hiện kết hợp các phương pháp trên
mà điển hình là chuẩn mã dữ liệu DES, chuẩn mã dữ liệu tiên tiến AES của Mỹ.
1.2.2.Các hệ mật mã khoá công khai
Vấn đề phát sinh trong các hệ thống mã hóa bí mật là việc quy ước chung
mã khóa k giữa người gửi A và người nhận B. Trên thực tế, nhu cầu thay đổi nội
dung của mã khóa k là cần thiết, do đó, cần có sự trao đổi thông tin về mã khóa k
giữa A và B. Để bảo mật mã khóa k, A và B phải trao đổi với nhau trên một kênh
liên lạc thật sự an toàn và bí mật. Tuy nhiên, rất khó có thể bảo đảm được sự an
toàn của kênh liên lạc nên mã khóa k vẫn có thể bị phát hiện bởi người C.
Ý tưởng về hệ thống mã hóa khóa công khai được Martin Hellman,
Ralph Merkle và Whitfield Diffie tại Đại học Stanford giới thiệu vào năm 1976. Sau
đó, phương pháp Diffie-Hellman của Martin Hellman và Whitfield Diffie đã được
công bố. Năm 1977, trên báo "The Scientific American", nhóm tác giả Ronald
Rivest, Adi Shamir và Leonard Adleman đã công bố phương pháp RSA, phương
pháp mã hóa khóa công cộng nổi tiếng và được sử dụng rất nhiều hiện nay trong
các ứng dụng mã hóa và bảo vệ thông tin. RSA nhanh chóng trở thành chuẩn mã
hóa khóa công cộng trên toàn thế giới do tính an toàn và khả năng ứng dụng của
nó.
Một hệ thống khóa công cộng sử dụng hai loại khóa trong cùng một cặp
khóa: khóa công cộng (public key) được công bố rộng rãi và được sử dụng trong
mã hóa thông tin, khóa riêng (private key) chỉ do một người nắm giữ và được
sử dụng để giải mã thông tin đã được mã hóa bằng khóa công cộng. Các phương
pháp mã hóa này khai thác những ánh xạ f mà việc thực hiện ánh xạ ngược f
–1
rất khó so với việc thực hiện ánh xạ f. Chỉ khi biết được mã khóa riêng thì mới có
thể thực hiện được ánh xạ ngược f
–1
.Khi áp dụng hệ thống mã hóa khóa công
cộng, người A sử dụng mã khóa công cộng để mã hóa thông điệp và gửi cho người
B. Do biết được mã khóa riêng nên B mới có thể giải mã thông điệp mà A đã mã
hóa. Người C nếu phát hiện được thông điệp mà A gửi cho B, kết hợp với thông tin
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-8-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
về mã khóa công cộng đã được công bố, cũng rất khó có khả năng giải mã được
thông điệp này do không nắm được mã khóa riêng của B.
Hình 1.2. Mô hình hệ thống mã khoá công khai
1.2.3.Các phương pháp thám mã các hệ mật mã khoá bí mật
Trước tiên ta phân biệt các mức độ tấn công khác nhau vào các hệ mật. Sau
đây là một số loại thông dụng nhất.
Chỉ có bản mã:
Thám mã chỉ có xâu bản mã y.
Bản rõ đã biết:
Thám mã có xâu bản rõ x và xâu bản mã tương ứng y.
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 bản mã y và tạo nên xâu bản rõ x tương ứng.
Mỗi loại hệ mật mã thì đều có các phương pháp thám mã tương ứng.
1.3.Ưu nhược điểm của các hệ mật mã
Các phương pháp mã hóa bí mật có ưu điểm xử lý rất nhanh và khả năng
bảo mật cao so với các phương pháp mã hóa khóa công cộng nhưng lại gặp phải
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-9-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
vấn đề khó khăn trong việc trao đổi mã khóa. Ngược lại, các phương pháp mã
hóa khóa công khai tuy xử lý thông tin chậm hơn nhưng lại cho phép người sử
dụng trao đổi mã khóa dễ dàng hơn
Các phương pháp mã hóa bí mật có ưu điểm xử lý rất nhanh so với các
phương pháp mã hóa khóa công cộng. Do khóa dùng để mã hóa cũng được dùng
để giải mã nên cần phải giữ bí mật nội dung của khóa và mã khóa được gọi là
khóa bí mật (secret key). Ngay cả trong trường hợp khóa được trao đổi trực tiếp
thì mã khóa này vẫn có khả năng bị phát hiện. Vấn đề khó khăn đặt ra đối
với các phương pháp mã hóa này chính là bài toán trao đổi mã khóa.
Ngược lại, các phương pháp mã hóa khóa công khai giúp cho việc trao đổi mã
khóa trở nên dễ dàng hơn. Nội dung của khóa công khai (public key) không cần
phải giữ bí mật như đối với khóa bí mật trong các phương pháp mã hóa bí mật.
Bảng 1.1.
So
sánh
độ
an
toàn
giữa
khóa
bí
mật
và
khóa
công
khai
Phương
pháp
mã
hoá bí mật
Phương
pháp
mã
hóa
khóa
công
khai
Kích
thước
mã
khóa
(bit)
Thuật
toán
Kích
thước
mã
khóa
(bit)
Ứng
dụng
56 DES 256
70 384
Phiên
bản
PGP
cũ
(kích
thước
tối
thiểu)
80 SKIPJACK 512
Short
DSS, PGP
“low
grade”
96 768 PGP
“high
grade”
112 3DES
với
2
khóa 1024
Long
DSS,
PGP
“military
grade”
128 IDEA,
AES 1440
150 2047 PGP
“alien
grade”
168 3DES
với
3
khóa 2880
192 AES 3000
256 AES 4096
Dựa vào Bảng 1.1, chúng ta có thể nhận thấy rằng để có được mức độ an toàn
tương đương với một phương pháp mã hóa bí mật, một phương pháp mã hóa
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-10-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
khóa công khai phải sử dụng mã khóa có độ dài lớn hơn nhiều lần mã khóa được
sử dụng trong mã hóa bí mật. Điều này được thể hiện rõ hơn qua đồ thị so sánh chi
phí cần thiết để công phá khóa bí mật và khóa công cộng trong Hình 1.3. Kích
thước mã khóa được tính dựa trên mô hình đánh giá, ước lượng chi phí phân tích
mật mã do Hội đồng Nghiên cứu Quốc gia Hoa Kỳ (National Research Council)
đề nghị [11].
Hình 1.3.Đồ thị so sánh chi phí công phá khoá bí mật và khoá công cộng
Trên thực tế, khóa công cộng dễ bị tấn công hơn khóa bí mật. Để tìm ra được
khóa bí mật, người giải mã cần phải có thêm một số thông tin liên quan đến các
đặc tính của văn bản nguồn trước khi mã hóa để tìm ra manh mối giải mã thay vì
phải sử dụng phương pháp vét cạn mã khóa. Ngoài ra, việc xác định xem thông
điệp sau khi giải mã có đúng là thông điệp ban đầu trước khi mã hóa hay không lại
là một vấn đề khó khăn. Ngược lại, đối với các khóa công cộng, việc công phá hoàn
toàn có thể thực hiện được với điều kiện có đủ tài nguyên và thời gian xử lý. Ngoài
ra, để có thể giải mã một thông điệp sử dụng phương pháp mã hóa khóa công
cộng, người giải mã cũng không cần phải vét cạn toàn bộ không gian mã khóa mà
chỉ cần khảo sát trên tập con của không gian này.
Bên cạnh đó, khóa công khai còn là mục tiêu tấn công đáng giá đối với những
người giải mã hơn các khóa bí mật. Khóa công cộng thường dùng để mã hóa các
khóa bí mật khi thực hiện việc trao đổi mã khóa bí mật. Nếu khóa công khai bị
phá thì các thông điệp sau đó sử dụng mã khóa này cũng bị giải mã. Trong khi đó,
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-11-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
nếu chỉ phát hiện được một mã khóa bí mật thì chỉ có thông điệp sử dụng mã khóa
này mới bị giải mã. Trên thực tế, mã khóa bí mật thường chỉ được sử dụng một lần
nên ít có giá trị hơn so với khóa công cộng. Tóm lại, mặc dù khóa công cộng được
dùng để mã hóa các thông tin ngắn nhưng đây lại là các thông tin quan trọng.
.
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-12-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
CHƯƠNG 2.
BÀI TOÁN LOGARITH RỜI RẠC
2.1.Bài toán logarith tuyến tính
2.1.1.Định nghĩa
Trên trường số thực R với
0, 1
α α
> ≠
và hai số thực
β
, x ta có thể tìm được
một số x thoả mãn
x
β α
=
Ta có thể viết lại
logx
α
β
=
(2.1)
Bài toán logarith tuyến tính chính là bài toán tìm x.
2.1.2.Các tính chất cơ bản
Tính chất 1: Với
1 2
, 0
β β
>
thì ta có:
1 2 1 2
1
1 2
2
log ( . ) log log .
log ( ) log log .
α α α
α α α
β β β β
β
β β
β
+ = +
+ = −
(2.2)
Tính chất 2: Với
0
β
>
, x bất kỳ thì ta có:
log log .
x
x
α α
β β
=
(2.3)
MERGEFORMAT
Tính chất 3: Với
0
β
>
, x >0 thì ta có:
log
log .
log
x
x
α
β
β
α
=
(2.4)
2.2.Phát biểu bài toán logarith rời rạc
2.2.1.Bài toán
Giả sử cho Z
p
là một trường hữu hạn với p là 1 số nguyên tố lớn.
Cho
α
là phần tử sinh của nhóm nhân,
β
≠
0 là một phần tử khác thuộc Z
p
ta có
thể tìm được một số nguyên tố x duy nhất thoả mãn:
β α
=
x
(2.5)
Ta có thể viết: log
α
β
= x.
Bài toán logarith rời rạc chính là bài toán tìm x.
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-13-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
2.2.2.Các tính chất cơ bản
Nếu
γ
là một phần tử sinh khác của Z
p
thì
log log .log .
γ γ α
β α β
=
(2.6)
log . log log .
γ γ γ
α β α β
= +
(2.7)
log log log .
γ γ γ
α
α β
β
= −
(2.8)
2.2.3.Ví dụ
Xét Z
19
. Ta có bảng sau:
x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
log
3
x 18 7 1 14 4 8 6 3 2 11 12 15 17 13 5 10 16 9
log
2
x 18 1 13 2 16 14 6 3 8 17 12 15 5 7 11 4 10 9
log
10
x 18 17 5 16 2 4 12 15 10 1 6 3 13 11 7 14 8 9
log
13
x 18 11 17 4 14 10 12 15 16 7 6 3 1 5 13 8 2 9
log
14
x 18 13 7 8 10 2 6 3 14 5 12 15 11 1 17 16 4 9
log
15
x 18 5 11 10 8 16 12 15 4 13 6 3 7 17 1 2 14 9
log
4
x 9 \ \ 1 8 7 3 \ 4 \ 6 \ \ \ \ 2 5 \
Từ bảng trên ta có: 2
13
≡
3 mod 19.
Nhìn chung đây là một bài toán rất khó khi p đủ lớn ( chẳng hạn p
≈
10
200
).
2.2.4.Nhận xét
So sánh giữa 2 bài toán logarith tuyến tính và logarith rời rạc trình bày ở trên
ta rút ra một số kết luận như sau:
- Đối với bài toán logarith tuyến tính: khi giải bài toán ngược thì đây cũng là
một bài toán khó giải nhưng ta có thể ước đoán được giá trị của nó trong một
khoảng xác định. Vì vậy nó vẫn là một bài toán dễ tìm ra lời giải.
- Đối với bài toán logarith rời rạc: ngoài tính khó giải của bài toán ngược ra
ta còn không thể ước đoán được giá trị của nó. Đây là một bài toán rất khó giải hiện
này không có thuật toán nào có hiệu quả để giải bài toán này. Do vậy các nhà
nghiên cứu mật mã học xây dựng các hệ mật có khả năng bảo mật cao dựa trên tính
khó giải của bài toán logarith rời rạc.
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
-14-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
2.3.Các phương pháp giải bài toán logarith rời rạc
2.3.1.Thuật toán vét cạn
Đây là thuật toán tự nhiên nhất và kém hiệu quả nhất để tính logaritth rời rạc.
Người ta cứ thử tính
α
0
,
α
1
,
α
2
, … cho đến khi nào đạt được
β
thì thôi. Phương
pháp này đòi hỏi O(n) phép toán nhân với n là cấp của
α
và do đó không hiệu quả
khi n lớn và rõ ràng là hàm mũ thực sự theo logn.
2.3.2.Thuật toán bước đi lớn bước đi nhỏ ( Baby-step giant-step )
Giả sử m = [
n
] với n là cấp của
α
.
Thuật toán bước đi lớn bước đi nhỏ là sự thoả hiệp giữa thời gian và bộ nhớ của
phương pháp vét cạn và dựa trên quan sát sau là nếu
β α
=
x
thì chúng có thể viết
x = im + j với 0
≤
i,j < m. Từ đó
α
x
=
α
im
α
j
hay
β
(
α
-m
)
i
=
α
j
. Vậy nên người ta
có thể lập bảng (j,
α
j
) với 0
≤
j < m.
Sau đó lần lượt tính
β
(
α
-m
)
-i
với i lần lượt chạy từ 0 đến m – 1 và tra trong bảng
(j,
α
j
) chừng nào có được đẳng thức
β
(
α
-m
)
i
=
α
j
thì dừng lại.
Thuật toán này đòi hỏi không gian lưu trữ là O(
n
) phần tử nhóm và đòi hỏi
O(
n
) phép nhân để xây dựng và O(
n
logn) phép so sánh để sắp xếp. Ngoài ra
nó cũng cần O(
n
) phép toán nhân và O(
n
) phép toán tra bảng. Tựu chung là
nó có thời gian chạy O(
n
) phép toán nhóm.
2.3.3.Thuật toán
ρ
của Pollard
Đây là thuật toán ngẫu nhiên với cùng thời gian chạy như trong thuật toán
bước đi lớn bước đi nhỏ nhưng không cần đến không gian lưu trữ nhiều.
Nó chia nhóm G thành ba tập S
1
, S
2
, S
3
như nhau dựa trên tính chất dễ kiểm
nghiệm. Định nghĩa dãy các phần tử của nhóm x
0
, x
1
, x
2
, … với x
0
=1 như sau:
x
i+1
=
f
(x
i
)
efd
=
2
.
.
i
i
i
x
x
x
β
α
đối với i
≥
0. (2.9)
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
Nếu x
i
S
1
Nếu x
i
S
2
Nếu x
i
S
3
-15-
H c vi n Công ngh B u chính Vi n thôngọ ệ ệ ư ễ
Dãy các phần tử của nhóm sẽ xác định hai dãy số nguyên a
0
, a
1,
a
2
, … và b
0
,
b
1,
b
2
, … thoả mãn x
i
=
.
ai bi
α β
với i
0
≥
và với a
0
= 0, b
0
= 0 thì:
a
i+1
=
efd
=
1
2 mod
mod
i
i
i
a
a n
n
a
+
(2.10)
và
b
i+1
=
efd
=
1
mod
2 mod
i
i
i
b
n
b n
b
+
(2.11)
Người ta áp dụng thuật toán tìm chu trình của Floyd để tìm hai phần tử của nhóm x
i
và x
2i
sai cho x
i
= x
2i
. Từ đó
i
a
α
i
b
β
=
2i
a
α
2i
b
β
và do đó
2i i
b b
β
−
=
2i i
a a
α
−
. Lấy
logarith cả hai vế theo cơ số
α
chúng ta thu được:
(b
i
- b
2i
).log
α
β
≡
( a
2i
- a
i
) (mod n)
Với điều kiện là b
i
≠
b
2i
(mod n) thì chúng ta có thể dễ dàng giải phương trình đồng
dư này để tính ra log
α
β
. Trên thực tế thì xác xuất để cho b
i
≠
b
2i
(mod n) là rất
nhỏ và có thể bỏ qua.
Thuật toán này được thực hiện giống như hình chữ
ρ
với điểm xuất phát là
chân chữ này và vòng tròn phía trên chính là khi thuật toán rơi vào chu trình. Chính
vì vậy mà nó được gọi là thuật toán
ρ
do Pollard nghĩ ra.
2.3.4.Thuật toán Pohlig – Hellman
Thuật toán này tận dụng lợi thế của phân rã của cấp n của nhóm G. Giả sử
phân rã của n = p
1
1
e
p
2
2
e
…p
r
r
e
là phân rã nguyên tố của n. Nếu x = log
α
β
thì cách
tiếp cận này xác định x
i
= x mod p
i
i
e
với 1
≤
i
≤
r và sau đó sử dụng thuật toán
Gauss làm việc với định lý phần dư Trung Hoa để tìm ra x mod n.
Mỗi số x
i
được tính theo các chữ số l
o
, l
1
, …, l
1
i
e −
trong biểu diễn p
i
phân rã
của x
i
= l
0
+ l
1
p
1
+ … + l
1
i
e −
p
1
i
e −
với 0
≤
l
j
≤
p
i
– 1. Giả sử bước thứ j chúng ta
Tr n V n D ngầ ă ũ Lu n v n Th c s k thu tậ ă ạ ỹ ỹ ậ
Nếu x
i
S
1
Nếu x
i
S
2
Nếu x
i
S
3
Nếu x
i
S
1
Nếu x
i
S
2
Nếu x
i
S
3
-16-