Archeologia 2
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?
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”.
Oryginał tego wpisu dostępny jest pod adresem Archeologia 2
Autor: Paweł Goleń