home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / sci / crypt / 3191 < prev    next >
Encoding:
Internet Message Format  |  1992-09-10  |  3.4 KB

  1. Path: sparky!uunet!wupost!waikato.ac.nz!aukuni.ac.nz!cs18.cs.aukuni.ac.nz!pgut1
  2. Newsgroups: sci.crypt
  3. Subject: Re: SHS/SHA source code + random thoughts
  4. Message-ID: <1992Sep11.090308.26993@cs.aukuni.ac.nz>
  5. From: pgut1@cs.aukuni.ac.nz (Peter Gutmann)
  6. Date: Fri, 11 Sep 1992 09:03:08 GMT
  7. Sender: pgut1@cs.aukuni.ac.nz (PeterClaus          Gutmann        )
  8. Organization: Computer Science Dept. University of Auckland
  9. Lines: 62
  10.  
  11. In article <6169@transfer.stratus.com> green alien space slime made
  12.     Carl Ellison (cme@ellisun.sw.stratus.com) write:
  13.  
  14. >How do we know A Good Thing when we see it?
  15. >
  16. >We know that hash functions are supposed to be 1-way.
  17. >
  18. >Does anyone have a function for evaluating how much more an algorithm
  19. >approaches 1-way if you add this additional round or some other feature?
  20. >[If not, we're in danger of throwing in complications because they look
  21. >complex to us -- not because we know they do any good.]
  22.  
  23. I agree with this - it seems intuitive that using a different mix of input
  24. data in each round instead of reusing the same data would make the function
  25. stronger, but on the other hand it does smack of "add enough mess and it'll
  26. look random" design principles - I admit I can't really prove my claim that
  27. it's A Good Thing.
  28.  
  29. Then in article <1992Sep4.060230.28313@cs.aukuni.ac.nz> tall men in dark
  30.     coats forced Kevin S. McCurley <mccurley@cs.sandia.gov> to write:
  31.  
  32. >The only direct comparision I see to Peter's figures are for the Decstation
  33. >5000, where my results are about a factor of 2.8 faster.  This comparison
  34. >may not be fair, since I don't know how Peter could find a better compiler
  35. >for his, or maybe he is reading stuff from a file.
  36.  
  37. I used gcc without any -O, as I was generally more interested in the speed
  38. ratio to MD5 than the absolute speed (I also wanted to distribute some SHA
  39. code to the masses rather spend a lot of work on a highly-tuned super-fast
  40. implementation - so call me lazy :-).  In addition, the machine I was using
  41. has (supposedly) recently been cannibalized/hacked for parts for other
  42. machines, so its performance may be unusually low.
  43.  
  44. >The only comparision I made to MD5 is using the code distributed by
  45. >anonymous FTP from rsa.com, which ran about 15% faster than my SHA code on a
  46. >Sparcstation 2.
  47.  
  48. That ratio probably isn't too far off my measured one of 1/3 faster (since my
  49. SHA code isn't optimised that much).  For a real speed comparison it would be
  50. interesting to get something like Dhrystone ratings for the various machines
  51. and compilers, and use these as a baseline for comparisons, for example for
  52. the peecees there's a big difference between gcc (optimised 32-bit code), MSC
  53. V7 (optimised 16-bit? code), and Turbo C (pessimized 16-bit code).  I'll
  54. leave this as an exercise for the reader - as I mentioned above, I was mainly
  55. interested in a speed comparison + getting the code to the public.
  56.  
  57. Finally, Richard Schroeppel <rcs@cs.arizona.edu> has suggested an optimization
  58. to the f1 and f3 functions:
  59.  
  60. #define f3(x,y,z)   ( ( x & y ) | ( x & z ) | ( y & z ) )   /* Rounds 40-59 */
  61.  
  62. This could be ( ( x & y ) | ( z & ( x | y ) ) ), with one fewer boolean ops.
  63.  
  64. #define f1(x,y,z)   ( ( x & y ) | ( ~x & z ) )              /* Rounds  0-19 */
  65.  
  66. This could be  z ^ ( x & ( y ^ z ) ), losing the ~ from the original
  67. definition.  (And assuming that the machine *has* a ^ instruction.)
  68.  
  69. This results in a speed increase for SHA on all the platforms I tested it
  70. on.  This optimization can also be applied to the G function in MD5.
  71.  
  72. Peter.
  73.