インターネットからソフトウェアをダウンロードしたときに、ハッシュまたはチェックサムへの参照を見たことがある可能性があります。多くの場合、ソフトウェアが表示され、リンクの近くにチェックサムがあります。チェックサムには、MD5、SHA、または他の同様の名前のラベルが付いている場合があります。これは、1990年代の私のお気に入りの古いゲームの1つであるNethackを使用した例です。
多くの人は、この情報が何を意味するのか、またはそれをどのように扱うのかを正確に知りません。この記事では、ハッシュの目的とその使用方法について説明します。
[読者も楽しんだ:GPG(GnuPG)の使用を開始する]
暗号化の目標
この最初のセクションでは、あなたに何かを学ばせてほしい。具体的には、暗号化という単語間の頭の中での関連性を断ち切ってほしい と単語機密 。私たちの多くは、実際にはそうではないのに、これらの2つの単語は同義語であると考えています。暗号化を含む暗号化は、できます 機密性を提供しますが、他の目標も満たすことができます。
暗号化には実際には3つの目標があります:
- 機密保持-許可されていないユーザーがファイルの内容を読み取らないようにするため
- 信頼性-ファイルの出所を証明するため
- 整合性-ファイルが予期せず変更されていないことを証明するため
それはその3番目の概念である整合性です。 、ここで興味があること。このコンテキストでは、整合性とは、データが予期せず変更されていないことを証明することを意味します。整合性の証明は多くのシナリオで役立ちます:
- Linuxディストリビューション、ソフトウェア、データファイルなどのインターネットダウンロード
- NFS、SSH、またはその他のプロトコルを介したネットワークファイル転送
- ソフトウェアインストールの確認
- パスワードなどの保存された値とユーザーが入力した値の比較
- 2つのファイルを比較して変更されているかどうかを確認するバックアップ
ハッシュとは何ですか?
暗号化では、ハッシュを使用してファイルが変更されていないことを確認します。簡単な説明は、インターネットダウンロードの両端のファイルで同じハッシュ方法が使用されていることです。ファイルはWeb管理者によってWebサーバー上でハッシュされ、ハッシュ結果が公開されます。ユーザーがファイルをダウンロードし、同じハッシュメソッドを適用します。ハッシュ結果、またはチェックサム 、比較されます。ダウンロードしたファイルのチェックサムが元のファイルのチェックサムと同じである場合、2つのファイルは同一であり、ファイルの破損や中間者攻撃などによる予期しない変更はありません。
>ハッシュは一方向のプロセスです。ハッシュされた結果を元に戻して元のデータを公開することはできません。チェックサムは、設定されたサイズの出力の文字列です。技術的には、暗号化は逆にされる(復号化される)ことを目的としているため、ハッシュは暗号化ではないことを意味します。
Linuxではどのような種類のハッシュ暗号を使用できますか?
メッセージダイジェストとセキュアハッシュアルゴリズム
Linuxでは、次の2つのハッシュ方法のいずれかを操作する可能性があります。
- MD5
- SHA256
これらの暗号化ツールは、macOSだけでなく、ほとんどのLinuxディストリビューションに組み込まれています。通常、Windowsにはこれらのユーティリティが含まれていないため、このセキュリティ技術を使用する場合は、サードパーティベンダーから個別にダウンロードする必要があります。このようなセキュリティツールがLinuxとmacOSの一部であることは素晴らしいことだと思います。
メッセージダイジェストとセキュアハッシュアルゴリズム
メッセージダイジェストとセキュアハッシュアルゴリズムの違いは何ですか?違いは関係する数学にありますが、2つは同様の目標を達成します。システム管理者はどちらか一方を好むかもしれませんが、ほとんどの目的で、同じように機能します。ただし、これらは互換性がありません。接続の一方の端でMD5を使用して生成されたハッシュは、もう一方の端でSHA256が使用されている場合は役に立ちません。両側で同じハッシュメソッドを使用する必要があります。
SHA256はより大きなハッシュを生成し、完了するまでにより多くの時間と計算能力を必要とする場合があります。より安全なアプローチであると考えられています。 MD5は、ファイルのダウンロードなど、ほとんどの基本的な整合性チェックにおそらく十分です。
Linuxのハッシュはどこにありますか?
Linuxは、多くの場所や状況でハッシュを使用します。チェックサムは、ユーザーが手動で生成できます。これを行う方法については、この記事の後半で詳しく説明します。さらに、ハッシュ機能は / etc / shadow
に含まれています 、 rsync
、およびその他のユーティリティ。
たとえば、 / etc / shadow
に保存されているパスワード ファイルは実際にはハッシュです。 Linuxシステムにサインインすると、認証プロセスにより、保存されているハッシュ値が、入力したパスワードのハッシュバージョンと比較されます。2つのチェックサムが同一の場合、元のパスワードと入力内容は同一です。つまり、正しいパスワードを入力しました。ただし、これは、システムに保存されているパスワードを実際に復号化することなく決定されます。 / etc / shadow
のユーザーアカウントの2番目のフィールドの最初の2文字を確認してください 。 2人のキャラクターが$1の場合 、パスワードはMD5で暗号化されています。キャラクターが$5の場合 、パスワードはSHA256で暗号化されています。値が$6の場合 、SHA512が使用されています。以下に示すように、SHA512は私のFedora33仮想マシンで使用されています。
チェックサムを手動で生成する方法
ハッシュユーティリティの使用は非常に簡単です。ラボのコンピューターまたは使用可能なLinuxシステムで実行する非常に簡単なシナリオについて説明します。このシナリオの目的は、ファイルが変更されたかどうかを判断することです。
まず、お気に入りのテキストエディタを開き、 original.txt
という名前のファイルを作成します 元の情報。というテキスト行があります。
[damon @ localhost〜] $ vim original.txt [damon @ localhost〜] $catoriginal.txt元の情報。[damon@localhost〜] $
次に、ハッシュアルゴリズムを使用してファイルを実行します。今はMD5を使用します。コマンドはmd5sum
です 。次に例を示します:
[damon @ localhost〜] $ md5sum original.txt80bffb4ca7cc62662d951326714a71be original.txt [damon @ localhost〜] $
結果のチェックサム値に注意してください。この値は十分に大きいため、操作が困難です。その値をファイルにリダイレクトして、将来使用できるように保存しましょう:
[damon @ localhost〜] $ md5sum original.txt> hashes.txt [damon @ localhost〜] $ cat hashes.txt80bffb4ca7cc62662d951326714a71be original.txt [damon @ localhost〜] $
この時点で、元のファイルがあります。そのファイルを/tmp
にコピーします duplicate.txt
という名前のディレクトリ 。次のコマンドを使用してファイルをコピーします(移動ではなく、必ずコピーしてください):
[damon @ localhost〜] $ cp original.txt /tmp/duplicate.txt [damon @ localhost〜] $
次のコマンドを実行して、コピーしたファイルのチェックサムを作成します。
[damon @ localhost〜] $ md5sum /tmp/duplicate.txt80bffb4ca7cc62662d951326714a71be /tmp/duplicate.txt [damon @ localhost〜] $
次に、ハッシュ結果を hashes.txt
に追加します ファイルを作成し、2つを比較します。 >>
の使用には十分注意してください >
のため、ここにリダイレクト演算子を追加します original.txt
のハッシュ値を上書きします ファイル。
次のコマンドを実行します:
[damon @ localhost〜] $ md5sum /tmp/duplicate.txt>> hashes.txt [damon @ localhost〜] $ cat hashes.txt80bffb4ca7cc62662d951326714a71be original.txt80bffb4ca7cc62662d951326714a71be /tmp/duplicate.txt [da ] $
2つのハッシュ結果は同一であるため、コピープロセス中にファイルは変更されませんでした。
次に、変更をシミュレートします。次のコマンドを入力して、 /tmp/duplicate.txt
を変更します ファイルの内容を確認してから、 md5sum
を再実行します >>
を使用したコマンド 追加演算子:
[damon @ localhost〜] $ hostname>> /tmp/duplicate.txt [damon @ localhost〜] $ md5sum /tmp/duplicate.txt>> hashes.txt [damon @ localhost〜] $ コード>
あなたはduplicate.txt
ファイルはoriginal.txt
と同一ではなくなりました ファイルですが、それを証明しましょう:
[damon @ localhost〜] $ cat hashes.txt80bffb4ca7cc62662d951326714a71be original.txt80bffb4ca7cc62662d951326714a71be /tmp/duplicate.txt1f59bbdc4e80240e0159f09ecfe3954d
2つのチェックサム値は同一ではないため、チェックサムが生成された2つのファイルは同一ではありません。
上記の例では、ハッシュ値を cat
で表示して、手動で比較しました。 。 -check
を使用できます md5sum
を持つオプション 私たちのために比較してください。以下に両方の方法を含めました:
[damon @ localhost〜] $ cat hashes.txt80bffb4ca7cc62662d951326714a71be original.txt80bffb4ca7cc62662d951326714a71be /tmp/duplicate.txt1f59bbdc4e80240e0159f09ecfe3954d / tmp / duplicate /tmp/duplicate.txt:失敗/tmp/duplicate.txt:OKmd5sum:警告:1つの計算されたチェックサムが[damon @ localhost〜] $
と一致しませんでした
sha256sum
を置き換えて、上記の手順を繰り返すことができます md5sum
の場合 コマンドを使用して、SHAアルゴリズムを使用してプロセスがどのように機能するかを確認します。 sha256sum
コマンドには--checkchecksum
も含まれています 結果のハッシュを比較し、ファイルが異なるかどうかのメッセージを表示するオプション。
注 :Linux、macOS、およびWindows間でファイルを転送する場合でも、ハッシュを使用してファイルの整合性を検証できます。 macOSでハッシュ値を生成するには、 md5
を実行します 指図。 Windowsでこれを行うには、サードパーティのプログラムをダウンロードする必要があります。個人的には、 md5checkerを使用しています 。これらのユーティリティのライセンスを必ず理解してください。 PowerShellコマンドレットget-filehash
を使用できる場合があります 、インストールしたPowerShellのバージョンによって異なります。
[無料コース:RedHatSatelliteの技術概要。 ]
まとめ
ハッシュは、ファイル転送、ダウンロード、またはその他のイベント中にデータが予期せず変更されていないことを確認します。この概念は、ファイルの整合性として知られています。ハッシュは何が変わったかを教えてくれません。何かが変わっただけです。ハッシュによって2つのファイルが異なることがわかったら、 diff
などのコマンドを使用できます。 違いが何であるかを発見するために。
Linux