Luận án Nghiên cứu xây dựng một lớp hàm băm mở rộng mới và khả năng ứng dụng

Để đảm bảo tính toàn vẹn của thông tin, cần phải phải sử dụng khóa hợp lý. Khi

tăng độ dài khóa, sự tính toán tăng lên nhiều lần theo sự tăng lên của độ dài khoá [4].

Một khoá 32 bit đòi hỏi 232 bước thử. Điều này có thể được thực hiện tại một máy

tính cá nhân. Một khoá 40 bit đòi hỏi một máy tính cá nhân thử trong vòng khoảng

một tuần lễ. Một hệ thống mã hoá 56 bit đòi hỏi nhiều máy tính cá nhân hợp tác trong

vòng vài tháng nhưng có thể dễ dàng phá bởi một thiết bị phần cứng đặc biệt. Giá của

phần cứng này có thể chấp nhận được đối với một tổ chức tội phạm, một công ty hàng

đầu hay một chính phủ. Khoá 64 bit hiện nay có thể được phá bởi một chính phủ,

khoá 128 bit được coi là an toàn trong những năm gần đây.

Nhiều mã có thể bị phá không bằng cách thử mọi khả năng. Nói chung, rất khó

để thiết kế một thuật toán mã hoá mà không thể bị bẻ khóa. Rất khó để giữ bí mật cho

một thuật toán mã hoá bởi một người nào đó quan tâm có thể thuê một chuyên gia bẻ

khoá để dịch lại và khám phá ra phương pháp mã hoá của chúng ta. Thuật toán mã

hoá và chính sách sử dụng là những điểm quan tâm nhất trong việc phá vỡ một hệ

thống [4, 5].

Việc bảo mật, xác thực, đảm bảo tính toàn vẹn của dữ liệu hiện nay sử dụng

hàm băm kết hợp với mã hoá khoá công khai đang được đánh giá là hết sức hiệu quả.

Ví dụ, việc ứng dụng trong chữ ký số: Người gửi sẽ tạo một đoạn mã bǎm, mã hoá

đoạn mã bǎm bằng khoá riêng của mình và người nhận sẽ dùng khoá công khai của

người gửi để giải đoạn mã bǎm của người gửi, sau đó so sánh với đoạn mã bǎm của

thông điệp nhận được (được tạo bằng cùng một thuật toán). Nếu trùng nhau thì người

nhận có thể tin rằng thông điệp nhận được không bị thay đổi trong quá trình truyền

tải trên mạng và xuất phát từ người gửi xác định.

pdf 202 trang dienloan 8980
Bạn đang xem 20 trang mẫu của tài liệu "Luận án Nghiên cứu xây dựng một lớp hàm băm mở rộng mới và khả năng ứng dụng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Luận án Nghiên cứu xây dựng một lớp hàm băm mở rộng mới và khả năng ứng dụng

Luận án Nghiên cứu xây dựng một lớp hàm băm mở rộng mới và khả năng ứng dụng
BỘ THÔNG TIN VÀ TRUYỀN THÔNG 
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG 
******************************************** 
NGUYỄN TOÀN THẮNG 
NGHIÊN CỨU XÂY DỰNG 
MỘT LỚP HÀM BĂM MỞ RỘNG MỚI 
VÀ KHẢ NĂNG ỨNG DỤNG 
LUẬN ÁN TIẾN SĨ KỸ THUẬT 
HÀ NỘI – 2017 
BỘ THÔNG TIN VÀ TRUYỀN THÔNG 
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG 
******************************************** 
NGUYỄN TOÀN THẮNG 
NGHIÊN CỨU XÂY DỰNG 
MỘT LỚP HÀM BĂM MỞ RỘNG MỚI 
VÀ KHẢ NĂNG ỨNG DỤNG 
 Chuyên ngành : Kỹ thuật Điện tử 
 Mã ngành : 62.52.02.03 
LUẬN ÁN TIẾN SĨ KỸ THUẬT 
NGƯỜI HƯỚNG DẪN KHOA HỌC: 
GS.TSKH. NGUYỄN XUÂN QUỲNH 
HÀ NỘI – 2017 
i 
LỜI CAM ĐOAN 
Tôi xin cam đoan đây là công trình nghiên cứu của tôi. Các nội dung là 
trung thực và kết quả trình bày trong luận án chưa được công bố ở bất kỳ công 
trình nghiên cứu nào khác. 
 Tác giả 
 Nguyễn Toàn Thắng 
ii 
LỜI CẢM ƠN 
Tôi xin tỏ lòng biết ơn đến thầy GS.TSKH. Nguyễn Xuân Quỳnh, người đã trực 
tiếp định hướng, hướng dẫn và tạo mọi điều kiện thuận lợi cho tôi trong suốt quá trình 
nghiên cứu. 
Tôi xin chân thành cảm ơn Học viện Công nghệ Bưu chính Viễn thông - nơi tôi 
làm luận án - đã tạo những điều kiện thuận lợi để giúp tôi hoàn thành chương trình 
nghiên cứu. Tôi xin cảm ơn khoa Quốc tế và Đào tạo sau đại học, Ban Tuyên giáo 
Tỉnh ủy, Sở Thông tin và Truyền thông tỉnh Ninh Bình, cũng như các đồng nghiệp 
đã tạo điều kiện giúp đỡ tôi hoàn thành được đề tài nghiên cứu của mình. 
Cuối cùng là sự biết ơn tới gia đình, bạn bè đã tạo điều kiện, động viên tôi, cho 
tôi có đủ nghị lực để hoàn thành luận án. 
 Hà Nội, tháng 11 năm 2017 
iii 
MỤC LỤC 
LỜI CAM ĐOAN ..................................................................................................... i 
LỜI CẢM ƠN .......................................................................................................... ii 
MỤC LỤC ............................................................................................................... iii 
DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT ............................................. vi 
DANH MỤC CÁC BẢNG .................................................................................... viii 
DANH MỤC CÁC HÌNH VẼ.................................................................................. x 
PHẦN MỞ ĐẦU ...................................................................................................... 1 
1. MỞ ĐẦU ....................................................................................................... 1 
2. TÌNH HÌNH NGHIÊN CỨU ......................................................................... 2 
3. LÝ DO CHỌN ĐỀ TÀI ................................................................................. 7 
4. MỤC TIÊU NGHIÊN CỨU .......................................................................... 8 
5. ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU .................................................... 9 
6. PHƯƠNG PHÁP NGHIÊN CỨU ................................................................. 9 
7. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI ............................ 9 
CHƯƠNG 1. TỔNG QUAN VỀ MẬT MÃ VÀ HÀM BĂM .............................. 10 
1.1. GIỚI THIỆU ................................................................................................ 10 
1.2. PHƯƠNG PHÁP XÂY DỰNG CÁC HỆ MẬT CƠ BẢN .......................... 10 
1.2.1. Phương pháp xây dựng các hệ mật khóa bí mật .......................... 10 
1.2.2. Phương pháp xây dựng các hệ mật khóa công khai .................... 24 
1.3. HÀM BĂM .................................................................................................. 31 
1.3.1. Mô tả hàm băm ............................................................................ 31 
1.3.2. Các hàm băm có khóa ................................................................. 33 
1.3.3. Các hàm băm không có khóa ...................................................... 34 
1.3.4. Một số phương pháp toàn vẹn dữ liệu và xác thực thông báo .... 36 
1.4. CẤP SỐ NHÂN CYCLIC............................................................................ 38 
iv 
1.4.1. Nhóm nhân của vành đa thức ...................................................... 38 
1.4.2. Các cấp số nhân cyclic cấp n ....................................................... 38 
1.4.3. Phân hoạch vành đa thức ............................................................. 39 
1.5. KẾT LUẬN CHƯƠNG I ............................................................................. 41 
CHƯƠNG 2. XÂY DỰNG CÁC HÀM BĂM MỚI ............................................ 43 
2.1. GIỚI THIỆU ................................................................................................ 43 
2.2. HÀM BĂM DỰA TRÊN HỆ MẬT THEO SƠ ĐỒ LAI-MASSEY ........... 43 
2.2.1. Hệ mật sử dụng cấp số nhân cyclic theo sơ đồ LAI-MASSEY .. 43 
2.2.2. Xây dựng hàm băm trên cơ sở hệ mật ......................................... 50 
2.3. HÀM BĂM DỰA TRÊN HỆ MẬT MÃ LAI GHÉP .................................. 55 
2.3.1. Bài toán Logarit rời rạc và hệ mật POHLIG-HELLMAN .......... 56 
2.3.2. Đề xuất một phương pháp xây dựng hệ mật mã lai ghép ............ 59 
2.3.3. Khả năng xây dựng hàm băm từ hệ mật ...................................... 66 
2.4. HÀM BĂM SỬ DỤNG CÁC CẤP SỐ NHÂN CYCLIC ........................... 67 
2.4.1. Sơ đồ hàm băm MDC-2 sử dụng lưu đồ FEISTEL ..................... 67 
2.4.2. Xây dựng hàm băm và kết quả mô phỏng ................................... 68 
2.5. KẾT LUẬN CHƯƠNG II ............................................................................ 74 
CHƯƠNG 3. XÂY DỰNG MỘT LỚP CÁC HÀM BĂM MỞ RỘNG MỚI ...... 76 
3.1. GIỚI THIỆU ................................................................................................ 76 
3.2. XÂY DỰNG HÀM BĂM MỞ RỘNG MỚI MDC-3 .................................. 77 
3.3. HÀM BĂM DỰA TRÊN HỆ MẬT MÃ KHỐI KẾT HỢP SƠ ĐỒ LAI-
MASSEY VỚI FEISTEL ............................................................................ 86 
3.3.1. Hệ mật mã khối kết hợp sơ đồ LAI-MASSEY và FEISTEL ...... 87 
3.3.2. Xây dựng hàm băm trên cơ sở hệ mật kết hợp ............................ 93 
3.4. XÂY DỰNG HÀM BĂM MỞ RỘNG MỚI MDC 512 BÍT ....................... 98 
3.4.1. Mô tả hệ mật mã khối 256 bít ..................................................... 98 
3.4.2. Đánh giá độ khuếch tán của hệ mật ........................................... 102 
v 
3.4.3. Xây dựng hàm băm 512 bit trên cơ sở hệ mật .......................... 106 
3.5. KẾT LUẬN CHƯƠNG III ........................................................................ 110 
CHƯƠNG 4. KHẢ NĂNG ỨNG DỤNG CỦA HÀM BĂM XÂY DỰNG MỚI112 
4.1. GIỚI THIỆU .............................................................................................. 112 
4.2. CHỮ KÝ SỐ .............................................................................................. 112 
4.3. KIỂM TRA TÍNH TOÀN VẸN CỦA THÔNG ĐIỆP .............................. 122 
4.4. BẢO VỆ MẬT KHẨU .............................................................................. 125 
4.5. KẾT LUẬN CHƯƠNG IV ........................................................................ 128 
KẾT LUẬN VÀ KIẾN NGHỊ.............................................................................. 130 
1. KẾT LUẬN ................................................................................................... 130 
2. KIẾN NGHỊ HƯỚNG PHÁT TRIỂN .......................................................... 130 
DANH MỤC CÁC CÔNG TRÌNH CÔNG BỐ CỦA TÁC GIẢ ........................ 132 
TÀI LIỆU THAM KHẢO .................................................................................... 134 
PHỤ LỤC A ......................................................................................................... 140 
PHỤ LỤC B ......................................................................................................... 179 
vi 
DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT 
Ký hiệu Tiếng Anh Tiếng Việt 
CAST Carlisle Adams and Stafford Tavares Hệ mật CAST 
CBC Cipher Block Chaining Chế độ liên kết khối mã 
CFB Cipher Feedback Block Chế độ phản hồi mã 
CGP Cyclic Geometic Progressions Cấp số nhân cyclic 
CMG Cyclic Multiplicate Group Nhóm nhân cyclic 
CRC Cyclic Redundancy Check Kiểm tra độ dư tuần hoàn 
CRF Collision Resistant Function Hàm kháng va chạm 
CRHF Collision Resistant Hash Function Hàm băm kháng va chạm 
0
d Hamming distance Khoảng cách Hamming 
deg Degree Bậc của đa thức 
DEA Data Encryption Algorithm Thuật toán mã dữ liệu 
DES Data Encryption Standard Chuẩn mã dữ liệu 
( )e x Equity Đa thức lũy đẳng 
ECB Electronic Codebook Chế độ quyển mã điện tử 
 Field Trường 
G Group Nhóm 
GF(p) Group Field Trường đặc số p 
h Hash Hàm băm 
I Ideal Trường hợp lý tưởng 
IDEA International Data Encryption 
Algorithm 
Thuật toán mã hóa dữ liệu 
quốc tế 
IV Initial Value Giá trị khởi tạo 
MAC Message Authentication Code Mã xác thực thông báo 
MDC Manipulation Detection Code Mã phát hiện sự sửa đổi 
NIST National Institute for Standards and 
Technology (US) 
Viện Quốc gia về Tiêu 
chuẩn và Công nghệ 
OFB Output Feedback Chế độ phản hồi đầu ra 
ord Order Cấp của đa thức 
vii 
OWF One-Way Function Hàm một chiều 
OWHF One-Way Hash Function Hàm băm một chiều 
R Ring Vành 
RIPE Race Integrity Primitives Evaluation Đánh giá mức độ toàn vẹn 
nguyên gốc. 
RSA Rivest Shamir Adleman Thuật toán mã hóa RSA 
SHA Secure Hash Algorithm Thuật toán băm SHA 
SHS Secure Hash Standard Tiêu chuẩn băm an toàn 
TDEA Triple Data Encryption Algorithm Thuật toán mã hóa TDEA 
UOWHF Universal One-Way Hash Function Hàm băm một chiều phổ 
thông 
VEST Very Efficient Substitution 
Transposition 
Chuyển vị thay thế hiệu 
quả cao 
W Weight Trọng số 
viii 
DANH MỤC CÁC BẢNG 
Bảng 2.1. Khoảng cách Hamming dH(C1,Ci) giữa các cặp bản mã ........................... 49 
Bảng 2.2. Khoảng cách Hamming dH(C1,Ci) của hàm băm khi thay đổi .................. 52 
Bảng 2.3. Khoảng cách Hamming dH(MD1,MDi) giữa các cặp giá trị băm ............ 53 
Bảng 2.4. Giá trị hàm mũ và Logarit rời rạc cơ số 2 của các phân tử ...................... 57 
Bảng 2.5. Hoán vị ban đầu (IP) ................................................................................. 59 
Bảng 2.6. Hoán vị đảo (IP-1) ..................................................................................... 61 
Bảng 2.7. Khoảng cách Hamming của một vài cặp bản mã khi thay đổi ................. 64 
Bảng 2.8. Khoảng cách Hamming của một vài cặp bản mã khi thay đổi ................. 65 
Bảng 2.9. Khoảng cách Hamming dH(MD1, MDi) khi các khối dữ liệu khác khối .. 69 
Bảng 2.10. Khoảng cách Hamming dH(MD1, MDi) giữa các cặp giá trị băm ......... 72 
Bảng 3.1. Bảng hoán vị ban đầu (IP) ........................................................................ 79 
Bảng 3.2. Bảng hoán vị đảo (IP-1) ............................................................................. 80 
Bảng 3.3. Khoảng cách Hamming dH(MD0, MDi) khi các bản tin dữ liệu .............. 82 
Bảng 3.4. Khoảng cách Hamming dH(MD0, MDi) của 8 mã băm ........................... 84 
Bảng 3.5. Trọng số của các khóa tại các bước băm .................................................. 85 
Bảng 3.6. Khoảng cách Hamming dH(C0,CI) giữa các cặp bản mã ........................... 91 
Bảng 3.7. Khoảng cách Hamming dH(C0,CI) giữa các cặp bản mã ........................... 92 
Bảng 3.8. Khoảng cách Hamming dH(C0,CI) của các mã băm .................................. 95 
Bảng 3.9. Khoảng cách Hamming dH(C0,CI) của các mã băm .................................. 96 
Bảng 3.10. Độ khuếch tán giữa các cặp bản mã của một vài bước tính toán ......... 103 
Bảng 3.11. Kết quả của 10 lần tính độ khuếch tán khi thay đổi bản rõ .................. 104 
ix 
Bảng 3.12. Độ khuếch tán giữa các cặp bản mã của một vài bước ........................ 106 
Bảng 3.13. Độ khuếch tán của một vài mã băm khi thay đổi dữ liệu ..................... 108 
Bảng 3.14. Kết quả 10 lần tính khuếch tán của hàm băm ....................................... 109 
x 
DANH MỤC CÁC HÌNH VẼ 
Hình 1.1. Lưu đồ Feistel ........................................................................................... 12 
Hình 1.2. Lưu đồ hoạt động của chương trình .......................................................... 13 
Hình 1.3. Lưu đồ Lai-Massey ................................................................................... 14 
Hình 1.4. Lưu đồ mã hóa .......................................................................................... 16 
Hình 1.5. Hàm f của DES .......................................................................................... 17 
Hình 1.6. Tính bảng khóa DES ................................................................................. 21 
Hình 1.7. Phân loại các hàm băm .............................................................................. 32 
Hình 1.8. Sơ đồ MAC ............................................................................................... 33 
Hình 1.9. Các sơ đồ hàm băm độ dài đơn ................................................................. 34 
Hình 1.10. Thuật toán MDC-2 .................................................................................. 35 
Hình 1.11. Thuật toán MDC-4 .................................................................................. 36 
Hình 1.12. Toàn vẹn dữ liệu dùng MAC .................................................................. 37 
Hình 1.13. Toàn vẹn dữ liệu dùng MDC và mã hóa ................................................. 37 
Hình 1.14. Toàn vẹn dữ liệu dùng MDC và kênh tin cậy ......................................... 37 
Hình 2.1. Sơ đồ khối bộ mã hóa ................................................................................ 45 
Hình 2.2. Mạch điện mã hóa f với 2( ) 1a x x x ................................................ 47 
Hình 2.3. Sơ đồ hàm băm Matyas-Mayer–Oseas .................................................... 51 
Hình 2.4. Sơ đồ khối của hệ mật ............................................................................... 60 
Hình 2.5. Sơ đồ mã hóa của hệ mật .......................................................................... 60 
Hình 2.6. Tách các khóa con cho các vòng mã hóa .................................................. 62 
Hình 2.7. Sơ đồ bộ mã hóa ........................................................................................ 67 
xi 
Hình 3.1. Sơ đồ hàm băm MDC-3 đề xuất ............................................................... 77 
Hình 3.2. Sơ đồ khối mật mã E ................................................................................. 78 
Hình 3.3. Sơ đồ khối mã hóa f với khóa 4 5
1 1K x x .......................................... 81 
Hình 3.4. Sơ đồ mã hóa của hệ mật ............................................... ... + Hàm tính toán độ khuếch tán của hàm băm 512 bit theo sử dụng hệ mật 
256 bit trên vành chẵn 
function MD=bamMDC_2_512(x,H0,Ka) 
% Thuc hien ham bam theo so do MDC -2 (Miyaguchi-Preneel) 
% 
% He mat Feistel_4b_256_2k 
% Cu phap: MD = bamMDC_2_512(msg,H0,Ka) 
% MD: Dau ra ma bam 512 bit 
% msg: Ban tin ro dau vao 
% H0: Ma bam khoi tao, 256 bit 
% Ka: Phan tu sinh cua cap so nhan tao khoa dau tien, 64 bit 
165 
%------- Tao cac khoi 512 bit cua dau vao x------------- 
msg=x; 
sox = length(msg); 
while mod(sox,512)~=0 
 msg=[msg 0]; % Chen them bit "0" cho moi khoi du 256 bit 
 sox=length(msg); 
end 
if sox == 512 % Chi co mot khoi ban tin 
 flag=0; 
else 
 flag=1; 
end 
t=length(msg)/512; 
msg=reshape(msg,512,t); % Chia ban tin thanh cac khoi 512 bit 
msg=msg'; 
%--------- Tinh khoa k0 tu ma bam dau tien H0 -------- 
K0 = H0(1:4:252); % Lay 63 bit cho nua trai 
Wk = mod(sum(K0),2); % Kiem tra tinh chan le 
 if Wk==1 
 K0(64)= 0; % trong so le --> bit 64 = 0 
 else 
 K0(64)= 1; % trong so chan --> bit 64 = 1 
 end 
%$$$$$$$$$$$$$$$$$ Tinh toan buoc dau tien $$$$$$$$$$$$$$$$$$$$$$ 
XLi=msg(1,1:256); 
XRi=msg(1,257:512); 
EL = Feistel_4b_256_2k(XLi,K0,Ka); % Ma hoa nua trai 
EL = xor(EL,XLi); % Cong voi ban tin vao 
EL = xor_any(EL,K0); % Miyaguchi - Preneel 
ER = Feistel_4b_256_2k(XRi,K0,Ka); % Ma hoa nua phai 
166 
ER = xor(ER,XRi); % Cong voi ban tin vao 
ER = xor_any(ER,K0); % Miyaguchi - Preneel 
HL = [EL(1:128) ER(129:256)]; % Trao nua dau ra ma bam nua trai 
HR = [ER(1:128) EL(129:256)]; % Trao nua dau ra ma bam nua phai 
%$$$$$$$$$$$$$$$$$$ Cac buoc tiep theo $$$$$$$$$$$$$$$$$$$$ 
if flag % Co hon 1 khoi ban tin 
for jj=2:t % Bam tu khoi thu 2 den khoi t 
%-------- tao khoa cho buoc tiep theo ---------------- 
KL = HL(1:4:252); % Lay 63 bit cho nua trai 
Wk = mod(sum(KL),2); % Kiem tra tinh chan le 
 if Wk==1 
 KL(64)= 0; % trong so le --> bit 64 = 0 
 else 
 KL(64)= 1; % trong so chan --> bit 64 = 1 
 end 
KR = HR(1:4:252); 
Wk = mod(sum(KR),2); % Kiem tra tinh chan le 
 if Wk==1 
 KR(64)= 0; % trong so le --> bit 64 = 0 
 else 
 KR(64)= 1; % trong so chan --> bit 64 = 1 
 end 
% --------- Bam khoi ban tin tiep theo------ 
msgi = msg(jj,:); % Khoi thu jj 
XLi = msgi(1:256); 
XRi = msgi(257:512); 
EL = Feistel_4b_256_2k(XLi,KL,Ka); % Ma hoa voi khoa moi KL 
EL = xor(EL,XLi); 
167 
EL = xor_any(EL,HL); % Miyaguchi - Preneel 
ER = Feistel_4b_256_2k(XRi,KR,Ka); % Ma hoa voi khoa moi KR 
ER = xor(ER,XRi); 
ER = xor_any(ER,KR); % Miyaguchi - Preneel 
HL = [EL(1:64) ER(65:128) EL(129:192) ER(193:256)]; 
 % Trao nua dau ra ma bam nua trai 
HR = [ER(1:64) EL(65:128) ER(129:192) EL(193:256)]; 
 % Trao nua dau ra ma bam nua phai 
end 
end 
%$$$$$$$$$$$$$$$$ Gia tri bam cuoi cung $$$$$$$$$$$$ 
MD = [HL HR]; 
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
+ Chương trình băm MDC-2-Feistel-New 
function MD=bamMDC_2_Feistel_64(x,K0,Ka) 
% Thuc hien ham bam theo so do MDC-2 
% Ham ma hoa: Feistel_64 
% 
% Cu phap: MD = bamMDC_2_Feistel_64(msg,K0,Ka) 
% MD: Dau ra ma bam 128 bit 
% msg: Ban tin ro dau vao 
% Ka: Phan tu dau cua CGP tao khoa dau tien x^53+1 
% K0: Phan tu sinh cua CGP tao khoa dau tien 
%------- Tao cac khoi n bit cua dau vao x------------- 
msg=x; 
168 
sox = length(msg); 
while mod(sox,128)~=0 
 msg=[msg 0]; % Chen them bit "0" cho du chieu dai moi khoi 
128 bit 
 sox=length(msg); 
end 
if sox == 128 % Chi co mot khoi ban tin 
 flag=0; 
else 
 flag=1; 
end 
t=length(msg)/128; 
msg=reshape(msg,128,t); % Chia ban tin thanh cac khoi 128 bit 
msg=msg'; 
%$$$$$$$$$$$$$$$$$ Tinh toan buoc dau tien $$$$$$$$$$$$$$$$$$$$$$ 
msgi=msg(1,:); 
EL = Feistel_64(msgi(1:64),K0,Ka); % Ma hoa nua trai 
EL = xor(EL,msgi(1:64)); % Cong voi ban tin vao 
ER = Feistel_64(msgi(65:128),K0,Ka); % Ma hoa nua phai 
ER = xor(ER,msgi(65:128)); % Cong voi ban tin vao 
HL = [EL(1:32) ER(33:64)]; % Trao nua dau ra ma bam nua 
trai 
HR = [ER(1:32) EL(33:64)]; % Trao nua dau ra ma bam nua 
phai 
%$$$$$$$$$$$$$$$$$$ Cac buoc tiep theo $$$$$$$$$$$$$$$$$$$$ 
if flag % Co hon 1 khoi ban tin 
169 
for jj=2:t % Bam tu khoi thu 2 den khoi t 
%-------- Trich tron khoa cho buoc tiep theo ---------------- 
%--- loai cac bit 8, 16, 24, 32, 40, 48, 56, 61,62 63,64 
tg=reshape(HL,8,8); 
tg=tg(1:7,:); 
tg=reshape(tg,1,56); 
KL = tg(1:53); % Lay 53 bit cho nua trai 
Wk = mod(sum(KL),2); % Kiem tra tinh chan le 
 if Wk==1 
 KL(53)= xor(KL(53),[1]); % trong so le --> doi bit cuoi 
 end 
