ハッシュアルゴリズムの概要:タイプ、方法論、使用方法

ハッシュアルゴリズムの概要:タイプ、方法論、使用方法

世界の非常に多くの企業がOktを採用し、時間の節約とコストの削減に成功しています。アイデンティティが組織にどのような影響をもたらすのかをご覧ください。

Hashing Algorithm Overview: Types, Methodologies & Usage

業界トップのアナリストがOktaとAuth0をアイデンティティリーダーとして評価し続けている理由をご覧ください。

ハッシュアルゴリズムは、データを意味不明なものにして読み取り不可能にする数学関数です。

ハッシュアルゴリズムは一方向のプログラムであるため、他者はテキストのスクランブルを解除してデコードできません。この点が重要です。 ハッシュ化は保存データを保護するため、誰かがサーバーにアクセスした場合でも、保存されている項目は読み取り不能な状態を保持します。

ハッシュ化は、作成者がデータの使用を終了した後にデータが調整/変更されていないことを証明する場合にも役立ちます。また、大量のデータを理解するためにハッシュを使用する場合もあります。

ハッシュアルゴリズムとは?

ハッシュアルゴリズムには数十種類あり、それぞれの動作が少しずつ異なります。しかし、いずれの場合も、プログラムは入力されたデータを異なる形式に変更します。

すべてのハッシュアルゴリズムは以下の特性を持ちます。

  • 数学的:アルゴリズムは厳格なルールに基づいて動作し、ルールを破ったり調整したりすることはできません。
     
  • 一様:特定のタイプのハッシュアルゴリズムを選択すると、システムを介して入力された任意の文字数のデータが、プログラムによって事前に定義された長さで出現します。
     
  • 一貫性:アルゴリズムの動作は1つだけ(データの圧縮)であり、それ以外には何も実行しません。
     
  • 一方向:アルゴリズムによって変換されたデータを、元の状態に戻すことはほぼ不可能です。

ハッシュ化と暗号化は異なる機能であることを理解することが重要です。2つを互いに連携して使用することも可能ですが、これらの用語を混同してはなりません。

Hashing Algorithm

ハッシュアルゴリズムの仕組み

アルゴリズムの作成は、チャート、電卓、基本的な数学の理解があれば可能です。しかし、ほとんどの人はコンピューターを活用して作成します。

ほとんどのハッシュアルゴリズムは、以下のプロセスに従います。

  • メッセージを作成する:ユーザーが、ハッシュ化の対象を決定します。
     
  • タイプを選択する:ユーザーが、このメッセージに最適なアルゴリズムを、数十種類のハッシュアルゴリズムの中から決定します。
     
  • メッセージを入力する:ユーザーが、アルゴリズムを実行するコンピューターにメッセージを入力します。
     
  • ハッシュを開始する:システムが、任意の長さのメッセージを、あらかじめ決められたビットサイズに変換します。通常、メッセージは同じサイズの一連のブロックに分割され、各ブロックが順番に圧縮されます。
     
  • 保存または共有する:ユーザーがハッシュ(「メッセージダイジェスト」とも呼ばれます)を目的の受信者に送信します。または、ハッシュ化されたデータがその形式で保存されます。

プロセスは複雑ですが、非常に迅速に実行され、数秒でハッシュ化が完了します。

ハッシュアルゴリズムの用途

1958年に開発された最初のハッシュアルゴリズムは、データの分類と整理に使用されました。それ以来、このテクノロジーの用途は数十種類に拡大しています。

企業は、ハッシュアルゴリズムを以下のような目的で使用できます。

  • パスワードの保存:リソースにアクセスするためにユーザーが使用するユーザー名/パスワードについては、すべての組み合わせの記録を保持する必要があります。しかし、侵入に成功したハッカーが、保護されていないデータを窃取するのは簡単です。ハッシュ化により、スクランブルをかけた状態でデータが保存されるため、窃取が難しくなります。
     
  • デジタル署名:メッセージが送信者の送信トレイを離れて受信者の受信トレイに届いたときから変更されていないことを、わずかなデータで証明できます。
     
  • ドキュメントの管理:ハッシュアルゴリズムを使用してデータを認証できます。作成者は、ドキュメントの完了時にハッシュを使用して保護できます。ハッシュは承認印のような方法で機能します。

    受信者はハッシュを生成し、それを元のハッシュと比較します。2つが等しい場合、データは本物と見なされます。一致しない場合には、ドキュメントが変更されたことになります。
     

  • ファイルの管理:データのインデックス作成、ファイルの識別、重複の削除のために、ハッシュを使用している企業もあります。システムに何千ものファイルがある場合、ハッシュを使用すると時間を大幅に節約できます。

