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

Nghiên cứu một biến thể của hệ mật ELGAL trên vành zp

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 (1.66 MB, 70 trang )

PHẠM NGỌC BẢO

BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

CÔNG NGHỆ THÔNG TIN

LUẬN VĂN THẠC SỸ
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN

NGHIÊN CỨU MỘT BIẾN THỂ CỦA HỆ MẬT
ELGALMAL TRÊN VÀNH ZP

PHẠM NGỌC BẢO

2014 - 2016

HÀ NỘI - 2016


BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

LUẬN VĂN THẠC SỸ

NGHIÊN CỨU MỘT BIẾN THỂ CỦA HỆ MẬT
ELGAMAL TRÊN VÀNH ZP
PHẠM NGỌC BẢO
CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 60.48.02.018
NGƯỜI HƯỚNG DẪN KHOA HỌC



GS.TS NGUYỄN BÌNH
HÀ NỘI - 2016


LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu riêng của tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai
công bố trong bất kỳ công trình nào khác.

Hà Nội, ngày 07 tháng 11 năm 2016
Học viên thực hiện

Phạm Ngọc Bảo


LỜI CẢM ƠN
Sau một thời gian nghiên cứu tìm hiểu, em đã hoàn thành luận văn thạc sỹ tin
học chuyên ngành công nghệ thông tin với đề tài: “ Nghiên cứu một biến thể của hệ
mật Elgamal trên vành Zp ”.
Lời đầu tiên em xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo GS.TS Nguyễn
Bình đã tận tình hướng dẫn em trong suốt quá trình nghiên cứu và thực hiện đề tài.
Em cũng xin chân thành cảm ơn quý thầy cô khoa Sau đại học của Viện Đại học
Mở Hà Nội và các anh chị trong lớp học đã hướng dẫn, truyền đạt kiến thức, tạo
mọi điều kiện giúp đỡ em trong suốt thời gian theo học và thực hiện luận văn này.
Qua việc nghiên cứu và hoàn thành luận văn, em đã có thêm nhiều kiến thức
bổ ích trong chuyên môn cũng như phương pháp luận nghiên cứu khoa học. Trong
khuôn khổ của một luận văn, chắc chắn chưa đáp ứng được đầy đủ những vấn đề
đặt ra. Vì điều kiện nghiên cứu còn hạn chế, nên mặc dù đã cố gắng rất nhiều nhưng
luận văn không tranh khỏi những thiếu sót. Em rất mong nhận được sự đóng góp ý

kiến, phê bình quý báu của các thầy cô trong hội đồng thẩm định.
Một lần nữa em xin chân thành cảm ơn !
Hà Nội, ngày 07 tháng 11 năm 2016
Học viên thực hiện

Phạm Ngọc Bảo


MỤC LỤC
MỤC LỤC...................................................................................................................i
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT……………………………iii
DANH SÁCH BẢNG………………………………………………………………iv
DANH SÁCH HÌNH VẼ…………………………………………………………....v
MỞ ĐẦU…………………………………………………………………………….1
CHƯƠNG I : SƠ LƯỢC VỀ MÃ HÓA…………………………………………….2
1.1. Khái niệm về mật mã và hệ mật mã……………………………………...…….2
1.1.1. Khái niệm về mật mã………………………………………………………...2
1.1.2. Khái niệm về hệ mật mã…………………………………………………..…3
1.1.3. Vai trò của mật mã trong việc bảo vệ thông tin…………………………...…3
1.2. Các hệ mật mã…………………………………………………………..…...…4
1.2.1. Hệ mật mã đối xứng (hệ mật mã hóa không công khai) …………………….4
1.2.2. Hệ mật mã phi đối xứng (hệ mật mã hóa công khai) ……………………..…5
1.3.Thám mã và tính an toàn của hệ mật mã…………………………………….…12
1.3.1.Thám mã………………………………………………………………….….12
1.3.2.Tính an toàn của một hệ mật mã……………………………………...……...15
CHƯƠNG II : BIẾN THỂ CỦA HỆ MẬT ELGAMAL…………………………..16
2.1. Giới thiệu về logarithm rời rạc………………………………………..………16
2.1.1. Định nghĩa…………………………………………………………..………16
2.1.2. Ứng dụng trong mật mã………………………………………………..……18
2.1.3. Trao đổi khóa bí mật Diffie – Hellman………………………………...……19

2.2. Các thuật toán cho bài toán logarithm rời rạc…………………………………32
2.2.1. Phương pháp đơn định………………………………………………………34
2.2.2. Thuật toán Shanks………………………………………………………..…36
2.2.3. Thuật toán Pohlig – Hellman…………………………………………..……37
2.2.4. Phương pháp tính toán chỉ số…………………………………….…………40
2.2.5. Phương pháp - Pollaid đối với logarithm rời rạc……………………...……42

i


2.2.6. Logarithm rời rạc trong trường nguyên tố…………………………...……...42
2.2.7. Logarithm rời rạc trong trường Galois………………………………………46
2.3. Nghiên cứu biến thể của hệ mật Elgamal……………..………….……………47
2.3.1. Hệ mật Elgamal…………………………………………………………...…48
2.3.2. Phát triển thuật toán mật mã khóa công khai………………...…..……….…50
CHƯƠNG III : CHƯƠNG TRÌNH MÔ PHỎNG……………………..……...……55
3.1. Môi trường thực hiện…………………………………………………….……55
3.2. Giao diện demo…………………………………..……………………………55
3.3. Kết quả đạt được………………………………………………....……………58
3.4. Hướng phát triển của đề tài……………………………………………………58
KẾT LUẬN………………………………………………...………………………59
TÀI LIỆU THAM KHẢO…………………………………………………………60

