San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
DevSecOps

ハッシング vs 暗号化 vs ソルト化 – 違いは何か?

現代の組織の主な目的は、強固なサイバーセキュリティを確保することです。スタートアップであっても大企業であっても、データを扱うなら安全性を高める最良の方法を学ぶ必要があります。しかし、数多くのサイバーセキュリティ対策が提供されており、混乱を招くこともあります。

健全なサイバーセキュリティ戦略の構築を検討中ですか?本記事では、以下の疑問について明快に説明します:

  • 暗号化とハッシングのどちらが優れているか
  • これら3つがどのように連携するか
  • なぜソルトハッシングが注目されるようになったのか

よろしければ、今後の10分間を投資して、ハッシング、ソルト化、暗号化について詳しくご覧ください。長く有益な記事です。

ハッシング vs 暗号化 vs ソルト化 – 違いは何か?

ハッシングの概要

権限のないリソースがデータにアクセスできないようにする有効な手段として、ハッシングは対象データに数学的な関数を適用し、鍵のような役割を持たせます。ハッシュ関数は、決まったパターンを持たない文字列です。一度データが鍵に変換されると、元に戻すことはできません。このため、ハッシングは非変換かつ一方向の処理となります。

生成されたハッシュキーは主にデータベースに保存され、エンドユーザーはこれらを利用して元データの正しさを確認します。ログインパスワードの保管が一般的な用途です。

ハッシングアルゴリズム

これらはハッシングの手順を決めるものです。

動作や提供されるセキュリティに応じて、ハッシングにはいくつかのアルゴリズムがあります。ここでは一般的に利用されるものを紹介します:

  • MD5

MD5は、MD4の潜在的な欠点を解消するために生まれました。Facebookで用いられたことから非常に人気があり、様々な入力に対して128ビットの出力を生成します。正式名称はMessage Digest 5で、データの整合性確認に利用されることが多いです。

十分なデータセキュリティは提供しませんが、暗号文を元に戻せないため、多くのプラットフォームでパスワードや指紋データの暗号化に広く使われています。

  • SHA-2

SHA-2は非常に安全なハッシュアルゴリズムで、高度なセキュリティを求める現場で利用され、ほぼ破ることができません。多数のバージョンが存在し、各バージョンで出力長が異なります。例えば、SHA-256は256ビットの出力を生成します。

電子メールの暗号化、ブロックチェーン技術、データ認証、パスワードの暗号化などに用いられ、米国政府も公式かつ機密性の高いデータの暗号化に採用しています。日常生活に欠かせないサイバー空間のあらゆる分野で利用されています。

  • CRC32

CRCはCyclic Redundancy Codeの略で、様々な拡散特性と高速なファイル転送で知られています。このアルゴリズムは短い固定長の2進コードを生成し、データの正当性確認に用いられます。ただし、能力が限定的なため、特にハッシング目的ではあまり使われません。

  • Tiger

192ビットのハッシングシステムに基づくTigerは、1995年に設計されたアルゴリズムです。現代のデータ駆動型デバイスの裏で活躍しており、その超高速な処理と効率の良さが人気の理由です。最近、強化版のTiger 2が登場しました。

  • RipeMD

RipeMDは1990年に誕生し、その後幾度かの改良を経てきました。使用するビット長に応じてRIPEMD-160、320、256のバージョンがあり、出力が長いほどセキュリティが向上します。

  • xxHash

xxHashはRAM並みの速度で動作する非暗号系アルゴリズムです。現在、4つのバージョンが存在し、低い複雑さと高速な処理が特徴です。システムのRAMの速度で動作しますが、HMACでの使用は推奨されません。

  • BCrypt

迅速な攻撃を防ぐため、BCryptは意図的に処理を遅くするアルゴリズムです。つまり、前述のアルゴリズムとは対照的な設計となっています。パスワードの解読を可能な限り遅らせるため、ハッシングとソルト化を組み合わせています(後述)。

  • Argon2

シンプルなアルゴリズムを求める場合は、適応性の高いArgon2を検討すべきです。2015年のパスワードハッシュコンペティションでその有効性が評価されました。

