Tải bản đầy đủ (.doc) (79 trang)

Nghiên cứu ứng dụng hệ mật trên cấp số nhân Cyclic trong hàm băm

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 (2.55 MB, 79 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

Đinh Mạnh Toàn
NGHIÊN CỨU ỨNG DỤNG HỆ MẬT TRÊN CẤP SỐ NHÂN CYCLIC
TRONG HÀM BĂM
Chuyên ngành: KỸ THUẬT VIỄN THÔNG
Mã số: 60.52.02.08
LUẬN VĂN THẠC SĨ KỸ THUẬT
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. NGÔ ĐỨC THIỆN
HÀ NỘI - 2013
i
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng 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.
Tác giả
Đinh Mạnh Toàn
ii
MỤC LỤC
LỜI CAM ĐOAN I
MỤC LỤC II
DANH MỤC CÁC TỪ VIẾT TẮT IV
DANH MỤC CÁC HÌNH VẼ V
DANH MỤC CÁC BẢNG VI
MỞ ĐẦU 1
CHƯƠNG 2:TỔNG QUAN VỀ MẬT MÃ HỌC 4
2.1.HỆ MẬT KHÓA BÍ MẬT

4




 !"#$%&'
2.2.HỆ MẬT KHÓA CÔNG KHAI

9
()*+,-.
/01%2 3456-7#$8-# 9
2.3.HÀM BĂM VÀ ỨNG DỤNG

21
:-;2<=)%>
:?)-??3456-2%,@
A-5B-"2%,.
2.4.KẾT LUẬN CHƯƠNG 1

32
CHƯƠNG 3:HỆ MẬT XÂY DỰNG TRÊN CÁC CẤP SỐ NHÂN
CYCLIC 33
3.1.NHÓM NHÂN CYCLIC TRÊN VÀNH ĐA THỨC

33
C-;$4D EF2+
G4DH $4D EF2+I
3.2.CẤP SỐ NHÂN CYCLIC TRÊN VÀNH ĐA THỨC

37
J  7K=?014D EF2+
G4H2+'
3.3.HỆ MẬT XÂY DỰNG TRÊN CÁC CẤP SỐ NHÂN CYCLIC

42

=K$@
L456-75M-=?014D @
3.4.KẾT LUẬN CHƯƠNG 2

56
CHƯƠNG 4:HÀM BĂM XÂY DỰNG TRÊN CẤP SỐ NHÂN CYCLIC
58
4.1.CẤU TRÚC CƠ BẢN CỦA MỘT HÀM BĂM

58
4.2.CÁC THUẬT TOÁN THÊM BÍT PHỤ

59
4.3.MỘT SỐ VÍ DỤ VỀ HÀM BĂM

60
iii
4.4.CÁC LOẠI TẤN CÔNG HÀM BĂM CƠ BẢN

61
@@N=8-2/52 O:I
@@N=8-2#8-- #$"P:I
@@N=8-2/52 P:I
@@@N=8-%Q-#R><I
@@N=8-BSFI
@@IN=8-%Q-8-%52 I
4.5.XÂY DỰNG HÀM BĂM MỚI TRÊN CÁC CẤP SỐ NHÂN CYCLIC

63
4.6.KẾT LUẬN CHƯƠNG 3


68
KẾT LUẬN 70
TÀI LIỆU THAM KHẢO 71
CHƯƠNG 1:
iv
DANH MỤC CÁC TỪ VIẾT TẮT
Viết tắt Tiếng Anh Tiếng Việt
C Ciphertext Bản mã
CBC Cipher Block Chaining Kiểu mã hóa chuỗi khối
CGP Cyclic Geometic Progressions Cấp số nhân cyclic
CMG Cyclic Multiplicate Group Nhóm nhân cyclic
CRHF Collision Resistant Hash Function Hàm băm hó va chạm
S
C
Chu trình
0
d
Khoảng cách Hamming
deg Degree Bậc của đa thức
DES Data Encryption Standard Chuẩn mã dữ liệu
E Mã hóa mật mã khối
( )e x
Đa thức lũy đẳng
F
Field Trường
h
Hash Hàm băm
I Ideal
K Key Khóa