ii


DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Từ viết tắt

Nghĩa tiếng Anh


Nghĩa tiếng Viết

PGP

Pretty Good Privacy

Bảo mật tốt

GPG

GNU Privacy Guard

Bảo vệ riêng tư

International Data Encrytion

Thuật toán mã hóa dữ liệu quốc

Algorithm

tế

D-H

Diffie-Hellman

Tên phương pháp trao đổi khóa

DSS


Department of Social security

Bộ an ninh xã hội

TLS

Transport Layer Security

An ninh tầng giao vận

DLP

Discrete Logarithm Problem

Bài toán Logarit rời rạc

DHP

Diffie Hellman Problem

Bài toán Diffie Hellman

SSL

Secure Sockets Layer

Tầng đệm bảo mật

IDEA


iii


DANH SÁCH BẢNG
Bảng 1.1: Tần suất xuất hiện của 26 chữ cái ......................................................... 14
Bảng 2.1: Các biến của Alice và Bob trong trao đổi khóa Diffie – Hellman ........... 21
Bảng 2.2: Các giá trị của Alice và Bob trong trao đổi khóa Diffie - Hellman ......... 25
Bảng 2.3: Các giá trị của Eve trong trao đổi khóa Diffie – Hellman ....................... 25
Bảng 2.4: Giá trị biến trong ví dụ 2.8..................................................................... 55
Bảng 2.5: Giá trị biến trong ví dụ 2.8..................................................................... 56

iv


DANH SÁCH HÌNH VẼ
Hình 1.1: Mô hình hệ mật mã .................................................................................. 3
Hình 1.2: Chọn một số ngẫu nhiên lớn để sinh cặp khóa .......................................... 7
Hình 1.3: Dùng khóa công khai để mã hóa, nhưng dùng khóa bí mật để giải mã...... 7
Hình 1.4: Dùng khóa bí mật để ký một thông báo, dùng khóa công khai để xác minh
chữ ký ...................................................................................................... 8
Hình 1.5: Tổ hợp khóa bí mật mình với khóa công khai của người khác tạo ra khóa
dùng chung chỉ hai người biết .................................................................. 8
Hình 2.1: Minh họa trao đổi khóa Diffie – Hellman ............................................... 20
Hình 2.2: Bài toán logarithm rời rạc trong Zp ........................................................ 32
Hình 2.3: Hệ mật khóa công khai Elgamal trong Zp* ............................................. 33
Hình 3.1: Giao diện chính của chương trình .......................................................... 55
Hình 3.2: Kết quả khi ấn nút “Khởi tạo” ................................................................ 56
Hình 3.3: Khi mã hóa bản mã “Hello” ................................................................... 56
Hình 3.4: Quá trình phân tích các thành phần C, E, S khi mã hóa .......................... 56

Hình 3.5: Kết quả khi thực hiện giải mã ................................................................ 57
Hình 3.6: Quá trình trả kết quả thám mã “Hello” ................................................... 57

v


MỞ ĐẦU
Ta biết rằng tin truyền trên mạng rất dễ bị lấy cắp. Để đảm bảo việc truyền
tin an toàn người ta thường mã hóa thông tin trước khi truyền đi. Việc mã hóa
thường theo quy tắc nhất định gọi là hệ mật mã.
Hiện nay có hai loại hệ mật mã: mật mã cổ điển và mật mã khóa công khai.
Mật mã cổ điển dễ hiểu, dễ thực thi nhưng độ an toàn không cao. Vì giới hạn tính
toán chỉ thực hiện trong phạm vi bảng chữ cái sử dụng văn bản cần mã hóa. Với các
hệ mã cổ điển, nếu biết khóa lập mã hay thuật toán lập mã người ta có thể dễ tìm
được bản rõ. Ngược lại các hệ mật mã khóa công khai cho biết khóa lập mã K và
hàm lập mã Ck thì cũng rất khó tìm được cách giải mã. Hệ mã hóa với khóa công
khai Elgaml được đề xuất năm 1985, dựa trên độ phức tạp của bài toán logarithm
rời rạc. Đó là bài toán được dùng nhiều trong các thủ tục mật mã.
Đề tài này nhằm nghiên cứu về một biến thể của hệ mật Elgamal trên vành
Zp dựa trên bài toán logarithm rời rạc và một số ứng dụng của nó trong thực tế.
Luận văn được trình bày trong ba chương ngoài phần mở đầu và kết luận.
Chương 1 gồm những kiến thức cơ sở tổng quan nhằm phục vụ cho chương
2, bao gồm những kiến thức liên quan trực tiếp về các thuật toán logarithm, hệ mật
Elgamal và biến thể của nó.
Chương 2 học viên xin trình bày những kiến thức cơ bản của hệ mã Elgamal,
các thuật toán cho bài toán logarithm rời rạc, các hình thức mã hóa và giải mã biến
thể của hệ Egamal.
Chương 3 là trình bày về một đoạn chương trình mô phỏng của biến thể hệ
Elgamal trong thực tế và một số ứng dụng của nó.
Mặc dù đã có nhiều cố gắng, song luận văn mới chỉ dừng ở mức trình bày hệ

thống các kiến thức như trên và tính toán trên một số ví dụ cụ thể, phần ứng dụng
thực tế còn rất là hạn chế.

1


CHƯƠNG I : SƠ LƯỢC VỀ MÃ HÓA
1.1. Khái niệm về mật mã và hệ mật mã
1.1.1. Khái niệm về mật mã
Mật mã đã được con người sử dụng từ lâu đời. Các hình thức mật mã sơ khai
được tìm thấy từ khoảng bốn nghìn năm trước trong nền văn minh Ai Cập cổ đại.
Trải qua hàng nghìn năm lịch sử, mật mã đã được sử dụng rộng rãi ở khắp nơi trên
thế giới từ Đông sang Tây để giữ bí mật cho việc giao lưu thông tin trong nhiều lĩnh
vực quân sự, chính trị, ngoại giao. Mật mã trước hết là một loại hoạt động thực tiễn,
nội dung chính của nó là để giữ bí mật thông tin.
Ví dụ muốn gửi một văn bản từ một người gửi A đến một người nhận B, A
phải tạo cho văn bản đó một bản mã mật tương ứng và thay vì gửi bản rõ thì A chỉ
gửi cho B bản mã mật, B nhận được bản mã mật và khôi phục lại văn bản rõ để hiểu
được thông tin mà A muốn gửi cho mình. Do văn bản gửi đi thường được chuyển
qua các con đường công khai nên người ngoài có thể “lấy trộm” được, nhưng vì đó
là bản mật mã nên không đọc hiểu được. Còn A có thể tạo ra bản mã mật và B có
thể giải bản mã mật thành bản rõ hiểu được là do hai người đã có một thỏa thuận về
một chìa khóa chung, chỉ với khóa chung này thì A mới tạo được bản mã mật từ bản
rõ và B mới khôi phục được bản rõ từ bản mã mật. Khóa chung đó được gọi là khóa
mật mã.
Để thực hiện được một phép mật mã, ta còn cần có một thuật toán biến bản
rõ cùng với khóa mật mã thành bản mã mật và một thuật toán ngược lại biến bản
mật cùng với khóa mật mã thành bản rõ.
Các thuật toán đó được gọi tương ứng là thuật toán lập mã và thuật toán giải
mã. Các thuật toán này thường không nhất thiết phải giữ bí mật, mà cái luôn cần

được giữ bí mật là khóa mật mã.
Trong thực tiễn, có những hoạt động ngược lại với hoạt động bảo mật là
khám phá bí mật từ các bản mã “lấy trộm” được, hoạt động này thường được gọi là
thám mã hay phá khóa.

2


1.1.2. Khái niệm về hệ mật mã
Hệ mật mã được định nghĩa là một bộ năm ( P, C, K, E, D ), trong đó:
P là tập hữu hạn các bản rõ có thể.
C là tập hữu hạn các bản mã có thể.
K là tập hữu hạn các khóa có thể.
E là tập các hàm lập mã.
D là tập các hàm giải mã. Với mỗi k ∈ K, có một hàm lập mã ek ∈ E, ek : P → C và
một hàm giải mã dk ∈ D, dk: C → P sao cho dk(ek(x)) = x , x ∈ P

Hình 1.1

1.1.3. Vai trò của mật mã trong việc bảo vệ thông tin
Mật mã hay mã hóa dữ liệu (cryptography) là một công cụ cơ bản thiết yếu của
bảo mật thông tin. Mật mã đáp ứng được các nhu cầu về tính bảo mật
(confidentiality), tính chứng thực (authentication), tính không từ chối (nonrepudiaion) và sự xác thực của một hệ truyền tin.
-

Tính bảo mật: cung cấp sự bí mật cho các thông báo và dữ liệu được lưu bằng
việc che dấu thông tin sử dụng các kỹ thuật mã hóa.

-


Tính chứng thực: cung cấp sự bảo đảm với tất cả các bên rằng thông báo còn lại
không thay đổi từ khi tạo ra đến khi người nhận mở nó ra.

-

Tính không từ chối: có thể cung cấp một cách xác nhận rằng tài liệu đã đến từ ai
đó ngay cả khi họ cố gắng từ chối nó.

-

Tính xác thực: cung cấp hai dịch vụ:

3


• Đầu tiên là nhận dạng nguồn gốc của một thông báo và cung cấp một vài sự
bảo đảm rằng nó là đúng sự thật.
• Thứ hai là kiểm tra đặc tính của người đang trong một hệ thống và sau đó
tiếp tục kiểm tra đặc tính của họ trong trường hợp ai đó cố gắng đột nhiên kết
nối và giả dạng người sử dụng.

1.2. CÁC HỆ MẬT MÃ
1.2.1 Hệ mật mã đối xứng (hệ mật mã hóa không công khai)
1.2.1.1 Khái niệm
Hệ mã hóa đối xứng là lớp thuật toán các mã hóa trong đó việc mã hóa và giải
mã đều dùng chung cho một khóa (secret key).

1.2.1.2 Các loại thuật toán khóa đối xứng
Thuật toán đối xứng có thể được chia ra làm hai thể loại, mật mã luồng (stream
ciphers) và mật mã khối (block ciphers).

