Cryptography-Digest Digest #12, Volume #13       Fri, 27 Oct 00 01:13:01 EDT

Contents:
  MATTS BICOM (SCOTT19U.ZIP_GUY)
  Re: How do I detect invalid passwords? (Benjamin Goldberg)
  Re: Is OPT the only encryption system that can be proved secure? (Terry Ritter)

----------------------------------------------------------------------------

From: [EMAIL PROTECTED] (SCOTT19U.ZIP_GUY)
Subject: MATTS BICOM
Date: 27 Oct 2000 04:32:38 GMT

MAtt's bicom101 is the first high valued product
using compression and encryption to come down the
pike in a long time. Matt has paid great attension
to detail. The compression is fully bijective and
so is the encryption. I know of no other product
like this on the market. Any 8 bit binary file
can be thought as a compressed encrypted file
or as a plaintext file. Zero information is added
to the file. And one can easily test to check the
bijective nature of the program. No other compression
combined with encryption has this feature. Canada
should be proud of his work. If big brother wants
you to give them the key to the encrypted data make
one up any key will work and produce an output file
that when compressed and encrpted with this program
will produce the same data. Try that with any other
program. You can't. Also this bijective nature makes
it a valueable tool to use in other crytpo systems.
  Some may want to add other features. Most features
can be added outside the program with out any
changes to the code. For example suspose you want
the ability to still have this bijective property
but yet want to be able to encrypt the same file
or modified file  so that an attacker will not see
the same blocks at the begining you can rotate the
file some "random" number of bytes and combine the rotation
information to the file in a bijective way and then
use bicom.
  If the attacker does the reverse process it is
completely bijective in that any key decompresses
to a file that can have the rotation taken out 
automactically. So any key in theory leads to a
file which could have been encrypted try this
with any other product. See example below:

output of test file test.txt
0000  54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 66  *This is a test f*
0010  69 6C 65 20 74 6F 20 73 68 6F 77 20 68 6F 77 20  *ile to show how *
0020  6F 6E 65 0D 0A 63 61 6E 20 65 6E 63 72 79 70 74  *one..can encrypt*
0030  20 74 68 65 20 73 61 6D 65 20 66 69 6C 65 20 77  * the same file w*
0040  69 74 68 20 62 69 63 6F 6D 0D 0A 61 6E 64 20 66  *ith bicom..and f*
0050  69 72 73 74 20 75 73 65 20 72 6F 74 61 74 65 6E  *irst use rotaten*
0060  20 61 6E 64 20 64 73 63 20 73 6F 20 74 68 61 74  * and dsc so that*
0070  0D 0A 74 68 65 20 70 72 6F 63 65 73 73 20 69 73  *..the process is*
0080  20 63 6F 6D 70 6C 65 74 65 6C 79 20 62 69 6A 65  * completely bije*
0090  63 74 69 76 65 2E 0D 0A 49 4E 20 74 68 61 74 20  *ctive...IN that *
00A0  61 6E 79 20 6B 65 79 20 63 61 6E 20 62 65 20 75  *any key can be u*
00B0  73 65 64 20 66 6F 72 20 72 65 76 65 72 73 65 0D  *sed for reverse.*
00C0  0A 61 6E 64 20 79 6F 75 20 77 69 6C 6C 20 67 65  *.and you will ge*
00D0  74 20 61 20 76 61 6C 69 64 20 72 6F 74 61 74 65  *t a valid rotate*
00E0  64 20 66 69 6C 65 0D 0A 74 68 61 74 20 77 69 6C  *d file..that wil*
00F0  6C 20 6E 6F 74 20 68 61 76 65 20 65 72 72 6F 72  *l not have error*
0100  73 2E 20 59 6F 75 20 63 61 6E 20 65 76 65 6E 20  *s. You can even *
0110  72 65 76 65 72 73 65 0D 0A 74 68 69 73 20 70 72  *reverse..this pr*
0120  6F 63 65 73 73 20 61 6E 64 20 79 6F 75 20 67 65  *ocess and you ge*
0130  74 20 74 68 65 20 66 69 6C 65 20 62 61 63 6B 2E  *t the file back.*
0140  0D 0A  .  .  .  .  .  .  .  .  .  .  .  .  .  .  *..*
 number of bytes is 322 

