質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

Q&A

解決済

4回答

5366閲覧

ハッシュ関数を利用する利点

eri11

総合スコア10

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

0グッド

0クリップ

投稿2016/04/05 00:12

とても基礎的な質問になってしまうのですが、セキュリティについて学習しています。
そこで、ハッシュ関数を使用した鍵認証のところで疑問に思っていることがあります。
送信前のデータと送信後のデータをハッシュ値で比べてデータの改ざんを確認するのは
そもそも原本のデータを比べる事と変わらないのかと思っています。
どうしてハッシュ関数を使用するのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuba

2016/04/05 01:27

「鍵認証」と『データ改ざん」がいまひとつつながらないのですが、具体的に何のプロトコルについての解説を読まれてのご質問ですか。
eri11

2016/04/06 00:06

デジタル署名などで使用するときに使用するハッシュ関数に関する質問でした。
yuba

2016/04/06 00:16

RSA署名ということでよろしいでしょうか。
eri11

2016/04/07 00:13

言葉足らずで申し訳ございません。 RSA署名です。
guest

回答4

0

数十MBの生データを比較するのって大変じゃないですか。
ハッシュなら数十バイトの比較で済みます。

投稿2016/04/05 01:21

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

... データの改ざんを確認 ...

データを受け取った人は、当然ながら受け取ったデータしか手元にはありません。
(原本を持ってないのです)
受け取ったデータだけから改ざんがあったか否かを判定しなければならないのです。

データを送信する側は データ と ハッシュ値を送るようにします。
通信途中でのノイズの混入や、人的な改ざんがデータに施されてしまったとします。

受け取った側は、データから ハッシュ値を再計算します。
計算したハッシュ値が、受け取ったハッシュ値と一致するか? で改ざん有無を判定するのです。

上手に改ざんしてハッシュ値が変化しないようにできれば、改ざんは発覚し無いわけです。
しかしそんなふうに改ざんしたデータを調節することが難しいのです。
(不可能ではないが、とても時間がかかる。逆にいうとそのような性質をもったハッシュ計算方法でない場合は改ざんのチェックには適さない)

...
ハッシュ値に変換する理由としては、メールを送信する際に変換したハッシュ値と受信した時のハッシュ値を比較することで文書が改ざんされていないかの確認を分かりやすくするために行われます。ハッシュ値は以下のような特徴を持ちます。

  • 変換するデータが同じであれば必ず同じハッシュ値が出力される
  • ハッシュ値から元のデータへ変換はできない

...

...
意図的な改竄とは、同じ符号語を生成する他の内容を求めることであり、この困難さは、総当たり以外に消失訂正をし得ない[注釈 1]ことと、総当たりに時間がかかるように符号を長く設定してあることに由来している。
...

投稿2016/04/05 14:33

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

epistemeさんが言われていることが本質的な答えですが、補足を。

ご存知かもしれませんが、(一方向性)ハッシュ関数をかけて得られたハッシュ値のことをフィンガープリント(日本語で指紋)といいます。

現実世界でも、その人の全ての情報を照らし合わせなくても、指紋(フィンガープリント)の情報だけで、本人認証できるのと同じように、
対象データの全てを照らし合わせなくても、対象データのハッシュ値を比較するだけで、認証できることから、
まさに、ハッシュ値=フィンガープリントというわけですね。

投稿2016/04/05 13:35

Odacchi

総合スコア907

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

RSA署名の話のようなのでその前提で。
RSAでは平文にも暗号文にも、pqより小さな整数しか扱えません。pqで剰余をとるので。
だから真面目にRSAだけで通信しようとすると数十文字までのメッセージしか送れないことになってしまいます。ではどう実用的にするか。

暗号化の場合は、なにか共通鍵暗号を使って平文メッセージを暗号化します。共通鍵はその場で生成して。そしてRSAでその共通鍵を暗号化します。
署名の場合は、平文メッセージのハッシュをとるわけです。ハッシュはpqより小さな整数ですから、RSAで署名がかけられます。

投稿2016/04/05 00:22

編集2016/04/06 10:33
yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問