Bitcoin safety by no means trusted resistance to length-extension as a result of preimages are public anyway, and customary perception is that the double was used only for defense-in-depth.
I do not suppose Bitcoin ever makes use of hashes in a approach that might undergo from size extensions, however I assume Satoshi went with the secure alternative of stopping it in all places.
To keep away from this property, Ferguson and Schneier advised utilizing SHA256d = SHA256(SHA256(x)) which avoids length-extension assaults. This development has some minor weaknesses (not related to bitcoin), so I would not advocate it for brand spanking new protocols, and would use HMAC with fixed key, or truncated SHA512 as an alternative.
https://bitcoin.stackexchange.com/a/8461/137501
The paper’s discovery is fascinating in that it will transfer SHA256d additional away from a random oracle which has implications for secondary on-chain makes use of (e.g. in sensible contracts or as 32-byte P2SH wrapper).
Apparently, Bitcoin builders did not suppose that securing in opposition to length-extension issues in order that they went with plain SHA256 for SegWit P2WSH handle hashes.
Later, Bitcoin Money builders selected SHA256d for P2SH32, thus sustaining consistency with the remainder of the protocol, and unlinkability between never-spent-from addresses.
Readers is likely to be all in favour of some older associated work, that has already proven a weak point in opposition to an unique use-case (Dodis et al., 2013):
We exhibit a cryptographic setting, known as mutual proofs of labor, by which the highlighted construction of H2 will be exploited. In mutual proofs of labor, two events show to one another that they’ve computed some asserted quantity of computational effort. This process is impressed by, and much like, shopper puzzles [20, 21, 27, 28, 40] and puzzle auctions [42]. We give a protocol for mutual proofs of labor whose computational process is computing hash chains. This protocol is safe when utilizing a random oracle, however when utilizing as an alternative H2 an attacker can cheat by abusing the structural properties mentioned above.