tg=reshape(HR,8,8); 
tg=tg(:,1:7); 
tg=reshape(tg,1,56); 
KR = tg(1:53); % Lay 53 bit cho nua trai 
Wk = mod(sum(KR),2); % Kiem tra tinh chan le 
 if Wk==1 
 KR(53)= xor(KR(53),[1]); % trong so le --> doi bit cuoi 
 end 
% --------- Bam khoi ban tin tiep theo------ 
msgi = msg(jj,:); % Khoi thu jj 
EL = Feistel_64(msgi(1:64),K0,KL); % Ma hoa voi khoa moi KL 
EL = xor(EL,msgi(1:64)); 
ER = Feistel_64(msgi(65:128),K0,KR); % Ma hoa voi khoa moi KR 
ER = xor(ER,msgi(65:128)); 
HL = [EL(1:32) ER(33:64)]; % Trao nua dau ra ma bam 
HR = [ER(1:32) EL(33:64)]; 
170 
end 
end 
%$$$$$$$$$$$$$$$$ Gia tri bam cuoi cung $$$$$$$$$$$$ 
MD = [HL HR]; 
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
+ Chương trình tính toán khuếch tán khóa băm MDC-2-Feistel-New 
% Tinh toan phan bo ham bam khi doi khoa 
% Ham bam xay dung theo luoc do MDC-2 (Miyaguchi - Preneel) 128 bit; 
% He mat Feistel_64 
%---------- Chuan bi du lieu ------------------------- 
clear; 
clc; 
msg = double(rand(1,1280)>.5); % 10 khoi ban tin tao ngau nhien 
%----------- Tao khoa khoi tao K0 ----------------------------- 
K01=[]; 
for ii=1:13 
 tg=dec2binvec(ii,4); 
 K01=[K01 tg]; 