M Message Bản tin
MAC Message Authentication Code Mã xác thực thông báo
MD Message Digest Tóm lược thông báo
MDC Modification Detection Code Mã phát hiện sự sửa đổi
SHA Secure Hash Algorithm Thuật giải băm an toàn
ord Order Cấp của đa thức
OWHF One Way Hash Function Hàm băm một chiều
R Ring Vành
Weight Trọng số
2
[ ]/ 1
n
x x +Z
Vành đa thức trên
2
GF
v
DANH MỤC CÁC HÌNH VẼ
HÌNH 1.1. SƠ ĐỒ KHỐI CHỨC NĂNG HỆ MẬT KHÓA BÍ MẬT 4
HÌNH 1.2. SƠ ĐỒ MẬT MÃ HÓA CÔNG KHAI 9
HÌNH 1.3. PHÂN LOẠI HÀM BĂM 24
HINH 1.4. SƠ ĐỒ XÂY DỰNG HÀM BĂM ĐỘ DÀI ĐƠN 25
HÌNH 1.5. THUÂT TOÁN MDC -2 27
HÌNH 1.6. THUẬT TOÁN MDC-4 28
HÌNH 1.7. SƠ ĐỒ MIYAGUCHI – PRENEEL 28
HÌNH 1.8. CÁC PHƯƠNG PHÁP ĐẢM BẢO XÁC THỰC TÍNH
NGUYÊN VẸN CỦA DỮ LIỆU 30
HÌNH 1.9. SƠ ĐỒ SỬ DỤNG GIẢI THUẬT HÀM BĂM TRONG GIẢI
THUẬT CHỮ KÝ SỐ 32
HÌNH 2.1. MÃ HÓA VÀ GIẢI MÃ XÂY DỰNG TRÊN CẤP SỐ NHÂN

CYCLIC 43
HÌNH 2.2. SƠ ĐỒ THIẾT BỊ MÃ HOÁ 46
HÌNH 2.3. SƠ ĐỒ THIẾT BỊ GIẢI MÃ 46
HÌNH 2.4. SƠ ĐỒ MẠNG THAY THẾ FEISTEL 47
HÌNH 2.5. SƠ ĐỒ MÃ HÓA KHỐI E 48
HÌNH 2.6. SƠ ĐỒ KHỐI MÃ HÓA ƒ, VỚI KHÓA 49
HÌNH 3.1. CẤU TRÚC TỔNG QUÁT CỦA HÀM BĂM 58
HÌNH 3.2. CẤU TRÚC CỦA HÀM BĂM 59
HÌNH 3.3. SƠ ĐỒ THỰC HIỆN HÀM BĂM 64
vi
DANH MỤC CÁC BẢNG
BẢNG 2.1.SỐ KIỂU PHÂN HOẠCH KHÔNG SUY BIẾN M CỦA MỘT
SỐ VÀNH 39
BẢNG 2.2.TỔNG SỐ CÁC KIỂU PHÂN HOẠCH CỦA VÀNH 40
BẢNG 2.3.BẢNG HOÁN VỊ BAN ĐẦU (IP) 48
BẢNG 2.4.BẢNG HOÁN VỊ ĐẢO (IP-1) 48
BẢNG 2.5.SỐ LƯỢNG M-DÃY LỒNG GHÉP VỚI MỘT VÀI GIÁ TRỊ
N KHÁC NHAU 53
BẢNG 2.6.KHOẢNG CÁCH HAMMING GIỮA CÁC CẶP BẢN MÃ
KHI CÁC BẢN RÕ KHÁC NHAU 1 BIT, , VỚI CÙNG MỘT KHÓA 54
BẢNG 2.7.KHOẢNG CÁCH HAMMING GIỮA CÁC CẶP BẢN MÃ
KHI CÁC KHÓA KHÁC KHÓA 2 BIT VỚI CÙNG MỘT BẢN RÕ 56
HÌNH 2.1.MỘT SỐ HÀM BĂM DỰA TRÊN MD4 61
HÌNH 2.2.KHOẢNG CÁCH HAMMING DH(MD1, MDI) KHI CÁC
KHỐI DỮ LIỆU KHÁC KHỐI BAN ĐẦU 1 BIT 65
HÌNH 2.3.KHOẢNG CÁCH HAMMING DH(MD1, MDI) GIỮA CÁC
CẶP GIÁ TRỊ BĂM KHI CÁC KHÓA KHÁC KHÓA K1 2 BIT 67
vii
1
MỞ ĐẦU

