Widzę, że moje pytanie nie spotkało się ze szczególnym zainteresowaniem. Krzysiek słusznie stwierdził, że jeśli atakujący kontroluje IV, wówczas modyfikacja byłaby możliwa. Ale czy to jest możliwe w tym konkretnym przypadku?
Archeologia 2
Możliwe jest, ale bardzo mało prawdopodobne. Dlaczego? Dlatego, że zarówno (ostateczny) klucz szyfrowania, jak i IV są generowane na podstawie klucza użytkownika oraz losowego salt. Jest to robione mniej więcej (a nawet dokładnie) tak:
sub _salted_key_and_iv { my $self = shift; my ($pass,$salt) = @_; croak "Salt must be 8 bytes long" unless length $salt == 8; my $key_len = $self->{keysize}; my $iv_len = $self->{blocksize}; my $desired_len = $key_len+$iv_len; my $data = ''; my $d = ''; while (length $data < $desired_len) { $d = md5($d . $pass . $salt); $data .= $d; } return (substr($data,0,$key_len),substr($data,$key_len,$iv_len)); }
Szansa na to, że ktoś będzie w stanie manipulować wynikowym IV bez modyfikacji (wynikowego) klucza jest bardzo "przyzerowa".