pull up r24750 from trunk
authorTom Yu <tlyu@mit.edu>
Thu, 9 Jun 2011 21:08:43 +0000 (21:08 +0000)
committerTom Yu <tlyu@mit.edu>
Thu, 9 Jun 2011 21:08:43 +0000 (21:08 +0000)
 ------------------------------------------------------------------------
 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

src/lib/crypto/builtin/enc_provider/rc4.c

index a8e0721c90903a13ba24dcd01a65523a2634da00..1a9f8f9d00bec1aaaacbc777c4ec43c802ac2749 100644 (file)
@@ -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;