1. Lý do chọn đề tài
Với sự bùng nổ của mạng internet hiện nay, mạng máy tính đang ngày càng
đóng vai trò thiết yếu trong mọi lĩnh vực hoạt động của toàn xã hội, đi đôi với lợi
ích mà nó mang lại thì một vấn đề hết sức quan trọng đó là yêu cầu bảo mật thông
tin, xác thực nội dung thông tin cũng như xác thực chủ thể nội dung.
Sự phát triển của ngành mật mã học gắn liền với quá trình hình thành của hai
hệ mật chính là hệ mật khóa bí mật và hệ mật mã công khai. Hệ mật khóa công khai
với các ưu điểm như: không phải sử dụng kênh an toàn để truyền khóa, số lượng
khóa cần tạo và bảo mật phù hợp cho số lượng người dùng, thuận tiện và phù hợp
cho yêu cầu bảo mật thông tin và các dịch vụ xác thực trên mạng với sự bùng nổ số
lượng người dùng như hiện nay.
Việc giao dịch điện tử an toàn cũng như truyền thông tin trên mạng đòi hỏi
cần có các dịch vụ xác thực nội dung và chữ ký số. Trong các sơ đồ xác thực và chữ
ký số thì hàm băm đóng một vai trò quan trọng, nó là một hàm dùng để nén một
chuỗi bit ở đầu vào tùy ý thành một chuỗi bit có độ dài cố định ở đầu ra, chuỗi đầu
ra được gọi mã băm, (hay kết quả băm, giá trị băm, mã xác thực). Mã băm có thể
xem như “đại diện” của tài liệu số hay “tóm lược” thông báo và được sử dụng trong
một số ứng dụng như: Xác thực tính toàn vẹn của dữ liệu; xác thực số, chữ ký số,
bảo vệ bản quyền tài liệu số, nhận dạng mật khẩu; nhận dạng đối tượng
Các sơ đồ hàm băm thường được xây dựng trên mật mã khối theo một số sơ
đồ cụ thể. Đặc tính quan trọng nhất của hàm băm là tính khuếch tán và độ dài mã
băm, cả hai đặc tính này đều phụ thuộc vào mật mã khối được sử dụng trong lược
đồ hàm băm. Do đó, nếu ta xây dựng được một hệ mật đảm bảo tính khuếch tán tốt
và tính dễ tính toán (không yêu cầu tính bảo mật cao) thì hoàn toàn có thể sử dụng
để xây dựng các hàm băm mới thỏa mãn các yêu cầu của thực tế.
2
Theo các kết quả nghiên cứu gần đây về hệ mật xây dựng trên các cấp số
nhân cyclic cho thấy các hệ mật mới này thỏa mãn các yêu cầu để xây dựng hàm
băm. Trên cơ sở đó luận văn sẽ tập trung tìm hiểu hệ mật xây dựng trên các cấp số
nhân trên vành đa thức lớn và từ đó áp dụng vào xây dựng các hàm băm có độ dài

tối thiểu là 128 bit.
2. Mục đích nghiên cứu:
+ Tìm hiểu hệ mật xây dựng trên cấp số nhân cyclic của vành đa thức.
+ Áp dụng các hệ mật này để xây dựng các hàm băm mới.
+ Mô phỏng tính khuếch tán của các hàm băm đề xuất.
3. Đối tượng và phạm vi nghiên cứu:
+ Đối tượng nghiên cứu: Mật mã khối, hàm băm, nhóm nhân và cấp số
nhân trên vành đa thức.
+ Phạm vi nghiên cứu: Sử dụng cấp số nhân cyclic trên vành đa thức xây
dựng hệ mật mã khối và áp dụng vào hàm băm.
4. Phương pháp nghiên cứu:
+ Sử dụng lý thuyết về mật mã học, các cấu trúc đại số trên vành đa thức,
kết hợp với việc tính toán và mô phỏng tính khuếch tán của các hàm băm
đề xuất.
5. Cấu trúc luận văn
Chương 1: Tổng quan về mật mã học và hàm băm
− Tổng quan về mật mã học: Hệ mật khóa bí mật, hệ mật khóa công khai.
− Hàm băm: khái niệm, các lược đồ xây dựng hàm băm, so sánh đánh giá
một số hàm băm hiện có.
− Một số sơ đồ xác thực thông tin và chữ ký số.
− Kết luận chương
Chương 2: Hệ mật xây dựng trên cấp số nhân cyclic của vành đa thức
− Các cấu trúc nhóm nhân cyclic, cấp số nhân cyclic trên vành đa thức có
hai lớp kề cyclic.
3
− Phương pháp xây dựng hệ mật trên cấp số nhân cyclic và một số kết quả
mô phỏng đánh giá về hệ mật này.
− Kết luận chương
Chương 3: Áp dụng hệ mật xây dựng trên cấp số nhân cyclic vào hàm băm
− Cấu trúc cơ bản của một hàm băm, một số hàm băm thông dung và một

số phép tấn công hàm băm cơ bản.
− Xây dựng một số hàm băm mới có độ dài 256 bit.
− Mô phỏng và khảo sát tính khuyếch tán của hàm băm đề xuất.
− Kết luận chương.
Kết luận và hướng phát triển
4
CHƯƠNG 2: TỔNG QUAN VỀ MẬT MÃ HỌC
Trước đây mật mã và ứng dụng của nó chỉ hạn chế, nhưng với sự phát triển
mạnh mẽ của ngành công nghệ thông tin và Internet, các giao dịch có sử dụng mật
mã đã trở nên ngày càng phổ biến. Một ví dụ điển hình là việc sử dụng mật mã
trong các giao dịch ngân hàng trực tuyến. Ngày nay, kiến thức ngành mật mã là cần
thiết cho các cơ quan chính phủ, các khối doanh nghiệp và cả cho cá nhân.
Chính bởi vậy nên trong chương này sẽ trình bày các vấn đề cơ bản về mật mã
cổ điển, hệ mật mã khóa công khai, hàm băm và một số sơ đồ xác thực thông tin và
chữ ký số.
2.1. HỆ MẬT KHÓA BÍ MẬT
Sơ đồ chức năng của 1 hệ mật khóa bí mật
Hình 1.1. Sơ đồ khối chức năng hệ mật khóa bí mật
Một hệ mật là một bộ 5
( )
DEKCP ,,,,
thoả mãn các điều kiện sau:
a) P là một tập hữu hạn các bản rõ có thể
b) C là một tập hữu hạn các bản mã có thể
c) K là một tập hữu hạn các khoá có thể (không gian khoá)
d) Đối với mỗi
Kk