output of rotaten i arbitary made it 113 bytes. test.t1
0000  0A 74 68 65 20 70 72 6F 63 65 73 73 20 69 73 20  *.the process is *
0010  63 6F 6D 70 6C 65 74 65 6C 79 20 62 69 6A 65 63  *completely bijec*
0020  74 69 76 65 2E 0D 0A 49 4E 20 74 68 61 74 20 61  *tive...IN that a*
0030  6E 79 20 6B 65 79 20 63 61 6E 20 62 65 20 75 73  *ny key can be us*
0040  65 64 20 66 6F 72 20 72 65 76 65 72 73 65 0D 0A  *ed for reverse..*
0050  61 6E 64 20 79 6F 75 20 77 69 6C 6C 20 67 65 74  *and you will get*
0060  20 61 20 76 61 6C 69 64 20 72 6F 74 61 74 65 64  * a valid rotated*
0070  20 66 69 6C 65 0D 0A 74 68 61 74 20 77 69 6C 6C  * file..that will*
0080  20 6E 6F 74 20 68 61 76 65 20 65 72 72 6F 72 73  * not have errors*
0090  2E 20 59 6F 75 20 63 61 6E 20 65 76 65 6E 20 72  *. You can even r*
00A0  65 76 65 72 73 65 0D 0A 74 68 69 73 20 70 72 6F  *everse..this pro*
00B0  63 65 73 73 20 61 6E 64 20 79 6F 75 20 67 65 74  *cess and you get*
00C0  20 74 68 65 20 66 69 6C 65 20 62 61 63 6B 2E 0D  * the file back..*
00D0  0A 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20  *.This is a test *
00E0  66 69 6C 65 20 74 6F 20 73 68 6F 77 20 68 6F 77  *file to show how*
00F0  20 6F 6E 65 0D 0A 63 61 6E 20 65 6E 63 72 79 70  * one..can encryp*
0100  74 20 74 68 65 20 73 61 6D 65 20 66 69 6C 65 20  *t the same file *
0110  77 69 74 68 20 62 69 63 6F 6D 0D 0A 61 6E 64 20  *with bicom..and *
0120  66 69 72 73 74 20 75 73 65 20 72 6F 74 61 74 65  *first use rotate*
0130  6E 20 61 6E 64 20 64 73 63 20 73 6F 20 74 68 61  *n and dsc so tha*
0140  74 0D 71 00 00 00  .  .  .  .  .  .  .  .  .  .  *t.q...*
 number of bytes is 326 

output of DSC combining rotation amount for bijectiveity test.t2
0000  0A 74 68 65 20 70 72 6F 63 65 73 73 20 69 73 20  *.the process is *
0010  63 6F 6D 70 6C 65 74 65 6C 79 20 62 69 6A 65 63  *completely bijec*
0020  74 69 76 65 2E 0D 0A 49 4E 20 74 68 61 74 20 61  *tive...IN that a*
0030  6E 79 20 6B 65 79 20 63 61 6E 20 62 65 20 75 73  *ny key can be us*
0040  65 64 20 66 6F 72 20 72 65 76 65 72 73 65 0D 0A  *ed for reverse..*
0050  61 6E 64 20 79 6F 75 20 77 69 6C 6C 20 67 65 74  *and you will get*
0060  20 61 20 76 61 6C 69 64 20 72 6F 74 61 74 65 64  * a valid rotated*
0070  20 66 69 6C 65 0D 0A 74 68 61 74 20 77 69 6C 6C  * file..that will*
0080  20 6E 6F 74 20 68 61 76 65 20 65 72 72 6F 72 73  * not have errors*
0090  2E 20 59 6F 75 20 63 61 6E 20 65 76 65 6E 20 72  *. You can even r*
00A0  65 76 65 72 73 65 0D 0A 74 68 69 73 20 70 72 6F  *everse..this pro*
00B0  63 65 73 73 20 61 6E 64 20 79 6F 75 20 67 65 74  *cess and you get*
00C0  20 74 68 65 20 66 69 6C 65 20 62 61 63 6B 2E 0D  * the file back..*
00D0  0A 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20  *.This is a test *
00E0  66 69 6C 65 20 74 6F 20 73 68 6F 77 20 68 6F 77  *file to show how*
00F0  20 6F 6E 65 0D 0A 63 61 6E 20 65 6E 63 72 79 70  * one..can encryp*
0100  74 20 74 68 65 20 73 61 6D 65 20 66 69 6C 65 20  *t the same file *
0110  77 69 74 68 20 62 69 63 6F 6D 0D 0A 61 6E 64 20  *with bicom..and *
0120  66 69 72 73 74 20 75 73 65 20 72 6F 74 61 74 65  *first use rotate*
0130  6E 20 61 6E 64 20 64 73 63 20 73 6F 20 74 68 61  *n and dsc so tha*
0140  74 0D 71  .  .  .  .  .  .  .  .  .  .  .  .  .  *t.q*
 number of bytes is 323 