Mật mã luồng mã hóa từng bit của thông điệp trong khi mật mã khối gộp số bit
lại và mật mã hóa chúng như một đơn vị. Cỡ khối được dùng thường là các khối
64bit. Thuật toán tiêu chuẩn mã hóa tân tiến (Advanced Encrytion Standard) được
NIST công nhận tháng 12 năm 2001, sử dụng các khối gồm 128bit.
Các thuật toán đối xứng thường không được sử dụng độc lập. Trong thiết kế của
các hệ thống mật mã hiện đại, cả hai thuật toán bất đối xứng (asymmetric) (dùng
chìa khóa công khai) và thuật toán đối xứng được sử dụng phối hợp để tận dụng các
ưu điểm của cả hai. Những hệ thống sử dụng cả hai thuật toán bao gồm những cái
như SSL (Secure Sockets Layer), PGP (Pretty Good Privacy) và GPG (GNU
Privacy Guard)… Các thuật toán chìa khóa bất đối xứng được sử dụng để phân phối
chìa khóa mật cho thuật toán đối xứng có tốc độ cao hơn.
Một số ví dụ các thuật toán đối xứng nổi tiếng và khá được tôn trọng bao
gồm Twofish, Serpent, AES (còn được gọi là Rijndael), Blowfish, CAST5, RC4,
Tam phân DES (Triple DES) và IDEA (International Data Encrytion Algorithm –
Thuật toán mật mã hóa dữ liệu quốc tế).

4


1.2.1.3. Tốc độ
Các thuật toán đối xứng nói chung đòi hỏi công suất tính toán ít hơn các thuật
toán bất đối xứng (asymmetric key algorithms). Trên thực tế, một thuật toán khóa
bất đối xứng có khối lượng tính toán nhiều hơn gấp hằng trăm, hằng ngàn lần một
thuật toán khóa đối xứng (symmetric key algorithm) có chất lượng tương đương.

1.2.1.4. Hạn chế
Hạn chế của các thuật toán khóa đối xứng bắt nguồn từ yêu cầu về sự phân
hưởng chìa khóa bí mật, mỗi bên phải có một bản sao của chìa khóa. Do khả năng
các chìa khóa có thể bị phát hiện bởi đối thủ mật mã, chúng thường phải được bảo
an toàn trong khi phân phối và trong khi dùng. Hậu quả của yêu cầu về việc lựa

chọn, phân phối và lưu trữ các chìa khóa một cách không có lỗi, không bị mất mát
là một việc làm khó khăn, khó có thể đạt được một cách đáng tin cậy

1.2.2. Hệ mật mã phi đối xứng (hệ mật mã hóa công khai)
Năm 1976, Whitfield Diffie và Martin Hellman công bố một hệ thống mật mã
hóa hóa bất đối xứng trong đó nêu ra phương pháp trao đổi khóa công khai. Trao
đổi khóa Difffie-Hellman là phương pháp có thể áp dụng trên thực tế đầu tiên để
phân phối khóa bí mật thông qua một kênh thông tin không an toàn. Kỹ thuật thỏa
thuận khóa của Merkle có tên là hệ thống câu đố Merkle.
Kể từ thập kỷ 1970, đã có rất nhiều thuật toán mã hóa, tạo chữ ký số, thỏa thuận
khóa… được phát triển. Các thuật toán như Elgamal (mật mã) do Netscape phát
triển hay DSA do NSA và NIST cũng dựa trên các bài toán logarithm rời rạc tương
tự như RSA. Vào giữa thập kỷ 1980, Neal Koblitz bắt đầu cho một dòng thuật toán
mới: mật mã đường cong elliptic và cũng tạo ra nhiều thuật toán tương tự. Mặc dù
cơ sở toán học của dòng thuật toán này phức tạp hơn nhưng lại giúp làm giảm khối
lượng tính toán đặc biệt khi khóa có độ dài lớn.

1.2.2.1. Khái niệm
Mật mã khóa công khai là một dạng mật mã hóa cho phép người sử dụng
trao đổi thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó.

5


Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với
nhau là khóa công khai và khóa cá nhân (hay khóa bí mật).
Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với
mật mã hóa khóa công khai mặc dù hai khái niệm trên hoàn toàn không tương
đương. Có những thuật toán mật mã khóa phi đối xứng không có tính chất khóa
công khai và bí mật như đề cập ở trên mà cả hai khóa (cho mã hóa và giải mã) đều

cần phải giữ bí mật.
Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong
khi khóa công khai được phổ biến công khai. Trong hai khóa, một dùng để mã hóa
và khóa còn lại dùng để giải mã. Điều quan trọng đối với hệ thống là không thể tìm
ra khóa bí mật nếu chỉ biết khóa công khai.
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
• Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã
được.
• Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một
khóa bí mật nào đó hay không.
• Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa
hai bên.
Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính
toán nhiều hơn các kỹ thuật mã hóa đối xứng nhưng những lợi điểm mà chúng
mang lại khiến cho chúng được áp dụng nhiều ứng dụng.

1.2.2.2. Hoạt động của hệ mật mã hóa công khai
Hệ mật khóa phi đối xứng sử dụng một cặp khóa, khóa mã hóa còn được gọi là
khóa công khai (public key) và khóa giải mã được gọi là khóa bí mật hay khóa riêng
(private key). Trong hệ này, khóa mã hóa khác với khóa giải mã. Về mặt toán học
thì từ khóa công khai rất khó tính được khóa riêng. Biết được khóa này không dễ
dàng tìm được khóa kia. Khóa giải mã được giữ bí mật trong khi khóa mã hóa được
công bố công khai. Một người bất kỳ có thể sử dụng khóa công khai để mã hóa tin
tức, nhưng chỉ có những người nào đúng khóa giải mã mới có khả năng xem được
bản rõ.

6


Người gửi A sẽ mã hóa thông điệp bằng khóa công khai của người nhận B và

người nhận B sẽ giải mã thông điệp với khóa riêng tương ứng của mình.
Như vậy, người A muốn gửi thông điệp R đến cho người B.
Giả sử: Khóa công khai của B là: KB,

Khóa riêng của B là: MB

Khóa công khai của A là: KA,

Khóa riêng của A là MA

Thuật toán mã hóa: E,

Thuật toán giải mã : D