có một quy tắc mã
Ee

k

CPe
k

:
và một quy tắc giải mã tương ứng
Dd
k

5
PCd
k

:
sao cho:
( )( )
xxed
kk
=
với
Px
∈∀
.
Dựa vào kiểu của phép biến đổi trong hệ mật mã cổ điển, người ta chia hệ mật
mã làm 2 nhóm: mã thay thế (substitution cipher) và mã hoán vị (permutation
cipher).
2.1.1. Mật mã thay thế
Khái niệm: Phương pháp mã hóa trong đó từng ký tự (hoặc từng nhóm ký tự)
của văn bản ban đầu được thay thế bằng bằng một (hay một nhóm) ký tự khác để

tạo ra bản mờ. Bên nhận chỉ cần đảo ngược trình tự thay thế trên bản mờ để có được
bản rõ ban đầu.
2.1.1.1. Các hệ mật thay thế đơn biểu
a) Hệ mật mã dịch vòng
Giả sử
26
P K Z= =
với
0 25k≤ ≤
, ta định nghĩa
26
( ) mod26
( ) mod26
( , )
k
k
e x x k
d y y k
x y Z
= +
= −

Ta sử dụng MDV (với modulo 26) để mã hoá một văn bản tiếng Anh thông
thường bằng cách thiết lập sự tương ứng giữa các ký tự và các thặng dư theo mod
26 như sau:
Ký tự A B C D E F G H I J K L M
Mã tương ứng 0 1 2 3 4 5 6 7 8 9 10 11 12
Ký tự N O P Q R S T U V W X Y Z
Mã tương ứng 13 14 15 16 17 18 19 20 21 22 23 24 25
b) Mã thay thế

6
Cho
26
P C Z= =
. K chứa mọi hoán vị có thể có của 26 ký tự từ 0 đến 25. Với
mỗi phép hoán vị
K
π

, ta định nghĩa:
( ) ( )e x x
π
π
=

1
( ) ( )d y y
π
π

=
trong đó
1
π

là hoán vi ngược của
π
Sau đây là một ví dụ về phép hoán vị ngẫu nhiên
π
tạo nên một hàm mã hoá

(tương tự như trên, các ký tự của bản rõ được viết bằng chữ thường, còn các ký tự
của bản mã được viết bằng chữ in hoa).
Ký tự
a b c d e f g h i j k l M
Mã tương ứng
X N Y A H P O G Z Q W B T
Ký tự
n o p q r s t u v w x y z
Mã tương ứng
S F L R C V M U E K J D I
Như vậy,
( ) , ( ) , e a X e b N
π π
= =
Hàm giải mã là phép hoán vị ngược. Điều này
được thực hiện bằng cách viết hàng thứ hai lên trước rồi sắp xếp theo thứ tự chữ cái.
Ta có:
Ký tự A B C D E F G H I J K L M
Mã tương ứng d l R y v o h e z x w p t
Ký tự N O P Q R S T U V W X Y Z
Mã tương ứng b g F j q n m u s k a c i
c) Mã AFFINE
MDV là một trường hợp đặc biệt của MTT chỉ gồm 26 trong số 26! Các hoán
vị có thể của 26 phần tử. Một trường hợp đặc biệt khác của MTT là mã Affine được
mô tả dưới đây. Trong mã Affine, ta giới hạn chỉ xét các hàm mã có dạng:
e(x)= ax+b mod 26 với
26
,a b Z∈
Các hàm này được gọi là các hàm Affine (khi a = 1, ta có MDV).
Để việc giải mã có thể thực hiện được, yêu cầu cần thiết là hàm Affine phải là

