Hex Artifact Content
Not logged in

Artifact 49b657ebda4db6d5456ebdaf1a6cd784e80b4759:


0000: 3c 68 31 3e 57 75 72 73 74 6b 65 73 73 65 6c 3c  <h1>Wurstkessel<
0010: 2f 68 31 3e 0a 0a 3c 70 3e 49 6e 20 74 68 65 20  /h1>..<p>In the 
0020: 65 61 72 6c 69 65 72 20 70 72 6f 74 6f 74 79 70  earlier prototyp
0030: 65 20 6f 66 20 6e 65 74 32 6f 2c 20 49 20 75 73  e of net2o, I us
0040: 65 64 20 6d 79 20 6f 77 6e 20 73 79 6d 6d 65 74  ed my own symmet
0050: 72 69 63 20 63 72 79 70 74 6f 67 72 61 70 68 79  ric cryptography
0060: 0a 73 79 73 74 65 6d 2c 20 77 68 69 63 68 20 49  .system, which I
0070: 20 63 61 6c 6c 65 64 20 22 57 75 72 73 74 6b 65   called "Wurstke
0080: 73 73 65 6c 22 2e 20 49 20 64 65 73 69 67 6e 65  ssel". I designe
0090: 64 20 57 75 72 73 74 6b 65 73 73 65 6c 2c 20 62  d Wurstkessel, b
00a0: 65 63 61 75 73 65 20 49 27 6d 20 6e 6f 74 0a 63  ecause I'm not.c
00b0: 6f 6e 76 69 6e 63 65 64 20 77 69 74 68 20 74 68  onvinced with th
00c0: 65 20 73 74 61 6e 64 61 72 64 20 73 79 6d 6d 65  e standard symme
00d0: 74 72 69 63 20 63 72 79 70 74 6f 67 72 61 70 68  tric cryptograph
00e0: 79 20 74 6f 6f 6c 73 2c 20 65 73 70 65 63 69 61  y tools, especia
00f0: 6c 6c 79 20 6e 6f 74 20 77 69 74 68 0a 41 45 53  lly not with.AES
0100: 20 61 6e 64 20 53 48 41 2d 31 2e 20 49 20 77 61   and SHA-1. I wa
0110: 73 20 61 6c 73 6f 20 6e 6f 74 20 68 61 70 70 79  s also not happy
0120: 20 77 69 74 68 20 74 68 65 20 53 48 41 2d 33 20   with the SHA-3 
0130: 63 6f 6e 74 65 73 74 2c 20 61 73 20 6d 6f 73 74  contest, as most
0140: 20 65 6e 74 72 69 65 73 0a 75 73 65 64 20 61 20   entries.used a 
0150: 73 6c 69 67 68 74 6c 79 20 6d 6f 64 69 66 69 65  slightly modifie
0160: 64 20 4d 65 72 6b 6c 65 e2 80 93 44 61 6d 67 c3  d Merkle–DamgÃ
0170: a5 72 64 20 63 6f 6e 73 74 72 75 63 74 69 6f 6e  ¥rd construction
0180: 2c 20 74 68 6f 75 67 68 20 4d 44 20 68 61 73 20  , though MD has 
0190: 6b 6e 6f 77 6e 0a 70 72 6f 62 6c 65 6d 73 2e 3c  known.problems.<
01a0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 74 6f 6f 6c  /p>..<p>The tool
01b0: 73 20 69 6e 20 71 75 65 73 74 69 6f 6e 20 73 68  s in question sh
01c0: 6f 75 6c 64 20 62 65 20 61 62 6c 65 20 74 6f 20  ould be able to 
01d0: 70 65 72 66 6f 72 6d 20 74 68 65 20 66 6f 6c 6c  perform the foll
01e0: 6f 77 69 6e 67 20 74 61 73 6b 73 3a 3c 2f 70 3e  owing tasks:</p>
01f0: 0a 3c 75 6c 3e 0a 3c 6c 69 3e 70 72 6f 76 69 64  .<ul>.<li>provid
0200: 65 20 61 20 73 65 63 75 72 65 20 72 61 6e 64 6f  e a secure rando
0210: 6d 20 6e 75 6d 62 65 72 20 67 65 6e 65 72 61 74  m number generat
0220: 6f 72 3c 2f 6c 69 3e 0a 3c 6c 69 3e 65 6e 2d 20  or</li>.<li>en- 
0230: 61 6e 64 20 64 65 63 72 79 70 74 20 6d 65 73 73  and decrypt mess
0240: 61 67 65 73 3c 2f 6c 69 3e 0a 3c 6c 69 3e 63 72  ages</li>.<li>cr
0250: 65 61 74 65 20 61 20 73 65 63 75 72 65 20 68 61  eate a secure ha
0260: 73 68 20 6f 66 20 74 68 65 20 6d 65 73 73 61 67  sh of the messag
0270: 65 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 70  e</li>.</ul>..<p
0280: 3e 57 75 72 73 74 6b 65 73 73 65 6c 20 75 73 65  >Wurstkessel use
0290: 73 20 6f 6e 65 20 61 6c 67 6f 72 69 74 68 6d 20  s one algorithm 
02a0: 74 6f 20 70 72 6f 76 69 64 65 20 61 6c 6c 20 74  to provide all t
02b0: 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 2c 20  hese functions, 
02c0: 65 73 70 65 63 69 61 6c 6c 79 20 69 74 0a 61 6c  especially it.al
02d0: 6c 6f 77 73 20 74 6f 20 63 6f 6c 6c 61 70 73 65  lows to collapse
02e0: 20 74 68 65 20 65 6e 2f 64 65 63 72 79 70 74 20   the en/decrypt 
02f0: 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68 65  function and the
0300: 20 68 61 73 68 20 63 6f 6d 70 75 74 61 74 69 6f   hash computatio
0310: 6e 20 69 6e 74 6f 20 6f 6e 65 0a 73 74 65 70 2e  n into one.step.
0320: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 62 61 73  </p>..<p>The bas
0330: 65 20 6f 66 20 61 6c 6c 20 74 68 69 73 20 69 73  e of all this is
0340: 20 61 20 73 65 63 75 72 65 20 72 61 6e 64 6f 6d   a secure random
0350: 20 6e 75 6d 62 65 72 20 67 65 6e 65 72 61 74 6f   number generato
0360: 72 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 74 6f  r that allows to
0370: 20 61 64 64 0a 65 6e 74 72 6f 70 79 2e 20 54 68   add.entropy. Th
0380: 69 73 20 64 65 66 69 6e 65 73 20 68 6f 77 20 74  is defines how t
0390: 68 65 20 65 6e 63 72 79 70 74 69 6f 6e 20 61 6e  he encryption an
03a0: 64 20 64 65 63 72 79 70 74 69 6f 6e 20 6d 75 73  d decryption mus
03b0: 74 20 77 6f 72 6b 3a 20 61 73 20 73 74 72 65 61  t work: as strea
03c0: 6d 0a 63 69 70 68 65 72 2e 20 53 74 72 65 61 6d  m.cipher. Stream
03d0: 20 63 69 70 68 65 72 73 20 78 6f 72 20 72 61 6e   ciphers xor ran
03e0: 64 6f 6d 20 6e 75 6d 62 65 72 73 20 77 69 74 68  dom numbers with
03f0: 20 74 68 65 20 70 6c 61 69 6e 20 74 65 78 74 2c   the plain text,
0400: 20 74 68 65 20 72 61 6e 64 6f 6d 0a 6e 75 6d 62   the random.numb
0410: 65 72 20 67 65 6e 65 72 61 74 6f 72 20 73 74 61  er generator sta
0420: 72 74 73 20 77 69 74 68 20 74 68 65 20 73 68 61  rts with the sha
0430: 72 65 64 20 73 65 63 72 65 74 20 28 74 68 65 20  red secret (the 
0440: 6b 65 79 29 20 61 6e 64 20 61 20 67 6f 6f 64 20  key) and a good 
0450: 64 65 61 6c 20 6f 66 0a 73 61 6c 74 20 28 61 20  deal of.salt (a 
0460: 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 61 74  random number at
0470: 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 74 68   the start of th
0480: 65 20 65 6e 63 72 79 70 74 65 64 20 64 61 74 61  e encrypted data
0490: 29 20 61 73 20 69 6e 74 65 72 6e 61 6c 20 73 74  ) as internal st
04a0: 61 74 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69  ate.</p>..<p>Thi
04b0: 73 20 73 61 6c 74 20 69 73 20 76 65 72 79 20 63  s salt is very c
04c0: 72 75 63 69 61 6c 20 66 6f 72 20 74 68 65 20 73  rucial for the s
04d0: 65 63 75 72 65 20 6f 70 65 72 61 74 69 6f 6e 20  ecure operation 
04e0: 6f 66 20 61 20 74 72 61 64 69 74 69 6f 6e 61 6c  of a traditional
04f0: 20 73 74 72 65 61 6d 0a 63 69 70 68 65 72 2c 20   stream.cipher, 
0500: 61 73 20 69 74 73 20 72 61 6e 64 6f 6d 20 6e 75  as its random nu
0510: 6d 62 65 72 20 67 65 6e 65 72 61 74 6f 72 20 69  mber generator i
0520: 73 20 70 75 72 65 6c 79 20 64 65 74 65 72 6d 69  s purely determi
0530: 6e 69 73 74 69 63 2c 20 61 6e 64 20 74 68 65 72  nistic, and ther
0540: 65 66 6f 72 65 2c 0a 61 20 6b 65 79 20 63 6f 75  efore,.a key cou
0550: 6c 64 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20  ld only be used 
0560: 6f 6e 63 65 2e 20 54 68 65 20 63 6f 6d 62 69 6e  once. The combin
0570: 61 74 69 6f 6e 20 6f 66 20 6b 65 79 20 61 6e 64  ation of key and
0580: 20 73 61 6c 74 20 6d 75 73 74 20 62 65 20 75 6e   salt must be un
0590: 69 71 75 65 2c 0a 69 2e 65 2e 20 74 68 65 20 73  ique,.i.e. the s
05a0: 61 6c 74 20 6d 75 73 74 20 68 61 76 65 20 74 68  alt must have th
05b0: 65 20 66 6f 72 6d 20 6f 66 20 61 20 6e 6f 6e 63  e form of a nonc
05c0: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 75 72 73 74  e.</p>..<p>Wurst
05d0: 6b 65 73 73 65 6c 20 69 73 20 6d 6f 72 65 20 72  kessel is more r
05e0: 65 6c 61 78 65 64 20 68 65 72 65 2e 20 49 74 73  elaxed here. Its
05f0: 20 72 6f 75 6e 64 73 20 6f 70 65 72 61 74 69 6f   rounds operatio
0600: 6e 20 69 73 3c 2f 70 3e 0a 0a 3c 70 3e 3c 69 3e  n is</p>..<p><i>
0610: cf 95 28 61 2c 73 2c 65 29 20 e2 87 92 20 61 27  ϕ(a,s,e) ⇒ a'
0620: 2c 73 27 2c 65 27 3c 2f 69 3e 3c 2f 70 3e 0a 0a  ,s',e'</i></p>..
0630: 3c 70 3e 77 68 65 72 65 20 cf 95 20 69 73 20 74  <p>where Ï• is t
0640: 68 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f  he transformatio
0650: 6e 20 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64 3c  n function, and<
0660: 2f 70 3e 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 69 3e  /p>.<ul>.<li><i>
0670: 61 3c 2f 69 3e 20 69 73 20 74 68 65 20 61 63 63  a</i> is the acc
0680: 75 6d 75 6c 61 74 6f 72 2c 20 77 68 69 63 68 20  umulator, which 
0690: 61 63 63 75 6d 75 6c 61 74 65 73 20 65 6e 74 72  accumulates entr
06a0: 6f 70 79 20 61 6e 64 20 69 6e 74 65 72 6e 61 6c  opy and internal
06b0: 20 73 74 61 74 65 73 3c 2f 6c 69 3e 0a 3c 6c 69   states</li>.<li
06c0: 3e 3c 69 3e 73 3c 2f 69 3e 20 69 73 20 74 68 65  ><i>s</i> is the
06d0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 65 2c   internal state,
06e0: 20 77 68 69 63 68 20 69 73 20 75 73 65 64 20 74   which is used t
06f0: 6f 20 65 6e 63 72 79 70 74 20 61 6e 64 20 61 73  o encrypt and as
0700: 20 68 61 73 68 20 72 65 73 75 6c 74 3c 2f 6c 69   hash result</li
0710: 3e 0a 3c 6c 69 3e 3c 69 3e 65 3c 2f 69 3e 20 69  >.<li><i>e</i> i
0720: 73 20 61 6e 20 65 6e 74 72 6f 70 79 20 73 6f 75  s an entropy sou
0730: 72 63 65 2c 20 69 2e 65 2e 20 74 68 65 20 6d 65  rce, i.e. the me
0740: 73 73 61 67 65 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e  ssage</li>.</ul>
0750: 0a 0a 3c 70 3e 42 79 20 75 73 69 6e 67 20 74 68  ..<p>By using th
0760: 65 20 6d 65 73 73 61 67 65 20 61 73 20 65 6e 74  e message as ent
0770: 72 6f 70 79 20 73 6f 75 72 63 65 2c 20 74 68 65  ropy source, the
0780: 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 67   random number g
0790: 65 6e 65 72 61 74 6f 72 20 69 73 20 6e 6f 0a 6c  enerator is no.l
07a0: 6f 6e 67 65 72 20 64 65 74 65 72 6d 69 6e 65 64  onger determined
07b0: 20 62 79 20 69 74 73 20 69 6e 69 74 69 61 6c 20   by its initial 
07c0: 73 74 61 74 65 2c 20 74 68 75 73 20 64 69 66 66  state, thus diff
07d0: 65 72 65 6e 74 20 6d 65 73 73 61 67 65 73 20 61  erent messages a
07e0: 6c 73 6f 20 69 6e 66 6c 75 65 6e 63 65 0a 74 68  lso influence.th
07f0: 65 20 63 69 70 68 65 72 2e 20 54 68 65 20 62 6c  e cipher. The bl
0800: 6f 63 6b 20 73 69 7a 65 20 6f 66 20 6f 6e 65 20  ock size of one 
0810: 70 72 69 6d 69 74 69 76 65 20 6f 70 65 72 61 74  primitive operat
0820: 69 6f 6e 20 68 6f 77 65 76 65 72 20 69 73 20 36  ion however is 6
0830: 34 20 62 79 74 65 73 2c 20 61 6e 64 0a 77 69 74  4 bytes, and.wit
0840: 68 69 6e 20 74 68 65 73 65 20 36 34 20 62 79 74  hin these 64 byt
0850: 65 73 2c 20 74 68 65 20 70 72 6f 70 65 72 74 79  es, the property
0860: 20 6f 66 20 61 20 6e 6f 72 6d 61 6c 20 73 74 72   of a normal str
0870: 65 61 6d 20 63 69 70 68 65 72 20 73 74 69 6c 6c  eam cipher still
0880: 20 68 6f 6c 64 73 2c 20 73 6f 0a 70 6c 65 61 73   holds, so.pleas
0890: 65 20 75 73 65 20 65 61 63 68 20 6b 65 79 2b 73  e use each key+s
08a0: 61 6c 74 20 70 61 69 72 20 6f 6e 6c 79 20 6f 6e  alt pair only on
08b0: 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ce.</p>..<p>The 
08c0: 69 6e 64 69 76 69 64 75 61 6c 20 72 6f 75 6e 64  individual round
08d0: 73 20 6d 69 78 20 73 74 61 74 65 20 61 6e 64 20  s mix state and 
08e0: 61 63 63 75 6d 75 6c 61 74 6f 72 20 62 79 74 65  accumulator byte
08f0: 2d 77 69 73 65 20 77 69 74 68 20 64 69 66 66 65  -wise with diffe
0900: 72 65 6e 74 0a 73 74 72 69 64 65 73 20 74 6f 20  rent.strides to 
0910: 77 61 6c 6b 20 74 68 72 6f 75 67 68 20 73 74 61  walk through sta
0920: 74 65 20 61 6e 64 20 61 63 63 75 6d 75 6c 61 74  te and accumulat
0930: 6f 72 2c 20 61 6e 64 20 62 79 20 78 6f 72 69 6e  or, and by xorin
0940: 67 20 74 68 65 73 65 20 76 61 6c 75 65 73 0a 63  g these values.c
0950: 72 65 61 74 69 6e 67 20 74 68 65 20 69 6e 64 65  reating the inde
0960: 78 20 69 6e 74 6f 20 61 20 32 35 36 20 65 6e 74  x into a 256 ent
0970: 72 79 20 74 61 62 6c 65 20 6f 66 20 36 34 20 62  ry table of 64 b
0980: 69 74 20 6e 75 6d 62 65 72 73 20 6f 62 74 61 69  it numbers obtai
0990: 6e 65 64 20 6f 6e 63 65 20 66 72 6f 6d 0a 61 20  ned once from.a 
09a0: 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 73 6f  random number so
09b0: 75 72 63 65 2e 20 38 20 64 69 66 66 65 72 65 6e  urce. 8 differen
09c0: 74 6c 79 20 72 6f 74 61 74 65 64 20 6e 75 6d 62  tly rotated numb
09d0: 65 72 73 20 61 72 65 20 63 6f 6d 62 69 6e 65 64  ers are combined
09e0: 20 74 6f 67 65 74 68 65 72 20 74 6f 0a 66 6f 72   together to.for
09f0: 6d 20 6f 6e 65 20 36 34 20 62 69 74 20 70 6f 72  m one 64 bit por
0a00: 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 65 78 74  tion of the next
0a10: 20 73 74 61 74 65 2e 20 54 68 65 20 74 61 62 6c   state. The tabl
0a20: 65 20 69 6e 64 65 78 20 64 6f 65 73 20 6e 6f 74  e index does not
0a30: 20 61 63 74 75 61 6c 6c 79 0a 72 65 76 65 61 6c   actually.reveal
0a40: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 65 2c   internal state,
0a50: 20 61 73 20 69 74 20 69 73 20 74 68 65 20 78 6f   as it is the xo
0a60: 72 20 6f 66 20 74 77 6f 20 62 79 74 65 73 2c 20  r of two bytes, 
0a70: 61 6e 64 20 65 61 63 68 20 63 6f 6d 62 69 6e 61  and each combina
0a80: 74 69 6f 6e 20 6f 66 0a 73 74 61 74 65 20 61 6e  tion of.state an
0a90: 64 20 61 63 63 75 6d 75 6c 61 74 6f 72 20 62 79  d accumulator by
0aa0: 74 65 20 69 73 20 75 73 65 64 20 6f 6e 6c 79 20  te is used only 
0ab0: 6f 6e 63 65 20 2d 20 74 68 75 73 20 61 6e 79 20  once - thus any 
0ac0: 6b 6e 6f 77 6c 65 64 67 65 20 6f 66 20 74 68 65  knowledge of the
0ad0: 20 69 6e 64 65 78 0a 69 73 20 75 73 65 6c 65 73   index.is useles
0ae0: 73 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 72  s for the next r
0af0: 6f 75 6e 64 2e 20 54 68 65 72 65 20 73 68 6f 75  ound. There shou
0b00: 6c 64 20 62 65 20 61 74 20 6c 65 61 73 74 20 74  ld be at least t
0b10: 77 6f 20 72 6f 75 6e 64 73 20 66 6f 72 0a 65 6e  wo rounds for.en
0b20: 63 72 79 70 74 69 6f 6e 20 74 6f 20 73 70 72 65  cryption to spre
0b30: 61 64 20 61 6c 6c 20 69 6e 66 6f 72 6d 61 74 69  ad all informati
0b40: 6f 6e 20 6f 76 65 72 20 74 68 65 20 65 6e 74 69  on over the enti
0b50: 72 65 20 35 31 32 20 62 69 74 73 2c 20 61 6e 64  re 512 bits, and
0b60: 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 0a 74 68   to make sure.th
0b70: 61 74 20 6e 6f 20 74 77 6f 20 63 6f 6e 73 65 63  at no two consec
0b80: 75 74 69 76 65 20 73 74 61 74 65 73 20 61 72 65  utive states are
0b90: 20 65 78 70 6f 73 65 64 20 74 6f 20 61 20 6b 6e   exposed to a kn
0ba0: 6f 77 6e 20 70 6c 61 69 6e 74 65 78 74 20 61 74  own plaintext at
0bb0: 74 61 63 6b 20 28 74 68 65 0a 61 63 63 75 6d 75  tack (the.accumu
0bc0: 6c 61 74 6f 72 20 69 73 20 6e 65 76 65 72 20 65  lator is never e
0bd0: 78 70 6f 73 65 64 29 2e 3c 2f 70 3e 0a 0a 3c 70  xposed).</p>..<p
0be0: 3e 54 68 65 20 66 69 6e 61 6c 20 73 74 61 74 65  >The final state
0bf0: 20 69 73 20 74 68 65 20 68 61 73 68 20 6f 66 20   is the hash of 
0c00: 74 68 65 20 6d 65 73 73 61 67 65 2e 20 54 68 65  the message. The
0c10: 20 68 61 73 68 20 69 73 20 75 6e 69 71 75 65 20   hash is unique 
0c20: 28 77 69 74 68 20 61 0a 63 6f 6c 6c 69 73 69 6f  (with a.collisio
0c30: 6e 20 70 72 6f 62 61 62 69 6c 69 74 79 20 6f 66  n probability of
0c40: 20 32 3c 73 75 70 3e 2d 32 35 36 3c 2f 73 75 70   2<sup>-256</sup
0c50: 3e 29 20 6e 6f 74 20 6f 6e 6c 79 20 66 6f 72 20  >) not only for 
0c60: 74 68 65 20 6d 65 73 73 61 67 65 20 69 74 73 65  the message itse
0c70: 6c 66 2c 20 62 75 74 0a 61 6c 73 6f 20 66 6f 72  lf, but.also for
0c80: 20 6b 65 79 20 61 6e 64 20 73 61 6c 74 2c 20 74   key and salt, t
0c90: 68 75 73 20 61 70 70 65 6e 64 69 6e 67 20 74 68  hus appending th
0ca0: 69 73 20 68 61 73 68 20 74 6f 20 74 68 65 20 6d  is hash to the m
0cb0: 65 73 73 61 67 65 20 67 69 76 65 73 20 75 73 0a  essage gives us.
0cc0: 69 6e 74 65 67 72 69 74 79 2e 3c 2f 70 3e 0a 0a  integrity.</p>..
0cd0: 3c 70 3e 57 75 72 73 74 6b 65 73 73 65 6c 20 68  <p>Wurstkessel h
0ce0: 61 73 20 74 6f 20 62 65 20 74 61 6b 65 6e 20 77  as to be taken w
0cf0: 69 74 68 20 61 20 67 72 61 69 6e 20 6f 66 20 73  ith a grain of s
0d00: 61 6c 74 2c 20 61 73 20 69 74 20 73 74 69 6c 6c  alt, as it still
0d10: 20 6c 61 63 6b 73 20 70 65 65 72 0a 72 65 76 69   lacks peer.revi
0d20: 65 77 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 2e  ew and analysis.
0d30: 20 49 74 73 20 72 61 6e 64 6f 6d 20 6e 75 6d 62   Its random numb
0d40: 65 72 20 71 75 61 6c 69 74 79 20 68 61 73 20 62  er quality has b
0d50: 65 65 6e 20 76 65 72 69 66 69 65 64 20 77 69 74  een verified wit
0d60: 68 20 74 68 65 0a 64 69 65 68 61 72 64 65 72 20  h the.dieharder 
0d70: 74 65 73 74 20 73 75 69 74 65 2e 3c 2f 70 3e 0a  test suite.</p>.
0d80: 0a 3c 70 3e 4e 6f 74 65 3a 20 54 68 65 20 53 48  .<p>Note: The SH
0d90: 41 2d 33 20 77 69 6e 6e 65 72 2c 20 4b 65 63 63  A-3 winner, Kecc
0da0: 61 6b 2c 20 75 73 65 73 20 61 20 73 69 6d 69 6c  ak, uses a simil
0db0: 61 72 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f  ar combination o
0dc0: 66 20 65 78 74 65 72 6e 61 6c 20 61 6e 64 0a 69  f external and.i
0dd0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 65 2c 20 61  nternal state, a
0de0: 6e 64 20 6d 69 78 69 6e 67 20 69 6e 20 74 68 65  nd mixing in the
0df0: 20 6d 65 73 73 61 67 65 3b 20 74 68 65 79 20 63   message; they c
0e00: 61 6c 6c 20 74 68 69 73 20 22 73 70 6f 6e 67 65  all this "sponge
0e10: 22 3b 20 6f 74 68 65 72 0a 70 65 6f 70 6c 65 20  "; other.people 
0e20: 63 61 6c 6c 20 73 69 6d 69 6c 61 72 20 61 70 70  call similar app
0e30: 72 6f 61 63 68 65 73 20 22 77 69 64 65 2d 70 69  roaches "wide-pi
0e40: 70 65 22 2e 20 54 68 61 6e 6b 73 20 74 6f 20 74  pe". Thanks to t
0e50: 68 65 69 72 20 6c 65 6e 67 74 68 79 0a 63 72 79  heir lengthy.cry
0e60: 70 74 61 6e 61 6c 79 73 69 73 2c 20 69 74 20 63  ptanalysis, it c
0e70: 61 6e 20 6e 6f 77 20 62 65 20 73 61 69 64 20 74  an now be said t
0e80: 68 61 74 20 74 68 65 20 73 70 6f 6e 67 65 2f 77  hat the sponge/w
0e90: 69 64 65 2d 70 69 70 65 20 70 61 72 74 20 6f 66  ide-pipe part of
0ea0: 20 57 75 72 73 74 6b 65 73 73 65 6c 0a 68 61 73   Wurstkessel.has
0eb0: 20 72 65 63 65 69 76 65 64 20 73 75 66 66 69 63   received suffic
0ec0: 69 65 6e 74 20 70 65 65 72 20 72 65 76 69 65 77  ient peer review
0ed0: 20 61 6e 64 20 61 6e 61 6c 79 73 69 73 2c 20 61   and analysis, a
0ee0: 6e 64 20 69 73 20 61 20 73 6f 75 6e 64 20 63 6f  nd is a sound co
0ef0: 6e 63 65 70 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  ncept.</p>..<p>T
0f00: 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 75 6e 72  he remaining unr
0f10: 65 76 69 65 77 65 64 20 70 61 72 74 20 69 73 20  eviewed part is 
0f20: 74 68 65 20 53 2d 62 6f 78 2c 20 74 68 65 20 cf  the S-box, the Ï
0f30: 95 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 57 75  • function in Wu
0f40: 72 73 74 6b 65 73 73 65 6c 2e 0a 46 6f 72 74 75  rstkessel..Fortu
0f50: 6e 61 74 65 6c 79 2c 20 74 68 69 73 20 69 73 20  nately, this is 
0f60: 61 20 76 65 72 79 20 74 72 61 64 69 74 69 6f 6e  a very tradition
0f70: 61 6c 20 53 2d 62 6f 78 2c 20 77 68 69 63 68 20  al S-box, which 
0f80: 69 73 20 6f 6e 6c 79 20 6d 6f 64 69 66 69 65 64  is only modified
0f90: 20 69 6e 20 73 6f 20 66 61 72 0a 74 68 61 74 20   in so far.that 
0fa0: 75 73 69 6e 67 20 78 6f 72 20 6f 66 20 74 77 6f  using xor of two
0fb0: 20 62 79 74 65 20 6f 66 20 74 68 65 20 73 74 61   byte of the sta
0fc0: 74 65 20 61 73 20 69 6e 64 65 78 20 69 6e 74 6f  te as index into
0fd0: 20 74 68 65 20 72 61 6e 64 6f 6d 20 6e 75 6d 62   the random numb
0fe0: 65 72 20 74 61 62 6c 65 0a 64 6f 65 73 6e 27 74  er table.doesn't
0ff0: 20 72 65 76 65 61 6c 20 74 68 65 20 61 63 74 75   reveal the actu
1000: 61 6c 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  al internal stat
1010: 65 20 69 6e 20 61 20 73 69 64 65 2d 63 68 61 6e  e in a side-chan
1020: 6e 65 6c 20 61 74 74 61 63 6b 2e 3c 2f 70 3e 0a  nel attack.</p>.
1030: 0a 3c 70 3e 49 20 77 6f 75 6c 64 20 72 61 74 68  .<p>I would rath
1040: 65 72 20 63 72 69 74 69 63 69 7a 65 20 4b 65 63  er criticize Kec
1050: 63 61 6b 27 73 20 70 65 72 6d 75 74 61 74 69 6f  cak's permutatio
1060: 6e 20 66 75 6e 63 74 69 6f 6e 20 66 2c 20 62 65  n function f, be
1070: 63 61 75 73 65 20 69 74 20 69 73 0a 72 65 76 65  cause it is.reve
1080: 72 73 69 62 6c 65 2e 20 57 75 72 73 74 6b 65 73  rsible. Wurstkes
1090: 73 65 6c 20 64 65 6c 69 62 65 72 61 74 65 6c 79  sel deliberately
10a0: 20 63 68 6f 73 65 20 61 20 6e 6f 74 20 66 75 6c   chose a not ful
10b0: 6c 79 20 72 65 76 65 72 73 69 62 6c 65 20 6f 6e  ly reversible on
10c0: 65 2d 77 61 79 0a 66 75 6e 63 74 69 6f 6e 2e 20  e-way.function. 
10d0: 54 68 65 20 72 65 76 65 72 73 69 62 69 6c 69 74  The reversibilit
10e0: 79 20 6f 66 20 4b 65 63 63 61 6b 27 73 20 66 20  y of Keccak's f 
10f0: 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 61 20  should not be a 
1100: 70 72 6f 62 6c 65 6d 20 74 6f 20 61 6e 0a 61 74  problem to an.at
1110: 74 61 63 6b 65 72 20 66 6f 72 20 65 6e 63 72 79  tacker for encry
1120: 70 74 69 6f 6e 20 61 6e 64 20 64 65 63 72 79 70  ption and decryp
1130: 74 69 6f 6e 2c 20 62 65 63 61 75 73 65 20 69 74  tion, because it
1140: 20 69 73 20 73 65 63 72 65 74 2c 20 62 75 74 20   is secret, but 
1150: 49 20 63 61 6e 20 69 6d 61 67 69 6e 65 0a 69 74  I can imagine.it
1160: 20 62 65 63 6f 6d 69 6e 67 20 61 20 70 6f 74 65   becoming a pote
1170: 6e 74 69 61 6c 20 61 74 74 61 63 6b 20 76 65 63  ntial attack vec
1180: 74 6f 72 20 77 69 74 68 20 68 61 73 68 65 73 2e  tor with hashes.
1190: 20 41 6e 64 20 74 68 61 74 27 73 20 77 68 61 74   And that's what
11a0: 20 74 68 65 0a 63 6f 6d 70 65 74 69 74 69 6f 6e   the.competition
11b0: 20 77 61 73 20 61 62 6f 75 74 3a 20 68 61 73 68   was about: hash
11c0: 65 73 2e 3c 2f 70 3e                             es.</p>