Giáo trình Mật mã học (Phần 2)
Tóm tắt Giáo trình Mật mã học (Phần 2): ...ã gửi thì R đã đ−ợc xác thực đối với S .S gửi trả ( )NEX cho R . 7. Nếu R thu đ−ợc N đã gửi ở b−ớc 4 thì S đã đ−ợc xác thực đối với R . Sau khi Clipper đã hoμn thμnh việc trao đổi khóa, nó bắt đầu l−u chuyển thông báo với bên thu (mỗi thông báo có kèm Giáo trình Mật mã học 218 theo LEA...o ra một đầu ra có kích th−ớc đúng bằng kích th−ớc đầu vμo hoặc hơi lớn hơn một chút. (Một vector khởi tạo hoặc các bit độn lμm đầy đủ cho khối cuối cùng sẽ lμm tăng tối đa lμ một hoặc hai khối). Trong các thuật toán công khai, đầu ra có quan hệ với kích th−ớc đầu vμo nh−ng không nhất thiế...máy chủ. CSDL Máy chủ xác thực (AS) Máy chủ cấp thẻ (TGS) Cơ sở dữ liệu (3) Trạm làm việc nhắc nhở ng−ời dùng đ−a vào mật khẩu để giải mã thông tin tới rồi gửi thẻ và chứng chỉ xác thực có chứa tên ng−ời sử dụng, địa chỉ mạng và thời gian tới TGS Một lần với mỗi phiên đă...
0400L, 0#00000404L, 0#01000400L, 0#01000400L, 0#00000000L, 0#00010004L, 0#00010400L, 0#00000000L, 0#01010004L }; static unsigned long SP2[64] = { 0x80108020L, 0x80008000L, 0#00008000L, 0#00108020L, 0#00100000L, 0#00000020L, 0x80100020L, 0x80008020L, 0x80000020L, 0x80108020L, 0x80108000L, 0x80000000L, Phần Phụ lục 321 0x80008000L, 0#00100000L, 0#00000020L, 0x80100020L, 0#00108000L, 0#00100020L, 0x80008020L, 0#00000000L, 0x80000000L, 0#00008000L, 0#00108020L, 0x80100000L, 0#00100020L, 0x80000020L, 0#00000000L, 0#00108000L, 0#00008020L, 0x80108000L, 0x80100000L, 0#00008020L, 0#00000000L, 0#00108020L, 0x80100020L, 0#00100000L, 0x80008020L, 0x80100000L, 0x80108000L, 0#00008000L, 0x80100000L, 0x80008000L, 0#00000020L, 0x80108020L, 0#00108020L, 0#00000020L, 0#00008000L, 0x80000000L, 0#00008020L, 0x80108000L, 0#00100000L, 0x80000020L, 0#00100020L, 0x80008020L, 0x80000020L, 0#00100020L, 0#00108000L, 0#00000000L, 0x80008000L, 0#00008020L, 0x80000000L, 0x80100020L, 0x80108020L, 0#00108000L }; static unsigned long SP3[64] = { 0#00000208L, 0#08020200L, 0#00000000L, 0#08020008L, 0#08000200L, 0#00000000L, 0#00020208L, 0#08000200L, 0#00020008L, 0#08000008L, 0#08000008L, 0#00020000L, 0#08020208L, 0#00020008L, 0#08020000L, 0#00000208L, 0#08000000L, 0#00000008L, 0#08020200L, 0#00000200L, 0#00020200L, 0#08020000L, 0#08020008L, 0#00020208L, 0#08000208L, 0#00020200L, 0#00020000L, 0#08000208L, 0#00000008L, 0#08020208L, 0#00000200L, 0#08000000L, 0#08020200L, 0#08000000L, 0#00020008L, 0#00000208L, 0#00020000L, 0#08020200L, 0#08000200L, 0#00000000L, 0#00000200L, 0#00020008L, 0#08020208L, 0#08000200L, 0#08000008L, 0#00000200L, 0#00000000L, 0#08020008L, 0#08000208L, 0#00020000L, 0#08000000L, 0#08020208L, 0#00000008L, 0#00020208L, 0#00020200L, 0#08000008L, 0#08020000L, 0#08000208L, 0#00000208L, 0#08020000L, 0#00020208L, 0#00000008L, 0#08020008L, 0#00020200L }; static unsigned long SP4[64] = { 0#00802001L, 0#00002081L, 0#00002081L, 0#00000080L, 0#00802080L, 0#00800081L, 0#00800001L, 0#00002001L, 0#00000000L, 0#00802000L, 0#00802000L, 0#00802081L, 0#00000081L, 0#00000000L, 0#00800080L, 0#00800001L, 0#00000001L, 0#00002000L, 0#00800000L, 0#00802001L, 0#00000080L, 0#00800000L, 0#00002001L, 0#00002080L, 0#00800081L, 0#00000001L, 0#00002080L, 0#00800080L, 0#00002000L, 0#00802080L, 0#00802081L, 0#00000081L, 0#00800080L, 0#00800001L, 0#00802000L, 0#00802081L, 0#00000081L, 0#00000000L, 0#00000000L, 0#00802000L, Giáo trình Mật mã học 322 0#00002080L, 0#00800080L, 0#00800081L, 0#00000001L, 0#00802001L, 0#00002081L, 0#00002081L, 0#00000080L, 0#00802081L, 0#00000081L, 0#00000001L, 0#00002000L, 0#00800001L, 0#00002001L, 0#00802080L, 0#00800081L, 0#00002001L, 0#00002080L, 0#00800000L, 0#00802001L, 0#00000080L, 0#00800000L, 0#00002000L, 0#00802080L }; static unsigned long SP5[64] = { 0#00000100L, 0#02080100L, 0#02080000L, 0x42000100L, 0#00080000L, 0#00000100L, 0x40000000L, 0#02080000L, 0x40080100L, 0#00080000L, 0#02000100L, 0x40080100L, 0x42000100L, 0x42080000L, 0#00080100L, 0x40000000L, 0#02000000L, 0x40080000L, 0x40080000L, 0#00000000L, 0x40000100L, 0x42080100L, 0x42080100L, 0#02000100L, 0x42080000L, 0x40000100L, 0#00000000L, 0x42000000L, 0#02080100L, 0#02000000L, 0x42000000L, 0#00080100L, 0#00080000L, 0x42000100L, 0#00000100L, 0#02000000L, 0x40000000L, 0#02080000L, 0x42000100L, 0x40080100L, 0#02000100L, 0x40000000L, 0x42080000L, 0#02080100L, 0x40080100L, 0#00000100L, 0#02000000L, 0x42080000L, 0x42080100L, 0#00080100L, 0x42000000L, 0x42080100L, 0#02080000L, 0#00000000L, 0x40080000L, 0x42000000L, 0#00080100L, 0#02000100L, 0x40000100L, 0#00080000L, 0#00000000L, 0x40080000L, 0#02080100L, 0x40000100L }; static unsigned long SP6[64] = { 0x20000010L, 0x20400000L, 0#00004000L, 0x20404010L, 0x20400000L, 0#00000010L, 0x20404010L, 0#00400000L, 0x20004000L, 0#00404010L, 0#00400000L, 0x20000010L, 0#00400010L, 0x20004000L, 0x20000000L, 0#00004010L, 0#00000000L, 0#00400010L, 0x20004010L, 0#00004000L, 0#00404000L, 0x20004010L, 0#00000010L, 0x20400010L, 0x20400010L, 0#00000000L, 0#00404010L, 0x20404000L, 0#00004010L, 0#00404000L, 0x20404000L, 0x20000000L, 0x20004000L, 0#00000010L, 0x20400010L, 0#00404000L, 0x20404010L, 0#00400000L, 0#00004010L, 0x20000010L, 0#00400000L, 0x20004000L, 0x20000000L, 0#00004010L, 0x20000010L, 0x20404010L, 0#00404000L, 0x20400000L, 0#00404010L, 0x20404000L, 0#00000000L, 0x20400010L, 0#00000010L, 0#00004000L, 0x20400000L, 0#00404010L, 0#00004000L, 0#00400010L, 0x20004010L, 0#00000000L, 0x20404000L, 0x20000000L, 0#00400010L, 0x20004010L }; Phần Phụ lục 323 static unsigned long SP7[64] = { 0#00200000L, 0#04200002L, 0#04000802L, 0#00000000L, 0#00000800L, 0#04000802L, 0#00200802L, 0#04200800L, 0#04200802L, 0#00200000L, 0#00000000L, 0#04000002L, 0#00000002L, 0#04000000L, 0#04200002L, 0#00000802L, 0#04000800L, 0#00200802L, 0#00200002L, 0#04000800L, 0#04000002L, 0#04200000L, 0#04200800L, 0#00200002L, 0#04200000L, 0#00000800L, 0#00000802L, 0#04200802L, 0#00200800L, 0#00000002L, 0#04000000L, 0#00200800L, 0#04000000L, 0#00200800L, 0#00200000L, 0#04000802L, 0#04000802L, 0#04200002L, 0#04200002L, 0#00000002L, 0#00200002L, 0#04000000L, 0#04000800L, 0#00200000L, 0#04200800L, 0#00000802L, 0#00200802L, 0#04200800L, 0#00000802L, 0#04000002L, 0#04200802L, 0#04200000L, 0#00200800L, 0#00000000L, 0#00000002L, 0#04200802L, 0#00000000L, 0#00200802L, 0#04200000L, 0#00000800L, 0#04000002L, 0#04000800L, 0#00000800L, 0#00200002L }; static unsigned long SP8[64] = { 0x10001040L, 0#00001000L, 0#00040000L, 0x10041040L, 0x10000000L, 0x10001040L, 0#00000040L, 0x10000000L, 0#00040040L, 0x10040000L, 0x10041040L, 0#00041000L, 0x10041000L, 0#00041040L, 0#00001000L, 0#00000040L, 0x10040000L, 0x10000040L, 0x10001000L, 0#00001040L, 0#00041000L, 0#00040040L, 0x10040040L, 0x10041000L, 0#00001040L, 0#00000000L, 0#00000000L, 0x10040040L, 0x10000040L, 0x10001000L, 0#00041040L, 0#00040000L, 0#00041040L, 0#00040000L, 0x10041000L, 0#00001000L, 0#00000040L, 0x10040040L, 0#00001000L, 0#00041040L, 0x10001000L, 0#00000040L, 0x10000040L, 0x10040000L, 0x10040040L, 0x10000000L, 0#00040000L, 0x10001040L, 0#00000000L, 0x10041040L, 0#00040040L, 0x10000040L, 0x10040000L, 0x10001000L, 0x10001040L, 0#00000000L, 0x10041040L, 0#00041000L, 0#00041000L, 0#00001040L, 0#00001040L, 0#00040040L, 0x10000000L, 0x10041000L }; static void desfunc(block, keys) register unsigned long *block, *keys; { register unsigned long fval, work, right, leftt; register int round; leftt = block[0]; right = block[1]; work = ((leftt >> 4) ^ right) & 0#0f0f0f0fL; right ^= work; leftt ^= (work << 4); Giáo trình Mật mã học 324 work = ((leftt >> 16) ^ right) & 0#0000ffffL; right ^= work; leftt ^= (work << 16); work = ((right >> 2) ^ leftt) & 0x33333333L; leftt ^= work; right ^= (work << 2); work = ((right >> 8) ^ leftt) & 0#00ff00ffL; leftt ^= work; right ^= (work << 8); right = ((right > 31) & 1L)) & 0xffffffffL; work = (leftt ^ right) & 0xaaaaaaaaL; leftt ^= work; right ^= work; leftt = ((leftt > 31) & 1L)) & 0xffffffffL; for( round = 0; round < 8; round++ ) { work = (right > 4); work ^= *keys++; fval = SP7[ work & 0x3fL]; fval |= SP5[(work >> 8) & 0x3fL]; fval |= SP3[(work >> 16) & 0x3fL]; fval |= SP1[(work >> 24) & 0x3fL]; work = right ^ *keys++; fval |= SP8[ work & 0x3fL]; fval |= SP6[(work >> 8) & 0x3fL]; fval |= SP4[(work >> 16) & 0x3fL]; fval |= SP2[(work >> 24) & 0x3fL]; leftt ^= fval; work = (leftt > 4); work ^= *keys++; fval = SP7[ work & 0x3fL]; fval |= SP5[(work >> 8) & 0x3fL]; fval |= SP3[(work >> 16) & 0x3fL]; fval |= SP1[(work >> 24) & 0x3fL]; work = leftt ^ *keys++; fval |= SP8[ work & 0x3fL]; fval |= SP6[(work >> 8) & 0x3fL]; fval |= SP4[(work >> 16) & 0x3fL]; fval |= SP2[(work >> 24) & 0x3fL]; right ^= fval; } right = (right > 1); work = (leftt ^ right) & 0xaaaaaaaaL; leftt ^= work; right ^= work; leftt = (leftt > 1); Phần Phụ lục 325 work = ((leftt >> 8) ^ right) & 0#00ff00ffL; right ^= work; leftt ^= (work << 8); work = ((leftt >> 2) ^ right) & 0x33333333L; right ^= work; leftt ^= (work << 2); work = ((right >> 16) ^ leftt) & 0#0000ffffL; leftt ^= work; right ^= (work << 16); work = ((right >> 4) ^ leftt) & 0#0f0f0f0fL; leftt ^= work; right ^= (work << 4); *block++ = right; *block = leftt; return; } /* Validation sets: * * Single-length key, single-length plaintext - * Key : 0123 4567 89ab cdef * Plain : 0123 4567 89ab cde7 * Cipher : c957 4425 6a5e d31d * **********************************************************************/ void des_key(des_ctx *dc, unsigned char *key){ deskey(key,EN0); cpkey(dc->ek); deskey(key,DE1); cpkey(dc->dk); } /* Encrypt several blocks in ECB mode. Caller is responsible for short blocks. */ void des_enc(des_ctx *dc, unsigned char *data, int blocks){ unsigned long work[2]; int i; unsigned char *cp; cp = data; for(i=0;iek); unscrun(work,cp); cp+=8; } } void des_dec(des_ctx *dc, unsigned char *data, int blocks){ unsigned long work[2]; int i; Giáo trình Mật mã học 326 unsigned char *cp; cp = data; for(i=0;idk); unscrun(work,cp); cp+=8; } } void main(void){ des_ctx dc; int i; unsigned long data[10]; char *cp,key[8] = {0#01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}; char x[8] = {0#01,0x23,0x45,0x67,0x89,0xab,0xcd,0xe7}; cp = x; des_key(&dc,key); des_enc(&dc,cp,1); printf("Enc(0..7,0..7) = "); for(i=0;i<8;i++) printf("%02x ", ((unsigned int) cp[i])&0#00ff); printf("\n"); des_dec(&dc,cp,1); printf("Dec(above,0..7) = "); for(i=0;i<8;i++) printf("%02x ",((unsigned int)cp[i])&0#00ff); printf("\n"); cp = (char *) data; for(i=0;i<10;i++)data[i]=i; des_enc(&dc,cp,5); /* Enc 5 blocks. */ for(i=0;i<10;i+=2) printf("Block %01d = %08lx %08lx.\n", i/2,data[i],data[i+1]); des_dec(&dc,cp,1); des_dec(&dc,cp+8,4); for(i=0;i<10;i+=2) printf("Block %01d = %08lx %08lx.\n", i/2,data[i],data[i+1]); } thuật ngữ viết tắt DES Data Encryption Standard Chuẩn mã dữ liệu LAN Local Area Network Mạng cục bộ MDV Mã dịch vòng MTT Mã thay thế MHV Mã hoán vị ECB Electronic Code Book Chế độ quyển mã điện tử CFB Cripher Feedback Chế độ phản hồi mã CBC Cripher Block Chaining Chế độ liên kết khối mã RSA Rivest - Shamir - Adleman MAC Message Authentication Code Mã xác thực thông báo OWHF Oneway Hash Funtion Hàm băm một chiều CRHF Collision Resistant hash function Hàm băm khó va chạm MDC Manipulation Detection Code Mã phát hiện sự sửa đổi LSB Least Signification Bit Bit thấp nhất (có giá trị nhỏ nhất Header Tiêu đề IDEA International Data Encryption Algorithm Thuật toán mã hóa dữ liệu quốc tế PGP Pretty Good Privacy Thuật toán mã hóa PGP SET Secure Electronic Transaction Giao dịch điện tử an toàn LFSR Linear Feedback Sequence Register Thanh ghi hồi tiếp tuyến tính Firewall Bức t−ờng lửa Server Máy chủ Router Bộ định tuyến tμi liệu tham khảo [1] A. J. Menezes, P. C. Van Oorschot, S. A. Vanstone. Handbook of applied cryptography. CRC Press 1998. [2] B. Schneier. Applied Cryptography. John Wiley Press 1996. [3] D. R. Stinson. Cryptography. Theory and Practice. CRC Press 1995. [4] Nguyen Binh. Crypto-system based on Cyclic Goemetric Progresssions over polynomial ring (Part 1). Circulant crypto- system over polynomial ring (Part 2) 8th VietNam Conference on Radio and Electronics, 11-2002 [5] M. R. A. Huth. Secure Communicating Systems. Cambridge University Press 2001. [6] W. Stallings. Network Security Essentials. Applications and Standards. Prentice Hall. 2000. [7] C. Pfleeger. Security in Computing. Prentice Hall. 1997. [8] R. Needham, M. Schroeder. Using Encryption for Authentication in large Networks of Computers. Comm ACM, v21 n12, Dec 1978. [9] G. Simmons. Contemporary Cryptology. IEEE Press 1992. [10] S. Bellovir, M. Merritt. Encrypted Key Exchange. Proc. IEEE Symp. Security and Privacy IEEE Comp Soc Press 1992. [11] D. Denning, D. Branstad. A Taxonomy of Key Escrow Encryption Systems. Comm ACM, v39 n3, Mar 1996. [12] M. Blum. Coin flipping by Telephone. SIGACT News, 1981. [13] S. Even. A Randomizing Protocol for Signing Contracts. Comm ACM, v28 n6, Jun 1985. [14] R. Merkle, M. Hellman. On the security of Multiple Encryption. Comm ACM, v24 n7, July 1981. [15] W. Tuchman, Hellman Presents No Shortcut Solutions to the DES. IEEE Spectrum, v16 n7, Jun 1979. [16] A.Shamir. Identity-based cryptorytions and signature schemes. Advanced in Cryptology - CRYPTO'84, LNCS196 Springer_Verlag, pp.47-53, 1985 [17] E.Okamoto, K.Tanaka. Key distribution system based on identification information. IEEE J.Selected Areas in communications, Vol.7,pp.481-485, 1989. Mục lục Lời nói đầu ................................................................................................ 5 Phần I. Các kiến thức toán học phụ trợ Ch−ơng 1: Bổ túc về lý thuyết số .......................................................... 9 1.1. Số nguyên ....................................................................................... 9 1.2. Các thuật toán trong Z ................................................................. 12 1.3. Các số nguyên modulo n .............................................................. 15 1.4. Các thuật toán trong Zn ............................................................... 22 1.5. Các ký hiệu Legendre vμ Jacobi .................................................. 24 1.6. Các số nguyên Blum ..................................................................... 30 Bμi tập ................................................................................................. 31 Ch−ơng 2: Đại số trừu t−ợng ............................................................... 35 2.1. Nhóm .............................................................................................. 35 2.2. Vμnh ............................................................................................... 38 2.3. Tr−ờng ............................................................................................ 39 2.4. Vμnh đa thức .................................................................................. 41 Bμi tập ................................................................................................... 53 Phần II. Các thuật toán mật mã Ch−ơng 3: Mật mã cổ điển .................................................................. 57 3.1. Sơ đồ khối một hệ truyền tin mật ................................................. 57 3.2. Mật mã thay thế ............................................................................ 58 3.3. Mật mã hoán vị .............................................................................. 62 3.4. Mật mã Hill .................................................................................... 64 3.5. Hệ mật xây dựng trên các cấp số nhân xyclic trên vμnh đa thức .......................................................................... 70 3.6. Mã Affine ........................................................................................ 81 3.7. Các hệ mật mã tích ........................................................................ 88 3.8. Các hệ mã dòng .............................................................................. 92 3.9. Chuẩn mã dữ liệu .......................................................................... 98 Bμi tập ................................................................................................ 120 Ch−ơng 4: Mật mã khoá công khai .................................................. 127 4.1. Giới thiệu về mật mã khoá công khai ......................................... 127 4.2. Hệ mật RSA ................................................................................. 130 4.3. Hệ mật Rabin .............................................................................. 133 4.4. Hệ mật El Gamal ......................................................................... 136 4.5. Hệ mật Merkle - Hellman ........................................................... 138 4.6. Hệ mật Chor - Rivest................................................................... 141 4.7. Hệ mật Mc Elice .......................................................................... 147 4.8. Các hμm băm vμ tính toμn vẹn của dữ liệu ................................ 153 Bμi tập ................................................................................................. 172 Phần III. Các thủ tục vμ ứng dụng Ch−ơng 5: Các thủ tục vμ các chú ý trong thực tế khi sử dụng mã hoá ....................................................... 177 5.1. Các thủ tục: hμnh vi vμ thứ tự ................................................... 177 5.2. Các thủ tục để giải quyết vấn đề ................................................ 184 5.3. Sử dụng mã hoá nh− thế nμo...................................................... 242 5.4. Cải thiện độ mật của hệ mật ...................................................... 249 5.5. Các chế độ mã hoá ....................................................................... 259 5.6. Tóm l−ợc về các thủ tục vμ các ứng dụng thực tế ...................... 263 Bμi tập ................................................................................................. 265 Ch−ơng 6: Các chuẩn vμ áp dụng ..................................................... 267 6.1. Bảo mật th− điện tử sử dụng PGP ............................................. 267 6.2. Giao dịch điện tử an toμn (set) ................................................... 273 6.3. ứng dụng xác thực - Kerberos .................................................... 279 Bμi tập ................................................................................................. 286 Phần phụ lục Phụ lục 1: Lý thuyết thông tin trong các hệ mật .......................... 289 Phụ lục 2: Tạo số giả ngẫu nhiên ................................................... 311 Phụ lục 3: Mã nguồn DES .............................................................. 316 Thuật ngữ viết tắt ................................................................................ 327 Tμi liệu tham khảo .............................................................................. 329 giáo trình mật mã học Chịu trách nhiệm xuất bản L−u Đức Văn Chịu trách nhiệm bản thảo học viện công nghệ b−u chính viễn thông Biên tập : Đμo thị minh - bùi đức khánh Chế bản : Vũ Hồng Nhung Sửa bản in : bùi đức khánh Trình bày bìa : Bùi ngọc khoa (Giáo trình này đ−ợc ban hành theo Quyết định số 219/QĐ-QLNCKH ngày 29/4/2003 của Giám đốc Học viện Công nghệ B−u chính Viễn thông) nhμ xuất bản b−u điện Trụ sở : 18 Nguyễn Du, TP. Hà Nội Điện thoại : 04-9431283, 04-9432438 Fax: 04-9431285 E-mail : bientap@hn.vnn.vn Chi nhánh : 27 Nguyễn Bỉnh Khiêm, Quận I, TP. Hồ Chí Minh Điện thoại : 08-9100925 Fax: 08-9100924 E-mail : chinhanh-nxbbd@hcm.vnn.vn M∙ số: HV 01 HM 04 M∙ số: HV 01 HM 04 M∙ số: HV 01 HM 04 In 700 cuốn, khổ 16 x 24 cm tại Công ty In Khoa học kỹ thuật Số xuất bản: 1783/521/XB-QLXB do Cục Xuất bản cấp ngày 19/12/2003 In xong và nộp l−u chiểu tháng 02 năm 2004.
File đính kèm:
- giao_trinh_mat_ma_hoc_phan_2.pdf