đơn ánh. Nói cách khác, với bất kỳ y∈ Z
26
, ta muốn có đồng nhất thức sau:
7
ax+ b ≡ y(mod 26) phải có nghiệm x duy nhất. Đồng dư thức này tương đương
với: ax ≡ y − b ( mod 26 )
d) Mật mã cũi lợn
Sử dụng các hình tượng khác nhau không nằm trong bảng ký tự thay thế cho
các ký tự.
VD1.1: Cho bản rõ: meet me at sunset
meet me at sunset
⊥ ∆∆Γ
⊥ ∆
ΓW
〉Λ〈〉∆Γ
2.1.1.2. Hệ mật mã thay thế đa biểu
Mật mã Vigenère
Sử dụng phép tương ứng
0, 1, 25A B Z↔ ↔ ↔
mô tả ở trên, ta có thể gắn
cho mỗi khoá k một chuỗi ký tự có độ dài m, được gọi là từ khoá. Mật mã Vigenère
sẽ mã hoá đồng thời m ký tự: mỗi phần tử của bản rõ tương đương với m ký tự.
2.1.2. Mật mã hoán vị (MHV)
Khác với mã thay thế, ý tưởng của mã hoán vị là giữ các ký tự của bản rõ
không thay đổi nhưng sẽ thay đổi vị trí của chúng bằng cách sắp xếp lại các ký tự
này. Ở đây không có một phép toán đại số nào cần thực hiện khi mã hoá và giải mã.
Ví dụ 1.2:
Giả sử m = 6 và khoá là phép hoán vị sau:
Khi đó, phép hoán vị ngược sẽ là:
8

Giả sử ta có bản rõ: asecondclasscarriageonthetrain
Trước tiên, ta nhóm bản rõ thành các nhóm 6 ký tự:
A sec on|dclass|carria|geonth|etrain
Sau đó, mỗi nhóm 6 chữ cái lại được sắp xếp lại theo phép hoán vị π , ta có:
EOANCS|LSDSAC|RICARA|OTGHNE|RIENAT
Cuối cùng ta có bản mã sau:
EOANCSLSDSACRICARAOTGHNERIENAT
Khi sử dụng phép hoán vị ngược π
−1
trên dãy bản mã (sau khi đã nhóm lại theo
các nhóm 6 ký tự), ta sẽ nhận lại được bản rõ ban đầu.
Ta có thể định nghĩa MHV như sau:
Cho m là nguyên tố dương xác định nào đó.
Cho
26
( )
N
P C Z= =
và cho K là tất cả các hoán vị có thể có của {1,2, ,m}.
Đối với một khóa
π
, ta xác định:
1 (1) ( )
( , , ) ( , , )
m m
e x x x x
π π π
=
1 1
1

(1) ( )
( , , ) ( , , )
m
m
d x x y y
π
π π
− −
=
trong đó
1
π

là phép hoán vị ngược của
π
2.1.3. Ưu nhược điểm của mật mã khóa bí mật
Ưu điểm:
− Tính toán đơn giản
− Hiệu quả: (Tỷ lệ mã bằng 1) dễ sử dụng cho các ứng dụng nhạy cảm với độ
trễ và các ứng dụng di động.
Nhược điểm:
− Phải dùng kênh an toàn để truyền khóa (khó thiết lập và chi phí tốn kém)
9
− Việc tạo và giữ khóa bí mật phức tạp, khó làm việc trên mạng do phải tạo
khóa nhiều.
− Khó xây dựng các dịch vụ an toàn khác (đảm bảo tính toàn vẹn, xác thực,
chữ ký số…)
Vì các nhược điểm này nên phải sử dụng cả các hệ mật khóa công khai.
2.2. HỆ MẬT KHÓA CÔNG KHAI
2.2.1. Sơ đồ chức năng

Hình 1.2. Sơ đồ mật mã hóa công khai
CB
K
- Khóa công khai của B
RB
K
- Khóa bí mật của B
Ưu điểm của hệ mật khóa công khai:
− Không cần tạo 2 khóa bí mật
− Không cần kênh an toàn riêng
− Biết khóa mã hóa trên kênh mở nhưng rất khó giải mã.
− Dễ tạo các dịch vụ an toàn khác (xác thực, đảm bảo tính toàn vẹn)
Yêu cầu: Dễ mã hóa, khó giải mã (hàm một chiều)
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.
10
- 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
2 bên.
2.2.2. Một số bài toán xây dựng hệ mật khóa công khai
Với yêu cầu với hệ mật khóa công khai: Dễ mã hóa, khó giải mã (Hàm một
chiều), các hướng nghiên cứu từ năm 1976 cho đến nay đã tìm được 5 hàm một
chiều, tương ứng với 5 bài toán [4].
2.2.2.1. Bài toán logarit rời rạc và hệ mật liên quan
a) Bài toán logarit rời rạc
Giả sử cho
p
Z

là một trường hữu hạn với p là một nguyên tố lớn.
Cho g là phần tử sinh của nhóm nhân,
*
P
Z
tức là với một phần tử
0a

bất kỳ
P
Z
ta có thể tìm được một số nguyên tố x duy nhất thỏa mãn:
x
a g
=
Ta có thể viết:
log
g
a x=
. Bài toán logarit rời rạc chính là bài toán tìm x.
Ví dụ 1.3: Xét
11
Z
, phần tử sinh g = 2. Ta có bảng sau:
x 1 2 3 4 5 6 7 8 9 10
log
2
x 10 1 8 2 4 9 7 3 6 5
Nhìn chung đây là một bài toán rất khó khi p đủ lớn. Tuy nhiên, trên thực tế
bài toán này chỉ thực sự khó khi

