Re: crypto(4) and IVs

"Steven M. Bellovin" <[email protected]>
Newsgroups gmane.os.netbsd.devel.crypto
Message-ID <[email protected]>
In message <[email protected]>, der Mouse wr
ites:
>>> I find that when I do a CIOCCRYPT, the IV is not modified.  How am I
>>> supposed to get the correct IV for my next call?  Do I have to go
>>> under the hood and "know" that for the cipher I'm using (3DES_CBC)
>>> it's the last block of the encrypted data (output for ENCRYPT, input
>>> for DECRYPT)?  Or is there something I'm missing?
>> In fact, the interface should not do that.  There are a number of
>> subtle attacks possible if the IV is predictable by the enemy; thus,
>> in things like packet-oriented crypto, you should *not* use the last
>> block of the previous message as the IV for the next message.
>
>I didn't say anything about packet-oriented.  For many cases - such as
>encrypting a stream of data in CBC mode one bufferful at a time - you
>_do_ want that.  For the cases where you don't, I can't see any harm in
>returning it (except possibly the minor inconvenience of having to keep
>a separate IV buffer around).

Fair point.  I'd call it an API problem: it doesn't distinguish between 
"new message" and "continue the previous message".
>
>
>In passing, I have to wonder whether you were just being careless with
>language when you wrote "predictable".

I meant "predictable by the attacker".  The attacker who sees packet N 
could predict the IV used by packet N+1.

		--Steven M. Bellovin, http://www.cs.columbia.edu/~smb
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.