ハッシュアルゴリズムの例

こうした特殊なプログラムは、実際の動作を確認せずに何をするのか理解するのは難しいかもしれません。

たとえば、セキュリティの質問に対する回答をハッシュ化する場合を考えてみましょう。「最初に住んだ所は?」という質問に対して、「クイーンズ区のアパートの最上階」が答えの場合、ハッシュは以下のようになります。

  • MD5: 72b003ba1a806c3f94026568ad5c5933
  • SHA-256: f6bf870a2a5bb6d26ddbeda8e903f3867f729785a36f89bfae896776777d50af

次に、別の人に同じ質問をして、「シカゴ」が答えになる場合、ハッシュは以下のようになります。

  • MD-5: 9cfa1e69f507d007a516eb3e9f5074e2
  • SHA-256: 0f5d983d203189bbffc5f686d01f6680bc6a83718a515fe42639347efc92478e

元のメッセージの文字数は、同じではありません。しかし、アルゴリズムは毎回一貫した長さのハッシュを生成します。

また、ハッシュが完全に意味不明な状態になっています。何を意味し、どのように機能するかを理解することはほぼ不可能です。

一般的なハッシュアルゴリズム

さまざまな種類のプログラムがテキストをハッシュ化しますが、それぞれ少しずつ異なる動作をします。

一般的なハッシュアルゴリズムは以下のとおりです。

  • MD-5:広く受け入れられた最初のアルゴリズムの1つです。1991年に設計され、当時は非常に安全であると考えられました。

    その後、このアルゴリズムをデコードする方法をハッカーが発見し、数秒でデコードできるようになりました。デコードが容易なため、広範な利用は安全ではないというのが、ほとんどの専門家の意見です。
     

  • RIPEMD-160:RIPEMD-160(RACE Integrity Primitives Evaluation Message Digest)は、1990年代半ばにベルギーで開発されました。ハッカーが解読方法を完全に理解していないため、安全性が高いと考えられています。
     
  • SHA:SHAファミリのアルゴリズムは、安全性がさらに若干高いと見なされています。最初のバージョンは米国政府によって開発されましたが、他のプログラマーが元のフレームワークに基づいて構築し、後のバージョンをより厳格でデコード困難にしました。一般に、「SHA」の文字の後の数字が大きいほど、リリースが新しくなり、プログラムが複雑になります。

    たとえば、SHA-3はコードにランダム性のソースを含み、それ以前のバージョンよりも解読がはるかに困難になっています。そのため、2015年に標準のハッシュアルゴリズムになりました。
     

  • Whirlpool:2000年に、Advanced Encryption Standardに基づいて作成されたアルゴリズムです。また、非常に安全であると考えられています。

ハッシュアルゴリズムの作成には、もはや政府が関与しない可能性があります。しかし、当局にはデータ保護で果たすべき役割があります。米国国立標準技術研究所が運営に関与するCryptographic Module Validation Programは、暗号化モジュールを検証しています。企業はこのリソースを使用して、安全で効果的なテクノロジーの使用を確実なものにできます。

ハッシュについてどの程度の知識を持つべきか

セキュリティに携わる仕事をしている人にとっては、保護対策の詳細を理解していることが重要です。ハッシュは、危害を加える手段を持つ何者かによって、パスワードなどの重要なデータが窃取されないようにするための重要な手段です。

一般ユーザーが、ハッシュの概念を理解することに価値を見出すこともあります。たとえば、Bitcoinを利用したいのであれば、ハッシュに精通している必要があります。取引相手は、このテクノロジーをブロックチェーンプロセス内で使用している「ヘビーユーザー」です。

しかし、アルゴリズムの背後にある仕組みをややこしいと感じる場合でも、心配する必要はありません。ほとんどのコンピュータープログラムは、計算の大変な作業を代行してくれます。

Oktaも、お客様のデータの保護を非常に簡単にしています。当社の洗練されたプログラムが、ハッカーを寄せ付けず、お客様の円滑な作業を実現します。

また、いつでも質問に対応し、必要なサポートを提供しています。詳しくはお問い合わせください。

参考文献

Hans Peter Luhn and the Birth of the Hashing Algorithm. (January 2018). IEEE Spectrum. 

Hashing Algorithms. IBM Knowledge Center. 

MD5 Hash Generator. Dan's Tools. 

SHA-256 Hash Generator. Dan's Tools. 

Cryptographic Hash Function. Wikipedia. 

Cryptographic Module Validation Program. National Institute of Standards and Technology.