From: Tom Yu Date: Thu, 9 Jun 2011 21:08:43 +0000 (+0000) Subject: pull up r24750 from trunk X-Git-Tag: krb5-1.9.2-beta1~22 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=4271a27907c9bc63528e1dae410a883d74b114b5;p=krb5.git pull up r24750 from trunk ------------------------------------------------------------------------ r24750 | ghudson | 2011-03-28 19:35:54 -0400 (Mon, 28 Mar 2011) | 11 lines ticket: 6886 target_version: 1.9.1 tags: pullup Remove the weak key checks from the builtin rc4 enc provider. There is no standards support for avoiding RC4 weak keys, so rejecting them causes periodic failures. Heimdal and Microsoft do not check for weak keys. Attacks based on these weak keys are probably thwarted by the use of a confounder, and even if not, the reduction in work factor is not terribly significant for 128-bit keys. ticket: 6886 version_fixed: 1.9.2 status: resolved git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-9@24951 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/lib/crypto/builtin/enc_provider/rc4.c b/src/lib/crypto/builtin/enc_provider/rc4.c index a8e0721c9..1a9f8f9d0 100644 --- a/src/lib/crypto/builtin/enc_provider/rc4.c +++ b/src/lib/crypto/builtin/enc_provider/rc4.c @@ -39,16 +39,6 @@ static krb5_error_code k5_arcfour_init(ArcfourContext *ctx, const unsigned char static void k5_arcfour_crypt(ArcfourContext *ctx, unsigned char *dest, const unsigned char *src, unsigned int len); -static const unsigned char arcfour_weakkey1[] = {0x00, 0x00, 0xfd}; -static const unsigned char arcfour_weakkey2[] = {0x03, 0xfd, 0xfc}; -static const struct { - size_t length; - const unsigned char *data; -} arcfour_weakkeys[] = { - { sizeof (arcfour_weakkey1), arcfour_weakkey1}, - { sizeof (arcfour_weakkey2), arcfour_weakkey2}, -}; - static inline unsigned int k5_arcfour_byte(ArcfourContext * ctx) { unsigned int x; @@ -90,13 +80,6 @@ k5_arcfour_init(ArcfourContext *ctx, const unsigned char *key, if (key_len != 16) return KRB5_BAD_MSIZE; /*this is probably not the correct error code to return */ - for (counter=0; - counter < sizeof(arcfour_weakkeys)/sizeof(arcfour_weakkeys[0]); - counter++) - if (!memcmp(key, arcfour_weakkeys[counter].data, - arcfour_weakkeys[counter].length)) - return KRB5DES_WEAK_KEY; /* most certainly not the correct error */ - state = &ctx->state[0]; ctx->x = 0; ctx->y = 0;