I'm really struggling to understand CFB mode (with DES if that matters). I realise after searching around here that these modes are now obsolete but I need to understand them for class. From wikipedia, I see that for encryption: $$C_i = P_i[:s] \oplus E_k(S_i)[:s]$$ $$S_0 = IV$$ $$S_i = (S_{i-1} << s) | C_i$$ (I'm using a python like notation so [:s] means first $s$ bits).
I'm already having trouble understanding this encryption scheme and how error propagates through. Wikipedia says that if an $C_i$ becomes corrupted then the encryption will eventually recover. I tried reading discussions about this here but I'm failing to see this (I am hoping for a more elaborate explanation).
Let's say $s=4$ bits, $IV$ is 64 bits and that $C_2$ becomes corrupted such that we correctly computed $C_1$ and $C_2$ from $P_1$ and $P_2$ but we can not correctly calculate $C_3'$ since $$C_3 = P_3[:4]\oplus E_k((IV << 8) | C_1 | C_2')[:4]$$ and so $E_k((IV << 8) | C_1 | C_2')$ gives an incorrect encryption and therefore an incorrect $C_3$ which I denoted as $C_3'$. If I continue this pattern, it seems that I always get an incorrect $C_i$ since the shift register will always be wrong. e.g consider
$$C_{17}' =^{?} P_{17}[:4]\oplus E_k((IV << 64)|C_1|C_2'|C_3'|...|C_{16'})$$
$$ = P_{17}[:4]\oplus E_k(C_1|C_2'|C_3'|...|C_{16}')[:4]$$
but this still gives the wrong value so I'm not sure why the system recovers. What am I misunderstanding?