Đề tài : Nghiên cứu ứng dụng hệ mật trên cấp số nhân Cyclic trong hàm băm + 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 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
Trang 1LUẬ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
Trang 2LỜ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 aicông bố trong bất kỳ công trình nào khác
Tác giả
Đinh Mạnh Toàn
Trang 3MỤC LỤCLỜ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.1.Mật mã thay thế 5 2.1.2.Mật mã hoán vị (MHV) 7 2.1.3.Ưu nhược điểm của mật mã khóa bí mật 8
2.2.1.Sơ đồ chức năng 9 2.2.2.Một số bài toán xây dựng hệ mật khóa công khai 10
2.3.1.Các định nghĩa và tính chất cơ bản 22 2.3.2.Các phương pháp xây dựng hàm băm 24 2.3.3.Ứng dụng của hàm băm 29
CHƯƠNG 3:HỆ MẬT XÂY DỰNG TRÊN CÁC CẤP SỐ NHÂN CYCLIC 33
3.1.1.Định nghĩa nhóm nhân cyclic trên vành đa thức 33 3.1.2.Phân loại nhóm nhân cyclic trên vành đa thức 36
3.2.1.Khái niệm về cấp số nhân cyclic trên vành đa thức 37 3.2.2.Phân hoạch vành đa thức 38
3.3.1.Vấn đề mã hóa 42 3.3.1.Xây dựng hệ mật dùng cấp số nhân cyclic 47
CHƯƠNG 4:HÀM BĂM XÂY DỰNG TRÊN CẤP SỐ NHÂN CYCLIC 58
Trang 44.4.1.Tấn công vào độ dài MDC 61
4.4.2.Tấn công vào không gian khóa của MAC 61
4.4.3.Tấn công vào độ dài MAC 62
4.4.4.Tấn công bằng các kết quả tính toán được 62
4.4.5.Tấn công đa mục tiêu 62
4.4.6.Tấn công bằng các thông báo dài 63
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:
Trang 5DANH MỤC CÁC TỪ VIẾT TẮT
CRHF Collision Resistant Hash Function Hàm băm hó va chạm
S
0
MAC Message Authentication Code Mã xác thực thông báo
MDC Modification Detection Code Mã phát hiện sự sửa đổi
2[ ]/x x n+1
Trang 6DANH 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
Trang 7DANH 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
Trang 9MỞ ĐẦ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ôngtin, 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 khaivớ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ượngkhó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ợpcho 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ỏicầ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ộtchuỗ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 trongmộ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ế
Trang 10Theo 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àmbă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àitố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âydự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
Trang 11− 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
Trang 12Chí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 (P, C, K, E, D) 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 k∈K có một quy tắc mã ek∈E
CP
ek : →
và một quy tắc giải mã tương ứng dk∈D
Trang 13dk : →
sao cho: dk(ek( )x ) =x với ∀ x∈P
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ị (permutationcipher)
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ó đượcbản rõ ban đầu
2.1.1.1 Các hệ mật thay thế đơn biểu
Trang 14Cho P C Z= = 26 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 và d yπ( )=π− 1( )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)
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
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 a b Z, ∈ 26
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∈ Z26 , ta muốn có đồng nhất thức sau:
Trang 15ax+ b ≡ y(mod 26) phải có nghiệm x duy nhất Đồng dư thức này tương đươngvới: ax ≡ y − b ( mod 26 )
Sử dụng phép tương ứng A↔0,B↔1, Z ↔25 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ủabả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à:
Trang 16Ta có thể định nghĩa MHV như sau:
Cho m là nguyên tố dương xác định nào đó
Cho P C= =(Z26)N 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:
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)
Trang 17− 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ạokhó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
Ư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
Trang 18- 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ộtkhó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ộtchiều), các hướng nghiên cứu từ năm 1976 cho đến nay đã tìm được 5 hàm mộtchiề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 Z là một trường hữu hạn với p là một nguyên tố lớn p
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ử a≠0 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: a g= x
Ta có thể viết: logg a x= Bài toán logarit rời rạc chính là bài toán tìm x.
Trang 19Tó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 Z của*p các số nguyên mod p
(2) Chọn một số nguyên ngẫu nhiên a, 1≤ ≤ −a p 2 và tính αamodp
(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 ( p, ,α αa) 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, ,K p−1} .
(3)Chọn số nguyên ngẫu nhiên k, 1≤ ≤ −k p 2
(4)Tính γ α= kmod p và δ =m( )αa kmodp
(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 γp− − 1 amod p
(2)Khôi phục bản rõ bằng cách tính ( )a mod
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:
Trang 20* 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 và φ( ) (n = p− 1) (q−1)
(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 ed≡ 1(modφ)
(5) Khoá công khai là cặp số (n, e) Khoá riêng bí mật là d
Trang 21Đị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 ,n−1 ]
(3) Tính c= me 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 m= c mod n d
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 (a1,a2,,an) được gọi là dãy siêu
* 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óinà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ểubài toán trên như sau:
Cho tập các giá trị M1,M2,,Mn và một tổng S Hãy tính các giá trị bi để:
n n 2
2 1
b
Trang 22với bi∈{ }0,1
bi = 1: Có nghĩa là gói Mi được xếp vào ba lô
bi = 0: Có nghĩa là gói Mi 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ảithuậ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ácnhau đề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: (a1,a2,,an)
(2) Biểu thị bản tin m như một chuỗi nhị phân có độ dài n:
n 2
1,m , ,mm
(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 r1,r2,,rn , ri∈{ }0,1 sao cho:
n n 2
2 1
r
(3)Các bit của bản rõ là mi =rπ( ) i , i =1,2,,n
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, , ) ; d = +2t 1 (với t là số sai sửa được)
Trang 23NP đượ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ínhnó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 đượcdù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, k≤n Mã C[ ]n,k là một không gian kchiề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ã C[ ]n,k là ma trận nhị phân kxn, các hàng của ma trậnnày tạo nên cơ sở của C
Giả sử ( )n
2
Zy,
Mã [ ]n,k có khoảng cách d được ký hiệu là mã [n,k,d].
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ậnsinh đối với mã [n,k,d], 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 y=xG rồi truyền y qua kênh.
Trang 24Giả sử Bob nhận được véctơ n chiều r không giống y, Bob sẽ giải mã r bằngchiế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ìmthấ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 y'=x'G 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à (d−1)/2 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
2
C = nên Bob so sánh r với mỗi từ mã anh ta phải kiểm tra 2 véctơ là một sốk
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ánchạ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ênkhái niệm về syndrom Ma trận kiểm tra tính chẵn lẻ của mã C[n,k,d](có ma trậnsinh G) là một mã trận nhị phân (n−k)xn 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
x∈ ∈ và r =x+e thì HxT =HeT
Trang 25Ta coi e là vectơ sai xuất hiện trong quá trình truyền từ mã x Khi đó r biểudiễ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 s=HrTnế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 HeT Nếu
có một véctơ e nào đó thoả mãn HeT =s thì ta giải mã r thành r−e Ngược lại, lạitiếp tục tạo các vectơ sai có trọng số 2,3,,[ (d−1)/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
n
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áchgiả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àitoá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 [ (d−1)/2])
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ợpkhá 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 n =2m,d=2t+1 và k=n−mt Để ápdụng trong thực tế cho một hệ mật khoá công khai, McEliece đề nghị chọn m =10
Trang 26và t =50 Điều này ứng với mã Goppa [1024,524,101] Mỗi bản rõ là một véctơnhị phân cấp 524 và mỗi bản mã là một véctơ nhị phân cấp 1024 Khoá công khai làmột ma trận nhị phân cấp 524x1024 Dưới đây là mô tả hệ mật McEliece.
Cho G là một ma trận sinh của một mã Goppa C[n,k,d], trong đó n=2m,1
2.2.2.5 Đường cong Elliptic và các hệ mật liên quan
a) Đường cong Elliptic
Xét một phương trình bậc 3, có ba trường hợp nghiệm: một nghiệm, hainghiệm và ba nghiệm
Trang 27x Z∈ thì x phải là thặng dư bậc hai.
Điều kiện: tồn tại 3 2
4a 27 modb p 0
b) Các hệ mật mã trên đường cong Elliptic
Các hệ mật này là biến tướng của các hệ mật khác (chẳng hạn như hệ mậtElGamal), chúng làm việc trên các đường cong Elliptic chứ không phải là trên cáctrường hữu hạn Hệ mật này đảm bảo độ mật với số khoá nhỏ hơn các hệ mật khoácông khai khác
* Trao đổi khóa Diffie-Helfman trên đường cong Elliptic
Xét E a b , p( ), P là điểm nguyên thủy thuộc E a b Quá trình trao đổi khóa p( ),thực hiện như sau:
Trang 28* Hệ mật Omura – Massey trên đường cong Elliptic
Khóa công khai: - E a b p( ),
- P điểm nguyên thủy ∈E a b P( , )
* Hệ mật Elgamal trên đường cong Elliptic
* Tạo khóa: Mỗi bên liên lạc (A và B) tạo riêng cho mình một cặp khóa bí mật
và công khai
Bước 1: Chọn 1 đường cong E a b và 1 điểm nguyên thủy Q p( ),
Bước 2: Chọn n A (A chọn), n B (B chọn) ngẫu nhiên và tính
n Q P= ;n Q P B = B
Trang 29Khóa công khai: (E a b P Q p( ), , , )
Khóa bí mật: n A
* Mã hóa: Giả sử B cần gửi bản tin là điểm M∈E a b P( , )cho A.
Bước 1: B nhận khóa công khai của A là: (E a b Q P P( , ), , )A
Bước 2: B chọn k ngẫu nhiên và tính γ =kQ;δ =M kP+ A
Bước 3: B gửi bản mã C(γ δ, ) cho A.
Các hàm băm đóng vai trò cơ bản trong mật mã hiện đại Hàm băm sẽ tạo ra
một đầu ra từ bản tin đầu vào Đầu ra này được định nghĩa là mã băm (kết quả băm,
giá trị băm) Nói một cách chính xác hơn, hàm băm h sẽ tạo ra ánh xạ các xâu bit có
độ dài hữu hạn tuỳ ý thành các xâu bit có độ dài n cố định
Hàm băm h là một ánh xạ có độ dài n cố định h:D→R và D >R điềunày có nghĩa là không thể tránh khỏi các va chạm (tức là cùng một giá trị đầu ra cóthể có nhiều bộ giá trị vào khác nhau)
Các hàm băm được dùng cho các sơ đồ chữ ký số kết hợp với việc đảm bảotính toàn vẹn của dữ liệu, khi đó bản tin trước hết được băm và rồi giá trị băm (đượcxem như đại diện cho bản tin) sẽ được ký thay cho vị trí bản tin gốc
Một lớp các hàm băm được gọi là các mã xác thực thông báo (MAC
-Message Authentication Codes) sẽ cho phép xác thực thông báo bằng kỹ thuật đốixứng (mật mã cổ điển)
Trang 30Một ứng dụng điển hình của hàm băm (không dùng khoá) để đảm bảo tínhtoàn vẹn của dữ liệu có thể được mô tả như sau:
Giá trị băm tương ứng với một bản tin riêng x sẽ được tính ở thời điểm T1.Tính toàn vẹn của giá trị băm này (chứ không phải là bản thân bản tin) sẽ được bảo
vệ theo một cách nào đó, ở thời điểm tiếp theo sau T2 phép kiểm tra sau sẽ được tiếnhành để xác định xem liệu thông báo có bị sửa đổi hay không, tức là xem liệu bảntin 'x có giống bản tin gốc hay không Giá trị băm của 'x sẽ được tính toán và sosánh với giá trị băm đã được bảo vệ, nếu chúng bằng nhau thì bên thu sẽ chấp nhậnrằng x và 'x là như nhau và như vậy có nghĩa là bản tin đã không bị sửa đổi Nhưvậy vấn đề đảm bảo tính vẹn toàn của một bản tin lớn sẽ được gửi về đảm bảo chomột giá trị băm có kích cỡ cố định (và nhỏ)
2.3.1 Các định nghĩa và tính chất cơ bản
2.3.1.1 Định nghĩa hàm băm
Hàm băm là một hàm h có ít nhất hai tính chất sau:
a)Tính chất nén: h sẽ ánh xạ một đầu vào x có độ dài bit hữu hạn tuỳ ý tới một
đầu ra h x có độ dài bit n hữu hạn.( )
b) Tính chất dễ dàng tính toán: Với h cho trước và một đầu vào x, có thể dễ
dàng tính được h x ( )
2.3.1.2 Một số tính chất của các hàm băm không có khoá
Giả sử h là một hàm băm không có khoá, x và 'x là các đầu vào và y và 'y làcác đầu ra Ngoài hai tính chất cơ bản trên ta còn có 3 tính chất sau:
a) Tính khó tính toán nghịch ảnh:
Đối với hầu hết các đầu ra được xác định trước, không có khả năng tính toán
để tìm một đầu vào bất kỳ mã khi băm sẽ cho ra đầu ra tương ứng (tức là tìm một
Trang 31nghịch ảnh 'x sao cho h( )x' =y với y cho trước và không biến đầu vào tươngứng).
2.3.1.3 Thuật toán mã xác thực thông báo (MAC).
Thuật toán MAC là một họ các hàm h (được tham số hoá bằng một khoá bík
mật k) có các tính chất sau:
(1) Dễ dàng tính toán: Với h đã biết và giá trị k cho trước và một đầuk
vào x, hk( )x có thể được tính dễ dàng (hk( )x được gọi là giá trị MAChay MAC)
(2) Nén: h ánh xạ một đầu vào x có độ dài bit hữu hạn tuỳ tới một đầu rak
( )x
hk có độ dài bit n cố định.
(3) Khó tính toán: Với các cặp giá trị (xi,hk( )xi ) không có khả năng tính
một cặp (x,hk( )x ) với x≠ xi (kể cả có khả năng hk( )x =hk( )xi với
một i nào đó)
Nếu tính chất c không thoả mãn thì thuật toán được coi là giả mạo MAC
Hàm băm được phân ra thành 2 loại chính :
- Các hàm băm không khóa MDC
- Các hàm băm có khóa MAC
Trang 32Hình 1.3 Phân loại hàm băm
2.3.2 Các phương pháp xây dựng hàm băm
2.3.2.1 Các hàm băm không có khoá
Mật mã khối (n, r) là một mã khối xác định một hàm khả nghịch từ các bản rõ nbit sang các bản rõ n bit bằng cách sử dụng một khoá r bit Nếu E là một phép mãhoá như vậy thì Ek( )x ký hiệu cho phép mã hoá x bằng khoá k.
Cho h là một hàm băm có lặp được xây dựng từ một mật mã khối với hàm nén
ƒ thực hiện s phép mã hoá khối để xử lý từng khối bản tin n bit Khi đó tốc độ của h
là 1/s
a) MDC độ dài đơn.
Ba sơ đồ dưới đây có liên quan chặt chẽ với các hàm băm độ dài đơn, xây dựngtrên các mật mã khối Các sơ đồ này có sử dụng các thành phần được xác định trướcnhư sau:
- Một mật mã khối n bit khởi sinh E được tham số hoá bằng một khoá đốik
Trang 33Hinh 1.4 Sơ đồ xây dựng hàm băm độ dài đơn
* Thuật toán băm Matyas - Mayer - Oseas.
Vào: Xâu bit x
Ra : Mã băm n bit của x
(1) Đầu vào x được phân chia thành các khối n bit và được độn nếu cần thiếtnhằm tạo khối cuối cùng hoàn chỉnh Ta được t khối n bit: x1 x2 xt.Phải xác định trước một giá trị ban đầu n bit (ký hiệu IV)
(2) Đầu ra là H được xác định như sau:t
( )( )x x , 1 i tE
H,IV
* Thuật toán băm Davies - Mayer
Vào: Xâu bit x
Ra : Mã băm n bit của x
(1) Đầu vào x được phân thành các khối k bit (k là kích thước khóa) và được độnnếu cần thiết để tạo khối cuối cùng hoàn chỉnh Biểu thị thông báo đã độnthành t khối n bit: x1 x2 xt Xác định trước một giá trị ban đầu n bit (kýhiệu IV)
(2) Đầu ra là H được xác định như sau:t
(H ) H , 1 i tE
H,IV
H0 = i = xi i−1 ⊕ i−1 ≤ ≤
* Thuật toán băm Miyaguchi - Preneel
Trang 34Sơ đồ này tương tự như C1 ngoại trừ Hi−1 (đầu ra ở giai đoạn trước) được cộng
2
mod với tín hiệu ra ở giai đoạn hiện thời Như vậy:
( )( )x x H , 1 i tE
H,IV
Nhận xét: Sơ đồ D_M có thể coi là sơ đồ đối ngẫu với sơ đồ M - M - O theo
nghĩa x và i Hi−1 đổi lẫn vai trò.
b) MDC độ dài kép: MDC -2 và MDC - 4.
MDC -2 và MDC - 4 là các mã phát hiện sự sửa đổi yêu cầu tương ứng là 2 và 4phép toán mã hoá khối trên mỗi khối đầu vào hàm băm Chúng sử dụng 2 hoặc 4phép lặp của sơ đồ M - D - O để tạo ra hàm băm có dộ dài kép Khi dùng DESchúng sẽ tạo ra mã băm 128 bit Tuy nhiên trong cấu trúc tổng quát có thể dùng các
hệ mật mã khối khác MDC- 2 và MDC- 4 sử dụng các thành phần xác định như sau:
- DES được dùng làm mật mã khối E có đầu vào/ ra 64 bit và được tham số hoák
63 10 9 7 6 5 4 1
uuuuuuu10uUg~
uuuuuuu01uUg
Thuật toán MDC -2 có thể được mô tả theo sơ đồ sau:
Trang 35Hình 1.5 Thuât toán MDC -2
* Thuật toán MDC - 2
Vào: Xâu bit x có độ dài r = 64t với t≥2
Ra : Mã băm 128 bit của x
(1) Phân x thành các khối 64 bit x : i x1 x2 x t
(2) Chọn các hằng số không bí mật IV và VI từ một tập các giá trị khuyến~nghị đã được mô tả trước Tập ngầm định các giá trị cho trước này là (ởdạng HEXA)
2525252525252525x0
V~I
5252525252525252x0IV
=
=
(3) Ký hiệu là phép ghép và CiL,CiR là các nửa 32 bit phải và trái của Ci
Đầu ra h( )x =Ht H~t được xác định như sau: (với 1≤i ≤t)
i
L i i i
i i k i 1 i i
0
R i
L i i i
i ki i 1 i i
0
C
C~
H~,xxE
C~,
H~g~
k
~,
V~I
H~
C~CH,xxEC,Hgk,IVH
Trang 36Hình 1.6 Thuật toán MDC-4
2.3.2.2 Các hàm băm có khoá (MAC)
Các hàm băm có khoá được sử dụng để xác thực thông báo và thường được gọi
là các thuật toán tạo mã xác thực thông báo (MAC).
Hình 1.7 Sơ đồ Miyaguchi – Preneel
MAC dựa trên các mật mã khối
Thuật toán
Vào: Dữ liệu x, mật mã khối E, khoá MAC bí mật k của E
Ra : n bit MAC trên x (n là độ dài khối của E)
Trang 37−Độn và chia khối: Độn thêm các bit vào x nếu cần Chia dữ liệu đã độn thànhtừng khối n bit : x1 x2 x t
− Xử lý theo chế độ CBC
Ký hiệu E là phép mã hoá E với khoá k.k
Tính khối H như sau: t
( )
KH
xEH
i 1 i k i
1 k 1
1 ' k
2.3.3.1 Tính toàn vẹn của dữ liệu và xác thực thông báo
Tính toàn vẹn của dữ liệu là tính chất đảm bảo dữ liệu không bị sửa đổi mộtcách bất hợp pháp kể từ khi dữ liệu được tạo ra, được phát hoặc được lưu giữ bởimột nguồn xác định
Xác thực tính nguyên bản của dữ liệu là một kiểu xác thực đảm bảo một bênliên lạc được chứng thực là nguồn thực sự tạo ra dữ liệu đó ở một thời điểm nào đótrong quá khứ
Xác thực thông báo là một thuật ngữ được dùng tương đương với xác thựcnguyên gốc dữ liệu
Có ba phương pháp cung cấp tính toàn vẹn của dữ liệu đó bằng cách dùng cáchàm băm (Hình 1.6)
Trang 38- Chỉ dùng MAC
- Dùng MDC và mã hóa
- Sử dụng MDC và kênh tin cậy
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.
Cùng với sự phát triển nhanh chóng của công nghệ thông tin, các văn bản tàiliệu dưới dạng số dễ dàng được sao chép, sửa đổi Nếu ta sử dụng chữ ký truyền
Trang 39thống như trên sẽ rất dễ dàng bị giả mạo chữ ký Vấn đề đặt ra là làm sao để có thể
ký vào văn bản, tài liệu số như vậy ? Câu trả lời đó là sử dụng chữ ký số
a) Định nghĩa chữ ký số
Chữ ký số (digital signature) là đoạn dữ liệu ngắn đính kèm với văn bản gốc
để chứng thực tác giả (người ký văn bản) của văn bản và giúp người nhận kiểm tratính toàn vẹn của nội dung văn bản gốc
b) Các ưu điểm của chữ ký số
Việc sử dụng chữ ký số mang lại nhiều ưu điểm khi cần xác định nguồn gốc
và tính toàn vẹn của văn bản trong quá trình sử dụng
Tính toàn vẹn
Cả hai bên tham gia vào quá trình thông tin đều có thể tin tưởng là văn bảnkhông bị sửa đổi trong khi truyền vì nếu văn bản bị thay đổi thì hàm băm cũng sẽthay đổi và lập thức bị phát hiện Quy trình mã hóa sẽ ẩn nội dung dối với bên thứba
Tính không thể phủ nhận
Trong giao dịch, một bên có thể từ chối nhận một văn bản nào đó là do mìnhgửi Để ngăn ngừa khả năng này, bên nhận có thể yêu cầu bên gửi phải gửi kèm chữ