@Iszi here's a short story... (ok, maybe not "short"... sorry for that :P)
let's say you want to download VLC. For windows. Lastest version (ver. 1.1.5). Ok ?
Your first place to go would be http://www.videolan.org (official site).
But you can find and get the "same" prog from 5.780.000 sites. Right? (google "vlc download 1.1.5").
The official site says that MD5 of file is "988bc05f43e0790c6c0fd67118821d42" (see link). And you can get this prog (ver. 1.1.5) either from official videolan.org WEB server (NO HTTPS). Or click the link , redirect to Sourceforge and get it. And again with NO HTTPS. But Sourceforge is a big name. Trustworthy. Right? And guess what. Your uncle who has VLC, sends you a rapidshare link via email, to download it. And your friend from work too.
So you download it from these "trustworthy sources".
Friends, sites, versions, uncles. You trust them all. Right ? I don't think so. At least you shouldn't.
There is one (and only one) way to check that what you got, is the original file. Unaltered, unmodified. Untouched. And that is to compare the hash of it. But with what? With the hash from the official source.
No HTTP(S), no digital signatures, no "Secure" or "Trusted" server. Nothing. You don't need any of these. Data integrity is your friend.
Its the same with PGP/GnuPG. You can detect whether a message has been altered since it was completed.
@Justice said that
A sufficiently skilled cracker can replace the file with a maliciously modified version and the hash with one that matches the modified file
Sure, MD5 Collisions have been found to exist. And SHA-1 collisions also exist. But to quote Wikipedia:
Cryptographic hash functions in general use today are designed to be collision resistant, but only very few of them are absolutely so. MD5 and SHA-1 in particular both have published techniques more efficient than brute force for finding collisions. However, some compression functions have a proof that finding collision is at least as difficult as some hard mathematical problem (such as integer factorization or discrete logarithm). Those functions are called provably secure.
And I don't think that a "sufficiently skilled cracker" could find a "bad version" or make one file/binary/whatever of the original you want and make it have the same MD5/SHA-1 as the original. And make it look the same (pic). Or with the same filesize, or even make it run or make sense (text). Not even close. He can make it undetected for antivirus (if malicious). That's a different story. But there are some really bad cases for collissions reported.
So, download from ANY (good) source you like, but compare hash from the original source. And there is always one original source.