5.23. Setting Up and Using RC4

Problem

You want to use RC4 securely.

Solution

You can’t be very confident about the security of RC4 for general-purpose use, owing to theoretical weaknesses. However, if you’re willing to use only a very few RC4 outputs (a limit of about 100,000 bytes of output), you can take a risk, as long as you properly set it up.

Before using the standard initialization functions provided by your cryptographic library, take one of the following two steps:

  • Cryptographically hash the key material before using it.

  • Discard the first 256 bytes of the generated keystream.

After initialization, RC4 is used just as any block cipher in a streaming mode is used.

Most libraries implement RC4, but it is so simple that we provide an implementation in the following section.

Discussion

RC4 is a simple cipher that is really easy to use once you have it set up securely, which is actually difficult to do! Due to this key-setup problem, RC4’s theoretical weaknesses, and the availability of faster solutions that look more secure, we recommend you just not use RC4. If you’re looking for a very fast solution, we recommend SNOW 2.0.

In this recipe, we’ll start off ignoring the RC4 key-setup problem. We’ll show you how to use RC4 properly, giving a complete implementation. Then, after all that, we’ll discuss how to set it up securely.

Warning

As with any other symmetric encryption algorithm, it is particularly important to use a MAC along with RC4 to ensure data integrity. We discuss MACs extensively ...

Get Secure Programming Cookbook for C and C++ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.