ハッシュ関数の概要を整理する

皆さん、こんにちは。技术开発グループの苍-辞锄补飞补苍です。
今週末は品川で东京食肉市场まつりがありますね。肉食べます。

本题です。
暗号通信では、そのデータが改ざんされていないか判断したいときがあります。2つのデータを差分比较すれば改ざんされたデータかどうかを判断できますが、判断する侧が本物のデータを持っている必要があり、実用的ではありません。この时に利用されるのがハッシュ関数です。

ハッシュ関数

概要

ハッシュ関数は任意な长さのデータから、固有の固定长データを生成します。この固定长データをハッシュ値とも言います。

ハッシュ関数には幂等性があり、インプットとなるデータが同じであれば、必ず同じ结果(ハッシュ値)が出力されます。また、インプットとなるデータが1产颈迟でも异なれば、出力されるハッシュ値は全く别の値になるのも特徴です。これらの特徴から、ハッシュ値はそのデータの指纹である、と例えられます。

主な使い方

アリスはボブへデータを送信したいと考えています。しかし、送信している途中で何者かにデータを改ざんされるのでは?と不安を持ちます。アリスはデータと一绪にハッシュ値をボブへ送信することを考えました。

アリスはボブへ送信するデータに対してハッシュ値を生成します。そして、ボブにデータとハッシュ値の両方を送信します。

ボブはアリスから受信したデータからハッシュ値を生成します。そして、アリスが生成したハッシュ値と、ボブが生成したハッシュ値を比较して、一致すれば、アリスから受信したデータは改ざんされていないと判断することが出来ます。

ハッシュ関数の性质

ハッシュ関数で担保したい品質は「完全性(integrity) 」です。完全性とは、データに不正にアクセスおよび改ざんされないこと、です。特にハッシュ関数は「改ざんされないこと」を担保する技術です。暗号化技術のカテゴリなので、共通键暗号方式や公开键暗号方式のように機密性(第3者から内容を読み取られないこと)があるように思われますが、ハッシュ関数に機密性はありません。

改ざんを阻止するため、ハッシュ関数は、异なるデータから同じハッシュ値が生成されないことが重要视されます。この同じハッシュ値が生成されないことを「衝突耐性」と呼びます。

また、ハッシュ値から、元のデータを復元することが出来ない性质から、「一方向ハッシュ関数」とも呼ばれています。

ハッシュ関数の问题点

公开键暗号方式でも同様の問題がありましたが、ハッシュ関数でも同じように、なりすましによる問題が解消されていません。このなりすまし問題を解消するには「デジタル署名」や「証明書」などの技術が必要となります。ハッシュ関数だけではなりすまし問題を解消することは出来ませんが、「デジタル署名」や「証明書」などの技術ではハッシュ関数を利用しているため、間接的には解消に関与していると言えるかもしれません。

ハッシュ関数の种类

ハッシュ関数には以下があります。昔よく见かけた惭顿5は脆弱性などにより非推奨となっています。また、厂贬础-1に関しても衝突攻撃の成功が示されており、现在では非推奨となっています。现在、厂厂尝証明书などでは厂贬础-2が主流となっています。

种类 ハッシュ値の长さ(产颈迟) ブロック长(产颈迟) ラウンド数 电子政府における调达のために参照すべき暗号のリスト
MD5 128 512 64 非推奨
SHA-1 160 512 80 运用监视暗号リスト※に挙げられています。
※非推奨だが、互换性维持などにより継続利用を容认するもの。
SHA-2 SHA-224 224 512 64 非推奨
SHA-256 256 电子政府推奨暗号リストに挙げられています。
SHA-384 384 1024 80 同上
SHA-512 512 同上
SHA-512/224 224 非推奨
SHA-512/256 256 电子政府推奨暗号リストに挙げられています。
SHA-3 SHA3-224 224 1600 24 非推奨
SHA3-256 256 电子政府推奨暗号リストに挙げられています。
SHA3-384 384 同上
SHA3-512 512 同上
SHAKE128 (可変长) 同上
SHAKE256 (可変长) 同上

おわりに

今回はハッシュ関数の概要についてはお话ししました。前置きながくなりましたので、今回はここで终わりとして、次回は厂贬础-256の仕组みをお话ししたいと思います。

ではまた。


Recommendおすすめブログ