deally also block sizes) must be supported. Support for the capability to appropriately seed the IVs in the CBC implementation must also be available. The latency of the key-scheduler switching overhead should be considered, whereby supporting different cryptographic contexts should not be excessively long to avoid penalizing the aggregate performance. Diffie-Hellman (DH) The most fundamental and definitely the most famous technique for the generation of a common shared secret is the Diffie-Hellman (DH) algorithm, which is described and analyzed at length in all fundamental cryptography books. We provide a brief description here for the sake of convenience. Two (or more with some small protocol extensions-see Schneier's book) communicating parties (A and B) agree in public on a specific large prime number p, which is called the modulus of the oper- ation, and a (mathematical group) generator g that they will use for the ensuing calculations. The gen- erator must be chosen in such a way that for any integer Z<p, a number W exists SO that gW mod p = Z. In other words, g can produce or generate all numbers from 1 to 1. The DH protocol is a four-step process: 1. First, the two parties independently generate a secret large random number (bit sequence), which is denoted here with the lowercase letters a and b for users A and B, respectively. These random numbers must be smaller than p. 2. Then they both proceed with the mathematical process of calculating the modular exponentiation of the chosen group generator g raised to a power equal to the respective random number modulo the large prime p that has been previously agreed upon. In other words, divide by p and retain the remainder of the operation. The result is called the DH public key of each party. It is shown here with the uppercase letters A and B. The public key and the public key from public-key crypto- graphic schemes such as RSA are irrelevant to each other: A = ga mod p B=g'mod p 3. User A then sends over the public insecure network its own public key A to u