From 69f289d6dcae8f8e851e2a85255c99cb5c8deb4d Mon Sep 17 00:00:00 2001 From: Tom St Denis Date: Fri, 6 Aug 2004 16:42:41 +0000 Subject: [PATCH] added libtomcrypt-0.98 --- changes | 44 +++- crypt.c | 44 ++-- crypt.tex | 161 +++++++++++- demos/test/cipher_hash_test.c | 23 +- demos/test/store_test.c | 63 ++--- demos/test/test.c | 24 +- demos/tv_gen.c | 2 +- demos/x86_prof.c | 303 +++++++++++++++++++++-- doc/crypt.pdf | Bin 382399 -> 392972 bytes fortuna.c | 147 ++++++++--- hmac_done.c | 8 +- hmac_init.c | 16 +- hmac_test.c | 4 +- makefile | 18 +- makefile.cygwin_dll | 2 +- makefile.icc | 9 +- makefile.msvc | 2 +- mpi.c | 2 +- mycrypt_argchk.h | 3 - mycrypt_cfg.h | 16 +- mycrypt_custom.h | 21 +- mycrypt_prng.h | 58 ++++- noekeon.c | 21 +- notes/tech0004.txt | 91 +++++++ pretty.build | 6 +- rc4.c | 119 +++++++-- rsa_decrypt_key.c | 5 +- rsa_encrypt_key.c | 2 +- rsa_export.c | 1 + rsa_exptmod.c | 1 + rsa_make_key.c | 2 +- rsa_sign_hash.c | 2 +- rsa_v15_decrypt_key.c | 3 + rsa_v15_verify_hash.c | 5 +- rsa_verify_hash.c | 5 +- sober128.c | 444 ++++++++++++++++++++++++++++++++++ sober128tab.c | 154 ++++++++++++ sprng.c | 15 +- yarrow.c | 35 ++- 39 files changed, 1658 insertions(+), 223 deletions(-) create mode 100644 notes/tech0004.txt create mode 100644 sober128.c create mode 100644 sober128tab.c diff --git a/changes b/changes index e74b1d8..cd5ef23 100644 --- a/changes +++ b/changes @@ -1,3 +1,45 @@ +August 6th, 2004 +v0.98 -- Update to hmac_init to free all allocated memory on error + -- Update to PRNG API to fix import/export functions of Fortuna and Yarrow + -- Added test functions to PRNG api, RC4 now conforms ;-) [was a minor issue] + -- Added the SOBER-128 PRNG based off of code donated by Greg Rose. + -- Added Tech Note #4 [notes/tech0004.txt] + -- Changed RC4 back [due to request]. It will now XOR the output so you can use it like + a stream cipher easily. + -- Update Fortuna's export() to emit a hash of each pool. This means that the accumulated + entropy that was spread over all the pools isn't entirely lost when you export/import. + -- Zhi Chen suggested a comment for rsa_encrypt_key() to let users know [easily] that it was + PKCS #1 v2.0 padding. (updated other rsa_* functions) + -- Cleaned up Noekeon to remove unrolling [wasn't required, was messy and actually slower with GCC/ICC] + -- Updated RC4 so that when you feed it >256 bytes of entropy it quietly ignores additional + bytes. Also removed the % from the key setup to speed it up a bit. + -- Added cipher/hash/prng tests to x86_prof to help catch bugs while testing + -- Made the PRNG "done" return int, fixed sprng_done to not require prng* to be non-null + -- Spruced up mycrypt_custom.h to trap more errors and also help prevent LTMSSE from being defined + on non-i386 platforms by accident. + -- Added RSA/ECC/DH speed tests to x86_prof and cleaned it up to build with zero warnings + -- Changed Fortuna to count only entropy [not the 2 byte header] added to pool[0] into the + reseed mechanism. + -- Added "export_size" member to prng_descriptor tables so you can know in advance the size of + the exported state for any given PRNG. + -- Ported over patch on LTM 0.30 [not ready to release LTM 0.31] that fixes bug in mp_mul()/mp_div() + that used to result in negative zeroes when you multiplied zero by a negative integer. + (patch due to "Wolfgang Ehrhardt" ) + -- Fixed rsa_*decrypt_key() and rsa_*verify_hash() to default to invalid "stat" or "res". This way + if any of the higher level functions fail [before you get to the padding] the result will be in + a known state]. Applied to both v2 and v1.5 padding helpers. + -- Added MACs to x86_prof + -- Fixed up "warnings" in x86_prof and tv_gen + -- Added a "profiled" target back [for GCC 3.4 and ICC v8]. Doesn't seem to help but might be worth + tinkering with. + -- Beefed up load/store test in demos/test + + ++ New note, in order to use the optimized LOAD/STORE macros your platform + must support unaligned 32/64 bit load/stores. The x86s support this + but some [ARM for instance] do not. If your platform cannot perform + unaligned operations you must use the endian neutral code which is safe for + any sort of platform. + July 23rd, 2004 v0.97b -- Added PKCS #1 v1.5 RSA encrypt/sign helpers (like rsa_sign_hash, etc...) -- Added missing prng check to rsa_decrypt_key() [not critical as I don't use @@ -62,7 +104,7 @@ v0.96 -- Removed GF and Keyring code -- Changed PSS/OAEP API slightly to be more consistent with other PK functions (order of arguments) -- rsa_exptmod() now pads with leading zeroes as per I2OSP. -- added error checking to yarrow code - -- Mike Frysinger pointed out that tommath.h from this distro will overwrite tommath.h + -- pointed out that tommath.h from this distro will overwrite tommath.h from libtommath. I changed this to ltc_tommath.h to avoid any such problems. -- Fixed bug in PSS encoder/decoder that didn't handle the MSB properly -- refactored AES, now sports an "encrypt only" descriptor which uses half as much code space. diff --git a/crypt.c b/crypt.c index d71066c..56b5c5a 100644 --- a/crypt.c +++ b/crypt.c @@ -141,6 +141,26 @@ const char *crypt_build_settings = " CTR\n" #endif + "\nMACs:\n" +#if defined(HMAC) + " HMAC\n" +#endif +#if defined(OMAC) + " OMAC\n" +#endif +#if defined(PMAC) + " PMAC\n" +#endif + + "\nENC + AUTH modes:\n" +#if defined(EAX_MODE) + " EAX_MODE\n" +#endif +#if defined(OCB_MODE) + " OCB_MODE\n" +#endif + + "\nPRNG:\n" #if defined(YARROW) " Yarrow\n" @@ -151,6 +171,12 @@ const char *crypt_build_settings = #if defined(RC4) " RC4\n" #endif +#if defined(FORTUNA) + " Fortuna\n" +#endif +#if defined(SOBER128) + " SOBER128\n" +#endif "\nPK Algs:\n" #if defined(MRSA) @@ -197,21 +223,6 @@ const char *crypt_build_settings = #if defined(MPI) " MPI " #endif -#if defined(HMAC) - " HMAC " -#endif -#if defined(OMAC) - " OMAC " -#endif -#if defined(PMAC) - " PMAC " -#endif -#if defined(EAX_MODE) - " EAX_MODE " -#endif -#if defined(OCB_MODE) - " OCB_MODE " -#endif #if defined(TRY_UNRANDOM_FIRST) " TRY_UNRANDOM_FIRST " #endif @@ -229,6 +240,9 @@ const char *crypt_build_settings = #endif #if defined(NO_FILE) " NO_FILE " +#endif +#if defined(LTMSSE) + " LTMSSE " #endif "\n" "\n\n\n" diff --git a/crypt.tex b/crypt.tex index 4b3d103..875d903 100644 --- a/crypt.tex +++ b/crypt.tex @@ -47,7 +47,7 @@ \def\gap{\vspace{0.5ex}} \makeindex \begin{document} -\title{LibTomCrypt \\ Version 0.97b} +\title{LibTomCrypt \\ Version 0.98} \author{Tom St Denis \\ \\ tomstdenis@iahu.ca \\ @@ -1687,12 +1687,15 @@ int pmac_test(void); Which returns {\bf CRYPT\_OK} if the code passes otherwise it returns an error code. + + + \chapter{Pseudo-Random Number Generators} \section{Core Functions} - The library provides an array of core functions for Pseudo-Random Number Generators (PRNGs) as well. A cryptographic PRNG is used to expand a shorter bit string into a longer bit string. PRNGs are used wherever random data is required such as Public Key (PK) key generation. There is a universal structure called ``prng\_state''. To initialize a PRNG call: +\index{PRNG start} \begin{verbatim} int XXX_start(prng_state *prng); \end{verbatim} @@ -1700,6 +1703,7 @@ int XXX_start(prng_state *prng); This will setup the PRNG for future use and not seed it. In order for the PRNG to be cryptographically useful you must give it entropy. Ideally you'd have some OS level source to tap like in UNIX (see section 5.3). To add entropy to the PRNG call: +\index{PRNG add\_entropy} \begin{verbatim} int XXX_add_entropy(const unsigned char *in, unsigned long len, prng_state *prng); @@ -1707,17 +1711,77 @@ int XXX_add_entropy(const unsigned char *in, unsigned long len, Which returns {\bf CRYPTO\_OK} if the entropy was accepted. Once you think you have enough entropy you call another function to put the entropy into action. +\index{PRNG ready} \begin{verbatim} int XXX_ready(prng_state *prng); \end{verbatim} Which returns {\bf CRYPTO\_OK} if it is ready. Finally to actually read bytes call: +\index{PRNG read} \begin{verbatim} unsigned long XXX_read(unsigned char *out, unsigned long len, prng_state *prng); \end{verbatim} -Which returns the number of bytes read from the PRNG. +Which returns the number of bytes read from the PRNG. When you are finished with a PRNG state you call +the following. + +\index{PRNG done} +\begin{verbatim} +void XXX_done(prng_state *prng); +\end{verbatim} + +This will terminate a PRNG state and free any memory (if any) allocated. To export a PRNG state +so that you can later resume the PRNG call the following. + +\index{PRNG export} +\begin{verbatim} +int XXX_export(unsigned char *out, unsigned long *outlen, + prng_state *prng); +\end{verbatim} + +This will write a ``PRNG state'' to the buffer ``out'' of length ``outlen'' bytes. The idea of +the export is meant to be used as a ``seed file''. That is, when the program starts up there will not likely +be that much entropy available. To import a state to seed a PRNG call the following function. + +\index{PRNG import} +\begin{verbatim} +int XXX_import(const unsigned char *in, unsigned long inlen, + prng_state *prng); +\end{verbatim} + +This will call the start and add\_entropy functions of the given PRNG. It will use the state in +``in'' of length ``inlen'' as the initial seed. You must pass the same seed length as was exported +by the corresponding export function. + +Note that importing a state will not ``resume'' the PRNG from where it left off. That is, if you export +a state, emit (say) 8 bytes and then import the previously exported state the next 8 bytes will not +specifically equal the 8 bytes you generated previously. + +When a program is first executed the normal course of operation is + +\begin{enumerate} + \item Gather entropy from your sources for a given period of time or number of events. + \item Start, use your entropy via add\_entropy and ready the PRNG yourself. +\end{enumerate} + +When your program is finished you simply call the export function and save the state to a medium (disk, +flash memory, etc). The next time your application starts up you can detect the state, feed it to the +import function and go on your way. It is ideal that (as soon as possible) after startup you export a +fresh state. This helps in the case that the program aborts or the machine is powered down without +being given a chance to exit properly. + +Note that even if you have a state to import it is important to add new entropy to the state. However, +there is less pressure to do so. + +To test a PRNG for operational conformity call the following functions. + +\index{PRNG test} +\begin{verbatim} +int XXX_test(void); +\end{verbatim} + +This will return \textbf{CRYPT\_OK} if PRNG is operating properly. \subsection{Remarks} @@ -1728,8 +1792,8 @@ checking is guaranteed to see if the entropy is sufficient or if the PRNG is eve \subsection{Example} -Below is a simple snippet to read 10 bytes from yarrow. Its important to note that this snippet is {\bf NOT} secure since -the entropy added is not random. +Below is a simple snippet to read 10 bytes from yarrow. Its important to note that this snippet is +{\bf NOT} secure since the entropy added is not random. \begin{verbatim} #include @@ -1762,10 +1826,15 @@ PRNGs have descriptors too (surprised?). Stored in the structure ``prng\_descrip \begin{verbatim} struct _prng_descriptor { char *name; + int export_size; /* size in bytes of exported state */ int (*start) (prng_state *); int (*add_entropy)(const unsigned char *, unsigned long, prng_state *); int (*ready) (prng_state *); unsigned long (*read)(unsigned char *, unsigned long len, prng_state *); + void (*done)(prng_state *); + int (*export)(unsigned char *, unsigned long *, prng_state *); + int (*import)(const unsigned char *, unsigned long, prng_state *); + int (*test)(void); }; \end{verbatim} @@ -1779,16 +1848,82 @@ int register_prng(const struct _prng_descriptor *prng); int unregister_prng(const struct _prng_descriptor *prng); \end{verbatim} -\subsubsection{PRNGs Provided} -Currently Yarrow (yarrow\_desc), RC4 (rc4\_desc) and the secure RNG (sprng\_desc) are provided as PRNGs within the -library. +\subsection{PRNGs Provided} +\begin{figure}[here] +\begin{center} +\begin{small} +\begin{tabular}{|c|c|l|} +\hline \textbf{Name} & \textbf{Descriptor} & \textbf{Usage} \\ +\hline Yarrow & yarrow\_desc & Fast short-term PRNG \\ +\hline Fortuna & fortuna\_desc & Fast long-term PRNG (recommended) \\ +\hline RC4 & rc4\_desc & Stream Cipher \\ +\hline SOBER-128 & sober128\_desc & Stream Cipher (also very fast PRNG) \\ +\hline +\end{tabular} +\end{small} +\end{center} +\caption{List of Provided PRNGs} +\end{figure} -RC4 is provided with a PRNG interface because it is a stream cipher and not well suited for the symmetric block cipher -interface. You provide the key for RC4 via the rc4\_add\_entropy() function. By calling rc4\_ready() the key will be used -to setup the RC4 state for encryption or decryption. The rc4\_read() function has been modified from RC4 since it will -XOR the output of the RC4 keystream generator against the input buffer you provide. The following snippet will demonstrate -how to encrypt a buffer with RC4: +\subsubsection{Yarrow} +Yarrow is fast PRNG meant to collect an unspecified amount of entropy from sources +(keyboard, mouse, interrupts, etc) and produce an unbounded string of random bytes. +\textit{Note:} This PRNG is still secure for most taskings but is no longer recommended. Users +should use Fortuna instead. + +\subsubsection{Fortuna} + +Fortuna is a fast attack tolerant and more thoroughly designed PRNG suitable for long term +usage. It is faster than the default implementation of Yarrow\footnote{Yarrow has been implemented +to work with most cipher and hash combos based on which you have chosen to build into the library.} while +providing more security. + +Fortuna is slightly less flexible than Yarrow in the sense that it only works with the AES block cipher +and SHA--256 hash function. Technically Fortuna will work with any block cipher that accepts a 256--bit +key and any hash that produces at least a 256--bit output. However, to make the implementation simpler +it has been fixed to those choices. + +Fortuna is more secure than Yarrow in the sense that attackers who learn parts of the entropy being +added to the PRNG learn far less about the state than that of Yarrow. Without getting into to many +details Fortuna has the ability to recover from state determination attacks where the attacker starts +to learn information from the PRNGs output about the internal state. Yarrow on the other hand cannot +recover from that problem until new entropy is added to the pool and put to use through the ready() function. + +\subsubsection{RC4} + +RC4 is an old stream cipher that can also double duty as a PRNG in a pinch. You ``key'' it by +calling add\_entropy() and setup the key by calling ready(). You can only add upto 256 bytes via +add\_entropy(). + +When you read from RC4 the output of the RC4 algorithm is XOR'd against your buffer you provide. In this +manner you can use rc4\_read() as an encrypt (and decrypt) function. + +You really shouldn't use RC4 anymore. This isn't because RC4 is weak (though biases are known to exist) just +simply that faster alternatives exist. + +\subsubsection{SOBER-128} + +SOBER-128 is a stream cipher designed by the QUALCOMM Australia team. Like RC4 you ``key'' it by +calling add\_entropy(). There is no need to call ready() for this PRNG as it does not do anything. + +Note that this cipher has several oddities about how it operates. The first time you call +add\_entropy() that sets the cipher's key. Every other time you call the same function it sets +the cipher's IV variable. The IV mechanism allows you to encrypt several messages with the same +key and not re--use the same key material. + +Unlike Yarrow and Fortuna all of the entropy (and hence security) of this algorithm rests in the data +you pass it on the first call to add\_entropy(). All buffers sent to add\_entropy() must have a length +that is a multiple of four bytes. + +Like RC4 the output of SOBER--128 is XOR'ed against the buffer you provide it. In this manner you can use +sober128\_read() as an encrypt (and decrypt) function. + +Since SOBER-128 has a fixed keying scheme and is very fast (faster than RC4) the ideal usage of SOBER-128 is to +key it from the output of Fortuna (or Yarrow) and use it to encrypt messages. It is also ideal for +simulations which need a high quality (and fast) stream of bytes. + +\subsubsection{Example Usage} \begin{small} \begin{verbatim} #include diff --git a/demos/test/cipher_hash_test.c b/demos/test/cipher_hash_test.c index 52e9e65..046454b 100644 --- a/demos/test/cipher_hash_test.c +++ b/demos/test/cipher_hash_test.c @@ -4,7 +4,10 @@ int cipher_hash_test(void) { - int x; + int x; + unsigned char buf[4096]; + unsigned long n; + prng_state nprng; /* test ciphers */ for (x = 0; cipher_descriptor[x].name != NULL; x++) { @@ -15,6 +18,24 @@ int cipher_hash_test(void) for (x = 0; hash_descriptor[x].name != NULL; x++) { DO(hash_descriptor[x].test()); } + + /* test prngs (test, import/export */ + for (x = 0; prng_descriptor[x].name != NULL; x++) { + DO(prng_descriptor[x].test()); + DO(prng_descriptor[x].start(&nprng)); + DO(prng_descriptor[x].add_entropy("helloworld12", 12, &nprng)); + DO(prng_descriptor[x].ready(&nprng)); + n = sizeof(buf); + DO(prng_descriptor[x].export(buf, &n, &nprng)); + prng_descriptor[x].done(&nprng); + DO(prng_descriptor[x].import(buf, n, &nprng)); + DO(prng_descriptor[x].ready(&nprng)); + if (prng_descriptor[x].read(buf, 100, &nprng) != 100) { + fprintf(stderr, "Error reading from imported PRNG!\n"); + exit(EXIT_FAILURE); + } + prng_descriptor[x].done(&nprng); + } return 0; } diff --git a/demos/test/store_test.c b/demos/test/store_test.c index 278d52f..e033594 100644 --- a/demos/test/store_test.c +++ b/demos/test/store_test.c @@ -1,43 +1,44 @@ #include "test.h" +/* Test store/load macros with offsets */ int store_test(void) { - unsigned char buf[8]; - unsigned long L; - ulong64 LL; + unsigned char buf[24]; + unsigned long L, L1; + int y; + ulong64 LL, LL1; L = 0x12345678UL; - STORE32L (L, &buf[0]); - L = 0; - LOAD32L (L, &buf[0]); - if (L != 0x12345678UL) { - printf ("LOAD/STORE32 Little don't work"); - return 1; - } - LL = CONST64 (0x01020304050607); - STORE64L (LL, &buf[0]); - LL = 0; - LOAD64L (LL, &buf[0]) - if (LL != CONST64 (0x01020304050607)) { - printf ("LOAD/STORE64 Little don't work"); - return 1; + for (y = 0; y < 4; y++) { + STORE32L(L, buf + y); + LOAD32L(L1, buf + y); + if (L1 != L) { + fprintf(stderr, "\n32L failed at offset %d\n", y); + return 1; + } + STORE32H(L, buf + y); + LOAD32H(L1, buf + y); + if (L1 != L) { + fprintf(stderr, "\n32H failed at offset %d\n", y); + return 1; + } } - L = 0x12345678UL; - STORE32H (L, &buf[0]); - L = 0; - LOAD32H (L, &buf[0]); - if (L != 0x12345678UL) { - printf ("LOAD/STORE32 High don't work, %08lx", L); - return 1; - } LL = CONST64 (0x01020304050607); - STORE64H (LL, &buf[0]); - LL = 0; - LOAD64H (LL, &buf[0]) - if (LL != CONST64 (0x01020304050607)) { - printf ("LOAD/STORE64 High don't work"); - return 1; + for (y = 0; y < 8; y++) { + STORE64L(LL, buf + y); + LOAD64L(LL1, buf + y); + if (LL1 != LL) { + fprintf(stderr, "\n64L failed at offset %d\n", y); + return 1; + } + STORE64H(LL, buf + y); + LOAD64H(LL1, buf + y); + if (LL1 != LL) { + fprintf(stderr, "\n64H failed at offset %d\n", y); + return 1; + } } + return 0; } diff --git a/demos/test/test.c b/demos/test/test.c index 2ffac3c..b516804 100644 --- a/demos/test/test.c +++ b/demos/test/test.c @@ -112,15 +112,21 @@ void register_algs(void) register_hash (&whirlpool_desc); #endif - if (register_prng(&yarrow_desc) == -1) { - printf("Error registering yarrow PRNG\n"); - exit(-1); - } - - if (register_prng(&sprng_desc) == -1) { - printf("Error registering sprng PRNG\n"); - exit(-1); - } +#ifdef YARROW + register_prng(&yarrow_desc); +#endif +#ifdef FORTUNA + register_prng(&fortuna_desc); +#endif +#ifdef RC4 + register_prng(&rc4_desc); +#endif +#ifdef SPRNG + register_prng(&sprng_desc); +#endif +#ifdef SOBER128 + register_prng(&sober128_desc); +#endif } /* sort tests based on their requirement/services. Helps make sure dependencies are tested first */ diff --git a/demos/tv_gen.c b/demos/tv_gen.c index 17f7ad2..101976e 100644 --- a/demos/tv_gen.c +++ b/demos/tv_gen.c @@ -203,7 +203,7 @@ void cipher_gen(void) void hmac_gen(void) { unsigned char key[MAXBLOCKSIZE], output[MAXBLOCKSIZE], *input; - int x, y, z, kl, err; + int x, y, z, err; FILE *out; unsigned long len; diff --git a/demos/x86_prof.c b/demos/x86_prof.c index a478614..7293bd6 100644 --- a/demos/x86_prof.c +++ b/demos/x86_prof.c @@ -191,16 +191,26 @@ void reg_algs(void) register_hash (&whirlpool_desc); #endif +#ifndef YARROW + #error This demo requires Yarrow. +#endif register_prng(&yarrow_desc); +#ifdef FORTUNA register_prng(&fortuna_desc); +#endif +#ifdef RC4 register_prng(&rc4_desc); +#endif +#ifdef SOBER128 +register_prng(&sober128_desc); +#endif rng_make_prng(128, find_prng("yarrow"), &prng, NULL); } int time_keysched(void) { - unsigned long x, i, y1; + unsigned long x, y1; ulong64 t1, c1; symmetric_key skey; int kl; @@ -241,7 +251,7 @@ int time_cipher(void) symmetric_key skey; void (*func) (const unsigned char *, unsigned char *, symmetric_key *); unsigned char key[MAXBLOCKSIZE], pt[MAXBLOCKSIZE]; - + int err; printf ("\n\nECB Time Trials for the Symmetric Ciphers:\n"); no_results = 0; @@ -249,6 +259,12 @@ int time_cipher(void) cipher_descriptor[x].setup (key, cipher_descriptor[x].min_key_length, 0, &skey); + /* sanity check on cipher */ + if ((err = cipher_descriptor[x].test()) != CRYPT_OK) { + fprintf(stderr, "\n\nERROR: Cipher %s failed self-test %s\n", cipher_descriptor[x].name, error_to_string(err)); + exit(EXIT_FAILURE); + } + #define DO1 func(pt,pt,&skey); #define DO2 DO1 DO1 @@ -303,13 +319,20 @@ int time_hash(void) unsigned long x, y1, len; ulong64 t1, t2, c1, c2; hash_state md; - int (*func)(hash_state *, const unsigned char *, unsigned long); + int (*func)(hash_state *, const unsigned char *, unsigned long), err; unsigned char pt[MAXBLOCKSIZE]; printf ("\n\nHASH Time Trials for:\n"); no_results = 0; for (x = 0; hash_descriptor[x].name != NULL; x++) { + + /* sanity check on hash */ + if ((err = hash_descriptor[x].test()) != CRYPT_OK) { + fprintf(stderr, "\n\nERROR: Hash %s failed self-test %s\n", hash_descriptor[x].name, error_to_string(err)); + exit(EXIT_FAILURE); + } + hash_descriptor[x].init(&md); #define DO1 func(&md,pt,len); @@ -365,7 +388,7 @@ void time_mult(void) t1 = (t_read() - t1)>>1; if (t1 < t2) t2 = t1; } - printf("%3d digits: %9llu cycles\n", x, t2); + printf("%3lu digits: %9llu cycles\n", x, t2); } mp_clear_multi(&a,&b,&c,NULL); @@ -395,7 +418,7 @@ void time_sqr(void) t1 = (t_read() - t1)>>1; if (t1 < t2) t2 = t1; } - printf("%3d digits: %9llu cycles\n", x, t2); + printf("%3lu digits: %9llu cycles\n", x, t2); } mp_clear_multi(&a,&b,NULL); @@ -407,20 +430,27 @@ void time_prng(void) { ulong64 t1, t2; unsigned char buf[4096]; - prng_state prng; + prng_state tprng; unsigned long x, y; + int err; - printf("Timing PRNGs:\n"); + printf("Timing PRNGs (cycles/byte output, cycles add_entropy (32 bytes) :\n"); for (x = 0; prng_descriptor[x].name != NULL; x++) { - prng_descriptor[x].start(&prng); + + /* sanity check on prng */ + if ((err = prng_descriptor[x].test()) != CRYPT_OK) { + fprintf(stderr, "\n\nERROR: PRNG %s failed self-test %s\n", prng_descriptor[x].name, error_to_string(err)); + exit(EXIT_FAILURE); + } + + prng_descriptor[x].start(&tprng); zeromem(buf, 256); - prng_descriptor[x].add_entropy(buf, 256, &prng); - prng_descriptor[x].ready(&prng); + prng_descriptor[x].add_entropy(buf, 256, &tprng); + prng_descriptor[x].ready(&tprng); t2 = -1; -#define DO1 prng_descriptor[x].read(buf, 4096, &prng); +#define DO1 if (prng_descriptor[x].read(buf, 4096, &tprng) != 4096) { printf("\n\nERROR READ != 4096\n\n"); exit(EXIT_FAILURE); } #define DO2 DO1 DO1 - for (y = 0; y < 10000; y++) { t_start(); t1 = t_read(); @@ -428,14 +458,255 @@ void time_prng(void) t1 = (t_read() - t1)>>1; if (t1 < t2) t2 = t1; } - printf("%20s: %llu\n", prng_descriptor[x].name, t2>>12); - } + printf("%20s: %5llu ", prng_descriptor[x].name, t2>>12); #undef DO2 #undef DO1 +#define DO1 prng_descriptor[x].start(&tprng); prng_descriptor[x].add_entropy(buf, 32, &tprng); prng_descriptor[x].ready(&tprng); prng_descriptor[x].done(&tprng); +#define DO2 DO1 DO1 + for (y = 0; y < 10000; y++) { + t_start(); + t1 = t_read(); + DO2; + t1 = (t_read() - t1)>>1; + if (t1 < t2) t2 = t1; + } + printf("%5llu\n", t2); +#undef DO2 +#undef DO1 + + } } +/* time various RSA operations */ +void time_rsa(void) +{ + rsa_key key; + ulong64 t1, t2; + unsigned char buf[2][4096]; + unsigned long x, y, z, zzz; + int err, zz; + for (x = 1024; x <= 2048; x += 512) { + t2 = 0; + for (y = 0; y < 16; y++) { + t_start(); + t1 = t_read(); + if ((err = rsa_make_key(&prng, find_prng("yarrow"), x/8, 65537, &key)) != CRYPT_OK) { + fprintf(stderr, "\n\nrsa_make_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); + exit(EXIT_FAILURE); + } + t1 = t_read() - t1; + t2 += t1; + + if (y < 15) { + rsa_free(&key); + } + } + t2 >>= 4; + printf("RSA-%lu make_key took %15llu cycles\n", x, t2); + + t2 = 0; + for (y = 0; y < 16; y++) { + t_start(); + t1 = t_read(); + z = sizeof(buf[1]); + if ((err = rsa_encrypt_key(buf[0], 32, buf[1], &z, "testprog", 8, &prng, + find_prng("yarrow"), find_hash("sha1"), + &key)) != CRYPT_OK) { + fprintf(stderr, "\n\nrsa_encrypt_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); + exit(EXIT_FAILURE); + } + t1 = t_read() - t1; + t2 += t1; + } + t2 >>= 4; + printf("RSA-%lu encrypt_key took %15llu cycles\n", x, t2); + + t2 = 0; + for (y = 0; y < 16; y++) { + t_start(); + t1 = t_read(); + zzz = sizeof(buf[0]); + if ((err = rsa_decrypt_key(buf[1], z, buf[0], &zzz, "testprog", 8, &prng, + find_prng("yarrow"), find_hash("sha1"), + &zz, &key)) != CRYPT_OK) { + fprintf(stderr, "\n\nrsa_decrypt_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); + exit(EXIT_FAILURE); + } + t1 = t_read() - t1; + t2 += t1; + } + t2 >>= 4; + printf("RSA-%lu decrypt_key took %15llu cycles\n", x, t2); + + + rsa_free(&key); + } +} + +/* time various ECC operations */ +void time_ecc(void) +{ + ecc_key key; + ulong64 t1, t2; + unsigned char buf[2][4096]; + unsigned long i, x, y, z; + int err; + static unsigned long sizes[] = {160/8, 256/8, 521/8, 100000}; + + for (x = sizes[i=0]; x < 100000; x = sizes[++i]) { + t2 = 0; + for (y = 0; y < 16; y++) { + t_start(); + t1 = t_read(); + if ((err = ecc_make_key(&prng, find_prng("yarrow"), x, &key)) != CRYPT_OK) { + fprintf(stderr, "\n\necc_make_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); + exit(EXIT_FAILURE); + } + t1 = t_read() - t1; + t2 += t1; + + if (y < 15) { + ecc_free(&key); + } + } + t2 >>= 4; + printf("ECC-%lu make_key took %15llu cycles\n", x*8, t2); + + t2 = 0; + for (y = 0; y < 16; y++) { + t_start(); + t1 = t_read(); + z = sizeof(buf[1]); + if ((err = ecc_encrypt_key(buf[0], 20, buf[1], &z, &prng, find_prng("yarrow"), find_hash("sha1"), + &key)) != CRYPT_OK) { + fprintf(stderr, "\n\necc_encrypt_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); + exit(EXIT_FAILURE); + } + t1 = t_read() - t1; + t2 += t1; + } + t2 >>= 4; + printf("ECC-%lu encrypt_key took %15llu cycles\n", x*8, t2); + ecc_free(&key); + } +} + +/* time various DH operations */ +void time_dh(void) +{ + dh_key key; + ulong64 t1, t2; + unsigned char buf[2][4096]; + unsigned long i, x, y, z; + int err; + static unsigned long sizes[] = {768/8, 1024/8, 1536/8, 2048/8, 3072/8, 4096/8, 100000}; + + for (x = sizes[i=0]; x < 100000; x = sizes[++i]) { + t2 = 0; + for (y = 0; y < 16; y++) { + t_start(); + t1 = t_read(); + if ((err = dh_make_key(&prng, find_prng("yarrow"), x, &key)) != CRYPT_OK) { + fprintf(stderr, "\n\ndh_make_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); + exit(EXIT_FAILURE); + } + t1 = t_read() - t1; + t2 += t1; + + if (y < 15) { + dh_free(&key); + } + } + t2 >>= 4; + printf("DH-%4lu make_key took %15llu cycles\n", x*8, t2); + + t2 = 0; + for (y = 0; y < 16; y++) { + t_start(); + t1 = t_read(); + z = sizeof(buf[1]); + if ((err = dh_encrypt_key(buf[0], 20, buf[1], &z, &prng, find_prng("yarrow"), find_hash("sha1"), + &key)) != CRYPT_OK) { + fprintf(stderr, "\n\ndh_encrypt_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); + exit(EXIT_FAILURE); + } + t1 = t_read() - t1; + t2 += t1; + } + t2 >>= 4; + printf("DH-%4lu encrypt_key took %15llu cycles\n", x*8, t2); + dh_free(&key); + } +} + +#define MAC_SIZE 32 +void time_macs(void) +{ + unsigned char *buf, key[16], tag[16]; + ulong64 t1, t2; + unsigned long x, z; + int err, cipher_idx, hash_idx; + + printf("\nMAC Timings (cycles/byte on %dKB blocks):\n", MAC_SIZE); + + buf = XMALLOC(MAC_SIZE*1024); + if (buf == NULL) { + fprintf(stderr, "\n\nout of heap yo\n\n"); + exit(EXIT_FAILURE); + } + + cipher_idx = find_cipher("aes"); + hash_idx = find_hash("md5"); + + yarrow_read(buf, MAC_SIZE*1024, &prng); + yarrow_read(key, 16, &prng); + + t2 = -1; + for (x = 0; x < 10000; x++) { + t_start(); + t1 = t_read(); + z = 16; + if ((err = omac_memory(cipher_idx, key, 16, buf, MAC_SIZE*1024, tag, &z)) != CRYPT_OK) { + fprintf(stderr, "\n\nomac error... %s\n", error_to_string(err)); + exit(EXIT_FAILURE); + } + t1 = t_read() - t1; + if (t1 < t2) t2 = t1; + } + printf("OMAC-AES\t\t%9llu\n", t2/(MAC_SIZE*1024)); + + t2 = -1; + for (x = 0; x < 10000; x++) { + t_start(); + t1 = t_read(); + z = 16; + if ((err = pmac_memory(cipher_idx, key, 16, buf, MAC_SIZE*1024, tag, &z)) != CRYPT_OK) { + fprintf(stderr, "\n\npmac error... %s\n", error_to_string(err)); + exit(EXIT_FAILURE); + } + t1 = t_read() - t1; + if (t1 < t2) t2 = t1; + } + printf("PMAC-AES\t\t%9llu\n", t2/(MAC_SIZE*1024)); + + t2 = -1; + for (x = 0; x < 10000; x++) { + t_start(); + t1 = t_read(); + z = 16; + if ((err = hmac_memory(hash_idx, key, 16, buf, MAC_SIZE*1024, tag, &z)) != CRYPT_OK) { + fprintf(stderr, "\n\nhmac error... %s\n", error_to_string(err)); + exit(EXIT_FAILURE); + } + t1 = t_read() - t1; + if (t1 < t2) t2 = t1; + } + printf("HMAC-MD5\t\t%9llu\n", t2/(MAC_SIZE*1024)); + + XFREE(buf); +} int main(void) { @@ -446,10 +717,14 @@ int main(void) // init_timer(); time_mult(); time_sqr(); + time_rsa(); + time_dh(); + time_ecc(); time_prng(); time_cipher(); time_keysched(); time_hash(); + time_macs(); return EXIT_SUCCESS; } diff --git a/doc/crypt.pdf b/doc/crypt.pdf index b7555f50948b3d384ed15bac7c0435eb4719830b..778017af5d7619a0c8e9e03f305bf91b97d266f2 100644 GIT binary patch delta 160690 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 z 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 delta 150650 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"iIa2M!~#4G5BoAP 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 64 or every FORTUNA_WD calls to the r #ifdef FORTUNA +/* requries SHA256 and AES */ +#if !(defined(RIJNDAEL) && defined(SHA256)) + #error FORTUNA requires SHA256 and RIJNDAEL (AES) +#endif + +#ifndef FORTUNA_POOLS + #warning FORTUNA_POOLS was not previously defined (old headers?) + #define FORTUNA_POOLS 32 +#endif + +#if FORTUNA_POOLS < 4 || FORTUNA_POOLS > 32 + #error FORTUNA_POOLS must be in [4..32] +#endif + const struct _prng_descriptor fortuna_desc = { - "fortuna", + "fortuna", 1024, &fortuna_start, &fortuna_add_entropy, &fortuna_ready, &fortuna_read, &fortuna_done, &fortuna_export, - &fortuna_import - + &fortuna_import, + &fortuna_test }; /* update the IV */ static void fortuna_update_iv(prng_state *prng) { - int x; + int x; unsigned char *IV; /* update IV */ IV = prng->fortuna.IV; @@ -47,7 +61,7 @@ static void fortuna_update_iv(prng_state *prng) /* reseed the PRNG */ static int fortuna_reseed(prng_state *prng) { - unsigned char tmp[32]; + unsigned char tmp[MAXBLOCKSIZE]; hash_state md; int err, x; @@ -59,7 +73,7 @@ static int fortuna_reseed(prng_state *prng) return err; } - for (x = 0; x < 32; x++) { + for (x = 0; x < FORTUNA_POOLS; x++) { if (x == 0 || ((prng->fortuna.reset_cnt >> (x-1)) & 1) == 0) { /* terminate this hash */ if ((err = sha256_done(&prng->fortuna.pool[x], tmp)) != CRYPT_OK) { @@ -105,7 +119,7 @@ int fortuna_start(prng_state *prng) _ARGCHK(prng != NULL); /* initialize the pools */ - for (x = 0; x < 32; x++) { + for (x = 0; x < FORTUNA_POOLS; x++) { sha256_init(&prng->fortuna.pool[x]); } prng->fortuna.pool_idx = prng->fortuna.pool0_len = prng->fortuna.reset_cnt = @@ -144,9 +158,11 @@ int fortuna_add_entropy(const unsigned char *buf, unsigned long len, prng_state return err; } if (prng->fortuna.pool_idx == 0) { - prng->fortuna.pool0_len += len + 2; + prng->fortuna.pool0_len += len; + } + if (++(prng->fortuna.pool_idx) == FORTUNA_POOLS) { + prng->fortuna.pool_idx = 0; } - prng->fortuna.pool_idx = (prng->fortuna.pool_idx + 1) & 31; return CRYPT_OK; } @@ -160,7 +176,7 @@ unsigned long fortuna_read(unsigned char *dst, unsigned long len, prng_state *pr { unsigned char tmp[16]; int err; - unsigned long tlen, n; + unsigned long tlen; _ARGCHK(dst != NULL); _ARGCHK(prng != NULL); @@ -174,18 +190,21 @@ unsigned long fortuna_read(unsigned char *dst, unsigned long len, prng_state *pr /* now generate the blocks required */ tlen = len; - while (len > 0) { - if (len >= 16) { - /* encrypt the IV and store it */ - rijndael_ecb_encrypt(prng->fortuna.IV, dst, &prng->fortuna.skey); - dst += 16; - len -= 16; - } else { - rijndael_ecb_encrypt(prng->fortuna.IV, tmp, &prng->fortuna.skey); - XMEMCPY(dst, tmp, len); - len = 0; - } - fortuna_update_iv(prng); + + /* handle whole blocks without the extra memcpy */ + while (len >= 16) { + /* encrypt the IV and store it */ + rijndael_ecb_encrypt(prng->fortuna.IV, dst, &prng->fortuna.skey); + dst += 16; + len -= 16; + fortuna_update_iv(prng); + } + + /* left over bytes? */ + if (len > 0) { + rijndael_ecb_encrypt(prng->fortuna.IV, tmp, &prng->fortuna.skey); + XMEMCPY(dst, tmp, len); + fortuna_update_iv(prng); } /* generate new key */ @@ -201,33 +220,77 @@ unsigned long fortuna_read(unsigned char *dst, unsigned long len, prng_state *pr return tlen; } -void fortuna_done(prng_state *prng) +int fortuna_done(prng_state *prng) { + int err, x; + unsigned char tmp[32]; + _ARGCHK(prng != NULL); + + /* terminate all the hashes */ + for (x = 0; x < FORTUNA_POOLS; x++) { + if ((err = sha256_done(&(prng->fortuna.pool[x]), tmp)) != CRYPT_OK) { + return err; + } + } /* call cipher done when we invent one ;-) */ + +#ifdef CLEAN_STACK + zeromem(tmp, sizeof(tmp)); +#endif + + return CRYPT_OK; } int fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng) { - int x; + int x, err; + hash_state *md; _ARGCHK(out != NULL); _ARGCHK(outlen != NULL); _ARGCHK(prng != NULL); - /* we'll write 2048 bytes for s&g's */ - if (*outlen < 2048) { + /* we'll write bytes for s&g's */ + if (*outlen < 32*FORTUNA_POOLS) { return CRYPT_BUFFER_OVERFLOW; } - for (x = 0; x < 32; x++) { - if (fortuna_read(out+x*64, 64, prng) != 64) { - return CRYPT_ERROR_READPRNG; + md = XMALLOC(sizeof(hash_state)); + if (md == NULL) { + return CRYPT_MEM; + } + + /* to emit the state we copy each pool, terminate it then hash it again so + * an attacker who sees the state can't determine the current state of the PRNG + */ + for (x = 0; x < FORTUNA_POOLS; x++) { + /* copy the PRNG */ + XMEMCPY(md, &(prng->fortuna.pool[x]), sizeof(*md)); + + /* terminate it */ + if ((err = sha256_done(md, out+x*32)) != CRYPT_OK) { + goto __ERR; + } + + /* now hash it */ + sha256_init(md); + if ((err = sha256_process(md, out+x*32, 32)) != CRYPT_OK) { + goto __ERR; + } + if ((err = sha256_done(md, out+x*32)) != CRYPT_OK) { + goto __ERR; } } - *outlen = 2048; + *outlen = 32*FORTUNA_POOLS; + err = CRYPT_OK; - return CRYPT_OK; +__ERR: +#ifdef CLEAN_STACK + zeromem(md, sizeof(*md)); +#endif + XFREE(md); + return err; } int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng) @@ -237,19 +300,33 @@ int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prn _ARGCHK(in != NULL); _ARGCHK(prng != NULL); - if (inlen != 2048) { + if (inlen != 32*FORTUNA_POOLS) { return CRYPT_INVALID_ARG; } if ((err = fortuna_start(prng)) != CRYPT_OK) { return err; } - for (x = 0; x < 32; x++) { - if ((err = fortuna_add_entropy(in+x*64, 64, &prng)) != CRYPT_OK) { + for (x = 0; x < FORTUNA_POOLS; x++) { + if ((err = fortuna_add_entropy(in+x*32, 32, prng)) != CRYPT_OK) { return err; } } - return fortuna_ready(&prng); + return err; +} + +int fortuna_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + int err; + + if ((err = sha256_test()) != CRYPT_OK) { + return err; + } + return rijndael_test(); +#endif } #endif diff --git a/hmac_done.c b/hmac_done.c index 7ded6a1..62ebe47 100644 --- a/hmac_done.c +++ b/hmac_done.c @@ -64,17 +64,17 @@ int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen) return CRYPT_MEM; } - // Get the hash of the first HMAC vector plus the data + /* Get the hash of the first HMAC vector plus the data */ if ((err = hash_descriptor[hash].done(&hmac->md, isha)) != CRYPT_OK) { goto __ERR; } - // Create the second HMAC vector vector for step (3) + /* Create the second HMAC vector vector for step (3) */ for(i=0; i < HMAC_BLOCKSIZE; i++) { buf[i] = hmac->key[i] ^ 0x5C; } - // Now calculate the "outer" hash for step (5), (6), and (7) + /* Now calculate the "outer" hash for step (5), (6), and (7) */ hash_descriptor[hash].init(&hmac->md); if ((err = hash_descriptor[hash].process(&hmac->md, buf, HMAC_BLOCKSIZE)) != CRYPT_OK) { goto __ERR; @@ -86,7 +86,7 @@ int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen) goto __ERR; } - // copy to output + /* copy to output */ for (i = 0; i < hashsize && i < *outlen; i++) { hashOut[i] = buf[i]; } diff --git a/hmac_init.c b/hmac_init.c index 2cbf001..a1cc0b5 100644 --- a/hmac_init.c +++ b/hmac_init.c @@ -68,9 +68,9 @@ int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned lon return CRYPT_MEM; } - // (1) make sure we have a large enough key + /* (1) make sure we have a large enough key */ if(keylen > HMAC_BLOCKSIZE) { - z = (unsigned long)HMAC_BLOCKSIZE; + z = HMAC_BLOCKSIZE; if ((err = hash_memory(hash, key, keylen, hmac->key, &z)) != CRYPT_OK) { goto __ERR; } @@ -85,15 +85,21 @@ int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned lon } } - // Create the initial vector for step (3) + /* Create the initial vector for step (3) */ for(i=0; i < HMAC_BLOCKSIZE; i++) { buf[i] = hmac->key[i] ^ 0x36; } - // Pre-pend that to the hash data + /* Pre-pend that to the hash data */ hash_descriptor[hash].init(&hmac->md); - err = hash_descriptor[hash].process(&hmac->md, buf, HMAC_BLOCKSIZE); + if ((err = hash_descriptor[hash].process(&hmac->md, buf, HMAC_BLOCKSIZE)) != CRYPT_OK) { + goto __ERR; + } + goto done; __ERR: + /* free the key since we failed */ + XFREE(hmac->key); +done: #ifdef CLEAN_STACK zeromem(buf, HMAC_BLOCKSIZE); #endif diff --git a/hmac_test.c b/hmac_test.c index c0f2185..2b97777 100644 --- a/hmac_test.c +++ b/hmac_test.c @@ -291,6 +291,7 @@ Key First" } if(memcmp(digest, cases[i].digest, (size_t)hash_descriptor[hash].hashsize) != 0) { + failed++; #if 0 unsigned int j; printf("\nHMAC-%s test #%d:\n", cases[i].algo, cases[i].num); @@ -303,9 +304,8 @@ Key First" printf("%2x ", cases[i].digest[j]); } printf("\n"); + return CRYPT_ERROR; #endif - failed++; - //return CRYPT_ERROR; } else { /* printf("HMAC-%s test #%d: Passed\n", cases[i].algo, cases[i].num); */ } diff --git a/makefile b/makefile index b9e810f..f65aa5c 100644 --- a/makefile +++ b/makefile @@ -4,7 +4,7 @@ # Modified by Clay Culver # The version -VERSION=0.97b +VERSION=0.98 # Compiler and Linker Names #CC=gcc @@ -63,7 +63,7 @@ crypt_find_cipher_id.o crypt_find_prng.o crypt_prng_is_valid.o \ crypt_unregister_cipher.o crypt_cipher_is_valid.o crypt_find_hash.o \ crypt_hash_descriptor.o crypt_register_cipher.o crypt_unregister_hash.o \ \ -fortuna.o sprng.o yarrow.o rc4.o rng_get_bytes.o rng_make_prng.o \ +sober128.o fortuna.o sprng.o yarrow.o rc4.o rng_get_bytes.o rng_make_prng.o \ \ rand_prime.o is_prime.o \ \ @@ -171,10 +171,10 @@ small: library $(SMALLOBJECTS) $(CC) $(SMALLOBJECTS) $(LIBNAME) -o $(SMALL) $(WARN) x86_prof: library $(PROFS) - $(CC) $(PROFS) $(LIBNAME) -o $(PROF) + $(CC) $(PROFS) $(LIBNAME) $(EXTRALIBS) -o $(PROF) tv_gen: library $(TVS) - $(CC) $(TVS) $(LIBNAME) -o $(TV) + $(CC) $(TVS) $(LIBNAME) $(EXTRALIBS) -o $(TV) #This rule installs the library and the header files. This must be run #as root in order to have a high enough permission to write to the correct @@ -215,13 +215,21 @@ docdvi: crypt.tex echo hello > crypt.ind latex crypt > /dev/null latex crypt > /dev/null - makeindex.idx crypt + makeindex crypt.idx latex crypt > /dev/null #pretty build pretty: perl pretty.build +#for GCC 3.4+ +profiled: + make clean + make CFLAGS="$(CFLAGS) -fprofile-generate" EXTRALIBS=-lgcov x86_prof + ./x86_prof + rm *.o *.a x86_prof + make CFLAGS="$(CFLAGS) -fprofile-use" EXTRALIBS=-lgcov x86_prof + #beta beta: clean cd .. ; rm -rf crypt* libtomcrypt-$(VERSION)-beta ; mkdir libtomcrypt-$(VERSION)-beta ; \ diff --git a/makefile.cygwin_dll b/makefile.cygwin_dll index 0dece2f..5683dc6 100644 --- a/makefile.cygwin_dll +++ b/makefile.cygwin_dll @@ -28,7 +28,7 @@ crypt_find_cipher_id.o crypt_find_prng.o crypt_prng_is_valid.o \ crypt_unregister_cipher.o crypt_cipher_is_valid.o crypt_find_hash.o \ crypt_hash_descriptor.o crypt_register_cipher.o crypt_unregister_hash.o \ \ -sprng.o fortuna.o yarrow.o rc4.o rng_get_bytes.o rng_make_prng.o \ +sprng.o fortuna.o sober128.o yarrow.o rc4.o rng_get_bytes.o rng_make_prng.o \ \ rand_prime.o is_prime.o \ \ diff --git a/makefile.icc b/makefile.icc index 4019e2f..f73a323 100644 --- a/makefile.icc +++ b/makefile.icc @@ -79,7 +79,7 @@ crypt_find_cipher_id.o crypt_find_prng.o crypt_prng_is_valid.o \ crypt_unregister_cipher.o crypt_cipher_is_valid.o crypt_find_hash.o \ crypt_hash_descriptor.o crypt_register_cipher.o crypt_unregister_hash.o \ \ -sprng.o fortuna.o yarrow.o rc4.o rng_get_bytes.o rng_make_prng.o \ +sober128.o fortuna.o sprng.o yarrow.o rc4.o rng_get_bytes.o rng_make_prng.o \ \ rand_prime.o is_prime.o \ \ @@ -188,6 +188,13 @@ x86_prof: library $(PROFS) tv_gen: library $(TVS) $(CC) $(TVS) $(LIBNAME) -o $(TV) +profiled: + make clean + make CFLAGS="$(CFLAGS) -prof_gen" x86_prof + ./x86_prof + rm *.o *.a x86_prof + make CFLAGS="$(CFLAGS) -prof_use" x86_prof + #This rule installs the library and the header files. This must be run #as root in order to have a high enough permission to write to the correct diff --git a/makefile.msvc b/makefile.msvc index 6fd60ef..6209827 100644 --- a/makefile.msvc +++ b/makefile.msvc @@ -18,7 +18,7 @@ crypt_find_cipher_id.obj crypt_find_prng.obj crypt_prng_is_valid.obj crypt_unregister_cipher.obj crypt_cipher_is_valid.obj crypt_find_hash.obj \ crypt_hash_descriptor.obj crypt_register_cipher.obj crypt_unregister_hash.obj \ \ -sprng.obj fortuna.obj yarrow.obj rc4.obj rng_get_bytes.obj rng_make_prng.obj \ +sprng.obj fortuna.obj sober128.obj yarrow.obj rc4.obj rng_get_bytes.obj rng_make_prng.obj \ \ rand_prime.obj is_prime.obj \ \ diff --git a/mpi.c b/mpi.c index ae120d8..dc99927 100644 --- a/mpi.c +++ b/mpi.c @@ -4703,7 +4703,7 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c) res = s_mp_mul (a, b, c); } } - c->sign = neg; + c->sign = (c->used == 0) ? MP_ZPOS : neg; return res; } diff --git a/mycrypt_argchk.h b/mycrypt_argchk.h index 46b0e30..090d4d0 100644 --- a/mycrypt_argchk.h +++ b/mycrypt_argchk.h @@ -1,6 +1,4 @@ /* Defines the _ARGCHK macro used within the library */ - -/* ch1-01-1 */ /* ARGTYPE is defined in mycrypt_cfg.h */ #if ARGTYPE == 0 @@ -20,5 +18,4 @@ #define _ARGCHK(x) #endif -/* ch1-01-1 */ diff --git a/mycrypt_cfg.h b/mycrypt_cfg.h index d24824e..4d40c70 100644 --- a/mycrypt_cfg.h +++ b/mycrypt_cfg.h @@ -20,12 +20,16 @@ void XFREE(void *p); void *XMEMCPY(void *dest, const void *src, size_t n); int XMEMCMP(const void *s1, const void *s2, size_t n); -/* ch1-01-1 */ /* type of argument checking, 0=default, 1=fatal and 2=none */ #define ARGTYPE 0 -/* ch1-01-1 */ -/* Controls endianess and size of registers. Leave uncommented to get platform neutral [slower] code */ +/* Controls endianess and size of registers. Leave uncommented to get platform neutral [slower] code + * + * Note: in order to use the optimized macros your platform must support unaligned 32 and 64 bit read/writes. + * The x86 platforms allow this but some others [ARM for instance] do not. On those platforms you **MUST** + * use the portable [slower] macros. + */ + /* detect x86-32 machines somewhat */ #if defined(INTEL_CC) || (defined(_MSC_VER) && defined(WIN32)) || (defined(__GNUC__) && (defined(__DJGPP__) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__i386__))) #define ENDIAN_LITTLE @@ -52,12 +56,6 @@ int XMEMCMP(const void *s1, const void *s2, size_t n); #define ENDIAN_NEUTRAL #endif -#ifdef YARROW - #ifndef CTR - #error YARROW requires CTR chaining mode to be defined! - #endif -#endif - /* packet code */ #if defined(MRSA) || defined(MDH) || defined(MECC) #define PACKET diff --git a/mycrypt_custom.h b/mycrypt_custom.h index 1e00830..c71579f 100644 --- a/mycrypt_custom.h +++ b/mycrypt_custom.h @@ -82,18 +82,29 @@ /* Various tidbits of modern neatoness */ #define BASE64 + +/* Yarrow */ #define YARROW // which descriptor of AES to use? // 0 = rijndael_enc 1 = aes_enc, 2 = rijndael [full], 3 = aes [full] #define YARROW_AES 0 + +#if defined(YARROW) && !defined(CTR) + #error YARROW requires CTR chaining mode to be defined! +#endif + #define SPRNG #define RC4 -/* Fortuna */ +/* Fortuna PRNG */ #define FORTUNA /* reseed every N calls to the read function */ -#define FORTUNA_WD 1024 +#define FORTUNA_WD 10 +/* number of pools (4..32) can save a bit of ram by lowering the count */ +#define FORTUNA_POOLS 32 +/* Greg's SOBER128 PRNG ;-0 */ +#define SOBER128 #define DEVRANDOM #define TRY_URANDOM_FIRST @@ -139,6 +150,12 @@ /* Use SSE2 optimizations in LTM? Requires GCC or ICC and a P4 or K8 processor */ // #define LTMSSE +/* prevents the code from being "unportable" at least to non i386 platforms */ +#if defined(LTMSSE) && !( (defined(__GNUC__) && defined(__i386__)) || defined(INTEL_CC)) + #warning LTMSSE is only available for GNU CC (i386) or Intel CC + #undef LTMSSE +#endif + /* PKCS #1 and #5 stuff */ #define PKCS_1 #define PKCS_5 diff --git a/mycrypt_prng.h b/mycrypt_prng.h index 3ded2cc..76d342e 100644 --- a/mycrypt_prng.h +++ b/mycrypt_prng.h @@ -11,7 +11,7 @@ struct rc4_prng { }; struct fortuna_prng { - hash_state pool[32]; /* the 32 pools */ + hash_state pool[FORTUNA_POOLS]; /* the pools */ symmetric_key skey; @@ -25,21 +25,44 @@ struct fortuna_prng { ulong64 reset_cnt; /* number of times we have reset */ }; +struct sober128_prng { + ulong32 R[17], /* Working storage for the shift register */ + initR[17], /* saved register contents */ + konst, /* key dependent constant */ + sbuf; /* partial word encryption buffer */ + + int nbuf, /* number of part-word stream bits buffered */ + flag, /* first add_entropy call or not? */ + set; /* did we call add_entropy to set key? */ + +}; + typedef union Prng_state { +#ifdef YARROW struct yarrow_prng yarrow; +#endif +#ifdef RC4 struct rc4_prng rc4; +#endif +#ifdef FORTUNA struct fortuna_prng fortuna; +#endif +#ifdef SOBER128 + struct sober128_prng sober128; +#endif } prng_state; extern struct _prng_descriptor { char *name; + int export_size; /* size in bytes of exported state */ int (*start)(prng_state *); int (*add_entropy)(const unsigned char *, unsigned long, prng_state *); int (*ready)(prng_state *); unsigned long (*read)(unsigned char *, unsigned long, prng_state *); - void (*done)(prng_state *); + int (*done)(prng_state *); int (*export)(unsigned char *, unsigned long *, prng_state *); int (*import)(const unsigned char *, unsigned long, prng_state *); + int (*test)(void); } prng_descriptor[]; #ifdef YARROW @@ -47,9 +70,10 @@ extern struct _prng_descriptor { int yarrow_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); int yarrow_ready(prng_state *prng); unsigned long yarrow_read(unsigned char *buf, unsigned long len, prng_state *prng); - void yarrow_done(prng_state *prng); + int yarrow_done(prng_state *prng); int yarrow_export(unsigned char *out, unsigned long *outlen, prng_state *prng); int yarrow_import(const unsigned char *in, unsigned long inlen, prng_state *prng); + int yarrow_test(void); extern const struct _prng_descriptor yarrow_desc; #endif @@ -58,9 +82,10 @@ extern struct _prng_descriptor { int fortuna_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); int fortuna_ready(prng_state *prng); unsigned long fortuna_read(unsigned char *buf, unsigned long len, prng_state *prng); - void fortuna_done(prng_state *prng); + int fortuna_done(prng_state *prng); int fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng); int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng); + int fortuna_test(void); extern const struct _prng_descriptor fortuna_desc; #endif @@ -69,9 +94,10 @@ extern struct _prng_descriptor { int rc4_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); int rc4_ready(prng_state *prng); unsigned long rc4_read(unsigned char *buf, unsigned long len, prng_state *prng); - void rc4_done(prng_state *prng); + int rc4_done(prng_state *prng); int rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng); int rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng); + int rc4_test(void); extern const struct _prng_descriptor rc4_desc; #endif @@ -80,26 +106,36 @@ extern struct _prng_descriptor { int sprng_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); int sprng_ready(prng_state *prng); unsigned long sprng_read(unsigned char *buf, unsigned long len, prng_state *prng); - void sprng_done(prng_state *prng); + int sprng_done(prng_state *prng); int sprng_export(unsigned char *out, unsigned long *outlen, prng_state *prng); int sprng_import(const unsigned char *in, unsigned long inlen, prng_state *prng); + int sprng_test(void); extern const struct _prng_descriptor sprng_desc; #endif +#ifdef SOBER128 + int sober128_start(prng_state *prng); + int sober128_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); + int sober128_ready(prng_state *prng); + unsigned long sober128_read(unsigned char *buf, unsigned long len, prng_state *prng); + int sober128_done(prng_state *prng); + int sober128_export(unsigned char *out, unsigned long *outlen, prng_state *prng); + int sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng); + int sober128_test(void); + extern const struct _prng_descriptor sober128_desc; +#endif + int find_prng(const char *name); int register_prng(const struct _prng_descriptor *prng); int unregister_prng(const struct _prng_descriptor *prng); int prng_is_valid(int idx); - /* Slow RNG you **might** be able to use to seed a PRNG with. Be careful as this * might not work on all platforms as planned */ -/* ch2-02-1 */ - unsigned long rng_get_bytes(unsigned char *buf, +unsigned long rng_get_bytes(unsigned char *buf, unsigned long len, void (*callback)(void)); -/* ch2-02-1 */ - int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void)); +int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void)); diff --git a/noekeon.c b/noekeon.c index 7c6e87f..ef4796c 100644 --- a/noekeon.c +++ b/noekeon.c @@ -33,7 +33,6 @@ static const ulong32 RC[] = { 0x000000d4UL }; - #define kTHETA(a, b, c, d) \ temp = a^c; temp = temp ^ ROL(temp, 8) ^ ROR(temp, 8); \ b ^= temp; d ^= temp; \ @@ -97,9 +96,7 @@ void noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_k #endif { ulong32 a,b,c,d,temp; -#ifdef SMALL_CODE int r; -#endif _ARGCHK(key != NULL); _ARGCHK(pt != NULL); @@ -115,16 +112,9 @@ void noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_k GAMMA(a,b,c,d); \ PI2(a,b,c,d); -#ifdef SMALL_CODE for (r = 0; r < 16; ++r) { ROUND(r); } -#else - ROUND( 0); ROUND( 1); ROUND( 2); ROUND( 3); - ROUND( 4); ROUND( 5); ROUND( 6); ROUND( 7); - ROUND( 8); ROUND( 9); ROUND(10); ROUND(11); - ROUND(12); ROUND(13); ROUND(14); ROUND(15); -#endif #undef ROUND @@ -150,9 +140,7 @@ void noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_k #endif { ulong32 a,b,c,d, temp; -#ifdef SMALL_CODE int r; -#endif _ARGCHK(key != NULL); _ARGCHK(pt != NULL); @@ -169,17 +157,10 @@ void noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_k GAMMA(a,b,c,d); \ PI2(a,b,c,d); -#ifdef SMALL_CODE for (r = 16; r > 0; --r) { ROUND(r); } -#else - ROUND(16); ROUND(15); ROUND(14); ROUND(13); - ROUND(12); ROUND(11); ROUND(10); ROUND( 9); - ROUND( 8); ROUND( 7); ROUND( 6); ROUND( 5); - ROUND( 4); ROUND( 3); ROUND( 2); ROUND( 1); -#endif - + #undef ROUND THETA(key->noekeon.dK, a,b,c,d); diff --git a/notes/tech0004.txt b/notes/tech0004.txt new file mode 100644 index 0000000..2acd378 --- /dev/null +++ b/notes/tech0004.txt @@ -0,0 +1,91 @@ +Tech Note 0004 +Using Yarrow, Fortuna and SOBER-128 +Tom St Denis + +Introduction +------------ + +This tech note explains how to use three of the more useful pseudo random number generators and their +own little "issues". While all of the PRNGs have the same API and are roughly used in the same +manner their effectiveness really depends on the user knowing how they work. + + +Yarrow +------ + +Yarrow is by far the simplest of the PRNGs. It gathers bits of entropy by hashing the pool state +plus the additional bits storing the message digest back in the pool. E.g. + +pool = hash(pool || newbits) + +Simply dump bits into the PRNG via yarrow_add_entropy() and call yarrow_ready() when you want to +put them to use. This PRNG while simple is not entirely safe. An attacker who learns the state +of the pool and can control future events can control the PRNG. This requires an active attacker but +isn't entire impossible. + +The pool is then used as a key for a cipher that is used in CTR mode. + +Yarrow is mostly meant for short-term programs [e.g. like file utils]. This particular implementation +is not meant for long-term usage. + +Fortuna +------- + +Fortuna was designed by Niels Fergusson and Bruce Schneier [Bruce is also the guy who invented Yarrow]. It +operates on a more defensive level than Yarrow. Instead of 1 entropy pool it has 32 and the new entropy +is spread [round robin] in all of the pools. + +That is, each call to fortuna_add_entropy() puts the bits in the next [in the sequenece] pool of entropy. +Effective bits are added to the pool by sending them through a hash [but not terminating the hash]. + +Here's the main catch though. When the PRNG must be reseeded [so that you can extract bits from it] only +certain pools are used. More precisely the i'th pool is used every 2**i'th reseeding. For example, pool[0] +is always used. pool[1] is used every second reseeding, pool[2] every fourth. + +The pools are hashed together along with the current key and the result is the new key for a cipher which +operates in CTR mode [more about that in a sec]. + +Now this may seem odd at first however there is a good reason behind it. An attacker who learns pool[0] won't +strictly know the other pools. So the recovery rate of is not 0. In fact pool[0] can be completely +compromised and the PRNG will still eventually recover. The value FORTUNA_WD is the "WatchDog" counter. +Every FORTUNA_WD calls to fortuna_read will invoke the reseed operation. By default this is set to 10 which +means after 10 calls the PRNG will reseed itself. + +The pools are combined with the running cipher key [256 bits] so that a cipher in CTR mode can produce +the stream. Unlike Yarrow the cipher is re-keyed after every call to fortuna_read() [so one big call +would be faster than many smaller calls]. This prevents too much data being encrypted under the same +key [and mitigates a flaw in CTR mode that the same block can't be emitted twice under the same key]. + +Fortuna is really meant for a kernel-level PRNG. The more sources [and often] you feed into it the +healthier it will be. It's also meant to be used for long term purposes. Since it can recover from +compromises it is harder to control it. + +SOBER-128 +------ + +SOBER-128 is actually a stream cipher but like most ciphers can easily be modelled in the context of a PRNG. +This PRNG is extremely fast [4 cycles/byte on a P4] and was designed by a well known cryptographer [Greg Rose]. + +SOBER-128 doesn't really "act" like the other two PRNGs. It's meant to be seeded once and then read as +required. In such a sense it isn't a "system PRNG" but useful short term purposes. In particular +the sober128_read() function actually XORs against the input buffer you specify. This allows the +read() function to be used as an "encrypt" function as well. + +You can only key SOBER-128 once [by calling sober128_add_entropy()]. Once it it is keyed subsequent +calls to add_entropy() will be considered a "re-IV" operation. Changing the IV allows you to use same +initial key and not produce the same output stream. It also lets you differentiate packets. E.g. each +packet has it's own IV. + +All inputs to sober128_add_entropy() must have a length that is a multiple of four. + +Overall +------- + +Since SOBER-128 is *much* faster than the other two PRNGs a good setup would be to use Fortuna as your +system-wide PRNG and use SOBER-128 [key'ed from Fortuna] for encrypting streams or as a PRNG for +simulations. + +Yarrow is still a good candidate but only for "short lived" programs. However, since Fortuna is faster +[by about 10 cycles/byte on a P4] I'd use Fortuna anyways... + +Tom \ No newline at end of file diff --git a/pretty.build b/pretty.build index 0046d34..3eac213 100644 --- a/pretty.build +++ b/pretty.build @@ -21,8 +21,9 @@ foreach my $filename (glob "*.c") { if (!($filename =~ "sha384.c")) { if (!($filename =~ "dh_sys.c")) { if (!($filename =~ "ecc_sys.c")) { + if (!($filename =~ "sober128tab.c")) { ++$count; - }}}}}}} + }}}}}}}} } print "Source files to build: $count\nBuilding...\n"; my $i = 0; @@ -36,6 +37,7 @@ foreach my $filename (glob "*.c") { if (!($filename =~ "sha384.c")) { if (!($filename =~ "dh_sys.c")) { if (!($filename =~ "ecc_sys.c")) { + if (!($filename =~ "sober128tab.c")) { printf("Building %3.2f%%, ", (++$i/$count)*100.0); if ($i % 4 == 0) { print "/, "; } if ($i % 4 == 1) { print "-, "; } @@ -71,7 +73,7 @@ foreach my $filename (glob "*.c") { my $delay = time - $starttime; $rate = $i/$delay; } - }}}}}}} + }}}}}}}} } # finish building the library diff --git a/rc4.c b/rc4.c index b340204..e8139ad 100644 --- a/rc4.c +++ b/rc4.c @@ -14,14 +14,15 @@ const struct _prng_descriptor rc4_desc = { - "rc4", + "rc4", 32, &rc4_start, &rc4_add_entropy, &rc4_ready, &rc4_read, &rc4_done, &rc4_export, - &rc4_import + &rc4_import, + &rc4_test }; int rc4_start(prng_state *prng) @@ -36,11 +37,18 @@ int rc4_start(prng_state *prng) int rc4_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng) { - _ARGCHK(buf != NULL); + _ARGCHK(buf != NULL); _ARGCHK(prng != NULL); - + + /* trim as required */ if (prng->rc4.x + len > 256) { - return CRYPT_INVALID_KEYSIZE; + if (prng->rc4.x == 256) { + /* I can't possibly accept another byte, ok maybe a mint wafer... */ + return CRYPT_OK; + } else { + /* only accept part of it */ + len = 256 - prng->rc4.x; + } } while (len--) { @@ -53,26 +61,30 @@ int rc4_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prn int rc4_ready(prng_state *prng) { - unsigned char key[256], tmp; - int keylen, x, y; + unsigned char key[256], tmp, *s; + int keylen, x, y, j; _ARGCHK(prng != NULL); /* extract the key */ - XMEMCPY(key, prng->rc4.buf, 256); + s = prng->rc4.buf; + XMEMCPY(key, s, 256); keylen = prng->rc4.x; /* make RC4 perm and shuffle */ for (x = 0; x < 256; x++) { - prng->rc4.buf[x] = x; + s[x] = x; } - for (x = y = 0; x < 256; x++) { - y = (y + prng->rc4.buf[x] + key[x % keylen]) & 255; - tmp = prng->rc4.buf[x]; prng->rc4.buf[x] = prng->rc4.buf[y]; prng->rc4.buf[y] = tmp; + for (j = x = y = 0; x < 256; x++) { + y = (y + prng->rc4.buf[x] + key[j++]) & 255; + if (j == keylen) { + j = 0; + } + tmp = s[x]; s[x] = s[y]; s[y] = tmp; } - prng->rc4.x = x; - prng->rc4.y = y; + prng->rc4.x = 0; + prng->rc4.y = 0; #ifdef CLEAN_STACK zeromem(key, sizeof(key)); @@ -83,8 +95,7 @@ int rc4_ready(prng_state *prng) unsigned long rc4_read(unsigned char *buf, unsigned long len, prng_state *prng) { - int x, y; - unsigned char *s, tmp; + unsigned char x, y, *s, tmp; unsigned long n; _ARGCHK(buf != NULL); @@ -99,31 +110,99 @@ unsigned long rc4_read(unsigned char *buf, unsigned long len, prng_state *prng) y = (y + s[x]) & 255; tmp = s[x]; s[x] = s[y]; s[y] = tmp; tmp = (s[x] + s[y]) & 255; - *buf++ = s[tmp]; + *buf++ ^= s[tmp]; } prng->rc4.x = x; prng->rc4.y = y; return n; } -void rc4_done(prng_state *prng) +int rc4_done(prng_state *prng) { _ARGCHK(prng != NULL); + return CRYPT_OK; } int rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng) { _ARGCHK(outlen != NULL); + _ARGCHK(out != NULL); + _ARGCHK(prng != NULL); + + if (*outlen < 32) { + return CRYPT_BUFFER_OVERFLOW; + } + + if (rc4_read(out, 32, prng) != 32) { + return CRYPT_ERROR_READPRNG; + } + *outlen = 32; - *outlen = 0; return CRYPT_OK; } int rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng) { - return CRYPT_OK; + int err; + _ARGCHK(in != NULL); + _ARGCHK(prng != NULL); + + if (inlen != 32) { + return CRYPT_INVALID_ARG; + } + + if ((err = rc4_start(prng)) != CRYPT_OK) { + return err; + } + return rc4_add_entropy(in, 32, prng); } +int rc4_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + unsigned char key[8], pt[8], ct[8]; + } tests[] = { +{ + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, + { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 } +} +}; + prng_state prng; + unsigned char dst[8]; + int err, x; + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + if ((err = rc4_start(&prng)) != CRYPT_OK) { + return err; + } + if ((err = rc4_add_entropy(tests[x].key, 8, &prng)) != CRYPT_OK) { + return err; + } + if ((err = rc4_ready(&prng)) != CRYPT_OK) { + return err; + } + XMEMCPY(dst, tests[x].pt, 8); + if (rc4_read(dst, 8, &prng) != 8) { + return CRYPT_ERROR_READPRNG; + } + rc4_done(&prng); + if (memcmp(dst, tests[x].ct, 8)) { +#if 0 + int y; + printf("\n\nRC4 failed, I got:\n"); + for (y = 0; y < 8; y++) printf("%02x ", dst[y]); + printf("\n"); +#endif + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} #endif diff --git a/rsa_decrypt_key.c b/rsa_decrypt_key.c index ccdc8b1..47a922c 100644 --- a/rsa_decrypt_key.c +++ b/rsa_decrypt_key.c @@ -13,7 +13,7 @@ #ifdef MRSA -/* decrypt then OAEP depad */ +/* (PKCS #1 v2.0) decrypt then OAEP depad */ int rsa_decrypt_key(const unsigned char *in, unsigned long inlen, unsigned char *outkey, unsigned long *keylen, const unsigned char *lparam, unsigned long lparamlen, @@ -30,6 +30,9 @@ int rsa_decrypt_key(const unsigned char *in, unsigned long inlen, _ARGCHK(key != NULL); _ARGCHK(res != NULL); + /* default to invalid */ + *res = 0; + /* valid hash/prng ? */ if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { return err; diff --git a/rsa_encrypt_key.c b/rsa_encrypt_key.c index fc5076b..c0c8400 100644 --- a/rsa_encrypt_key.c +++ b/rsa_encrypt_key.c @@ -13,7 +13,7 @@ #ifdef MRSA -/* OAEP pad then encrypt */ +/* (PKCS #1 v2.0) OAEP pad then encrypt */ int rsa_encrypt_key(const unsigned char *inkey, unsigned long inlen, unsigned char *outkey, unsigned long *outlen, const unsigned char *lparam, unsigned long lparamlen, diff --git a/rsa_export.c b/rsa_export.c index cedd26d..a5c20c0 100644 --- a/rsa_export.c +++ b/rsa_export.c @@ -13,6 +13,7 @@ #ifdef MRSA +/* Export an RSA key */ int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key) { unsigned long y, z; diff --git a/rsa_exptmod.c b/rsa_exptmod.c index 1f6daae..e94fad7 100644 --- a/rsa_exptmod.c +++ b/rsa_exptmod.c @@ -14,6 +14,7 @@ #ifdef MRSA +/* compute an RSA modular exponentiation */ int rsa_exptmod(const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen, int which, prng_state *prng, int prng_idx, diff --git a/rsa_make_key.c b/rsa_make_key.c index e96bea3..ded68cf 100644 --- a/rsa_make_key.c +++ b/rsa_make_key.c @@ -69,7 +69,7 @@ int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key) if ((err = mp_invmod(&key->e, &tmp1, &key->d)) != MP_OKAY) { goto error2; } /* key->d = 1/e mod lcm(p-1,q-1) */ if ((err = mp_mul(&p, &q, &key->N)) != MP_OKAY) { goto error2; } /* key->N = pq */ -/* optimize for CRT now */ + /* optimize for CRT now */ /* find d mod q-1 and d mod p-1 */ if ((err = mp_sub_d(&p, 1, &tmp1)) != MP_OKAY) { goto error2; } /* tmp1 = q-1 */ if ((err = mp_sub_d(&q, 1, &tmp2)) != MP_OKAY) { goto error2; } /* tmp2 = p-1 */ diff --git a/rsa_sign_hash.c b/rsa_sign_hash.c index decac6c..a5d2f95 100644 --- a/rsa_sign_hash.c +++ b/rsa_sign_hash.c @@ -13,7 +13,7 @@ #ifdef MRSA -/* PSS pad then sign */ +/* (PKCS #1, v2.0) PSS pad then sign */ int rsa_sign_hash(const unsigned char *msghash, unsigned long msghashlen, unsigned char *sig, unsigned long *siglen, prng_state *prng, int prng_idx, diff --git a/rsa_v15_decrypt_key.c b/rsa_v15_decrypt_key.c index fa187ba..e8c496b 100644 --- a/rsa_v15_decrypt_key.c +++ b/rsa_v15_decrypt_key.c @@ -26,6 +26,9 @@ int rsa_v15_decrypt_key(const unsigned char *in, unsigned long inlen, _ARGCHK(outkey != NULL); _ARGCHK(key != NULL); _ARGCHK(res != NULL); + + /* default to invalid */ + *res = 0; /* valid prng ? */ if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { diff --git a/rsa_v15_verify_hash.c b/rsa_v15_verify_hash.c index 80ca72a..6f6ee99 100644 --- a/rsa_v15_verify_hash.c +++ b/rsa_v15_verify_hash.c @@ -13,7 +13,7 @@ #ifdef MRSA -/* design then PKCS v1.5 depad */ +/* de-sign then PKCS v1.5 depad */ int rsa_v15_verify_hash(const unsigned char *sig, unsigned long siglen, const unsigned char *msghash, unsigned long msghashlen, prng_state *prng, int prng_idx, @@ -28,6 +28,9 @@ int rsa_v15_verify_hash(const unsigned char *sig, unsigned long siglen, _ARGCHK(sig != NULL); _ARGCHK(stat != NULL); _ARGCHK(key != NULL); + + /* default to invalid */ + *stat = 0; /* valid hash ? */ if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { diff --git a/rsa_verify_hash.c b/rsa_verify_hash.c index 5e3664b..1da1af3 100644 --- a/rsa_verify_hash.c +++ b/rsa_verify_hash.c @@ -13,7 +13,7 @@ #ifdef MRSA -/* design then PSS depad */ +/* (PKCS #1, v2.0) de-sign then PSS depad */ int rsa_verify_hash(const unsigned char *sig, unsigned long siglen, const unsigned char *msghash, unsigned long msghashlen, prng_state *prng, int prng_idx, @@ -28,6 +28,9 @@ int rsa_verify_hash(const unsigned char *sig, unsigned long siglen, _ARGCHK(sig != NULL); _ARGCHK(stat != NULL); _ARGCHK(key != NULL); + + /* default to invalid */ + *stat = 0; /* valid hash ? */ if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { diff --git a/sober128.c b/sober128.c new file mode 100644 index 0000000..dee7471 --- /dev/null +++ b/sober128.c @@ -0,0 +1,444 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ +#include "mycrypt.h" + +/* Implementation of SOBER-128 by Tom St Denis. + * Based on s128fast.c reference code supplied by Greg Rose of QUALCOMM. + */ + +#ifdef SOBER128 + +#include "sober128tab.c" + +const struct _prng_descriptor sober128_desc = +{ + "sober128", 64, + &sober128_start, + &sober128_add_entropy, + &sober128_ready, + &sober128_read, + &sober128_done, + &sober128_export, + &sober128_import, + &sober128_test +}; + +/* don't change these... */ +#define N 17 +#define FOLD N /* how many iterations of folding to do */ +#define INITKONST 0x6996c53a /* value of KONST to use during key loading */ +#define KEYP 15 /* where to insert key words */ +#define FOLDP 4 /* where to insert non-linear feedback */ + +#define B(x,i) ((unsigned char)(((x) >> (8*i)) & 0xFF)) + +static ulong32 BYTE2WORD(unsigned char *b) +{ + ulong32 t; + LOAD32L(t, b); + return t; +} + +#define WORD2BYTE(w, b) STORE32L(b, w) + +static void XORWORD(ulong32 w, unsigned char *b) +{ + ulong32 t; + LOAD32L(t, b); + t ^= w; + STORE32L(t, b); +} + +/* give correct offset for the current position of the register, + * where logically R[0] is at position "zero". + */ +#define OFF(zero, i) (((zero)+(i)) % N) + +/* step the LFSR */ +/* After stepping, "zero" moves right one place */ +#define STEP(R,z) \ + R[OFF(z,0)] = R[OFF(z,15)] ^ R[OFF(z,4)] ^ (R[OFF(z,0)] << 8) ^ Multab[(R[OFF(z,0)] >> 24) & 0xFF]; + +static void cycle(ulong32 *R) +{ + ulong32 t; + int i; + + STEP(R,0); + t = R[0]; + for (i = 1; i < N; ++i) { + R[i-1] = R[i]; + } + R[N-1] = t; +} + +/* Return a non-linear function of some parts of the register. + */ +#define NLFUNC(c,z) \ +{ \ + t = c->R[OFF(z,0)] + c->R[OFF(z,16)]; \ + t ^= Sbox[(t >> 24) & 0xFF]; \ + t = ROR(t, 8); \ + t = ((t + c->R[OFF(z,1)]) ^ c->konst) + c->R[OFF(z,6)]; \ + t ^= Sbox[(t >> 24) & 0xFF]; \ + t = t + c->R[OFF(z,13)]; \ +} + +static ulong32 nltap(struct sober128_prng *c) +{ + ulong32 t; + NLFUNC(c, 0); + return t; +} + +/* initialise to known state + */ +int sober128_start(prng_state *prng) +{ + int i; + struct sober128_prng *c; + + _ARGCHK(prng != NULL); + + c = &(prng->sober128); + + /* Register initialised to Fibonacci numbers */ + c->R[0] = 1; + c->R[1] = 1; + for (i = 2; i < N; ++i) { + c->R[i] = c->R[i-1] + c->R[i-2]; + } + c->konst = INITKONST; + + /* next add_entropy will be the key */ + c->flag = 1; + c->set = 0; + + return CRYPT_OK; +} + +/* Save the current register state + */ +static void s128_savestate(struct sober128_prng *c) +{ + int i; + for (i = 0; i < N; ++i) { + c->initR[i] = c->R[i]; + } +} + +/* initialise to previously saved register state + */ +static void s128_reloadstate(struct sober128_prng *c) +{ + int i; + + for (i = 0; i < N; ++i) { + c->R[i] = c->initR[i]; + } +} + +/* Initialise "konst" + */ +static void s128_genkonst(struct sober128_prng *c) +{ + ulong32 newkonst; + + do { + cycle(c->R); + newkonst = nltap(c); + } while ((newkonst & 0xFF000000) == 0); + c->konst = newkonst; +} + +/* Load key material into the register + */ +#define ADDKEY(k) \ + c->R[KEYP] += (k); + +#define XORNL(nl) \ + c->R[FOLDP] ^= (nl); + +/* nonlinear diffusion of register for key */ +#define DROUND(z) STEP(c->R,z); NLFUNC(c,(z+1)); c->R[OFF((z+1),FOLDP)] ^= t; +static void s128_diffuse(struct sober128_prng *c) +{ + ulong32 t; + /* relies on FOLD == N == 17! */ + DROUND(0); + DROUND(1); + DROUND(2); + DROUND(3); + DROUND(4); + DROUND(5); + DROUND(6); + DROUND(7); + DROUND(8); + DROUND(9); + DROUND(10); + DROUND(11); + DROUND(12); + DROUND(13); + DROUND(14); + DROUND(15); + DROUND(16); +} + +int sober128_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng) +{ + struct sober128_prng *c; + ulong32 i, k; + + _ARGCHK(buf != NULL); + _ARGCHK(prng != NULL); + c = &(prng->sober128); + + if (c->flag == 1) { + /* this is the first call to the add_entropy so this input is the key */ + /* len must be multiple of 4 bytes */ + if ((len & 3) != 0) { + return CRYPT_INVALID_KEYSIZE; + } + + for (i = 0; i < len; i += 4) { + k = BYTE2WORD((unsigned char *)&buf[i]); + ADDKEY(k); + cycle(c->R); + XORNL(nltap(c)); + } + + /* also fold in the length of the key */ + ADDKEY(len); + + /* now diffuse */ + s128_diffuse(c); + + s128_genkonst(c); + s128_savestate(c); + c->nbuf = 0; + c->flag = 0; + c->set = 1; + } else { + /* ok we are adding an IV then... */ + s128_reloadstate(c); + + /* len must be multiple of 4 bytes */ + if ((len & 3) != 0) { + return CRYPT_INVALID_KEYSIZE; + } + + for (i = 0; i < len; i += 4) { + k = BYTE2WORD((unsigned char *)&buf[i]); + ADDKEY(k); + cycle(c->R); + XORNL(nltap(c)); + } + + /* also fold in the length of the key */ + ADDKEY(len); + + /* now diffuse */ + s128_diffuse(c); + c->nbuf = 0; + } + + return CRYPT_OK; +} + +int sober128_ready(prng_state *prng) +{ + return prng->sober128.set == 1 ? CRYPT_OK : CRYPT_ERROR; +} + +/* XOR pseudo-random bytes into buffer + */ +#define SROUND(z) STEP(c->R,z); NLFUNC(c,(z+1)); XORWORD(t, buf+(z*4)); + +unsigned long sober128_read(unsigned char *buf, unsigned long nbytes, prng_state *prng) +{ + struct sober128_prng *c; + ulong32 t, tlen; + + _ARGCHK(buf != NULL); + _ARGCHK(prng != NULL); + + c = &(prng->sober128); + t = 0; + tlen = nbytes; + + /* handle any previously buffered bytes */ + while (c->nbuf != 0 && nbytes != 0) { + *buf++ ^= c->sbuf & 0xFF; + c->sbuf >>= 8; + c->nbuf -= 8; + --nbytes; + } + +#ifndef SMALL_CODE + /* do lots at a time, if there's enough to do */ + while (nbytes >= N*4) { + SROUND(0); + SROUND(1); + SROUND(2); + SROUND(3); + SROUND(4); + SROUND(5); + SROUND(6); + SROUND(7); + SROUND(8); + SROUND(9); + SROUND(10); + SROUND(11); + SROUND(12); + SROUND(13); + SROUND(14); + SROUND(15); + SROUND(16); + buf += 4*N; + nbytes -= 4*N; + } +#endif + + /* do small or odd size buffers the slow way */ + while (4 <= nbytes) { + cycle(c->R); + t = nltap(c); + XORWORD(t, buf); + buf += 4; + nbytes -= 4; + } + + /* handle any trailing bytes */ + if (nbytes != 0) { + cycle(c->R); + c->sbuf = nltap(c); + c->nbuf = 32; + while (c->nbuf != 0 && nbytes != 0) { + *buf++ ^= c->sbuf & 0xFF; + c->sbuf >>= 8; + c->nbuf -= 8; + --nbytes; + } + } + + return tlen; +} + +int sober128_done(prng_state *prng) +{ + _ARGCHK(prng != NULL); + return CRYPT_OK; +} + +int sober128_export(unsigned char *out, unsigned long *outlen, prng_state *prng) +{ + _ARGCHK(outlen != NULL); + _ARGCHK(out != NULL); + _ARGCHK(prng != NULL); + + if (*outlen < 64) { + return CRYPT_BUFFER_OVERFLOW; + } + + if (sober128_read(out, 64, prng) != 64) { + return CRYPT_ERROR_READPRNG; + } + *outlen = 64; + + return CRYPT_OK; +} + +int sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + int err; + _ARGCHK(in != NULL); + _ARGCHK(prng != NULL); + + if (inlen != 64) { + return CRYPT_INVALID_ARG; + } + + if ((err = sober128_start(prng)) != CRYPT_OK) { + return err; + } + if ((err = sober128_add_entropy(in, 64, prng)) != CRYPT_OK) { + return err; + } + return sober128_ready(prng); +} + +int sober128_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + int keylen, ivlen, len; + unsigned char key[16], iv[4], out[20]; + } tests[] = { + +{ + 16, 4, 20, + + /* key */ + { 't', 'e', 's', 't', ' ', 'k', 'e', 'y', + ' ', '1', '2', '8', 'b', 'i', 't', 's' }, + + /* IV */ + { 0x00, 0x00, 0x00, 0x0 }, + + /* expected output */ + { 0x43, 0x50, 0x0c, 0xcf, 0x89, 0x91, 0x9f, 0x1d, + 0xaa, 0x37, 0x74, 0x95, 0xf4, 0xb4, 0x58, 0xc2, + 0x40, 0x37, 0x8b, 0xbb } +} + +}; + prng_state prng; + unsigned char dst[20]; + int err, x; + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + if ((err = sober128_start(&prng)) != CRYPT_OK) { + return err; + } + if ((err = sober128_add_entropy(tests[x].key, tests[x].keylen, &prng)) != CRYPT_OK) { + return err; + } + /* add IV */ + if ((err = sober128_add_entropy(tests[x].iv, tests[x].ivlen, &prng)) != CRYPT_OK) { + return err; + } + + /* ready up */ + if ((err = sober128_ready(&prng)) != CRYPT_OK) { + return err; + } + memset(dst, 0, tests[x].len); + if (sober128_read(dst, tests[x].len, &prng) != (unsigned long)tests[x].len) { + return CRYPT_ERROR_READPRNG; + } + sober128_done(&prng); + if (memcmp(dst, tests[x].out, tests[x].len)) { +#if 0 + printf("\n\nSOBER128 failed, I got:\n"); + for (y = 0; y < tests[x].len; y++) printf("%02x ", dst[y]); + printf("\n"); +#endif + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +}; + +#endif + diff --git a/sober128tab.c b/sober128tab.c new file mode 100644 index 0000000..49b0bb3 --- /dev/null +++ b/sober128tab.c @@ -0,0 +1,154 @@ +/* $ID$ */ +/* @(#)TuringMultab.h 1.3 (QUALCOMM) 02/09/03 */ +/* Multiplication table for Turing using 0xD02B4367 */ +static const ulong32 Multab[256] = { + 0x00000000, 0xD02B4367, 0xED5686CE, 0x3D7DC5A9, + 0x97AC41D1, 0x478702B6, 0x7AFAC71F, 0xAAD18478, + 0x631582EF, 0xB33EC188, 0x8E430421, 0x5E684746, + 0xF4B9C33E, 0x24928059, 0x19EF45F0, 0xC9C40697, + 0xC62A4993, 0x16010AF4, 0x2B7CCF5D, 0xFB578C3A, + 0x51860842, 0x81AD4B25, 0xBCD08E8C, 0x6CFBCDEB, + 0xA53FCB7C, 0x7514881B, 0x48694DB2, 0x98420ED5, + 0x32938AAD, 0xE2B8C9CA, 0xDFC50C63, 0x0FEE4F04, + 0xC154926B, 0x117FD10C, 0x2C0214A5, 0xFC2957C2, + 0x56F8D3BA, 0x86D390DD, 0xBBAE5574, 0x6B851613, + 0xA2411084, 0x726A53E3, 0x4F17964A, 0x9F3CD52D, + 0x35ED5155, 0xE5C61232, 0xD8BBD79B, 0x089094FC, + 0x077EDBF8, 0xD755989F, 0xEA285D36, 0x3A031E51, + 0x90D29A29, 0x40F9D94E, 0x7D841CE7, 0xADAF5F80, + 0x646B5917, 0xB4401A70, 0x893DDFD9, 0x59169CBE, + 0xF3C718C6, 0x23EC5BA1, 0x1E919E08, 0xCEBADD6F, + 0xCFA869D6, 0x1F832AB1, 0x22FEEF18, 0xF2D5AC7F, + 0x58042807, 0x882F6B60, 0xB552AEC9, 0x6579EDAE, + 0xACBDEB39, 0x7C96A85E, 0x41EB6DF7, 0x91C02E90, + 0x3B11AAE8, 0xEB3AE98F, 0xD6472C26, 0x066C6F41, + 0x09822045, 0xD9A96322, 0xE4D4A68B, 0x34FFE5EC, + 0x9E2E6194, 0x4E0522F3, 0x7378E75A, 0xA353A43D, + 0x6A97A2AA, 0xBABCE1CD, 0x87C12464, 0x57EA6703, + 0xFD3BE37B, 0x2D10A01C, 0x106D65B5, 0xC04626D2, + 0x0EFCFBBD, 0xDED7B8DA, 0xE3AA7D73, 0x33813E14, + 0x9950BA6C, 0x497BF90B, 0x74063CA2, 0xA42D7FC5, + 0x6DE97952, 0xBDC23A35, 0x80BFFF9C, 0x5094BCFB, + 0xFA453883, 0x2A6E7BE4, 0x1713BE4D, 0xC738FD2A, + 0xC8D6B22E, 0x18FDF149, 0x258034E0, 0xF5AB7787, + 0x5F7AF3FF, 0x8F51B098, 0xB22C7531, 0x62073656, + 0xABC330C1, 0x7BE873A6, 0x4695B60F, 0x96BEF568, + 0x3C6F7110, 0xEC443277, 0xD139F7DE, 0x0112B4B9, + 0xD31DD2E1, 0x03369186, 0x3E4B542F, 0xEE601748, + 0x44B19330, 0x949AD057, 0xA9E715FE, 0x79CC5699, + 0xB008500E, 0x60231369, 0x5D5ED6C0, 0x8D7595A7, + 0x27A411DF, 0xF78F52B8, 0xCAF29711, 0x1AD9D476, + 0x15379B72, 0xC51CD815, 0xF8611DBC, 0x284A5EDB, + 0x829BDAA3, 0x52B099C4, 0x6FCD5C6D, 0xBFE61F0A, + 0x7622199D, 0xA6095AFA, 0x9B749F53, 0x4B5FDC34, + 0xE18E584C, 0x31A51B2B, 0x0CD8DE82, 0xDCF39DE5, + 0x1249408A, 0xC26203ED, 0xFF1FC644, 0x2F348523, + 0x85E5015B, 0x55CE423C, 0x68B38795, 0xB898C4F2, + 0x715CC265, 0xA1778102, 0x9C0A44AB, 0x4C2107CC, + 0xE6F083B4, 0x36DBC0D3, 0x0BA6057A, 0xDB8D461D, + 0xD4630919, 0x04484A7E, 0x39358FD7, 0xE91ECCB0, + 0x43CF48C8, 0x93E40BAF, 0xAE99CE06, 0x7EB28D61, + 0xB7768BF6, 0x675DC891, 0x5A200D38, 0x8A0B4E5F, + 0x20DACA27, 0xF0F18940, 0xCD8C4CE9, 0x1DA70F8E, + 0x1CB5BB37, 0xCC9EF850, 0xF1E33DF9, 0x21C87E9E, + 0x8B19FAE6, 0x5B32B981, 0x664F7C28, 0xB6643F4F, + 0x7FA039D8, 0xAF8B7ABF, 0x92F6BF16, 0x42DDFC71, + 0xE80C7809, 0x38273B6E, 0x055AFEC7, 0xD571BDA0, + 0xDA9FF2A4, 0x0AB4B1C3, 0x37C9746A, 0xE7E2370D, + 0x4D33B375, 0x9D18F012, 0xA06535BB, 0x704E76DC, + 0xB98A704B, 0x69A1332C, 0x54DCF685, 0x84F7B5E2, + 0x2E26319A, 0xFE0D72FD, 0xC370B754, 0x135BF433, + 0xDDE1295C, 0x0DCA6A3B, 0x30B7AF92, 0xE09CECF5, + 0x4A4D688D, 0x9A662BEA, 0xA71BEE43, 0x7730AD24, + 0xBEF4ABB3, 0x6EDFE8D4, 0x53A22D7D, 0x83896E1A, + 0x2958EA62, 0xF973A905, 0xC40E6CAC, 0x14252FCB, + 0x1BCB60CF, 0xCBE023A8, 0xF69DE601, 0x26B6A566, + 0x8C67211E, 0x5C4C6279, 0x6131A7D0, 0xB11AE4B7, + 0x78DEE220, 0xA8F5A147, 0x958864EE, 0x45A32789, + 0xEF72A3F1, 0x3F59E096, 0x0224253F, 0xD20F6658, +}; + +/* $ID$ */ +/* Sbox for SOBER-128 */ +/* + * This is really the combination of two SBoxes; the least significant + * 24 bits comes from: + * 8->32 Sbox generated by Millan et. al. at Queensland University of + * Technology. See: E. Dawson, W. Millan, L. Burnett, G. Carter, + * "On the Design of 8*32 S-boxes". Unpublished report, by the + * Information Systems Research Centre, + * Queensland University of Technology, 1999. + * + * The most significant 8 bits are the Skipjack "F table", which can be + * found at http://csrc.nist.gov/CryptoToolkit/skipjack/skipjack.pdf . + * In this optimised table, though, the intent is to XOR the word from + * the table selected by the high byte with the input word. Thus, the + * high byte is actually the Skipjack F-table entry XORED with its + * table index. + */ +static const ulong32 Sbox[256] = { + 0xa3aa1887, 0xd65e435c, 0x0b65c042, 0x800e6ef4, + 0xfc57ee20, 0x4d84fed3, 0xf066c502, 0xf354e8ae, + 0xbb2ee9d9, 0x281f38d4, 0x1f829b5d, 0x735cdf3c, + 0x95864249, 0xbc2e3963, 0xa1f4429f, 0xf6432c35, + 0xf7f40325, 0x3cc0dd70, 0x5f973ded, 0x9902dc5e, + 0xda175b42, 0x590012bf, 0xdc94d78c, 0x39aab26b, + 0x4ac11b9a, 0x8c168146, 0xc3ea8ec5, 0x058ac28f, + 0x52ed5c0f, 0x25b4101c, 0x5a2db082, 0x370929e1, + 0x2a1843de, 0xfe8299fc, 0x202fbc4b, 0x833915dd, + 0x33a803fa, 0xd446b2de, 0x46233342, 0x4fcee7c3, + 0x3ad607ef, 0x9e97ebab, 0x507f859b, 0xe81f2e2f, + 0xc55b71da, 0xd7e2269a, 0x1339c3d1, 0x7ca56b36, + 0xa6c9def2, 0xb5c9fc5f, 0x5927b3a3, 0x89a56ddf, + 0xc625b510, 0x560f85a7, 0xace82e71, 0x2ecb8816, + 0x44951e2a, 0x97f5f6af, 0xdfcbc2b3, 0xce4ff55d, + 0xcb6b6214, 0x2b0b83e3, 0x549ea6f5, 0x9de041af, + 0x792f1f17, 0xf73b99ee, 0x39a65ec0, 0x4c7016c6, + 0x857709a4, 0xd6326e01, 0xc7b280d9, 0x5cfb1418, + 0xa6aff227, 0xfd548203, 0x506b9d96, 0xa117a8c0, + 0x9cd5bf6e, 0xdcee7888, 0x61fcfe64, 0xf7a193cd, + 0x050d0184, 0xe8ae4930, 0x88014f36, 0xd6a87088, + 0x6bad6c2a, 0x1422c678, 0xe9204de7, 0xb7c2e759, + 0x0200248e, 0x013b446b, 0xda0d9fc2, 0x0414a895, + 0x3a6cc3a1, 0x56fef170, 0x86c19155, 0xcf7b8a66, + 0x551b5e69, 0xb4a8623e, 0xa2bdfa35, 0xc4f068cc, + 0x573a6acd, 0x6355e936, 0x03602db9, 0x0edf13c1, + 0x2d0bb16d, 0x6980b83c, 0xfeb23763, 0x3dd8a911, + 0x01b6bc13, 0xf55579d7, 0xf55c2fa8, 0x19f4196e, + 0xe7db5476, 0x8d64a866, 0xc06e16ad, 0xb17fc515, + 0xc46feb3c, 0x8bc8a306, 0xad6799d9, 0x571a9133, + 0x992466dd, 0x92eb5dcd, 0xac118f50, 0x9fafb226, + 0xa1b9cef3, 0x3ab36189, 0x347a19b1, 0x62c73084, + 0xc27ded5c, 0x6c8bc58f, 0x1cdde421, 0xed1e47fb, + 0xcdcc715e, 0xb9c0ff99, 0x4b122f0f, 0xc4d25184, + 0xaf7a5e6c, 0x5bbf18bc, 0x8dd7c6e0, 0x5fb7e420, + 0x521f523f, 0x4ad9b8a2, 0xe9da1a6b, 0x97888c02, + 0x19d1e354, 0x5aba7d79, 0xa2cc7753, 0x8c2d9655, + 0x19829da1, 0x531590a7, 0x19c1c149, 0x3d537f1c, + 0x50779b69, 0xed71f2b7, 0x463c58fa, 0x52dc4418, + 0xc18c8c76, 0xc120d9f0, 0xafa80d4d, 0x3b74c473, + 0xd09410e9, 0x290e4211, 0xc3c8082b, 0x8f6b334a, + 0x3bf68ed2, 0xa843cc1b, 0x8d3c0ff3, 0x20e564a0, + 0xf8f55a4f, 0x2b40f8e7, 0xfea7f15f, 0xcf00fe21, + 0x8a6d37d6, 0xd0d506f1, 0xade00973, 0xefbbde36, + 0x84670fa8, 0xfa31ab9e, 0xaedab618, 0xc01f52f5, + 0x6558eb4f, 0x71b9e343, 0x4b8d77dd, 0x8cb93da6, + 0x740fd52d, 0x425412f8, 0xc5a63360, 0x10e53ad0, + 0x5a700f1c, 0x8324ed0b, 0xe53dc1ec, 0x1a366795, + 0x6d549d15, 0xc5ce46d7, 0xe17abe76, 0x5f48e0a0, + 0xd0f07c02, 0x941249b7, 0xe49ed6ba, 0x37a47f78, + 0xe1cfffbd, 0xb007ca84, 0xbb65f4da, 0xb59f35da, + 0x33d2aa44, 0x417452ac, 0xc0d674a7, 0x2d61a46a, + 0xdc63152a, 0x3e12b7aa, 0x6e615927, 0xa14fb118, + 0xa151758d, 0xba81687b, 0xe152f0b3, 0x764254ed, + 0x34c77271, 0x0a31acab, 0x54f94aec, 0xb9e994cd, + 0x574d9e81, 0x5b623730, 0xce8a21e8, 0x37917f0b, + 0xe8a9b5d6, 0x9697adf8, 0xf3d30431, 0x5dcac921, + 0x76b35d46, 0xaa430a36, 0xc2194022, 0x22bca65e, + 0xdaec70ba, 0xdfaea8cc, 0x777bae8b, 0x242924d5, + 0x1f098a5a, 0x4b396b81, 0x55de2522, 0x435c1cb8, + 0xaeb8fe1d, 0x9db3c697, 0x5b164f83, 0xe0c16376, + 0xa319224c, 0xd0203b35, 0x433ac0fe, 0x1466a19a, + 0x45f0b24f, 0x51fda998, 0xc0d52d71, 0xfa0896a8, + 0xf9e6053f, 0xa4b0d300, 0xd499cbcc, 0xb95e3d40, +}; diff --git a/sprng.c b/sprng.c index f1de461..090bd01 100644 --- a/sprng.c +++ b/sprng.c @@ -19,15 +19,15 @@ const struct _prng_descriptor sprng_desc = { - "sprng", + "sprng", 0, &sprng_start, &sprng_add_entropy, &sprng_ready, &sprng_read, &sprng_done, &sprng_export, - &sprng_import - + &sprng_import, + &sprng_test }; int sprng_start(prng_state *prng) @@ -51,9 +51,9 @@ unsigned long sprng_read(unsigned char *buf, unsigned long len, prng_state *prng return rng_get_bytes(buf, len, NULL); } -void sprng_done(prng_state *prng) +int sprng_done(prng_state *prng) { - _ARGCHK(prng != NULL); + return CRYPT_OK; } int sprng_export(unsigned char *out, unsigned long *outlen, prng_state *prng) @@ -69,6 +69,11 @@ int sprng_import(const unsigned char *in, unsigned long inlen, prng_state *prng) return CRYPT_OK; } +int sprng_test(void) +{ + return CRYPT_OK; +} + #endif diff --git a/yarrow.c b/yarrow.c index 7354d47..5b48bee 100644 --- a/yarrow.c +++ b/yarrow.c @@ -15,14 +15,15 @@ const struct _prng_descriptor yarrow_desc = { - "yarrow", + "yarrow", 64, &yarrow_start, &yarrow_add_entropy, &yarrow_ready, &yarrow_read, &yarrow_done, &yarrow_export, - &yarrow_import + &yarrow_import, + &yarrow_test }; int yarrow_start(prng_state *prng) @@ -183,10 +184,12 @@ unsigned long yarrow_read(unsigned char *buf, unsigned long len, prng_state *prn return len; } -void yarrow_done(prng_state *prng) +int yarrow_done(prng_state *prng) { _ARGCHK(prng != NULL); /* call cipher done when we invent one ;-) */ + + return CRYPT_OK; } int yarrow_export(unsigned char *out, unsigned long *outlen, prng_state *prng) @@ -222,10 +225,32 @@ int yarrow_import(const unsigned char *in, unsigned long inlen, prng_state *prng if ((err = yarrow_start(prng)) != CRYPT_OK) { return err; } - if ((err = yarrow_add_entropy(in, 64, &prng)) != CRYPT_OK) { + return yarrow_add_entropy(in, 64, prng); +} + +int yarrow_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + int err; + prng_state prng; + + if ((err = yarrow_start(&prng)) != CRYPT_OK) { return err; } - return yarrow_ready(&prng); + + /* now let's test the hash/cipher that was chosen */ + if ((err = cipher_descriptor[prng.yarrow.cipher].test()) != CRYPT_OK) { + return err; + } + if ((err = hash_descriptor[prng.yarrow.hash].test()) != CRYPT_OK) { + return err; + } + + yarrow_done(&prng); + return CRYPT_OK; +#endif } #endif