1p −
không phải là tích của các số nguyên tố nhỏ.
Nói chung bài toán logarit rời rạc trên trường hữu hạn
( )
GF p
có độ phức tạp lớn
hơn so với trên
( )
2
m
GF
.
b) Hệ mật Elgamal
*) Thuật toán tạo khoá.
11
Tóm lược: Mỗi đầu liên lạc tạo một khoá công khai và một khoá bí mật tương
ứng :
(1) Tạo 1 số nguyên tố p lớn và một phần tử sinh
α
của nhóm nhân
*
p
Z
của
các số nguyên
mod p
.
(2) Chọn một số nguyên ngẫu nhiên a,
1 2a p≤ ≤ −
và tính

mod
a
p
α
.
(3) Khoá công khai là bộ 3 số
( )
, ,
a
p
α α
, khoá bí mật là a.
*) Mã hoá:
Tóm lược: B mã hoá một thông tin báo m để gửi cho A bản mã cần gửi.
B phải thực hiện các bước sau:
(1)Nhận khoá công khai
( )
, ,
a
p
α α
của A.
(2)Biểu thị bản tin dưới dạng một số nguyên m trong dải
{ }
0,1, , 1p −K
.
(3)Chọn số nguyên ngẫu nhiên k,
1 2k p≤ ≤ −
(4)Tính
mod

k
p
γ α
=

( )
mod
k
a
m p
δ α
=
.
(5)Gửi bản mã
( )
,c
α δ
=
cho A.
*) Giải mã:
Để khôi phục bản rõ m từ C, A phải thực hiện các bước sau:
(1)Sử dụng khoá riêng a để tính
1
mod
p a
p
γ
− −
(2)Khôi phục bản rõ bằng cách tính
( )

mod
a
p
γ δ

.
2.2.2.2. Bài toán phân tích thừa số và hệ mật RSA
a) Bài toán phân tích thừa số
* Định lý 1.1 cơ bản của số học:
Cho n là một số nguyên tố, tồn tại phân tích duy nhất:
12
1 2
1 2

k
e
e e
k
n p p p=
Với:
i
p
- số nguyên tố

i
e
- số nguyên dương
Nếu
n
là tích của 2 số nguyên tố:

n pq=
(
,p q
-là 2 số nguyên tố lớn thỏa
mãn
p q≈
)
Đây là bài toán phân tích số nguyên tố lớn khó (tìm
n
đơn giản khi biết
,p q
,
cho
n
rất khó tìm được
,p q
).
b) Hệ mật RSA
Trong mật mã học, RSA là một thuật toán mật mã hóa khóa công khai. Đây là
thuật toán đầu tiên phù hợp với việc tạo ra chữ ký số đồng thời với việc mã hóa. Nó
đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa
công cộng. RSA đã và đang được sử dụng phổ biến trong thương mại điện tử và
được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn.
* Thuật toán 1: Tạo khoá.
Tóm lược: Mỗi đầu cần tạo một khoá công khai và một khóa riêng tương
ứng theo các bước sau:
(1) Tạo 2 số nguyên tố lớn ngẫu nhiên và khác nhau p và q. p và q có độ lớn
xấp xỉ nhau.
(2) Tính
.n p q=


( ) ( ) ( )
1 1n p q
φ
= − −
(3) Chọn một số nguyên ngẫu nhiên e, 1< e <
Φ
, sao cho (e,
Φ
)= 1
(4) Sử dụng thuật toán Euclide mở rộng để tính một số nguyên d duy nhất,
1 d
φ
< <
thoả mãn
( ) 1ed mod
φ

(5) Khoá công khai là cặp số (n, e). Khoá riêng bí mật là d.
13
Định nghĩa: Các số nguyên d và e trong thuật toán tạo khoá RSA được gọi
là số mũ mã hoá và số mũ giải mã. Số n được gọi là modulus.
* Thuật toán 2: Mã hoá công khai RSA.
Tóm lược: B mã hoá một thông báo m để gửi cho A bản mã cần giải.
Mã hoá: B phải thực hiện:
(1) Thu nhận khoá công khai (n, e) của A.
(2) Biểu diễn bản tin dưới dạng một số nguyên m trong khoảng
[ ]
0 , 1 n −
(3) Tính c= m

e
modn
(4) Gửi bản mã c cho A.
Giải mã: Khôi phục bản rõ m từ c. A phải thực hiện phép tính sau bằng cách
dùng khoá riêng

d
m c mod n=
2.2.2.3. Bài toán xếp ba lô và hệ mật Merkle – Hellman
a) Bài toán xếp ba lô
* Định nghĩa dãy siêu tăng
Định nghĩa 1.3: Dãy các số nguyên dương
( )
n21
a,,a,a 
được gọi là dãy siêu
tăng nếu


