暗号化ハッシュ関数とは何ですか?

暗号化ハッシュ関数は、個人などのデータに対して実行できるアルゴリズムです。 ファイル または、チェックサムと呼ばれる値を生成するためのパスワード。

暗号化ハッシュ関数の主な用途は、データの信憑性を検証することです。 同じ暗号化ハッシュ関数を使用して各ファイルから生成されたチェックサムが同一である場合にのみ、2つのファイルが同一であると見なすことができます。

一般的に使用される暗号化ハッシュ関数には、次のものがあります。 MD5SHA-1、他にもたくさんありますが。

暗号化ハッシュ関数は「ハッシュ関数」と呼ばれることがよくありますが、技術的には正しくありません。 ハッシュ関数は、暗号化ハッシュ関数と、巡回冗長検査などの他の種類のアルゴリズムを含む一般的な用語です。

暗号化ハッシュ関数:ユースケース

あなたがダウンロードするとします Firefoxブラウザの最新バージョン. 何らかの理由で、Mozilla以外のサイトからダウンロードする必要がありました。 信頼できることを学んだサイトでホストされていないため、ダウンロードしたインストールファイルがMozillaが提供するものとまったく同じであることを確認する必要があります。

チェックサム計算機を使用して、SHA-2などの特定の暗号化ハッシュ関数を使用してチェックサムを計算し、それをMozillaのサイトで公開されているものと比較します。 それらが等しい場合、あなたが持っているダウンロードがMozillaがあなたが持っていることを意図したものであると合理的に確信することができます。

数式の写真と黒板の写真
八木スタジオ/デジタルビジョン/ゲッティイメージズ

暗号化ハッシュ関数を逆にすることはできますか?

暗号化ハッシュ関数は、作成したチェックサムを元のテキストに戻す機能を防ぐように設計されています。 ただし、元に戻すことは事実上不可能ですが、データを保護することが100%保証されているわけではありません。

ハッカーは、レインボーテーブルを使用して、チェックサムのプレーンテキストを把握することができます。 レインボーテーブルは、対応するプレーンテキストの値とともに、数千、数百万、さらには数十億のチェックサムを一覧表示する辞書です。

これは暗号化ハッシュアルゴリズムを技術的に逆転させるものではありませんが、実行が非常に簡単であることを考えると、逆転する可能性もあります。 実際には、存在する可能性のあるすべてのチェックサムを一覧表示できるレインボーテーブルはないため、通常、弱いパスワードなどの単純なフレーズにのみ役立ちます。

これは、SHA-1暗号化ハッシュ関数を使用するときにどのように機能するかを示すレインボーテーブルの簡略版です。

レインボーテーブルの例
平文 SHA-1チェックサム
12345 8cb2237d0679ca88db6464eac60da96345513964
password1 e38ad214943daad1d64c102faec29de4afe9da3d
私は私の犬が大好き a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

ハッカーは、値を把握するためのチェックサムを生成するために使用された暗号化ハッシュアルゴリズムを知っている必要があります。

保護を強化するために、 ユーザーパスワード 値が生成された後、保存される前に、暗号化ハッシュアルゴリズムで追加の機能を実行します。 このプロセスは、Webサーバーのみが理解し、元のチェックサムと一致しない新しい値を生成します。

たとえば、パスワードを入力してチェックサムを生成した後、パスワードをいくつかの部分に分割することができます。 パスワードデータベースに保存される前に再配置されます。そうしないと、特定の文字が その他。 次にユーザーがサインオンしたときに認証を試みると、Webサーバーはこれを元に戻します。 追加機能、および元のチェックサムが再度生成され、ユーザーのパスワードを確認します は有効です。

これらの手順を実行すると、すべてのチェックサムが盗まれるハッキングの有用性が制限されます。 アイデアは未知の機能を実行することであるため、ハッカーが暗号化ハッシュアルゴリズムを知っているが、カスタムアルゴリズムを知らない場合、パスワードチェックサムを知ることは役に立ちません。

パスワードと暗号化ハッシュ関数

