
ハッシュ化とは?
ハッシュ化はデータセキュリティの基本技術です。その仕組みと、機密情報の保護に果たす役割を解説します。

ハッシュ化は暗号技術と情報セキュリティの基本概念です。このガイドでは、ハッシュ化の原理、暗号学的ハッシュ関数の仕組み、機密データの保護における重要性を解説します。
ハッシュ関数の種類や特性、パスワードの保存、データの完全性検証、デジタル署名などの一般的な用途を紹介します。用途に適したハッシュ関数の選び方と、組織で安全なハッシュ化を実践する方法も解説します。

ハッシュアルゴリズムとは?
ハッシュ値は、MD5(Message Digest 5)やSHA(Secure Hash Algorithm)などのハッシュアルゴリズムが出力する値です。これらのアルゴリズムは、任意のデータや「メッセージ」から、一意の固定長文字列であるハッシュ値、つまり「メッセージダイジェスト」を生成することを目的としています。コンピューター上のファイルは、最終的にはすべてバイナリ形式で表せるデータです。ハッシュアルゴリズムはそのデータに複雑な計算を施し、結果を固定長の文字列として出力します。この結果が、ファイルのハッシュ値またはメッセージダイジェストです。
Windows 10でファイルのハッシュ値を計算するには、PowerShellに組み込まれたGet-FileHash cmdletを使用し、対象ファイルのパスを指定します。デフォルトではSHA-2 256アルゴリズムが使用されます。

別のアルゴリズムを使用するには、ファイルパスの後に-Algorithmスイッチで指定します。結果をFormat-Listに渡すと、出力が読みやすくなります。

MacとLinuxでは、コマンドラインツールのshasumとmd5が同じ役割を果たします。後述するように、同じファイルとハッシュアルゴリズムを使用すれば、Windows、Mac、Linuxのどれでもハッシュ値は同じです。
ハッシュ値によるファイルの識別
ハッシュ値から元のデータを復元することはできません。そのため、ハッシュアルゴリズムで得たファイルのハッシュ値だけでは、ファイルの内容を再構築できません。一方、内容を知らなくても、2つのファイルが同一かどうかを判定できます。
このため、ハッシュ値が一意であることは、ハッシュの概念全体の基礎となります。異なる2つのファイルから同じダイジェストが生成されると「衝突」が発生し、そのハッシュ値をファイルの信頼できる識別子として使用できなくなります。
衝突が起こる可能性は低いものの、皆無ではありません。そのため、SHA-1やMD5は、より安全なSHA-2などのアルゴリズムに置き換えられました。例えば、次の2つのファイル、 ship.jpgとplane.jpg は、見た目から内容が明らかに異なるため、異なるメッセージダイジェストが生成されるはずです。

しかし、MD5で値を計算すると衝突が発生し、ファイルが同一であると誤って示されます。ここではmacOSのTerminal.appで実行したコマンドラインの出力を示していますが、ship.jpgのハッシュ値が先ほどPowerShellで得た値と同じであることがわかります。

SHA-2 256でハッシュ値を計算してみましょう。今度は、予想どおりファイルが異なることを示す、より正確な結果が得られます。

ハッシュ化の用途
ファイルに一意の識別子があれば、さまざまな用途に利用できます。一部の旧来のAV製品は、ファイルの内容や動作を調べず、ハッシュ値だけで悪意の有無を判定します。そのために、既知のマルウェアのハッシュ値を保存した内部 データベース を保持しています。システムをスキャンする際、AVエンジンはユーザーのマシン上にある各実行ファイルのハッシュ値を計算し、データベースとの一致を確認します。
これはサイバーセキュリティの 黎明期 には巧みな方法に見えたかもしれません。しかし、振り返れば、ハッシュ値への依存には明らかな欠点があります。
まず、マルウェアのサンプル数が爆発的に増え、シグネチャデータベースの維持は規模の拡大に対応できなくなっています。毎日50万を超える固有のマルウェアサンプルが出現すると推定されています。その大きな要因は、ハッシュに依存するAVエンジンなら、サンプルを認識できないようにするのが容易だとマルウェアの作成者が気づいたことでしょう。攻撃者はファイルの末尾に1バイト追加するだけで、異なるハッシュを生成できます。

