Luận án Về một phương pháp xây dựng hàm băm cho việc xác thực trên cơ sở ứng dụng thuật toán mã hóa đối xứng
Trong sự phát triển của xã hội loài người, kể từ khi có sự trao đổi thông tin,
thì an toàn thông tin trở thành một nhu cầu gắn liền với nó. Từ thủa sơ khai, an
toàn thông tin được hiểu đơn giản là giữ bí mật và điều này được xem như một
nghệ thuật chứ không phải là một ngành khoa học. Với sự phát triển của khoa học
kỹ thuật và công nghệ, cùng với các nhu cầu đặc biệt có liên quan tới an toàn thông
tin, ngày nay cần có các yêu cầu kỹ thuật đặc biệt trong việc đảm bảo an toàn
thông tin, các kỹ thuật đó bao gồm: Kỹ thuật mật mã (Cryptography); kỹ thuật
ngụy trang (Steganography); kỹ thuật tạo bóng mờ (Watermarking – hay thủy
vân).
Hiện nay việc trao đổi thông tin thương mại trên Internet có nhiều nguy cơ
không an toàn do thông tin có thể bị lộ hay bị sửa đổi. Nói chung, để bảo vệ các
thông tin khỏi sự truy cập trái phép cần phải kiểm soát được những vấn đề như:
thông tin được tạo ra, lưu trữ và truy nhập như thế nào, ở đâu, bởi ai và vào thời
điểm nào.
Để giải quyết các vấn đề trên, kỹ thuật mật mã hiện đại phải đảm bảo các dịch vụ
an toàn cơ bản: (1) bí mật (Confidential); (2) xác thực (Authentication); (3) đảm bảo tính
toàn vẹn (Integrity), và để thực hiện các nhiệm vụ này người ta sử dụng hàm băm mật mã
(Cryptographic Hash Function).
Tóm tắt nội dung tài liệu: Luận án Về một phương pháp xây dựng hàm băm cho việc xác thực trên cơ sở ứng dụng thuật toán mã hóa đối xứng
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 số liệu và kết quả trình bày trong luận án là trung thực và chưa được công bố ở bất kỳ công trình nào khác. Tác giả Hồ Quang Bửu ii LỜI CẢM ƠN Luận án Tiến sĩ kỹ thuật này được thực hiện tại Học viện Công nghệ Bưu chính Viễn thông. Tác giả xin tỏ lòng biết ơn đến thầy giáo GS.TSKH. Nguyễn Xuân Quỳnh đã trực tiếp định hướng, tạo mọi điều kiện trong suốt quá trình nghiên cứu. Tác giả cũng xin cảm ơn GS.TS. Nguyễn Bình đã trực tiếp hướng dẫn học thuật hóa, kiểm tra những kết quả của các công trình nghiên cứu. Tôi xin chân thành cảm ơn Lãnh đạo Học viện Công nghệ Bưu chính Viễn thông đã tạo những điều kiện thuận lợi để hoàn thành và bảo vệ luận án trong thời gian nghiên cứu của nghiên cứu sinh. Tôi xin cảm ơn khoa Quốc tế và Đào tạo sau đại học, Sở Thông tin truyền thông tỉnh Quảng Nam (nơi tôi đang công tác), cũng như các đồng nghiệp đã tạo điều kiện và 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è đã thông cảm, động viên giúp đỡ cho tôi có đủ nghị lực để hoàn thành luận án. Hà nội, tháng 12 năm 2013 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Ẽ ................................................................................. ix PHẦN MỞ ĐẦU ...................................................................................................... 1 1. MỞ ĐẦU ....................................................................................................... 1 2. TÌNH HÌNH NGHIÊN CỨU ......................................................................... 1 3. LÝ DO CHỌN ĐỀ TÀI ................................................................................. 4 4. MỤC TIÊU NGHIÊN CỨU .......................................................................... 4 5. ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU .................................................... 5 6. PHƯƠNG PHÁP NGHIÊN CỨU ................................................................. 5 7. Ý NGHĨA KHOA HỌC VÀ THỰC TIÊN CỦA ĐỀ TÀI ............................ 5 CHƯƠNG 1. TỔNG QUAN VỀ MẬT MÃ HỌC .................................................. 6 1.1. CÁC KHÁI NIỆM CƠ BẢN ......................................................................... 6 1.2. CÁC HỆ MẬT KHÓA BÍ MẬT .................................................................... 8 1.2.1. Sơ đồ khối chức năng hệ mật khóa bí mật .................................... 8 1.2.2. Các hệ mật thay thế ....................................................................... 8 1.2.3. Các hệ mật hoán vị (MHV) ......................................................... 11 1.2.4. Các hệ mật mã tích ...................................................................... 12 1.2.5. Các hệ mật mã dòng và việc tạo các dãy giả ngẫu nhiên ............ 15 1.2.6. Chuẩn mã dữ liệu DES ................................................................ 26 1.2.7. Ưu nhược điểm của mật mã khóa bí mật ..................................... 29 iv 1.3. HỆ MẬT KHÓA CÔNG KHAI ................................................................... 30 1.3.1. Sơ đồ chức năng .......................................................................... 30 1.3.2. Một số bài toán xây dựng hệ mật khóa công khai ....................... 31 1.4. CƠ BẢN VỀ HÀM BĂM ............................................................................ 33 1.4.1. Mở đầu ......................................................................................... 33 1.4.2. Các định nghĩa và tính chất cơ bản.............................................. 35 1.4.3. Một số phương pháp xây dựng hàm băm .................................... 37 1.4.4. Các loại tấn công hàm băm cơ bản .............................................. 41 1.4.5. Độ an toàn mục tiêu ..................................................................... 43 1.5. TÍNH TOÀN VẸN CỦA DỮ LIỆU VÀ XÁC THỰC THÔNG BÁO........ 44 1.5.1. Các phương pháp kiểm tra tính toàn vẹn dữ liệu ........................ 44 1.5.2. Chữ ký số ..................................................................................... 46 1.6. KẾT LUẬN CHƯƠNG 1............................................................................. 49 CHƯƠNG 2. HỆ MẬT XÂY DỰNG TRÊN CÁC CẤP SỐ NHÂN CYCLIC .. 50 2.1. NHÓM NHÂN CYCLIC TRÊN VÀNH ĐA THỨC .................................. 50 2.1.1. Định nghĩa nhóm nhân cyclic trên vành đa thức ......................... 50 2.1.2. Các loại nhóm nhân cyclic trên vành đa thức.............................. 52 2.2. CẤP SỐ NHÂN CYCLIC TRÊN VÀNH ĐA THỨC ................................. 54 2.2.1. Khái niệm về cấp số nhân cyclic trên vành đa thức .................... 54 2.2.2. Phân hoạch vành đa thức ............................................................. 55 2.3. XÂY DỰNG M-DÃY LỒNG GHÉP TRÊN VÀNH ĐA THỨC CÓ HAI LỚP KỀ CYCLIC ....................................................................................... 61 2.3.1. Vành đa thức có hai lớp kề .......................................................... 61 2.3.2. M-dãy xây dựng trên vành đa thức .............................................. 63 2.3.3. Xây dựng M-dãy lồng ghép từ các cấp số nhân cyclic trên vành đa thức có hai lớp kề ...................................................................................... 64 v 2.4. HỆ MẬT XÂY DỰNG TRÊN CÁC CẤP SỐ NHÂN CYCLIC ................ 71 2.4.1. Vấn đề mã hóa ............................................................................. 71 2.4.2. Xây dựng hệ mật dùng cấp số nhân cyclic .................................. 76 2.5. KẾT LUẬN CHƯƠNG 2 ............................................................... 82 CHƯƠNG 3. HÀM BĂM XÂY DỰNG TRÊN CẤP SỐ NHÂN CYCLIC ....... 83 3.1. CÁC HÀM BĂM HỌ MD4 ........................................................... 83 3.1.1. Cấu trúc........................................................................................ 83 3.1.2. Mở rộng thông báo ...................................................................... 87 3.1.3. Các bước mã hóa ......................................................................... 89 3.2. XÂY DỰNG HÀM BĂM MỚI TRÊN CÁC CẤP SỐ NHÂN CYCLIC ... 94 3.2.1. Sơ đồ khối mật mã trong hàm băm.............................................. 94 3.2.2. Các đánh giá kết quả mô phỏng hàm băm mới ......................... 100 3.3. KẾT LUẬN CHƯƠNG 3........................................................................... 101 KẾT LUẬN VÀ KIẾN NGHỊ .............................................................................. 102 DANH MỤC CÁC CÔNG TRÌNH CÓ LIÊN QUAN ĐẾN LUẬN ÁN ........... 104 TÀI LIỆU THAM KHẢO .................................................................................... 105 PHỤ LỤC A: THÔNG SỐ CỦA MỘT SỐ HÀM BĂM .................................... 109 PHỤ LỤC B: CÁC CHƯƠNG TRÌNH TÍNH TOÁN VÀ MÔ PHỎNG ........... 122 vi DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT AES Advanced Encryption Standard ANSI American National Standards Institute CAST Carlisle Adams and Stafford Tavares CBC Cipher Block Chaining CFB Cipher Feedback Block CGP Cấp số nhân cyclic (Cyclic Geometic Progressions) CMG Nhóm nhân cyclic (Cyclic Multiplicate Group) CRC Cyclic Redundancy Check CRF Collision Resistant Function CRHF Collision Resistant Hash Function S C Chu trình 0 d Khoảng cách Hamming deg Bậc của đa thức (Degree) DEA Data Encryption Algorithm DES Chuẩn mã dữ liệu (Data Encryption Standard) ( )e x Đa thức lũy đẳng ECB Electronic Codebook F Trường (Field) G Nhóm (Group) GF(p) Trường đặc số p h Hàm băm (Hash) I Ideal IDEA International Data Encryption Algorithm IV Initial Value MAC Message Authentication Code MDC Manipulation Detection Code MD-x Message Digest x NESSIE New European Schemes for Signatures, Integrity and Encryption vii NIST National Institute for Standards and Technology (US) OFB Output Feedback ord Cấp của đa thức (Order) OWF One-Way Function OWHF One-Way Hash Function R Vành (Ring) RIPE Race Integrity Primitives Evaluation RSA Rivest Shamir Adleman SHA Secure Hash Algorithm TDEA Triple Data Encryption Algorithm UOWHF Universal One-Way Hash Function VEST Very Efficient Substitution Transposition W Trọng số (Weight) 2[ ]/ 1 nx x Z Vành đa thức trên 2GF viii DANH MỤC CÁC BẢNG Bảng 1. Một số hàm băm ......................................................................................... 3 Bảng 1.1. Trạng thái của các vector đầu ra M-dãy ................................................ 22 Bảng 1.2. Các đặc tính của dãy tuyến tính có chu kỳ 2m-1 .................................... 26 Bảng 1.3. Bảng IP và IP-1 ....................................................................................... 28 Bảng 1.4. Độ an toàn mục tiêu của hàm băm ......................................................... 43 Bảng 2.1. Số kiểu phân hoạch không suy biến M của một số vành ....................... 57 Bảng 2.2. Tổng số các kiểu phân hoạch của vành 2[ ]/ 1 nx x Z ........................... 58 Bảng 2.3. M-dãy xây dựng trên vành 152[ ] / 1x x Z .................................................. 63 Bảng 2.4. Các tam thức cấp cực đại 4095 (32.5.7.13) trên vành x13 + 1 ................ 68 Bảng 2.5. Một số phần tử của M-dãy trên vành x13+1 ........................................... 69 Bảng 2.6. M-dãy với chiều dài 4095 theo phân hoạch cực đại .............................. 69 Bảng 2.7. Số lượng M-dãy lồng ghép với một vài giá trị n khác nhau .................. 70 Bảng 2.8. Bảng hoán vị ban đầu (IP) ..................................................................... 78 Bảng 2.9. Bảng hoán vị đảo (IP-1) .......................................................................... 78 Bảng 2.10. Khoảng cách Hamming dH(C1,Ci) giữa các cặp bản mã khi các bản rõ khác nhau 1 bit, dH(M1,Mi) = 1, với cùng một khóa K ................................... 80 Bảng 2.11. Khoảng cách Hamming dH(C1,Ci) giữa các cặp bản mã khi các khóa khác khóa K1 2 bit dH(K1, Ki)=2 với cùng một bản rõ M ............................... 81 Bảng 3.1. Thông số của các hàm băm họ MD4 ..................................................... 85 Bảng 3.2. Ký hiệu các thông số và các biến ........................................................... 86 Bảng 3.3. Khoảng cách Hamming dH(MD1, MDi) khi các khối dữ liệu khác khối ban đầu 1 bit ................................................................................................... 97 Bảng 3.4. 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. ................................................................................. 99 Bảng 3.5. Tính khoảng cách Hamming trung bình khi thay đổi khóa K và thay đổi bản tin rõ. ...................................................................................................... 100 ix 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 ............................................... 8 Hình 1.2. M-dãy tạo từ thanh ghi dịch phản hồi tuyến tính LFSR ........................ 22 Hình 1.3. Mạch tạo M-dãy từ đa thức g(x) = 1+x+x 4 ........................................... 23 Hình 1.4. Bộ tạo dãy Gold đối với g1(d) = d 3 + d +1 và g2(d) = d 3 + d 2 +1............ 24 Hình 1.5. Sơ đồ mã hóa DES ................................................................................. 27 Hình 1.6. Mô tả hàm f trong DES .......................................................................... 28 Hình 1.7. Các bước tạo khóa cho các vòng mã hóa của DES ................................ 29 Hình 1.8. Sơ đồ khối chức năng hệ mật khóa công khai ........................................ 30 Hình 1.9. Phân loại hàm băm ................................................................................. 36 Hình 1.10. Các sơ đồ hàm băm đơn a) Matyas-Mayer–Oseas; b) Davies-Mayer và c) Miyaguchi – Preneel ...................................... 37 Hình 1.11. Thuật toán MDC-2 ............................................................................... 39 Hình 1.12. Thuật toán MDC-4 ............................................................................... 40 Hình 1.13. Sơ đồ Miyaguchi – Preneel .................................................................. 41 Hình 1.14. Kiểm tra tính toàn vẹn bằng MAC ....................................................... 45 Hình 1.15. Kiểm tra tình toàn vẹn dùng MDC và thuật toán mã hóa .................... 45 Hình 1.16. Kiểm tra tính toàn vẹn dùng MDC và kênh an toàn ............................ 46 Hình 1.17. Quá trình tạo chữ ký số và kiểm tra chữ ký số ..................................... 47 Hình 1.18. Sơ đồ chữ ký số dùng RSA .................................................................. 47 Hình 1.19. Sơ đồ chữ ký số dùng RSA và có bảo mật thông báo .......................... 48 Hình 2.1. Mã hóa và giải mã xây dựng trên cấp số nhân cyclic ............................ 71 Hình 2.2. Sơ đồ thiết bị mã hoá .............................................................................. 75 Hình 2.3. Sơ đồ thiết bị giải mã ............................................................................. 75 Hình 2.4. Sơ đồ mạng thay thế Feistel ................................................................... 76 Hình 2.5. Sơ đồ mã hóa khối E .............................................................................. 77 Hình 2.6. Sơ đồ khối mã hóa , với khóa 4 51 1K x x ..................................... 79 Hình 3.1. Tương tác giữa mở rộng thông báo và các thao tác bước ...................... 83 Hình 3.2. Một bước mã hóa của MD5 ................................................................... 92 Hình 3.3. Sơ đồ thực hiện hàm băm ....................................................................... 95 Hình 3.4. Sơ đồ bộ mã hóa khóa E với khóa K1 .................................................... 95 1 PHẦN MỞ ĐẦU 1. MỞ ĐẦU Trong sự phát triển của xã hội loài người, kể từ khi có sự trao đổi thông tin, thì an toàn thông tin trở thành một nhu cầu gắn liền với nó. Từ thủa sơ khai, an toàn thông tin được hiểu đơn giản là giữ bí mật và điều này được xem như một ... sactions on Information Theory, Volume 48, Issue 9, Sept. 2002 Page(s): 2524 - 2539 107 [23]. Magnus Daum (2005), “Cryptanalysis of Hash Functions of the MD4- Family”, Dissertation zur Erlangung des Grades eines Doktor der Naturwissenschaften der Ruhr-UniversitÄat Bochum am Fachbereich Mathematik vorgelegt von Magnus Daum unter der Betreuung von Prof. Dr. Hans Dobbertin Bochum, Mai 2005. [24]. Markku-Juhani Olavi Saarinen (2009), “Cryptanalysis of Dedicated Crypto- graphic Hash Functions”, Thesis submitted to The University of London for the degree of Doctor of Philosophy. Department of Mathematics Royal Holloway, University of London, 2009. [25]. Menezes A. J, Van Oorchot P. C. (1998), Handbook of Applied Cryptography, CRC Press, (1998). [26]. Michal Rjaˇ sko (2008), “Properties of Cryptographic Hash Functions”, Comenius University in Bratislava, Faculty of Mathematics, Physics and Informatics Department of Computer Science, Advisor: RNDr. Martin Stanek, PhD. Bratislava 2008. [27]. Paul J. McCarthy (1996), Algebraic Extensions of Fields, Blaisdell Publishing Company. [28]. Pascal JUNOD (2004), “Statiscal Cryptanalysis of Block Ciphers”, Thèse No 3179 (2004), Présentée à La Faculté Informatique & Communications, Institud de Systèmes de Communications. [29]. Preneel, B.; Govaerts, R.; Vandewalle, J., “Hash functions for information authentication”, CompEuro'92. Computer Systems and Software En- gineering', Proceedings. 4-8 May 1992 Page(s):475 – 480. [30]. Rudolf Lidl, Harald Neiderreiter (1983), Finite Fields, Addision-Wesley Publishing Company. [31]. Schneier B. (1996), Applied Cryptography, John Wiley Press, 1996. [32]. Stallings W. (2000), “Networks Security Essentials: Applications and Standards”, Prentice Hall, (2000). [33]. Stinson D. R. (1995), Cryptography: Theory and Practice, CRC Press, 1995. [34]. Shamir A. (1985), “Identity-based cryptorytions and signature schemes, Advanced in Cryptology” - CRYPTO'84, LNCS196, Springer_Verlag, pp.47-53, 1985 108 [35]. Shannon C. E. (1948), A mathematical theory of communication, Bell Syst Tech J. [36]. Todd K. Moon (2005), Error Correction Coding, Wiley-Interscience, a John Wiley & Sons, Inc., Publication. [37]. Message authentication with one-way hash functions, INFOCOM’92. Eleventh Annual Joint Conference of the IEEE Computer and Communications Societies. IEEE, 4-8 May 1992 Page(s): 2055 - 2059 vol.3. 109 PHỤ LỤC A: THÔNG SỐ CỦA MỘT SỐ HÀM BĂM Phụ lục này trình bày các thông số của các hàm nén sử dụng trong các hàm băm họ MD4. Với mỗi hàm, đầu tiên là các mô tả về các thông số, ví dụ độ dài mã băm đầu ra n , độ dài đầu ra hàm nén m , số lượng các thanh ghi r , số bước mã hóa s , độ dài của một từ w, số lượng các từ thông báo t được tách từ thông báo ban đầu có chiều dài l . Khi mô tả mở rộng thông báo, có các phép hoán vị k khác nhau nếu phép mở rộng theo kiểu hoán vị vòng, còn nếu mở rộng theo kiểu đệ quy thì sử dụng iW . Khi mô tả các bước mã hóa sử dụng các công thức cho bước mã hóa, ví dụ tính iR từ 1,..., ,i i r iR R W cùng với các bảng các phần của các bước độc lập. Một số hàm có thay đổi nhỏ trong các thanh ghi khác với tính toán theo công thức đa cho, sử dụng ký hiệu ( ,...)iR để mô tả giá trị thực tế của r thanh ghi sau bước i , và được gọi là trạng thái. Trong trường hợp tính toán song song hai luồng, ký hiệu LiR là cho luồng bên trái và R iR là cho luồng bên phải. Các giá trị khởi tạo ký hiệu là ,...,r lR R . 110 MD4 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: 111 MD5 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: 112 MD4 mở rộng 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: 113 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: Trạng thái: Đầu ra: 114 RIPEMD-128 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: 115 RIPEMD-160 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: 116 RIPEMD-256 Giống RIPEMD-128 Các thông số: 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). Đầu ra: 117 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: 118 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: Đầu ra: 119 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: 120 Trạng thái: Đầu ra: SHA-224 SHA-224 giống với SHA-256 Các thông số: 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. 121 SHA-384 SHA-384 giống với SHA-512 Các thông số: Giá trị khởi tạo: Đầu ra: 122 PHỤ LỤC B: CÁC CHƯƠNG TRÌNH TÍNH TOÁN VÀ MÔ PHỎNG 1. Hàm tính hoán vị IP và IP-1 128 bit function A=IP128(ax,flag) % Hoan vi va hoan vi nguoc 128 bit % % Cu phap: A = IP128(AX,FLAG) % AX 128 bit thong tin vao % A 128 bit thong tin ra % FLAG = 1 --> Hoan vi thuan % FLAG = -1 --> Hoan vi nguoc IP= [[122:-8:2] [124:-8:4] [126:-8:6] [128:-8:8] [121:-8:1] [123:-8:3] [125:-8:5] [127:-8:7]]; IPI = [[80:-1:65] [16:-1:1] [96:-1:81] [32:-1:17] [112:-1:97] [48:-1:33] [128:-1:113] 123 [64:-1:49]]; IP = reshape(IP',1,128); IPI = reshape(IPI,1,128); switch flag case 1 for ii=1:128 A(ii)=ax(IP(ii)); end case -1 for ii=1:128 A(ii)=ax(IPI(ii)); end otherwise A='Khong hop le'; return; end % ---------- end of file ---------- 2. Hàm tính các phần tử của cấp số nhân cyclic trên vành có 2 lớp kề function ketquabin = CGP2LK(ax,px,s,n); % tim cap so nhan cho vanh co 2 lop ke Cyclic % cu phap: KQBIN = CGP2LK(ax,px,s,n); % ax la da thuc dau, dang BIN % px la cong boi,dang BIN % KQBIN --> ket qua dang BIN % s --> so phan tu % n --> vanh da thuc X^n + 1 (n la so nguyen to) %-------------------------------- ax(length(ax)+1:n)=0; px(length(px)+1:n)=0; 124 kq=nhandathuc(ax,px,n); %-------------------------- for jj=2:s tg=nhandathuc(kq(jj-1,:),px,n); kq=[kq;tg]; end ketquabin=kq; % ---------- end of file ------------------------ + Hàm nhân hai đa thức dạng nhị phân function kq= nhandathuc(x,y,n); % Cu phap KQ = NHANDATHUC(X,Y,n); % X, Y la vec to nhi phan, la he so cua da thuc. % KQ --> ket qua dang BINVEC % n --> vanh da thuc: X^n + 1 dx=length(x); dy=length(y); if dx <= n x((dx+1):n)=0; else disp('Do dai vuot qua n'); kq=[]; return; end if dy <= n y((dy+1):n)=0; else disp('Do dai vuot qua n'); kq=[]; return; 125 end; somu=0; tg=[]; for jj=1:dx if x(jj)==1 somu=somu+1; tg(somu,:)=shift(y,jj-1); end end stg=size(tg); if stg(1)==1 kq=tg; else kq=sum(tg); kq=mod(kq,2); end + Hàm chuyển đổi đa thức dạng số mũ sang dạng nhị phân function kq=pol2bin(ax); % Chuyen tu so mu da thuc ax thanh dang vecto nhi phan % % Cu phap: KQ= POL2BIN(ax); % AX: la da thuc dang POL, % n: Vanh da thuc X^n+1; % KQ la da thuc dang BINVEC m=max(ax); kq=zeros(1,m+1); for jj=1:length(ax) vt=ax(jj); kq(vt+1)=1; end 126 3. Hàm tính các phần tử của cấp số nhân cyclic trên vành 2 1 k x function ketquabin = CGPC(ax,px,n); % Tim cap so nhan cho vanh chan dang: X^n+1 Voi n=2^k % cu phap: KQBIN = CGPC(ax,px,n); % ax la da thuc dau, dang BIN % px la cong boi,dang BIN % KQBIN --> ket qua dang BIN %-------------------------------- ax(length(ax)+1:n)=0; px(length(px)+1:n)=0; kq=ax; %-------------------------- for jj=2:n tg=nhandathuc(kq(jj-1,:),px,n); kq=[kq;tg]; end ketquabin=kq; % ---------- end of file ------------------------ 4. Chương trình mã hóa hệ mật đề xuất % Xay dung he mat DES tren cac cap so nhan cyclic % He mat xay dung cho chuoi 128 bit theo so do Feistel % Phep hoan vi va hoan vi dao lay theo tieu chuan DES % Khoa K la nhom nhan xay dung tren vanh X^61+1, % voi phan tu sinh la kx % Qua trinh ma hoa va giai ma trai qua 16 buoc theo tieu chuan DES %---------- Chuan bi du lieu ------------------------- clear; nmsg = 1; % So chuoi 128 bit thong tin can mo phong = so bo khoa 127 msg=[]; for ii=0:15 tg=dec2binvec(ii,4); msg=[msg;tg]; end msg=[msg;msg]; msg=reshape(msg',1,128); fprintf('Ban ro dau vao: M = %s\n',bin2hex(msg)); %----------- Tinh toan khoa K----------------------------- nK = nmsg*16; % Tong so khoa Ki=pol2bin( [0 10 30 40 50 ]); % Phan tu sinh cua khoa Ka=pol2bin([0 1 3]); K = cgp2lk(Ka,Ki,nK,61); % Tap cac khoa (CGP tren Vanh X^61+1) %&&&&&&&&&&&&&&&&& Qua trinh ma hoa &&&&&&&&&&&&&&&&&&&&&& for ii=1:nmsg %------------- Hoan vi khoi dau------------------------ M0 = IP128(msg,1); % Hoan vi khoi dau L(1,:) = M0(1:64); % Nua trai L0 R(1,:) = M0(65:128); % Nua phai R0. Fk=[]; %------- 16 buoc mat ma -------------------------------- for jj = 1:16 L(jj+1,:)=R(jj,:); ttk = 16*(ii-1); % Thu tu bo khoa dung cho moi vong AK = cgpc(K(ttk+jj,:),[0 1],64); % Ma tran A cua khoa thu jj AK=AK'; % Hoan vi ma tran A F=R(jj,:)*AK; % Nua phai sau khi nhan voi khoa R(jj+1,:) = mod(L(jj,:)+F,2); % Nua phai sau buoc jj end L16 = L(17,:); % Nua trai sau buoc 16 R16 = R(17,:); % Nua phai sau buoc 16 128 %------- Hoan vi dao ------------------------ C16 = [L16 R16]; C = IP128(C16,-1); % Du lieu ra end % &&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 5. Chương trình tính toán hàm băm đề xuất function MD=bamcgp(x,Ka,Ki) % Thuc hien ham bam theo so do Matyas-Meyer-Oseas % Cu phap: MD = bamcgp(msg,Ka,Ki) % MD: Dau ra ma bam 128 bit % msg: Ban tin ro dau vao % Ka: Phan tu dau cua cap so nhan tao khoa dau tien % Ki: Phan tu sinh cua cap so nhan tao khoa dau tien %------- Tao cac khoi n bit cua dau vao x------------- msg=x; sox = length(msg); while mod(sox,128)~=0 msg=[msg 0]; % Chen them bit "0" cho du chieu dai 128 bit sox=length(msg); end if sox == 128 flag=0; msg(129:256)=zeros(1,128); else flag=1; end t=length(msg)/128; msg=reshape(msg,128,t); % Chia thanh cac khoi 128 bit msg=msg'; 129 %------------ Tinh toan buoc dau tien ------------------- K = cgp2lk(Ka,Ki,16,61); % Tao tap khoa dau M = IP128(msg(1,:),1); % Hoan vi khoi dau L(1,:) = M(1:64); % Nua trai L0 R(1,:) = M(65:128); % Nua phai R0. %------- 16 buoc mat ma khoi -------------------------------- for jj = 1:16 L(jj+1,:)=R(jj,:); L(jj+1,1:61)=mod(L(jj+1,1:61)+K(jj,:),2); % Nhan nua phai voi Ki AK = cgpc(K(jj,:),[0 1],64); % Ma tran A cua khoa thu jj AK=AK'; % Hoan vi ma tran A F=R(jj,:)*AK; % Nua phai sau khi nhan voi khoa R(jj+1,:) = mod(L(jj,:)+F,2); % Nua phai sau buoc jj end L16 = L(17,:); % Nua trai sau buoc 16 R16 = R(17,:); % Nua phai sau buoc 16 E = IP128([L16 R16],-1); % Hoan vi dao - Du lieu bam sau buoc 1 %-------- tao khoa cho buoc tiep theo ---------------- Htg = xor(msg(1,:),E); % E + msg Ktg=Htg(1:2:120); % Lay 60 bit Wk=mod(sum(Ktg),2); % Kiem tra tinh chan le if Wk==1 H(1,:)=[Ktg 0]; % trong so le --> bit 61 = 0 else H(1,:)=[Ktg 1]; % trong so chan --> bit 61 = 1 end % ------------------- Cac buoc tiep theo ------------------- for ii=1:t-1 K=cgp2lk(Ka,H(ii,:),16,61); % Tao khoa M = IP128(msg(ii+1,:),1); % Hoan vi khoi dau L(1,:) = M(1:64); % Nua trai L0 130 R(1,:) = M(65:128); % Nua phai R0. %------- 16 buoc mat ma khoi -------------------------------- for jj = 1:16 L(jj+1,:)=R(jj,:); L(jj+1,1:61)=mod(L(jj+1,1:61)+K(jj,:),2); % Nhan nua phai voi Ki AK = cgpc(K(jj,:),[0 1],64); % Ma tran A cua khoa thu jj AK=AK'; % Hoan vi ma tran A F=R(jj,:)*AK; % Nua phai sau khi nhan voi khoa R(jj+1,:) = mod(L(jj,:)+F,2); % Nua phai sau buoc jj end L16 = L(17,:); % Nua trai sau buoc 16 R16 = R(17,:); % Nua phai sau buoc 16 Ei = IP128([L16 R16],-1); % Hoan vi dao - Du lieu bam sau buoc ii %-------- tao khoa cho buoc tiep theo ---------------- Htg = xor(msg(ii+1,:),Ei); % E + msg Ktg=Htg(1:2:120); % Lay 60 bit Wk=mod(sum(Ktg),2); % Kiem tra tinh chan le if Wk==1 H(ii+1,:)=[Ktg 0]; % trong so le --> bit 61 = 0 else H(ii+1,:)=[Ktg 1]; % trong so chan --> bit 61 = 1 end end % ------------------- Gia tri bam cuoi cung ------------------- switch flag case 0 MD=E; case 1 MD=Ei; otherwise MD='Khong xac dinh'; 131 End % ----------- end of file ---------------- 6. Chương trình tính toán độ khuếch tán của hàm băm đề xuất %---------- Chuan bi du lieu ------------------------- clear; nmsg = 10; % So chuoi 128 bit thong tin can tinh = so bo khoa msg=[]; for ii=0:15 tg=dec2binvec(ii,4); msg=[msg;tg]; end msg=[msg;msg]; msg=msg'; msg(1,:)=reshape(msg,1,128); %msg1: 0123456789ABCDEF0123456789ABCDEF for jj=2:10 msg(jj,:) = rand(1,128); end; %----------- Tinh toan khoa K----------------------------- nK = nmsg*16; % Tong so khoa Ki=pol2bin([ 0 1 3 7 9]); % Phan tu sinh cua khoa Ka=pol2bin([0 1 2]); % Phan tu dau cua cap so nhan K %--------- Ma hoa ban tin dau tien --------------- E1=descgp(msg(1,:),Ka,Ki); % Ma ra khi chua thay bit du lieu msc=msg; % du lieu vao ban dau disp('Ket qua khi thay doi 1 bit du lieu'); disp(' Thu tu Ban ro Ban ma K/C Hamming'); msghex=bin2hex(msg(1,:)); Cihex=bin2hex(E1); fprintf('%5d %45s %45s %15d\n',0,msghex,Cihex,0); 132 sohm=0; % Tinh khoang cach Hamming % thay doi 1 bit thong tin dau vao va tinh gia tri bam for p=0:31 msg=msc; vt=round(4*rand(1)); % Thay doi ngau nhien 1 bit cua 1 so HEX if vt==0 vt=1; end posit=p*4+vt; %Vi tri bit thay doi msg(1,posit)=xor(msg(1,posit),[1]); %------------------------------------------ E=descgp(msg,Ka,Ki); hm=sum(xor(E1,E)); % Tinh so bit sai khac, khoang cach Hamming %********************** Hien thi ket qua *************************** msghex=bin2hex(msg); Cihex= bin2hex(E); fprintf('%5d %45s %45s %15d\n',p+1,msghex,Cihex,hm); sohm=sohm+hm; end fprintf('Khoang cach Hamming trung binh: %6.2f\n',sohm/32); %--------------- End of file ---------------------------------------
File đính kèm:
- luan_an_ve_mot_phuong_phap_xay_dung_ham_bam_cho_viec_xac_thu.pdf
- HQB Thong tin luan an dua len mang.pdf
- tom tat new 12.2013.pdf