Người A tìm khóa công khai KB của người B trong thư mục dùng chung và tính
C=E(KB, R), sau đó gửi bản mã C cho người B. Khi nhận bản mã C người B sẽ giải
mã dựa vào khóa riêng MB của mình để tính R = D(MB, C).
Quá trình này được mô tả trong hình 1.2 và 1.3

Hình 1.2: Chọn một số ngẫu nhiên lớn để sinh cặp khóa

Hình 1.3: Dùng khóa công khai để mã hóa, nhưng dùng khóa bí mật để giải mã

7


Có nhiều hệ thống khóa công khai được triển khai rộng rãi như hệ RSA, hệ
Elgamal sử dụng giao thức trao đổi khóa Diffie-Hellman và nổi lên trong những
năm gần đây là hệ mã đường cong Eliptic.
Việc phát minh ra phương pháp mã công khai tạo ra một cuộc “cách mạng”

trong công nghệ an toàn thông tin điện tử. Những thực tiễn triển khai cho thấy tốc
độ mã hóa khối dữ liệu lớn bằng các thuật toán mã hóa công khai chậm hơn rất
nhiều so với hệ mã hóa đối xứng. Các phương pháp này rất khả thi trong việc mã
hóa và giải mã những văn bản có kích thước lớn như được mô tả trong hình 1.4 và
1.5.

Hình 1.4: Dùng khóa bí mật để ký một thông báo, dùng khóa công khai để xác
minh chữ ký

Hình 1.5: Tổ hợp khóa bí mật mình với khóa công khai của người khác tạo ra khóa
dùng chung chỉ hai người biết

8


1.2.2.3. Các mô hình ứng dụng của hệ mật mã hóa công khai
Thông qua từng lĩnh vực ứng dụng cụ thể mà người gửi sử dụng khóa bí mật của
mình, khóa công khai của người nhận hoặc cả hai để hình thành một số các ứng
dụng phù hợp như sau:
-

Tính mật: Người gửi A thực hiện mã hóa thông điệp R bằng khóa công khai KB

của người nhận B: C = E(KB,R). Còn người nhận giải mã bằng khóa riêng MB của
mình: R = D(MB, C). Vậy, có duy nhất người B mới giải mã được thông điệp, điều
này gọi là tính mật của hệ.
-

Tính mật và xác thực: Người A thực hiện mã hóa thông điệp hai lần, lần thứ nhất


sử dụng khóa bí mật MA của mình E(MA,R), lần thứ hai sử dụng khóa công khai KB
của nhận B: C(KB, (E(MA,R))). Khi nhận bản mã, người nhận B cũng thực hiện giải
mã hai lần, đầu tiên dùng khóa riêng MB của D(MB,C), sau đó dùng khóa công khai
KA của người gửi A: R = D(KA, D(MB,C)). Như vậy chỉ người gửi mới có khóa
riêng để mã hóa và cũng chỉ người nhận mới có khóa riêng để giải mã, đây chính là
tính mật và tính xác thực của hệ.

1.2.2.4. Các yêu cầu của hệ mật mã hóa công khai
-

Dễ tính toán đối với các thành viên khi muốn tạo một cặp khóa ( khóa công khai

và khóa riêng).
-

Người gửi dễ tính toán khi biết khóa công khai và thông điệp R cần mã hóa

thành một bản mã tương ứng C = E(KB,R).
-

Người nhận dễ tính toán khi sử dụng khóa riêng để giải mã bản mã C, khôi phục

lại thông điệp ban đầu: R = D(MB, C).
-

Đối với người thám mã, khi biết được khóa công khai KB, muốn xác định lại

khóa bí mật MB hoặc biết được khóa công khai KB và bản mã C để khôi phục lại
thông điệp R ban đầu: Điều này không thể tính toán nổi.


1.2.2.5. Độ an toàn
Về khía cạnh an toàn, các thuật toán mật mã hóa phi đối xứng cũng không khác
nhiều với các thuật toán mã hóa đối xứng. Có những thuật toán được xem là an
toàn, có thuật toán đã bị phá vỡ. Cũng cần lưu ý là những thuật toán được dùng rộng
rãi không phải lúc nào cũng đảm bảo an toàn. Một số thuật toán có những chứng

9


minh về độ an toàn với những tiêu chuẩn khác nhau. Nhiều chứng minh gắn việc
phá vỡ thuật toán với những bài toán nổi tiếng vẫn được cho là không có lời giải
trong thời gian đa thức. Nhìn chung, chưa có thuật toán nào được chứng minh là an
toàn tuyệt đối (như hệ thống mật mã sử dụng một lần). Vì vậy, cũng giống như tất
cả các thuật toán mật mã nói chung, các thuật toán mã hóa khóa công khai cần phải
được sử dụng một cách thận trọng.

1.2.2.6. Ứng dụng
Ứng dụng rõ ràng nhất của mật mã hóa công khai là bảo mật: một văn bản được
mã hóa bằng khóa công khai của một người sử dụng thì chỉ có thể giải mã với khóa
bí mật của người đó.
Các thuật toán tạo chữ ký số khóa công khai có thể dùng để nhận thức. Một
người sử dụng có thể mã hóa văn bản với khóa bí mật của mình. Nếu một người
khác có thể giải mã với khóa công khai của người gửi thì có thể tin rằng văn bản
thực sự xuất phát từ người găn với khóa công khai đó.
Các đặc điểm trên còn có ích cho nhiều ứng dụng khác như: tiền điện tử, thỏa
thuận khóa…

