0:00

In this segment we're gonna look at another method to achieve chosen plain

text security that's actually superior to CBC. And this method is called randomized

counter mode. Unlike CBC. Randomized counter mode uses a secure PRF. It doesn't

need a block cypher. It's enough for counter mode to just use a PRF because

we're never going to be inverting this function F. So we're going to let F be the

secure PRF and it acts on N byte blocks. Again if we use AES, N will be 128. And

the way the encryption algorithm works in counter mode is it starts off by choosing

a random IV, that's 128 bytes random IV in the case of AES, and the essentially we

start counting. From this random IV, so you notice the first encryption is of IV

then IV+1 up to IV+L. So we generate this random pad. We XOR the result with the

message, and that gives us the cipher text. And, as usual, you notice that the

IV here is included along with the cipher text. So that, in fact, the cipher text is

a little longer than the original plain text. And the point, of course, is that,

encryption algorithm chooses a new IV for every message. And so even if I encrypt

the same message twice, I'm gonna get different resulting cipher texts. One

thing to notice that this mode is completely paralyzable, unlike CBC. CBC

was sequential. In other words, you couldn't encrypt block #5 until you've

encrypted blocks ##1 to 4, so hardware companies who might have multiple

AES engines working in parallel cannot actually use those AES engines when using

CBC because CBCs inherently sequential. So even though you might have two or three of

four AES engines, you could only use one of them when doing CBC encryption. With

counter mode, everything is completely paralyzable. If you have three AES engines

encryption basically will work three times as fast. So that's the beauty of counter

mode. And counter mode also has a corresponding nonce based counter mode.

Where the IV is not truly random, but rather, is just a nonce which could

be a counter. And the way you would implement nonce based counter mode, is you

would take the 128 bits block that used in AES. And then you would split it in two.

You would use the left 64 bits as the nonce, so the counter say would count from

zero to 2 to the 64. And then, that will be the nonce part of it. And then once you

specify the nonce, the lower order, 64 bits, would be doing the counting inside

of the counter modes encryption. Okay, so nonce goes on the left, and the

counter mode encryption counter goes on the right. And it's perfectly fine if this

nonce is unpredictable. The only restriction is that you encrypt at most

2 to the 64 blocks using one particular nonce. The danger is that you don't

want this counter to reset to zero so that, then, you will have two blocks. Say,

this guy, this guy, and this guy that are encrypted using the same one time pad.

Namely this one and this one. So lets quickly state the security theorem for a

randomized counter mode . By now you should be used to these kind of theorems.

Basically we are given a secure PRF. What we end up with is an encryption scheme.

We'll call it E sub CTR, E sub counter mode, which is semantically secure under a

chosen plain text attack. It encrypts messages that are L blocks long, and

produces cipher text that are L+1 blocks long because the IV has to be included in

the cipher text. This is for randomized counter mode. And the error bounds

are stated over here. It's basically the same bounds as in the case of CBC

encryption. As usual, we argue that this term is negligible because the PRF F is

secure and we would like to deduce from that, that this term is negligible so that

E<u>CTR is secure. Unfortunately we have this error term here and so we have to make</u>

sure this error term is negligible. And for that we have to make sure Q squared L

is less than the size of a block. And remember, Q is the number of messages

encrypted under a particular key. And L is the maximum length of those messages. Now

interestingly in the case of CBC we have Q squared L squared. Has to be less than x.

Which is actually worse than we have for counter modes. In other words, counter

modes can actually be used for more. Blocks than CBC could. Lets see a quick

example of that. So here is, again, the error term for counter-node, and remember

Q is again the number of messages encrypted with a key, and L is the length

of those messages. And as before, just as in the case of CBC, suppose we want the

adversary's advantage to be at most, one over 2 to the 32. That basically requires

that this Q-squared, L over X be less than 1 over 2 to the 32. So for AES what

happens is, if you plug in the values X is 2 to 128, 128 bit blocks. So Q times

square root of L should be less than 2 to the 48. This is basically the bound you

get from plugging in 2 to the 128 into this bound here. And as a result, you can

