Richard Levitte [Sat, 21 Jul 2001 09:43:43 +0000 (09:43 +0000)]
More Kerberos SSL patches from Vern Staats <staatsvr@asc.hpc.mil>.
His comments are:
This patch fixes the problem of modern Kerberos using "derived keys"
to encrypt the authenticator by disabling the authenticator check
for all derived keys enctypes.
I think I've got all the bugfixes that Jeffrey and I discussed rolled
into this. There were some problems with Jeffrey's code to convert
the authenticator's Kerberos timestring into struct tm (e.g. Z, -1900;
it helps to have an actual decryptable authenticator to play with).
So I've shamelessly pushed in my code, while stealing some bits from
Jeffrey.
Currently, RSA code, when using no padding scheme, simply checks that input
does not contain more bytes than the RSA modulus 'n' - it does not check
that the input is strictly *less* than 'n'. Whether this should be the
case or not is open to debate - however, due to security problems with
returning miscalculated CRT results, the 'rsa_mod_exp' implementation in
rsa_eay.c now performs a public-key exponentiation to verify the CRT result
and in the event of an error will instead recalculate and return a non-CRT
(more expensive) mod_exp calculation. As the mod_exp of 'I' is equivalent
to the mod_exp of 'I mod n', and the verify result is automatically between
0 and n-1 inclusive, the verify only matches the input if 'I' was less than
'n', otherwise even a correct CRT calculation is only congruent to 'I' (ie.
they differ by a multiple of 'n'). Rather than rejecting correct
calculations and doing redundant and slower ones instead, this changes the
equality check in the verification code to a congruence check.
Richard Levitte [Thu, 12 Jul 2001 09:11:14 +0000 (09:11 +0000)]
Add the possibility to specify the use of zlib compression and
decompression. It can be set up to link at link time or to load the
zlib library at run-time.
In ocsp_match_issuerid() we are passed the CA that signed the responder
certificate so need to match its subject with the certificate IDs in the
response.
Richard Levitte [Wed, 11 Jul 2001 21:15:03 +0000 (21:15 +0000)]
make update
Note that since some private kssl functions were exported, the
simplest way to rebuild the number table was to toss everything that
was new since OpenSSL 0.9.6b. This is safe, since those functions
have not yet been exported in an OpenSSL release. Beware, people who
trust intermediary snapshots!
Richard Levitte [Wed, 11 Jul 2001 19:03:58 +0000 (19:03 +0000)]
Changes to the Kerberos SSL code by Jeffrey Altman <jaltman@columbia.edu>
His comments are:
. adds use of replay cache to protect against replay attacks
. adds functions kssl_tgt_is_available() and
kssl_keytab_is_available() which are used within s3_lib.c
and ssl_lib.c to determine at runtime whether or not
KRB5 ciphers can be supported during the current session.
openssl speed is quite useful for testing hardware support (among other
things), especially as the RSA keys are fixed. However, DSA only fixes the
DSA parameters and then generates the public and private components on the
fly each time - this commit hard-codes some sampled key values so that this
is no longer the case.
Richard Levitte [Wed, 11 Jul 2001 15:31:45 +0000 (15:31 +0000)]
Changes to the Kerberos SSL code by Jeffrey Altman <jaltman@columbia.edu>
His comments are:
. Fixed all of the Windows dynamic loading functions, prototypes, etc.
. Corrected all of the unsigned/signed comparison warnings
. Replaced the references to krb5_cksumarray[] for two reasons.
First, it was an internal variable that should not have been
referenced outside the library; nor could it have been with
a shared library with restricted exports. Second, the
variable is no longer used in current Kerberos implementations.
I replaced the code with equivalent functionality using functions
that are exported from the library.
Bodo Möller [Tue, 10 Jul 2001 11:41:29 +0000 (11:41 +0000)]
For consistency with the terminology used in my SAC2001 paper, avoid
the term "simultaneous multiplication" (which -- acording to the
paper, at least -- applies only to certain methods which we don't use
here)
Richard Levitte [Mon, 9 Jul 2001 21:46:58 +0000 (21:46 +0000)]
Patches from Vern Staats <staatsvr@asc.hpc.mil> to get Kerberos 5 in
SSL according to RFC 2712. His comment is:
This is a patch to openssl-SNAP-20010702 to support Kerberized SSL
authentication. I'm expecting to have the full kssl-0.5 kit up on
sourceforge by the end of the week. The full kit includes patches
for mod-ssl, apache, and a few text clients. The sourceforge URL
is http://sourceforge.net/projects/kssl/ .
Thanks to a note from Simon Wilkinson I've replaced my KRB5 AP_REQ
message with a real KerberosWrapper struct. I think this is fully
RFC 2712 compliant now, including support for the optional
authenticator field. I also added openssl-style ASN.1 macros for
a few Kerberos structs; see crypto/krb5/ if you're interested.
Ben Laurie [Sun, 8 Jul 2001 19:42:10 +0000 (19:42 +0000)]
Handle the common case first (where input size is a multiple of block size).
Worth around 5% for encrypt. Slows down decrypt slightly, but I expect to
regain that later.
Richard Levitte [Sat, 23 Jun 2001 16:25:56 +0000 (16:25 +0000)]
Do not loop i the OpenSSL UI method any more. Instead, letthe
application do that.
NOTE: there's no requirement for other UI_METHODs to avoid this kind
of loop. For example, a GUI UI_METHOD would probably check the
lengths of the answers from within instead of being constantly
redisplayed for everything that is wrong.
Richard Levitte [Sat, 23 Jun 2001 16:22:48 +0000 (16:22 +0000)]
Implement boolean (yes/no or OK/Cancel, ...) input.
Implement UI controls. Current controls are the possibility to output
the OpenSSL error stack on the same channel from within UI_process()
and to check if the same user interface can be redone without being
rebuilt (this is often more a question of philosophy than
technicalities).
Richard Levitte [Sat, 23 Jun 2001 14:51:53 +0000 (14:51 +0000)]
For the UI functions that return an int, 0 or any positive number is a
success return, any negative number is a failure. Make sure we check
the return value with that in mind.
Andy Polyakov [Fri, 22 Jun 2001 19:17:42 +0000 (19:17 +0000)]
This fixes "Spurious test failures on IRIX?" reported in April. Apparently
I was wrong in conclusions about when addition starts overflowing in combaX
routines.
Change all calls to low level digest routines in the library and
applications to use EVP. Add missing calls to HMAC_cleanup() and
don't assume HMAC_CTX can be copied using memcpy().
Note: this is almost identical to the patch submitted to openssl-dev
by Verdon Walker <VWalker@novell.com> except some redundant
EVP_add_digest_()/EVP_cleanup() calls were removed and some changes
made to avoid compiler warnings.