データベースは、レインボーテーブルと同様の方法でユーザーパスワードを保存します。 パスワードを入力すると、 チェックサム が生成され、ユーザー名で記録されているものと比較されます。 2つが同一である場合、アクセスが許可されます。

暗号化ハッシュ関数が不可逆的なチェックサムを生成することを考えると、パスワードを次のように単純にするのは安全ですか? 12345、 それ以外の 12@34$5、チェックサム自体が理解できないという理由だけで? いいえ、その理由は次のとおりです。

これらの2つのパスワードは、チェックサムを見ただけでは解読できません。

12345のMD5:827ccb0eea8a706c4c34a16891f84e7b

MD5 for 12 @ 34 $ 5:a4d3cc004f487b18b2ccd4853053818b

一見すると、これらのパスワードのいずれかを使用しても問題ないと思われるかもしれません。 これは、攻撃者がMD5チェックサムを推測してパスワードを見つけようとした場合に当てはまりますが、ブルートフォース攻撃や辞書攻撃が実行された場合は当てはまりません。これは一般的な戦術です。

ブルートフォース攻撃は、パスワードを推測する際に複数のランダムな刺し傷が発生した場合に発生します。 この場合、推測するのは簡単です 12345、しかし他のものをランダムに理解するのはかなり難しい。 辞書攻撃は、攻撃者が一般的な(そしてそれほど一般的ではない)パスワードのリストからすべての単語、数字、またはフレーズを試すことができるという点で似ています。 12345 それらの一般的なパスワードの1つです。

暗号化ハッシュ関数は推測が困難または不可能なチェックサムを生成しますが、それでも 複雑なパスワードを使用する すべてのオンラインおよびローカルユーザーアカウント用。

暗号化ハッシュ関数の詳細

暗号化ハッシュ関数は暗号化に関連しているように見えるかもしれませんが、2つは異なる方法で機能します。

暗号化は双方向のプロセスであり、暗号化されて読み取り不能になり、後で復号化されて通常の状態に戻されます。 あなたはかもしれません 保存したファイルを暗号化する それらにアクセスする人がそれらを使用できないように、またはあなたが使用できるように ファイル転送の暗号化 オンラインでアップロードまたはダウンロードするファイルなど、ネットワーク上を移動するファイルを暗号化するため。

暗号化ハッシュ関数は、チェックサムが特別なハッシュ解除パスワードで元に戻されることを意図していないという点で、動作が異なります。 暗号化ハッシュ関数が提供する唯一の目的は、ファイルのダウンロード、パスワードの保存、データベースからのデータのプルなど、2つのデータを比較することです。

暗号化ハッシュ関数が、異なるデータに対して同じチェックサムを生成する可能性があります。 これが発生すると、衝突と呼ばれます。これは、暗号化ハッシュ関数の全体的なポイントが、入力されたすべてのデータに対して一意のチェックサムを作成することであることを考えると、大きな問題です。

衝突が発生する可能性があるのは、各暗号化ハッシュ関数が入力データに関係なく固定長の値を生成するためです。 たとえば、MD5暗号化ハッシュ関数は827ccb0eea8a706c4c34a16891f84e7bを生成します。 1f633b2909b9c1addf32302c7a497983、およびe10adc3949ba59abbe56e057f20f883e(3つのまったく異なる) データのブロック。

最初のチェックサムは 12345. 2番目は700以上の文字と数字から生成され、3番目は 123456. 3つの入力はすべて長さが異なりますが、結果は常に32文字の長さです。 MD5チェックサム 使われた。

入力の小さな変更ごとに完全に異なるチェックサムが生成されるため、作成できるチェックサムの数に制限はありません。 1つの暗号化ハッシュ関数が生成できるチェックサムの数には制限があるため、衝突が発生する可能性は常にあります。

これが、他の暗号化ハッシュ関数が作成された理由です。 MD5は32文字の値を生成しますが、SHA-1は40文字を生成し、SHA-2(512)は128文字を生成します。 チェックサムの文字数が多いほど、衝突が発生する可能性は低くなります。