1.2.2.7. Những điểm yếu
Tồn tại khả năng một người nào đó có thể tìm ra được khóa bí mật. Không giống
với hệ thống mật mã sử dụng một lần (one-time pad) hoặc tương đương, chưa có

thuật toán mã hóa khóa bất đối xứng nào được chứng minh là an toàn trước các
cuộc tấn công dựa trên bản chất toán học của thuật toán. Khả năng một mối quan hệ
nào đó giữa 2 khóa hay điểm yếu của thuật toán dẫn tới cho phép giải mã không cần
tới khóa hay chỉ cần khóa mã hóa vẫn chưa được loại trừ. An toàn của các thuật
toán này đều dựa trên các ước lượng về khối lượng tính toán để giải các bài toán
gắn với chúng. Các ước lượng này lại luôn thay đổi tùy thuộc khả năng của máy
tính và các phát hiện toán học mới.
Mặc dù vậy, độ an toàn của các thuật toán mật mã hóa khóa công khai cũng
tương đối đảm bảo. Nếu thời gian để phá một mã (bằng phương pháp duyệt toàn bộ)
được ước lượng 1000 năm thì thuật toán này có thể dùng để mã hóa các thông tin về

10


thẻ tín dụng – Rõ ràng là thời gian phá mã lớn hơn nhiều lần thời gian tồn tại của
thẻ (vài năm).
Nhiều điểm yếu của một số thuật toán mật mã hóa bất đối xứng đã được tìm ra
trong quá khứ. Thuật toán “đóng gói ba lô” là một ví dụ. Nó chỉ xem là không an
toàn khi một dạng tấn công không lường trước được bị phát hiện. Gần đây, một số
dạng tấn công đã đơn giản hóa việc tìm khóa giải mã dựa trên việc đo đạc chính xác
thời gian mà một hệ thống phần cứng thực hiện mã hóa. Vì vậy, việc sử dụng mã
hóa khóa bất đối xứng không thể đảm bảo an toàn tuyệt đối. Đây là một lĩnh vực
đang được tích cực nghiên cứu để tìm ra những dạng tấn công mới.
Một điểm yếu tiềm tàng trong việc sử dụng khóa bất đối xứng là khả năng bị “kẻ
tấn công đứng giữa (man in the middle attack)”: kẻ tấn công lợi dụng việc phân
phối khóa công khai để thay đổi khóa công khai. Sau khi đã giả mạo được khóa
công khai, kẻ tấn công đứng ở giữa hai bên để nhận các gói tin, giải mã rồi lại mã
hóa với khóa đúng và gửi đến nơi nhận để tránh bị phát hiện. Dạng tấn công kiểu
này có thể phòng ngừa bằng các phương pháp trao đổi khóa an toàn nhằm đảm bảo
nhận thức người gửi và toàn vẹn thông tin. Một điều cần lưu ý là khi các chính phủ

quan tâm đến dạng tấn công này: họ có thể thuyết phục (hay bắt buộc) nhà cung cấp
chứng thực số xác nhận một khóa giả mạo và có thể đọc các thông tin mã hóa.

1.2.2.8. Một số thuật toán mã hóa phi đối xứng
• Diffie – Hellman
• DSS (Tiêu chuẩn chữ ký số)
• Elgamal
• Các kỹ thuật Mã hóa đường cong Elliptic
• Các kỹ thuật Thỏa thuật khóa chứng thực bằng mật khẩu
• Hệ thống mật mã Paillier
• Thuật toán mã hóa RSA (PKCS)
Mỗi hệ thống mã hóa có ưu nhược điểm riêng. Mã hóa đối xứng xử lý nhanh
nhưng độ an toàn không cao. Mã hóa phi đối xứng xử lý chậm hơn, nhưng độ an

11


toàn và tính thuận tiện trong quản lý khóa cao. Trong các ứng dụng mã hóa hiện tại,
người ta thường kết hợp các ưu điểm của cả hai loại mã hóa này.

1.3. THÁM MÃ VÀ TÍNH AN TOÀN CỦA MỘT HỆ MẬT MÃ
1.3.1. Thám mã
Mục tiêu của thám mã (phá mã) là tìm những điểm yếu hoặc không an toàn
trong phương thức mã hóa. Thám mã có thể được thực hiện bởi những kẻ tấn công
ác ý, nhằm làm hỏng hệ thống; hoặc bởi những người thiết kế ra hệ thống (hoặc
những người khác) với ý định đánh giá độ an toàn của hệ thống.
Có rất nhiều loại hình tấn công thám mã và chúng có thể được phân loại theo
nhiều cách khác nhau. Một trong những đặc điểm liên quan là những người tấn
công có thể biết và làm những gì để hiểu được thông tin bí mật. Ví dụ, những người
thám mã chỉ truy cập được bản mã hay không ? Hay anh ta có biết hay đoán được

