<div dir="ltr"><div class="gmail_default" style="font-size:small">What I don't understand is why the various symmetric cipher modes we have keep the key fixed and modify the data.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">So for CBC we take</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">C0 =  E (B0 XOR IV, k)</div><div class="gmail_default" style="font-size:small">C1 =  E (B1 XOR C0, k)<br></div><div class="gmail_default" style="font-size:small">...</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Why not use:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">C0 =  E (B0, k)<br></div><div class="gmail_default" style="font-size:small">C1 =  E (B1, k + 1)<br></div><div class="gmail_default" style="font-size:small">...</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">This has the advantage that it can be applied to the use cases that motivated ECB and CBC. It doesn't require an initialization vector either.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Of course with DES you have the problem of weak keys but these days we consider weak keys as disqualifying a cipher completely.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">The main reason for not doing this seems to be that the key schedule has to be recalculated and that was expensive for DES. But that shouldn't be a major problem on a modern CPU. </div><div class="gmail_default" style="font-size:small"><br></div></div>