usually fragmented into reasonable-size chunks, which key-hashed to produce the corresponding MACs that become part of the new bitstream and are sent along with the information bits at predetermined locations (for example, at the end of each one of the stream chunks of information). A special type of keyed MAC is the hashed MAC (HMAC), which is defined in RFC 2104. It is actually a keyed hash inside another keyed hash and is used by IPsec for the authentication of all mes- sages. The exact definition of this function can be found in any basic cryptography book. Digital Signatures A spectacular by-product of public-key cryptography is the ability to generate a digital signature. This is produced if the fundamentals of public-key cryptography are engaged in an inverse scenario. More specifically, if user A encrypts a message using its own private key KprivA and transmits it to user B, then user B can look up user A's public key KpubA in a public directory or over the Internet at some key server. User A may have also already openly communicated it to user B along with other users. The retrieved public key KpubA is used to decrypt the message. As the pair of keys (Kpriva and KpubA) allow the encryption and decryption in either direction and no other key can be used for either of these roles, the message could have been encrypted only by user A-hence, the equivalent notion of digitally signing. If instead of just signing the message digitally, user A also wanted to keep it confidential, user A should encrypt the information with the intended recipient's (in this case, user B) public key as discussed earlier in addition to digitally signing. Public-key operations take a long time. For example, on the same hardware platform, Rivest- Shamir-Adleman (RSA) encryption is about 1,000 times slower than DES encryption. To ensure that digital signatures are completed in a reasonable amount of time, it is now common practice on all dig- ital signature algorithms that a hashing function is used to produce a hash of the bitstream 