end 
Kihex=bin2hex(K01); 
Kihex(14)='0'; % Hien thi bit cuoi cung la '0' 
K01(53)=0; % Bit cuoi cua khoa = '0' 
171 
Ka=pol2bin([0 1 2]); % Phan tu dau cua cap so nhan K 
ts = sum(K01); 
%--------- Bam ban tin dau tien --------------- 
E1=bamMDC_2_Feistel_64(msg,K01,Ka); % Du lieu bam khi chua thay 
khoa 
disp('Ket qua bam khi thay doi 1 bit du lieu'); 
disp(' Thu tu Khoa dau tien Ma bam 
K/C Hamming Trong so (Ki)'); 
MDhex= bin2hex(E1); 
fprintf('%5d %25s %35s %10d %14d\n',0,Kihex,MDhex,0,ts); 
sohm=0; % Khoang cach Hamming ban ma dau 
% ------ thay doi tung bit khoa ---------- 
for p=1:52 
K0i=K01; % Lay lai khoa ban dau 
% Phai thay doi 2 bit khoa de dam bao da thuc sinh co trong so le 
 K0i(p)=xor(K0i(p),[1]); % Thay doi bit khoa 
 K0i(53)=1; % Dam bao trong so le 
 ts=sum(K0i); 
 Ei=bamMDC_2_Feistel_64(msg,K0i,Ka); % Thuc hien Bam 
 hm=sum(xor(E1,Ei)); % Tinh so bit sai khac, khoang cach Hamming 
 Kihex=bin2hex(K0i); 
 Kihex(14)='1'; 
 MDhex=bin2hex(Ei); 
 fprintf('%5d %25s %35s %10d %14d\n',p+1,Kihex,MDhex,hm,ts); 
 sohm=sohm+hm; 
172 
end 
fprintf('Khoang cach Hamming trung binh: %6.2f\n',sohm/52); 
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
+ Chương trình kiểm tra dữ liệu băm MDC-4-New 
% Tinh toan do khuech tan cua ham bam MDC-4 512 bit, so do he mat LM 
- Feistel 128 bit 
% khi thay doi du lieu 
% Khoa K la nhom nhan xay dung tren vanh X^61+1, 
% voi khoa ban dau la H0 
%---------- Chuan bi du lieu ------------------------- 
clear; 
% clc; 
msg1=[]; 
for ii=0:15 
 tg=dec2binvec(ii,4); 
 msg1=[msg1 tg ]; 
end 
msg1 = [msg1 msg1]; % 128 bit 
msg1=[msg1 msg1 msg1 msg1]; % 512 bit 
msg2 = rand(1,9*512)>.5; % Cac khoi sau tao ngau nhien 
msg =[msg1 msg2]; 
%----------- Khoa K ban dau (H0) (tren vanh 2 lop ke x61+1) -------- 
173 
H0=[]; 
for ii=1:15 
 tg=dec2binvec(ii,4); 
 H0=[H0 tg ]; 
end 
H0(61)=1; 
%--------- Ma hoa ban tin dau tien --------------- 
H1=bam_LM_Feistel_512(msg,H0); % Ban ma khi chua thay bit du lieu 
msc=msg; % du lieu vao ban dau 
disp('Ket qua khi thay doi 1 bit du lieu'); 
fprintf('%5s %15s %60s %85s\n','Thu tu','Bit thay doi','Ma 
bam','Hamming'); 
% msghex=bin2hex(msg(1:512)); 
Chex= bin2hex(H1); 
fprintf('%5d %10d %135s %10d\n',0,0,Chex,0); 
% fid = fopen('5120.dat','a'); 
% fprintf('%10d %135s %10d\n',0,Chex,0); 
% fprintf(fid,'%d %s %d\n',ii, ,pb); % Luu ket qua vao file Pb.dat 
% fclose(fid); 
sohm=0; % Tinh khoang cach Hamming 
%------- Thay doi 1 bit trong dau tien cua ban tin dau vao --------- 
for ii=1:1000 
 pp = round(3520*rand); % vi tri bit thay doi 
 msg = msc; % Ban tin ban dau 
174 
 msg(pp) = xor(msg(pp),1); % thay doi 1 bit 
% msg(ii) = xor(msg(ii),1); % thay doi 1 bit 
 Hi = bam_LM_Feistel_512(msg,H0); 
 hm=sum(xor(Hi,H1)); % Tinh so bit sai khac, khoang cach Hamming 
%********************** Hien thi ket qua *************************** 
% msghex=bin2hex(msg(1:512)); 
if (mod(ii,100)==0) | (mod(ii,100)==1) | (ii==2)|(ii==999) 
 Chex= bin2hex(Hi); 
 fprintf('%5d %10d %135s %10d\n',ii,pp,Chex,hm); 
% fprintf('%5d %130s %135s %10d\n',pp,msghex,Chex,hm); 
% fid = fopen('5120.dat','a'); 
% fprintf('%10d %135s %10d\n',ii,Chex,hm); 
% % fprintf(fid,'%d %s %d\n',ii, ,pb); % Luu ket qua vao file 
Pb.dat 
% fclose(fid); 
end 
 sohm=sohm+hm; 
end 
fprintf('Khoang cach Hamming trung binh: %6.2f\n',sohm/1000); 
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
+ Chương trình kiểm tra khóa băm MDC-4-New 
% Tinh toan do khuech tan cua ham bam MDC-4 512 bit, so do he mat LM 
- Feistel 128 bit 
% khi thay doi khoa 
% Khoa K la nhom nhan xay dung tren vanh X^61+1, 
% voi khoa ban dau la H0 
175 
%---------- Chuan bi du lieu ------------------------- 
clear; 
clc; 
msg = rand(1,5120)>.5; % Cac khoi sau tao ngau nhien 
%----------- Khoa K ban dau (H0) (tren vanh 2 lop ke x61+1) -------- 
H0=[]; 
for ii=1:15 
 tg=dec2binvec(ii,4); 
 H0=[H0 tg ]; 
end 
H0(61)=1; 
%--------- Ma hoa ban tin dau tien --------------- 
H1=bam_LM_Feistel_512(msg,H0); % Ban ma khi chua thay bit du lieu 
H0hex=bin2hex(H0); 
H0hex(16)=num2str(H0(61)); 
Chex= bin2hex(H1); 
disp('Ket qua khi thay doi 2 bit khoa'); 
fprintf('%5s %20s %60s %85s %15s\n','Thu tu','Khoa','Ma 
bam','Hamming','trong so H0'); 
fprintf('%5d %20s %135s %10d %10d\n',0,H0hex,Chex,0,sum(H0)); 
sohm=0; % Tinh khoang cach Hamming 
%------- Thay doi 1 bit khoa khoi tao H0, bit 61 la bit kiem tra --- 
for ii=1:60 
 H0i = H0; % Khoa ban dau 
% p1 = round(60*rand); 
% p2 = round(60*rand); 
% if p1==p2 
176 
% p2 = mod(p1+5,60); 
% end 
% 
% if p1==0 
% p1=20; % Neu vao bit thu 0 thi thay bit 20 (khong co bit 
thu tu 0) 
% end 
% if p2==0 
% p2=40; 
% end 
% H0i(p1) = xor(H0i(p1),[1]); % Doi bit khoa 
% H0i(p2) = xor(H0i(p2),[1]); % Doi bit khoa 
H0i(ii)=xor(H0i(ii),[1]); %Thay doi bit khoa 
% if xor(sum(H0i),2)==0 % Kiem tra trong so cua khoa 
% H0i(61)=1; 
% else 
 H0i(61)=0; 
% end 
 Hi = bam_LM_Feistel_512(msg,H0i); 
 wH0i = sum(H0i); 
 hm=sum(xor(Hi,H1)); % Tinh so bit sai khac, khoang cach Hamming 
%********************** Hien thi ket qua *************************** 
 H0hex=bin2hex(H0i); 
 H0hex(16)=num2str(H0i(61)); 
 Chex= bin2hex(Hi); 
 fprintf('%5d %20s %135s %10d %10d\n',ii,H0hex,Chex,hm,wH0i); 
 sohm=sohm+hm; 
 % fid = fopen('Pb.dat','a'); 
% fprintf(fid,'%d %s %d\n',p+1, ,pb); % Luu ket qua vao file Pb.dat 
177 
% fclose(fid); 
end 
fprintf('Khoang cach Hamming trung binh: %6.2f\n',sohm/60); 
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
+ Chương trình tính toán độ khuếch tán của hàm băm 512 bit theo sử dụng 
hệ mật 256 bit trên vành chẵn, khi thay đổi dữ liệu 
% Tinh toan phan bo ham bam khi doi du lieu 
% He mat Feistel_4b_256_2k 
% Ham bam xay dung theo luoc do MDC-2 (Miyaguchi - Preneel) 512 bit; 
%---------- Chuan bi du lieu ------------------------- 
clear; 
clc; 
nmsg = 10; % So khoi ban tin 256 bit can bam 
H0=[]; 
for ii=0:15 % Tao khioi ban tin dau x1 = (0123456789ABCDEF) x 2 x 2 
 tg=dec2binvec(ii,4); 
 H0=[H0 tg tg tg tg]; 
end 
msg= double(rand(1,512*10)>.5); % 9 khoi tiep theo 
%----------- Tao khoa khoi tao H0 ----------------------------- 
Ka=pol2bin([0 3 4]); 
%--------- Bam ban tin dau tien --------------- 
E1=bamMDC_2_512(msg,H0,Ka); % Du lieu bam khi chua thay bit du lieu 
msghex=bin2hex(msg(1:512)); 
disp('Ket qua bam khi thay doi 1 bit du lieu'); 
disp(' Thu tu Vi tri thay doi Ma bam K/C Hamming'); 
Cihex= bin2hex(E1); 
178 
fprintf('%5d %10d %130s %10d\n',0,0,Cihex,0); 
nol=100; 
for jj=1:10 
sohm=0; % Khoang cach Hamming ban ma dau 
%------- Bam cac ban tin khac 1 bit voi ban tin dau tien ---------- 
for p = 1:nol % Thay ngau nhien 100 lan, moi lan 1 bit 
 msc = msg; % du lieu vao ban dau 
 posit = round(rand(1)*5120); %Vi tri bit thay doi 
 if posit==0 
 posit=1; 
 end 
 msc(posit) = xor(msc(posit),[1]); 
 E = bamMDC_2_512(msc,H0,Ka); % Bam ban tin da thay doi du lieu 
 hm = sum(xor(E1,E)); % Tinh khoang cach Hamming 
 %***** Hien thi ket qua *************************** 
 MDhex = bin2hex(E); 
 fprintf('%5d %10d %130s %10d\n',p,posit,MDhex,hm); 
 fprintf('%5d %10d %10d\n',p,posit,hm); 
 sohm = sohm + hm; % Tich luy tong khoang cach Hamming 
end 
fprintf('Khoang cach Hamming trung binh: '); 
fprintf('%5d %6.2f\n',jj,sohm/nol); 
end 
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
179 
PHỤ LỤC B 
THÔNG SỐ CỦA MỘT SỐ HÀM BĂM 
MD5 
Các thông số: 
Mở rộng thông báo: 
Giá trị khởi tạo: 
Bước mã hóa: 
180 
Trạng thái: 
Đầu ra: 
RIPEMD-0 
Các thông số: 
Mở rộng thông báo: 
Giá trị khởi tạo: 
Bước mã hóa: 
181 
Trạng thái: 
Đầu ra: 
RIPEMD-128 
Các thông số: 
Mở rộng thông báo: 
Giá trị khởi tạo: 
182 
Bước mã hóa: 
Trạng thái: 
Đầu ra: 
RIPEMD-160 
Các thông số: 
Mở rộng thông báo: 
183 
Giá trị khởi tạo: 
Bước mã hóa: 
Trạng thái: 
Đầu ra: 
RIPEMD-256 Giống RIPEMD-128 
Các thông số: 
184 
Giá trị khởi tạo: 
Bước mã hóa: 
Giống RIPE-128: Sau bước 15 (và các bước 31, 47, 63 tương ứng) thay nội dung 
12
LR bằng 12
RR (và 31
LR bằng 31
RR , 46
LR bằng 46
RR , 61
LR bằng 61
RR tương ứng). 
Đầu ra: 
RIPEMD-320 Giống RIPEMD-160 
Các thông số: 
Giá trị khởi tạo: 
Bước mã hóa: 
Giống RIPE-160: Sau bước 15 (và các bước 31, 47, 63, 79 tương ứng) thay nội 
dung 14
LR bằng 14
RR (và 27
LR bằng 27
RR , 46
LR bằng 46
RR , 59
LR bằng 59
RR , 77
LR bằng 77
RR
tương ứng). 
185 
Đầu ra: 
SHA-0 và SHA-1 
Các thông số: 
Mở rộng thông báo: 
Giá trị khởi tạo: 
Bước mã hóa: 
Trạng thái: 
Đầu ra: 
186 
SHA-256 
Các thông số: 
Mở rộng thông báo: 
Giá trị khởi tạo: 
Bước mã hóa: 
Trạng thái: 
187 
Đầu ra: 
SHA-512 
Các thông số: 
Mở rộng thông báo: 
Giá trị khởi tạo: 
Bước mã hóa: 
188 
Trạng thái: 
Đầu ra: 
SHA-224 
SHA-224 giống với SHA-256 
Các thông số: 
189 
Giá trị khởi tạo: 
Đầu ra: 
Đầu ra hàm nén giống SHA-256, nhưng đầu ra hàm băm chỉ lấy 224 bit. 
SHA-384 
SHA-384 giống với SHA-512 
Các thông số: 
Giá trị khởi tạo: 
Đầu ra: 

File đính kèm:

  • pdfluan_an_nghien_cuu_xay_dung_mot_lop_ham_bam_mo_rong_moi_va_k.pdf
  • pdfTomtatLANCSNguyenToanThang.pdf
  • pdfTrang TTLA (TA) NCSNguyenToanThang.pdf
  • pdfTrang TTLA (TV) NCSNguyenToanThang.pdf