=
>
1i
1j
ji
aa
với
ni2,i ≤≤∀
* Bài toán xếp ba lô
Cho một đống các gói có các trọng lượng khác nhau, liệu có thể xếp một số gói
này vào ba lô để ba lô có một trọng lượng cho trước hay không. Ta có thể phát biểu

bài toán trên như sau:
Cho tập các giá trị
n21
M,,M,M 
và một tổng S. Hãy tính các giá trị b
i
để:
nn2211
MbMbMbS +++= 
14
với
{ }
1,0b
i

b
i
= 1: Có nghĩa là gói M
i
được xếp vào ba lô.
b
i
= 0: Có nghĩa là gói M
i
không được xếp vào ba lô.
b) Hệ mật Merkle - Hellman
Hệ này và các hệ liên quan dựa trên tính khó giải của bài toán tổng các tập con
(bài toán này là bài toán NP đầy đủ - là một lớp khá lớn các bài toán không có giải
thuật được biết trong thời gian đa thức). Tuy nhiên tất cả các hệ mật xếp ba lô khác
nhau đều đã bị chứng tỏ là không mật (ngoại trừ hệ mật Chor-Rivest).

Tóm lược: B mã hoá bản tin m để gửi cho A bản mã cần phải.
* Mã hoá: B phải thực hiện các bước sau:
(1) Nhận khoá công khai của A:
( )
n21
a,,a,a 
(2) Biểu thị bản tin m như một chuỗi nhị phân có độ dài n:
n21
m,,m,mm =
.
(3) Tính số nguyên
nn2211
amamamc +++= 
(4) Gửi bản mã c cho A.
* Giải mã: Để khôi phục bản rõ m từ c, A phải thực hiện các bước sau:
(1) Tính
MmodcWd
1−
=
(2)Sử dụng thuật giải xếp ba lô trong trường hợp dãy siêu tăng để tìm các
số nguyên
{ }
1,0r,r,,r,r
in21
∈
sao cho:
nn2211
MrMrMrd +++= 
(3)Các bit của bản rõ là
( )

n,,2,1i,rm
ii
==
π
2.2.2.4. Bài toán mã sửa sai và hệ mật Mc. Eliece
a) Bài toán mã sửa sai
Cho mã tuyến tính
( )
, ,C n k d=
;
2 1d t= +
(với
t
là số sai sửa được)
15
Ma trận sinh:
k n
G
×
Ma trận kiểm tra
;
r n
H r n k
×
= −
; thỏa mãn:
. 0
T
G H =
b) Hệ mật Mc. Eliece

Hệ mật Mc.Eliece sử dụng nguyên lý tương tự như hệ mật Merkle-Hellman.
Phép giải mã là một trường hợp đặc biệt của bài toán NP đầy đủ nhưng nó được
ngụy trang giống như trường hợp chung của bài toán. Trong hệ thống này bài toán
NP được áp dụng ở đây là bài toán giải mã cho một mã sửa sai (nhị phân) tuyến tính
nói chung. Tuy nhiên, đối với nhiều lớp mã đặc biệt đều tồn tại các thuật toán giải
mã với thời gian đa thức. Một trong những lớp mã này là mã Goppa, chúng được
dùng làm cơ sở cho hệ mật Mc.Eliece.
* Định nghĩa 1.4:
Giải sử k, n là các số nguyên dương,
nk

. Mã
[ ]
k,nC
là một không gian k
chiều của
( )
n
2
Z
(không gian véctơ của tất cả các véctơ nhị phân n chiều).
Ma trận sinh của mã
[ ]
k,nC
là ma trận nhị phân
nxk
, các hàng của ma trận
này tạo nên cơ sở của C.
Giả sử
( )

n
2
Zy,x ∈
, trong đó
( )
n1
x,,xx =

( )
n1
y,,yy =
. Ta xác định
khoảng cách Hamming:
( ) { }
ii
yx,ni1:iy,xd ≠≤≤=
tức là số các toạ độ mà ở đó
x và y khác nhau.
Khoảng cách mã C được định nghĩa như sau:
( ) ( ){ }
yx,Cy,x:y,xdminCd ≠∈=

[ ]
k,n
có khoảng cách d được ký hiệu là mã
[ ]
d,k,n
.
Mã sửa sai được dùng để sửa các sai ngẫu nhiên xảy ra khi truyền số liệu (nhị
phân) qua kênh có nhiễu. Điều đó được thực hiện như sau: Giả sử G là một ma trận