see if you're encrypting messages that are each, 2 to the 32 blocks. Then after 2

to the 32 such messages you have to replace your secret key otherwise

randomized counter mode is no longer CPA secure. So this means we could encrypt a

total of 2 to the 64 AES blocks using a single secret key. Remember, for CBC the

corresponding value was 2 to the 48 blocks so in fact because counter mode has

a better security parameterization in fact we can use the same key to encrypt more

blocks with counter mode than we could with CBC. So I wanted to do a quick

comparison of counter mode and CBC. And argue that in every single aspect, counter

mode is superior to CBC. And that's actually why most modern encryption

schemes actually are starting to migrate to counter mode, and abandoned CBC. Even

though CBC is still quite widely used. So let's look at the comparison. First of

all, recall that CBC actually had to use a block cypher because if you look at the

decryption circuit, the decryption circuit actually ran the block cypher in reverse.

It was actually using the decryption capabilities of the block cypher. Whereas

in counter mode, we only use a PRF. We never ever, ever use the decryption

capabilities of the block cypher. We only use it in the forward direction, only

encrypt with it. Because of this, counter mode is actually more general and you can

use primitives like Salsa, for example, Salsa20, if you remember, as a PRF.

But is not a PRP. So counter mode can Salsa but CBC cannot. And in essence,

counter mode is more general than CBC. Counter mode, as we said, is actually

parallel, whereas CBC is a very sequential process. We said that counter mode is more

secure. The security bounds, the error terms are better for counter mode than

they are for CBC. And as a result, you can use a key to encrypt more blocks in

counter mode than you could with CBC. The other issue is, remember in CBC we talked

about the dummy padding block. If you had a message that's a multiple of the block

length. In CBC we said that we had to add a dummy block whereas in counter mode this

wasn't necessary. Although, I did want to mention that there is a variation of

CBC called CBC with cipher text tiling, that actually avoids the dummy block issue. So

for standardized CBC, we actually need a dummy block. But in fact there is a

modification to CBC that doesn't need a dummy block. Just like counter mode.

Finally, suppose you're encrypting just a stream of one byte messages, and using

nonce encryption with an implicit nonce. So, the nonce is not

included in the cipher text. In this case. Every single one byte message would have

to be expanded into a sixteen byte block and then encrypted, and the result would

be a sixteen byte block. So if you have, like, a stream of 100 one byte messages,

each one separately would have to become a sixteen byte block. And you'll end up.

With a stream of 116 byte cipher texts. So you get a 16x expansion on the length of

the cipher text, compared to the length of the plain text. In counter mode, of

course, this is not a problem. You would just encrypt each one byte message by

XORing with the first bytes of the stream that's generated in the counter mode. So

every cipher text would just be one byte, just like the corresponding plain text.

And so no expansion at all, using counter mode. So you see that essentially, every

single aspect counter mode dominates CBC. And that's why it's actually the

recommended mode to be using today. Okay, so this concludes our discussion of chosen

plaintext security. I wanted to just quickly summarize and remind you that

we're going to be using these PRP and PRF abstractions of block ciphers.

This is actually the correct way of thinking of block ciphers and so we'll

always think of them as either pseudorandom permutations or pseudorandom

functions. And then I wanted to remind you again that, so far, we saw two notions of

security. Both only provide security against eavesdropping. They don't provide

security against tampering with the cipher text. One was used when the key is only

used to encrypt a single message. The other one was used when the key was used

to encrypt multiple messages. And as we said, because neither one is designed to

defend against tampering, neither one provides data integrity. And we're going

to see this as a real problem. And as a result, in fact, I'm going to say in the

next segment that these modes actually should never, ever be used. You should

only be using these modes in addition to an integrity mechanism, which is our next

topic. Okay, so, so far we've seen basically for using a, the key once, you

can use stream ciphers or you can use deterministic counter mode. If you're

gonna use the key many times you could use randomize CBC or randomize counter mode

and we're gonna talk about how to provide integrity and confidentiality. Once we

cover the topic of integrity, which is our next module.