một phần nào đó của bản rõ ? Hoặc thậm chí: Anh ta có chọn lựa các bản rõ ngẫu
nhiên để mật mã hóa ? Các kịch bản này tương ứng với tấn công bản mã, tấn công
biết bản rõ và tấn công chọn lựa bản rõ.
Trong khi công việc thám mã thuần túy sử dụng các điểm yếu trong các thuật
toán mật mã hóa, những cuộc tấn công khác lại dựa trên sự thi hành, được biết đến
như là các tấn công kênh bên. Nếu người thám mã biết lượng thời gian mà thuật
toán cần để mã hóa một lượng bản rõ nào đó, anh ta có thể sử dụng phương thức tấn
công thời gian để phá mật mã. Người tấn công cũng có thể nghiên cứu các mẫu và
độ dài của thông điệp để rút ra các thông tin hữu ích cho việc phá mã; điều này
được biết đến như là thám mã lưu thông.
Nếu như hệ thống mật mã sử dụng khóa xuất phát từ mật khẩu, chúng có
nguy cơ bị tấn công kiểu duyệt toàn bộ (brute force), vì kích thước không đủ lớn
cũng như thiếu tính ngẫu nhiên của các mật khẩu. Đây là điểm yếu chung trong các
hệ thống mật mã. Đối với các ứng dụng mạng, giao thức thỏa thuận khóa chứng
thực mật khẩu có thể giảm đi một số các giới hạn của mật khẩu. Đối với các ứng
dụng độc lập hoặc là các biện pháp an toàn để lưu trữ các dữ liệu chứa mật khẩu
hoặc các cụm từ kiểm soát truy cập thông thường được gợi ý nên sử dụng.

12


Thám mã tuyến tính và Thám mã vi phân là các phương pháp chung cho mật
mã hóa khóa đối xứng. Khi mật mã hóa dựa vào các vấn đề toán học như độ khó
NP, giống như trong trường hợp của thuật toán khóa bất đối xứng, các thuật toán
như phân tích ra thừa số nguyên tố trở thành công cụ tiềm năng cho thám mã.
Có 6 phương pháp chung để phân tích tấn công, dưới đây là danh sách theo
thứ tự khả năng của từng phương pháp. Mỗi phương pháp trong số chúng giả sử
rằng kẻ thám mã hoàn toàn có thể hiểu biết về thuật toán mã hóa được sử dụng.
-


Chỉ có bản mã. Trong trường hợp này, người phân tích chỉ có một vài bản tin

của bản mã, tất cả trong số chúng đều đã được mã hóa cùng sử dụng chung một
thuật toán. Công việc của người phân tích là tìm lại được bản rõ của nhiều bản mã
có thể hoặc tốt hơn nữa là suy luận ra được khóa sử dụng mã hóa và sử dụng để giải
mã những bản mã khác cùng với khóa này.
Giả thiết: C1 = Ek(P1), C2 = Ek(P2),… Ci = Ek(Pi)
Suy luận: Mỗi P1, P2,.. Pi, k hoặc thuật toán kết luận Pi+1 từ Ci+1 = Ek(Pi+1)
-

Biết bản rõ: Người phân tích không chỉ truy cập được một vài bản mã mặt

khác còn biết được bản rõ. Công việc là suy luận ra khóa để sử dụng giải mã hoặc
thuật toán giải mã để giải mã cho bất kỳ bản mã nào khác với cùng khóa như vậy.
Giả thiết: P1,C1 = Ek(P1); P2,C2 = Ek(P2), …Pi,Ci = Ek(Pi)
Suy luận: Mỗi k hoặc thuật toán kết luận Pi+1 từ Ci+1 = Ek(Pi+1)
-

Lựa chọn bản rõ: Người phân tích không chỉ truy cập được bản mã và kết

hợp bản rõ cho một vài bản tin, nhưng mặt khác lựa chọn bản rõ đã mã hóa. Phương
pháp này tỏ ra có khả năng hơn phương pháp biết bản rõ bởi vì người phân tích có
thể chọn cụ thể khối bản rõ cho mã hóa, một điều khác có thể là sản lượng thông tin
về khóa nhiều hơn.
Giả thiết: P1,C1 = Ek(P1); P2,C2 = Ek(P2), …Pi,Ci = Ek(Pi) tại đây người phân tích
chọn P1, P2,… Pi.
Suy luận: Mỗi k hoặc thuật toán kết luận Pi+1 từ Ci+1 = Ek(Pi+1)
-

Lựa chọn bản mã: Người phân tích có thể chọn bản mã khác nhau đã được


mã hóa và truy cập bản rõ đã giải mã. Trong ví dụ khi một người phân tích có một
hộp chứng cớ xáo trộn không tự động giải mã, công việc là suy luận ra khóa.

13


Giả thiết: C1,P1 = Dk(C1); C2,P2 = Dk(C2); … Ci,Pi = Dk(Ci).
Suy luận: k
-

Lựa chọn khóa: Đây không phải là một cách tấn công khi mà bạn đã có

khóa. Nó không phải thực hành thám mã mà chỉ là sự giải mã thông thường, bạn chỉ
cần lựa chọn khóa cho phù hợp với bản mã.
Một điểm đáng chú ý khác là đa số các kỹ thuật thám mã đều dùng phương pháp
thống kê tần suất xuất hiện của các từ, ký tự trong bản mã. Sau đó thực hiện việc
thử thay thế với các chữ cái có tần suất xuất hiện tương đồng trong ngôn ngữ tự
nhiên. Tại đây chúng ta chỉ xem xét đối với ngôn ngữ thông dụng nhất hiện nay đó
là tiếng Anh. Việc thống kê tần suất xuất hiện của các ký tự trong trường hợp này
được tiến hành dựa trên các bài báo, sách, tạp chí và các văn bản cùng với một số
loại khác nhau…
Sau đây là bản thống kê tần suất xuất hiện của 26 chữ cái trong bản tiếng
Anh theo tài liệu của Beker và Piper.
Bảng 1.1

Ký tự

Xác suất


Ký tự

Xác suất

Ký tự

Xác suất

A

0.082

J

0.002

S

0.063

B

0.015

K

0.008

T


0.091

C

0.028

L

0.040

U

0.028

D

0.043

M

0.024

V

0.01

E

0.127


N

0.067

W

0.023

F

0.022

O

0.075

X

0.001