using matts bicom to compress and encrypt password is sex test.t3
0000  CA EB 22 8B E9 D2 AD D0 19 9A 91 DB 58 C6 D8 8B  *..".........X...*
0010  DE 3A 95 13 34 7E 33 85 A2 B3 73 C9 78 F0 58 12  *.:..4~3...s.x.X.*
0020  2C 18 93 85 59 50 2E 84 C4 BF 8C AD 96 97 F3 2A  *,...YP.........**
0030  53 FF F2 1D C8 29 11 D8 D4 14 5A 94 49 14 40 A8  *S....)....Z.I.@.*
0040  89 3F 45 46 D4 B5 2B B0 BC A8 E7 82 78 D2 AB 31  *.?EF..+.....x..1*
0050  2A 2A 86 B6 95 37 8C 7F 2C CC 49 91 9E B0 7E 10  ***...7..,.I...~.*
0060  13 96 84 1F 27 86 18 F3 59 34 55 F4 AA 41 DB DC  *....'...Y4U..A..*
0070  79 3B 8C CE 58 D1 85 D7 BA BF DE DA 10 14 D0 BF  *y;..X...........*
0080  56 A5 BD F7 26 14 E1 AA F7 47 E1 2E 24 22 F5 4B  *V...&....G..$".K*
0090  DB 03 BC CE B1 41 B2 EC BF C2 28 7C 78 B8 A3 0E  *.....A....(|x...*
00A0  EF 7B AA 85 F6 B2 4C 07 5F AE BB 40 B3 BB F5 80  *.{....L._..@....*
00B0  5C 9D  .  .  .  .  .  .  .  .  .  .  .  .  .  .  *\.*
 number of bytes is 178 

know using matts bicom to uncompress wrong password is love test.t4 
0000  67 87 5A 34 9B C1 52 3B A2 09 F6 87 5A 34 09 E7  *g.Z4..R;....Z4..*
0010  C9 E3 5A 34 BE 52 CE 04 BA 68 F9 55 55 52 5A 34  *..Z4.R...h.UURZ4*
0020  D4 81 9A CE 04 BA 68 F9 55 55 52 F4 E3 5B 89 C9  *......h.UUR..[..*
0030  BA 68 F9 55 55 52 5A 34 D4 50 04 CE 9A 93 66 C1  *.h.UURZ4.P....f.*
0040  C1 C1 C1 52 3B 17 F5 08 34 09 E7 4C D4 81 9A D2  *...R;...4..L....*
0050  1B E6 17 34 09 F6 CE E3 87 BA 4C E3 5B 89 3E 8D  *...4......L.[.>.*
0060  52 A4 52 52 5A 3A 6E FC E3 87 3A 6E 72 E3 5A FC  *R.RRZ:n...:nr.Z.*
0070  04 68 BB 68 F9 81 50 04 EB 97 E1 68 F9 E3 5A 52  *.h.h..P....h..ZR*
0080  17 68 51 A2 BB 68 F9 2F E3 E3 2C C1 C1 66 80 80  *.hQ..h./..,..f..*
0090  80 80 04 EB 2F 04 EB 2F 68 CE 34 BE 8B CD 50 CD  *..../../h.4...P.*
00A0  5A 34 F5 72 E3 5A FC 04 51 BE 52 CE 04 E3 87 5A  *Z4.r.Z..Q.R....Z*
00B0  E3 5A 34 F5 F4 E3 87 3A 3A 3A 3A 6E 72 E3 5A FC  *.Z4....::::nr.Z.*
00C0  96 CD 50 CD 5A 5B F4 E3 87 3A E3 5A 34 F5 F4 22  *..P.Z[...:.Z4.."*
00D0  68 3E E3 A4 C0 BB 04 52 08 40 AC CD 5A 5B 67 87  *h>[email protected][g.*
00E0  F4 E3 87 3A 6E 72 E3 5A FC 04 68 F9 80 3A 6E 68  *...:nr.Z..h..:nh*
00F0  F9 4C A3 17 6A 04 E2 0A 80 3A 3A 6E 68 A2 AB E3  *.L..j....::nh...*
0100  5A 34 F5 F4 55 3A D4 81 CD 50 D4 3A  .  .  .  .  *Z4..U:...P.:*
 number of bytes is 268 

using undsc to get test.t5
0000  67 87 5A 34 9B C1 52 3B A2 09 F6 87 5A 34 09 E7  *g.Z4..R;....Z4..*
0010  C9 E3 5A 34 BE 52 CE 04 BA 68 F9 55 55 52 5A 34  *..Z4.R...h.UURZ4*
0020  D4 81 9A CE 04 BA 68 F9 55 55 52 F4 E3 5B 89 C9  *......h.UUR..[..*
0030  BA 68 F9 55 55 52 5A 34 D4 50 04 CE 9A 93 66 C1  *.h.UURZ4.P....f.*
0040  C1 C1 C1 52 3B 17 F5 08 34 09 E7 4C D4 81 9A D2  *...R;...4..L....*
0050  1B E6 17 34 09 F6 CE E3 87 BA 4C E3 5B 89 3E 8D  *...4......L.[.>.*
0060  52 A4 52 52 5A 3A 6E FC E3 87 3A 6E 72 E3 5A FC  *R.RRZ:n...:nr.Z.*
0070  04 68 BB 68 F9 81 50 04 EB 97 E1 68 F9 E3 5A 52  *.h.h..P....h..ZR*
0080  17 68 51 A2 BB 68 F9 2F E3 E3 2C C1 C1 66 80 80  *.hQ..h./..,..f..*
0090  80 80 04 EB 2F 04 EB 2F 68 CE 34 BE 8B CD 50 CD  *..../../h.4...P.*
00A0  5A 34 F5 72 E3 5A FC 04 51 BE 52 CE 04 E3 87 5A  *Z4.r.Z..Q.R....Z*
00B0  E3 5A 34 F5 F4 E3 87 3A 3A 3A 3A 6E 72 E3 5A FC  *.Z4....::::nr.Z.*
00C0  96 CD 50 CD 5A 5B F4 E3 87 3A E3 5A 34 F5 F4 22  *..P.Z[...:.Z4.."*
00D0  68 3E E3 A4 C0 BB 04 52 08 40 AC CD 5A 5B 67 87  *h>[email protected][g.*
00E0  F4 E3 87 3A 6E 72 E3 5A FC 04 68 F9 80 3A 6E 68  *...:nr.Z..h..:nh*
00F0  F9 4C A3 17 6A 04 E2 0A 80 3A 3A 6E 68 A2 AB E3  *.L..j....::nh...*
0100  5A 34 F5 F4 55 3A D4 81 CD 50 D4 3A 00 00 00  .  *Z4..U:...P.:...*
 number of bytes is 271 

unrotat  rotation output is 58 to get test.t6
0000  3E E3 A4 C0 BB 04 52 08 40 AC CD 5A 5B 67 87 F4  *>[email protected][g..*
0010  E3 87 3A 6E 72 E3 5A FC 04 68 F9 80 3A 6E 68 F9  *..:nr.Z..h..:nh.*
0020  4C A3 17 6A 04 E2 0A 80 3A 3A 6E 68 A2 AB E3 5A  *L..j....::nh...Z*
0030  34 F5 F4 55 3A D4 81 CD 50 D4 67 87 5A 34 9B C1  *4..U:...P.g.Z4..*
0040  52 3B A2 09 F6 87 5A 34 09 E7 C9 E3 5A 34 BE 52  *R;....Z4....Z4.R*
0050  CE 04 BA 68 F9 55 55 52 5A 34 D4 81 9A CE 04 BA  *...h.UURZ4......*
0060  68 F9 55 55 52 F4 E3 5B 89 C9 BA 68 F9 55 55 52  *h.UUR..[...h.UUR*
0070  5A 34 D4 50 04 CE 9A 93 66 C1 C1 C1 C1 52 3B 17  *Z4.P....f....R;.*
0080  F5 08 34 09 E7 4C D4 81 9A D2 1B E6 17 34 09 F6  *..4..L.......4..*
0090  CE E3 87 BA 4C E3 5B 89 3E 8D 52 A4 52 52 5A 3A  *....L.[.>.R.RRZ:*
00A0  6E FC E3 87 3A 6E 72 E3 5A FC 04 68 BB 68 F9 81  *n...:nr.Z..h.h..*
00B0  50 04 EB 97 E1 68 F9 E3 5A 52 17 68 51 A2 BB 68  *P....h..ZR.hQ..h*
00C0  F9 2F E3 E3 2C C1 C1 66 80 80 80 80 04 EB 2F 04  *./..,..f....../.*
00D0  EB 2F 68 CE 34 BE 8B CD 50 CD 5A 34 F5 72 E3 5A  *./h.4...P.Z4.r.Z*
00E0  FC 04 51 BE 52 CE 04 E3 87 5A E3 5A 34 F5 F4 E3  *..Q.R....Z.Z4...*
00F0  87 3A 3A 3A 3A 6E 72 E3 5A FC 96 CD 50 CD 5A 5B  *.::::nr.Z...P.Z[*
0100  F4 E3 87 3A E3 5A 34 F5 F4 22 68  .  .  .  .  .  *...:.Z4.."h*
 number of bytes is 267 

rotaten with rotation 58 entered matches test.t5 but test.t7
0000  67 87 5A 34 9B C1 52 3B A2 09 F6 87 5A 34 09 E7  *g.Z4..R;....Z4..*
0010  C9 E3 5A 34 BE 52 CE 04 BA 68 F9 55 55 52 5A 34  *..Z4.R...h.UURZ4*
0020  D4 81 9A CE 04 BA 68 F9 55 55 52 F4 E3 5B 89 C9  *......h.UUR..[..*
0030  BA 68 F9 55 55 52 5A 34 D4 50 04 CE 9A 93 66 C1  *.h.UURZ4.P....f.*
0040  C1 C1 C1 52 3B 17 F5 08 34 09 E7 4C D4 81 9A D2  *...R;...4..L....*
0050  1B E6 17 34 09 F6 CE E3 87 BA 4C E3 5B 89 3E 8D  *...4......L.[.>.*
0060  52 A4 52 52 5A 3A 6E FC E3 87 3A 6E 72 E3 5A FC  *R.RRZ:n...:nr.Z.*
0070  04 68 BB 68 F9 81 50 04 EB 97 E1 68 F9 E3 5A 52  *.h.h..P....h..ZR*
0080  17 68 51 A2 BB 68 F9 2F E3 E3 2C C1 C1 66 80 80  *.hQ..h./..,..f..*
0090  80 80 04 EB 2F 04 EB 2F 68 CE 34 BE 8B CD 50 CD  *..../../h.4...P.*
00A0  5A 34 F5 72 E3 5A FC 04 51 BE 52 CE 04 E3 87 5A  *Z4.r.Z..Q.R....Z*
00B0  E3 5A 34 F5 F4 E3 87 3A 3A 3A 3A 6E 72 E3 5A FC  *.Z4....::::nr.Z.*
00C0  96 CD 50 CD 5A 5B F4 E3 87 3A E3 5A 34 F5 F4 22  *..P.Z[...:.Z4.."*
00D0  68 3E E3 A4 C0 BB 04 52 08 40 AC CD 5A 5B 67 87  *h>[email protected][g.*
00E0  F4 E3 87 3A 6E 72 E3 5A FC 04 68 F9 80 3A 6E 68  *...:nr.Z..h..:nh*
00F0  F9 4C A3 17 6A 04 E2 0A 80 3A 3A 6E 68 A2 AB E3  *.L..j....::nh...*
0100  5A 34 F5 F4 55 3A D4 81 CD 50 D4 3A 00 00 00  .  *Z4..U:...P.:...*
 number of bytes is 271 

use DSC matches test.t4 but is test.t8
0000  67 87 5A 34 9B C1 52 3B A2 09 F6 87 5A 34 09 E7  *g.Z4..R;....Z4..*
0010  C9 E3 5A 34 BE 52 CE 04 BA 68 F9 55 55 52 5A 34  *..Z4.R...h.UURZ4*
0020  D4 81 9A CE 04 BA 68 F9 55 55 52 F4 E3 5B 89 C9  *......h.UUR..[..*
0030  BA 68 F9 55 55 52 5A 34 D4 50 04 CE 9A 93 66 C1  *.h.UURZ4.P....f.*
0040  C1 C1 C1 52 3B 17 F5 08 34 09 E7 4C D4 81 9A D2  *...R;...4..L....*
0050  1B E6 17 34 09 F6 CE E3 87 BA 4C E3 5B 89 3E 8D  *...4......L.[.>.*
0060  52 A4 52 52 5A 3A 6E FC E3 87 3A 6E 72 E3 5A FC  *R.RRZ:n...:nr.Z.*
0070  04 68 BB 68 F9 81 50 04 EB 97 E1 68 F9 E3 5A 52  *.h.h..P....h..ZR*
0080  17 68 51 A2 BB 68 F9 2F E3 E3 2C C1 C1 66 80 80  *.hQ..h./..,..f..*
0090  80 80 04 EB 2F 04 EB 2F 68 CE 34 BE 8B CD 50 CD  *..../../h.4...P.*
00A0  5A 34 F5 72 E3 5A FC 04 51 BE 52 CE 04 E3 87 5A  *Z4.r.Z..Q.R....Z*
00B0  E3 5A 34 F5 F4 E3 87 3A 3A 3A 3A 6E 72 E3 5A FC  *.Z4....::::nr.Z.*
00C0  96 CD 50 CD 5A 5B F4 E3 87 3A E3 5A 34 F5 F4 22  *..P.Z[...:.Z4.."*
00D0  68 3E E3 A4 C0 BB 04 52 08 40 AC CD 5A 5B 67 87  *h>[email protected][g.*
00E0  F4 E3 87 3A 6E 72 E3 5A FC 04 68 F9 80 3A 6E 68  *...:nr.Z..h..:nh*
00F0  F9 4C A3 17 6A 04 E2 0A 80 3A 3A 6E 68 A2 AB E3  *.L..j....::nh...*
0100  5A 34 F5 F4 55 3A D4 81 CD 50 D4 3A  .  .  .  .  *Z4..U:...P.:*
 number of bytes is 268 

bicom uncopress password love matches test.t3 but is test.t9
0000  CA EB 22 8B E9 D2 AD D0 19 9A 91 DB 58 C6 D8 8B  *..".........X...*
0010  DE 3A 95 13 34 7E 33 85 A2 B3 73 C9 78 F0 58 12  *.:..4~3...s.x.X.*
0020  2C 18 93 85 59 50 2E 84 C4 BF 8C AD 96 97 F3 2A  *,...YP.........**
0030  53 FF F2 1D C8 29 11 D8 D4 14 5A 94 49 14 40 A8  *S....)....Z.I.@.*
0040  89 3F 45 46 D4 B5 2B B0 BC A8 E7 82 78 D2 AB 31  *.?EF..+.....x..1*
0050  2A 2A 86 B6 95 37 8C 7F 2C CC 49 91 9E B0 7E 10  ***...7..,.I...~.*
0060  13 96 84 1F 27 86 18 F3 59 34 55 F4 AA 41 DB DC  *....'...Y4U..A..*
0070  79 3B 8C CE 58 D1 85 D7 BA BF DE DA 10 14 D0 BF  *y;..X...........*
0080  56 A5 BD F7 26 14 E1 AA F7 47 E1 2E 24 22 F5 4B  *V...&....G..$".K*
0090  DB 03 BC CE B1 41 B2 EC BF C2 28 7C 78 B8 A3 0E  *.....A....(|x...*
00A0  EF 7B AA 85 F6 B2 4C 07 5F AE BB 40 B3 BB F5 80  *.{....L._..@....*
00B0  5C 9D  .  .  .  .  .  .  .  .  .  .  .  .  .  .  *\.*
 number of bytes is 178 

bicom uncompress password sex matches test.t2 but is test.t10
0000  0A 74 68 65 20 70 72 6F 63 65 73 73 20 69 73 20  *.the process is *
0010  63 6F 6D 70 6C 65 74 65 6C 79 20 62 69 6A 65 63  *completely bijec*
0020  74 69 76 65 2E 0D 0A 49 4E 20 74 68 61 74 20 61  *tive...IN that a*
0030  6E 79 20 6B 65 79 20 63 61 6E 20 62 65 20 75 73  *ny key can be us*
0040  65 64 20 66 6F 72 20 72 65 76 65 72 73 65 0D 0A  *ed for reverse..*
0050  61 6E 64 20 79 6F 75 20 77 69 6C 6C 20 67 65 74  *and you will get*
0060  20 61 20 76 61 6C 69 64 20 72 6F 74 61 74 65 64  * a valid rotated*
0070  20 66 69 6C 65 0D 0A 74 68 61 74 20 77 69 6C 6C  * file..that will*
0080  20 6E 6F 74 20 68 61 76 65 20 65 72 72 6F 72 73  * not have errors*
0090  2E 20 59 6F 75 20 63 61 6E 20 65 76 65 6E 20 72  *. You can even r*
00A0  65 76 65 72 73 65 0D 0A 74 68 69 73 20 70 72 6F  *everse..this pro*
00B0  63 65 73 73 20 61 6E 64 20 79 6F 75 20 67 65 74  *cess and you get*
00C0  20 74 68 65 20 66 69 6C 65 20 62 61 63 6B 2E 0D  * the file back..*
00D0  0A 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20  *.This is a test *
00E0  66 69 6C 65 20 74 6F 20 73 68 6F 77 20 68 6F 77  *file to show how*
00F0  20 6F 6E 65 0D 0A 63 61 6E 20 65 6E 63 72 79 70  * one..can encryp*
0100  74 20 74 68 65 20 73 61 6D 65 20 66 69 6C 65 20  *t the same file *
0110  77 69 74 68 20 62 69 63 6F 6D 0D 0A 61 6E 64 20  *with bicom..and *
0120  66 69 72 73 74 20 75 73 65 20 72 6F 74 61 74 65  *first use rotate*
0130  6E 20 61 6E 64 20 64 73 63 20 73 6F 20 74 68 61  *n and dsc so tha*
0140  74 0D 71  .  .  .  .  .  .  .  .  .  .  .  .  .  *t.q*
 number of bytes is 323 

undsc to get test.t1 to get test.t11
0000  0A 74 68 65 20 70 72 6F 63 65 73 73 20 69 73 20  *.the process is *
0010  63 6F 6D 70 6C 65 74 65 6C 79 20 62 69 6A 65 63  *completely bijec*
0020  74 69 76 65 2E 0D 0A 49 4E 20 74 68 61 74 20 61  *tive...IN that a*
0030  6E 79 20 6B 65 79 20 63 61 6E 20 62 65 20 75 73  *ny key can be us*
0040  65 64 20 66 6F 72 20 72 65 76 65 72 73 65 0D 0A  *ed for reverse..*
0050  61 6E 64 20 79 6F 75 20 77 69 6C 6C 20 67 65 74  *and you will get*
0060  20 61 20 76 61 6C 69 64 20 72 6F 74 61 74 65 64  * a valid rotated*
0070  20 66 69 6C 65 0D 0A 74 68 61 74 20 77 69 6C 6C  * file..that will*
0080  20 6E 6F 74 20 68 61 76 65 20 65 72 72 6F 72 73  * not have errors*
0090  2E 20 59 6F 75 20 63 61 6E 20 65 76 65 6E 20 72  *. You can even r*
00A0  65 76 65 72 73 65 0D 0A 74 68 69 73 20 70 72 6F  *everse..this pro*
00B0  63 65 73 73 20 61 6E 64 20 79 6F 75 20 67 65 74  *cess and you get*
00C0  20 74 68 65 20 66 69 6C 65 20 62 61 63 6B 2E 0D  * the file back..*
00D0  0A 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20  *.This is a test *
00E0  66 69 6C 65 20 74 6F 20 73 68 6F 77 20 68 6F 77  *file to show how*
00F0  20 6F 6E 65 0D 0A 63 61 6E 20 65 6E 63 72 79 70  * one..can encryp*
0100  74 20 74 68 65 20 73 61 6D 65 20 66 69 6C 65 20  *t the same file *
0110  77 69 74 68 20 62 69 63 6F 6D 0D 0A 61 6E 64 20  *with bicom..and *
0120  66 69 72 73 74 20 75 73 65 20 72 6F 74 61 74 65  *first use rotate*
0130  6E 20 61 6E 64 20 64 73 63 20 73 6F 20 74 68 61  *n and dsc so tha*
0140  74 0D 71 00 00 00  .  .  .  .  .  .  .  .  .  .  *t.q...*
 number of bytes is 326 

unrotat which spits out 113 which was entered and matches test.tx test.t12
0000  54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 66  *This is a test f*
0010  69 6C 65 20 74 6F 20 73 68 6F 77 20 68 6F 77 20  *ile to show how *
0020  6F 6E 65 0D 0A 63 61 6E 20 65 6E 63 72 79 70 74  *one..can encrypt*
0030  20 74 68 65 20 73 61 6D 65 20 66 69 6C 65 20 77  * the same file w*
0040  69 74 68 20 62 69 63 6F 6D 0D 0A 61 6E 64 20 66  *ith bicom..and f*
0050  69 72 73 74 20 75 73 65 20 72 6F 74 61 74 65 6E  *irst use rotaten*
0060  20 61 6E 64 20 64 73 63 20 73 6F 20 74 68 61 74  * and dsc so that*
0070  0D 0A 74 68 65 20 70 72 6F 63 65 73 73 20 69 73  *..the process is*
0080  20 63 6F 6D 70 6C 65 74 65 6C 79 20 62 69 6A 65  * completely bije*
0090  63 74 69 76 65 2E 0D 0A 49 4E 20 74 68 61 74 20  *ctive...IN that *
00A0  61 6E 79 20 6B 65 79 20 63 61 6E 20 62 65 20 75  *any key can be u*
00B0  73 65 64 20 66 6F 72 20 72 65 76 65 72 73 65 0D  *sed for reverse.*
00C0  0A 61 6E 64 20 79 6F 75 20 77 69 6C 6C 20 67 65  *.and you will ge*
00D0  74 20 61 20 76 61 6C 69 64 20 72 6F 74 61 74 65  *t a valid rotate*
00E0  64 20 66 69 6C 65 0D 0A 74 68 61 74 20 77 69 6C  *d file..that wil*
00F0  6C 20 6E 6F 74 20 68 61 76 65 20 65 72 72 6F 72  *l not have error*
0100  73 2E 20 59 6F 75 20 63 61 6E 20 65 76 65 6E 20  *s. You can even *
0110  72 65 76 65 72 73 65 0D 0A 74 68 69 73 20 70 72  *reverse..this pr*
0120  6F 63 65 73 73 20 61 6E 64 20 79 6F 75 20 67 65  *ocess and you ge*
0130  74 20 74 68 65 20 66 69 6C 65 20 62 61 63 6B 2E  *t the file back.*
0140  0D 0A  .  .  .  .  .  .  .  .  .  .  .  .  .  .  *..*
 number of bytes is 322

 The above  was to just demonstrate how it can be
 combined with other programs and still stay bijective.




David A. Scott
-- 
SCOTT19U.ZIP NOW AVAILABLE WORLD WIDE
        http://www.jim.com/jamesd/Kong/scott19u.zip
Scott famous encryption website **now all allowed**
        http://members.xoom.com/ecil/index.htm
Scott LATEST UPDATED source for scott*u.zip
        http://radiusnet.net/crypto/  then look for
  sub directory scott after pressing CRYPTO
Scott famous Compression Page
        http://members.xoom.com/ecil/compress.htm
**NOTE EMAIL address is for SPAMERS***
I leave you with this final thought from President Bill Clinton:

------------------------------

From: Benjamin Goldberg <[EMAIL PROTECTED]>
Subject: Re: How do I detect invalid passwords?
Date: Fri, 27 Oct 2000 04:50:29 GMT

[EMAIL PROTECTED] wrote:
> 
> >A. Is there a better (i.e. safer) way to do this?
> >
> >        Yes if password is shorter than the key
> >      why bother to hash it at all. I assume you
> >      are saving neither the hash or the password.
> >      Also why use something fishy like blowfish
> >      use the approved AES cipher would impress
> >      your boss and customers more.
> 
> You are right, I am saving neither the hash or the password. The
> reason I am planning on hashing the password is because most users
> will NOT enter a 16 byte password (i.e. 128-bit). Let say that the
> average person uses an 8-byte password. I don't want to pad the other
> 8-bytes with 0s or something else that is fixed. This would reduce the
> number of possible password combinations to 64-bits. I assume the
> hashing will help fix this. Is this right?

        Although hashing the password is a good idea, your reasons are wrong. 
If the password can only be 8 bytes, then no matter how good the hash
is, there's only 8 bytes of entropy in your key.  That is, hashing
doesn't prevent brute-forcing of the password/key.  An attacker using
brute force (or more likely, a dictionary search) will go through the
2**64 possible passwords, hash each, and try it as the encryption key.

The reason that hashing the password is a good idea, is that if the
encryption key is gotten by some other method than brute force (eg,
known/probable plaintext in the encrypted file), you don't want him to
be able to go from the encryption key back to the original password. 
The reason you don't want that, is because people tend to re-use
passwords.

The best way to foil dictionary attacks on passwords is to require
instead a passphrase, with some minimum length.  A simple way of picking
a passphrase it to make up a pangram, or a poem, or whatever.  I
wouldn't suggest having the system any particular requirements on the
passphrase, other than it be over a particular length.  *This* is where
hashing is especially important... My made up passphrase might be
(should be) longer than the cipher key size, so hashing securely shrinks
it.  Since users will, if possible, pick bad passwords, (like having
"aaaabbbbccccdddd" to get 128 bits), I would advise measureing the
order-0 entropy (H value) per byte of the string, and require
(H*numbytes >= 128) rather than (8*numbytes >= 128).  Using this
measurement, "aaaabbbbccccdddd" will have 2 bits per byte, and will be
considered to contain 2*16=32 bits of entropy, and be considered too
short, whereas assuming 8bits/byte would make it seem as if it had
8*16=128 bits of entropy, which would be sufficiently long.


> > >B. How do I detect an incorrect password? I don't want to decrypt
> > >the
> >
> >    If you really want to do this I would encrypt the password
> >    the user entered the first time. When the user enters a password
> >    to get his data decypt the file that has his encrypted password
> >    if they match then his in. But I would make this a very slow
> >    operation if he guesses wrong so that he can't sit there and
> >    guess quickly. That is if you do it at all I think not doing
> >    anything and giving him garbage may be best.
> 
> Let's say I still use the hash, then should I:
> 1. Get the password from the user.
> 2. Hash the password.
> 3. Encrypt the password from step 1 (not the hash) along with the data
> using the hash from step 2 as the key for the symettric cipher.
> 4. When the user wants to access the data, he/she will give me a
> password.
> 5. Take the password from step 4 and hash it.
> 6. Use the hash to decrypt the password that I originally encrypted.
> If it is the same as the password that I got from the user in step 4,
> I will continue to encrypt the rest of the data. Otherwise, the
> password is invalid and quit.

This method seems unnecesarily complicated.  I would suggest:
1. Get the password (call it P).
2. Hash the password (call it HP).
3. Hash HP (call this HHP).
3. Write HHP to the file.
4) Encrypt the data with HP, and write it to the file.

-- 
"Mulder, do you remember when I was missing -- that time that you
 *still* insist I was being held aboard a UFO?"
"How could I forget?"
"Well, I'm beginning to wonder if maybe I wouldn't have been
 better off staying abo-- I mean, wherever it was that I was
 being held." [from an untitled spamfic by [EMAIL PROTECTED]]

------------------------------

From: [EMAIL PROTECTED] (Terry Ritter)
Subject: Re: Is OPT the only encryption system that can be proved secure?
Date: Fri, 27 Oct 2000 04:50:05 GMT


On Fri, 27 Oct 2000 00:10:20 GMT, in
<[EMAIL PROTECTED]>, in sci.crypt
[EMAIL PROTECTED] (John Savard) wrote:

>On Thu, 26 Oct 2000 23:18:38 GMT, Tim Tyler <[EMAIL PROTECTED]> wrote, in
>part:
>
>>This bothers you?  What specifically is the problem with this conclusion.
>>The conclusion appears to me to be correct - I see no problem with an
>>inability to be completely confident of your security.
>
>I am bothered since it is presented as a counter to the proof that an
>OTP is secure - specifically.
>
>Because, even if messy real-world issues *do* impinge on the OTP - and
>I have no problem with that in itself - the proof that the OTP has
>information-theoretic security is still something valuable, and not to
>be dismissed. Because that proof _distinguishes_ the OTP from other
>cryptosystems; it shows that a level of security against *the
>particular threat of* cryptanalysis - which is the only threat about
>which we can say much mathematically - exists for the OTP but not for
>other ciphers.

And that is precisely the issue I dispute:  

Only the *theoretical* OTP is different.  The *realized* OTP has the
very same issues as many other realized ciphers.  There is no special
case for the realized OTP, it is back with the pack.  


>What bothers me isn't calling attention to the real world - it is the
>claim that the real world makes a significant result, one of the few
>pieces of knowledge we _do_ have, irrelevant.

That's my claim.  It's also almost indisputable that this is one of
the most confusing issues to anyone who is not a crypto expert.
Claiming that we "have" something which is perfect, but which is not
possible to realize in a guaranteed perfect way, is just stupid:  In
practice, we don't really "have" it at all.  Too bad that bothers you.

---
Terry Ritter   [EMAIL PROTECTED]   http://www.io.com/~ritter/
Crypto Glossary   http://www.io.com/~ritter/GLOSSARY.HTM


------------------------------


** FOR YOUR REFERENCE **

The service address, to which questions about the list itself and requests
to be added to or deleted from it should be directed, is:

    Internet: [EMAIL PROTECTED]

You can send mail to the entire list (and sci.crypt) via:

    Internet: [EMAIL PROTECTED]

End of Cryptography-Digest Digest
******************************

Reply via email to