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.
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
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:
- luan_an_nghien_cuu_xay_dung_mot_lop_ham_bam_mo_rong_moi_va_k.pdf
- TomtatLANCSNguyenToanThang.pdf
- Trang TTLA (TA) NCSNguyenToanThang.pdf
- Trang TTLA (TV) NCSNguyenToanThang.pdf