sinh đối với mã
[ ]
d,k,n
, x là véctơ nhị phân k chiều cần truyền đi. Người gửi Alice
sẽ mã hoá x thành một véctơ n chiều
Gxy =
rồi truyền y qua kênh.
16
Giả sử Bob nhận được véctơ n chiều r không giống y, Bob sẽ giải mã r bằng
chiến thuật giải mã "người láng giềng gần nhất". Theo chiến thuật này, Bob sẽ tìm
thấy từ y' có khoảng cách tới r nhỏ nhất. Sau đó anh ta giải mã r thành y' , rồi xác
định véctơ k chiều x' sao cho
G'x'y =
. Bob hy vọng
y'y =
và bởi vậy
x'x =
(tức
là Bob tin rằng các sai số trên đường truyền đã được sửa).
Dễ dàng thấy rằng, nếu sai số trên đường truyền nhiều nhất là
( )
2/1d −
thì
trên thực tế chiến thuật này sẽ sửa được tất cả các sai.
Ta xét trên thực tế, thuật toán giải mã này được thực hiện như thế nào? Vì
k
2C =
nên Bob so sánh r với mỗi từ mã anh ta phải kiểm tra
k
2

véctơ là một số
lớn theo hàm mũ so với k. Nói cách khác, thuật toán này không phải là thuật toán
chạy trong thời gian đa thức.
Một biện pháp khác (tạo cơ sở cho nhiều thuật toán giải mã thực tế) dựa trên
khái niệm về syndrom. Ma trận kiểm tra tính chẵn lẻ của mã
[ ]
d,k,nC
(có ma trận
sinh G) là một mã trận nhị phân
( )
nxkn −
chiều (ký hiệu là H). Các hàng của H sẽ
tạo cơ sở cho các phần bù trực giao của C (ký hiệu là

C
) và được gọi là mã đối
ngẫu với C. Nói cách khác, các hàng của H là những véctơ độc lập tuyến tính, còn

HG
là một ma trận không cấp
( )
k n k× −
Cho véctơ
( )
n
2
Zr ∈
, ta xác định syndrom của r là

rH

. Syndrom

rH
là một
véctơ cột có
( )
kn −
thành phần.
* Định lý 1.2
Giả sử C là một mã
[ ]
k,n
có ma trận sinh G và ma trận kiểm tra tính chẵn lẻ
H. Khi đó
( )
n
2
Zx ∈
là một từ mã khi và chỉ khi
[ ]
T
T
000xH =
.
Hơn nữa nếu
( )
n
2
Ze,Cx ∈∈


exr +=
thì
TT
eHxH =
.
17
Ta coi e là vectơ sai xuất hiện trong quá trình truyền từ mã x. Khi đó r biểu
diễn vectơ thu được. Định lý trên phát biểu rằng syndrom chỉ phụ thuộc vào các sai
số mà không phụ thuộc vào từ mã cụ thể nào được truyền đi.
Điều này gợi ý tới một cách giải mã gọi là giải mã theo syndrom. Trước tiên
tính
T
rHs =
nếu s là một vectơ không, thì ta giải mã r thành r. Nếu không thì ta sẽ
lần lượt tạo tất cả các véctơ sai có trọng số 1. Với mỗi véctơ này, ta tính
T
eH
. Nếu
có một véctơ e nào đó thoả mãn
seH
T
=
thì ta giải mã r thành
er −
. Ngược lại, lại
tiếp tục tạo các vectơ sai có trọng số
( )
[ ]
2/1d,,3,2 −
.

Theo thuật toán này, có thể giải mã cho một vectơ nhận được trong nhiều nhất











++








+
2
1d
n
1
n
1 
bước.
Phương pháp này làm việc trên một mã tuyến tính bất kỳ. Đối với một số loại

mã đặc biệt, thủ tục giải mã có thể nhanh chóng hơn. Tuy nhiên, trên thực tế, cách
giải quyết này cho chiến thuật giải mã "người láng giếng gần nhất" vẫn là một bài
toán NP đầy đủ. Như vậy, vẫn chưa có một thuật toán giải trong thời gian đa thức
đã biết nào cho bài toán giải mã theo "người láng giềng gần nhất" tổng quát. (Khi số
các sai số không bị giới hạn bởi
( )
[ ]
2/1d −
).
Cũng giống như bài toán tổng tập con, có thể chỉ ra một trường hợp đặc biệt
"dễ", sau đó ngụy trang sao cho nó giống với bài toán chung "khó". Để đưa ra lý
thuyết sẽ rất dài dòng, bởi vậy ta sẽ chỉ tóm lược các kết quả ở đây. Một trường hợp
khá dễ được Mc.Eliece đề nghị là dùng một mã trong lớp các mã Goppa. Trên thực
tế, các mã này có một thuật toán giải mã hữu hiệu. Hơn nữa các, các mã này rất dễ
tạo và có một số lượng lớn các mã Goppa tương đương có cùng tham số.
Các tham số của mã Goppa có dạng
1t2d,2n
m
+==

mtnk −=
. Để áp
dụng trong thực tế cho một hệ mật khoá công khai, McEliece đề nghị chọn
10m =

×