I guess they are saying that using the unhashed public key it would be more feasible to design some collision attack, based on its contents, rather than there being a small number of possible outputs. Makes sense on the surface as a fail-safe precaution.
I don't know exactly what you mean here. "interaction between ECDS and hash function" sounds totally weird, because it would mean that *inadvertedly* the hash function would a) suffer from a reduced output space if its inputs are public ECDS keys or b) would accidentally expose the private key, or make that easier.
Both arguments don't hold water, because:
a) the private key being a random number, and the relationship private->public key being a bijection (an exponentiation in a cyclic group of prime order) the public key is just as random as any random number, so there's no "structure" in the public key.
b) if a given hash function were to solve accidentally, even partially, the discrete log problem of ECDS, that would be a monumental exploit !!
I wasn't arguing for using the direct public key (although one could consider that). I was arguing for using the SHA-256 hash of the public key directly, without channelling it through RIPEMD-160, and to use the full 256 hash bits.
2) the "double hashing to avoid the extension attack" in this case is also weird, as the original key is only 512 bits (in long format) and hence, there's no need for the application of Merkle-Damgard, as one single block hash primitive has to be called, and there's no "extension" possible. In other words, this is a protection against a kind of attack that is totally irrelevant in this case.
I'm not following you at all. Why would 'only 512 bits' make the extension attack not work? I don't deeply understand how this attack works but why would the attack not be possible?
Well, the extension attack is of no meaning here, for different reasons, but the extension attack comes about when one knows the hash of a given document. In the Merkel-Damgard construction, the document to be hashed it sliced into blocks of 512 bits, and the hash output of the first block is fed into the hash input of the second block and so on. So if you know the final hash, you can add a bloc with your own content, irrespective of what was the hashed content up to that point, and use the published hash and your new block, to present the hash of a document, whatever it was, appended with your block.
For instance, if there was a secret text giving a whole explanation of a battle plan, were hashed (and you don't know the content), you could take that hash, add a block of your likings, for instance saying "PS: all of the above is wrong, the attack will take place at noon", and you would be able to calculate the correct hash of the document, with this bloc appended to it. This would totally alter the meaning of the document, and you would still be able to produce a correct hash.
But when hashing the key, there's no such meaning of appending a bloc. Nobody is going to look at any fake message with "more stuff in it than just the original key". Moreover, there's only one single call to the compression function, and Merkle-Damgard isn't even used for this.
This attack is an attack in a totally different setting of the use of a hash than it is with a bitcoin address, and hence doesn't make sense. It makes sense when you can do a man-in-the-middle attack with a transmitted document of which you can't change the content, but you can append content to it, and you can provide a different hash.