Argon2の3つのバリエーションは、いずれも作業係数と組み合わせられており、各バージョンで実行速度が異なります。

さて、ハッシングでよく使われる主要な手法はご理解いただけたかと思いますが、なぜサイバーセキュリティの専門家や研究者がハッシングに注目するのでしょうか。その理由は、ハッシングによって実現したい目的にあります。次に詳しく説明します。

Hashing Algorithms work

ハッシングの目的

ハッシングの主な目的は、パスワード保管を安全にすることです。ウェブサイト用のパスワードが作成されると、ハッシングアルゴリズムを通して自動的にハッシュ形式でキャッシュに保存されます。

一度生成された鍵は復元できないため、パスワードを取り戻すことはできず、攻撃が成功してもハッカーには意味がありません。このようにハッシュアルゴリズムは、ウェブサイトに保存されたユーザーのパスワードを守ります。

ハッシュ衝突

ハッシュアルゴリズムの短所として、ハッシュ衝突が挙げられます。これは、異なる入力から同じ出力が生成される現象を意味し、どの入力から出力が得られたか判断するのは困難です。

その理由の一つとして、類似入力をまとめるローカリティセンシティブハッシングが挙げられます。理由にかかわらず、ハッシュ衝突が存在すると攻撃者がパスワードを解読しやすくなるため、対策が必要です。

アバランチ効果

これは、入力にわずかな変更を加えると、全く異なるハッシュが生成される現象を指します。新たに作られたハッシュは以前のものと一切類似せず、判別が困難になります。デジタルセキュリティの観点から、異なるハッシュが生成されるため、攻撃者が推測しにくくなる点で有益です。

暗号化の概要

戦時中に将校が仲間に送る平文のメッセージを思い浮かべてください。もし使者が敵に捕まり、メッセージが漏れれば大きな問題になりますよね。

この問題を避けるため、送信側と受信側はメッセージの暗号化と復号化に用いる式を作成します。これにより、秘密のメッセージを見たとしても敵側は内容を理解できません。

デジタル世界では、この式を「鍵」と呼び、暗号化と復号化の処理全体を「暗号化」と呼びます。これは可逆的な双方向プロセスであり、平文と暗号文の相互変換が可能です。情報の暗号化と復号化を容易かつ正確に実施できます。

技術的には、平文を暗号文に変換することで、人間には読めず、機械にも理解されず、推測されにくい状態にします。暗号文は、通常のテキストやデータに数学的な式を適用することで作られます。

暗号化アルゴリズム

定義はご理解いただけたかと思います。次に、どのようにして暗号化が行われるのか説明します。実際、暗号化された出力を得る方法はいくつか存在します。

主な種類は以下の通りです:

  • 共通鍵暗号

一つの鍵のみを用いる現代的な技法です。暗号化と復号化に同じ鍵が使用され、先進的な方法として世界中で利用されています。

  • 公開鍵暗号

これは、異なる用途のために別々の鍵(公開鍵と秘密鍵)を生成して使用する方法です。名前の通り、公開鍵は広く公開され、秘密鍵は共有されません。この方法は古くから利用されています。

Asymmetric Encryption
  • ハイブリッド暗号

ハイブリッド方式は、前述の共通鍵暗号と公開鍵暗号を組み合わせたものです。共通鍵暗号の速さと公開鍵暗号の柔軟性、双方の特長を併せ持ちます。

  • 確率的暗号アルゴリズム

実行するたびに異なる暗号文を生成するため、ランダムなパターンで動作します。ただし、暗号文を平文に戻すことが比較的容易なため、セキュリティ面では望ましくありません。

  • 決定的暗号アルゴリズム

名前の通り、同じ平文に対して必ず同じ暗号文を生成するため、予測可能性が高く、ハッカーが容易に解読できる恐れがあります。

暗号化の目的

暗号化は、脆弱な情報を守り、ハッカーからアクセスを防ぐために行われます。多くのウェブサイトでは、パスワード保管や決済、ログインページで採用され、送信データがサイバー犯罪者に容易に入手されないよう対策されています。

平文が入力されると、数学的な式によって平文が乱れた文字列に変換され、暗号文を読み取るためには鍵が必要となります。