この処理は非常に簡単なため、マルウェアの作成者は 処理を自動化 できます。その結果、同じURLから、数秒ごとに異なるハッシュ値を持つ同じマルウェアを被害者に配布できます。
第二に、旧来のAVには、検知するには脅威を事前に把握しておく必要があるという欠点が常にありました。既知のハッシュ値のデータベースに依存するマルウェア対策製品は、その設計上、次の攻撃に必ず一歩遅れます。
その答えは、 Behavioral AI を活用し、 多層防御 のアプローチを採用するセキュリティ対策です。
ただし、ハッシュ値が無用というわけではありません。むしろ、ファイルを一意に識別できることには、今も重要な利点があります。コード署名やSSLなど、さまざまな場面でデジタル署名や証明書にハッシュ値が使われ、ファイル、Webサイト、ダウンロードの真正性の確認に役立っています。

ハッシュ値は、セキュリティ研究者、SOCチーム、 マルウェアハンター、リバースエンジニアにも役立ちます。SentinelOneやその他の場所で公開される多くの 技術レポート でよく見られるハッシュ値の用途の一つが、 侵害の痕跡 の共有です。研究者はハッシュ値を使ってマルウェアのサンプルを参照し、 VirusTotal、 VirusBay、 Malpedia や MalShare などのマルウェアリポジトリを通じて他者と共有できます。

脅威ハンティングにおけるハッシュ値の利点マルウェアハンター、リバースエンジニアにとっても非常に有用です。SentinelOne やその他の多くの 技術レポートやSentinelOne、その他の場所でよく見かけるのは、侵害の兆候(Indicators of Compromise)を共有することです。ハッシュ値を使用することで、研究者はマルウェアサンプルを参照し、VirusTotalやVirusBay、Malpediaおよび MalShare。
もハッシュ値によって容易になります。IT管理者がSentinelOneの管理コンソールでハッシュ値を使い、管理対象の全端末から脅威を検索する例を見てみましょう。
ハッシュは、ある端末で脅威を特定し、同じファイルがネットワーク全体に存在するか調べる際に役立ちます。SentinelOneの管理コンソールでVisibilityアイコンをクリックし、新しいクエリを開始します。ここではファイルのSHA1ハッシュを使い、過去3か月間にそのファイルが存在したかを調べます。