G

0.020

P

0.019

Y


0.020

H

0.061

Q

0.001

Z

0.001

I

0.070

R

0.060

Cùng với việc thống kê các tần suất của các ký tự trong tiếng Anh, việc
thống kê tần suất xuất hiện thường xuyên của các dãy gồm 2 hoặc 3 ký tự liên tiếp
nhau cũng có một vai trò quan trọng trong công việc thám mã. Sysu Deck đưa ra 30
bộ đôi xuất hiện thường xuyên của tiếng Anh được sắp xếp theo thứ tự giảm dần.

14



Tính hữu dụng của các phép thống kê ký tự và các dãy ký tự được người
phân tích mã khai thác triệt để trong những lần thám mã. Khi thực hiện việc thám
mã người phân tích thống kê các ký tự trong bản mã, từ đó so sánh với bản thống kê
mẫu và đưa ra các ký tự phỏng đoán tương tự. Phương pháp này được sử dụng
thường xuyên và đem lại hiệu quả cao.

1.3.2. Tính an toàn của một hệ mật mã
Tính an toàn của một hệ mật mã phụ thuộc vào độ khó khăn của bài toán
thám mã khi sử dụng hệ mật mã đó. Người ta đã đề xuất một số cách hiểu cho khái
niệm an toàn của hệ thống mật mã, để trên cơ sở các cách hiểu đó nghiên cứu tính
an toàn của nhiều hệ mật mã khác nhau, sau đây là một và cách hiểu thông dụng
nhất:
- An toàn vô điều kiện : giả thiết người thám mã có được thông tin về bản
mã. Theo quan niệm lý thuyết thông tin, nếu những hiểu biết về bản mã không thu
hẹp được độ bất định về bản rõ đối với người thám mã, thì hệ mật mã là an toàn vô
điều kiện, hay theo thuật ngữ của C.Shannon, hệ là bí mật hoàn toàn. Như vậy, hệ là
an toàn vô điều kiện nếu độ bất định về bản rõ sau khi người thám mã có được các
thông tin (về bản mã) bằng độ bất định về bản rõ trước đó. Tính an toàn vô điều
kiện đã được nghiên cứu cho một số hệ mật mã khóa đối xứng .
- An toàn được chứng minh : một hệ thống mật mã được xem là có độ an
toàn được chứng minh nếu ta có thể chứng minh được là bài toán thám mã đối với
hệ thống đó khó tương đương với một bài toán khó đã biết, ví dụ bài toán phân tích
một số nguyên thành tích các thừa số nguyên tố, bài toàn tìm logarithm rời rạc theo
một modul nguyên tố, v.v…(khó tương đương có nghĩa là nếu bài toàn này giải
được thì bài toán kia cũng giải được với cùng một độ phức tạp như nhau).
- An toàn tính toán : hệ mật mã được xem là an toàn (về mặt) tính toán nếu
mọi phương pháp thám mã đã biết đều đòi hỏi một nguồn năng lực tính toán vượt
mọi khả năng (kể cả phương tiện thiết bị) tính toán của một kẻ thù giả định. An toàn
theo nghĩa này, nói theo ngôn ngữ của lý thuyết về độ phức tạp tính toán là bao hàm
cả khái niệm an toàn theo nghĩa “được chứng minh” nói trên.


15


CHƯƠNG II : BIẾN THỂ CỦA HỆ MẬT ELGAMAL
Trong chương này ta sẽ xem xét một số hệ mật khóa công khai Elgamal. Hệ mật
Elgamal dựa trên bài toán logarithm rời rạc là bài toán được dùng nhiều trong nhiều
thủ tục mật mã. Bởi vậy ta sẽ dành nhiều thời gian để thảo luận về bài toán quan
trọng này.

2.1. GIỚI THIỆU VỀ LOGARITHM RỜI RẠC
Logarithm rời rạc là sự tiếp nối của phép tính logarithm trên trường số thực
vào các nhóm hữu hạn. Ta nhắc lại rằng với hai số thực x, y và cơ số a > 0, a ≠ 1,
nếu ax = y thì x được gọi là logarithm cơ số a của y, ký hiệu x = logay.
Logarithm rời rạc có ứng dụng trong hệ mật mã khóa công khai “Hệ mật mã
Elgamal”.

2.1.1. Định nghĩa
Tổng quát, giả sử G là một nhóm cyclic hữu hạn có n phần tử. Zn là vành các
số nguyên modul n. Chúng ta ký hiệu phép toán của G theo lối nhân. Giả sử b là
một phần tử sinh của G, khi đó mọi phần tử g của G có thể viết dưới dạng g = bk với
một số nguyên k nào đó. Hơn nữa, hai số nguyên có cùng tính chất đó với g là đồng
dư theo modul n. Ta định nghĩa một ánh xạ:
logb : G → Zn
g = bk a k
Ánh xạ này là một đồng cấu nhóm, được gọi là logarithm rời rạc theo cơ số b.
Bài toán tìm ax mod p khi biết a, x, p là bài toán dễ. Nhưng bài toán ngược là
bài toán tìm logarithm rời rạc của một số modul p, tức là tìm số nguyên x sao cho:
ax = b mod p là bài toán khó giải.
Nếu a là căn nguyên tố của p và p là số nguyên tố, thì luôn luôn tồn tại

logarithm rời rạc, ngược lại thì có thể không.
Ví dụ 2.1:
Cho p là một số nguyên tố. Xét nhóm nhân các số nguyên mod p:
g * g * g *...* g Z * = {1, 2,… p} với phép nhân mod p.
1442443 p

16


×