まれに攻撃者がその鍵を入手する場合もありますが、通常は重要なデータを守る効果があります。

具体例

アルゴリズム、パターン、または式は、どの処理においても中心的な役割を果たします。暗号化の場合、各アルゴリズムは異なる動作をし、セキュリティの範囲も異なります。貴社やエンドユーザーのアカウント・データを守るためには、それぞれのアルゴリズムとその有効性を理解することが大切です。

  1. AES - Advanced Encryption Standard

強力で有用な技術として、1998年から使用が続けられています。

AESは一般的に使われる共通鍵暗号であり、AES-128ビットとAES-256ビットの2種類が存在します。

前者は性能に優れ、後者はより安全です。総当たり攻撃に対するしっかりとした保護がAESの特徴です。

  1. Triple Data Encryption Standard

名前からある程度想像できるかもしれません。詳しく説明します。

自動暗号化処理により、1つのデータブロックを3回暗号化します。通常より大きい鍵を使用するため、セキュリティが向上します。

この方式は共通鍵暗号であり、データブロックのサイズ(処理能力)は64ビットです。

Triple Data Encryption Standard
  1. RSA - Rivest-Shamir-Adleman

RSAは多くの開発者やサイバーセキュリティ専門家に支持されています。貴社もその一人であれば理解いただけるでしょう。

RSAは非対称暗号の従来型アルゴリズムで、暗号化用と復号化用に別々の鍵を使用します。因数分解の手法でデータを守る仕組みです。

ソルト化の概要

これまで説明した2つの暗号化手法とは全く異なる動作をし、これらの安全性をさらに強化する目的で使われます。攻撃者に好まれるレインボーテーブルを無効にするために設計されました。

ハッカーは、ハッシュアルゴリズムを突破する際、以前に生成されたコードやハッシュを利用して元のパスワードを割り出そうとします。一般的なパスワードハッシュやハッシュダンプ(ハッシュアルゴリズムによって作成されたもの)がレインボーリストの一部となり、これらを照合することで攻撃が行われます。

ソルト化の目的は、ハッシュアルゴリズムの安全性をさらに高め、レインボーテーブルに登録されることを防ぐ点にあります。

パスワードソルトとは

パスワードにランダムな文字を追加し、レインボーテーブルと一致しなくする処理を指します。追加された文字によって、たとえレインボーテーブルに同じパスワードがあっても一致しなくなります。

攻撃者が余分な記号や文字を付加して本来のパスワードを見つけ出そうとする可能性もありますが、そのためには膨大な労力と時間が必要となります。したがって、パスワードにソルトを加える方法は、ハッシュ化したパスワードの安全性を向上させる簡単で確実な手法です。

ただし、繰り返し同じまたは予測可能なソルトを使用してはいけません。そうなると、ソルト化の効果は失われます。

暗号化とハッシングの違い

どちらもデータを乱れた形に変えるため、同じものと思われがちですが、違いがあります。

暗号化はデータを2回行うのに対し、ハッシングは1回のみ行われます。

暗号化ではデータを暗号化・復号化でき、元のテキストを取り戻せますが、ハッシングでは平文の復元は不可能です。

ソルト化とハッシングの組み合わせ

現代の企業が直面しているサイバー脅威を考えると、最適なサイバーセキュリティ対策を採用することは不可欠です。一つの手法だけでは不十分な場合があります。幸いなことに、ハッシングとソルト暗号を組み合わせることで安全性を向上させることが可能です。

ハッシュ化されたパスワードにソルトを追加するだけで、パスワードは非常に強固なものとなり、ハッカーやサイバー犯罪者が容易にアクセスできなくなります。追加された文字を推測するには、大量のテーブルやパスワードの比較が必要となり、それは非常に手間がかかります。こうした理由から、重要な情報にはソルト化とハッシングの併用が推奨されます。

ハッシング、ソルト化、暗号化はいずれも一度に理解するには難しい概念です。上記の記事は詳細かつ正確ですが、手短に復習したい場合のために比較表も用意しました。

この比較表(暗号化 vs ハッシング vs ソルト化)で、3つの手法の違いをすばやく確認してください。

FAQ

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック