Quote
I am not sure if this new feature really adds security, or if it not just opens ways for new attack scenarios. Like bringing down valid shares by publishing links with bad AICH.
Well a good start would be to look into the sources. I mean its actually even described in the comments.
Quote
Q2: How can an AICH hash from a KAD search be trusted?
// About the AICH hash: We received a list of possible AICH Hashs for this file and now have to deceide what to do
// If it wasn't for backwards compability, the choice would be easy: Each different md4+aich+size is its own result,
// but we can'T do this alone for the fact that for the next years we will always have publishers which don'T report
// the AICH hash at all (which would mean ahving a different entry, which leads to double files in searchresults). So here is what we do for now:
// If we have excactly 1 AICH hash and more than 1/3 of the publishers reported it, we set it as verified AICH hash for
// the file (which is as good as using a ed2k link with an AICH hash attached). If less publishers reported it or if we
// have multiple AICH hashes, we ignore them and use the MD4 only.
// This isn't a perfect solution, but it makes sure not to open any new attack vectors (a wrong AICH hash means we cannot
// download the file sucessfully) nor to confuse users by requiering them to select an entry out of several equal looking results.
// Once the majority of nodes in the network publishes AICH hashes, this might get reworked to make the AICH hash more sticky
Quote
MD4 is known to be weak. Weak means, you can create data matching a certain hash easier than in 2^128 attempts.
Your definition of weak is not quite helpful for the praxis. Current MD4 weaknesses allow to produce different data with the same hash if you are able to create both data parts (which means that you cannot easily corrupt an existing file in the network). This may change in the future however if attacks develop further - that why we did those changes in 0.50a.
Quote
Q1: There is no protection against publishing of false MD4 hash sets at the moment, right?
Given that we have a full identifier (including AICH hash), the file won't finish in this case - but we will not complete nor spread any corrupted data.
// Right now we demand that AICH (if we have one) and MD4 agree on a parthash, no matter what
// This is the most secure way in order to make sure eMule will never deliver a corrupt file,
// even if one of the hashalgorithms is completely or both somewhat broken
// This however doesn't means that eMule is guaranteed to be able to finish a file in case
// one of the algorithms is completely broken, but we will bother about that if it becomes an
// issue, with the current implementation at least nothing can go horribly wrong (from a security PoV)
Quote
So is an AICH part hashset different from a recovery hashset? How and why?
A recovery hashset contains all hashes - because they are needed to recover corruptions. A part hashset contains only part hashes. Since AICH is a tree hash, you can always create the part hashset out of the recovery one.