ダウンロードしたファイルを確認する方法

提供:Dev Guides
移動先:案内検索

著者はElectronicFrontier Foundation を選択し、 Write forDOnationsプログラムの一環として300ドルの寄付を受け取りました。

序章

LinuxディストリビューションISOなどのオープンソースソフトウェアをダウンロードした可能性があります。ダウンロードリンクの横には、ファイルのチェックサムをダウンロードするためのリンクがあります。 そのチェックサムリンクが何のためにあるのか疑問に思ったことはありますか? このチェックサムは、ダウンロードしたファイルの整合性を検証するために使用されます。

2016年2月20日、人気のあるLinuxディストリビューションであるLinux MintのWebサイトがハッキングされ、ディストリビューションのインストールに使用されたISOが侵害されました。 侵害されたISOが発見される前に、多くの人がバックドアが組み込まれたバージョンのLinuxMintをダウンロードしてインストールした可能性があります。

変更されたISOをダウンロードした個人がファイル検証を実行して、ダウンロードしたものが元のファイルと同じチェックサムを持っているかどうかを確認した場合、この危険なインストールはユーザーレベルで回避できたはずです。 ハッキングされたISOは、元のISOとは完全に異なるチェックサムを持っていました。

ファイルの検証は、ファイルがハッキングされた可能性があることを示している可能性がありますが、ダウンロードしたファイルが正しくないか、ダウンロードプロセス中に変更されたことをユーザーに示すのに役立つことがよくあります。 ダウンロード中にTCPパケットがドロップされた場合、ダウンロードしたファイルはほんのわずかなものである可能性があり、ファイル検証を実行すると、ダウンロードしたものがソースサーバーで利用可能なものとは異なることがわかります。

このチュートリアルでは、ファイル検証とは何か、なぜそれが重要なのか、コマンドラインツールを使用してさまざまなオペレーティングシステムでファイル検証を行う方法を学習します。

前提条件

この記事では、すべての主要なオペレーティングシステムに組み込まれているファイル検証用のコマンドラインツールを使用します。

検証するファイルと、そのファイルのMD5およびSHA1チェックサムが必要です。

ファイルの検証にはUbuntuインストールISOを使用します。 64ビットPC(amd64、x86_64)用の Ubuntu Minimal CDISOをダウンロードします。 ダウンロード中は、ダウンロードリンクの横にあるMD5とSHA1の合計に注意してください。 チュートリアル全体でこれらのチェックサムを使用します。

ファイル検証のしくみ

ハッシュとも呼ばれるファイル検証は、マシン上にあるファイルがソースファイルと同一であることを確認するプロセスです。ファイルをハッシュすると、チェックサム[が残ります。 X202X]、設定された長さのランダムな英数字の文字列。 ファイルをハッシュしてもファイルは暗号化されず、チェックサムを取得してアルゴリズムを実行し直して元のソースファイルを取得することはできません。

チェックサムを生成するプロセスは、一方向暗号化関数と呼ばれることがよくあります。 ファイルに対してハッシュを実行すると、ファイルはランダムな文字列に「要約」されます。 たとえば、1000文字を含むドキュメントがあるとします。 MD5アルゴリズムを使用してファイルをハッシュすると、結果のチェックサムは32個のランダムな文字になります。 2000文字の長さのファイルをハッシュする場合、結果のMD5チェックサムは32文字のままです。 ソースファイルの長さが10文字しかない場合でも、MD5チェックサムはランダムに32文字になります。

同じファイルに対してハッシュを実行するたびに、そのファイルのすべてのビットが変更されていない限り、ハッシュ内の文字列は常に同じになります。 ただし、ファイル内の余分なスペースなど、1つでも異なる場合、チェックサムは完全に異なります。

ファイル検証で通常表示されるチェックサムには、MD5またはSHAの2種類があります。

MD5アルゴリズムは、暗号化の世界で簡単にハッキングできるという批判を受けていますが、ファイルの検証に関しては、これは問題ではありません。 ファイルの整合性の検証に関しては、暗号化ツールの弱点は問題ではありません。 MD5は成熟した仕様であり、ハッシュを実行する他の方法よりも高速であるため、これは私たちにとって良いことです。

