{VERSION 5 0 "IBM INTEL NT" "5.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 256 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 260 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 263 "Genev a" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 264 "Geneva" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "T imes" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 } {PSTYLE "Heading 2" -1 4 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 2 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "T itle" 0 18 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 1 0 0 0 0 0 0 0 }3 0 0 -1 12 12 0 0 0 0 0 0 19 0 }{PSTYLE "Author" 0 19 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 8 8 0 0 0 0 0 0 -1 0 } {PSTYLE "" 18 256 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 19 257 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 258 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 4 259 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 260 1 {CSTYLE "" -1 -1 "Geve na" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 261 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 262 1 {CSTYLE " " -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 263 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 264 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 265 1 {CSTYLE "" -1 -1 "Geve na" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 266 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 267 1 {CSTYLE " " -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 268 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 4 269 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 270 1 {CSTYLE "" -1 -1 "Geve na" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 271 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 272 1 {CSTYLE " " -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 273 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 274 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 275 1 {CSTYLE "" -1 -1 "Geve na" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 276 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 277 1 {CSTYLE " " -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 278 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 279 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 280 1 {CSTYLE "" -1 -1 "Geve na" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 281 1 {CSTYLE "" -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 4 282 1 {CSTYLE " " -1 -1 "Gevena" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 283 1 {CSTYLE "" -1 -1 "Geneva" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 256 "" 0 "" {TEXT -1 23 "DES - Diffusion testing " }}{PARA 257 "" 0 "" {TEXT -1 36 "\251Mike May, S.J., 2002, maymk@slu .edu" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 260 403 "This worksheet assumes that you have al ready created the DES.m file or have copied it to the current director y. It would be useful to look at the worksheet BabyDES-3 before doing this worksheet. As with that worksheet we will look at changing each bit of the plaintext, one at a time and seeing how it changes the cip hertext. The bits should change as if each bit were an independent ra ndom variable." }}}{EXCHG {PARA 258 "> " 0 "" {MPLTEXT 1 0 13 "read `D ES.m`:" }}}{SECT 0 {PARA 259 "" 0 "" {TEXT -1 17 "Preliminary Tools" } }{EXCHG {PARA 260 "" 0 "" {TEXT -1 244 "To change the plaintext one bi t at a time, it is convenient to be able to produce 64 bit hex words \+ that are all zeroes except for a single bit. The 64 bits correspond t o the powers of 2 from 0 to 63. We get the zero word with an input of 64." }}}{EXCHG {PARA 261 "> " 0 "" {MPLTEXT 1 0 166 "oneBitIn64 := in tVal ->\n substring(convert(convert(2^64+2^intVal,hex),string),2..17) :\nlowBit := oneBitIn64(0);\nhighBit := oneBitIn64(63);\nzeroWord := o neBitIn64(64);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'lowBitGQ100000000 000000016\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(highBitGQ18000000000 0000006\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)zeroWordGQ100000000000 000006\"" }}}{EXCHG {PARA 262 "" 0 "" {TEXT -1 86 "For our initial dis cussion, we will use the zeroWord for both the key and the message." } }}{EXCHG {PARA 263 "> " 0 "" {MPLTEXT 1 0 104 "keytest := zeroWord:\nm essage := zeroWord:\nkey := keyexpander(keytest):\ncipher1 := qdDEShex (message,key);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(cipher1G%18CA64DE 9C1B123A7G" }}}{EXCHG {PARA 264 "" 0 "" {TEXT -1 128 "We would like to be able to convert a hex word to a list of 64 zeroes and ones. We wo uld also like to count the number of ones." }}}{EXCHG {PARA 265 "> " 0 "" {MPLTEXT 1 0 219 "hexStringToBitList := proc(hexString)\n local decValue:\n decValue := convert(hexString,decimal,hex):\n [seq(iq uo(decValue,2^(64-i)) mod 2, i=1..64)];\nend proc:\nnumBitsHexString : = bitList -> sum(bitList[i],i=1..64):" }}}{EXCHG {PARA 266 "> " 0 "" {MPLTEXT 1 0 77 "bitList := hexStringToBitList(cipher1);\nnumBits := n umBitsHexString(bitList);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%(bitLis tG7\\o\"\"\"\"\"!F'F'F&F&F'F'F&F'F&F'F'F&F&F'F'F&F'F'F&F&F'F&F&F&F&F'F &F'F'F&F&F&F'F'F'F'F'F&F&F'F&F&F'F'F'F&F'F'F&F'F'F'F&F&F&F'F&F'F'F&F&F &" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(numBitsG\"#J" }}}{EXCHG {PARA 267 "" 0 "" {TEXT -1 97 "We recall that in constructing our DES functi ons we produced a function for XORing two hex words." }}}{EXCHG {PARA 268 "> " 0 "" {MPLTEXT 1 0 61 "cipher1;\nxor64hex(cipher1,lowBit);\nxo r64hex(cipher1,highBit);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%18CA64DE9 C1B123A7G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%18CA64DE9C1B123A6G" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q10CA64DE9C1B123A76\"" }}}}{SECT 0 {PARA 269 "" 0 "" {TEXT -1 0 "" }{TEXT 256 47 "Counting the number of \+ bits changed in each wor" }{TEXT -1 1 "d" }}{EXCHG {PARA 270 "" 0 "" {TEXT -1 504 "Following the procedure we used in BabyDES-3 we look at \+ how bits of ciphertext change when we change each bit of the plaintex t. We first look at how many bits have been changed in each word of c iphertext. In the results of the code below each line has the plainte xt with a single changed bit, the new ciphertext, the XOR of the new a nd old ciphertexts and the number of bits changed. We also collect th e number of bits changed so that we can compute the mean and standard \+ deviations of those numbers." }}}{EXCHG {PARA 271 "> " 0 "" {MPLTEXT 1 0 420 "bitChangeList := [seq(0,i=1..64)]:\nkey := keyexpander(zerowo rd):\ncipher1 := qdDEShex(zeroword,key);\nfor intVal from 0 to 63 do\n mess1 := oneBitIn64(intVal):\n cipher := qdDEShex(mess1,key):\n \+ diffHex := xor64hex(cipher1,cipher):\n numBitsChanged := numBitsHex String(hexStringToBitList(diffHex)):\n print(mess1, cipher, diffHex, numBitsChanged):\n bitChangeList[intVal+1] := numBitsChanged:\nend do:\nbitChangeList;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(cipher1G%12 F604AFFD9ACDD5AG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q10000000000000001 6\"%16EDF1C357E4E7464G%141BF56CAA7E2A93EG\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000000026\"Q104823D0D74D8FDFAF$%12BE277F2AD74 20A0G\"#J" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000000046\"%1AE FD418DAE1D5CC5G%1819D0B7277B1819FG\"#K" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000000086\"%190F85D8FC0A0A3E4G%1BF981770190C7EBEG\"#M " }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000000106\"%1ACF38A8316B 7C3E6G%18393C07CCF1B1EBCG\"#L" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q1000 00000000000206\"%12D80DBFCDCF37222GQ102E09103055FAF78F$\"#F" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000000406\"%114729C87DE0C6635G%13B 12D67807A0BB6FG\"#L" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q10000000000000 0806\"%138FB84E1EB2DBEE6G%1179BCE1E328163BCG\"#K" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000001006\"%1A886DAECF4BF4AB7G%187E690132D139 7EDG\"#K" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000002006\"%166F B53B764ED72A8G%1499B1948BD41AFF2G\"#K" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000004006\"%14E1AC68EFFFDAD8AG%1617A8C71265170D0G\"#F" }} {PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000008006\"%1FA1D44FDF82B86C 9G%1D57D0E0221875B93G\"#I" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q10000000 0000010006\"%1257FD87CF8805322GQ10A1F9283212C8E78F$\"#E" }}{PARA 11 " " 1 "" {XPPMATH 20 "6&Q100000000000020006\"Q10A80888A42D493CBF$%125E0C 2759B784E91G\"#I" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q10000000000004000 6\"%1EF97AFA917BE1047G%1C0F7E556CE12CD1DG\"#M" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000080006\"%1D9FC02C19A25863EG%1F69C483E43895 B64G\"#J" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000100006\"%11AA 18EDDB9927171G%135C1C422603EAC2BG\"#F" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000200006\"%17400892480DDE767G%15B60C3DB59713A3DG\"#M" }} {PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000000400006\"%183A6E93E4520551 FG%1ACC6A3C19C8C8845G\"#F" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q10000000 0000800006\"%12D132B1753840F28GQ1027361E88A28D272F$\"#E" }}{PARA 11 " " 1 "" {XPPMATH 20 "6&Q100000000001000006\"%1B0370666495A85ACG%19F574C 9990F658F6G\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000002000006 \"%1AE195A758D9FEDCFG%18179108A54333095G\"#C" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000004000006\"%13374B16908C3725DG%11C14FB96D16FA F07G\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000008000006\"%1D2C 9C7CFFF833246G%1FDA98D30262FEF1CG\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000010000006\"%1A54636BB48E28F84G%18A267C44914E52DEG\"#H" }} {PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000020000006\"%1145B910D28FC542 DG%13B3BDBF2F1508977G\"#P" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q10000000 0040000006\"%1B055B7287C91BCEBG%19F35FDD7A53D61B1G\"#R" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000080000006\"Q10ED81F20B977F098F$%121B855D F60DB2DC2G\"#K" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000100000006 \"%13CB626D2AA00616DG%113D66C2D73ACBC37G\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000200000006\"%16F63B123F05DDF65G%14003FBDC29F10 23FG\"#I" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000400000006\"%1939 AFA8C75092277G%1BCFAB073ACA5FF2DG\"#R" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000000800000006\"%1F9500E4011E37448G%1D63044BFC84FA912G\"#I" }} {PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000001000000006\"%1619AE2AF742C88F 6G%14EFAA850AD8055ACG\"#H" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q10000000 2000000006\"%1D821CF52FAD8D619G%1F74185AD23740B43G\"#I" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000004000000006\"%131BEC98DE21837DEG%11EDE8372 3BB4EA84G\"#L" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000008000000006\" %16EFFC947CF0C64E5G%1419F83B816A0B9BFG\"#K" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000010000000006\"%1685EFD41CD5991CBG%1473EB7BE14F54 C91G\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000020000000006\"%15F3 E811C49C4A4C1G%1705ECBE39068799BG\"#L" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000040000000006\"Q10F8B3A74FBB12E9CF$%120EB708B221DF3C6G\"#I" } }{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000080000000006\"%1FC5E80C254C99A D1G%1D33ECA3D8D65478BG\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q1000001 00000000006\"%14F60F655B38073EAG%16000BCAA6A2CAEB0G\"#E" }}{PARA 11 " " 1 "" {XPPMATH 20 "6&Q100000200000000006\"%1E0D8D224823E5CECG%1CFB898 DB5B9281B6G\"#M" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000400000000006 \"%1DE6E0150FD9B9FFAG%1F10E4BAF243742A0G\"#H" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100000800000000006\"%1EA770B36A7EE020AG%1C51741C97E42D F50G\"#J" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100001000000000006\"%12B0 C5FF580F2ADDBGQ1046C150A595E7081F$\"#C" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100002000000000006\"%1737593817CEDC38BG%15C15D97EA5411ED1G\"#K " }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100004000000000006\"Q106C1544D627 3F99EF$%129A11EB2BBDF24C4G\"#K" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100 008000000000006\"%1FF19022D1E687279G%1D07948D2C7C4AF23G\"#J" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100010000000000006\"%1DA51FD8995E466DDG%1F5 31B7764C48BB87G\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q10002000000000 0006\"%15F4093FD25288B5FG%17020D902FC845605G\"#C" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100040000000000006\"%145BEE2473981C9A0G%16ADEA8B8E02D1 4FAG\"#K" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100080000000000006\"%1EAB E339192BD7C05G%1C5DE796E4B11A15FG\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100100000000000006\"%19DD4165B23F124E2G%1B2B45CA4FA5DF9B8G\"#O" }} {PARA 11 "" 1 "" {XPPMATH 20 "6&Q100200000000000006\"%1FAC53B1B809325B BG%1D5A571E4593FF8E1G\"#O" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q10040000 0000000006\"%1459664966B2FB020G%16AF62E69B2836D7AG\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q100800000000000006\"%12AE33FAED1458C34GQ105837551 08E9516EF$\"#F" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q101000000000000006 \"%1A28ED85510AEA75BG%18DEE92AAC9027A01G\"#G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q102000000000000006\"%1FC6B84455D412602G%1D30BCEBA84EDF B58G\"#O" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q104000000000000006\"%1140 FA6B6AE68CD09G%13B6FEC4977C41053G\"#L" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q108000000000000006\"%1F4D5E41130E57B34G%1DBB5AEEEE949A66EG\"#R" }} {PARA 11 "" 1 "" {XPPMATH 20 "6&Q110000000000000006\"%1E5A6F970E14D67F BG%1CAC6B38F38E1BAA1G\"#L" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q12000000 0000000006\"%12AAB50560769A665GQ105CB1AA9DEC57B3FF$\"#O" }}{PARA 11 " " 1 "" {XPPMATH 20 "6&Q140000000000000006\"%19CE053A8580EAF92G%1B38019 5781A272C8G\"#E" }}{PARA 11 "" 1 "" {XPPMATH 20 "6&Q180000000000000006 \"%17CDA101B56D03B79G%153BA5AE48F7CE623G\"#N" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7\\o\"#N\"#J\"#K\"#M\"#L\"#FF(F&F&F&F)\"#I\"#EF*F'F%F)F 'F)F+F$\"#CF$F$\"#H\"#P\"#RF&F$F*F/F*F-F*F(F&F$F(F*F$F+F'F-F%F,F&F&F%F $F,F&F$\"#OF0F$F)\"#GF0F(F/F(F0F+F$" }}}{EXCHG {PARA 272 "" 0 "" {TEXT -1 219 "Note that changing one input bit always changed between \+ 23 and 41 bits of output. If the bit changes are random, we expect th e distribution above to have a mean of 64*.5=32 and a standard deviati on of sqrt(64*.5*.5)=4." }}}{EXCHG {PARA 273 "> " 0 "" {MPLTEXT 1 0 102 "evalf(stats[describe, mean](bitChangeList));\nevalf(stats[describ e, standarddeviation](bitChangeList));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"++vozJ!\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+INZ@P!\"*" }}}{EXCHG {PARA 274 "" 0 "" {TEXT -1 70 "At a first level the bit chan ges seem to behave as if they are random." }}}{EXCHG {PARA 275 "" 0 " " {TEXT -1 93 "We can create a procedure that will gather the same dat a with an arbitrary plaintext and key." }}}{EXCHG {PARA 276 "> " 0 "" {MPLTEXT 1 0 89 "intToHexString := intVal ->\n substring(convert(con vert(intVal+2^64,hex),string),2..17):" }}}{EXCHG {PARA 277 "> " 0 "" {MPLTEXT 1 0 599 "bitChangeCounter := proc(plaintext, key)\n local k eyExpanded, bitChangeList, cipher1, i, mess1, \n cipher, diffHex, numBitsChanged, intVal:\n keyExpanded := keyexpander(key):\n bitC hangeList := [seq(0,i=1..64)]:\n cipher1 := qdDEShex(plaintext,keyEx panded);\n for intVal from 0 to 63 do\n mess1 := xor64hex(intTo HexString(2^intVal),plaintext):\n cipher := qdDEShex(mess1,keyExp anded):\n diffHex := xor64hex(cipher1,cipher):\n numBitsChan ged := numBitsHexString(hexStringToBitList(diffHex)):\n bitChange List[intVal+1] := numBitsChanged:\n end do:\n bitChangeList;\nend :" }}}{EXCHG {PARA 278 "> " 0 "" {MPLTEXT 1 0 80 "plainStart := intToH exString(rand(2^64)());\nkey := intToHexString(rand(2^64)());" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%+plainStartGQ17778EEFFF432E5966\"" } }{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$keyGQ162E169CC8C8584CB6\"" }}} {EXCHG {PARA 279 "> " 0 "" {MPLTEXT 1 0 51 "bitChangeList := bitChange Counter(plainStart, key);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%.bitCha ngeListG7\\o\"#Q\"#O\"#G\"#M\"#LF(F)\"#J\"#IF+\"#N\"#KF*F.F+\"#FF+F,F( F.\"#H\"#SF*F)F.F'F+F.F+F0F.\"#PF2\"#RF,F-F)F+\"#BF-F)F-F.F,F3\"#>F+F* F'F-F-F.F*F,F+F0F+F3F&F2F0\"#EF-F-" }}}{EXCHG {PARA 280 "> " 0 "" {MPLTEXT 1 0 102 "evalf(stats[describe, mean](bitChangeList));\nevalf( stats[describe, standarddeviation](bitChangeList));" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#$\"++](oC$!\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\" +1\\#*yP!\"*" }}}{EXCHG {PARA 281 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {SECT 0 {PARA 282 "" 0 "" {TEXT -1 55 "Counting the number of words fo r which a bit is changed" }}{EXCHG {PARA 0 "" 0 "" {TEXT 264 79 "A sec ond way to look at the same data looks at how many words turn on each \+ bit." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 272 "bitCountList := [s eq(0,i=1..64)]:\nkey := keyexpander(zeroword):\nfor intVal from 0 to 6 4 do\n mess1 := oneBitIn64(intVal):\n cipher := qdDEShex(mess1,key ):\n bitList := hexStringToBitList(cipher):\n bitCountList := zip( `+`, bitCountList, bitList):\nend do:\nbitCountList;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7\\o\"#I\"#L\"#R\"#J\"#S\"#O\"#K\"#D\"#PF)\"#HF&F*F* \"#QF'F,F$\"#C\"#MF$F-\"#NF'F'F-F-F$F$F(\"#EF.F0F,F0F,F%F$\"#GF3F.F%F% F3F)F'F/F0F%F*F.F*F2F,F,F*F1F,F1\"#FF)F%F*F%" }}}{EXCHG {PARA 283 "" 0 "" {TEXT -1 310 "Once again we check the mean and standard deviation . We expect the number of words that use each bit to average 32.5 and have a standard deviation of sqrt(65*.5*.5), which is a little more t han 4. (The expected standard deviation if each number were obtained \+ from 65 events with probability .5 is sqrt(65/4)." }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 100 "evalf(stats[describe, mean](bitCountList)); \nevalf(stats[describe, standarddeviation](bitCountList));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"++++vK!\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+X@csR!\"*" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 263 81 "We can al so test the same process starting with a randomly chosen key and messa ge" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 464 "bitCounter2 := proc( plaintext, key)\n local keyExpanded, bitCountList, cipher1, i, mess1 , \n cipher, bitList, intVal:\n keyExpanded := keyexpander(key) :\n bitCountList := [seq(0,i=1..64)]:\n for intVal from 0 to 64 do \n mess1 := xor64hex(intToHexString(2^intVal),plaintext):\n \+ cipher := qdDEShex(mess1,keyExpanded):\n bitList := hexStringToBi tList(cipher):\n bitCountList := zip(`+`, bitCountList, bitList): \n end do:\n bitCountList;\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 80 "plainStart := intToHexString(rand(2^64)());\nkey := i ntToHexString(rand(2^64)());" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%+pla inStartGQ11B99F43F71AF2E8A6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$ke yGQ118B6FA0831C6EF286\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 " bitCountList := bitCounter2(plainStart, key);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%-bitCountListG7\\o\"#I\"#E\"#T\"#H\"#JF*\"#OF)\"#KF* \"#G\"#P\"#LF/F,\"#QF/\"#FF*F0F+F1F/F0F/F*\"#MF*\"#SF0F)F,\"#RF,F/F+F, F+F*F2F*F/F0F/F/F1F1\"#UF+F)F*F+F0F/F)F+F.F.F/F0\"#DF&F*\"#N" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 100 "evalf(stats[describe, mean] (bitCountList));\nevalf(stats[describe, standarddeviation](bitCountLis t));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"++v$4J$!\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+e`6XQ!\"*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG }}{MARK "0 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }