How
do you know for sure that the 4 GB file you just downloaded has been
transferred without error? One way is to use a hash algorithm that
produces a “fingerprint” or a “message digest” of the downloaded file.
Like human fingerprints, the resulting character string is meant to be
unique and only that file can produce that fingerprint. Sites offering
large downloads, say a Linux distribution like Fedora, will also publish
a list of the hashes for the files. All you need to do is check the
hash of the file you have against the published hash and if they are the
same, then the file has been downloaded correctly.
In the past,
the preferred hashing algorithm was MD5 and although it is still widely
used (for example the Ubuntu project still provides MD5 hashes), it is
slowly being replaced by the SHA family of hashes. The problem with MD5
is that it is possible to create multiple files with the same
fingerprint. In one famous case among cryptographers, a security
researchers said he knew who would win the presidential election and he
had created a file with the result in it and issued the MD5 hash. He
would release his file after the election and prove his prediction was
right. In fact, what he had done was create several files with all the
possible winners and manipulated the files in such a way that they all
had the same MD5 fingerprint!
There are several different Secure
Hash Algorithms (SHA) including SHA1, SHA256 and SHA512. Technically
SHA256 and SHA512 both use the same algorithm, but process the data in
different sized chunks – SHA256 uses 32 bit blocks and SHA512 64 bit
blocks.
SHA1 is similar to MD5 and like MD5, there are some
concerns about the uniqueness of the resulting hashes and it is no
longer approved for many cryptographic uses since 2010. However if you
find a site which publishes SHA1 hashes, you can check them like this:
sha1sum Fedora-19-i386-netinst.iso
|
The output will look like this:
b24e9b7bd49168839fd056bbd0ac8f2aec6b68b9 Fedora-19-i386-netinst.iso
|
SHA256 hashes are generated in the same way:
sha256 Fedora-19-i386-netinst.iso
|
And the output is similar, except note that the fingerprint string is much longer:
2b16f5826a810bb8c17aa2c2e0f70c4895ee4b89f7d59bb8bf39b07600d6357c Fedora-19-i386-netinst.iso
|
And likewise for SHA512:
sha512sum Fedora-19-i386-netinst.iso
|
The resulting fingerprint is even longer:
9eb35d03cc289aa5d5a29cfc9080c3152a3da1b91a2b12d352b16a3d817a7479b9d1be3c7ecf011abf6a01f3122c66892f96a2c213756df786117412d8df99b3 Fedora-19-i386-netinst.iso
|
Rather
just publish the fingerprint string in isolation, some sites offer a
checksum file which contains all the hash information in a machine
readable form that the various
sha
commands can use to
automatically verify files. A checksum file for the net install 32 bit
Intel version of Fedora 19 might look like this:
2b16f5826a810bb8c17aa2c2e0f70c4895ee4b89f7d59bb8bf39b07600d6357c *Fedora-19-i386-netinst.iso
|
To check this use the “
-c
” parameter like this:
sha256sum -c Fedora-19-i386-CHECKSUM
|
Where
Fedora-19-i386-CHECKSUM
is the name of the file containing the fingerprint information as shown above.
If the fingerprints match, then the output will look like this:
Fedora-19-i386-netinst.iso: OK
|
If there is an error in the downloaded file, the output will be:
Fedora-19-i386-netinst.iso: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
|
Try this
Your Linux distribution likely also contains the
sha224
and
sha384
commands. These two hash algorithms are truncated versions of SHA256
and SHA512. They can be used in exactly the same way as the
sha256
and
sha512
commands. Try producing hashes uses them and notice the differences in the output.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.