最近、チェックサムにSHAハッシュアルゴリズムを使用することが増えています。これは、一部の最新の暗号化で使用されているハッシュアルゴリズムであるためです。 ただし、MD5とは異なり、SHAにはさまざまなバージョンがあり、チェックするときは正しいバージョンを使用することが重要です。 バージョンは、1、2、3などの数値として、またはSHAが連続して実行された回数(256、384、512など)によって識別されます。 使用するチェックサムは、使用するSHAのバージョンを指定する必要があります。 サイトがSHAというラベルのハッシュのみを指定し、番号がない場合は、SHA1を使用していると見なすのが安全です。

ファイル検証の目的では、両方の方法が等しく有効です。 アルゴリズムは異なりますが、MD5ハッシュはどのSHAハッシュよりも短いものの、どちらも設定された長さのランダムな文字列を返します。

:ファイル検証の目的でもPGP/GPG署名が提供される場合があります。 これらの種類の署名はあまり一般的ではなく、チェックするのがより複雑です。 サイトの公開鍵であるチェックサムをダウンロードし、チェックを実行するためにシステムにgpgを設定しておく必要があります。 これらの手順は、このチュートリアルの範囲を超えています。


ダウンロードしたファイルのハッシュをチェックすると、両方とも価値のある2つの異なる保証が提供されます。 まず、チェックサムが一致していれば、ダウンロードしたファイルがソースと同一であり、サードパーティによって変更されていないことを確認できます。 次に、転送中にファイルが破損または変更されていないことがわかります。 どちらかが発生した場合、ダウンロードがマシンに害を及ぼす可能性があるか、まったく機能しない可能性があるため、これらの両方のケースは重要です。

チェックサムとは何か、ファイルに対してチェックを実行する必要がある理由がわかったので、OSでチェックサムを実行する方法を見てみましょう。 Linuxについて見ていきましょう。

Linuxでのファイル検証の実行

ほとんどのLinuxディストリビューションには、ハッシュアルゴリズムごとにコマンドラインツールがあります。 ツール名のパターンは、「HASH-TYPE」と「sum」という単語です。 したがって、MD5でハッシュする場合、プログラム名はmd5sumです。 SHA 256でハッシュする場合、コマンドはsha256sumです。 正確な名前がわからない場合は、ハッシュアルゴリズム名を入力し、Tabキーを2回押すと、ほとんどのディストリビューションにそのアルゴリズム名で始まるすべてのコマンドが表示されます。 以下に、よくあるチェックをいくつか紹介します。

MD5ハッシュアルゴリズムを使用して最初のチェックを実行します。 md5sumコマンドを実行し、ハッシュするファイルへのパスを渡します。

md5sum mini.iso

結果は次のようになります。

Output8388f7232b400bdc80279668847f90da  mini.iso

'8388f'で始まるランダムな文字列がチェックサムであり、これをダウンロードページで提供されるチェックサムと比較する必要があります。

ファイルを変更するとチェックサムが完全に異なるため、時間を節約するために、最初の数文字をチェックするだけで、最後の数文字はすべての文字ではなくソースと同じになります。

たとえば、「mini.iso」のチェックサムが一致することをすばやく確認する場合は、両方のチェックサムが「8388f」で始まり「f90da」で終わることを確認します。 両方が一致する場合、完全なハッシュが同じである可能性が非常に高くなります(ほぼ100%)。

100 % sを確認したい場合は、ローカルチェックの出力の下にあるWebサイトからチェックサムをコピーして貼り付け、すべての文字が並んでいるかどうかを確認します。

Output8388f7232b400bdc80279668847f90da  mini.iso
8388f7232b400bdc80279668847f90da

次に、SHAハッシュのチェックを見てみましょう。 最も一般的なSHAハッシュコマンドはsha1sumsha256sumです。 sha1sumコマンドを実行して、ファイルへのパスを渡します。

sha1sum mini.iso

結果は次のようになります。

Outputcce936c1f9d1448c7d8f74b76b66f42eb4f93d4a  mini.iso

結果の値をWebページの値と比較して、それらが一致することを確認します。

それでは、macOSでファイルを検証する方法を見てみましょう。

macOSでファイル検証を実行する

Linuxとは異なり、macOSには、アルゴリズムごとに1つではなく、2つのハッシュコマンド(md5shasum)しかありません。 ただし、これらのツールだけで必要なすべてのチェックを実行できます。

アプリケーションやオペレーティングシステムが異なるにもかかわらず、これらのツールから得られるハッシュはすべてのOSで同じです。

md5はスタンドアロンのアルゴリズムであるため、macOSでの独自のコマンドです。 md5コマンドを実行し、チェックするファイルへのパスを渡します。

md5 mini.iso

結果は次のようになります。

OutputMD5 (mini.iso) = 8388f7232b400bdc80279668847f90da

ご覧のとおり、macOSでの出力はLinuxでの出力とまったく同じではありませんが、ファイル名と32文字のランダムな文字列が表示されます。 文字を元のMD5チェックサムと比較し、それらが一致することを確認します。

次に、SHAチェックサムの検証を見てみましょう。 macOSには、shasumと呼ばれるSHAチェックを実行するために使用されるユーティリティが1つあります。 実行するときは、引数として必要なSHAチェックのタイプを指定します。

-aフラグを使用してSHA1を指定し、次のコマンドを実行します。

shasum -a 1 mini.iso

結果は次のようになります。

Outputcce936c1f9d1448c7d8f74b76b66f42eb4f93d4a  mini.iso

この値を元のファイルのSHA1ハッシュと比較します。 それらが一致しない場合は、ファイルをダウンロードして、そのハッシュをもう一度確認してみてください。

SHA 256チェックを実行する必要がある場合、コマンドはshasum -a 256 mini.isoになります。 タイプを指定しない場合、デフォルトでSHA1になります。

次に、Windowsでのファイルの検証を見てみましょう。

Windowsでのファイル検証の実行

Windows 7以降のバージョンには、すべてのハッシュニーズを処理できるcertutilアプリが含まれています。 出力はLinuxやmacOSとは大きく異なりますが、チェックサムは同じで同じように有効です。 次の例は両方ともPowerShellを使用しています。

コマンドの形式はcertutil -hashfile path/to/file ALGORITHMです。

コマンド「certutil」では大文字と小文字が区別されないため、「CertUtil」、「certUtil」、および「certutil」はすべて有効です。 ただし、アルゴリズムでは大文字と小文字が区別されます。つまり、「md5」は機能せず、「MD5」と入力する必要があります。

mini.isoファイルのMD5ハッシュを確認するには、次のコマンドを実行します。

certutil -hashfile mini.iso MD5

結果は次のようになります。

OutputMD5 hash of file mini.iso:
8388f7232b400bdc80279668847f90da
CertUtil: -hashfile command completed successfully.

SHAアルゴリズムの場合、同じコマンドを実行しますが、MD5の代わりにSHA1を使用します。

SHAの後の番号は、SHAの異なるバージョンまたはイテレーションを指定します。 したがって、SHA1ハッシュにはSHAまたはSHA1を使用し、SHA256アルゴリズムが必要な場合はSHA256を使用します。

certutil -hashfile mini.iso SHA1

結果は次のようになります。

OutputSHA1 hash of mini.iso:
cce936c1f9d1448c7d8f74b76b66f42eb4f93d4a
CertUtil: -hashfile command completed successfully.

結果のハッシュをダウンロードページのハッシュと比較して、一致していることを確認します。

結論

ダウンロードしたばかりのファイルがダウンロード中に破損していないことを確認する場合でも、悪意のある人物がダウンロードサーバーをハッキングしていないことを確認する場合でも、ファイルのハッシュをチェックするためにかかる余分な時間は、努力する価値があります。

コマンドラインが少し不便でファイルの検証が簡単でない場合は、代わりに使用できるGUIベースのツールをいくつか示します。