> Fingerprint-ы это как правило хэш от ключей. Хэш это уже утечка информации о них.А любые публичные ключи наверное тогда вообще полный пи...ц? Ведь там даже не хэш а целиком ключ бывает. И если что - ремота в OTR знает fingerprint ключа другой стороны.
А если чуть попроще мыслить - там где OTR требуется, отправитель и получатель как правило и так известны на уровне протокола. Если б протокол заботился об этом моменте - OTR поверх него элементарно не требовался бы. По поводу чего о какой-то особой анонимности в случае OTR речь как правило не идет. Только о защите содержимого от чтения.
> Это не zero-knowledge система.
Если мы вообще ничего не знаем о ремоте - то и отличить от MITM не сможем. Поэтому заявления про zero knowledge лишь попытка замаскировать проблему. В результате все приходит к еще более сложному формату чем проверка фингерпринта. А так можно проверять не фингерпринт а например какой-то дериватив от текущегшо временного ключа шифрования, по типу хэшей. Если ключи будут разными (т.е. MITM проксирует в обе стороны) - MITM попался. И сравнить 2 числа с разных сторон линка - может даже обезьяна. А всякие заморочки с совместно знаемым заранее ответом на вопрос... блин, перцы, если у меня уже есть shared secret с ремотой - зачем мне вообще диффи-хеллманы и публичная криптография вообшще, интерсно? Можно втупую симметричное шифрование вкатить и не заморачиваться :)
> То есть возможна атака когда мы создадим например публичный асимметричный
> ключ с таким же fingerprint-ом.
Для этого надо или найти коллизии в функции хэширования и там будет много иных проблем, или же атакующий должен угадать приватный ключ. А это уже поимение.