暗号化ハッシュとは何ですか? [ビギナーズガイド]
公開: 2019-08-07目次
暗号化ハッシュとは何ですか?
暗号化ハッシュの説明
暗号化ハッシュ関数のプロパティ
一般的なハッシュアルゴリズム
暗号通貨でのハッシュ
パスワードストレージのハッシュ関数
要約
たぶん、あなたとあなたの友人がお互いに他の誰も理解できないメッセージを渡すためのコードを作った時代に。 少なくともあなたはそのような人々を知っていました。
そのような人の中には、このゲームを真剣に受け止め、キャリアに変えた人もいます。
他の人は魔術師、いわゆるメンタリストになりました。 コードの助けを借りて、彼らはカードや数字などを推測するために彼らの「精神力」を使用します。
その単純な子ゲームは、暗号化、ハッシュ、およびその他すべての関数として知られるものになりました。これらの関数は、特定の入力から一見読めないコードを生成します。
今日は、暗号化ハッシュとは何か、その内部動作、およびそのアプリケーションを確認するために、コーディングの魔法の世界に飛び込みます。
それで、それ以上の苦労なしに、すぐに飛び込みましょう。
暗号化ハッシュとは何ですか?
暗号ハッシュ関数は、セキュリティ目的のために使用されるハッシュ関数の型です。 暗号化されていないものと区別するいくつかのプロパティがあります。 ステップバイステップで分解してみましょう。
ハッシュとは何ですか?
ハッシュは、データを圧縮するために使用される方法です。
それでも、.zipファイルや.rarファイルのように、誰もが知っている典型的な圧縮ではありません。
ハッシュは、ハッシュアルゴリズムを使用してデータのコードを作成します。 このコードは、そのファイルの「フィンガープリント」として機能する文字列を表します。
指紋が小さいことは誰もが知っていますが、指紋には大量のデータが含まれています。 名前、顔、住所、その他の機密情報などです。 ハッシュも同様です。任意のサイズのデータを取得し、それを比較的小さな文字シーケンスに変換します。
入力のサイズに関係なく、ハッシュするときは常に固定長の出力を取得します。
ハッシュ関数の例
これがどのように発生するかの例です。 このデモンストレーションでは、SHA-256と呼ばれる256ビットのセキュアハッシュアルゴリズムを使用します。 これは最も一般的なハッシュアルゴリズムの1つであり、結局のところ、ビットコインでも使用されています。
メッセージ | メッセージのハッシュ |
やあ | 3639EFCD08ABB273B1619E82E78C29A7DF02C1051B1820E99FC395DCAA3326B8 |
TechJuryへようこそ | B7FFC27E0A6F559E1F63A927B6132A42124CC790F9EFD0FCFF4C3B653AA0DF4B |
(この記事全体の内容) | 9247D0E6C7A2A45976DCC3D2393A52658B6DDFC846d8AF5743400EA12FB9DE74 |
メッセージの長さは異なりますが、すべて64文字のハッシュを取得します。 これは、ハッシュ値またはダイジェストとも呼ばれます。
本やライブラリ全体のコンテンツをハッシュした場合でも、同じ固定長の結果が得られます。 ビデオや写真など、他の種類のデータでも同じことができます。
ハッシュの優れている点は、最小限の変更を加えた場合でも、まったく異なるハッシュ値を取得できることです。 アバランシェ効果として知られています。
したがって、たとえば、ガールフレンド/ボーイフレンドが元の写真をすべて削除すると、フォルダーのハッシュが変更されます。 そうすれば、各画像をチェックしなくても、何かがおかしいことがわかります。
ハッシュ関数が実際にどのように役立つかについて、もう1つの例を見てみましょう。 次の例では、 「 VPNとは何ですか? 」をハッシュしました。 」の記事で、次のようになります。
次に、記事から単語を削除して、もう一度ハッシュしました。 結果は次のとおりです。
1つの単語を削除すると、ハッシュ値が完全に変更されました。 これは、ファイルに変更が加えられているかどうかを確認する場合に特に役立ちます。
大量の情報を扱う場合はさらに役立ちます。 たとえば、毎日何千ものトランザクションを保存する暗号通貨ブロックチェーン。
それでは、さらに深く掘り下げて、暗号化ハッシュが実際に何を意味するのかを見てみましょう。
暗号化ハッシュの説明
セキュリティとプライバシーが必要な場合は、暗号化ハッシュが役立ちます。 暗号化ハッシュの欠点は、通常、他のタイプのハッシュよりも遅いことです。 迅速にハッシュする必要があり、高レベルのセキュリティが必要ない場合は、暗号化されていないハッシュの方が適しています。 たとえば、機密性の低いデータのインデックスを作成している場合。
非暗号化ハッシュと暗号化ハッシュの主な違いは、後者を破ることが非常に難しいことです。 それは不可能ではないことに注意してください。 それでも、暗号化ハッシュを使用すると、ハッシュを解読することはほぼ不可能になります。
ハッシュ関数を暗号化ハッシュにするには、いくつかのプロパティが必要です。
暗号化ハッシュ関数のプロパティ
暗号化の目的でハッシュを使用する場合、安全であると見なされるためにハッシュ関数が満たさなければならないいくつかの要件があります。
プロパティ#1-速度
派手な言葉が好きなら–暗号化ハッシュ関数は計算効率が良いはずです。 その手段は、ハッシュ関数は、第二の画分中にハッシュを生成することができなければなりません。
ソース
プロパティ#2 –雪崩効果
アバランシェ効果は、メッセージにわずかな変更を加えただけでも、ハッシュ値に大きな変更が生じることを意味します。
メッセージ | メッセージのハッシュ |
TechJuryへようこそ | B7FFC27E0A6F559E1F63A927B6132A42124CC790F9EFD0FCFF4C3B653AA0DF4B |
Techjuryへようこそ | 66251AE6324F670BF988465E49B9CEAA2F8C4E72E1D61336D3794301116C092B |
2番目のメッセージで小文字の「j」を使用すると、ハッシュコードが完全に変更されます。
これは単純なハッシュ関数の例ですが、あなたはその考えを理解します。 これは非常に実用的であり、データが変更されているかどうかをすばやく表示できます。
プロパティ#3 –暗号化ハッシュ関数は決定論的である必要があります
つまり、同じ入力に対してハッシュ関数を何度使用しても、常に同じ出力が得られます。 同じメッセージに対してランダムなハッシュを取得した場合、プロセス全体が無意味になるため、これは明らかです。
プロパティ#4 –原像耐性(一方向性関数)
これは、出力を介して入力に到達するのが非常に難しいことを意味します。
簡単に言うと、暗号化ハッシュ関数を逆にしてデータを取得することはできません。 それでも、これはメッセージを見ることが不可能であるという意味ではありません。
これが取引です。
ハッシュされたメッセージを見つけるには2つの方法があります。
- ハッシュを、次のような既存のハッシュリストと比較するには:Dehash.me。 通常、サイバー犯罪者は、翻訳された(ハッシュ解除された)メッセージの独自のデータベースを持っています。
- ブルートフォース攻撃を実行します。
ブルートフォースでハッシュを解読するには、メッセージを選択してハッシュし、使用しているハッシュと比較する必要があります。 最良のシナリオ–最初の試行から取得します。 それでも、その可能性は非常に低いです。
最悪のシナリオ–最後の試行からそれを見つけます。 つまり、考えられるすべてのメッセージをハッシュして、現在のメッセージと比較する必要があります。 ハッシュアルゴリズムによって数が異なります。
例として、SHA-256を使用してみましょう。 その場合、あなたは2 256を見つける必要があるだろう -最初に1つのハッシュ値。 それはいくつかの生涯で行うことができないと言って、それをそのままにしておくのは安全です。
今。
暗号化ハッシュの原像耐性は、ハッシュと暗号化の議論において重要な役割を果たします。
参照–暗号化されたメッセージを復号化することはできますが、暗号化ハッシュに対して同じことを行うことはできません。
ハッシュはスムージーと考えることができます。 スムージーからバナナとミルクを抽出できないのと同じように、ハッシュからメッセージを抽出することはできません。
一方、暗号化はより安全なものです。 それはあなたの貴重品を保護しますが、それを開く鍵は常にあります。
プロパティ#5 –衝突耐性
つまり、2つの異なるメッセージが同じハッシュ値を生成できないようにする必要があります。 数学的な観点から、これはとにかく不可能です。
ハッシュ値の長さが固定されていることはすでにご存知でしょう。 これは、出力の組み合わせが限られていることを意味します。 一方、入力は無限の数です。 したがって、理論的には、2つの異なるメッセージが同じハッシュを生成する可能性があります。
それでも、暗号化のハッシュ関数により、ハッシュ衝突の可能性は事実上無視できます。
見て。
これらのプロパティはすべて、暗号化ハッシュのセキュリティと使いやすさを保証します。 それでは、さまざまな暗号化ハッシュ関数に出会う時が来ました。
一般的なハッシュアルゴリズム
ハッシュアルゴリズムにはさまざまなクラス(ファミリ)があります。 それらの主な違いは、それぞれが生成するハッシュ値とそのセキュリティプロパティです。
最も一般的に使用されるものは次のとおりです。
メッセージダイジェストアルゴリズム(MD)
MD5は多くの企業で選択されたハッシュ関数でしたが、2004年に機能しなくなりました。ハッシュアルゴリズムに対する衝突または原像攻撃が成功した場合、ハッシュアルゴリズムは機能しなくなったと見なされます。 それでも、多くのWebサイトは、ファイル検証にMD5ハッシュ関数を引き続き使用しています。
たとえば、ファイルをダウンロードするときに、そのハッシュをサイト上のハッシュと比較して、だれもそのファイルを改ざんしていないことを確認できます。
MDファミリは、MD2、MD3、MD4、MD5(これらはすべて壊れています)、およびMD6(それほど人気はありません)で構成されています。
ここではMD5のハッシュ関数の例です。
メッセージ | MD5ハッシュ |
Techjury | FECE553512085FF6B5E213C8EFF9F30D |
MD5は、 32文字の長さの128ビットハッシュ値を生成します。
その欠陥のため、メッセージダイジェストアルゴリズムは暗号化ハッシュ関数とは見なされなくなりました。
セキュアハッシュアルゴリズム(SHA)
暗号化ハッシュ関数の最大のファミリーは、次の4つのクラスで構成されています。
- SHA-0
- SHA-1
- SHA-2
- SHA-3
SHA-0には多くの欠陥があり、広く使用されるようにはなりませんでした。 SHA-1はそれらを修正しようとしましたが、2005年に壊れました。
SHA-2とそのサブクラスは、SHA-3がさらに安全な機能であることが証明されるまで、今日一般的に使用されています。
SHA-2ファミリは、SHA-224、SHA-256、SHA-384、およびSHA-512の4つのメンバーで構成されており、ハッシュ値のビット数が異なります。 これまでのところ、SHA-2暗号化ハッシュアルゴリズムに対する攻撃は成功していません。
ここでSHA-2クラスを使用して、いくつかのハッシュ関数の例です。
メッセージ | Techjury |
SHA-256 | FF3E4985DAFF59392EAE60DEC66EC823CAF9575B81903729053A999B9B2C708E |
SHA-384 | 77653BC173A561E3378373F64E447FB3AEDC691F387BB599656E6AB63B9C5D34 523C298C59C94802A478F8C3F36E9CDF |
SHA-512 | C975F1074E969FAEA76C15084881F7694DE4D542F9E4DF934AFA52470952A362 25F7ED63D023AB05746DDAFDFED96D57A7AF5344EB91589A09952D102DD3AB04 |
RACE整合性プリミティブ評価メッセージダイジェスト(RIPEMD)
当初、RIPEMDは、RIPEと呼ばれる欧州連合プロジェクトのために作成されました。 RIPEMDファミリーには5つのハッシュ関数があります。
- RIPEMD
- RIPEMD-128
- RIPEMD-160
- RIPEMD-256
- RIPEMD-320
2004年に、元のRIPEMDハッシュ関数で衝突が発生しました。 そのため、使用されなくなりました。 現在、RIPEMD-160が最も一般的です。 外観は次のとおりです。
メッセージ | RIPEMD-160ダイジェスト |
Techjury | ca25dc64fb00c8becb21eddf50805fbc106eed00 |
ワールプール
この暗号化ハッシュ関数名は、家電製品の製造元とは関係ありません。 ワールプールの銀河は、アルゴリズムの名前に影響を与えました。
Whirlpoolハッシュアルゴリズムの興味深い点は、その作成者の1人がAES、 Advanced EncryptionStandardの共同作成者であるVincentRijmenであるということです。
Whirlpoolは512ビットのハッシュ関数であり、そのダイジェストは128文字の文字列を表します。
これは暗号化ハッシュ関数の例です。
メッセージ | ワールプールハッシュ |
Techjury | 2E9A775FA4450549FCB6F6CDC4761865715D46FF8003E93CC614EF7C9E3D42A93 D5A663B4E48674C5155417D686D81ABDBC12FB32A1B650C5E44F24E80156E7D |
これらは、今日最も一般的なハッシュアルゴリズムです。
ハッシュの基本を理解したところで、実際のアプリケーションを見てみましょう。
暗号通貨でのハッシュ
我々はすでに我々がハッシュに直進ますのでビットコインは、どのようにblockchain作品が何であるかを説明してきました。
不変性-それはblockchainの最も重要な機能の一つを保証するので、暗号ハッシュ関数はcryptocurrenciesに不可欠です。
暗号通貨ブロックチェーンは多数のトランザクションを処理するため、ハッシュを使用します。 これは、元帳のすべてのトランザクションのすべての記録を保持するよりもはるかに実用的で安全なアプローチです。
ビットコインの場合、マイナーは一連のSHA-256関数を実行して、ブロックのハッシュを作成します。 次に、後者はタイムスタンプを受け取ります。 ノードがコンセンサスに達すると、ブロックがブロックチェーンに追加されます。 ブロックは、独自のハッシュを持っているが、それはまた、以前の1のハッシュが含まれ、これ一緒にそれらのすべてを連鎖するだけでなく。
アバランシェ効果のため、ブロックを改ざんしようとすることはできません。 誰かがブロック内のトランザクションを変更しようとした場合、連続するすべてのトランザクションも変更する必要があります。 このような操作には、非常に多くの計算能力と時間が必要になるため、実際には不可能です。
そのため、ハッシュはブロックチェーンのセキュリティにおける重要な機能になります。
今。
異なる暗号通貨は、ブロックチェーンで異なるハッシュアルゴリズムを使用します。
たとえば、ビットコインはプルーフオブワークにSHA-256を使用しています。 それでも、ビットコインは2つのハッシュアルゴリズムを使用してパブリックアドレス(キー)を生成します–SHA-256とRIPEMD-160。 これは、公開鍵の保護を強化し、衝突の可能性を減らすために、中本聡によって行われました。
一方、イーサリアムは、SHA-3の基盤であるKeccak-256ハッシュアルゴリズムを使用します。
これを書いている時点では、これらのアルゴリズムのいずれに対しても攻撃は成功していません。
あなたが暗号通貨市場に興味がなくても、あなたはまだ毎日ハッシュ関数を利用しています。
どのようだ?
パスワードストレージのハッシュ関数
企業がパスワードを保存するために使用する主な手法は、プレーンテキスト、暗号化、ハッシュ関数の4つです。 最後の方法は、これらの手法の2つ以上を組み合わせたものです。
違いを見てみましょう。
プレーンテキストでのパスワードの保存–大したことはありません
パスワードをプレーンテキストで保存することは、まあ…まさにそのように聞こえます。
このような:
ユーザー名:ジョン・スミス
パスワード:johnsmith93
会社のデータベースには同じ情報が含まれています–ユーザー:John Smith、パス:johnsmith93。
企業がクライアントのプライバシーを重視する場合、これは避ける必要があります。 (うまくいけば、 Facebookの誰かがこれを読むでしょう。)
この方法の欠点は明らかです。サイバー犯罪者が会社のデータベースに侵入した場合、すべてのユーザー名とパスワードを見ることができます。
暗号化を使用したパスワードの保存
暗号化は、パスワードを保護するためのより良い方法です。 それはあなたのパスワードを数字と文字の読めないシーケンスに変換します。
仕組みは次のとおりです。
ユーザー名:ジョン・スミス
パスワード:johnsmith93
会社が暗号化を使用してパスワードを保護する場合、データベースエントリは次のようになります。
ユーザー名:ジョン・スミス
パスワード:I8Zdy1QBthsk2ie1HHsl + 66bf20fDDcdCtXURqa07iQ =
サイバー犯罪者がこのパスワードを取得した場合、それは役に立ちません。アカウントに侵入するためにそれを使用することはできません。 それでも、理論的には復号化できます。
悪意のある攻撃者が暗号化されたパスワードを取得した場合、さまざまなツールを使用してパスワードを復号化できます。 それでも、プレーンテキストのパスワードを取得するよりも時間がかかり、より多くのコンピューティングスキルが必要になります。
幸いなことに、パスワードを安全に保護する方法として十分強力な暗号化アルゴリズムがあります。
ハッシュアルゴリズムによるパスワードの保存
ハッシュと暗号化は同じものと間違えられ、同じ意味で使用されることがよくあります。 それでも、それらの間には決定的な違いがあります。
暗号化と同様に、ハッシュ関数もパスワードを読み取り不可能な数字と文字のシーケンスに変換します。 決定的な違いは、それが一方向にしか機能しないことです。 復号化とは異なり、ハッシュのプロセスを逆にすることはできません。そうは言っても、サイバー犯罪者があなたのパスワードのハッシュを取得した場合、通常、彼らはそれを使って何もすることができません。
利用できるハッシュ関数はたくさんありますが、この例ではSHA-256を使用しましょう。
ユーザー名:ジョン・スミス
パスワード(ハッシュ):e7c95991f28e529b4d3b37611e5f3b6a6a43600ce148af0c42d3d38c06365af5
今。
ハッシュを元のテキストに戻すことはできませんが、メッセージとそのハッシュの大きなリストがあります。 残念ながら、悪意のある攻撃者は、ハッシュ値を取得した場合でもパスワードをハッキングする可能性があります。 ありがたいことに、強力なパスワードを使用すると、その可能性は非常に低くなります。 この場合、別の例を使用します。
パスワードストレージのハッシュ関数の例
パスワードが123456であるとしましょう(これは絶対に使用しないでください。代わりに強力なパスワードを作成してください)。
SHA-256ハッシュアルゴリズムを使用する場合のハッシュは次のとおりです。
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
残念ながら、このハッシュは、ハッシュ解除されたメッセージのリストで構成されます。
多くの人が同じパスワードを使用しているため、この問題はさらに大きくなります。 したがって、データベースがハッキングされ、サイバー犯罪者がパスワードのハッシュを見つけた場合、同じパスワードを使用するすべてのユーザーにそのデータベースを使用できます。 言うまでもなく、多くの人が異なるアカウントに同じパスワードを使用しているため、フライパンから出て火の中に入ることになります。
それでも、これを防ぐためにいくつかのことを行うことができます。
何よりもまず、強力なパスワードを使用し、アカウントごとに異なるパスワードを作成します。
他にできることは、ハッシュに「 salt 」を追加することです。 塩漬けハッシュはパスワードに付加価値を追加し、各入力ごとに異なるパスワードハッシュを生成します。
たとえば、パスワード123456と「ソルト」を使用するすべてのユーザーは、異なるハッシュを取得します。
各例は123456のソルトハッシュです。
$ 2y $ 10 $ pIxpMnhlQmt1t.EUYK1G / eHkb7Roo / XhPybKyFZSAqk / 50BW10a8。
$ 2y $ 10 $ sCLqOpeA4R.St / 8IaUWF9.m01MM4YbY.qTwbCY3.K5z.cd5lwxL6W
それで、会社があなたのパスワードを保護することができる最良の方法は何ですか?
これは、たとえばDropboxのように、上記のすべての手法を組み合わせたものです。
出典: Dropbox
だから、それはあなたがそれを実現することさえせずに、あなたが毎日ハッシュを扱う方法です。
要約
要約すると、ハッシュには多くの利点があります。
インデックス作成や変更のチェックなど、あらゆるタイプのデータをハッシュできます。 これにより、ハッシュは契約、ダウンロード、パスワードの保存などに役立ちます。
暗号通貨も進化します。 私たちが今持っているものだけでなく、新しいプレーヤーが楽しみに参加するためにウォーミングアップしています。 FacebookでさえLibraをリリースするので、ハッシュをさらに活用する必要があります。
たぶんFacebookは他の大企業が独自の暗号通貨をリリースする道を開くでしょう-そしてなぜ新しいハッシュメカニズムではないのですか? 時間だけが教えてくれます。
またね!
よくある質問
ハッシュ値は、ファイル、フォルダー、トランザクションのブロックなど、あらゆる情報のフィンガープリントと考えることができます。ハッシュ関数をデータに適用すると、後者はハッシュ値を受け取ります。
これは、固定長の文字列で構成されています–次のようになります。
情報 | ハッシュ値 |
こんにちは | D44426ACA8AE0A69CDBC4021C64FA5AD68CA32FE |
暗号化は、コード(ハッシュや暗号化など)を使用してデータを保護する方法です。
開発者は、より高いセキュリティとプライバシーが必要な場合はいつでも暗号化を適用します。 プレーンテキスト(またはその他のデータ)を読み取り不可能なランダム文字列に変換します。 これにより、詮索好きな目からの情報セキュリティが保証されます。
ハッシュ関数は、ハッシュ値として知られている文字の対応する固定長の文字列にランダムなサイズのデータを変換する操作です。
ハッシュ関数には、非暗号化ハッシュ関数と暗号化ハッシュ関数の2つのクラスがあります。 後者は暗号通貨とパスワードストレージで使用され、セキュリティが向上します。