diff options
Diffstat (limited to 'crypt/README.ufc-crypt')
-rw-r--r-- | crypt/README.ufc-crypt | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/crypt/README.ufc-crypt b/crypt/README.ufc-crypt deleted file mode 100644 index 74d81dd865..0000000000 --- a/crypt/README.ufc-crypt +++ /dev/null @@ -1,135 +0,0 @@ -The following is the README for UFC-crypt, with those portions deleted -that are known to be incorrect for the implementation used with the -GNU C library. - - - UFC-crypt: ultra fast 'crypt' implementation - ============================================ - - @(#)README 2.27 11 Sep 1996 - -Design goals/non goals: ----------------------- - -- Crypt implementation plugin compatible with crypt(3)/fcrypt. - -- High performance when used for password cracking. - -- Portable to most 32/64 bit machines. - -- Startup time/mixed salt performance not critical. - -Features of the implementation: ------------------------------- - -- On most machines, UFC-crypt runs 30-60 times faster than crypt(3) when - invoked repeated times with the same salt and varying passwords. - -- With mostly constant salts, performance is about two to three times - that of the default fcrypt implementation shipped with Alec - Muffets 'Crack' password cracker. For instructions on how to - plug UFC-crypt into 'Crack', see below. - -- With alternating salts, performance is only about twice - that of crypt(3). - -- Requires 165 kb for tables. - -Author & licensing etc ----------------------- - -UFC-crypt is created by Michael Glad, email: glad@daimi.aau.dk, and has -been donated to the Free Software Foundation, Inc. It is covered by the -GNU library license version 2, see the file 'COPYING.LIB'. - -NOTES FOR USERS OUTSIDE THE US: ------------------------------- - -The US government limits the export of DES based software/hardware. -This software is written in Aarhus, Denmark. It can therefore be retrieved -from ftp sites outside the US without breaking US law. Please do not -ftp it from american sites. - -Benchmark table: ---------------- - -The table shows how many operations per second UFC-crypt can -do on various machines. - -|--------------|-------------------------------------------| -|Machine | SUN* SUN* HP* DecStation HP | -| | 3/50 ELC 9000/425e 3100 9000/720 | -|--------------|-------------------------------------------| -| Crypt(3)/sec | 4.6 30 15 25 57 | -| Ufc/sec | 220 990 780 1015 3500 | -|--------------|-------------------------------------------| -| Speedup | 48 30 52 40 60 | -|--------------|-------------------------------------------| - -*) Compiled using special assembly language support module. - -It seems as if performance is limited by CPU bus and data cache capacity. -This also makes the benchmarks debatable compared to a real test with -UFC-crypt wired into Crack. However, the table gives an outline of -what can be expected. - -Optimizations: -------------- - -Here are the optimizations used relative to an ordinary implementation -such as the one said to be used in crypt(3). - -Major optimizations -******************* - -- Keep data packed as bits in integer variables -- allows for - fast permutations & parallel xor's in CPU hardware. - -- Let adjacent final & initial permutations collapse. - -- Keep working data in 'E expanded' format all the time. - -- Implement DES 'f' function mostly by table lookup - -- Calculate the above function on 12 bit basis rather than 6 - as would be the most natural. - -- Implement setup routines so that performance is limited by the DES - inner loops only. - -- Instead of doing salting in the DES inner loops, modify the above tables - each time a new salt is seen. According to the BSD crypt code this is - ugly :-) - -Minor (dirty) optimizations -*************************** - -- combine iterations of DES inner loop so that DES only loops - 8 times. This saves a lot of variable swapping. - -- Implement key access by a walking pointer rather than coding - as array indexing. - -- As described, the table based f function uses a 3 dimensional array: - - sb ['number of 12 bit segment']['12 bit index']['48 bit half index'] - - Code the routine with 4 (one dimensional) vectors. - -- Design the internal data format & uglify the DES loops so that - the compiler does not need to do bit shifts when indexing vectors. - -Revision history -**************** - -UFC patchlevel 0: base version; released to alt.sources on Sep 24 1991 -UFC patchlevel 1: patch released to alt.sources on Sep 27 1991. - No longer rebuilds sb tables when seeing a new salt. -UFC-crypt pl0: Essentially UFC pl 1. Released to comp.sources.misc - on Oct 22 1991. -UFC-crypt pl1: Released to comp.sources.misc in march 1992 - * setkey/encrypt routines added - * added validation/benchmarking programs - * reworked keyschedule setup code - * memory demands reduced - * 64 bit support added |