いくつか見つかりました。ですが、ここで終わりではありません。ハッシュ検索から TrueContext ID が得られます。これを起点にさらに掘り下げ、ファイルが作成したプロセス、変更したファイル、接続したURLなど、実際の動作を詳しく確認できます。つまり、ファイルのハッシュからわずか数クリックで攻撃の全容を把握できます。
素晴らしい、いくつかの事例が確認できました。しかし、魔法はここで終わりません。ハッシュ検索は私たちをTrueContext IDにたどり着きました。ここからさらに掘り下げ、このファイルが具体的に何を行ったのか——作成したプロセス、どのファイルを変更したか、どのURLにアクセスしたかなどを確認できます。要するに、ファイルのハッシュからわずか数クリックで攻撃の全ストーリーを構築できるのです。まとめ
ハッシュはコンピューターセキュリティの基本的なツールです。衝突を回避できる安全なハッシュアルゴリズムを使えば、2つのファイルが同一かどうかを確実に判定できます。しかし、ここまで見てきたように、ハッシュが異なっていても、2つのファイルが同じ動作や機能を持つことはあります。そのため、AVによる検知をハッシュの一致だけに頼るのは適切ではありません。
それでも、ハッシュはIOCの共有や脅威ハンティングなどでセキュリティアナリストに役立ちます。コンピューターやネットワークのセキュリティに携わっていれば、日常的に目にするはずです。
この記事を気に入りましたか? LinkedIn、Twitter、YouTube または Facebook でフォローして、最新の投稿をご覧ください。
サイバーセキュリティについてもっと読む
サイバーセキュリティについて詳しく読む
ハッシュ化に関するよくある質問
ハッシュ化は、データを固定長の文字列に変換する一方向の暗号化手法です。元のデータに戻すことはできません。デジタル指紋のように、同じ入力からは常に同じハッシュが生成され、異なる入力からはまったく異なる結果が生成されます。パスワードの保護、ファイルの整合性の確認、データが改ざんされていないことの確認に使われます。ブロックチェーン技術やデジタル署名にも不可欠です。
一般的な例として、SHA-256で「hello」をハッシュ化すると「2cf24dba4f21d4288094c30e2ede82c380cac19544bb5c4ab02f5b2db38500d3」になります。1文字だけ変えて「Hello」にすると、まったく異なるハッシュになります。パスワードの管理にもハッシュ化が使われます。パスワードを作成すると、ハッシュ化されて保存されます。ログイン時には、入力したパスワードがハッシュ化され、保存済みのハッシュと照合されます。ファイルの整合性チェックでも、変更の検出にハッシュ化を使います。
ハッシュ化は、不正な変更を検出してデータの整合性を確保します。データベースが侵害されてもパスワードを読み取れないようにして保護します。ダウンロードしたファイルの破損やマルウェアへの感染も確認できます。また、デジタル署名や安全な通信プロトコルを支え、ブロックチェーン技術や暗号資産のセキュリティの基盤となります。ハッシュ化がなければ、転送中や保存中にデータが変更されていないと確信できません。
主なハッシュアルゴリズムの系統は、MD(Message Digest)、SHA(Secure Hash Algorithm)、RIPEMDです。MD5は128ビットのハッシュを生成しますが、現在は安全ではないと考えられています。現在最も広く使われているSHA-256は、256ビットのハッシュを生成します。SHA-3は、古いアルゴリズムに代わるものとして設計された最新の標準です。それぞれ安全性、ハッシュ長、計算に必要なリソースが異なります。現代のシステムでは、セキュリティが重要な用途にSHA-256またはSHA-3が選ばれます。
ハッシュ化は一方向で元に戻せませんが、暗号化は復号して元に戻せます。ハッシュ化では入力の大きさに関係なく固定長の値が生成されます。暗号化後のデータ長は入力データによって変わります。ハッシュ化はデータの整合性を確認し、暗号化はデータの機密性を守ります。暗号化されたデータは正しい鍵があれば復号できますが、ハッシュから元のデータは復元できません。両者は異なる目的で使われ、併用されることもよくあります。
ハッシュ化は、元の情報を逆算できないようにしてデータを保護します。攻撃者がハッシュ化されたパスワードを盗んでも、実際のパスワードを容易には特定できません。元のデータが少しでも変わると、まったく異なるハッシュ値が生成されるため、改ざんを検知できます。ハッシュ化には暗号鍵が不要なため、侵害される鍵もありません。実際の内容を公開せずに、データの完全性を検証できます。そのため、パスワードの保存やファイルの検証に最適です。
ハッシュ化により、データを迅速に検索・検証できます。元の内容を公開せずに、データの完全性を確保します。適切なハッシュ化手法を使うことで、パスワードの安全性が大幅に向上します。ファイルの完全性確認も簡単かつ確実になります。ハッシュ化は、ブロックチェーン技術と安全な取引を支えます。計算効率が高く、鍵の管理も不要です。デジタル署名と認証システムは、セキュリティの確保にハッシュ化を利用します。データの重複排除と効率的なストレージ管理にも役立ちます。


